Gregoire LEJEUNE
Chef de produit
Posts
Ceci n'est pas vraiment un post, mais plus un exemple d'utilisation de nasm + gcc (sous MacOSX). Il s'agit ici d'un exemple pour l'architecture i386. Il a été testé sous Lion. Promis, je vais proposer une mise à jour, rapidement, pour montrer ce que cela donne en x86_64.
Attention, la version de NASM installée par Apple date un peu ;) Je vous conseille donc d'installer la vôtre.
add.asm
section .data
msg: db '%d',0xa, 0
addition_cumul: dd 0
section .text
global _add
extern _printf
_add:
push ebp
mov ebp, esp
mov eax, [addition_cumul]
add eax, [ebp + 8]
mov [addition_cumul], eax
push dword eax
push dword msg
call _printf
add esp, 4
pop eax
leave
ret
testadd.c
#include <stdio.h>
int add(int nb);
int main() {
int i;
int last = 0;
for(i=0; i<10; i++) {
printf( "%d + %d = ", last, i);
last = add (i);
}
return 0;
}
Makefile
all:
/usr/local/bin/nasm -f macho add.asm
/usr/bin/gcc-4.2 -Wl,-no_pie -m32 -c testadd.c
ld -arch i386 -macosx_version_min 10.6 -lc -o testadd add.o testadd.o /usr/lib/crt1.o
Non, vous ne vous êtes pas trompé (et moi non plus) ! Ce post a presque le même titre que le précédent. En effet, je vous propose de refaire notre système de messagerie instantanée, mais en remplaçant AMQP par MQTT. Pour cela, nous utiliserons la gem ruby-mqtt et mosquitto comme broker.
MQTT est, tout comme AMQP, un protocole ouvert de messagerie inter-applicatif. Il est cependant beaucoup plus simple d'AMQP. En effet, il n'existe pas de notion d'exchange. Il n'est pas non plus possible d'envoyer des messages qui pourront être "conservés" par le broker afin d'être récupérés plus tard par des clients non connectés.
Un client MQTT va s'inscrire auprès d'une ou plusieurs queues pas la suite il pourra récupérer les messages envoyés à ces queues. De même, il pourra envoyer des messages à des queues, qu'il s'y soit inscrit ou non.
Voyons cela sur un petit exemple. En premier, le client :
1 require 'rubygems'
2 require 'mqtt/client'Dans ce post, nous allons nous amuser à mettre en place un système de messagerie instantanée en utilisant AMQP. AMQP est un protocole permettant de gérer des échanges de messages entre applications. Il s'agit d'un protocole ouvert dont il existe de multiples implémentations. Dans cet exemple, nous utiliserons Ruby pour créer notre système de chat.
Afin de rendre notre client de messagerie un peu plus convivial, nous nous amuserons à mettre en place une interface utilisateur en mode texte avec Ncurses. Aucun rapport avec AMQP bien entendu, il s'agit simplement de s'amuser un peu ;)
Autant vous prévenir tout de suite, je ne vais faire qu'effleurer les deux sujets (AMQP et Ncurses). Mon objectif étant de vous faire toucher du doigt ces différentes technologies, en espérant attirer votre curiosité, et en vous laissant le plaisir d'approfondir ces sujets par vous même.
AMQP
Avant de se lancer dans le développement, il faut comprendre les mécanismes d'AMQP. Pour cela, regardons le schéma
Depuis quelques jours, nous travaillons, avec @syl20j sur la refonte des installeurs des applications CD VIDAL. Dans leurs versions actuelles, ces installeurs sont générés via des scripts Ant utilisant du NSIS sous Windows et du PackageMaker sous Mac. Nous avons décidé de supprimer ces scripts pour remplacer tout cela par du maven et de l'install4j. Une des étapes consiste donc à comprendre ce que font les scripts Ant. Afin de faciliter notre travail, j'ai développé un petit script permettant de faire une représentation d'un fichier de build sous forme de graph.
Le voici :
#!/usr/bin/env ruby
require 'rubygems'
require 'open-uri'
require 'nokogiri'
require 'graphviz'
require 'getoptlong'
class Ant2Gv
def initialize(build_file, gv_path)
@build_file = build_file
@build_doc = Nokogiri::XML(open(@build_file))
@build_graph = GraphViz.new(:ANT, :path => gv_path)
@build_graph.node["shape"Depuis que je suis (re)passé sous Vim pour développer, j’ai passé un peu de temps à me peaufiner une configuration aux petits oignons. En effet, quand on a pris l’habitude de développer avec un IDE, le moindre refactoring, la moindre recherche ou les imports automatiques nous font oublier que dans la vraie vie, tout n’est pas aussi luxueux ;)
Heureusement, il existe un grand nombre de plugins pour Vim qui peuvent grandement nous simplifier la vie. Parmi ceux-ci, j’utilise :
- ack.vim est un module permettant d’utiliser Ack dans Vim.
- DirDiff.vim permet de comparer (et éventuellement merger) des arborescences de répertoires.
- fugitive est une interface à Git, dans Vim.
- NERDTree pour ajouter un explorateur de fichier à Vim.
- surround est un module qui permet de facilement jouer avec les “encadrements”.
- tagbar permet d’afficher tous les tags (classes, méthodes, variables, …) du fichier courant.
Une fois ces modules installés, il me manque trois petites choses:
Quand j'ai commencé à développer en Java, parmi les choses qui me manquait le plus, une console, façon IRB, était dans le top 10. En effet, le problème avec les langages nécessitant une phase de compilation et que lorsque vous voulez tester rapidement un petit enchainement, vous avez l'impression de devoir sortir l'artillerie lourde. J'ai donc cherché s'il existait quelque chose pour m'aider, et je suis rapidement tombé sur BeanShell. Ce dernier, utilisé en ligne de commande, répond totalement à mon besoin. Cependant, je me suis également demandé si je ne pourrais pas mettre en place ma propre solution.
Je me suis donc tourné vers ce que je connais et j'ai essayé de mettre en place une solution à base de JRuby et java-inline. Le résultat n'est pas parfait, mais il répond au besoin de base.
Voici un example d'utilisation :
$ export CLASSPATH=commons-io-2.0.1.jar
$ ruby jconsole.rb
jConsole with Java 10.7
> \help
\import [PACKAGE] : Import packageDepuis que j’ai rejoint l’équipe Software de VIDAL, j’avais pris l’habitude de coder avec Intellij. Trois raisons ont motivés ce choix. Premièrement, Intellij est (AMHA) moins lourd qu’Eclipse. En second, le support de Scala et Ruby y est particulièrement bien fait. Enfin il existe le plugin IdeaVIM, permettant de retrouver (presque) toute la puissance de VIM dans Intellij. Puis est arrivé @syl20j, vimiste parmi les vimiste qui m’a permis de me poser la question “Tant qu’à vouloir faire du VIM, pourquoi ne pas utiliser l’original ?” Et c’est ainsi que j’ai dis au revoir à Intellij et (re) bonjour à VIM.
D’intellij à VIM
Côté langage, nous en utilisons principalement trois : Java, Scala et Ruby. Pour le premier et le dernier, VIM ne demande rien de particulier. Pour Scala, il sera cependant utile d’installer un plugin. Après plusieurs tests, j’ai opté pour la version Git de Ross Timson
Depuis 2 sprints, nous travaillons, @syl20j, @jblemee et moi, sur un nouveau projet chez VIDAL. Partants de rien, nous avons choisi de développer en Scala, ce qui nous a ouvert la voie vers l'utilisation du modèle d'acteur. Mes divertissements avec Erlang m'avaient déjà permis de jouer un peu avec. Pourtant, il aura fallu que je l'utilise dans un contexte professionnel pour véritablement y consacrer du temps et essayer de l'appliquer en Ruby.
Les acteurs
Le principe du modèle d'acteur vise avant tout à simplifier le traitement parallèle. Pour cela il définit les règles suivantes :
- Un acteur participe à un traitement parallèle et ne partage rien avec les autres acteurs.
- On communique avec un acteur uniquement par le biais de messages.
- Les messages reçus par un même acteur sont traités séquentiellement (et non en parallèle) en suivant la règle FIFO.
Avant de voir comment nous pouvons mettre en place un modèle d'acteur en Ruby, il peut être intéressant de regarder comment il s'utilise dans d'autres langages.
Dans la continuité de mon développement de vf, je me suis demandé comment mettre en place de l'autocomplétion. En effet, si vf remplace très avantageusement cd, l'autocomplétion par défaut du shell ne permet d'accéder facilement qu'aux répertoires. Ainsi, un vf <TAB> ne présente que la liste des fichiers et répertoires, masquant totalement l'intérêt de vf, à savoir la présence des alias.
$ vf <TAB>
--< file >--
Capcode/ lipsum/ Fragaria/
...
Il serait bien plus intéressant que vf présente non seulement la liste des répertoires, mais également des alias :
$ vf <TAB>
github vidal docs
...
--< file >--
Capcode/ lipsum/ Fragaria/
...
J'ai donc fouillé un peu.
Etant un utilisateur convaincu de Zsh, je m'étais déjà amusé un peu avec le système de complétion de ce dernier. Pour ce qui est des autres, j'ai du
Si, comme moi, vous travaillez beaucoup en ligne de commande, que vous passez votre temps à naviguer d'un répertoire à un autre, peut-être vous êtes-vous créé des alias pour vous téléporter plus rapidement dans tel ou tel répertoire. Je me suis amusé à pousser cette idée et j'ai donc créé vf. Cet utilitaire vient remplacer la commande cd en comblant quelques une de ses lacunes.
L'idée première de vf consiste à pouvoir facilement créer des raccourcis vers des répertoires. Pour cela, il vous suffit de vous rendre dans le répertoire en question et à exécuter la commande suivante :
vf -s mon_alias
A partir de maintenant, vous pouvez facilement revenir dans le répertoire pointé par l'alias mon_alias en utilisant simplement la commande :
vf mon_alias
Si par la suite, vous souhaitez supprimer un alias, il suffit d'utiliser l'option -r :
vf -r mon_alias
A tout moment vous pouvez afficher la liste de vos alias en utilisant l'option -l.
Après 32 versions 0.X et un peu plus de 6 ans de développement, la version 1.0.0 de Ruby/GraphViz vient de sortir. Il est donc temps de consacrer un petit article à ces 4500 lignes de code, dont ~1800 pour les tests. D'en profiter pour remercier les 14 personnes qui ont participé à son développement, et de rendre un petit hommage aux utilisateurs qui vont permettre de bientôt passer la barre des 40000 téléchargements.
Un peu d'histoire...
Une première version en C
La toute première version de Ruby/GraphViz, dont les sources sont encore disponibles, était écrite en C. A l'origine, ce module faisait partie du projet Ruby/ASP qui avait pour ambition de créer un portage d'apache-asp en Ruby. Dans les faits, j'ai longtemps utilisé apache-asp pour développer Webtime, outil de timesheet. Et, vous l'aurez compris, j'avais l'espoir de le réécrire en Ruby.
Quel rapport avec GraphViz ?
Et bien j'envisageais d'ajouter à Webtime des fonctionnalités nécessitant la mise en place de graphes. Ceci afin de permettre de présenter des organigrammes, des schémas de dépendances entre projets, etc...
Créer un démon n'est pas des plus intuitif avec Java. Et bien qu'il y ait de l'espoir avec le futur Java 7, en attendant, il existe des solutions très simples à mettre en place. Je vous propose aujourd'hui de regarder ce que propose commons-daemon. Comme nous allons le voir, cette solution possède de solides avantages. Outre sa simplicité, elle permet, à moindre coût, de considérer les différentes plateformes.
Si nous avons l'habitude de parler de démon sous U*IX, un utilisateur Windows entendra plutôt service. Il s'agit d'une différence importante en terme de mise en place. En effet, si sous U*IX l'utilisation d'un fork suffit dans 90% des cas, sous Windows il faudra jouer avec le Service Control Manager. C'est justement ce que propose commons-daemon.
J'utiliserai indifféremment le terme de démon ou service dans la suite de cette présentation.
La partie commune
Dans cet exemple, j'utilise maven. Commencez donc par créer un projet et ajoutez la dépendance suivante :
Quand on n'y a jamais été confronté, on a tendance à croire que la cross-compilation est un sujet compliqué. C'est oublié le côté primitif1 d'un compilateur. En effet, ce dernier n'est rien d'autre qu'un traducteur dont le rôle consiste à générer un code cible compréhensible par une machine donnée, à partir d'un code source. Dans cette définition, rien n'indique, à juste titre, que cette traduction doit être faite sur la machine à laquelle est destiné le code cible. Ainsi rien ne m'empêche d'installer, sur mon Mac, un compilateur dans le but de créer des exécutables pour Windows. C'est ce que nous allons voir ici.
MinGW
MinGW est un projet ayant pour objectif de porter les outils de développement du projet GNU sur la plateforme Windows. C'est donc une excellente base de départ pour ce que nous voulons faire, car il met à notre disposition un ensemble de fichiers d'entêtes pour le développement d'application Windows. Ces éléments sont disponibles dans la partie
Depuis quelques semaines, je travaille sur le développement d'une application iPhone1, et j'ai donc profité de la trêve de Noël pour agrémenter mes connaissances dans le domaine du développement mobile en général. Comme tout utilisateur de Mac et possesseur d'iPhone, je me suis naturellement penché vers ce dernier en oubliant vaniteusement les autres. Dommage2 ! Oui, dommage parce qu'aujourd'hui, oublier une plateforme serait faire preuve de caprice irrationnel tant les parts de marchés des uns et des autres sont importantes3. Heureusement ma conviction qu'il est aujourd'hui important de développer des applications mobiles pour le plus grand nombre avait déjà été perçue par de plus sages que moi. Et c'est donc vers eux que je me suis tourné !
Dans ce post, je vais me concentrer sur une solution de développement conjointe entre iPhone et Android. Cependant, comme je l'ai indiqué, il serait dommage de se limiter à ces deux seules plateformes. En effet, il ne faut pas oublier BlackBerry, Symbian ou Palm.
La première fois que j'ai touché à Node.js je n'ai pas pu m'empêcher d'avoir une pensée émue pour le défunt1 Netscape LiveWire qui offrait alors la toute première implémentation SSJS. Passons...
Dans un précédent article, je vous ai présenté ma solution permettant d'utiliser GraphViz avec Node. La mise en place de cette solution passe par le développement d'un module. Je vous propose aujourd'hui de voir comment développer ce type d'extension pour Node.
La création d'extensions pour Node peut se faire de deux façons. La solution la plus évidente consiste, bien entendu, à développer en Javascipt. L'autre solution consiste à utiliser l'API C++ de V8. De ces deux méthodes en découle une troisième, évidente, qui consiste à mixer les deux précédentes.
Comme toujours, je ne serais trop vous conseiller de consulter la documentation. Pour la partie JavaScript, la documentation de Node est certes un peu light à certains moments, mais en regardant en plus le code des
Repositories
-
SHell In Ruby? Totally!1 watcher/Pushed 43 hours ago
-
Ruby interface to the GraphViz graphing tool22 forks/142 watchers/Pushed 4 days ago
-
A (very) naive MVC framework1 fork/1 watcher/Pushed 5 days ago
-
Ruby/XSLT is a simple XSLT class based on libxml <xmlsoft.org/> and libxslt <xmlsoft.org xslt=""/>4 forks/6 watchers/Pushed 7 days ago
-
Sync via FTP, only modified files3 forks/8 watchers/Pushed 13 days ago
-
Node.js interface to the GraphViz graphing tool4 forks/24 watchers/Pushed 3 weeks ago
-
My dot files for vim, zsh, ...1 fork/2 watchers/Pushed 2 months ago
-
A simple viewer/editor for GraphViz using MacRuby1 fork/18 watchers/Pushed 2 months ago
-
ChocBomb is a shameful copy of ChocTop - Build and deploy tools for Cocoa apps using Sparkle for distributions and upgrades; it’s like Hoe but for Cocoa apps.1 fork/1 watcher/Pushed 2 months ago
-
A Java/Play! clone of Rubular (http://rubular.com/)1 fork/1 watcher/Pushed 4 months ago
-
Erlang interface to the GraphViz graphing tool1 fork/2 watchers/Pushed 5 months ago
-
Jekyll is a blog-aware, static site generator in Ruby1 watcher/Pushed 6 months ago
-
Enhanced version of the standard "cd" command1 fork/7 watchers/Pushed 6 months ago
-
Ara is a tiny class that’s allow you to use actors in Ruby1 fork/3 watchers/Pushed 7 months ago
-
Capcode is a tiny MVC framework1 fork/8 watchers/Pushed 8 months ago
-
Wrapprer for prowl, http://prowl.weks.net/1 fork/1 watcher/Pushed 9 months ago
-
Cocoa syntax highlighting text view2 watchers/Pushed 11 months ago
-
Ruby/yUML is a small DSL to generate UML diagrams with yuml.me1 fork/13 watchers/Pushed 11 months ago
-
Capcode plugins1 fork/2 watchers/Pushed 13 months ago
-
Daemonize for node.js2 forks/3 watchers/Pushed 13 months ago
-
Call Lua from Ruby (and Ruby from Lua in Ruby)1 fork/5 watchers/Pushed 13 months ago
-
Node.js extended1 fork/2 watchers/Pushed 16 months ago
-
Example client/server code for oauth with Ruby and Capcode1 fork/1 watcher/Pushed 17 months ago
-
IRB in your browser, via websockets.1 fork/2 watchers/Pushed 19 months ago
-
couchc is a tiny console for CouchDB1 fork/2 watchers/Pushed 20 months ago
-
A tiny Planet powered by Capcode2 forks/4 watchers/Pushed 21 months ago
-
Create an eBook (epub) of your Jekyll blog1 fork/15 watchers/Pushed 21 months ago
-
A simple Ruby console for Mac1 fork/12 watchers/Pushed 23 months ago
-
CouchFoo provides an ActiveRecord API interface to CouchDB1 fork/1 watcher/Pushed 24 months ago
-
SOAP Lite Client provides support for developing clients interfaces from WSDL files.2 forks/2 watchers/Pushed 2 years ago
-
RComet is an implementation of the Bayeux protocol in Ruby.1 fork/2 watchers/Pushed 2 years ago
-
OS X toolbar script to open files or folders in Coda.1 fork/1 watcher/Pushed 2 years ago
-
A Ruby class to retrive "lorem ipsum" placeholder text from lipsum.com.1 fork/3 watchers/Pushed 2 years ago
-
Snippets for Cappuccino1 fork/1 watcher/Pushed 2 years ago
-
Manage your gems from the MacOSX Menu2 forks/10 watchers/Pushed 2 years ago
-
Mixr is a tiny memory object caching system1 fork/1 watcher/Pushed 2 years ago
-
A small class to execute process with root privileges on MacOSX1 fork/1 watcher/Pushed 2 years ago
-
A RDoc template "à la iPhone"1 fork/1 watcher/Pushed 2 years ago
Watched Repositories
-
A guide to using Git46 forks/152 watchers/Pushed 98 minutes ago
-
The Rhodes framework is a platform for building locally executing, device-optimized mobile applications for all major smartphone devices.115 forks/590 watchers/Pushed 7 hours ago
-
Ruby driver for MongoDB165 forks/733 watchers/Pushed 9 hours ago
-
Beautifier for javascript81 forks/722 watchers/Pushed 9 hours ago
-
Sequel: The Database Toolkit for Ruby128 forks/620 watchers/Pushed 11 hours ago
-
Typo is the oldest and most powerful Ruby on Rails blogware, providing custom templates, powerful drag and drop plugins API, advanced SEO capabilities, XMLRPC API and many more.140 forks/687 watchers/Pushed 11 hours ago
-
Akka Project144 forks/953 watchers/Pushed 15 hours ago
-
Rack for JRuby and Java appservers70 forks/298 watchers/Pushed 22 hours ago
-
Rack-based asset packaging system138 forks/1354 watchers/Pushed 2 days ago
-
Adds basic social networking capabilities to your existing application, including users, blogs, photos, clippings, favorites, and more.185 forks/869 watchers/Pushed 2 days ago
-
A feed fetching and parsing library that treats the internet like Godzilla treats Japan: it dominates and eats all.169 forks/893 watchers/Pushed 2 days ago
-
YARD is a Ruby Documentation tool. The Y stands for "Yay!"74 forks/520 watchers/Pushed 3 days ago
-
The PDF::Reader library implements a PDF parser conforming as much as possible to the PDF specification from Adobe.36 forks/270 watchers/Pushed 3 days ago
-
8 forks/293 watchers/Pushed 5 days ago
-
Web Application Framework in JavaScript and Objective-J230 forks/1623 watchers/Pushed 5 days ago
-
A mini view framework for console/irb that's easy to use, even while under its influence. Console goodies include a no-wrap table, auto-pager, tree and menu.21 forks/614 watchers/Pushed 6 days ago
-
Addressable is a replacement for the URI implementation that is part of Ruby's standard library. It more closely conforms to the relevant RFCs and adds support for IRIs and URI templates.39 forks/273 watchers/Pushed 6 days ago
-
A cross-platform programmer's editor written in Ruby. Official repo: https://github.com/redcar/redcar/140 forks/638 watchers/Pushed 7 days ago
-
Fast, Nimble PDF Writer for Ruby211 forks/1474 watchers/Pushed 11 days ago
-
A bunch of random scripts I've either written, downloaded or clipped from #git.31 forks/217 watchers/Pushed 13 days ago
-
Generic interface to multiple Ruby template engines78 forks/774 watchers/Pushed 2 weeks ago
-
GUI library for Ruby/Clojure/Java12 forks/97 watchers/Pushed 2 weeks ago
-
scheduler for Ruby (at, in, cron and every jobs)30 forks/456 watchers/Pushed 3 weeks ago
-
A Really Ruby Mail Library181 forks/1097 watchers/Pushed 3 weeks ago
-
Jekyll is a blog-aware, static site generator in Ruby818 forks/5245 watchers/Pushed 3 weeks ago
-
Python Twitter API60 forks/371 watchers/Pushed 3 weeks ago
-
Grit gives you object oriented read/write access to Git repositories via Ruby.201 forks/1223 watchers/Pushed 3 weeks ago
-
EventMachine: fast, simple event-processing library for Ruby programs188 forks/1506 watchers/Pushed 4 weeks ago
-
Opinionated tool for creating and managing Rubygem projects103 forks/1031 watchers/Pushed 4 weeks ago
-
Rack::Test is a layer on top of Rack's MockRequest similar to Merb's RequestHelper82 forks/355 watchers/Pushed 4 weeks ago
-
A Mac OS X preference pane for easily configuring Rails applications with Passenger.41 forks/667 watchers/Pushed 5 weeks ago
-
libharu - free PDF library19 forks/54 watchers/Pushed 5 weeks ago
-
4 forks/35 watchers/Pushed 6 weeks ago
-
Provide a standard and simplified way to build and package Ruby C and Java extensions using Rake as glue.23 forks/168 watchers/Pushed 6 weeks ago
-
A simple model based ruby authentication solution.437 forks/3392 watchers/Pushed 6 weeks ago
-
Code as Art, Art as Code. Processing and Ruby are meant for each other.44 forks/694 watchers/Pushed 7 weeks ago
-
cool.io is a high performance event library for Ruby built on top of libev16 forks/619 watchers/Pushed 7 weeks ago
-
Roo provides an interface to Open Office, Excel, and Google Spreadsheets.33 forks/232 watchers/Pushed 2 months ago
-
An evented http server built on top of eventmachine20 forks/89 watchers/Pushed 2 months ago
-
A Ruby-based parsing DSL based on parsing expression grammars.48 forks/440 watchers/Pushed 2 months ago
-
An XML/HTML parser for Objective-C, inspired by Hpricot.27 forks/244 watchers/Pushed 2 months ago
-
A tool to simplify working with remote branches19 forks/281 watchers/Pushed 2 months ago
-
A WYSIWYG JavaScript framework83 forks/639 watchers/Pushed 2 months ago
-
Write Cocoa applications in Javascript24 forks/292 watchers/Pushed 2 months ago
-
Makes http fun! Also, makes consuming restful web services dead easy.198 forks/1370 watchers/Pushed 3 months ago
-
Extensible Ruby wrapper for Atom and RSS parsers22 forks/110 watchers/Pushed 3 months ago
-
Glimmer is a JRuby DSL that enables easy and efficient authoring of user-interfaces using the robust platform-independent Eclipse SWT library. Glimmer comes with built-in data-binding support to greatly facilitate synchronizing UI with domain models.5 forks/36 watchers/Pushed 3 months ago
-
Scheme in as little Ruby and as much Scheme as possible. Supports macros, continuations, tail recursion and lazy evaluation.9 forks/216 watchers/Pushed 4 months ago
-
A Ruby module for accessing the ncurses library11 forks/30 watchers/Pushed 4 months ago
-
Sliding stats is Rack Middleware that presents a "sliding window" over a web apps last N requests (where N is a reasonably low value, as it's all kept in memory). This is currently a "work in progress" - don't deploy this anywhere without testing it first; It is likely to have nasty bugs.2 forks/42 watchers/Pushed 4 months ago
-
A port of the Processing visualization language to JavaScript.170 forks/1219 watchers/Pushed 4 months ago
-
A declarative sax parsing library backed by Nokogiri.34 forks/114 watchers/Pushed 4 months ago
-
XML to object mapping library67 forks/277 watchers/Pushed 4 months ago
-
System Information Gatherer And Reporter32 forks/77 watchers/Pushed 5 months ago
-
a unified interface to key/value stores43 forks/528 watchers/Pushed 5 months ago
-
Build and deploy tools for Cocoa apps using Sparkle for distributions and upgrades; it’s like Hoe but for Cocoa apps.31 forks/160 watchers/Pushed 5 months ago
-
Reia is a Ruby/Python-like language for BEAM, the Erlang VM23 forks/616 watchers/Pushed 6 months ago
-
Blame Stella for breaking your web applications.3 forks/51 watchers/Pushed 6 months ago
-
a modular Ruby webserver interface | personal fork | PLEASE BRANCH/SEND PULL REQUESTS/FILE BUGS AT rack/rack361 forks/471 watchers/Pushed 7 months ago
-
Lightweight SOAP library for Ruby4 forks/38 watchers/Pushed 7 months ago
-
Ruby 1.9 ported to run directly on top of Mac OS X core technologies. Trunk mirror. No longer active.23 forks/252 watchers/Pushed 11 months ago
-
markup as ruby - camping 2.0 edition (tentative)1 fork/5 watchers/Pushed 11 months ago
-
reloading rack development server / forking version of rackup23 forks/330 watchers/Pushed 12 months ago
-
A tiny javascript framework for mobile web apps.102 forks/430 watchers/Pushed 13 months ago
-
ActiveJS27 forks/217 watchers/Pushed 16 months ago
-
Realtime Rails27 forks/92 watchers/Pushed 17 months ago
-
OAuth implementation for Ruby. Note official maintained version is now at http://github.com/mojodna/oauth163 forks/262 watchers/Pushed 17 months ago
-
StrokeDB is an embeddable distributed document database written in Ruby7 forks/85 watchers/Pushed 18 months ago
-
CouchFoo provides an ActiveRecord API interface to CouchDB12 forks/234 watchers/Pushed 18 months ago
-
Erlang plugin for the XCode 3 IDE4 forks/33 watchers/Pushed 18 months ago
-
A RESTful CouchDB client based on Heroku's RestClient and Couch.js - you want the version at http://github.com/couchrest/couchrest178 forks/466 watchers/Pushed 19 months ago
-
Deprecated Extras for DataMapper (See ReadMe) including bridges to DataObjects::Migrations and Merb::DataMapper59 forks/163 watchers/Pushed 19 months ago
-
Johnson wraps JavaScript in a loving Ruby embrace.22 forks/479 watchers/Pushed 19 months ago
-
A port of Rack for the JavaScript JSGI web server interface4 forks/180 watchers/Pushed 21 months ago
-
James Conroy-Finn is the new maintainer. Please visit his repository ( http://github.com/jcf/git-tmbundle ) for the new official home of the git-TextMate bundle. Thank you!51 forks/348 watchers/Pushed 21 months ago
-
Automated Gem installation, activation, and much more!4 forks/11 watchers/Pushed 21 months ago
-
the 4k pocket full-of-gags web microframework18 forks/27 watchers/Pushed 22 months ago
-
Ruby replacement for bash+ssh52 forks/301 watchers/Pushed 2 years ago
-
Source code for the examples used in the Cappuccino Casts episodes2 forks/40 watchers/Pushed 2 years ago
-
BlackBox testing for Rack apps (and Rails)4 forks/20 watchers/Pushed 2 years ago
-
A proof-of-concept Ruby implementation on top of JavaScript and the Objective-J runtime1 fork/26 watchers/Pushed 2 years ago
-
All of the public Erlang/OTP source releases (since R6B-0 in 1999) in convenient git form4 forks/67 watchers/Pushed 2 years ago
-
Git clone of the Maruku, the Markdown interpreter2 forks/6 watchers/Pushed 2 years ago
-
A fork of Jan's CouchDBX - A Mac OS X wrapper for CouchDB - Experimenting with new features and UI.4 forks/69 watchers/Pushed 2 years ago
-
A coroutine implementation, based on ucontext, fibers when available, setjmp as a last resort.5 forks/46 watchers/Pushed 2 years ago
-
A library for assisting with making an OAuth provider9 forks/25 watchers/Pushed 2 years ago
-
A port of Ruby on Rails' ActiveResource to Objective-C (and specifically the iPhone)83 forks/619 watchers/Pushed 2 years ago
-
Simple framework for creating Twitter bots, inspired by Sinatra22 forks/172 watchers/Pushed 2 years ago
-
Branch/Fork of Stig Brautaset's Objective-C CouchDB library6 forks/37 watchers/Pushed 2 years ago
-
a microframework for running and monitoring scheduled workers20 watchers/Pushed 2 years ago
-
An easy to use, tiny, public domain, C wrapper library around Igor Pavlov's work that can be used to compress and extract lzma files.2 forks/12 watchers/Pushed 2 years ago
-
a starrater control for cappuccino (source for a tutorial)10 watchers/Pushed 2 years ago
-
Objective-C version of Apache Lucene. This is a fork from the http://etoileos.com project.3 forks/54 watchers/Pushed 2 years ago
-
the 4k pocket full-of-gags web microframework3 watchers/Pushed 3 years ago
-
A Property List Editor Application for the Cappuccino Web Framework5 forks/15 watchers/Pushed 3 years ago
-
A facade for most of the standard ruby classes that deal with I/O; Rio also provides an application level interface which allows many common I/O idioms to be expressed succinctly3 forks/14 watchers/Pushed 3 years ago
-
Testing for the Camping micro-web-framework4 watchers/Pushed 3 years ago
-
Sqlite gen_server port for Erlang. Creates, reads and writes to sqlite database.19 forks/39 watchers/Pushed 3 years ago
-
Ruby-NXT is a Ruby interface for controlling the Lego Mindstorms NXT robotics kit via Bluetooth. The library currently provides low-level access to the protocol as well as some preliminary high-level functionality.20 watchers/Pushed 3 years ago
-
Adding before/after-filters to Camping1 fork/5 watchers/Pushed 3 years ago
Updates
-
Medintux sur Mac - http://t.co/KzkaicXu
-
Le Magasin des Suicides : première bande annonce (film de Patrice Leconte) - http://t.co/ag5xUSOt
-
Lego Robotic Arm - http://t.co/lOKGtpcN
-
iPad Knaller Frauen - http://t.co/JdrX1My2
-
Buenos Aires - Inception Park on Vimeo - http://t.co/S4pvLD1i
-
Free Video: Getting Started with iOS 5 Automatic Reference Counting - http://t.co/Fv66hJYj
-
Interactions médicamenteuses : FreeDiams nouvelle bêta - http://t.co/kM1rGQ1C - http://t.co/k17Kvlj8
-
[Parodie] The Scratist - http://t.co/5VoeyxNo
-
Médicaments 2012 : compagnon du prescripteur - http://t.co/3We5BHcD
-
Vagrant ou les VM pour les nuls - http://t.co/aGo1waol
-
Shails (SH-MVC) now support GET and POST parameters https://t.co/KMELezl2
-
You want to create you website with shell script, try SH-MVC : https://t.co/KMELezl2
-
Rediscovering the RSync Algorithm « Incubaid Research - http://t.co/mPIHlO2r
-
The Hacker Shelf | Community-curated collection of free books for the intellectually curious. - http://t.co/WVgISEsy
-
Continuations in C++ with fork - http://t.co/gO2hFPDF
-
Kotlin Goes Open Source! | Project Kotlin - http://t.co/TZUf3Zd9
-
NSScreencast: Bite-sized Screencasts for iOS Development - http://t.co/sP4k5bu1
-
Beyond Java: Reading serial data - http://t.co/2jQRDHbs