Zeitaufwand ca. 1-2h, je nach Ausstattung des Hobbykellers - also durchaus noch morgen Nachmittag oder gar am 24. Vormittag zu schaffen. ;-)
2009-12-22
Last Minute Weihnachtsgeschenk
Ein Last-Minute Weihnachtsgeschenk in zwei Größenvarianten. Die angegebenen Größen der Grundplatten können als Orientierung dienen. Ansonsten kommt es auf die genauen Maße nicht an.
Zeitaufwand ca. 1-2h, je nach Ausstattung des Hobbykellers - also durchaus noch morgen Nachmittag oder gar am 24. Vormittag zu schaffen. ;-)
Zeitaufwand ca. 1-2h, je nach Ausstattung des Hobbykellers - also durchaus noch morgen Nachmittag oder gar am 24. Vormittag zu schaffen. ;-)
2009-12-10
CouchDB API: Inspect parameter
Labels:
couchdb
While playing with couchdb/couchapp often I want to inspect api function parameter. Javascript does not provide a buildin function to do some inspection but this one does a good job. After removing the logging stuff it can be used e.g. to inspect show function parameter.
Inspection show function can be found here.
Inspection show function can be found here.
Permission denied (publickey).
After successful configure github access using Win/msysgit I have to fight on the Linux front. Just copy the private key file generated with puttygen didnt work:
I neither enter a passphrase nor was able to change the empty phrase using ssh-keygen -P. :-|
To solve the problem I export the private key in OpenSSH format:
[thomo@sun .ssh]$ ssh git@github.com
Enter passphrase for key '/home/thomo/.ssh/thomo__github_private.ppk':
Permission denied (publickey).
I neither enter a passphrase nor was able to change the empty phrase using ssh-keygen -P. :-|
To solve the problem I export the private key in OpenSSH format:
2009-11-12
2009-11-03
CouchDB auf WinXP
- Installationspaket gibts hier
- Nach dem Installieren müssen noch in >installdir</bin/erl.ini zwei Pfade angepasst werden
- [Update]in couchdb.bat musste ich noch in der Zeile nach "setlocal"
%~d0
einfügen
Und dann ...
D:\Programme\CouchDB\bin>couchdb.bat
CouchDB 0.11.0b819947 - prepare to relax...
Eshell V5.7.2 (abort with ^G)
1> Apache CouchDB 0.11.0b819947 (LogLevel=info) is starting.
1> Apache CouchDB has started. Time to relax.
1> [info] [<0.35.0>] Apache CouchDB has started on http://127.0.0.1:5984/
bzw.
2009-10-18
2009-10-16
Ersatzakku für i-Blue 747 GPS Data logger
Labels:
Electronic,
Fun,
Geocaching,
GPS
Heute kam der Ersatzakku für mein i-Blue GPS Data logger. Da mir die Angebotenen Akkus mit der Typbezeichnung HX-N3650A zu preisintensiv waren, habe ich mich stattdessen für die Nokia Variante entschieden - BL-5C. Und siehe da er passt.
2009-07-18
Rake Task to show installed and pending migrations
Labels:
Rails
While developing with Rails I often want to know which migrations are already installed and which are pending. Migrations have names and version numbers. In some rake migration tasks you must specify a migration - but this must be the number :-|
To rest my brain I wrote two rake tasks to show the installed and pending migrations. Feel free to use it for your own - just copy it to a .rake file in your/lib/task directory.
See also pastie.org
To rest my brain I wrote two rake tasks to show the installed and pending migrations. Feel free to use it for your own - just copy it to a .rake file in your
namespace :db do
namespace :migrate do
desc 'Shows installed migrations'
task :installed => :environment do
mt = ActiveRecord::Migrator.new(:up, "db/migrate/")
list = mt.migrations.select{ |mi| mt.migrated.include?(mi.version.to_i) }
print_migration_list(list)
end
desc 'Shows pending migrations'
task :pending => :environment do
mt = ActiveRecord::Migrator.new(:up, "db/migrate/")
print_migration_list(mt.pending_migrations)
end
end
end
def print_migration_list(migrations)
return if migrations.empty?
max_length = migrations.inject(0) {|max, m| [max, m.name.length].max }
puts "Version Name"
puts "---------------" + "-" * max_length
migrations.each do |m|
puts "#{m.version} #{m.name}"
end
end
See also pastie.org
2009-07-14
Generic Cucumber Steps
Zwei generische Steps, die das Ergebnis erster Gehversuche mit Cucumber sind. (Factory = factory_girl)
# Match steps like:
# * And I have projects named A, B, C
Given /^I have .+ named (.+)$/ do |names|
names.split(', ').each do |name|
Factory.create(name)
end
end
# Match steps like:
# * And I should have 1 project
# * And I should have 5 users
Then /^I should have ([0-9]+) (.+)$/ do |count, classes|
Kernel.const_get(classes.singularize.capitalize).count.should == count.to_i
end
2009-06-17
SAT Receiver repariert
Labels:
Electronic
Nachdem ich erst letzte Woche auf dem Mainboard von meinem PC einen Elko ausgetauscht hatte, hat sich dann ein paar Tage später der SAT-Receiver gemeldet bzw. eben nicht mehr gemeldet. Zu erst ließ sich das Gerät nicht mehr aus dem Standby aufwecken, und dann ging es auch nach einem Power-Off/Power-On Zyklus nicht mehr an. Ein Blick auf die Netzteilplatine offenbarte dann die Schuldigen: 4 Elkos hatten sich verabschiedet (erkennbar an den gebogenen Deckeln).
Ersatz-Elkos waren schnell bestellt (Low-ESR Typen hab ich nicht auf Halde liegen, Infos zu ESR Elkos gibt es hier), heute kam die Lieferung, eingebaut und ... läuft wieder ;-)
Ersatz-Elkos waren schnell bestellt (Low-ESR Typen hab ich nicht auf Halde liegen, Infos zu ESR Elkos gibt es hier), heute kam die Lieferung, eingebaut und ... läuft wieder ;-)
2009-04-20
LED Matrix - Erste Versuche
Labels:
Electronic,
Project
Vor kurzen bin ich an ein LED-Matrix Modul gekommen. Typ: TLMM501B
Das Modul besitzt keinen Controller im eigentlichen Sinn, sondern lediglich zwei 256 Bit Schieberegister. Die Ansteuerung gestaltet sich damit etwas aufwendiger als zunächst angenommen.
Habe daher einen Microchip PIC als Ansteuer-IC verwendet, der in letzter Ausbaustufe ein serielles Interface zur Ansteuerung des Moduls zur Verfügung stellen soll.
Die ersten Ergebnisse sieht man hier:
Das Modul besitzt keinen Controller im eigentlichen Sinn, sondern lediglich zwei 256 Bit Schieberegister. Die Ansteuerung gestaltet sich damit etwas aufwendiger als zunächst angenommen.
Habe daher einen Microchip PIC als Ansteuer-IC verwendet, der in letzter Ausbaustufe ein serielles Interface zur Ansteuerung des Moduls zur Verfügung stellen soll.
Die ersten Ergebnisse sieht man hier:
2009-04-03
Initd Script für cruisecontrolrb
Based on the $CCRB_HOME/daemon/cruise.sample version.
#!/usr/bin/ruby
# chkconfig: 235 99 10
# description: Start or stop the SnipSnap server
#
### BEGIN INIT INFO
# Provides: cruisecontrolrb
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: Start or stop the cruisecontrolrb daemon
### END INIT INFO
ENV['PATH']="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11"
require "fileutils"
include FileUtils
require "rubygems"
begin
gem 'mongrel'
rescue => e
puts "Error: daemon mode of CC.rb requires mongrel installed"
exit 1
end
def cruise_path
"/home/cruise/cruisecontrolrb"
end
def cruise_user
"cruise"
end
def cruise_log
"/var/log/cruisecontrolrb.log"
end
def start
system "su - #{cruise_user} -c 'cd #{cruise_path} && ./cruise start -d >> #{cruise_log}'"
end
def stop
system "mongrel_rails stop -P #{cruise_path}/tmp/pids/mongrel.pid >> #{cruise_log}" if File.exists?("#{cruise_path}/tmp/pids/mongrel.pid")
Dir["#{cruise_path}/tmp/pids/builders/*.pid"].each do |pid_file|
pid = File.open(pid_file){|f| f.read }
system "kill -9 #{pid}"
rm pid_file
end
end
command = ARGV.shift
system "touch #{cruise_log}"
system "chown #{cruise_user} #{cruise_log}"
case command
when 'start'
start
exit 0
when 'stop'
stop
exit 0
when 'restart'
stop
start
exit 0
else
puts "Usage: /etc/init.d/cruise start|stop|restart"
exit 1
end
2009-03-27
Blockhaus selbst gebaut
2009-03-07
2009-02-27
Maven2
Verzeichnisstruktur
An introduction to Maven 2
Building Web Applications with Maven 2
Projekt anlegen
C:\maven2example>mvn archetype:create
-DgroupId=com.attainware.maven2example
-DartifactId=maven2example_logic
-DgroupId=com.attainware.maven2example
-DartifactId=maven2example_logic
2009-02-24
Anmerkungen zum Setup Fedora 10 - Probleme mit dhcpd, named, ntpd
- dhcpd, named und ntpd laufen nach dem Booten nicht korrekt, da Netzwerkinterface beim Starten noch nicht konfiguriert
- bei der Installation wird für die Konfiguration des Network-Interface der NetworkMonitor verwendet
Feb 24 11:33:20 sun NetworkManager: starting...
Feb 24 11:33:20 sun NetworkManager: Found new Ethernet device 'eth0'.
...
Feb 24 11:33:21 sun named[1931]: listening on IPv4 interface lo, 127.0.0.1#53
...
Feb 24 11:33:23 sun dhcpd: Not configured to listen on any interfaces!
...
Feb 24 11:33:25 sun NetworkManager: Activation (eth0) Stage 5 of 5 (IP Configure Commit) complete.
Feb 24 11:33:20 sun NetworkManager: Found new Ethernet device 'eth0'.
...
Feb 24 11:33:21 sun named[1931]: listening on IPv4 interface lo, 127.0.0.1#53
...
Feb 24 11:33:23 sun dhcpd: Not configured to listen on any interfaces!
...
Feb 24 11:33:25 sun NetworkManager: Activation (eth0) Stage 5 of 5 (IP Configure Commit) complete.
Lösung
NetworkMonitor deaktivieren und stattdessen network verwenden
chkconfig NetworkMonitor off
chkconfig network on
2009-02-22
Anpassungen für SELinux
Anleitung zur Anpassung von Applikationen an SELinux: http://www.os-t.de/PDFs_SELinux/2363_Kap_16.pdf
Kurze Anleitung:
Kurze Anleitung:
- SELinux in Permissive-Mode setzen (setenforce 0)
- SE Policies neu laden (semodule -R)
- Applikation ausführen (diverse Log-Einträge werden generiert)
- Log-Einträge auswerten und Applikationsmodul erstellen (audit2allow -a -l -M
) - Modul installieren (semodule -i phpsysinfo.pp)
- SELinux in Enforce-Mode setzen (setenforce 1)
2009-01-28
Java <=> Ruby
continue <=> next
throw <=> raise
catch <=> rescue
this <=> self
switch <=> case
case <=> when
default <=> else
Source: http://www.wllm.com/node/27
2009-01-12
Abonnieren
Posts (Atom)