PokiPoki : un wrapper bureautique pour le PHP

Salut la jeunesse !! Rire

Je profite de ce week end strictement pourri et  de la belle gueule de bois qui me cloue devant le pc pour partager l’un de mes petits projets stupides avec vous :  j’ai nommé pokipoki !

PokiPoki c’est quoi ?

PokiPoki est un programme en C++ vous permettant de transformer n’importe quel script PHP/site Web, et autres joyeuseté en html5/css3/JavaScript etc… en application bureautique et ce de manière complètement transparente :

image

Quel est l’intérêt ?

Les intérêts d’une transformation de script web en application bureautique sont multiples :

– Plus besoin de connaissances particulières pour développer en bureautique en dehors des langages web courants

– Possibilité de porter un script habituellement hébergé par un serveur en locale

– Plus besoin du net pour accéder au script

– Possibilité d’interagir avec le bureau (modifier des clé de registres, notifier dans la barre d’icone, démarrer avec le système d’exploitation, manipuler des fichiers, exécuter des commandes systèmes etc…)

– Possibilité de pousser l’interface graphique du programme bureautique avec un peu de css

etc..etc..

Ok mais quels avantages par rapport à un wamp ou un easy PHP?

Premièrement le programme est gratuit, portable, sans installation et exécutable/compilable sur windows, linux et macOs.

Le programme propose d’afficher le script de manière totalement transparente, aucune possibilité de faire la différence avec un programme bureautique standard

Tout est personnalisable à l’aide d’un fichier de configuration json et d’une librairie javascript spéciale : possibilité d’intervenir sur la fenêtres (bordure par défaut ou non,transparence, déplacement, modification de taille, de titre, d’icones, splash screen personnalisé …).

image

Possibilité d’utiliser certaines fonctions du bureau a partir d’une librairie javascript intégrée (ex App.notify(‘hello world’) affichera une notification sur le bureau etc.

Le programme utilise un serveur lighttpd pour fonctionner ce qui le rend rapide et peu consommateur de ressources.

PokiPoki est environ 5 fois plus léger qu’un Wamp traditionnel et respecte une structure claire qui permet simultanément de bien séparer le code web de pokipoki et de personnaliser la partie serveur selon vos besoin.

Par défaut le package ne contient pas MySQL (qui est lourd, consommateur de ressources, long à lancer et peu pertinent sur une application bureautique, utilisez plutôt sqlite ou autres) cependant il est possible d’ajouter le dossier mysql à la racine du programme si vous souhaitez qu’il se lance automatiquement avec ce dernier.

Un binaire pour windows est déjà dispo, un binaire linux ne devrait pas tarder (une fois que j’aurais réinstallé ma VM) en revanche pour MacOs j’aurais besoin d’une âme charitable pour compiler car je ne possède pas de Mac.

 

Page projet, doc et téléchargement :  http://projet.idleman.fr/pokipoki/
N’hésitez pas à consulter cette page pour bien commencer.

Bien à vous Tire la langue

Idle

58 réactions au sujet de « PokiPoki : un wrapper bureautique pour le PHP »

  1. Belotte Réponse

    Si tu as tous les fichier et qu’il faut juste compiler, je peux te le faire 😉

    • Idleman Auteur ArticleRéponse

      Oui j’ai les fichier, c’est un projet Qt par contre donc pour compiler le plus simple c’est d’installer Qt creator (si tu ne l’a pas déjà), d’ouvrir le projet et de cliquer sur “build”, tu es sur mac ? Tu pense pouvoir le faire ? 🙂

        • Idleman Auteur ArticleRéponse

          Je t’envoi ça dans la semaine, faut que je verifie que j’ai pas laissé de chemin en dur avec des “exe” dans le code et que je trouve les binaire de lighttpd et php pour mac histoire qu’on puisse tester rapidemment 🙂

          • Alexandre Cartier

            Pour lighttpd et php laisse faire homebrew pour l’installation.

            J’attend avec impatience la version mac et linux.

            Si je peux être testeur.

  2. Chaopale Lamecarlate Réponse

    Bon. Ben ton truc, là, me donne très envie de migrer mon appli d’inventaire de cartes Magic de MySQL vers sqlite, et d’en faire une version bureautique (avec synchro et tout le bouzin). Vais-je arriver à me motiver assez ?

    (c’est AkaiKen au fait, j’ai changé de pseudo)

    • Idleman Auteur ArticleRéponse

      Ha ben oui lamecarlate ça me disait quelque chose ^^. Étrange ce nouveau pseudo :), ça viens d’ou ?
      Pour pokipoki tu peux l’utiliser avec MySQL, c’est juste déconseillé MySQL étant gourmand en temps en ressources et lent à démarrer (quelques secondes a peine mais pour un programme bureautique ça fait chier).

      • Chaopale Lamecarlate Réponse

        Lamecarlate (lame écarlate) est la traduction littérale (et littéraire) de AkaiKen, le sabre rouge. J’en avais un peu marre de ce pseudo imprononçable et aux sonorités dures. Et je voulais un couple prénom/nom qui sonne bien 🙂 Chaopale est une récupération, c’est mon tout premier pseudo.

        Ouip, je sais que je peux utiliser MySQL avec pokipoki, mais j’avais envie de changer un peu, j’ai l’impression que SQLite est plus léger, plus maniable, et puis la bdd est sous forme de fichier facilement transportable, je trouve ça chouette.

        Et là je galère un peu ma race pour convertir, j’ai une bdd très grosse et lourde. J’ai fait un dump avec phpMyAdmin, j’ai trouvé des astuces pour recréer correctement les tables, mais l’insertion de données me fait péter plein d’erreurs, comme des histoires de primary key qui semblent n’être pas uniques alors que si :'(

        • Idleman Auteur ArticleRéponse

          Arf ya pas un convertisseur mysql sqlite qui traine sur le web ? Ca m’étonne que personne n’ai créé un truc de ce genre 🙂

          • Chaopale Lamecarlate

            Beh en fait ça semble bon, j’ai eu des erreurs affichées à l’insertion mais tout fonctionne. C’est essentiellement pour l’écriture de la structure qu’il y avait des changements à faire. Je me suis aidée de ça : http://livecode.byu.edu/database/mysql-sqliteExport.php (la partie 8).

            Et puis mon code était déjà en active record, donc j’ai juste eu deux changements mineurs à faire, des trucs MySQL qui étaient plus ou moins en dur.

            Donc… prochaine étape : test de pokipoki ! Je te tiens au courant. (si ça marche, j’aurai une grosse étape de développement de synchro à faire, ça va pas rigoler)

          • Idleman Auteur Article

            Okay tiens moi au jus tu dois être dans l’un des premiers utilisateurs du soft (tu risque d’essuyer les plâtres ^^)

          • Chaopale Lamecarlate

            Premier rapport, chef !

            Sous Windows XP ça marche pas, déjà. Erreur 500 des familles. Mais tu n’as sans doute pas prévu le cas, d’autant que XP meurt bientôt (mais comme c’est léger, c’est ça que j’ai en VM, dans la vraie vie je suis sous GNU/Linux).

            Ensuite, sous Windows 7, yep, ça se lance correctement. Enfin… pas vraiment parce que mon application (basée sur CodeIgniter) ne trouve pas le driver PDO. Un peu bizarre… Je cherche. Mais j’ai une demande d’amélioration : si tu peux ajouter xdebug dans le bundle ça serait chouette, parce que les fatal errors sans sauts de ligne ça pique un peu.

          • Idleman Auteur Article

            Yop !! 🙂 Merci pour ce retour 😀 !
            T’as quoi exactement comme erreur sous xp (il est vraie que je n’ai pas testé sur un os aussi vieux ^^)

            Pour le driver pdo ça fonctionne comme un serveur normal, tu peux l’activer en supprimant le “;” dans le fichier php/php.ini devant la dll du pdo

            extension=php_pdo_sqlite.dll (celle là c’est celle de sqlite mais tu dois évidemment décocher pour le sgbd qui te convient) essaye et dis moi si ça fonctionne (normalement oui, j’arrive a faire tourner pdo sqlite sur une appli du taff)

            Pour xdebug je vais voir ça, si ça prends pas trop de place (j’essaye de réduire la taille) je le mettrais en natif, sinon je le proposerais en plugin comme mysql

          • Chaopale Lamecarlate

            Pour Windows XP, simplement “500 System Error”, le truc classique, écriture noire sur fond blanc, sans autre info (le texte est de mémoire, là je suis sous 7 et je n’ai pas XP sous les yeux).

            Et donc j’ai décommenté extension=php_pdo_sqlite.dll, tout de suite ça marche mieux ! Mais je pense que ça devrait être décommenté par défaut, ou bien expliqué, parce que tu disais dans ton article que SQLite était géré nativement par pokipoki. Ou bien tu voulais dire par là les fonctions sqlite de php, comme les mysql_query() de MySQL ?

            Pour l’instant aucune de mes images ne s’affichent, et je n’ai pas l’impression que mon .htaccess soit pris en compte 😀 (mais bon est-ce que lighttpd gère les .htaccess ? Si non, par quoi je remplace ?).

            Comme je suis plutôt frontend comme dev’, j’ai l’habitude de faire clic-droit > Inspecter dans Firebug, ça me maaaaanque – surtout pour mon histoire d’images manquantes. Mais je vais me débrouiller, merci en tout cas pour pokipoki, je sens que ça va m’être très utile !

            A noter que quand je lance pokipoki et que j’appelle http://127.0.0.1:8071/ dans mon navigateur, j’ai bien toutes les images, et mes scripts js (qui semblent pas être tous lancés dans pokipoki même). Donc je ne peux même pas reproduire le problème dans un environnement que je sais débugger. Ai-je moyen de logguer sévèrement ? Genre les appels de scripts, etc.

          • Idleman Auteur Article

            Bizarre pour xp, je vais mater sur le web mais j’ai peu d’espoir ^^ (en même temps…xp… :p )

            J’ai regardé pour xdebug il fait 150 ko et peut être intégré assez simplement dans le bouzin (une dll à ajouter et une ligne a placer dans le php.ini) je vais voir pour arranger ça ce soir.

            Cela dit comme pokipoki est sensé être utilisé comme “wrapper de prod” et pas pour le débug, ça peut être plus judicieux de faire tout le dev sur wamp ou autres puis de wrapper via pokipoki ou fois que tout fonctionne niquel, comme ça on allège le programme au max.

            J’ai dit que ça fonctionnait avec sqlite par défaut, mais pas forcement via PDo :p, bon après dans le fond tu as raison, mais le soucis c’est qu’on pourrait me demander de dé-commenter aussi pgsql, ms etc… ce qui alourdis le chargement alors que l’utilisateur n’en a pas vraiment besoin, c’est pour ça que je laisse l’utilisateur faire ça au cas par cas dans le php.ini.

            lighttpd ne gère pas les .htaccess (c’est un format spécifique à apache) pour lighttpd il faut bidouiller le fichier de conf situé dans lighttpd\conf\lighttpd.conf (après les instructions à mettre varient en fonction de ce que tu veux faire : url rewriting –> url.rewrite-once = ( “” => “” ) cf http://redmine.lighttpd.net/projects/1/wiki/Docs_ModRewrite)

            Effectivement tu peux déboguer direct depuis ton navigateur à l’adresse http://localhost:portspecifie mais tu l’avais devinée toute seule.

            Dans lighttpd\logs tu as un fichier error.log a ta dispo normalement, pour les images essaye de voir si ce n’est pas un pb de cache (en mettant des vidage de cache html/php partout par exemple) qui serait géré différemment sur firefox et pokipoki.

            Si ça ne fonctionne toujours pas, peux tu m’envoyer ton script que je fasse mes tests de mon coté ? Merci encore pour ton analyse

        • Chaopale Lamecarlate Réponse

          Yep, ne t’embête pas avec xdebug, puisque finalement tu m’as expliqué comment utiliser sqlite 🙂

          Mais comme je t’ai dit, les images s’affichent bien dans le navigateur, mais pas dans pokipoki (en revanche css et js c’est tout bon finalement). Le fichier error.log ne m’apprend pas grand chose, il contient essentiellement des “(log.c.166) server started” et des “mod_cgi.c.601) cgi died, pid: 2568”. D’ailleurs, le dossier logs est à la racine, pas dans lighttpd 😉

          Je cherche encore un peu pour cette histoire de cache, et si ça passe pas, je t’envoie mon pokipoki complet dans l’aprèm.

  3. gg Réponse

    Salut, je ne comprend pas comment utiliser ton logiciel, je met où mon fichier php par exemple ?

  4. jerry wham Réponse

    Mais c’est très très bon ça ! M’en vais le télécharger de ce pas. <3 <3 <3
    Faudrait voir si on peut gérer un mode désynchronisé grâce à ça, pour une appli avec bdd…

    Merci encore une fois pour le partage 😀

  5. maditnerd Réponse

    Tiens ça tombe super bien, j’étais justement en train de bidouiller une appli web embarqué sous Windows.
    Une version avec GUI de rasputty (le but étant de faire une application embarqué qui détecte les Raspberry Pi sur le Réseau et que l’on puissent s’y connecter avec putty directement depuis l’interface)

    J’ai d’ailleurs découvert que php a un serveur web (comme python en faite) intégré.
    php.exe -S localhost:8000 -t “c:\web”

    Mais bon c’est un peu galérien comme système.

    • Idleman Auteur ArticleRéponse

      Il faut d’ailleurs que je teste rasputty 🙂 (excellent ce nom d’ailleurs) !!
      J’avais vu le mode serveur php, j’étais même partis sur le principe de l’utiliser en lieu et place de lighttpd pour gagner de la place, mais j’ai peur que ce soit très basique et que ça ne gère pas plusieurs des modes “classiques” utilisés dans les projets web (url rewrite, logs, indexfile, streaming, vhost, evasive, proxy, webdav ) et autres joyeusetés.

      Sinon à long terme je peux en développer un minimaliste directement dans l’exe, Qt proposant beaucoup de fonctions pour faciliter le truc, mais encore une fois il faudra que je prévois l’intégration des modes et ça risque d’être long et chiant 🙂

      Je testerais cela dit 🙂

    • Idleman Auteur ArticleRéponse

      Oui c’est exactement sur le même principe, mais avec php en lieu et place de nodeJs, avec un lighttpd intégré, et sans les bugs de transparences qu’on peux retrouver sur nodewebkit (c’est presque ce qui me gênait le plus ^^, obligé de faire des interfaces carrées c’est chiant).

      J’ai reussi a ‘minstaller une vm mac sur mon pc, je vais tenter la compile comme ça histoire d’eviter de faire chier tout le monde à chaque maj ^^, si ça ne fonctionne pas je te demanderais peut être ton coup de pouce :p

  6. GUERON Réponse

    Très sympa.
    Reste à proposer un switch entre “live” et “local” en fonction de la disponibilité de la connexion internet / au site web.
    Bon on doit pouvoir faire ça via l’app elle même, mais ça serait sympa que ça soit géré directement dans pokipoki.
    Après, chacun peut trouver facilement des outils pour synchroniser un dossier local avec un dossier web… Et la boucle est bouclée.

    Super cool comme partage, comme d’hab. Bravo. 😀

    • Idleman Auteur ArticleRéponse

      Merci :), je pense laisser toute la partie code metier aux applications en elle même, pokipoki sert uniquement de wrapper, le but étant qu’il reste suffisemment générique pour tous types d’applications.

      Après rien n’empeche de greffer des “plugins” spécial pokipoki dans le dossier app pour gerer une eventuelle synchro.

  7. michael Réponse

    Bonjour

    superbe ce truc, ca fonctionne plutôt bien a une exception prés.. les images, impossible d’afficher une image que ce soit une image dans un répertoire spécifique de app ou bien avec une adresse web complète..

    une idée ?

    • Idleman Auteur ArticleRéponse

      Tu passe par un proxy en particulier ? Ca ne fonctionne pas sur les images locales et distantes ?

      • michael Réponse

        non pas de proxy…
        et oui distante ou locales, aucune images ne passent 🙁

        • Idleman Auteur ArticleRéponse

          Vraiment étrange, ça fait ça chez quelques visiteurs mais évidemment pas chez moi (ça serait trop simple a debugger si je pouvais reproduire le bug) ça te dérange si on continue par mail qu’on puisse faire des tests ensemble ?

          • michael

            non aucun souci.. tu dois avoir mon mail dans la base du site 🙂

  8. Christophe Z Réponse

    Hello,

    Préviens dès que tu as une version pour MAC, je teste sans problème.

    Bonne continuation

    Christophe

  9. Djé RONIMO Réponse

    Bonjour,
    merci et bravo pour ce wrapper extrêmement pratique. 😀
    2 questions :
    – l’affichage des images en JPG ne semble pas être opérationnel. J’ai tenté d’afficher un JPG et un PNG dans l’exemple fourni : seule l’image en PNG est affichée, et cela malgré un “vidage” du cache comme mentionné dans un des posts précédents. De même, l’icône de l’application apparaît lorsqu’on la transforme en PNG. (NB: Les images s’affichent néanmoins correctement dans un navigateur “classique” !)
    – comment fonctionne le mode url-rewriting de lighttpd ? J’ai tenté de modifier le fichier “lighttpd.conf”, mais il est automatiquement retraité par, j’imagine, les paramètres du fichier json. Doit-on mettre la règle de réécriture dans le json ? Merci.

    • Idleman Auteur ArticleRéponse

      Oui pour les jpg j’y travaille, visiblement c’est uen librairie a ajouter a qt (c’est un peu con de ne pas avoir intégré ça dans leurs lib je trouve mais bon…)

      Concernant le rewrite, c’est le fonctionnement classique de lighttpd, toute la doc ici : http://redmine.lighttpd.net/projects/1/wiki/Docs_ModRewrite
      sauf que tu dois modifier le .tpl et non directement le .conf qui est regénéré a partir du .tpl a chaque redémarrage 🙂

  10. Djé RONIMO Réponse

    Bonjour, je viens de tester cette super appli. J’adore <3 !
    C'est très pratique pour créer facilement une petite application portable.
    Petites questions de précision :
    – le mode url rewriting est-il activé sous lighttpd ? Si oui, comment l'utiliser, car en modifiant le fichier lighttph.conf, il est automatiquement remis à zéro par les arguments contenus dans le JSON ?
    Merci de votre réponse. Bonne semaine.

    • Idleman Auteur ArticleRéponse

      Il te faut modifier le ficher lighttpd.tpl.conf qui sert de modèle au fichier lighttpd.conf lors du démarrage 🙂

  11. JB Réponse

    Bonjour,

    Vraiment super PokiPoki dans le principe !
    Par contre moi j’ai un soucis, il ne se lance pas …
    Je suis sur Win 7 pro, mais dans une vm sur un serveur esxi. Lorsque je lance l’application, avec le site en exemple, je vois le splashscreen et plus rien … L’icone est bien dans ma barre des taches, les processus dans le gestionnaire des tâches mais c’est tout.
    Serait-ce un problème avec QT et ma VM ? J’essayerai de mon pc de bureau dès que je peux pour voir.
    Quoi qu’il en soit, beau projet 😉 Merci !

    • Idleman Auteur ArticleRéponse

      Je pense que c’est un soucis de php-cgi.exe et de lighttpd.exe qui sont en 32bits, j’ai le soucis sur mon nouveau pc aussi, je cherche une solution, remplacer le php-cgi.exe ne pause pas de problème masis je ne trouve pas l’équivalent 64bits de lighttpd.exe

  12. jerry wham Réponse

    En plein test de pokipoki, je ne parviens pas à lire (ou télécharger) un fichier pdf. Xo

    J’ai beau modifier la conf (tpl.conf), en ajoutant le mappage mime et tous les modules possibles, ajouter le script de mozilla pour lire les pdf dans le navigateur, rien n’y fait. Si je mets un lien direct, rien ne se passe. Si je mets un lien vers le viewer de mozilla, il reste désespérément vierge… T_T

    Tu aurais une piste à me donner ? :siffle:

    • Idleman Auteur ArticleRéponse

      étrange …. que se passe t’il quand tu lance pokipoki mais que tu appelle ta page via un navigateur classique ?

  13. theptitprince Réponse

    Bonjour Idleman!
    Après l’avoir téléchargé et essayé sur différentes ordinateur (win XP, vista et 7), je me retrouver perpétuellement avec une erreur 500…?
    Suis-je un cas isolé?
    Le projet m’avait pourtant bien intéressant 🙂

  14. demenvil Réponse

    Salut à tous !
    D’abord merci pour ce petit utilitaire fort pratique ! 🙂
    j’ai cependant une question, est-ce qu’une version pour la pomme à été compilé ?
    Savoir si il y avait moyen de me la faire passer ?
    Je ne développe quand php, j’ai téléchargé les sources mais ça me semble compliqué de compiler du c++ en tant que néophyte..

    Merci bien.

    • Idleman Auteur ArticleRéponse

      Malheureusement toujours pas, le programme est fait avec qt, donc compilable facilement pour la pomme, mais il utilise lighttpd comme ressources, or je n’arrive pas a trouver une evrsion portable de lighttpd pour mac

  15. Demenvil Réponse

    Marf..
    Et remplacer donc lighttpd par Apache ?
    Nous perdrons donc en rapidité d’exécution et en temps de chargement ? ( de combien ?)
    Mais nous gagnerons en compatibilité ?
    Merci.

    • Idleman Auteur ArticleRéponse

      la perte de performance serais minime, le truc c’est de trouver le binaire executable déja compilé pour l’os, et entierement indépendant du système, et ça c’est jamais evident avec les serveurs http.

  16. Chaopale Lamecarlate Réponse

    Hello hello ! J’ai parlé de PokiPoki sur Zeste de Savoir, je sais pas si tu connais : https://zestedesavoir.com ; c’était sur le forum, quelqu’un qui cherchait à mettre son site sur clé USB. Et on m’a demandé en retour si tu ne voudrais pas faire une présentation en bonne et due forme de PokiPoki sur ZdS, écrire un article, en fait. Est-ce que ça t’intéresserait ?

    (moi j’ai pas avancé depuis qu’on en avait parlé… j’ai un peu laissé de côté, parce que j’ai beaucoup à faire sur l’application web que je veux mettre dedans de base…)

    Que ta journée soit ensoleillée ! (en tout cas plus que la mienne, ici c’est gris et froid)

    • Idleman Auteur ArticleRéponse

      Hey ! Ça en faisait un bail !! 😀 Quoi de neuf ?
      Ben oui pourquoi pas ! Cela dit j’aurais aimé le revoir un tantinet pour le porter sur linux/mac avant d’en parler partout, parce que pour le moment j’ai l’air d’un con avec mon conteneur multiplateforme qui ne fonctionne que sous Windows XD !

      Mais bon comme j’aurais jamais le temps autant faire un tit tuto tout de suite, je vais essayer de trouver un we pour le faire.
      Cela dit si l’envie te viens de l’écrire d’ici a ce que je me réveille n’hésite pas :D, je suis un tout petit peu dans le jus entre la maison a retaper, le projet yana, le blog et ma parenthèse de vie :p (dis donc il à l’air tatillon le mec du staff si on peux même plus dire pote sans balancer la description wikipedia j’imagine l’enfer pour écrire un tuto sans se faire tacler :D)

  17. Golg Réponse

    Salut !
    Est-ce que ce dernier est facilement compilable pour une utilisation uniquement sous linux ?

Répondre à jerry wham Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.