Wednesday, September 21, 2016

pantoute.lol warp a front face online





http://pantoute.lol/



Un service de caricature online, cela marche grace a un browser desktop ou sur mobille.

Vous pouvez prendre une photo de vous grace a votre webcam, ou a un fichier ou une URL contenant une image.



Il est important que l image contienne une image avec un visage vue de face.



Vous pourrez enregistrer l image ainsi déformée et aussi la partager sur facebook.




Monday, March 14, 2016

PySide open file sequence widget.

J ai publie sur le site github , une widget pyside ( donc en Python ) pour avoir un dialog afficher les fichiers comme des sequences. C est surtout pratique pour l industrie de la CG.

 A File Manager Widget in PySide managing the sequence file ( FILE0001.jpg FILE 0002.jpg -> FILE[0001-0002].jpg )

  URL vers le Projet 

Mon idee serait d avoir aussi un file explorer ou file browser affichant des sequences de fichiers.


on peut aussi renommer les sequences d images.


 J ai utilise https://github.com/aldergren/pyfileseq pour les dependances merci a son auteur ( Niklas Aldergren )

Tuesday, March 1, 2016

Sql 2 Json Schema

Voici un petit script qui fait une introspection de la base de donnee , ici wordpress , et qui genere des fichiers json schema.


class SchemaProvider {
        var $_tables = array();
  var $_fields = array();
  
  function __construct($database)
  {
   mysql_connect("localhost", "root", "");
   
   $this->fetchTables($database);
   foreach( $this->_tables as $t )
   {
    $this->_fields[$t] = $this->fetchFields($t);
   }
  }
  
  function fetchTables($database)
  {
   $result = mysql_list_tables($database);
   $num_rows = mysql_num_rows($result);
   $this->_tables = array();
   for ($i = 0; $i < $num_rows; $i++) {
      $this->_tables []= mysql_tablename($result, $i);
   }
   mysql_free_result($result);
  }
  
  function fetchFields( $table)
  {
   $result = array();
  
  
   $sql = mysql_query("SELECT * FROM $table LIMIT 1");
   for ($i = 0; $i < mysql_num_fields($sql); $i++) {
    $meta = mysql_fetch_field($sql, $i);
    $result[] = $meta;
   }
   /*
   $resultdb = mysql_query ("SHOW COLUMNS FROM ". $table);
   while ($row = mysql_fetch_array($resultdb, MYSQL_NUM)) {
    
    $result[] = new FieldStructure( $row );
   }
   mysql_free_result($resultdb);
   */
   return $result;
  }
};


class SchemaToJsonSchema {

 var $jsonschemaarray = array();
 function __construct( $schema )
 {
   foreach( $schema as $key=>$s )
   {
     $this->jsonschemaarray[$key] = $this->convertFromTable( $s );
   }
 }
 
 function get_type_json( $type ) {
  switch( $type ) 
  {
  case "int":
   return "integer";
  case "blog":
   return "string";
  case "datetime":
   return "string";
  default:
   return $type;
  }
 }
 
 function convertFromTable( $tableschema )
 {
    $result = array();
    foreach( $tableschema as $schema_item )
    {
      $type = $this->get_type_json( $schema_item->type );
  $result[ $schema_item->name ] = array( "type"=> $this->get_type_json( $schema_item->type ) ); 
  
         if ( $schema_item->type  == "string" ) {
    $result[ $schema_item->name ]["maxLength"] = $schema_item->max_length; 
    }
   
   if ( $schema_item->type  == "datetime" ) {
   $result[ $schema_item->name ]["format"] = "date-time"; 
   }
   
   if ( $schema_item->type == "int" && $schema_item->unsigned  == 1 ) {
   $result[ $schema_item->name ]["minimum"] = 0; 
   }
   
   
   
   if ( empty( $schema_item->desc ) == false ) {
   $result[ $schema_item->name ]["description"] = $schema_item->desc; 
   }
   }
 return $result;
 }
 
 function get_jsonschema($table)
 {
   $result = array();
   $result["\$schema"] = "http://json-schema.org/draft-04/schema#";
      $result["title"] = $table;
      $result["description"] = $table;
      $result["type"] = "object";
      $result["properties"] = $this->jsonschemaarray[$table];
   return $result;
   }
};


$database = "wordpress";
$schema = new SchemaProvider($database);
$convert = new SchemaToJsonSchema( $schema->_fields );

//print_r($convert->jsonschemaarray);
if ( is_dir ("schema\\$database") == false ) {
 mkdir("schema\\$database");
}
foreach( $convert->jsonschemaarray as $key=>$t){
  file_put_contents("schema\\$database\\$key.json" ,json_encode($convert->get_jsonschema($key),JSON_PRETTY_PRINT));  
}
//print_r($schema);

Tuesday, October 18, 2011

Sunday, October 2, 2011

book wpf tactile Mitsu.


Un post pour diffuser une version modifier de l'excellent control Wpf de Mitsu Furuta, pour le rendre tactile.

La version fonctionne bien que je ne suis pas sur et certain que ma modification soit pleinement correct.
Si vous avez une remarque n'hesitez pas a me le dire.



J'ai ajouté a Book.cs les evenements de l'API tactile:

public Book()
{
[...]
IsManipulationEnabled = true;
ManipulationCompleted += Image_ManipulationCompleted;
ManipulationDelta += Image_ManipulationDelta;
}

Dans le fichier BookPage.xaml.cs , j'ai ajouté les methodes:

ContentControl_TouchEnter
ContentControl_TouchDown
ContentControl_TouchMove

Voici l'adresse de l'archive:













Sunday, June 19, 2011

Microsoft release enfin le sdk pour la kinect

Microsoft release enfin le sdk pour le kinect.

http://research.microsoft.com/kinectsdk

Suite a l'apparition de la version opensource:
http://www.openni.org/

Microsoft nous fait l'honneur de releaser la version sdk de la kinect
et j'ai testé ca marche :).

Sunday, November 8, 2009

__autoload l'include killer de php

Php dans sa version 5 a une fonctionnalité tres intérressante __autoLoad.

Voici une description de cette fonctionnalité :
Vous pouvez définir la fonction __autoload() qui va automatiquement être appelée si une classe n'est pas encore définie au moment de son utilisation. Grâce à elle, vous avez une dernière chance pour inclure une définition de classe, avant que PHP ne déclare une erreur.

L'idée est de faire un seul fichier php qui va gérer le lien entre nom de classe et aussi fichier ou cette classe est déclarée.
Apres dans toute votre application vous n'aurez besoin de d'appeller que ce meme et seul fichier.
Ainsi vous optimiserez le chargement de classe php dynamiquement.

Vous le code permettant de génerer le fameux fichier ici class/autoload, en imaginant que vos classes sont dans le repertoire class:

$phpFile = scandir("class");

$result ="foreach($phpFile as $filename)
{
if ($filename != ".." && $filename != ".")
{
$content = file_get_contents("class/".$filename);
while(true)
{
if(eregi("class ([a-z_A-Z0-9]+)([ \n\t]+){",$content,$regs))
{
$result .= "\$";
$result .= "arrayClassFilename[\"".$regs[1]."\"] = \"".$filename."\";\n";
$content = substr(stristr($content,"class "),5);
}
else
{
if(eregi("class ([a-z_A-Z0-9]+)([ \n\t]*) extend",$content,$regs))
{
$result .= "\$";
$result .= "arrayClassFilename[\"".$regs[1]."\"] = \"".$filename."\";\n";
$content = substr(stristr($content,"class "),5);
}
else
{
break;
}
}
}
}


}
$result.="\nfunction __autoload(\$class_name) {
global \$arrayClassFilename;
if (isset(\$arrayClassFilename[\$class_name]))
{
require_once \"class/\".\$arrayClassFilename[\$class_name];
}
}
?>";
file_put_contents("class/autoload.php",$result);
?>