french english

RSS 1.0 
 
 Login 
 Password 
 Sign in 
 
01-29-09 / 11:28 PM : Cappuccino : first screencast (cjed)
A first screencast of Cappuccino (starter sample application) is available here. It is based on the starter application and adds a button that switches a label's text (toogle button like).
 Post a comment
01-28-09 / 11:53 PM : Apple : iPhone multitouch interaction patent (cjed)
While Apple won the rights about a 358 pages patent dealing with iPhone multitouch interaction, Macgeneration provides an interesting interview on that topic.
Moreover, Apple succeeded on another point, the incoming of a past leader from IBM hardware division.
 Post a comment
01-22-09 / 10:41 PM : Apple : security Guide for MacOSX (cjed)
Apple published a security guide for MacOSX. It is very comprehensive (260 pages), very technical, and targeted for advanced administrators, for sensible context (administrations, defense, etc.) :
This document is intended for use by security professionals in sensitive environments. Implementing the techniques and setting found in this document will impact system functionality and may not be appropriate for every user or environment.

The document introductory lists the new security features added by Leopard :

Better Trojan horse protection. Mac OS X Leopard marks files that are downloaded to help prevent users from running malicious downloaded applications.

Stronger runtime security. New technologies such as library randomization and sandboxing help prevent attacks that hijack or modify the software on your system.

Easier network security. After you’ve activated the new Mac OS X Leopard application firewall, it configures itself so you get the benefits of firewall protection without needing to understand the details of network ports and protocols.

Improved secure connectivity. Virtual private network (VPN) support has been enhanced to connect to more of the most popular VPN servers without additional software.

Meaningful security alerts. When users receive security alerts and questions too frequently, they may fall into reflexive mode when the system asks a security-related question, clicking OK without thought. Mac OS X Leopard minimizes the number of security alerts that you see, so when you do see one, it gets your attention.
 Post a comment
01-22-09 / 10:28 PM : Apple record results (cjed)
Apple published record results (historical, as we have been used from year to year) for the first 2009 fiscal quarter : 12 billions $ of revenue and 2,3 billions $ of net income (and 34,7% of gross margin), while most companies like Intel see their profit droping from 90%.
 Post a comment
01-22-09 / 10:17 PM : HTC G2 : keyboard finally not good ? (cjed)
Gizmodo published photos of the upcoming HTC G2. This phone finally removes the physical keyboard (that was said not to be even practical)... so Apple did right two years ago with the iPhone :-) ? Still no real challenger, even considering the old Apple hardware chief (that didn't accept the move to Intel) in charge of the development of new Palm phones.
 Post a comment
01-21-09 / 11:11 PM : QuickTime 7.6 available (cjed)
QuickTime 7.6 is available through Apple's site or system software udpate. It fixes some security holes and brings better quality of H264 single pass video encoding (also enhances AAC encoding).
 Post a comment
01-17-09 / 01:20 AM : AppStore : 15000 apps/500 millions downloads (cjed)
Apple announced 500 millions of downloads on the AppStore since its opening in July, and 15 000 softwares available. Google Android Market is far behind : The App Store launched with over 500 applications; Android with 62. Now, over one month into Android Market, we have yet to see even 500 Android applications available for download, with the most recent analysis placing total count at just 472.
 Post a comment
01-15-09 / 12:08 AM : Snow Leopard : a little revamped Aqua ? (cjed)
Macrumors think that Snow Leopard could use a refined Aqua user theme. We still expected that, as it was done for all OSX revisions, with some good things and some not so good : better dialogs, toolbars and windows in Leopard (also better drop menus), but derouting menu bar, and unatractive folders icons (were great in first OSX versions), leading to use of list view most of the time.
 Post a comment
01-14-09 / 12:15 AM : iCine for iPhone (cjed)
Following the iPhone targeted version of the Allocine website, and Premiere standalone iPhone application, we can now discover iCine, that brings same features as Premiere (localization of theatres using GPS, resumes, reviews, trailers), but also adds an offline mode. Both applications are free.
 Post a comment
01-10-09 / 12:22 AM : Various LCD quality also from Apple (cjed)
We remember the Samsung displays LCD various quality. We could suppose that such unfair trick was widely spread in the industry (a product's reference doesn't mean so much these days). It seems even Apple does that for entry line models (new MacBook), as reported by lesnumeriques.com (also unveiled the Samsung case two years ago).
 Post a comment
01-10-09 / 12:11 AM : PowerVR SGX543 / iPhone OS 3.0 and OpenCL ? (cjed)
During CES 2009, Imagination Technologies presented the PowerVR SGX543, the latest chipset from the family used on the iPhone. This new version can be scaled (multi-core) and supports GPGPU acceleration (CUDA, OpenCL). Then a 3.0 version of iPhone OS including OpenCL management could be unveiled after Snow Leopard introduction.
 Post a comment
01-07-09 / 01:12 AM : iLife/iWork9/MacBookPro 17'/later 25 year anniversary ? (cjed)
Apple also presented iLife 09, iWork 09, and a new MacBook Pro 17'.
It is the first keynote with so few announcements, as we expected at least new imacs fitted with the new Intel processors. We can then expect these announces later, during the Macintosh 25 years anniversary.
 Post a comment
01-07-09 / 12:45 AM : iTunes Plus : 8 millions DRM free songs (cjed)
During the Macworld Expo keynote, Apple a announced an extended catalog of DRM free songs with 256 kb/s encoding (iTunes Plus, that was previously limited to EMI titles) : now 8 millions songs from all majors are available in that format. They were previously priced 1,29$ (99$ for DRM songs at 128 kb). Pricing is now variable (obtained by majors after pressure on Apple) : 1,29$ for new releases and most demanded songs, 99 cents for other songs aged less than 6 years, and 69 cents for some songs (older and/or less demanded).

Apple stated that the proportion of songs at 69 cents will be higher than those from the two other categories. However the majors don't care about the number of different references they sold, what they are interested in is to sell a lot of a few titles, new realease and some very famous songs, priced max.

Moreover it is now possible to buy music at the ITMS from an iPhone using the cell network (3G). Before it was restricted to Wifi connections.s
 2 comment
01-05-09 / 11:46 PM : Debugging Cappuccino Using Safari (cjed)
A new article in the Learn section of Cappuccino.org presents the configuration of debugging from Safari, using the developer version of the browser (WebKit, adds a Develop menu).
Then testing of CP2JavaWS should be easier (was done using basic alert...). The try of Firefox's firebug plugin wasn't really satisfying.
 Post a comment
01-05-09 / 03:52 AM : CP2JavaWS : Cappuccino/Java services bridge (cjed)
CP2JavaWS is a bridge between Cappuccino rich desktop applications and Java services deployed on a web server. It consists of a proxy (client side) and a servlet (server side), and manages parameters namespace, encoding, ordering and JSONP (cross-domain) if needed.
An early beta version can be found at the project's sourceforge page (includes working examples). This framework is provided under the GNU LGPL license (a copy is included, as copyrights in source files).

Usage
On the client-side :
var endPoint = [CP2JavaWSEndPoint createForURL:@"http://localhost:8080/CP2JavaWSServletTest/CP2JavaWSEndpoint1"];
var remoteService = [endPoint proxyForJavaServiceInterface:@"com.cp2javaws.demo.services.IDemoService1" delegate:self sameDomain:false];
//[remoteService addMappingForObjJClass:@"CPMyObject" andJavaClass:@"com.company.MyObject"];
[remoteService method1:@"arg1StringValue" andWithArg2:2 andWithArg3:new Date() delegateRespHandler:@selector(manageServiceMethod1Response:) delegateFailHandler:@selector(manageServiceMethod1Fail:)];

On the server-side :
Just subclass the provided CP2JavaWSJSONServlet servlet and implement the (abstract) method protected Object getService(Class serviceInterface).

Limitations
- support for custom objects is limited in this first (early) release : deserialization and serialization of complex objets works on the server side (JSON value from request parameters and JSON value returned by the servlet), but it isn't fully fonctionnal on the client side (also due to the reason below).
-as Cappuccino Foundation classes and runtime do not yet implement the full Objective-C refection APIs (methodSignatureForSelector isn't implemented and Method-->method_types isn't used), there isn't any mean to check for arguments passed through the proxy during remote service method invocation. In GWT such checking is made against a delcared Java interface for the remote serivce. Once required APIs are available in Cappuccino, we we will be able to check for arguments (count and type) against an Objective-J interface (protocol) delcared for the remote service (will correspond to the remote service Java interface).
- as the service method's signatures aren't available, number arguments (always of class CPNumber and javascript type 'number') can't be accurately recognized : we can't determine from what init method CPNumber instances have been created for example (and afer all there is the problem of arguments passed as primitive values ), so only a provided interface/protocol will help. For now we just check if the number value is an int or a float (and we can't rely on the passed value length - could be higher than the expected type max value). We assume integers as to be java.lang.Integer on the server side (ok because use 4 bytes), and floats as to be java.lang.Double (8 bytes, ok for most high numbers and high precision).
- support for cross-domain (JSONP) is included but still needs some check as jsonData is returned as an untyped javascript object (ok with CPURLConnection, returns a string).

Why using JSON / namespace consideration / CP2JavaWS comparison with GWT / Spring 3 REST servlet
JSON is intended to be used as a simple serialization format for REST exchanges, so it doesn't manage namespace problematics. We can read a useful article about its limitations and read a thread that explores possible extensions for JSON to be namespace aware :
http://blogs.sun.com/bblfish/entry/the_limitations_of_json
http://groups.google.com/group/json-schema/browse_thread/thread/dd1a8c9e55035c67

A more robust solution would have been to use a format such as XStream one, but it would have required an Objective-J implementation of that framework. Like Ojbective-C, Objective-J still provides its own object serialiazation format through coders (objects data are available as CPData). However on the other side (Java server) an implementation would have also been required, and the CP classes definition would be required (for custom complex classes, in order to access to their coder definition), either at runtime or in the generation tool alla GWT if using one. GWT produces javascript serializers for Java objects definitions (their serialization informations) and doesn't rely on an existing coder/decoder format on the client side, so additional information isn't required.

GWT doesn't face this problem as the client code (generated into javascript) is written in Java, so the generation tool can use the same serialization Java APIs (furthermore each service parameter object is defined only once. With CP2JavaWS it has to be defined both in Java and in Objective-J). However the powerful (and fully tested since NeXT era) AppKit/FoundationKit frameworks and Interface Builder available in Cappuccino overcome that little overhead.
Moreover Cappuccino allows mixing Objective-J code and javascript code (in a completely transparent manner, as Objective-C with C/C++ code), what is interesting considering the Objective-J code is compiled (by a JIT pre interpreter) into javascript at runtime.
GWT uses a generation step to allow client-side javascript<-->JSON serializers/deserializers generation, as they have to be static (are javascript code). Objective-J runtime dynamic feature doesn't require any manual generation step, as the end javascript is produced at execution time. The CPJSObjectCreateJSON and CPJSObjectCreateWithJSON methods could even eventually be used from/to Objective-J objects variables as they are finally (after the pre-interpreter work at runtime) converted into javascript.

CP2JavaWS only uses JSON for complex service arguments objects and service return (for both simple and complex result objects). For the former the java type is appended to the request parameter name, not the value (so JSON string value - for complex arguments - is a standard one. Simple argument values are passed as is - not in JSON).
In the service response, as there is no other place to provide the result object type, the class name is prepended to the JSON string (before the starting "{")), so it isn't regular JSON. To have a consistent decoding on the client-side (being able to use the same CPJSObjectCreateWithJSON for simple and complex result object - we then extract recursively each JSObject field and set in as an attribute for the newly created CP class), simple result objects are also encoded into JSON : that string however only contains one property, whose name is fixed ("result").

The Spring project also plans to provide such of REST bridge servlet for Spring 3 version, and the namespace problematics are widely discussed. We can find an example of JSON to Spring beans request parameters mapping servlet here : http://weblogs.java.net/blog/rexyoung/archive/2008/11/how_to_bind_fro.html.

Why not a Java to Objective-J generation tool for Cappuccino, like with GWT ?
I thought about such GWT like Java to Objective-J generation tool when I wrote notes/ideas about CP2JavaWS bridge late December (only for the remote service bridge, the GUI would have still been defined with CP classes and InterfaceBuilder, not in Swing). However I rejected that idea because it is sort of simplification/cheat : on one hand it allows far more easier development of the solution, it can lead to more optimized code (faster because of static code produced, no dynamic feature), it allows writing code in Java (and business objects used as services's parameters and return are declared only one time). But on the other hand it breaks the development cycle and isn't elegant.
After all, what would we say if object-relationnal mapping frameworks required to use a tool to generate some DAO from the mapping files ? Instead they use reflection APIs to dynamically generate objects from mapping description files. I know some implementations (based on the JDO specification) are based on a bytecode enhancement step (to compare with GWT generation step), that allows datastore type abstraction (database, but also filesystem, CICS, etc.) and better performance. But the result is that most people stayed with standard reflection based solutions (notably Hibernate, a defacto standard - not even based initially on any specification...)
Google had no other way to make GWT work than to use a generation step, because their end client code is pure javascript (so no way to implement such remote service proxy). Thanks to Cappuccino Objective-C runtime (converts Objective-J code into javascript at runtime using a JIT pre-interpreter), the proxy could be implemented without requiring a generation step.
The dynamic approach for Cappuccino to remote services seems better for me. s
 2 comment
01-01-09 / 11:59 PM : iWork RDA version using SproutCore ? (cjed)
Following Google (and soon Microsoft), Apple could unveil a RDA (Rich Desktop Application) of iWork, through SproutCore (still used for MobileMe).
Moreover Steve Wozniak is expected to appear at the January Macworld.
 Post a comment