>> wybierz styl >> es :: ns :: bs

Weblog Tomasza Przechlewskiego [Zdjęcie T. Przechlewskiego] [[Ikona]]


scrum
random image [Photo gallery]
Zestawienie tagów
1-wire | 18b20 | 1wire | 2140 | 3rz | alsamixer | amazon | anniversary | antypis | apache | api | arm | astronomy | asus | atom.xml | awk | aws | balcerowicz | balta | bash | berlin | bibtex | bieszczady | biznes | blogger | blogging | blosxom | borne-sulinowo | breugel | bt747 | canon | cedewu | chello | chown | chujowetaśmy | cmentarz | contour | cron | css | csv | curl | d54250wykh | debian | dejavu | dhcp | dht22 | dia | docbook | dom | ds18b20 | dyndns | dynia | ebay | economy | ekonomia | elka | elm | emacs | emacs23 | english | ess | eu | excel | exif | exiftool | f11 | fc | fc11 | fc15 | fc5 | fc8 | fedora | fedora21 | ffmpeg | finepix | firefox | flickr | fontforge | fontspec | fonty | fop | foto | france | francja | fripp | fuczki | fuji | fuse | gammu | garmin | gawk | gdynia | geo | georgia | gft | git | github | gmail | gnokii | gnus | google | googlecl | googleearth | googlemaps | gphoto | gphoto2 | gps | gpsbabel | gpsphoto | gpx | gpx-viewer | greasemonkey | gruzja | grzyby | haldaemon | handbrake | historia | history | hitler | holocaust | holokaust | hpmini | humour | iblue747 | ical | iiyama | ikea | imap | inkscape | inne | internet | j10i2 | javascript | jhead | k800i | kamera | kml | kmobiletools | knuth | kod | kolibki | komorowski | konwersja | krutynia | kuchnia | latex | latex2rtf | latex3 | lcd | legend | lenny | lesund | lewactwo | liberation | linux | lisp | lisrel | litwa | logika | lwp | mapsource | marvell | math | mathjax | mazury | mbank | mediolan | mencoder | mh17 | michalak | microsoft | monitor | mp4box | mplayer | ms | msc | msw | mtkbabel | muzyka | mymaps | mysql | nanopi | natbib | navin | neo | neopi | netbook | niemcy | niemieckie zbrodnie | nikon | nowazelandia | nuc | nxml | oauth | oauth2 | obituary | okular | olympus | ooffice | ooxml | opera | otf | otftotfm | other | overclocking | panoramio | pdf | pdfpages | pdftex | pdftk | perl | photo | photography | picasa | picasaweb | pim | pine | pit | plotly | pls | plugin | po | politics | polityka | polsat | postęp | powerpoint | prelink | problem | propaganda | pstoedit | putin | python | r | radio | random | raspberry pi | relaxng | router | rower | rowery | rpi | rsync | rtf | ruby | rugby | russia | rwc | rwc2007 | rwc2011 | rzym | samba | sem | sheevaplug | sienkiewicz | signature | sks | skype | skytraq | smoleńsk | srtm | ssl | statistics | stats | statystyka | stix | svg | svn | swornegacie | szwajcaria | terrorism | tex | texgyre | texlive | thunderbird | tomato | tourism | tramp | trang | truetype | ttf | turystyka | tusk | tv | tv5monde | twitter | typetools | ubuntu | udev | umap | unix | upc | updmap | ups | utf8 | varia | video | vienna | virb edit | vostro | wammu | wdc | wdfs | webcam | webdav | wh2080 | wiedeń | wikicommons | wilno | windows | windows8 | wine | wioślarstwo | word | wordpress | wrt54gl | wtyczka | ww2 | www | wybory | wybory2015 | włochy | xemex | xetex | xft | xhtml | xine | xml | xmllint | xsd | xslt | xvidtune | youtube | yum | zakopane | zakupy | zdf | łeba | świdnica
Pobrania via google: [[Ikona]]
Archiwum
Inne blogi
N. Walsh | Morten H. Frederiksen | B. Clementson | prawo.vagla.pl | F. Hecker | M. Olson | J. Tennison | J. Clark | M. Nottingham | M. Shuttleworth | T. Isakowicz-Zalewski | J. Anglim | José A. Ortega Ruiz Modern Perl
Inne tematyczne
Ashwin Amanna | wiesia.nets.pl | Wojt | rwm.org.pl | DataBlog | Revolutions | Learning R | A. Gelman | C. Nel | J. Vogelgesang | ubl.xml.org/ | J.D. Long |
O stronie
wykorzystywany jest blosxom plus następujące wtyczki: tagging, flatarchives, rss10, lastbuilddatexhtmlmime. Niektóre musiałem dopasować nieco do swoich potrzeb. Więcej o blosxom jest tutaj
Subskrypcja
RSS 1.0
Ical, vcal nowy telefon i rozkłady zajęć na WZUG

Niedawne kupno telefonu zainspirowało mnie do przygotowania rozkładu zajęć dla studiów zaocznych w formacie vcal. Rozkład ww. zajęć jest opracowywany w aplikacji pn. Rozkład Zajęć na Uczelni (w skrócie RZU). Układanie tegoż planu jest dość pracochłonne ponieważ nie ma tu żadnego powtarzalnego cyklu a zajęcia planuje się w skali całego semestru (a nie tygodnia jak ma to miejsce na studiach dziennych).

Gotowy plan jest zamieniany następnie na format XML a potem sortowany wg. wykładowców, grup, sal oraz chronologicznie. Na etapie drukowania/sortowania nie jest wykorzystywany program RZU, bo rezultaty są bardziej niż kiepskie ale Perl+pdfTeX. Wynik można obejrzeć tutaj. BTW skrypty Perla + style TeXa są tutaj, tyle że są mocno związane z zasadami/konwencjami tworzenia rozkładów na WZUG i w związku z tym niekoniecznie przydadzą się każdemu użytkownikowi ww. programu RZU.

Zatem zachciało mi się dodać do generowanych przez skrypt ast2x.pl formatów vcal. Nie wchodząc w zawiłości formatu (tutaj jest ładnie sformatowana dokumentacja), mój dokument powinien zawierać wpisy postaci:

BEGIN:VEVENT
DTSTART:20070310T070000Z
DTEND:20070310T083000Z
DESCRIPTION: 501, 502/Gospodarka elektroniczna/C-21/08.00--09.30/Wrycza
UID:www.wzr.pl_l_00155_20070310T070000Z
LOCATION:C-21
SUMMARY:501, 502/Gospodarka elektroniczna/C-21
END:VEVENT

Jak widać, format jest prawie samoopisujący się. Pole UID ma być unikatowe, co IMHO można np. osiągnąć tak, jak w przykładzie wyżej, tj. konstruując URL postaci: www.wzr.pl_l_nr-wykł_początek-zaj. Prawdziwy kłopot to pola DTSTART/DTEND, bo czasy muszą być w UTC. Oczywiście RZU generuje czasy lokalne, więc trzeba je zamienić na UTC uwzględniając przesunięcie oraz czas letni/zimowy. Nie chciałem korzystać przy tym z jakiś egzotycznych bibliotek Perla, żeby później nie musieć tego instalować (osoba pracująca nad planem używa MS Windows, itd...). Znalazłem zatem następującą formułę wyznaczania dnia zmiany czasu (więcej jest na stronie: webexhibits.org/daylightsaving/):

sub euDaylightSavings {
# All countries in Europe except Iceland observe DST and change 
# on the same date and time, starting on the last Sunday in March 
# and ending on the last Sunday in October.
# cf. http://en.wikipedia.org/wiki/Daylight_saving_time_around_the_world
# The subroutine returns the exact day-of-month of DST change.
# The examplar usage:  daylightSavings (2008,'march')
#
  my ($yr,$when) = @_;

  if ( $when =~ /mar/ ) { return (31 - (5*$yr/4 + 4) % 7); }
  else { return (31 - (5*$yr/4 + 1) % 7); }
}

Powyższe pozwala na łatwe ustalenie w jakim dniu następuje przesunięcie. Np. w roku 2007 były to odpowiednio 25 marca oraz 28 października, co oznacza, że od 25 marca (włącznie) do 27 października (też włącznie) trzeba dodać jedną godzinę więcej do przesunięcia między UTC a CET.

Teraz z kolei jak stwierdzić czy dana data jest przed czy po innej? Konsultując się z Perl Receptury znalazłem:

use Date::Calc qw(Delta_Days);
my $cet_offset = 1;

## $yr, $mn, $dy -- odp. rok, miesiąc, dzień

my $dst_start = euDaylightSavings($yr, 'mar');
my $dst_end = euDaylightSavings($yr, 'oct');

## funkcja Delta_Days zwraca liczbę dni między y1, m1, d1 a y2, m2, d2
if ( ( Delta_Days($yr, 03, $dst_start,  $yr, $mn, $dy) >= 0 ) &&
       ( Delta_Days($yr, 10, $dst_end,    $yr, $mn, $dy) < 0 ) ) { 
          return $cet_offset + 1   }
  else { return $cet_offset  } 

Tyle, że Date::Calc nie jest standardowo dostępny w Perlu. Ponieważ jednak nie potrzebuję liczby dni między datami a jedynie określenia porządku więc być może wystarczy coś następującego:

sub Delta_Days{
 my ( $y1, $m1, $d1, $y2, $m2, $d2 ) = @_ ;

 if ($y1 < $y2) { return 1 }
 elsif  ($y1 > $y2) { return -1 }
 else {
   if ($m1 < $m2) { return 1 }
   elsif  ($m1 > $m2) { return -1 }
   else {
     if ($d1 < $d2) { return 1 }
     elsif  ($d1 > $d2) { return -1 }
     else { return 0 }
   }
 }
}

Wygląda, że działa. Ale pewności nie ma:-) Dodam na koniec że na etapie testów usiłowałem też korzystać z biblioteki Net::ICal ale zrezygnowałem--niewiele wnosi. Aha w jakim kodowaniu toto ostatecznie ma być, UTF-8? No chyba tak.

url | Sat, 05/04/2008 23:18 | tagi: , , ,
Gammu, kmobiletools i SE K800i

Straciłem sporo czasu próbując połączyć mój nowy SE K800i (ale nie kupiony za złotówkę w promocji w sieci Play) z Linuksem. Szukając w google szybko dowiedziałem się, że w w/w kontekście używa się głównie programów kmobiletools oraz gammu/wammu. Oba da się zainstalować bez problemów przez yum. Ale...

Ale oba nie działają. Kmobiletools nie wykrywa telefonu, wammu wywala się z błędem. Ponieważ bliższa inspekcja wykazała, że oba programy są dostępne w FC8 w starszych wersjach, zdecydowałem się na zainstalowanie wersji nowszych. Pobrałem kmobiletools w wersji 0.5 (beta) a następnie spróbowałem go skompilować. Uruchomienie ./configure skończyło się błędem:

configure: error: C++ preprocessor "/lib/cpp" fails sanity check

Powyższe oznacza, że brak jest kompilatora C++. Trzeba go zainstalować wydając polecenie:

yum install gcc-c++

Teraz pojawia się inny błąd:

checking for X... configure: error: Can't find X includes

Wiadomo brakuje jakiś pakietów devel dotyczących X11. Ale jakich? Pomogło:

yum -y install libX11-devel libXt-devel

Teraz z kolei:

checking for Qt... configure: error: Qt (>= Qt 3.2 and < 4.0) \
  (headers and libraries) not found. Please check your installation!
yum -y install qt-devel qt4-devel kdebase-devel

Ale to nie pomogło. Mimo, że biblioteka Qt znajduje się w systemie:

whereis Qt
Qt: /usr/include/Qt

Po bezowocnej instalacji wszystkiego z Qt w nazwie i nie tylko zdecydowłem się na:

ln -s /usr/lib/qt-3.3/  /usr/lib/qt3

Teraz da się skompilować kmobiletools. Program działa jednak częściowo, np. nie potrafi wysyłać SMSów, co jest najbardziej rozczarowujące. Naciska się guzik i guzik. Na stronie kmobiletools radzą kompilować program z wsparciem do gammu, ale wyłącznie w starej wersji 1.10.6. (w FC8 jest gammu 1.17.0). Nawet się do tego przymierzałem ale nie wyszło. Poza tym miałem słabą motywację: ostatecznie jaki jest sens kompilowania beta wersji ze starą biblioteką? Nie ma IMHO.

Nowe (0.26) wammu też działa częściowo. Też nie można wysyłać SMSów. Do tego formularz do wysyłania jakiś taki mało intuicyjny (łagodnie powiedziane). Żeby było śmieszniej działa gammu. Można wysłać SMS wypisując co trzeba z konsoli, np:

echo "treść_SMSa" | gammu --sendsms TEXT +numer_odbiorcy

Gammu by było nawet OK w połączeniu z Emacsem. Ale nie znalazłem żadnego relewantnego pakietu (do Emacsa). Sacha Chua (przyciąga uwagę w świecie brodatych i/lub łysych facetów od Emacsa, bo to ładna dziewczyna) coś wspomina na swoim blogu ale mało konkretnie. Jednym słowem ,,w tym temacie'' w systemie L sytuacja mało komfortowa.

url | Wed, 19/03/2008 12:20 | tagi: , , , ,