Today I added a QCViewMBS class to my plugin collection which allows you to play Quartz Compositions in a REALbasic window on Mac OS X 10.4 and newer:
If you run "locate .qtz" in the terminal, you'll see hundreds of Quartz Compositions. Apple is using them a lot in iChat, iMovie, Photo Booth, iDVD and screen savers. So take a look in this folders on your hard disc:
/System/Library/Compositions
/Developer/Library/Quartz Composer/Examples
And don't forget to install Developer Tools to get the Quartz Composer application.
On the Appstore you find already two applications I made as contract work: MacTipps and Zucker.
As I got the new Xcode version running, I'm available for contract work. Whatever you need: Mac, iPhone, Windows, Linux or now iPad. I can help you creating good software for all kinds of needs. Send me an email if you have a project.
Since December PDFlib 8 is available and today I finished our REALbasic for PDFLib. So in 10.1pr5 and newer you'll find a PDFLib8MBS class.
PDFlib 8 supports various PDF features according to Acrobat 9, such as Reference XObjects, layer variants, PDF Portfolios, georeferenced PDF, AES-256 encryption, and Unicode passwords.
New typographical features include complex script shaping and bidirectional formatting, fallback fonts, OpenType layout features, wrap text around paths, and text on a path.
More about PDFLib 8
Today we release our plugins for REALbasic in version 10.0. Take some time and check the new functions. The WindowsScriptMBS class which allows you to run Windows Scripts in VBScript or JavaScript. Also the JSONMBS class which is useful if you nee to handle Javascript Object Notation strings. Third the UniversalCharacterDetectionMBS class may be useful to detect text encodings of unknown data. On Mac OS X the NSTimerMBS class can give you a more precise timer than the built in timers. And it fires while the user is clicking which the RB timer does not.
Also useful may be the other additions which we can't really list here. The SpotLightTextContentMBS function gives you the text content of a file using the Spotlight importers. And MacGlobalIdleTimeMBS gives you the global idle time which the screen savers use to get started.
Enjoy the new version:
Download Release notes
I was asked why the plugin has no sort class? Well, the answer is simply: Once you have the data somewhere in an array, in a listbox or a database, you have built in sort functions. And once I tried to write a plugin class for sorting, I got two issues: Well first if you split the sort code between plugin and the events you'd need to fill like compare and swap, the sort code in the plugin is basicly empty. And as the plugin needs to call to RB code for this events, we have a little performance problem. It is much faster to do it directly in REALbasic.
So basicly the solution is: If you need code, take the following code and adjust it to your datatype:
(more)
Thanks to friend in the US, I got a copy of Aaron Ballman's book "Ramblings on REALbasic". This is a very good book with over 500 pages. Actually it is a collection of articles from his blog, but although I read the blog for years, I did find a lot of interesting articles, I did not know about before. So it has a good value.
Things you learn there is how REALbasic works behind the scenes. How the compiler handles your code and why things are like they are. Of course not everything is up to date as Aaron talks in a few articles about things fixed long ago, but as a REALbasic user for more than 10 years who knows a few of the bugs he mentions, it is very interesting to read why this bug existed and how it was fixed.
Another good story in the book you should read is how Aaron came to REALsoftware.
On the end I can say that I read this book this weekend and it was a pleasure. I think every serious REALbasic developer should simply read it to learn a few facts and to remember later where to lookup some things. I personally learned a few new things about the plugin writing
On
monkeybreadsoftware.de/realserver/ you can find version 0.3 of my REAL Server Plugin.
There are 3 new functions: VersionMBS, EncodeHexMBS and DecodeHexMBS.
But the biggest news is: You can use this plugin in your application with REALSQLDatabase. An example is included.
What do you do if you need to restart REALserver a thousand times a day?
Run it directly from the terminal with "sudo /usr/local/bin/realserver". To quit, simple press Control-C. To restart, cursor up and return
And if you see this error message: "SQL logic error or missing database."
you may have a little bit in calling your SQL function. E.g. the function returns an error to the sql interpreter.
Last year I developed a quick and dirty Tool to create REALbasic code for a WSDL for a customer. Later I got another customer with SOAP needs, so the tool was rewritten and handled the WSDL files from both customers. Recently another customer needed a solution for SOAP, so I decided to polish it even more and make a product from it. So now we have a SOAP Kit in stock.
Basicly you can do webservices from REALbasic with the built in SOAP classes. But they are limited and I decided not to use them. So I got my own tool which not just enables SOAP in a REALbasic application, but also provides methods and classes so you can use the webservice as if you had it running as part of your application.
You can call the webservice methods. In the background our code creates XML code from your function call, sends that code to the server, receives an answer, parses the answer and returns the result to you. All transparently and you can see this source code and modify it if you like.
And if the WSDL changes, you just rerun our tool to get new code which you can add to your project.
monkeybreadsoftware.de/realbasic/SOAP/
The plugins 10.0pr9 have a new function built in:
folderitem.SpotLightTextContentMBS as string. If you call this function, you basicly run the metadata importer for the given file type and get the text content result. On the first call it builts an internal list of the importers and the document types based on the importes in /Library/Spotlight, /System/Library/Spotlight and ~/Library/Spotlight.
This way you can get a text preview from all kinds of file types:
(more)
Today I added CRC32MBS and MD5MBS functions so you can get the checksum of a blob on your server. Also the REALbasic plugins get a new MD5StringMBS function, so you can calculate files MD5 locally and on the server if you need to compare files without copying them to the other side:
CRC32MBS(data as blob) as integer
Returns CRC of data in the blob. The return value is a 32 bit unsigned integer which is stored in a 64 bit integer.
MD5MBS(data as blob) as string
Returns MD5 checksum of data in the blob. The return string is a 32 character long hex string.
Download here:
monkeybreadsoftware.de/realserver/
Before Christmas we had a few days with snow, Christmas was green like the years before, but now in mid January we have snow again.
Looks like Monika won't use her car for the next week:
The castle of Andernach where a log of kids go sledding nearby:
And the castle of Neuwied:
NICKENICH, Germany (January 7th, 2010) -- Monkeybread Software starts plug-in development for REAL Server, the SQL database sever from REALsoftware. In this very first version of our plugin, we have 5 functions which may be very helpful for you:
* SoundExMBS(text as string) as string
Returns soundex string for the given text.
* RemoveAccentsMBS(text as string) as string
Returns text without accents. for example é to e
* RemoveAccentsCaseInsensitiveMBS(text as string) as string
Returns text without accents. for example é to E and Ä to A
* ReadBlobMBS(data as blob, path as string) as blob
Returns the blob if it is not null.
Or reads the file from the given path and returns the content as blob.
Path must be native path and should only contain ASCII characters.
* WriteBlobMBS(data as blob, path as string) as string
Writes the blob to the given file path. On success returns the path. On failure returns error.
Path must be native path and should only contain ASCII characters.
This plug-in is still in development and can be used for free until 31st March 2010. If you like to test it, please send us an email.
Out plug-in is tested with REALserver 2009 and works on Mac OS X, Windows and Linux.
If you have questions or new ideas for plug-in functions, please email us. Also we are available for contract plug-in development.
Today I wrote a JSON class for REALbasic. So in case you want to use the JavaScript Object Notation in REALbasic, you can now use our plugin to do this (10.0pr8 or newer). You may also want to write a few lines of code to convert a JSON tree to and from dictionaries in REALbasic if you need that.
Else it may be useful for web applications and for passing data from and to the htmlviewer javascript methods. For example to pass an object tree to a htmlviewer on Mac, you would call EvaluateJavaScriptMBS with some commands like "myvariable = eval("+json+")". So the json string in REALbasic is the object tree returned by the toString function of the JSONMBS class and eval in javscript will parse that and give you the object in Javascript. Pretty cool, I think.
See
JSON on Wikipedia
For years we have a class to run AppleScripts in REALbasic. Now we also have a class to run Windows Scripts:
dim w as new WindowsScriptMBS
// First try VBScript
w.Language = "VBScript"
dim lines(-1) as string
lines.append "Function Test(a,b)"
lines.append "Test = a+b"
lines.append "End Function"
w.AddCode Join(lines, EndOfLine.Windows)
dim p(-1) as string = array("Hello ", "World from VBScript")
dim x as string = w.Run("Test", p)
MsgBox x
// Second try JScript
w.Language = "JScript"
redim lines(-1)
lines.append "function Test(a,b)"
lines.Append "{"
lines.append "return a+b;"
lines.append "}"
w.AddCode Join(lines, EndOfLine.Windows)
p = array("Hello ", "World from JavaScript")
x = w.Run("Test", p)
MsgBox x
Exception e as WindowsScriptErrorExceptionMBS
MsgBox "Exception: "+e.message
So you can run them with JScript (JavaScript) or VBScript (Visual Basic Script).
There is a German application on the iTunes store with over 750 tipps around Mac. Take a look and enjoy it. We worked on it for over a year, got lots of feedback from beta testers, several design changes and a total rewrite in the middle, but now it is a perfect little tool to lookup for help if your Mac is in trouble.
Why I show this application here? Well, because I am the developer who created this application for the Macwelt team.
PS: And over time they will add more tips. Every time you press the load button (the round arrow), the server is asked for new tips.
You may have seen that REALsoftware offers a database server. And last year they added a plug-in SDK for this server.
Today I toke a deep look on the SDK and I can say you it looks promising. As it is a very young SDK, you won't find anything about it on the internet and there is nearly nothing included on documentation. But you can help yourself with SQLite documentation as a lot of things are equal for running sqlite locally or using REAL server.
If you have ideas what a REAL server Plugin I could write, please email me. But be aware that you can't use GUI functions in the plugin.