Skip to content

Instantly share code, notes, and snippets.

View rgazelot's full-sized avatar

Rémy GAZELOT rgazelot

  • Majorfeat
  • Paris
View GitHub Profile
export const FONTS = [
{ name: 'Abril Fatface', type: 'Classical', noItalic: true, noBold: true, designer: 'TypeTogether' },
{ name: 'Abys', type: 'Handwriting', src: 'local', noItalic: true, noBold: true },
{ name: 'Alegreya', type: 'Classical', url: 'Alegreya:ital,wght@0,400;0,700;1,400;1,700', designer: 'Huerta Tipográfica' },
{ name: 'Alegreya Sans', type: 'Modern', url: 'Alegreya+Sans:ital,wght@0,400;0,800;1,400;1,800', designer: 'Huerta Tipográfica' },
{ name: 'Anonymous Pro', type: 'Modern', designer: 'Mark Simonson' }
]
function getGoogleFonts () {
const fonts = []
@rgazelot
rgazelot / map.js
Created March 19, 2020 09:42
Final version
const bounds = poster.bounds
// Use geoViewport to determine the center and the zoom level of the entire map.
const viewport = geoViewport.viewport([
bounds['_sw'].lng,
bounds['_sw'].lat,
bounds['_ne'].lng,
bounds['_ne'].lat
], [size.width, size.height], undefined, undefined, 512, true)

The editor

I built a simple editor using Mapbox GL JS in order to play and retrieve coordinates. In this example, the map is 1024x1024 pixels wide.

The editor

My goal was to have a matrix of 2x2 images as you can see in this following image

The code

Here you can find the code used to generate the 4 images

The matrix

|   image 1   |   image 2   |  image 3   |
|   image 4   |   image 5   |  image 6   |
|   image 7   |   image 8   |  image 9   |
|   image 10  |   image 11  |  image 12  |

Each images is 1169x1240 px for a total of 3508x4961 px.

// the A3 poster in pixels
// width: 3508 px
// height: 4961 px
const size = getPrintSize(poster.direction, poster.dimensions)
// As the max Static API images are 1280px wide,
// determinate how many of them we need.
const widthRatio = Math.ceil(size.width / 1280)
const heightRatio = Math.ceil(size.height / 1280)
@rgazelot
rgazelot / remove.sh
Created January 15, 2020 08:01
Remove merged local branches
git branch --merged >/tmp/merged-branches && vi /tmp/merged-branches && xargs git branch -d </tmp/merged-branches
@rgazelot
rgazelot / redis.js
Created February 11, 2019 16:47
ShareDB Redis Database Adapter
const Db = require('sharedb').DB;
const Redis = require('redis');
class RedisDB extends Db {
constructor (options) {
super(options);
this.client = options.client || Redis.createClient(options);
this.ttl = options.ttl || 60 * 60 * 24;
@rgazelot
rgazelot / EventRepository.php
Created October 19, 2017 09:11
Query builder current meetings
$qb->andWhere($qb->expr()->orX(
$qb->expr()->andX(
$qb->expr()->gte('e.start', ':from'),
$qb->expr()->lte('e.start', ':until')
),
$qb->expr()->andX(
$qb->expr()->gte('e.stop', ':from'),
$qb->expr()->lte('e.stop', ':until')
),
$qb->expr()->andX(

DaMovieQuiz

Le jeu

Nous t'invitons à coder un jeu génial nommé Da Movie Quiz, qui teste la culture cinématographique du joueur. Le principe de base est ultra simple:

Pour un film donné, le joueur doit trouver parmi une liste de 5 acteurs aléatoires lequel a réellement joué dans le film. Si le joueur donne une bonne réponse, il marque un point, sinon la partie s'arrête.

Et voilà, plutôt basique, mais efficace et fun.

Titre

La plupart des applications web communiquent avec leurs utilisateurs par un système de notifications par email. Même si ceux-ci peuvent être très basiques, l'implémentation d'un système simple et accessible dans un framework peut vite devenir une tâche compliquée.

Chez Wisembly nous avons itéré plusieurs fois sur notre système d'email pour arriver à une implémentation qui nous satisfasse et réponde à nos attentes. Notre système doit être capable :

  • de composer des emails avec un moteur de template (Twig)
  • d'être internationalisé