The last week we once again run into an issue with the Linux shared library loader. In a Xojo app you may end up having several libraries several times in different versions. For example the system provides the zlib library in some version, e.g. 1.2.3 on an older Linux installation. The MBS Compression Plugin uses zlib in version 1.2.8 while DynaPDF uses a custom patched 1.2.7 for the PDF compression. Also the Xojo runtime may come with its own version.
Now it seems like there can be a problem. All those versions of the library may or may not export publicly their functions and you may have several deflateInit functions around. Now when resolving the functions references in a shared library (e.g. plugin), the loader will pick one by name to solve it. And for us this was catastrophic a few times. Because you end up getting a different version of the library than expected. DynaPDF brings 1.2.7, but may end up getting tied up to 1.2.3 or 1.2.8. For PNG, JPEG, zlib and other libraries, there are checks in place to make sure the header files and the library matches in version. If versions won’t match data structures may have different sizes or parameters to functions have different meanings.
In DynaPDF the resulting error from a different zlib version is:
'EndPage: Error compressing stream!' (code:14, type:536870912)
This is solved for MBS Plugin 17.3pr4 by setting all non-exported symbols to local symbols. This should make all functions to resolve within the library take precedence over functions from other libraries.
For DynaPDF we added GetPNGVersion, GetJPEGVersion, GetTIFFVersion and GetZlibVersion functions. They allow you to query the jpeg, png, tiff and zlib versions used in the DynaPDF library.
PS: For FileMaker Cloud we do the same fix next prerelease.
New in this prerelease of the 17.3 plugins:
- Fixed crash with 64-bit for Execute methods in AuthorizationMBS class.
- Changed linux linking to avoid loader to connect function to wrong library if several versions of the library exists.
- Added MinY, MinX, MidY, MidX, MaxY and MaxX for NSRectMBS class.
- Updated DynaPDF library to version 4.0.11.30.
- Added OverlayMBS.menuForEvent event.
- Turned properties for PDFKit annotation classes into real properties so you see them in debugger.
- Fixed bug with DynaPDF and optimize command when using ICC based JPEG pictures.
- Fixed problem with PDFAnnotationMarkupMBS not setting QuadrilateralPoints.
Download:
monkeybreadsoftware.de/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.
Did you know you can register you own JavaScript callbacks for a HTMLViewer on Mac?
The WebScriptCallbackMBS class helps to handle such methods calls in JavaScript and redirects them to an event. In the Open event of the window, we add the WebFrameLoadDelegate to the HTMLViewer:
wui=new MyFrameEvents
web.InstallWebFrameLoadDelegateMBS wui
We need to subclass WebFrameLoadDelegateMBS in order to catch the windowScriptObjectAvailable event and add our MyBrowser object to the JavaScript name space:
Class MyFrameEvents Inherits WebFrameLoadDelegateMBS
EventHandler Function windowScriptObjectAvailable(windowScriptObject as WebScriptObjectMBS) As boolean
// Install an Object called "MyBrowser" on the javascript document object
// Any function call inside will tricker callback event
windowScriptObject.setWebScriptCallback "MyBrowser", app.callback
End EventHandler
End Class
Next we need to subclass WebScriptCallbackMBS class and fill the Callback event and do whatever our method should do:
Class MyScriptCallback Inherits WebScriptCallbackMBS
EventHandler Function Callback(Name as string) As variant
System.DebugLog "Function: "+name
Select case name
case "MsgBox"
MsgBox me.ArgumentValue(0)
case "PrintDialog"
call MainWindow.web.PrintDialogMBS
case "SetText"
MainWindow.Output.text=ArgumentValue(0)
end Select
End EventHandler
End Class
As you our event can be called giving the name of the method called and the parameters can be queried via ArgumentValue function. The JavaScript call looks like this:
MyBrowser.SetText('Hello');
Sadly we can't provide the same for Windows so far. But Mac this is great already.
As you know I come to attend the
FileMaker DevCon 2017 in Phoenix, Arizona.
As I stay a few extra days in Phoenix, we will have two Xojo developer meetings:
22nd July 2017 in a restaurant near Phoenix.
28th July 2017 in a restaurant near Tucson.
I know I have over 20 Xojo developers using my plugins in Phoenix alone.
If you like to join, please contact me soon.
I reserve a table in a nice restaurant and I will be there. You can join and we can shop talk all night. Ask me plugin questions, bring your laptop and show projects.
And of course we discuss latest changes in Xojo, upcoming conferences and what's new in plugins.
The
OmegaBundle.net will finally end 4th July 2017.
After two extensions it must come to an end and if you missed all the announcements, we finally need to say: sorry.
Get your copy now on
OmegaBundle.net.
New in this prerelease of the 17.3 plugins:
Download:
monkeybreadsoftware.de/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.
The XojoTalk podcast just got it's pow(2,5)th episode. So go and listen to it!
- Shoving Phones In Their Pockets with Geoff Perlman
- That's A Lot Of Tens with Bob Keeney
- Developer of Long Standing with Eric Gibbon
- Grizzled Veterans with Travis Hill
- Where's My Column? with Marc Zeedar
- I have no idea what you're talking about with Kem Tekinay
- Snowgun with Kevin Cully
- Really Wicked with Hal Gumbert
- It's my dog with Norman Palardy
- Strap a Mac Pro to my wrist with Tim Dietrich
- The forum is my personal training ground with Tim Hare
- Shipping is a feature with Paul Levine
- Hockey Programmer with Mike Cotrone
- Software Maniacs with Ken Whitaker
- Type my password like an animal with Justin Elliott
- Magical Toolkit with Craig Boyd
- I Keep My Secrets to Myself with Bruno Frechette and Jonanthan Guillemette
- Not The Pi You Eat with Geoff Perlman
- Ghost Touches with Geoff Perlman
- Spoiler Alert with Bob Keeney and Marc Zeedar
- Enterprise Consulting with Arthur Couture and Tom Rupprecht
- I Like Things That Just Work with Tim Parnell
- Take a Walk with Michel Bujardet
- Figure out stuff on my own with Kimball Larsen
- Toughest thing is the substitutions with Jim Meyer
- Happened by Accident with Tom Catchesides
- Database Goddess with Carol Keeney
- Email is Not a Project Management Tool with Susan Fennema
- I Went to High School with the Apple File System Guy with Tim Dietrich
- We Like Our Customers with Geoff Perlman
- Virtual Office Rules with Dana Brown and Alyssa Foley
- Copy, Paste, Search and Replace with Terry Eutsler
Subscribe at iTunes or to
RSS Feed
Just a reminder that the June VXUG meeting is today (June 15th) at 2:00 PM Eastern Time.
Today's presenters include:
- Dana Brown, Xojo's Director of Marketing, who will give us an update on XDC 2018.
- Tim Dietrich, who will demonstrate Aloe, a Xojo class and development methodology that can be used to create public Web sites using Xojo.
- Wayne Golding of Axis Direct Ltd, who will give a presentation on using Xojo to develop Windows Service Apps.
We still have space available. If you haven't already signed up, and would like to attend, click
here.
Thanks to the 64-bit debugger in Xojo 2017, we can now easily try 64-bit applications and that's a must as Apple's latest frameworks don't support 32-bit anymore.
So yesterday and today I worked on a test project including a Xojo plugin for
CoreML framework. Here is my test project running:
While macOS 10.13 is not ready for a few months, we can already download the beta versions of macOS and Xcode and play with it. You can use a model quite easy as you see in the
Core ML presentation from
WWDC 2017. With just a few lines of code we load a model, setup source image and run it though the neural network to classify the picture. You can get sample models from Apple's
Machine Learning website.
The plugin will be available later this year with the macOS release.
The
OmegaBundle for Xojo including MBS Plugins is ending on the weekend:
If you plan to buy the bundle, please do it soon.
You may all be
watching videos from WWDC and learn what's coming soon for macOS and iOS.
Now the are a lot of new APIs, but I'd like to know from you what you'd like to see in our plugins for
Xojo and
FileMaker.
Usually we provide lower level wrapper for Xojo to Apple's APIs for macOS with hiding all the threading issues from you and translating values from native Xojo types to the matching Foundation types. As there is currently no iOS plugin SDK for Xojo, we can't make all features available via declares.
For FileMaker we usually provide a much more higher level API to do selected things and provide plugin functions for both macOS and iOS.
If you have ideas and wishes, please email me. I'll keep a list and if we have a lot of wishes for a given API, I may give it some priority.
Xojo Inc. is
looking for speakers for
XDC 2018, the biggest Xojo conference in 2018 from April 25 to 27 in Denver, Colorado, USA:
We are looking for talented and passionate speakers to present at XDC 2018 in Denver, CO! In addition to the fame, becoming an XDC speaker gets you a 50% discount on conference registration!
If you are interested in presenting, please submit a proposal with your session topic(s) and brief description(s) (3-5 sentences), along with your full name and contact info (preferred email and phone number), to the XDC Conference Coordinator at dana@xojo.com. If you are interested in presenting, but not sure of a topic, please reach out to us and we can help you develop your session. The deadline to submit proposals is Friday, June 30, 2017.
Here are some tips on submitting a good session topic.
Still 20 days left to submit a proposal. Myself I can of course talk about what's new in MBS Plugins, or take about making plugins or maybe make a session about comparing what machine code the compiler creates with various options and Xojo versions.
New in this prerelease of the 17.3 plugins:
- Improved key length handling for CipherMBS class. Init functions now report true on success and false on failure. Short keys are filled with zeros (as before), we report false in case of errors, but still may take reduced key (as before).
- Updated SQLite to 3.19.3.
- Fixed bug with DynaPDFMBS.ShowDifference and rotated pages.
- Added QueryMT method for NetSNMPMBS class.
Download:
monkeybreadsoftware.de/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.
On my next visit to Nuremberg, I'd love to make another developer meeting:
Wer hat Interesse an einem FileMaker & Xojo Entwicklertreffen im Juni in Nürnberg?
Einfach gemütlich zusammen sitzen und über Xojo und FileMaker Neuigkeiten, Konferenzen und die täglichen Probleme bei der Softwareentwicklung unterhalten.
Gerne zeige ich auch neue Pluginfunktionen oder helfe bei Problemen mit Projekten. Einfach Computer mitbringen und was zeigen.
Wir treffen uns am 16. Juni 2018 in einem Biergarten in Nürnberg.
Bei Interesse bitte bei mir melden.
The next
MBS Xojo conference in Germany will be 6th/7th September 2018 in Munich.
We will have a great
conference in the
Maritim Hotel near the main station can offer us 50+ rooms as well as one or two conference rooms. If we have a lot of speakers and attendees, we could go two track!
We have blocked 100 rooms and offer an 122 Euro rate for the nights from 5th to 8th September including pool, breakfast and Wifi.
Nearby other hotels in the area offer rooms for less, down to 60 Euro/night.
Walking distance to center of city is just a few hundred meters. So you can walk to
Hofbräuhaus, city hall and the famous historic buildings like palace
Nymphenburg. And if you like to take a drive in the countryside, you are quickly down to the alps. e.g. take the train up on
Wendelstein for a great view.
The schedule:
5th September 2018: Training Day in English for beginners and advanced
6th September 2018: First Conference Day
7th September 2018: Second Conference Day
8th September 2018: Training Day in German for beginners and advanced
We look forward the conference and plan to have get togethers on all evenings for having dinner together.
For the rest of the year, we look for attendees and speakers to sign up. If you have a good idea for a session in English, please send us your proposal.
We saw this announcement on the
forum:
If you are near Austin or plan on coming to Austin - join the Austin-based Xojo team for lunch in July to talk Xojo and get to know other users in and around Texas! If you are interested in joining us - please reply to this survey so we can find the best date!
Great to see Xojo inc doing local meetings themselves. I have currently some planned for
Nuremberg, Germany,
Phoenix, USA and
Netherlands.
As I am traveling again towards Netherlands and again like to meet with Xojo developers.
Let's talk about Xojo, conferences, plugins and other programming topics.
Voting for meeting in Utrecht area:
Survey
Voting for meeting in Haarlem area:
Survey
Interested people can of course make an extra appointment with me for private consulting.
If you like, vote on both, so we know who can come and where we have more people.
New in this prerelease of the 17.3 plugins:
- Creating barcode no longer changes locale settings.
- Added kCFBundleDisplayNameKey to CFBundleMBS class.
- Improved key length handling for CipherMBS class.
- Added boolean result to CipherInit, EncryptInit and DecryptInit.
- Marked CalCalendarMBS class to be console safe.
- Added developerExtrasEnabled, javaEnabled, javaScriptCanOpenWindowsAutomatically, javaScriptEnabled, loadsImagesAutomatically, minimumFontSize and plugInsEnabled properties for WKWebViewControlMBS control.
- Added RemoveTouchBarFromWindow and RemoveTouchBarFromApp for NSTouchBarMBS class.
- Fixed StringHandleMBS bug on Linux.
- Updated SQLite to 3.19.2.
- Added NetSNMPMBS class.
- Reduced memory consumption for email sending, so you can now queue 1000+ emails.
- Added DynaPDF methods for Metafile conversion (EMF/WMF)
- Zooming in script workspace can now be triggered with Command and Plus/Minus keys.
- Fixed problem where variable name check would complain about variable name being part of script name.
- Remove debug messages from CIDetectorMBS class.
- Updated to DynaPDF 4.0.11.29.
- Fixed BitwiseXORStringBytesMBS to work better and faster in 64-bit.
Download:
monkeybreadsoftware.de/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.
Today I had an interesting request for a task monitor written in Xojo to see how much CPU some processes need and to report when they are stuck (no CPU usage over longer time pointing to deadlock) or run at 100% for a long time. And of course to see if they go away due to crashes.
We use the
WindowsWMIMBS class to query the
Win32_PerfRawData_PerfProc_Process class. There we can query the current counter for processor usage and by getting total and last value calculate a percentage.
The example will be included in next prerelease.