Skip to content

Instantly share code, notes, and snippets.

@eddieajau
eddieajau / debug.php
Created May 10, 2012 05:18
Printing a clean debug backtrace in PHP.
// PHP < 5.3.6
foreach (debug_backtrace() as $trace)
{
echo sprintf("\n%s:%s %s::%s", $trace['file'], $trace['line'], $trace['class'], $trace['function']);
}
die;
// PHP >= 5.3.6
debug_print_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
die;
@eddieajau
eddieajau / csv-parse-async.mjs
Last active April 11, 2023 01:09
Parsing a CSV using a stream pipeline (async)
import { parse } from 'csv-parse'
import fs from 'fs'
import { pipeline } from 'stream/promises'
/**
* Do something async with a row.
*
* @param {*} row A row of the CSV as an object.
*/
async function handleRow(row) {
@eddieajau
eddieajau / extractColumn.js
Created August 12, 2014 23:49
Extract a column from an array of JavaScript objects.
function extractColumn(arr, column) {
function reduction(previousValue, currentValue) {
previousValue.push(currentValue[column]);
return previousValue;
}
return arr.reduce(reduction, []);
}
@eddieajau
eddieajau / typeorm_model.ts
Last active May 9, 2019 02:49
Example of automatic translation of a JSON property in a TypeORM model.
import { PrimaryGeneratedColumn, Entity, Column } from 'typeorm';
@Entity('foo')
export class Foo {
@PrimaryGeneratedColumn()
public id: number;
@Column({ default: '' })
public get link(): string {
let value = this._link;
@eddieajau
eddieajau / date.php
Created September 20, 2011 22:10
Joomla platform JHtmlDate::ago concept
class JHtmlDHDate
{
/**
* Outputs a relative time.
*
* @param mixed $date A string or DateTime object representing the time in the past to compare to now.
*
* @return string
*
* @since 1.0.1
@eddieajau
eddieajau / createSequelizeStream.js
Created March 20, 2016 22:14
Module to allow a Sequelize select query to be converted into a stream.
"use strict";
var Readable = require('stream').Readable;
/**
* Create a stream from batching a Sequelize select query.
*
* @param {Function} query - Function that returns a promise.
* @param {object} options
* @param {number} options.limit - The limit for the number of rows to return in each "batch"
class SafeObserver {
constructor(private _next: (value: any) => void = () => {},
public error: (errorValue: any) => void = (e: any) => { throw e; },
private _complete: (completeValue?: any) => void = () => {}) {}
public next(value: any) {
try {
this._next(value);
}
catch (e) {
@eddieajau
eddieajau / joomla_components.xml
Created January 27, 2013 23:44
Eclipse snippet category for general purpose Joomla 2.5/3 Component snippets. Includes: * PHP File Header * XML Installation File (Component) * INI File Header * Master Component File * Master Controller * Basic View * Basic Model * Basic View with Toolbar * Basic Controller Display Override * Basic Component Helper * Basic config.xml * Basic ac…
<?xml version="1.0" encoding="UTF-16" standalone="no"?>
<snippets>
<category filters="*" id="category_1275479375591" initial_state="1" label="Joomla Components" largeicon="" smallicon="">
<description><![CDATA[Snippets that support the general needs for any Joomla component.]]></description>
<item category="category_1275479375591" class="" editorclass="" id="item_1275479460203" label="PHP File Header" largeicon="" smallicon="" snippetProvider="org.eclipse.wst.common.snippets.ui.TextSnippetProvider">
<description><![CDATA[The standard header for a PHP file.]]></description>
<content><![CDATA[<?php
/**
* @version $Id$
* @package ${PACKAGE}
@eddieajau
eddieajau / fw_release_strategy.md
Last active December 31, 2015 11:59
Joomla Framework Release Strategy

Joomla! Framework Release Strategy

1. Introduction

1.1 Revision History

Version Date Notes
1.0.0 16 December 2013 First version
@eddieajau
eddieajau / DataMapper.php
Created December 2, 2013 21:44
Data mappers
<?php
/**
* @copyright Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE
*/
namespace Joomla\Data;
use Psr\Cache\CacheInterface;