Skip to content

Instantly share code, notes, and snippets.

View davybrion's full-sized avatar

Davy Brion davybrion

  • That Extra Mile
  • Belgium
View GitHub Profile
@davybrion
davybrion / s1.c
Created September 3, 2012 18:20
code snippets for "Creating Remote TCP/IP Printer Ports From Code" post
BOOL WINAPI XcvData(HANDLE hXcv, LPCWSTR pszDataName, PBYTE pInputData, DWORD cbInputData,
PBYTE pOutputData, DWORD cbOutputData, PDWORD pcbOutputNeeded, PDWORD pdwStatus);
@davybrion
davybrion / s1.js
Created September 15, 2012 16:58
code snippets for "Using Mongoose’s Setters To Get Calculated Properties" post
var invoiceSchema = new Schema({
companyId: { type: ObjectId, required: true },
customerId: { type: ObjectId, required: true },
invoiceNumber: { type: String, required: true, unique: true },
date: { type: Date, required: true },
dueDate: { type: Date, required: true },
paid: { type: Boolean, required: true, default: false },
activityId: { type: ObjectId, required: true },
totalHours: { type: Number, required: true },
hourlyRate: { type: Number, required: true },
@davybrion
davybrion / gist:8576995
Created January 23, 2014 11:21
easy way to create query classes that create prepared statements through the 'sequel' library... performance impact of this is really low (query string is only stored in memory once and query execution always goes through prepared statement)
class Query
def self.query_name
:return_valid_query_name_in_subclass_or_you_will_get_really_weird_results
end
def self.create_prepared_statement(sql, placeholders_array)
sql = sql.super_strip unless Environment.log_sql?
DB[sql, *placeholders_array].prepare(:select, query_name)
end
@davybrion
davybrion / s1.xml
Created September 15, 2012 17:08
code snippet for "Hosting a Node.js site through Apache" post
<VirtualHost 109.74.199.47:80>
ServerAdmin davy.brion@thatextramile.be
ServerName thatextramile.be
ServerAlias www.thatextramile.be
ProxyRequests off
<Proxy *>
Order deny,allow
Allow from all
@davybrion
davybrion / s1.js
Created September 15, 2012 16:52
code snippet for "Solving A Problem By Avoiding It" post
var exec = require('child_process').exec;
function getJsFilesRecursively(startPath, callback) {
exec('find ' + startPath, function(err, stdout) {
var jsFiles = [];
stdout.split('\n').forEach(function(f) {
if (!/node_modules\//.test(f) && /.js$/.test(f)) {
jsFiles.push(f);
};
});
@davybrion
davybrion / s1.js
Created September 15, 2012 17:12
code snippets for "Stop Storing Passwords Already!" post
var mongoose = require('mongoose'),
crypto = require('crypto'),
uuid = require('node-uuid'),
Schema = mongoose.Schema,
ObjectId = Schema.ObjectId;
var userSchema = new Schema({
name: { type: String, required: true, unique: true },
email: { type: String, required: true },
salt: { type: String, required: true, default: uuid.v1 },
@davybrion
davybrion / s1.cs
Created September 15, 2012 16:26
code snippets for "Using Generic TestFixtures To Run Tests In Multiple Browsers With WatiN" post
public abstract class ViewTest<TBrowser> where TBrowser : Browser, new()
{
[TestFixtureSetUp]
public void FixtureSetUp()
{
Browser = new TBrowser();
Browser.GoTo(RootUrl);
}
[TestFixtureTearDown]
@davybrion
davybrion / s1.js
Created September 15, 2012 17:04
code snippets for "Displaying Feed Items On A Web Page: My Solution" post
var express = require('express'),
app = module.exports = express.createServer(),
NodePie = require('nodepie'),
request = require('request'),
recentFeedItems = null;
app.dynamicHelpers({
getRecentFeedItems: function() {
return recentFeedItems;
}
@davybrion
davybrion / s1.js
Created September 15, 2012 16:41
code snippet for "Who Needs Classes Anyway?" post
var MyNameSpace = MyNameSpace || {};
MyNameSpace.jsondateformatter = (function () {
var that = this;
var toDate = function (jsonDateString) {
var time = jsonDateString.replace(/\/Date\(([0-9]*)\)\//, '$1');
var date = new Date();
date.setTime(time);
return date;
@davybrion
davybrion / s1.js
Created September 15, 2012 16:55
code snippets for "Take Advantage Of Your BDD Framework" post
describe('given an existing customer', function() {
describe('when it is retrieved from the database', function() {
it('should contain the same values that have been inserted', function() {
var customer = new CustomerBuilder()
.withIncludeContactOnInvoice()
.build();
customer.save(function(err) {