Spending a few days in Bavaria (guess which city), before the trips to Hamburg, Stockholm and Denver...
Wir wünschen frohe Ostern
Happy Easter - Buona Pasqua - Feliz Pascua - Joyeuses Pâques
As you may know Xojo has internally a list of all objects, but does not provide an official way to quickly (!) query all thread objects. Of course we could manage ourselves a list of thread objects, but that is inconvenient for projects with a lot of thread subclasses. A few years ago I made a feature request for a threads list:
Feedback Case 26912.
As we just needed this today, we got the following function to find all thread objects in memory. We need this in an app to cancel all transfers when the app is quitting:
Function Threads() As Thread()
#pragma DisableBackgroundTasks true
dim threads() as Thread
Dim o as Runtime.ObjectIterator = Runtime.IterateObjects
While o.MoveNext
dim v as Variant = o.Current
if v isa Thread then
threads.append v
end if
Wend
return threads
End Function
Sadly runtime's IterateObjects method is quite slow as it does some introspection stuff which takes a lot of time (see
Feedback case 47148. Probably to filter some objects from the list, which we should not see here. But maybe the method above is still useful for you?
On my next visit to Berlin, I'd love to make another Xojo developer meeting:
Wer hat Interesse an einem Xojo Entwicklertreffen am Anfang Juni in Berlin?
Einfach gemütlich zusammen sitzen in einem Restaurant oder Biergarten und über Xojo schnacken.
Gerne zeige ich auch neue Pluginfunktionen oder helfe bei Problemen mit Xojo Projekten. Einfach Computer mitbringen und was zeigen.
Bei Interesse bitte eintragen in die Umfrage hier:
Berlin Stammtisch
Thomas Tempelmann recently announced a new version of
Arbed. As Xojo evolves over time and changes the file format, Arbed as to be updated to recognize any changes in the format. The new version knows about the most recent changes in the upcoming Xojo 2018r1.
Every Xojo developer should have it in his tool chain and enjoy the features. It has many features and depending on your needs, you may decide which feature is worth the price. For myself i mostly use it to automatically convert my example projects to HTML files to include them in the documentation. In other cases Arbed helped to recover corrupted project files and to compare two versions of a project which have been modified independently without version tracking software. It is also useful to bundle a project with all required files if you need to send a project to a client.
Arbed is highly automatable and can be scripted. You can call it from command line in your shell scripts to do various actions in batch operations. If you need, you can use it to obfuscate strings (e.g. SQL queries) in your application or prepare it for localization. Anything automated which saves a few hours is worth the money.
Arbed is available on
tempel.org for $29 or $89 USD.
Today CURL library and command line tool turns 20 years old. It's a long time in software business and a great success with curl on nearly every computer device on earth as it ships for example with MacOS, Google Chrome, Linux, Android and others.
Since January 2007 and the MBS Xojo Plugin 7.0, we do include
CURL for up- and download via ftp/http.
Since January 2012 and the
MBS FileMaker Plugin 2.5, we include
CURL functions for FileMaker.
And as far as I see, FileMaker Inc. added CURL right to the database engine with version 11 of FileMaker, but only added CURL options for Insert From URL script step with version 16.
See
blog post from Daniel Stenberg.
For mid April we have the
CURL conference on the agenda in Stockholm. Please join it if you like to learn more about CURL. See
announcement and
wiki page.
Interested in a meeting for FileMaker or Xojo?
See blog post for
FileMaker meeting and
Xojo meeting in Stockholm.
Over the last year I enjoyed listening to all of the episodes of the
Under the Radar podcast.
Originally pointed to by Paul Lefebvre's
tweet, I quickly subscribed as they talk about various topics for independent app developers and those episodes are very interesting. They face similar issues as myself and so I like to hear their solutions.
Thanks to David Smith and Marco Arment for their apps and the podcast.
And thanks to Xojo Inc. for supporting the shows. Xojo is sponsor for the current episode
#123: WWDC 2018 Preview, Watch Stats. And you can get a 20% off for
Xojo licenses with coupon code RADAR2018.
Do you like this podcast?
PS: Coupon code updated.
Did you know we compile all our plugins to run on Raspberry Pi, too?
Of course classes for Mac and Windows will do nothing on Linux, but you can still have them in the code and they will not cause compile errors. This allows cross compilations from Mac to Linux or other way around.
The following MBS Plugins can be used on a Raspberry Pi:
And in the documentation, you can click on a list of classes and than click on the Linux platform, which hides all the classes that won't work on Linux.
The Linux plugin includes the
RaspberryPiCameraMBS class to get pictures on a Raspberry Pi camera, the
avahi classes for finding devices on the local network, the GTK window classes, the
WebKit HTMLViewer extensions and help for
sudo. Enjoy!
If you join the Xojo developer conference in Denver this year, you have the chance to join the Rockies vs Padres, April 24th game right in the Coors Field stadium.
If you like to attend a Major League baseball game on Tuesday, April 24th at 6:40 PM along with other friendly folks, please sign up here:
https://goo.gl/L266E4
The stadium is just a few blocks to walk from our confernece hotel.
Philippe Casgrain is kind enough to buy us a block of tickets to watch the game together.
See forum thread.
The early bird offer is set to expire in today (6 months before conference) for our
European MBS Xojo Conference 2018 in Munich. If you like to join for the best rate or become a speaker, please contact us soon.
Already over 25 attendees are registered from six countries and the schedule is filling quickly. Reserve your ticket and reserve your hotel room as soon as possible.
The schedule:
Sep 5th: Xojo Training in English
Sep 6th: Conference, first day with dinner event
Sep 7th: Conference, second day
Sep 8th: Xojo Training in German
We all look forward to Android, new Web Framework other news in the keynote at XDC.
Registration is open. The early bird offer available till 7th March is just 499 Euro plus VAT if needed. Attending the conference costs regularly 699 Euro plus VAT, including food and beverage in the Maritim Hotel as well as an accompanying social program.
Sessions are to be held in English. Our conference is conceived as a networking event for the Xojo community. The conference is an ideal opportunity for sharing your thoughts and your own development experience with fellow users and developers. If you like to hold a presentation, please contact us as soon as possible.
Nickenich, Germany (March 6th, 2018) -- Monkeybread Software releases version 18.1 of the MBS plug-in for Xojo.
The MBS plug-in comprises a collection of several plug-in parts which extend the Xojo (Real Studio) development environment with 2,300 classes featuring over 60,000 documented functions. Our plugins support all three platforms Mac OS X, Windows and Linux with all project types desktop, web and console including 64-bit and ARM targets. Some of the highlights on the 18.1 update:
libusb is a library for C developers, which provides generic access to USB devices. You can use it within your normal applications on various operation systems including Linux, MacOS and Windows. All USB versions from 1.0 to 3.1 are supported. The
MBS Xojo USB Plugin now contains the classes to use LibUSB in Xojo. It joins existing classes for HIDAPI to talk to USB HID devices, our classes for smartcard readers and various dongles.
For better compatibility to future MacOS versions, we reduced dependencies to the Carbon frameworks for our 64-bit plugins. 16 of 472 plugin parts still need Carbon framework in 64-bit, e.g. for Apple Events, Carbon Events and Timers.
If you use our
PHPMBS class, you can now enjoy getting detailed error messages when execution fails. The callback from PHP to Xojo can now be reached via CallXojo method, which triggers the Callback event.
Our
Java loading code has been updated for version 9 of the Java Runtime Environment. You can now use all Java versions from 1.4 to version 9.
The
SQL Plugin got improvements with fixes in the exception handling for the Linux ARM target. For prepared statements, we added support for binding dates with the Xojo.Core.Date class. Our plugin now works with both SQL Anywhere API in version 1 and 2. The new Options dictionary for
SQLDatabaseMBS,
SQLConnectionMBS and
SQLCommandMBS allow you to inspect all set options defined for connection or command. Finally connections can now be reused properly.
For MacOS, we got the
StoreKit classes updated for new classes in MacOS 10.13.2 and support for offering trials. Several improvements with threading should fix issues you may have seen with Store transactions.
The Cocoa textview and Xojo textarea controls can now use the
NSTextListMBS class on MacOS to handle lists within texts. Lists can be ordered or unordered and use various styles.
NSParagraphStyleMBS and related classes have been updated to help define proper list styles.
The new
WindowsDisplayMBS class allows you to check the available displays on Windows in detail. Beside listing which adapter has which display from which manufacturer, you can now also detect physical size of the display as well as the physical resolution.
Enjoy improved email sending, better channel handling for
PictureMBS class, 64-bit upgrade for
EncryptMBS class, better
MeasureRotatedTextMBS function on Windows and improved
CURLSMBS.SetupAWS function for Amazon S3 and Dell ECS.
Finally we updated the CURL library to version 7.58.1, DynaPDF to version 4.0.17.44, LibXL to version 3.8.2, SQLite to version 3.22.0, the JPEG library to version 9c and LibTiff to version 4.0.9 including support for BigTiff format.
See
release notes for a complete list of changes.
See newer article:
Crossplatform connection to Microsoft SQL Server in Xojo
Sometimes you need to connect to Microsoft SQL Server and you know it's not as easy as with MySQL or PostgreSQL. SQL Server is a bit different which makes trouble and things more difficult.
Windows
On Windows we can just connect with "WIN-TEST\SQLEXPRESS@test" here and use Windows authentication. WIN-TEST is the name of the windows machine, SQLEXPRESS the name of the instance of the Microsoft SQL Server. After the @ comes with name of the database.
If we disable Windows authentication and enable login via name and password, define a new login "test" with password "hello123" and than we can just connect on Windows using the following code:
dim con as new SQLDatabaseMBS
con.Option("UseAPI") = "ODBC"
con.DatabaseName = "SQLServer:WIN-HO9KHI2N15T\SQLEXPRESS@test"
con.UserName = "test"
con.Password = "hello123"
con.Scrollable = false // disabling scrolling cursors is much faster for Microsoft SQL Server...
if con.Connect then
Msgbox "Connected"
Else
Msgbox con.ErrorMessage
end if
This does work on Windows PC. The same connection also works with TCP/IP as "tcp:192.168.2.123\SQLEXPRESS,1433@test". As you see we use IP here and the port 1433 separated by a comma. For this to work, the server must explicitly be configured to allow TCP/IP connections and to listen on the IPs of the server with the given port. This works well from a second PC.
MacOS
On MacOS, we can use the freetds library. On our website, we have a copy for you to download (http://www.monkeybreadsoftware.de/xojo/download/plugin/Libs/). We can use the ODBC connection type and the libtdsodbc.dylib library file. This library file allows us to make a ODBC style connection directly to the Microsoft SQL Server giving the port, IP and database name:
dim con as new SQLDatabaseMBS
con.Option(con.kOptionLibraryODBC) = "/Users/cs/Desktop/libtdsodbc.dylib"
con.DatabaseName = "ODBC:DRIVER={FREETDS" + path + "};Server=192.168.2.123;Database=test;TDS_VERSION=7.2;Port=1433"
con.UserName = "test"
con.Password = "hello123"
if con.Connect then
Msgbox "Connected"
Else
Msgbox con.ErrorMessage
end if
Linux
To connect on Linux, we need to install tds for ODBC, e.g. with the command "sudo apt-get install tdsodbc".
dim con as new SQLDatabaseMBS
con.DatabaseName = "ODBC:DRIVER={FreeTDS};Server=192.168.2.123;Database=test;TDS_VERSION=7.2;Port=1433"
con.UserName = "test"
con.Password = "hello123"
If you have no odbcinst.ini file in /etc, you can specify the .so library directly in the connection string instead of {FreeTDS}, you would specify libtdsodbc.so directly.
If everything works fine, you get your connection and all texts send/received. There is a problem that freetds can be compiled for UTF16 or UTF32 and if it doesn't match your iODBC compilation setting, it will fail to pass any text.
New in this prerelease of the 18.1 plugins:
- Added check for PictureMBS.DataStringInFormat to raise exception if you try to request too big memory blocks.
- Added LogPixelsY and LogPixelsX properties for WindowsDisplayMBS class.
- Reduced plugins linking to Carbon framework for 64-bit.
- Changed WindowGroupMBS class to raise exception if used in Cocoa project.
Download:
monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.
The March/April (16.2) issue of xDev Magazine is now available. Here's a quick preview of what's inside:
Motor Control by Eugene Dakin
Have you ever wanted to control a motor with a Raspberry Pi? In this tutorial, Eugene shows you how to do it.
Making PDFs by Marc Zeedar
Converting documents from one format to another is complicated. Why not let a web service handle the dirty details for you? It's cross-platform and your users won't care how you do it. Convert from Markdown or HTML to PDF and other formats.
Scripting Stock Prices with Xojo by Marc Zeedar
Just getting stock prices is only the first step -- what do you do with those once you've got them? How about a scripting language that lets you work with that information to create reports and analysis? Check out Marc's StockScripter app.
A Predicate For Data, Part 1 by JC Cruz
Jose starts a new series explaining about data predicates -- what they are and how to incorporate them in your own projects.
Plus: Xojo community, PITR, Xojo encrypting, a custom code formatting script update, and more!