|
| 29-01-09 / 23:28 : Cappuccino : premier screencast (cjed) | Un premier screencast de Cappuccino (starter sample application) est disponible ici. Il reprend la starter application et y ajoute un bouton qui modifie le texte d'un label (foncitonnement de type toogle button). | Commenter | 28-01-09 / 23:53 : Apple : brevet sur le multitouch de l'iPhone (cjed) | Alors qu'un brevet d'Apple de 358 pages traitant de l'interaction avec l'iPhone (combinaisons de gestuelles multitouch) a été validé, Macgeneration propose une interview intéressante sur le sujet.
Par ailleurs Apple a gagné sur un second point, la venue d'un ancien responsable important de la division processeur d'IBM. | Commenter | 22-01-09 / 22:41 : Apple : Guide de la sécurité pour MacOSX (cjed) | Apple publie un guide de sécurité pour MacOSX extrêmement complet (260 pages) et technique, destiné à des administrateurs réseau avertis, pour les contextes d'utilisation sensibles (administrations, défense, 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.
Le document rappelle en introduction les nouveautés apportées par Leopard en matière de sécurité :
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.
| Commenter | 22-01-09 / 22:28 : Résultats Apple historiques (cjed) | Apple a publié des résultats record (historiques, comme c'est le cas d'année en année) pour le premier trimestre fiscal 2009 : près de 12 milliards de $ de chiffre d'affaires, et 2,3 milliards de $ de profit - et une marge brute de 34,7% -, alors que des sociétés comme Intel voient leur bénéfice chuter de 90%. | Commenter | 22-01-09 / 22:17 : HTC G2 : le clavier pas bien finalement ? (cjed) | Gizmodo publie des photos du futur HTC G2. Celui-ci abandonne le clavier (qui d'après les utilisateurs n'était même pas pratique)... à croire qu'Apple avait déjà raison il y a deux ans avec l'iPhone :-) ? Toujours pas de réelle concurrence, même avec l'aide de l'ancien responsable hardware d'Apple (qui n'avait pas digéré le passage aux processeurs Intel) en charge du développement des nouveaux Palm. | Commenter | 21-01-09 / 23:11 : QuickTime 7.6 dispo (cjed) | QuickTime 7.6 est disponible sur le site Apple ou via l'utilitaire de mise à jour système. Cette version corrige des failles de sécurité et améliore la qualité de l'encodage H264 avec simple passe (également meilleur encodage de l'audio AAC). | Commenter | 17-01-09 / 01:20 : AppStore : 15000 apps/500 millions téléchargements (cjed) | Apple a annoncé 500 millions de téléchargements sur l'AppStore depuis son ouverture en juillet, et 15 000 logiciels disponibles. L'Android Market de Google est vraiment très loin derrière : 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. | Commenter | 15-01-09 / 00:08 : Snow Leopard : Aqua un peu revue ? (cjed) | D'après Macrumors, Snow Leopard pourrait présenter une interface légèremment revue. On pouvait le deviner puisque cela a été le cas avec chaque version (pour les démarquer), avec du mieux et du moins bien : l'apparence des boîtes de dialogue, des barres d'outils, des fenêtres et des menus déroulés s'est améliorée avec Leopard, mais la barre de menu est déroutante, de même que la disparition de l'effet de profondeur sur les icônes des dossiers (une réussite du MacOSX original), à tel point qu'on se retrouve à utiliser principalement le mode liste. | Commenter | 14-01-09 / 00:15 : iCine pour iPhone (cjed) | Après la version spéciale iPhone du site web Allociné, et l'application standalone Premiere, on peut trouver iCine, qui propose les mêmes fonctionnalités que Premiere (dont localisation des cinémas avec le GPS, horaires, résumés, critiques, bandes annonces), mais offre également un mode offline. Comme Premiere, iCine est gratuite. | Commenter | 10-01-09 / 00:22 : Des dalles LCD variables aussi chez Apple (cjed) | On se souvient du scandale des dalles des écrans Samsung, d'origine (et qualité) variable. On supposait bien que ce genre de pratique est courant dans toute l'industrie (la référence d'un produit ne signifie plus grand chose...). Et bien il semblerait qu'Apple fasse de même avec les écrans des nouveaux MacBook, comme le rapporte le site lesnumeriques.com (déjà à l'origine du dévoilement du cas Samsung). | Commenter | 10-01-09 / 00:11 : PowerVR SGX543 / iPhone OS 3.0 et OpenCL ? (cjed) | Lors du CES 2009, Imagination Technologies a présenté le PowerVR SGX543, le successeur du chipset graphique équipant l'iPhone. Cette nouvelle version peut être déclinée en multi-core et permet l'accélération GPGPU (CUDA, OpenCL). Une version 3.0 de l'iPhone OS supportant OpenCL est donc attendue après Snow Leopard. | Commenter | 07-01-09 / 01:12 : iLife/iWork9/MacBookPro 17'/le reste pour les 25 ans ? (cjed) | Apple a également présenté iLife 09, iWork 09, et un nouveau MacBook Pro 17'.
Il s'agit de la première keynote avec si peu de nouveautés, alors qu'on attendait au moins de nouveaux imacs équippés des nouveaux processeurs Intel. On peut donc s'attendre au report de l'annonce de ces modèle pour l'anniversaire des 25 ans du Macintosh. | Commenter | 07-01-09 / 00:45 : iTunes Plus : 8 millions de morceaux sans DRM (cjed) | Lors de la keynote de la Macworld Expo, Apple a annoncé l'extension des morceaux proposés sans DRM et avec encodage à 256 kb/s (iTunes Plus, qui était auparavant limité aux titres d'EMI) : ainsi 8 millions de morceaux des différentes majors sont accessibles dans ce format. Ils étaient auparavant vendus 1,29$ (contre 99$ pour les morceaux à 128 kb et avec DRM), mais à présent les prix de l'ensemble des morceaux sont variables (obtenu sous la pression des majors) : 1,29$ pour les nouveautés et les morceaux les plus demandés..., 99 cents pour les autres morceaux de moins de 6 ans, et 69 cents pour certains (plus anciens et/ou moins demandés).
Apple annonce que la proportion de morceaux à 69 cents sera plus importante (en références donc), mais pour les majors le nombre de titres importe peu, elles préfèrent faire un gros volume de vente sur quelques titres au prix maximum, les nouveautés et les incontournables.
Il est de plus à présent possible d'acheter de la musique sur l'ITMS depuis un iPhone via le réseau cellulaire (3G), alors qu'une connexion Wifi était requise précédemment.s | 2 commentaire | 05-01-09 / 23:46 : Debugger Cappuccino avec Safari (cjed) | Un nouvel article dans la section Learn de Cappuccino.org présente la configuration du debugging dans Safari, possible avec la version développeur du navigateur (WebKit, activation du Develop menu).
Le développement de CP2JavaWS devrait être ainsi simplifié (utilisation d'alert jusqu'à présent). L'essai avec Firefox et le plugin Firebug n'avait pas été concluant. | Commenter | 05-01-09 / 03:52 : CP2JavaWS : bridge Cappuccino/services Java (cjed) | CP2JavaWS est un bridge entre les applications RDA (Rich Desktop Applications) basées sur Cappuccino et des services Java distants déployés sur un serveur d'application (mais pas exposés sous forme de Webservices SOAP). Pour la partie client, CP2JavaWS propose un proxy pour les services distants, dont l'utilisation est similaire à la mise en oeuvre de GWT (et sans nécessiter de phase de génération contrairement à GWT, grâce au runtime Objective-J - phase de transormation du code Objective-J en javascript au moment de l'exécution). Côté serveur une servlet est proposée, qu'il suffit de dériver pour l'attacher à une factory de services. CP2JavaWS gère les namespaces, l'encodage/décodage en JSON des arguments d'appel et du retour Java, l'ordre des paramètres, et les accès cross-domain (JSONP) si nécessaire.
Une première beta peut être téléchargée sur la page sourceforge du projet. La distribution inclut des exemples fonctionnels. Le framework est proposé sous la licence GNU LGPL license (dont une copie est incluse, de même que les copyrights dans le code source).
Utilisation
Côté client :
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:)];
Côté serveur :
Dériver simplement la servlet CP2JavaWSJSONServlet fournie et implémenter la méthode abstraite 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.
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 commentaire | 01-01-09 / 23:59 : iWork en RDA via SproutCore ? (cjed) | Après Google (et bientôt Microsoft), Apple pourrait lancer sa suite iWork en version RDA (Rich Desktop Application), via SproutCore (déjà utilisé pour MobileMe).
Par ailleurs Steve Wozniak devrait participer à la Macworld de Janvier. | Commenter |
|