Blogs

jQuery en 5 (10?) minutes

Ce matin j'ai voulu "m'amuser" avec jQuery Mobile. Je me suis très vite aperçu que sans connaître jQuery, j'allais être très vite limité. Donc pas le choix, je suis allez jeter un coup d'oeil à jQuery (un framework javascript donc). C'est extrêmement puissant, cela permet de prendre le contrôle d'une page web en javascript très facilement.

Onboard Javascript coding avec Textastic sur iPad et le framework Jo


Il y a quelques années je codais et compilais directement sur mon palm pilot en Pascal (avec pp : http://www.ppcompiler.org/). Je viens de retrouver ce plaisir sur iPad grace à l'excellentissime éditeur de code Textastic (http://www.textasticapp.com/ 4.99$, sérieusement ça les vaut largement) qui reconnait de multiples langages avec colorisation du code pour chacun. Textastic a un gros avantage dans sa version 1.1 : la possibilité de visualiser le rendu de ses pages HTML(+javascript) dans un navigateur embarqué. Du coup le code de webapp dans le canapé ou dans le train, c'est maintenant possible, et ceci de manière assez confortable. Dans ce tuto, nous allons voir comment et ceci avec le framework Jo qui permet de développer des applications mobiles facilement.

Une Webapp en moins de 10 minutes avec Jo


Nous allons voir comment réaliser une "todolist" simpliste en quelques minutes grâce au framework javascript "Jo".
Jo est léger, simplissime à utiliser, destiné à faire des webapps pour nos jouets.
L'objectif de ce mini article est justement de démontrer tout ça.

Le code de Jo est très très lisible, donc s'il manque quelque chose dans la documentation vous trouverez très vite vos petits dans le code source.

  1. Créons tout d'abord le squelette de notre application :

HelloWorld Android Natif avec le NDK

Cet article traite de l'utilisation du NDK Android.
Le NDK permet de créer des librairies en C/C++ pour android et de les appeler à partir de Java.

Principe du NDK
Le NDK utilise JNI (java native interface) qui permet d'interfacer du code écrit en Java avec du code natif écrit en C/C++.

Pré-requis :

  • Eclipse installée
  • Plug-in Eclipse Android installé
  • SDK Android installé

Je suis sous OSX, sous Windows il faut aussi instaler cygwin + gcc.

Apprendre Objective-C sous Windows

Je suis tombé par hasard sur un petit bijou sur Google Code : http://code.google.com/p/oscompiler/ : OSCOMPILER, un compilo Objective-C codé en .Net (v°4).
L'installation est simplissime :

  1. Télécharger : http://code.google.com/p/oscompiler/downloads/detail?name=OSCv0.1.4.zip
  2. Dézipper : vous obtenez 2 fichiers : osc.exe, OSRuntime.dll
  3. Installation terminée !

Maintenant, nous allons tester : créer un fichier hello.m (dans le même répertoire) et saisir le code ci-dessous :

#import 
                                             
@interface Main : NSObject { }
@end

@implementation Main
    +(void)main {
        NSString *mystring = @"Hello world !";
	NSLog(@"mystring : %s",mystring );
    }
@end


  • Sauvegarder
  • Lancer la commande : osc hello.m
  • Vous obtenez une exécutable hello.exe ...
  • ... que vous pouvez lancer ... Et ça fonctionne

à vous les joies de l'Objective-C sur un net-book, une période d'interco trop longue, ...

@+ & bonne soirée P.

Properties & Javascript

Il y a quelques mois j'avais fait un petit tuto sur comment coder orienté objet avec javascript : http://www.k33g.org/?q=node/42. Ce qui me manquait, c'était la notion de propriétés (je viens de .Net). Et bien, c'est possible ! Je vous livre 3 méthodes différentes (qui ne fonctionne pas forcément sur tous les navigateurs, mobiles compris)

Habituellement, on fait comme ceci :

    function Human(name){
		var _name = name;
	
		this.getName = function(){return _name;};
		this.setName = function(value){_name = value;};
    }
    
    H = new Human("Donald");
    alert(H.getName());

...

Cocoa sans Interface Builder

Vous avez craqué, acheté un Mac, c'est beau. Plein de bonnes résolutions, vous avez souhaité vous investir dans la programmation Objective C et Cocoa pour faire la "killer app" sous OSX.

1ère étape : Objective-C ..., ouups !!! : des pointeurs, une notation bizarroïde avec de crochets partout, mais ils sont où les crochets sur le clavier !?! (ndrl : shift+alt+( ou ) ).
Une fois passé ce choc culturel, et avoir codé votre "hello world !!!" en mode console, c'est le grand jour, passage à l'IHM graphique avec Cocoa.
Sous XCode (l'ide d'Apple) pour créer des IHM, l'outil par excellence est Interface Builder, que tous les programmeurs sous OSX (qui sont tombés dedans petits) estiment être THE outil.

2ème étape : Interface Builder : alors là, c'est le drame, vous étiez habitué à Visual Studio et ses Winforms (je pose un bouton sur mon écran, je double-click dessus, je saisi mon code, emballé c'est pesé, ça fonctionne), mais non chez Apple, ils ont pensé leur outil pour que le développeur Windows reste un développeur Windows.
Pas grave, avec courage, vous avez fait les tutos sur le net, investi dans un bouquin sur Cocoa en anglais ... puis en français. Mais non, la révélation n'est pas venue (vous vous êtes déjà "cogné" Objective-C, faut pas pousser ...).
Je dis "Vous", mais en fait c'est mon histoire.

Mais, je/vous suis/êtes têtu(s). Par hasard je suis tombé sur un article expliquant comment créer des objets graphiques dynamiquement, donc la nouvelle, c'est qu'il est possible de créer une IHM Mac sans Interface Builder. Je vous explique mon interprétation ...

Quelques liens à propos des WebApps

Pour tous ceux qui souhaitent se mettre au développement de Webapp, je vous ai fait une compilation des liens intéressants que j'ai pu trouver lors de mes recherches. Cette compilation est clairement orientée iPhone/iPad, mais générallement c'est applicable à Android.

1ère WebApp pour iPad & iPhone - No Objective-C


Cela fait un moment que je n'ai rien "pondu", beaucoup de travail, beaucoup de R&D, dont pas mal de lectures à propos des technologies web sur nos jouets mobiles (j'entends par là : iPhone, iPad, mobiles Android, etc. ...

Du coup après plus d'un mois, je viens de passer un moment pour vous concocter un nouveau tuto.

Aujourd'hui, je vais vous parler des "webapps" (comment les réaliser). Une webapp est une application construite à l'aide d'HTML (5), CSS (3) et javascript. Elles ont la particularité d'être "installables" et de se comporter comme une véritable application sur un terminal mobile, ainsi que de pouvoir fonctionner en mode "offline".

  • Vous n'êtes pas obligés de passer par l'Appstore pour les distribuer.
  • Vous n'êtes pas obligés d'avoir un MAC pour coder.
  • Vous n'êtes pas obligés de connaître Objective-C

Au final vous pouvez construire une application qui n'a rien à envier à certaines applications natives.

Voyons donc voir comment faire, le document est par ici : 1ère WebApp.

Bonne lecture et bon dimanche.
@+ Philippe

Coder Orienté Objet avec Javascript

Je suis un jour tombé sur un article expliquant que l'on pouvait très bien programmer objet avec javascript. C'est dommage, je ne retrouve plus l'article original (sur le web), mais maintenant, avec la mode ajax et les nouveaux frameworks, il en fleurit (des articles) de tous les côtés. Ce fut une "révélation", j'allais finalement pouvoir m'amuser avec du javascript !
Je vais donc aujourd'hui vous faire une petite introduction à "Javascript OO".
La lecture c'est par là : "Coder Orienté Objet avec Javascript"

Si vous avez d'autres façons de faire, n'hésitez pas : partagez ! ça m'intéresse énormément.

Bonne semaine à tous.


Warning: INSERT command denied to user 'kgkyojmt001'@'10.0.155.58' for table 'drp_watchdog' query: INSERT INTO drp_watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:354:\"INSERT command denied to user 'kgkyojmt001'@'10.0.155.58' for table 'drp_accesslog'\nquery: INSERT INTO drp_accesslog (title, path, url, hostname, uid, sid, timer, timestamp) values('Blogs', 'blog', '', '184.73.74.47', 0, '9a810f813bbc1b32d0b3ca4e5f0c6ff2', 1465, 1369130376)\";s:5:\"%file\";s:60:\"/homez.312/kgkyojmt/www/modules/statistics/statistics.module\";s:5:\"%line\";i:64;}', 3, '', 'http: in /homez.312/kgkyojmt/www/includes/database.mysql.inc on line 128

Warning: INSERT command denied to user 'kgkyojmt001'@'10.0.155.58' for table 'drp_watchdog' query: INSERT INTO drp_watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:883:\"UPDATE command denied to user 'kgkyojmt001'@'10.0.155.58' for table 'drp_sessions'\nquery: UPDATE drp_sessions SET uid = 0, cache = 0, hostname = '184.73.74.47', session = 'messages|a:1:{s:5:\\"error\\";a:1:{i:0;s:444:\\"user warning: INSERT command denied to user 'kgkyojmt001'@'10.0.155.58' for table 'drp_accesslog'\\nquery: INSERT INTO drp_accesslog (title, path, url, hostname, uid, sid, timer, timestamp) in /homez.312/kgkyojmt/www/includes/database.mysql.inc on line 128