The overall conference was very well organized, in a luxurious place and with all the things a speaker or an attendee can expect from a great conference. There were about 15-20 talks in two days, and I have to say that most of them were of a very high level. I particularly enjoyed the talks of Rick Blalock, about "Controlling memory leaks", Jacob Waller about "Webifying Titanium Development" and the "Titanium Studio Deep Dive" driven by Ingo Muschenetz.
Well, it is a bit unfair to list my favorite talks, because a lot of other talks were great and would deserve a distinction. I just regret not to have been able to watch Kevin's "Write Better JavaScript" talk, but there will hopefully be a video edit soon on Codestrong's website.
I won't say much more about the event itself, except that I am really really happy to have been part of it. You can feel that there's a strong and good community behind Titanium, not only Appcelerator, and I have met a lot of interesting people. That was for sure the right way to have a first contact with the community :-)
That was the topic of my conference, and it went really well. I had time enough in the plane to build a small demo application - the source code is available on GitHub - which shows how to use joli.js and a new library that I published during the conference, joli.api.js. joli.api.js allows to transparently synchronize a local database with REST-style web services, thus helping the developer to focus on the app features and not on the synchronization, which is a technical part of the application.
I like to underline it: I did not start to code the application before the plane took off. The demo address book was built in less than four hours (hey, I also add to develop the REST web service man, and symfony's sfDoctrineRestGeneratorPlugin was really helpful!). Someone fluent with Titanium can build value-added mobile applications in a few hour, while an Objective-C or Java developer would have required days.
Basically, joli.js is to Titanium what Doctrine is to Symfony: it is an Object Relational Mapper, a tool which binds "objects" called "records" to the lines in the database, and eases their manipulation. This is a very short explanation, the complete one is available in the slides:
(Some slides are messed up on Slideshare, so if you want to download the presentation, I have put a pdf version online). Sorry, no poneys inside!
Even if the trip was almost as short as a splash-and-dash, I found some time to visit some parts of San Francisco, walking (huh, hiking even!) the streets. That was really enjoying, impressive, large, intense, noisy sometimes, and contrasted! San Francisco seems to be a very nice place to live in, from the "beach in the city" at Fisherman's Wharf or at the Embarcadero, to the wonderful city views from Telegraph or Nob Hill. I have put some pictures of my trip, for the curious ones.
]]>La première édition du PHP Tour, le nouveau cycle de conférence de l’AFUP approche à grands pas.
Pour les deux du fond qui ne suivent pas, il s’agit d’un évènement similaire au désormais traditionnel Forum PHP, mais qui a la particularité de se dérouler en région et de changer chaque année de ville. Le PHP Tour ne se substitue pas au Forum PHP, qui lui se tiendra désormais à la fin du printemps et toujours à Paris.
Si vous comptez venir à cette première édition du PHP Tour à Lille et que vous voulez le faire savoir, n’hésitez pas à utiliser le code HTML suivant :
<a class="afup.org/pages/phptourlille2011/">
<img src="/img/spacer.gif">
Ce qui donne le résultat suivant :
]]>La suite de l'année s'annonce aussi bien remplie que son début - et tant mieux !
]]>In lots of projects, you must build rock-solid and performant web services bound to some of your models. sfDoctrineRestGeneratorPlugin is just aimed at building that type of webservice more easily, faster, and in a better way.
I particularly love two things about the plugin:
The plugin is used by one very large french company, and therefore has already been rather deeply tested in terms of performance and capabilities. Please ask for new features or help on how to use the plugin on Symfony's users mailing list. You can also send me a mail directly. Happy REST!
]]>I started with a freshly installed Ubuntu 9.10 Server, and directly added several packages:
# apt-get install apache2 php5 php5-cli php-apc php5-xdebug php5-memcache php5-mcrypt php5-imagick php5-gd php5-xsl subversion imagemagick unzip htop memcached
In order to check if the extensions have been well configured, type the command "php -m
" in the terminal, and they should display in the list.
Go to Oracle website, and download these two things:
Put both of these files in /tmp
. Then (yes, I know, it's the command horror show):
cd /tmp/
unzip oracle-instantclient-basic-10.2.0.4-1.i386.zip
mv instantclient_10_2 /opt/
unzip oracle-instantclient-devel-10.2.0.4-1.i386.zip
mv instantclient_10_2/sdk /opt/instantclient_10_2/
export ORACLE_HOME=/opt/instantclient_10_2/
ln -s /opt/instantclient_10_2/libclntsh.so.10.1 /opt/instantclient_10_2//libclntsh.so
ln -s /opt/instantclient_10_2/libocci.so.10.1 /opt/instantclient_10_2//libocci.so
ln -s /opt/instantclient_10_2/ /opt/instantclient_10_2/lib
The default PECL install does not work straight out of the box. You must download and build manually the packages:
pecl download pdo PDO_OCI OCI8
tar xzvf PDO-1.0.3.tgz
tar xzvf oci8-1.3.5.tgz
tar xzvf PDO_OCI-1.0.tgz
cd PDO-1.0.3
phpize
./configure
make
sudo make install
cd ../oci8-1.3.5
phpize
./configure --with-oci8=instantclient,/opt/instantclient_10_2/
make
sudo make install
cd ../PDO_OCI-1.0
cp /opt/instantclient_10_2/sdk/include/*.h .
phpize
./configure
make
sudo make install
At that point, the libraries have been built but are not used by PHP. In this extent, you must add it at the bottom of php.ini files, /etc/php5/cli/php.ini
and /etc/php5/apache2/php.ini
:
extension = pdo.so
extension = pdo_oci.so
extension = oci8.so
As a sidenote, if you want to install PDO_OCI or OCI8 on Mac OSX, you'll have to declare a DYLD_LIBRARY_PATH
shell variable, with the path to the Orale instant client install. Both OCI8 and PDO_OCI require extra configuration directives:
./configure --with-pdo-oci=instantclient,/path/to/instantclient,10.2.0.4
You should have been able to connect to a Oracle server and use it from within PHP. However I have a better advice: don't use Oracle. It has not been thought to work with PHP, nor has PHP been thought to work with it. Stick to a "classical" platform, or at least try more modern solutions. And that will be fine.
]]>