piątek, 28 sierpnia 2009

Nowy laptop: Dell Vostro 1320

Kupiłem nowego laptopa decydując się ostatecznie na Dell Vostro 1320, który bez systemu kosztował 2800 PLN. Matryca 13,3 cala, procesor Intel Core 2 Duo T6570, 4 Gb pamięci (z czego system widzi 3 Gb) Niestety od razy skucha -- komputer reklamowany jako ważący 1,9kg po zważeniu okazał się być cięższym -- 2,2 kg. Zresztą taka waga jest w papierach od Della, więc sprzedający zwyczajnie oszukują. Akurat zależało mi na czymś lżejszym więc jestem trochę zły...

Poza tym w porównaniu do poprzedniego HP NX9020 wiatrak się włącza często i komputer hałasuje ale to chyba jest nieuchronne biorąc pod uwagę że w środku jest całkiem szybki procesor. Zresztą nie szumi głośno, raczej byłem do tej pory przyzwyczajony, że nic nie szumi wcale.

Podzieliłem dysk na dwa kawałki ca 180 Gb + ca 50 Gb -- jeden na Fedorę, który używam na co dzień drugi na Ubuntu żeby się z Ubuntu oswoić. Fedora 11/Ubuntu zainstalowały się bez większych problemów nie licząc WiFi (w obu nie działa). Na tym froncie totalna porażka. Komputer ma kartę Broadcom 4312 i sądząc z tego co jest dostępne via google powinna działać, a nie działa... Nie używałem tego komputera za dużo do tej pory, ale dwie rzeczy już mi podpadły w Fedorze 11: -- Thunderbird w wersji 3 beta ileś tam (najnowszy), do którego nie działa wykorzystywany przeze mnie plugin synckolab; -- Googleearth w wersji 5, zawiesza komputer raz na kilka uruchomień i znika mapa w dużych zbliżeniach. Wersja GE 4.3 wydaje się działać poprawnie... Z plusów jest Emacs 23, tyle że bez ładnego i domyślnego ekranu startowego -- komu to przeszkadzało?

Stary NX 9020 dziś oddałem Miśkowi...

Dopisane 31 sierpnia 2009: Jest kilka teorii jak uruchomić WiFi, zacząłem od Broadcom wireless on Fedora 11 again. Jest pewien progress, bo się dioda Wireless świeci, ale tak poza tym to nie działa. Do tego nie podoba mi się to dłubanie w jądrze, bo tę kwestię winien załatwić pakiet bez potrzeby uruchamiania insmod czy czegoś podobnego. W innym poradniku z kolei Configuring Broadcom BCM4312 Wireless card in Fedora 10, gość twierdzi jakoby wystarczy samo yum install broadcom-wl. Odkręciłem to co sugerował gość z wpisu Broadcom wireless... ale to nic nie dało.

Dwa dni temu wszakże zaktualizowałem system, przy czym wydaje się kluczowa była aktualizacja paczki kmod-wl. Teraz jest prawie dobrze, tzn. NetworkManager nie działa ale mogę uruchomić połączenie ,,z palca'', w następujący sposób:


ifconfig eth1 up
wlist eth1 scan
iwconfig eth1 essid ESSID
dhclient eth1

Albo po prostu:


system-config-network

odhaczam zarządzanie siecią WiFi przez NetworkManagera, który i tak nie działa i Klikam w aktywuj. Firefox jest ,,na dzień dobry'' w trybie offline więc trzeba wykonać jeszcze jeden klik żeby działał...

Zatem NetworkManager ma problem. Zapewne jest to problem opisany m.in. tutaj.

Dopisane 4 października 2009: W tzw. międzyczasie zainstalowałem F10 w wersji 64 bitowej, ale to nie był dobry pomysł. Ostatecznie z powrotem jest F11. Thunderbird w wersji z F10 (działa i nie ma żadnych komunikatów o naruszeniu zależności). WiFi wreszcie uruchomiłem -- wystarczyło dodać do /etc/modprobe.d/blacklist.conf wpis:


blacklist dell_laptop

Zaczęło też działać googleearth w wersji 5. Jedyny większy problem jaki pozostał to ciut za niski poziom dźwięku.

Dopisane 21 listopada 2009: Bateria trzyma około 3 godzin 15 minut (uruchomiony xine -- wyświetlanie filmu).

Wypadek w Oliwie

Jechałem sobie dziś rowerem Czyżewskiego. Od połowy był korek ale primo to normalne bo skrzyżowanie Opacka/Spacerowa jest mało przepustowe, secundo na rowerze pomykam środkiem i korki mnie nie ruszają. Koniec Czyżewskiego i się okazało, że korek spowodowało zawalone drzewo w okolicach skrzyżowania Czyżewskiego/Opacka. Przelazłem przez gałęzie -- drzewo leżało od kraja do kraja blokując oba pasy i oba chodniki. Na prawym pasie była jedna gablota na zicher dociśnięta gałęziami, na lewym druga... Ten z tej drugiej chyba wjechał w gałęzie już po, ale zwątpił czy przejedzie i już tak został w gałęziach. Ja się przedarłem lewym chodnikiem i pojechałem dalej...

Mam nadzieję, że temu z prawego pasa też nic się poważnego nie stało (mam na myśli ludzi w środku). Anyway w mieście Budynia nawet w bezwietrzny dzień drzewa się przewracają.... Strach i przerażenie, co to będzie dalej:-)

czwartek, 20 sierpnia 2009

Dziadowski uchwyt do roweru

Lubię uchwyty, w których rower jest mocowany za widelec (po zdjęciu przedniego koła). Tak transportowany rower jest zamocowany ,,na mur''--nic się nie kiwa. 100% pewności, że nie spadnie więc Elka ma mniej stresów. Wadą jest koło w bagażniku....

Uchwyt
Opisywany uchwyt

Ponieważ w sklepie z bagażnikami nie mieli kupiłem przez internet. Konkretnie model pn. ,,Tour Professional -- uchwyt/bagażnik''. Fatalny i nie polecam (foto jak wygląda to cudo obok). Gdybym chwilę pomyślał to bym doszedł do wniosku, że sam pomysł tego uchwytu jest chybiony. Mianowicie zasada wykorzystania uchwytu tego typu jest taka, że rower jest mocowany za widelec oraz za tylne koło. ,,Normalny'' bagażnik wygląda w ten sposób, że składa się z szyny, z przodu której jest uchwyt na widelec. Z tyłu szyny jest z kolei rynienka, na której opiera się tylne koło (unieruchamiane paskiem). Rynienka jest regulowana -- może się ruszać w przód i w tył -- co pozwala dopasować odległość do długości roweru. Szyna jest mocowana na belkach bagażnika.

W tym konkretnym dziadowskim modelu, jakiś mundry zrezygnował z szyny. Uchwyt składa się z dwóch kawałków. Regulacja wymaga dopasowania odległości pomiędzy poprzecznymi belkami bagażnika -- przekichane. A jak rowery są dwa i różnią się wielkością? Ewidentnie ktoś nie pomyślał (oprócz mnie przed zakupem).

Po drugie, całość składa się z zyliona podkładek, blaszek, pokręteł, etc... Nie idzie tego skręcić tak, żeby rower nie kiwał się jak w pierwszym lepszym badziewnym uchwycie ,,za ramę''. Reasumując: stanowczo odradzam kupno. Lepiej wydać więcej i kupić normalny.

sobota, 15 sierpnia 2009

Patent #5787449, Word, Microsoft, i4i i XML

Smród pewien powstał wokół tzw. Giganta z Redmond a zwłaszcza jego sztandarowego produktu pn. Word. W skrócie ogromnym -- podobno -- sędzia Leonard Davis (Tyler/Texas) zakazał od 12. października 2009 sprzedaży ww. Worda, co jest efektem naruszenia patentu #5787449 firmy i4i.

Ustalić cóż takiego konkretnie wymyśliła ta firma i4i nie jest proste. Wniosek patentowy jest dość abstrakcyjny, no i na dokładkę trzeba wiedzieć co zaimplementowano w Wordzie, żeby ustalić na ile pozew i4i jest uzasadniony -- przynajmniej w aspekcie prawnym. Poszukując szczegółów via Google rozpocząłem od tekstu konsekwencje pozwu patentowego trolla, w którym twierdzi się, że patent sprowadza się do ,,możliwości definiowania danych w składni Schematu XML, a następnie wykorzystywania tych danych w dokumentach Office''. Dalej autor ocenia, że ,,trudno o coś równie ogólnego i trywialnego, a patent taki nigdy nie powinien zostać przyznany''.

Na moje wszak oko to nie jest podstawa pozwu i4i -- szczegóły wkrótce.

Dopisane 16 sierpnia 2009: przejrzałem patent i poniżej zamieszczam kluczowe fragmenty z komentarzem.

It is an object of the present invention to provide an improved method of encoding a document. [...] in sharp contrast to the prior art the present invention is based on the practice of separating encoding conventions from the content of a document [...] The invention does not use embedded metacoding to differentiate the content of the document, but rather, the metacodes of the document are separated from the content and held in distinct storage in a structure called a metacode map, whereas document content is held in a mapped content area.

Ostatnie zdanie wydaje się dotyczyć istoty patentu. Nie jest to wcale ,,możliwości definiowania danych w składni Schematu XML''. Bzdura. Chodzi o przetwarzanie dokumentu XML (i nie tylko XML -- przypuszczam, że każdego dokumentu elektronicznego przetwarzanego w sposób opisany we zastrzeżeniach wniosku patentowego) w taki sposób, że treść i formatowanie są zapisywane w oddzielnych miejscach (held in distinct storage). Jak to ma działać jest objaśnione dalej:

A metacode map is a multiplicity of metacodes and their addresses associated with mapped content. An address is the place in the content at which the metacode is to exert its effect.

Łopatologicznie można to przedstawić na przykładzie poniżej. Po lewej stronie dokument XML/SGML a po prawej ten sam dokument bez znaczników (nazwanych metacodes we wniosku patentowym) -- są one przechowywane w innym pliku/miejscu i wstawiane wtedy kiedy jest to potrzebne.


<p>Pod źdźbłem <strong>spał</strong> Pod źdźbłem spał żółw śnięty
żółw śnięty </p>

BTW w ten sposób dokument może być oznakowany za pomocą różnych systemów znaczników (przynajmniej teoretycznie, bo w praktyce jakoś trudno mi wyobrazić redagowanie takiego dokumentu), podczas gdy w ,,klasycznym'' XMLu treść+oznakowanie stanowi jak wiemy monolit.

Nie chce mi się dalej czytać, ale całe to invention sprowadza się zatem do ,,sprytnego'' redagowania dokumentów (w tym dokumentów XML/SGML), w którym znacznik nie jest wstawiany bezpośrednio do treści dokumentu ale jest umieszczany osobno wraz ze wskaźnikiem gdzie ma być wstawiony (the patent describes separating markup from the content stream by means of an map indexing the content).

Reasumując: 1) rzecz cała sprowadza się w dużym stopniu do interfejsu; 2) widocznie Word korzysta z takiego rozwiązania; 3) patent jest dobitnym przykładem czegoś co należało do stanu techniki (aka prior art) i jako takie nie powinno w ogóle być patentowalne, bo cóż jest bardziej trywialnego niż zbiór wskaźników do czegokolwiek.

PS: sugestie głoszone przez ignorantów na różnych forach jakoby W3C albo Apache Fundation są zagrożone patentem i4i nie są prawdziwe, bo patent dotyczy tylko pewnego sposobu manipulowania dokumentem strukturalnym a nie XMLa/SGMLa jako takiego.

Ciekawa wizualizacja danych na BBC Sport

Na stronie BBC intrygująca mapa. Robi wrażenie--przynajmniej na mnie (geokodowanie, integracja danych, wizualizacja).

poniedziałek, 10 sierpnia 2009

Emacs 23

Od 29 lipca 2009 najnowszą wersją Emacsa jest 23.1. Warto zmienić wersję 22 na 23, bo ta ostatnia potrafi m.in. korzystać z fontów TrueType.

wtorek, 28 lipca 2009

Najbardziej oblegane zdjecie na flickr.com

Moje najbardziej oblegane zdjęcie na flickr.com. niedługo będzie miało jubileusz 2000 oglądnięć (przeciętna dla całego mojego zbioru to ok. 10 odsłon). Ponad 50 użytkowników zaznaczyło je jako ulubione. Tylko hmm... upodobania tych użytkowników takie trochę...

sobota, 18 lipca 2009

Rysowanie diagramów ścieżkowych za pomocą MetaPosta

Diagram ścieżkowy (path diagram)-- popularna notacja służąca do graficznego definiowania równań strukturalnych -- to rodzaj grafu, w którym kółka i prostokąty oznaczają węzły a strzałki krawędzie. Do tego zarówno kółka/prostokąty jaki i strzałki mogą być oznaczone symbolami. No i tu pech, bo tradycyjnie używa się greckich liter, do tego z subskryptami.

Dia to fajny program, ale przy bardziej zaawansowanych diagramach wychodzą jego ograniczenia, jak przykładowo niemożność umieszczania formuł matematycznych. Wstawianie symboli greckich próbowałem obejść modyfikując LOCALE i klawiaturę (da się) ale subskrypty/superskrypty to już się okazały nie do przejścia. Kombinowałem zatem jakby tu łatwo i przyjemnie zrobić diagramy ścieżkowe w czymś innym. W szczególności książka Skrondala i Rabe-Hesketh (Generalized latent variable modeling: multilevel, longitudinal, and structural equation models, ISBN: 9781584880004) -- ewidentnie składania LaTeXem -- zawiera bardzo schludne diagramy ścieżkowe. Podobno też w R coś tam się samo składa... Nic wszakże konkretnego nie ustaliłem i stanęło jak zwykle na MetaPoście.

Tutaj umieszczone bardzo proste makra pozwalają na rysowania diagramów ścieżkowych. Przykładowo narysowanie jednoczynnikowego modelu pomiaru, zawierającego trzy miary refleksyjne będzie wyglądało jakoś tak:


z1 = (40mm,20mm); %% srodek koła
%% Rysowanie czynnika eta_1 z błędem delta_1
ErCircle(z1, "$\eta_1$", "$\delta_1$", "r");

%% miary (refleksyjne):
z15 = (10mm,0mm);
%% miara x_1 z błędem \epsilon_1
ErRectangle(z15, "$x_1$", "$\epsilon_1$", "l");
CircleToRectangle(z15,z1, "$\lambda_1$");

z10 = (10mm,10mm);
%% miara x_2 z błędem \epsilon_2
ErRectangle(z10, "$x_2$", "$\epsilon_2$", "l");
CircleToRectangle(z10,z1, "$\lambda_2$");

z11 = (10mm,20mm);
%% miara x_3 z błędem \epsilon_3
ErRectangle(z11, "$x_3$", "$\epsilon_3$", "l");
CircleToRectangle(z11,z1, "$\lambda_3$");

Bardziej zaawansowany model jest obok na rysunku. Może komuś się też się przyda...

piątek, 19 czerwca 2009

prelim2e

Przydatny pakiet do wstawianie identyfikatora wersji dokumentu. Do tej pory stosowałem do tego makra `generyczne', ewidentnie wymyślone w okolicach f-my BOP sc.:


\newdimen\hs\hs 210mm
\newdimen\vs\vs 297mm
\def\shipmarg{\kern15mm}
\newbox\shipbox

\let\oriship\shipout

\def\DOSHIP{%
\hoffset-1in \voffset-1in
\oriship\vbox to\vs{
\shipmarg\nointerlineskip
\nointerlineskip\vss
\hbox to\hs{\hss\box\shipbox\hss}%
\nointerlineskip\vss
\hbox to\hs{\shipmarg \DOCNOTE \hss}
\shipmarg
}}
\def\doship{\aftergroup\DOSHIP}
\def\shipout{\afterassignment\doship\setbox\shipbox}

(Zaznaczone przerażające polecenia \aftergroup/\afterassignment, których w życiu nie używałem i przyznam nawet, że nie znam ich znaczenia.) Po czymś takim, umieszczonym najlepiej w osobnym pliku, należy zdefiniować tekst umieszczany na każdej stronie:


\def\DOCNOTE{ .... }

Patent ten w zmodyfikowanej wersji był wykorzystywany m.in. w klasie wzmgr. Był ale ponieważ przestał działać wymieniłem go na pakiet prelim2e. Sądząc z zawartości google -- mniej znany. Używa się go zaś bardzo prosto:


\usepackage{prelim2e}
\renewcommand{\PrelimWords}{...} %% <-- opcjonalnie, jeżeli domyślny tekst się nie podoba

Pakiet draftcopy nie działa z pdftexem więc od razu został zdyskwalifikowany. (Poza tym nie podoba mi się zwyczaj wstawiania bombastycznego napisu w tle tekstu kolumny.)

Dodanie prelim2e do wzmgr zrobiłem warunkowo. Jak ktoś doda do dokumentu opcję brudnopis, to zamieni się to na poniższe:


\DeclareOption{brudnopis}{\AtEndOfClass{\input{prelim2e.sty}%
\renewcommand{\PrelimWords}{\ThisDocVersionId}\linespread{1.0}}}
\def\ThisDocVersionId{....} %% <-- trzeba zdefiniować --

Bez umieszczenia \input wewnątrz \AtEndOfClass, LaTeX zgłaszał błąd powtórnej definicji \PrelimWords. Mam nadzieję, że powyższe jest OK, ale tradycyjnie pewności nie ma:-)

czwartek, 4 czerwca 2009

LaTeX, tabele i \tabularnewline

Prosta tabela składająca się z dwóch kolumn, ale zawierająca wielowierszowe rubryki. Rubryki mają być składane ,,w chorągiewkę''. Zatem dodaję pakiet array i definiuję za pomocą \newcolumntype:


\usepackage{array}
\newcolumntype{L}{>{\raggedright\hspace{0pt}}p{.48\textwidth}}
\begin{document}

\begin{tabular*}{\textwidth}{@{\extracolsep{\stretch{1}}}LL}\hline
coś tam coś tam coś & coś tam coś tam coś \\
\end{tabular*}

Nie działa a przyczyna jest subtelna. Otóż \raggedright m.in. definiuje polecenie \\, które kończy wiersz. Wewnątrz tabular też jest zdefiniowane \\, które kończy wiersz tyle, że tabeli -- a to co innego. Na okoliczność tego konfliktu wymyślono polecenie \tabularnewline. Należy zamiast \\ na końcu wiersza tabeli wstawiać \tabularnewline i będzie git! Do dziś nie potrzebowałem \tabularnewline więc nawet nie wiedziałem, ze takie coś istnieje. Zamiast \tabularnewline można -- dołączając pakiet ragged2e -- wstawić ,,bezpieczną wersję'' \raggedright, czyli \RaggedRight.

piątek, 22 maja 2009

Drobny przykład w XSLT

Fragment pliku XML wygląda jakoś tak:


<month no="1">
<item data="2009/01/03" dist="20" exdist="18.60" />
<item data="2009/01/25" dist="50" exdist="49.10" />
<month no="2">
...
</month>

Wszystkie item pomiędzy month trzeba zsumować aż do zadanego numeru miesiąca (włącznie), który jest n.b. wartością atrybutu no. Poniższy szablon wykona ww. zadanie:


<xsl:template name='drukuj-do-mc'>
<xsl:param name='mc'/>
<xsl:text> [od początku roku: </xsl:text>
<xsl:value-of select="sum(//item[not(../@no &gt; $mc)]/@dist)"/>
<xsl:text> km] </xsl:text>
</xsl:template>

Wyróżniony wiersz zawiera kluczowe przekształcenie XPath: //item[not(../@no &gt; $mc)]/@dist, co można zinterpretować następująco: wszystkie atrybuty dist przyczepione do elementu item, z całego dokumentu, ale pod warunkiem, że wartość atrybutu no elementu nadrzędnego jest nie większa niż $mc.