<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5874934</id><updated>2012-02-08T07:10:16.758+08:00</updated><category term='classification'/><category term='tags'/><category term='web'/><category term='facets'/><title type='text'>Gbelbe's geeky notepad</title><subtitle type='html'>Gaet's random stuff on technology, Linux, and other</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://gbelbe.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://gbelbe.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>gbelbe</name><uri>http://www.blogger.com/profile/00120311100562022215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://4.bp.blogspot.com/_3KuTtlAr5xA/SghnHfdw_1I/AAAAAAAAAME/oWAqoxV4TvM/S220/dsc_9865.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>20</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5874934.post-1439394164266375122</id><published>2012-02-07T07:09:00.002+08:00</published><updated>2012-02-07T07:22:38.489+08:00</updated><title type='text'>Quitter Flickr pour Picasa</title><content type='html'>Utilisateur ravi de flickr Pro depuis plusieurs années, je n'utilisait pas Picasa web à cause de sa limite de stockage de 1GO très vite atteinte. Depuis Google+, Picasa est maintenant illimité, au moins pour des photos de taille inférieure à 2000x2000.&lt;br /&gt;&lt;br /&gt;voici la méthode pour y arriver&lt;br /&gt;&lt;br /&gt;http://nrek.co/technology/how-to-abandon-flickr-for-picasa/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5874934-1439394164266375122?l=gbelbe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gbelbe.blogspot.com/feeds/1439394164266375122/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gbelbe.blogspot.com/2012/02/quitter-flickr-pour-picasa.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/1439394164266375122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/1439394164266375122'/><link rel='alternate' type='text/html' href='http://gbelbe.blogspot.com/2012/02/quitter-flickr-pour-picasa.html' title='Quitter Flickr pour Picasa'/><author><name>gbelbe</name><uri>http://www.blogger.com/profile/00120311100562022215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://4.bp.blogspot.com/_3KuTtlAr5xA/SghnHfdw_1I/AAAAAAAAAME/oWAqoxV4TvM/S220/dsc_9865.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874934.post-4507876078959462712</id><published>2011-01-10T22:17:00.022+08:00</published><updated>2011-01-12T19:20:04.569+08:00</updated><title type='text'>Coding with CodeIgniter</title><content type='html'>my app:   site.com/stas/index/controller&lt;br /&gt;&lt;br /&gt;1) Everything should be done inside the "Application" folder&lt;br /&gt;&lt;br /&gt;2) In the "Config" folder are all the files corresponding to setup, it's possible to add some with the same format.&lt;br /&gt;&lt;br /&gt;$config['tablo1']['sous-tablo1'] = "lambda"&lt;br /&gt;(the array should be "$config")&lt;br /&gt;&lt;br /&gt;=&gt; important: if you want some config files to be loaded directly in your app:&lt;br /&gt;&lt;br /&gt;in autoload.php file, locate the config part and specify which file should be loaded at application startup.&lt;br /&gt;(it's divided in core classes, helpers, l&lt;br /&gt;Only files needed often should be loaded here. Otherwise we can always specify it once we will need it with :&lt;br /&gt;&lt;br /&gt;$this-&gt;load-&gt;config('analytics');  (for example)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3) Routes&lt;br /&gt;inside the config folder: routes are settings for default URLs:&lt;br /&gt;for example, if we want the default homepage to display "analytics" controller (file analytics.php inside controllers folder)&lt;br /&gt;we modify the line :&lt;br /&gt;$route['default_controller'] = "welcome"; to "analytics". &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4) Controllers&lt;br /&gt; &lt;br /&gt;Each app needs at least a controller to work.&lt;br /&gt;  (Views are where templates are set, models are where business-database access    library can be written)&lt;br /&gt;&lt;br /&gt;A controller match the URL: filename and class should match.&lt;br /&gt;-&gt; the controller file is written in lowcase: analytics&lt;br /&gt;-&gt; the class inside the file has the same name with a Maj :  Analytics&lt;br /&gt;this class should extend the "Controller" class.&lt;br /&gt;&lt;br /&gt;Note: if the class has a constructor method (method with the same name as the class), it should always call the parent controller class. (parent::Controller(); )&lt;br /&gt;&lt;br /&gt;this class should implement the index function that will call display.&lt;br /&gt;&lt;br /&gt;URL matching:  url/class/function/parameter&lt;br /&gt;&lt;br /&gt;To print directly a result: inside the "index()" function, place an echo or a print.&lt;br /&gt;To redirect it to a view:  $this-&gt;load-&gt;view('name_of_the_view', $data_array);&lt;br /&gt;&lt;br /&gt;to transmit variables to the view, it should be set into an array:&lt;br /&gt;$data_array['color']="blue";&lt;br /&gt;$data_array['todo']=array('biloute','machin2','truc3');&lt;br /&gt;arrays and objects can also be transmitted...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;5) Views&lt;br /&gt; &lt;br /&gt;Views can take the name they want and can be organized into folders&lt;br /&gt;&lt;br /&gt;To use variables transmitted by the data array from the controller, place php short tags like &lt;?=$color?&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;6) working with DB&lt;br /&gt;&lt;br /&gt; - make sure database classe is loaded in the autoload settings or directly in the controller's constructor class.&lt;br /&gt; - make sure the database setting file is ok&lt;br /&gt;&lt;br /&gt;SELECT to select a table (this will put all the table in an array&lt;br /&gt;data_array['requete'] = $this-&gt;db-&gt;get('table');  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;with where: &lt;br /&gt;$this-&gt;db-&gt;where('field-to-query', 'where-variable')&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;INSERT&lt;br /&gt;$this-&gt;db-&gt;insert('comments', $_POST);&lt;br /&gt;&lt;br /&gt;to display result in the view file: foreach($requete-&gt;result() as $row)&lt;br /&gt;to count number of results: $requete-&gt;num_rows();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;7) working with URL&lt;br /&gt;&lt;br /&gt;check that the url helper is loaded either in the autoload file (settings) or in the controller's constructor $this-&gt;load-&gt;helper('url');&lt;br /&gt;&lt;br /&gt;Display part of the URL&lt;br /&gt;   $this-&gt;uri-&gt;segment-&gt;3;  get the thrid segment of the uri (variable)&lt;br /&gt;&lt;br /&gt;Create a link&lt;br /&gt;   inside the view file, we can use a anchor function to create a link. &lt;br /&gt;anchor('analytics/report', 'link name')&lt;br /&gt;this link will link to the function "report" in the controller analytics.&lt;br /&gt;&lt;br /&gt;Redirect&lt;br /&gt;   redirect('controller_name/controller_function')&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;8) working with forms&lt;br /&gt;&lt;br /&gt;check that the form helper is loaded&lt;br /&gt;&lt;br /&gt;inside the View file, we can use functions to generate forms tags:&lt;br /&gt;form_open('analytics/destination')&lt;br /&gt;form_hidden('name', $this-&gt;uri-&gt;segment('3'))&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;9) Models&lt;br /&gt;&lt;br /&gt;Models are PHP classes that are designed to work with information in your database.&lt;br /&gt;&lt;br /&gt;structure of a model class:&lt;br /&gt;&lt;br /&gt;class Model_name extends Model {&lt;br /&gt;&lt;br /&gt;    function Model_name()&lt;br /&gt;    {&lt;br /&gt;        parent::Model();&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Models can then be used in any controller, but should be loaded in the controller's constructor first.&lt;br /&gt;$this-&gt;load-&gt;model('indicators_model');&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;10) Adding your own Library&lt;br /&gt;&lt;br /&gt;To add your own library, we can place library classes inside Application/libary&lt;br /&gt;Library file name should start with an uppercase, and the class name should be the same as the file name.&lt;br /&gt;&lt;br /&gt;Important: if you want to use any data from a config file or any other file,&lt;br /&gt;rather than using  "$this-&gt;", you should access it with &lt;br /&gt;    &lt;br /&gt;    $CI =&amp; get_instance();   &lt;br /&gt;    $variable = $CI-&gt;config-&gt;item('item-in-my-config-file');&lt;br /&gt; &lt;br /&gt;(note it should be inside the constructor or any other method)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;11) Unit Tests&lt;br /&gt;&lt;br /&gt;check that the unit_test library is loaded in the constructor class&lt;br /&gt;$this-&gt;load-&gt;library('unit_test');&lt;br /&gt;then do the tests as follows:&lt;br /&gt;echo $this-&gt;unit-&gt;run($data, 'is_array', 'est-ce un tablo');&lt;br /&gt;&lt;br /&gt;Library used to enable TDD : Toast (see http://jensroland.com/projects/test/toast/)&lt;br /&gt;&lt;br /&gt;test files should be added into /application/controller/test directory&lt;br /&gt;&lt;br /&gt;To run all the tests in a test class, simply point your browser to the class name:&lt;br /&gt;    http://www.example.com/test/my_test_class &lt;br /&gt;&lt;br /&gt;To run an individual test, point your browser to the test function, WITHOUT the 'test_' prefix:&lt;br /&gt;    http://www.example.com/test/my_test_class/some_action  &lt;br /&gt;&lt;br /&gt;to run all the tests classes in the /test/ folder at once, point your browser to the Toast_all controller:&lt;br /&gt;    http://www.example.com/test/Toast_all &lt;br /&gt;&lt;br /&gt;Attetion: check that Toast_all is in upper case&lt;br /&gt;&lt;br /&gt;Note: toast can be used with libraries and models&lt;br /&gt;and they should be loaded first in the test's controller constructor&lt;br /&gt;for ex: $this-&gt;load-&gt;model('indicators_model');&lt;br /&gt;&lt;br /&gt;then properties or methods of the model class can be used inside tests:&lt;br /&gt;$this-&gt;indicators_model-&gt;get_last_ten_entries();&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5874934-4507876078959462712?l=gbelbe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gbelbe.blogspot.com/feeds/4507876078959462712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gbelbe.blogspot.com/2011/01/coding-with-codeigniter.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/4507876078959462712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/4507876078959462712'/><link rel='alternate' type='text/html' href='http://gbelbe.blogspot.com/2011/01/coding-with-codeigniter.html' title='Coding with CodeIgniter'/><author><name>gbelbe</name><uri>http://www.blogger.com/profile/00120311100562022215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://4.bp.blogspot.com/_3KuTtlAr5xA/SghnHfdw_1I/AAAAAAAAAME/oWAqoxV4TvM/S220/dsc_9865.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874934.post-7101929916481457760</id><published>2010-06-16T00:53:00.003+08:00</published><updated>2010-06-16T01:07:12.150+08:00</updated><title type='text'>Tomcat - What it is and how to install it on Linux</title><content type='html'>&lt;span style="font-weight:bold;"&gt;1) What is tomcat? What is its link with Apache webserver?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Apache is a webserver : it is used to serve static files (html for ex) to internet client.&lt;br /&gt;&lt;br /&gt;If we want to develop a dynamic website we need to install a software that can interpret a dynamic (server side) language.&lt;br /&gt;&lt;br /&gt;Here is the role of Tomcat, for Java. (similarly, we would need to install a PHP module into Apache so that the server could be able to understand php files)&lt;br /&gt;&lt;br /&gt;http://www.coderanch.com/t/85639/Tomcat/Difference-between-Tomcat-Apache-Web&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2) Installing tomcat on linux:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;http://www.howtogeek.com/howto/linux/installing-tomcat-6-on-ubuntu/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5874934-7101929916481457760?l=gbelbe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gbelbe.blogspot.com/feeds/7101929916481457760/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gbelbe.blogspot.com/2010/06/installation-de-tomcat-sur-linux.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/7101929916481457760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/7101929916481457760'/><link rel='alternate' type='text/html' href='http://gbelbe.blogspot.com/2010/06/installation-de-tomcat-sur-linux.html' title='Tomcat - What it is and how to install it on Linux'/><author><name>gbelbe</name><uri>http://www.blogger.com/profile/00120311100562022215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://4.bp.blogspot.com/_3KuTtlAr5xA/SghnHfdw_1I/AAAAAAAAAME/oWAqoxV4TvM/S220/dsc_9865.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874934.post-1226717553474561883</id><published>2010-01-25T01:46:00.003+08:00</published><updated>2010-01-25T01:52:26.449+08:00</updated><title type='text'>Installer et parametrer SVN pour developper une appli Web</title><content type='html'>&lt;p&gt;Voici mes anciennes notes sur l'installation et config de SVN pour le web. L'idee est de creer un repository qui actualise a chaque modification un serveur web, et permet ainsi d'avoir les avantages de SVN sans avoir a faire de "commit" a chaque petite modification.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; 1)-------&lt;span class="il"&gt;SVN&lt;/span&gt; Install:&lt;br /&gt;==============================&lt;wbr&gt;==========================&lt;br /&gt;(apache2 and mod_dav needs to be already installed) &lt;/p&gt; &lt;p&gt;--&gt; First need to install &lt;span class="il"&gt;SVN&lt;/span&gt; &lt;/p&gt; &lt;p&gt;# yum install &lt;span class="il"&gt;svn&lt;/span&gt; ( or check on the web for how to get subversion)&lt;/p&gt; &lt;p&gt;# yum install mod_dav_svn ( and mod_dav if mod_dav not yet installed)&lt;/p&gt; &lt;p&gt;--&gt; configure mod_dav to interact with &lt;span class="il"&gt;svn&lt;/span&gt;&lt;/p&gt; &lt;p&gt;open subversion.conf (in Fedora, it is located at /etc/httpd/conf.d/subversion.&lt;wbr&gt;conf )&lt;br /&gt;Add the following :&lt;/p&gt; &lt;p&gt; &lt;location class="il"&gt;svn&lt;/span&gt;/repos&gt;&lt;/p&gt; &lt;p&gt;  AuthType Basic&lt;br /&gt;  AuthName "Subversion Repository"&lt;br /&gt;  AuthUserFile /var/www/&lt;span class="il"&gt;svn&lt;/span&gt;/users/passwords&lt;br /&gt;  Require valid-user&lt;/p&gt; &lt;p&gt;  DAV &lt;span class="il"&gt;svn&lt;/span&gt;&lt;br /&gt;  SVNParentPath /usr/local/&lt;span class="il"&gt;svn&lt;/span&gt;&lt;/p&gt; &lt;p&gt; &lt;/location&gt;&lt;/p&gt; &lt;p&gt;This will link the web directory /&lt;span class="il"&gt;svn&lt;/span&gt;/repos ( &lt;a href="http://host_address/svn/repos" target="_blank"&gt;http://host_address/&lt;span class="il"&gt;svn&lt;/span&gt;/repos&lt;/a&gt;) to the&lt;br /&gt;&lt;span class="il"&gt;SVN&lt;/span&gt; directory located at the following path: /var/www/&lt;span class="il"&gt;svn&lt;/span&gt;/repos&lt;/p&gt; &lt;p&gt;The AUTH lines, tells apache to launch an authenticate box to prevent anybody from&lt;br /&gt;accessing &lt;a href="http://host_address/svn/repos" target="_blank"&gt;http://host_address/&lt;span class="il"&gt;svn&lt;/span&gt;/repos&lt;/a&gt;&lt;/p&gt; &lt;p&gt;it will look for the users and passwords in the file "passwords"&lt;/p&gt; &lt;p&gt;To prepare this file, CD to /var/www/&lt;span class="il"&gt;svn&lt;/span&gt;/users/&lt;br /&gt;# htpasswd -cm passwords gbelbe (htpassword file_name user_name)&lt;/p&gt; &lt;p&gt;(then to add new accounts don't forget to do htpasswd -m and not -cm)&lt;/p&gt; &lt;p&gt;&lt;br /&gt;==============================&lt;wbr&gt;==============================&lt;wbr&gt;=======================&lt;br /&gt;Subversion software should be installed and working&lt;br /&gt;==============================&lt;wbr&gt;==============================&lt;wbr&gt;=======================&lt;/p&gt;  &lt;p&gt; 2)----&lt;span class="il"&gt;SVN&lt;/span&gt; Setup&lt;/p&gt; &lt;p&gt;==============================&lt;wbr&gt;==============================&lt;wbr&gt;========================&lt;/p&gt; &lt;p&gt;Note on repositories organization:&lt;br /&gt;------------------------------&lt;wbr&gt;-----&lt;/p&gt; &lt;p&gt;We need to create 3 distinct &lt;span class="il"&gt;SVN&lt;/span&gt; Repos to make it easier to&lt;br /&gt;upgrade from Dev server to test server and production server.&lt;/p&gt; &lt;p&gt; 1 for Development[gdm], 1 for Documentation[gdm_doc], 1 for test[gdm_test] &lt;/p&gt; &lt;p&gt;When we want to upgrade our test or production server, we will only&lt;br /&gt;update the application data (gdm repository) to the web serverm, &lt;/p&gt; &lt;p&gt;We don't need to update test and doc repository (and shouldn't for security purposes)&lt;br /&gt;so it's better practice to keep them in distinct repositories.&lt;/p&gt; &lt;p&gt;Note: as for the SQL data, it's better to keep it included into the dev repository,&lt;br /&gt;as we need to record all change in db structure with DDL scripts at the same "time"&lt;br /&gt;(the same revision nr or version) as we make modification on the system, it will help&lt;br /&gt;to keep track of the database modifications at each step of the software version.&lt;/p&gt; &lt;p&gt;&lt;span class="il"&gt;SVN&lt;/span&gt; Repositories placed at /var/www/&lt;span class="il"&gt;svn&lt;/span&gt;/repos&lt;/p&gt; &lt;p&gt;=================&lt;/p&gt; &lt;p&gt;1) first repos for system development: gdm&lt;/p&gt; &lt;p&gt;&lt;br /&gt;we change working directory to /var/www/&lt;span class="il"&gt;svn&lt;/span&gt;/repos&lt;br /&gt; # cd /var/www/&lt;span class="il"&gt;svn&lt;/span&gt;/repos&lt;/p&gt; &lt;p&gt;we create a &lt;span class="il"&gt;svn&lt;/span&gt; repository&lt;br /&gt; # svnadmin create gdm&lt;br /&gt;(to remove a repository, only delete it) # rm -Rf gdm&lt;/p&gt; &lt;p&gt;we ensure that the owner and group of this repository is apache:&lt;br /&gt; ls -la&lt;br /&gt; chown -Rf apache.apache gdm&lt;/p&gt; &lt;p&gt;we create a repository structure:&lt;br /&gt; # mkdir /tmp/gdm&lt;br /&gt; # mkdir /tmp/gdm/trunk&lt;br /&gt; # mkdir /tmp/gdm/branches&lt;br /&gt; # mkdir /tmp/gdm/tags&lt;/p&gt; &lt;p&gt;we import this structure:&lt;br /&gt; # &lt;span class="il"&gt;svn&lt;/span&gt; import /tmp/gdm &lt;a href="http://localhost/svn/repos/gdm" target="_blank"&gt;http://localhost/&lt;span class="il"&gt;svn&lt;/span&gt;/repos/gdm&lt;/a&gt;&lt;/p&gt; &lt;p&gt;===================&lt;br /&gt;The &lt;span class="il"&gt;SVN&lt;/span&gt; Directory is ready to use, we need to prepare working copies&lt;/p&gt; &lt;p&gt;&lt;br /&gt;===================&lt;/p&gt; &lt;p&gt;&lt;br /&gt;then create a working directory inside the webserver served directory&lt;br /&gt;in our setup, apache is configured to serve files under /var/www/html&lt;/p&gt; &lt;p&gt;on se positionne ds le rep html #&lt;br /&gt; # cd /var/www/html  &lt;/p&gt; &lt;p&gt;on checkout le repository gdm&lt;br /&gt; # &lt;span class="il"&gt;svn&lt;/span&gt; checkout &lt;a&gt;file:///var/www/&lt;span class="il"&gt;svn&lt;/span&gt;/repos/gdm/&lt;wbr&gt;trunk&lt;/a&gt; gdm&lt;/p&gt; &lt;p&gt;(this will checkout only the trunk to a new folder named "gdm")&lt;/p&gt; &lt;p&gt;be sure to change the ownership rights to apache user and group&lt;/p&gt; &lt;p&gt;chown -Rf apache.apache gdm&lt;/p&gt; &lt;p&gt;=====================&lt;/p&gt; &lt;p&gt;1) automatic update of website checkout&lt;/p&gt; &lt;p&gt;Note : only needs to be done if the repository is a development server.&lt;/p&gt; &lt;p&gt;If the &lt;span class="il"&gt;svn&lt;/span&gt; repository is for a Development website,&lt;br /&gt;we can automatically update the website Checkout each time&lt;br /&gt;anyone commit a file. (that way the developpers can view the result&lt;br /&gt;of their work on the local website)&lt;/p&gt;  &lt;p&gt;this is done through a post-commit script:&lt;/p&gt; &lt;p&gt;cd to the &lt;span class="il"&gt;svn&lt;/span&gt; repository:&lt;br /&gt;cd /var/www/&lt;span class="il"&gt;svn&lt;/span&gt;/repos/&lt;br /&gt;cd hooks&lt;br /&gt;copy the file post-commit.tpl to post-commit&lt;/p&gt; &lt;p&gt;edit the file post-commit with vi:&lt;/p&gt; &lt;p&gt;add the following lines after the line #!/bin/sh&lt;br /&gt;(note: /var/www/html/gdm is the dir where gdm repository will be served by apache)&lt;/p&gt; &lt;p&gt;cd /var/www/html/gdm&lt;br /&gt;/usr/bin/&lt;span class="il"&gt;svn&lt;/span&gt; up --username apache --password apache&lt;/p&gt; &lt;p&gt;* make sure the post-commit file is owned by apache,&lt;br /&gt;* give the file execution rights&lt;br /&gt;* make sure the directory in the web server is created /var/www/html/gdm&lt;/p&gt; &lt;p&gt;chmod 0777 post-commit&lt;br /&gt;chown apache.apache post-commit&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;Test: try to modify a file in this repository from your computer and commit,&lt;br /&gt; check if the file is updated on the webserver.&lt;/p&gt; ==&gt; if any problem, check that SELINUX is disabled&lt;br /&gt;==&gt; check the ownership of the files (it should be apache.apache)&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5874934-1226717553474561883?l=gbelbe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gbelbe.blogspot.com/feeds/1226717553474561883/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gbelbe.blogspot.com/2010/01/installer-et-parametrer-svn-pour.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/1226717553474561883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/1226717553474561883'/><link rel='alternate' type='text/html' href='http://gbelbe.blogspot.com/2010/01/installer-et-parametrer-svn-pour.html' title='Installer et parametrer SVN pour developper une appli Web'/><author><name>gbelbe</name><uri>http://www.blogger.com/profile/00120311100562022215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://4.bp.blogspot.com/_3KuTtlAr5xA/SghnHfdw_1I/AAAAAAAAAME/oWAqoxV4TvM/S220/dsc_9865.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874934.post-6469144636198542103</id><published>2009-05-15T11:14:00.008+08:00</published><updated>2009-05-15T11:54:01.437+08:00</updated><title type='text'>Programmer un microcontrolleur avec linux (premiere etape, branchements)</title><content type='html'>Voici le premier article d'une serie sur un trip bizarre, la programmation d'un microcontrolleur a partir de linux.&lt;br /&gt;La semaine derniere je suis tombe sur des blogs decrivant l'interet des microcontrolleurs:&lt;br /&gt;&lt;br /&gt;Les microcontrolleurs sont la base de l'electronique embarquee, et sont present partout (televiseur, voiture, appareils photo numeriques, certains telephones portables). Il s'agit simplement d'un ordinateur miniaturise comportant tous les elements principaux sur un seul circuit imprime: processeur, ROM, Memoire flash, et ports IO. Le tout a un prix et une consommation electrique tres faible.&lt;br /&gt;Leur puissance n'est pas encore tres elevee mais suffisante pour faire tourner un programme unique.&lt;br /&gt;&lt;br /&gt;&gt;&gt; &lt;a href="http://encyclopedia2.thefreedictionary.com/Microcontroller+Unit"&gt;Une explication interressante&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Depuis 2-3 ans, les microcontrolleurs ont bien evolues, et les logiciels pour les programmer aussi. La gamme des AVR, est open-source et permet a tout le monde de les programmer. De nombreux projets a la frontiere entre l'electonique et l'informatique ont ete devleloppes par des amateurs, realisation de robots, lecteurs mp3...&lt;br /&gt;&lt;br /&gt;La serie AVR de la marque ATMEL sont programmables en open-source. Apres avoir trouve une test-board sur taobao.com, j'ai donc commence a m'interresse au sujet.&lt;br /&gt;&lt;br /&gt;Mes interets personels sont les suivants:&lt;br /&gt;--&gt; Permet de s'"amuser" un peu en assembleur&lt;br /&gt;--&gt; Permet mieux comprendre le fonctionnement bas niveau des ordinateurs (un microcontrolleur c'est un mini pc integre dans une puce minuscule). Vue la faible puissance des composants, la programmation se fait au niveau le plus bas.&lt;br /&gt;--&gt; Tester les potentialites du bidule. Ca ne coute rien, et ca a l'air plutot puissant, il y a surement quelque chose a faire avec??&lt;br /&gt;&lt;br /&gt;La plaque de developpement que j'ai recupere sur le net s'appelle AVR Butterfly:&lt;br /&gt;La premiere etape a ete de reperer le port Serie et de monter les branchements avec un cable serie (style cable imprimante).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3KuTtlAr5xA/Sgzij9CK8ZI/AAAAAAAAAMs/GwDOb586Qy8/s1600-h/butterfly.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_3KuTtlAr5xA/Sgzij9CK8ZI/AAAAAAAAAMs/GwDOb586Qy8/s400/butterfly.jpg" alt="" id="BLOGGER_PHOTO_ID_5335888765834162578" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5874934-6469144636198542103?l=gbelbe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gbelbe.blogspot.com/feeds/6469144636198542103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gbelbe.blogspot.com/2009/05/programmer-un-microcontrolleur-avec.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/6469144636198542103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/6469144636198542103'/><link rel='alternate' type='text/html' href='http://gbelbe.blogspot.com/2009/05/programmer-un-microcontrolleur-avec.html' title='Programmer un microcontrolleur avec linux (premiere etape, branchements)'/><author><name>gbelbe</name><uri>http://www.blogger.com/profile/00120311100562022215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://4.bp.blogspot.com/_3KuTtlAr5xA/SghnHfdw_1I/AAAAAAAAAME/oWAqoxV4TvM/S220/dsc_9865.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_3KuTtlAr5xA/Sgzij9CK8ZI/AAAAAAAAAMs/GwDOb586Qy8/s72-c/butterfly.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874934.post-4685351769390044817</id><published>2009-05-09T19:48:00.003+08:00</published><updated>2009-05-09T19:48:49.318+08:00</updated><title type='text'>Kannel setting up a SMSC for sending / receiving SMSs from an application</title><content type='html'>&lt;p&gt;Most of the informations that helped me came from the following websites:&lt;br /&gt;&lt;a href="http://swik.net/User:marc/Chipmunk+Ninja+Technical+Articles/Setting+up%2C+Configuring%2C+and+Using+Kannel+to+send%2Freceive+SMS+messages/3e0s" title="http://swik.net/User:marc/Chipmunk+Ninja+Technical+Articles/Setting+up%2C+Configuring%2C+and+Using+Kannel+to+send%2Freceive+SMS+messages/3e0s"&gt;http://swik.net/User:marc/Chipmunk+Ninja+Technical+Articles/Setting+up%2...&lt;/a&gt;&lt;br /&gt;and, a very good explanation about how all the SMS and mobile stuff is working:&lt;br /&gt;&lt;a href="http://www.developershome.com/" title="http://www.developershome.com/"&gt;http://www.developershome.com/&lt;/a&gt;&lt;/p&gt; For the gprs modem configuration file using my nokia 3110c phone, I found this page:&lt;br /&gt;&lt;a href="http://www.linuxquestions.org/questions/linux-networking-3/kannel-incoming-sms-is-not-detected-but-outbound-works-706744/" title="http://www.linuxquestions.org/questions/linux-networking-3/kannel-incoming-sms-is-not-detected-but-outbound-works-706744/"&gt;http://www.linuxquestions.org/questions/linux-networking-3/kannel-incomi...&lt;/a&gt;&lt;br /&gt;&gt;&gt; notes:&lt;br /&gt;Start the bearerbox and smsbox with verbose :&lt;br /&gt;then go to the following url to send sms:&lt;br /&gt;&lt;a href="http://127.0.0.1:14013/cgi-bin/sendsms?username=My_User&amp;amp;password=My_Password&amp;amp;to=Target_Phone_Number&amp;amp;text=%E4%BD%A0%E5%A5%BD%0A" title="http://127.0.0.1:14013/cgi-bin/sendsms?username=My_User&amp;amp;password=My_Password&amp;amp;to=Target_Phone_Number&amp;amp;text=%E4%BD%A0%E5%A5%BD%0A"&gt;http://127.0.0.1:14013/cgi-bin/sendsms?username=My_User&amp;amp;password=My_Pass...&lt;/a&gt;&lt;br /&gt;Check the resulting page for success and look at the bearerbox and smsbox verbose message while sending.&lt;br /&gt;To get the status of the bearerbox:&lt;br /&gt;&lt;a href="http://localhost:14000/" title="http://localhost:14000/"&gt;http://localhost:14000/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5874934-4685351769390044817?l=gbelbe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gbelbe.blogspot.com/feeds/4685351769390044817/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gbelbe.blogspot.com/2009/05/kannel-setting-up-smsc-for-sending.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/4685351769390044817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/4685351769390044817'/><link rel='alternate' type='text/html' href='http://gbelbe.blogspot.com/2009/05/kannel-setting-up-smsc-for-sending.html' title='Kannel setting up a SMSC for sending / receiving SMSs from an application'/><author><name>gbelbe</name><uri>http://www.blogger.com/profile/00120311100562022215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://4.bp.blogspot.com/_3KuTtlAr5xA/SghnHfdw_1I/AAAAAAAAAME/oWAqoxV4TvM/S220/dsc_9865.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874934.post-2119320514741777628</id><published>2009-05-09T19:48:00.001+08:00</published><updated>2009-05-09T19:48:20.022+08:00</updated><title type='text'>Huawei eg162 in ubuntu, and AT commands</title><content type='html'>&lt;p&gt;On the last post, I have been able to connect linux with the Chinese HuaWei eg162 gprs modem, but i still had the following problems:&lt;br /&gt;The modem only worked when I booted the computer while it was plugged in.&lt;br /&gt;Impossible to make it work while hotplugged.&lt;br /&gt;I couldn't connect directly send AT commands through it.&lt;br /&gt;&gt; after spending some time on the web and trying some drivers from vodafone&lt;br /&gt;&lt;a href="https://forge.betavine.net/frs/?group_id=12&amp;amp;release_id=243" title="https://forge.betavine.net/frs/?group_id=12&amp;amp;release_id=243"&gt;https://forge.betavine.net/frs/?group_id=12&amp;amp;release_id=243&lt;/a&gt; (should be working for e220 and others, but no success for me).&lt;br /&gt;I came across to this blog post, which was the solution:&lt;br /&gt;&lt;a href="http://www.mohdshakir.net/scripts/bash/huawei-e220-dialer" title="http://www.mohdshakir.net/scripts/bash/huawei-e220-dialer"&gt;http://www.mohdshakir.net/scripts/bash/huawei-e220-dialer&lt;/a&gt;&lt;br /&gt;Basically, it states that the problems comes from the uhci module (universal host controller interface) which is in charge of recognizing USB devices.&lt;br /&gt;just type these two lines, to reload the uhci module and start it over again&lt;/p&gt; &lt;p&gt;sudo modprobe -r uhci_hcd&lt;br /&gt;sudo modprobe uhci_hcd&lt;/p&gt; then wait for a few seconds and try again, your modem should be recognized again.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5874934-2119320514741777628?l=gbelbe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gbelbe.blogspot.com/feeds/2119320514741777628/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gbelbe.blogspot.com/2009/05/huawei-eg162-in-ubuntu-and-at-commands.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/2119320514741777628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/2119320514741777628'/><link rel='alternate' type='text/html' href='http://gbelbe.blogspot.com/2009/05/huawei-eg162-in-ubuntu-and-at-commands.html' title='Huawei eg162 in ubuntu, and AT commands'/><author><name>gbelbe</name><uri>http://www.blogger.com/profile/00120311100562022215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://4.bp.blogspot.com/_3KuTtlAr5xA/SghnHfdw_1I/AAAAAAAAAME/oWAqoxV4TvM/S220/dsc_9865.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874934.post-376934727434968070</id><published>2009-05-09T19:47:00.001+08:00</published><updated>2009-05-09T19:47:45.228+08:00</updated><title type='text'>Connecting to the web through a GPRS modem in linux</title><content type='html'>This is an article to remind me of the process for connecting to the internet with a GPRS modem. I had to configure it to test sending / receiving MMS-sms to my site.&lt;br /&gt;The modem I tested is a HuaWei, eg169g, sold in China as a 2.5g modem. The method should work with other models of the same brand.&lt;br /&gt;1) right after plugin the modem, check that it is well recognized by linux,&lt;br /&gt;dmesg | tail  should give you the proper port and success/failure message telling you that a modem has been added.&lt;br /&gt;(it should be something like : /dev/ttyUSB0  or /dev/ttyACM0&lt;br /&gt;Note that with some older kernels (for ex. CentOS 5.2 is still 2.6.18) it can be recognized as a CDrom or a memory stick/&lt;br /&gt;If so, then you have to look on the web to install a program called usb-modeswitch, that will enable to recognize your modem as a modem.&lt;br /&gt;2) install wvdial, the ppp tool for wireless modems.&lt;br /&gt;to configure the modem, type&lt;br /&gt;# wvdialconf /etc/wvdial.conf&lt;br /&gt;if it doesn't work, saying that your modem was not recognized, you can try again after rebooting your PC without unplugging the modem.&lt;br /&gt;3) if this step was ok, edit the wvdial.conf file and modify username and password value. (in China, you can add whatever value ) it shouldn't be necessary to modify any other value.&lt;br /&gt;the value after "Phone" is something like *99***1# , depending of your mobile operator. (this if for china mobile). It shouldn't be necessary to modify it.&lt;br /&gt;4) try it:&lt;br /&gt;$ wvdial             this command launch the modem, which should be printing your IP address and the ones of your DNS servers.&lt;br /&gt;if it doesn't show any errors but looks like the script is hanging, it shows that it's workign.&lt;br /&gt;you can check it by looking if a new ppp port is open with the following command:&lt;br /&gt;ifconfig&lt;br /&gt;5) if ifconfig is showing an open and workgin ppp port, but you still cannot connect with it, it may come from a bad routing table or DNS records.&lt;br /&gt;you can edit your default dns with this file :  /etc/resolv.conf&lt;br /&gt;and check your computer's route with the route command&lt;br /&gt;route -n&lt;br /&gt;if you see some default routes for another port than ppp, or wrong route for ppp port (for ex eth0) you can delete them with the following command.&lt;br /&gt;route del  (see the man for more details on this command).&lt;br /&gt;After deleting the rules, retry wvdial, and it should work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5874934-376934727434968070?l=gbelbe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gbelbe.blogspot.com/feeds/376934727434968070/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gbelbe.blogspot.com/2009/05/connecting-to-web-through-gprs-modem-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/376934727434968070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/376934727434968070'/><link rel='alternate' type='text/html' href='http://gbelbe.blogspot.com/2009/05/connecting-to-web-through-gprs-modem-in.html' title='Connecting to the web through a GPRS modem in linux'/><author><name>gbelbe</name><uri>http://www.blogger.com/profile/00120311100562022215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://4.bp.blogspot.com/_3KuTtlAr5xA/SghnHfdw_1I/AAAAAAAAAME/oWAqoxV4TvM/S220/dsc_9865.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874934.post-6852870274098967114</id><published>2009-05-09T19:46:00.002+08:00</published><updated>2009-05-09T19:47:12.927+08:00</updated><title type='text'>Modifying the locale environment in your computer</title><content type='html'>Last week I had to do some debugging to do to work with an SMS application with Chinese characters, so I had to modify a lot the locale settings.&lt;br /&gt;Here are the commands you should use to modify your environment for a default language settings.&lt;br /&gt;the command : $ locale&lt;br /&gt;lists your current language environment.&lt;br /&gt;LANG=en_US.UTF-8&lt;br /&gt;LC_CTYPE="en_US.UTF-8"&lt;br /&gt;LC_NUMERIC="en_US.UTF-8"&lt;br /&gt;LC_TIME="en_US.UTF-8"&lt;br /&gt;LC_COLLATE="en_US.UTF-8"&lt;br /&gt;LC_MONETARY="en_US.UTF-8"&lt;br /&gt;LC_MESSAGES="en_US.UTF-8"&lt;br /&gt;LC_PAPER="en_US.UTF-8"&lt;br /&gt;LC_NAME="en_US.UTF-8"&lt;br /&gt;LC_ADDRESS="en_US.UTF-8"&lt;br /&gt;LC_TELEPHONE="en_US.UTF-8"&lt;br /&gt;LC_MEASUREMENT="en_US.UTF-8"&lt;br /&gt;LC_IDENTIFICATION="en_US.UTF-8"&lt;br /&gt;LC_ALL=&lt;br /&gt;&lt;br /&gt;These are all environment variables defined when your computer starts. You can modify them temporarily (until the next reboot) with the export command.&lt;br /&gt;Instead of having to export all of them, you can just use the command&lt;br /&gt;export LC_ALL="zh_CN.utf8" for ex. , that will modify all of them at once&lt;br /&gt;(check it by typing locale, and by using a command such as "man", it should display the prompt in the new language.)&lt;br /&gt;If you want to conserve this locale the next time you reboot, you also have to edit a configuration file in /etc. It should be either /etc/default/locale  or /etc/environment depending on your system&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5874934-6852870274098967114?l=gbelbe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gbelbe.blogspot.com/feeds/6852870274098967114/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gbelbe.blogspot.com/2009/05/modifying-locale-environment-in-your.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/6852870274098967114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/6852870274098967114'/><link rel='alternate' type='text/html' href='http://gbelbe.blogspot.com/2009/05/modifying-locale-environment-in-your.html' title='Modifying the locale environment in your computer'/><author><name>gbelbe</name><uri>http://www.blogger.com/profile/00120311100562022215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://4.bp.blogspot.com/_3KuTtlAr5xA/SghnHfdw_1I/AAAAAAAAAME/oWAqoxV4TvM/S220/dsc_9865.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874934.post-2924472632581785457</id><published>2009-05-09T19:46:00.001+08:00</published><updated>2009-05-09T19:46:39.326+08:00</updated><title type='text'>Upload pictures to Flickr from command line</title><content type='html'>Here is a nice and easy script to upload your pictures from your computer to your flickr account:&lt;br /&gt;download flickr_upload  from here:&lt;br /&gt;&lt;a href="http://linux.softpedia.com/get/Programming/Libraries/Flickr-Upload-21349.shtml"&gt;http://linux.softpedia.com/get/Programming/Libraries/Flickr-Upload-21349.shtml&lt;/a&gt;&lt;br /&gt;then wget, untar it and follow the README instructions. You may have to install one or two dependancies.&lt;br /&gt;Then that's pretty easy to use, read the man first (man flickr_upload) then you can easily upload a directory with the following command:&lt;br /&gt;flickr_upload  --tag='"HuiHangGuDao" "Route du the Anhui HangZhou"'  --friend 1 *&lt;br /&gt;&lt;br /&gt;[upload all pictures inside this directory, and set 2 tags + only enable friends to view pics]&lt;br /&gt;others options are also available from the man.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5874934-2924472632581785457?l=gbelbe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gbelbe.blogspot.com/feeds/2924472632581785457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gbelbe.blogspot.com/2009/05/upload-pictures-to-flickr-from-command.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/2924472632581785457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/2924472632581785457'/><link rel='alternate' type='text/html' href='http://gbelbe.blogspot.com/2009/05/upload-pictures-to-flickr-from-command.html' title='Upload pictures to Flickr from command line'/><author><name>gbelbe</name><uri>http://www.blogger.com/profile/00120311100562022215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://4.bp.blogspot.com/_3KuTtlAr5xA/SghnHfdw_1I/AAAAAAAAAME/oWAqoxV4TvM/S220/dsc_9865.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874934.post-6372211355837251954</id><published>2009-05-09T19:45:00.000+08:00</published><updated>2009-05-09T19:46:01.787+08:00</updated><title type='text'>Gnokii (part 2)</title><content type='html'>&lt;div class="content clear-block"&gt;         &lt;p&gt;Process to connect nokia 3110 to a linux server to setup a smsd and receive sms to a mysql database.&lt;br /&gt;------------------------------------------------------------&lt;br /&gt;1) get new version of gnokii (latest source, not available through yum or apt)&lt;br /&gt;2) install libusb from yum or apt to be able to compile with usb cable support (dku2 and dke2 for nokia)&lt;br /&gt;3) you need to install libmysqlclient and libmysql-devel from yum or apt if you want to use smsd with mysql&lt;br /&gt;4) ./configure --enable-libusb&lt;br /&gt;if an error appear (in centos-5.2) asking you about XML::parser library missing, install it through   "yum install perl-XML-Parser"&lt;br /&gt;5) make&lt;br /&gt;6) try "make install" as root. If library problem, add a link as follows and retry&lt;br /&gt;ln -s /usr/local/lib/libgnokii.so.4 /usr/lib&lt;br /&gt;7) copy the udev rule inside source directory to /etc/udev/rules.d and check that it is working by connecting your phone to the usb cable&lt;br /&gt;lsusb, to get the id, then&lt;br /&gt;lsusb -d id:&lt;br /&gt;the ls to the following path:&lt;/p&gt; &lt;p&gt;$ ls -l /dev/bus/usb/yourBUSnumber/yourDeviceNumber&lt;br /&gt;crw-rw-r-- 1 root plugdev 189, 260 2008-06-08 17:42 /dev/bus/usb/003/005&lt;/p&gt; &lt;p&gt;if that gives you a file owned by user plugdev, that should be ok.&lt;br /&gt;8) create a db and tables witht the sql file available inside the source directory.&lt;br /&gt;try the server with the following command:&lt;br /&gt;smsd -m mysql -u yourdbusername -p yourdbpass -c yourdbhost -b theinboxmemorytype (IN or ME or SM according to mobile type)&lt;br /&gt;checks a few seconds that the server start and check if the tables get filled by the sms retrieved from the mobile.&lt;br /&gt;9) list files inside the mobile ( begining of the process to retrieve mms)&lt;br /&gt;gnokii --getfilelist 'A:\*'     for internal memory&lt;br /&gt;gnokii --getfilelist 'B:\*'     for external sdcard memory&lt;br /&gt;&lt;br /&gt;---------------------&lt;br /&gt;useful sources:&lt;br /&gt;mms support : &lt;a href="http://archives.free.net.ph/message/20090310.113029.cb3525ce.pl.html" title="http://archives.free.net.ph/message/20090310.113029.cb3525ce.pl.html"&gt;http://archives.free.net.ph/message/20090310.113029.cb3525ce.pl.html&lt;/a&gt;&lt;br /&gt;gnokii wiki: &lt;a href="http://wiki.gnokii.org/index.php/DKU2" title="http://wiki.gnokii.org/index.php/DKU2"&gt;http://wiki.gnokii.org/index.php/DKU2&lt;/a&gt;&lt;/p&gt;   &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5874934-6372211355837251954?l=gbelbe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gbelbe.blogspot.com/feeds/6372211355837251954/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gbelbe.blogspot.com/2009/05/gnokii-part-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/6372211355837251954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/6372211355837251954'/><link rel='alternate' type='text/html' href='http://gbelbe.blogspot.com/2009/05/gnokii-part-2.html' title='Gnokii (part 2)'/><author><name>gbelbe</name><uri>http://www.blogger.com/profile/00120311100562022215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://4.bp.blogspot.com/_3KuTtlAr5xA/SghnHfdw_1I/AAAAAAAAAME/oWAqoxV4TvM/S220/dsc_9865.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874934.post-3707574102495593450</id><published>2009-05-09T19:39:00.002+08:00</published><updated>2009-05-09T19:44:54.150+08:00</updated><title type='text'>Sending SMS with Linux and your mobile phone (the gnokii way)</title><content type='html'>Since a few days i'm trying to get my mobile phone (a basic nokia 3110c ) speaking with Linux. The idea is to make our users being able to post pictures via mms or sms sent to a mobile number (a phone connected to our server via usb cable).&lt;br /&gt;&lt;br /&gt;I came across different resources on the web, the most advance SMS/WAP server being Kannel, but it seems that it doesn't accept connections frrom USB cables.&lt;br /&gt;I found 2 softwares able to handle this : gnokii and gammu (gammu is a branch splitted from gnokii).&lt;br /&gt;&lt;br /&gt;Here is what i did :&lt;br /&gt;&lt;br /&gt;1) install gnokii : with apt or yum (but the versions installed is far from the latest so if it's not compatible with your phone, you may have to hand-install the latest one.&lt;br /&gt;&lt;br /&gt;2) check the port where your mobile has been connected:&lt;br /&gt;dmesg | tail  (right after having connected your phone to usb)&lt;br /&gt;check which port is returned:&lt;br /&gt;for me, by seeing the following line I assume that the port is ttyACM0&lt;br /&gt; cdc_acm 4-2:1.1: ttyACM0: USB ACM device&lt;br /&gt;to be verify that this port is the right one, you can ls on dev directory to check if it is listed:&lt;br /&gt;ls /dev/ttyAC* for exemple listed my port.&lt;br /&gt;&lt;br /&gt;3) when you get the right port, you can start configuring gnokii&lt;br /&gt;edit the gnokiirc vim /etc/gnokiirc&lt;br /&gt;the main settings to change are:&lt;br /&gt;port = /dev/ttyACM0&lt;br /&gt;model = 3110 (for my mobile phone)&lt;br /&gt;connection = dku2libusb (or AT if no other connection is available)&lt;br /&gt;In fact AT is a basic communication protocol for most mobile phones, it will work to send sms and retrieve phone info, but you barely can do anything else with it. The best is to find if any other mean to connect to your phone using proprietary driver exists.&lt;br /&gt;good resources can be found on the nokia website to see which cable does your mobile phone uses:&lt;br /&gt;     &lt;a href="http://europe.nokia.com/A4678148" title="http://europe.nokia.com/A4678148"&gt;http://europe.nokia.com/A4678148&lt;/a&gt;&lt;br /&gt;mine uses dke-2 which was not supported directly by gnokii and gammu, but trial and error made it work with dku2libusb for gnokii.&lt;br /&gt;other useful resources (for my phone)&lt;br /&gt;         GNOKII&lt;br /&gt;&lt;a href="http://www.gnokii.org/" title="www.gnokii.org"&gt;www.gnokii.org&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.nabble.com/Nokia-3110c-td19382514.html#a19386835" title="http://www.nabble.com/Nokia-3110c-td19382514.html#a19386835"&gt;http://www.nabble.com/Nokia-3110c-td19382514.html#a19386835&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.nabble.com/Gnokii-0.6.27-Cannot-Identify-Nokia-3110C-td20580152.html#a20580845" title="http://www.nabble.com/Gnokii-0.6.27-Cannot-Identify-Nokia-3110C-td20580152.html#a20580845"&gt;http://www.nabble.com/Gnokii-0.6.27-Cannot-Identify-Nokia-3110C-td205801...&lt;/a&gt;&lt;br /&gt;                      &lt;br /&gt;           &lt;a href="https://bugs.cihar.com/print_bug_page.php?bug_id=537" title="https://bugs.cihar.com/print_bug_page.php?bug_id=537"&gt;&lt;/a&gt;&lt;a href="http://www.gammu.org/wiki/index.php?title=Gammu:Connecting_to_phone" title="http://www.gammu.org/wiki/index.php?title=Gammu:Connecting_to_phone"&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5874934-3707574102495593450?l=gbelbe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gbelbe.blogspot.com/feeds/3707574102495593450/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gbelbe.blogspot.com/2009/05/sending-sms-with-linux-and-your-mobile.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/3707574102495593450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/3707574102495593450'/><link rel='alternate' type='text/html' href='http://gbelbe.blogspot.com/2009/05/sending-sms-with-linux-and-your-mobile.html' title='Sending SMS with Linux and your mobile phone (the gnokii way)'/><author><name>gbelbe</name><uri>http://www.blogger.com/profile/00120311100562022215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://4.bp.blogspot.com/_3KuTtlAr5xA/SghnHfdw_1I/AAAAAAAAAME/oWAqoxV4TvM/S220/dsc_9865.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874934.post-1864705266416368092</id><published>2009-05-09T19:38:00.000+08:00</published><updated>2009-05-09T19:39:54.015+08:00</updated><title type='text'>Tune Apache MPM for better performance</title><content type='html'>A few days ago I was trying to find out why office test server kept crashing every few hours, during the development of our website...&lt;br /&gt;After a few checks using top and free commands, it was clear that apache was step by step eating all the server memory until the swap was so high that it brought the server unresponsive.&lt;br /&gt;The usefull command that helped me a lot was:&lt;br /&gt;&lt;br /&gt;watch free -m&lt;br /&gt;&lt;br /&gt;leaving an auto-refreshing window showing the memory being used.&lt;br /&gt;the top command was also very useful to track the processes eating the memory, using the key "&gt;" to switch from processor usage to RAM usage listing.&lt;br /&gt;After being sure that the server crash was due to apache,  I finally came by a blog dealing with the tuning of MPM module in apache configuration file. Tuning this enables your website to be optimised to handle simultaneous connections but can also leaves many processes consuming a lot of RAM...&lt;br /&gt;here are two intersting pages, one for tuning apache to drupal&lt;br /&gt;&lt;br /&gt;&lt;a href="http://drupal.org/node/215516" title="http://drupal.org/node/215516"&gt;http://drupal.org/node/215516&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5874934-1864705266416368092?l=gbelbe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gbelbe.blogspot.com/feeds/1864705266416368092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gbelbe.blogspot.com/2009/05/tune-apache-mpm-for-better-performance.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/1864705266416368092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/1864705266416368092'/><link rel='alternate' type='text/html' href='http://gbelbe.blogspot.com/2009/05/tune-apache-mpm-for-better-performance.html' title='Tune Apache MPM for better performance'/><author><name>gbelbe</name><uri>http://www.blogger.com/profile/00120311100562022215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://4.bp.blogspot.com/_3KuTtlAr5xA/SghnHfdw_1I/AAAAAAAAAME/oWAqoxV4TvM/S220/dsc_9865.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874934.post-7872038088824772641</id><published>2009-05-09T19:36:00.000+08:00</published><updated>2009-05-09T19:38:27.231+08:00</updated><title type='text'>How to change key binding in fluxbox window manager</title><content type='html'>&lt;div class="content clear-block"&gt;         &lt;p&gt;Today i came into a problem when I had to work on a power point presentation I didn't finished at the office.&lt;br /&gt;After installing openoffice, I realized that no action was bound to the printscreen button on my keyboard.&lt;/p&gt; &lt;p&gt;After working on some tutorials here is the summary of the method i came with:&lt;/p&gt; &lt;p&gt;First look out for the "name" of the key you want to bind, use a program called "xev" (just type xev)&lt;br /&gt;then press the key you want to bind, and look for how it's called:&lt;/p&gt; &lt;p&gt;KeyPress event, serial 29, synthetic NO, window 0x2400001,&lt;br /&gt;    root 0x6a, subw 0x0, time 325551491, (303,246), root:(360,324),&lt;br /&gt;    state 0x10, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,&lt;br /&gt;    XLookupString gives 0 bytes:&lt;br /&gt;    XmbLookupString gives 0 bytes:&lt;br /&gt;    XFilterEvent returns: False&lt;/p&gt; &lt;p&gt;Here is the result when I pressed Alt key, you can see the exact name "Alt_L", in parenthesis by looking inside the text.&lt;/p&gt; &lt;p&gt;then process to bind your key with the action you want:&lt;/p&gt; &lt;p&gt;&gt;&gt; open the fluxbox setting, in your home folder look out for the ".fluxbox" directory&lt;br /&gt;&gt;&gt; open the "keys" file&lt;br /&gt;&gt;&gt; The key we want to bind is called "Print" so here is the line I have to add in the Keys file:&lt;/p&gt; &lt;p&gt;None Print :ExecCommand scrot -d 1 screensnapshot_"$(date)".png&lt;/p&gt; &lt;p&gt;"None" means no modificator (shift or any other)&lt;br /&gt;Print is the key name i want to bind&lt;br /&gt;":ExecCommand" is the tag to place before adding a command&lt;br /&gt;"scrot -d 1 ..." is the command to print screen&lt;/p&gt; &lt;p&gt;To make it work be sure that scrot has been installed on your system or apt-get for it. (apt-get install scrot)&lt;/p&gt; &lt;p&gt;restart fluxbox&lt;/p&gt; &lt;p&gt;a new png file should appear in your home folder every time you press on the pintscreen key :-)&lt;/p&gt;   &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5874934-7872038088824772641?l=gbelbe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gbelbe.blogspot.com/feeds/7872038088824772641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gbelbe.blogspot.com/2009/05/how-to-change-key-binding-in-fluxbox.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/7872038088824772641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/7872038088824772641'/><link rel='alternate' type='text/html' href='http://gbelbe.blogspot.com/2009/05/how-to-change-key-binding-in-fluxbox.html' title='How to change key binding in fluxbox window manager'/><author><name>gbelbe</name><uri>http://www.blogger.com/profile/00120311100562022215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://4.bp.blogspot.com/_3KuTtlAr5xA/SghnHfdw_1I/AAAAAAAAAME/oWAqoxV4TvM/S220/dsc_9865.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874934.post-1851263586964017947</id><published>2009-05-09T19:35:00.002+08:00</published><updated>2009-05-09T19:36:47.671+08:00</updated><title type='text'>Disks partitions for a linux 1U production server</title><content type='html'>&lt;div class="content clear-block"&gt;         &lt;p&gt;I have been looking on the web for a little bit of time now before to decide how to setup our new production server. Here is a summary of what i've read in forums and other websites.&lt;/p&gt; &lt;p&gt;Partitions is a very hot discussion and it seems that there are not very clear answers.&lt;/p&gt; &lt;p&gt;Partitioning is good for the following reasons:&lt;/p&gt; &lt;p&gt;1) segregation of data&lt;/p&gt; &lt;p&gt;it's always good to keep data and OS programs separated, to be able to quickly reinstall the OS without affecting all data.&lt;/p&gt; &lt;p&gt;Data means mainly /home and /var directories&lt;/p&gt; &lt;p&gt;&gt; It is tempting to do a partition for /etc, but this won't work as boot scrits are found in /etc and need to be accessible from the same partition as root to be able to boot the OS.&lt;/p&gt; &lt;p&gt;2) quick recovery from crash&lt;/p&gt; &lt;p&gt;the time needed to do a disk recovery can be very long and depend on the size of the partition. Having only one partition can make the recovery process very long.&lt;/p&gt; &lt;p&gt;3) keeping the system from crashing due to a full disk&lt;/p&gt; &lt;p&gt;a system with a full root (/) partition will crash&lt;br /&gt;spliting self-growing partitions such as /var and /home will keep it from crashing due to a full disk&lt;/p&gt; &lt;p&gt;4) speed&lt;br /&gt;data on the external part of a Hard Disk are faster to access because external sectors have a bigger circumference than inner sectors.&lt;/p&gt; &lt;p&gt;When setting up partitions it is hence better to begin with the one needing faster disk access, so that they will be located on the external part of the disk.&lt;/p&gt; &lt;p&gt;Here is the scheme i thought for our 1U LAMP server:&lt;br /&gt;/boot&lt;br /&gt;/swap&lt;br /&gt;/&lt;br /&gt;/var&lt;br /&gt;/var/www&lt;br /&gt;/var/mysql&lt;br /&gt;/var/log&lt;br /&gt;/home&lt;/p&gt; &lt;p&gt;larger partitions will be /var/www and /var/mysql&lt;br /&gt;/var/log has been setup to keep in control the size of log files so that they don't fill up the root partition.&lt;/p&gt;   &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5874934-1851263586964017947?l=gbelbe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gbelbe.blogspot.com/feeds/1851263586964017947/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gbelbe.blogspot.com/2009/05/disks-partitions-for-linux-1u.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/1851263586964017947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/1851263586964017947'/><link rel='alternate' type='text/html' href='http://gbelbe.blogspot.com/2009/05/disks-partitions-for-linux-1u.html' title='Disks partitions for a linux 1U production server'/><author><name>gbelbe</name><uri>http://www.blogger.com/profile/00120311100562022215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://4.bp.blogspot.com/_3KuTtlAr5xA/SghnHfdw_1I/AAAAAAAAAME/oWAqoxV4TvM/S220/dsc_9865.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874934.post-1962256083741815849</id><published>2009-05-09T19:35:00.001+08:00</published><updated>2009-05-09T19:35:51.529+08:00</updated><title type='text'>Auto resizing a large group of Pictures on linux</title><content type='html'>Here is a very convenient tool I use when back from holidays I need to upload lots of pictures for transfer on flickr or other web tools:&lt;br /&gt;&lt;br /&gt;mogrify -resize 35% *.jpg &amp;amp;&lt;br /&gt;&lt;br /&gt;this command from Image-Magick will easily resize all of the pictures in a specific directory. Note: this will affect resize all pictures in your current directory (but won't save the originals!).&lt;br /&gt;&lt;br /&gt;If you wan to resize and send them in another directory you can do as follows:&lt;br /&gt;&lt;br /&gt;mkdir thumb&lt;br /&gt;# creates a dir to put your resized pics&lt;br /&gt;&lt;br /&gt;ls *.jpg | xargs mogrify -resize 35% -path thumb&lt;br /&gt;&lt;br /&gt;# looks for all jpg pictures in your current dir, then resize them to 35% and send the result in you newly created "thumb" dir.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5874934-1962256083741815849?l=gbelbe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gbelbe.blogspot.com/feeds/1962256083741815849/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gbelbe.blogspot.com/2009/05/auto-resizing-large-group-of-pictures.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/1962256083741815849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/1962256083741815849'/><link rel='alternate' type='text/html' href='http://gbelbe.blogspot.com/2009/05/auto-resizing-large-group-of-pictures.html' title='Auto resizing a large group of Pictures on linux'/><author><name>gbelbe</name><uri>http://www.blogger.com/profile/00120311100562022215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://4.bp.blogspot.com/_3KuTtlAr5xA/SghnHfdw_1I/AAAAAAAAAME/oWAqoxV4TvM/S220/dsc_9865.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874934.post-3578955659905745290</id><published>2009-05-09T19:33:00.000+08:00</published><updated>2009-05-09T19:35:10.329+08:00</updated><title type='text'>Configure Apache url-rewrite module for clean urls</title><content type='html'>Objective: get url-rewrite module for apache to work to render beautiful queries:&lt;br /&gt;&lt;br /&gt;http:/www.yourwebsite.com/article/add/story&lt;br /&gt;(to be compared to &lt;a href="http://www.yourwebsite.com/?q=article" title="www.yourwebsite.com?q=article"&gt;www.yourwebsite.com?q=article&lt;/a&gt;...)&lt;br /&gt;&lt;br /&gt;  step 1: check if mod_rewrite is activated&lt;br /&gt;The command "apachectl -M" or "apache2ctl -M" (depending on linux distro) will list all activated modules.&lt;br /&gt;&lt;br /&gt;  step 2: activate the module&lt;br /&gt;On ubuntu distro, if the module is not activated, just cd to the /etc/apache2/mods-enabled directory and add a link to the "rewrite.load" file that should be available in your mods-available directory.&lt;br /&gt;ln -s ../mods-available/rewrite.load rewrite.load  then reload apache and check that your module is activated (step1)&lt;br /&gt;&lt;br /&gt;  step 3: inside sites-available dir (for ubuntu), add a Directory directive with the AllowOverride variable set to All.&lt;br /&gt;&lt;br /&gt;                  &lt;br /&gt;        &lt;directory&gt;&lt;br /&gt;                Options Indexes FollowSymLinks MultiViews&lt;br /&gt; ------&gt;     AllowOverride All&lt;br /&gt;                Order allow,deny&lt;br /&gt;                allow from all&lt;br /&gt;        &lt;/directory&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;this should be ok, url rewrite scripts should work within the directory specified in the directive.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5874934-3578955659905745290?l=gbelbe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gbelbe.blogspot.com/feeds/3578955659905745290/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gbelbe.blogspot.com/2009/05/configure-apache-url-rewrite-module-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/3578955659905745290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/3578955659905745290'/><link rel='alternate' type='text/html' href='http://gbelbe.blogspot.com/2009/05/configure-apache-url-rewrite-module-for.html' title='Configure Apache url-rewrite module for clean urls'/><author><name>gbelbe</name><uri>http://www.blogger.com/profile/00120311100562022215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://4.bp.blogspot.com/_3KuTtlAr5xA/SghnHfdw_1I/AAAAAAAAAME/oWAqoxV4TvM/S220/dsc_9865.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874934.post-3456379278648389594</id><published>2009-05-09T19:32:00.001+08:00</published><updated>2009-05-09T19:33:23.878+08:00</updated><title type='text'>chmoding and chowning files inside hidden dirs</title><content type='html'>A small article to remember of a usefull command that helped me more than once repairing corrupted SVN directories. If the permissions of hidden directories get modified, recursive commands like :&lt;br /&gt;chmod -Rf  or chown -Rf&lt;br /&gt;won't have any effect for dotted (hiddend) directories. In practice, this is a good thing, as it avoids changing bu mistake permissions in setting directories.&lt;br /&gt;In some case anyway you wish to recursively modify the permissions of many subdirectories, including hidden ones.&lt;br /&gt;then you can always use the useful "find" command for something such as:&lt;br /&gt;&lt;br /&gt;find . -exec chmod 755 * {} \;&lt;br /&gt;find .  is looking for anything inside your dir, then use the -exec modifier to apply the command you wish to each of the files returned by find.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5874934-3456379278648389594?l=gbelbe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gbelbe.blogspot.com/feeds/3456379278648389594/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gbelbe.blogspot.com/2009/05/chmoding-and-chowning-files-inside.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/3456379278648389594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/3456379278648389594'/><link rel='alternate' type='text/html' href='http://gbelbe.blogspot.com/2009/05/chmoding-and-chowning-files-inside.html' title='chmoding and chowning files inside hidden dirs'/><author><name>gbelbe</name><uri>http://www.blogger.com/profile/00120311100562022215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://4.bp.blogspot.com/_3KuTtlAr5xA/SghnHfdw_1I/AAAAAAAAAME/oWAqoxV4TvM/S220/dsc_9865.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874934.post-3732492225549777342</id><published>2009-05-09T19:29:00.001+08:00</published><updated>2009-05-09T19:32:02.742+08:00</updated><title type='text'>Connecter un PC(linux) et un Mac avec NFS</title><content type='html'>Voici un petit recapitulatif des manips a faire:&lt;br /&gt;Supposons que le PC sous linux avec les fichiers en partage est: 10.0.0.1&lt;br /&gt;et le Mac, qui se connecte au PC est a l'addresse 10.0.0.5&lt;br /&gt;&lt;br /&gt;1) installer nfs sur le PC&lt;br /&gt;&lt;br /&gt;2) modifier le fichier /etc/exports comme suit:&lt;br /&gt;/home/gbelbe/documents  10.0.0.5(rw,insecure,sync)&lt;br /&gt;(j'exporte le dossier /home/gbelbe/documents uniquement pour la machine 10.0.0.5)&lt;br /&gt;note: sans l'option insecure, la connection ne se fait pas sur ma version de macos.&lt;br /&gt;&lt;br /&gt;3) une fois le fichier export modifie,&lt;br /&gt;exportfs -a&lt;br /&gt;&lt;br /&gt;4) A partir du Mac, ouvrir le finder puis menu "Go", et "Connect to server"&lt;br /&gt;ensuite entrer la l'addresse nfs:&lt;br /&gt;nfs://10.0.0.1/home/gbelbe/documents&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5874934-3732492225549777342?l=gbelbe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gbelbe.blogspot.com/feeds/3732492225549777342/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gbelbe.blogspot.com/2009/05/connecter-un-pclinux-et-un-mac-avec-nfs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/3732492225549777342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/3732492225549777342'/><link rel='alternate' type='text/html' href='http://gbelbe.blogspot.com/2009/05/connecter-un-pclinux-et-un-mac-avec-nfs.html' title='Connecter un PC(linux) et un Mac avec NFS'/><author><name>gbelbe</name><uri>http://www.blogger.com/profile/00120311100562022215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://4.bp.blogspot.com/_3KuTtlAr5xA/SghnHfdw_1I/AAAAAAAAAME/oWAqoxV4TvM/S220/dsc_9865.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874934.post-4480643624199170756</id><published>2009-03-12T09:51:00.001+08:00</published><updated>2009-05-12T09:54:12.524+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tags'/><category scheme='http://www.blogger.com/atom/ns#' term='facets'/><category scheme='http://www.blogger.com/atom/ns#' term='classification'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Classification and navigation on the web, tagging with facets</title><content type='html'>&lt;p&gt;Currently preparing the second version of our website, we have come up with an uneasy problem: Categorization of our content. This is a common problem but I felt that after doing 2 consecutive focus groups with mothers, classification of the information of interest to them was quite a difficult and broad subject. One quick solution was to add-up a few cagegories and modify them later, let them tag and check from time to time which tags come the most often and rebuild the categories afterward.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;After a few not-so-successful meetings, we came up with 2 successful website where we got a positive experience with categorization and navigation (it's clearly related). Facebook does a fairly good job at asking a good amount of data from users, data that can come both from pre-defined categories and by free tags (textboxes). And Taobao.com doing a wonderful job at presenting the information through very easy-to-browse categories.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;From this point onward, I did a bit of research and came up with an interesting model, which may look pretty obvious at first but which is nevertheless very interesting.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;This article is well worth reading to understand the &lt;a title="ontology_overrated" href="http://www.shirky.com/writings/ontology_overrated.html" target="_blank"&gt;evolution of classification models&lt;/a&gt; following the appartion of the web.&lt;/p&gt;&lt;br /&gt;&lt;p style="text-align: justify;"&gt;&lt;br /&gt;&lt;p&gt;A) Traditional classification model (ontology or taxonomy) is in most cases inadapted to large data sets common from the web. They are difficult to maintain and to make evolve and are not very easy to navigate either for users (we are all different and don't always think of the same category for the same item). On the other hand, usability testing shows the obvious fact that users tend to prefer organized and structured content. (nobody likes to feel "lost").&lt;/p&gt;&lt;br /&gt;&lt;p&gt;B) The (free) tagging model is the action of letting users assign “keywords” to content without any constraint. It has become very popular for articles in blogs, links in delicious, or tagging pictures in Flickr… It has come at a time when the top-down approach of categoy models was seens as unadapted to the web, disorganized in structure. Tagging, on the contrary is a bottom-up approach which let end-users categorize the content. The model is also very evolutive. As we know with "tag-clouds" it shows the current situation of the content inside a website.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;But Tagging, even though it solves many problem of traditional taxonomy (static categories defined a-priori) leads to new problems: in &lt;a href="http://www.facetag.org/download/facetag-20070325.pdf" target="_blank"&gt;different research papers&lt;/a&gt;, UI (User Interface) experts shows that Tags are a bad navigation tool, as they lack "context" and logical relationship. Tag-clouds are a nice tool to view the current situation of a websites' content, but they are very inefficient to navigate as keywords are often totally unrelated and a word without context can have many different meanings. The lack of context and the synonyms homonyms makes it also not very practical to use for users. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;To enhance the usefullness of tags for end-users some website have developped tag-clusturing models. (flickr is creating groups of pictures of similar interests by grouping pictures that have some common tags in common.) while this concept is an improvement to user experience, tests shows that users still prefer ordred (classified) data rather that simple grouping of common terms.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;D) &lt;a title="faceted classification" href="http://en.wikipedia.org/wiki/Faceted_classification" target="_blank"&gt;Faceted classification&lt;/a&gt; is another not-so-new classification concept that is gaining some interest in the web, especially associated with the Tagging concept. In short the concept is based on the idea that any item has a set of orthogonal (meaning not related) properties or dimensions, and that we can classify items by giving each of them a value on these properties. For example, if we want to classify mobile phones, we can define a few dimensions (facets) as "price", "brand", "color"... [note that to be a true facet, one item cannot have two values in the same dimension - it cannot be a nokia &amp; a motorola ].&lt;/p&gt;&lt;br /&gt;&lt;p style="text-align: justify;"&gt;From this basic concept, follows a powerful organisation and navigation system, very adapted to the web. At the difference of traditional taxonomies, multiple facets enable many starting point in the browsing or searching experience. (you can start by brand or by price...) and add a context to the tags, which make them more meaninful for users.&lt;/p&gt;&lt;br /&gt;&lt;p style="text-align: justify;"&gt;This concept is very well explained in the following presentation:&lt;/p&gt;&lt;br /&gt;&lt;div id="__ss_6643" style="width: 425px; text-align: left;"&gt;&lt;br /&gt;&lt;p&gt;&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;param name="src" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=facetag-integrating-bottomup-and-topdown-classification-in-a-social-tagging-system-12729" /&gt;&lt;embed type="application/x-shockwave-flash" width="425" height="355" src="http://static.slideshare.net/swf/ssplayer2.swf?doc=facetag-integrating-bottomup-and-topdown-classification-in-a-social-tagging-system-12729" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5874934-4480643624199170756?l=gbelbe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gbelbe.blogspot.com/feeds/4480643624199170756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gbelbe.blogspot.com/2009/03/classification-and-navigation-on-web.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/4480643624199170756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874934/posts/default/4480643624199170756'/><link rel='alternate' type='text/html' href='http://gbelbe.blogspot.com/2009/03/classification-and-navigation-on-web.html' title='Classification and navigation on the web, tagging with facets'/><author><name>gbelbe</name><uri>http://www.blogger.com/profile/00120311100562022215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://4.bp.blogspot.com/_3KuTtlAr5xA/SghnHfdw_1I/AAAAAAAAAME/oWAqoxV4TvM/S220/dsc_9865.jpg'/></author><thr:total>0</thr:total></entry></feed>
