|
| 06-30-09 / 11:55 PM : Firefox 3.5 available / video tag fallbacks (cjed) | Firefox 3.5 is available. Cappuccino performances on the new Firefox (and notably CPTableView) aren't really better than on Firefox 3.0 (are far behind Safari's ones). We can discover a hack to use the new video tag on all browsers (on IE we will have to emebed a Flash element inside the video tag). | Post a comment | 06-28-09 / 05:36 PM : Yamaha KX8 / best master keyboard choice (cjed) | The new Yamaha KX8 master keyboard, that was announced early 2008 seems the best choice : high quality keys (GHS type, despite most recent Yamaha digital pianos providing the more evolved GHS3), reliable, precise (allows playing low velocities) and homogeneous response compared with CME or M-Audio KeyStation, only weights 15kg, can be USB powered, many controllers (including transport) and integration with Cubase (AI4 version bundled), phrases sequencer, velocity curves settings. It features only sustain footswitch, however the volume can be modified using the panel's controllers (even if not as easy). Finally we can find it around 400$ (and 300$ at some guitar centers until July, 7). | Post a comment | 06-28-09 / 12:18 AM : Ministry of Rock : another song (cjed) | In that thread at soundsonline forums we can discover a great song from Jeff Broadbent, Never Look Back, made using MOR. We can also listen to many really nice songs at the artits's site. | Post a comment | 06-27-09 / 06:45 PM : Navigon MobileNavigator France only (cjed) | A France only version of Navigon MobileNavigator is now available at the AppStore. The install size is reduced to 340 Mb (from 1,65 Gb for the Europe version) and it is priced 49,99 euros until June, 30 (69,99 euros after). The Europe version (includes Great Britain and Irlande) is provided at 74,99 euros until June, 30. It is useful for countries like Greece that use another alphabet, and is cheaper for frequent travellers (as it avoids buying a lot more maps). We don't know yet if an upgrade from France to Europe version will be provided. The level of details for other european countries than France isn't precised (we reach the 1,65 Gb for only 5 countries of about France size, and the Europe version includes more than 30 countries). | Post a comment | 06-27-09 / 05:57 PM : Rick Dangerous on iPhone (cjed) | An iPhone version of the famous Rick Dangerous platform game is available at the AppStore (1,99$). It features new graphics (more colored) and musics, and introductory sequences. Controls use a virtual D-Pad (no full screen/landscape/hud style controls for now). We can probably also expect Rick Dangerous II soon. | Post a comment | 06-27-09 / 05:50 PM : Korg DS-10 Plus for DSi (cjed) | A new version, Korg DS-10 Plus, of the Korg emulator is available for DSi. Audio quality has been enhanced, thanks to the new console hardware evolutions. It can manage 4 instruments tracks and 8 drum tracks. | Post a comment | 06-27-09 / 05:11 PM : Arturia : The 10 Year Suite (cjed) | For its 10th anniversary, Arturia provides The 10 Year Suite, a bundle composed of its 8 modeling softwares : Minimoog V, Moog Modular V, CS-80V, ARP2600 V, Jupiter-8V, Prophet V/Prophet VS, Brass, and Analog Factory. It is priced 699$ only. The song Analog Factory was based on sounds from the Analog Factory demo. | Post a comment | 06-27-09 / 05:00 PM : BigFish Audio Symphonic Manoeuvres 2 (cjed) | BigFish Audio presents Symphonic Manoeuvres 2, an orchestral loops library (AppleLoops/Wav/Acid formats) : 10 massive kits are included. The kits include a string section, brass section, woodwind section, percussion, piano, harp and a choir. As a bonus, we've included a section of orchestral drones, orchestral hits, stings and choir chords. Not only is each part completely isolated, but both the room mics and close mics of each section are included. It is priced 99,95$, and an audio demo is provided. | Post a comment | 06-27-09 / 04:52 PM : Synthetik/Ultimate Xpansion for Logic Pr (cjed) | OrwellDigital presents Synthetik, a patchs collections for Logic Pro : analog simulation, FM synthesis and Logic Pro's significant audio processing capabilities are all called upon in this collection. A wide variety of rich, expressive tones, with a special focus on bass and lead sounds are provided.
It is priced 24,99$ (download), however we should get Ultimate Xpansion instead, that includes 5 additional libraries for only 34,95$ (until August, 31). Audio demos are provided. | Post a comment | 06-27-09 / 04:39 PM : MJ Style : 1996-2009 (cjed) | In early 1996 I composed MJ Style, a song inspired by famous MJ feets dance and rhythm.
I now know he will never get a chance to listen to this, not in that land.
I also rearranged dozens of its songs in the 90’s, using the JV880, and later the XV. | Post a comment | 06-25-09 / 11:18 PM : Return to Mysterious on mac / demo (cjed) | The mac version of Return to Mysterious Island (still available on iPhone) has been released. We can download a demo, that is likely to work on a 1,25Ghz G4 (worked for the previous games). It is priced 29,90$. | Post a comment | 06-21-09 / 01:08 AM : Navigon MobileNavigateur for iPhone (cjed) | Navigon provides the first navigation application for iPhone, MobileNavigateur Europe. It doesn't require download nor internet connection, as it is bundled with 1,65Gb of maps. We can watch videos here and there. It is priced 74,99 before June, 30, that looks interesting regarding its features and covered range. | Post a comment | 06-21-09 / 12:53 AM : iPhone 3G S / iPodTouch 2 : OpenGL test (cjed) | BlackPixel provides a first performance comparison between the new iPhone 3G S and iPod Touch 2.0 under OpenGL (1.1). The new iPhone is twice as fast. | Post a comment | 06-19-09 / 12:55 AM : Google AppEngine limitations / workarounds (cjed) | Here are some limitations to consider when we plan using AppEngine. They are most likely due to clouds constraints and performance. We can read a compatibility list of various J2EE frameworks and supported Java APIs.
1000 files limit
Each application is limited to 1000 files. Then when using Cappuccino we have to use Press tool (with flatten option - to be tested with 0.71 version as it was broken in 0.70 beta) or remove the .j files (keep only the .sj). For CP2JavaWS, images resources from unused components were also removed (load time should be however better using Press).
As the concept of physical machine is gone with clouds computing, we cannot write in files, and we can only read files in WEB-INF (or accessibles through the classloader).
1000 results limit / limited offset for requests
For performance concerns, requests results are limited to 1000 records. Moreover the offset cannot be higher (requests return 0 records when the offset reaches the 1000th position). Then we cannot browse a thousands of lines table with limit(offset, count) if not using a filter/condition. We could still add a criteria on the index to fetch records in multiple parts (for each thousand step). However this would only work if we are sorting by the index (wouldn't work if sorting by another column). It is the same if using two requests (one for retrievinig the indexes and another using selection where index in (index range) limit count), as the first request result will be limited. Same problem if we use a temporary sort table (the result from the select request used to retrieve the data to insert is limited), moreover that solution requires to compute again the temporary table if the sort criteria (or condition criterias) vary.
One solution would be to define a special key (see Python section Queries on Keys, _key_), in memory managed and without read limit (same section for Java/JDO doesn't however include these informations). It would require to be able to modify dynamically this key (as it depends from the sort column), or to define for each sort column an additional column (setted alongwith each insert), composed with the sort column value and index value. We could then add to the request a _key_>previous limit value criteria (value of the composite column fot the last element retrieved during the last 1000 elements fetch). Adding a criteria on the primary key wouldn't work if using another sort column, as the criteria applies before sorting (that problem is worked around if the criteria uses the composite column that corresponds to the sort column).
We can however assume that search criterias have to be refined/tighten if more than 1000 results are expected.
Mapping limitation / caches synchronization
Hibernate isn't supported as it instancies statically a UUID generator, using inetAddress class (is among the restricted/unsupported APIs by AppEngine, as well as other machine related instructions : threads, etc.) Then a modified version of an Hibernate class is provided in CP2JavaWS (uses code from JUG framework instead).
The demo of CP2JavaWS uses an HSQLDB in-memory database to easier the example install (no databse server to create), and table and initial data are created at launch time (from a context listener). The values of the third column (age) are generated randomly, in order to allow testing of sort feature. Then these values can change depending the timeframe we access the application (as these values are in memory, they are different from an application instance to another). That isn't a problem however for that demo (no persistance required).
We could configure an url to a database server, however it would have to be hosted elsewhere (if not datastore). And we cannot also use a local file to persist the database (only read allowed).
The main concern is memory synchronization between cloud nodes (application instances), as mapping solutions use two objects caches. The first level cache (one per persistanceManager/MappingSession - typically per user session) allows to compare a working object copy with the corresponding original (fieldLocking), and second level cache (one per persistanceManagerFactory/SessionFactory) allows to compare orignal object from persistanceManagers with current corresponding objects in the central cache (that is necessary for optimistic locking. Direct access - back door - to the database without passing through the persistanceManagerFactory - that is generally retrieved from JNDI - is forbidden, in order to keep integrity).
The GAE datastore is based on the DataNucleus mapping framework (implements JDO and JPA). By default the level 2 cache is off in DataNucleus, however by activating it (through settings) we can choose among various implementations : EHCache, Oracle Coherence, memcached, etc. In that list only Oracle Coherence and memcached allow work in a distributed environment (second level cache replication) - also the case for more recent versions of EHCache. Thanks to the plugin architecture in DataNucleus we can develop extensions to use another cache framework that manages distributed mode : JBoss cache, OSCache, Terracotta, etc.
The Google datastore uses a proprietary implementation of JCache specification (JSR107) to allow a distributed mode, and manages replication automatically. DataNucleus provides a manual API to manage datastores replication (for example the JDOReplicationManager to synchronize PersistanceManagerFactory). The AppEngine SDK also provides Memcache APIs, to manage (manually) replication of custom objects if needed.
Replacing DataNucleus with Hibernate (can use distributed caches like JBossCache, OSCache, Coherence and more recent versions of EHCache) in a GAE application would require to have hooks into the replication process (synchronize the HibernateSessionFactory). The distributed caches configuration (static) would however require to know exactly the nodes hosts, and GAE doesn't provide such information.
Finally we are tied with the Google datastore, with the following restrictions (do not come from Datanucleus limitations) : no aggregate requests, no polymorphic requests, limited filters, limited joins, limited many-to-many relations support, etc.
As BigTable isn't relational, JDO looks interesting as it isn't restricted to relational datastores (contrary to JPA). DataNucleus manages various datastore types, and an extension (plugin) to BigTable had to be developed by Google (notably to manage access through JPA interface). Despite the GAE datastore being at a higher level of abstraction than BigTable, some limitations seem directly tied with that implementation choice, whose goal is to provide consistent response time whatever the request (thus the above limitations).
No support for SOAP webservices
This shouldn't be a problem as recent RDA solutions (GWT and Cappuccino/CP2JavaWS) use JSON (enhanced with proprietary fields).
Inter-applications communication
Applications have to use URL Fetch APIs from AppEngine SDK to communicate.
Tools and WTP integration
The Eclipse plugin allows to create a web project (with AppEngine webapp configuration file, and required jars - have to be added manually to the buildpath), but doesn't provide integration with WTP (and no mean to stop the AppEngine server once stared - have to use WTP stop button). We can in fact deploy an AppEngine project from a WTP project, by renaming WebContent to war, and by adding the appengine-web.xml file to WEB-INF folder of the WTP project. However we then haven't support for classes enhancement (required for the datastore JDO and JPA implementations). We could probably add this automatic task by adding the appropriate builder in the .project file.
The enhancement step required for the mapping adds to the previous constraint of client code generation if using GWT. Some JDO solutions like LIDO still allowed to remove the enhancement step if needed (leading however to some performance hit as expected). | Post a comment | 06-18-09 / 11:36 PM : VLC 1.0 RC4 / VirtualBox 3.0 beta1 (cjed) | A new RC of VLC (before the final release) is available (also a 64 bits one for Snow Leopard).
A first beta of VirtualBox is provided. It brings DirectX 8/9 and OpenGL 2.0 support for Windows guests (and OpenGL 2.0 support for Linux ones). | Post a comment | 06-16-09 / 11:49 PM : VSL Vienna Imperial available (cjed) | VSL presents Vienna Imperial, a Bosendorder Imperial 290-755 piano library that includes 500 Gb of samples (100 velocity levels / 1200 samples per note) ! The samples (24 bits/44,1 Khz) are compressed at install time (lossless) to only require 50 Gb. A new player is provided (features a convolution reverb). An Intel Core Duo mac with Leopard is required, as well as 1,5 Gb available ram. It is priced 875$. | Post a comment | 06-16-09 / 11:43 PM : Sims 3 PC review (cjed) | A review of the PC version of Sims 3 is available at Gameplay Monthly. | Post a comment | 06-16-09 / 11:41 PM : Java update for Leopard (cjed) | A 4th update to Java 6, 5 and 1.4.2 is available for Leopard (Java 6 however only supports Intel macs). The updated versions are then 1.6.0_13, 1.5.0_19, and 1.4.2_21. | Post a comment | 06-14-09 / 04:29 PM : iPhone 3D Checkers, X2 Soccer/2XL Supercross (cjed) | Among free games (or lite versions) on the AppStore we can find : 3D Checkers, Terminator Renaissance lite, World Cup Ping Pong lite, X2 Soccer 2009 lite, 2XL Supercross lite, Paper Toss. | Post a comment | 06-14-09 / 01:19 PM : Cappuccino 0.71 and controls demo (cjed) | Cappuccino 0.71 RC1 is available. It brings these fixes/changes and we can now access to an online demo of the whole controls, notably the new Segmented Control type. | Post a comment | 06-13-09 / 04:45 PM : RoguePlanet/1112 special price / LiveFire (cjed) | As Agharta Studio announced a new game, Rogue Planet (turn by turn strategy game), they drop the price of their famous adventure game 1112 episode 01 to 1,99$ (from 7,99$). Episode 02, whose development took more time than initially planned due to parallel work on Rogue Planet, should be released very soon. Moreover, as we can read in Episode 01 description that following episodes will be available at half the price, it should be priced no more than 4$.
We can also discover a more advanced video of Ngmoco's LiveFire, that was renamed Kill Test. | Post a comment | 06-13-09 / 01:33 AM : CP2JavaWS 0.72 : fixes and AppEngine support (cjed) | A new version of CP2JavaWS is available at sourceforge :
Note : now uses json2lib stringify and parse methods from latest Cappuccino main branch (and future 0.71 version). Then it does not work for version 0.7 (or you should replace these methods manually by these from CPValue).
These two new methods should lead to general better performance.
- Modified server-side demo HabilitationServiceImpl to return true for the
genericDAOService methods.
- CP2JavaWSEndpoint init had a bug with testing presence of sameDomain
argument : replaced if(aSameDomain) with if (aSameDomain!=nil).
- CP2JavaWSTableViewDelegate : in sendSynchRequest, added the test for
sameDomain (was ok for sendAsynchRequest) to use JSONP mode if not same
domain.
- Modified hibernate config .hbm file to use assigned generator for the id, as AppEngine does not provides the InetAddress class.
However Hibernate's SessionFactoryImpl still owns a static field of type UUIDHexGenerator that is always initialized, and that extends AbstractUUIDGenerator, whose uses InetAddress in its static init part.
Then had to redefine AbstractUUIDGenerator (included in same original package name in the demo project's src folder) : when deploying to AppEngine we have to comment the line that uses InetAddress and uncomment the line that uses a random generated address (based on JUG project, also licenced under LGPL).
A working demo is now available on AppEngine (same code as the included webapp example except the endpoint's url and use of the random generated address in the redefined AbstractUUIDGenerator class) :
http://cp2javaws.appspot.com
(tested on Safari 4 and Firefox 3.0.x. Is ways faster on Safari, however performance should be improved with upcoming Firefox 3.5 release). | Post a comment | 06-12-09 / 12:43 AM : Yamaha S90 XS / S70 XS (cjed) | Yamaha presented the S90 and S70 XS, evolutions of the S90, with 88 keys (S90 XS) or 76 keys (S70 XS). They use the same audio engine as the Motif XS, and include 142Mb additional new piano samples from a Yamaha S6 (456 Mb total rom). | Post a comment | 06-12-09 / 12:37 AM : Roland announces Juno Di (cjed) | Roland presented the Juno Di, expected in September. It is a portable version of the Juno-D, with 61 keys and the option to operate on rechargeable batteries. | Post a comment | 06-10-09 / 11:37 PM : iPhone Toki Tori lite /Blimp /Doom 3 (cjed) | A lite version of Toki Tori is available at the AppStore. It includes many specific levels intended to demonstrate the full game.
We can also find Blimp, priced only 0,99$ for the launch time (2,99$ later).
Finally id Software announced an iPhone version of Doom 3, Doom Resurrection, due in a month (besides the previously announced Doom Classic). | Post a comment | 06-08-09 / 11:36 PM : iPhone Real Racing / Prey / Flashback lite (cjed) | Real Racing, considered as the most realistic racing game for iPhone, is available at the AppStore (9,99$). First reviews are very positive, and we can watch a stunning video here. It seems better than Fastlane Racing. However Gameloft presented Asphalt 5 during the WWDC, announced as the best racing game for iPhone.
We can also find an iPhone adaptation of Prey FPS, priced 2,99$ (see a video here).
Finally a lite version of Flashback is available (includes the first level and is compatible with iPhone OS 3.0). | Post a comment | 06-08-09 / 11:02 PM : Snow Leopard planned for September / Safari 4 (cjed) | Apple unveiled performance gains provided by Snow Leopard : an average 50% gain (application launch time, Finder, preview, wake up and shutdown, Time machine), thanks to optimizations (rewrite in Cocoa, use of Grand Central and 64 bits). The new QuickTimeX shows even better gain (up to 2,8 times faster). Finally we note some enhancements to navigation with Exposé and stacks, and a better management of medias eject when some of their files are in use. The install size drops to 6Gb (a half the one of Leopard).
The surprise comes from its price, only 29$ (upgrade from Leopard). Its release is planned for September.
The final version of Safari 4 is downloadable here, for mac and PC. On Windows it now uses the native Vista look. Performances (html and javascript) are said 4 times better than with latest beta of Firefox 3.5. | Post a comment | 06-08-09 / 10:37 PM : iPhone 3G S / iPhone OS 3.0 /MacBookPro 13' (cjed) | As expected, Apple presented a new iPhone, the 3G S, up to two times faster than previous model, and fitted with a more powerful 3D chipset that manages version 2.0 of OpenGL ES. It also includes a 3 mpixels camero with autofocus, allows video recording (30 fps VGA) and editing on iPhone screen, onboards a magnetometer, and provides vocal commands. Battery life has been enhanced and it is priced 199$ (16Gb model). The old 3G 8Gb model is now priced 99$.
The iPhone OS 3.0 is expected this June, 17.
Finally a new MacBook Pro 13' has been unveiled, priced close to the older MacBook (same 9400M video chipset). | Post a comment | 06-08-09 / 02:25 AM : CP2JavaWS 0.71 : generic DAO service/CPTableView (cjed) | A new version of CP2JavaWS is available at sourceforge :
Note : now uses json2lib stringify and parse methods from latest Cappuccino main branch (and future 0.71 version). Then it does not work for version 0.7 (or you should replace these methods manually by these from CPValue).
These two new methods should lead to general better performance.
- fixed a cache problem : now if an asynchronous request was pending before a cache fault, its return is ignored (as the state isn't the same as originally expected after a cache fault).
- the sorting code now works properly (as soon as headers and CPSortDescriptors are added to CPTableView). It can still be tested by modifying the init value for currentSortDescriptorsStr in CP2JavaWSTableViewDelegate (see commented code). The reference is now the position in the table, and limit(first, length) requests are used.
- added a new generic service, GenericMasterDetailDAOService, that manages retrieving of elements for any CP class, using Hibernate. It then avoids having to define a DAO service (the previous mode is still available, for custom management or non-database datastores).
To use the new mode, pass the table elements CP class name when creating the CP2JavaWSTableViewDelegate, instead size and read method names (that are then generic). | Post a comment | 06-07-09 / 12:17 AM : More details about Google Wave (cjed) | To follow first thoughts about Google Wave, here are more technical details and reviews :
The key foundation technologies to Google Wave are (see also details in original article The Secret Sauce Behind Google Wave) :
- GWT Ajax library, which not only powers complex interactions on a browser, but also provides a reasonably tuned rendering for small form-factor mobile devices, such as Android and iPhone
- XMPP protocol that provides a foundation for the Wave Federation Protocol
- the real-time keystroke-by-keystroke communication pioneered several years ago in Google Suggest, and now in production in high-scalability deployment the AppEngine cloud computing platform on which are hosted the Robot extensions to Wave
- the Big Table data persistence mechanism that powers Google’s implementation of a Wave server (something which is not required by the spec, but which facilitates developer productivity and production scalability)
We can also find an explanation of "operational transformation theory
(OT)".
The 3 protocols and 2 APIs behind Google Wave (see the whole article, Wave Protocol Thoughts) are :
- Federation (XMPP)
- The robot protocol (JSONRPC)
- The gadget API (OpenSocial)
- The wave embed API (Javascript)
- The client-server protocol (As defined by GWT)
We can also read useful informations in comments :
"Actually, the Gadget spec on the Wave docs site specifically notes that it does not support the OpenSocial APIs. They have their own API that mirrors some of the OpenSocial functions."
"Waves are containers for Wavelets. Wavelets are containers for Blips. Blips have content that are XML. So we have XML tunneled over JSON tunneled over HTTP POST"
However we also read "Waves are XML and can be served over XMPP."
"My understanding is that XMPP is for federation of servers, not for
robots."
"XMPP is much better than HTTP for client initiated interactions,
particularly for ones behind a NAT"
" I don't really understand why they don't base all three of their protocols on XMPP... I suppose you would need something like HTML5 WebSockets to make this work cleanly with a browser-based client."
" I would love there to be a standard API (much like DOM) for browsers to adopt that manages XMPP communications as a parallel to XHR. Leave HTTP for what it is good at, and do persistent connections another way."
"do you know if you have to use GWT to use parts of Wave?"
"No, it is not required at all.
Then we can use a Cappuccino client, and HTML5 WebSockets seems the future to replace all these mixed protocols. | Post a comment | 06-06-09 / 11:23 PM : iPhone Flashback : price drop (cjed) | Price of iPhone's Flashback dropped by 2$ at the AppStore, to 2,99$ (from 4,99$). | Post a comment | 06-06-09 / 01:19 AM : iPhone Myst : 1.1.3 update soon (cjed) | The first Myst update (1.1.3) for iPhone has been submitted to Apple and should appear soon at the AppStore. Besides bugs fixes, it brings an in-game browser that allows to access to hints without having to quit the game, and removes about 200Mb unuseful synchro files (subversion .svn files, probably also used to manage versions on resources, and not only for code).
No information yet about an enhancement and compression of sounds and musics, that are 16bits/22Khz and mono (also for the music), that is 700kbits/s. Instead we could get at least high quality and stereo music, using master CD (on sale at Amazon) to produce AAC versions, at a third the bitrate (and so an aditionnal space gain).
We are also waiting for an option to choose the display ratio : original Myst pictures on CD had been rendered in 544*333, and it seems those on the iPhone version are the same size, only using jpeg compression algorithm (that wasn't available 15 years ago) to allow a better color depth (32 bits instead of indexed colors with 100 colors palette) while keeping a similar or reduced files sizes. It can then explain why trees on Myst island look like stretched down horizontally (iPhone resolution is 480*320 - so a different ratio).
The videos have been rendered again, in order to integrate nicely with the deeper images, and are likely to use a recent and efficient codec (we couldn't then do better in that area). | Post a comment | 06-06-09 / 01:00 AM : Sims 3 desktop version review (cjed) | Gameplanet provides a review of Sims 3 (PC and Mac version). It was rated high (9/10) : It's not simply a graphical overhaul, but a total revamp of the old gameplay and GUI. | Post a comment | 06-06-09 / 12:00 AM : Google Wave / OpenDoc/ Cappuccino & CP2JavaWS (cjed) | Recently Google announced Google Wave, a social cooperative way to exchange data and mix them in a rich desktop container application, whatever their location (same domain or not) and then protocol. Two days ago we discovered Almost.at application made with Cappuccino (there was even an article about it at Ajaxian.com). Recently I pointed an (old) article from Greg Maletic about Apple's Opendoc (that was cancelled 10 years ago).
This week people compare Google Wave with OpenDoc :
Exploring Google Wave as a Social-Enabled OpenDoc : a modern re-imagination of Apple’s abandoned OpenDoc component software technology that has been social-enabled and lives in “the cloud... Waves, the software components that allow a Wave document to contain supplemental datatypes, are called gadgets, rather than parts. Examples of gadgets can include a YouTube player, a chess or sudoku game, a photo album fed by mRSS, and even a Google Maps object.
Google Wave: OpenDoc Redux : The overall concept often seems very similar to that of OpenDoc, back from 1992, and in the days when Microsoft was happy to work with Apple. No Gears, but impressive HTML 5...
What Intrigues Me About Google Wave : My initial thought was was, “Hey, somebody finally got Apple’s OpenDoc to work.”
Twitter - Tweetie : google wave is really just IM + opendoc. anybody else remember opendoc? i think i'm the only one.
Personnaly I designed CP2JavaWS enpoints to hold their own authenticate delegate (then changes I made to CPURLConnection), in order to be able to assemble application services in a composite desktop (container) - that can reminds Java Portlets - whatever domain they come from (transparent switch to JSONP mode if the requested service's webapp is on another domain than the client CP application's index.html). I had then also OpenDoc in mind, and started taking notes some months ago. | Post a comment | 06-04-09 / 11:13 PM : Marble Madness announced for iPhone ! (cjed) | Marble Madness has finally been announced for iPhone (exclusive info from Toucharcade), and is coming soon ! Moreover it will include the 6 original (and unmodified) levels (Classic mode), plus enhanced versions, and additional game modes : Targets Race, Size Race, Flag Race and Night Race. There isn't any screenshots or video available yet. | Post a comment | 06-03-09 / 01:17 AM : Almost.at : news readers using Cappuccino (cjed) | A year following 280Slides surprise, we can discover a new stunning application developed in Cappuccino : Almost.at. It is a news channels (Twitter, links to related youtube videos) reader, that features an iTunes like interface (equalizer type graphic to choose events date, pause/play button to hold news retrieving - use JSONP asynchronous requests). Moreover the application uses a custom sheets implementation (simple CP windows whose frame is animated using CPPropertyAnimation).
Again, what is important here is how the application was made : advanced objects concepts (dynamic bindings through IB and soon Atlas, delegation chain - that is a true messaging system -, programming using mostly delegates instead inheritance), high level features provided by Cappuccino's implementation of Cocoa frameworks (drag&drop, undo/redo, quartz engine that includes compositing and core animation - it notably brings automatic management of transparency and shadows for widgets -, etc.), really few code to write (and clean and reusable code). So it couldn't be compared with Flash applications, even the stunning, very powerful and practicable Pixlr. | Post a comment | 06-03-09 / 12:45 AM : Steinberg Cubase iC Remote Control for iPhone (cjed) | Steinberg provides for free at the AppStore Cubase iC - Remote Control Application, an iPhone application that allows to remotely control (through Wifi) Cubase (transport functions including recording, Arranger track). An extension, SKI Remote extension, has to be downloaded and installed on the computer (Mac/PC) to allow remote control of the sequencer. | Post a comment | 06-03-09 / 12:32 AM : V-Synth GT OS update 2.0 (cjed) | Roland provides at download version 2.0 of V-Synth GT OS. It brings new patchs, 27 new effects (among 5 new reverbs), enhanced samples import, better user interface/knobs response, etc. | Post a comment | 06-03-09 / 12:13 AM : Toy Story 3 teaser (cjed) | Apple added the first teaser of Toy Story 3, expected in June 2010. It is only a announcement made using the 3D animated characters. The movie was planned for 2006 (by another team), but the original team at Pixar took the project back after Disney buyed the company. | Post a comment | 06-02-09 / 11:50 PM : QT 7.6.2 / iTunes 8.2 : iPhone OS3 support (cjed) | A 7.6.2 update to QuickTime is available, and also a new 8.2 version of iTunes. It brings support for iPhone OS3, what may confirm a release next week during the WWDC. | Post a comment | 06-02-09 / 11:39 PM : iPhone Sims 3 available (cjed) | The Sims 3 is finally available at the AppStore (9,99$). First reviews are positive, however the game seems more targeted to social life than creativity : few customization options for characters, and very limited build actions for houses. We can read a presentation at Apple site. | Post a comment | 06-02-09 / 03:25 AM : CP2JavaWS 0.7 : remote tables browsing (cjed) | A new version of CP2JavaWS is available at sourceforge :
- New CP2JavaWSTableViewDelegate component, that manages retrieving of rows objects values automatically : triggers requests to the server through CP2JavaWS bridge classes when needed. It allows fast browsing of large table selection results without stressing the application server nor database server, and without requiring any pagination !
No GWT component, JSF or other provides that feature yet : they all use pagination (data splitted into multiple pages), that is less practical, less intuitive and slower to reach the desired element (if you have hundreds of elements you can’t have all pages number displayed, so you have to use many times forward/fast forward buttons).
Requests are sent ahead asynchronously when we reach near cache's end, so the application user interface remains responsive.
The requested rows count (next or previous cache size) adapts automatically to the current visible rows (that depends from the enclosing scrollview size - could be resized then).
Use of fast scroll using the scrollbar or scroll area is allowed (generates a cache fault and then a synchronous - that time only - call to reset all caches from the next requested position).
Ready for column sorting (infos are passed to the remote service's read method) once the datasource delegate method is managed in CPTableView.
Can pass selection criteria (SQL, HQL, or any other WHERE clause part string) to the remote service's read method if selection must be restricted (pass null to browse the whole table).
Use (see included example) :
- create the CPTableView and columns as usual but pass the corresponding attribute of the remote collection's elements class as the column id (you can pass any nested property using EL type path, as CPPropertyUtils is used here).
- create the table datasource (and set it as the tableView datasource) passing the endPoint, remote Java service interface name, read method and get size (whole table size) method names, index/primary key attribute name, additional criterias string :
tableViewDelegate = [CP2JavaWSTableViewDelegate createForEndPoint:endPoint1 javaServiceInterface:@"com.cp2javaws.demo.services.IDemoService2" readMethod:@"readCustomersForIndexCriteriaAndCountIsForward" sizeMethod:@"customersCount" idAttName:@"customerId" criterias:nil];
The read method on the server must follow this signature :
(Integer indexCriteriaValue, Integer count, Boolean isForward, String criterias, List sortDescriptors).
Fixes :
- fixed a problem with CP2JavaWSURLConnection's instance authDelegate scope, that lead to the application not working if using index.html (uses Press and then all global vars appear in the same file - same scope) instead of index-debug.html.
- fixed a problem when encoding/decoding null attributes values (if using custom CPCoding implementation and not checking for null attributes - ok when relying on automatic mode). These fields are now ignored (not included in JSON string).
- now follows correct rules when checking for sameDomain setting at endPoint creation (allows use of a local file for the client CP application if the server is local and Safari is used).
- Added preliminary support for synchronous calls (do not manage digest authentication yet). Then asynchronous mode remains the default (should also be preferred as it allows more responsive user interface). | Post a comment |
|