Archive for September, 2006

Dalian, Liaoning

Thursday, September 21st, 2006

Début Juillet. Avant de se rendre à Dalian, il a bien sûr fallu aller à la gare de Pékin acheter mon ticket de train. C’est plutôt une aventure en soi quand cela fait à peine quelques jours que l’on se trouve en Chine et que les bases de Chinois acquises en France n’ont pas l’air d’encore bien fonctionner. J’étais donc content de me faire aider par une française ayant séjourné plusieurs fois en Chine. Acheter un ticket de train peut s’avérer stressant car après avoir pris part à l’une des longues files d’attente, lorsqu’arrive son tour, il faut bien sûr parler en Chinois (quelle jour ? quelle heure ? quelle destination ? couchette ou siège ? lit du haut ou du bas ?) mais surtout, il vaut mieux comprendre ce que nous dit l’employé assez rapidement car on sent bien la pression des Chinois derrière, qui commencent à s’impatienter car on est trop long. Il y a aussi les Chinois opportunistes qui avec un timing remarquable s’infiltrent juste devant vous, l’étranger visiblement un peu perdu, juste au moment où arrive votre tour. D’ailleurs, c’est un peu une constante en Chine quand j’attends à la caisse. Mais je ne sais pas s’ils profitent du fait que je sois étranger ou s’ils le font avec tout le monde. Encore une fois, il faut parfois savoir se faire respecter.

Je suis arrivé à Dalian après 17 heures de train. C’était un train dit lent, avec plus d’arrêts que sa version rapide (logique) qui elle ne nécessite que 12 heures. À peine arrivé à Dalian, j’ai tout de suite été surpris et séduit par le contraste… avec la grisaille de Pékin. Il faut savoir que la ville au cours du XIXème et XXème siècles a été successivement occupée par les Russes, Japonais puis Russes encore. Cela lui donne un héritage, une atmosphère et une identité tout à fait particuliers. Quelques photos.

Les cours à l’université des langues étrangères de Dalian se sont très bien passés. Chaque matin, j’avais trois heures de cours. Toutes les explications étaient toujours données en Chinois à l’exception de quelques mots d’anglais pour traduire des mots inconnus. Mais pour être franc, j’ai l’impression d’avoir beaucoup plus progressé grâce à l’environnement que grâce aux cours eux-mêmes. Il y a bien sûr la Chine et tous les petites actions de la vie quotidienne mais aussi les amis Chinois et surtout les amis étrangers, qui eux aussi suivaient les cours. La langue de communication entre les étrangers était naturellement le Chinois (et non l’Anglais, la langue internationale par excellence). Souvent il était plus facile de comprendre et de se faire comprendre entre étrangers, qu’avec les Chinois. Je suis bien content de m’être fait quelques amis vietnamiens, coréens et japonais avec qui j’espère garder contact longtemps. (Certains diront que j’ai parfois trop parlé Japonais pour quelqu’un venu apprendre le Chinois… ;-))

Dalian est aussi une station balnéaire et nous sommes donc allés plusieurs fois à la mer. L’eau n’était pas particulièrement propre et les gens très nombreux, mais cela permettait de vraiment se sentir en vacances malgré les cours du matin. Même si les Chinois voyagent de plus en plus à l’étranger (Paris…) et paraissent très nombreux, il faut savoir qu’une immense majorité des Chinois n’a toujours pas les moyens de s’affranchir de la caution de 10,000 元 environ, nécessaires en plus du prix du voyage, pour quitter le pays. Par conséquent, nombreux sont ceux qui voyagent à l’intérieur de la Chine (et Dieu sait qu’il y a des choses à voir…). Dalian semble une ville particulièrement appréciée pour profiter des joies de la mer et pour son climat relativement « frais » : 30°C contre plus de 35 dans le sud.

Je viens de regarder l’entrée de Dalian sur Wikipédia et ça m’a fait tout drôle de voir des photos de 中山广场 (place de la « montagne du milieu ») et 友好广场 (« place de l’amitié »), où je suis allé de nombreuses fois. なつかしい〜 comme on dit en Japonais. Hey mais j’ai quand même passé plus d’un mois là-bas et plein de souvenirs…

Transparent caching in Ruby

Tuesday, September 19th, 2006

Found the following code in the ruby-talk archives. It allows to cache what a method returns.

class Class
    alias_method :__new__, :new

    def cached_method(*methods)
        @cached_methods ||= []
        @cached_methods += methods
        @cached_methods.uniq!
    end

    def new(*args, &block)
        obj = __new__(*args, &block)
        klass = obj.class
        @cached_methods ||= []

        @cached_methods.each do |name|
            meth = obj.method(name)
            i = 1

            while klass.instance_variables.member?("@_defc_#{i}")
                i += 1
            end

            wrapped_name = "_defc_#{i}"
            cache = klass.class_eval("@#{wrapped_name} = {}")

            wrapper = Proc.new do |*args_a|
                arg_hash = args_a.hash

                if cache.has_key?(arg_hash)
                    cache[arg_hash]
                else
                    cache[arg_hash] = meth.call(*args_a)
                end
            end

            klass.send(:alias_method, wrapped_name, name)
            klass.send(:define_method, name, wrapper)
        end

        return obj
    end
end

if __FILE__ == $0
    class Klass
        def foo; end
        def bar; end
        cached_method :foo, :bar
    end
end

OK, vélo volé…

Monday, September 11th, 2006

Après seulement trois semaines de bons et loyaux services, mon vélo a été volé au lac Taihu de Wuxi où j’étais allé me promener hier après-midi… Ce n’était pas spécialement un bon vélo mais apparemment, il était trop neuf pour ne pas attirer l’attention des voleurs. Je suis d’autant plus embêté que ce n’était pas mon vélo mais un vélo inutilisé qu’on m’avait prêté… Je pense qu’ils ont utilisé un fil de fer pour débloquer la serrure car mon antivol était plutôt costaud…

J’en ai parlé avec quelques Chinois et ça l’air d’être monnaie courante ici. Tout le monde s’est plus ou moins déjà fait voler son vélo trois ou quatre fois…

Je compte m’en acheter un nouveau rapidement car c’est tout de même très pratique pour se déplacer mais cette fois j’en prendrai un vieux tout moche. Du moment qu’il roule…

Inputting french, pinyin and other.

Saturday, September 9th, 2006

Being in China, I lately had to customize my keyboard layout so I can input french accents on my qwerty keyboard. I am using the standard X input method to do it and I found out it was really powerful.

(more…)

Tunneling

Friday, September 8th, 2006

I am lucky enough to own my own server at an ISP in Paris and I figured out lately that it was freaking (and I mean freaking) easy to create a SSH tunnel between it and my computer here. I just run this single command on my local computer:

$ ssh -N -D 8000 username@serverhost

It creates a SOCKS proxy server (i.e a multipurpose proxy server) listening to the port 8000 of the local machine. All communications on this port go through a SSH (encrypted) tunnel and are then transmitted to the real target by my server.

Then in the Firefox settings (or Gaim or any other client), I just have to define localhost and port 8000 as SOCKS server. It allows me to browse the web as if I were in France. Very useful (I let you guess why). I use the proxy button Firefox extension to quickly switch from using the proxy to not using the proxy.

It does not require root privileges neither on my local machine nor on the server.

Another and maybe more elegant solution is to run an HTTP proxy like Squid on the server and to bind a local port to the port the HTTP proxy is listening to. Something like:

$ ssh -N -L 8000:servertarget:8000 user@serverproxy

Of course, in this case you don’t have to define a SOCKS server but normal HTTP server in the Firefox settings.

Fix number of comments in WordPress.

Friday, September 8th, 2006

The plugin “Did you pass Maths?” that I am using to prevent spam had an annoying bug: rejected posts still incremented the comment count. So I have made a little program to update my database with correct number of comments.

Here it is.

(more…)

Life in China

Friday, September 8th, 2006

Haven’t said anything for quite a long time… The reason is I have been in China for more than two months now and did not have so much time to talk about it here. I arrived in Beijing in early July and spent five days there. Then I stayed a bit more than one month in Dalian (north-east). I studied Chinese every morning at Dalian University of Foreign Languages. In mid-August, I have started an internship in a chinese company in Wuxi (near Shanghai) where I am doing very interesting stuff. I am there till mid-January 2007. I know have a regular access to Internet so I am planning to tell about my experiences here in China.

But because what I will tell is mainly targeted to my family and my friends in real life (it would be quite impersonal to write in English to them) and I miss using my own language, I have decided I would use french for this part of my journal. I don’t want to have a separate journal for French and English, neither I want to have a separate journal for technical and non-technical stuff. So this journal will be multilingual and multipurpose. Just pick what you are interested in!

Pour commencer

Pour resituer un peu le contexte, dans le cadre de mes études à Telecom Lille1 (ENIC), je dois faire au moins un stage à l’étranger. Ayant étudié et étant passionné par les langues japonaise et chinoise, je me suis naturellement tourné vers le Japon et la Chine, où j’ai finalement eu plus de succès. J’ai trouvé un stage d’informatique pour ma 4ème année dans une ville appelée Wuxi, près de Shanghai. Inconnue au bataillon en France mais quand même relativement grande (plus d’un million d’habitants à ma connaissance). Bien sûr, quitte à venir en Chine, cela aurait été dommage de ne pas passer quelques jours à Pékin. J’ai aussi pu étudier le Chinois pendant un mois (en plus de la première année de Licence en France) à Dalian grâce à un partenariat entre l’université de Lille3 et une université locale.

(more…)