Google code:
svn checkout https://example.googlecode.com/svn/trunk/ example_directory --username example@gmail.com
Assembla:
svn checkout https://subversion.assembla.com/svn/example/ example_directory --username your_username
A piggy bank of commands, fixes, succinct reviews, some mini articles and technical opinions from a (mostly) Perl developer.
Jump to
Timing out a call to a remote service in Perl
#!/usr/bin/perl
use strict;
use warnings;
select STDERR; $| = 1;
select STDOUT; $| = 1;
my $server = 'remote server';
my $timeout = 3;
my $retries = 3;
my $retry = 1;
my $con = 0; # connection object
my $err; # error message
while (not $con and not $err and $retry <= $retries) {
print "starting block...\n";
eval {
print "eval'ing\n";
local $SIG{ALRM} = sub { die "alarm\n" }; # NB: \n required
alarm $timeout;
# make connection to server
sleep $timeout + 1; # fake
# if we reached here, the connection was successful
alarm 0;
};
if ($@) {
if ($@ eq "alarm\n") {
# timed out
print "Timed out $retry time(s) connecting to $server\n";
}
else {
print "died unexpectedly\n";
$err = $@;
$err =~ s' at /[\w\./]+\.pm line \d+$'' if $err;
}
}
else {
print "No problem!!!\n";
$con = 1;
}
$retry++;
}
print "ERROR: $err\n" if $err;
print "finished. connection = '$con'\n";
Parse XML in PHP
http://php.net/manual/en/function.file-get-contents.php - fetch URL
http://php.net/manual/en/simplexmlelement.xpath.php - parse XML
http://www.php.net/manual/en/simplexml.examples-basic.php - register namespaces, etc.
Example for Google calendar. Most important parts are the namespaces and (string) casting.
http://php.net/manual/en/simplexmlelement.xpath.php - parse XML
http://www.php.net/manual/en/simplexml.examples-basic.php - register namespaces, etc.
Example for Google calendar. Most important parts are the namespaces and (string) casting.
$contents = file_get_contents($calendar_url); // should end with 'full', not 'basic'
$xml = new SimpleXMLElement($contents);
$namespaces = $xml->getDocNamespaces();
$xml->registerXPathNamespace('__empty_ns', $namespaces['']);
$xml->registerXPathNamespace('gd', 'http://schemas.google.com/g/2005'); # xmlns:gd='http://schemas.google.com/g/2005'
$entries = $xml->xpath("//__empty_ns:entry");
while(list( , $node) = each($entries)) {
$time_nodes = $node->xpath("gd:when/@startTime");
while ($time_node = each($time_nodes)) {
# <gd:when endTime="2011-08-19T17:00:00.000+01:00" startTime="2011-08-19T14:00:00.000+01:00"></gd:when>
$time_text = (string)$time_node[1]->startTime;
die "time = $time_text\n";
Labels:
namespaces,
php,
url,
xml
Parse HTML with Ruby and Nokogiri
doc = Nokogiri::HTML(open(filename, 'r'))
puts doc.xpath('//title')[0].inner_html
puts doc.xpath('//h2')
Ruby: Read+write to database
require 'sqlite3'
db = SQLite3::Database.new( "db1" )
db.execute('INSERT INTO table_name (id, text) VALUES (1, "hello")')
db.execute( "SELECT* FROM table_name" ) do |row|
puts row.inspect
end
Have Perl debugger break on a sub in any module
b Name::Of::Module::name_of_sub
Labels:
break,
debugging,
perl,
subroutines
Easy way to convert epoch seconds to human readable date in Perl
Easiest way:
print scalar localtime(946684800);
Prints:
Sat Jan 1 00:00:00 2000
Next easiest, more flexible:
require POSIX; print POSIX::strftime("%Y-%m-%d %H:%M:%S", localtime((946684800)));
Prints:
2000-01-01 00:00:00
Subscribe to:
Comments (Atom)