The linux shared library system allows a shared library to have an entry point for running as normal application. We can use that to print version information on the terminal if you run our plugin shared libraries on Linux:
cs@ubuntu10-32:~/Desktop/MeinProgramm Libs$ ./MBS_SQL_Plugin_18645.so
MBS Plugin, version 15.1, built May 30 2015
So if you execute the .so library files in future, they should tell you the version number.
PS: For Mac and Windows you see details in Info dialog already.
In the hotel the last days I used one of my business apps to send emails to clients. Now it happened that some emails didn't come through and later I got emails telling me I sent too much (transfer limit). But those emails didn't came from my hoster where I have also my mail server. It was the mail server from the hotel network provider! Now what was going on there and how did they get my mail?
So I checked my configuration there. I was using
SMTPSecureSocket, with Secure = true, a port for SSL, the SSL smtp server. I also set connection type to TLS 1.2 and a certificate to use. The idea is of course that all data is encrypted and server certificate is verified against the local one to only trust this one. Trusting either any certificate will not help as anyone could fake it. Also trusting any certificate based on a common root certificate doesn't help much. We all carry root certificates on our computers from various governments and military organizations. So trusting them doesn't help me, as I don't want to trust a certificate they generate. So I really want to either login and send email over my provider or I want an error before the credentials are sent.
In my recent testing the SMTPSecureSocket doesn't do it. Even with the settings asking for secure connection and TLS 1.2, I can see my email data in plain text if I watch network traffic using tcpdump utility in terminal. But I can get it to work by using my MBS CURL Plugin. When the connection is properly encrypted, the hotel network does not route it through their smtp proxy which counts mail and checks them for spam.
For the next days I have something to do:
- replace all uses of SMTPSecureSocket with my CURL Plugin
- change all email account passwords to long random text strings.
- use different accounts for sending/receiving, so if smtp is compromised, a hacker doesn't see incoming mail.
- check with tcpdump and CURL log messages that data is encrypted.
I'm disappointed that the SMTPSecureSocket class does not encrypt my data. Also I'm disappointed and ashamed by myself as I trusted it and didn't check the traffic. There is still the possibility that it was working in older version of the IDE or I miss a little property setting.
What do you do for sending emails secure in your applications?
See also forum thread on
this topic and the Feedback case 39516.
We scheduled two more Xojo developer meetings for this and next week:
28th May 2015, 6:30pm at The Keg, 25 rue St-Paul est in Montreal.
4th June 2015, 7pm at Café Intimes (Boxhagener Str. 107, Berlin).
If you like to come, I appreciate if you email me, so I know how many seats we need. Especially if you like to learn what Xojo is and how you can use it. Learn from what others do with it.
Today we learnt in a
forum post on the Xojo forum that Sascha Schneppmueller uses our
ChartDirector plugin for a CPU meter in the dock.
We knew our plugin can provide CPU statistics to get the CPU usage and ChartDirector can show with charts, meters and gauges all the data, but this is first time someone combines that. And all with a background picture in the chart for the round bevel.
The example will be included for everyone with next plugin prerelease. You can find the
CDAngularMeterMBS class in the documentation. It provides the round meter. With setMeter you define how big the meter will be. The setScale method defines the scale of data, in our case from 0 to 100 with steps of 10. The line width is set to 3 for the major ticks and zero for minor and axis. Next a wall paper is added with the size of the chart, so it does not repeat. Finally the pointer is added with the current value and two colors to draw it. Before displaying the image, a mask is added to hide the outer parts of the image.
PS: Did you try ChartDirector 6 with PDF output?
As you may know I travel a lot this year and so we got a couple of upcoming Xojo developer meetings:
Ottawa | Canada | 21st May |
Montreal | Canada | 28th May |
Berlin | Germany | 4th June |
Newcastle upon Tyne | United Kingdom | 16th June |
Kiel | Germany | survey |
Reykjavik | Island | survey |
Las Vegas | USA | survey |
If you want to join, please contact me, so I can put you on the list. Suggestions for meeting places or restaurants are welcome.
NICKENICH, Germany (May 19th, 2015) -- Monkeybread Software releases version 15.1 of the MBS plug-in for Xojo and Real Studio.
The MBS plug-in comprises a collection of several plug-in parts which extend the Xojo (Real Studio) development environment with 2,100 classes featuring over 55,000 documented functions. Our plugins support all three platforms Mac OS X, Windows and Linux with all project types desktop, web and console.
Some of the highlights on the 15.1 update:
We added a new plugin for
markdown processing. Markdown is a markup language with plain text formatting syntax designed to be converted to HTML. Using our plugin you can
process markdown text and create HTML on the fly.
For this release we updated
ChartDirector to current version 6. Beside some useful tweaks for various charts like glares, round edges and extra colors, this new release adds PDF output. You can now render a chart as a PDF file with vector graphics. For some complex charts we can fall back to a picture embedded in a PDF file.
For the
Map, HashMap and Set classes in our plugin, you can now switch between case sensitive and case insensitive string comparison. Those specialized classes act like a dictionary, but can provide better performance by avoiding variants.
Our plugins include various classes for CoreGraphics, the graphics framework on OS X. Improvements have been made to
CGPathMBS class with a new helper class
CGPathElementMBS so you can inspect a path content. The CoreGraphics display class got a new property to check the refresh rate of the screen.
For Windows graphics, we got additional methods in the
WindowsBitmapMBS module. Here you can find functions to convert between HBITMAP and HDIB as well as Xojo pictures. Related to this are new methods on our
GraphicsMagick and
ImageMagick image classes to get a HBITMAP. This is useful for declares to Windows APIs and passing images.
The HTMLViewer in Xojo can have various platform specific backends. For the Mac part, we added support to
WebUIDelegateMBS for multiple selection in file open dialogs. For Internet Explorer on Windows, we added a new way to load HTML from memory and a function to check the reference count. When using Chromium instead we can also check reference count and adjust.
For OS X we improved our
QCView classes and added a full functional control for showing Quartz Compositions. The repository class helps you locate compositions.
Our SQL Plugin got new functions to receive notifications for postgre SQL databases. We also got a Trace event for our
SQLDatabaseMBS class to better log what is happening. For MySQL we can now repeat requests in case of a dead lock.
In this release we updated ChartDirector to version 6.0, DynaPDF to 3.0.39.113 and LCMS to 2.7. While Xojo Inc. announced 64-bit support for upcoming Xojo versions, this plugin version does not yet support 64-bit targets.
See
release notes for a complete list of changes.
Just updated the archives for the
Dash application. Does the auto update work for you?
So here you can click to launch Dash and install our plugin help:
MBS Xojo Plugin and
MBS FileMaker Plugin
You can download the archives manually on our website:
FileMaker and
Xojo (Real Studio).
Feedback is welcome.
The May/June 2015 (13.3) issue of xDev Magazine is now available. Here's a quick preview of what's inside:
- The Xojo Future * by Marc Zeedar
Geoff Perlman's keynote address at XDC is like the Xojo State of the Union -- it sets the tone for the year and gives us a vision of the future. While we all want our new features now, the reality is that things take time. Here's what's coming and what you need to know to prepare yourself. - Too Much Fun! * by Marc Zeedar
XDC isn't just endless tech lectures and hotel food -- it's adventure and experiences in a new city, connecting with internet colleagues, and fervent debates about our favorite development tool. This year was particularly enjoyable (there was even a murder during dinner), so Marc's included lots of pictures for those who couldn't be there. - Metrics for Personal Health * by JC Cruz
As part of his ongoing personal health journal project, JC Cruz explains how to collect and analyze raw data into health metrics that actually make sense to the user.
Plus: custom operators, enterprise data modeling tools, Xojo 2015r2, Xojo games, tips, and much more.
New in this prerelease of the 15.1 plugins:
- ChartDirector 6 now registers if you have a current license key.
- Fixed SetBoolCapability, SetUInt16Capability, SetInt32Capability and SetFloatCapability in TwainMBS class to actually pass right parameter.
Download:
macsw.de/plugin. Or ask us to be added to our shared Dropbox folder.
As I come to Berlin in early June, I'd like to organize a Xojo developer meeting there.
There is a lot to tell about the recent XDC conference, upcoming 64-bit support and future Xojo releases. To learn if there is interest and what could be the best dates, I started a few surveys:
Survey Xojo Meeting in Berlin
Once we see interest for dates, we can schedule them and look for a location. If you have a recommendation for a restaurant or you can provide a meeting room, please contact me. Also if you are not a MBS customer, please email us, so we can contact you with details.
New in this prerelease of the 15.1 plugins:
- Added XLBookMBS.Load2 functions to detect format and load file.
- Fixed problem with MDItemMBS constructor.
- Updated ChartDirector to 6.0 release candidate (registration not yet possible).
- Fixed CTParagraphStyle.FirstLineHeadIndent property.
Download:
macsw.de/plugin. Or ask us to be added to our shared Dropbox folder.
While working on ChartDirector 6 Plugin, we got this sample code for you:
// The data for the bar chart
dim data(-1) as double = array(85.0, 156, 179.5, 211, 123)
// The labels for the bar chart
dim labels(-1) as string = array("Mon", "Tue", "Wed", "Thu", "Fri")
// Create a XYChart object of size 250 x 250 pixels
dim c as new CDXYChartMBS(250, 250)
// Set the plotarea at (30, 20) and of size 200 x 200 pixels
call c.setPlotArea(30, 20, 200, 200)
// Add a bar chart layer using the given data
call c.addBarLayer(data)
// Set the labels on the x axis.
call c.xAxis.setLabels labels
Backdrop = c.makeChartPicture
// Create PDF and write to disk
dim PDFData as string = c.makeChart(c.kPDF)
if PDFData.lenb > 0 then
dim PDFFile as FolderItem = SpecialFolder.Desktop.Child("simplebar with pdf.pdf")
dim PDFStream as BinaryStream = BinaryStream.Create(PDFFile, true)
if PDFStream <> nil then
PDFStream.Write PDFData
PDFStream.Close
pdffile.Launch(true)
end if
end if
As you see the only change you may need in your application is to request the chart as PDF. The MakeChart function takes a new constant kPDF for the new output type PDF.
You can download and check the PDF here:
simplebarwithpdf.pdf
(this PDF was generated on Mac with 64-bit Xojo alpha and ChartDirector 6 final candidate)
A client asked for editing IPTC entries in an image and add copyright notice. The CoreGraphics Image Source/Destination classes allow to read/write EXIF, IPTC, GPS, PNG, TIFF, PNG and JFIF properties. We use it here to load the image, add entries for IPTC with keys credit, copyright notice and contact and write the file to disk:
dim InputFile as FolderItem = SpecialFolder.Desktop.Child("test.jpg")
dim OutputFile as FolderItem = SpecialFolder.Desktop.Child("output.jpg")
dim inputSource as CGImageSourceMBS = CGImageSourceMBS.CreateWithFile(InputFile)
dim outputDest as CGImageDestinationMBS = CGImageDestinationMBS.CreateWithFile(OutputFile, "public.jpeg")
dim ImageProperties as Dictionary = inputSource.PropertiesAtIndex(0)
dim GlobalProperties as Dictionary = inputSource.Properties
dim IPTC as Dictionary = ImageProperties.Lookup(CGImageSourceMBS.kCGImagePropertyIPTCDictionary, nil)
if IPTC = nil then
// create if missing
IPTC = new Dictionary
ImageProperties.Value(CGImageSourceMBS.kCGImagePropertyIPTCDictionary) = IPTC
end if
IPTC.Value(CGImageSourceMBS.kCGImagePropertyIPTCCredit) = "Credit Test"
IPTC.Value(CGImageSourceMBS.kCGImagePropertyIPTCCopyrightNotice) = "Copyright Test"
IPTC.Value(CGImageSourceMBS.kCGImagePropertyIPTCContact) = "Contact Test"
outputDest.SetProperties(GlobalProperties)
outputDest.AddImageFromSource(inputSource, 0, ImageProperties)
call outputDest.Finalize
For cross platform EXIF/IPTC/XMP changes, you can in general try our XMP plugin.
Please note that in CGImageDestination/Source and XMP Plugin most keys are mapped. So setting Credit in IPTC, also sets the corresponding field in XMP.
Today a client asked how to set MoviePlayer's rate. This property was there years ago in Real Studio, but is missing in current Xojo version. The following code in a module extends MoviePlayer class with a new rate property. We even included some switches for older Real Studio versions, so you can use similar code for older and newer IDE versions:
Sub RateMBS(extends m as MoviePlayer, assigns r as Double)
#if TargetMacOS then
#if RBVersion >= 2014.0 then
// newer AVFoundation
dim p as AVPlayerMBS = m.AVPlayerMBS
p.rate = r
#else
// old QuickTime
m.Rate = r
#endif
#elseif TargetWin32 then
#if RBVersion < 2014.0 then
// older
m.Rate = r
Return
#endif
// Windows Media Player
dim o as OLEObject = m.MovieController
MsgBox o.TypeName
o.Player.settings.rate = r
#endif
End Sub
Paul Levine from
Rage Software is looking for a developer to join his company:
We are looking for a full time Xojo developer to join our team. We develop a drag and drop, WYSIWYG web site builder with Xojo.
We would prefer a developer located in Canada but will consider all applicants.
Applicants should have the following skills;
- 2+ years experience developing with Xojo or similar language
- Experience developing for OS X and Windows
- Experience working in teams
- Experience with HTML/CSS and Javascript would be a huge plus
Applicants would work remotely.
Please message me here if you are interested and I can provide more details.
See
forum posting and
company website.
New in this prerelease of the 15.1 plugins:
- Fixed bug in CTTextTabMBS.Create.
- Fixed crash with calling NSAppearanceMBS.setCurrentAppearance.
- Changed Cocoa plugins for 32-bit to once again build for 10.6 and newer (instead of 10.7).
- Added ReferenceCount, Release and Retain to ChromiumBrowserMBS class.
- Added IEReferenceCount function for HTMLViewer to check for leaks.
- Added CGPathElementMBS class and CGPathMBS.Elements function.
- Added PassSignerMBS module to sign passes for iOS from a Xojo made Mac app.
- Added string related functions to NSCharacterSetMBS class.
- Fixed bugs in CTRunMBS array functions.
- Added OpenSSLMBS.PKCS7Sign function.
- Added GetFiles and SetFiles to WindowsClipboardMBS class.
- Added PackbitsMBS module.
- Added OpenSSLExceptionMBS class.
- For ChartDirector 6 we will have no PPC support.
- For ChartDirector most axis getters are now properties and cache the object.
- Added IORegistryMBS.PerformanceStatistics function.
- Fixed a bug with Twain plugin which froze for a client.
Download:
macsw.de/plugin. Or ask us to be added to our shared Dropbox folder.
As you may know I'm coming to Canada later this month for the
FileMaker Conference in Montreal.
How about some
Xojo meetings?
There is a lot to tell about the recent XDC conference, upcoming 64-bit support and future Xojo releases.
To learn if there is interest and what could be the best dates, I started a few surveys:
Xojo Developer Meeting in Montreal
Xojo Developer Meeting in Ottawa
Xojo Developer Meeting in Toronto
If you could make it to several places, please sign for all. I may not be able to do all, but would be happy to meet a few developers. Recently at the XDC conference I met some people from Toronto and I consider to drive there.
Once we see interest for dates, we can schedule them and look for a location. If you have a recommendation for a restaurant or you can provide a meeting room, please contact me.
In the keynote Xojo Inc. announced upcoming support for Raspberry Pi support. That's great to hear and seems like a good idea after they got LLVM to build for ARM CPUs for iOS support and already have a Linux target. They have of course to rebuild their framework code targeting ARM Linux and add to the IDE functions to have a new checkbox for Linux on ARM. The framework itself should be an easy recompile.
On the plugins side, I really hope they just allow us to build plugins using the existing Plugin SDK for Linux. The source code is there for Linux on x86, so I'd assume same code in the framework would work on ARM. This way I could install a Linux copy here with cross compiler to ARM and rebuild all my plugins for it.
So once Linux ARM target is available and Xojo Inc. allows us to use an updated plugin SDK with a linux ARM cross compiler, I could let the computer spend a couple of hours to rebuild all my MBS Plugin classes for that.
We could use Rasppery Pis with Xojo to host our web apps or run console apps to do things in background. They could use MBS Plugins for charts, utilities, PDF handling, SQL connectivity, Picture effects and I/O, encryption and much more.
First my plugins will increase in size a lot. About double the size due to new code for Mac Desktop, Mac Console, Windows and Linux plugin parts for 64-bit.
I did build everything as 64-bit within the last 24 hours. A few things had to be fixed so it compiles, but mostly I prepared this for the last two years. The IDE in version 2015r3a1 loads all my plugins and builds using them. It takes long if you have all the plugins installed, so I recommend to use only the once you need. Some things work:
- MBSVersionString function reports plugin version.
- LogoMBS returns our logo picture, so picture creation seems to work fine.
- DynaPDF Plugin creates PDF already
- SQL Plugin can connect to SQLite and do things.
So far it seems like an easy transition. Waiting for a supported 64-bit SDK, than recompiling everything and you guys can try it.
PS: I consider even with 64-bit to let the plugin not create strings over 2 GB. Not sure if Xojo will allow it, but it may not make much sense.