Skip to content

Instantly share code, notes, and snippets.

View alfonsodev's full-sized avatar
🏠

Alfonso alfonsodev

🏠
View GitHub Profile
@joelhooks
joelhooks / gear.md
Last active April 2, 2024 20:18
Podcasting Gear List
@ichord
ichord / gist:9808444
Created March 27, 2014 14:12
demo of using pdf.js to extract pages to images
<script src="http://cdnjs.cloudflare.com/ajax/libs/processing.js/1.4.1/processing-api.min.js"></script><html>
<!--
Created using jsbin.com
Source can be edited via http://jsbin.com/pdfjs-helloworld-v2/8598/edit
-->
<body>
<canvas id="the-canvas" style="border:1px solid black"></canvas>
<input id='pdf' type='file'/>
<!-- Use latest PDF.js build from Github -->
@alfonsodev
alfonsodev / gist:10597209
Created April 13, 2014 18:56
gandi.net ssl https
Gandi.net ssl certificate working with haproxy
In one file concatenate the certifcate with the private key (domain.pem in the example)
In other file just the intermediate ceritificate (gandi.ca.pem in the example) then in your haproxy.cfg
bind *:443 ssl crt /home/.ssh/domain.pem ca-file /home/.ssh/gandi.ca.pem
frontend https-in
bind *:443 ssl crt /home/.ssh/domain.pem ca-file /home/.ssh/gandi.ca.pem
timeout client 1h
@joecliff
joecliff / express_download_name_proxy.js
Last active July 19, 2022 17:38
make a proxy to convert http download file name in express
var request = require('request');
function setDownloadName(req, res, fileName) {
var userAgent = (req.headers['user-agent'] || '').toLowerCase();
if (userAgent.indexOf('chrome') > -1) {
res.setHeader('Content-Disposition', 'attachment; filename=' + encodeURIComponent(fileName));
} else if (userAgent.indexOf('firefox') >-1) {
res.setHeader('Content-Disposition', 'attachment; filename*="utf8\'\'' + encodeURIComponent(fileName) + '"');
} else {
res.setHeader('Content-Disposition', 'attachment; filename=' + new Buffer(fileName).toString('binary'));
@staltz
staltz / introrx.md
Last active December 26, 2025 17:21
The introduction to Reactive Programming you've been missing
@gboudreau
gboudreau / install-ffmpeg-amazon-linux.sh
Last active August 2, 2024 19:25
How to compile ffmpeg on Amazon Linux (EC2)
#!/bin/sh
# Based on instructions found here: http://wiki.razuna.com/display/ecp/FFMpeg+Installation+on+CentOS+and+RedHat#FFMpegInstallationonCentOSandRedHat-InstallX264
if [ "`/usr/bin/whoami`" != "root" ]; then
echo "You need to execute this script as root."
exit 1
fi
cat > /etc/yum.repos.d/centos.repo<<EOF
@abdullin
abdullin / ddd-in-golang.markdown
Last active October 10, 2023 00:46
DDD in golang

This is my response to an email asking about Domain-Driven Design in golang project.

Thank you for getting in touch. Below you will find my thoughts on how golang works with DDD, changing it. This is merely a perception of how things worked out for us in a single project.

That project has a relatively well-known domain. My colleagues on this project are very knowledgeable, thoughtful and invested in quality design. The story spelled out below is a result of countless hours spent discussing and refining the approach.

Conclusions could be very different, if there was a different project, team or a story-teller.

Short story

@billhathaway
billhathaway / gist:e32060b96802d74ca586
Created December 23, 2014 18:35
Getting IronMQ on-premise running in Vagrant
# more detailed instructions are at http://dev.iron.io/mq-onpremise/getting_started
# Get a coreos VM up
git clone https://github.com/coreos/coreos-vagrant.git
cd coreos-vagrant/
vagrant up
# get into the coreos box
vagrant ssh

Folder Structure

Please note

While this gist has been shared and followed for years, I regret not giving more background. It was originally a gist for the engineering org I was in, not a "general suggestion" for any React app.

Typically I avoid folders altogether. Heck, I even avoid new files. If I can build an app with one 2000 line file I will. New files and folders are a pain.

@mikelehen
mikelehen / generate-pushid.js
Created February 11, 2015 17:34
JavaScript code for generating Firebase Push IDs
/**
* Fancy ID generator that creates 20-character string identifiers with the following properties:
*
* 1. They're based on timestamp so that they sort *after* any existing ids.
* 2. They contain 72-bits of random data after the timestamp so that IDs won't collide with other clients' IDs.
* 3. They sort *lexicographically* (so the timestamp is converted to characters that will sort properly).
* 4. They're monotonically increasing. Even if you generate more than one in the same timestamp, the
* latter ones will sort after the former ones. We do this by using the previous random bits
* but "incrementing" them by 1 (only in the case of a timestamp collision).
*/