Leave a comment
gaoithe
08 February 2010 @ 08:39 am
11 September 2009 @ 11:05 pm
It was trivial to modify the XQual XStudio launcher for perl to work for tcl (ActiveTcl).
It is working for very simple tcl scripts with ActiveTcl 8.5 (and with modification with 8.4).
Change the perl CLauncherImpl.java thusly:
s/perl/tcl/gi; s/\.pl/\.tcl/g;
Tcl interpreter: C:/Tcl/bin/tclsh85.exe
It implements the same test interface as XStudio perl (and other):
* Test generates log.txt with lines including [Success] or [Failure] or [Log].
* Test is deemed complete when a file test_completed.txt is created.
Note for XQual XStudio:
* tools seems very nice to use, developer good - closed source though ...
* source code for test launchers is provided in XAgent and XStudio dir trees.
* there doesn't seem to be a Developers Guide though it is referred to (there are javadocs)
* a launcher has 4 files (e.g. for tcl) tcl.jar and tcl.xml in launchers/, tcl/CLauncherImpl.java and buildTclLauncher.bat in src/*/ and build/
I've been evaluating using XQual XStudio as a test invoking tool. As opposed to Salome_tmf.
http://www.xqual.com/
http://xqual.freeforums.org/evaluat ing-test-tools-xqual-xstudio-salome-tmf-t 349.html
Files here:
http://www.dspsrv.com/~jamesc/torture/w ork/tool_xqual_xstudio/
/*
+--------------------------------------- -------------------------------+
| Class: CLauncher |
| |
| Developer: Eric Gavaldo (egavaldo@xqual.com) |
| Jumbo |
| James Coleman (jamesc@dspsrv.com) |
| |
+--------------------------------------- -------------------------------+
*/
/*
This file was created by changing the perl CLauncherImpl.java
s/perl/tcl/gi; s/\.pl/\.tcl/g;
It has been tested with ActiveTcl, tcl interpreter: C:/Tcl/bin/tclsh85.exe
It implements the same test interface as XStudio perl (and other).
Test generates log.txt with lines including [Success] or [Failure]
or [Log]. Test is deemed complete when a file test_completed.txt is created.
*/
package com.xqual.xlauncher.tcl;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.Vector;
import com.xqual.xagent.launcher.CExecutionStep;
import com.xqual.xagent.launcher.CLauncher;
import com.xqual.xagent.launcher.CParamParsingE xception;
import com.xqual.xagent.launcher.CReturnStatus;
import com.xqual.xagent.launcher.runner.CRunner;
import com.xqual.xagent.launcher.runner.IRunner;
import com.xqual.xcommon.CAttribute;
import com.xqual.xcommon.IConstantsResults;
import com.xqual.xlauncher.CTimeoutListener;
/**
* The
* @author egavaldo & jumbo & jamesc
*/
public class CLauncherImpl extends CLauncher implements IConstantsResults {
// +======================================= =======================+
// | Attributes |
// +======================================= =======================+
static final String TRACE_HEADER = "{tcl } ";
// parameters impacting executing at run time set by the test operator
private String testRootPath;
private int timeout = 600;
private String tclInstallPath;
private File tclInterpreter;
private File workingDir;
private static final String TCL_INTERPRETER_EXE = "tclsh85.exe";
// +======================================= =======================+
// | Constructors |
// +======================================= =======================+
public CLauncherImpl() {
super(TRACE_HEADER);
}
// +======================================= =======================+
// | Methods |
// +======================================= =======================+
public CReturnStatus initialize(int sutId, String sutName, String sutVersion) {
setSutDetails(sutId, sutName, sutVersion);
// check the configuration sent by the manager
printConfiguration();
Vector executionSteps = new Vector();
try {
// retrieve the parameters we need
testRootPath = getStringParamValue("General", "Test root path");
timeout = getIntegerParamValue("General", "Asynchronous timeout (in seconds)");
tclInstallPath = getStringParamValue("Tcl", "Tcl install path");
tclInterpreter = new File(tclInstallPath + "\\" + TCL_INTERPRETER_EXE);
} catch (CParamParsingException e) {
traceln(LOG_PRIORITY_SEVERE, "parsing error during initialization");
executionSteps.add(new CExecutionStep(RESULT_FAILURE, "Exception during initialize: " + e.getMessage()));
return new CReturnStatus(RESULT_FAILURE, executionSteps);
}
return new CReturnStatus(RESULT_SUCCESS, executionSteps);
}
public CReturnStatus preRun(int testId, String testPath, String testName, Vector attributes) {
traceln(LOG_PRIORITY_INFO, "preRun testId=" + testId + " testPath=" + testPath + ":" + testName + "...");
Vector executionSteps = new Vector();
return new CReturnStatus(RESULT_SUCCESS, executionSteps);
}
public CReturnStatus run(int testId, String testPath, String testName, int testcaseIndex) {
traceln(LOG_PRIORITY_INFO, "run testId=" + testId + " testPath=" + testRootPath + "/" + testPath + "/" + testName + " testcaseIndex=" + testcaseIndex + "...");
Vector executionSteps = new Vector();
String scriptParentFolderPath = testRootPath + "/" + testPath + "/";
workingDir = new File(scriptParentFolderPath);
// +------------------------------------+
// | Interpret the script
// +------------------------------------+
CRunner tclRunner = new CRunner("[" + testId + "] "+ testPath + ":" + testName + "." + testcaseIndex,
tclInterpreter.toString() + " " + testRootPath + "/" + testPath + "/" + testName + ".tcl " +
"/debug " +
"/testcaseIndex=" + testcaseIndex,
workingDir);
short result = tclRunner.requestAction(IRunner.START_PR OCESS, IRunner.DO_NOT_WAIT_END_OF_EXECUTION);
if (result == RESULT_FAILURE) {
executionSteps.add(new CExecutionStep(RESULT_FAILURE, "script interpretation failed"));
return new CReturnStatus(RESULT_FAILURE, executionSteps);
}
// to check if the execution completed correctly, we need to check if the "test_completed.txt" has been created
short resultTimeout = CTimeoutListener.waitForFile(new File(workingDir + "/test_completed.txt"), timeout);
if (resultTimeout != RESULT_SUCCESS) {
executionSteps.add(new CExecutionStep(RESULT_SUCCESS, "timeout of " + timeout + " seconds to execute the test case expired"));
return new CReturnStatus(RESULT_FAILURE, executionSteps);
}
return parseResultFile(executionSteps);
}
public CReturnStatus postRun(int testId, String testPath, String testName) {
traceln(LOG_PRIORITY_INFO, "postRun testId=" + testId + " testPath=" + testPath + ":" + testName + "...");
Vector executionSteps = new Vector();
executionSteps.add(new CExecutionStep(RESULT_SUCCESS, "postRun: succeeded"));
return new CReturnStatus(RESULT_SUCCESS, null);
}
public CReturnStatus terminate() {
Vector executionSteps = new Vector();
executionSteps.add(new CExecutionStep(RESULT_SUCCESS, "Terminate"));
return new CReturnStatus(RESULT_SUCCESS, executionSteps);
}
// +--------------------------+
// ¦ Utilities ¦
// +--------------------------+
private CReturnStatus parseResultFile(Vector executionSteps) {
// parse the result file to get the result and the execution steps
File resultFile = new File(workingDir + "/log.txt");
if (!resultFile.exists()) {
traceln(LOG_PRIORITY_SEVERE, "Result file not found!");
executionSteps.add(new CExecutionStep(RESULT_FAILURE, "run: result file not found!"));
return new CReturnStatus(RESULT_FAILURE, executionSteps);
} else {
executionSteps.add(new CExecutionStep(RESULT_SUCCESS, "run: result file found"));
}
String line, message;
boolean errorDetected = false;
try {
FileInputStream fileInputStream = new FileInputStream(resultFile);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream));
while ((line = bufferedReader.readLine()) != null) {
line = line.trim();
System.out.println(">" + line);
if (line.indexOf("[Success]")>=0) {
message = line.substring(10, line.length()); // [Success] length = 9
executionSteps.add(new CExecutionStep(RESULT_SUCCESS, message));
} else if (line.indexOf("[Failure]")>=0) {
message = line.substring(10, line.length());
executionSteps.add(new CExecutionStep(RESULT_FAILURE, message));
errorDetected = true;
} else if (line.indexOf("[Log]")>=0) {
message = line.substring(6, line.length());
executionSteps.add(new CExecutionStep(RESULT_UNKNOWN, message));
} else {
//traceln(LOG_PRIORITY_SEVERE, "unknown tag!");
}
}
} catch (Exception e) {
traceln(LOG_PRIORITY_SEVERE, "exception whle parsing the result file: " + e);
executionSteps.add(new CExecutionStep(RESULT_FAILURE, "Exception whle parsing the result file: " + e));
errorDetected = true;
}
if (errorDetected) {
return new CReturnStatus(RESULT_FAILURE, executionSteps);
} else {
return new CReturnStatus(RESULT_SUCCESS, executionSteps);
}
}
}
It is working for very simple tcl scripts with ActiveTcl 8.5 (and with modification with 8.4).
Change the perl CLauncherImpl.java thusly:
s/perl/tcl/gi; s/\.pl/\.tcl/g;
Tcl interpreter: C:/Tcl/bin/tclsh85.exe
It implements the same test interface as XStudio perl (and other):
* Test generates log.txt with lines including [Success] or [Failure] or [Log].
* Test is deemed complete when a file test_completed.txt is created.
Note for XQual XStudio:
* tools seems very nice to use, developer good - closed source though ...
* source code for test launchers is provided in XAgent and XStudio dir trees.
* there doesn't seem to be a Developers Guide though it is referred to (there are javadocs)
* a launcher has 4 files (e.g. for tcl) tcl.jar and tcl.xml in launchers/, tcl/CLauncherImpl.java and buildTclLauncher.bat in src/*/ and build/
I've been evaluating using XQual XStudio as a test invoking tool. As opposed to Salome_tmf.
http://www.xqual.com/
http://xqual.freeforums.org/evaluat
Files here:
http://www.dspsrv.com/~jamesc/torture/w
/*
+---------------------------------------
| Class: CLauncher |
| |
| Developer: Eric Gavaldo (egavaldo@xqual.com) |
| Jumbo |
| James Coleman (jamesc@dspsrv.com) |
| |
+---------------------------------------
*/
/*
This file was created by changing the perl CLauncherImpl.java
s/perl/tcl/gi; s/\.pl/\.tcl/g;
It has been tested with ActiveTcl, tcl interpreter: C:/Tcl/bin/tclsh85.exe
It implements the same test interface as XStudio perl (and other).
Test generates log.txt with lines including [Success] or [Failure]
or [Log]. Test is deemed complete when a file test_completed.txt is created.
*/
package com.xqual.xlauncher.tcl;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.Vector;
import com.xqual.xagent.launcher.CExecutionStep;
import com.xqual.xagent.launcher.CLauncher;
import com.xqual.xagent.launcher.CParamParsingE
import com.xqual.xagent.launcher.CReturnStatus;
import com.xqual.xagent.launcher.runner.CRunner;
import com.xqual.xagent.launcher.runner.IRunner;
import com.xqual.xcommon.CAttribute;
import com.xqual.xcommon.IConstantsResults;
import com.xqual.xlauncher.CTimeoutListener;
/**
* The
CLauncherImpl implementation of ILauncher for Tcl.* @author egavaldo & jumbo & jamesc
*/
public class CLauncherImpl extends CLauncher implements IConstantsResults {
// +=======================================
// | Attributes |
// +=======================================
static final String TRACE_HEADER = "{tcl } ";
// parameters impacting executing at run time set by the test operator
private String testRootPath;
private int timeout = 600;
private String tclInstallPath;
private File tclInterpreter;
private File workingDir;
private static final String TCL_INTERPRETER_EXE = "tclsh85.exe";
// +=======================================
// | Constructors |
// +=======================================
public CLauncherImpl() {
super(TRACE_HEADER);
}
// +=======================================
// | Methods |
// +=======================================
public CReturnStatus initialize(int sutId, String sutName, String sutVersion) {
setSutDetails(sutId, sutName, sutVersion);
// check the configuration sent by the manager
printConfiguration();
Vector
try {
// retrieve the parameters we need
testRootPath = getStringParamValue("General", "Test root path");
timeout = getIntegerParamValue("General", "Asynchronous timeout (in seconds)");
tclInstallPath = getStringParamValue("Tcl", "Tcl install path");
tclInterpreter = new File(tclInstallPath + "\\" + TCL_INTERPRETER_EXE);
} catch (CParamParsingException e) {
traceln(LOG_PRIORITY_SEVERE, "parsing error during initialization");
executionSteps.add(new CExecutionStep(RESULT_FAILURE, "Exception during initialize: " + e.getMessage()));
return new CReturnStatus(RESULT_FAILURE, executionSteps);
}
return new CReturnStatus(RESULT_SUCCESS, executionSteps);
}
public CReturnStatus preRun(int testId, String testPath, String testName, Vector
traceln(LOG_PRIORITY_INFO, "preRun testId=" + testId + " testPath=" + testPath + ":" + testName + "...");
Vector
return new CReturnStatus(RESULT_SUCCESS, executionSteps);
}
public CReturnStatus run(int testId, String testPath, String testName, int testcaseIndex) {
traceln(LOG_PRIORITY_INFO, "run testId=" + testId + " testPath=" + testRootPath + "/" + testPath + "/" + testName + " testcaseIndex=" + testcaseIndex + "...");
Vector
String scriptParentFolderPath = testRootPath + "/" + testPath + "/";
workingDir = new File(scriptParentFolderPath);
// +------------------------------------+
// | Interpret the script
// +------------------------------------+
CRunner tclRunner = new CRunner("[" + testId + "] "+ testPath + ":" + testName + "." + testcaseIndex,
tclInterpreter.toString() + " " + testRootPath + "/" + testPath + "/" + testName + ".tcl " +
"/debug " +
"/testcaseIndex=" + testcaseIndex,
workingDir);
short result = tclRunner.requestAction(IRunner.START_PR
if (result == RESULT_FAILURE) {
executionSteps.add(new CExecutionStep(RESULT_FAILURE, "script interpretation failed"));
return new CReturnStatus(RESULT_FAILURE, executionSteps);
}
// to check if the execution completed correctly, we need to check if the "test_completed.txt" has been created
short resultTimeout = CTimeoutListener.waitForFile(new File(workingDir + "/test_completed.txt"), timeout);
if (resultTimeout != RESULT_SUCCESS) {
executionSteps.add(new CExecutionStep(RESULT_SUCCESS, "timeout of " + timeout + " seconds to execute the test case expired"));
return new CReturnStatus(RESULT_FAILURE, executionSteps);
}
return parseResultFile(executionSteps);
}
public CReturnStatus postRun(int testId, String testPath, String testName) {
traceln(LOG_PRIORITY_INFO, "postRun testId=" + testId + " testPath=" + testPath + ":" + testName + "...");
Vector
executionSteps.add(new CExecutionStep(RESULT_SUCCESS, "postRun: succeeded"));
return new CReturnStatus(RESULT_SUCCESS, null);
}
public CReturnStatus terminate() {
Vector
executionSteps.add(new CExecutionStep(RESULT_SUCCESS, "Terminate"));
return new CReturnStatus(RESULT_SUCCESS, executionSteps);
}
// +--------------------------+
// ¦ Utilities ¦
// +--------------------------+
private CReturnStatus parseResultFile(Vector
// parse the result file to get the result and the execution steps
File resultFile = new File(workingDir + "/log.txt");
if (!resultFile.exists()) {
traceln(LOG_PRIORITY_SEVERE, "Result file not found!");
executionSteps.add(new CExecutionStep(RESULT_FAILURE, "run: result file not found!"));
return new CReturnStatus(RESULT_FAILURE, executionSteps);
} else {
executionSteps.add(new CExecutionStep(RESULT_SUCCESS, "run: result file found"));
}
String line, message;
boolean errorDetected = false;
try {
FileInputStream fileInputStream = new FileInputStream(resultFile);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream));
while ((line = bufferedReader.readLine()) != null) {
line = line.trim();
System.out.println(">" + line);
if (line.indexOf("[Success]")>=0) {
message = line.substring(10, line.length()); // [Success] length = 9
executionSteps.add(new CExecutionStep(RESULT_SUCCESS, message));
} else if (line.indexOf("[Failure]")>=0) {
message = line.substring(10, line.length());
executionSteps.add(new CExecutionStep(RESULT_FAILURE, message));
errorDetected = true;
} else if (line.indexOf("[Log]")>=0) {
message = line.substring(6, line.length());
executionSteps.add(new CExecutionStep(RESULT_UNKNOWN, message));
} else {
//traceln(LOG_PRIORITY_SEVERE, "unknown tag!");
}
}
} catch (Exception e) {
traceln(LOG_PRIORITY_SEVERE, "exception whle parsing the result file: " + e);
executionSteps.add(new CExecutionStep(RESULT_FAILURE, "Exception whle parsing the result file: " + e));
errorDetected = true;
}
if (errorDetected) {
return new CReturnStatus(RESULT_FAILURE, executionSteps);
} else {
return new CReturnStatus(RESULT_SUCCESS, executionSteps);
}
}
}
03 September 2009 @ 12:44 am
Let's all sing the "let's automate" song!
Incidentally started new job with Intune http://www.intunenetworks.com Monday.
Finished with Sun http://www.sun.com Friday!
Kids all started back to school Tue.
script created just now: bt-sync-mobile.sh
TODO: cron job to daily sync phone
Incidentally started new job with Intune http://www.intunenetworks.com Monday.
Finished with Sun http://www.sun.com Friday!
Kids all started back to school Tue.
script created just now: bt-sync-mobile.sh
TODO: cron job to daily sync phone
#!/bin/bash
#INVOCATION:
#$ bt-sync-mobile.sh [device [dir]]
#$ bt-sync-mobile.sh Pooky 'C:\Data\Images\' 2>&1 |tee .btsync/bt_sync_images.log
#Stuff is synched to ~/.btsync/`echo $dir |sed 's/[\/ \\"]/_/g'`
#wami*.gpx and *.jpg files are cleared off device if synced successfully
#
#REQUIREMENTS:
#linux with bluetooth hardware
#various bluetooth linux utils, these ubuntu packages:
#bluez bluez-utils(?) obexftp openobex-apps
#
# some of these come by default, and some are not needed, but this is on the system the script was tested on
#$ dpkg -l |egrep "bluez|hci|obex" |sed 's/ */ /g'
#ii bluez 4.32-0ubuntu4.1 Bluetooth tools and daemons
#ii bluez-alsa 4.32-0ubuntu4.1 Bluetooth audio support
#ii bluez-cups 4.32-0ubuntu4.1 Bluetooth printer driver for CUPS
#ii bluez-gnome 1.8-0ubuntu5 Bluetooth utilities for GNOME
#ii bluez-gstreamer 4.32-0ubuntu4.1 Bluetooth gstreamer support
#ii bluez-utils 4.32-0ubuntu4.1 Transitional package
#ii gnome-vfs-obexftp 0.4-1build1 GNOME VFS module for OBEX FTP
#ii libopenobex1 1.5-1 OBEX protocol library
#ii libopenobex1-dev 1.5-1 OBEX protocol library - development files
#ii obex-data-server 0.4.4-0ubuntu1 D-Bus service for OBEX client and server sid
#ii obexftp 0.19-7ubuntu2 file transfer utility for devices that use t
#ii openobex-apps 1.5-1 Applications for OpenOBEX
#ii python-bluez 0.16-1ubuntu1 Python wrappers around BlueZ for rapid bluet
#
#NOTES:
#The bluetooth connect seems to fail sometimes.
#Files with funny chars in name could cause a problem. maybe. () are okay
#Files to clear out are hardcoded.
#It's simple - just syncs files up if they don't exist on host.
#There are various other TODOs
DEVICENAME=$1
#echo all is $*
BTSYNCHOME=~/.btsync
# DEVICENAME can be blank (scans all devices)
HCISCAN=`hcitool scan |grep "$DEVICENAME" |grep -v ^Scanning `
#Scanning ...
# 00:1F:5D:BF:29:39 Nokia 3120 mmfa
# 00:17:E5:EE:29:18 Pooky
#check for duplicates
DEVCOUNT=`echo "$HCISCAN" |wc -l`
HCISCAN_S=`echo "$HCISCAN" |sed 's/[\t ][\t ]*/ /g;s/^ *//;'`
BTADDR=`echo "$HCISCAN_S" |cut -d' ' -f1`
DEVNAME=`echo "$HCISCAN_S" |cut -d' ' -f2-`
#echo "DEVCOUNT=$DEVCOUNT HCISCAN=$HCISCAN
#BTADDR=$BTADDR DEVNAME=$DEVNAME"
if [[ $DEVCOUNT -ne 1 ]] ; then
echo "usage: $0
e.g. $0 42:54:41:44:44:52 \"C:/Data/\"
Which device?
$HCISCAN
"
exit;
fi
echo "BTADDR=$BTADDR DEVNAME=$DEVNAME"
#sudo hcitool info $BTADDR
DIRTOSYNC=$2
# TODO pass in dir/file to sync on cmd line in $2
if [[ -z $DIRTOSYNC ]] ; then
echo "usage: $0
e.g. $0 42:54:41:44:44:52 \"C:/Data/\"
e.g. $0 \$BTADDR \"C:/Data/Images/\"
e.g. $0 $BTADDR \"C:/Data/Videos/\"
e.g. $0 42:54:41:44:44:52 \"C:/Data/Sounds/\"
"
DIRTOSYNC="C:/Data/"
#exit;
fi
mkdir -p $BTSYNCHOME
DIRTOSYNC_HASH=`echo "$DIRTOSYNC" |sed 's/[\/ \\"]/_/g'`
#obexftp -b $BTADDR -v -l ""
#obexftp -b $BTADDR -v -l "C:/"
echo DIRTOSYNC=$DIRTOSYNC DIRTOSYNC_HASH=$DIRTOSYNC_HASH
obexftp -b $BTADDR -v -l "$DIRTOSYNC" |tee $BTSYNCHOME/$DIRTOSYNC_HASH.list
# cd to where we are getting files
mkdir -p $BTSYNCHOME/$DIRTOSYNC_HASH
cd /tmp
cd $BTSYNCHOME/$DIRTOSYNC_HASH
pwd
echo get list of all files
echo TODO: parse xml safely/properly
#
#
FILES=`grep " [Error: Irreparable invalid markup ('<file [...] newer/different>') in entry. Owner must fix manually. Raw contents below.]
Let's all sing the "let's automate" song!
Incidentally started new job with Intune http://www.intunenetworks.com Monday.
Finished with Sun http://www.sun.com Friday!
Kids all started back to school Tue.
script created just now: bt-sync-mobile.sh
TODO: cron job to daily sync phone
<pre>
#!/bin/bash
#INVOCATION:
#$ bt-sync-mobile.sh [device [dir]]
#$ bt-sync-mobile.sh Pooky 'C:\Data\Images\' 2>&1 |tee .btsync/bt_sync_images.log
#Stuff is synched to ~/.btsync/`echo $dir |sed 's/[\/ \\"]/_/g'`
#wami*.gpx and *.jpg files are cleared off device if synced successfully
#
#REQUIREMENTS:
#linux with bluetooth hardware
#various bluetooth linux utils, these ubuntu packages:
#bluez bluez-utils(?) obexftp openobex-apps
#
# some of these come by default, and some are not needed, but this is on the system the script was tested on
#$ dpkg -l |egrep "bluez|hci|obex" |sed 's/ */ /g'
#ii bluez 4.32-0ubuntu4.1 Bluetooth tools and daemons
#ii bluez-alsa 4.32-0ubuntu4.1 Bluetooth audio support
#ii bluez-cups 4.32-0ubuntu4.1 Bluetooth printer driver for CUPS
#ii bluez-gnome 1.8-0ubuntu5 Bluetooth utilities for GNOME
#ii bluez-gstreamer 4.32-0ubuntu4.1 Bluetooth gstreamer support
#ii bluez-utils 4.32-0ubuntu4.1 Transitional package
#ii gnome-vfs-obexftp 0.4-1build1 GNOME VFS module for OBEX FTP
#ii libopenobex1 1.5-1 OBEX protocol library
#ii libopenobex1-dev 1.5-1 OBEX protocol library - development files
#ii obex-data-server 0.4.4-0ubuntu1 D-Bus service for OBEX client and server sid
#ii obexftp 0.19-7ubuntu2 file transfer utility for devices that use t
#ii openobex-apps 1.5-1 Applications for OpenOBEX
#ii python-bluez 0.16-1ubuntu1 Python wrappers around BlueZ for rapid bluet
#
#NOTES:
#The bluetooth connect seems to fail sometimes.
#Files with funny chars in name could cause a problem. maybe. () are okay
#Files to clear out are hardcoded.
#It's simple - just syncs files up if they don't exist on host.
#There are various other TODOs
DEVICENAME=$1
#echo all is $*
BTSYNCHOME=~/.btsync
# DEVICENAME can be blank (scans all devices)
HCISCAN=`hcitool scan |grep "$DEVICENAME" |grep -v ^Scanning `
#Scanning ...
# 00:1F:5D:BF:29:39 Nokia 3120 mmfa
# 00:17:E5:EE:29:18 Pooky
#check for duplicates
DEVCOUNT=`echo "$HCISCAN" |wc -l`
HCISCAN_S=`echo "$HCISCAN" |sed 's/[\t ][\t ]*/ /g;s/^ *//;'`
BTADDR=`echo "$HCISCAN_S" |cut -d' ' -f1`
DEVNAME=`echo "$HCISCAN_S" |cut -d' ' -f2-`
#echo "DEVCOUNT=$DEVCOUNT HCISCAN=$HCISCAN
#BTADDR=$BTADDR DEVNAME=$DEVNAME"
if [[ $DEVCOUNT -ne 1 ]] ; then
echo "usage: $0 <devicename> <dir_to_sync>
e.g. $0 42:54:41:44:44:52 \"C:/Data/\"
Which device?
$HCISCAN
"
exit;
fi
echo "BTADDR=$BTADDR DEVNAME=$DEVNAME"
#sudo hcitool info $BTADDR
DIRTOSYNC=$2
# TODO pass in dir/file to sync on cmd line in $2
if [[ -z $DIRTOSYNC ]] ; then
echo "usage: $0 <devicename> <dir_to_sync>
e.g. $0 42:54:41:44:44:52 \"C:/Data/\"
e.g. $0 \$BTADDR \"C:/Data/Images/\"
e.g. $0 $BTADDR \"C:/Data/Videos/\"
e.g. $0 42:54:41:44:44:52 \"C:/Data/Sounds/\"
"
DIRTOSYNC="C:/Data/"
#exit;
fi
mkdir -p $BTSYNCHOME
DIRTOSYNC_HASH=`echo "$DIRTOSYNC" |sed 's/[\/ \\"]/_/g'`
#obexftp -b $BTADDR -v -l ""
#obexftp -b $BTADDR -v -l "C:/"
echo DIRTOSYNC=$DIRTOSYNC DIRTOSYNC_HASH=$DIRTOSYNC_HASH
obexftp -b $BTADDR -v -l "$DIRTOSYNC" |tee $BTSYNCHOME/$DIRTOSYNC_HASH.list
# cd to where we are getting files
mkdir -p $BTSYNCHOME/$DIRTOSYNC_HASH
cd /tmp
cd $BTSYNCHOME/$DIRTOSYNC_HASH
pwd
echo get list of all files
echo TODO: parse xml safely/properly
# <folder name="whereami" modified="20080825T144716Z" user-perm="RWD" mem-type="DEV"/>
# <file name="CapsOff.sisx" size="25568" modified="20080331T131250Z" user-perm="RWD"/>
FILES=`grep "<file name=" $BTSYNCHOME/$DIRTOSYNC_HASH.list |cut -d'"' -f2 `
echo FILES=$FILES
## forget about first retrieve or not, just check files on each system
#if [[ -f $BTSYNCHOME/$DIRTOSYNC_HASH.success ]] ; then
#echo for second/.. retrieve just get differences
echo TODO: recurse into directories
echo TODO get updated files, now we get new files only
function wipe_existing_files_from_list () {
echo for now we check if file exists already and wipe from list
##file list to retrieve by eliminating ones already retrieved
FILESTOGET=
for F in $FILES ; do
if [[ ! -f $F ]] ; then
FILESTOGET="$FILESTOGET $F"
fi
done
FILES="$FILESTOGET"
#diff $BTSYNCHOME/$DIRTOSYNC_HASH $BTSYNCHOME/$DIRTOSYNC_HASH.success
#mv $BTSYNCHOME/$DIRTOSYNC_HASH $BTSYNCHOME/$DIRTOSYNC_HASH.success
}
function get_the_files () {
if [[ ! -z $FILES ]] ; then
echo get the files
obexftp -b $BTADDR -v -c "$DIRTOSYNC" -g $FILES |tee $BTSYNCHOME/$DIRTOSYNC_HASH.get
# can obexftp do a dir? would be handy.
#obexftp -b $BTADDR -v -g "$DIRTOSYNC" |tee $BTSYNCHOME/$DIRTOSYNC_HASH.getdir
# also -G (get and delete) could be used for some files
fi
}
# TODO/half DONE track and check each file seperately
# TODO maybe if we got the file, store the associated line then in .success file
# use size/date in xml and on file system.
# ideally we want commands: GET[and remove] if newer/different
function track_the_files () {
#CHECKFILES=`echo $FILES |sed 's/ / && -f /g'`
#if [[ $CHECKFILES ]] ; then
# mv $BTSYNCHOME/$DIRTOSYNC_HASH $BTSYNCHOME/$DIRTOSYNC_HASH.success
for F in $FILES ; do
if [[ -f $F ]] ; then
# a file name which is part of others will cause problems
FILEINFO=`grep "<file name=" $BTSYNCHOME/$DIRTOSYNC_HASH.list |grep $F`
echo "$FILEINFO" >> $BTSYNCHOME/$DIRTOSYNC_HASH.success
fi
done
}
## TODO cleanup all files on mobile retrieved this time or previous
## allows syncing as soon as possible but cleaning after longer (keep recent photos, traces, ...)
# cleanup files matching certain patterns on mobile if they were successfully retrieved
# we could use -G earlier (get and delete)
function clean_the_files () {
for F in $FILES ; do
###if [[ -f bin/eirkey.pl && ( -n ${FG#wami} || -n ${F%gpx} ) ]] ; then echo yep; fi
if [[ -f $F && ( -n ${F#wami*.gpx} || -n ${F#*.jpg} ) ]] ; then
obexftp -b $BTADDR -v -c "$DIRTOSYNC" -k $F |tee -a $BTSYNCHOME/$DIRTOSYNC_HASH.clean
fi
done
}
wipe_existing_files_from_list
echo files to get FILES=$FILES
get_the_files
track_the_files
clean_the_files
</pre>
Incidentally started new job with Intune http://www.intunenetworks.com Monday.
Finished with Sun http://www.sun.com Friday!
Kids all started back to school Tue.
script created just now: bt-sync-mobile.sh
TODO: cron job to daily sync phone
<pre>
#!/bin/bash
#INVOCATION:
#$ bt-sync-mobile.sh [device [dir]]
#$ bt-sync-mobile.sh Pooky 'C:\Data\Images\' 2>&1 |tee .btsync/bt_sync_images.log
#Stuff is synched to ~/.btsync/`echo $dir |sed 's/[\/ \\"]/_/g'`
#wami*.gpx and *.jpg files are cleared off device if synced successfully
#
#REQUIREMENTS:
#linux with bluetooth hardware
#various bluetooth linux utils, these ubuntu packages:
#bluez bluez-utils(?) obexftp openobex-apps
#
# some of these come by default, and some are not needed, but this is on the system the script was tested on
#$ dpkg -l |egrep "bluez|hci|obex" |sed 's/ */ /g'
#ii bluez 4.32-0ubuntu4.1 Bluetooth tools and daemons
#ii bluez-alsa 4.32-0ubuntu4.1 Bluetooth audio support
#ii bluez-cups 4.32-0ubuntu4.1 Bluetooth printer driver for CUPS
#ii bluez-gnome 1.8-0ubuntu5 Bluetooth utilities for GNOME
#ii bluez-gstreamer 4.32-0ubuntu4.1 Bluetooth gstreamer support
#ii bluez-utils 4.32-0ubuntu4.1 Transitional package
#ii gnome-vfs-obexftp 0.4-1build1 GNOME VFS module for OBEX FTP
#ii libopenobex1 1.5-1 OBEX protocol library
#ii libopenobex1-dev 1.5-1 OBEX protocol library - development files
#ii obex-data-server 0.4.4-0ubuntu1 D-Bus service for OBEX client and server sid
#ii obexftp 0.19-7ubuntu2 file transfer utility for devices that use t
#ii openobex-apps 1.5-1 Applications for OpenOBEX
#ii python-bluez 0.16-1ubuntu1 Python wrappers around BlueZ for rapid bluet
#
#NOTES:
#The bluetooth connect seems to fail sometimes.
#Files with funny chars in name could cause a problem. maybe. () are okay
#Files to clear out are hardcoded.
#It's simple - just syncs files up if they don't exist on host.
#There are various other TODOs
DEVICENAME=$1
#echo all is $*
BTSYNCHOME=~/.btsync
# DEVICENAME can be blank (scans all devices)
HCISCAN=`hcitool scan |grep "$DEVICENAME" |grep -v ^Scanning `
#Scanning ...
# 00:1F:5D:BF:29:39 Nokia 3120 mmfa
# 00:17:E5:EE:29:18 Pooky
#check for duplicates
DEVCOUNT=`echo "$HCISCAN" |wc -l`
HCISCAN_S=`echo "$HCISCAN" |sed 's/[\t ][\t ]*/ /g;s/^ *//;'`
BTADDR=`echo "$HCISCAN_S" |cut -d' ' -f1`
DEVNAME=`echo "$HCISCAN_S" |cut -d' ' -f2-`
#echo "DEVCOUNT=$DEVCOUNT HCISCAN=$HCISCAN
#BTADDR=$BTADDR DEVNAME=$DEVNAME"
if [[ $DEVCOUNT -ne 1 ]] ; then
echo "usage: $0 <devicename> <dir_to_sync>
e.g. $0 42:54:41:44:44:52 \"C:/Data/\"
Which device?
$HCISCAN
"
exit;
fi
echo "BTADDR=$BTADDR DEVNAME=$DEVNAME"
#sudo hcitool info $BTADDR
DIRTOSYNC=$2
# TODO pass in dir/file to sync on cmd line in $2
if [[ -z $DIRTOSYNC ]] ; then
echo "usage: $0 <devicename> <dir_to_sync>
e.g. $0 42:54:41:44:44:52 \"C:/Data/\"
e.g. $0 \$BTADDR \"C:/Data/Images/\"
e.g. $0 $BTADDR \"C:/Data/Videos/\"
e.g. $0 42:54:41:44:44:52 \"C:/Data/Sounds/\"
"
DIRTOSYNC="C:/Data/"
#exit;
fi
mkdir -p $BTSYNCHOME
DIRTOSYNC_HASH=`echo "$DIRTOSYNC" |sed 's/[\/ \\"]/_/g'`
#obexftp -b $BTADDR -v -l ""
#obexftp -b $BTADDR -v -l "C:/"
echo DIRTOSYNC=$DIRTOSYNC DIRTOSYNC_HASH=$DIRTOSYNC_HASH
obexftp -b $BTADDR -v -l "$DIRTOSYNC" |tee $BTSYNCHOME/$DIRTOSYNC_HASH.list
# cd to where we are getting files
mkdir -p $BTSYNCHOME/$DIRTOSYNC_HASH
cd /tmp
cd $BTSYNCHOME/$DIRTOSYNC_HASH
pwd
echo get list of all files
echo TODO: parse xml safely/properly
# <folder name="whereami" modified="20080825T144716Z" user-perm="RWD" mem-type="DEV"/>
# <file name="CapsOff.sisx" size="25568" modified="20080331T131250Z" user-perm="RWD"/>
FILES=`grep "<file name=" $BTSYNCHOME/$DIRTOSYNC_HASH.list |cut -d'"' -f2 `
echo FILES=$FILES
## forget about first retrieve or not, just check files on each system
#if [[ -f $BTSYNCHOME/$DIRTOSYNC_HASH.success ]] ; then
#echo for second/.. retrieve just get differences
echo TODO: recurse into directories
echo TODO get updated files, now we get new files only
function wipe_existing_files_from_list () {
echo for now we check if file exists already and wipe from list
##file list to retrieve by eliminating ones already retrieved
FILESTOGET=
for F in $FILES ; do
if [[ ! -f $F ]] ; then
FILESTOGET="$FILESTOGET $F"
fi
done
FILES="$FILESTOGET"
#diff $BTSYNCHOME/$DIRTOSYNC_HASH $BTSYNCHOME/$DIRTOSYNC_HASH.success
#mv $BTSYNCHOME/$DIRTOSYNC_HASH $BTSYNCHOME/$DIRTOSYNC_HASH.success
}
function get_the_files () {
if [[ ! -z $FILES ]] ; then
echo get the files
obexftp -b $BTADDR -v -c "$DIRTOSYNC" -g $FILES |tee $BTSYNCHOME/$DIRTOSYNC_HASH.get
# can obexftp do a dir? would be handy.
#obexftp -b $BTADDR -v -g "$DIRTOSYNC" |tee $BTSYNCHOME/$DIRTOSYNC_HASH.getdir
# also -G (get and delete) could be used for some files
fi
}
# TODO/half DONE track and check each file seperately
# TODO maybe if we got the file, store the associated line then in .success file
# use size/date in xml and on file system.
# ideally we want commands: GET[and remove] if newer/different
function track_the_files () {
#CHECKFILES=`echo $FILES |sed 's/ / && -f /g'`
#if [[ $CHECKFILES ]] ; then
# mv $BTSYNCHOME/$DIRTOSYNC_HASH $BTSYNCHOME/$DIRTOSYNC_HASH.success
for F in $FILES ; do
if [[ -f $F ]] ; then
# a file name which is part of others will cause problems
FILEINFO=`grep "<file name=" $BTSYNCHOME/$DIRTOSYNC_HASH.list |grep $F`
echo "$FILEINFO" >> $BTSYNCHOME/$DIRTOSYNC_HASH.success
fi
done
}
## TODO cleanup all files on mobile retrieved this time or previous
## allows syncing as soon as possible but cleaning after longer (keep recent photos, traces, ...)
# cleanup files matching certain patterns on mobile if they were successfully retrieved
# we could use -G earlier (get and delete)
function clean_the_files () {
for F in $FILES ; do
###if [[ -f bin/eirkey.pl && ( -n ${FG#wami} || -n ${F%gpx} ) ]] ; then echo yep; fi
if [[ -f $F && ( -n ${F#wami*.gpx} || -n ${F#*.jpg} ) ]] ; then
obexftp -b $BTADDR -v -c "$DIRTOSYNC" -k $F |tee -a $BTSYNCHOME/$DIRTOSYNC_HASH.clean
fi
done
}
wipe_existing_files_from_list
echo files to get FILES=$FILES
get_the_files
track_the_files
clean_the_files
</pre>
21 August 2009 @ 11:35 pm
TODO: dates a bit approximate
books
20/8/2009

ByRoyalCommand
author:CharlieHigson
More of Daire's books.
1/8/2009

Ilium
author:DanSimmons
Excellent!
Gods and Illiad and sci-fi ... i was a bit dubious but wow!
Nice book :)
17/8/2009

StarOfTheSea
author:JosephOConnor
good
however the excited gushing quotes on cover are off-putting
20/6/2009

TheSeaAndTheSummer
author:GeorgeTurner
mmmh
desk
21/8/2009
.jpg)
.jpg)
Nearly a christmas tree ornament!
Another flash moment.
Missing 0 from length in a command in manual and blindly cut&pasting. tut.
books
20/8/2009

ByRoyalCommand
author:CharlieHigson
More of Daire's books.
1/8/2009

Ilium
author:DanSimmons
Excellent!
Gods and Illiad and sci-fi ... i was a bit dubious but wow!
Nice book :)
17/8/2009

StarOfTheSea
author:JosephOConnor
good
however the excited gushing quotes on cover are off-putting
20/6/2009

TheSeaAndTheSummer
author:GeorgeTurner
mmmh
desk
21/8/2009
.jpg)
.jpg)
Nearly a christmas tree ornament!
Another flash moment.
Missing 0 from length in a command in manual and blindly cut&pasting. tut.
20 August 2009 @ 02:07 pm
This error ("line 1: syntax error: word unexpected (expecting ")")") is misleading.
It leads one initially to suspect a scripting error.
It is because of trying to run an incompatible (maybe elf64) binary on an elf32 platform (x86/i386).
It is quite like the misleading error you get in solaris 32bit or 64bit "Invalid argument" if trying to run an incompatible binary.
The error on x86_64 is good "cannot execute binary file" leads you to the problem directly.
Use objdump to check what platform your binaries are for.
It leads one initially to suspect a scripting error.
It is because of trying to run an incompatible (maybe elf64) binary on an elf32 platform (x86/i386).
/sbin/udevd: line 1: syntax error: word unexpected (expecting ")")
It is quite like the misleading error you get in solaris 32bit or 64bit "Invalid argument" if trying to run an incompatible binary.
The error on x86_64 is good "cannot execute binary file" leads you to the problem directly.
$ ./hello32sparc bash: ./hello32sparc: cannot execute binary file $ ./hello64sparc bash: ./hello64sparc: cannot execute binary file $ ./hexdump_arm bash: ./hexdump_arm: cannot execute binary file $ uname -s -r -m -p -i -o Linux 2.6.27.29-170.2.79.fc10.x86_64 x86_64 x86_64 x86_64 GNU/Linux
$ ./hexdump -bash: ./hexdump: Invalid argument $ ./hexdump_arm -bash: ./hexdump_arm: Invalid argument $ ./hexdump hexdump hexdump_arm hexdumpx86_32 hexdumpx86_64 $ ./hexdumpx86_32 -bash: ./hexdumpx86_32: Invalid argument $ ./hexdumpx86_64 -bash: ./hexdumpx86_64: Invalid argument $ uname -s -r -m -p -i SunOS 5.10 sun4u sparc SUNW,Sun-Fire-V245
Use objdump to check what platform your binaries are for.
objdump -h hello32sparc elfdump -e hello32sparc
19 August 2009 @ 02:28 pm
Problem:
$ unzip -l muh.zip
$ unzip -Ppassword muh.zip
Archive: muh.zip
skipping: muh unsupported compression method 99
Solution: On linux p7zip will unzip the zip with the password, for fedora:
$ sudo yum install p7zip
$ 7za x -Ppassword muh.zip
This will hopefully save me 2 minutes of fumbling next time (BY lodging this info into my brain as well as on the internet).
$ rpm -qa |grep p7zip
p7zip-4.61-1.fc10.x86_64
$ rpm -q p7zip-4.61-1.fc10.x86_64 -l
/usr/bin/7za
7-Zip (A) 4.61 beta Copyright (c) 1999-2008 Igor Pavlov 2008-11-23
$ unzip -l muh.zip
$ unzip -Ppassword muh.zip
Archive: muh.zip
skipping: muh unsupported compression method 99
Solution: On linux p7zip will unzip the zip with the password, for fedora:
$ sudo yum install p7zip
$ 7za x -Ppassword muh.zip
This will hopefully save me 2 minutes of fumbling next time (BY lodging this info into my brain as well as on the internet).
$ rpm -qa |grep p7zip
p7zip-4.61-1.fc10.x86_64
$ rpm -q p7zip-4.61-1.fc10.x86_64 -l
/usr/bin/7za
7-Zip (A) 4.61 beta Copyright (c) 1999-2008 Igor Pavlov 2008-11-23
23 July 2009 @ 12:36 am
; open file (path and file at cursor) and bounce back to original buffer next line ; handy for restoring sessions or opening list of interesting files ; it's obvious here I'm repeating myself somewhat ; easier creating a quick macro each time sometimes than reading docs and trying to find the one-and-only proper way of the probably few ways of doing something (fset 'open-this-file2 [?\C- ?\C-e escape ?w ?\C-x ?\C-f ?\C- left left left left left left left left left left left left left left left left left left left left left left left left left left ?\C-a ?\C-y ?\C-k return ?\C-x ?b return ?\C-a down]) (fset 'load-file-at-cursor [?\C- ?\C-e escape ?w ?\C-a ?\C-x ?\C-f ?\C-a ?\C-y ?\C-k return ?\C-x ?b return down]) (fset 'open-this-file [?\C- ?\C-e escape ?w ?\C-a down ?\C-x ?\C-f ?\C-a ?\C-y ?\C-k return ?\C-x ?b return])
I used to carry a massive .emacs file around everywhere, now-a-days I just put in the minimum:
(custom-set-variables ;; custom-set-variables was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. ;; Your init file should contain only one such instance. ;; If there is more than one, they won't work right. '(c-basic-offset 4) '(c-default-style (quote ((java-mode . "java") (awk-mode . "awk") (other . "gnu")))) '(indent-tabs-mode nil)) (custom-set-faces ;; custom-set-faces was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. ;; Your init file should contain only one such instance. ;; If there is more than one, they won't work right. )
23 July 2009 @ 12:26 am
;ECB = Emacs Code Browser
;Sometimes there are too many source code files, directories and lines.
;ECB turns emacs into a more friendly source code editor/browser.
;Emacs is zippy and lightweight and stable when compated with Eclipse/Netbeans/Visual Studio
;The install doc is slightly scary however the install is really easy.
; there's just one easy to install dependancy which is CEDET (= Collection of Emacs Development Environment Tools)
;http://ecb.sourceforge.net/
;http://www.emacswiki.org/emacs/EmacsCo deBrowser
;http://cedet.sourceforge.net/
;http://xtalk.msk.su/~ott/en/writings/e macs-devenv/EmacsCedet.html
; get cedet, unpack it (I'm working in ~/src) and build it with `make`
; http://sourceforge.net/projects/cedet/f iles/cedet/1.0pre6/cedet-1.0pre6.tar.gz/d ownload
; add settings in your .emacs (see below)
; get ecb, unpack it
; http://sourceforge.net/projects/ecb/fil es/ecb/ECB%202.40/ecb-2.40.tar.gz/downlo ad
; add settings in your .emacs (see below): add to load-path and (require 'ecb)
; restart emacs
; you may be prompted to confirm some initialisation actions
; in emacs: tools -> Start Code Browser ECB
;; screenshots
; Code editing windows
; File and dir list, file source control status shown.
; Code method/symbol semantic view.
; http://www.dspsrv.com/~jamesc/torture/S creenshot-emacs-ECB-sun_jmf_gstreamer.pn g
; http://www.dspsrv.com/~jamesc/torture/S creenshot-emacs-ECB-whereami-symbian.png
fedora 10 Sun embedded Java media:

ubuntu jaunty whereami symbian:

;Sometimes there are too many source code files, directories and lines.
;ECB turns emacs into a more friendly source code editor/browser.
;Emacs is zippy and lightweight and stable when compated with Eclipse/Netbeans/Visual Studio
;The install doc is slightly scary however the install is really easy.
; there's just one easy to install dependancy which is CEDET (= Collection of Emacs Development Environment Tools)
;http://ecb.sourceforge.net/
;http://www.emacswiki.org/emacs/EmacsCo
;http://cedet.sourceforge.net/
;http://xtalk.msk.su/~ott/en/writings/e
; get cedet, unpack it (I'm working in ~/src) and build it with `make`
; http://sourceforge.net/projects/cedet/f
; add settings in your .emacs (see below)
; get ecb, unpack it
; http://sourceforge.net/projects/ecb/fil
; add settings in your .emacs (see below): add to load-path and (require 'ecb)
; restart emacs
; you may be prompted to confirm some initialisation actions
; in emacs: tools -> Start Code Browser ECB
(load-file "~/src/cedet-1.0pre6/common/cedet.el")
(global-ede-mode 1) ; Enable the Project management system
(semantic-load-enable-code-helpers) ; Enable prototype help and smart completion
(global-srecode-minor-mode 1) ; Enable template insertion menu
(add-to-list 'load-path
"~/src/ecb-2.40")
(require 'ecb)
;(require 'ecb-autoloads)
;; screenshots
; Code editing windows
; File and dir list, file source control status shown.
; Code method/symbol semantic view.
; http://www.dspsrv.com/~jamesc/torture/S
; http://www.dspsrv.com/~jamesc/torture/S
fedora 10 Sun embedded Java media:

ubuntu jaunty whereami symbian:

22 July 2009 @ 01:09 am
* glxgears gives about 200fps in it's small window.
* google earth is torturous
* bzflag a bit ... urkish
can we fix it?
Incidentially s/Ctrl-Alt-Backspace|dontzap|xorg.conf edit/Alt-SysRq-[whatever]/
http://en.wikipedia.org/wiki/Magic_SysR q_key
http://www.kernel.org/doc/Documenta tion/sysrq.txt
Changing display resolution doesn't help.
In fact lower resolutions seem very glitchy/bad!
sudo /etc/init.d/gdm restart
## => hang :(
hmmmm ...
my /etc/X11/xorg.conf is very basic
tried lots of various settings ...
http://codeidol.com/unix/ubuntu/X11/Ena ble-3-D-Video-Acceleration/
http://grumpymole.blogspot.com/2008/0 3/ubuntu-hardy-intel-945-graphics-driver.h tml
http://www.linuxquestions.org/quest ions/linux-hardware-18/intel-945gm-and-3 d-acceleration-625937/
package "xserver-xorg-video-intel"
http://bbs.archlinux.org/viewtopic.p hp?id=24481
http://www.phoronix.com/scan.php?page=n ews_item&px=NzM3OQ
via http://forums.opensuse.org/hardware/lap top/418072-video-performance-intel-945gm-k ernel-2-6-30-a.html
Intel Releases xf86-video-intel 2.8 RC Driver
Posted by Michael Larabel on July 13, 2009
Hmmm. Very recent.
http://blog.programmerslog.com/?m=20090 6
http://blog.programmerslog.com/?p=3 78
How to install the latest Intel drivers on Ubuntu
June 20th, 2009
So anyway I updated my drivers and xorg.conf settings.
But not kernel,
And ... AIE! and AUGH.
I get the ubuntu session login screen okay.
But when gnome logs in I just see the colour on whole screen and mouse pointer. Moving and clicking mouse I can see there's some action going on! Desktop is functional but cannot see anything. Switching away and back gives black screen.
restarting/reconfiguring xorg.conf in various ways doesn't recover.
verious errors starting X, see /var/log/Xorg.* MTRR error, others.
After wailing and gnashing of the teeth the solution was found to kill compiz and any other compiz process.
And System->Preferences->Appearance->Visual Effects->None
hmmm, no we can't fix it!
but at least we recovered from the big mess we made right!
* google earth is torturous
* bzflag a bit ... urkish
can we fix it?
Incidentially s/Ctrl-Alt-Backspace|dontzap|xorg.conf edit/Alt-SysRq-[whatever]/
http://en.wikipedia.org/wiki/Magic_SysR
http://www.kernel.org/doc/Documenta
Changing display resolution doesn't help.
In fact lower resolutions seem very glitchy/bad!
sudo /etc/init.d/gdm restart
## => hang :(
$ glxinfo |grep rend get fences failed: -1 param: 6, val: 0 direct rendering: Yes OpenGL renderer string: Mesa DRI Intel(R) 945GM GEM 20090326 2009Q1 RC2 x86/MMX/SSE2
hmmmm ...
my /etc/X11/xorg.conf is very basic
tried lots of various settings ...
http://codeidol.com/unix/ubuntu/X11/Ena
http://grumpymole.blogspot.com/2008/0
http://www.linuxquestions.org/quest
package "xserver-xorg-video-intel"
This package provides the driver for the Intel i8xx and i9xx family of chipsets, including i810, i815, i830, i845, i855, i865, i915, i945 and i965 series chips. This package also provides an XvMC (XVideo Motion Compensation) driver for i810 and i815 chipsets. More information about X.Org can be found at: <url:http://www.x.org> <url:http://xorg.freedesktop.org> <url:http://lists.freedesktop.org/mailman/listinfo/xorg> This package is built from the X.org xf86-video-intel driver module. Canonical provides critical updates for xserver-xorg-video-intel until October 2010.
http://bbs.archlinux.org/viewtopic.p
http://www.phoronix.com/scan.php?page=n
via http://forums.opensuse.org/hardware/lap
Intel Releases xf86-video-intel 2.8 RC Driver
Posted by Michael Larabel on July 13, 2009
Hmmm. Very recent.
http://blog.programmerslog.com/?m=20090
http://blog.programmerslog.com/?p=3
How to install the latest Intel drivers on Ubuntu
June 20th, 2009
So anyway I updated my drivers and xorg.conf settings.
But not kernel,
And ... AIE! and AUGH.
I get the ubuntu session login screen okay.
But when gnome logs in I just see the
restarting/reconfiguring xorg.conf in various ways doesn't recover.
verious errors starting X, see /var/log/Xorg.* MTRR error, others.
After wailing and gnashing of the teeth the solution was found to kill compiz and any other compiz process.
And System->Preferences->Appearance->Visual Effects->None
hmmm, no we can't fix it!
but at least we recovered from the big mess we made right!
21 July 2009 @ 10:40 am
Swearing at work;
http://illinois.edu/blog/view?blogI d=25&topicId=1121&count=1&ACTION=VIEW_TOPIC_DIALOGS&skinId=286
This blogger also found to be quite a pleasant and humourous read.
Everything IN MODERATION now children!
Clarence Darrow may have been the first to describe swearing as a non-optional linguistic universal: "I don't swear just for the hell of it . . . . Language is a poor enough means of communication as it is. So we ought to use all the words we've got. Besides, there are damned few words that everybody understands."
http://en.wikipedia.org/wiki/Clarence_D arrow
Swearing not maladaptive:
http://illinois.edu/blog/view?blogI d=25&topicId=2831&count=1&ACTION=VIEW_TOPIC_DIALOGS&skinId=286
Tolerance of pain increased for people who swear when they’re hurt.
Not yet FDA approved though.
so ... when I'm muttering away under my breath cursing at the code/script I'm writing that means I'm building team spirit (between me and my code!!!) :)
I stumbled across this when reading the weekly summary from A Word A Day
http://wordsmith.org/awad/
http://illinois.edu/blog/view?blogI
This blogger also found to be quite a pleasant and humourous read.
Everything IN MODERATION now children!
Clarence Darrow may have been the first to describe swearing as a non-optional linguistic universal: "I don't swear just for the hell of it . . . . Language is a poor enough means of communication as it is. So we ought to use all the words we've got. Besides, there are damned few words that everybody understands."
http://en.wikipedia.org/wiki/Clarence_D
Swearing not maladaptive:
http://illinois.edu/blog/view?blogI
Tolerance of pain increased for people who swear when they’re hurt.
Not yet FDA approved though.
so ... when I'm muttering away under my breath cursing at the code/script I'm writing that means I'm building team spirit (between me and my code!!!) :)
I stumbled across this when reading the weekly summary from A Word A Day
http://wordsmith.org/awad/
15 July 2009 @ 01:36 am
You can set up a symbian development environment in a couple of hours.
Follow these instructions: http://www.martin.st/symbian/ they are very good.
Here are my extra notes on the install.
They might be useful to someone else (or myself again in future).
I have a nokia E65 and although it is very grotty (interface-wise) it has nice hardware. I like being able to make software for my electronic devices. I played with python apps on the phone a bit. Symbian signing is very awkward for sharing and even playing/experimenting/developing little apps.
I http://www.openstreetmap.org a bit and I use a bluetooth GPS with my mobile to collect the data with WhereAmI http://www.symbianos.org/whereami which is a really nice map display and GPS collection tool. It can also collect GSM cellid information, or rather, it hints it can but it doesn't on my phone. So I want to get the source and see what the problem is and can I get it working.
======================================== ========================================
http://www.google.ie/search?q=symbian+d evelopment+linux
http://wiki.forum.nokia.com/index.php/S ymbian_development_on_Linux_and_OS_X
The three main approaches. Realistically there seems to be one sensible approach.
Symbian's build system is based mostly on perl. And a bit of make.
It seems heavyish and they should have used make perhaps but the symbian apps are all going to be small enough really. These scripts are modified to work on unix. This matches symbian build system very closely. Seems to be best supported.
Other options: Replacing the build system with makefiles giving a lighter build system or integrating the build system with IDEs don't seem to be well supported.
http://www.martin.st/symbian/ based on GnuPoc project
"for S60 3rd ed and UIQ 3, you need the EKA2 toolchain."
Of course we're going to build the compiler from source and not take binaries >;)
And of course we're going to install the extra gnupoc tools so we don't have to use wine too much.
1. Working in this area and tools/scripts + source code are going here:
export SYM_WORKING_DIR=$HOME/src/mobile
2. compiler is going here:
export SYM_COMPILER_DIR=$HOME/csl-gcc
3. SDK is going here:
export EPOCROOT=$HOME/symbian-sdks/s60_3_fp2_v1 1/
http://www.forum.nokia.com/Tools_Docs_a nd_Code/Tools/Platforms/S60_Platform_SDK s/
3rd ed fp2 v1.1 430Mish
Here is the error I got that showed I needed bison. "Unexcpected(sic) error"
Flailing newbie help trap.
Here is the error I got that showed I needed ssl-dev package.
It actually did say you needed openssl in the README.
Flailing newbie help trap.
No excuses for slacking off while compiling/installing/downloading.
Also poke inside the scripts you've installed.
Read more about gnupoc here: http://gnupoc.sourceforge.net/HOWTO/
http://gnupoc.sourceforge.net/
gnupoc_install gnupoc-utils
http://web.archive.org/web/*/http:/ /www.wayfinder.it/resources/uiq_gnupoc.p hp
Reading the "Build tools guide" is helpful to know more about what the build scripts are doing.
http://developer.symbian.com/main/docum entation/sdl/symbian94/sdk/doc_source/To olsAndUtilities94/BuildTools/index.html
How to use bldmake, How to use abld, etc.
Info on figuring out problems with how to set up environment for SDK:
This is done above to resolve this problem:
GSM_LOCATION is compiled out in the source code as you get it now.
svn diff >../whereami_enable_gsm_location.patch
meld .
Follow these instructions: http://www.martin.st/symbian/ they are very good.
Here are my extra notes on the install.
They might be useful to someone else (or myself again in future).
I have a nokia E65 and although it is very grotty (interface-wise) it has nice hardware. I like being able to make software for my electronic devices. I played with python apps on the phone a bit. Symbian signing is very awkward for sharing and even playing/experimenting/developing little apps.
I http://www.openstreetmap.org a bit and I use a bluetooth GPS with my mobile to collect the data with WhereAmI http://www.symbianos.org/whereami which is a really nice map display and GPS collection tool. It can also collect GSM cellid information, or rather, it hints it can but it doesn't on my phone. So I want to get the source and see what the problem is and can I get it working.
========================================
http://www.google.ie/search?q=symbian+d
http://wiki.forum.nokia.com/index.php/S
The three main approaches. Realistically there seems to be one sensible approach.
Symbian's build system is based mostly on perl. And a bit of make.
It seems heavyish and they should have used make perhaps but the symbian apps are all going to be small enough really. These scripts are modified to work on unix. This matches symbian build system very closely. Seems to be best supported.
Other options: Replacing the build system with makefiles giving a lighter build system or integrating the build system with IDEs don't seem to be well supported.
Start here.
http://www.martin.st/symbian/ based on GnuPoc project
"for S60 3rd ed and UIQ 3, you need the EKA2 toolchain."
Of course we're going to build the compiler from source and not take binaries >;)
And of course we're going to install the extra gnupoc tools so we don't have to use wine too much.
What is going to be installed.
1. Working in this area and tools/scripts + source code are going here:
export SYM_WORKING_DIR=$HOME/src/mobile
2. compiler is going here:
export SYM_COMPILER_DIR=$HOME/csl-gcc
3. SDK is going here:
export EPOCROOT=$HOME/symbian-sdks/s60_3_fp2_v1
Install steps.
0. Signup to nokia and start SDK download
http://www.forum.nokia.com/Tools_Docs_a
3rd ed fp2 v1.1 430Mish
1. install gnupoc tools and 2. install compiler
mkdir -p $SYM_WORKING_DIR; cd $SYM_WORKING_DIR wget http://www.martin.st/symbian/gnupoc-package-1.13.tar.gz # http://www.codesourcery.com/sgpp/lite/arm/releases/2005Q1C # and form fill and get OR: wget http://www.martin.st/symbian/gnu-csl-arm-2005Q1C-arm-none-symbianelf.src.tar.bz2 tar -zxvf gnupoc-package-1.13.tar.gz cd gnupoc-package-1.13 cd tools less README # I needed to install bison, I also do other development so possibly already had a # bunch of other devel packages and tools installed. If it needs bison it probably # needs make/autoconf/gcc packages sudo apt-get install bison ./install_csl_gcc ../../gnu-csl-arm-2005Q1C-arm-none-symbianelf.src.tar.bz2 $SYM_COMPILER_DIR # I also did need libssl-dev and already had zlib sudo apt-get install libssl-dev dpkg -l |grep zlib ./install_eka2_tools $SYM_COMPILER_DIR #that goes off and gets cross-binutils and compiler and builds them ....
Here is the error I got that showed I needed bison. "Unexcpected(sic) error"
Flailing newbie help trap.
bison -d -o gengtype-yacc.c gengtype-yacc.y make[1]: bison: Command not found make[1]: [gengtype-yacc.h] Error 127 (ignored) gcc -c -g -O2 -DIN_GCC -DCROSS_COMPILE -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -pedantic -Wno-long-long -Wno-error -DHAVE_CONFIG_H -DGENERATOR_FILE -I. -I. -I. -I./. -I./../include \ gengtype-lex.c -o gengtype-lex.o gcc: gengtype-lex.c: No such file or directory gcc: no input files make[1]: *** [gengtype-lex.o] Error 1 make[1]: Leaving directory `$HOME/src/mobile/gnupoc-package-1.13/tools/csl-build/gcc-csl-arm/gcc' make: *** [all-gcc] Error 2 Unexcpected error: aborting.
Here is the error I got that showed I needed ssl-dev package.
It actually did say you needed openssl in the README.
Flailing newbie help trap.
g++ -Wall -gstabs+ -I../include -DTEST -ggdb -c signutils.cpp -o signutils.o signutils.cpp:36:25: error: openssl/evp.h: No such file or directory signutils.cpp:37:25: error: openssl/pem.h: No such file or directory signutils.cpp:44:25: error: openssl/err.h: No such file or directory
2-and-a-half. Read up on symbian build tools and
No excuses for slacking off while compiling/installing/downloading.
Also poke inside the scripts you've installed.
Read more about gnupoc here: http://gnupoc.sourceforge.net/HOWTO/
http://gnupoc.sourceforge.net/
gnupoc_install gnupoc-utils
http://web.archive.org/web/*/http:/
Reading the "Build tools guide" is helpful to know more about what the build scripts are doing.
http://developer.symbian.com/main/docum
How to use bldmake, How to use abld, etc.
3. install the SDK
# Example on(sic) installing an SDK: ## no! don't get your own unshield. sudo apt-get install unshield export PATH=`pwd`/unshield:$PATH cd $SYM_WORKING_DIR/gnupoc-package-1.13/sdks mv ~/Downloads/S60_3rd_Edition_SDK_Feature_Pack_2_v1_1_en.zip ../.. ./install_gnupoc_s60_32 ../../S60_3rd_Edition_SDK_Feature_Pack_2_v1_1_en.zip ~/symbian-sdks/s60_3_fp2_v11 # needed to do this (lzma_decoder.h and any SDK includes need to be findable from working area) # perhaps should be working inside the SDK dir structure cd $SYM_WORKING_DIR/whereami_trunk/sis ln -s $HOME/symbian-sdks/s60_3_fp2_v11/epoc32 ../../ ## I did this: don't know did it work, switched to using gcc cp $HOME/symbian-sdks/s60_3_fp2_v11/epoc32/tools/uidcrc.exe $HOME/.wine/drive_c/windows/ cp $HOME/symbian-sdks/s60_3_fp2_v11/epoc32/tools/make.exe $HOME/.wine/drive_c/windows/ #MESSY: cp $HOME/symbian-sdks/s60_3_fp2_v11/epoc32/tools/*.exe $HOME/.wine/drive_c/windows/ ls $HOME/symbian-sdks/s60_3_fp2_v11/epoc32/release/winscw/udeb/sdkw.exe
Info on figuring out problems with how to set up environment for SDK:
### unshield did not work for me initially at this stage until I figured out where it was and set PATH
./unshield/unshield -V
./unshield/unshield -D3 l _e/data2.cab
find $HOME/symbian-sdks/s60_3_fp2_v11/epoc32/tools -name \*.orig -exec rm {} \;
cd $HOME/symbian-sdks/s60_3_fp2_v11/epoc32/tools; chmod a+x *.pl bldmake abld makmake bmconv rcomp makesis epoc eshell petran pfsdump setupcomms elf2e32 mifconv makekeys signsis extmake rtf2ptml cjpeg
### Take a look at the SDK, the install doc, the examples
ls $HOME/symbian-sdks/s60_3_fp2_v11/
epoc32/ S60_3rd_Edition_FP2_SDK_for_Symbian_OS_Installation_Guide_V1.1.pdf
examples/ s60cppexamples/
GCCE_readme.txt s60tools/
Nokia_EULA.txt series60doc/
ls $HOME/symbian-sdks/s60_3_fp2_v11/s60cppexamples/
addressbook clientserverasync dynamicsettinglist helperfunctions localization note progressbar webclient
aiwconsumerbasics clientserversync filelist helpexample locationlandmarksrefappfors60 npbitmap query
animation contacts finditemtestapp hwrmtestapp locationlandmarksuirefapp ocrexample readme.txt
audiostreamexample datamobility focusevent imopenapiexample locationrefappfors60 openc_ex registration
brctlsampleapp directorylocalizerex graphics isvtelcallapp locationsatviewrefapp openglex richtexteditor
chat _doc guiengine isvtelinfoapp messaging popupfield sipexample
clfexample driveinfo helloworldbasic listbox myview popuplist uniteditorex
cat $HOME/symbian-sdks/s60_3_fp2_v11/s60cppexamples/readme.txt
To open the Example Application Help documentation, please go to the _doc folder
and double-click the index.htm file found there.
wine: could not load L"C:\\windows\\system32\\make.exe": Module not found
make: *** [FINALicons] Error 126
ls $HOME/csl-gcc/bin/
arm-none-symbianelf-addr2line arm-none-symbianelf-cpp arm-none-symbianelf-gcov arm-none-symbianelf-ranlib bmconv makekeys signsis
arm-none-symbianelf-ar arm-none-symbianelf-g++ arm-none-symbianelf-ld arm-none-symbianelf-readelf copy makesis uidcrc
arm-none-symbianelf-as arm-none-symbianelf-gcc arm-none-symbianelf-nm arm-none-symbianelf-size del mifconv
arm-none-symbianelf-c++ arm-none-symbianelf-gcc-3.4.3 arm-none-symbianelf-objcopy arm-none-symbianelf-strings elf2e32 rcomp
arm-none-symbianelf-c++filt arm-none-symbianelf-gccbug arm-none-symbianelf-objdump arm-none-symbianelf-strip extmake rem
find $EPOCROOT -name make.exe
$HOME/symbian-sdks/s60_3_fp2_v11/epoc32/tools/make.exe
$HOME/symbian-sdks/s60_3_fp2_v11/epoc32/tools_orig/make.exe
cp $HOME/symbian-sdks/s60_3_fp2_v11/epoc32/tools/uidcrc.exe $HOME/.wine/drive_c/windows/
cp $HOME/symbian-sdks/s60_3_fp2_v11/epoc32/tools/make.exe $HOME/.wine/drive_c/windows/
perl -S makmake.pl -D $HOME/src/mobile/whereami_trunk/group/s60_v3/whereami WINSCW
ERROR: Unable to identify a valid CodeWarrior for Symbian OS installation
make: *** [MAKEFILEwhereami] Error 255
MESSY:
cp $HOME/symbian-sdks/s60_3_fp2_v11/epoc32/tools/*.exe $HOME/.wine/drive_c/windows/
$HOME/symbian-sdks/s60_3_fp2_v11/epoc32/release/winscw/udeb/sdkw.exe
4. try out hello world
cd ~/symbian-sdks/s60_3_fp2_v11/s60cppexamples cd helloworldbasic/group/ bldmake bldfiles abld build gcce urel cd ../sis makesis helloworldbasic_gcce.pkg helloworldbasic.sis
Yay. Install finished
Install this in your .bashrc
# This goes in my .bashrc or symbian environment setup script: export SYM_WORKING_DIR=$HOME/src/mobile export SYM_COMPILER_DIR=$HOME/csl-gcc export PATH=$PATH:$HOME/symbian-sdks/s60_3_fp2_v11/epoc32/tools export PATH=$PATH:$SYM_COMPILER_DIR/bin export EPOCROOT=$HOME/symbian-sdks/s60_3_fp2_v11/
Now play with WhereAmI
# everyday commands: cd $SYM_WORKING_DIR/whereami_trunk cd group/s60_v3 bldmake bldfiles abld build gcce urel # this works instead cd ../../sis makesis whereami_s60_v3.pkg whereami_s60_v3_jco.sis signsis whereami_s60_v3_jco.sis whereami_s60_v3_jco.sisx mycert.cer mykey.key cd ../../group/s60_v3
cd $SYM_WORKING_DIR
svn co https://svn.symbianos.org/whereami/trunk/ whereami_trunk
# And this is how I can work quickly compile and make .sis for whereami
# put this in a script or README or notes or blog somewhere
cd $SYM_WORKING_DIR/whereami_trunk
cd group/s60_v3
bldmake bldfiles
#abld build winscw udeb #? needs wine, .. make.exe problem?
abld build gcce urel # this works instead
cd ../../sis
makesis whereami_s60_v3.pkg whereami_s60_v3_jco.sis
# and key signing to make sisx, don't know does this help much?
# privately made key. My phone is a bit hacked so I can install any .sis on it.
# first make key and cert for yourself
[[ ! -f mykey.key ]] || [[ ! -f mycert.cer ]] &&
makekeys -cert -expdays 3650 -dname "CN=Name Surname OU=Development O=Company Name C=UK EM=foo@bar.com" mykey.key mycert.cer
# sign application each time you need to
signsis whereami_s60_v3_jco.sis whereami_s60_v3_jco.sisx mycert.cer mykey.key
# how clean make/build?
# this does a bit of it anyway:
rm $HOME/symbian-sdks/s60_3_fp2_v11/epoc32/build${HOME}/src/mobile/whereami_trunk/group/s60_v3/whereami*/*/urel/*.{o,exe}
WhereAmI needed lzma_decoder.h
This is done above to resolve this problem:
cd $SYM_WORKING_DIR/whereami_trunk/sis ln -s $HOME/symbian-sdks/s60_3_fp2_v11/epoc32 ../../
WARNING: Can't find following headers in User or System Include Paths "lzma_decoder.h" (User Inc Paths "$HOME/src/mobile/whereami_trunk/src/" "$HOME/src/mobile/whereami_trunk/group/s60_v3/" "$HOME/src/mobile/whereami_trunk/inc/" "$HOME/src/mobile/whereami_trunk/data/") Dependency list for "$HOME/src/mobile/whereami_trunk/src/nmeaparser.cpp" may be incomplete
dpkg-query -L lzma-dev # no, LzmaDecode.h # here it is: svn co https://svn.symbianos.org/lzma/ cd lzma/C/Symbian/group #oops! it's part of SDK: $HOME/symbian-sdks/s60_3_fp2_v11/epoc32/include/lzma_decoder.h
GSM_LOCATION enable
GSM_LOCATION is compiled out in the source code as you get it now.
+++ add to this file group/s60_v3/whereami.mmp (after GPS_LBS) MACRO GSM_LOCATION #define GSM_LOCATION
svn diff >../whereami_enable_gsm_location.patch
meld .
13 July 2009 @ 11:14 pm
I was putting definitely in an email earlier and had to look it up.
Apparently it is a common enough mis-spelling. :)
It's spelt definite. Not definate! definate seems to be the way I pronounce it which is presumably wrong or my accent. And If it's spelt definite then spelling definitely is EASY.
http://www.google.ie/search?q=definitel y =>
http://www.d-e-f-i-n-i-t-e-l-y.com/
http://www.merriam-webster.com/dictiona ry/definitely
definite definition definitive infinite (again I pronounce _ate!)
http://etymonline.com/index.php?term=de fine
Apparently it is a common enough mis-spelling. :)
It's spelt definite. Not definate! definate seems to be the way I pronounce it which is presumably wrong or my accent. And If it's spelt definite then spelling definitely is EASY.
http://www.google.ie/search?q=definitel
http://www.d-e-f-i-n-i-t-e-l-y.com/
http://www.merriam-webster.com/dictiona
definite definition definitive infinite (again I pronounce _ate!)
http://etymonline.com/index.php?term=de
13 July 2009 @ 10:50 pm
Yummmm: Loganberry jam. Logans from Cobh:
http://graciesbakes.com/2009/07/07/loga nberry-jam/
Loganberries + sugar. Nyam. Nyam.
Not a very refined or complicated dish.
Loganberry and apple jam. Yumm.
I've tried to sneak a loganberry into back garden but it is a bit obvious and hasn't escaped attention of Fionn :( I want to find a lonely patch and gureilla garden a loganberry into it.
I want to try this:
Blackberry wine. No blackberries but a couple of buckets of blackberry shoots/tips.
http://books.google.ie/books?id=H4h 0zC-EKIgC&pg=PA245&lpg=PA243&vq=pine&dq=reed+wildfood+europe
Plus rasins, sugar or honey and yeast.
Did I ever tell you I found a bucket of old apples in the old orchard in Cobh once?
In Wintertime.
All full with wizened old apples (cooking apples) and rainwater,
Not sure how it escaped being kicked over by the cattle who would have been in the field.
It smelled lovely and I brought it back to the yard and forgot about it.
A week later I spilled it out on the gravel which FIZZED and produced a fawn couloured big bubbled FROTH.
Oops wow!
Must try that again using less accidental and more hygenic methods.
We have a small gooseberry bush (with reddish gooseberries on it now) and a very young blackcurrant with fruit and a young apple tree in the front garden.
http://graciesbakes.com/2009/07/07/loga
Loganberries + sugar. Nyam. Nyam.
Not a very refined or complicated dish.
Loganberry and apple jam. Yumm.
I've tried to sneak a loganberry into back garden but it is a bit obvious and hasn't escaped attention of Fionn :( I want to find a lonely patch and gureilla garden a loganberry into it.
I want to try this:
Blackberry wine. No blackberries but a couple of buckets of blackberry shoots/tips.
http://books.google.ie/books?id=H4h
Plus rasins, sugar or honey and yeast.
Did I ever tell you I found a bucket of old apples in the old orchard in Cobh once?
In Wintertime.
All full with wizened old apples (cooking apples) and rainwater,
Not sure how it escaped being kicked over by the cattle who would have been in the field.
It smelled lovely and I brought it back to the yard and forgot about it.
A week later I spilled it out on the gravel which FIZZED and produced a fawn couloured big bubbled FROTH.
Oops wow!
Must try that again using less accidental and more hygenic methods.
We have a small gooseberry bush (with reddish gooseberries on it now) and a very young blackcurrant with fruit and a young apple tree in the front garden.
11 July 2009 @ 02:58 am
The hexdump write last week was part of an epic struggle to get back onto the RedBoot prompt of a device which was booting into a not very well working full linux and which had some problems in the flash images.
The plot of the epic is more or less:
James starts using device and is very cautious with flash mounted filesystem.
After some weeks using the system James gets more confident and puts minor handy links and scripts on the flash system,
After more than a month James is happy making mods to the file-system. Removes a 600kish app and unpacks a package in /lib/modules.
Next reboot => severe b0rkedness.
Struggle and puzzle with device for a couple of hours,
Augh. It's a jffs2 filesystem image.
Nope. Give up. Reflash with OS image and original busybox jffs2 image.
Reboot. Set up system, configure stuff.
Mount drives. Config environment.
Hurngghh. Problems problems problems Ehhh?
Struggle struggle struggle. wtf ?
Extreme puzzledness.
Start again.
Reflash.
Configure configure.
Still same problems! MAH!
But this time the redboot delay is 0 before running boot script.
That's the default after fis init!
AUGH :(
And this image seems to be even more problematic.
Email replying to some questions from device makers, they use squashfs now and before that they had lots of jffs2 bug fixes so yeah, using and writing to the jffs2 flash image WAS a bad idea :(
So ... now ... then ... I never quite got a nfs boot working for the device but now seems like a good time to try!
BUT can't get at RedBoot to reflash or just reconfigure RedBoot.
Can we write to flash with BusyBox?
mtd device ... seems to have limited writing capability?
not really?
Compile mtd_utils.
They give info but unlocking/writing not allowed by kernel.
fconfig ported to linux ... looks noice but again can't open mtd for write.
kexec? ... Hurmmm.
Okay.
Write a kernel module.
Get address of mtd data structures from kernel with nm.
hexdump them
Get the pointer to the mtd device in which RedBoot config is written,
Follow the structure and find the WRITABLE flag.
Set writable to 1!
Now mtd_unlock mtd_write does something. But? Flash not changed :(
fconfig seems to do more. Use it to set time delay to 2, not 0.
BUt it doesn't quite work.
The config is not modified ... BUT ... the CRC is!
A few more attempts to correct it back to valid don't seem to work.
fconfig won't write it again as the CRC is invalid!
Hah hah.
Okay.
Fine.
Reboot.
OH yessss! Redboot detects bad CRC in it's fconfig block and breaks into command-line! YES!! >;-)
Right. nfs boot.
Manual reading. Configure stuff. Unpack initrd.gz/initrd_media.gz, mount, make a copy of it. Config config. Read manuals. After a while have nfs boot, BUT *sigh* half the libs are not there. It's a different image really than the busybox_media.jffs2? Thus ensues lib/bin/module finding and installing ... which never quite completely works.
MAH! MAH! MAH! I've seriously run out of time.
So.
Hopefully we can recover that box sometime.
For now share another box and do some real work.
(real work = spend hours on weird timing/gfx/memory problems to find eventually the main problem is gstreamer tcpserversrc binding to default ("localhost") doesn't work. A bind to 0.0.0.0 does work.)
Now we still have mostly memory problems now.
Buffering video is probably using up too much especially when 1 video ends + another starts maybe? Multiple rebuilds and reconfigs and runs with different memory settings later ....
http://ecos.sourceware.org/docs-lat est/redboot/flash-image-system.html
http://www.embedded.com/story/OEG200207 29S0043 If the RedBoot fits
http://sourceware.org/redboot/
http://www.gelato.unsw.edu.au/lxr/sourc e/drivers/mtd/redboot.c
Inside my kernel this seems to be in place:
201 #ifdef CONFIG_MTD_REDBOOT_PARTS_READONLY
202 if (!memcmp(names, "RedBoot", 8) ||
203 !memcmp(names, "RedBoot config", 15) ||
204 !memcmp(names, "FIS directory", 14)) {
205 parts[i].mask_flags = MTD_WRITEABLE;
206 }
207 #endif
But writing to flash may not be possible for other reasons. The mtd driver might be find for read only. Writing to flash might be fully supported in redboot code but not in mtd code in busybox? Not sure. The flash writing procedure requires unlock, erase, write, lock.
http://www.gelato.unsw.edu.au/lxr/sourc e/drivers/mtd/mtdpart.c
28 /* Our partition node structure */
29 struct mtd_part {
30 struct mtd_info mtd;
31 struct mtd_info *master;
32 u_int32_t offset;
33 int index;
34 struct list_head list;
35 int registered;
36 };
http://www.gelato.unsw.edu.au/lxr/i dent?i=mtd_info
http://www.gelato.unsw.edu.au/lxr/sourc e/include/linux/mtd/mtd.h#L59
59 struct mtd_info {
60 u_char type;
61 u_int32_t flags;
62 u_int32_t size; // Total size of the MTD
63
.
.
.
http://www.linux-mtd.infradead.org/
Linux MTD (flash device drivers).
http://wiki.davincidsp.com/index.php/MT D_Utilities
MTD utils
Heh heh, mtd_utils has a little hexdump inside also.
fconfig ported to work in linux/busybox: HANDY!
http://andrzejekiert.ovh.org/software.h tml.en
http://andrzejekiert.ovh.org/software/f config/fconfig-20080329.tar.gz
Could build kexec for the platform and trigger boot of a particular image from busybox. Maybe.
http://www.ibm.com/developerworks/l inux/library/l-kexec.html
http://www.kernel.org/pub/linux/ke rnel/people/horms/kexec-tools/
# this will more or less get things going:
CC=arm-linux-gcc CXX=arm-linux-g++ make
The plot of the epic is more or less:
James starts using device and is very cautious with flash mounted filesystem.
After some weeks using the system James gets more confident and puts minor handy links and scripts on the flash system,
After more than a month James is happy making mods to the file-system. Removes a 600kish app and unpacks a package in /lib/modules.
Next reboot => severe b0rkedness.
Struggle and puzzle with device for a couple of hours,
Augh. It's a jffs2 filesystem image.
Nope. Give up. Reflash with OS image and original busybox jffs2 image.
Reboot. Set up system, configure stuff.
Mount drives. Config environment.
Hurngghh. Problems problems problems Ehhh?
Struggle struggle struggle. wtf ?
Extreme puzzledness.
Start again.
Reflash.
Configure configure.
Still same problems! MAH!
But this time the redboot delay is 0 before running boot script.
That's the default after fis init!
AUGH :(
And this image seems to be even more problematic.
Email replying to some questions from device makers, they use squashfs now and before that they had lots of jffs2 bug fixes so yeah, using and writing to the jffs2 flash image WAS a bad idea :(
So ... now ... then ... I never quite got a nfs boot working for the device but now seems like a good time to try!
BUT can't get at RedBoot to reflash or just reconfigure RedBoot.
Can we write to flash with BusyBox?
mtd device ... seems to have limited writing capability?
not really?
Compile mtd_utils.
They give info but unlocking/writing not allowed by kernel.
fconfig ported to linux ... looks noice but again can't open mtd for write.
kexec? ... Hurmmm.
Okay.
Write a kernel module.
Get address of mtd data structures from kernel with nm.
hexdump them
Get the pointer to the mtd device in which RedBoot config is written,
Follow the structure and find the WRITABLE flag.
Set writable to 1!
Now mtd_unlock mtd_write does something. But? Flash not changed :(
fconfig seems to do more. Use it to set time delay to 2, not 0.
BUt it doesn't quite work.
The config is not modified ... BUT ... the CRC is!
A few more attempts to correct it back to valid don't seem to work.
fconfig won't write it again as the CRC is invalid!
Hah hah.
Okay.
Fine.
Reboot.
OH yessss! Redboot detects bad CRC in it's fconfig block and breaks into command-line! YES!! >;-)
Right. nfs boot.
Manual reading. Configure stuff. Unpack initrd.gz/initrd_media.gz, mount, make a copy of it. Config config. Read manuals. After a while have nfs boot, BUT *sigh* half the libs are not there. It's a different image really than the busybox_media.jffs2? Thus ensues lib/bin/module finding and installing ... which never quite completely works.
MAH! MAH! MAH! I've seriously run out of time.
So.
Hopefully we can recover that box sometime.
For now share another box and do some real work.
(real work = spend hours on weird timing/gfx/memory problems to find eventually the main problem is gstreamer tcpserversrc binding to default ("localhost") doesn't work. A bind to 0.0.0.0 does work.)
Now we still have mostly memory problems now.
Buffering video is probably using up too much especially when 1 video ends + another starts maybe? Multiple rebuilds and reconfigs and runs with different memory settings later ....
http://ecos.sourceware.org/docs-lat
http://www.embedded.com/story/OEG200207
http://sourceware.org/redboot/
http://www.gelato.unsw.edu.au/lxr/sourc
Inside my kernel this seems to be in place:
201 #ifdef CONFIG_MTD_REDBOOT_PARTS_READONLY
202 if (!memcmp(names, "RedBoot", 8) ||
203 !memcmp(names, "RedBoot config", 15) ||
204 !memcmp(names, "FIS directory", 14)) {
205 parts[i].mask_flags = MTD_WRITEABLE;
206 }
207 #endif
But writing to flash may not be possible for other reasons. The mtd driver might be find for read only. Writing to flash might be fully supported in redboot code but not in mtd code in busybox? Not sure. The flash writing procedure requires unlock, erase, write, lock.
http://www.gelato.unsw.edu.au/lxr/sourc
28 /* Our partition node structure */
29 struct mtd_part {
30 struct mtd_info mtd;
31 struct mtd_info *master;
32 u_int32_t offset;
33 int index;
34 struct list_head list;
35 int registered;
36 };
http://www.gelato.unsw.edu.au/lxr/i
http://www.gelato.unsw.edu.au/lxr/sourc
59 struct mtd_info {
60 u_char type;
61 u_int32_t flags;
62 u_int32_t size; // Total size of the MTD
63
.
.
.
http://www.linux-mtd.infradead.org/
Linux MTD (flash device drivers).
http://wiki.davincidsp.com/index.php/MT
MTD utils
Heh heh, mtd_utils has a little hexdump inside also.
fconfig ported to work in linux/busybox: HANDY!
http://andrzejekiert.ovh.org/software.h
http://andrzejekiert.ovh.org/software/f
Could build kexec for the platform and trigger boot of a particular image from busybox. Maybe.
http://www.ibm.com/developerworks/l
http://www.kernel.org/pub/linux/ke
# this will more or less get things going:
CC=arm-linux-gcc CXX=arm-linux-g++ make
11 July 2009 @ 01:01 am
2 posts about use/abuse of Microsoft formats/packages in linux in a row :( sorry :(
The wine I have has an internet exploder with it .. but .. it doesn't work? :(
Not sure what is up.
Found this:
http://www.tatanka.com.br/ies4linux/pag e/Installation
Download. Unpack. Run. (installer breaks out and warning. Run again. Gets further. Breaks out again.
Run again. Disable Flash install as that is giving a run32.dll exception.
:~/src/ies4linux-2.99.0.1$ wine --version
wine-1.1.25
:~/src/ies4linux-2.99.0.1$ ./ies4linux
IEs4Linux 2 is developed to be used with recent Wine versions (0.9.x). It seems that you are using an old version. It's recommended that you update your wine to the latest version (Go to: winehq.com).
Yeah. Okay.
ie6
Uoh. neat :)
motortax.ie site works fine.
Ow, where are my insurance details.
Clicketty click.
Done.
Screenshot here:
http://www.dspsrv.com/~jamesc/torture/S creenshotOfRunInternetExploderOnLinux.pn g
The wine I have has an internet exploder with it .. but .. it doesn't work? :(
Not sure what is up.
Found this:
http://www.tatanka.com.br/ies4linux/pag
Download. Unpack. Run. (installer breaks out and warning. Run again. Gets further. Breaks out again.
Run again. Disable Flash install as that is giving a run32.dll exception.
:~/src/ies4linux-2.99.0.1$ wine --version
wine-1.1.25
:~/src/ies4linux-2.99.0.1$ ./ies4linux
IEs4Linux 2 is developed to be used with recent Wine versions (0.9.x). It seems that you are using an old version. It's recommended that you update your wine to the latest version (Go to: winehq.com).
Yeah. Okay.
ie6
Uoh. neat :)
motortax.ie site works fine.
Ow, where are my insurance details.
Clicketty click.
Done.
Screenshot here:
http://www.dspsrv.com/~jamesc/torture/S
11 July 2009 @ 12:56 am
Use Projity openproj. http://openproj.org/
"OpenProj is a free, open source desktop alternative to Microsoft Project."
Very good, it read the .mpp I was interested in no bother.
Other linux project planning tools don't work much with .mpps.
Colleagues have used it to edit .mpps and exchange them with Windows people.
Downloads here:
http://sourceforge.net/projects/openpro j/files/
The rpm worked well for me on Fedora 10.
The .deb (openproj_1.4-2.deb) installed and runs but menus/gui were invisible for me on ubuntu jaunty.
I have some java dev packages installed so my java environment is not a bog-standard one.
google problem trap: help problem openproj cannot see interface b0rked doesn't work horrendous argh help!
Projity was acquired recently by Serena Software.
Common Public Attribution Licensed.
Implemented in Java.
Seems to be a relationship with Sun and distros so hopefully coming as the project planning part of StarOffice and OpenOffice sometime. No I'm not affiliated in any way and still don't even like java though somewhat grudgingly have to admit it's somewhat useful.
vi `which openproj`
# Set it to log to file and control what version of java it chooses.
# The command-line it chose was this:
/usr/lib/jvm/java-1.5.0-sun/bin/java -Xms128m -Xmx768m -jar /usr/share/openproj/openproj.jar --silentlyFail true
# This command-line worked for me (just use my default java which is 1.6):
java -Xms128m -Xmx768m -jar /usr/share/openproj/openproj.jar
I have these jvms:
java version "1.6.0_0"
OpenJDK Runtime Environment (IcedTea6 1.4.1) (6b14-1.4.1-0ubuntu7)
OpenJDK Server VM (build 14.0-b08, mixed mode)
java version "1.5.0_18"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_18-b02)
Java HotSpot(TM) Server VM (build 1.5.0_18-b02, mixed mode)
"OpenProj is a free, open source desktop alternative to Microsoft Project."
Very good, it read the .mpp I was interested in no bother.
Other linux project planning tools don't work much with .mpps.
Colleagues have used it to edit .mpps and exchange them with Windows people.
Downloads here:
http://sourceforge.net/projects/openpro
The rpm worked well for me on Fedora 10.
The .deb (openproj_1.4-2.deb) installed and runs but menus/gui were invisible for me on ubuntu jaunty.
I have some java dev packages installed so my java environment is not a bog-standard one.
google problem trap: help problem openproj cannot see interface b0rked doesn't work horrendous argh help!
Projity was acquired recently by Serena Software.
Common Public Attribution Licensed.
Implemented in Java.
Seems to be a relationship with Sun and distros so hopefully coming as the project planning part of StarOffice and OpenOffice sometime. No I'm not affiliated in any way and still don't even like java though somewhat grudgingly have to admit it's somewhat useful.
vi `which openproj`
# Set it to log to file and control what version of java it chooses.
# The command-line it chose was this:
/usr/lib/jvm/java-1.5.0-sun/bin/java -Xms128m -Xmx768m -jar /usr/share/openproj/openproj.jar --silentlyFail true
# This command-line worked for me (just use my default java which is 1.6):
java -Xms128m -Xmx768m -jar /usr/share/openproj/openproj.jar
I have these jvms:
java version "1.6.0_0"
OpenJDK Runtime Environment (IcedTea6 1.4.1) (6b14-1.4.1-0ubuntu7)
OpenJDK Server VM (build 14.0-b08, mixed mode)
java version "1.5.0_18"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_18-b02)
Java HotSpot(TM) Server VM (build 1.5.0_18-b02, mixed mode)
06 July 2009 @ 04:50 pm
Not AGAIN! DOH. ended up writing a quick c hexdump AGAIN :(.
void hexdump(char *msg, char *buf, int len)
{
int i;
char c;
char str[0x11];
if (msg != NULL) printf("%s: %s\n", __func__, msg);
i=0;
while(i<len){
if (i%0x10 == 0) printf("%08x: ",i);
c = *(buf+i);
printf("%02x", (int)c);
str[i%0x10] = '.';
if (c >= 32 && c<=120) str[i%0x10] = c;
if (i%2 == 0) printf(" ");
if (i%0x10 == 0xf) {
str[i%0x10+1] = 0;
printf(" %s\n",str);
}
i++;
}
if (i%0x10 != 0xf) {
str[i%0x10+1] = 0;
printf(" %s\n",str);
}
}
05 July 2009 @ 03:56 am
We went on a cycle today, I cycled over to Kilmashogue (start of Wicklow way near Marlay park).
Yeow! Steep hill. Fionn drove with kids and kids bikes.
Then we cycled up the hill, had a picnic and cycled back down.
http://www.facebook.com/album.php?aid=2 015681&id=1118555017&l=59f1dcfc6b
We found 2 burnt out cars. One micra in car park.
One white/black BMW up the hills.
Then I cycled back home over the hills instead of on the road.
More steepness. Up and Down steepness. After Three Rock extreme rocky downhill steepness.
Trails deteriorated into very interesting cycling.
I had to walk a bit,
I think there might be an easier track to cycle (as I joined it 100m from bottom of hill!) only it has moved since the map I had was done.
http://www.openstreetmap.org/user/gaoit he/traces/432302
http://www.openstreetmap.org/?lat=53.25 161&lon=-6.25589&zoom=15&layers=B000FTF
My mobile phone (Nokia E65) has been misbehaving.
Saying "Insert SIM card" and "General System Error" reset needed and crashing/resetting itself (more often than normal).
The web votes for jamming something in behind the SIM and it seems to be working for me :)
I quite like hardware hacks like this :-D
http://discussions.europe.nokia.com/dis cussions/board/message?board.id=hardware&message.id=7926&jump=true#M7926
http://ocpdesign.wordpress.com/2008/0 9/12/nokia-e65-sim-card-registration-fai led-insert-sim-card-error-cant-update-fi rmware/
http://www.boards.ie/vbulletin/showthre ad.php?p=58081238
New hutch for the rabbits.
They're not impressed.
Ran around the edges of the garden alot at bedtime.
Twinkle Star is inside nice and cosy but Jack isn't - though he is inside the chicken run so safe.
I also saw a rabbit/hare up in the hills today.
At home GPS trace uploading of the cycle ensued and I wanted an elevation graph.
Here one is: http://www.dspsrv.com/~jamesc/map/Kilma shogue_to_ThreeRock_gpxreport.pdf
http://utrack.crempa.net/
http://code.google.com/p/wherewasi/w iki/WhereWasI
wherewasi.py --eprof -g wami-20090704-00.gpx
wherewasi_gui.py
http://www.fsckin.com/2008/04/06/r eview-four-linux-gps-packages/
http://www.mapability.com/blogs/gps/200 8/07/gpx-route-map-technical-detail.html
http://utrack.crempa.net/
http://wiki.openstreetmap.org/wiki/Maki ng_Tracks_with_Homebrew-ware
http://www.nabble.com/Displaying-the-pr operties-of-GPX-points-td22432909.html
sudo apt-get install viking
http://www.ncc.up.pt/gpsman/wGPSMan_1.h tml
Yeow! Steep hill. Fionn drove with kids and kids bikes.
Then we cycled up the hill, had a picnic and cycled back down.
http://www.facebook.com/album.php?aid=2
We found 2 burnt out cars. One micra in car park.
One white/black BMW up the hills.
Then I cycled back home over the hills instead of on the road.
More steepness. Up and Down steepness. After Three Rock extreme rocky downhill steepness.
Trails deteriorated into very interesting cycling.
I had to walk a bit,
I think there might be an easier track to cycle (as I joined it 100m from bottom of hill!) only it has moved since the map I had was done.
http://www.openstreetmap.org/user/gaoit
http://www.openstreetmap.org/?lat=53.25
My mobile phone (Nokia E65) has been misbehaving.
Saying "Insert SIM card" and "General System Error" reset needed and crashing/resetting itself (more often than normal).
The web votes for jamming something in behind the SIM and it seems to be working for me :)
I quite like hardware hacks like this :-D
http://discussions.europe.nokia.com/dis
http://ocpdesign.wordpress.com/2008/0
http://www.boards.ie/vbulletin/showthre
New hutch for the rabbits.
They're not impressed.
Ran around the edges of the garden alot at bedtime.
Twinkle Star is inside nice and cosy but Jack isn't - though he is inside the chicken run so safe.
I also saw a rabbit/hare up in the hills today.
At home GPS trace uploading of the cycle ensued and I wanted an elevation graph.
Here one is: http://www.dspsrv.com/~jamesc/map/Kilma
http://utrack.crempa.net/
http://code.google.com/p/wherewasi/w
wherewasi.py --eprof -g wami-20090704-00.gpx
wherewasi_gui.py
http://www.fsckin.com/2008/04/06/r
http://www.mapability.com/blogs/gps/200
http://utrack.crempa.net/
http://wiki.openstreetmap.org/wiki/Maki
http://www.nabble.com/Displaying-the-pr
sudo apt-get install viking
http://www.ncc.up.pt/gpsman/wGPSMan_1.h
01 July 2009 @ 01:48 am
Video here:
http://www.youtube.com/watch?v=5TVB7KPX Ats
Image data Copyright:
http://gis3.dcmnronline.ie/imf5104/i mf.jsp?site=Helicopter
It would be nice if GIS info were available to taxpayers! poke. poke.
And if GIS browsing site had more features.
Basic bookmarking/linking would be nice.
Anyone want to write a cloudy app?
It's not fantastically wonderful data really .. maybe,
http://gis3.dcmnronline.ie/output/ENG_H ELICOPTER_dcmnrgis-web134762684331.png
http://gis3.dcmnronline.ie/sorted/8 7685.jpg
Cuskinney, Cobh
http://gis3.dcmnronline.ie/sorted/8 7654.jpg
The slip in Cobh
http://gis3.dcmnronline.ie/sorted/10074 1.jpg
Dublin joyce martello tower sandycove
http://gis3.dcmnronline.ie/sorted/10451 3.jpg
Dundalk
http://gis3.dcmnronline.ie/sorted/1.j pg
Throat of malin
87k * 100000 images = 8700000k = 8.7G
Hmmmmm >;)
http://gis3.dcmnronline.ie/sorted/8 8123.jpg
out to R of Roches Point (and of Cork harbour)
http://gis3.dcmnronline.ie/sorted/8 7198.jpg
well out of (Cork) harbour to left
http://en.wikipedia.org/wiki/HNLMS_Amst erdam_(A836)
http://www.defensie.nl/marine/operation eel/schepen/hr_ms_amsterdam/
http://gis3.dcmnronline.ie/sorted/8 7638.jpg
http://gis3.dcmnronline.ie/sorted/8 7639.jpg
http://gis3.dcmnronline.ie/sorted/8 7640.jpg
http://gis3.dcmnronline.ie/sorted/8 7641.jpg
http://gis3.dcmnronline.ie/sorted/8 7642.jpg
87638 bow -> 42 stern
http://gis3.dcmnronline.ie/imf5104/i mf.jsp?site=Helicopter

http://www.youtube.com/watch?v=5TVB7KPX
Image data Copyright:
http://gis3.dcmnronline.ie/imf5104/i
It would be nice if GIS info were available to taxpayers! poke. poke.
And if GIS browsing site had more features.
Basic bookmarking/linking would be nice.
Anyone want to write a cloudy app?
It's not fantastically wonderful data really .. maybe,
BASEURL=http://gis3.dcmnronline.ie/sorted/ for (( i=87198 ; i<=88123 ; i++ )) ; do echo i=$i; wget -c $BASEURL/$i.jpg ; done for (( i=87198,j=0 ; i<=88123 ; i++,j++ )) ; do ln -s $i.jpg $j.jpg; done # -r is framerate in fps, -b bitrate FFFLAGS=-title 'Helicopter Coast Cork Harbour http://gis3.dcmnronline.ie/imf5104/imf.jsp?site=Helicopter' ffmpeg $FFFLAGS -r 3 -b 1800 -i helisound.mp3 -i %d.jpg HelicopterCoastCorkHarbour.mp4 # ugh, yes. sorry about the audio # 995 images, 8M video.
http://gis3.dcmnronline.ie/output/ENG_H
http://gis3.dcmnronline.ie/sorted/8
Cuskinney, Cobh
http://gis3.dcmnronline.ie/sorted/8
The slip in Cobh
http://gis3.dcmnronline.ie/sorted/10074
Dublin joyce martello tower sandycove
http://gis3.dcmnronline.ie/sorted/10451
Dundalk
http://gis3.dcmnronline.ie/sorted/1.j
Throat of malin
87k * 100000 images = 8700000k = 8.7G
Hmmmmm >;)
http://gis3.dcmnronline.ie/sorted/8
out to R of Roches Point (and of Cork harbour)
http://gis3.dcmnronline.ie/sorted/8
well out of (Cork) harbour to left
http://en.wikipedia.org/wiki/HNLMS_Amst
http://www.defensie.nl/marine/operation
http://gis3.dcmnronline.ie/sorted/8
http://gis3.dcmnronline.ie/sorted/8
http://gis3.dcmnronline.ie/sorted/8
http://gis3.dcmnronline.ie/sorted/8
http://gis3.dcmnronline.ie/sorted/8
87638 bow -> 42 stern
http://gis3.dcmnronline.ie/imf5104/i

12 June 2009 @ 12:24 am
Kids were in school play last 4 days.
Very good actually combination of variety Irish dancing, singing and music by kids and teachers mixed in with two stories.
Snow White and Prince Hugh
Kate on Mon (F&M saw her) + Tue (F&M&I saw her and Daire).
Daire was Prince Hugh who was a bit too popular with the girls for comfort!
Daire was Prince Hugh on Tue and today (Thur), on Wed Daire was in Larch hill with scouts.
(Maeve and I dropped Daire, Cian and Conor over to scouts.
We left Kate with Moya to get lift to play.
Maeve & I watched play and collected Kate.)
Kate was very funny and nice as a dwarf.
She marched around very confidently.
She was very expressive - especially when they saw snow white had collapsed!
She stared very concerndly at snow white at the end.
Had great fun with Daire collecting some more election posters.
He was really good at spotting them from car and great help carrying snippers and posters and ties.
He was still dressed in sandals and pants with rope lashing on them for costume and still with moustache of Prince Hugh.
He got hit on the arms with one poster on the way down. :(
I got some myself on way back from dropping him down to do school play.
Met Catherine and Kevin also collecting posters.
Kevin has a magic long snippy rope stick.
It almost flies like a broomstick!
We have 10 of Elizabeth's, 4 of Adrianne's and 1 each of Terence's and Deirdre's.
We met a friendly drunken person drinking through a plastic bag full of cans at the Goat.
He offered to help but we had our ladder.
He was asking how much might the fine be if they were left up and if you could make money putting the posters up or down.
He scooted off real fast, hopefully not to get a ladder!!
Fionn's really busy with Residents stuff.
Delivering flyers about AGM, collecting subs, getting photos ready, making presentation for AGM, arranging things with roads/greens/sports&social, stuff needs to go up on web and be printed. http://lhra.info
I'm suffering form VERRRY annoying cough.
It was a teeny possible allergic sniffle coming back from camping. :(
The heat seemed to initiate it.
Very good actually combination of variety Irish dancing, singing and music by kids and teachers mixed in with two stories.
Snow White and Prince Hugh
Kate on Mon (F&M saw her) + Tue (F&M&I saw her and Daire).
Daire was Prince Hugh who was a bit too popular with the girls for comfort!
Daire was Prince Hugh on Tue and today (Thur), on Wed Daire was in Larch hill with scouts.
(Maeve and I dropped Daire, Cian and Conor over to scouts.
We left Kate with Moya to get lift to play.
Maeve & I watched play and collected Kate.)
Kate was very funny and nice as a dwarf.
She marched around very confidently.
She was very expressive - especially when they saw snow white had collapsed!
She stared very concerndly at snow white at the end.
Had great fun with Daire collecting some more election posters.
He was really good at spotting them from car and great help carrying snippers and posters and ties.
He was still dressed in sandals and pants with rope lashing on them for costume and still with moustache of Prince Hugh.
He got hit on the arms with one poster on the way down. :(
I got some myself on way back from dropping him down to do school play.
Met Catherine and Kevin also collecting posters.
Kevin has a magic long snippy rope stick.
It almost flies like a broomstick!
We have 10 of Elizabeth's, 4 of Adrianne's and 1 each of Terence's and Deirdre's.
We met a friendly drunken person drinking through a plastic bag full of cans at the Goat.
He offered to help but we had our ladder.
He was asking how much might the fine be if they were left up and if you could make money putting the posters up or down.
He scooted off real fast, hopefully not to get a ladder!!
Fionn's really busy with Residents stuff.
Delivering flyers about AGM, collecting subs, getting photos ready, making presentation for AGM, arranging things with roads/greens/sports&social, stuff needs to go up on web and be printed. http://lhra.info
I'm suffering form VERRRY annoying cough.
It was a teeny possible allergic sniffle coming back from camping. :(
The heat seemed to initiate it.

