Reklama, reklama….
Na życzenie kolegi, oto wpis reklamowy: Jaki telewizor LCD?
A teraz coś zupełnie z innej beczki. Nowy trend obchodzenia halloween. Ciekawe kiedy do kraju trafi. Wręcz niepojęte.
Na życzenie kolegi, oto wpis reklamowy: Jaki telewizor LCD?
A teraz coś zupełnie z innej beczki. Nowy trend obchodzenia halloween. Ciekawe kiedy do kraju trafi. Wręcz niepojęte.

Miałem napisać coś o konflikcie darwinizm vs kreacjonizm, ale opisze swój kolejny projekt
Jakiś czas temu zapragnąłem zaprząc nogi do komunikacji z komputerem. Czyli poprostu zrobić/kupić pedały. W zamyśle mają służyć do przełączania między pulpitami. W moim przypadku odpowiada to przełączaniu między aplikacjami, gdyż praktycznie wszystkie okna mam cały zmaksymalizowane. W sumie mam 4-7 otwartych aplikacji: terminal, eclipse, emacs, firefox, thunderbird. Każdemu pulpitowi przyporządkował bym jeden pedał.
Myśląc o takim sprzęcie rozważałem użycie następujących wejść:
Zdecydowałem się na USB, ponieważ postanowiłem użyć kupić taniego pada, rozebrać go i podłączyć przyciski do pedałów. Pada nabyłem za 20PLN z przesyłka od handlarza na allegro. Kupiłem w ciemno, nie wiedząc jaki jest status wsparcia tego typu urządzeń w Linuxie. Ku mojemu zadowoleniu, urządzenie zostało automagicznie wykryte. Pojawił się reprezentujący je plik /dev/input/js0. Po uruchomieniu programu jstest stwierdziłem, że wszystko jest OK. Pad ma 8 przycisków, 2 joysticki analogowe i jeden joystick cyfrowy. Zatem w sumie można sterować 4 liniami analowymi i 12 liniami cyfowymi.
W projekcie zamierzam wykorzystać tylko przyciski. Potencjometry może w przyszłości do czegoś innego, jakaś czujka obecności przed komputerem, albo pokrętkło do głośności.
Pozostał mi do rozwiązania problem w jaki sposób transformować zdarzenia generowane przy pomocy pada na naciśniecie klawiszy. Jest na to kilka metod:
Pogooglałem troche i nie znalazłem tego czego chciałem. Znalazłem 2 projekty które w części realizowały zamierzony cel: joy2key i xkeymouse. Postmodernistyczną metodą wycinania i lepienia uzyskałem nową wartość. Program który realizował to czego chcę. Czyta zdarzenia z pada i generuje zdarzenia Xowe. Oto on joybuttons2xkb.c oraz skrypt go uruchamiający pedual.sh. Po uruchomieniu sktyptu przyciski pada generują zdarzenie odpowiadające klawiszom F13-F20 klawiatury.
Kolejny odcinek będzie bardziej medialny, będą zdjecia z dekompozycji pada. Szur, brzdęk, trzask. Ale najpierw muszę wyzdrowieć by móc pojechać do jakiegoś supermarketu technicznego.
Oto plik .emacs którego to używam w domu:
W tym roku mija 10lat od pierwszego kontaktu z tym edytorem. Hmm…….
Otworzyłem przykład z książki. Aplikacja do edycji produktów. I jade krok po kroku. No i nie działa. Utknąłem na generacji kodu modelu danych. Jedyną różnica była użyta przeze mnie baza danych. Użyłem PostgreSQ zamiast MySQL.
laptok$ ruby script/generate scaffold -t -f Product Admin
exists app/controllers/
exists app/helpers/
exists app/views/admin
exists test/functional/
dependency model
exists app/models/
exists test/unit/
exists test/fixtures/
identical app/models/product.rb
identical test/unit/product_test.rb
identical test/fixtures/products.yml
error Before updating scaffolding from new DB schema, try creating a table for your model (Product)
Pogooglałem i zasugerowałem się jakimś wpisem na forum, że byc może to kwestia starych bibliotek. Aktualizacja czasem pomaga. Niestety w Debianie nie ma gem, taki taki instalator pakietów z rubym. Zatem instaluje ze źródeł RubyGems
ruby setup.rb gem install rubygems-update gem install rails --include-dependencies
Potem przyszła pora na przelotkę do biblioteki Postgresa
apt-get install libpq-dev postgresql-dev ruby1.8-dev gem install postgres -- --with-pgsql-include-dir=/usr/include/postgresql/
No i nadal nie działa.
W akcie desperacji spojrzałem do logów bazy. A tam jak wół napisane, iż railsy poszukują tabelki products (sic!). Nie wiem co to za konwencja nazywania tabelek w bazie w liczbie mnogiej. Sie pierwszy raz z nią spotkałem. Przekartkowałem książke i dalej jest ta konwencja zachowana. Cóż trzeba będzie się przyzwyczaić, albo poszukać wajchy by to wyłączyć.
Zobaczymy co będzie dalej.
Aktualizacja
Jednak jest wajha W pliku config/environment.rb trzeba dodać:
ActiveRecord::Base.pluralize_table_names = false;
I już można oprogramowywać zastane bazy. Ruby jednak jest “agile”