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.
One often requested wish for our FileMaker plugin is a way to schedule script calls. So for the upcoming plugin version we got functions to scheduling. You can schedule:
Start a script
Executing some SQL.
Evaluating an expression.
for the schedule you can do that when
a wait time is over
a certain point in time is reached
a certain time of day is reached
the user is idle for some time
The whole system is very flexible. Each schedule you create provides an identifier which you can use late to query/modify the schedule and of course to cancel them.
The schedules to do SQL or evaluate can optionally also perform a script with the result being the script parameter. The reason is that some operations in SQL can't be done while a script is running and the database is open. But you can check the result in the script called after SQL performed.
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.
Nickenich, Germany - (May 19th, 2015) -- MonkeyBread Software today is pleased to announce MBS FileMaker Plugin 5.1 for Mac OS X or Windows, the latest update to their product that is easily the most powerful plugin currently available for FileMaker Pro. As the leading database management solution for Windows, Mac, and the web, the FileMaker Pro Integrated Development Environment supports a plugin architecture that can easily extend the feature set of the application. MBS FileMaker Plugin 5.1 has been updated and now includes over 3100 different functions, and the versatile plugin has gained more new functions:
We added new plugin functions 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.
Our new Dictionary commands allows you to pack various parameter for a script call in a dictionary. You pass this dictionary to the called script and there extract the variables with just one MBS call. This preserves data types for all transferred variables like containers.
The MBS Plugin offers for some time now various functions for the clipboard. Now in this version are functions to put file paths on the clipboard and to query them. For example an user can copy files in Finder or Explorer and run a script to import those files into the database.
The menu functions now allow you to specify font details for menu entries. You can set font, color, size, italic, bold or underline. To create menu you can now use a text definition for our quick menu function.
If you know SQL, you can use our FM.InsertRecordQuery function to easily copy records from one table to other table. An SQL query can query data from various tables and insert the result in another table. With the FM.InsertRecord function you can now add a record to a table with one function call. And the new FM.SQL functions allow you to query values from a SQL query result with native data types.
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 18.104.22.168 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.
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.
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.
Using MBS FileMaker Plugin and our DynaPDF functions, you can process a report generated by FileMaker and put a letter paper behind each page. Our example database (in next prerelease) shows you how to do this.
You can use two PDFs for letter paper, one for first page and second one for other pages. The letter paper PDFs can be stored in container fields or files on disk. You can have either one PDF for both pages or two PDFs, one for each page. Your script can even dynamically switch for each report to use different PDFs depending on the company branch, customer language or other criteria.
The only important thing is to have the report draw no background in the PDF which would hide the underlaying letter paper content. Of course we could add more plugin functions to remove unwanted background from a PDF for such a processing.
(The watermark goes away if you purchase a license of the DynaPDF Pro library and our plugin.)
Just a quick note: We changed the MBS FIleMaker Plugin's Drag & Drop features to accept promised file drops. This allows you to receive picture file drops from the new Photos app from Apple. Normally FileMaker will not accept them, but you can now create a drop area using the plugin and process them. Enjoy!
Details about FileMaker 14 are coming out and there is one big problem for a lot of users here. Runtimes are now listed as deprecated.
"APIs, technologies, or features to be deprecated
As FileMaker Pro evolves, the list of APIs and technologies it supports may change. FileMaker recommends that you migrate your solution to use other APIs, technologies, or alternative features of the product, because the deprecated features may be deleted from this or a future version of the product.
It is very amazing that just after first release of a 64-bit version, they mark 32-bit as deprecated. Could easily be that FileMaker 15 ships 64-bit only!
Why do we care about runtimes?
Runtime can be used to make free demo copies of solutions for people to test and evaluate.
Solutions for single users which cost much less than a FileMaker Pro license.
Kiosk demos or self running demos of solution.
All the catalogs on DVD for giving away for free.
Small business solutions which normally start very small with a runtime and later go to Pro/Server when business grows.
If FileMaker Inc. really cancels the runtimes, a lot of FileMaker developers can no longer stay in business as they can't migrate everyone to FM Pro. Not to forget that FileMaker just raised a few prices on their price list.
There can be a hope that they offer something like FileMaker Go for Mac and Windows to fill the gap. So FileMaker Go for desktop with a database file and you have more or less the runtime back.
While working on ChartDirector 6 Plugin, we got this sample code for you:
// The data for the bar chartdim data(-1) asdouble = array(85.0, 156, 179.5, 211, 123)
// The labels for the bar chartdim labels(-1) asstring = array("Mon", "Tue", "Wed", "Thu", "Fri")
// Create a XYChart object of size 250 x 250 pixelsdim c asnew CDXYChartMBS(250, 250)
// Set the plotarea at (30, 20) and of size 200 x 200 pixelscall c.setPlotArea(30, 20, 200, 200)
// Add a bar chart layer using the given datacall c.addBarLayer(data)
// Set the labels on the x axis.call c.xAxis.setLabels labels
Backdrop = c.makeChartPicture
// Create PDF and write to diskdim PDFData asstring = c.makeChart(c.kPDF)
if PDFData.lenb > 0thendim PDFFile as FolderItem = SpecialFolder.Desktop.Child("simplebarwithpdf.pdf")
dim PDFStream as BinaryStream = BinaryStream.Create(PDFFile, true)
if PDFStream <> nilthen
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)
Just today FileMaker 14 was released. The big change for me is 64-bit. Our plugin has been ready for 64-bit for a long time, as the Server used 64-bit before. Now it's 64-bit for everyone and you should make sure you have current plugins for best results.
If you use our SQL, Twain, LibXL, DynaPDF and other functions relaying on library files, be sure to have those in 64-bit, too. If you don't have TAPI driver in 64-bit, you should keep your solution running as 32-bit.
For the syntax coloring in FileMaker, the MBS Plugin can still overwrite FileMaker's colors and provide much more flexible rules for colors. Like red color if a called script is missing or checking calculation syntax to highlight wrong brackets.
With MBS FileMaker Plugin 5.0, everything should work already as we tested a lot with beta versions. With 5.1 we will probably fix a few minor things we'll encounter in the next days. If you like to try, use our 5.1pr7 release: Prerelease Download
Enjoy the new version, test it and please email us if you see an issue.
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 = nilthen//createifmissing
IPTC = new Dictionary
ImageProperties.Value(CGImageSourceMBS.kCGImagePropertyIPTCDictionary) = IPTC
IPTC.Value(CGImageSourceMBS.kCGImagePropertyIPTCCredit) = "CreditTest"
IPTC.Value(CGImageSourceMBS.kCGImagePropertyIPTCCopyrightNotice) = "CopyrightTest"
IPTC.Value(CGImageSourceMBS.kCGImagePropertyIPTCContact) = "ContactTest"
outputDest.AddImageFromSource(inputSource, 0, ImageProperties)
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 asDouble)
#if TargetMacOS then#if RBVersion >= 2014.0then//newerAVFoundationdim p as AVPlayerMBS = m.AVPlayerMBS
p.rate = r
m.Rate = r
#endif#elseif TargetWin32 then#if RBVersion < 2014.0then//older
m.Rate = r
Return#endif//WindowsMediaPlayerdim o as OLEObject = m.MovieController
o.Player.settings.rate = r
Just today I verified again that our calendar functions do work on a server. But you need to install the server to run with a local user account, because the server will see the calendars of this account only. Normally you would install FM Server with the user account fmserver, but that one has no calendars!
Once server runs with normal user account, it can access calendars. Enjoy!
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:
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.
We are less than 30 days away from the upcoming dotfmp conference where you can meet me:
Berlin, Germany - 6 February 2015
We are pleased to announce the 3rd edition of THE pan-European Unconference for FileMaker Developer, .fmp[x]Berlin 2015.
Taking place from 4 − 6 June 2015 in the Hotel Upstalsboom Berlin, some of the finest brains of the European Software-Developer community will be meeting on a personal basis to exchange ideas and share knowledge.
This high-level content, all about the latest versions of the FileMaker Platform, will be accompanied by some special features that are not available elsewhere!
In terms of award-giving, unconference regulars will be pleased to know that the omnipresent 'dotfmp award for the longest journey’ will be better than ever. This not-to-be-taken-too-seriously event will continue to offer prizes and merriment. It will be joined by the "dotfmp Certification Exam for FileMaker Pro 2”, a nostalgic trip harking back to the beginning of software development. And, last but not least, the "Developer Passport” will honour the efforts of the most-dedicated developers in a very different way!
All this is framed by a very special supporting program. Starting on Wednesday 3rd, there will be the chance to hangout in one of the oldest beer gardens in Berlin. Delegates will be able to visit specialty restaurants on Friday 5th and to enjoy a Thuringian Barbecue on Saturday 6th. Closing, on Sunday, 7th is left free for sight-seeing to the many famous sights places and sights in Berlin.
.fmp[x]Berlin has been growing by 25% each year and has become an inherent part of the yearly schedule of the most important developers across the world. As such, this is the first time we have to limit the seats to a maximum of 80 attendees. In order to secure a place at this high-level event in one of the most exciting cities, register on the website now!
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.