I ate my computer

facebook profil twitter profil linkedin profil lastfm profil flickr profil fairtilizer profil technorati profil

Developpement

samedi 21 novembre 2009

Google Go, "Hello world"

Geek dans l'âme, j'ai décidé d'installer Go sur ma machine, pour pouvoir le tester, l'installation n'a rien de complexe, et le tutorial fournit par Google n'est pas illisible, bref ca marche tout seul.

Je suis un mec sympas donc je vais quand meme vous donner la marche à suivre pour l'installer sur Mac OS. En l'occurence chez moi la version 10.6.2.

Primo, il vous faut lancer un terminal, je vous le dis, on va faire de la ligne de commande.

Assurez-vous d'avoir Python, Mercurial et XCode d'installés, ainsi qu'une connection internet disponible. Si comme moi vous n'avez encore Mercurial, un simple :

bash$ sudo easy_install mercurial

devrait suffir, pour installer la bête. Pour infos Mercurial est le système de version utilisé par Google pour Go, ils auraient pu choisir svn ou git, mais non.

Ensuite vous devez mettre en place quelques variables d'environnement pour installer et utiliser Go, donc dans votre fichier .bashrc ou .bash_profile, ajoutez les lignes suivantes :

export GOROOT=$HOME/go
export GOOS=darwin
export GOARCH=386
export GOBIN=$HOME/bin
export PATH=$GOBIN:$PATH

Sachant que vos projets Go sont cross-compiler, vous pouvez changer à loisir les variables $GOOS et $GOARCH, puisque celle-ci visent la machine sur laquelle vous souhaitez faire tourner votre projet.
Les valeurs pour $GOOS sont : linux, darwin et natcl (portage non complet), et pour $GOARCH: amd64, 386 ou arm, sachant qu'arm n'est pas encore supporté sous mac os.

faites un :
bash$ source .bashrc pour charger les variables, puis un petit
bash$ env | grep ^GO pour vérifier leurs présence.

vous devriez être donc près à récupérer et compiler Go.

Assurez-vous que le dossier $HOME/go n'existe pas, et ensuite taper :
bash$ hg clone -r release https://go.googlecode.com/hg $GOROOT
Mercurial devrait récupérer les sources sur le net, si tout ce passe bien vous devriez finir sur la ligne suivante :
N files updated, 0 files merged, 0 files removed, 0 files unresolved

Nous allons pouvoir commencer la compilation de Go. First step, vérifier l'existance du dossier $HOME/bin, si celui n'existe pas, un petit
bash$ mkdir $GOBIN && chmod 755 $GOBIN devrait suffir.

Maintenant allez dans le repertoire $GOROOT/src, et entrez la commande suivante ./all.bash et la compilation commence. Vous devriez voir tout une séries de lignes de code incomprehensible pour le commun des mortels, sauf pour nous les geeks fan de la ligne de commande et de la compilation à la mano ^^

Si tout ce passe comme sur des roulettes, le message final devrait être :
--- cd ../test
N known bugs; 0 unexpected bugs

Mais si comme moi, vous ne voyez jamais apparaitre la ligne finale vous indiquant que tout c'est bien passé... et bien voici ce que j'ai fais, j'ai tous simplement killer mon Terminal. J'ai bien essayé un Ctrl+C mais rien à faire le programme ne se coupe pas.

Enfin bref, cela n'empêche pas le compilateur Go d'être enfin près à l'utilisation. Si vous compiler pour amd64 le compilateur sera 6g, et le linker 6l, pour 386, 8g et 8l, et pour arm, 5g et 5l.

C'est maintenant le moment de créer votre premier programme Go, pour cela direction votre éditeur de texte favoris, au hasard emacs, le code d'un hello world est tout simple, le voici :
package main

import "fmt"

func main() {
fmt.Printf("hello, world\n")
}


Sauvegarder le tout sous un jolie nom comme hello.go, et en ligne de commande entrez un simple :
bash$ 8g hello.go
bash$ 8l hello.8
bash$ ./8.out

la sortie ne devrait pas ce faire attendre :
hello, world

Maintenant vous avez en mains les clés pour commencer à développer en Go.

samedi 12 septembre 2009

Torrager la suite

Histoire de vous tenir un petit peu au courant, voici des nouvelles de Torrager.

L'application continue son petit developpement, la version 0.2 est donc en cours.

Au programme, la possibilité de tagger ses torrents, et donc de gerer les tags (ajout, suppression, etc...)

Torrager05

et de les classer dans des collections, un peu à la manière des Smarts Playlist d'iTunes.

Torrager06

Forcement comme dans tous développement, et surtout lorsque les fonctionnalités developpées, nous servent d'apprentissage, cela prend plus de temps, et c'est plus compliqué. Et je ne vous cache pas que ces "Smart Playlist" m'en font voir de toutes les couleurs !

lundi 24 août 2009

Torrager, geré facilement vos torrents

Bonjour à tous !

Pas de news depuis quelque mois maintenant, pas que je n'aime pas vous parler, mais j'étais plutot du genre occupé c'est dernier temps.

Enfin bref, pour ceux qui ne seraient pas au courant, le service de stockage de fichier .torrent, Torrage est sortie il y a bientot 1 mois, celui-ci permet de stocker de facon anonyme vos fichiers.

Pour pouvoir gerer tous les petits fichiers envoyé sur le serveur, il faut bien sur un logiciel, c'est ici que Torrager entre en scene. La version actuelle (0.1), vous permet entre autre de :

  • gerer vos torrents
  • stocker vos fichier sur Torrage
  • lister vos torrents sans pour autant les uploader
  • uploader ulterieument vos torrents
  • voir facilement l'ensemble de vos torrents, et de savoir lesquels ne sont pas encore stocker

Torrager propose donc pour le moment le minimum vital pour manager vos fichiers.

Voici au passage quelques screenshots :

Torrager01

Torrager02

Torrager03

Torrager04

Désolé pour la qualité des screenshots, mais je ne suis pas encore super roder avec mon logiciel, et j'avoue je n'ai que tres peu envie de les refaire ^^

Concernant le futur de Torrager, la version 0.2 est en cour de developpement, avec pour principales nouveauté la possibilité de tagger vos torrents et de classer: Et quand à une date de sortie, je dirai, as soon as possible !

En attendant vous pouvez suivre ce liens pour telecharger la version 0.1 de Torrager

Si vous rencontré des bugs, ou souhaité en savoir plus, un mail : torrager at gmail.com

mardi 3 février 2009

Faisons une application iPhone !

Bon en gros tous est dans le titre.

J'ai les competences pour réaliser une application iPhone (oui je m'envois des fleurs !), et j'ai bien dis application pas jeu ! et j'ai bien quelques idée dans mes caisses dont au moins une qui devrait sortir bientot, mais bon apres, moi, je suis en manque d'idées...

Car oui, les applications (mobile, desktop, iPhone etc...) elles concernent avant tout ceux qui les utilisent, et si je ne gourre pas il s'agit de vous ! Alors voila, vous pouvez laisser des commentaires m'indiquant vos souhaits et/ou idées, je ferai ensuite une petite compilation des resultats, pour finalement choisir l'idée, gagnante.

L'application sera ensuite developpé par mes soins et gratuitement je precise.

Savoir si l'application sera gratuite ou payante, ou encore comment se partagerons les benefices, sont des questions qui restent encore à debattre, ces differentes options pouvant varié en fonction de l'application demandé. Nous reviendrons donc dessus en temps et en heure.

Et maintenant direction vos claviers !

mardi 15 avril 2008

Android, premier pas

Malgré le fait que finalement la première application sur laquelle je vais travailler sera pour iPhone, je continue quand même de jeter un coup d'oeil du coté d'Android. C'est donc pour cela que je vais essayé de faire des posts de temps en temps a ce sujet. On va donc commencer simplement par une petite appli qui ne va pas nous permettre grand chose.

J'ai volontairement sauté la partie installation du SDK, mais si cela vous semble trop dur, j'esserai de faire un petit billet a ce sujet.

Donc cette application ne fait absolument rien, si ce n'est afficher "Hello World, AndroidFirstStep". Il est vrai que j'aurai pu choisir plus dur, mais c'est déjà un bon début.

Donc premier chose créer un nouveau projet Android, pour cela sous Eclipse, vous cliquez sur File > New > Other.
Et vous arrivez sur cette fenetre :
etape1

Dans le champ de texte vous entrez "android", ce qui devrait donner cela :

etape2

Vous choisissez donc "Android Project" et vous cliquez sur next.

etape3
Dans la nouvelle fenetre vous entrez :

  • Project name: "AndroidFirstStep" (ou ce que vous voulez, c'est juste que cela sera plus simple pour suivre par la suite)
  • Package name: vous pouvez mettre ce que vous voulez, dans mon cas : "com.iatemycomputer.android.firststep"
  • Activity name, qui sera la classe point d'entré de votre application, vous mettez "AndroidFirstStep"
  • Application name, vous pouvez mettre "Android First Step"

Et donc bouton "Finish" pour finir.
Nous voila donc avec notre nouveau projet, allez donc faire un tour dans les sources du projet, et ouvrez AndroidFirstStep.java, vous devriez avoir quelque chose comme cela :


package com.iatemycomputer.android.firststep;

import android.app.Activity;
import android.os.Bundle;

public class AndroidFirstStep extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main);
    }
}

Ceci est la classe principale de notre application. Comme vous le voyez, cette méthode fait appel à

setContentView(R.layout.main);

qui permet de defenir la vue que l'on souhaite afficher, dans notre cas "main".

Allons donc faire un tour du coté des ressources, ouvrez le fichier xml, main.xml, situé dans res > layout.


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Hello World, AndroidFirstStep"
    />
</LinearLayout>

C'est ce fichier qui est appeler par setContentView, en réalité à chaque fois que l'on modifie ou créer une ressource, la classe R, et automatiquement regénéré avec les nouvelles entrées. On peu ainsi faire appel au differente ressource grace à la classe R.

Il faut maintenant lancer notre projet, faites un clique droit sur le projet, puis Run As > Open Run Dialog .... Dans la nouvelle fenetre créez une nouvelle configuration, donnez lui le nom que vous voulez par exemple, "Android First Step", et assurez vous d'avoir votre projet dans le champs projet. Choisissez ensuite l'activity qui servira à lancer l'application, cliquez sur Apply, puis Run.

Vous devriez obtenir le résultat suivant :
etape4

vendredi 11 avril 2008

Android, mise en bouche

Comme je le disais dans mon précédent billet, je travail actuellement sur Android. La société dans laquelle j'effectue mon stage de fin d'étude, souhaite développer une application, top secrète (ou pas), sur iPhone, Java Mobile, et bien sur Android. Je suis donc l'homme qui s'occupe de la version Google powered de l'application. Enfin disons plutôt que je suis, pour le moment, l'homme qui triffouille le SDK, pour essayer de voir ce qu'on peux faire avec.

Mais avant de ce jeter un peu plus dans le code, je vous conseil de regarder au moins ces 3 "petites" vidéos, histoire d'en savoir un peu plus, nous verons plus tard, comment tout cela fonctionne.



mardi 29 janvier 2008

Rails REST par login

Bon je sais que mon titre n'est pas super explicite, je vais donc essayé de clarifier la chose. Je viens de passer à Rails 2.0 qui est RESTful, et forcement la decouverte de nouvelles choses entraine son lot de difficultés.

J'avais bien trouvé une méthode pour utiliser dans mes applis Rails des URL de la forme :

http://localhost:3000/users/login

plutôt que

http://localhost:3000/users/id

En trifouillant gentillement le fichier routes.rb, hors depuis Rails 2.0, il y a par défaut une gestion totalement REST des URL, ainsi tout les liens créés automatiquement sont de la forme :

http://localhost:3000/users/id

le choix été donc soit de revenir à la solution précédente, et de perdre tout ce qui est généré automatique, ou de trouver une solution !
Et donc après quelques recherche j'ai fini par trouver cette solution, il suffit de quelques lignes en plus dans le model que vous souhaitez modifié, ici dans mon cas, on touche au UserModel, en ajoutant :

def to_param
   login
end


ce qui va forcer l'utilisation du login plutot que de l'id à condition bien sur que la colonne dans votre base de donnée soit "login". Il faut aussi pensé à modifier tout les finders du controller correspondant, on passe donc de :

@user = User.find(params[:id])

à

@user = User.find_by_login(params[:id])

Voila c'est tout simple et permet de garder tous les avantages de Rails 2.0