From aba7caf3d8c1b73ff75bc8e681a515a596e58b73 Mon Sep 17 00:00:00 2001 From: Grummfy Date: Sun, 20 Jul 2014 01:41:44 +0200 Subject: [PATCH 1/6] ignore some ide --- .gitignore | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.gitignore b/.gitignore index 0c05f181..2359a6d5 100644 --- a/.gitignore +++ b/.gitignore @@ -166,6 +166,11 @@ UpgradeLog*.htm App_Data/*.mdf App_Data/*.ldf +################# +## Other ide stuff +################# +.idea/* + ############# ## Windows detritus ############# From f570a9cc8319552f34a9c5baafad277b958f0d6c Mon Sep 17 00:00:00 2001 From: Grummfy Date: Sun, 20 Jul 2014 10:40:00 +0200 Subject: [PATCH 2/6] google plus bridge --- bridges/GooglePlusPostBridge.php | 63 ++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 bridges/GooglePlusPostBridge.php diff --git a/bridges/GooglePlusPostBridge.php b/bridges/GooglePlusPostBridge.php new file mode 100644 index 00000000..8e03ac7c --- /dev/null +++ b/bridges/GooglePlusPostBridge.php @@ -0,0 +1,63 @@ +returnError('You must specify a username (?username=...).', 400); + } + + $this->request = $param['username']; + $html = file_get_html('https://plus.google.com/' . urlencode($this->request) . '/posts') or $this->returnError('No results for this query.', 404); + + var_dump($html); + foreach($html->find('div.Yp.yt.Xa') as $post) + { + $item = new \Item(); + $item->content = $post->find('dib.Al.pf')->innerHTML; + $item->username = $item->fullname = $post->find('header.lea h3 a', 0)->innertext; + $item->id = $post->getAttribute('id'); + $item->title = $item->fullname = $post->find('header.lea', 0)->innertext; + $item->avatar = $post->find('.ys a.ob.Jk img', 0)->src; + $item->uri = $post->find('a.o-U-s.FI.Rg')->href; + $item->timestamp = $post->find('a.o-U-s.FI.Rg')->title; // 5 juin 2014 23:20:41 + $this->items[] = $item; + } + +// // extract plaintext +// $item->content_simple = str_replace('href="/', 'href="https://twitter.com/', html_entity_decode(strip_tags($tweet->find('p.js-tweet-text', 0)->innertext, ''))); +// +// // generate the title +// $item->title = $item->fullname . ' (@'. $item->username . ') | ' . $item->content_simple; +// // put out +// $this->items[] = $item; +// } + } + + public function getName() + { + return 'Google Plus Post Bridge'; + } + + public function getURI() + { + return 'http://plus.google.com/'; + } + + public function getCacheDuration() + { + return 600; // 10 minutes + } +} From 4568ef238b81de7fd1e27d65c7ef2a4b33cfa4c7 Mon Sep 17 00:00:00 2001 From: jvb Date: Sun, 20 Jul 2014 11:59:46 +0200 Subject: [PATCH 3/6] ... --- bridges/GooglePlusPostBridge.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/bridges/GooglePlusPostBridge.php b/bridges/GooglePlusPostBridge.php index 8e03ac7c..84ebd354 100644 --- a/bridges/GooglePlusPostBridge.php +++ b/bridges/GooglePlusPostBridge.php @@ -22,7 +22,16 @@ class GooglePlusPostBridge extends BridgeAbstract $this->request = $param['username']; $html = file_get_html('https://plus.google.com/' . urlencode($this->request) . '/posts') or $this->returnError('No results for this query.', 404); - var_dump($html); + //var_dump($html); + //exit(); + $item = new \Item(); + $dsd = array(); + foreach (get_object_vars($html) as $k => $v) + { + $dsd[ $k ] = array_keys(get_object_vars($v)); + } + $item->content = var_export($dsd, true); + $this->items[] = $item; foreach($html->find('div.Yp.yt.Xa') as $post) { $item = new \Item(); @@ -34,6 +43,7 @@ class GooglePlusPostBridge extends BridgeAbstract $item->uri = $post->find('a.o-U-s.FI.Rg')->href; $item->timestamp = $post->find('a.o-U-s.FI.Rg')->title; // 5 juin 2014 23:20:41 $this->items[] = $item; + break; } // // extract plaintext From c02e4cae7c3fb03ad21bab094665b644f6cec36e Mon Sep 17 00:00:00 2001 From: jvb Date: Sun, 20 Jul 2014 12:38:45 +0200 Subject: [PATCH 4/6] try to debug stuff --- bridges/GooglePlusPostBridge.php | 13 +- posts | 2568 ++++++++++++++++++++++++++++++ 2 files changed, 2578 insertions(+), 3 deletions(-) create mode 100644 posts diff --git a/bridges/GooglePlusPostBridge.php b/bridges/GooglePlusPostBridge.php index 84ebd354..f07b5780 100644 --- a/bridges/GooglePlusPostBridge.php +++ b/bridges/GooglePlusPostBridge.php @@ -6,7 +6,7 @@ * * @name Google Plus Post Bridge * @homepage http://plus.google.com/ - * @description Returns user public post (without using their API). + * @description Returns user public post (using their API because without you need to parse javascript ...). * @maintainer Grummfy * @use1(username="usernameOrId") */ @@ -20,7 +20,8 @@ class GooglePlusPostBridge extends BridgeAbstract } $this->request = $param['username']; - $html = file_get_html('https://plus.google.com/' . urlencode($this->request) . '/posts') or $this->returnError('No results for this query.', 404); + //$html = file_get_html('https://plus.google.com/' . urlencode($this->request) . '/posts') or $this->returnError('No results for this query.', 404); + $html = str_get_html(__DIR__ . '/../posts') or $this->returnError('No results for this query.', 404); //var_dump($html); //exit(); @@ -31,6 +32,12 @@ class GooglePlusPostBridge extends BridgeAbstract $dsd[ $k ] = array_keys(get_object_vars($v)); } $item->content = var_export($dsd, true); + $this->items[] = $item; + $item = new \Item(); + $item->content = var_export((($html->find('div.Dge.fOa'))), true); + $this->items[] = $item; + $item = new \Item(); + $item->content = var_export($html->find('div', 0), true) . $html->dump_node(); $this->items[] = $item; foreach($html->find('div.Yp.yt.Xa') as $post) { @@ -68,6 +75,6 @@ class GooglePlusPostBridge extends BridgeAbstract public function getCacheDuration() { - return 600; // 10 minutes + return 1; // 600; // 10 minutes } } diff --git a/posts b/posts new file mode 100644 index 00000000..677bf52d --- /dev/null +++ b/posts @@ -0,0 +1,2568 @@ +Jonathan Van Belle - Google+
Profiel

Profile

Omslagfoto
Jonathan Van Belle
Heeft gewerkt bij Belgium
24.419 weergaven
OverPosts

Stream

Jonathan Van Belle

Openbaar gedeeld  - 
 
 
2 problèmes de moins grâce à #legoland
 ·  Vertalen
3
1
Profielfoto van Christophe DefraineProfielfoto van Quentin Forestier
 
Jen voudrais 4 pour mon bureau !  merci !
 ·  Vertalen
Voeg een reactie toe…

Jonathan Van Belle

Openbaar gedeeld  - 
 
 
Un secret d'arrière boutique dévoilé !
 ·  Vertalen
1
Profielfoto van sebi jack
 
Je m'en doutais
Voeg een reactie toe…
 
Si tu aimes le #jdr et veux gagner un exemplaire de #Vivere !
 ·  Vertalen
 
Geeksleague 78 en ligne :


Au programme

3′ : La rubrique de l’invité, Vivere
50′ : Coup de cœur, Le donjon de crépuscule
51′ : The tiping of the dead (jeu vidéo)
54′ : Coup coeur (Méga Lonnnnnnngggggg) : The darkness (comics)
60′ : Le débat : les réseaux sociaux
1h15 ‘ : Coup de gueule de Méo, la neutralité du web et contre coup de gueule de Marius
1h18 ‘ : Le défi de la semaine 2048
1h20′ Plaid et couverture, Resident evil
1h34′ : La minute du colloc
1h35′ : Le super Dragon Quizz Point
1h50′ Coup de cœur, dernier tome de la Triologie du vide
 ·  Vertalen
1
Voeg een reactie toe…

Jonathan Van Belle

Actu jeux/zines (sorties/souscriptions)  - 
 
On va parler de vivere dans le geeksleague de ce soir. Un #jdr (ou plutôt #jdra ) space-fantasy financer via #ulule  
 ·  Vertalen
 
Ce vendredi c’est le live du podcast Geeksleague 78

Ce vendredi 21 Mars c’est Geeksleague 78 !

Ce vendredi nous recevrons le créateur du jeu de rôle : http://vivere-jdr.fr qui a récemment réussi avec brio sont Ulule.
 ·  Vertalen
2
Profielfoto van Eric NieudanProfielfoto van Quentin ForestierProfielfoto van Jonathan Van BelleProfielfoto van Arjuna Khan
10 reacties
 ·  Vertalen
Voeg een reactie toe…
 
 
If you have 5 minutes, you can take part in this small (25) question survey about cloud computing and security ! 

https://www.surveymonkey.com/s/situation_awareness_in_cloud_computing_environment 
 ·  Vertalen
1
Voeg een reactie toe…

Jonathan Van Belle

Openbaar gedeeld  - 
 
 
Dans un petit pays exotique lointain, le parti au pouvoir avait décidé de ne prendre aucun risque. Heureusement, le vote était principalement électronique et utilisait des disquettes.

Les machines de vote étaient surveillées et difficiles d'accès. Certes, avec un minimum de complicité, il aurait été possible de les modifier.

Mais le parti au pouvoir décida d'utiliser un stratagème plus simple et impliquant moins de complices : les disquettes qui serait utilisées furent artificiellement usées en les soumettant au rayonnement d'un électro-aimant. Coût : un seul et unique complice chez le transporteur.

Lors du comptage des votes, plusieurs disquettes rendirent l'âme et affichèrent des résultats farfelus ou se révélèrent illisibles. Ce qui était bien l'effet escompté. Certes, une majorité fonctionnaient encore mais la somme totale des votes n'était plus vérifiable.

Selon la procédure en place, des experts furent appelés à la rescousse pour décoder les disquettes. Des experts peu nombreux et parfaitement anonymes dont personne ne savait rien. Or, la société de consultance fournissant les experts était dirigée par un proche du parti au pouvoir. Quelques mois auparavant, il avait donc désigné le responsable du groupe d'experts qui connaissait parfaitement sa mission : il serait chargé d'agréger les chiffres, sur son ordinateur personnel, que les membres de son équipe lui transmettrait. Avant d'annoncer des résultats qui se rapprocheraient autant que possible de la réalité pour qu'ils soient plausible mais qui élimineraient toute concurrence.

La majorité des experts n'étaient pas au courant et travaillèrent donc réellement à déchiffrer des disquettes corrompues. Certaines furent déclarées illisibles. Mais le chef de notre groupe d'experts expliquait alors à l'ingénieur qu'il transférait la disquette vers un collègue qui pourrait avoir plus de chance.

Au final, les disquettes furent subtilement détruite pour empêcher tout recompte éventuel. Le chef de notre groupe d'experts annonça les résultats prévu et, même au sein de son équipe, personne ne se douta de rien.

Le parti au pouvoir confirma sa main-mise sur le pays et personne n'y trouva rien à redire. L'opposition fut muselée.

Heureusement, ce genre de choses n'arrivent que dans de lointains pays exotiques…
 ·  Vertalen
4
Voeg een reactie toe…

Jonathan Van Belle

Openbaar gedeeld  - 
 
 
The European Parliament just voted to end roaming surcharges, safeguard the open internet, and make it easier for you to get the most from your mobile.

Bravo to Pilar del Castillo and all her colleagues!

http://europa.eu/!NN89YF

#‎ConnectedContinent‬
 ·  Vertalen
1
Voeg een reactie toe…
 
http://hackathonegovwallonia.net Un hackaton sur la mobilité pour cette année ...
 ·  Vertalen
1
Profielfoto van Jonathan Van BelleProfielfoto van Benjamin Monjoie
2 reacties
 
Malheureusement non, pas le temps. Malheureusement ....
 ·  Vertalen
Voeg een reactie toe…

Jonathan Van Belle

Openbaar gedeeld  - 
 
 
C'est avec une certaine fébrilité que je vous annonce la sortie officielle de Vivere, le jdr de Space-Fantasy.

Ce jdr a fait l'objet d'une campagne de financement via la plateforme Ulule l'année dernière.
Maintenant financé et imprimé, il est disponible au prix de 25€ (hors frais de port).
Ce dernier peut être directement commendé en m'envoyant un message, mais je préfère les mails. ;)

Les versions électroniques devraient suivre très très vite, ainsi que le premier supplément pdf.

Un kit de démonstration est disponible sur le site officiel du jeu, et la page facebook annonce l'activité du jeu, les évènements auxquels je participe ainsi que l'avancement du projet. 
http://vivere-jdr.fr/

Pour les belges du coin : je serai au Made In Asia la semaine prochaine ;)
Passez me voir !
 ·  Vertalen
1
Voeg een reactie toe…
Verhaal
Introductie
Short bio
Algemene informatie
Geslacht
Man
Werk
Beroep
IT worker
Werkervaring
  • Belgium
\ No newline at end of file From 0113c61911f6bbdf764ab84699da4b3e2c915bfa Mon Sep 17 00:00:00 2001 From: Grummfy Date: Sun, 20 Jul 2014 16:28:51 +0200 Subject: [PATCH 5/6] bridge with google plus --- bridges/GooglePlusPostBridge.php | 139 +- posts | 2568 ------------------------------ 2 files changed, 98 insertions(+), 2609 deletions(-) delete mode 100644 posts diff --git a/bridges/GooglePlusPostBridge.php b/bridges/GooglePlusPostBridge.php index f07b5780..b6fad070 100644 --- a/bridges/GooglePlusPostBridge.php +++ b/bridges/GooglePlusPostBridge.php @@ -1,17 +1,35 @@ MAX_FILE_SIZE) +// { +// $dom->clear(); +// return false; +// } +// $dom->load_file($str, $lowercase, $stripRN); +// return $dom; +//} + /** - * GooglePlusPostBridge + * Google Plus Post Bridge + * Freely inspired by tweeter bridge * 2014-07-20 * * @name Google Plus Post Bridge * @homepage http://plus.google.com/ - * @description Returns user public post (using their API because without you need to parse javascript ...). + * @description Returns user public post (without API). * @maintainer Grummfy * @use1(username="usernameOrId") */ class GooglePlusPostBridge extends BridgeAbstract { + protected $_title; + protected $_url; + + const GOOGLE_PLUS_BASE_URL = 'https://plus.google.com/'; + public function collectData(array $param) { if (!isset($param['username'])) @@ -20,57 +38,96 @@ class GooglePlusPostBridge extends BridgeAbstract } $this->request = $param['username']; - //$html = file_get_html('https://plus.google.com/' . urlencode($this->request) . '/posts') or $this->returnError('No results for this query.', 404); - $html = str_get_html(__DIR__ . '/../posts') or $this->returnError('No results for this query.', 404); + // get content parsed +// $html = file_get_html(__DIR__ . '/../posts2.html' + $html = file_get_html(self::GOOGLE_PLUS_BASE_URL . urlencode($this->request) . '/posts' + // force language + , false, stream_context_create(array('http'=> array( + 'header' => 'Accept-Language: fr,fr-be,fr-fr;q=0.8,en;q=0.4,en-us;q=0.2;*' . "\r\n" + ))) + ) OR $this->returnError('No results for this query.', 404); - //var_dump($html); - //exit(); - $item = new \Item(); - $dsd = array(); - foreach (get_object_vars($html) as $k => $v) - { - $dsd[ $k ] = array_keys(get_object_vars($v)); - } - $item->content = var_export($dsd, true); - $this->items[] = $item; - $item = new \Item(); - $item->content = var_export((($html->find('div.Dge.fOa'))), true); - $this->items[] = $item; - $item = new \Item(); - $item->content = var_export($html->find('div', 0), true) . $html->dump_node(); - $this->items[] = $item; - foreach($html->find('div.Yp.yt.Xa') as $post) - { - $item = new \Item(); - $item->content = $post->find('dib.Al.pf')->innerHTML; - $item->username = $item->fullname = $post->find('header.lea h3 a', 0)->innertext; - $item->id = $post->getAttribute('id'); - $item->title = $item->fullname = $post->find('header.lea', 0)->innertext; - $item->avatar = $post->find('.ys a.ob.Jk img', 0)->src; - $item->uri = $post->find('a.o-U-s.FI.Rg')->href; - $item->timestamp = $post->find('a.o-U-s.FI.Rg')->title; // 5 juin 2014 23:20:41 - $this->items[] = $item; - break; - } + // get title, url, ... there is a lot of intresting stuff in meta + $this->_title = $html->find('meta[property]', 0)->getAttribute('content'); + $this->_url = $html->find('meta[itemprop=url]', 0)->getAttribute('content'); -// // extract plaintext -// $item->content_simple = str_replace('href="/', 'href="https://twitter.com/', html_entity_decode(strip_tags($tweet->find('p.js-tweet-text', 0)->innertext, ''))); -// -// // generate the title -// $item->title = $item->fullname . ' (@'. $item->username . ') | ' . $item->content_simple; -// // put out +// foreach ($html->find('meta') as $e) +// { +// $item = new \Item(); +// $item->content = var_export($e->attr, true); // $this->items[] = $item; // } + + // div[jsmodel=XNmfOc] + foreach($html->find('div.yt') as $post) + { + $item = new \Item(); +// $item->content = $post->find('div.Al', 0)->innertext; + $item->username = $item->fullname = $post->find('header.lea h3 a', 0)->innertext; + $item->id = $post->getAttribute('id'); +// $item->title = $item->fullname = $post->find('header.lea', 0)->plaintext; + $item->avatar = $post->find('div.ys img', 0)->src; +// var_dump((($post->find('a.o-U-s', 0)->getAllAttributes()))); + $item->uri = $post->find('a.o-U-s', 0)->href; + $item->timestamp = strtotime($post->find('a.o-U-s', 0)->plaintext); + $this->items[] = $item; + + // hashtag to treat : https://plus.google.com/explore/tag + $hashtags = array(); + foreach($post->find('a.d-s') as $hashtag) + { + $hashtags[ trim($hashtag->plaintext) ] = self::GOOGLE_PLUS_BASE_URL . $hashtag->href; + } + + $item->content = ''; + + // avatar display + $item->content .= '
avatar' . $item->username . '
'; + + $content = $post->find('div.Al', 0); + + // alter link +// $content = $content->innertext; +// $content = str_replace('href="./', 'href="' . self::GOOGLE_PLUS_BASE_URL, $content); +// $content = str_replace('href="photos', 'href="' . self::GOOGLE_PLUS_BASE_URL . 'photos', $content); + // XXX ugly but I don't have any idea how to do a better stuff, str_replace on link doesn't work as expected and ask too many checks + foreach($content->find('a') as $link) + { + $hasHttp = strpos($link->href, 'http'); + $hasDoubleSlash = strpos($link->href, '//'); + + if ((!$hasHttp && !$hasDoubleSlash) + || (false !== $hasHttp && strpos($link->href, 'http') != 0) + || (false === $hasHttp && false !== $hasDoubleSlash && $hasDoubleSlash != 0)) + { + // skipp bad link, for some hashtag or other stuff + if (strpos($link->href, '/') == 0) + { + $link->href = substr($link->href, 1); + } + $link->href = self::GOOGLE_PLUS_BASE_URL . $link->href; + } + } + $content = $content->innertext; + + $item->content .= '
' . $content . '
'; + + // extract plaintext + $item->content_simple = $post->find('div.Al', 0)->plaintext; + } + +// $html->save(__DIR__ . '/../posts2.html'); } public function getName() { - return 'Google Plus Post Bridge'; + return $this->_title ?: 'Google Plus Post Bridge'; } public function getURI() { - return 'http://plus.google.com/'; + return $this->_url ?: 'http://plus.google.com/'; } public function getCacheDuration() diff --git a/posts b/posts deleted file mode 100644 index 677bf52d..00000000 --- a/posts +++ /dev/null @@ -1,2568 +0,0 @@ -Jonathan Van Belle - Google+
Profiel

Profile

Omslagfoto
Jonathan Van Belle
Heeft gewerkt bij Belgium
24.419 weergaven
OverPosts

Stream

Jonathan Van Belle

Openbaar gedeeld  - 
 
 
2 problèmes de moins grâce à #legoland
 ·  Vertalen
3
1
Profielfoto van Christophe DefraineProfielfoto van Quentin Forestier
 
Jen voudrais 4 pour mon bureau !  merci !
 ·  Vertalen
Voeg een reactie toe…

Jonathan Van Belle

Openbaar gedeeld  - 
 
 
Un secret d'arrière boutique dévoilé !
 ·  Vertalen
1
Profielfoto van sebi jack
 
Je m'en doutais
Voeg een reactie toe…
 
Si tu aimes le #jdr et veux gagner un exemplaire de #Vivere !
 ·  Vertalen
 
Geeksleague 78 en ligne :


Au programme

3′ : La rubrique de l’invité, Vivere
50′ : Coup de cœur, Le donjon de crépuscule
51′ : The tiping of the dead (jeu vidéo)
54′ : Coup coeur (Méga Lonnnnnnngggggg) : The darkness (comics)
60′ : Le débat : les réseaux sociaux
1h15 ‘ : Coup de gueule de Méo, la neutralité du web et contre coup de gueule de Marius
1h18 ‘ : Le défi de la semaine 2048
1h20′ Plaid et couverture, Resident evil
1h34′ : La minute du colloc
1h35′ : Le super Dragon Quizz Point
1h50′ Coup de cœur, dernier tome de la Triologie du vide
 ·  Vertalen
1
Voeg een reactie toe…

Jonathan Van Belle

Actu jeux/zines (sorties/souscriptions)  - 
 
On va parler de vivere dans le geeksleague de ce soir. Un #jdr (ou plutôt #jdra ) space-fantasy financer via #ulule  
 ·  Vertalen
 
Ce vendredi c’est le live du podcast Geeksleague 78

Ce vendredi 21 Mars c’est Geeksleague 78 !

Ce vendredi nous recevrons le créateur du jeu de rôle : http://vivere-jdr.fr qui a récemment réussi avec brio sont Ulule.
 ·  Vertalen
2
Profielfoto van Eric NieudanProfielfoto van Quentin ForestierProfielfoto van Jonathan Van BelleProfielfoto van Arjuna Khan
10 reacties
 ·  Vertalen
Voeg een reactie toe…
 
 
If you have 5 minutes, you can take part in this small (25) question survey about cloud computing and security ! 

https://www.surveymonkey.com/s/situation_awareness_in_cloud_computing_environment 
 ·  Vertalen
1
Voeg een reactie toe…

Jonathan Van Belle

Openbaar gedeeld  - 
 
 
Dans un petit pays exotique lointain, le parti au pouvoir avait décidé de ne prendre aucun risque. Heureusement, le vote était principalement électronique et utilisait des disquettes.

Les machines de vote étaient surveillées et difficiles d'accès. Certes, avec un minimum de complicité, il aurait été possible de les modifier.

Mais le parti au pouvoir décida d'utiliser un stratagème plus simple et impliquant moins de complices : les disquettes qui serait utilisées furent artificiellement usées en les soumettant au rayonnement d'un électro-aimant. Coût : un seul et unique complice chez le transporteur.

Lors du comptage des votes, plusieurs disquettes rendirent l'âme et affichèrent des résultats farfelus ou se révélèrent illisibles. Ce qui était bien l'effet escompté. Certes, une majorité fonctionnaient encore mais la somme totale des votes n'était plus vérifiable.

Selon la procédure en place, des experts furent appelés à la rescousse pour décoder les disquettes. Des experts peu nombreux et parfaitement anonymes dont personne ne savait rien. Or, la société de consultance fournissant les experts était dirigée par un proche du parti au pouvoir. Quelques mois auparavant, il avait donc désigné le responsable du groupe d'experts qui connaissait parfaitement sa mission : il serait chargé d'agréger les chiffres, sur son ordinateur personnel, que les membres de son équipe lui transmettrait. Avant d'annoncer des résultats qui se rapprocheraient autant que possible de la réalité pour qu'ils soient plausible mais qui élimineraient toute concurrence.

La majorité des experts n'étaient pas au courant et travaillèrent donc réellement à déchiffrer des disquettes corrompues. Certaines furent déclarées illisibles. Mais le chef de notre groupe d'experts expliquait alors à l'ingénieur qu'il transférait la disquette vers un collègue qui pourrait avoir plus de chance.

Au final, les disquettes furent subtilement détruite pour empêcher tout recompte éventuel. Le chef de notre groupe d'experts annonça les résultats prévu et, même au sein de son équipe, personne ne se douta de rien.

Le parti au pouvoir confirma sa main-mise sur le pays et personne n'y trouva rien à redire. L'opposition fut muselée.

Heureusement, ce genre de choses n'arrivent que dans de lointains pays exotiques…
 ·  Vertalen
4
Voeg een reactie toe…

Jonathan Van Belle

Openbaar gedeeld  - 
 
 
The European Parliament just voted to end roaming surcharges, safeguard the open internet, and make it easier for you to get the most from your mobile.

Bravo to Pilar del Castillo and all her colleagues!

http://europa.eu/!NN89YF

#‎ConnectedContinent‬
 ·  Vertalen
1
Voeg een reactie toe…
 
http://hackathonegovwallonia.net Un hackaton sur la mobilité pour cette année ...
 ·  Vertalen
1
Profielfoto van Jonathan Van BelleProfielfoto van Benjamin Monjoie
2 reacties
 
Malheureusement non, pas le temps. Malheureusement ....
 ·  Vertalen
Voeg een reactie toe…

Jonathan Van Belle

Openbaar gedeeld  - 
 
 
C'est avec une certaine fébrilité que je vous annonce la sortie officielle de Vivere, le jdr de Space-Fantasy.

Ce jdr a fait l'objet d'une campagne de financement via la plateforme Ulule l'année dernière.
Maintenant financé et imprimé, il est disponible au prix de 25€ (hors frais de port).
Ce dernier peut être directement commendé en m'envoyant un message, mais je préfère les mails. ;)

Les versions électroniques devraient suivre très très vite, ainsi que le premier supplément pdf.

Un kit de démonstration est disponible sur le site officiel du jeu, et la page facebook annonce l'activité du jeu, les évènements auxquels je participe ainsi que l'avancement du projet. 
http://vivere-jdr.fr/

Pour les belges du coin : je serai au Made In Asia la semaine prochaine ;)
Passez me voir !
 ·  Vertalen
1
Voeg een reactie toe…
Verhaal
Introductie
Short bio
Algemene informatie
Geslacht
Man
Werk
Beroep
IT worker
Werkervaring
  • Belgium
\ No newline at end of file From 2ed55b143e33053e085f330a225c220684c87399 Mon Sep 17 00:00:00 2001 From: Grummfy Date: Sun, 20 Jul 2014 16:32:45 +0200 Subject: [PATCH 6/6] remove useless --- bridges/GooglePlusPostBridge.php | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/bridges/GooglePlusPostBridge.php b/bridges/GooglePlusPostBridge.php index b6fad070..05cffec8 100644 --- a/bridges/GooglePlusPostBridge.php +++ b/bridges/GooglePlusPostBridge.php @@ -1,17 +1,5 @@ MAX_FILE_SIZE) -// { -// $dom->clear(); -// return false; -// } -// $dom->load_file($str, $lowercase, $stripRN); -// return $dom; -//} - /** * Google Plus Post Bridge * Freely inspired by tweeter bridge