<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-504705560946953582</id><updated>2011-12-08T10:22:35.754Z</updated><category term='Continous Integration'/><category term='request tracker'/><category term='Webspace'/><category term='packaging'/><category term='sysadmin'/><category term='relationship'/><category term='documentation'/><category term='VirtualBox'/><category term='perl'/><category term='Chinese'/><category term='charities'/><category term='projects'/><category term='open source'/><category term='XP installation'/><category term='Progress'/><category term='banking'/><category term='rpm'/><category term='WinMerge'/><category term='sencha'/><category term='ext.js'/><category term='c#'/><category term='test machines'/><category term='ext.net'/><category term='make'/><category term='generate code'/><category term='DTAUS'/><category term='Delphi'/><category term='windows'/><category term='.net'/><category term='Mono'/><category term='delphi.net'/><category term='NAnt'/><category term='phpNuke'/><category term='c++'/><category term='Japanese'/><category term='wget'/><category term='Knowledge Tree'/><category term='database'/><category term='reporting'/><category term='knowing'/><category term='linux'/><category term='i18n'/><category term='phpBB'/><category term='php'/><category term='httpd'/><category term='MediaWiki'/><category term='God'/><category term='sourceforge'/><category term='CVS'/><category term='Developer tools'/><category term='WebDAV'/><category term='XSP'/><category term='ERP'/><category term='CSV'/><category term='Delphi2C#'/><category term='download websites'/><category term='faith'/><category term='Java'/><category term='smoothwall'/><category term='networking'/><category term='scaffolding'/><category term='VBA'/><category term='Versioning'/><category term='free software'/><category term='PostgreSQL'/><category term='Kolab'/><category term='OpenPetra'/><category term='sql'/><category term='Inno Setup'/><category term='OpenPKG'/><category term='kernel'/><category term='Open Source on Windows'/><category term='CRP'/><category term='vpn'/><category term='Debug'/><category term='ODBC'/><category term='symfony'/><category term='Bash'/><category term='parser'/><category term='ASP.Net'/><category term='ide'/><category term='Hostsharing'/><title type='text'>Diaries of a Programmer</title><subtitle type='html'>I am working with many programming languages and know all sorts of computer software.

I hope some of my findings might help you, they certainly will help me when I forget about the solution in a few weeks time and find it again on my own webpage...

I might add also some thoughts about my faith every now and again, I hope it is not confusing you...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>45</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-7426338999046347255</id><published>2011-11-11T11:50:00.001Z</published><updated>2011-11-11T12:30:54.895Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Inno Setup'/><category scheme='http://www.blogger.com/atom/ns#' term='Open Source on Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='NAnt'/><title type='text'>Windows Installer for NAnt</title><content type='html'>In the OpenPetra project, we completely depend on NAnt, which works out very well for us.&lt;br /&gt;But we have had now several problems with permissions for executing nant on Windows, from the Program Files directory. Also the creation of the nant.bat was not trivial, and could cause problems with permissions.&lt;br /&gt;&lt;br /&gt;The easy solution was to create a small InnoSetup Installer.&lt;br /&gt;You can download it from our files section at SourceForge:&amp;nbsp;&lt;a href="http://sourceforge.net/projects/openpetraorg/files/openpetraorg/Tools/NAnt-Setup-0.91.exe/download"&gt;http://sourceforge.net/projects/openpetraorg/files/openpetraorg/Tools/NAnt-Setup-0.91.exe/download&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The script file for InnoSetup looks like this:&lt;br /&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;[Setup]&lt;br /&gt;AppName=NAnt&lt;br /&gt;AppVerName=NAnt 0.91&lt;br /&gt;DefaultDirName={pf}\NAnt&lt;br /&gt;DefaultGroupName=NAnt&lt;br /&gt;LicenseFile=nant-0.91\COPYING.txt&lt;br /&gt;OutputBaseFilename=NAnt-Setup-0.91&lt;br /&gt;[Files]&lt;br /&gt;Source: nant-0.91\*.*; DestDir: {app}; Flags: recursesubdirs createallsubdirs&lt;br /&gt;[Code]&lt;br /&gt;procedure CurStepChanged(CurStep: TSetupStep);&lt;br /&gt;begin&lt;br /&gt;&amp;nbsp; if CurStep=ssPostInstall then&lt;br /&gt;&amp;nbsp; begin&lt;br /&gt;&amp;nbsp; &amp;nbsp; SaveStringToFile(ExpandConstant('{win}/nant.bat'), ExpandConstant('@"{app}\bin\NAnt.exe" %*'), False);&lt;br /&gt;&amp;nbsp; end;&lt;br /&gt;end;&lt;/blockquote&gt;If you have trouble with your old NAnt installation, you should delete the folder first from the Program Files, before you run the installer!&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-7426338999046347255?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/7426338999046347255/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=7426338999046347255' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/7426338999046347255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/7426338999046347255'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2011/11/windows-installer-for-nant.html' title='Windows Installer for NAnt'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-5588711560576836119</id><published>2011-09-29T13:36:00.003+01:00</published><updated>2011-10-08T08:21:54.048+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenPetra'/><title type='text'>Use Case OpenPetra for TeenStreet 2011</title><content type='html'>&lt;br /&gt;&lt;h2&gt;Intro&lt;/h2&gt;For TeenStreet 2011 in Germany, we have extended and used&lt;a href="http://www.openpetra.org/"&gt;OpenPetra&lt;/a&gt;.&lt;br /&gt;TeenStreet (&lt;a href="http://www.teenstreet.om.org/"&gt;http://www.teenstreet.om.org/&lt;/a&gt;) is an InternationalChristian Teenager Event that happens all over the world.&lt;br /&gt;Teenagers, group leaders (aka coaches) and service crew from about18 European countries, and even further abroad, register for the &lt;a href="http://www.teenstreet.de/"&gt;TeenStreet conference in Germany&lt;/a&gt;. The registration is processed through the home office ofeach country. The home office is responsible for payment andaccepting or denying registrations.&lt;br /&gt;The organising office does all the logistics for the conference,eg. printing the badges.&lt;br /&gt;The software ran fine on a Debian Linux on a virtual server. Wehave had about 3600 applications altogether.&lt;br /&gt;&lt;h2&gt;&lt;a href="http://www.blogger.com/blogger.g?blogID=504705560946953582" name="Development"&gt;&lt;/a&gt;Development&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;The development has happened in a special	branch,&amp;nbsp;&lt;a href="http://bzr.openpetra.org:8088/dev_0000375_online_registration_backend/files"&gt;http://bzr.openpetra.org:8088/dev_0000375_online_registration_backend/files&lt;/a&gt;&lt;br /&gt;	&lt;/li&gt;&lt;li&gt;a specific version with internal data, eg. the registration	files for each country, have been maintained on an internal bazaar	branch, that is not public.&lt;br /&gt;	&lt;/li&gt;&lt;li&gt;all modifications from the public branch have been merged	into trunk in August 2011&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;&lt;a href="http://www.blogger.com/blogger.g?blogID=504705560946953582" name="Functionality"&gt;&lt;/a&gt;Functionality&lt;/h2&gt;The functionality can be separated into the part that was seen bythe participants, and the part that was used by the registrationoffices and the organising office.&lt;br /&gt;&lt;h3&gt;&lt;a href="http://www.blogger.com/blogger.g?blogID=504705560946953582" name="Registration"&gt;&lt;/a&gt;Registration&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;There is a base yaml file with general data, eg. photo upload&lt;br /&gt;	&lt;/li&gt;&lt;li&gt;A javascript file contains all the texts, and should be	translated by the home office.&lt;br /&gt;	&lt;/li&gt;&lt;li&gt;There are several roles, eg. Teenagers, Coaches, Service	people. The questions and fields to fill in are different for each	role.&lt;br /&gt;	&lt;/li&gt;&lt;li&gt;The home office can request customizations for the yaml file,	which is derived from the base yaml file.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;An Email is sent to the home office and the applicant, when	the registration is submitted. A PDF file is generated and provided	as a download and as an attachment to that email.&lt;br /&gt;	&lt;ul&gt;&lt;li&gt;the email and the pdf are based on HTML templates. The PDF		can also embed other PDF files, which is helpful for more detailed		questionnaires for the adults.&lt;br /&gt;	&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;The applicant has to print the PDF, sign the paper, teenagers	have to let the parents sign as well.&lt;br /&gt;	&lt;ul&gt;&lt;li&gt;If payment is done by direct debit, there is an additional		signature for that on the paper as well.&lt;br /&gt;		&lt;/li&gt;&lt;li&gt;the paper is sent as a normal letter to the home office&lt;br /&gt;	&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;&lt;a href="http://www.blogger.com/blogger.g?blogID=504705560946953582" name="Backend"&gt;&lt;/a&gt;Backend&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;The home office receives the letter, searches for the	applicant, and reviews the application. If the applicant is	accepted, the state of the application is changed from "On	Hold" to "Accepted". The acceptance date is recorded.&lt;br /&gt;	&lt;/li&gt;&lt;li&gt;If an applicant is cancelled and the application status is	set to cancelled, the cancellation date will be recorded.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Early applicants will receive a free T-Shirt. There is a	special report that tells how many T-Shirts and sizes need to be	ordered.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Badges can be printed for all applicants, with different	layout, defined in HTML, for each role. Photos for the applicants	and bar codes can be printed.&lt;br /&gt;	&lt;ul&gt;&lt;li&gt;Lost Badges can be reprinted on demand.&lt;br /&gt;	&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Export all data of participants to an Excel file to process	the data further.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Print reports for medical needs, vegetarians for the kitchen.&lt;br /&gt;	&lt;/li&gt;&lt;li&gt;Print a report to know how many people are on site on each	day.&lt;br /&gt;	&lt;/li&gt;&lt;li&gt;Print a report for the children and families on the site, for	their special programme.&lt;br /&gt;	&lt;/li&gt;&lt;li&gt;Print reports for the home offices. They tick off who has	actually arrived.&lt;br /&gt;	&lt;/li&gt;&lt;li&gt;Print reports for the service crew, or other teams, to know	who is supposed to be on their team.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Rebukes: allow the "Boundaries Team" to make notes	for applicants who violate the rules on site, and print reports for	the coaches or home office representatives&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Medical team: the medical people can see the relevant	information and emergency contact information of the participants,	and store information about diagnosis and therapy.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Import applications from Petra 2.x for offices that did not	take part in the online registration.&lt;br /&gt;	&lt;/li&gt;&lt;li&gt;Late and manual registrations have also been processed	through the backend.&lt;br /&gt;	&lt;/li&gt;&lt;li&gt;Export applicants into the local Petra 2.x for the home	offices.&lt;br /&gt;	&lt;/li&gt;&lt;li&gt;Export gift batches for Petra 2.x to easily process the	application and registration fee. This has only been used by the	German office this year.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Print reports for the organising finance office, to charge	the home offices for the participants that come from their country.	Consider siblings, and early/late/accepted cancellations. Order	participants by role.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;User management is currently not done in the web interface,	but through the OpenPetra fat client. Everything else runs in a web	interface.&lt;br /&gt;	&lt;/li&gt;&lt;li&gt;User rights can be limited for the home office	representatives to the applicants for their country. The medical	team and the boundaries team and the finance office get special	permissions.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;&lt;a href="http://www.blogger.com/blogger.g?blogID=504705560946953582" name="possible_improvements"&gt;&lt;/a&gt;possible improvements&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;For next year, the applicants should be able to retrieve and	update the information they have entered last year&lt;br /&gt;	&lt;/li&gt;&lt;li&gt;Allow applicants to login later again, and register for	workshops and seminars&lt;br /&gt;	&lt;/li&gt;&lt;li&gt;Provide a list of all people that are currently on site. Need	to record the actual arrival date.&lt;br /&gt;	&lt;/li&gt;&lt;li&gt;Group assignments for the fellowship groups need to be semi	automated.&lt;br /&gt;	&lt;/li&gt;&lt;li&gt;The administration of users should be available in the web	interface as well.&lt;br /&gt;	&lt;/li&gt;&lt;li&gt;When creating the gift batch file, also create a DTAUS file	at the same time.&lt;br /&gt;	&lt;/li&gt;&lt;li&gt;head set distribution for the translation, scan the badges,	home offices can get a report to see who has used a headset. check	which headsets were not returned after the session.&lt;br /&gt;	&lt;/li&gt;&lt;li&gt;upgrade ext.net and ext.js to the latest version, so that IE	9 can be fully supported&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-5588711560576836119?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/5588711560576836119/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=5588711560576836119' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/5588711560576836119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/5588711560576836119'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2011/09/use-case-openpetra-for-teenstreet-2011.html' title='Use Case OpenPetra for TeenStreet 2011'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-4169051068618867280</id><published>2011-03-15T15:11:00.004Z</published><updated>2011-03-15T16:12:35.029Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ext.net'/><category scheme='http://www.blogger.com/atom/ns#' term='sencha'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><category scheme='http://www.blogger.com/atom/ns#' term='ext.js'/><title type='text'>Ext.Net and Mono</title><content type='html'>&lt;div&gt;I like ext.js/Sencha for having a rich client in the browser.&lt;/div&gt;&lt;br /&gt;On the other hand, we are using Mono for running our .Net server.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://ext.net/"&gt;ext.net&lt;/a&gt; is a good library that helps you to easily write web applications, based on your .net libraries.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For &lt;a href="http://www.openpetra.org/"&gt;OpenPetra&lt;/a&gt;, I have created an online application system, and the backend for the registration office is written with ext.net.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here are some problems I came across, and how I solved them:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;First, I had to recompile the ext.net dlls and also the Newtonsoft.Json.Net20.dll.&lt;/div&gt;&lt;div&gt;See the pages that have been helpful to me at &lt;a href="http://www.coolite.com/forums/Topic31022-16-2.aspx#bm31088"&gt;http://www.coolite.com/forums/Topic31022-16-2.aspx#bm31088&lt;/a&gt; and &lt;a href="http://www.coolite.com/forums/Topic31022-7-1.aspx"&gt;http://www.coolite.com/forums/Topic31022-7-1.aspx&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;The Newtonsoft.Json.Net20.dll has been compiled with the latest compiler built from Mono 2.8 trunk. This was necessary so that no Microsoft dlls were linked in.&lt;/div&gt;&lt;div&gt;The ext.net dll was built against the Mono compiled Newtonsoft.Json.Net20.dll on Windows with SharpDevelop.  The mono compiler crashed on Linux when trying to build the ext.net solution.&lt;/div&gt;&lt;div&gt;The resulting files are available from the online source repository of OpenPetra, eg. &lt;a href="http://bzr.openpetra.org:8088/loggerhead/trunk/files/head:/csharp/ThirdParty/ext.net/"&gt;http://bzr.openpetra.org:8088/loggerhead/trunk/files/head:/csharp/ThirdParty/ext.net/&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I was not able to get Ext.Net to run with the latest Mono 2.8, but it is working fine with 2.6.7.&lt;/div&gt;&lt;div&gt;I had to build it from the sources.&lt;/div&gt;&lt;div&gt;Some links related to the problems I had with Mono 2.8 and Ext.Net:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;compile ext.net: There is no implicit reference conversion from `Ext.Net.ComboBox' to `Ext.Net.ComboBoxBase&lt;t&gt;'&lt;/div&gt;&lt;div&gt;fixed in master &lt;a href="https://bugzilla.novell.com/show_bug.cgi?id=653832"&gt;https://bugzilla.novell.com/show_bug.cgi?id=653832&lt;/a&gt;&lt;/div&gt;&lt;div&gt;see also &lt;a href="http://go-mono.com/forums/#nabble-td2546240"&gt;http://go-mono.com/forums/#nabble-td2546240&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Running ext.net on Mono 2.8: get the error: Cannot add a Ext.Net.Parameter to System.String&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;For the moment, the solution for me was to use Mono 2.6.7.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The examples of ext.net only show the c# code inside the aspx file, but with growing size of the code it would be good to be able to split the code behind code from the UI code.&lt;/div&gt;&lt;div&gt;This is possible, but you need to define all controls in the .cs file, at least those you want to use in your code behind code.&lt;/div&gt;&lt;div&gt;see eg. &lt;a href="http://bzr.openpetra.org:8088/loggerhead/trunk/annotate/head:/webserver/Apps/OnlineRegistrationBackend/Desktop.aspx.cs"&gt;OnlineRegistrationBackend/Desktop.aspx.cs&lt;/a&gt;&lt;/div&gt;&lt;div&gt;In the aspx file, make sure you have at the top:&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;%@ Page Language="C#"&lt;/div&gt;&lt;div&gt;    Inherits="Ict.Petra.WebServer.MConference.TPageOnlineApplication"&lt;/div&gt;&lt;div&gt;    src="Desktop.aspx.cs" %&gt;&lt;/div&gt;&lt;%@ Register assembly="Ext.Net" namespace="Ext.Net" tagprefix="ext" %&gt;&lt;/blockquote&gt;see the whole file here: &lt;a href="http://bzr.openpetra.org:8088/loggerhead/trunk/annotate/head:/webserver/Apps/OnlineRegistrationBackend/Desktop.aspx"&gt;OnlineRegistrationBackend/Desktop.aspx&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now I ran into errors like this when Mono was compiling the code on the fly:&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;Compiler Error Message: CS1644: Feature `anonymous types' cannot be used because it is not part of the C# 2.0 language specification&lt;/blockquote&gt;I found on the Internet this page: &lt;a href="http://www.4guysfromrolla.com/articles/121207-1.aspx"&gt;http://www.4guysfromrolla.com/articles/121207-1.aspx&lt;/a&gt;&lt;/div&gt;&lt;div&gt;linked from &lt;a href="http://web.archiveorange.com/archive/v/c2PM7RMRJf7Ti7PP7uVb"&gt;http://web.archiveorange.com/archive/v/c2PM7RMRJf7Ti7PP7uVb&lt;/a&gt;, where they discuss how to use "extension methods" and "collection initializers" with Mono.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have added all those settings to my web.config, see the result here:&lt;/div&gt;&lt;div&gt;&lt;a href="http://bzr.openpetra.org:8088/loggerhead/trunk/annotate/head:/inc/template/etc/web-postgresql.config"&gt;template/etc/web-postgresql.config&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can see a running demo here: &lt;a href="http://demo.openpetra.org:8009/"&gt;http://demo.openpetra.org:8009/&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-4169051068618867280?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/4169051068618867280/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=4169051068618867280' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/4169051068618867280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/4169051068618867280'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2011/03/extnet-and-mono.html' title='Ext.Net and Mono'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-596683969127908620</id><published>2011-03-07T20:28:00.003Z</published><updated>2011-03-07T20:38:55.711Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Knowledge Tree'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Knowledge Tree and PHP 5.3.3</title><content type='html'>&lt;blockquote&gt;&lt;/blockquote&gt;We have got the latest PHP version on Hostsharing, and Knowledge Tree 3.7.0.2 did not work anymore.&lt;div&gt;I got a long list of deprecated warnings, and the session would not even start, so not even a login screen is displayed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;b&gt;Deprecated&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: medium; "&gt;: Assigning the return value of new by reference is deprecated&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: medium; "&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;b&gt;Warning&lt;/b&gt;: The magic method __get() must have public visibility and cannot be static&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;b&gt;Warning&lt;/b&gt;: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The solution is to edit config/dmsDefaults.php, find the lines containing &lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;div&gt;error_reporting(E_ALL &amp;amp; ~E_NOTICE);&lt;/div&gt;&lt;div&gt;ini_set('display_errors', '1');&lt;/div&gt;&lt;div&gt;ini_set('display_startup_errors', '1');&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;Below that, add the following line:&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;error_reporting(0);&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;Now Knowledge Tree 3.7.0.2 will work again, and hopefully the next version of Knowledge Tree will have fixed all the deprecated PHP things.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-596683969127908620?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/596683969127908620/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=596683969127908620' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/596683969127908620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/596683969127908620'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2011/03/knowledge-tree-and-php-533.html' title='Knowledge Tree and PHP 5.3.3'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-5077423138826230584</id><published>2010-11-13T21:43:00.000Z</published><updated>2010-11-13T21:44:01.260Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='phpBB'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Digest for phpBB Forum without plugin</title><content type='html'>I am very glad for the hosted apps that Sourceforge provides. It is excellent to have only one login, and not to need to worry about updating the apps.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The problem with the phpBB forum is that the notification emails, when you watch a forum, do not include the message. On Sourceforge you are also not able to install a digest modification, eg. &lt;a href="http://phpbbservices.com/digests/"&gt;http://phpbbservices.com/digests/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Therefore I thought it would be good to have an external script, that regularly checks for new posts and sends an email with the contents.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the end, it was not too hard.&lt;/div&gt;&lt;div&gt;This only works for a public forum, where all posts are accessible by non-registered users.&lt;/div&gt;&lt;div&gt;There is the page search.php (eg.&lt;a href="http://sourceforge.net/apps/phpbb/openpetraorg/search.php?&amp;amp;sr=topics&amp;amp;search_id=newposts"&gt;http://sourceforge.net/apps/phpbb/openpetraorg/search.php?&amp;amp;sr=topics&amp;amp;search_id=newposts&lt;/a&gt;) that shows all new posts.&lt;/div&gt;&lt;div&gt;I store each post that has been sent as an email with the post number in a text file.&lt;/div&gt;&lt;div&gt;Then the script fetches the page of the new posts, and checks each post if it has been sent already.&lt;/div&gt;&lt;div&gt;The script sends HTML emails, and even quoting blocks appear quite alright in my email client (google mail).&lt;/div&gt;&lt;div&gt;The script is also able to parse the posts of a thread that spreads across several pages.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You also might find the functions interesting to get the HTML code and to parse for code between the beginning and the end tag.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The script is available here: &lt;a href="http://download.pokorra.de/coding/PHPBB_Digest_SF.php.txt"&gt;http://download.pokorra.de/coding/PHPBB_Digest_SF.php.txt&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Feel free to use the script and to modify it.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-5077423138826230584?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/5077423138826230584/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=5077423138826230584' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/5077423138826230584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/5077423138826230584'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2010/11/digest-for-phpbb-forum-without-plugin.html' title='Digest for phpBB Forum without plugin'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-5902556572268561161</id><published>2010-08-25T15:12:00.005+01:00</published><updated>2010-08-26T15:38:46.409+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='VirtualBox'/><category scheme='http://www.blogger.com/atom/ns#' term='smoothwall'/><title type='text'>Install Smoothwall from bootable USB memory stick</title><content type='html'>&lt;div&gt;Today I wanted to install Smoothwall on a fan-less device, Lex Light LG8302.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There is the tool UNetbootin &lt;a href="http://unetbootin.sourceforge.net/"&gt;http://unetbootin.sourceforge.net/&lt;/a&gt;, but it does not support the Smoothwall iso image, and even if it copies to iso file to USB, when you boot from it you get the UNetbootin default option, but that does not do anything. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I used 7zip to extract the iso image of Smoothwall, which gives me the [Boot] directory.&lt;/div&gt;&lt;div&gt;It seems that UNetbootin is not able to extract the boot files from the iso image, from Bootable_2.88M.img, even though it does attempt it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I used RawWrite for Windows (&lt;a href="http://www.chrysocome.net/rawwrite"&gt;http://www.chrysocome.net/rawwrite&lt;/a&gt;) to extract the files from Bootable_2.88M.img. The partition size of the USB stick will be only 2 MB, but that is ok for the moment. Copy the files initrd.img, vmlinuz und syslinux.cfg to your local harddrive. Change the names from capital to lower case letters. Reformat the USB stick to its normal size. Then run again UNetbootin, and use the Smoothwall iso image as the source. Then copy the 3 files initrd.img, vmlinuz und syslinux.cfg to the USB stick, you will need to overwrite the existing syslinux.cfg.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To test the USB stick with VMWare, I followed the instructions at &lt;a href="http://www.pendrivelinux.com/boot-a-usb-flash-drive-in-virtualbox/"&gt;http://www.pendrivelinux.com/boot-a-usb-flash-drive-in-virtualbox/&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Then on the fan-less device, I first was not sure how to get it to boot from the usb stick. Then the hint was on &lt;a href="http://nion.modprobe.de/blog/archives/343-My-new-Lex-Light-CV860A.html"&gt;http://nion.modprobe.de/blog/archives/343-My-new-Lex-Light-CV860A.html&lt;/a&gt; where it tells that you have to change the boot order to use USB-ZIP which will boot from the USB stick.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;UPDATE:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;it seems I rejoiced too early...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The installer does start from the USB stick, and does format the harddrive, but then it does not seem to find the file smoothwall.tgz and does not install all the network card drivers. So even the network install does not work.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have had a look at the source of the Smoothwall installer, in &lt;a href="http://smoothwall.svn.sourceforge.net/viewvc/smoothwall/trunk/distrib/build/sources/install/install-0.0/install/disks.c?view=log"&gt;http://smoothwall.svn.sourceforge.net/viewvc/smoothwall/trunk/distrib/build/sources/install/install-0.0/install/disks.c?view=log&lt;/a&gt;&lt;/div&gt;&lt;div&gt;The function findharddiskorcdrom looks for CDROM or harddrive, but I could not figure out why it does not find the USB stick. It only seems to check /dev/scd0, but no other device.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-5902556572268561161?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/5902556572268561161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=5902556572268561161' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/5902556572268561161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/5902556572268561161'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2010/08/install-smoothwall-from-bootable-usb.html' title='Install Smoothwall from bootable USB memory stick'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-7666573613369829333</id><published>2010-06-06T21:29:00.005+01:00</published><updated>2010-06-06T21:41:46.095+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='VirtualBox'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><title type='text'>VirtualBox PUEL on OpenSUSE on 64 bit machine</title><content type='html'>It took me a while to solve this problem, therefore here is the solution for everyone...&lt;br /&gt;&lt;br /&gt;I installed the PUEL version of VirtualBox from the virtualbox.org website, the version for personal use and evaluation.&lt;br /&gt;There is the OSE version included in OpenSUSE, but that does not support USB connections.&lt;br /&gt;&lt;br /&gt;Now for the PUEL version, you need to build the kernel module for VirtualBox.&lt;br /&gt;You might need to install gcc and make, and also the kernel sources.&lt;br /&gt;I will come to the details of the kernel sources later.&lt;br /&gt;&lt;br /&gt;When I ran /etc/init.d/vboxdrv setup, I got the error in /var/log/vbox-install.log:&lt;br /&gt;&lt;blockquote&gt;make -f /usr/src/linux-2.6.31.12-0.2/scripts/Makefile.modpost&lt;br /&gt;  scripts/mod/modpost -m -a -i /usr/src/linux-2.6.31.12-0.2-obj/i386/desktop/Module.symvers -I /tmp/vbox.3/Module.symvers  -o /tmp/vbox.3/Module.symvers -S -K /usr/src/linux-2.6.31.12-0.2-obj/i386/desktop/Module.markers -M /tmp/vbox.3/Module.markers -w -c  -s&lt;br /&gt;FATAL: /tmp/vbox.3/vboxdrv.o has no symtab?&lt;br /&gt;&lt;/blockquote&gt;I looked for symtab on the Internet, and found that it has to do with conflicts in the architecture.&lt;br /&gt;&lt;br /&gt;It took me a while to have a look at the versions of kernel packages I had installed:&lt;br /&gt;&lt;blockquote&gt;rpm -qa | grep kernel&lt;br /&gt;&lt;/blockquote&gt;This showed for my system, that the package for kernel-syms was not for x86_64, but for 586. This caused the error with symtab.&lt;br /&gt;&lt;br /&gt;Solution (please check the result of rpm above to know which exact version of the kernel you are using):&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;zypper install kernel-syms-2.6.31.12-0.2.1.x86_64&lt;br /&gt;&lt;/blockquote&gt;As an example, here is what rpm -qa | grep kernel shows after I installed the correct packages:&lt;br /&gt;&lt;blockquote&gt;kernel-xen-devel-2.6.31.12-0.2.1.x86_64&lt;br /&gt;kernel-syms-2.6.31.12-0.2.1.x86_64&lt;br /&gt;kernel-desktop-2.6.31.12-0.2.1.x86_64&lt;br /&gt;kernel-debug-devel-2.6.31.12-0.2.1.x86_64&lt;br /&gt;kernel-desktop-devel-2.6.31.12-0.2.1.x86_64&lt;br /&gt;linux-kernel-headers-2.6.31-3.4.noarch&lt;br /&gt;kernel-default-devel-2.6.31.12-0.2.1.x86_64&lt;br /&gt;kernel-source-2.6.31.12-0.2.1.noarch&lt;br /&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;Then building the kernel module for VirtualBox worked.&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-7666573613369829333?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/7666573613369829333/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=7666573613369829333' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/7666573613369829333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/7666573613369829333'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2010/06/virtualbox-puel-on-opensuse-on-64-bit.html' title='VirtualBox PUEL on OpenSUSE on 64 bit machine'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-8027292683725303863</id><published>2010-05-10T14:48:00.002+01:00</published><updated>2010-05-10T15:09:34.234+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><category scheme='http://www.blogger.com/atom/ns#' term='Continous Integration'/><title type='text'>CruiseControl.net and Mono</title><content type='html'>I have set up CruiseControl.net (&lt;a href="http://sourceforge.net/projects/ccnet/"&gt;http://sourceforge.net/projects/ccnet/&lt;/a&gt;) on Mono for building our OpenPetra.org project, which is quite a big project.&lt;br /&gt;&lt;br /&gt;Here are the steps I followed, and my config files so that people can benefit from it:&lt;br /&gt;&lt;br /&gt;Here is some advice how to change the ccnet.exe.config to make it work for Mono: &lt;a href="http://markmail.org/message/uyfqysd55u4xqhfs"&gt;http://markmail.org/message/uyfqysd55u4xqhfs&lt;/a&gt;; main things are to change the xsl paths' backslash to forward slash, and to replace ColoredConsoleAppender with ConsoleAppender, and to remove mappings for the ConsoleAppender.&lt;br /&gt;&lt;br /&gt;You can see my modified ccnet.exe.config, and also the ccnet.config for OpenPetra here in the online git repository:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://openpetraorg.git.sourceforge.net/git/gitweb.cgi?p=openpetraorg/openpetraorg;a=tree;f=csharp/ICT/PetraTools/ContinuousIntegration"&gt;http://openpetraorg.git.sourceforge.net/git/gitweb.cgi?p=openpetraorg/openpetraorg;a=tree;f=csharp/ICT/PetraTools/ContinuousIntegration&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You will also find a cruisecontrol.sh which I use as a init.d script for starting and stopping my CruiseControl server.&lt;br /&gt;&lt;br /&gt;I had to install Mono XSP from the Lenny backports repository, to get Mono 2.x. It was also important to install sendmail, otherwise the EmailProvider would obviously not work (which took me quite a while to notice).&lt;br /&gt;&lt;blockquote&gt;apt-get -t lenny-backports install mono-xsp&lt;br /&gt;apt-get install sendmail sendmail-bin&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Then I had a nasty problem with the logging. After a failed build, I had this exception:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;[OpenPetraOrg:ERROR] Publisher threw exception: ThoughtWorks.CruiseControl.Core.CruiseControlException: Unable to read the contents of the file: /home/timop/CruiseControl.NET/Server/OpenPetraOrg/Artifacts/nant-results-b2f2a299-05c5-42a6-a311-24df30a59b9a.xml ---&gt; System.NotImplementedException: The requested feature is not implemented.&lt;br /&gt;at ThoughtWorks.CruiseControl.Core.Tasks.FileTaskResult.ReadFileContents () [0x00000]&lt;br /&gt;--- End of inner exception stack trace ---&lt;br /&gt;at ThoughtWorks.CruiseControl.Core.Tasks.FileTaskResult.ReadFileContents () [0x00000]&lt;br /&gt;at ThoughtWorks.CruiseControl.Core.Tasks.FileTaskResult.get_Data () [0x00000]&lt;br /&gt;at ThoughtWorks.CruiseControl.Core.Publishers.XmlIntegrationResultWriter.WriteTaskResults (IIntegrationResult result) [0x00000]&lt;br /&gt;at ThoughtWorks.CruiseControl.Core.Publishers.XmlIntegrationResultWriter.WriteBuildElement (IIntegrationResult result) [0x00000]&lt;br /&gt;at ThoughtWorks.CruiseControl.Core.Publishers.XmlIntegrationResultWriter.Write (IIntegrationResult result) [0x00000]&lt;br /&gt;at ThoughtWorks.CruiseControl.Core.Publishers.XmlLogPublisher.Execute (IIntegrationResult result) [0x00000]&lt;br /&gt;at ThoughtWorks.CruiseControl.Core.Tasks.TaskBase.Run (IIntegrationResult result) [0x00000]&lt;br /&gt;[OpenPetraOrg:ERROR] Unable to build email message: ThoughtWorks.CruiseControl.Core.CruiseControlException: Unable to read the contents of the file: /home/timop/CruiseControl.NET/Server/OpenPetraOrg/Artifacts/nant-results-b2f2a299-05c5-42a6-a311-24df30a59b9a.xml ---&gt;  System.NotImplementedException: The requested feature is not implemented.&lt;br /&gt;&lt;/pre&gt;After some searching, I realised that the log file had become quite big, and in the CruiseControl.net code in &lt;a href="http://ccnet.svn.sourceforge.net/viewvc/ccnet/trunk/project/core/tasks/FileTaskResult.cs?revision=7011&amp;amp;view=markup"&gt;FileTaskResult.cs&lt;/a&gt; the function ReadFileContents would call MemoryFailPoint, but this class has not been implemented yet in Mono 2.x (&lt;a href="http://anonsvn.mono-project.com/viewvc/tags/mono-2-4-2-2/mcs/class/corlib/System.Runtime/MemoryFailPoint.cs"&gt;http://anonsvn.mono-project.com/viewvc/tags/mono-2-4-2-2/mcs/class/corlib/System.Runtime/MemoryFailPoint.cs&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;My solution was to download the sources of Mono, and modify MemoryFailPoint.cs to not throw that NotImplementedException, but just stay quiet. I then copied the resulting file (eg. mono-2.4.2.3/mcs/class/lib/net_2_0/mscorlib.dll) to my server with the CruiseControl.net, to /usr/lib/mono/2.0/mscorlib.dll&lt;br /&gt;&lt;br /&gt;Now CruiseControl.net works quite nicely, though I have not played with NUnit yet, and there are more things to explore...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-8027292683725303863?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/8027292683725303863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=8027292683725303863' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/8027292683725303863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/8027292683725303863'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2010/05/cruisecontrolnet-and-mono.html' title='CruiseControl.net and Mono'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-266200865023902950</id><published>2010-03-01T21:00:00.000Z</published><updated>2010-03-01T20:28:38.157Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='ERP'/><category scheme='http://www.blogger.com/atom/ns#' term='CRP'/><category scheme='http://www.blogger.com/atom/ns#' term='free software'/><category scheme='http://www.blogger.com/atom/ns#' term='charities'/><title type='text'>Charity Resource Planning - CRP and ERP</title><content type='html'>After some attempts to explain what my work is all about, I have come to the conclusion that the description "Charity Resource Planning" might fit best.&lt;br /&gt;&lt;br /&gt;Previous attempts were "Administration Software", but then people think about administration of computers, etc. And I have not read about anyone calling any software "Administration software".&lt;br /&gt;&lt;br /&gt;Other people call it "Back Office Software".&lt;br /&gt;Wikipedia describes &lt;a href="http://en.wikipedia.org/wiki/Back_office"&gt;Back office&lt;/a&gt; in these words:&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;"A back office is a part of most corporations where tasks dedicated to running the company itself take place. The term comes from the building layout of early companies where the front office would contain the sales and other customer-facing staff and the back office would be those manufacturing or developing the products or involved in administration but without being seen by customers. Although the operations of a back office are usually not given a lot of consideration, they are a major contributor to a business."&lt;br /&gt;&lt;/blockquote&gt;But does a charity have a front office and a back office? It is usually quite a small team of dedicated people. I remember once a funny bookkeeper in one of our smallest offices, telling me he would ask the system administrator to do something for him... it took me a few seconds to realise he was speaking of himself in the third person...&lt;div&gt;To some degree, the work of a charity, helping people in need, empower the people without rights, telling the Good News, could be called the "front office".&lt;/div&gt;&lt;div&gt;But even in normal companies and enterprises, no one calls their software "Back Office Software". You want it all integrated. The salesman in the front office needs to know the addresses of the customer, etc.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is where the term "Enterprise Resource Planning (ERP)" comes to mind.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Again the definition from Wikipedia: &lt;a href="http://en.wikipedia.org/wiki/Enterprise_resource_planning"&gt;Enterprise Resource Planning&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;blockquote&gt;"Enterprise resource planning (ERP) is a term usually used in conjunction with ERP software or an ERP system which is intended to manage all the information and functions of a business or company from shared data stores.&lt;br /&gt;It is a commercial software package that promotes seamless integration of all the information flowing through a company.&lt;br /&gt;[...]&lt;br /&gt;[The term ERP] was introduced by research and analysis firm Gartner in 1990. ERP systems now attempt to cover all core functions of an enterprise, regardless of the organization's business or charter. These systems can now be found in non-manufacturing businesses, non-profit organizations and governments."&lt;/blockquote&gt;&lt;div&gt;For a while I thought about using the term ERP for the things I do. But then it sounded strange. Can you run a charity like an enterprise? On the one hand, many concepts can be brought over from the enterprise experience, and a charity can benefit from the lessons learned in business. Some charities even are run as an enterprise, and their goal is to grow and move more and more money. They pay salaries etc. &lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But I am not talking about those huge well-known charities that you see on TV ads. My background are mission organisations. They and many other charities work mostly on a low profile. They live from dedicated workers who are willing to work for a small salary or even raise their own support, and such organisations could not exist without their dedicated supporters that not only back the work financially but also with prayer.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There are quite a number of Open Source ERP systems around. The question is how hard it would be to modify them by adding modules to turn these software packages into "Charity Resource Planning" tools. &lt;/div&gt;&lt;div&gt;There is a good example of &lt;a href="http://medical.sourceforge.net/"&gt;Medical&lt;/a&gt;, which is an Electronic Medical Record (EMR) and Hospital Information System, and it is based on &lt;a href="http://www.openerp.com/"&gt;OpenERP&lt;/a&gt;, an Open Source Enterprise Management solution. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So it would work to adjust an ERP system to work for charities. I wish there were such initiatives to use the benefit of Open Source for charities in this area.&lt;/div&gt;&lt;div&gt;The question will be how close the ERP system will match the processes of a charity. How far can you modify the software, and how much do you have to change your own processes?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Therefore my goal is to make a real "Charity Resource Planning (CRP)" software. &lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;CRP software has to be easy to use, since charities often have much higher staff turnover than normal businesses, due to short term commitments etc&lt;/li&gt;&lt;li&gt;CRP software should center on managing relations with supporters and workers and the people involved in the projects in a way that is right and honourable.&lt;/li&gt;&lt;li&gt;CRP software should provide tools for most of the office tasks, eg. Personnel department, Donor contact management, Financial Planning, Accounting&lt;/li&gt;&lt;li&gt;CRP software has to be available in all sorts of languages and support many currencies, so that it can be used across a multi-national organisation, in such a diversity of countries that companies of the size of a usual charity normally would never work in because they don't have the manpower.&lt;/li&gt;&lt;li&gt;Such a CRP software has to allow easy integration with other software, eg. Payroll which is probably too difficult to adapt to the laws of each country. It should also provide many plugin interfaces that allow localisation of the tools, eg. for processing bank statements etc.&lt;/li&gt;&lt;li&gt;CRP software has be available at justifiable costs, considering the personal effort of supporters and workers to keep the charity going.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;There is already a small number of software systems around that fit well into the category of "Charity Resource Planning". And I think there is certainly a need for more developers and IT specialists working in this area, both voluntarily and to earn their living. I think it would benefit many charities if we use Open Source software for this in order to be able to share solutions even if we are using different technology or emphasize different management/organisational styles.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My personal aim is to make OpenPetra.org one of the first choices in Charity Resource Planning systems. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;b&gt;Disclosure&lt;/b&gt;&lt;br /&gt;Timotheus Pokorra is currently working as a software developer for &lt;a href="http://www.om.org/"&gt;OM&lt;/a&gt;, a christian charity working in many countries. OM owns the &lt;a href="http://www.openpetra.org/"&gt;OpenPetra.org project&lt;/a&gt; which aims to provide a free software solution for the administration of charities.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-266200865023902950?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/266200865023902950/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=266200865023902950' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/266200865023902950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/266200865023902950'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2010/02/charity-resource-planning-crp-and-erp.html' title='Charity Resource Planning - CRP and ERP'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-608926854083098226</id><published>2010-02-20T21:24:00.005Z</published><updated>2010-02-20T21:37:13.413Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Knowledge Tree'/><category scheme='http://www.blogger.com/atom/ns#' term='WebDAV'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='Versioning'/><title type='text'>KnowledgeTree and Versioning of documents uploaded by WebDAV</title><content type='html'>&lt;div&gt;&lt;blockquote&gt;&lt;/blockquote&gt;The advantage of KnowledgeTree is that it keeps versions of each document that you upload. Unfortunately, this does not seem to work in version 3.7.0.2, when uploading a new version of an existing file via WebDAV.  The file is overwritten with the new version, but there is no version history.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There might be good reasons for that behaviour, which are explained in this issue?&lt;/div&gt;&lt;div&gt;&lt;a href="http://issues.knowledgetree.com/browse/KTS-2082"&gt;http://issues.knowledgetree.com/browse/KTS-2082&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Also look at &lt;a href="http://issues.knowledgetree.com/browse/KTS-2689"&gt;http://issues.knowledgetree.com/browse/KTS-2689&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Here is a solution that works for me, but of course, I do not know the interna of Knowledge Tree, therefore please use it at your own risk...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In file ktwebdav/lib/KTWebDAVServer.inc.php, find the lines:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;// Modified - 25/10/07 - changed add to overwrite&lt;/div&gt;&lt;div&gt;// $oDocument =&amp;amp; KTDocumentUtil::add($oParentFolder, $name, $oUser, $aOptions);&lt;/div&gt;&lt;div&gt;$oDocument =&amp;amp; KTDocumentUtil::overwrite($oDocument, $name,  $sTempFilename, $oUser, $aOptions);&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;It seems, with the add method a new file would be created, with a unique filename. So uploading a new version of test.txt would result in two files, test.txt would stay, and the new file would be test(1).txt. This is not really what you want.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To get real versioning, comment that line with "overwrite", and add these lines:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;$aOptions['newfilename'] = $name;&lt;/div&gt;&lt;div&gt;$oDocument =&amp;amp; KTDocumentUtil::checkin($oDocument, $sTempFilename, 'WebDAV upload', $oUser, $aOptions);&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;This should do the trick. You will only have one file in your folder, and when you click on "Version History" in your webinterface, you will see the old versions and the current version. The file you download via WebDAV is always the latest version. This makes sense to me...&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-608926854083098226?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/608926854083098226/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=608926854083098226' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/608926854083098226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/608926854083098226'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2010/02/knowledgetree-and-versioning-of.html' title='KnowledgeTree and Versioning of documents uploaded by WebDAV'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-5512096812246577762</id><published>2010-02-14T17:12:00.015Z</published><updated>2010-02-15T07:33:09.257Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='ERP'/><category scheme='http://www.blogger.com/atom/ns#' term='free software'/><category scheme='http://www.blogger.com/atom/ns#' term='charities'/><title type='text'>A look at charities and Open Source ERP software</title><content type='html'>&lt;h3&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;span&gt;&lt;span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;I want to look at several articles and initiatives that I have found on the web, and address some of the questions and risks and benefits.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Why can't you just use commercial software to manage your administration?&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;This really depends on the type of charity.&lt;br /&gt;&lt;br /&gt;For example a representative from Christian Aid says in this BBC article (&lt;/span&gt;&lt;/span&gt;&lt;a href="http://news.bbc.co.uk/1/hi/technology/6124582.stm"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://news.bbc.co.uk/1/hi/technology/6124582.stm&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;), which I will refer to again later:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" id="nnmc0"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;"We are a funding organisation that ships £90m around the world ..."&lt;br /&gt;[...]&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" id="p1uh1"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;"We spend one pence in the pound on administration, and that means we've got to be as effective and efficient as we can, and software is one way to do that."&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Reading this, that means that they are still spending £900.000 on administration.&lt;br /&gt;&lt;br /&gt;I would like to list different goals that a charity has:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;ul id="zbxl" style="margin-top: 0px; margin-bottom: 0px;"&gt;&lt;li id="zbxl0" style="margin-top: 0px; margin-bottom: 0px;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;deliver a message&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul id="zbxl1" style="margin-top: 0px; margin-bottom: 0px;"&gt;&lt;li id="zbxl2" style="margin-top: 0px; margin-bottom: 0px;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;provide material help&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li id="zbxl3" style="margin-top: 0px; margin-bottom: 0px;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;provide training or practical help through people&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Therefore an organisation that ships a lot of money around the world, it is much easier to spend quite big amounts on software, and this saves them all sorts of trouble with technical support etc.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;But if your organisation is more about highly motivated workers working alongside the people you want to help, and your main motivation is the message you deliver, the picture is different. You will probably not "ship vast amounts of money around the world", and the percentage you use for overall administration is more critical. The amounts you can spend on IT is probably quite small. It will be difficult to subscribe to proprietary software licenses which you will be depend on for the next decade or so.&lt;br /&gt;&lt;br /&gt;We should also not forget cultural differences. It seems it is much more acceptable in the US to invest into administration than it is in Europe.&lt;br /&gt;&lt;br /&gt;The BBC article about Christian Aid also mentions the use of standard office software, e.g. Windows XP and MS Office licenses. They are very happy with the good charity discounts from Microsoft. I will not address this topic here, because I am not discussing Operating Systems or Office Software, but Administrative software.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;div&gt;&lt;span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;A charity is no software company, why should we invest into OpenSource and develop our own software?&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;I want to introduce the idea that has been formed by the Collaborative Software Initiative (CSI) (see &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.csinitiative.com/"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.csinitiative.com/&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;).&lt;br /&gt;I quote from their website:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div id="harn0" style="margin-top: 0px; margin-bottom: 0px; margin-left: 40px;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;"The Collaborative Software Initiative (CSI) brings together like-minded companies to build software applications at a fraction of the cost of traditional methods. CSI introduces a market-changing process that applies open source methodologies to building Collaborative Software.&lt;br /&gt;For applications that don't enable competitive advantage or are associated with non-value added activities such as compliance, regulatory, and industry standards, Collaborative Software empowers customer core team members to provide control and direction over a project while leveraging the efficiencies of using the same software and reducing costs."&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;They are thinking of banks and insurances and the automobile industry. I think we can easily apply the same to mission organisations and charities. We don't want to develop software for the sake of it, and we don't want a competitive advantage over other mission organisations or charities. Therefore it would make much sense to coordinate the efforts, and let others benefit from our work, and even encourage them to contribute.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;Open Source is not as good as the best of breed&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;First of all, the best of breed software will probably cost more. In case it is cheaper or you can afford it anyways, and you have also calculated the cost of training etc, then it might well be that the best of breed is better for you.&lt;br /&gt;Regarding the issue that the users know the best of breed and it is more difficult training them on an Open Source system because it is unknown to them: This might be more an issue for Operating Systems and Office packages. Although the introduction of Office 2007 has shown how easy it is to force users to suddenly use ribbons instead of menus.&lt;br /&gt;The advantage of an Open Source administration suite should be that it is easy because it can be customized to the specific needs. Can your workers cope with the complexity of the best of breed, fits-all system? Most of the time you don't need all functionality of the best of breed software.&lt;br /&gt;In the case that you have to train your workers on the best of breed software, make sure you know how often you have to train new staff, and how expensive that is, depending if it is possible to provide your own in-house training, or you have to pay expensive courses.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;With Open Source you don't get what you really need&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;This is generally true for all software. But with Open Source you have a chance, to change the software much easierly, either by doing it yourself or get someone to do it for you.&lt;br /&gt;If you have a good reason, you can convince a developer to do it, and it can benefit others as well.&lt;br /&gt;Depending on the size of differences of expectation, you need to be able and willing to invest into adaption yourself; but you will own the change and don't need to pay license fees for it in the future.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;There are too many updates to install for Open Source software&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;see also the article "&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.zdnet.com.au/insight/software/soa/How-open-source-is-losing-the-charity-battle/0,139023769,339289190,00.htm"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;How open source is losing the charity battle&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;" at ZDNet.&lt;br /&gt;&lt;br /&gt;Security nowadays requires updates anyways, even Microsoft have a monthly patch day.&lt;br /&gt;Nowadays updates should become much more easy to install.&lt;br /&gt;The more users there are, the quicker a solution is provided; frequent updates prevent a bug from annoying you for a longer time.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Who will provide support for us? Is there a guarantuee of service and continued development?&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;You should look for a contract with a software engineer, and the greater the community for an Open Source software, the more people are willing to help. It is not all for free, but that is a good thing for you, because when you pay you have rights. On the other hand, you might find IT people that specifically want to support your organisation as volunteers. Because of the free nature of Open Source, it will be much easier for them to accustom themselves to the software.&lt;br /&gt;There should also be general support of the users amongst each other, therefore leaving only serious extensions to paid or volunteering developers.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;More Links&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Most of the Links don't relate to Open Source regarding office administration. But they might give the interested reader an overview of opinions and possibilities.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Case Studies:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;a href="http://news.bbc.co.uk/1/hi/technology/6124582.stm"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://news.bbc.co.uk/1/hi/technology/6124582.stm&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;Charity shuns open source code&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.cafamily.org.uk/opensource.html"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.cafamily.org.uk/opensource.html&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;A charity using open source&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://news.zdnet.co.uk/software/0,1000000121,39166840,00.htm"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://news.zdnet.co.uk/software/0,1000000121,39166840,00.htm&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;London-based charity which saved more than £28,000 by using Linux Terminal Server to build its network.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Articles:&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.linux.com/feature/33378"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.linux.com/feature/33378&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;Article: Help introduce open source software to charities&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.uwnyc.org/technews/v5_n6_a1.html"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.uwnyc.org/technews/v5_n6_a1.html&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span align="center" class="Apple-style-span" id="by843" style="color: rgb(0, 0, 0);"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;How "Open Source" Can Open Doors for Nonprofits&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px;"&gt;&lt;a href="http://www.idealware.org/articles/msoffice_vs_openoffice.php"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.idealware.org/articles/msoffice_vs_openoffice.php&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;comparison Office vs Open Office for nonprofits&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-family:Georgia,serif;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-family:Georgia,serif;"&gt;&lt;div&gt;&lt;span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;a href="http://danny.oz.au/freedom/ip/aidfs.html"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://danny.oz.au/freedom/ip/aidfs.html&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-family:Georgia,serif;"&gt;&lt;div&gt;&lt;span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;article from the year 1999, from &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Danny Yee: &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;"Development, Ethical Trading, and Free Software"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Initiatives:&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;a href="http://www.donortec.org/"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.donortec.org/&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;DonorTec provides donated software and hardware from companies such as Microsoft and Cisco to eligible Australian non profit groups with Income Tax Exempt Status (ITE).&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://charityware.info/"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://charityware.info/&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" id="g9tz0"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Charityware (c-ware) is any software that supports charity.  Some developers ask that proceeds from the sale of software be donated to charity, while others license or donate their software directly to charity. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.socialsource.org.uk/"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.socialsource.org.uk/&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;Last update in 2005.&lt;br /&gt;This wiki is a central point for an advocacy initiative &lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;("SocialSource")&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; seeking to promote and assist the practical use of Free/Open Source Software (FOSS) within the UK Voluntary and Community Sector (VCS)*.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.volresource.org.uk/swit/miscsw.htm"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.volresource.org.uk/swit/miscsw.htm&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" id="xute0"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;information for voluntary and community organisations&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.it4communities.org.uk/it4c/home/index.jsp"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.it4communities.org.uk/it4c/home/index.jsp&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;We are the UK's leading national IT volunteering programme.&lt;br /&gt;iT4Comunities can help &lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;charities, community groups and social enterprises&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; access free IT support from IT professional volunteers and make substantial savings&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span align="center" class="Apple-style-span" id="c_o41" style="color: rgb(0, 0, 0);"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span align="center" class="Apple-style-span" id="c_o41" style="color: rgb(0, 0, 0);"&gt;&lt;a href="http://www.nosi.net/projects/primer"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.nosi.net/projects/primer&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span align="center" class="Apple-style-span" id="c_o41" style="color: rgb(0, 0, 0);"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Nonprofit Open Source Initiative&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span align="center" class="Apple-style-span" id="c_o41" style="color: rgb(0, 0, 0);"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;"Choosing and Using Free and Open Source Software: A Primer for Nonprofits" describes what open source software is and what impact this type of software may have on the nonprofit sector.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span align="center" class="Apple-style-span" id="c_o41" style="color: rgb(0, 0, 0);"&gt;&lt;a href="http://www.benetech.org/"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.benetech.org/&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;technology serving humanity&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.ngogeeks.com/"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.ngogeeks.com/&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;To evaluate Open Source Software in an effort to reduce the IT costs of Non-Government and Not for Profit Organisations&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.ngopulse.org/article/ngo-ict-management-toolkit"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.ngopulse.org/article/ngo-ict-management-toolkit&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;The Southern African NGO Network (SANGONeT)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://ngoinabox.mahiti.org/"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://ngoinabox.mahiti.org/&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;This is the website of the South Asian hub of NGO-in-a-box, a collection of Free and Open Source Software (FOSS) tools selected for use by non-profit organisations.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.codn.net/plugins/content/content.php?content.10"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.codn.net/plugins/content/content.php?content.10&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;Christian Open Development Network&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;a href="http://groups.fsf.org/wiki/Donor_Transaction_and_Contact_System"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://groups.fsf.org/wiki/Donor_Transaction_and_Contact_System&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal; line-height: 19px;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;On the &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.fsf.org/campaigns/priority.html" class="external text" title="http://www.fsf.org/campaigns/priority.html" rel="nofollow"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;FSF's High Priority Projects list&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; there is a call for the creation of a donor transaction and contact system.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;a href="http://www.lightsys.org/"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.lightsys.org/&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:helvetica,arial,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 15px;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:helvetica,arial,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 15px;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;LightSys is dedicated to equipping Christian missions and ministries with the computer technology correct for them, including the knowledge and contacts needed to support that technology. As a result they can serve with greater efficiency, keeping their mind on their task, not their computers, thus redeeming technology -- for God's Kingdom.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:helvetica,arial,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 15px;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;latest update on Kardia/Centrallix: &lt;/span&gt;&lt;a href="http://lan.lightsys.org/blogs/?id=4470&amp;amp;one"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://lan.lightsys.org/blogs/?id=4470&amp;amp;one&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Disclosure&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Timotheus Pokorra is currently working as a software developer for &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.om.org/"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;OM&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;, a christian charity working in many countries. OM owns the &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.openpetra.org/"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;OpenPetra.org project&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; which aims to provide a free software solution for the administration of charities.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-5512096812246577762?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/5512096812246577762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=5512096812246577762' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/5512096812246577762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/5512096812246577762'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2010/02/look-at-charities-and-open-source-erp.html' title='A look at charities and Open Source ERP software'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-7127111584872236678</id><published>2009-01-15T14:21:00.004Z</published><updated>2009-01-15T14:31:23.065Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='request tracker'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>Request Tracker scrip that involves the Category of a Custom Field</title><content type='html'>Our Request Tracker works for users in many countries, which are all assigned to areas. There is an IT administrator for each area, which should be added to the CC list for the request that is from one of the countries in his/her area.&lt;br /&gt;&lt;br /&gt;We have created a custom field, and used the category to group the countries by areas.&lt;br /&gt;&lt;br /&gt;We needed a scrip with an action that needs to know the category of the currently selected value of a custom field.&lt;br /&gt;&lt;br /&gt;&lt;div style="overflow: auto;"&gt;&lt;code&gt;&lt;br /&gt;Condition: User Defined&lt;br /&gt;Action: User Defined&lt;br /&gt;Template: Global Template: Blank&lt;br /&gt;Stage: TransactionCreate&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Custom condition:&lt;br /&gt;&lt;div style="overflow: auto;"&gt;&lt;code&gt;my $CFName = 'Field/Country';&lt;br /&gt;&lt;br /&gt;my $CF = RT::CustomField-&gt;new( $RT::SystemUser );&lt;br /&gt;$CF-&gt;LoadByNameAndQueue( Name =&gt; $CFName, Queue =&gt; $self-&gt;TicketObj-&gt;Queue );&lt;br /&gt;&lt;br /&gt;if ( (($self-&gt;TransactionObj-&gt;Type eq "CustomField" &amp;amp;&amp;amp; $self-&gt;TransactionObj-&gt;Field == $CF-&gt;id)&lt;br /&gt;  ||&lt;br /&gt;   $self-&gt;TransactionObj-&gt;Type eq "Create" ) &amp;amp;&amp;amp;&lt;br /&gt;   ($self-&gt;TicketObj-&gt;FirstCustomFieldValue('Field/Country')) )&lt;br /&gt;{&lt;br /&gt; return 1;&lt;br /&gt;}&lt;br /&gt;return 0;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Custom action preparation code:&lt;br /&gt;&lt;div style="overflow: auto;"&gt;&lt;code&gt;my $CFName = 'Field/Country';&lt;br /&gt;# for FirstCustomFieldValue see in Record.pm&lt;br /&gt;my $fieldcountryVal = $self-&gt;TicketObj-&gt;FirstCustomFieldValue($CFName);&lt;br /&gt;my $aita_email = '';&lt;br /&gt;my $area = '';&lt;br /&gt;&lt;br /&gt;#see CustomFieldValue_Overlay.pm, sub Category&lt;br /&gt;&lt;br /&gt;my $CFObj = new RT::CustomField($RT::SystemUser);&lt;br /&gt;$CFObj-&gt;Load($CFName);&lt;br /&gt;my $valuesObj = $CFObj-&gt;ValuesObj();&lt;br /&gt;while (my $myValue  = $valuesObj-&gt;Next) {&lt;br /&gt; if ($myValue-&gt;Name eq $fieldcountryVal)&lt;br /&gt; {&lt;br /&gt;  #$RT::Logger-&gt;info($fieldcountryVal." belongs to area ".$myValue-&gt;Category);&lt;br /&gt;  $area = $myValue-&gt;Category;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;if ($area eq "Some Area")&lt;br /&gt;{&lt;br /&gt; $aita_email = 'admin@somearea.ourdomain.org';&lt;br /&gt;}&lt;br /&gt;elsif ($area eq "Another Area")&lt;br /&gt;{&lt;br /&gt; $aita_email = 'admin@anotherarea.ourdomain.org';&lt;br /&gt;}&lt;br /&gt;#if ($aita_email ne '')&lt;br /&gt;{&lt;br /&gt; my ($ret, $msg) = $self-&gt;TicketObj-&gt;AddWatcher( Type =&gt; "Cc", Email =&gt; $aita_email);&lt;br /&gt;&lt;br /&gt;   if ($ret) {&lt;br /&gt;     #$RT::Logger-&gt;info("scrip: New watcher added to ticket");&lt;br /&gt;&lt;br /&gt;   } else {&lt;br /&gt;     #$RT::Logger-&gt;error("scrip: Failed to add new watcher to ticket");&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;return 1;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;Custom action cleanup code:&lt;br /&gt;&lt;div style="overflow: auto;"&gt;&lt;code&gt; return 1;&lt;/code&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-7127111584872236678?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/7127111584872236678/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=7127111584872236678' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/7127111584872236678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/7127111584872236678'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2009/01/request-tracker-scrip-that-involves.html' title='Request Tracker scrip that involves the Category of a Custom Field'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-6588681361143024849</id><published>2008-11-21T12:05:00.011Z</published><updated>2008-11-21T12:31:00.522Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='request tracker'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='PostgreSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><category scheme='http://www.blogger.com/atom/ns#' term='httpd'/><title type='text'>BestPractical RT: Request Tracker on CentOS 5 with PostgreSQL</title><content type='html'>see also http://www.ptitov.net/2008/07/request-tracker-installation-o.html&lt;br /&gt;&lt;br /&gt;Here are the steps how to install Request Tracker on CentOS 5 with PostgreSQL:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;Install RPM packages&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="overflow: auto;"&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;yum install postgresql postgresql-server postgresql-libs&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;yum install httpd perl-BSD-Resource perl-FCGI perl-Apache-DBI mod_perl&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;rpm -Uhv rpmforge-release*.rpm&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;pre&gt;yum install perl-Digest-HMAC perl-Apache-Session perl-Class-Container perl-Class-Data-Inheritable perl-Crypt-DES perl-Devel-StackTrace perl-Exception-Class perl-GD \&lt;br /&gt;perl-GD-Graph perl-GD-Text-Util perl-Hook-LexWrap perl-HTML-Mason perl-HTTP-Server-Simple perl-HTTP-Server-Simple-Mason perl-IO-Socket-INET6 \&lt;br /&gt;perl-Net-SNMP perl-Params-Validate perl-Socket6 perl-UNIVERSAL-require perl-HTML-scrubber perl-Text-WikiFormat perl-XML-RSS perl-Tree-Simple \&lt;br /&gt;perl-Text-Wrapper perl-Module-Versions-Report perl-CSS-Squish \&lt;br /&gt;perl-Term-ReadKey perl-Class-ReturnValue  perl-Text-Quoted   perl-Calendar-Simple  perl-DBIx-SearchBuilder  perl-Text-Autoformat \&lt;br /&gt;perl-MailTools perl-Regexp-Common perl-Locale-Maketext-Lexicon perl-Locale-Maketext-Fuzzy perl-Time-HiRes perl-Time-modules perl-TimeDate \&lt;br /&gt;perl-Log-Dispatch perl-Text-Template perl-HTML-Tree perl-HTML-Format \&lt;br /&gt;perl-HTML-Scrubber perl-libwww-perl perl-MIME-tools perl-DBD-mysql&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:130%;"  &gt;&lt;span style="font-weight: bold;"&gt;Configuration of Perl modules&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;To see if all required perl modules have been installed, run this:&lt;br /&gt;&lt;div style="overflow: auto;"&gt;&lt;pre&gt;/usr/bin/perl -MCPAN -e shell&lt;br /&gt;make testdeps&lt;br /&gt;/usr/bin/perl ./sbin/rt-test-dependencies --verbose --with-pgsql&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Also, make sure you have newer versions of IO::File (1.14) and File-Temp (1.21).&lt;br /&gt;Otherwise you get in trouble. More details follow here:&lt;br /&gt;&lt;br /&gt;Fixes:&lt;br /&gt;&lt;div style="overflow: auto;"&gt;&lt;pre&gt;cat testemail.txt | /usr/bin/rt-mailgate --queue MyQueue --action correspond --url http://rt.mydomain.org/&lt;br /&gt;Can't locate object method "seek" via package "File::Temp"&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;check currently installed version of File::Temp:&lt;br /&gt;&lt;code&gt;perl -le 'use File::Temp; print File::Temp-&gt;VERSION'&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;install the latest version 0.21:&lt;br /&gt;&lt;div style="overflow: auto;"&gt;&lt;pre&gt;cpan&lt;br /&gt;# for reinitialising cpan:&lt;br /&gt;o conf init&lt;br /&gt;i /MIME-tools/&lt;br /&gt;test D/DO/DONEILL/MIME-tools-5.425.tar.gz&lt;br /&gt;i /file-temp/&lt;br /&gt;install T/TJ/TJENNESS/File-Temp-0.21.tar.gz&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Problem with attachements:&lt;br /&gt;&lt;div style="overflow: auto;"&gt;&lt;pre&gt;cat rttestmailatt.txt | /usr/bin/rt-mailgate --debug --queue myQueue --action correspond --url http://rt.mydomain.org&lt;br /&gt;Connecting to http://rt.mydomain.org/REST/1.0/NoAuth/mail-gateway at /usr/bin/rt-mailgate line 102, &lt;&gt; line 1.&lt;br /&gt;hello http://rt.mydomain.org/REST/1.0/NoAuth/mail-gateway&lt;br /&gt;not ok - Failed to parse this message. Something is likely badly wrong with the message at /usr/bin/rt-mailgate line 112, &lt;&gt; line 1&lt;br /&gt;another problem:&lt;br /&gt;Can't locate object method "binmode" via package "IO::File" at /usr/lib/perl5/vendor_perl/5.8.5/MIME/Body.pm line 437.&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;We need version 1.14 of IO::File&lt;br /&gt;&lt;br /&gt;&lt;code&gt;perl -le 'use IO::File; print IO::File-&gt;VERSION'&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="overflow: auto;"&gt;&lt;pre&gt;requires: yum install gcc&lt;br /&gt;cpan&lt;br /&gt;i /IO-1.2301/&lt;br /&gt;install G/GB/GBARR/IO-1.2301.tar.gz&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;IMPORTANT: need to reload the apache server, otherwise the new perl packages have no effect:&lt;br /&gt;&lt;code&gt;/etc/init.d/httpd reload&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;I came once across a Cpan problem:&lt;br /&gt;&lt;div style="overflow: auto;"&gt;&lt;pre&gt;Going to read /root/.cpan/sources/modules/03modlist.data.gz&lt;br /&gt;Unrecognized character \x88 at (eval 29) line 1.&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;The solution was: delete 03modlist.data.gz, and just run cpan again&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Install RT&lt;/span&gt;&lt;br /&gt;Download the latest tar.gz file from http://bestpractical.com/rt/download.html&lt;br /&gt;In a tmp directory, not the destination directory:&lt;br /&gt;cd /home/timop&lt;br /&gt;tar xvzf rt-3.6.6.tar.gz&lt;br /&gt;cd rt-3.6.6&lt;br /&gt;./configure --prefix=/usr --enable-layout=RH \&lt;br /&gt;     --with-db-host=localhost \&lt;br /&gt;     --with-db-dba=rt --with-db-rt-user=rt \&lt;br /&gt;     --with-db-database=rt  --with-pgsql&lt;br /&gt;&lt;br /&gt;Check to see if all dependancies are installed:&lt;br /&gt;make testdeps | grep MISSING&lt;br /&gt;make install&lt;br /&gt;&lt;br /&gt;You then need to configure /etc/rt/RT_SiteConfig.pm&lt;br /&gt;e.g. if you want to use Postgresql, it could look like this:&lt;br /&gt;&lt;div style="overflow: auto;"&gt;&lt;pre&gt;# {{{ Database Configuration&lt;br /&gt;&lt;br /&gt;# Database driver beeing used. Case matters&lt;br /&gt;# Valid types are "mysql", "Oracle" and "Pg"&lt;br /&gt;&lt;br /&gt;Set($DatabaseType , 'Pg');&lt;br /&gt;&lt;br /&gt;# The domain name of your database server&lt;br /&gt;# If you're running mysql and it's on localhost,&lt;br /&gt;# leave it blank for enhanced performance&lt;br /&gt;Set($DatabaseHost   , 'localhost');&lt;br /&gt;Set($DatabaseRTHost , 'localhost');&lt;br /&gt;&lt;br /&gt;# The port that your database server is running on.  Ignored unless it's&lt;br /&gt;# a positive integer. It's usually safe to leave this blank&lt;br /&gt;Set($DatabasePort , '');&lt;br /&gt;&lt;br /&gt;#The name of the database user (inside the database)&lt;br /&gt;Set($DatabaseUser , 'rt');&lt;br /&gt;&lt;br /&gt;# Password the DatabaseUser should use to access the database&lt;br /&gt;Set($DatabasePassword , 'secret');&lt;br /&gt;&lt;br /&gt;# The name of the RT's database on your database server&lt;br /&gt;Set($DatabaseName , 'rt');&lt;br /&gt;&lt;br /&gt;# If you're using Postgres and have compiled in SSL support,&lt;br /&gt;# set DatabaseRequireSSL to 1 to turn on SSL communication&lt;br /&gt;Set($DatabaseRequireSSL , undef);&lt;br /&gt;&lt;br /&gt;# }}}&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Configuration of PostgreSQL&lt;/span&gt;&lt;br /&gt;vi /var/lib/pgsql/data/postgresql.conf;&lt;br /&gt;For PostgreSQL 7.x: add line: tcpip_socket=true;&lt;br /&gt;For PostgreSQL 8.x: listen_addresses = 'localhost'&lt;br /&gt;&lt;br /&gt;vi /var/lib/pgsql/data/pg_hba.conf; it should contain:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;local  all    all             ident   sameuser&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;host    template1      rt      127.0.0.1/32    md5&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;host    rt      rt      127.0.0.1/32    md5&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;host    all     postgres        127.0.0.1/32    trust&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;/etc/init.d/postgresql start&lt;br /&gt;postgresql logfile if db does not start: /var/lib/pgsql/pgstartup.log&lt;br /&gt;chkconfig postgresql on&lt;br /&gt;make initialize-database: problem: user rt does not exist; need to use dba postgres&lt;br /&gt;/usr/bin/perl //usr/sbin/rt-setup-database --action init --dba postgres --prompt-for-dba-password&lt;br /&gt;&lt;br /&gt;For a nightly backup of your database, you can use this command:&lt;br /&gt;&lt;div style="overflow: auto;"&gt;&lt;pre&gt;su - postgres -c "umask 0077; pg_dumpall | gzip &gt; /var/lib/pgsql/data/backup.sql.gz"&lt;/pre&gt;&lt;/div&gt;To restore a database, e.g. when moving from one server to another:&lt;br /&gt;&lt;pre&gt;su - postgres&lt;br /&gt;psql template1&lt;br /&gt;drop database rt;&lt;br /&gt;create database rt;&lt;br /&gt;\q&lt;br /&gt;psql rt &lt; /var/tmp/rt-20071210.sql&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;HTTPD configuration&lt;/span&gt;&lt;br /&gt;/etc/httpd/conf.d/rt.conf should contain:&lt;br /&gt;&lt;div style="overflow: auto;"&gt;&lt;pre&gt;&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;    ServerName rt.mysupport.com&lt;br /&gt;    DocumentRoot /var/rt/html&lt;br /&gt;    AddDefaultCharset UTF-8&lt;br /&gt;&lt;br /&gt;    ServerAdmin Timotheus.Pokorra@mysupport.com&lt;br /&gt;    PerlModule Apache::DBI&lt;br /&gt;    PerlRequire /usr/bin/webmux.pl&lt;br /&gt;&lt;br /&gt;    &amp;lt;Location /&amp;gt;&lt;br /&gt;        Options None&lt;br /&gt;        SetHandler perl-script&lt;br /&gt;        PerlHandler RT::Mason&lt;br /&gt;        &amp;lt;IfDefine PerlDProf&amp;gt;&lt;br /&gt;          &amp;lt;IfDefine PerlSmallProf&amp;gt;&lt;br /&gt;            PerlFixupHandler Apache::SmallProf&lt;br /&gt;          &amp;lt;/IfDefine&amp;gt;&lt;br /&gt;        &amp;lt;/IfDefine&amp;gt;&lt;br /&gt;    &amp;lt;/Location&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;Location /NoAuth/images&amp;gt;&lt;br /&gt;      SetHandler default-handler&lt;br /&gt;    &amp;lt;/Location&amp;gt;&lt;br /&gt;    # To use this you have to start apache with -DPerlStatus.&lt;br /&gt;    #&lt;br /&gt;    # In RHEL, add the following line to /etc/sysconfig/httpd:&lt;br /&gt;    #&lt;br /&gt;    # OPTIONS=-DPerlStatus&lt;br /&gt;    &amp;lt;IfDefine PerlStatus&amp;gt;&lt;br /&gt;      &amp;lt;Location /perl-status&amp;gt;&lt;br /&gt;        SetHandler perl-script&lt;br /&gt;        PerlHandler Apache2::Status&lt;br /&gt;        PerlSetVar StatusOptionsAll On&lt;br /&gt;        PerlSetVar StatusTerse On&lt;br /&gt;        PerlSetVar StatusTerseSize On&lt;br /&gt;        PerlSetVar StatusTerseSizeMainSummary On&lt;br /&gt;        PerlSetVar StatusLexInfo On&lt;br /&gt;      &amp;lt;/Location&amp;gt;&lt;br /&gt;    &amp;lt;/IfDefine&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;To solve issues with&lt;span style="font-family:monospace;"&gt; "&lt;/span&gt;Can't change ownership of files written by interp object: Permission denied" when running Apache:&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;chcon -Rt httpd_sys_content_t /var/rt/mason_data/obj&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;chown -R apache /var/rt/mason_data/obj&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;chgrp -R apache /var/rt/mason_data/obj&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;chcon -Rt httpd_sys_content_t /var/rt/html&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;not: chcon -Rt httpd_sys_script_t /var/rt/html&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;/etc/init.d/httpd restart&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-family:arial;"&gt;To solve issues after upgrading RT, I had to do this sometimes:&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;rm -fr /var/rt/mason_data/obj&lt;br /&gt;mkdir /var/rt/mason_data/obj&lt;br /&gt;touch /var/rt/mason_data/obj/.__obj_create_marker&lt;br /&gt;chmod -R a+w /var/rt/mason_data/obj&lt;br /&gt;/etc/init.d/httpd restart&lt;/pre&gt; &lt;span style="font-weight: bold;"&gt;Configure Sendmail&lt;br /&gt;&lt;/span&gt;The goal is to receive new requests via email.&lt;br /&gt;&lt;br /&gt;You need to create a symbolic link, to avoid errors like "DSN: Service unavailable" or  &lt;span style="font-family:monospace;"&gt;&lt;/span&gt;"write error: Broken pipe" in /var/log/maillog&lt;br /&gt;&lt;pre&gt;ln -s /usr/bin/rt-mailgate /etc/smrsh&lt;/pre&gt;I have these lines in my /etc/aliases file:&lt;br /&gt;my-support-comment: "|/etc/smrsh/rt-mailgate --queue MySupport --action comment --url http://rt.mysupport.com/"&lt;br /&gt;my-support: "|/etc/smrsh/rt-mailgate --queue MySupport --action correspond --url http://rt.mysupport.com/"&lt;br /&gt;&lt;br /&gt;Make sure that your server knows about rt.mysupport.com, you might need to add it to /etc/hosts.&lt;br /&gt;&lt;br /&gt;You can test the delivery of emails:&lt;br /&gt;&lt;div style="overflow: auto;"&gt;&lt;pre&gt;echo "test" | mail my-support@rt.mysupport.com -s "test rt"&lt;br /&gt;tail -f /var/log/maillog&lt;br /&gt;or even more directly:&lt;br /&gt;cat testemail.txt |/etc/smrsh/rt-mailgate --queue MySupport --action correspond --url http://rt.mysupport.com/&lt;/pre&gt;&lt;/div&gt;One other error I got was: "Relaying denied. IP name lookup failed" in /var/log/maillog&lt;br /&gt;The problem was that emails were delivered to ticket.mycompany.com, and the rt server was at rt.mysupport.com.&lt;br /&gt;I had to edit the file /etc/mail/local-host-names&lt;br /&gt;and add the line ticket.mycompany.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-6588681361143024849?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/6588681361143024849/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=6588681361143024849' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/6588681361143024849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/6588681361143024849'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2007/12/bestpractical-rt-request-tracker-on.html' title='BestPractical RT: Request Tracker on CentOS 5 with PostgreSQL'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-168584951293444129</id><published>2008-10-28T15:00:00.000Z</published><updated>2008-10-28T15:34:11.365Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='DTAUS'/><category scheme='http://www.blogger.com/atom/ns#' term='banking'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>DTAUS with C#</title><content type='html'>I needed to export Lastschriften (instructions for direct debit) for our german office, and after looking for some solutions, I realised that it is not that hard to write it yourself...&lt;br /&gt;&lt;br /&gt;Here is the result: &lt;a href="http://download.pokorra.de/coding/Dtaus.cs"&gt;http://download.pokorra.de/coding/Dtaus.cs&lt;/a&gt;&lt;br /&gt;Please feel free to use the code any way you like.&lt;br /&gt;I read the input data from an XML file, of course this needs to be modified to your specific situation.&lt;br /&gt;&lt;br /&gt;A good help was this documentation of the german DTAUS bank file format:&lt;br /&gt;&lt;a href="http://www.infodrom.org/projects/dtaus/dtaus.html"&gt;http://www.infodrom.org/projects/dtaus/dtaus.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Another useful tool was the JDTAUS editor, a java editor that can process and create DTAUS files:&lt;br /&gt;&lt;a href="http://www.jdtaus.de/de/"&gt;http://www.jdtaus.de/de/&lt;/a&gt;&lt;br /&gt;I use this to validate and test the files written with my C# program.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-168584951293444129?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/168584951293444129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=168584951293444129' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/168584951293444129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/168584951293444129'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2008/09/dtaus-with-c.html' title='DTAUS with C#'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-9118716787673822896</id><published>2008-10-20T09:39:00.010+01:00</published><updated>2009-02-13T12:32:16.608Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='rpm'/><category scheme='http://www.blogger.com/atom/ns#' term='packaging'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>Building a mono 2.0 RPM for RHEL4/CentOS4</title><content type='html'>When I noticed that Novell does not offer RPMS of Mono 2.0 for RedHat Linux, I had a look at the Fedora 10 Beta and found that there is a Mono 2.0 Source RPM:&lt;br /&gt;&lt;a href="ftp://sunsite.informatik.rwth-aachen.de/pub/comp/Linux/fedora/linux/releases/test/10-Beta/Fedora/source/SRPMS/mono-2.0-6.fc10.src.rpm"&gt;mono-2.0-6.fc10.src.rpm&lt;/a&gt;&lt;br /&gt;Update: &lt;a href="ftp://sunsite.informatik.rwth-aachen.de/pub/comp/Linux/fedora/linux/releases/10/Fedora/source/SRPMS/mono-2.0.1-12.fc10.src.rpm"&gt;mono-2.0.1-12.fc10.src.rpm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Because we work with CentOS4/RedHat Enterprise Linux 4, I installed the source package on that system, and tried to build the rpms.&lt;br /&gt;&lt;br /&gt;Building the code was fine after I deactivated a couple of dependencies.&lt;br /&gt;But I ran into some problems at the file checking stage. I wondered if I can prevent the build stage to happen again and again. That way I should be able to debug the file list check etc.&lt;br /&gt;&lt;br /&gt;Reading the man page, these parameters are interesting:&lt;br /&gt;&lt;pre&gt;--short-circuit&lt;br /&gt;--nobuild&lt;br /&gt;-bi&lt;br /&gt;-bl&lt;br /&gt;&lt;/pre&gt;So with rpmbuild -bl mono.spec I was able to just run the file checking stage.&lt;br /&gt;&lt;br /&gt;The errors I got were like this:&lt;br /&gt;rpm build errors: File not found: /var/tmp/mono-2.0-6-root-root/usr/bin/certmgr/usr/bin/chktrust/usr/bin/gacutil/usr/bin/gmcs/usr/bin/mcs/usr/bin/mcs1&lt;br /&gt;&lt;br /&gt;But the files do exist in the /var/tmp/mono-2.0-6-root-root/ directory&lt;br /&gt;&lt;br /&gt;I finally realised that the problem was caused by the Macros.&lt;br /&gt;see also &lt;a href="http://rpm.org/wiki/PackagerDocs/Macros"&gt;http://rpm.org/wiki/PackagerDocs/Macros&lt;/a&gt;&lt;br /&gt;I had to first add curly brackets to each Macro call:&lt;br /&gt;%{macro parameters} &lt;br /&gt;But even then only the first line of the Macro had an effect.&lt;br /&gt;This command was helpful in the files section to see that the Macros just were not resolved correctly:&lt;br /&gt;%{echo: %{your_macro_here}}&lt;br /&gt;&lt;br /&gt;In the end, I ended up adding the missing files to my own mono.spec file.&lt;br /&gt;I also had a look at the &lt;a href="http://ftp.novell.com/pub/mono/download/x86/mono/1.9-5/mono-core.spec"&gt;last available RedHat spec file from Novell for Mono 1.9.x&lt;/a&gt;, and I guess there is a different rpm version for RHEL 4 and RHEL 5.&lt;br /&gt;&lt;br /&gt;Here is my modified mono.spec file that works for RHEL4/CentOS4 for Mono 2.0:&lt;br /&gt;&lt;a href="http://download.pokorra.de/mono/mono.spec"&gt;http://download.pokorra.de/mono/mono.spec&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Please download the &lt;a href="ftp://sunsite.informatik.rwth-aachen.de/pub/comp/Linux/fedora/linux/releases/test/10-Beta/Fedora/source/SRPMS/mono-2.0-6.fc10.src.rpm"&gt;src.rpm file from the Fedora 10 Beta&lt;/a&gt;, or later, and install it:&lt;br /&gt;rpm -i  &lt;span class="external text"&gt;mono-2.0-6.fc10.src.rpm&lt;/span&gt;&lt;br /&gt;Then copy my modified mono.spec to /usr/src/redhat/SPECS, and build the packages:&lt;br /&gt;rpmbuild -ba mono.spec&lt;br /&gt;&lt;br /&gt;Alternatively, here is a zip file with the compiled RPM files for CentOS4/RHEL4:&lt;br /&gt;&lt;a href="http://download.pokorra.de/mono/mono-2.0-6.i386.rhel4.rpm.zip"&gt;mono-2.0-6.i386.rhel4.rpm.zip&lt;/a&gt;&lt;br /&gt;I cannot guarantuee that it actually works, but feel free to use it for your own experiments!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-9118716787673822896?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/9118716787673822896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=9118716787673822896' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/9118716787673822896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/9118716787673822896'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2008/10/building-mono-20-rpm-for-rhel4centos4.html' title='Building a mono 2.0 RPM for RHEL4/CentOS4'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-8220940487744509540</id><published>2008-10-04T10:31:00.006+01:00</published><updated>2008-10-04T10:55:24.915+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ODBC'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Progress'/><category scheme='http://www.blogger.com/atom/ns#' term='i18n'/><title type='text'>Use Progress and ODBC on CentOS with Japanese</title><content type='html'>This is related to my previous blog about using Chinese characters with Progress, .Net and Mono:&lt;a href="http://tpokorra.blogspot.com/2008/02/internationalisation-allow-chinese.html"&gt;&lt;/a&gt;&lt;a href="http://tpokorra.blogspot.com/2008/02/internationalisation-allow-chinese.html"&gt; Allow Chinese characters on a Client-Server application&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now the next challenge was to get Japanese characters to work.&lt;br /&gt;&lt;br /&gt;I first converted the Progress database to shift-jis.&lt;br /&gt;I set the environment variable: SQL_CLIENT_CHARSET=SHIFT-JIS&lt;br /&gt;&lt;br /&gt;I then experimented with several locales, e.g. ja_JP.UTF8 and ja_JP (which is an alias for ja_JP.eucjp).&lt;br /&gt;&lt;br /&gt;I used Wikipedia to get some sample words in Japanese characters, see &lt;a href="http://en.wikipedia.org/wiki/Japanese_writing_system"&gt;http://en.wikipedia.org/wiki/Japanese_writing_system&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I soon realised that with some words I would get an ODBC error:&lt;br /&gt;eg. with Kanji script 金魚 (Goldfish)&lt;br /&gt;and with Hiragina script, きんぎょ&lt;br /&gt;If I left out the last letter, it worked.&lt;br /&gt;&lt;br /&gt;The ODBC error was:&lt;br /&gt;&lt;pre&gt;Saving of data failed!&lt;br /&gt;Reasons:&lt;br /&gt;* [[ODBC]] [unixODBC][DataDirect-Technologies][ODBC 20101&lt;br /&gt;driver][20101]Internal error -4 (unknown nls services error) in SQL from&lt;br /&gt;subsystem NLS SERVICES function nlsCountChars called from nc_get_strlen&lt;br /&gt;on . for . Save log for Progress technical support.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;A helpful person from Progress Support gave me some suggestions, and I got it to work with Progress 9.1D in the end!&lt;br /&gt;I had to use another locale, ja_JP.SJIS, which did not exist by default on my CentOS 4.6 (locale -a | grep JP).&lt;br /&gt;&lt;br /&gt;According to &lt;a href="http://kbase.redhat.com/faq/FAQ_80_1256.shtm"&gt;http://kbase.redhat.com/faq/FAQ_80_1256.shtm&lt;/a&gt;&lt;br /&gt;you can create the locale ja_JP.SJIS with this command:&lt;br /&gt;&lt;code&gt;localedef -f SHIFT_JIS -i ja_JP ja_JP.SJIS&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This resolved the internal ODBC error.&lt;br /&gt;&lt;br /&gt;Another issue was that I was not aware how to properly set the font in the ini file. Finally I found a hint in the Progress manuals, to check the prolang directory for the file progress.ini which is available for each language on the client side; this has a sample font. For the Japanese, this is a font with Japanese characters. I just copied it, and it worked.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-8220940487744509540?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/8220940487744509540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=8220940487744509540' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/8220940487744509540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/8220940487744509540'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2008/10/use-progress-and-odbc-on-centos-with.html' title='Use Progress and ODBC on CentOS with Japanese'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-8939490514920186036</id><published>2008-09-30T10:27:00.012+01:00</published><updated>2008-09-30T11:17:13.756+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XP installation'/><category scheme='http://www.blogger.com/atom/ns#' term='Japanese'/><category scheme='http://www.blogger.com/atom/ns#' term='Chinese'/><title type='text'>Install Chinese or Japanese Windows XP with english XP screenshots</title><content type='html'>I sometimes have the problem that I need to install an asian Windows XP. I could always install a second XP in english in parallel in order for me to understand the screens in a language that is unknown to me.&lt;br /&gt;&lt;br /&gt;Here are some screenshots that have helped me, hopefully they will be helpful for other people too.&lt;br /&gt;&lt;br /&gt;I have noticed that there are more screens, e.g. Japanese XP has an extra screen for the keyboard layout. Select S for the menu, and then select "101 English keyboard layout". Otherwise you will have problems later when entering Name and Organisation. It also seems you should click on the little red dot in the keyboard selection thing at the right bottom corner when entering Name and Organisation, otherwise Tabulator key does not work, and I was not able to continue from that screen&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;One bit of advice: the keyboard shortcuts are usually the same, so watch out for capital Latin letters. This should help you to recognise which screen you are on and find the meaning on the english screenshots.&lt;br /&gt;&lt;br /&gt;You can find a similar gallery here: &lt;a href="http://techrepublic.com.com/2346-10878_11-5181.html"&gt;http://techrepublic.com.com/2346-10878_11-5181.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_0axkVMruiXI/SOHyAmPHR9I/AAAAAAAABgw/FCBZpHYvsP0/s1600-h/WinXPSP2-00.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_0axkVMruiXI/SOHyAmPHR9I/AAAAAAAABgw/FCBZpHYvsP0/s320/WinXPSP2-00.jpg" alt="" id="BLOGGER_PHOTO_ID_5251744732568569810" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_0axkVMruiXI/SOHyAnUGxCI/AAAAAAAABg4/NDIInU1ROBc/s1600-h/WinXPSP2-01.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_0axkVMruiXI/SOHyAnUGxCI/AAAAAAAABg4/NDIInU1ROBc/s320/WinXPSP2-01.jpg" alt="" id="BLOGGER_PHOTO_ID_5251744732857943074" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_0axkVMruiXI/SOHyAoK-9AI/AAAAAAAABhA/2t3UDsDA7bE/s1600-h/WinXPSP2-02.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_0axkVMruiXI/SOHyAoK-9AI/AAAAAAAABhA/2t3UDsDA7bE/s320/WinXPSP2-02.jpg" alt="" id="BLOGGER_PHOTO_ID_5251744733088117762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_0axkVMruiXI/SOHyBOApO8I/AAAAAAAABhI/sJfEQc3JnrM/s1600-h/WinXPSP2-02b.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_0axkVMruiXI/SOHyBOApO8I/AAAAAAAABhI/sJfEQc3JnrM/s320/WinXPSP2-02b.jpg" alt="" id="BLOGGER_PHOTO_ID_5251744743245298626" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_0axkVMruiXI/SOH3x7xewUI/AAAAAAAABjA/jgbCkTI3fJ8/s1600-h/JapaneseKeyboardSelection.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_0axkVMruiXI/SOH3x7xewUI/AAAAAAAABjA/jgbCkTI3fJ8/s320/JapaneseKeyboardSelection.png" alt="" id="BLOGGER_PHOTO_ID_5251751077721588034" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_0axkVMruiXI/SOHyBHwz3_I/AAAAAAAABhQ/BqcgRJLJ0KI/s1600-h/WinXPSP2-03.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_0axkVMruiXI/SOHyBHwz3_I/AAAAAAAABhQ/BqcgRJLJ0KI/s320/WinXPSP2-03.jpg" alt="" id="BLOGGER_PHOTO_ID_5251744741568274418" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_0axkVMruiXI/SOHyU-JQfII/AAAAAAAABhY/mmZP9CIar8Y/s1600-h/WinXPSP2-04.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_0axkVMruiXI/SOHyU-JQfII/AAAAAAAABhY/mmZP9CIar8Y/s320/WinXPSP2-04.jpg" alt="" id="BLOGGER_PHOTO_ID_5251745082583841922" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_0axkVMruiXI/SOHyU1Qd9BI/AAAAAAAABhg/6Lo3qvlDtUQ/s1600-h/WinXPSP2-05.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_0axkVMruiXI/SOHyU1Qd9BI/AAAAAAAABhg/6Lo3qvlDtUQ/s320/WinXPSP2-05.jpg" alt="" id="BLOGGER_PHOTO_ID_5251745080198165522" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_0axkVMruiXI/SOHyU2jqd0I/AAAAAAAABho/wUNZx2iS3dY/s1600-h/WinXPSP2-06.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_0axkVMruiXI/SOHyU2jqd0I/AAAAAAAABho/wUNZx2iS3dY/s320/WinXPSP2-06.jpg" alt="" id="BLOGGER_PHOTO_ID_5251745080547112770" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_0axkVMruiXI/SOHyU7tuwWI/AAAAAAAABhw/SATDyVAqSCM/s1600-h/WinXPSP2-06b-retryskipfileexitsetup.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_0axkVMruiXI/SOHyU7tuwWI/AAAAAAAABhw/SATDyVAqSCM/s320/WinXPSP2-06b-retryskipfileexitsetup.jpg" alt="" id="BLOGGER_PHOTO_ID_5251745081931514210" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_0axkVMruiXI/SOHyVZe3BsI/AAAAAAAABh4/AuHQ1cMX894/s1600-h/WinXPSP2-07.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_0axkVMruiXI/SOHyVZe3BsI/AAAAAAAABh4/AuHQ1cMX894/s320/WinXPSP2-07.jpg" alt="" id="BLOGGER_PHOTO_ID_5251745089922205378" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_0axkVMruiXI/SOHyi3tPGRI/AAAAAAAABiA/9HvffQKM4Wo/s1600-h/WinXPSP2-08.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_0axkVMruiXI/SOHyi3tPGRI/AAAAAAAABiA/9HvffQKM4Wo/s320/WinXPSP2-08.JPG" alt="" id="BLOGGER_PHOTO_ID_5251745321373866258" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_0axkVMruiXI/SOHyi7EAhAI/AAAAAAAABiI/R4NrxzF3-wg/s1600-h/WinXPSP2-09.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_0axkVMruiXI/SOHyi7EAhAI/AAAAAAAABiI/R4NrxzF3-wg/s320/WinXPSP2-09.JPG" alt="" id="BLOGGER_PHOTO_ID_5251745322274685954" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_0axkVMruiXI/SOHyi113N7I/AAAAAAAABiQ/iF9IiyixjGM/s1600-h/WinXPSP2-10.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_0axkVMruiXI/SOHyi113N7I/AAAAAAAABiQ/iF9IiyixjGM/s320/WinXPSP2-10.JPG" alt="" id="BLOGGER_PHOTO_ID_5251745320873179058" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_0axkVMruiXI/SOHyjIMtx_I/AAAAAAAABiY/sbTp2Q1PdII/s1600-h/WinXPSP2-11.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_0axkVMruiXI/SOHyjIMtx_I/AAAAAAAABiY/sbTp2Q1PdII/s320/WinXPSP2-11.JPG" alt="" id="BLOGGER_PHOTO_ID_5251745325800867826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_0axkVMruiXI/SOHyjBAtmNI/AAAAAAAABig/He0CtviyWng/s1600-h/WinXPSP2-12.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_0axkVMruiXI/SOHyjBAtmNI/AAAAAAAABig/He0CtviyWng/s320/WinXPSP2-12.JPG" alt="" id="BLOGGER_PHOTO_ID_5251745323871475922" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_0axkVMruiXI/SOHytfyME4I/AAAAAAAABio/NgO2TqYHBEA/s1600-h/WinXPSP2-13.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_0axkVMruiXI/SOHytfyME4I/AAAAAAAABio/NgO2TqYHBEA/s320/WinXPSP2-13.JPG" alt="" id="BLOGGER_PHOTO_ID_5251745503930749826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_0axkVMruiXI/SOHytQO1WrI/AAAAAAAABiw/FKhw6qmtug8/s1600-h/WinXPSP2-14.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_0axkVMruiXI/SOHytQO1WrI/AAAAAAAABiw/FKhw6qmtug8/s320/WinXPSP2-14.JPG" alt="" id="BLOGGER_PHOTO_ID_5251745499755928242" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_0axkVMruiXI/SOHytRkr16I/AAAAAAAABi4/OLZU0mrEX68/s1600-h/WinXPSP2-15.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_0axkVMruiXI/SOHytRkr16I/AAAAAAAABi4/OLZU0mrEX68/s320/WinXPSP2-15.JPG" alt="" id="BLOGGER_PHOTO_ID_5251745500116015010" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-8939490514920186036?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/8939490514920186036/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=8939490514920186036' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/8939490514920186036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/8939490514920186036'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2008/09/install-chinese-or-japanese-windows-xp.html' title='Install Chinese or Japanese Windows XP with english XP screenshots'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_0axkVMruiXI/SOHyAmPHR9I/AAAAAAAABgw/FCBZpHYvsP0/s72-c/WinXPSP2-00.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-3852115739985881070</id><published>2008-08-29T21:39:00.003+01:00</published><updated>2008-08-29T21:48:25.444+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='generate code'/><category scheme='http://www.blogger.com/atom/ns#' term='scaffolding'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Use the CSParser to process C# files</title><content type='html'>I wanted to generate code but at the same time parse the target file first to see if any changes have been manually made or with the graphical designer.&lt;br/&gt;&lt;br/&gt;&lt;br /&gt;I found the following parser for c# code: &lt;a href="http://www.codeplex.com/csparser"&gt;http://www.codeplex.com/csparser&lt;/a&gt;; it seems very active at the moment, and it parsed my test cs file without any problems.&lt;br/&gt;&lt;br/&gt;&lt;br /&gt;&lt;br /&gt;I had some issues first understanding how to look for the current line number and how to know the name of the classes and methods etc. But a look at the sample file cmc.cs helped a lot.&lt;br /&gt;&lt;br /&gt;&lt;div style="overflow: auto;"&gt;&lt;pre&gt;using System;&lt;br /&gt;using System.CodeDom.Compiler;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Diagnostics;&lt;br /&gt;using System.IO;&lt;br /&gt;using System.Text;&lt;br /&gt;using DDW.Collections;&lt;br /&gt;using DDW;&lt;br /&gt;using Microsoft.CSharp;&lt;br /&gt;&lt;br /&gt;namespace test&lt;br /&gt;{&lt;br /&gt;  class Program&lt;br /&gt;  {&lt;br /&gt;    private static void PrintErrors(IEnumerable&lt;Parser.Error&gt; errors)&lt;br /&gt;    {&lt;br /&gt;        foreach (Parser.Error error in errors)&lt;br /&gt;        {&lt;br /&gt;            if(error.Token.ID == TokenID.Eof &amp;&amp; error.Line == -1)&lt;br /&gt;            {&lt;br /&gt;                Console.WriteLine(error.Message + "\nFile: " + error.FileName + "\n");&lt;br /&gt;            }&lt;br /&gt;            else&lt;br /&gt;            {&lt;br /&gt;                Console.WriteLine(error.Message + " in token " + error.Token.ID&lt;br /&gt;                    + "\nline: " + error.Line + ", column: " + error.Column&lt;br /&gt;                    + "\nin file: " + error.FileName + "\n");&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    private static CompilationUnitNode ParseUnit(string fileName, List&lt;Parser.Error&gt; errors)&lt;br /&gt;    {&lt;br /&gt;        Console.Write("\nParsing " + fileName);&lt;br /&gt;        FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);&lt;br /&gt;        StreamReader sr = new StreamReader(fs, true);&lt;br /&gt;        Lexer l = new Lexer(sr);&lt;br /&gt;        TokenCollection toks = l.Lex();&lt;br /&gt;&lt;br /&gt;        Parser p = null;&lt;br /&gt;        CompilationUnitNode cu = null;&lt;br /&gt;&lt;br /&gt;        p = new Parser(fileName);&lt;br /&gt;        cu = p.Parse(toks, l.StringLiterals);&lt;br /&gt;&lt;br /&gt;        if(p.Errors.Count != 0)&lt;br /&gt;        {&lt;br /&gt;            Console.WriteLine();&lt;br /&gt;            PrintErrors(p.Errors);&lt;br /&gt;            errors.AddRange(p.Errors);&lt;br /&gt;            return null;&lt;br /&gt;        }&lt;br /&gt;        return cu;&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    public static void Main(string[] args)&lt;br /&gt;    {&lt;br /&gt;      string filename = "c:\\myfile.cs";&lt;br /&gt;      List&lt;Parser.Error&gt; errors = new List&lt;Parser.Error&gt;();&lt;br /&gt;      CompilationUnitNode cu = ParseUnit(filename, errors);&lt;br /&gt;&lt;br /&gt;      StringBuilder sb = new StringBuilder();&lt;br /&gt;      cu.ToSource(sb);&lt;br /&gt;      Console.WriteLine(sb.ToString());&lt;br /&gt;      foreach (NamespaceNode nnode in cu.Namespaces)&lt;br /&gt;      {&lt;br /&gt;        foreach (ClassNode cnode in nnode.Classes)&lt;br /&gt;        {&lt;br /&gt;          Console.WriteLine("class name: " + cnode.Name.Identifier.ToString());&lt;br /&gt;          foreach (FieldNode fnode in cnode.Fields)&lt;br /&gt;          {&lt;br /&gt;            foreach (QualifiedIdentifierExpression qexpr in fnode.Names)&lt;br /&gt;            {&lt;br /&gt;              sb = new StringBuilder();&lt;br /&gt;              qexpr.Expressions.ToSource(sb);&lt;br /&gt;              Console.WriteLine("Field: " + sb.ToString());&lt;br /&gt;            }&lt;br /&gt;          }&lt;br /&gt;          foreach (MethodNode mnode in cnode.Methods)&lt;br /&gt;          {&lt;br /&gt;            sb = new StringBuilder();&lt;br /&gt;            mnode.Names.ToSource(sb);&lt;br /&gt;            if (sb.ToString() == "InitializeComponent")&lt;br /&gt;            {&lt;br /&gt;              Console.WriteLine("Line number of InitializeComponent starting: " + &lt;br /&gt;                                mnode.RelatedToken.Line.ToString());&lt;br /&gt;              int firstLine = -1;&lt;br /&gt;              int lastLine = -1;&lt;br /&gt;              foreach (StatementNode snode in mnode.StatementBlock.Statements)&lt;br /&gt;              {&lt;br /&gt;                if (firstLine == -1)&lt;br /&gt;                {&lt;br /&gt;                  firstLine = snode.RelatedToken.Line;&lt;br /&gt;                }&lt;br /&gt;                lastLine = snode.RelatedToken.Line;&lt;br /&gt;                sb = new StringBuilder();&lt;br /&gt;                snode.ToSource(sb);&lt;br /&gt;                string line = sb.ToString();&lt;br /&gt;                Console.Write(snode.RelatedToken.Line.ToString() + ": " + line);&lt;br /&gt;                &lt;br /&gt;              }&lt;br /&gt;            }&lt;br /&gt;          }&lt;br /&gt;          &lt;br /&gt;        }&lt;br /&gt;      }&lt;br /&gt;      &lt;br /&gt;      Console.Write("Press any key to continue . . . ");&lt;br /&gt;      Console.ReadKey(true);&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-3852115739985881070?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/3852115739985881070/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=3852115739985881070' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/3852115739985881070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/3852115739985881070'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2008/08/use-csparser-to-process-csharp-files.html' title='Use the CSParser to process C# files'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-8884529824652157621</id><published>2008-03-02T12:03:00.008Z</published><updated>2008-03-02T12:30:25.683Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Webspace'/><category scheme='http://www.blogger.com/atom/ns#' term='Hostsharing'/><category scheme='http://www.blogger.com/atom/ns#' term='Bash'/><title type='text'>Manage webspace with Hostsharing</title><content type='html'>I am a member of Hostsharing eG, which is a German company owned by its members with the aim to take the idea of Open Source to Webhosting. You don't need to worry about backups or availability, because the webmasters do it all for you. But you still have SSH access and many other powerful tools to manage your applications that are running on the server.&lt;br /&gt;&lt;br /&gt;Recently I had to fight off an intruder who had used a security leak in one of my php applications. He had added 700 MB somewhere, the &lt;code&gt;quota&lt;/code&gt; command showed it, but all calls of &lt;quota&gt;du&lt;/quota&gt; did not show the files. Finally I realised I have to  run &lt;code&gt;find / -group pac00&lt;/code&gt; which shows all files that belong to my own user or my subusers, who all belong to the group e.g. pac00.&lt;br /&gt;&lt;br /&gt;Another issue that I often have is that some files are created with PHP and they belong to user httpd. That means they don't show up at all on the &lt;code&gt;quota&lt;/code&gt; command, which is not fair for the other users, because everyone has to pay for the used webspace.&lt;br /&gt;The first step is to actually find those files. I have written the script pac-du-httpd, which goes through all the users' directories and prints the filenames that are owned by httpd to a file, and also prints the overall sum size of those files. You can find the file here: &lt;a href="http://www.pokorra.de/coding/pac-du-httpd.sh.txt"&gt;pac-du-httpd.sh&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The next step is to change the ownership of those files. On the support mailing list (yes, Hostsharing eG has as much open communication as any other Open Source project) there is a very useful explanation of how to delete such files:&lt;br /&gt;&lt;a href="http://lists.hostsharing.net/archiv/support/2004-October/011452.html"&gt;Support Anleitung&lt;/a&gt;&lt;br /&gt;The basic idea is: first run the script as normal PHP with user httpd, and change the file permissions so that everybody can change them, and then to run the script again, to delete the file.&lt;br /&gt;In my situation though I don't want to delete the file, but would like to change the permission. I finally got this solution to work:&lt;br /&gt;&lt;pre&gt;&amp;lt;?php&lt;br /&gt;# first run as php file with httpd, to give permissions (chmod 0666) then run with cgi to recopy the file&lt;br /&gt;&lt;br /&gt;$dh = opendir('./');&lt;br /&gt;&lt;br /&gt;while( ($file = (readdir($dh))) !== FALSE )&lt;br /&gt;{&lt;br /&gt;  if ($_SERVER["ORIG_SCRIPT_NAME"] == '/cgi-bin/phpstub')&lt;br /&gt;  {&lt;br /&gt;    copy ($file, $file.".tmp");&lt;br /&gt;    unlink ($file);&lt;br /&gt;    copy ($file.".tmp", $file);&lt;br /&gt;    unlink ($file.".tmp");&lt;br /&gt;  }&lt;br /&gt;  else&lt;br /&gt;  {&lt;br /&gt;    chmod($file, 0666);&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;?&gt;&lt;/pre&gt;&lt;br /&gt;I first run the script to change the file permissions, and then I run it again via CGI so that it runs for the user that the files should belong to. I make a copy of the file, delete the original, and rename the copy back. This works perfectly. And for the future, I will let the PHP always run via CGI (see also &lt;a "href=http://www.hostsharing.net/dokumentation/installationsanleitungen/php-via-cgi.html"&gt;Hostsharing documentation on PHP via CGI&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Another useful tool is pac-du-quota, which is referenced from the &lt;a href="http://www.hostsharing.net/dokumentation/1/dynamic-web/speicherbelegung.html"&gt;Hostsharing Documentation on Webspace&lt;/a&gt;.&lt;br /&gt;I have extended it to also list the size of the MySQL databases, which is in my case also quite a bit of data...&lt;br /&gt;Insert this in the function collectSpace just before "#Wenn User exisiteren aufsammeln":&lt;br /&gt;&lt;pre&gt;# Mysql Datenbanken&lt;br /&gt; for DB in /var/lib/mysql/${PAC}_*; do&lt;br /&gt;   let COUNTER=COUNTER+1&lt;br /&gt;   TEMP=`du -s "$DB"`&lt;br /&gt;   SPACE[$COUNTER]=`echo $TEMP | sed -e 's/\([^ ]*\).*/\1/g'`&lt;br /&gt;   NAME[$COUNTER]="Mysql_`basename $DB`"&lt;br /&gt; done&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-8884529824652157621?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/8884529824652157621/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=8884529824652157621' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/8884529824652157621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/8884529824652157621'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2008/03/manage-webspace-with-hostsharing.html' title='Manage webspace with Hostsharing'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-8955722749323035759</id><published>2008-02-26T15:16:00.008Z</published><updated>2008-02-26T16:01:58.845Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='delphi.net'/><category scheme='http://www.blogger.com/atom/ns#' term='i18n'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>Allow Chinese characters on a Client-Server application</title><content type='html'>I recently had to provide a working solution for Traditional Chinese for Hongkong.&lt;br /&gt;&lt;br /&gt;It involved both ODBC on the Linux server to read correct data from a Progress database, and process that data in .net on Mono, but also on the client side to be able to read data through ODBC.&lt;br /&gt;&lt;br /&gt;Here is the solution and also some warnings about what can go wrong:&lt;br /&gt;&lt;br /&gt;For Mono, you need to have installed the RPM package mono-locale-extras, which installs the dll I18N.CJK.dll (CJK stands for Chinese Japanese Korean).&lt;br /&gt;&lt;br /&gt;Make sure the Progress database is in codepage big-5.&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;proutil mydb -C convchar convert undefined -G 15&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;proutil mydb -C convchar convert big-5 -G 15&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;_progres -pf batch.pf -1 -b -rx -p upgrade.p -param $DLC/prolang/tch/big-5/_tran.df | cat&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;proutil mydb -C idxbuild all&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Make sure that your pf files (or even the Progress startup.pf) contain these lines:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  -cpinternal big-5 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  -cpstream big-5 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  -cprcodein undefined&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For the Progress server, you need to set this variable before the server is started (note: if you have both sql and 4gl server, the first one needs all settings already):&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;export SQL_CLIENT_CHARSET=BIG-5&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Mono would rather expect BIG5 (without the dash), so we need to set another variable so that the default encoding is correct.&lt;br /&gt;Before you start the server in the Mono environment, make sure that you export this variable:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;export LANG=zh_TW.big5&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The following command shows what languages are available on your Linux:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;locale -a&lt;/span&gt;&lt;br /&gt;Unfortunately there is no big5 for Hongkong, and zh_HK.big5hkscs does not seem to work for me. zh_TW.big5 works fine.&lt;br /&gt;&lt;br /&gt;This code converts the data from the codepage coming through ODBC from the Progress database into Unicode:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    FDBEncoding := System.Text.Encoding.Default;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;try&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  sqlClientCodePage :=     Convert.ToInt32(System.Environment.GetEnvironmentVariable('SQL_CLIENT_CHARSET'));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  FDBEncoding :=  System.Text.Encoding.GetEncoding(sqlClientCodePage);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    except on exp: Exception do&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    function ConvertToUnicode(s: System.String): System.String;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    var&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  bytes: array of byte;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  bytes := Encoding.Default.GetBytes(s);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  result := &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;FDBEncoding&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;.GetChars(bytes);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    function ConvertFromUnicode(s: System.String): System.String;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    var&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  bytes: array of byte;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  bytes := FDBEncoding.GetBytes(s);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  result := Encoding.Default.GetChars(bytes);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For the client to be able to access through ODBC, we also need to set the environment variable in Windows XP &lt;span style="font-family:courier new;"&gt;SQL_CLIENT_CHARSET=BIG-5&lt;br /&gt;&lt;/span&gt;(Start/Settings/Control Panel/System/Advanced/Environment Variables/System or User Variables)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-8955722749323035759?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/8955722749323035759/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=8955722749323035759' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/8955722749323035759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/8955722749323035759'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2008/02/internationalisation-allow-chinese.html' title='Allow Chinese characters on a Client-Server application'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-7534419148490626169</id><published>2008-02-17T11:42:00.004Z</published><updated>2008-02-17T11:52:11.357Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='knowing'/><category scheme='http://www.blogger.com/atom/ns#' term='God'/><category scheme='http://www.blogger.com/atom/ns#' term='faith'/><category scheme='http://www.blogger.com/atom/ns#' term='relationship'/><title type='text'>What kind of relationship can we have with God</title><content type='html'>&lt;p&gt;Some christians seem to talk a lot about their faith as a "Face to Face" relationship with God.  &lt;/p&gt;&lt;p&gt;I have a problem with those words, because it sounds to me much like a relationship of two equal people who have a good understanding of each other. &lt;/p&gt;&lt;p&gt;The bible mentions the phrase in these places (God and human being face to face): &lt;/p&gt; &lt;ul&gt;&lt;li&gt; 1Mo (Gen) 32,30 It is because I saw God face to face, and yet my life was spared. &lt;ul&gt;&lt;li&gt; Jacob has fought with God before meeting Esau &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt; 2Mo (Ex) 33,11 The LORD would speak to Moses face to face, as a man speaks with his friend.  &lt;/li&gt;&lt;li&gt; 5Mo (Deut) 34,10 Since then, no prophet has risen in Israel like Moses, whom the LORD knew face to face, &lt;ul&gt;&lt;li&gt; This was quite a unique relationship in the bible  &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt; 5Mo (Deut) 5,4+5 The LORD spoke to you face to face out of the fire on the mountain. (At that time I stood between the LORD and you to declare to you the word of the LORD, because you were afraid of the fire and did not go up the mountain.) &lt;ul&gt;&lt;li&gt; The whole people of Israel met God, but it could not be continued, so Moses went alone &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt; Job 38, 3+4 Brace yourself like a man; I will question you, and you shall answer me. Where were you when I laid the earth's foundation? Tell me, if you understand. &lt;ul&gt;&lt;li&gt; Job cannot answer God &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt; 1Cor 13,12 Now we see but a poor reflection as in a mirror; then we shall see face to face. Now I know in part; then I shall know fully, even as I am fully known. &lt;ul&gt;&lt;li&gt; This is a promise for the future &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Now things look a bit different when we consider that Jesus became a man and so represented God to us in a way we can grasp a little.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;John 14, 9: Anyone who has seen me has seen the Father. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;But again, he does not have long discussions, but invites the disciples: Come and see! Follow me! I think there is the danger of just wanting to experience God but not being willing to follow and obey him. &lt;/p&gt; &lt;ul&gt;&lt;li&gt; John 1, 39: Come, he replied, and you will see. So they went and saw where he was staying, and spent that day with him.  &lt;/li&gt;&lt;li&gt; Matthew 4, 19: Come, follow me, Jesus said, and I will make you fishers of men. &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;We don't need to be afraid of Jesus: He is compassionate and approachable  &lt;/p&gt; &lt;ul&gt;&lt;li&gt; e.g. Luke 8, 47: Then the woman, seeing that she could not go unnoticed, came trembling and fell at his feet. [...] Daughter, your faith has healed you. Go in peace. &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Jesus enjoyed blessing the children; perhaps that is how I would also describe my relationship with Jesus? I can sit on His lap, I can tell him about my little and big worries, and he will understand. When he starts talking about the things that worry him or he is busy with, I will sit there with big eyes and won't understand much, perhaps with growing maturity get more and more a better idea what is really important. &lt;/p&gt; &lt;ul&gt;&lt;li&gt; Luke 18, 16: But Jesus called the children to him and said, Let the little children come to me, and do not hinder them, for the kingdom of God belongs to such as these. &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;We can enter God's presence, and need to be intimate with him. But he will still surpass our understanding  &lt;/p&gt; &lt;ul&gt;&lt;li&gt; Phil 6,7: Do not be anxious about anything, but in everything, by prayer and petition, with thanksgiving, present your requests to God. And the peace of God, which transcends all understanding, will guard your hearts and your minds in Christ Jesus. &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;My (personal) conclusion: &lt;/p&gt; &lt;ul&gt;&lt;li&gt; When I follow Jesus, I will see the back of Him. My eyes need to be focused on Jesus' back. I don't want to stand still and face Him, because then I am going in the wrong direction. &lt;/li&gt;&lt;li&gt; I know I need times when I sit on His lap and listen to Him and tell Him my joys and worries.  &lt;/li&gt;&lt;li&gt; I am looking forward to the day when I will see God face to face, and I will understand it all and know Him completely. &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-7534419148490626169?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/7534419148490626169/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=7534419148490626169' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/7534419148490626169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/7534419148490626169'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2008/02/what-kind-of-relationship-can-we-have.html' title='What kind of relationship can we have with God'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-935334190355602019</id><published>2008-02-10T10:44:00.000Z</published><updated>2008-02-10T10:58:16.227Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='XSP'/><category scheme='http://www.blogger.com/atom/ns#' term='Debug'/><category scheme='http://www.blogger.com/atom/ns#' term='Delphi2C#'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>My first little ASP.net project using the Mono XSP server</title><content type='html'>I wanted to provide an online version for the project &lt;a href="http://delphinet2cs.sourceforge.net/"&gt;Delphi2C#&lt;/a&gt;, so that people can just paste their Pascal code on the website, and see how good the converter is for them when it displays the C# version of their code.&lt;br /&gt;&lt;br /&gt;On Debian, you need to install:&lt;br /&gt;&lt;pre&gt;apt-get install mono-xsp asp.net-examples&lt;br /&gt;&lt;/pre&gt;This will give you a file&lt;br /&gt;&lt;pre&gt;/etc/xsp/debian.webapp&lt;br /&gt;&lt;/pre&gt;It already contains the configuration for the samples, that live in&lt;br /&gt;&lt;pre&gt;/usr/share/asp.net-demos&lt;/pre&gt;To start the xsp server, you just run&lt;br /&gt;&lt;pre&gt;/etc/init.d/mono-xsp start&lt;br /&gt;&lt;/pre&gt;And you will be able to access the samples at&lt;br /&gt;&lt;pre&gt;&lt;a href="http://currock.net:8081/samples/" class="external" rel="nofollow"&gt;http://YOURSERVER:8081/samples&lt;/a&gt;&lt;/pre&gt;For example to add your own aspx file, copy it to&lt;br /&gt;&lt;pre&gt;/usr/share/asp.net-demos/DelphiNet2CSharp.aspx&lt;br /&gt;&lt;/pre&gt; The source code of that file you can see here:&lt;br /&gt;&lt;a href="http://delphinet2cs.cvs.sourceforge.net/delphinet2cs/Delphinet2cs/asp.net/DelphiNet2CSharp.aspx?revision=1.1&amp;amp;view=markup"&gt;Browse CVS of Delphi2C#&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you have a dll as well, copy that to&lt;br /&gt;&lt;pre&gt;/usr/share/asp.net-demos/bin/Delphi2CSharp.dll&lt;/pre&gt; In your aspx file, you need to write at the top to use that dll:&lt;br /&gt;&lt;pre&gt;&lt;%@ Import Namespace="Delphi2CSharp" %&gt;&lt;/pre&gt;To debug your application (e.g. I had compiled the DLL for .Net 2.0, but the xsp only supported 1.1 and crashed without any message to the browser):&lt;br /&gt;&lt;pre&gt;cd /usr/share/asp.net-demos&lt;br /&gt;MONO_OPTIONS=--debug &amp;amp;&amp;amp; xsp --verbose&lt;/pre&gt;Then in the webbrowser go to&lt;br /&gt;&lt;pre&gt;&lt;a href="http://currock.net:8080/testtimo.aspx" class="external" rel="nofollow"&gt;http://YOURSERVER:8080/DelphiNet2CSharp.aspx &lt;/a&gt;&lt;/pre&gt;  You will see all the Console.WriteLine output, and also any exceptions and Mono crash messages.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-935334190355602019?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/935334190355602019/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=935334190355602019' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/935334190355602019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/935334190355602019'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2008/02/my-first-little-aspnet-project-using.html' title='My first little ASP.net project using the Mono XSP server'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-5019071420158501761</id><published>2007-11-19T12:23:00.000Z</published><updated>2007-11-19T12:27:09.044Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='rpm'/><category scheme='http://www.blogger.com/atom/ns#' term='packaging'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Config files in RPM files</title><content type='html'>see this very helpful description of &lt;a href="http://www-uxsup.csx.cam.ac.uk/%7Ejw35/docs/rpm_config.html"&gt;RPM, %config, and (noreplace)&lt;/a&gt; by Jon Warbrick&lt;a href="mailto:jw35@cam.ac.uk"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;all about when files are stored with extension .rpmnew or .rpmsave, and when the current file is actually replaced with the new file&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-5019071420158501761?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/5019071420158501761/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=5019071420158501761' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/5019071420158501761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/5019071420158501761'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2007/11/config-files-in-rpm-files.html' title='Config files in RPM files'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-926386336997592777</id><published>2007-11-17T23:35:00.000Z</published><updated>2007-11-17T23:37:39.496Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='projects'/><category scheme='http://www.blogger.com/atom/ns#' term='packaging'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Kolab'/><title type='text'>Kolab Groupware Calendaring</title><content type='html'>January 2004&lt;br /&gt;See &lt;a href="http://www.pokorra.de/kolab/index.html"&gt;my kolab groupware calendaring pages&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I wrote this documentation while trying to setup a working groupware calendaring solution. It is basically a log of this process, including the problems that I came across, and how I solved it, often with help from helpful people from the associated projects. I hope this text can help other people who will have the same problems. Some portions of this text are tailored for the server environment (SLS) of OM, the organisation that I work for.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-926386336997592777?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/926386336997592777/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=926386336997592777' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/926386336997592777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/926386336997592777'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2007/11/kolab-groupware-calendaring.html' title='Kolab Groupware Calendaring'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-3750428728631538443</id><published>2007-11-17T23:29:00.000Z</published><updated>2007-11-17T23:34:41.506Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ide'/><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='make'/><title type='text'>Free Visual C++ Toolkit</title><content type='html'>&lt;a href="http://msdn.microsoft.com/visualc/vctoolkit2003/"&gt;http://msdn.microsoft.com/visualc/vctoolkit2003/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;copy nmake.exe from .net SDK into bin directory&lt;br /&gt;&lt;br /&gt;use the shortcut to start a cmd box with the environment variables set&lt;br /&gt;&lt;br /&gt;Blog about it&lt;br /&gt;&lt;a href="http://blogs.msdn.com/brianjo/archive/2004/04/17/115335.aspx"&gt;http://blogs.msdn.com/brianjo/archive/2004/04/17/115335.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcug98/html/_asug_overview.3a_.nmake_reference.asp"&gt;Manual from Microsoft about nmake.exe&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;review from a linux point of view:&lt;br /&gt;&lt;a href="http://llg.cubic.org/docs/vc7.html"&gt;llg.cubic.org&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you have a Visual C++ 6 IDE, just copy over the bin, lib, and include directory, and compiling works. Debugging does not.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-3750428728631538443?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/3750428728631538443/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=3750428728631538443' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/3750428728631538443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/3750428728631538443'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2007/11/free-visual-c-toolkit.html' title='Free Visual C++ Toolkit'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-2188669478490122432</id><published>2007-11-17T23:26:00.000Z</published><updated>2007-11-17T23:28:27.160Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='VBA'/><category scheme='http://www.blogger.com/atom/ns#' term='CSV'/><title type='text'>Some CSV functions for VBA</title><content type='html'>feel free to use!&lt;br /&gt;&lt;div style="overflow: auto;"&gt;&lt;pre&gt;Function getCountCSV(ByVal list As String) As String&lt;br /&gt;  Dim number As Integer&lt;br /&gt;  number = 0&lt;br /&gt;  While Len(list) &lt;&gt; 0&lt;br /&gt;      Call getNextCSV(list)&lt;br /&gt;      number = number + 1&lt;br /&gt;  Wend&lt;br /&gt;  getCountCSV = number&lt;br /&gt;End Function&lt;br /&gt;&lt;br /&gt;Function getNextCSV(list As String) As String&lt;br /&gt;  Dim commaPosition As Integer&lt;br /&gt;  commaPosition = InStr(list, ",")&lt;br /&gt;  If (commaPosition = 0) Then commaPosition = InStr(list, ";")&lt;br /&gt;  If (commaPosition &lt;&gt; 0) Then&lt;br /&gt;      getNextCSV = Trim$(Mid$(list, 1, commaPosition - 1))&lt;br /&gt;      list = Trim$(Mid$(list, commaPosition + 1, Len(list) - commaPosition))&lt;br /&gt;  Else&lt;br /&gt;      getNextCSV = Trim$(list)&lt;br /&gt;      list = vbNullString&lt;br /&gt;  End If&lt;br /&gt;End Function&lt;br /&gt;&lt;br /&gt;Function getCSVValue(list As String, index As Integer) As String&lt;br /&gt;' list is the text with comma separated values&lt;br /&gt;' index is starting from 0&lt;br /&gt;' returns the value at the given position in the list&lt;br /&gt;  Dim counter As Integer&lt;br /&gt;  Dim element As String&lt;br /&gt;  Dim listcsv As String&lt;br /&gt;  counter = 0&lt;br /&gt;  listcsv = list&lt;br /&gt;  element = getNextCSV(listcsv)&lt;br /&gt;  While (counter &lt;&gt; 0)&lt;br /&gt;      element = getNextCSV(listcsv)&lt;br /&gt;      counter = counter + 1&lt;br /&gt;  Wend&lt;br /&gt;  getCSVValue = element&lt;br /&gt;End Function&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-2188669478490122432?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/2188669478490122432/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=2188669478490122432' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/2188669478490122432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/2188669478490122432'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2007/11/some-csv-functions-for-vba.html' title='Some CSV functions for VBA'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-4873410480052761615</id><published>2007-11-17T23:21:00.000Z</published><updated>2007-11-17T23:22:23.158Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='projects'/><category scheme='http://www.blogger.com/atom/ns#' term='Open Source on Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='delphi.net'/><title type='text'>BsDiff for Windows and .net</title><content type='html'>This program is based on the excellent unix tool &lt;a href="http://www.daemonology.net/bsdiff"&gt;bsdiff&lt;/a&gt; from Colin Percival.&lt;br /&gt;&lt;br /&gt;I made some adjustments, so that it would compile in C++ mode in &lt;a href="http://www.bloodshed.net/devcpp.html"&gt;Dev-C++ IDE&lt;/a&gt; (mingw compiler), using the libbzip2 package.&lt;br /&gt;&lt;br /&gt;This version is based on bsdiff 4.1. The difference between 4.1 and 4.2 is only in the patch program, instead of using lseek and read he now uses pread, which I find this text about it:&lt;br /&gt;&lt;a href="http://www.atnf.csiro.au/people/rgooch/linux/docs/porting-to-2.2.html"&gt;source&lt;/a&gt;&lt;br /&gt;&lt;span&gt;Another thing to take note of is that Linux 2.2 introduces the pread() and pwrite() system calls. These allow a process to read and write from a specified position in a file. This is similar, but not identical, to using the lseek() system call followed by an ordinary read() or write() system call. In particular, concurrent access to a file (required for asynchronous I/O (AIO) support) requires the pread() and pwrite() system calls.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In the windows version, I had to adjust the code anyway, because I am not using pipes, but keep the file open for reading. I guess the bug of the official bsdiff had to do with the concurrent access of the several forks of the program to the file. That does not happen in the windows version at all, the file is opened only once.&lt;br /&gt;&lt;br /&gt;For questions, write to &lt;a href="mailto:TimoBsDiff@pokorra.de"&gt;Timotheus Pokorra&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Here are the sources (including the .dev files for Dev-C++):  &lt;a href="http://download.pokorra.de/coding/bsdiff_win_src.zip"&gt;bsdiff_win_src.zip&lt;/a&gt;&lt;br /&gt;Here are the 2 executables: &lt;a href="http://download.pokorra.de/coding/bsdiff_win_exe.zip"&gt;bsdiff_win_exe.zip&lt;/a&gt;&lt;br /&gt;The code is licensed under the BSD Protection License (see the original LICENSE file in &lt;a href="http://ftp.bestcom.ru/FreeBSD/ports/distfiles/bsdiff-4.1.tar.gz"&gt;bsdiff-4.1.tar.gz&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;See also &lt;a href="http://sites.inka.de/tesla/f_others.html#bsdiff"&gt;Andreas John's bsdiff for Visual C++&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;May 2007: I have ported the program to Delphi.net, and with small modifications (make it a proper dll) you can use it even with C# programs. If anyone is interested in the code, I will be happy to share it. Drop me an email...&lt;br /&gt;June 2007: Ok, someone has dropped me an email, and here is the delphi.net version, with all required dlls. also read the readme.txt included in the archive, and the documentation in bsdiff.pas. If you have questions, ask!&lt;br /&gt;&lt;a href="http://www.pokorra.de/coding/bsdiff.net.zip"&gt;bsdiff.net.zip&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-4873410480052761615?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/4873410480052761615/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=4873410480052761615' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/4873410480052761615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/4873410480052761615'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2007/11/bsdiff-for-windows-and-net.html' title='BsDiff for Windows and .net'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-8164069454404369530</id><published>2007-11-17T23:03:00.000Z</published><updated>2007-11-17T23:19:34.059Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='projects'/><category scheme='http://www.blogger.com/atom/ns#' term='generate code'/><category scheme='http://www.blogger.com/atom/ns#' term='parser'/><category scheme='http://www.blogger.com/atom/ns#' term='documentation'/><category scheme='http://www.blogger.com/atom/ns#' term='sourceforge'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>SQL2Diagram</title><content type='html'>&lt;a href="http://sql2diagram.sourceforge.net/"&gt;SQL2Diagram&lt;/a&gt;: A sourceforge project that I am involved in; we use that program at work to keep track of our database structure, consisting of 250+ tables in several modules.&lt;br /&gt;&lt;br /&gt;It basically parses the SQL Create Table statements and generates both HTML documentation and diagrams in XML format that can be displayed with the program &lt;a href="http://www.gnome.org/projects/dia/"&gt;Dia&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-8164069454404369530?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/8164069454404369530/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=8164069454404369530' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/8164069454404369530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/8164069454404369530'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2007/11/sql2diagram.html' title='SQL2Diagram'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-1884010639068898078</id><published>2007-11-17T22:39:00.000Z</published><updated>2007-11-17T23:01:39.794Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Open Source on Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='PostgreSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>Installing Java Stored Procedures on PostgreSQL 8.0 (Win)</title><content type='html'>February 2005&lt;br /&gt;&lt;br /&gt;look at the page &lt;a href="http://wiki.tada.se/display/pljava/Home"&gt;PL Java Website&lt;/a&gt;.&lt;br /&gt;change the file C:\Program Files\PostgreSQL\8.0\data\postgresql.conf: &lt;div&gt;&lt;div style="overflow: auto;"&gt;&lt;pre&gt;dynamic_library_path = '$libdir;C:/Program Files/PostgreSQL/8.0/pljava'&lt;br /&gt;custom_variable_classes = 'pljava'&lt;br /&gt;pljava.classpath = 'C:/Program Files/PostgreSQL/8.0/pljava/pljava.jar'&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;  Set the classpath: &lt;div style="overflow: auto;"&gt;&lt;pre&gt;set CLASSPATH=%CLASSPATH%;deploy.jar;..\jdbc\postgresql-8.0.309.jdbc2.jar;pljava.jar&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt; change into directory "Program Files\PostgreSQL\8.0\pljava" and execute &lt;div style="overflow: auto;"&gt;&lt;pre&gt;java org.postgresql.pljava.deploy.Deployer -install -database mydatabase -user somesuperuser -password mypasswd&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt; I got the error:&lt;br /&gt;&lt;div style="overflow: auto;"&gt;&lt;pre&gt;java.sql.SQLException: ERROR: could not load library "C:/Programme/PostgreSQL/8.0/lib/libpljava.dll": dynamic load error&lt;/pre&gt;&lt;/div&gt; This page helped me a lot: &lt;a href="http://gagravarr.livejournal.com/83889.html"&gt;Debugging PostgreSQL&lt;/a&gt;. &lt;pre&gt;runas /user:postgres cmd.exe&lt;br /&gt;postmaster -d 5 -D ../data/&lt;br /&gt;&lt;/pre&gt; I started postmaster in one command line box, and then psql in another DOS box. That told me that jvm.dll could not be found. Finally I realised, that the path needs to be set before the postmaster is started.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-1884010639068898078?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/1884010639068898078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=1884010639068898078' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/1884010639068898078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/1884010639068898078'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2007/11/installing-java-stored-procedures-on.html' title='Installing Java Stored Procedures on PostgreSQL 8.0 (Win)'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-4243393208618613070</id><published>2007-11-17T22:29:00.000Z</published><updated>2007-11-17T22:35:26.024Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='rpm'/><category scheme='http://www.blogger.com/atom/ns#' term='packaging'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Use patched files in RPMs</title><content type='html'>see &lt;a href="http://www-128.ibm.com/developerworks/library/l-rpm2/"&gt;&lt;span class="atitle"&gt;Packaging software with RPM&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;diff -uNr the_package/the_file \&lt;br /&gt;  the_package/the_file.new &gt; the_file.patch&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;copy the patch file to /usr/src/redhat/SOURCES&lt;br /&gt;&lt;br /&gt;The spec file has those lines:&lt;br /&gt;&lt;br /&gt;After Sources:&lt;code&gt;&lt;br /&gt;Patch0: the_file.patch&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;After %setup, before %build&lt;br /&gt;&lt;pre&gt;&lt;code&gt;%patch -p1&lt;/code&gt;&lt;/pre&gt;  To get your new version from the original file:&lt;br /&gt;&lt;code&gt;patch slapd.conf.template \&lt;br /&gt;   ../../slapd.conf.template.patch \&lt;br /&gt;   -o slapd.conf.template.new&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-4243393208618613070?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/4243393208618613070/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=4243393208618613070' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/4243393208618613070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/4243393208618613070'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2007/11/use-patched-files-in-rpms.html' title='Use patched files in RPMs'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-5333543798187966636</id><published>2007-11-17T22:25:00.000Z</published><updated>2007-11-17T22:38:07.937Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='rpm'/><category scheme='http://www.blogger.com/atom/ns#' term='packaging'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Kolab'/><title type='text'>Package a Perl module</title><content type='html'>First check if somebody did already the job, e.g. on  &lt;a href="http://www.artfiles.org/fedora/2/i386/os/Fedora/RPMS/"&gt;artfiles.org RPMS&lt;/a&gt; (&lt;a href="http://www.artfiles.org/fedora/2/SRPMS/"&gt;SRPMS&lt;/a&gt;) or just for RPMS:  &lt;a href="http://rpmpan.sourceforge.net/"&gt;RPMPan&lt;/a&gt; or this search site: &lt;a href="http://linux.maruhn.com/cat/Tool/CPAN.html"&gt;Linux Software Directory&lt;/a&gt; .&lt;br /&gt;&lt;br /&gt;You need to install perl-Archive-Tar-1.08-2.noarch.rpm and perl-RPM-Specfile-1.17-1.noarch.rpm.&lt;br /&gt;A description of the module perl-RPM-Specfile can be found on &lt;a href="http://cpan.uwinnipeg.ca/htdocs/RPM-Specfile/RPM/Specfile.html"&gt;cpan&lt;/a&gt;.&lt;br /&gt;Download this perl script, called &lt;a href="http://www.waider.ie/hacks/workshop/perl/cpan-to-rpm.pl"&gt;cpan-to-rpm.pl&lt;/a&gt;. It is described as followed: "Grab a module from CPAN and sock it into an RPM using cpanflute2"&lt;br /&gt;Call it this way:&lt;br /&gt;&lt;code&gt; perl cpan-to-rpm.pl \&lt;br /&gt;  authors/id/M/MU/MUIR/modules/Net-Netmask-1.9011.tar.gz&lt;br /&gt;perl cpan-to-rpm.pl \&lt;br /&gt;  authors/id/D/DJ/DJKERNEN/Mail-IMAPClient-2.2.9.tar.gz&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;That will create&lt;br /&gt;&lt;code&gt;/usr/src/redhat/SRPMS/perl-Net-Netmask-1.9011-1.src.rpm&lt;br /&gt;&lt;/code&gt;If you install it with&lt;br /&gt;&lt;code&gt;rpm -i /usr/src/redhat/SRPMS/perl-Net-Netmask-1.9011-1.src.rpm&lt;br /&gt;&lt;/code&gt;you can build the rpm from it with&lt;br /&gt;&lt;code&gt;rpmbuild -ba /usr/src/redhat/SPECS/perl-Net-Netmask.spec&lt;/code&gt;&lt;br /&gt;to see what an rpm provides: &lt;code&gt;rpm -qlp --provides perl-LDAP-0.31-4.noarch.rpm&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-5333543798187966636?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/5333543798187966636/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=5333543798187966636' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/5333543798187966636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/5333543798187966636'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2007/11/package-perl-module.html' title='Package a Perl module'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-8507175240539176996</id><published>2007-11-17T22:18:00.001Z</published><updated>2007-11-17T22:55:55.776Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='rpm'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenPKG'/><category scheme='http://www.blogger.com/atom/ns#' term='packaging'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Kolab'/><title type='text'>The file list conversion from OpenPKG</title><content type='html'>rpmtool:&lt;br /&gt;One idea could be, to download the &lt;a href="http://cvs.openpkg.org/getfile/openpkg-src/openpkg/rpmtool?v=1.43"&gt;file from the OpenPKG CVS&lt;/a&gt; and save it to /usr/bin/rpmtool; you need to change the first line of that file to #!/bin/bash&lt;br /&gt;Also add at the top of the spec file:&lt;br /&gt;&lt;pre&gt;%define l_rpmtool /usr/bin/rpmtool&lt;/pre&gt; The other idea is, to install the OpenPKG source rpm of the package concerned:&lt;br /&gt;&lt;pre&gt;/kolab/bin/openpkg rpm -i kolab-webadmin-0.4.0-20050318.src.rpm&lt;/pre&gt; In the /kolab/RPM/SRC/kolab-webadmin/kolab-webadmin.spec&lt;br /&gt;insert after the l_rpmtool line:&lt;br /&gt;&lt;code&gt; cp files /usr/src/redhat/SOURCES/kolab-webadmin.files&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Rebuild the package, which will create the kolab-webadmin.files:&lt;br /&gt;&lt;code&gt;/kolab/libexec/openpkg/rpmbuild -ba /kolab/RPM/SRC/kolab-webadmin/kolab-webadmin.spec&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Perhaps need to change the paths, e.g. for perl:&lt;br /&gt;in vi:&lt;br /&gt;&lt;div style="overflow: auto;"&gt;&lt;code&gt;:%s/\/kolab\/lib\/perl\/vendor_perl\/5.8.5/\/usr\/lib\/perl5\/vendor_perl\/5.8.3/g&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;You need to put it into an archive:&lt;br /&gt;&lt;code&gt;cd /usr/src/redhat/SOURCES/&lt;br /&gt;tar cvf kolab-webadmin.files.tar kolab-webadmin.files&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;In the fedora spec file, &lt;code&gt;/usr/src/redhat/SPECS/kolab-webadmin.spec&lt;/code&gt;, you would add in the sources:&lt;br /&gt;&lt;code&gt;Source1:      kolab-webadmin.files.tar&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;In the %prep section, insert:&lt;br /&gt;&lt;code&gt;%setup1 -D -T -b 1 -n kolab-webadmin-%{version}&lt;/code&gt;&lt;br /&gt;As the parameter for -n, give the name of a directory that is created for the main tar file anyway.&lt;br /&gt;&lt;br /&gt;In the %install section, remove the rpmtool lines; instead, you change the %files line:&lt;br /&gt;&lt;code&gt;%files -f ../kolab-webadmin.files&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-8507175240539176996?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/8507175240539176996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=8507175240539176996' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/8507175240539176996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/8507175240539176996'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2007/11/file-list-conversion-from-openpkg.html' title='The file list conversion from OpenPKG'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-501975277432853307</id><published>2007-11-17T22:16:00.001Z</published><updated>2007-11-17T22:38:07.947Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='rpm'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenPKG'/><category scheme='http://www.blogger.com/atom/ns#' term='packaging'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Kolab'/><title type='text'>Converting OpenPKG spec file to Fedora</title><content type='html'>have a look at &lt;a href="http://support.celestial.com/doc/openpkg/x72.html" class="external" title="http://support.celestial.com/doc/openpkg/x72.html" rel="nofollow"&gt;Building Packages with OpenPKG&lt;/a&gt;&lt;br /&gt;See /usr/local/kolabopenpkg/etc/openpkg/rpmmacros to know what the macros (e.g. %l_musr) mean.&lt;br /&gt;&lt;br /&gt;To get the spec file, install the OpenPKG source package:&lt;br /&gt;&lt;pre&gt;/kolab/bin/openpkg rpm -i kolab-webadmin-0.4.0-20050318.src.rpm&lt;/pre&gt; Copy the &lt;code&gt;/kolab/RPM/SRC/kolab-webadmin/kolab-webadmin.spec&lt;/code&gt; to &lt;code&gt;/usr/src/redhat/SPECS&lt;/code&gt;;&lt;br /&gt;Copy the other files (e.g. .tar.gz archives) to &lt;code&gt;/usr/src/redhat/SOURCES&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;One special thing is that the required packages in OpenPKG don't only include the package name and required version number, but often also options that were included when configuring and building the package.&lt;br /&gt;For example, cyrus-sasl::with_ldap would require that the cyrus-sasl::with_ldap is advertised in the Provides: tag in the spec file.&lt;br /&gt;A common approach is not to advertise all compiling options, but to know the packages and test them thoroughly.&lt;br /&gt;&lt;br /&gt;Remove the line:&lt;br /&gt;&lt;code&gt;Class: JUNK&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;To understand some of the macros, in the form %{something}, have a look at /usr/lib/rpm/macros and /usr/local/kolab/etc/openpkg/rpmmacros.&lt;br /&gt;&lt;br /&gt;Insert these lines near the top:&lt;br /&gt;&lt;pre&gt;%define l_prefix /kolab&lt;br /&gt;%define l_make %{__make}&lt;br /&gt;%define l_mflags -m&lt;br /&gt;# m actually is ignored, compatibility&lt;br /&gt;&lt;/pre&gt; Replace all occurances of "apache" with "httpd" in your spec file.&lt;br /&gt;&lt;br /&gt;It seems, the spaces before the %setup -q are not correct. Remove them!&lt;br /&gt;&lt;br /&gt;Lines like  &lt;code&gt;%{l_shtool} install&lt;/code&gt;: just remove all the  %{l_shtool}; install should work fine;&lt;br /&gt;remove also the &lt;code&gt;%{l_value -s -a}&lt;/code&gt; (though I am not sure what those characters stand for)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-501975277432853307?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/501975277432853307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=501975277432853307' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/501975277432853307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/501975277432853307'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2007/11/converting-openpkg-spec-file-to-fedora.html' title='Converting OpenPKG spec file to Fedora'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-3763967073565563801</id><published>2007-11-17T21:54:00.000Z</published><updated>2007-11-17T22:15:36.923Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='rpm'/><category scheme='http://www.blogger.com/atom/ns#' term='packaging'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Quick RPM lookaround</title><content type='html'>April 2005:&lt;br /&gt;That is how I learnt about RPM packaging of software for Fedora Linux.&lt;br /&gt;My goal was to create &lt;a href="http://fedora.redhat.com/"&gt;Fedora&lt;/a&gt; packages for Kolab, which is packaged with &lt;a href="http://www.openpkg.org/"&gt;OpenPKG&lt;/a&gt;.&lt;br /&gt;&lt;h4&gt;Links to RPM introductions&lt;/h4&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://www.rpm.org/max-rpm/ch-rpm-basics.html" class="external" title="http://www.rpm.org/max-rpm/ch-rpm-basics.html" rel="nofollow"&gt;The Basics of Developing With RPM&lt;/a&gt;&lt;span class="urlexpansion"&gt;&lt;/span&gt; &lt;/li&gt;&lt;li&gt;&lt;span class="external"&gt;&lt;a href="http://www.rpm.org/max-rpm/index.html"&gt;Maximum RPM Manual&lt;/a&gt; (&lt;/span&gt;&lt;a href="http://www.rpm.org/max-rpm/s1-rpm-build-creating-spec-file.html" class="external" title="http://www.rpm.org/max-rpm/s1-rpm-build-creating-spec-file.html" rel="nofollow"&gt;with example&lt;/a&gt;&lt;span class="urlexpansion"&gt;, &lt;a href="http://www.rpm.org/max-rpm/s1-rpm-inside-macros.html"&gt;the %setup and %patch macros&lt;/a&gt;)&lt;/span&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://support.celestial.com/doc/openpkg/x72.html" class="external" title="http://support.celestial.com/doc/openpkg/x72.html" rel="nofollow"&gt;Building Packages with OpenPKG&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www-128.ibm.com/developerworks/library/l-rpm2/"&gt;&lt;span class="atitle"&gt;Packaging software with RPM&lt;/span&gt;&lt;/a&gt; (explains beside other things how to use patches)&lt;/li&gt;&lt;/ul&gt; &lt;h4&gt;&lt;a name="Basic_Idea_of_SRPMS"&gt;&lt;/a&gt;Basic Idea of SRPMS&lt;/h4&gt; rpm -i some-package-0.0.1.src.rpm&lt;br /&gt;will put some tar file(s) and patches in /usr/src/redhat/SOURCES; and will put the some-package.spec file in /usr/src/redhat/SPECS&lt;br /&gt;to build the src.rpm and the rpm, run&lt;br /&gt;rpmbuild -ba /usr/src/redhat/SPECS/some-package.spec&lt;br /&gt;That will create the files /usr/src/redhat/SRPMS/some-package.src.rpm and /usr/src/redhat/RPMS/i386/some-package.rpm.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-3763967073565563801?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/3763967073565563801/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=3763967073565563801' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/3763967073565563801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/3763967073565563801'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2007/11/quick-rpm-lookaround.html' title='Quick RPM lookaround'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-6182669490917888057</id><published>2007-11-17T21:10:00.001Z</published><updated>2007-11-17T21:12:04.682Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><category scheme='http://www.blogger.com/atom/ns#' term='Bash'/><title type='text'>Find IP address of a Pocket Print Server (e.g. DP-301P+)</title><content type='html'>on the linux console, type:    &lt;pre&gt;i=1; \&lt;br /&gt;while [ $i != 254 ]; do \&lt;br /&gt; ping -c 1 192.168.1.$i; \&lt;br /&gt; i=`expr $i + 1`; \&lt;br /&gt;done&lt;br /&gt;arp -a&lt;/pre&gt;    That should give a list of all computers on that subnet 192.168.1.0. The MAC address should tell you the IP address of the print server.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-6182669490917888057?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/6182669490917888057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=6182669490917888057' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/6182669490917888057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/6182669490917888057'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2007/11/find-ip-address-of-pocket-print-server.html' title='Find IP address of a Pocket Print Server (e.g. DP-301P+)'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-8435130676473643380</id><published>2007-11-17T21:09:00.000Z</published><updated>2007-11-17T21:10:13.039Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='vpn'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><title type='text'>VPN between 2 networks with same IP address scheme (Windows)</title><content type='html'>Problem is, the routing does not work. Solution is: On DOS command prompt, type &lt;pre&gt;route add 192.168.1.84 MASK 255.255.255.255 192.168.1.160&lt;/pre&gt; ...1.84 is the number of the computer you want to  contact in the other network, ...1.160 is the client IP address of the VPN network connection.&lt;br /&gt;To prevent your traffic into the Internet to go through the VPN, use: &lt;pre&gt;route change 0.0.0.0 mask 0.0.0.0 192.168.1.250 metric 20&lt;br /&gt;&lt;/pre&gt; (.250 is the local network gateway into the internet)&lt;br /&gt;If it gives the error: "The route addition failed: The parameter is incorrect." or "Hinzufügen der Route fehlgeschlagen: Falscher Parameter.", try using another local IP address. I found, the local IP address should not be too distant from the VPN client IP address.&lt;br /&gt;&lt;br /&gt;Another annoying error I had, was that after some time of a working connection, I could not reconnect the VPN:&lt;br /&gt;Error 619 came up, german: "Fehler 619 Ein unbekannter Fehler ist aufgetreten" nach "Benutzername und Passwort werden verifiziert".&lt;br /&gt;My solution was, to set my LAN connection on a new IP address. Other people solved it by &lt;a href="http://wormhole.m59.big.ac.at/doc/pptp/pptp_xp.htm"&gt;reinstalling their NIC card&lt;/a&gt;.&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-8435130676473643380?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/8435130676473643380/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=8435130676473643380' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/8435130676473643380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/8435130676473643380'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2007/11/vpn-between-2-networks-with-same-ip.html' title='VPN between 2 networks with same IP address scheme (Windows)'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-7080838885887923425</id><published>2007-11-17T21:03:00.001Z</published><updated>2007-11-17T21:03:57.052Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Open Source on Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>GIMP, Gaim, GTK</title><content type='html'>Install gimp 2.0 and gaim 0.79 on Windows, problems with GTK 2.4:&lt;br /&gt;according to &lt;a href="http://groups.yahoo.com/group/gimpwin-users/message/13197"&gt; the gimpwin-users list&lt;/a&gt;, do this:&lt;br /&gt;Install Gaim's GTK+- 2.2.4, then Gaim, then uninstall Gaim's GTK+-, and install GTK+- 2.4.1 and Gimp.  Gaim should still work with GTK+- 2.4.1.&lt;br /&gt;You also need to copy the file Program Files\Common Files\GTK\2.0\bin\zlib1.dll to zlib-1.dll.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-7080838885887923425?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/7080838885887923425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=7080838885887923425' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/7080838885887923425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/7080838885887923425'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2007/11/gimp-gaim-gtk.html' title='GIMP, Gaim, GTK'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-7263913657010773118</id><published>2007-11-17T21:00:00.000Z</published><updated>2007-11-17T21:04:24.691Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Open Source on Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='download websites'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='wget'/><title type='text'>Download websites with dynamically generated content (question mark in URL)</title><content type='html'>You should use the &lt;a href="http://xoomer.virgilio.it/hherold/"&gt;Windows version of wget&lt;/a&gt;, because that converts the ? nicely to the @ character.     &lt;pre&gt;wget http://www.somewebpage.org --recursive \&lt;br /&gt;  --level=5 --relative --tries=1 --convert-links&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-7263913657010773118?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/7263913657010773118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=7263913657010773118' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/7263913657010773118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/7263913657010773118'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2007/11/download-websites-with-dynamically.html' title='Download websites with dynamically generated content (question mark in URL)'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-1955073774676692387</id><published>2007-11-17T20:57:00.000Z</published><updated>2007-11-17T20:58:36.651Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='CVS'/><category scheme='http://www.blogger.com/atom/ns#' term='WinMerge'/><category scheme='http://www.blogger.com/atom/ns#' term='Developer tools'/><title type='text'>Using WinMerge to compare CVS branches</title><content type='html'>I often have trouble with CVS merge, and so end up comparing the files manually. The problem is that the CVS Revision and Log tags should not show up as a difference. I wanted something similar to "Ignore whitespaces".&lt;br /&gt;&lt;p&gt; For the revision tag, the regular expression filter in WinMerge works fine: WinMerge, Tools, Filters, LineFilters: $Revision\: .*$&lt;br /&gt;For the CVS commit history log, I have implemented a prediffer Plugin similar to Plugins\src_VCPP\IgnoreCommentsC from the source code of WinMerge.&lt;/p&gt;&lt;p&gt;The source code for the prediffer plugin is here: &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pokorra.de/coding/WinMergeScript.cpp.txt"&gt;WinMergeScript.cpp&lt;/a&gt; &lt;/p&gt;&lt;p&gt;This is specifically designed for Delphi code. It should be easy to adapt to different languages. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-1955073774676692387?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/1955073774676692387/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=1955073774676692387' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/1955073774676692387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/1955073774676692387'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2007/11/using-winmerge-to-compare-cvs-branches.html' title='Using WinMerge to compare CVS branches'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-3070819349925129724</id><published>2007-11-17T20:53:00.000Z</published><updated>2007-11-17T20:56:32.942Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='test machines'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='sysadmin'/><title type='text'>Backup/Restore a harddisk image onto a samba network drive</title><content type='html'>&lt;p&gt;    Use &lt;a href="http://sysresccd.org/"&gt;SystemRescueCd&lt;/a&gt;:&lt;/p&gt;&lt;p&gt;for resizing partitions, creating/deleting partitions:&lt;/p&gt;&lt;pre&gt;run_qtparted&lt;/pre&gt;&lt;pre&gt;mount -t smbfs \&lt;br /&gt;-o username=myusername,password=mypassword \&lt;br /&gt;  //&amp;lt;ip-address of linux server&amp;gt;/homes \&lt;br /&gt;  /mnt/temp1&lt;br /&gt;&lt;/ip-address&gt;&lt;/pre&gt;&lt;p&gt;for storing/restoring of images of partitions:&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;partimage&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-3070819349925129724?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/3070819349925129724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=3070819349925129724' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/3070819349925129724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/3070819349925129724'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2007/11/backuprestore-harddisk-image-onto-samba.html' title='Backup/Restore a harddisk image onto a samba network drive'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-6493789959222278795</id><published>2007-11-17T20:23:00.000Z</published><updated>2007-11-17T23:07:23.629Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='symfony'/><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='reporting'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>Reports with Symfony</title><content type='html'>I wondered what the easiest way was to create reports.&lt;br /&gt;I looked into &lt;a href="http://freshmeat.net/projects/pmreport/?branch_id=55708&amp;amp;release_id=254622" class="external" title="http://freshmeat.net/projects/pmreport/?branch id=55708&amp;amp;release id=254622" rel="nofollow"&gt;PM Report 4.1&lt;/a&gt;&lt;span class="urlexpansion"&gt; &lt;/span&gt;by Zeke Walker, but did not think it would be what I needed.&lt;br /&gt;&lt;br /&gt;So this is what I did:&lt;br /&gt;edit the Peer class of your table, and add a function that will return the data that you will need in the report:&lt;br /&gt;lib/model/MyTablePeer.php&lt;br /&gt;&lt;pre&gt;static function getAllRowsWithBlabla()&lt;br /&gt;{&lt;br /&gt;  $con = Propel::getConnection(self::DATABASE_NAME);&lt;br /&gt;  $sql = 'SELECT * FROM '.self::TABLE_NAME.' WHERE a=1 ORDER BY nachname, vorname';&lt;br /&gt;  $stmt = $con-&gt;prepareStatement($sql);&lt;br /&gt;  $rs = $stmt-&gt;executeQuery(ResultSet::FETCHMODE_NUM);&lt;br /&gt;  return BasePatePeer::populateObjects($rs);&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Then in  apps/myapp/modules/mytable/actions/actions.class.php add an action for the report:&lt;br /&gt;&lt;pre&gt;public function executeReportVereinsmitglieder()&lt;br /&gt;{&lt;br /&gt; $this-&gt;items = MyTablePeer::getAllRowsWithBlabla();&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Finally, create a success page:&lt;br /&gt;apps/myapp/modules/mytable/templates/reportBlablaSuccess.php&lt;br /&gt;&lt;pre&gt;&amp;lt;?php use_helper('Text', 'Date') ?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;div id="datecreated"&amp;gt;Date created: &lt;br /&gt;    &amp;lt;?php echo format_date(time(), 'd', 'de');?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;div id="doprint"&amp;gt;&amp;lt;a href="javascript:window.print()"&amp;gt;&lt;br /&gt;   Print this report&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;h2&amp;gt;My blabla report&amp;lt;/h2&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;?php $first = true; ?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;?php foreach($items as $item): ?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;  if ($item-&amp;gt;getSomeCondition())&lt;br /&gt;  {&lt;br /&gt;   if ($first)&lt;br /&gt;   {&lt;br /&gt;     $first = false;&lt;br /&gt;   }&lt;br /&gt;   else&lt;br /&gt;   {&lt;br /&gt;     echo ', ';&lt;br /&gt;   }&lt;br /&gt;   echo $item-&amp;gt;getMyValue();&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;?php endforeach ?&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;To disable some items for printing, I changed the css styles&lt;br /&gt;in file apps/myapp/templates/layout.php:&lt;br /&gt;&lt;pre&gt;&amp;lt;style type="text/css"&amp;gt;&lt;br /&gt;@media print {&lt;br /&gt;  /* ... format definitions for printing ... */&lt;br /&gt;    #navigation { display:none; }&lt;br /&gt;    #title { display:none }&lt;br /&gt;    #doprint { display:none }&lt;br /&gt;    }&lt;br /&gt;&amp;lt;/style&amp;gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-6493789959222278795?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/6493789959222278795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=6493789959222278795' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/6493789959222278795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/6493789959222278795'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2007/11/reports-with-symfony.html' title='Reports with Symfony'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-232007381201838783</id><published>2007-11-17T20:19:00.000Z</published><updated>2007-11-17T20:39:29.638Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='symfony'/><category scheme='http://www.blogger.com/atom/ns#' term='i18n'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Symfony I18N</title><content type='html'>&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;see &lt;a href="http://www.symfony-project.com/book/1_0/13-I18n-and-L10n"&gt;http://www.symfony-project.com/book/1_0/13-I18n-and-L10n&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I have changed the &lt;code&gt;default_culture&lt;/code&gt; in &lt;code&gt;myapp/config/i18n.yml&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Based on &lt;a href="http://coding.d-down.de/blog/archives/47-Die-deutsche-UEbersetzung-der-Admin-Generator-Begriffe-von-Symfony.html"&gt;this blog entry with german translations&lt;/a&gt; I have created my own version:&lt;br /&gt;save it as &lt;a href="http://www.pokorra.de/coding/symfony_messages.de.xml.txt"&gt;apps/mybackend/messages.de.xml&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-232007381201838783?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/232007381201838783/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=232007381201838783' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/232007381201838783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/232007381201838783'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2007/11/symfony-i18n.html' title='Symfony I18N'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-4911500895118370024</id><published>2007-11-17T19:46:00.000Z</published><updated>2007-11-17T20:19:20.773Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='symfony'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Symfony Project</title><content type='html'>I enjoy using the &lt;a href="http://www.symfony-project.com/"&gt;symfony Web PHP Framework&lt;/a&gt; for a database/web application.&lt;br /&gt;&lt;br /&gt;To make it run on a Debian Virtual Private Server:&lt;br /&gt;add to file /etc/apt/sources.list this line:  &lt;pre&gt;deb &lt;a href="http://www.symfony-project.com/get" class="external" rel="nofollow"&gt;http://www.symfony-project.com/get&lt;/a&gt; debian/&lt;/pre&gt;Then install the required packages:&lt;br /&gt;&lt;pre&gt;apt-get install php-pear php5-symfony php5-mysql php5-xsl&lt;/pre&gt;See the &lt;a href="http://www.symfony-project.com/tutorial/1_0/my-first-project"&gt;"My First Project"-Tutorial&lt;/a&gt; for initialising your project.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-4911500895118370024?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/4911500895118370024/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=4911500895118370024' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/4911500895118370024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/4911500895118370024'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2007/11/symfony-project.html' title='Symfony Project'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-5884847107184165008</id><published>2007-11-17T17:00:00.000Z</published><updated>2007-11-17T21:02:24.123Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='MediaWiki'/><category scheme='http://www.blogger.com/atom/ns#' term='download websites'/><category scheme='http://www.blogger.com/atom/ns#' term='Bash'/><title type='text'>HTML2Wiki, Wiki2HTML</title><content type='html'>&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.pokorra.de/coding/wiki2html.txt"&gt;wiki2html.sh&lt;/a&gt;: This is a linux shell script, using sed, to convert a single page from a wiki into a static html file. see file for more comments.&lt;/li&gt;&lt;li&gt;See &lt;a href="http://diberri.dyndns.org/html2wiki.html"&gt;html2wiki&lt;/a&gt; for an online version of the Perl module &lt;a href="http://cpan.uwinnipeg.ca/htdocs/HTML-WikiConverter-MediaWiki/HTML/WikiConverter/MediaWiki.html"&gt;HTML::WikiConverter::MediaWiki&lt;/a&gt;. &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-5884847107184165008?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/5884847107184165008/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=5884847107184165008' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/5884847107184165008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/5884847107184165008'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2007/11/html2wiki-wiki2html.html' title='HTML2Wiki, Wiki2HTML'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-504705560946953582.post-4225577437438261545</id><published>2007-11-17T16:35:00.000Z</published><updated>2007-11-17T16:59:25.305Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='MediaWiki'/><category scheme='http://www.blogger.com/atom/ns#' term='phpNuke'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Integration of phpNuke and MediaWiki (Authentication)</title><content type='html'>&lt;p&gt;The goal is, that users are only registered on phpNuke, and can use the same username on MediaWiki, without logging in twice.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pokorra.de/coding/mediawiki_phpnuke/readme.txt"&gt;Readme.txt&lt;/a&gt;,  &lt;a href="http://www.pokorra.de/coding/mediawiki_phpnuke.zip"&gt;Download&lt;/a&gt;,  &lt;a href="http://www.pokorra.de/coding/mediawiki_phpnuke/Auth_phpnuke.php.txt"&gt;Auth_phpnuke.php&lt;/a&gt;,  &lt;a href="http://www.pokorra.de/coding/mediawiki_phpnuke/authphpnuke.php.txt"&gt;authphpnuke.php&lt;/a&gt;,  &lt;a href="http://www.pokorra.de/coding/mediawiki_phpnuke/index.php.txt"&gt;modules/MediaWiki/index.php&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/504705560946953582-4225577437438261545?l=tpokorra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tpokorra.blogspot.com/feeds/4225577437438261545/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=504705560946953582&amp;postID=4225577437438261545' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/4225577437438261545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/504705560946953582/posts/default/4225577437438261545'/><link rel='alternate' type='text/html' href='http://tpokorra.blogspot.com/2007/11/integration-of-phpnuke-and-mediawiki.html' title='Integration of phpNuke and MediaWiki (Authentication)'/><author><name>Timotheus Pokorra</name><uri>http://www.blogger.com/profile/05259914906217943114</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry></feed>
