enchant.js - intro

Rédigé par Fred - - Aucun commentaire

Je cherchais un framework javascript pour faire quelques mini-jeux 2D. La liste étant plutôt longue, j’en ai pris un un peu au hasard. J’avais besoin de quelque chose de léger et super basique. Je me suis tourné vers enchant.js. Je me suis rendu compte qu’il semble malheureusement être laissé à l’abandon depuis à peu près un an (si on s’en réfère au site et à github), mais comme le but n’est pas de développer des jeux très complexes avec webGL etc., mais plus de se (re)faire la main avec javascript, c’est bien suffisant.

Lire la suite de enchant.js - intro

org-protocol

Rédigé par Fred - - Aucun commentaire

J’avais déjà vu passer l’info, sur irreal.org puis chez Sacha Chua, et ailleurs encore, et à chaque fois, je m’étais dit, faut que je m’y mette. C'est chose faite depuis quelques temps. org-protocol permet d’utiliser org-capture depuis firefox, chrome, acrobat reader, etc.

Ce qui m’intéresse, c’est d’utiliser les bookmarklets de firefox, et plus particulièrement les mots-clés des marque-pages : je tape dans la barre d’adresse ot, or ou on, et ça me rajoute une note au bon endroit dans le bon fichier org-mode.

Je note ici comment j’ai fait. Selon que vous utilisiez windows, ou GNU/Linux, c’est légèrement différent.

Pour windows :

Dans le dossier bin d’emacs, j'ai ajouté le fichier em.cmd contenant :

@echo off
"%~dp0emacsclientw.exe" -na "%~dp0runemacs.exe" -c "%1"

Dans le fichier d’initialisation, init.el, il faut :

;; pour emacs client
(server-start) 

;;; où se situe org-protocol
(add-to-list 'load-path "c:/Users/ftantini/AppData/Roaming/.emacs.d/elpa/org-20150622/")
(require 'org-protocol)

;;; un template
(setq org-protocol-default-template-key "l")
(setq org-capture-templates
 '(("l" "Link" entry (file+olp "C:\\Users\\ftantini\\Documents\\Divers\\orgnotes.org" "Web Links")
        "* %a\n %?\n %i")))

Si on veut plusieurs bookmarks :

(setq org-protocol-default-template-key "l")
(setq org-capture-templates
 '(("t" "Todo" entry (file+headline "C:\\Users\\ftantini\\Documents\\Divers\\orgnotes.org" "Tasks")
        "* TODO %?\n  %i\n  %a")
   ("l" "Link" entry (file+olp "C:\\Users\\ftantini\\Documents\\Divers\\orgnotes.org" "Web Links")
        "* %a\n %?\n %i")
   ("j" "Journal" entry (file+datetree "C:\\Users\\ftantini\\Documents\\Divers\\orgnotes.org")
        "* %?\nEntered on %U\n  %i\n  %a")))

Attention, il a fallu que Web Links soit déjà un header du fichier.

Enfin, il faut également modifier le registre :

REGEDIT4

[HKEY_CLASSES_ROOT\org-protocol]
"URL Protocol"=""
@="URL:Org Protocol"

[HKEY_CLASSES_ROOT\org-protocol\shell]

[HKEY_CLASSES_ROOT\org-protocol\shell\open]

[HKEY_CLASSES_ROOT\org-protocol\shell\open\command]
@="\"c:\\Users\\ftantini\\Progs\\emacs-24.5\\bin\\emacsclientw.exe\" \"%1\""

Côté firefox, on ajoute le bookmarklet suivant :

javascript:location.href='org-protocol://org-capture://l/'+encodeURIComponent(location.href)+'/'+encodeURIComponent(document.title)+'/'+encodeURIComponent(window.getSelection());

où le l qui suit org-capture correspond au template qu’on veut utiliser.

Le sous-protocole n’est, pour moi, pas capture, mais bien org-capture (trouvé grâce à C-h v org-protocol-protocol-alist-default pour voir les protocoles par défaut).

La première fois que le bookmarklet est lancé, il demande avec quoi ouvrir, on renseigne em.cmd.

Pour linux :

C’est très clair ici : http://tech.memoryimprintstudio.com/org-capture-from-external-applications/, les solutions 2, et 3 ont marché pour moi, je vous laisse aller voir et je recopie ce qui marche pour moi (le plugin ne permet d’utiliser qu’un template) :

  • Enregistrer un fichier org-protocol.desktop

dans ~/.local/share/applications avec :

[Desktop Entry]
Name=org-protocol
Exec=emacsclient -c %u
Type=Application
Terminal=false
Categories=System;
MimeType=x-scheme-handler/org-protocol;
  • Ajouter dans ~/.local/share/applications/mimeapps.list
[Added Associations]
x-scheme-handler/org-protocol=org-protocol.desktop

puis mettre à jour :

update-desktop-database ~/.local/share/applications/

(le paquet pour debian est desktop-file-utils)

Côté Emacs, dans le fichier d’initialisation, init.el, on ajoute (si ce n’est pas déjà présent) :

;; pour emacs client
(server-start) 

;;; org-protocol
(require 'org-protocol)

(setq org-protocol-default-template-key "l")
(setq org-capture-templates
 '(("l" "Link"                entry (file+headline "/home/fred/Data/Donnees/Org/Notes/orgnotes.org" "trouvailles")
        "* %a\n %?\n %i")))

Et si on veut plusieurs bookmarks :

(setq org-protocol-default-template-key "l")
(setq org-capture-templates
 '(("t" "Todo" entry (file+headline "/home/fred/Data/Donnees/Org/Notes/orgnotes.org" "Tasks")
        "* TODO %?\n  %i\n  %a")
   ("l" "Link" entry (file+olp "/home/fred/Data/Donnees/Org/Notes/orgnotes.org" "Web Links")
        "* %a\n %?\n %i")
   ("j" "Journal" entry (file+datetree "/home/fred/Data/Donnees/Org/Notes/orgnotes.org")
        "* %?\nEntered on %U\n  %i\n  %a")))

Comme pour windows, le header (Tasks, Web Links) doit déjà être présent.

Le bookmarklet qui va bien à ajouter dans firefox :

javascript:location.href='org-protocol://capture://l/'+encodeURIComponent(location.href)+'/'+encodeURIComponent(document.title)+'/'+encodeURIComponent(window.getSelection());

où le l qui suit org-capture correspond au template qu’on veut utiliser.

Par contre, cette fois le sous-protocole est bien capture, et pas org-capture, et je n’ai pas chercher à comprendre pourquoi… (org-protocol-protocol-alist-default est pourtant le même.)

Pour tester, on peut, en ligne de commande, lancer

emacsclient org-protocol://capture://x/toto/tata/titi

si ça ne marche pas correctement, par exemple, si le buffer s’ouvre avec comme nom le dernier argument (ici titi), c’est sûrement un souci de sous-protocole.

Mes templates

Voilà les trois templates qui sont chez moi associés à un bookmarklet :

(setq org-capture-templates
      '(("t" "notes-info/travail"
               entry (file+headline "/home/fred/Data/Donnees/Org/Notes/notes-info.org" "trouvailles")
               "** COMMENCÉ %:description\n%i\n%?\nSource : %a\n\n" :immediate-finish)
        ("r" "notes-info/raccourcis"
               entry (file+headline "/home/fred/Data/Donnees/Org/Notes/notes-info.org" "raccourcis")
               "** COMMENCÉ %:description\n%i\n%?\nSource : %a\n\n" :immediate-finish)
        ("l" "notes/à lire"
               entry (file+headline "/home/fred/Data/Donnees/Org/Notes/notes.org" "à lire")
;              "* %^{Title}\n\n  Source: %u, %c\n\n  %i"))))
               "** %a\n%i\n%?\n\n" :immediate-finish)
        ))
                                        ;%:description : titre de la page
                                        ;%i : sélection de la page web
                                        ;%? : curseur pour continuer de remplir la note
                                        ;%a : [[lien][titre de la page]]

Je rappelle les liens de l’intro : chez Sacha Chua, qui explique comment elle a fait pour chrome, et le site d’orgmode, en particulier, les templates : http://orgmode.org/manual/Capture-templates.html pour avoir d’autres variables (%T, %k, %^{Title}, %^C… sur Template-expansion), et la page de départ : http://orgmode.org/worg/org-contrib/org-protocol.html.

Ajouter des curseurs multiples avec Ace Jump

Rédigé par Fred - - Aucun commentaire

Pour ceux qui utilisent à la fois multiple-cursors.el et ace-jump, ace-mc permet d’ajouter (et d’enlever) des curseurs à la manière d’ace-jump. Ça se base sur ace-jump, et peut-être que ce sera adapté à avy qui a un peu plus le vent en poupe.

Dans la même veine, ace-jump-zap permet de faire un zap-to-char (C-h k M-z) sans besoin de compter jusqu’à la combientième lettre on veut killer (avec avy : avy-zap).

D’autres commandes plus ou moins utiles ont été implémentées à la sauce ace-jump/avy, notamment par Junpeng Qiu, Oleh Krehel (abo-abo) et d’autres encore : ace-flyspell, ace-jump-helm-line, ace-link

Source : Add Multiple Cursors using Ace Jump : emacs (r/emacs)

Lorem Ipsum pour les images

Rédigé par Fred - - 1 commentaire

Quand on développe un site, pour travailler la mise en page, on utilise un faux-texte, le fameux Lorem Ipsum. Mais pour les images ?

J’étais en train de jouer un peu avec les transitions en css, quand je me suis dit que ce serait bien d’avoir des images. Un coup de duckduckgo plus tard, et me voilà avec deux sites plutôt sympa pour générer des images :

  • http://lorempixel.com/ propose plusieurs catégories d’images — issues de flickr en CC BY-SA — que l’on peut paramétrer selon la taille, la catégorie, couleur ou N&B, et l’ajout de texte :
<img src="http://lorempixel.com/g/400/200/nature/3/Mon texte" />

affichera la 3e image de la catégorie nature en 400×200 noir et blanc (le g) avec le texte « Mon texte » :

<img src="http://lorempixel.com/400/200/" />

affichera une image de 400×200 en couleur de n’importe quelle catégorie :

  • le second, http://dummyimage.com/, propose des images plus simples, et qui correspondent mieux à des besoins de tests d’agencement : du texte sur un fond uni. On peut là aussi régler plusieurs choses : la taille, la couleur du texte et du fond, le format de l’image… Certaines tailles sont prédéfinies : fullbanner, button1, svga, ntsc, etc.
<img src="http://dummyimage.com/300" />

affichera l’image :

Le texte par défaut, c’est la taille de l’image.

<img src="http://dummyimage.com/rectangle/bd954f/ffffff.png&text=Mon+texte" />

affichera l’image au format png de 180×150 :

Il y en a bien entendu plein d’autres, mais ceux-ci me conviennent parfaitement.

Fil RSS des articles