Accueil > > > PARSER FBML; COMMENT UTILISER DU CODE FBML (FACEBOOK) SANS PASSER PAR FACEBOOK
PARSER FBML; COMMENT UTILISER DU CODE FBML (FACEBOOK) SANS PASSER PAR FACEBOOK
Information sur la source
Description
Ceux qui codent des applications pour facebook savent que pour utiliser du FBML, il faut que le script tourne depuis facebook (application) ou utilise le framework Facebook Connect. Voici donc un parser qui va parser les tags FBML! Regardez les exemples fournis.
Source
- <?php
- /*
- * @Created: v2 - 15 avr. 07 - 14:25:10
- * v3 - 20 janv. 09 - 13:44:00
- * @author: blackwizzard <blackwizzard@gmail.com>
- * @project: FTL
- * @filename: class.ftlparser.v3.php
- */
-
- class fbml_parser {
-
- // declarations
- var $_instance;
- var $_vars;
-
- // Constructor
- function fbml_parser($file) {
-
- /** vars **/
- $this->_vars = array();
- $this->_vars["buffer"] = "";
- $this->_vars["log"] = array();
- $this->_vars["log"]["file"] = $file;
- $this->_vars["vars"] = array();
- $this->_vars["functionbuffer"] = array();
- $this->_vars["namespace"] = "fb";
-
- // functions
-
- $this->_vars["functionbuffer"]["loop"] = array();
- $this->_vars["functionbuffer"]["loopbuffer"] = array();
- $this->_vars["functionbuffer"]["onemptyloop"] = array();
- $this->_vars["functionbuffer"]["onemptyloopbuffer"] = array();
- $this->_vars["functionbuffer"]["show"] = array();
- $this->_vars["functionbuffer"]["showbuffer"] = array();
- $this->_vars["functionbuffer"]["section"] = array();
- $this->_vars["functionbuffer"]["sectionbuffer"] = array();
-
-
- /** read template **/
- $this->_vars["buffer"] = $this->freadFile($file);
-
- /** plugin loader **/
- $this->loadPlugins("FBML");
-
- $this->_vars["buffer"] = $this->searchtags($this->_vars["buffer"]);
-
- }
-
- /**
- * Output the parsed template
- *
- * @return Template buffer
- *
- */
- function output() {
- // apply loops
- foreach ($this->_vars["functionbuffer"]["loop"] as $loopName=>$loopOutput) {
- if ($loopOutput == "") {
- $loopOutput = $this->_vars["functionbuffer"]["onemptyloopbuffer"][$loopName];
- }
- $this->_vars["buffer"] = str_replace("<loop_$loopName/>",$loopOutput,$this->_vars["buffer"]);
- }
- //$this->parseAndApply("after");
- return $this->_vars["buffer"];
- }
-
- /**
- * Search and parse all FTL tags
- *
- * @return pre-parsed template
- *
- */
- function searchtags($in) {
- // match all tags in the form <type:name args>content</type:name> and singleton <type:name args />
- //$reg = "#<([a-z]+):(.*?)\s+(.*?)\s*(>(.*?)</\\1:\\2>|/>)#mis"; // global regex to match all tags. Including FBML.
- //$reg = "#<".$this->_vars["namespace"].":(.*?)\s+(.*?)\s*(>(.*?)</".$this->_vars["namespace"].":\\1>|/>)#mis";
- $reg = "#<".$this->_vars["namespace"].":(.*?)\s+(.*?)\s*(>(.*?)</".$this->_vars["namespace"].":\\1>|/>)#mis";
-
- if (preg_match($reg, $in)) {
-
- $in = preg_replace_callback($reg,array($this,"tagparser"),$in,-1);
- return $this->searchtags($in);
- //return $in;
- } else {
- return $in;
- }
- }
-
- /**
- * Parse a single tag
- *
- * @return the parsed tag
- *
- */
- function tagparser($array) {
- $query = $array[0];
- //$tagType = $array[1];
- $tagName = $array[1];
- $tagArgs = $array[2];
- $tagContent = $array[4];
- $argsArray = array();
-
- $tagName = str_replace("-","_",$tagName);
-
- $tagArgs = str_replace("\\\"","[[QUOTE]]",$tagArgs);
- preg_match_all("#([a-z1-9]+)\s*=(([a-z0-9_-]+)|[\"?](.[^\"]+)[\"?])#mis",$tagArgs,$args);
- foreach ($args[1] as $id=>$var) {
- $argsArray[$var] = $this->correctValue($args[2][$id]);
- }
-
- // parse nested tags
- $tagContent = $this->searchtags($tagContent);
-
-
- switch (strtolower($this->superTrim($tagName))) {
- case "loop":
- // a loop...
- // put the content in the function buffer
- $this->_vars["functionbuffer"]["loop"][$argsArray["name"]] = ""; // output of the loop is empty
- $this->_vars["functionbuffer"]["loopbuffer"][$argsArray["name"]] = $tagContent; // loop buffer
- // replace by a localization tag
- return "<loop_".$argsArray["name"]."/>";
- break;
- case "onemptyloop":
- // emptyloop...
- // put the content in the function buffer
- $this->_vars["functionbuffer"]["onemptyloop"][$argsArray["name"]] = ""; // output of the onemptyloop is empty
- $this->_vars["functionbuffer"]["onemptyloopbuffer"][$argsArray["name"]] = $tagContent; // onemptyloop buffer
- // strip the tag
- return "";
- break;
- case "section":
- // a section tag...
- // put the content in the function buffer
- $this->_vars["functionbuffer"]["section"][$argsArray["name"]] = ""; // output of the section is empty
- $this->_vars["functionbuffer"]["sectionbuffer"][$argsArray["name"]] = $tagContent; // section buffer
- // replace by a localization tag
- return "<section_".$argsArray["name"]."/>";
- break;
- case "show":
- // a show tag...
- // put the content in the function buffer
- $this->_vars["functionbuffer"]["show"][$argsArray["name"]] = ""; // output of the section is empty
- $this->_vars["functionbuffer"]["showbuffer"][$argsArray["name"]] = $tagContent; // section buffer
- // replace by a localization tag
- return "<show_".$argsArray["name"]."/>";
- break;
- default:
- // Unknown type. Probably a plugin. Else, strip the tag.
- if (function_exists("fbml_$tagName")) {
- $function = "fbml_$tagName";
- return $function($tagContent, $argsArray);
- } else {
- return $tagContent;
- }
- break;
- }
- }
-
- /**
- * Register a template variable
- *
- * @param String the variable name without the variable identifier (for variable "%var%", just "var")
- * String The value of the variable
- * @return nothing
- *
- */
- function addVar($label, $value) {
- $this->_vars["vars"][$label] = $value;
- $this->_vars["buffer"] = str_replace("%".$label."%",$value,$this->_vars["buffer"]);
- }
-
- /**
- * Register more than one template variable at a time, in an array
- *
- * @param Array an array of variables type array("var1"=>"value1","var2"=>"value2")
- * @return nothing
- */
- function addVars($array) {
- foreach ($array as $varLabel=>$varValue) {
- $this->addVar($varLabel, $varValue);
- }
- }
-
- /**
- * Loop a code section
- *
- * @param String the loop name as defined in the template
- * Array an array of variables type array("var1"=>"value1","var2"=>"value2")
- * @return Template buffer
- *
- */
- function loop($name, $array) {
- global $_PARSER;
- $buffer = $this->_vars["functionbuffer"]["loopbuffer"][$name];
- foreach ($array as $label=>$value) {
- $buffer = str_replace("%".$label."%",$value,$buffer);
- }
- $this->_vars["functionbuffer"]["loop"][$name] .= $buffer;
- }
-
- /**
- * Function used to handle the <fn:section> tag. Any call to this function will replace the current buffer with the content of the <fn:section> tag.
- *
- * @param String the name of the section to load, defined on the tag as name="[name]"
- * @return true
- */
- function useSection($sectionName) {
- global $_PARSER;
- $tmpBuffer = $this->_vars["functionbuffer"]["sectionbuffer"][$sectionName];
- $this->_vars["buffer"] = $tmpBuffer;
- $this->parseAndApply();
- return true;
- }
-
-
- /**
- * Function used to handle the <fn:show> tag. It will result as the display of the content of the tag.
- * If a tag is not called, it will be deleted before any output.
- *
- * @param String the name of the <fn:show> tag to load, defined on the tag as name="[name]"
- * @return true
- */
- function show($name) {
- global $_PARSER;
- $tmpBuffer = $this->_vars["functionbuffer"]["showbuffer"][$name];
- $this->_vars["buffer"] = str_replace("<show_$name/>",$tmpBuffer,$this->_vars["buffer"]);
- $this->parseAndApply();
- return true;
- }
-
-
- /**
- * Apply the loops, flatten the template. Used to use nested loops.
- *
- * @return null
- */
- function applyLoops() {
- foreach ($this->_vars["functionbuffer"]["loop"] as $loopName=>$loopOutput) {
- $this->_vars["buffer"] = str_replace("<loop_$loopName/>",$loopOutput,$this->_vars["buffer"]);
- }
- }
-
- function loadPlugins($type) {
- global $_FOLDERS;
- ($_FOLDERS["plugins"] == null) ? $pluginfolder="plugins/" : $pluginfolder = $_FOLDERS["plugins"];
- if ($handle = opendir($pluginfolder.$type)) {
- while (false !== ($file = readdir($handle))) {
- if ($file != "." && $file != "..") {
- if (!is_dir($pluginfolder.$type."/".$file) && strtolower($this->STRING_get_file_ext($file))=="php") {
- @include_once($pluginfolder.$type."/".$file);
- }
-
- }
- }
- closedir($handle);
- }
- }
-
- function correctValue($value) {
- $firstChar = substr($value,0,1);
- $lastChar = substr($value,strlen($value)-1,1);
- if ($firstChar == "\"" && $lastChar == "\"") {
- // remove quotes
- $value = substr($value,1,strlen($value)-2);
- }
- $value = str_replace("[[QUOTE]]","\"",$value);
- $value = str_replace("\\>",">",$value);
- return $value;
- }
-
- function freadFile($file) {
- if (!$handle = fopen ($file, "r")) {
- exit;
- }
- $contents = fread ($handle, filesize($file)+1);
- fclose($handle);
- return $contents;
- }
-
- function STRING_get_file_ext($filename) {
- if (strrpos($filename, '.') >= 1) {
- return strtolower(substr($filename, strrpos($filename, '.') + 1));
- } else {
- return "";
- }
- }
-
- function debug($label, $value) {
-
- if (is_array($value)) {
- echo "<b>$label</b> :: <div style=\"border:1px dashed #000000;margin-left:20px;\">".nl2br(str_replace(" "," ",str_replace("<","<",print_r($value,true))))."</div><br>";
- } else {
- echo "<b>$label</b> :: <div style=\"border:1px dashed #000000;margin-left:20px;\">".nl2br(str_replace(" "," ",str_replace("\t"," ",$value)))."</div><br>";
- }
-
- }
-
- function superTrim($in) {
- /** remove extra spaces, line breaks, tabs **/
- $in = str_replace("\t"," ",$in);
- $in = str_replace("\r"," ",$in);
- $in = preg_replace('/\s\s+/', ' ', trim($in));
- return $in;
- }
-
- function encodeAsArg($in) {
- $in = str_replace("\"","\\\"",$in);
- $in = str_replace("}","\\}",$in);
- return $in;
- }
- }
- ?>
<?php
/*
* @Created: v2 - 15 avr. 07 - 14:25:10
* v3 - 20 janv. 09 - 13:44:00
* @author: blackwizzard <blackwizzard@gmail.com>
* @project: FTL
* @filename: class.ftlparser.v3.php
*/
class fbml_parser {
// declarations
var $_instance;
var $_vars;
// Constructor
function fbml_parser($file) {
/** vars **/
$this->_vars = array();
$this->_vars["buffer"] = "";
$this->_vars["log"] = array();
$this->_vars["log"]["file"] = $file;
$this->_vars["vars"] = array();
$this->_vars["functionbuffer"] = array();
$this->_vars["namespace"] = "fb";
// functions
$this->_vars["functionbuffer"]["loop"] = array();
$this->_vars["functionbuffer"]["loopbuffer"] = array();
$this->_vars["functionbuffer"]["onemptyloop"] = array();
$this->_vars["functionbuffer"]["onemptyloopbuffer"] = array();
$this->_vars["functionbuffer"]["show"] = array();
$this->_vars["functionbuffer"]["showbuffer"] = array();
$this->_vars["functionbuffer"]["section"] = array();
$this->_vars["functionbuffer"]["sectionbuffer"] = array();
/** read template **/
$this->_vars["buffer"] = $this->freadFile($file);
/** plugin loader **/
$this->loadPlugins("FBML");
$this->_vars["buffer"] = $this->searchtags($this->_vars["buffer"]);
}
/**
* Output the parsed template
*
* @return Template buffer
*
*/
function output() {
// apply loops
foreach ($this->_vars["functionbuffer"]["loop"] as $loopName=>$loopOutput) {
if ($loopOutput == "") {
$loopOutput = $this->_vars["functionbuffer"]["onemptyloopbuffer"][$loopName];
}
$this->_vars["buffer"] = str_replace("<loop_$loopName/>",$loopOutput,$this->_vars["buffer"]);
}
//$this->parseAndApply("after");
return $this->_vars["buffer"];
}
/**
* Search and parse all FTL tags
*
* @return pre-parsed template
*
*/
function searchtags($in) {
// match all tags in the form <type:name args>content</type:name> and singleton <type:name args />
//$reg = "#<([a-z]+):(.*?)\s+(.*?)\s*(>(.*?)</\\1:\\2>|/>)#mis"; // global regex to match all tags. Including FBML.
//$reg = "#<".$this->_vars["namespace"].":(.*?)\s+(.*?)\s*(>(.*?)</".$this->_vars["namespace"].":\\1>|/>)#mis";
$reg = "#<".$this->_vars["namespace"].":(.*?)\s+(.*?)\s*(>(.*?)</".$this->_vars["namespace"].":\\1>|/>)#mis";
if (preg_match($reg, $in)) {
$in = preg_replace_callback($reg,array($this,"tagparser"),$in,-1);
return $this->searchtags($in);
//return $in;
} else {
return $in;
}
}
/**
* Parse a single tag
*
* @return the parsed tag
*
*/
function tagparser($array) {
$query = $array[0];
//$tagType = $array[1];
$tagName = $array[1];
$tagArgs = $array[2];
$tagContent = $array[4];
$argsArray = array();
$tagName = str_replace("-","_",$tagName);
$tagArgs = str_replace("\\\"","[[QUOTE]]",$tagArgs);
preg_match_all("#([a-z1-9]+)\s*=(([a-z0-9_-]+)|[\"?](.[^\"]+)[\"?])#mis",$tagArgs,$args);
foreach ($args[1] as $id=>$var) {
$argsArray[$var] = $this->correctValue($args[2][$id]);
}
// parse nested tags
$tagContent = $this->searchtags($tagContent);
switch (strtolower($this->superTrim($tagName))) {
case "loop":
// a loop...
// put the content in the function buffer
$this->_vars["functionbuffer"]["loop"][$argsArray["name"]] = ""; // output of the loop is empty
$this->_vars["functionbuffer"]["loopbuffer"][$argsArray["name"]] = $tagContent; // loop buffer
// replace by a localization tag
return "<loop_".$argsArray["name"]."/>";
break;
case "onemptyloop":
// emptyloop...
// put the content in the function buffer
$this->_vars["functionbuffer"]["onemptyloop"][$argsArray["name"]] = ""; // output of the onemptyloop is empty
$this->_vars["functionbuffer"]["onemptyloopbuffer"][$argsArray["name"]] = $tagContent; // onemptyloop buffer
// strip the tag
return "";
break;
case "section":
// a section tag...
// put the content in the function buffer
$this->_vars["functionbuffer"]["section"][$argsArray["name"]] = ""; // output of the section is empty
$this->_vars["functionbuffer"]["sectionbuffer"][$argsArray["name"]] = $tagContent; // section buffer
// replace by a localization tag
return "<section_".$argsArray["name"]."/>";
break;
case "show":
// a show tag...
// put the content in the function buffer
$this->_vars["functionbuffer"]["show"][$argsArray["name"]] = ""; // output of the section is empty
$this->_vars["functionbuffer"]["showbuffer"][$argsArray["name"]] = $tagContent; // section buffer
// replace by a localization tag
return "<show_".$argsArray["name"]."/>";
break;
default:
// Unknown type. Probably a plugin. Else, strip the tag.
if (function_exists("fbml_$tagName")) {
$function = "fbml_$tagName";
return $function($tagContent, $argsArray);
} else {
return $tagContent;
}
break;
}
}
/**
* Register a template variable
*
* @param String the variable name without the variable identifier (for variable "%var%", just "var")
* String The value of the variable
* @return nothing
*
*/
function addVar($label, $value) {
$this->_vars["vars"][$label] = $value;
$this->_vars["buffer"] = str_replace("%".$label."%",$value,$this->_vars["buffer"]);
}
/**
* Register more than one template variable at a time, in an array
*
* @param Array an array of variables type array("var1"=>"value1","var2"=>"value2")
* @return nothing
*/
function addVars($array) {
foreach ($array as $varLabel=>$varValue) {
$this->addVar($varLabel, $varValue);
}
}
/**
* Loop a code section
*
* @param String the loop name as defined in the template
* Array an array of variables type array("var1"=>"value1","var2"=>"value2")
* @return Template buffer
*
*/
function loop($name, $array) {
global $_PARSER;
$buffer = $this->_vars["functionbuffer"]["loopbuffer"][$name];
foreach ($array as $label=>$value) {
$buffer = str_replace("%".$label."%",$value,$buffer);
}
$this->_vars["functionbuffer"]["loop"][$name] .= $buffer;
}
/**
* Function used to handle the <fn:section> tag. Any call to this function will replace the current buffer with the content of the <fn:section> tag.
*
* @param String the name of the section to load, defined on the tag as name="[name]"
* @return true
*/
function useSection($sectionName) {
global $_PARSER;
$tmpBuffer = $this->_vars["functionbuffer"]["sectionbuffer"][$sectionName];
$this->_vars["buffer"] = $tmpBuffer;
$this->parseAndApply();
return true;
}
/**
* Function used to handle the <fn:show> tag. It will result as the display of the content of the tag.
* If a tag is not called, it will be deleted before any output.
*
* @param String the name of the <fn:show> tag to load, defined on the tag as name="[name]"
* @return true
*/
function show($name) {
global $_PARSER;
$tmpBuffer = $this->_vars["functionbuffer"]["showbuffer"][$name];
$this->_vars["buffer"] = str_replace("<show_$name/>",$tmpBuffer,$this->_vars["buffer"]);
$this->parseAndApply();
return true;
}
/**
* Apply the loops, flatten the template. Used to use nested loops.
*
* @return null
*/
function applyLoops() {
foreach ($this->_vars["functionbuffer"]["loop"] as $loopName=>$loopOutput) {
$this->_vars["buffer"] = str_replace("<loop_$loopName/>",$loopOutput,$this->_vars["buffer"]);
}
}
function loadPlugins($type) {
global $_FOLDERS;
($_FOLDERS["plugins"] == null) ? $pluginfolder="plugins/" : $pluginfolder = $_FOLDERS["plugins"];
if ($handle = opendir($pluginfolder.$type)) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
if (!is_dir($pluginfolder.$type."/".$file) && strtolower($this->STRING_get_file_ext($file))=="php") {
@include_once($pluginfolder.$type."/".$file);
}
}
}
closedir($handle);
}
}
function correctValue($value) {
$firstChar = substr($value,0,1);
$lastChar = substr($value,strlen($value)-1,1);
if ($firstChar == "\"" && $lastChar == "\"") {
// remove quotes
$value = substr($value,1,strlen($value)-2);
}
$value = str_replace("[[QUOTE]]","\"",$value);
$value = str_replace("\\>",">",$value);
return $value;
}
function freadFile($file) {
if (!$handle = fopen ($file, "r")) {
exit;
}
$contents = fread ($handle, filesize($file)+1);
fclose($handle);
return $contents;
}
function STRING_get_file_ext($filename) {
if (strrpos($filename, '.') >= 1) {
return strtolower(substr($filename, strrpos($filename, '.') + 1));
} else {
return "";
}
}
function debug($label, $value) {
if (is_array($value)) {
echo "<b>$label</b> :: <div style=\"border:1px dashed #000000;margin-left:20px;\">".nl2br(str_replace(" "," ",str_replace("<","<",print_r($value,true))))."</div><br>";
} else {
echo "<b>$label</b> :: <div style=\"border:1px dashed #000000;margin-left:20px;\">".nl2br(str_replace(" "," ",str_replace("\t"," ",$value)))."</div><br>";
}
}
function superTrim($in) {
/** remove extra spaces, line breaks, tabs **/
$in = str_replace("\t"," ",$in);
$in = str_replace("\r"," ",$in);
$in = preg_replace('/\s\s+/', ' ', trim($in));
return $in;
}
function encodeAsArg($in) {
$in = str_replace("\"","\\\"",$in);
$in = str_replace("}","\\}",$in);
return $in;
}
}
?>
Conclusion
http://code.google.com/p/open-fbml/
Historique
- 08 février 2009 22:40:59 :
- Ajout du zip (oublié)
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
[FACEBOOK] Création d'un code FBML [ par nico0650 ]
Bonjour à toutes et à tous, Je ne sais pas si je suis dans la bonne section, n'hésitez pas à m'y rediriger. J'ai créé une page Facebook comme la pl
fbml et application rss [ par cyrilrun ]
j'aimerai pouvoir intégrer dans un onglet d'une page facebook gràce au fbml une appli facebook "social rss" afin de l'enrichir graphiquement. merci
Comment parser du HTML de facon linéaire ? [ par bluemandfr ]
Bonjour à tous ! Je cherche une fonction qui me permettrait de parser du HTML contenu dans une variable $HMTL, et ce, de manière linéaire (pas d'arbo
parser xml avec php(compatible php4 php5) [ par chezcodessources ]
Bonjour je veux parser un fichier xml avec xml et je sais pas quel serveur m'hebergera(php4 ou php5) donc je veux du php qui sera compatible 4 ou 5
A la recherche d'un chat en barrre style le chat de facebook [ par landolsi10 ]
Bonjour, Après avoir beaucoup cherche sur des moteur de recherche je recherche un chat en barre style Facebook mais malheureusement aucun résultat.
faire une page qui s'allonge facon facebook [ par mailliam ]
Hello tous! j'aimerais faire que quand je clique sur un lien dans ma page, celle-ci s'allonge pour faire apparaitre des info supplémentaires, un peu
parser un flux xml provenant d'une url [ par christobal ]
bonjour, j'utilise le service de www.ipinfodb.com pour me retourner en xml certain infos du visiteur : http://www.ipinfodb.com/ip_query.php?ip=votre_a
classe générique pour parser tout type de fichier xml [ par mams004 ]
Bonjour, je cherche desespérement une classe php générique pour parser tout type de ficher XML Si vous connaisser des liens ou tuto? merci pour
mini tchat ou shoutbox [ par drakan2008 ]
salut, voila je fait un site qui contient une partie authentification pour les étudiants et pour les enseignants, je veux le réaliser de la même façon
Stream Publish et/ou publication sur le mur facebook [ par slhuilli ]
Bonjour à Tous, Je suis à la recherche d'un tuto, un exemple ou une aide.... de façon à écrire une fonction, un bout de code en PHP (utilisation impe
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
RE : CODE RE : CODE par NHenry
Cliquez pour lire la suite par NHenry CODE CODE par i8bel
Cliquez pour lire la suite par i8bel
Logiciels
974 Application Server (12.2.4.0)974 APPLICATION SERVER (12.2.4.0)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP mySongBook Player (1.0.0)MYSONGBOOK PLAYER (1.0.0)mySongBook Player est un logiciel gratuit permettant l'accès à une archive de tablatures/partitio... Cliquez pour télécharger mySongBook Player
|