Journal Portage de TapTempo en GOTO++

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
35
6
mar.
2018

Puisque tout le monde y va de sa petite version de TapTempo, je me suis dit hein, quoi, y'a pas de raison. Alors voici un portage en GOTO++, ce magnifique langage qui, il fut un temps, était chroniqué régulièrement sur ce site par son auteur en personne, et fit même l'objet de news.

Dans la version ci-dessous, j'ai voulu rester sobre, aussi me suis-je inspiré de l'algorithme simple de la version javascript de TapTempo pour en reproduire le (…)

Journal Portage de TapTempo en Golang

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
21
6
mar.
2018

Après tous les autres portages, voici la version Golang. J’essaye de montrer la simplicité du code, même si je gère une file à la main.

On voit le package simple de gestion d'options de ligne de commande (flag) et la gestion du temps(time). Je montre aussi la gestion d'un slice (issue du make) pour faire la file.

On vois aussi l'usage de init() qui est un fonction des packages exécutées avant la fonction main(). Il n'y a pas d'exemple d'objet (…)

Journal taptempo.awk : une approche plus unix ?

Posté par  . Licence CC By‑SA.
Étiquettes :
43
5
mar.
2018

Salut !

Ce journal s'inscrit dans la série des journaux traitant de portages de taptempo.

Pour bien commencer la semaine, je voulais proposer une alternative à taptempo sous forme de filtre. Ma version d'un compteur de tempo se base sur l'outil xev et ne possède aucune option. Il est plus rapide de modifier directement le script que d'en modifier.

Pour moi c'est l'occasion de présenter awk, un langage de script relativement peu connu/utilisé alors qu'il est très intéressant. Il (…)

Journal Port de taptempo en Rust

Posté par  . Licence CC By‑SA.
Étiquettes :
14
3
mar.
2018

Comme promis, voici un petit journal sur mon port de taptempo en Rust. Je n'ai pas porté le mécanisme d'internationalisation, puisque finalement on peut le faire comme dans le code C++, avec gettext. Ce n'est pas le plus intéressant du projet, et il n'existe pas de mécanisme d'internationalisation que je trouve vraiment satisfaisant et idiomatique pour le moment.

Description du Rust

Pour ceux qui ne connaissent pas le langage, la façon la plus simple de le décrire (…)

Journal TapTempo en brainfuck

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
48
3
mar.
2018

TapTempo est disponible en version BrainFuck

C'est un portage partiel (faut pas pousser ;), donc :

  • Pas d'options
  • Pas de localisation
  • Pas de remise à zéro des samples
  • Que deux samples
  • N'importe quelle touche fonctionne (Pas seulement <Return>)

Mais c'est tout de même une version Brainfuck qui fait son boulot :

[-]
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.[-]
[-]
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.[-]
[-]
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.[-]
[-]
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.[-]
[-]
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.[-]
[-]
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.[-]
[-]
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.[-]
[-] ++++++++++++++++++++++++++++++++.[-] [-]
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.[-]
[-]
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.[-]
[-]
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.[-]
[-] ++++++++++++++++++++++++++++++++.[-] [-]
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.[-]
[-]
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.[-]
[-]
(…)

Journal Portage de TapTempo en PHP

Posté par  . Licence CC By‑SA.
Étiquettes :
16
3
mar.
2018

Aie ! Non, pas les doigts ! Ouille !

Mesdames et Messieurs,

Je prends le train en marche et vous fais profiter de cette version de TapTempo en PHP !

La source est disponible dans ce journal et sur Github : taptempo-php.

Si l'on résume, on en est maintenant à : Ada, Bash, Haskell, JavaScript, Perl, Perl6, PHP, Python 2.7, PWA, Rust, Wren.

Écrit sous forme d'une classe statique, j'ai essayé de (…)

Journal Portage de TapTempo en Wren

Posté par  (Mastodon) . Licence CC By‑SA.
Étiquettes :
13
2
mar.
2018

Wren est un langage de script assez simple, basé sur des classes et destiné à être embarqué dans des applications (notamment des jeux vidéos). J'avais envie d'essayer ce langage depuis un moment, je me suis dit qu'il fallait participer à la hype du moment.

Donc, suite au portage de TapTempo en divers langage: Rust, Ada, JavaScript, Perl, Python 2.7, Bash, Perl6 Haskell et PWA, voici la version en Wren.

import "io" for Stdin,
(…)

Journal TapTempo sur mobile en PWA

Posté par  . Licence CC By‑SA.
Étiquettes :
18
2
mar.
2018

Bonjour à tous.

Suite aux portages de TapTempo en divers langages (Rust, Ada, Javascript, Perl (5.10 et 6), Python (2.7), bash, Haskel), pourquoi pas une version pour ordiphone.

Non, c'est pas un portage. L'interface n'est pas la même, y'a pas d'internationalisation ni d'option… L'idée était de découvrir rapidement le fonctionnement des progressive web apps.

Première étape, faire un TapTempo en html/javascript. Par exemple en reprenant le code d'un des commentaires sur ce journal avec un peu de css et (…)

Journal Portage de TapTempo en Haskell

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
21
1
mar.
2018

Bonjour à tous,

Suite aux portages de TapTempo en divers langages (Rust, Ada, Javascript, Perl (5.10), Python (2.7), bash), il fallait une version Haskell de TapTempo.

J'ai essayé de respecter scrupuleusement ce qui est décrit dans le journal d'introduction de TapTempo de mfz. Toute différence serait un bug, j'attends vos rapport de bug sur GitHub.

Le répertoire src est composé des fichiers suivants, chacun ayant sa petite particularité Haskell que je détaille dans la suite :

Journal Portage de TapTempo en Perl6

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
23
1
mar.
2018

Bonjour à tous,
Suite aux portages de TapTempo en divers langages (Rust, Ada, Javascript, Perl (5.10), Python (2.7), bash), je me suis chargé de traduire cet outil en PERL6 parce que c'est quand même plus mignon à regarder.

J'ai essayé de respecter l'esprit de TapTempo à la lettre, en répliquant les fonctionnalités & options présentées dans le journal de mfz. De ce fait, j'ai adopté la même approche KISS tout en (…)

Journal Portage de TapTempo en Bash

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
15
28
fév.
2018

Bonjour à tous,

Suites aux ports de TapTempo en Rust, Ada, JS, PERL et python (2.7)

Voilà ma version en bash ;-)

#!/bin/bash

PREV="$(date +%s%N | cut -b1-13)"
TAPS="0"
COUNT="0"

while read -p "tapTempo : press any key (CTRL+D for quit)" tap ; do
    CUR="$(date +%s%N | cut -b1-13)"
    TAPS="$TAPS + $(($CUR-$PREV))"
    PREV=$CUR
    COUNT="$(($COUNT + 1))"
done

echo ""

Journal Portage de TapTempo en Python (2.7)

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
11
27
fév.
2018

Bonjour à tous,

Suites aux ports de TapTempo en Rust, Ada, JS, et PERL

Voilà ma version en python ;-)

#!/usr/bin/python
# -*- coding: utf-8 -*
import sys,termios,tty,datetime

def getKey():
    fd = sys.stdin.fileno()
    old_settings = termios.tcgetattr(fd)
    try:
        tty.setraw(fd)
        ch = sys.stdin.read(1)
    finally:
        termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
    return ch

print "tapTempo : press any key (q for quit)"
t=[]
while getKey()!="q":
    t.append( datetime.datetime.now() )

ll=[ (j-i).microseconds for i, j in zip(t[:-1], t[1:]) ][-5:]
print "BPM:",60000000*len(ll)/sum(ll) if ll else None

Journal Portage de TapTempo en Perl

Posté par  . Licence CC By‑SA.
Étiquettes :
14
27
fév.
2018

Bonjour à tous,

Suites aux ports de TapTempo en Rust, Ada et JS, je me suis dit que ça pourrait être marrant de le faire en Perl. Ça a été un prétexte pour coder un peu (première fois depuis fort longtemps) et de re-découvrir un peu le Perl pendant une aprem.

Ce programme aborde quelques aspects intéressants pour découvrir vite fait les bases langage :
- le code minimal
- la gestion du typage
- quelques structures (…)

Journal Portage de TapTempo en JavaScript

Posté par  . Licence CC By‑SA.
Étiquettes :
10
27
fév.
2018

Suite au journal de Blackknight à propos du journal de mzf, j'ai décidé de faire une version de TapTempo en Javascript.

Copier-coller le code suivant dans la console js de votre navigateur (F12), donner le focus à la page et tapoter n'importe quelle touche.

var t = [];
document.addEventListener("keydown", function() {
    t.push(performance.now());
    if (t.length > 1) {
        console.log(60000
(…)