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.
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
Abonnieren
Posts (Atom)