Skip to content

Instantly share code, notes, and snippets.

View rgazelot's full-sized avatar

Rémy GAZELOT rgazelot

  • Majorfeat
  • Paris
View GitHub Profile
@rgazelot
rgazelot / gitconfig
Last active December 18, 2019 09:36
Install Mac OS X

PHP/Apache MAC OS X

Install php

  1. Liip
  2. In ~/.bash_profile define wich php the system will use :
PATH=/usr/local/php5/bin:$PATH

Configure apache

Create vhosts

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é

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.

@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(
@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 / 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
// 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)

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 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

@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)