Jupitery 2.0

Dodaj komentarz

Co prawda układ z przekaźnikiem, czyli jupitery 1.0 działał, ale Caladan któremu pozwoliłem sobie pozawracać głowę uznał, że nawet jeśli działa to tylko przez przypadek. Mnie samemu nie wszystko wydawało się być ok, ale w końcu działało. W głowie był plan (jak się później okazało całkiem słuszny), żeby przekaźnikiem sterować za pomocą tranzystora npn. Tylko wszystkie próby namalowania tego na kartce (tak naprawdę jeszcze przed ostatecznym zmontowaniem poprzedniego układu) rozbijały się o eee tak to chyba nie zadziała.

Anyway ponieważ jak wiadomo jednostka z wiedzą regularnie naciskana wiedzę uwalnia, doszło po kilku wymianach zdań z Caladanem do powstania projektu jupitery-2.0 gdzie przekaźnik został całkowicie usunięty, właściwie wszystko zostało całkowicie usunięte, został tranzystor n-mosfet.
Niebagatelną rolę odegrał prosty symulator układów: Circuit Simulator Applet. Naprawdę super zabawka, oczywiście pewnie wysoce nieprofesjonalna, ale w tym też jest jej siła, bo zamiast straszyć po prostu działa.
No i tak powstało ten cud XXI wiecznej techniki :D

Można oczywiście całość odpalić we wspomnianym symulatorze, wystarczy zaimportować opis i powinno zadziałać.
Słowem bym się teraz nie odezwał gdyby nie to, że zmontowałem, działa, i w końcu kwiatek się fotografuje. Co z tego wyniknie trudno stwierdzić, na razie mamy eksperymentalne studio badawcze:
Naszpikowane zaawansowaną elektroniką :D

W międzyczasie zrobiłem wywiad w kwiaciarni w poszukiwaniu gotowego pacjenta aby nie ryzykować szoku termicznego po przenosinach z trawnika do dom^W laboratorium. Niestety, wszystko co da się kupić jest już poważnie wyrośnięte i się nie nadaje. Wykopałem więc Krokusa zgodnie z pierwotnym planem, odpaliłem małpy i ... zdjęcia już się robią.

A co z tego wyniknie ... to się okaże za kilka(naście?) dni.

W każdym razie w tej chwili fotografuję z prędkością 1/3600 fps czyli po ludzku mówiąc jedno zdjęcie na godzinę. Wydaje się, że to nawet za gęsto, zobaczymy. Sam kwiatek jest w dość ciemnym kącie, nie wiem czy to dobry pomysł, ale idea jest taka, żeby się za bardzo chłopak nie pospieszył i dał sobie zrobić choć kilka setek zdjęć zanim (jeśli) zakwitnie.
Tak samo jak podczas fotografowania karmnika wszystko odpalane jest z crona, z tą różnicą, że gdyby komputer był wyłączony, to router go odpali wysyłając pakiet WoL, a sam skrypt fotografujący dodatkowo zajmuje się zapalaniem i gaszeniem oświetlenia. $ cat get-image-0.4-krokus.sh #!/bin/bash # get-image v 0.4 codename krokus :D # MANUAL: # ./get-image "/destination/directory/" DEST_DIR="/tmp/" if [ -d "$1" ]; then DEST_DIR="$1" fi FILENAME="${DEST_DIR}$( date "+%Y%m%d_%H%M%S" ).jpg" TEMP_DIR=`mktemp -d /tmp/get-image-XXXXX` cd ${TEMP_DIR} # światło świeć stty -F /dev/ttyUSB0 crtscts sleep 30 wget http://admin:1234@192.168.1.12/snapshot.jpg \ -O photo.jpg &> /dev/drzewo # już nie sleep 5 stty -F /dev/ttyUSB0 -crtscts convert photo.jpg \ -gravity NorthEast \ -font "/home/wariat/.fonts/digital/digital_7/digital-7.ttf" \ -pointsize 100 \ -fill "#19adf4dd" \ -annotate +10+10 "$( date "+%e.%m.%Y" )" \ "$FILENAME" cd ~ rm -rf ${TEMP_DIR} Poza tym, żeby komp nie chodził jak nie jest potrzebny po zrobieniu zdjęcia w sposób dość mało wyszukany sprawdza czy przypadkiem ktoś go nie używa i się wyłącza: $ cat poweroff.sh #!/bin/bash if [ -z "$(who)" ] && ! [ -f "/tmp/keeprunning" ] then echo "nobody there" sudo poweroff fi

Jupitery

8 komentarzy

No to skoro już zostałem filmowcem i nawet wykombinowałem, że kolejna superprodukcja to powinno być coś co dzieje się naprawdę wolno trzeba było się zabrać za robotę. Plan z fotografowaniem kwiatka nawet mi się podoba, ale zaraz przychodzi myśl, że to wszystko tak po prostu się nie uda. Żeby robić zdjęcia trzeba mieć światło, światło jest w dzień. Można fotografować kwiatek raz dziennie w południe, ale wtedy co? 30 klatek po miesiącu, nah.
Trzeba światła, sztucznego ... przez miesiąc lub dwa i żeby nikt nie wyłączył? Nah. I tak dochodzimy do projektu jupitery :D Kompletnie się na tym nie znam, pewnie coś poważnie spierdzieliłem, ale ... działa :D.

Plan jest prosty, kilka okrutnie silnych LEDów oświetla aktora na czas zrobienia zdjęcia, fotki trzaskane są co godzinę lub dwie, czyli z prędkością 12 lub 24 klatki na dzień (360 lub 720 klatek na miesiąc), odtwarzane z prędkością 12fps. Powinno dać radę tak na oko.
Router będzie budził kompa 5 minut przed pełną godziną, cron uruchomi zestaw małp ... ma szanse prawda? Jako aktor wstępnie został wybrany Krokus, podobno małe szanse, ale może się udać, że nie zdechnie po przeniesieniu z dworu do mieszkania.
Pozostało wykombinowanie oświetlenia... nie za bardzo wiedziałem jak się za to zabrać, więc zacząłem od odpowiedzi na proste pytanie. Czym mi to by było najwygodniej włączać? I wyszło, że najłatwiej jest zapalać i gasić RTS w serialu. Powstał potwór który działa choć chyba nie powinien. I tu mam kłopot, bo kompletnie się na tym nie znam ale coś jest nie tak. Schemat potwora wygląda tak:

I to działa... choć nie powinno chyba. Już tłumaczę może jakaś dobra dusza mnie oświeci (jak ten jupiter ;-). RTS może być podniesiony albo nie. Podniesiony daje +7V (w mojej wersji adaptera USB <> RS232), nie podniesiony ma tam -7V. I jedno i drugie powinno zamknąć przekaźnik (taki tam mam: Coto 9007-12-00), powinno prawda?
Żeby było z sensem jak się wydaje po drodze między RTS, a wyjściem diody zamontowanej równolegle do cewki przekaźnika powinna być jeszcze jedna dioda, która +7V przepuści, ale -7V już nie. Tylko jak ona tam jest to nie działa, a jak jej nie ma to tak.
Mam taką teorię (mówiłem, że się nie znam, więc mam własne teorie tam gdzie inni mają wiedzę), że kiedy RTS jest zdjęty i zapodaje -7V to prąd ma wybór, albo poleci przez cewkę gdzie napotka opór 1kohm albo sobie przeleci przez równolegle podpiętą diodę bez żadnych przeszkód. A skoro tak się da to za mało prądu płynie przez cewkę i się nie zamyka. Ma to jakiś sens?
Ale to nie rozwiązuje problemu z niedziałaniem kiedy na miejscu jest ta druga dioda która -7V zamyka po stronie seriala i nie puszcza. Może być tak, że sama dioda pobiera wystarczająco dużo prądu, żeby zabrakło go na zamknięcie cewki? Z RS232 pociągnąć za dużo nie można to jest jasne, nigdy się toto do zasilania niczego nie nadawało, może wydajność ledwo starcza na zamknięcie przekaźnika i cokolwiek po drodze to o jedno cokolwiek za dużo. Takie mam małe przemyślenia. Mam też dużą wątpliwość wyrażoną zdaniem, kiedy i czemu zrobię kuku mostkując tak bezczelnie RTS do masy via dioda kiedy światło jest wyłączone, czyli przez 99% czasu kiedy włączony jest komputer.

No ale najważniejsze, że działa mam więc platformę zdjęciową z reflektorami
Zaawansowaną wariacką elektronikę (no co! :D)
Przygotowane to to jest na więcej niż trzy lampy, ale te trzy wystarczą a i tak potrzebują razem coś koło 1A, więcej chyba nie powinienem puszczać przez ten przekaźnik.
Teraz wystarczy tylko:

stty -F /dev/ttyUSB0 crtscts
i świeci
a później:
stty -F /dev/ttyUSB0 -crtscts
i zgaśnie. Jednym słowem studio praktycznie gotowe, czas zabrać się za dostrojenie nowego zestawu małp do obsługi aparatu i klaps (a później albo klops, albo będę dziękował hackerowi na gali po rozdaniu przyszłorocznych oscarów ;-).

Javowy symulator układu jest rewelacyjny :D Zabawka w sam raz dla wariata. układ włącznika z kompletem diod.

Dzień z życia Karmnika

1 komentarz

W połowie lutego zamawiałem kolejną porcję słonecznika dla ogrodowych darmozjadów, a przemelek pokazał swój zdjęciofilm. Reakcja organizmu była natychmiastowa. Ja też chcę tylko najpierw muszę dojść do ładu z kilkoma rzeczami. Chwilę to trwało, ale w końcu pierwszą próbę mam za sobą, niestety oscary już były. :D

Do dyspozycji miałem web kamerkę z wifi edimax cośtam cośtam. Producent mówi o niej 1,3Mpix ale ja mu do końca nie wierzę. Anyway jedno co można o niej powiedzieć na pewno to to, że da się ją obsługiwać tak jak normalni ludzie chcą to robić. Wystarczy poprosić wgetem o jpg'a i już.
Kiedy sprzęt się znalazł, trzeba było zatrudnić małpę do naciskania spustu. Powstała małpa w dwóch wersjach, normalnej (to wersja super mega geek beta vanilla stable - kod zajmuje 1337 bajtów, co zauważyłem przypadkiem i czego nie mogłem przecież zignorować :D): wariat@mickey ~/skrypty/webcam $ cat get-image-0.2.sh #!/bin/bash DEST_DIR="${HOME}/temp/webcam/pictures/" TEMP_DIR="/tmp/$(basename $0).$$" FILENAME="${DEST_DIR}"$(date "+%Y%m%d_%H%M%S")".jpg" mkdir ${TEMP_DIR} cd ${TEMP_DIR} H_HAND_D=$[$(date "+%-I")*30+$(date "+%-M")/2] M_HAND_D=$[$(date "+%-M")*6] M_HAND="path 'M 0,0 L 0,-4 M -1,-4 L 0,-55 L 1,-4'" H_HAND="path 'M 0,0 L 0,-4 M -1,-4 L 0,-30 L 1,-4'" MARK="path 'M 0,-56 L 0,-48 M 0,48 L 0,56'" convert -size 128x128 xc:transparent -fill '#0c8cfd80' \ -stroke "#101010" -strokewidth "2" \ -draw "translate 64,64 circle 0,0 0,63" \ -draw "rotate ${M_HAND_D} translate 64,64 ${M_HAND}" \ -draw "rotate ${H_HAND_D} translate 64,64 ${H_HAND}" \ -strokewidth "1" \ -draw " translate 64,64 ${MARK}" \ -draw "rotate 30 translate 64,64 ${MARK}" \ -draw "rotate 60 translate 64,64 ${MARK}" \ -draw "rotate 90 translate 64,64 ${MARK}" \ -draw "rotate 120 translate 64,64 ${MARK}" \ -draw "rotate 150 translate 64,64 ${MARK}" \ clock.png wget http://admin:1234@192.168.1.12/snapshot.jpg \ -O photo.jpg composite -gravity north-east clock.png photo.jpg $FILENAME cd ~ rm -rf ${TEMP_DIR} Tak wiem, teraz wszystkie złe klakiery (czy jak im tam) wiedzą, że nie zmieniłem hasła w kamerze. No nie zmieniłem, bo po co? :D.
i przekombinowanej: wariat@mickey ~/skrypty/webcam $ cat get-image-0.3.sh #!/bin/bash # MANUAL: # ./get-image "/destination/directory/" DEST_DIR="/tmp/" if [ -d "$1" ]; then DEST_DIR="$1" fi FILENAME="${DEST_DIR}$( date "+%Y%m%d_%H%M%S" ).jpg" TEMP_DIR=`mktemp -d /tmp/get-image-XXXXX` cd ${TEMP_DIR} CLOCK_DIAM=64 H_HAND_D=$[ $( date "+%-I" ) * 30 + $( date "+%-M" ) / 2 ] M_HAND_D=$[ $( date "+%-M" ) * 6 ] M_HAND="path 'M 0,0 L 0,-4 M -1,-4 L 0,$[${CLOCK_DIAM} * -9 / 10] L 1,-4'" H_HAND="path 'M 0,0 L 0,-4 M -1,-4 L 0,$[${CLOCK_DIAM} / -2 ] L 1,-4'" H_MARK="path 'M 0,$[${CLOCK_DIAM} * -95 / 100 ] L 0,$[${CLOCK_DIAM} * -75 / 100 ] M 0,$[${CLOCK_DIAM} * 95 / 100 ] L 0,$[${CLOCK_DIAM} * 75 / 100 ]'" convert \ -size "$[${CLOCK_DIAM} * 2]x$[${CLOCK_DIAM} * 2]" xc:transparent \ -fill "#0c8cfd80" \ -stroke "#101010" \ -strokewidth "2" \ -draw "translate ${CLOCK_DIAM},${CLOCK_DIAM} circle 0,0 0,$[${CLOCK_DIAM} - 1]" \ -draw "rotate ${M_HAND_D} translate ${CLOCK_DIAM},${CLOCK_DIAM} ${M_HAND}" \ -draw "rotate ${H_HAND_D} translate ${CLOCK_DIAM},${CLOCK_DIAM} ${H_HAND}" \ -strokewidth "1" \ -draw " translate ${CLOCK_DIAM},${CLOCK_DIAM} ${H_MARK}" \ -draw "rotate 30 translate ${CLOCK_DIAM},${CLOCK_DIAM} ${H_MARK}" \ -draw "rotate 60 translate ${CLOCK_DIAM},${CLOCK_DIAM} ${H_MARK}" \ -draw "rotate 90 translate ${CLOCK_DIAM},${CLOCK_DIAM} ${H_MARK}" \ -draw "rotate 120 translate ${CLOCK_DIAM},${CLOCK_DIAM} ${H_MARK}" \ -draw "rotate 150 translate ${CLOCK_DIAM},${CLOCK_DIAM} ${H_MARK}" \ clock.png wget http://admin:1234@192.168.1.12/snapshot.jpg \ -O photo.jpg &> /dev/drzewo composite -gravity north-east clock.png photo.jpg "$FILENAME" cd ~ rm -rf ${TEMP_DIR} BTW gdzie jest ten co mówił, że skrypty w Perlu są nieczytelne? :D
Pogoniona batem małpa robi zdjęcie, maluje w rogu zegarek (prawda, że śliczny?) i archiwizuje odbitkę. Trzeba ją tylko w równych odstępach czasu poganiać czyli: wariat@mickey ~/skrypty/webcam $ crontab -l NICE=15 # 1/60fps * 5-19 6 3 0 /home/wariat/skrypty/webcam/get-image "/home/wariat/temp/webcam/karmnik-1min/" &> /dev/drzewo # 1/15fps * 5-19 7 3 1 /home/wariat/skrypty/webcam/get-image "/home/wariat/temp/webcam/karmnik-15s/" &> /dev/drzewo * 5-19 7 3 1 sleep 15; /home/wariat/skrypty/webcam/get-image "/home/wariat/temp/webcam/karmnik-15s/" &> /dev/drzewo * 5-19 7 3 1 sleep 30; /home/wariat/skrypty/webcam/get-image "/home/wariat/temp/webcam/karmnik-15s/" &> /dev/drzewo * 5-19 7 3 1 sleep 45; /home/wariat/skrypty/webcam/get-image "/home/wariat/temp/webcam/karmnik-15s/" &> /dev/drzewo Efekt? wariat@mickey ~/skrypty/webcam $ ls -l ~/temp/webcam/karmnik-1min/ | head razem 203020 -rw-r--r-- 1 wariat wariat 42128 03-06 05:00 20110306_050001.jpg -rw-r--r-- 1 wariat wariat 42012 03-06 05:01 20110306_050101.jpg -rw-r--r-- 1 wariat wariat 41850 03-06 05:02 20110306_050201.jpg -rw-r--r-- 1 wariat wariat 42572 03-06 05:03 20110306_050301.jpg -rw-r--r-- 1 wariat wariat 42725 03-06 05:04 20110306_050401.jpg -rw-r--r-- 1 wariat wariat 42516 03-06 05:05 20110306_050501.jpg -rw-r--r-- 1 wariat wariat 43188 03-06 05:06 20110306_050601.jpg -rw-r--r-- 1 wariat wariat 42788 03-06 05:07 20110306_050701.jpg -rw-r--r-- 1 wariat wariat 43104 03-06 05:08 20110306_050801.jpg wariat@mickey ~/skrypty/webcam $ ls -l ~/temp/webcam/karmnik-1min/ | wc -l 895 Osiem sztuk wywaliłem bo coś gdzieś odbłysnęło, oszukało kamerę i fotka wyszła prześwietlona.

Skomplikowane robi się później bo za każdym razem jak patrzę na opcje przy eksporcie video oczy wyłażą mi na wierzch. Pewnie można więc lepiej, ale ja umiałem tylko przepisać z manuala od mencodera: wariat@mickey ~/skrypty/webcam $ cat movie.sh #!/bin/bash mencoder "mf:///home/wariat/temp/webcam/karmnik-1min/*.jpg" \ -mf w=1280:h=1024:fps=8:type=jpg \ -ovc lavc \ -lavcopts vcodec=mpeg4 \ -o output.avi Na koniec PiTiVi który dał radę raz przelecieć całość i się nie wywrócić (za co jestem mu niezmiernie wdzięczny), oraz gazylion razy nie dał rady i się wywalił (za co go nienawidzę). Sam PiTiVi jako edytor jest świetny bo nic nie umie, czyli nadaje się idealnie, brakuje tylko żeby sam pokazał jak ustawić opcje eksportu najlepiej tak jak OpenShot, bo te zaklęcia chyba na zawsze pozostaną dla mnie tajemnicą. Ten ostatni zresztą potrafi sam wczytać sekwencję fotek, a właściwie potrafiłby gdyby nie to, że wykłada się (u mnie) przy każdej próbie.

A efekt? Prosz...

Dzień z życia karmnika ;-) from Jakub Klawiter on Vimeo.

Kolejny pomysł to jakaś rzeżucha. Tajny plan jest taki, że BIOS włączy grzyba w południe, małpa zrobi jedno zdjęcie, a inna małpa sprawdzi czy przypadkiem wariata nie ma w pobliżu i kompa wyłączy. Tak czy siak w sumie fajna i mało czasochłonna zabawa, gdyby tylko jeszcze zrozumieć o co chodzi z tymi wszystkimi pierdolnikami przy eksportowaniu filmu :D.

Co gógiel popsuł małpa naprawi

2 komentarze

Generalnie z komputerami to jest tak, że jak coś jest popsute to zostaje takim tylko tak długo aż ktoś się wystarczająco nie wkurzy i nie naprawi. I obojętnie czy chodzi o płytę DVD/Blueray/czy inną książkę popsutą DRMem czy po prostu zwykły dziwny błąd, prędzej czy później ktoś taki się znajdzie.
Od jakiegoś czasu ginęły komentarze w Google Buzz. Najpierw sporadycznie, później częściej w końcu dość masowo. Potrafiło wyciąć cały wątek, nikt nie wiedział gdzie. Aż w końcu trafiło na jednego co miał słabsze nerwy i sprawdził.

Wczoraj Przemysław Rumik opublikował analizę i Sposób na znikające komentarze w Buzzie.
Jest działa, w pierwszym odruchu próbowałem po prostu bookmarklet przenieść do skryptu Greasemonkey. Kombinowałem z 45 minut i w końcu wkurzyłem się i poszedłem spać.
Przed południem olałem sprawę. W końcu zamiast udawać, że jest się góglem i robi wszystko tak jak oni tam wymyślili wystarczy popsuć góglowe CSSy i po robocie. Buzz not spam userjs

// ==UserScript==
// @name           Buzz Spam links
// @namespace      FooBar
// @include        https://mail.google.com/mail/*
// ==/UserScript==

( function(){

var CSS = <str><![CDATA[
    @namespace url( http://www.w3.org/1999/xhtml ); 
    .zl { display: block !important; }  /* wyświetl zbanowany komentarz */
    .I0 { display: inline !important; } /* wyświetl guziki techniczne   */
]]></str>.toString();

GM_addStyle( CSS );

})();
Efekt:

Zakładam, że to rozwiązanie tymczasowe, prędzej czy później pewnie gógiel po prostu udostępni nam te przyciski, ale wtedy po prostu wywali się skrypt i tyle, tymczasem żaden automag nie będzie mi mówił kto spamer a kto nie. :D

Moja ramka jest najmojsza!

14 komentarzy

Kilka dni temu naczelnik Wiadomości24.pl zaserwował internautom smieszno straszny spektakl wylewając żale na agregatory. w24.pl EPIC fail oskarża, że kradną content i użytkowników, że trzepią kasę na cudzej pracy (przypominam redaktor w firmie która zarabia sprzedając treści tworzone za darmo przez własną społeczność), etc.
Poszło między innymi o ramkę (frameset) którą serwis Wykop dodaje do wykopaliska na wyraźne życzenie własnych użytkowników (każdy może ten ficzer wyłączyć w konfiguracji, czyli jeśli ramka jest znaczy luser sobie życzy right?) który ułatwia kopanie. Artykuł oczywiście trafił na Wykop, gdzie w krótkim czasie zyskał ponad 400 punktów i wygenerował w kilka dni około 20'000 odsłon jeśli wierzyć licznikowi w serwisie wiadomosci24.pl. Zresztą efekt można zobaczyć na wykresie Alexy .
W necie na chwilę zawrzało i generalnie ocena artykułu była jedna. "Strzał do własnej bramki". Ktoś podpowiedział, naczelnik zadziałał i w serwisie wiadomości24.pl pojawił się kod odpowiedzialny za "uciekanie z frameset". Można było tak od razu, ale wtedy nie byłoby tyle śmiechu, więc z mojego chorego punktu widzenia, jest dobrze jak jest, bo przynajmniej coś się dzieje.

I to byłby praktycznie koniec historii, gdyby nie to, że cała sprawa uświadomiła mi, że tak na prawdę serwis uciekający z wykopowej ramki robi mi koło pióra. I nie chodzi tylko o wiadomosci24.pl ale też np. wikinews.pl. Oraz pewnie wiele innych, ale akurat w przypadku wikinews sprawa była o tyle istotna, że kilka razy zdażyło mi się, że mi uciekło. No to się wariat zaczął był zastanawiać, czy jak chce uciekać to musi mu się udać? Bo w końcu jesteśmy na moim końcu internetu, znaczy w mojej przeglądarce, to dlaczemu ....

  1. Wyłączyć firefoksa
  2. Otworzyć ~/.mozilla/firefox/profil/user.js w edytorze
  3. Naklepać w środku: $ cat user.js // Nie będzie nam uciekał z ramki kto chce ;-) user_pref("capability.policy.policynames", "noframebuster"); user_pref("capability.policy.noframebuster.sites", "http://www.wiadomosci24.pl http://pl.wikinews.org"); user_pref("capability.policy.noframebuster.Window.location", "noAccess");
  4. Włączyć Fx
  5. działa? U mnie działa :D
To niech teraz spróbują uciec! Moja ramka jest najmojsza :D.
Cały myk wykorzystuje niejakie Configurable Security Policies firefoksa, czyli mechanizm pozwalający na selektywne włączanie i wyłączanie pewnych akcji dla konkretnych stron. Całkiem sprytna zabawka nieprawdaż?
I na koniec jeszcze uwaga. Fx tak jak kiedyś Mozilla kopiuje całą zawartość user.js do prefs.js i stamtąd ją uruchamia. Znaczy to tyle, że jeśli będziemy się chcieli tych ustawień pozbyć nie wystarczy wyczyścić plik user.js, ale należy te same wpisy wykasować w pliku prefs.js który leży w profilu tuż obok. Jak dla mnie to zawsze był Bug, ale widać jestem w tym dość odosobniony skoro działa to tak samo przez tyle lat. Wiem, wiem mogę spróbować zarobić wontfixem na bugzilli, ale mi się kurka nie chce, może kiedyś :D

package.keywords cleaner

5 komentarzy

Z Gentoo to jest tak, że każdy używa go inaczej. Jedni zajmują się tweakowaniem wszystkiego, inni budują system bleeding edge, choć odnoszę wrażenie, że Ci po mału przesiadają się na Fedorę ... pewnie mylne wrażenie. Ja (i wielu innych) z kolei chcę, żeby w miarę możliwości wszystko zawsze działało bez większego zastanawiania się jak to działa i utrzymują system w wersji stable.
Przy okazji nie lubię kiedy system zaczyna aktualizować paczki które mam zainstalowane w wersji testing do kolejnych nie koniecznie stabilnych wersji, ciągnąc kolejne zależności również w wersjach nie oznaczonych jako stable. Krótko mówiąc odmaskowuję paczki dodając do /etc/portage/packages.keywords wpisy odnoszące się do konkretnej wersji danej paczki: $ grep netscape-flash /etc/portage/package.keywords =net-www/netscape-flash-9.0.31.0 ~x86 #=net-www/netscape-flash-9.0.60.0_beta100107 ~x86 =net-www/netscape-flash-9.0.124.0 ~x86 =net-www/netscape-flash-10_rc20080915 ~x86 No i to jest problem, wpisy się mnożą i mnożą, i niby nic strasznego bo plik nie jest rozmiarów monstrualnych, co najwyżej jest dużo większy niż mógłby być. $ ls -lh /etc/portage/package.keywords -rw-r--r-- 1 root root 11K IX 27 11:54 /etc/portage/package.keywords

A jaki mógłby być? Tu wkracza do akcji ultra hiper turbo nowoczesne narzędzie, w postaci perlowego skryptu: $ cat skrypty/portage/keywords-cleaner #!/usr/bin/perl # keywords-cleaner-0.2 # copyleft 2007-2008 by Jakub Klawiter # GNU GPL v3 or later blah, blah, blah # przeglada /etc/portage/package.keywords # i wypisuje paczki ktore nie sa zainstalowane # oraz sa zainstalkowane w innych (nowszych?) wersjach # czyli nie potrzebne w pliku. # DEPENDENCIES: # * app-portage/eix # MANUAL! :D # USAGE: # $ ./keywords-cleaner > package.keywords use strict; use warnings; my $keywords_file = '/etc/portage/package.keywords'; open(FH, $keywords_file) or die "can’t open $keywords_file : $!"; while ( <FH> ) { chomp; if ( $_ =~ /^=([0-9a-zA-Z\-\/]*)-([0-9a-zA-Z\-\_\.]*)/ ) { my ( $package, $version ) = ( $1, $2 ); my $eix_query = ( `/usr/bin/eix -e $1` ) or return 0; if (! ( $eix_query =~ /Installed versions:\s*([0-9a-z\.\-\_]*)[!\[\(]/ ) ) { printf STDERR "%-60s NOT installed!\n", $_; } elsif (! ( $version eq $1 ) ) { printf STDERR "%-60s OTHER version installed \n", $_; } else { print "$_\n"; } } } close FH;

Jak można tego cudaka użyć? Najpierw trzeba mieć w systemie zainstalowaną paczkę app-portage/eix, ale to akurat mają chyba wszyscy ;-). Później:

  1. # emerge -avuDN world aby upewnić się, że wszystkie paczki są zainstalowane w najnowszych możliwych wersjach (w celach testowych).
  2. Jako użytkownik (nie root) w katalogu ze skryptem: $ ./keywords-cleaner > package.keywords co skutkuje zapisaniem pliku package.keywords w katalogu programu.
  3. Następnie w konsoli root'a: # cd /etc/portage/ # mv package.keywords package.keywords.bak # backup ;-) # cp /home/wariat/skrypty/portage/package.keywords ./ # emerge -avuDN world Jeśli wszystko poszło tak jak powinno, to ostatnie emerge powie, że nie ma nic do roboty, gdyby buczał, że jakaś paczka nie istnieje lub próbował hacków z downgrade oznacza to tylko tyle, że skrypt jest do niczego. Wtedy można przywrócić kopię z pliku /etc/portage/package.keywords.bak

Efekt? $ ls -lh /etc/portage/package.keywords -rw-r--r-- 1 root root 2,4K IX 27 13:05 /etc/portage/package.keywords 80% pliku stanowiły śmieci, czy raczej pozostałości po paczkach których już w systemie nie ma, lub są w nowszych wersjach.

Good Copy Bad Copy - Napisy

1 komentarz

Jakiś czas temu na spotkaniu organizowanym przez Creative Commons Polska odbyła się Polska premiera filmu Good Copy Bad Copy. Na potrzeby której przygotowany został skrypt z napisami do filmu. Same napisy nie są jeszcze ostatecznie dopracowane, autorzy proszą o pomoc w ich udoskonaleniu na Wiki CC.pl, szczegóły na blogu Kultura 2.0:Szukamy korektorów polskiego tłumaczenie GCBC.

Autorzy proszą o nie rozprowadzanie dokumentu z napisami, chodzi o to, aby w świat poszedł możliwie najdoskonalszy skrypt. Co jednak kiedy chciałoby się film obejrzeć? Nie znam się na plikach z napisami, ale chwila googlania pozwoliła mi odnaleźć format takiego pliku przyjmowany przez Totem (i pewnie wiele innych), została konwersja treści. Zawartość oryginału może się zmieniać, co dyskwalifikuje wszelkie metody ręcznej edycji pliku jako kompletnie bezsensowne proponuję więc:

  1. Skrypt: get-script.pl #!/usr/bin/perl use strict; use warnings; my $line = 1; while ( <> ) { next if ( /^[^0-9]/ ); s/\|/\n/g; s/^([0-9]{2}:[0-9]{2}:[0-9]{2}):([0-9]{2}) , ([0-9]{2}:[0-9]{2}:[0-9]{2}):([0-9]{2}) , /\n$line\n$1,${2}0 --> $3,${4}0\n/; print; $line++; }
  2. Kopiujemy zawartość strony wiki (pola edycji!) do pliku temp.txt (choć odnoszę wrażenie, że nazwa może być inna ;-)
  3. Odpalamy super mega wypasiony konwerter: $ ./get-script.pl temp.txt > GCBC_SCR.XviD.srt
  4. już ;-) $ totem GCBC_SCR.XviD.avi
  5. Zauważone podczas oglądania błędy tłumaczenia notujemy gdzieś na boku i uaktualniamy wersję na wiki CC.pl
Enjoy!


Registered Linux User #161416
Become a Friend of GNOME
wariat @ gógle