Congratulations!

[Valid RSS] This is a valid RSS feed.

Recommendations

This feed is valid, but interoperability with the widest range of feed readers could be improved by implementing the following recommendations.

Source: http://underscore.at/underscore/rss.xml

  1. <?xml version="1.0" encoding="UTF-8"?><rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><atom:link href="http://underscore.at/underscore/rss.xml" rel="self" type="application/rss+xml"/><title>underscore.at</title><description>Kommentare zu technischen Themen</description><link>http://underscore.at/underscore/newsoverview.xml</link><language>de-DE</language><pubDate>Tue, 06 Nov 2018 07:10:07 +0100</pubDate><lastBuildDate>Tue, 06 Nov 2018 07:10:07 +0100</lastBuildDate><generator>XMLServ.com</generator><item><title>Run an ad-hoc container</title><link>http://underscore.at/id_138</link><description>From the book "Istio in Action":&#xD;
  2. &#xD;
  3. kubectl run -i --rm --restart=Never dummy \&#xD;
  4. --image=dockerqa/curl:ubuntu-trusty --command \&#xD;
  5. -- sh -c 'curl -s catalog:8080/api/catalog'</description><pubDate>Tue, 06 Nov 2018 07:10:07 +0100</pubDate><guid>http://underscore.at/id_138</guid></item><item><title>Kubernetes cluster status</title><link>http://underscore.at/id_137</link><description>A simple status of the cluster:&#xD;
  6. &#xD;
  7. $ kubectl top nodes&#xD;
  8. &#xD;
  9. With scheduled pods:&#xD;
  10. &#xD;
  11. $ kubectl describe nodes</description><pubDate>Wed, 11 Jul 2018 07:09:21 +0200</pubDate><guid>http://underscore.at/id_137</guid></item><item><title>Check SSL server certificate contents</title><link>http://underscore.at/id_136</link><description>echo | openssl s_client -showcerts -servername &lt;server name&gt; -connect &lt;host name&gt;:443 2&gt;/dev/null | openssl x509 -inform pem -noout -text&#xD;
  12. &#xD;
  13. server name is used to add SNI compatible headers to the request. host name is the name of the machine and can be the same as server name.&#xD;
  14. </description><pubDate>Fri, 15 Jun 2018 01:54:25 +0200</pubDate><guid>http://underscore.at/id_136</guid></item><item><title>Manage multiple Kubernetes cluster configurations for kubectl</title><link>http://underscore.at/id_135</link><description>List available configurations/contexts:&#xD;
  15. kubectl config get-contexts&#xD;
  16. &#xD;
  17. Switch to another context:&#xD;
  18. kubectl config use-context docker-for-desktop&#xD;
  19. </description><pubDate>Thu, 14 Jun 2018 12:47:24 +0200</pubDate><guid>http://underscore.at/id_135</guid></item><item><title>Git changes in branch</title><link>http://underscore.at/id_134</link><description>See the changes in a branch since branching:&#xD;
  20. git checkout &lt;branch name&gt;&#xD;
  21. base=`git merge-base master HEAD`&#xD;
  22. git diff --name-only $base HEAD</description><pubDate>Thu, 14 Jun 2018 09:52:09 +0200</pubDate><guid>http://underscore.at/id_134</guid></item><item><title>Git branch cleanup</title><link>http://underscore.at/id_133</link><description>List branches:&#xD;
  23. git branches&#xD;
  24. &#xD;
  25. Delete branch from remote 'origin':&#xD;
  26. git push -d origin &lt;branch name&gt;&#xD;
  27. &#xD;
  28. Delete local branch:&#xD;
  29. git branch -d &lt;branch name&gt;&#xD;
  30. &#xD;
  31. Rename current local branch:&#xD;
  32. git branch -n &lt;new name&gt;&#xD;
  33. &#xD;
  34. Rename some local branch:&#xD;
  35. git branch -m &lt;old name&gt; &lt;new name&gt;&#xD;
  36. &#xD;
  37. Rename remote branch after renaming local branch:&#xD;
  38. git push origin :&lt;old name&gt;&#xD;
  39. git push --set-upstream origin &lt;new name&gt;</description><pubDate>Wed, 04 Jul 2018 01:44:43 +0200</pubDate><guid>http://underscore.at/id_133</guid></item><item><title>Postfix TLS</title><link>http://underscore.at/id_131</link><description>/etc/postfix/main.cf:&#xD;
  40. # TLS parameters&#xD;
  41. smtp_tls_security_level = encrypt&#xD;
  42. smtpd_tls_security_level = encrypt&#xD;
  43. smtpd_tls_auth_only = no&#xD;
  44. smtp_tls_note_starttls_offer = yes&#xD;
  45. smtpd_tls_key_file=/etc/ssl/private/smtpd.key&#xD;
  46. smtpd_tls_cert_file=/etc/ssl/certs/smtpd.crt&#xD;
  47. smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem&#xD;
  48. smtpd_tls_loglevel = 1&#xD;
  49. smtpd_tls_received_header = yes&#xD;
  50. smtpd_tls_session_cache_timeout = 3600s&#xD;
  51. tls_random_source = dev:/dev/urandom&#xD;
  52. smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache&#xD;
  53. smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&#xD;
  54. smtpd_tls_mandatory_ciphers = high&#xD;
  55. smtpd_tls_mandatory_exclude_ciphers = aNULL, MD5&#xD;
  56. smtpd_tls_mandatory_protocols = TLSv1&#xD;
  57. # Also available with Postfix &gt;= 2.5:&#xD;
  58. #smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3&#xD;
  59. &#xD;
  60. &#xD;
  61. Test:&#xD;
  62. openssl s_client -starttls smtp -CApath /etc/ssl/certs/cacert.pem -connect localhost:25 -ssl3&#xD;
  63. openssl s_client -starttls smtp -CApath /etc/ssl/certs/cacert.pem -connect localhost:25 -ssl2&#xD;
  64. </description><pubDate>Tue, 09 Aug 2016 07:47:20 +0200</pubDate><guid>http://underscore.at/id_131</guid></item><item><title>Get the GIT commit ID</title><link>http://underscore.at/id_130</link><description>This command gives the commit id of the currently checked out revision:&#xD;
  65. &#xD;
  66. git rev-parse HEAD&#xD;
  67. </description><pubDate>Fri, 04 Dec 2015 12:15:37 +0100</pubDate><guid>http://underscore.at/id_130</guid></item><item><title>Doing XSL and FOP transformations on the commandline using Saxon and Apache FOP</title><link>http://underscore.at/id_128</link><description>Transfomation using Saxon:&#xD;
  68. # java -jar saxon9.jar -s:&lt;inputfilename&gt; -xsl:&lt;xsl filename&gt; -o:&lt;outputfilename&gt;&#xD;
  69. &#xD;
  70. Classpath must include all jars necessary for FOP:&#xD;
  71. # for name in fop-1.1/lib/*.jar; do export CLASSPATH=$name:$CLASSPATH; done;&#xD;
  72. &#xD;
  73. Use output from another transformation, i.e. an FO-File:&#xD;
  74. # java -classpath $CLASSPATH org.apache.fop.cli.Main -fo &lt;fo filename&gt; -pdf &lt;pdf outputfilename&gt;&#xD;
  75. &#xD;
  76. Use internal transformation mechanism, i.e. input is xml, xsl file transforms to fo:&#xD;
  77. # java -classpath $CLASSPATH org.apache.fop.cli.Main -xml &lt;xml input filename&gt; -xsl &lt;xsl filename&gt; -pdf &lt;pdf outputfilename&gt;&#xD;
  78. &#xD;
  79. A complete step from XML to PDF might look like this, using input.xml, transform2fo.xsl and output.pdf als filenames:&#xD;
  80. &#xD;
  81. Using Saxon:&#xD;
  82. # java -jar saxon9.jar -s:input.xml -xsl:transform2fo.xsl -o:intermediate.fo&#xD;
  83. # java -classpath $CLASSPATH org.apache.fop.cli.Main -fo intermediate.fo -pdf output.pdf&#xD;
  84. &#xD;
  85. Using only Apache FOP:&#xD;
  86. # java -classpath $CLASSPATH org.apache.fop.cli.Main -xml input.xml -xsl transform2fo.xsl -pdf output.pdf&#xD;
  87. </description><pubDate>Fri, 28 Nov 2014 11:01:18 +0100</pubDate><guid>http://underscore.at/id_128</guid></item><item><title>Force-Delete locked files</title><link>http://underscore.at/id_127</link><description>If trying to remove a file with 'rm' on the command line gives you the error 'operation not permitted' you might want to take a look at the containing folder whether its set to protected. If it is not you might want to install the Developer Tools and unlock it:&#xD;
  88. &#xD;
  89. /Developer/Tools/SetFile -a l &lt;filename or wildcard&gt;&#xD;
  90. </description><pubDate>Mon, 27 Oct 2014 10:45:46 +0100</pubDate><guid>http://underscore.at/id_127</guid></item><item><title>Cleanup Oracle FRA</title><link>http://underscore.at/id_126</link><description>Get rid of everything in the FRA: use RMAN&#xD;
  91. &#xD;
  92. rman target /&#xD;
  93. RMAN&gt; DELETE ARCHIVELOG ALL;&#xD;
  94. &#xD;
  95. Or delete just expired logs:&#xD;
  96. RMAN&gt;crosscheck archivelog all';&#xD;
  97. RMAN&gt;delete noprompt expired archivelog all;&#xD;
  98. &#xD;
  99. Use only if you know what you're doing...</description><pubDate>Tue, 05 Aug 2014 09:05:20 +0200</pubDate><guid>http://underscore.at/id_126</guid></item><item><title>Unix Timestamp</title><link>http://underscore.at/id_124</link><description>Need the Unix timestamp for an arbitrary date? Try this:&#xD;
  100. &#xD;
  101. date -j -f "%Y-%M-%d" "2014-07-02" +"%s"&#xD;
  102. &#xD;
  103. Adapt the -f format string as needed. In this case it parses yyyy-MM-dd.&#xD;
  104. +"%s" gives output in seconds since the epoch&#xD;
  105. &#xD;
  106. Convert a unix timestamp back to a date:&#xD;
  107. date -jf "%s" 1394146800</description><pubDate>Mon, 06 Oct 2014 10:08:39 +0200</pubDate><guid>http://underscore.at/id_124</guid></item><item><title>Oracle Object Source</title><link>http://underscore.at/id_123</link><description>Looking for the source of triggers and stored procedures?&#xD;
  108. &#xD;
  109. SELECT * FROM user_source;&#xD;
  110. SELECT * FROM dba_source;&#xD;
  111. SELECT * FROM all_source;</description><pubDate>Tue, 01 Jul 2014 10:52:20 +0200</pubDate><guid>http://underscore.at/id_123</guid></item><item><title>Setup a DBCP datasource for H2 Database connections</title><link>http://underscore.at/id_122</link><description>package whatever;&#xD;
  112. &#xD;
  113. import org.apache.commons.dbcp.BasicDataSource;&#xD;
  114. import javax.sql.DataSource;&#xD;
  115. import java.util.Properties;&#xD;
  116. &#xD;
  117. public class SetupDataSource {&#xD;
  118. &#xD;
  119.    public static final String DRIVER_CLASS_NAME = "org.h2.Driver";&#xD;
  120. &#xD;
  121.    public static DataSource setup(Properties dbProperties) {&#xD;
  122.    // load driver class -- just to be sure...&#xD;
  123.    try {&#xD;
  124.            Class.forName(DRIVER_CLASS_NAME);&#xD;
  125.        } catch (ClassNotFoundException e) {&#xD;
  126.            Logger.getLogger(AppConfigurator.class).warn(e);&#xD;
  127.        }&#xD;
  128. &#xD;
  129.        // see http://commons.apache.org/dbcp/configuration.html&#xD;
  130.        BasicDataSource dataSource = new BasicDataSource();&#xD;
  131.        dataSource.setUsername(dbProperties.getProperty("dbuser"));&#xD;
  132.        //dataSource.setPassword(password);&#xD;
  133.        dataSource.setDriverClassName(DRIVER_CLASS_NAME);&#xD;
  134.        dataSource.setUrl("jdbc:h2:file:" + dbProperties.getProperty("dbfile"));&#xD;
  135.        final int maxConnections = Integer.parseInt(dbProperties.getProperty("maxConnections"));&#xD;
  136.        dataSource.setMaxActive(maxConnections);&#xD;
  137.        dataSource.setMinIdle(1);&#xD;
  138.        if(maxConnections&gt;20)&#xD;
  139.            dataSource.setMaxIdle(20);&#xD;
  140.        dataSource.setMaxWait(20);&#xD;
  141. //        dataSource.setValidationQuery("SELECT 1 FROM dual");&#xD;
  142. //        dataSource.setTestOnBorrow(true);&#xD;
  143.        dataSource.setTimeBetweenEvictionRunsMillis(5 * 60 * 1000);&#xD;
  144. &#xD;
  145.        return dataSource;&#xD;
  146.    }&#xD;
  147. &#xD;
  148.    public static void main(String[] args) {&#xD;
  149.        &#xD;
  150.        Properties dbProperties = new Properties();&#xD;
  151.        dbProperties.setProperty("dbuser", "sa");&#xD;
  152.        dbProperties.setProperty("dbfile", "/location/of/your/datafile");&#xD;
  153.        dbProperties.setProperty("maxConnections", "100");&#xD;
  154. &#xD;
  155.        DataSource dataSource = setup(dbProperties);&#xD;
  156.    }&#xD;
  157. }&#xD;
  158. </description><pubDate>Mon, 02 Jun 2014 07:43:47 +0200</pubDate><guid>http://underscore.at/id_122</guid></item><item><title>smbfs mount ignoring file_mode / dir_mode</title><link>http://underscore.at/id_121</link><description>In case a mount using smbfs to mount a SAMBA share ignores the file_mode and dir_mode settings try adding the option 'nounix':&#xD;
  159. &#xD;
  160. //samba-server.local.domain/home      /remote-home                   smbfs    username=sambauser,password=sambapassword,uid=localusermapping,gid=localgroupmapping,file_mode=0775,dir_mode=0775,rw,nounix 1   2&#xD;
  161. &#xD;
  162. of course substituting the correct values for your configuration:&#xD;
  163. username: the remote SAMBA user account&#xD;
  164. password: the remote SAMBA password&#xD;
  165. uid: the local user to map the files to (i.e. local owner)&#xD;
  166. gid: local group to map to&#xD;
  167. file_mode, dir_mode: the modes for files resp. directories to use locally</description><pubDate>Fri, 09 May 2014 11:39:43 +0200</pubDate><guid>http://underscore.at/id_121</guid></item><item><title>Creating SSL Keys and CSRs</title><link>http://underscore.at/id_119</link><description>Create new private key and CSR:&#xD;
  168. openssl req -new -nodes -keyout server.key -out server.csr -newkey rsa:4096&#xD;
  169. &#xD;
  170. Show contents of CSR:&#xD;
  171. openssl req -in server.csr -text</description><pubDate>Tue, 15 Apr 2014 04:50:19 +0200</pubDate><guid>http://underscore.at/id_119</guid></item><item><title>Bash: argument list too long</title><link>http://underscore.at/id_118</link><description>That moment of truth when you want to clean out a filled up directory and bash reassuringly tells you:&#xD;
  172. &#xD;
  173. /bin/rm: cannot execute [Argument list too long]&#xD;
  174. &#xD;
  175. Use find and xargs:&#xD;
  176. find . -name "*.log" -print0 | xargs -0 rm&#xD;
  177. &#xD;
  178. but beware that this works recursively. Try "-maxdepth 1" to limit to the current directory.</description><pubDate>Mon, 07 Apr 2014 09:13:16 +0200</pubDate><guid>http://underscore.at/id_118</guid></item><item><title>Manual SMTP Relay Check</title><link>http://underscore.at/id_117</link><description>Have a simple conversation with your SMTP server using telnet to port 25:&#xD;
  179. &#xD;
  180. --&gt; HELO youthostname&#xD;
  181. &lt;-- 250 smtpservername&#xD;
  182. --&gt; MAIL FROM: [email protected]&#xD;
  183. &lt;-- 250 Ok&#xD;
  184. --&gt; RCPT TO: &lt;[email protected]&gt; (place recipient address here)&#xD;
  185. &lt;-- 554 &lt;[email protected]&gt;: Relay access denied&#xD;
  186. </description><pubDate>Wed, 19 Mar 2014 02:29:07 +0100</pubDate><guid>http://underscore.at/id_117</guid></item><item><title>Failed Index</title><link>http://underscore.at/id_116</link><description>Find an index in the 'failed' state:&#xD;
  187. &#xD;
  188. select index_name, status, domidx_status, domidx_opstatus&#xD;
  189. from dba_indexes&#xD;
  190. where index_type = 'DOMAIN'&#xD;
  191. and domidx_opstatus = 'FAILED';</description><pubDate>Wed, 19 Mar 2014 02:26:16 +0100</pubDate><guid>http://underscore.at/id_116</guid></item><item><title>Maven Dependencies</title><link>http://underscore.at/id_115</link><description>Using Maven to download dependencies when a project offers no direct downloads:&#xD;
  192. &#xD;
  193. 1. In an empty directory create a pom.xml outlining the dependencies to download, e.g.:&#xD;
  194. &#xD;
  195. &lt;?xml version="1.0" encoding="UTF-8"?&gt;&#xD;
  196. &lt;project xmlns="http://maven.apache.org/POM/4.0.0"&gt;&#xD;
  197.    &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;&#xD;
  198.    &lt;packaging&gt;war&lt;/packaging&gt;&#xD;
  199.    &lt;name&gt;Download&lt;/name&gt;&#xD;
  200.    &lt;groupId&gt;at.compass&lt;/groupId&gt;&#xD;
  201.    &lt;artifactId&gt;Download&lt;/artifactId&gt;&#xD;
  202.    &lt;version&gt;1.0.0&lt;/version&gt;&#xD;
  203.    &lt;description&gt;Download Maven dependencies&lt;/description&gt;&#xD;
  204.    &lt;dependencies&gt;&#xD;
  205.        &lt;dependency&gt;&#xD;
  206.          &lt;groupId&gt;com.sparkjava&lt;/groupId&gt;&#xD;
  207.          &lt;artifactId&gt;spark-core&lt;/artifactId&gt;&#xD;
  208.          &lt;version&gt;1.1.1&lt;/version&gt;&#xD;
  209.    &lt;/dependency&gt;&#xD;
  210.    &lt;/dependencies&gt;&#xD;
  211. &lt;/project&gt;&#xD;
  212. &#xD;
  213. 2. Use Maven to download the JARs including transitive dependencies:&#xD;
  214. mvn dependency:copy-dependencies&#xD;
  215. &#xD;
  216. This will put the JARs into the subdirectory target/dependencies</description><pubDate>Mon, 10 Feb 2014 10:56:36 +0100</pubDate><guid>http://underscore.at/id_115</guid></item><item><title>Oracle Shutdown / Restart</title><link>http://underscore.at/id_114</link><description>Start SQL*Plus:&#xD;
  217. sqlplus /nolog&#xD;
  218. &#xD;
  219. And use the following commands to shut an instance down:&#xD;
  220. SQL&gt; connect system as sysdba;&#xD;
  221. SQL&gt; shutdown immediate;&#xD;
  222. &#xD;
  223. Use 'shutdown abort;' in case there are hanging connections/processes, but keep in mind that this kills those processes (i.e. use at your own risk).&#xD;
  224. &#xD;
  225. Shutdown + Start:&#xD;
  226. sqlplus /nolog&#xD;
  227. &#xD;
  228. SQL&gt; connect system as sysdba;&#xD;
  229. SQL&gt; startup force;&#xD;
  230. </description><pubDate>Mon, 10 Feb 2014 09:28:54 +0100</pubDate><guid>http://underscore.at/id_114</guid></item><item><title>Unix Timstamps in SQL</title><link>http://underscore.at/id_113</link><description>Convert a Unix timestamp to a Date in Oracle 11g:&#xD;
  231. &#xD;
  232. SELECT to_date('1970-01-01','YYYY-MM-DD') + numtodsinterval(1390828626,'SECOND') FROM dual;&#xD;
  233. &#xD;
  234. Be careful: this seems to be off by 1h.&#xD;
  235. &#xD;
  236. &#xD;
  237. And on Postgres:&#xD;
  238. SELECT (TIMESTAMP WITH TIME ZONE 'epoch' + unix_tstamp * INTERVAL '1 second')::date&#xD;
  239. </description><pubDate>Mon, 27 Jan 2014 07:43:07 +0100</pubDate><guid>http://underscore.at/id_113</guid></item><item><title>OS X Terminal Commands</title><link>http://underscore.at/id_112</link><description>Very nice collection of ways to interact with the OS X terminal. My favourite so far: pbcopy/pbpaste to interact with the clipboard.</description><pubDate>Mon, 20 Jan 2014 08:35:10 +0100</pubDate><guid>http://underscore.at/id_112</guid></item><item><title>OS X Terminal</title><link>http://underscore.at/id_111</link><description>To nice to not post it here:&#xD;
  240. &#xD;
  241. "OSX Terminal: hold option and click a position in the current line to move your cursor to that position."</description><pubDate>Thu, 16 Jan 2014 09:50:07 +0100</pubDate><guid>http://underscore.at/id_111</guid></item><item><title>HTML5 &lt;video&gt; tag in IE9</title><link>http://underscore.at/id_110</link><description>If IE9 shows a warning that it does not support the &lt;video&gt; tag within an HTML5 document (with the correct DOCTYPE add this to the &lt;head&gt;:&#xD;
  242. &#xD;
  243. &lt;meta http-equiv="X-UA-Compatible" content="IE=9"/&gt;&#xD;
  244. </description><pubDate>Wed, 27 Nov 2013 11:11:48 +0100</pubDate><guid>http://underscore.at/id_110</guid></item><item><title>OpenSSH / Ubuntu PAM Headers missing</title><link>http://underscore.at/id_109</link><description>When compiling OpenSSH on Ubuntu you might get the error message "PAM headers not found". Try installing the missing header files:&#xD;
  245. &#xD;
  246. sudo apt-get install libpam0g-dev&#xD;
  247. &#xD;
  248. and retry&#xD;
  249. ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam&#xD;
  250. </description><pubDate>Fri, 22 Nov 2013 09:06:32 +0100</pubDate><guid>http://underscore.at/id_109</guid></item><item><title>Expiration Date of a PKCS#12 certificate</title><link>http://underscore.at/id_108</link><description>Via the source linked to below...&#xD;
  251. &#xD;
  252. openssl pkcs12 -in certificate.p12 -out tempcrt.pem&#xD;
  253. openssl x509 -in tempcrt.pem -noout -enddate&#xD;
  254. </description><pubDate>Tue, 19 Nov 2013 12:40:48 +0100</pubDate><guid>http://underscore.at/id_108</guid></item><item><title>Encrypt An External Disk Volume</title><link>http://underscore.at/id_107</link><description>Convert to CoreStorage volume and encrypt in one step:&#xD;
  255. # diskutil cs convert /Volumes/Spare -passphrase&#xD;
  256. &#xD;
  257. Or split into two steps:&#xD;
  258. # diskutil cs convert /Volumes/Spare&#xD;
  259. # diskutil cs encryptVolume /Volumes/Spare -passphrase&#xD;
  260. &#xD;
  261. To check the status of the encryption process:&#xD;
  262. # diskutil cs info /Volumes/Spare&#xD;
  263. &#xD;
  264. Obviously the volumename 'Spare' should be replaced by your volume in question...</description><pubDate>Tue, 12 Nov 2013 01:39:33 +0100</pubDate><guid>http://underscore.at/id_107</guid></item><item><title>Oracle: Slow connections</title><link>http://underscore.at/id_106</link><description>If connecting to an Oracle instance is slow but queries themselves are OK try tnsping. If that takes more than 100ms take a look at your DNS configuration.&#xD;
  265. &#xD;
  266. Check if name resolution works with all DNS servers configured in /etc/resolv.conf. Check for redundant domain entries as well.&#xD;
  267. &#xD;
  268. Another possible cause may be a large listener log file. Location can be found with 'lsnrctl status'</description><pubDate>Thu, 18 Jul 2013 10:42:09 +0200</pubDate><guid>http://underscore.at/id_106</guid></item><item><title>Disable a MacOS X service</title><link>http://underscore.at/id_105</link><description>launchctl unload -w &lt;path to plist file&gt;&#xD;
  269. &#xD;
  270. The plist files are located in the following directories:&#xD;
  271. /Library/LaunchDaemons&#xD;
  272. /System/Library/LaunchDaemons&#xD;
  273. /System/Library/LaunchAgents</description><pubDate>Fri, 20 May 2016 08:24:06 +0200</pubDate><guid>http://underscore.at/id_105</guid></item><item><title>Commons Logging</title><link>http://underscore.at/id_104</link><description>Configure Commons Logging to use Log4J: create the file commons-logging.properties with the following content:&#xD;
  274. org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger&#xD;
  275. &#xD;
  276. and put it in the CLASSPATH</description><pubDate>Tue, 18 Jun 2013 07:43:41 +0200</pubDate><guid>http://underscore.at/id_104</guid></item><item><title>Extend TEMP tablespace</title><link>http://underscore.at/id_103</link><description>Add a new file to the temporary tablespace:&#xD;
  277. &#xD;
  278. ALTER TABLESPACE TEMP ADD TEMPFILE '/path/to/datadir/tempXX.dbf' SIZE 500M AUTOEXTEND ON MAXSIZE 4G;</description><pubDate>Wed, 29 May 2013 09:25:32 +0200</pubDate><guid>http://underscore.at/id_103</guid></item><item><title>Compile Apache 2.4</title><link>http://underscore.at/id_102</link><description>Install packages libpcre3 and libpcre3-dev&#xD;
  279. &#xD;
  280. mkdir download compile&#xD;
  281. cd compile&#xD;
  282. tar xzvf ../download/httpd-2.4.4.tar.gz&#xD;
  283. cd httpd-2.4.4/srclib&#xD;
  284. tar xzvf ../../../download/apr-util-1.5.2.tar.gz&#xD;
  285. mv apr-util-1.5.2/ apr-util&#xD;
  286. tar xzvf ../../../download/apr-1.4.6.tar.gz&#xD;
  287. mv apr-1.4.6/ apr&#xD;
  288. cd ..&#xD;
  289. ./configure '--enable-so' \&#xD;
  290.   '--enable-ssl' \&#xD;
  291.   '--enable-rewrite=shared' \&#xD;
  292.   '--enable-headers=shared' \&#xD;
  293.   '--enable-proxy=shared' \&#xD;
  294.   '--enable-proxy-balancer=shared' \&#xD;
  295.   --with-included-apr&#xD;
  296. </description><pubDate>Fri, 17 May 2013 08:47:10 +0200</pubDate><guid>http://underscore.at/id_102</guid></item><item><title>Problems with configure</title><link>http://underscore.at/id_101</link><description>When configure exits with the message "configure: error: cannot run C compiled programs." under Ubuntu reinstallation of libc-dev might help:&#xD;
  297. &#xD;
  298. aptitude update&#xD;
  299. apt-get install --reinstall libc6-dev&#xD;
  300. apt-get install libc6-dev-i386&#xD;
  301. </description><pubDate>Fri, 17 May 2013 08:38:19 +0200</pubDate><guid>http://underscore.at/id_101</guid></item><item><title>Installing pdsh on MacOS X</title><link>http://underscore.at/id_100</link><description>How to compile pdsh, the distributed parallel shell, on MacOS X&#xD;
  302. &#xD;
  303. Download and compile readline:&#xD;
  304. cd readline-6.2&#xD;
  305. MACOSX_DEPLOYMENT_TARGET=10.8 ARCHFLAGS="-arch x86_64" \&#xD;
  306.   ./configure --prefix=/usr/local --enable-shared&#xD;
  307. # regardign error about -dynamiclib: see http://www.iamseree.com/application-development/readline-6-2-make-error-in-mac-os-x-lion&#xD;
  308. cd shlib&#xD;
  309. sed -e 's/-dynamic/-dynamiclib/' Makefile &gt; Makefile.osx&#xD;
  310. mv Makefile.osx Makefile&#xD;
  311. cd ..&#xD;
  312. # &#xD;
  313. make&#xD;
  314. make &amp;&amp; sudo make install&#xD;
  315. &#xD;
  316. Download and compile pdsh:&#xD;
  317. cd pdsh-2.29&#xD;
  318. ./configure --with-ssh --with-readline --without-rsh&#xD;
  319. make &amp;&amp; sudo make install</description><pubDate>Tue, 14 May 2013 12:13:15 +0200</pubDate><guid>http://underscore.at/id_100</guid></item><item><title>Extend an Oracle tablespace</title><link>http://underscore.at/id_99</link><description>Add a datafile to an existing Oracle tablespace tb_name:&#xD;
  320. &#xD;
  321. ALTER TABLESPACE tb_name ADD DATAFILE '/path/to/new/datafile.dbf' SIZE 200M AUTOEXTEND ON NEXT 100M MAXSIZE 4000M;&#xD;
  322. &#xD;
  323. Show all datafiles associated with a tablespace tb_name:&#xD;
  324. SELECT * FROM dba_data_files WHERE tablespace_name='tb_name';</description><pubDate>Tue, 14 May 2013 07:31:02 +0200</pubDate><guid>http://underscore.at/id_99</guid></item><item><title>Create Schema / User manually in Oracle</title><link>http://underscore.at/id_98</link><description>How to create a user TESTUSER with a tablespace TESTUSERTABLESPACE per SQL:&#xD;
  325. DATABASENAME is the name of the containing database.&#xD;
  326. &#xD;
  327. -- Here 2 datafiles are used. Adjust as needed:&#xD;
  328. CREATE SMALLFILE TABLESPACE "TESTUSERTABLESPACE" DATAFILE '/oracle/oradata2/DATABASENAME/testuser.dbf' SIZE 300M REUSE, '/oracle/oradata3/DATABASENAME/testuser.dbf' SIZE 300M REUSE LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;&#xD;
  329. &#xD;
  330. CREATE USER testuser IDENTIFIED BY testpassword DEFAULT TABLESPACE TESTUSERTABLESPACE;&#xD;
  331. ALTER USER testuser QUOTA UNLIMITED ON TESTUSERTABLESPACE;&#xD;
  332. &#xD;
  333. GRANT CONNECT, CREATE SESSION, CREATE TABLE TO testuser;&#xD;
  334. GRANT select, insert, update, delete, alter ON testuser.tabellenname TO testuser;&#xD;
  335. GRANT select, alter ON testuser.tabellenname_id_seq TO testuser;&#xD;
  336. &#xD;
  337. -- extend if needed:&#xD;
  338. ALTER DATABASE DATAFILE '/oracle/oradata2/DATABASENAME/testuser.dbf' RESIZE 500M;&#xD;
  339. ALTER DATABASE DATAFILE '/oracle/oradata3/DATABASENAME/testuser.dbf' RESIZE 500M;&#xD;
  340. &#xD;
  341. -- or set auto-extend:&#xD;
  342. ALTER DATABASE DATAFILE '/oracle/oradata2/DATABASENAME/testuser.dbf' AUTOEXTEND ON;&#xD;
  343. ALTER DATABASE DATAFILE '/oracle/oradata3/DATABASENAME/testuser.dbf' AUTOEXTEND ON;</description><pubDate>Tue, 09 Apr 2013 08:09:39 +0200</pubDate><guid>http://underscore.at/id_98</guid></item><item><title>Changing the senders hostname for Java Mail</title><link>http://underscore.at/id_97</link><description>Add the following property to your mail configuration, substituting the correct name for my.mail.hostname.com:&#xD;
  344. &#xD;
  345. properties.put("mail.smtp.localhost", "my.mail.hostname.com");&#xD;
  346. </description><pubDate>Wed, 27 Mar 2013 01:22:47 +0100</pubDate><guid>http://underscore.at/id_97</guid></item><item><title>Rails with JRuby on MacOS X</title><link>http://underscore.at/id_95</link><description>Install Rails Gem:&#xD;
  347. $ sudo jruby -S gem install rails&#xD;
  348. &#xD;
  349. If using a proxy either add the corresponding command line flag or edit ~/.gemrc (see below):&#xD;
  350. $ sudo jruby -S gem install rails --http-proxy http://proxy.company.com:8080&#xD;
  351. &#xD;
  352. Install JRuby SSL support:&#xD;
  353. $ sudo jruby -S gem install jruby-openssl&#xD;
  354. &#xD;
  355. Create a dummy project to install the missing gems:&#xD;
  356. $ sudo jruby -S rails new RailsTest&#xD;
  357. &#xD;
  358. When using a proxy you can add the hostname to ~/.gemrc like this:&#xD;
  359. gem: --http-proxy http://proxy.company.com:8080&#xD;
  360. bundle: --http-proxy http://proxy.company.com:8080&#xD;
  361. bundler: --http-proxy http://proxy.company.com:8080&#xD;
  362. </description><pubDate>Wed, 25 Jul 2012 12:56:20 +0200</pubDate><guid>http://underscore.at/id_95</guid></item><item><title>Import PKCS#12 certificates into a Java Keystore</title><link>http://underscore.at/id_94</link><description>keytool -importkeystore \&#xD;
  363. -deststorepass KEYSTORE_PASSWORD \&#xD;
  364. -destkeypass KEYSTORE_PASSWORD \&#xD;
  365. -destkeystore KEYSTORE_FILENAME \&#xD;
  366. -srckeystore INPUTFILE \&#xD;
  367. -srcstoretype PKCS12 \&#xD;
  368. -srcstorepass INPUTFILE_PASSWORD \&#xD;
  369. -alias 1</description><pubDate>Mon, 04 Jun 2012 02:28:09 +0200</pubDate><guid>http://underscore.at/id_94</guid></item><item><title>MacOS X Download History</title><link>http://underscore.at/id_92</link><description>OS X obviously keeps a list of downloads (not only for Safari) to enable those protective popups 'XXX was downloaded from the internet. Are you shure you want to open it?'&#xD;
  370. &#xD;
  371. Under Lion this information can be found in the file&#xD;
  372. ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2&#xD;
  373. which is an SQLite database. Contents can be dumped using this command:&#xD;
  374. &#xD;
  375. sqlite3 -header -line ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2 \&#xD;
  376. 'SELECT LSQuarantineAgentName AS Browser, LSQuarantineDataURLString AS File FROM LSQuarantineEvent WHERE LSQuarantineAgentName &lt;&gt; "PubSubAgent"'&#xD;
  377. &#xD;
  378. Brushed up SQL inspired by the script found in the linked article below.</description><pubDate>Tue, 14 Feb 2012 09:56:58 +0100</pubDate><guid>http://underscore.at/id_92</guid></item><item><title>Ho to install SHA-1 support for PostgreSQL</title><link>http://underscore.at/id_68</link><description>In the PostgreSQL source directory:&#xD;
  379. cd contrib/pgcrypto&#xD;
  380. make; make install&#xD;
  381. &#xD;
  382. start psql and create a utility function:&#xD;
  383. &#xD;
  384. psql -Upostgres template1&#xD;
  385. &#xD;
  386. -- for Postgres &lt; 9.1:&#xD;
  387. template1=# \i contrib/pgcrypto/pgcrypto.sql&#xD;
  388. -- for Postgres &gt;= 9.1:&#xD;
  389. template1=# CREATE EXTENSION pgcrypto;&#xD;
  390. &#xD;
  391. -- common part:&#xD;
  392. template1=# CREATE OR REPLACE FUNCTION sha1(varchar) returns text AS '&#xD;
  393.      SELECT encode(digest($1::bytea, ''sha1''), ''hex'')&#xD;
  394.    ' LANGUAGE SQL STRICT IMMUTABLE;&#xD;
  395. </description><pubDate>Tue, 17 Jan 2012 03:50:28 +0100</pubDate><guid>http://underscore.at/id_68</guid></item><item><title>Importing certificates into a Java keystore</title><link>http://underscore.at/id_91</link><description>First convert the certificate to X509 format using OpenSSL. Starting e.g. with a certificate in PKCS12 format convert it to PEM:&#xD;
  396. openssl pkcs12 -in certificate.cer -out certificate.crt -clcerts&#xD;
  397. &#xD;
  398. Optionally: export public key:&#xD;
  399. openssl pkcs12 -in certificate.cer -out certificate.public -nokeys -clcerts&#xD;
  400. &#xD;
  401. And then to X509:&#xD;
  402. openssl x509 -inform pem -in certificate.crt -outform der -out certificate.cer&#xD;
  403. &#xD;
  404. This can finally be imported into a Java keystore:&#xD;
  405. /usr/local/jdk1.6/bin/keytool -import -keystore keystore.jks -trustcacerts -alias key-alias -file certificate.cer</description><pubDate>Tue, 06 Dec 2011 02:38:52 +0100</pubDate><guid>http://underscore.at/id_91</guid></item><item><title>Scala problems</title><link>http://underscore.at/id_90</link><description>In a quite long message which seems to be written as private conversation that became public someone who worked with Scala for some time really points to its weaknesses. It is one thing to like or dislike the often symbol-heavy syntax, but that post mentions several problems they encountered as a team which should not be dismissed as simple preferences, such as problematic code structures loosing performance (for-loops) or the penalty of using Scalas collection library (both mutable and immutable), which is more or less imposed as mandatory when using the standard library.&#xD;
  406. &#xD;
  407. My short encounter with Scala reflects several of the points made, but the really bad part that finally convinced me to look for another take on next-gen JVM-languages is summed up in this quote:&#xD;
  408. "(...) but at some point a best practice emerged: ignore the community entirely."&#xD;
  409. &#xD;
  410. The Scala community, while quite large, always seemed quite hostile to me, with lots of talent and time wasted on waging war over preferences of style. I do not want to spend my time on figuring out, who is 'right' in the sense of which preference gets adopted by the Scala community at large... So I stopped investing time in Scala at all.</description><pubDate>Wed, 30 Nov 2011 09:30:01 +0100</pubDate><guid>http://underscore.at/id_90</guid></item><item><title>Convert secsh Public Key format</title><link>http://underscore.at/id_89</link><description>Convert a file in secsh-format (e.g. coming out of Putty) to a format usable with OpenSSH:&#xD;
  411. &#xD;
  412. ssh-keygen -i -f putty-key.pub &gt;openssh-key.pub&#xD;
  413. </description><pubDate>Mon, 14 Nov 2011 05:15:52 +0100</pubDate><guid>http://underscore.at/id_89</guid></item><item><title>Preprocess Apache Logs for Evaluation</title><link>http://underscore.at/id_88</link><description>This simple shellscript converts standard Apache common logfiles to a CSV format (note the tabs in the replacement pattern between each column):&#xD;
  414. &#xD;
  415. &#xD;
  416. #!/bin/sh&#xD;
  417. echo "IP\tTag\tMonat\tJahr\tUhrzeit\tURL\tStatus\tTransfer"&#xD;
  418. # 1: IP&#xD;
  419. # 2: day&#xD;
  420. # 3: month&#xD;
  421. # 4: year&#xD;
  422. # 5: time&#xD;
  423. # 6: url&#xD;
  424. # 7: protocol&#xD;
  425. # 8: status code&#xD;
  426. # 9: transfer in bytes&#xD;
  427. &#xD;
  428. cat $1 | \&#xD;
  429. sed -E 's/(.*) \- \- \[([0-9]*)\/([A-Z][a-z]*)\/([0-9]*):(.*) \+[0-9]*\] "GET (.*) HTTP\/(.*)" +([0-9]*) ([0-9]*) "(.*)" .*/\1 \2 \3 \4 \5 \6 \7 \9/g'&#xD;
  430. </description><pubDate>Wed, 09 Nov 2011 05:04:22 +0100</pubDate><guid>http://underscore.at/id_88</guid></item><item><title>Create a Unix User / Group from the command line on MacOS X</title><link>http://underscore.at/id_87</link><description>% sudo dscl . -create /Users/luser&#xD;
  431. % sudo dscl . -create /Users/luser UserShell /bin/bash&#xD;
  432. % sudo dscl . -create /Users/luser RealName "Realname for user"&#xD;
  433. % sudo dscl . -create /Users/luser UniqueID "1010"&#xD;
  434. % sudo dscl . -create /Users/luser PrimaryGroupID 80&#xD;
  435. % sudo dscl . -create /Users/luser NFSHomeDirectory /Users/luser&#xD;
  436. &#xD;
  437. Create a group:&#xD;
  438. % sudo dscl . -create /groups/tomcat&#xD;
  439. % sudo dscl . -append /groups/tomcat gid 230&#xD;
  440. % sudo dscl . -append /groups/tomcat passwd "*"&#xD;
  441. &#xD;
  442. Add a user to this group (replace username with the correct value):&#xD;
  443. % sudo dscl . -append /groups/tomcat GroupMembership luser&#xD;
  444. &#xD;
  445. in part derived from an answer at Serverstack: http://serverfault.com/a/20706</description><pubDate>Fri, 08 Feb 2013 08:17:39 +0100</pubDate><guid>http://underscore.at/id_87</guid></item><item><title>Start MacOS X Screen Sharing</title><link>http://underscore.at/id_86</link><description>To start the Screen Sharing application directly open Terminal and type the following command:&#xD;
  446. # open /System/Library/CoreServices/Screen\ Sharing.app/&#xD;
  447. &#xD;
  448. Under OS X 10.10 this moved application was moved:&#xD;
  449. # open /System//Library/CoreServices/Applications/Screen\ Sharing.app</description><pubDate>Sat, 13 Jun 2015 09:16:40 +0200</pubDate><guid>http://underscore.at/id_86</guid></item><item><title>Change Networksettings on MacOS X on the commandline</title><link>http://underscore.at/id_85</link><description>First determine the installed services / interfaces:&#xD;
  450. # networksetup -listallnetworkservices&#xD;
  451. &#xD;
  452. Read the current configuration for a service (name as listed in the output above):&#xD;
  453. # networksetup -getinfo Ethernet&#xD;
  454. &#xD;
  455. Change e.g. the DNS server:&#xD;
  456. # networksetup -setdnsservers "Ethernet" 8.8.8.8</description><pubDate>Thu, 22 Sep 2011 08:44:30 +0200</pubDate><guid>http://underscore.at/id_85</guid></item><item><title>Node Package Manager via Squid</title><link>http://underscore.at/id_84</link><description>In some configurations the Squid HTTP Proxy seems to deny NPM requests when using the HTTPS protocol. In this case the error message returned by npm will contin a phrase like this:&#xD;
  457. &#xD;
  458. "Unsupported Request Method and Protocol"&#xD;
  459. &#xD;
  460. Try to reconfigure npm to use HTTP instead with this command:&#xD;
  461. &#xD;
  462. $ npm config set registry http://registry.npmjs.org/&#xD;
  463. &#xD;
  464. The currently used configuration can be read by issuing&#xD;
  465. &#xD;
  466. $ npm config get registry&#xD;
  467. </description><pubDate>Tue, 20 Sep 2011 09:48:45 +0200</pubDate><guid>http://underscore.at/id_84</guid></item><item><title>Servlets with Clojure</title><link>http://underscore.at/id_83</link><description>A simplistic servlet implemented in Clojure</description><pubDate>Thu, 04 Aug 2011 07:42:36 +0200</pubDate><guid>http://underscore.at/id_83</guid></item><item><title>Disable Lion Window Animations and other minor annoyances</title><link>http://underscore.at/id_82</link><description>Disable generic window open animation use the following command in a Terminal window:&#xD;
  468. # defaults write NSGlobalDomain NSAutomaticWindowAnimationsEnabled -bool NO&#xD;
  469. Replace 'NO' with 'YES' to re-enable them.&#xD;
  470. &#xD;
  471. Disable animations in Mail:&#xD;
  472. # defaults write com.apple.Mail DisableReplyAnimations -bool YES&#xD;
  473. Quit Mail before changing this setting. Replace 'YES' with 'NO' to re-enable animations.&#xD;
  474. &#xD;
  475. Restore key autorepeat:&#xD;
  476. # defaults write -g ApplePressAndHoldEnabled -bool false&#xD;
  477. &#xD;
  478. Make Library folder visible:&#xD;
  479. # chflags nohidden ~/Library/&#xD;
  480. &#xD;
  481. Disable Spelling correction:&#xD;
  482. # defaults write NSGlobalDomain NSAutomaticSpellingCorrectionEnabled -bool NO&#xD;
  483. &#xD;
  484. Disable local Timemachine:&#xD;
  485. # sudo tmutil disablelocal</description><pubDate>Mon, 01 Aug 2011 01:43:33 +0200</pubDate><guid>http://underscore.at/id_82</guid></item><item><title>FOP Font installation</title><link>http://underscore.at/id_81</link><description>Put Font files (TTF or OTF) in same directory as the XSL file, create a file called fop-config.xml with this content:&#xD;
  486. &#xD;
  487. &lt;fop version="1.0"&gt;&#xD;
  488.  &lt;renderers&gt;&#xD;
  489.    &lt;renderer mime="application/pdf"&gt;&#xD;
  490.      &lt;fonts&gt;&#xD;
  491.        &lt;auto-detect/&gt;&#xD;
  492.      &lt;/fonts&gt;&#xD;
  493.    &lt;/renderer&gt;&#xD;
  494.  &lt;/renderers&gt;&#xD;
  495. &lt;/fop&gt;&#xD;
  496. &#xD;
  497. Alternatively put font files under &lt;JAVA_HOME&gt;/jre/lib/fonts/&#xD;
  498. </description><pubDate>Thu, 30 Jun 2011 06:35:51 +0200</pubDate><guid>http://underscore.at/id_81</guid></item><item><title>XSL-FO hyphenation library</title><link>http://underscore.at/id_80</link><description>To enable hyphenation when using Apache FOP 1.x use&#xD;
  499. &#xD;
  500. &lt;fo:block margin-left="0mm" font-size="10pt" text-align="justify" language="de" hyphenate="true"&gt;&#xD;
  501.   &lt;xsl:value-of select="."/&gt;&#xD;
  502. &lt;/fo:block&gt;&#xD;
  503. &#xD;
  504. after installing the OFFO hyphenation library.&#xD;
  505. </description><pubDate>Thu, 30 Jun 2011 06:21:10 +0200</pubDate><guid>http://underscore.at/id_80</guid></item><item><title>Image format conversion</title><link>http://underscore.at/id_79</link><description>From (CMYC) EPS or Adobe Illustrator etc. to JPG using ImageMagick:&#xD;
  506. convert -density 300 -colorspace RGB inputfile.ai -trim outputfile.jpg&#xD;
  507. &#xD;
  508. Or using transparency:&#xD;
  509. convert -density 300 -colorspace RGB inputfile.ai -trim +repage -background transparent -alpha background PNG32:outputfile.png&#xD;
  510. &#xD;
  511. From EPS to SVG using pstoedit:&#xD;
  512. pstoedit -f plot-svg inputfile.eps outputfile.svg&#xD;
  513. This uses a shareware plugin for pstoedit to enable SVG output.&#xD;
  514. </description><pubDate>Thu, 30 Jun 2011 06:17:13 +0200</pubDate><guid>http://underscore.at/id_79</guid></item><item><title>Android ports</title><link>http://underscore.at/id_78</link><description>Complaining why the client in question was first developed for iOS a user writes:&#xD;
  515. &#xD;
  516. "Ya, just read in the news Android is seeing 400000 new activations PER DAY, don’t waste your time with iOS! And make it free with ads, no way I’m paying, sorry"&#xD;
  517. &#xD;
  518. I guess he still doesn't get it why they are 'wasting their time' with iOS ;-) Hint: it might have something to do with this exact mentality...</description><pubDate>Wed, 18 May 2011 01:00:44 +0200</pubDate><guid>http://underscore.at/id_78</guid></item><item><title>HTTP Date format in Java</title><link>http://underscore.at/id_76</link><description>To format a date according to the HTTP standard (needed in the Last Modified header):&#xD;
  519. &#xD;
  520. public static String formatHttpDate(Date date)&#xD;
  521. {&#xD;
  522.    SimpleDateFormat httpDateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US);&#xD;
  523.    httpDateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));&#xD;
  524. &#xD;
  525.    return httpDateFormat.format(date);&#xD;
  526. }</description><pubDate>Tue, 17 May 2011 01:12:06 +0200</pubDate><guid>http://underscore.at/id_76</guid></item><item><title>Querying MongoDB from Clojure using regex Prefix matches</title><link>http://underscore.at/id_75</link><description>Turns out to be quite simple... Assuming a collection with an indexed attribute called 'index' the code would look something like this:&#xD;
  527. &#xD;
  528. (ns test&#xD;
  529.  (:use somnium.congomongo))&#xD;
  530. &#xD;
  531. (def mongo-server "mongo.test")&#xD;
  532. (def mongo-db "testdb")&#xD;
  533. (def mongo-collection "indexedtestcollection")&#xD;
  534. &#xD;
  535. (defn find-test [input]&#xD;
  536.  (mongo!&#xD;
  537.    :host mongo-server&#xD;
  538.    :db mongo-db )&#xD;
  539.  (let [rx (. Pattern compile (str "^" (first input)))]&#xD;
  540.    (println (.getName (.getClass rx)))&#xD;
  541.    (take 3&#xD;
  542.      (fetch mongo-collection&#xD;
  543.        :where {:index rx}&#xD;
  544.        )&#xD;
  545.      )&#xD;
  546.    )&#xD;
  547.  )&#xD;
  548. &#xD;
  549. The main point being that the value for rx must be a Regex instance. In this sample code the regex is dynamically created, using a static #"^regex" works as well.&#xD;
  550. &#xD;
  551. MongoDB can only use the index on the column if the regex is a prefix match (i.e. uses the '^' anchor).</description><pubDate>Fri, 15 Apr 2011 09:58:23 +0200</pubDate><guid>http://underscore.at/id_75</guid></item><item><title>Print a stacktrace in Clojure REPL</title><link>http://underscore.at/id_74</link><description>To print a stracktrace after an exception occurred use these commands:&#xD;
  552. &#xD;
  553. user=&gt; (use 'clojure.stacktrace)&#xD;
  554. user=&gt; (print-stack-trace *e 10)</description><pubDate>Wed, 06 Apr 2011 10:59:03 +0200</pubDate><guid>http://underscore.at/id_74</guid></item><item><title>MySQL: JDBC Connect String with UTF-8 encoding</title><link>http://underscore.at/id_73</link><description>jdbc:mysql://localhost/some_db?useUnicode=yes&amp;characterEncoding=UTF-8</description><pubDate>Mon, 04 Apr 2011 12:14:27 +0200</pubDate><guid>http://underscore.at/id_73</guid></item><item><title>Look up details by index / constraint name</title><link>http://underscore.at/id_72</link><description>select * from "SYS"."ALL_INDEXES" where index_name like 'constraintname%'&#xD;
  555. &#xD;
  556. Replace constraintname by the name of your specific piece of interest.</description><pubDate>Fri, 25 Mar 2011 10:45:38 +0100</pubDate><guid>http://underscore.at/id_72</guid></item><item><title>Installing ImageMagick PHP extension on Ubuntu</title><link>http://underscore.at/id_71</link><description># apt-get install libmagickwand-dev libmagickcore-dev&#xD;
  557. &#xD;
  558. # pecl install imagick&#xD;
  559. </description><pubDate>Fri, 18 Mar 2011 05:43:10 +0100</pubDate><guid>http://underscore.at/id_71</guid></item><item><title>Installing mcrypt PHP extension on Ubuntu</title><link>http://underscore.at/id_70</link><description># apt-get install libmcrypt-dev&#xD;
  560. &#xD;
  561. # cd php-5.x.x/ext/mcrypt&#xD;
  562. # phpize&#xD;
  563. # aclocal&#xD;
  564. # ./configure&#xD;
  565. # make &amp;&amp; make install&#xD;
  566. &#xD;
  567. Add 'extension=mcrypt.so' to php.ini.</description><pubDate>Fri, 18 Mar 2011 05:36:26 +0100</pubDate><guid>http://underscore.at/id_70</guid></item><item><title>HowTo: Resize an EXT4-formatted Linux LVM Volume in a virtual machine</title><link>http://underscore.at/id_69</link><description>1. Resize the volume using VMWare VM-Manager. The size field is greyed out if there are any snapshots defined... you'll have to delete them.&#xD;
  568. &#xD;
  569. 2. Start the virtual machine.&#xD;
  570. &#xD;
  571. 3. Use cfdisk to create a new logical partition in the free space of the virtual disk. Use type 8e - Linux LVM. Note: fdisk did not see the free space on the device. The new partition is /deb/sda6 in this example.&#xD;
  572. &#xD;
  573. 4. REBOOT the virtual machine. In our tests the change to the partition table was not visible after exiting cfdisk.&#xD;
  574. # reboot&#xD;
  575. &#xD;
  576. 5. Create a physical volume:&#xD;
  577. # pvcreate /dev/sda6&#xD;
  578.   Physical volume "/dev/sda6" successfully created&#xD;
  579. &#xD;
  580. 6. Use lvdisplay to look up the name of the volume group currently in use:&#xD;
  581. # lvdisplay&#xD;
  582.   --- Logical volume ---&#xD;
  583.   LV Name                /dev/mongo1/root&#xD;
  584.   VG Name                mongo1&#xD;
  585.   LV UUID                wi9dRo-fS0C-xSCd-fbei-el9R-vpVi-0QEiIR&#xD;
  586.   LV Write Access        read/write&#xD;
  587.   LV Status              available&#xD;
  588.   # open                 1&#xD;
  589.   LV Size                9,29 GiB&#xD;
  590.   Current LE             2379&#xD;
  591.   Segments               1&#xD;
  592.   Allocation             inherit&#xD;
  593.   Read ahead sectors     auto&#xD;
  594.   - currently set to     256&#xD;
  595.   Block device           251:0&#xD;
  596. &#xD;
  597. 7. Add the physical volume to the volume group found in the field 'VG Name':&#xD;
  598. # vgextend mongo1 /dev/sda6&#xD;
  599.   Volume group "mongo1" successfully extended&#xD;
  600. &#xD;
  601. 8. Now you can try to extend the existing logical volume (as named in field 'LV Name' above). If the given size increase (20GB in this example) is more than is available in the disk group, the error message will indicate the number of blocks available:&#xD;
  602. # lvextend -L +20G /dev/mapper/mongo1-root&#xD;
  603.   Extending logical volume root to 29,29 GiB&#xD;
  604.   Insufficient free space: 5120 extents needed, but only 5119 available&#xD;
  605. &#xD;
  606. Retry with the number of blocks taken from this error message: &#xD;
  607. # lvextend -l +5119 /dev/mapper/mongo1-root&#xD;
  608.   Extending logical volume root to 29,00 GiB&#xD;
  609.   Logical volume root successfully resized&#xD;
  610. &#xD;
  611. 9. Resize the filesystem (sorry for the german output -- this is the only command that used the locale setting...):&#xD;
  612. # resize2fs /dev/mapper/mongo1-root&#xD;
  613. resize2fs 1.41.11 (14-Mar-2010)&#xD;
  614. Das Dateisystem auf /dev/mapper/mongo1-root ist auf / eingehängt; Online-Grössenveränderung nötig&#xD;
  615. old desc_blocks = 1, new_desc_blocks = 2&#xD;
  616. Führe eine Online-Grössenänderung von /dev/mapper/mongo1-root auf 5241856 (4k) Blöcke durch.&#xD;
  617. Das Dateisystem auf /dev/mapper/mongo1-root ist nun 5241856 Blöcke gross.&#xD;
  618. &#xD;
  619. </description><pubDate>Thu, 17 Feb 2011 10:45:36 +0100</pubDate><guid>http://underscore.at/id_69</guid></item><item><title>Trivia: Adding Linux Swapspace</title><link>http://underscore.at/id_67</link><description>dd if=/dev/zero of=/swapfile bs=1M count=2048&#xD;
  620. mkswap /swapfile&#xD;
  621. swapon /swapfile&#xD;
  622. &#xD;
  623. Don't forget to also add the last command (swapon) to the system startup scripts (e.g. in /etc/rc.local).</description><pubDate>Sun, 13 Feb 2011 08:16:38 +0100</pubDate><guid>http://underscore.at/id_67</guid></item><item><title>ORA-00603: ORACLE server session terminated by fatal error</title><link>http://underscore.at/id_66</link><description>If you keep getting ORA-00603 or ORA-00600 errors on commit, watch out for any materialized views and change them from 'refresh on commit' to 'refresh on demand'.&#xD;
  624. &#xD;
  625. The error messages look like this:&#xD;
  626. ORA-00603: ORACLE server session terminated by fatal error&#xD;
  627. ORA-00600: internal error code, arguments: [4080], [1], [131], [], [], [], [], []</description><pubDate>Fri, 13 Aug 2010 09:32:03 +0200</pubDate><guid>http://underscore.at/id_66</guid></item><item><title>Fileupload in Servlets</title><link>http://underscore.at/id_65</link><description>Due to a problem with UTF-8 encoded data I recently switched from the old (in my case *very* old) com.oreilly.servlet.MultiPartRequest to Apache Commons FileUpload. Big mistake.&#xD;
  628. &#xD;
  629. As often the commons package promises everything and the kitchen sink but in truth simply is not up to the job. In this case there are several things that annoyed me:&#xD;
  630. &#xD;
  631. *) The interface to the parsed request data. Why can't I access parameters by name? Why do I have to collect them into a ServletRequest-like structure myself? I will upload the resulting helper class here soon... in case someone else can't do the obvious: switch to another library.&#xD;
  632. &#xD;
  633. *) UTF-8 data does not work. The only position FileUpload accepts an encoding string is via setHeaderEncoding() -- which definitly does not influence parsing of request data... So every string read from a request field must be converted to UTF-8 by hand:&#xD;
  634. &#xD;
  635. String value = new String (fileItem.getString().getBytes("iso-8859-1"), "UTF-8");&#xD;
  636. &#xD;
  637. Today I downloaded a fresh copy of the com.oreilly.servlets package, added the encoding parameter to the constructor call of MultiPartRequest and it just works. The lesson is: avoid Apache commons wherever possible. Note: please read the licensing info of the com.oreilly.servlet package, which boils down to the fact that each member of the development team should own a copy of the corresponding O'Reilly book 'Java Servlet Programming', which is excellent but was not updated quite a while.</description><pubDate>Tue, 10 Aug 2010 09:40:01 +0200</pubDate><guid>http://underscore.at/id_65</guid></item><item><title>Blackberry Protect</title><link>http://underscore.at/id_64</link><description>Nice service from Blackberry: features which were only available on BES now come to BIS users as well: remote backup, lock and sweep. Service is in closed beta right now, open beta is expected for fall 2010. Said to be free except for mobile data charges.</description><pubDate>Tue, 13 Jul 2010 10:50:40 +0200</pubDate><guid>http://underscore.at/id_64</guid></item><item><title>Amazon</title><link>http://underscore.at/id_63</link><description>Amazon seems to try to act as a Copyright Cop recently: the large view of book covers is protected by futile measures to prevent saving these images. A simple look into the local browser cache (assisted by Firefox through means Page Info -&gt; Media) reveals everything needed...</description><pubDate>Fri, 09 Jul 2010 02:24:37 +0200</pubDate><guid>http://underscore.at/id_63</guid></item><item><title>Favourite Safari Extensions</title><link>http://underscore.at/id_62</link><description>Nice to see the most welcome Safari Extension to become available within just days of the Safari 5 release: AdBlock for Safari.&#xD;
  638. Another essential tool for readers of certain german pages like DerStandard.at: Binnen-X removes the typing errors that manifest themselves in inline uppercase letter 'i'.</description><pubDate>Mon, 14 Jun 2010 01:04:12 +0200</pubDate><guid>http://underscore.at/id_62</guid></item><item><title>IDEA with Mercurial Plugin</title><link>http://underscore.at/id_61</link><description>When using IntelliJ IDEA 9 with the Mercurial plugin hg4idea, I've had problems updating local repositories from the central mercurial-server, suggesting to use 'hg rebase' while mentioning MQ patches.&#xD;
  639. Turns out that this plugin needs the MQ extension enabled in the Mercurial commandline client. Configure this extension by adding the following lines to your ~/.hgrc:&#xD;
  640. &#xD;
  641. [extensions]&#xD;
  642. hgext.mq =&#xD;
  643. &#xD;
  644. No value is necessary as this is a standard extension and hg will find the necessary library within its installation path.</description><pubDate>Mon, 01 Mar 2010 12:58:53 +0100</pubDate><guid>http://underscore.at/id_61</guid></item><item><title>Graphical Mercurial Client for MacOS X</title><link>http://underscore.at/id_60</link><description>A graphical client to the DVCS Mercurial for MacOS X 10.5+, written in Objective-C. Looks quite promising.</description><pubDate>Fri, 05 Feb 2010 12:37:41 +0100</pubDate><guid>http://underscore.at/id_60</guid></item><item><title>Hardening Tomcat</title><link>http://underscore.at/id_59</link><description>A detailed, 56-page guide to hardening Apache Tomcat. Link found via Mulesoft / Sateesh Narahari.</description><pubDate>Wed, 03 Feb 2010 05:57:46 +0100</pubDate><guid>http://underscore.at/id_59</guid></item><item><title>Supercookies</title><link>http://underscore.at/id_58</link><description>Nice Firefox-Plugin to handle Flash-Cookies: Better Privacy. Recommended.</description><pubDate>Mon, 01 Feb 2010 10:41:40 +0100</pubDate><guid>http://underscore.at/id_58</guid></item><item><title>Spam-Templates</title><link>http://underscore.at/id_57</link><description>Nice approach to filtering spam -- actually something I do manually right now. This filter collects multiple messages and tries to find the underlying template which is 'randomized' by words inserted from a limited-size dictionary. It reaches less than 1% false positives after gathering 100 spam-mails and gets even better with more... Might put some additional work on the spammers to evade this.</description><pubDate>Wed, 27 Jan 2010 09:14:22 +0100</pubDate><guid>http://underscore.at/id_57</guid></item><item><title>Nexus One</title><link>http://underscore.at/id_56</link><description>Good balanced review by Engadget regarding the much-hyped Nexus One.&#xD;
  645. From the article:&#xD;
  646. "Industry politics aside, though, the Nexus One is at its core just another Android smartphone. It's a particularly good one, don't get us wrong -- certainly up there with the best of its breed -- but it's not in any way the Earth-shattering, paradigm-skewing device the media and community cheerleaders have built it up to be. It's a good Android phone, but not the last word -- in fact, if we had to choose between this phone or the Droid right now, we would lean towards the latter."&#xD;
  647. &#xD;
  648. Thats quite to the point. And the missing keyboard is still a no go to me.</description><pubDate>Thu, 07 Jan 2010 04:53:58 +0100</pubDate><guid>http://underscore.at/id_56</guid></item><item><title>CSS Snowflakes</title><link>http://underscore.at/id_55</link><description>Title says it all...&#xD;
  649. Note: works best in Safari or Chrome. And this is just JavaScript and CSS, not Flash. The time, CSS3 is supported by all major browsers is the time, Adobe should start worrying...</description><pubDate>Thu, 31 Dec 2009 06:11:09 +0100</pubDate><guid>http://underscore.at/id_55</guid></item><item><title>Daring Fireball nonsense</title><link>http://underscore.at/id_54</link><description>Regarding the half-official Google Nexus One phone Gruber states:&#xD;
  650. &#xD;
  651. "The big advantage over the Droid: no hardware keyboard."&#xD;
  652. &#xD;
  653. There are times when this otherwise brilliant commenter simply does not get it: no keyboard means 'I won't buy it' for a whole lot of people. Me included -- mostly due to my constant fighting with the iPhones implementation of a soft-keyboard, which sure is better than most other implementations but still ridiculously inferior to e.g. the Blackberry Bold keyboard.&#xD;
  654. &#xD;
  655. So I see the Droids Keyboard as its main advantage over other offerings... its the one feature that makes me consider to try it out. I definitely won't try the Nexus One which is missing this feature.</description><pubDate>Mon, 14 Dec 2009 09:48:11 +0100</pubDate><guid>http://underscore.at/id_54</guid></item><item><title>Google Chrome Beta for Mac</title><link>http://underscore.at/id_53</link><description>Google finally released Chrome for Mac into Beta status. Which is generally good news, although I will not use it for general browsing due to its 'active interest' in my browsing habits. But its excellent JavaScript performance and miniscule memory footprint (at least so far) make it worthwile running it in the background just for accessing my GMail account.&#xD;
  656. &#xD;
  657. Besides that at some point in the future a port of Iron, a version of Chromium without many of the (intentional) shortcommings of Google Chrome might also be ported to the Mac.</description><pubDate>Wed, 09 Dec 2009 04:50:20 +0100</pubDate><guid>http://underscore.at/id_53</guid></item><item><title>Android 2</title><link>http://underscore.at/id_52</link><description>A nice overview of the changes Android 2.0 brings to the table. Sounds as if it will give Apple a run for its money -- and make the idiotic design decisions (read: AppStore, background processes, API limitations) even more obvious.</description><pubDate>Wed, 09 Dec 2009 12:32:28 +0100</pubDate><guid>http://underscore.at/id_52</guid></item><item><title>Micro-Windows PDA</title><link>http://underscore.at/id_51</link><description>Coming with a bit of Psion reminiscence: a kind of Atom-based PDA with a keyboard, 1GB RAM, 800x480 screen running Windows. Interesting.</description><pubDate>Mon, 07 Dec 2009 02:27:17 +0100</pubDate><guid>http://underscore.at/id_51</guid></item><item><title>Helpdesk</title><link>http://underscore.at/id_50</link><description>How to complain about a malfunctioning vacuum cleaner:&#xD;
  658. "This thing sucks. That is... actually it doesn't."</description><pubDate>Mon, 16 Nov 2009 01:06:19 +0100</pubDate><guid>http://underscore.at/id_50</guid></item><item><title>JavaScript grows up</title><link>http://underscore.at/id_49</link><description>Besides being a complete scripting language in its own right (with some actually quite interesting design decisions -- as well as some fatal ones), recent advances in interpreter technology helped JavaScript gain acceptance as a client interface scripting language.&#xD;
  659. Looking beyond what is now being done with web applications utilizing AJAX, more performance sensitive areas like gaming seem to come into reach. Displace Flash -- how nice this prospect sounds... hope it becomes real rather sooner than later.</description><pubDate>Mon, 09 Nov 2009 01:09:38 +0100</pubDate><guid>http://underscore.at/id_49</guid></item><item><title>Apples blunder, pt. 1001</title><link>http://underscore.at/id_48</link><description>Next really bad story of Apple getting it wrong with their AppStore... The just seem to not get it. Still glad my iPhone is sold already...</description><pubDate>Sun, 08 Nov 2009 10:54:28 +0100</pubDate><guid>http://underscore.at/id_48</guid></item><item><title>ZFS</title><link>http://underscore.at/id_47</link><description>Apples lame decision to drop ZFS from its future goals or MacOS X gets special treatment by Sun: ZFS gets inline deduplication. Besides other advanced features already present in the current version such as integrated RAID support, pooled storage and snapshots, this makes me doubt that Apple can come up with something even remotely as powerful...</description><pubDate>Tue, 03 Nov 2009 10:16:10 +0100</pubDate><guid>http://underscore.at/id_47</guid></item><item><title>Really bad...</title><link>http://underscore.at/id_46</link><description>Why do Ubuntu releases have to have these really idiotic names? Like 'Karmic Koala'... I'm just waiting for a version going by 'Sterioidal Snail' or something like that...</description><pubDate>Fri, 23 Oct 2009 09:32:08 +0200</pubDate><guid>http://underscore.at/id_46</guid></item><item><title>SCO leaving the Past behind</title><link>http://underscore.at/id_45</link><description>Seems as his last crusade is over: Darl McBride is history. At least as SCOs CEO, they kicked him in an effort to recover from bankruptcy. Good move...</description><pubDate>Tue, 20 Oct 2009 04:27:14 +0200</pubDate><guid>http://underscore.at/id_45</guid></item><item><title>Intellij IDEA goes Open Source</title><link>http://underscore.at/id_44</link><description>Quite a bold move by Jetbrains, the people behind what I consider to be the best Java IDE by far: starting with Version 9 (soon to be released) they will split into two version, IDEA Community Edition and Ultimate Edition. While the latter remains a commercial offer, primarily targeting J2EE devlopers, the former will be published under the Apache 2.0 license.&#xD;
  660. &#xD;
  661. One might suspect the free offer to be so crippled that it will just draw potential customers to IDEA and then convert them to commercial licenses. This seems not to be the case: while having a clear focus on J2SE, the Community Edition retains all the features that made IDEA a great offer for J2SE developers (even the powerful refactoring capabilities seem to be intact) while gaining additional support features for Groovy and Scala development.&#xD;
  662. &#xD;
  663. I'm really looking forward to a greatly expanded IDEA audience. Many of those choosing Eclipse just because it is free now can reconsider their choice...</description><pubDate>Fri, 16 Oct 2009 09:18:17 +0200</pubDate><guid>http://underscore.at/id_44</guid></item><item><title>Internal affairs: RSS feed validated</title><link>http://underscore.at/id_43</link><description>Problems with Google Reader due to an unusual timestamp format should now be resolved, the feed is now valid (some missing fields were added, too).&#xD;
  664. The RSS timestamp format can be produced with the following Java code:&#xD;
  665. &#xD;
  666. SimpleDateFormat rssDateFormat = new SimpleDateFormat("E, dd MMM yyyy hh:mm:ss Z");&#xD;
  667. </description><pubDate>Tue, 06 Oct 2009 08:44:41 +0200</pubDate><guid>http://underscore.at/id_43</guid></item><item><title>Palm supports developers...</title><link>http://underscore.at/id_42</link><description>Now this looks like developer support should be: Palm intends to share not only technical documents but even statistical data with their developers. Not to mention that there is no 'app review process' getting in the way. Just imagine what the iPhone plattform would look like without Apple dictating what their users are allowed to do -- of course having only their customers on mind... Or just their money?</description><pubDate>Tue, 06 Oct 2009 10:49:28 +0200</pubDate><guid>http://underscore.at/id_42</guid></item><item><title>Blackberry Desktop for Mac</title><link>http://underscore.at/id_41</link><description>Seems already to be available for Download...</description><pubDate>Fri, 02 Oct 2009 05:39:21 +0200</pubDate><guid>http://underscore.at/id_41</guid></item><item><title>Wave</title><link>http://underscore.at/id_40</link><description>Besides the quite interesting new take on communication, this one quote from an ARS Technica article about Google Wave highlights one of the really interesting points the technology demo makes:&#xD;
  668. &#xD;
  669. "Wave's dependence on the latest and greatest browser features are a characteristic that makes the service particularly interesting to Web developers. It sheds light on what the Web would look like without Internet Explorer and it provides an early glimpse at the next generation of Web applications—massively concurrent, highly interactive, and deeply collaborative."&#xD;
  670. &#xD;
  671. Imagine a Web without the restrictions imposed by Internet Explorer... Might be worth fighting for. And Google Wave could prove to be a major milestone in this war as it seems to garner a *lot* of interest.</description><pubDate>Thu, 01 Oct 2009 10:43:58 +0200</pubDate><guid>http://underscore.at/id_40</guid></item><item><title>Linux Kernel increasingly inefficient</title><link>http://underscore.at/id_39</link><description>I knew it...&#xD;
  672. OK, it *does* support numerous plattforms and gazillions of features (almost nobody actually uses btw.). But wouldn't it be better to make these parts optional? Micro-kernel anyone? Would of course collide with the current development model -- but maybe this would also be a good time to rethink that as well.</description><pubDate>Tue, 22 Sep 2009 02:11:35 +0200</pubDate><guid>http://underscore.at/id_39</guid></item><item><title>Bolts 1.0 Functional Programming Library for Java</title><link>http://underscore.at/id_38</link><description>While I still prefer Scala due to its concise syntax and ingenious type inference, this is certainly helpful when making functional programming more widely accessible. And the Collections API does look much nicer when seen through Bolts...</description><pubDate>Tue, 15 Sep 2009 10:06:42 +0200</pubDate><guid>http://underscore.at/id_38</guid></item><item><title>Blackberry Tethering for Mac and Linux</title><link>http://underscore.at/id_37</link><description>Interesting solution to a not-so-uncommon problem: Tethering with a Blackberry when not running Windows. Berry4All does it -- and for free.</description><pubDate>Tue, 15 Sep 2009 10:03:47 +0200</pubDate><guid>http://underscore.at/id_37</guid></item><item><title>Background Apps</title><link>http://underscore.at/id_36</link><description>So, background apps are bad for you which is why Apple protects you from them?&#xD;
  673. Well, it seems that paying extra might leverage the possible harm... WTF?</description><pubDate>Sat, 05 Sep 2009 05:42:41 +0200</pubDate><guid>http://underscore.at/id_36</guid></item><item><title>Petabytes</title><link>http://underscore.at/id_35</link><description>Interesting article detailing the parts of a massive storage system at reasonable costs: 67 TB under USD 8000,-. Interesting price comparison with other storage vendors is included.</description><pubDate>Thu, 03 Sep 2009 09:45:08 +0200</pubDate><guid>http://underscore.at/id_35</guid></item><item><title>Is Nokia waking up?</title><link>http://underscore.at/id_34</link><description>Maybe the still dominant but sleeping giant is returning to life... two new products about to be released look quite promising: for once, Nokia is entering the netbook space with a quite stylish thing offering built-in HSPA capabilities (should come as natural given Nokias heritage) and -- more interesting to me -- a smartphone with a really freshened up user interface.&#xD;
  674. &#xD;
  675. Acutally I did never understand the Symbian critics as I do not consider the OS to be the culprit in Nokias cramped interfaces... nevertheless its Linux-based OS Maemo looks quite promising. Having a hardware keyboard is still the killer feature for me.</description><pubDate>Tue, 01 Sep 2009 10:00:18 +0200</pubDate><guid>http://underscore.at/id_34</guid></item><item><title>Mercurial on MacOS X</title><link>http://underscore.at/id_32</link><description>When installing Mercurial from source using 'make install' it copies its support files to the directory /usr/local/lib/python2.5/site-packages/&#xD;
  676. Running 'hg debuginstall' gives an error like this:&#xD;
  677. abort: couldn't find mercurial libraries in [...]&#xD;
  678. &#xD;
  679. To correct this do the following:&#xD;
  680. &#xD;
  681. sudo mv /usr/local/lib/python2.5/site-packages/hgext/ /Library/Python/2.5/site-packages/&#xD;
  682. sudo mv /usr/local/lib/python2.5/site-packages/mercurial-1.3-py2.5.egg-info /Library/Python/2.5/site-packages/&#xD;
  683. sudo mv /usr/local/lib/python2.5/site-packages/mercurial/ /Library/Python/2.5/site-packages/&#xD;
  684. &#xD;
  685. 'hg debuginstall' should now run fine.&#xD;
  686. &#xD;
  687. 2009/07/22:&#xD;
  688. Added link to Mercurial binaries for Mac. Version 1.3 is already present there.</description><pubDate>Wed, 22 Jul 2009 10:05:11 +0200</pubDate><guid>http://underscore.at/id_32</guid></item><item><title>Mercurial default push repository</title><link>http://underscore.at/id_33</link><description>To set the default repository to push changes to open .hg/hgrc within the project and add the following section (replacing the mercurial-server and the project-name parts of the URL appropriatly):&#xD;
  689. &#xD;
  690. [paths]&#xD;
  691. default = ssh://[email protected]&lt;mercurial-server&gt;/&lt;project-name&gt;&#xD;
  692. &#xD;
  693. Note that this default entry is created for you each time you clone a remote repository.&#xD;
  694. &#xD;
  695. You can add more short names to this section to use them in push and pull commands, just replace 'default' with the name like this:&#xD;
  696. &#xD;
  697. ted = ssh://[email protected]/teds-project&#xD;
  698. &#xD;
  699. and use them:&#xD;
  700. &#xD;
  701. hg push ted&#xD;
  702. hg pull ted&#xD;
  703. </description><pubDate>Wed, 22 Jul 2009 09:26:22 +0200</pubDate><guid>http://underscore.at/id_33</guid></item><item><title>Gitosis Problem</title><link>http://underscore.at/id_31</link><description>As gitosis suddenly told me the following when doing a push:&#xD;
  704. &#xD;
  705. $ git push&#xD;
  706. Traceback (most recent call last):&#xD;
  707.  File "/usr/bin/gitosis-serve", line 8, in &lt;module&gt;&#xD;
  708.    load_entry_point('gitosis==0.2', 'console_scripts', 'gitosis-serve')()&#xD;
  709.  File "/usr/lib/python2.5/site-packages/gitosis-0.2-py2.5.egg/gitosis/app.py", line 24, in run&#xD;
  710.    return app.main()&#xD;
  711.  File "/usr/lib/python2.5/site-packages/gitosis-0.2-py2.5.egg/gitosis/app.py", line 38, in main&#xD;
  712.    self.handle_args(parser, cfg, options, args)&#xD;
  713.  File "/usr/lib/python2.5/site-packages/gitosis-0.2-py2.5.egg/gitosis/serve.py", line 204, in handle_args&#xD;
  714.    os.execvp('git', ['git', 'shell', '-c', newcmd])&#xD;
  715.  File "/usr/lib/python2.5/os.py", line 354, in execvp&#xD;
  716.    _execvpe(file, args)&#xD;
  717.  File "/usr/lib/python2.5/os.py", line 392, in _execvpe&#xD;
  718.    func(fullname, *argrest)&#xD;
  719. OSError: [Errno 2] No such file or directory&#xD;
  720. fatal: The remote end hung up unexpectedly&#xD;
  721. &#xD;
  722. The reason was taht unexplicably it somehow forgot a path (git is installed unter /usr/local on that server). Adding a symlink on the server&#xD;
  723. &#xD;
  724. ln -s /usr/local/bin/git /usr/bin&#xD;
  725. &#xD;
  726. solved the problem. Adding the PATH variable to the users homedirectories .bashrc (and/or .profile) did not help.</description><pubDate>Mon, 20 Jul 2009 06:02:28 +0200</pubDate><guid>http://underscore.at/id_31</guid></item><item><title>Apache</title><link>http://underscore.at/id_30</link><description>A typical state of Apache projects (except the Webserver) can be watched at the website presenting the Apache Logging / Log4J project:&#xD;
  727. Version 2 is "an experimental development branch for logging services designed for Java 5 and later." -- which in my understanding means, it was started several years ago (when Java 5 was new) and made no progress to date.&#xD;
  728. Better even the status of the 1.3 Branch: "log4j 1.3 development has been abandoned and no future releases or development is anticipated". The icing on this cake is the next sentence: "Users of log4j 1.3 are encouraged to migrate to log4j 1.2". No more questions, thank you.</description><pubDate>Thu, 16 Jul 2009 03:48:49 +0200</pubDate><guid>http://underscore.at/id_30</guid></item><item><title>Speed</title><link>http://underscore.at/id_28</link><description>So much regarding the 'S' in the latest iPhone generations name representing 'Speed': its upstream bandwidth is limited to 384Kpbs... HSUPA anyone?</description><pubDate>Fri, 10 Jul 2009 01:58:37 +0200</pubDate><guid>http://underscore.at/id_28</guid></item><item><title>Groovy Creator James Strachan on Scala</title><link>http://underscore.at/id_27</link><description>The main point reflecting my own considerations on the subject Groovy vs. Scala:&#xD;
  729. "I can honestly say if someone had shown me the Programming Scala book by by Martin Odersky, Lex Spoon &amp; Bill Venners back in 2003 I'd probably have never created Groovy."&#xD;
  730. &#xD;
  731. I really like Scala being a statically typed language. And the elegant functional extensions to the object oriented modell are well worth learning this new language...</description><pubDate>Tue, 07 Jul 2009 05:29:19 +0200</pubDate><guid>http://underscore.at/id_27</guid></item><item><title>Blackberry RSS Reader</title><link>http://underscore.at/id_26</link><description>Looking for a RSS reader that syncs with your desktop reader? This might be the right one: in addition to the well-known iPhone companion to FeedDaemon/NetNewsWire on the desktop there is a Blackberry and Windows Mobile solutions available as well. The interface is lagging behind the iPhone version but still usable.</description><pubDate>Tue, 07 Jul 2009 09:27:44 +0200</pubDate><guid>http://underscore.at/id_26</guid></item><item><title>PostgreSQL 8.4</title><link>http://underscore.at/id_25</link><description>Interesting additions to the administration tool suite (from the press release):&#xD;
  732. &#xD;
  733.    *  Parallel Database Restore, speeding up recovery from backup up to 8 times&#xD;
  734.    * Per-Column Permissions, allowing more granular control of sensitive data&#xD;
  735.    * Per-database Collation Support, making PostgreSQL more useful in multi-lingual environments&#xD;
  736.    * In-place Upgrades through pg_migrator (beta), enabling upgrades from 8.3 to 8.4 without extensive downtime&#xD;
  737.    * New Query Monitoring Tools, giving administrators more insight into query activity&#xD;
  738.    * Greatly Reduced VACUUM Overhead through the Visibility Map&#xD;
  739.    * New Monitoring Tools for current queries, query load and deadlocks&#xD;
  740. &#xD;
  741. </description><pubDate>Tue, 07 Jul 2009 09:20:10 +0200</pubDate><guid>http://underscore.at/id_25</guid></item><item><title>Database maintainance</title><link>http://underscore.at/id_24</link><description>Automate Database maintainance: this tool keeps track which update scripts have already been applied to a database to help keep development and production database updates in sync.</description><pubDate>Tue, 07 Jul 2009 09:18:22 +0200</pubDate><guid>http://underscore.at/id_24</guid></item><item><title>David Pollak interview</title><link>http://underscore.at/id_23</link><description>David Pollak on Scala and Lift.&#xD;
  742. &#xD;
  743. Interesting excerpt regarding a test by Martin Odersky on perception of code:&#xD;
  744. "...no matter whether they were looking at Scala, Ruby or Java, they spent almost exactly the same time per language token looking at code, so if you say how few language tokens can we use to express our business logic, that's how fast somebody can look at the code and perceive it, that's how fast somebody can write the code because no matter what language you are writing in you write about the same number of line of code per day."</description><pubDate>Wed, 24 Jun 2009 03:09:09 +0200</pubDate><guid>http://underscore.at/id_23</guid></item><item><title>Monospaced Fonts for Programming</title><link>http://underscore.at/id_18</link><description>A nice list of Fonts for programmers... Courier might not be your best bet ;-)&#xD;
  745. &#xD;
  746. Update 16.06.2009:&#xD;
  747. Tried Consolas for a while and now switched to Anonymous Pro. Consolas 'f' tends to irritate me.</description><pubDate>Tue, 16 Jun 2009 11:27:29 +0200</pubDate><guid>http://underscore.at/id_18</guid></item><item><title>Lift Webapplication Framework</title><link>http://underscore.at/id_22</link><description>As each language needs a webapplication framework these days, here is Scalas take: Lift. Combining some ideas from Rails (such as sensible configuration defaults) with the basic abilities of the functional-objectorientied hybrid language Scala (utilizing for example the Actor library) this framework sounds quite compelling.</description><pubDate>Mon, 08 Jun 2009 05:47:29 +0200</pubDate><guid>http://underscore.at/id_22</guid></item><item><title>Optimizing massive DELETE operations</title><link>http://underscore.at/id_21</link><description>Interesting article on how to get optimal performance when deleting vast amounts of data while keeping some records (i.e. no TRUNCATE). Essentially the trick is inserting data to keep into a temporary table using direct-path INSERT on a table without a primary key index.</description><pubDate>Thu, 04 Jun 2009 02:06:06 +0200</pubDate><guid>http://underscore.at/id_21</guid></item><item><title>Howto Add Ringtones to your Blackberry</title><link>http://underscore.at/id_20</link><description>A detailed Howto-guide on adding custom ringtones to your Blackberry device by mail, by download or by PC/Mac.</description><pubDate>Thu, 04 Jun 2009 12:29:10 +0200</pubDate><guid>http://underscore.at/id_20</guid></item><item><title>Unix, Windows and programming language timelines</title><link>http://underscore.at/id_19</link><description>As the title says: a graphical timeline of the evolution of Unix and related systems, of Windows and of sme programming languages. Interesting cubicle wallpaper...</description><pubDate>Wed, 27 May 2009 02:59:47 +0200</pubDate><guid>http://underscore.at/id_19</guid></item><item><title>Sphinx fulltext search engine</title><link>http://underscore.at/id_16</link><description>Nice article over at The Register outlining the story of Sphinx, the open source fulltext search engine powering craigs lists as well as other high profile sites.&#xD;
  748. From the article:&#xD;
  749. '... the Apache Foundation, of course, widely known as a cruel experiment to see what happens when bureaucrats do open source.'&#xD;
  750. Full ACK.</description><pubDate>Mon, 11 May 2009 02:50:25 +0200</pubDate><guid>http://underscore.at/id_16</guid></item><item><title>Standards...</title><link>http://underscore.at/id_15</link><description>... help you differentiate your product from other vendors by eliminating the chance of unintended compatibility: you know what to avoid...</description><pubDate>Mon, 11 May 2009 01:36:11 +0200</pubDate><guid>http://underscore.at/id_15</guid></item><item><title>Will Oracle kill MySQL?</title><link>http://underscore.at/id_14</link><description>The corrent answer as of the articlet linked below: who cares? Could not say this any better...&#xD;
  751. &#xD;
  752. From the article:&#xD;
  753. "Years ago, it [the open source community] taught Larry Ellison hate. Now, Ellison is teaching it fear."</description><pubDate>Wed, 06 May 2009 01:09:57 +0200</pubDate><guid>http://underscore.at/id_14</guid></item><item><title>Using Intellij IDEA on windows as a client to a gitosis server </title><link>http://underscore.at/id_13</link><description>Install the native Windows port msysGit from the Google Code page and follow the SSH public key setup instructions by Kyle Cordes given in the section 'Create your SSH Key'.</description><pubDate>Tue, 05 May 2009 09:05:02 +0200</pubDate><guid>http://underscore.at/id_13</guid></item><item><title>Comment-Spam</title><link>http://underscore.at/id_12</link><description>This service sounds quite interesting... I'll try to integrate this with my own CMS XMLServ and maybe open a comments section at site. Free for personal use.</description><pubDate>Mon, 04 May 2009 01:41:54 +0200</pubDate><guid>http://underscore.at/id_12</guid></item><item><title>IP Subnet Calculator</title><link>http://underscore.at/id_11</link><description>OK, the 10.000. instance of a solution to this minor problem. But nevertheless usable.</description><pubDate>Mon, 04 May 2009 12:18:30 +0200</pubDate><guid>http://underscore.at/id_11</guid></item><item><title>Using Jetty with an Apache mod_proxy load balancer</title><link>http://underscore.at/id_10</link><description>How to force Jetty to use a host identifier in its session cookie values to enable Apache mod_proxy load balancing.</description><pubDate>Thu, 30 Apr 2009 02:04:01 +0200</pubDate><guid>http://underscore.at/id_10</guid></item><item><title>Gitosis</title><link>http://underscore.at/id_9</link><description>Gitosis Error when trying to add another repository: Repository read access denied</description><pubDate>Tue, 28 Apr 2009 06:20:10 +0200</pubDate><guid>http://underscore.at/id_9</guid></item><item><title>Scala</title><link>http://underscore.at/id_8</link><description>Looking for a imperative/functional hybrid language running on top of the JVM? Take a look at Scala, the brainchild of Martin Odorsky.&#xD;
  754. Twitter adapted this language for their backend processing due to performance reasons (the interface still uses Ruby on Rails), IDEA supports it via a plugin, there is already some literature available...</description><pubDate>Tue, 28 Apr 2009 12:45:58 +0200</pubDate><guid>http://underscore.at/id_8</guid></item><item><title>Opera is 15</title><link>http://underscore.at/id_7</link><description>A nice browser... Several features now taken for granted in every (?) modern browser originated here. While Mac support is not still ideal, I still like it for once being a really fast browser on old hardware (were using it actively when my Sun workstation showed its age...)&#xD;
  755. &#xD;
  756. only real complaint is the missing AdBlock ;-)</description><pubDate>Tue, 28 Apr 2009 12:14:07 +0200</pubDate><guid>http://underscore.at/id_7</guid></item><item><title>Reset Macbook/Air/Pro SMC</title><link>http://underscore.at/id_6</link><description>How to reset the System Management Controller (SMC) on current Macbook, Macbook Air and Macbook Pro laptops.</description><pubDate>Mon, 27 Apr 2009 10:38:03 +0200</pubDate><guid>http://underscore.at/id_6</guid></item><item><title>PDF inline display</title><link>http://underscore.at/id_5</link><description>How to use iframes to display PDF files inline within HTML pages.</description><pubDate>Mon, 27 Apr 2009 10:30:12 +0200</pubDate><guid>http://underscore.at/id_5</guid></item><item><title>Debian: set default encoding</title><link>http://underscore.at/id_4</link><description>One of the really dark corners of configuration as well as programming: encoding.</description><pubDate>Mon, 27 Apr 2009 10:27:09 +0200</pubDate><guid>http://underscore.at/id_4</guid></item><item><title>CSS Image techniques</title><link>http://underscore.at/id_3</link><description>Some interesting stuff regarding image manipuation using CSS2</description><pubDate>Mon, 27 Apr 2009 10:24:41 +0200</pubDate><guid>http://underscore.at/id_3</guid></item><item><title>Manually add users under MacOS X Leopard</title><link>http://underscore.at/id_2</link><description>Unfortunately not as easy as editing /etc/passwd...</description><pubDate>Mon, 27 Apr 2009 10:22:03 +0200</pubDate><guid>http://underscore.at/id_2</guid></item></channel></rss>

If you would like to create a banner that links to this page (i.e. this validation result), do the following:

  1. Download the "valid RSS" banner.

  2. Upload the image to your own server. (This step is important. Please do not link directly to the image on this server.)

  3. Add this HTML to your page (change the image src attribute if necessary):

If you would like to create a text link instead, here is the URL you can use:

http://www.feedvalidator.org/check.cgi?url=http%3A//underscore.at/underscore/rss.xml

Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda