:-y

Filtre calendrier ICS

jeudi 27 juin 2019 - 19:06

Quand l'administration utilise Google Calendar pour gérer les plannings avec un seul calendrier, ce n'est pas simple d'ajouter juste les événements qui nous intéressent.
On m'a demandé si c'était possible et après une rapide recherche, je n'ai rien trouvé qui permettait de faire ça : je n'ai pas réussi à utiliser https://icalfilter.com/

Je serai curieux de savoir si c'est possible de le faire avec un https://framagenda.org mais en utilisant un parseur et un formatteur PHP c'est plutôt simple.

Si ça peut être utile à d'autres.

Dans le fichier composer.json

{
"require": {
"johngrogg/ics-parser": "^2",
"jsvrcek/ics": "*@dev"
}
}


On installe tout ce qu'il faut avec
composer install


Dans un fichier index.php

<?php 
  
require_once 'vendor/autoload.php';
  use 
ICal\ICal;
  use 
Jsvrcek\ICS\Model\Calendar;
  use 
Jsvrcek\ICS\Model\CalendarEvent;
  use 
Jsvrcek\ICS\Model\Relationship\Attendee;
  use 
Jsvrcek\ICS\Model\Relationship\Organizer;
  
  use 
Jsvrcek\ICS\Utility\Formatter;
  use 
Jsvrcek\ICS\CalendarStream;
  use 
Jsvrcek\ICS\CalendarExport;

  try {
      
      
$ical = new ICal('https://raw.githubusercontent.com/u01jmg3/ics-parser/master/examples/ICal.ics', array(
         
'defaultSpan'                 => 2,     // Default value
         
'defaultTimeZone'             => 'UTC',
         
'defaultWeekStart'            => 'MO',  // Default value
         
'disableCharacterReplacement' => false// Default value
         
'filterDaysAfter'             => null,  // Default value
         
'filterDaysBefore'            => null,  // Default value
         
'replaceWindowsTimeZoneIds'   => false// Default value
         
'skipRecurrence'              => false// Default value
         
'useTimeZoneWithRRules'       => false// Default value
         
));
  } catch (\
Exception $e) {
      die(
$e);
  }
  
  
$forceTimeZone false;

  
$newCal = new Calendar();
  
$newCal->setProdId($ical->cal['VCALENDAR']['PRODID']);
  
$newCal->setVersion($ical->cal['VCALENDAR']['VERSION']);
  
$newCal->setName($ical->cal['VCALENDAR']['X-WR-CALNAME']);
  
$newCal->setCalendarScale($ical->cal['VCALENDAR']['CALSCALE']);
  
$newCal->setMethod($ical->cal['VCALENDAR']['METHOD']);
  
$newCal->setCustomHeaders(["X-WR-TIMEZONE" => $ical->cal['VCALENDAR']['X-WR-TIMEZONE']]);
  
  
$events $ical->events();
  foreach (
$events as $event) {
      
// add custom filter here
      
if (preg_match('/.*DST*/'$event->summary)) {
          
$newEvent = new CalendarEvent();
          
$newEvent->setStart(new DateTime($event->dtstart));
          
$newEvent->setEnd(new DateTime($event->dtend));
          
$newEvent->setSummary($event->summary);
          
$newEvent->setUid($event->uid);
          
$newEvent->setStatus($event->status);
          
$newCal->addEvent($newEvent);
      }
  }
  
  
$calendarExport = new CalendarExport(new CalendarStream, new Formatter());
  
$calendarExport->addCalendar($newCal);

  
header('Content-type: text/calendar; charset=utf-8');
  echo 
$calendarExport->getStream();
 
?>


KrISS tuto : html, css, php et maintenant javascript

jeudi 07 février 2019 - 19:02

Cela faisait plusieurs années que j'utilisais une présentation javascript d'une autre personne alors qu'il y avait des choses du style

<SCRIPT LANGUAGE="JavaScript">...</SCRIPT>

Autant vous dire que je n'étais pas à l'aise : l'utilisation des majuscules pour les balises et l'attribut language... ça pique un peu les yeux. J'avais apporté quelques modifications sur le fichier PDF avec Master PDF editor (qui depuis la version 5 n'est plus vraiment gratuit pour exporter ses modifications mais qui est heureusement toujours disponible en version 4.3.89). D'ailleurs si vous connaissez une alternative je suis preneur...

Heureusement maintenant c'est fini parce qu'après HTML/CSS et PHP j'ai enfin agrémenter KrISS tuto de JS !

Autant vous dire que je suis bien content et mon cours est maintenant complet, uniforme et interactif grâce aux différentes consoles que j'ai adaptées pour être utilisées directement dans le navigateur avec l'affichage du code HTML/CSS et son interprétation par le navigateur, l'affichage de la console JS et la sortie du code PHP. C'est vraiment agréable pour la présentation, tout se fait dans le navigateur !

En plus je peux générer le PDF de mon cours grâce à l'attribut print-pdf dans l'url. Par contre je ne sais pas exactement pourquoi mais quand je l'imprime avec Firefox, il me génère une page blanche entre chaque diapo et j'ai donc cherché à les supprimer en ligne de commande.

J'avais déjà eu le soucis, et j'avais utilisé pdftk pour résoudre ce problème

pdftk A=fichier.pdf cat Aodd output fichier_impair.pdf

Sauf que pdftk ne s'installe plus facilement avec apt à cause de certaines dépendances. A priori il existe une version java mais je n'avais pas envie d'ajouter une source tiers pour ça et j'ai donc cherché une alternative.

Première tentative avec psselect:

pdftops fichier.pdf; psselect -o fichier.ps > fichier_impair.ps; ps2pdf fichier_impair.ps

L'option -o pour odd (impair) et -e pour even (pair).
Taille du fichier d'origine 611k, taille du fichier final 6.6M !!!
À part le fait qu'au final j'ai bien le résultat attendu, ce n'est vraiment pas une bonne solution, les conversions pdf/ps/pdf sont super longues, la création d'un fichier PS inutile et la taille du finale du fichier x10 ce n'est pas possible...

Deuxième tentative avec qpdf:

qpdf --pages fichier.pdf 1,3,5,7,9 -- fichier.pdf fichier_impair.pdf

Sauf que mon nombre de pages ne s'arrêtent pas à 10 et je n'ai pas vu d'options dans le man pour gérer les pages paires/impaires.
J'ai donc cherché à récupérer le nombre de page de mon fichier PDF avec :

pdfinfo fichier.pdf | grep 'Pages:' | cut -d':' -f2

et avec l'utilisation de seq pour générer la liste des pages impaires

seq 1 2 $(pdfinfo fichier.pdf | grep 'Pages:' | cut -d':' -f2)

pour les pages paires il suffit de commencer seq à 2

seq 2 2 $(pdfinfo fichier.pdf | grep 'Pages:' | cut -d':' -f2)

Pour avoir toutes les pages sur une seule ligne, un petit xargs et un petit tr pour remplacer les espaces par des virgules, ce qui donne au final :

file="fichier.pdf"; qpdf --pages "$file" $(seq 1 2 $(pdfinfo "$file" | grep 'Pages:' | cut -d':' -f2) | xargs | tr " " ",") -- "$file" "${file/.pdf/_impair.pdf}"

Taille du fichier d'origine 611k, taille du fichier final 502k !!! Et c'est instantané !
Vive la ligne de commande

Make our politic great again

mardi 08 janvier 2019 - 19:01

Je n'aime pas écrire ce genre d'article... Je vous avais déjà dit que je n'aimais pas la (les) politique(s), mais en ce moment, c'est un sujet qui revient souvent. Je vous ai dit pour qui j'ai voté au premier tour, et même si ce n'était pas un vote d'adhésion pour la personne, c'était surtout parce que c'était le seul programme à proposer une VIe république. Et je fais partie de ceux et celles qui pensent qu'il faut effectivement remettre sur la table un certain nombre de choses.

Alors bien sûr, depuis l'élection j'ai toujours un sentiment particulier. Quand j'entends « Vous m'avez élu » je revois cette vidéo de la statistique expliquée à mon chat qui montre simplement qu'à la base il y a un problème avec les règles définies pour l'élection. Il existe pourtant des alternatives... Clairement il est difficile de savoir à qui correspond vraiment ce « vous » et combien de personnes ont vraiment voté « pour » (entre les personnes qui ont été influencées par les sondages, celles qui ont votées contre d'autres personnes, etc.).

Une chose est sûre, ce n'est pas avec 18% au premier tour des personnes inscrites qu'on peut légitiment penser que tout ce qu'on va faire, va être accepter par le « peuple ». Mais ce n'est pas tout, je pense qu'il y a un autre point pour lequel les gens en ont plus qu'assez. C'est le sentiment que les (certains) politiques ne sont pas honnêtes et cherchent avant tout à défendre leurs propres intérêts.
- Bruno Le Maire (avant) : « La réalité c'est que Emmanuel Macron, c'est une coquille vide »
- Bruno Le Maire (après) : ministre de l'économie
- François Bayrou (avant) : « Je ne me reconnais pas dans ce qu'Emmanuel Macron incarne »
- François Bayrou (après) : ministre d'état, garde des sceaux, ministre de la justice
- Marielle de Sarnez (avant) : « il dit un certain nombre de choses et après en général il recule toujours »
- Marielle de Sarnez (après) : ministre auprès du ministre de l'Europe et des affaires étrangères chargée des europpéennes

En vidéo c'est encore plus drôle... si on peut dire que c'est drôle... Par contre, en prenant les initiales des prénoms de l'ordre choisi par FranceInfo dans cette vidéo, ça fait BFM, et ça c'est plutôt drôle ? Non toujours pas...
https://www.youtube.com/watch?v=XX0rNWLZEPs
- Gérald Darmanin (avant) : « Partout où il va dans une région, il insulte les habitants de la région, il va en Bretagne, il y a les illettrés, il va en Guadeloupe, il s'expatrie, il va dans les hauts de France, il considère qu'il a de l'alcoolisme et du tabac en très grand nombre donc c'est quelqu'un qui ne connaît le pays d'abord »
- Gérald Darmanin (après) : « Moi j'ai vu un président de la république plusieurs fois, dans plusieurs déplacements, en Guyane, dans ma commune à Tourcoing, d'une écoute, d'une empathie, d'une volonté de convaincre »

https://www.facebook.com/naceur.hamadi/posts/2377653542263725
- Édouard Philippe (avant) : « Quand il s'exprime sur tout plein de choses, je me dis que c'est dommage qu'il n'ait pas été ministre de l'Économie juste avant parce qu'il aurait pu le faire, ah pardon, il était ministre de l'Économie avant et il ne l'a pas fait »
- Édouard Philippe (après) : premier ministre

https://www.youtube.com/watch?v=olVCanjtgrM

Nul n'est dupe et tout le monde est d'accord pour dire qu'il y a des problèmes. Personnellement je ne pense pas que le grand débat permettra de changer les choses en profondeur. Quand on nous prévient que de toute façon, le but ne sera pas de faire changer les choses alors même que c'est ce qui est demandé, à quoi bon vouloir débattre. Cause toujours tu m'intéresses... J'entends parler d'un RIC (CARL), mais je ne pense pas que c'est LA solution. C'est sûr que ça serait un début pour considérer le peuple, mais clairement il y a trop de paramètres à considérer pour espérer qu'il sera bien appliqué. Je ne demande qu'à voir cependant.

Enfin tout ça pour dire que j'espère qu'en 2019 on aura du neuf...

Tontof.com est en ligne

samedi 24 novembre 2018 - 18:11

C'est officiel depuis le 13 novembre 2018 https://tontof.com et https://fr.tontof.com sont en ligne. Après quelques retours et corrections, je suis fier de vous présenter la version actuelle qui est encore en phase de test mais qui est présentable !

J'espère que le site vous plaira et même si je n'ai pas encore tout optimisé, je pense qu'il est plutôt léger et loin de ce qu'on peut trouver classiquement. Je pense faire un article de tous les choix techniques que j'ai fait parce qu'il y a vraiment beaucoup de choses à dire.

Pour le lancement, j'ai décidé de mettre un prix libre ce qui permet à tout le monde de tester gratuitement. Sur la page du panier il suffit de mettre 0 pour faire apparaître un bouton qui permet de valider le panier sans carte bancaire.

Bon pliage à tous !

Tontof en lign

Le format SVG dans tous ces états

vendredi 29 juin 2018 - 08:08

Si vous connaissez ce format, je vous invite à lire uniquement le dernier paragraphe.

Pour les personnes qui ne le savent pas, les images sont souvent séparées en 2 catégories, les plus classiques sont les images matricielles (jpg, gif, png, bmp, etc.) qui sont représentées sous la forme d'un tableau de pixels et les images vectorielles (svg : Scalable Vector Graphics) qui sont décrites par le contenu à l'aide de formes et couleurs. Ces dernières sont principalement utilisées pour les logos et les images/présentations à afficher dans n'importe quelle dimension sans avoir l'effet de pixellisation.

Inkscape est le logiciel que j'utilise le plus. Je m'en suis servi pour ma présentation des origamis, mais je m'en sers aussi pour mettre en page facilement des photos, réaliser des étiquettes pour les confitures que je mets à jour toutes les années en ligne de commande (On peut effectivement utiliser Inkscape directement dans le terminal), etc.

Il est parfois possible de convertir une image matricielle en image vectorielle. Inkscape possède un outil qui marche plus ou moins bien mais quand j'en ai eu vraiment besoin, j'ai obtenu de meilleurs résultats avec des outils en ligne comme Vector Magic (qui semble être devenu payant depuis).

SVG est également un format supporté par tous les navigateurs (ou presque) et en fait donc un format privilégié pour le web. Il est parfois utilisé pour les polices d'écriture/d'icône. Il s'utilise aussi facilement avec javascript et il existe plusieurs bibliothèques :
- RaphaelJS est la plus complète qui supporte jusqu'à IE 6, oui, oui vous avez bien lu ??? « Raphaël currently supports Firefox 3.0+, Safari 3.0+, Chrome 5.0+, Opera 9.5+ and Internet Explorer 6.0+ »
- Snap.svg est plus récente et ne s'intéresse qu'aux navigateurs récents « Modern features for modern browsers »
- SVG.js est la version minimaliste et légère

Je suis un grand fan de ce format et je connaissais quelques outils sympathiques comme Sozi qui permet de faire des présentations animées ou svgo pour réduire la taille des fichiers (Inkscape stocke beaucoup d'infos inutile au rendu de l'image) mais je viens découvrir 2 nouveaux usages:
- Des icônes responsives : http://responsiveicons.co.uk
- Des logos responsives : http://responsivelogos.co.uk/
(Il faut redimensionner le navigateur pour voir la magie opérée)
Je suis tombé dessus grâce à cet article
https://medium.com/9elements/building-a-responsive-image-e4c6229fa1f6
qui présente ce logo
https://www.ichimnetz.com/responsive-logo/9e-anywhere.svg

Bookmarklet pour contourner Scribd

vendredi 04 mai 2018 - 11:00

Quand je cherche des informations sur des livres, je tombe souvent sur des liens scribd. Je ne vous cache pas que je n'aime pas du tout ce site et malheureusement bugmenot ne vous sera pas d'une grande aide. Si vous pouvez enrichir scribd site sans compte, la consultation est plus contraignante.

Donner, do-o-nner, donner, do-o-nner moi
Donner, do-o-nner, scribd le gardera...
...et ne vous le rendra pas...

Heureusement, souvent je ne cherche que des informations spécifiques et pas à télécharger des pdf. Et je ne comprends pas trop leur fonctionnement, mais quand vous commencez à lire, au bout d'un moment un filtre apparaît en surbrillance et vous ne pouvez plus lire et il faut vous connecter...

En apparence oui, mais tout est chargé dans le navigateur et quelques règles CSS permettent facilement de contourner le problème.

Du coup, un petit bookmarklet et plus de problème

scribd



code = ".autogen_class_views_pdfs_page_blur_promo {display: none !important;} div.image_layer .absimg { opacity: 1 !important;}"
var style = document.createElement('style');
style.type = 'text/css';

if (style.styleSheet) {
// IE
style.styleSheet.cssText = code;
} else {
// Other browsers
style.innerHTML = code;
}

document.getElementsByTagName("head")[0].appendChild( style );


Merci https://martijnbrekelmans.com/bookmarkletify/
et https://stackoverflow.com/questions/707565/

TONTOF: Your own unique origami and paper toys

vendredi 20 avril 2018 - 12:00

Bonjour à tous,

Je n'ai pas pris le temps de faire un article sur les résultats du dernier vote parce que j'étais sur le sprint final et je voulais vous faire la surprise en vous annonçant le lancement officiel du projet Kickstarter de Tontof.

https://www.kickstarter.com/projects/tontof/tontof-your-own-unique-origami-and-paper-toys/

Je vous remercie d'avance de partager ce lien en espérant que le projet plaira au plus grand nombre. C'était un peu une date anniversaire et j'ai donc fait le maximum pour pouvoir faire le lancement à temps.

Merci encore à tous pour vos partages.

Petit vote pour la présentation des modèles

dimanche 25 mars 2018 - 18:02

Ma TODO list commence à se réduire et je pense que la partie la plus longue à réaliser avant le lancement Kickstarter est enfin terminée ! Pour présenter les 10 modèles, j'ai dû faire quelques animations et c'était bien long, d'où l'absence de nouvelles depuis la dernière fois. J'ai fait plein de choses grâce à Gimp et j'ai même appris à faire des scripts python avec. Il faudra que je prenne le temps de vous faire un retour, il faudra...

Reste à choisir parmi les 3 dernières présentations sélectionnées. J'ai longuement hésité et je pense que j'ai enfin trouvé une présentation simple des modèles. Je vous propose un deuxième petit vote pour choisir votre présentation préférée. La première présente les modèles au centre, la seconde les aligne à droite et pour la dernière ils sont en zigzag.

On verra ce que ça donne, mais j'avoue avoir une petite préférence pour une présentation... Contrairement au dernier vote, j'ai ajouté la possibilité de laisser un commentaire directement dans le vote (et aussi votre mail comme la dernière fois, si vous souhaitez un message lors du lancement Kickstarter). Bien sûr ces 2 dernières infos sont facultatives et seul votre vote pour les présentations compte vraiment.

Merci d'avance


Tontof x 3 !!!

Quelques liens inutiles pour passer le temps #49

vendredi 01 décembre 2017 - 22:22

Je faisais un peu de tri dans mes articles et je suis tombé sur une liste de Gif (beaucoup de cinegraph) que je n'avais jamais publiée. Les images sont un peu anciennes, l'article datait de 2013...

1 - Une rivière:
https://i.chzbgr.com/maxW500/7805906176/h72FE8DE6/
via : http://cheezburger.com/7805906176
2 - Le métro est dans quel sens ?
https://i.chzbgr.com/maxW500/7447527936/hAA09362D/
via : http://cheezburger.com/7447527936
3 - Métro bis
https://i.chzbgr.com/maxW500/7895241216/h164A19E7/
via : http://cheezburger.com/7895241216
4 - Quand je feuillette le cahier des charges
http://i.imgur.com/VBoGZmd.gif
via : http://lesjoiesducode.tumblr.com/post/67360113636
5 - Lave
https://i.chzbgr.com/maxW500/7771172096/h343BC32A/
via : http://cheezburger.com/7771172096
6 - Bouteille de vin
https://i.chzbgr.com/maxW500/8530743552/h1484B623/
via : http://cheezburger.com/8530743552
7 - Un livre fontaine
https://i.chzbgr.com/maxW500/8125037568/h5E1D9B43/
via : http://cheezburger.com/8125037568
8 - 2 flèches et un verre d'eau
https://i.chzbgr.com/maxW500/8123062784/h76FD04E2/
via : http://cheezburger.com/8123062784
9 - 2 danseuses avec une projection en fond
https://i.chzbgr.com/maxW500/8092312576/h4DC5173D/
via : http://cheezburger.com/8092312576
10 - Pissenlit de la fleur aux graines
https://i.chzbgr.com/maxW500/8241233152/h17EF7FBF/
via : http://cheezburger.com/8241233152

Bonus (récent) :
Un puissance 4 en CSS (sans javascript)
https://codepen.io/finnhvman/pen/xXpzVN/
via : https://css-tricks.com/roman-empire-made-pure-css-connect-4-possible/

Tontof origami : le concept en une image

lundi 27 novembre 2017 - 19:20

Ça fait plus d'un mois et je ne vous ai pas donné de nouvelles sur l'avancement de mon projet. Pour être tout à fait honnête j'imaginais faire une présentation textuelle rapide agrémentée de quelques photos fin octobre pour faire un financement en novembre et lancer le site en décembre... Pfff quel utopiste !

Évidemment, j'ai eu plusieurs retours qui m'ont fortement déconseillé de me lancer trop vite. On m'a dit de soigner ma présentation pour faire bonne impression, que les personnes adhèrent au concept, etc. Je me suis donc lancé dans la mise en place d'une jolie présentation pour Kickstarter.

Ça risque d'être un peu plus long que prévu, mais c'est pour la bonne cause... enfin j'espère.
Il est vrai que je suis plutôt satisfait du résultat de la première partie de présentation grâce aux retours de plusieurs personnes que je ne citerai pas mais qui se reconnaîtront : B, É, F, G et surtout R

Il y a eu une sorte d'avant-avant-première et je vous présente la version 25 de la première image:
Edit: C'est la version 26, sans l'étiquette « Made by you »
Présentation du concept


Globalement, je trouve qu'elle présente bien le concept et qu'elle est jolie : les images de la petite fille proviennent de unsplash : https://unsplash.com/@senjuti
Avant d'en arriver là, il y a eu plusieurs versions :

Toutes les versions de présentation du concept


Je fais cette avant-première pour plusieurs raisons :
- Je me dit que ça peut montrer l'envers du décor de la mise en place d'un projet Kickstarter. Le but n'étant pas d'investir trop d'argent avant la mise en place du projet, je fais ça sur mon temps libre et ça va me prendre un peu de temps.
- Si jamais je loupe quelque chose d'important, je pense que vous me préviendrez avant de faire LA boulette ? Hein !? En gros ça me permettra d'avoir des retours pour faire des modifications avant la présentation finale si besoin. Comme vous avez pu le voir, il y a déjà eu pas mal de modifications, je n'en suis pas à 1 ou 2 près.
- Le temps de finir cette présentation risque d'être un peu long, j'espère que ça vous fera un peu patienter en attendant :-)

Les remarques personnelles qui me chagrinent sur cette première image :
- Comme vous pouvez le voir sur les différentes versions, j'ai eu un petit problème pour le choix de l'image de l'imprimante. Celle de la version finale n'est pas forcément la plus jolie, mais c'est parce que je ne voulais pas utiliser d'images où je n'avais pas les droits. Et si l'image la plus jolie est clairement celle de la HP Envy 5545, je ne pouvais pas l'utiliser pour la présentation. J'ai cherché dans mon entourage une imprimante pas trop vilaine :-)
- La cocotte de la partie 4 a été gimpée... En fait, quand la cocotte était à côté de l'ordi, il n'y avait pas de problème sur la lisibilité de l'image et même si les photos étaient un peu floues par rapport aux originales, globalement ce n'était pas gênant. Sauf qu'après avoir détourée l'image, on ne voyait que ça et j'ai donc fait cette dernière modification pour améliorer le rendu.

Ma TODO list est encore longue :
- La prochaine étape concerne la présentation des occasions. À quelle(s) occasion(s) peut-on faire ce genre de pliages ? Je ne suis pas très inspiré pour la présentation, même si ce n'est pas le nombre d'idées qui manquent : naissance, mariage, anniversaire, déco, fête des (grand-)mères/pères, etc. Il va falloir que j'arrive à présenter tout ça simplement... Si vous avez des exemples je suis preneur. Par exemple pour la première partie en 4 étapes, je me suis inspiré de https://www.kickstarter.com/projects/lovebox/lovebox-a-simple-and-generous-way-to-send-love-mes
- Il faudra également que je présente rapidement les 10 modèles du lancement avec des images animées pour certains pour faire voir que c'est vraiment chouette. Et puis il y a les instructions des pliages que je vais devoir aussi faire.
- Un petit storytelling... Il paraît que c'est la mode et en plus je trouve l'histoire de cette idée intéressante. À la base, elle a des racines un peu écolo, ça devrait encore plus plaire, non ? Oula, je me mets à penser comme un marketing là ? Ça craint ?!