Today I needed the Pattern Modifiers documentation, particularly for ‘U’, i.e. ungreedy.
Author Archives: Jay Jay
Hacker’s Delight
Heard about Hacker’s Delight, will look into it when I have more time…
Install Node and NPM
Today I followed these instructions to install Node.js and NPM:
echo "deb http://ftp.au.debian.org/debian wheezy-backports main" >> /etc/apt/sources.list apt-get update apt-get install nodejs-legacy curl --insecure https://www.npmjs.org/install.sh | bash
Howto enable word-wrap in NetBeans
Today I wanted to wrap the text in my NetBeans editor. I found this article which pointed me to Tools -> Options -> Editor -> All Langauges -> Line Wrap: Anywhere. Everything is easy when you know how!
HTTP Header Field Definitions
Reading about HTTP Header Field Definitions.
UnsupportedClassVersionError in Closure
Today while Getting Started with the Closure Compiler Application I ran into the following trouble:
jj5@mercy:~/Desktop/compiler-latest$ java -jar compiler.jar --help
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/google/javascript/jscomp/CommandLineRunner : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: com.google.javascript.jscomp.CommandLineRunner. Program will exit.
To fix the problem I installed jdk-7:
root@mercy:/home/jj5# apt-get install openjdk-7-dbg openjdk-7-demo openjdk-7-doc openjdk-7-jdk openjdk-7-jre
PHP WebDriver
Selenium API for PHP: PHP WebDriver.
PHPUnit Manual
I should really read the PHPUnit Manual…
PHP Gettext
TODO: learn how to integrate Gettext in my PHP apps.
PHP spl_autoload_register
Today I used spl_autoload_register again.
This time to load default concrete classes. For example in my framework I have a class called SlibUser:
class SlibUser extends SlibRecord {
public static function Load( $id ) {
$args = array( 'id' => $id );
$data = db()->get_row( 'select * from /*prefix*/user where id = :id', $args );
if ( $data ) { return new User( $data ); }
return null;
}
}
As you can see SlibUser creates a new User. That User can be provisioned by a user of my framework, but if they don’t specify a particular User definition I give them a default implementation with spl_autoload_register, e.g.:
<?php
function load_slib_mock( $class = false ) {
//var_dump( $class );
static $classes;
static $files;
if ( ! $files ) { $files = array(); }
if ( ! $classes ) {
$classes = array(
// URL
'Uri',
'UriPath',
'UriPathBuilder',
'UriQuery',
'UriQueryBuilder',
'UriQueryNode',
// framework:
'Auth',
'Column',
'FrontController',
'Option',
'OptionGroup',
'ResourceManager',
'Schema',
'Settings',
'Table',
'Variable',
// database:
'Database',
'DatabaseUpgrader',
// ORM:
'Browser',
'GeoipLocation',
'HttpAccept',
'HttpAcceptEncoding',
'HttpAcceptLanguage',
'HttpMethod',
'HttpUserAgent',
'Partition',
'Request',
'Role',
'Session',
'SessionSettings',
'User',
'UserPartition',
'UserSettings'
);
}
if ( ! in_array( $class, $classes ) ) { return false; }
$path = "/var/tmp/slib-$class.php";
if ( ! file_exists( $path ) ) {
$content = "<?php class $class extends Slib$class {}";
$file = fopen( $path, 'w' );
if ( ! $file ) { throw new IOException( "Cannot write '$file'." ); }
fwrite( $file, $content );
fclose( $file );
}
require_once( $path );
return true;
}
// autoload handler:
spl_autoload_register( 'load_slib_mock', true, true );