asciijump na FreeBSD

2 komentarze

Ostatnio naszła mnie chęć na asciijump. Jednak system, który posiadam to FreeBSD 8, który po prostu nie chciał skompilować mi asciijump'a. Aczkolwiek po wymienieniu kilku maili z autorem programu, udało mi się go skompilować (wersję 1.0.2beta) ;)

Po pierwsze, wymagany jest SLang, który w portach znajduje się w /usr/ports/devel/libslang2. Po nabyciu tej biblioteki ściągamy asciijump (w wersji 1.0.2beta). Po rozpakowaniu otwieramy plik configure i od linijki nr 2413 zamieniamy fragment:

else
{ { echo "$asme:$LINENO: error: \"S-Lang library not found! (try install slang-devel)\"" >&5
echo "$as
me: error: \"S-Lang library not found! (try install slang-devel)\"" >&2;}
{ (exit 1); exit 1; }; }
fi

na:

else
LIBS="-lslang -lcurses $LIBS"
fi

Teraz wystarczy odpalić configure. Jednak FreeBSD jak to FreeBSD, swoje pliki trzyma gdzie indziej, więc configure odpalamy w taki sposób: CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib" ./configure --prefix=/usr/local

To tyle, potem za pomocą gmake kompilujemy asciijumpa i cieszymy się grą :)

PuTTY + Aero

15 komentarzy

Jak wiadomo Vista i jej pochodne mają syf zwany Aero Glass. Jest tak nieużyteczny, że postanowiłem opublikować poprawkę, która zamieni cały terminal PuTTY w Aero (widoczne na poniższym screenshocie, także o tym pisał Coffeeredev)

PuTTY z Aero
Taki efekt można otrzymać poprzez modyfikację źródeł PuTTy'iego.

  1. Otwieramy plik WINDOWS\window.c
  2. Odnajdujemy poniższy fragment:
     
    #include <mmsystem.h>
     
    Pod nim piszemy:
    #include <dwmapi.h>
    static void extend_glass_frame(HWND);
  3. Odnajdujemy:
    case WM_CREATE:
    I zamieniamy na:
          case WM_CREATE:
          case WM_DWMCOMPOSITIONCHANGED:
            extend_glass_frame(hwnd);
  4. Następnie na samym końcu pliku deklarujemy funkcję extend_glass_frame:
    static void extend_glass_frame(HWND hwnd)
    {
        BOOL bEnabled = FALSE;
        HRESULT (WINAPI *pDwmIsCompositionEnabled)(BOOL*) = NULL;
        HRESULT (WINAPI *pDwmExtendFrameIntoClientArea)(HWND, MARGINS*) = NULL;
        HMODULE hmDwmapi = LoadLibrary("dwmapi.dll");
        if (hmDwmapi) {
    	pDwmIsCompositionEnabled =
    	    GetProcAddress(hmDwmapi, "DwmIsCompositionEnabled");
    	pDwmExtendFrameIntoClientArea =
    	    GetProcAddress(hmDwmapi, "DwmExtendFrameIntoClientArea");
        }
        if (pDwmIsCompositionEnabled) {
    	pDwmIsCompositionEnabled(&bEnabled);
        }
        if (bEnabled && pDwmExtendFrameIntoClientArea) {
    	MARGINS margins = {-1, 0, 0, 0};
    	pDwmExtendFrameIntoClientArea(hwnd, &margins);
        }
        FreeLibrary(hmDwmapi);
    }

Viola! Teraz kompilujemy i cieszymy się z naszego PuTTY z obsługą Aero Glass ;)
Dla leniwych: skompilowana wersja PuTTY+ z poprawką dla Aero

Przed chwilą stworzyłem coś dla geeków, którzy wielbią grę Portal :-)
Idealne do stosowania razem z motdem - wypróbowane :D
Ale do rzeczy:

 
#!/bin/bash
# g33czy portal by kubz
# licencja: WTFPL
let R=$RANDOM%14
 
if [[ $- != *i* ]]; then
case "$R" in
"0")
        echo "             .,-:;//;:=,"
        echo "          . :H@@@MM@M#H/.,+%;,"
        echo "       ,/X+ +M@@M@MM%=,-%HMMM@X/,"
        echo "     -+@MM; \$M@@MH+-,;XMMMM@MMMM@+-"
        echo "    ;@M@@M- XM@X;. -+XXXXXHHH@M@M#@/."
        echo "  ,%MM@@MH ,@%=            .---=-=:=,."
        echo "  =@#@@@MX .,              -%HX\$\$%%%+;"
        echo " =-./@M@M$                  .;@MMMM@MM:"
        echo " X@/ -\$MM/                    .+MM@@@M$"
        echo ",@M@H: :@:                    . =X#@@@@-"
        echo ",@@@MMX, .                    /H- ;@M@M="
        echo ".H@@@@M@+,                    %MM+..%#$."
        echo " /MMMM@MMH/.                  XM@MH; =;"
        echo "  /%+%\$XHH@$=              , .H@@@@MX,"
        echo "   .=--------.           -%H.,@@@@@MX,"
        echo "   .%MM@@@HHHXX\$\$$%+- .:\$MMX =M@@MM%."
        echo "     =XMMM@MM@MM#H;,-+HMM@M+ /MMMX="
        echo "       =%@M@M#@\$-.=\$@MM@@@M; %M%="
        echo "         ,:+$+-,/H#MMMMMMM@= =,"
        echo "               =++%%%%+/:-."
;;
"1")
        echo "             ,:/+/-"
        echo "             /M/              .,-=;//;-"
        echo "        .:/= ;MH/,    ,=/+%\$XH@MM#@:"
        echo "       -\$##@+\$###@H@MMM#######H:.    -/H#"
        echo "  .,H@H@ X######@ -H#####@+-     -+H###@X"
        echo "   .,@##H;      +XM##M/,     =%@###@X;-"
        echo " X%-  :M##########$.    .:%M###@%:"
        echo " M##H,   +H@@@$/-.  ,;\$M###@%,          -"
        echo " M####M=,,---,.-%%H####M$:          ,+@##"
        echo " @##################@/.         :%H##@\$-"
        echo " M###############H,         ;HM##M$="
        echo " #################.    .=\$M##M$="
        echo " ################H..;XM##M$=          .:+"
        echo " M###################@%=           =+@MH%"
        echo " @################M/.          =+H#X%="
        echo " =+M##############M,       -/X#X+;."
        echo "   .;XM##########H=    ,/X#H+:,"
        echo "      .=+HM######M+/+HM@+=."
        echo "          ,:/%XM####H/."
        echo "               ,.:=-."
;;
"2")
        echo "            .+"
        echo "             /M;"
        echo "              H#@:              ;,"
        echo "              -###H-          -@/"
        echo "               %####$.  -;  .%#X"
        echo "                M#####+;#H :M#M."
        echo "            .+/;%#########X###-"
        echo " -/%H%+;-,    +##############/"
        echo "    .:\$M###MH$%+############X  ,--=;-"
        echo "        -/H#####################H+=."
        echo "           .+#################X."
        echo "         =%M####################H;."
        echo "            /@###############+;;/%%;,"
        echo "         -%###################$."
        echo "       ;H######################M="
        echo "    ,%#####MH$%;+#####M###-/@####%"
        echo "  :\$H%+;=-      -####X.,H#   -+M##@-"
        echo " .              ,###;    ;      =\$##+"
        echo "                .#H,               :XH,"
        echo "                 +                   .;-"
;;
"3")
        echo "                       ;="
        echo "                       /="
        echo "                       ;="
        echo "                       /="
        echo "                       ;="
        echo "                       /="
        echo "                       ;="
        echo "                       /="
        echo "                ,--==-:$;"
        echo "            ,/\$@#######@X+-"
        echo "         ./@###############X="
        echo "        /M#####X+/;;;;+H#####$."
        echo "       %####M/;+H@XX@@%;;@####@,"
        echo "      +####H=+##$,--,=M#X-%####@."
        echo "     -####X,X@HHXH##MXHXXH-+####$"
        echo "     X###@.X/\$M$:####$=@X/X,X####-"
        echo "    .####:+$:##@:####$:##H/X=####%"
        echo "    -%%$%,+==%$+-$+:$;-\$\$%-+,/$%%+"
        echo "    -/+%%X\$XX$\$\$\$\$\$\$%\$\$$%\$X\$X\$%+/-"
;;
"5")
        echo "                     =/;;/-"
        echo "                    +:    //"
        echo "                   /;      /;"
        echo "                  -X        H."
        echo "    .//;;;:;;-,   X=        :+   .-;:=;:;%;."
        echo "    M-       ,=;;;#:,      ,:#;;:=,       ,@"
        echo "    :%           :%.=/++++/=.$=           %="
        echo "     ,%;         %/:+/;,,/++:+/         ;+."
        echo "       ,+/.    ,;@+,        ,%H;,    ,/+,"
        echo "          ;+;;/= @.  .H##X   -X :///+;"
        echo "          ;+=;;;.@,  .XM@$.  =X.//;=%/."
        echo "       ,;:      :@%=        =\$H:     .+%-"
        echo "     ,%=         %;-///==///-//         =%,"
        echo "    ;+           :%-;;;:;;;;-X-           +:"
        echo "    @-      .-;;;;M-        =M/;;;-.      -X"
        echo "     :;;::;;-.    %-        :+    ,-;;-;:=="
        echo "                  ,X        H."
        echo "                   ;/      %="
        echo "                    //    +;"
        echo "                     ,////,  "
;;
"6")
        echo "                =+\$HM####@H%;,"
        echo "             /H###############M$,"
        echo "             ,@################+"
        echo "              .H##############+"
        echo "                X############/"
        echo "                 \$##########/"
        echo "                  %########/"
        echo "                   /X/;;+X/  "
        echo ""
        echo "                    -XHHX-"
        echo "                   ,######,"
        echo "   #############X  .M####M.  X#############"
        echo "   ##############-   -//-   -##############"
        echo "   X##############%,      ,+##############X"
        echo "   -##############X        X##############-"
        echo "    %############%          %############%"
        echo "     %##########;            ;##########%"
        echo "      ;#######M=              =M#######;"
        echo "       .+M###@,                ,@###M+."
        echo "          :XH.                  .HX:    "
;;
"7")
        echo "               .-;+\$XHHHHHHX\$+;-."
        echo "            ,;X@@X%/;=----=:/%X@@X/,"
        echo "          =\$@@%=.              .=+H@X:"
        echo "        -XMX:                      =XMX="
        echo "       /@@:                          =H@+"
        echo "      %@X,                            .\$@$"
        echo "     +@X.                               \$@%"
        echo "    -@@,                                .@@="
        echo "    %@%                                  +@$"
        echo "   ]H@:                                  :@H"
        echo "    H@:         :HHHHHHHHHHHHHHHHHHX,    =@H"
        echo "    %@%         ;@M@@@@@@@@@@@@@@@@@H-   +@$"
        echo "    =@@,        :@@@@@@@@@@@@@@@@@@@@@= .@@:"
        echo "     +@X        :@@@@@@@@@@@@@@@M@@@@@@:%@%"
        echo "      \$@$,      ;@@@@@@@@@@@@@@@@@M@@@@@@$."
        echo "       +@@HHHHHHH@@@@@@@@@@@@@@@@@@@@@@@+"
        echo "        =X@@@@@@@@@@@@@@@@@@@@@@@@@@@@X="
        echo "          :\$@@@@@@@@@@@@@@@@@@@M@@@@$:"
        echo "            ,;\$@@@@@@@@@@@@@@@@@@X/-"
        echo "               .-;+$XXHHHHHX$+;-.    "
;;
"8")
        echo "                             .,---."
        echo "                           ,/XM#MMMX;,"
        echo "                         -%##########M%,"
        echo "                        -@######%  \$###@="
        echo "         .,--,         -H#######$   \$###M:"
        echo "      ,;\$M###MMX;     .;##########$;HM###X="
        echo "    ,/@##########H=      ;################+"
        echo "   -+#############M/,      %##############+"
        echo "   %M###############=      /##############:"
        echo "   H################      .M#############;."
        echo "   @###############M      ,@###########M:."
        echo "   X################,      -\$=X#######@:"
        echo "   /@##################%-     +######\$-"
        echo "   .;##################X     .X#####+,"
        echo "    .;H################/     -X####+."
        echo "      ,;X##############,       .MM/"
        echo "         ,:+\$H@M#######M#\$-    .\$\$="
        echo "              .,-=;+\$@###X:    ;/=."
        echo "                     .,/X$;   .::,"
        echo "                         .,    ..  "
;;
"9")
        echo "                                        :X-"
        echo "                                     :X###"
        echo "                                   ;@####@"
        echo "                                 ;M######X"
        echo "                               -@########$"
        echo "                             .\$##########@"
        echo "                            =M############-"
        echo "                           +##############$"
        echo "                         .H############$=."
        echo "            ,/:         ,M##########M;."
        echo "         -+@###;       =##########M;"
        echo "      =%M#######;     :#########M/"
        echo "   -\$M###########;   :#########/"
        echo "    ,;X###########; =########$."
        echo "        ;H#########+#######M="
        echo "          ,+##############+"
        echo "             /M#########@-"
        echo "               ;M######%"
        echo "                 +####:"
        echo "                  ,\$M-  "
;;
"10")
        echo "    +@##########M/             :@#########@/"
        echo "    ##############$;H#######@;+#############"
        echo "    ###############M########################"
        echo "    ##############X,-/++/+%+/,%#############"
        echo "    ############M$:           -X############"
        echo "    ##########H;.      ,--.     =X##########"
        echo "    :X######M;     -\$H@M##MH%:    :H#######@"
        echo "       =%#M+=,   ,+@#######M###H:    -=/M#%"
        echo "       %M##@+   .X##$, ./+- ./###;    +M##%"
        echo "       %####M.  /###=         @##M.   X###%"
        echo "       %####M.  ;M##H:.     =\$###X.   \$###%"
        echo "       %####@.   /####M\$-./@#####:    %###%"
        echo "       %H#M/,     /H###########@:     ./M#%"
        echo "     ;\$H##@@H:    .;\$HM#MMMH$;,   ./H@M##M$="
        echo "    X#########%.      ..,,.     .;@#########"
        echo "    ###########H+:.           ./@###########"
        echo "    ##############/ ./%%%%+/.-M#############"
        echo "    ##############H\$@#######@@##############"
        echo "    ##############X%########M\$M#############"
        echo "    +M##########H:            .\$##########X="
;;
"11")
        echo "                         -\$-"
        echo "                        .H##H,"
        echo "                       +######+"
        echo "                    .+#########H."
        echo "                  -\$############@."
        echo "                =H###############@  -X:"
        echo "              .\$##################:  @#@-"
        echo "         ,;  .M###################;  H###;"
        echo "       ;@#:  @###################@  ,#####:"
        echo "     -M###.  M#################@.  ;######H"
        echo "     M####-  +###############$   =@#######X"
        echo "     H####$   -M###########+   :#########M,"
        echo "      /####X-   =########%   :M########@/."
        echo "        ,;%H@X;   .\$###X   :##MM@%+;:-"
        echo "                     .."
        echo "      -/;:-,.              ,,-==+M########H"
        echo "     -##################@HX%%+%%$%%%+:,,"
        echo "        .-/H%%%+%%\$H@###############M@+=:/+:"
        echo "    /XHX%:#####MH%=    ,---:;;;;/%%XHM,:###$"
        echo "    \$@#MX %+;-                           . "
;;
"12")
        echo "           #+ @      # #              M#@"
        echo "     .    .X  X.%##@;# #   +@#######X. @#%"
        echo "       ,==.   ,######M+  -#####%M####M-    #"
        echo "      :H##M%:=##+ .M##M,;#####/+#######% ,M#"
        echo "     .M########=  =@#@.=#####M=M#######=  X#"
        echo "     :@@MMM##M.  -##M.,#######M#######. =  M"
        echo "                 @##..###:.    .H####. @@ X,"
        echo "       ############: ###,/####;  /##= @#. M"
        echo "               ,M## ;##,@#M;/M#M  @# X#% X#"
        echo "    .%=   ######M## ##.M#:   ./#M ,M #M ,#$"
        echo "    ##/         \$## #+;#: #### ;#/ M M- @# :"
        echo "    #+ #M@MM###M-;M #:\$#-##\$H# .#X @ + \$#. #"
        echo "          ######/.: #%=# M#:MM./#.-#  @#: H#"
        echo "    +,.=   @###: /@ %#,@  ##@X #,-#@.##% .@#"
        echo "    #####+;/##/ @##  @#,+       /#M    . X,"
        echo "       ;###M#@ M###H .#M-     ,##M  ;@@; ###"
        echo "       .M#M##H ;####X ,@#######M/ -M###$  -H"
        echo "        .M###%  X####H  .@@MM@;  ;@#M@"
        echo "         H#M    /@####/      ,++.  / ==-,"
        echo "                   ,=/:, .+X@MMH@#H  #####$="
;;
"13")
        echo "             ,=;%$%%\$X%%%%;/%%%%;=,"
        echo "         ,/\$\$+:-                -:+\$\$/,"
        echo "       :X$=                          =\$X:"
        echo "     ;M%.                              .%M;"
        echo "    +#/                                  /#+"
        echo "    ##                                    M#"
        echo "    H#,                     =;+/;,       ,#X"
        echo "    .HM-       :@X+%H:   .%M%- .M#.     -M@."
        echo "      /#%.     @#-  ,H@--MH, .;@\$-    .%#+"
        echo "       .\$M;    .+@X;, MM#@:/\$X;.     ;M$,"
        echo "         =@H,     ,:+%H#M%;-       ,H@="
        echo "          .\$#;        -#H         =#$"
        echo "            %#;        #M        ;#%"
        echo "             H#-       ##       -#H"
        echo "             ;#+       ##       +#;"
        echo "              ;H+;;;;;;HH;;;;;;+H/"
        echo "               =H#@HHHHHHHHHH@#H="
        echo "               =@#H%%%%%%%\$HH@#@="
        echo "               =@#X%%%%%%%\$M###@="
        echo "                   =+%XHHX%+=     "
;;
"14")
        echo "          X MM X"
        echo "          X MM X"
        echo "          X MM X"
        echo "          X MM X"
        echo "          + HX +"
        echo "        ,=\$\$XX%/-"
        echo "      =X#########@%-"
        echo "     ;##############="
        echo "    -###############M,"
        echo "    ;##@@@######M@###="
        echo "    .+:;+:=H##$=:/:;H."
        echo "    - +###- ## :###,,;"
        echo "    +@:/%;-H##H==/::H;"
        echo "     /#@/-=+\$\$%::+H#$"
        echo "     \$#%-,      ,.:##-"
        echo "    -@/            =X%."
        echo "    %H=             -$;"
        echo "     =HH,         .%M;"
        echo "      /MM/       :@M/."
        echo "       .:XX,   -\$H:.  "
;;
"4")
        echo "           .-+\$H###MM@MMMMM##@$+-,. ...."
        echo "     -@$+%$+%HX+--..  .  . .,:X$/+/++\$#:"
        echo "     -#MXH$=                      \$HXH#:"
        echo "      .--,:#+   ,+\$HMX =@@X%, . .X#:,,,"
        echo "          =#@\$H :####H =####;,M%\$#X"
        echo "          X###$ \$####X =####H %###X"
        echo "         ;###X /###@$: ,+HM##H.+###;"
        echo "        :###;,X##%=;%H@H$;-;M#@-;###/"
        echo "       ,M##;.@##;-H#######M=.M##-:###-"
        echo "       ;##M ;##X @###H-=@###.;##X H##;"
        echo "       ;##M./##X.@###H:/M###-=##X X##;"
        echo "       -###;,M##:,@########+-H##; @##-"
        echo "        %##M==@##%==%HMH%::/M##+.X##+"
        echo "         %###/./###X+: -+\$M##M=,X##+"
        echo "          X###X X####H +#####% @##H"
        echo "          :###H %####H +#####; X##;"
        echo "          /#$.  -HM##H /###@+.  +#$. ."
        echo "     /HX%\$X:      .,-, .-,.      =XX\$H@-"
        echo "     /#H+/+%+/+;=.          .=/%;;/;;+#+"
        echo "      ..  .,-:XM#MM@@@@@@H@@M#@+=,.   ,,"
;;
esac
fi
 

Od czasu, kiedy Firefoks zaczął coraz bardziej zamulać, postanowiłem zmienić przeglądarkę. Wybór padł na Operę.
Wszystko byłoby piękne, gdyby nie fakt, że Opera nie posiada blokady na zapamiętywanie wprowadzonych adresów.
Zapamiętane adresy w Operze
Teoretycznie w opcjach Opery widnieje możliwość niezapamiętywania adresów, lecz to nie do końca spełnia swojego zadania
Opcje Opery

Jednak istnieje możliwość zablokowania zapamiętywania wprowadzonych adresów w Operze. Aby to wykonać, wystarczy wykonać następujące kroki:

  • Włączamy Operę
  • Klikamy tutaj i spisujemy ścieżkę od profilu Opery
  • Wchodzimy do folderu z profilem Opery.
  • W zależności od wersji przeglądarki, otwieramy plik typed_history.xml bądź opera.dir (wersje poniżej Opery 9.60)
  • Otwieramy i czyścimy zawartość pliku (w Operze poniżej 9.60 nie usuwajcie 1. linii)
  • Otwartemu plikowi nadajemy uprawnienia tylko do odczytu
  • Viola!

Ostatnio słuchana piosenka z Last.fm jako status w EKG

8 komentarzy

Zachciało mi się ostatnio słuchanej piosenki z serwisu Last.fm jako status opisowy w EKG.
Jako że nikt nie napisał takiego skryptu, musiałem spłodzić go sam. Na dodatek na koncie shell, gdzie stoi EKG, nie ma wbudowanej obsługi skryptów Pythona, dostępu do kompilatorów też nie.
Jednak wystarczyło trochę pokombinować - wyszło nawet całkiem ładnie. No, ale żeby dalej nie zanudzać napiszę Wam, jak stworzyć takie cudo.

Po pierwsze potrzebujemy jakiegoś hostingu. Gdy takowy znajdziemy, w zależności od posiadanej wersji PHP, tworzymy skrypt:

Wersja dla PHP4: (bez wbudowanej obsługi plików XML)

Tutaj będzie potrzebny nam skrypt LastRSS, który możemy pobrać z tej strony. Skrypt prezentuje się następująco:

<?php
include "lastrss.php";
$nick = "kubz"; # <- NASZ NICK NA LAST.FM
$rss = new lastRSS;
$rss->cache_time = 0;
$rss->cp = "UTF-8";
$rss->date_format = "l";
$rssurl = "http://ws.audioscrobbler.com/2.0/user/".$nick.
"/recenttracks.rss";
if ($rs = $rss->get($rssurl)) {
$f = $rs[items][0][title];
$f = str_replace(chr(128), "-", $f); # zamiana dziwnych 
#znaczków na myślnik, wersja dla domyślnego kodowania: ISO-8859-2
$f = str_replace(chr(226), "", $f); # j.w.
$f = str_replace(chr(147), "", $f); # j.w.
echo "Last.fm: ".$f;
}
else {
echo 'Error';
}
?>


Wersja dla PHP5:

Natomiast dla PHP5 sprawa ma się nieco prościej, a mianowicie wymaga tylko MagpieRSS
<?php
$nick = "kubz"; # NASZ NICK NA LAST.FM
$url = "http://ws.audioscrobbler.com/2.0/user/".$nick."/recent".
"tracks.rss";
require('rss_fetch.inc.php');
$rss = fetch_rss($url);
$f = $rss->items[0]['title'];
$f = str_replace("?", "-", $f); # zamiana długiego myślnika na 
#krótszy, przecież EKG i GG nie obsługuje UTF-8...
echo "Last.fm: ".$f;
?>

A tutaj jest lepszy kod, napisany przez Marinesa:
<?php
function getLastTrack($username, $line = 14) {
	$file = file('http://ws.audioscrobbler.com/2.0/user/'.$username.'/recenttracks.rss');
	echo str_replace('?','-',mb_convert_encoding(trim(preg_replace("/(<title>|<\/title>)/i","",$file[$line-1])),'ISO-8859-2','UTF-8'));
}
getLastTrack('marines');
?>

Gdy już uporamy się ze skryptem, jest już z górki. Na koncie shell tworzymy w katalogu domowym plik lastfm, a w nim:
#!/bin/sh
ADRES="http://..." # adres do naszego skryptu
wget -q $ADRES -O /tmp/lastfm
LAST=`cat /tmp/lastfm`
echo "/away "$LAST > ~/.gg/ekg-pipe
rm /tmp/lastfm

Oczywiście trzeba nadać odpowiednie prawa temu skryptowi, przez
chmod +x lastfm

Teraz należy odpalić EKG, ale z opcją "-c", wygląda to następująco:
screen ekg -c ~/.gg/ekg-pipe

Gdy EKG się odpali, włączamy w nim timer. Aby to zrobić, trzeba wpisać:
timer -a last */60 exec ./lastfm


I to by było na tyle :)
Efekt tego skryptu możecie zobaczyć pod moim numerem GG (2287960)

Reaktywacja Reinstalacji

4 komentarze
We Wrocławiu rozpoczyna się kolejny sezon studenckiej akcji Linux-Reinstalacja.

Tak jak w zeszłym roku - zaczynamy już w grudniu i jesteśmy pewni, że frekwencja również i tym razem nam dopisze. Będziemy pokazywać, konfigurować i instalować najrozmaitsze dystrybucje linuksów. Oferujemy całe spektrum możliwości - od Ubuntu i jego klonów, przez Fedorę, Debiana, aż po Slackware i Gentoo. Zapraszamy wszystkich, którzy chcą zapoznać się z Wolnym Oprogramowaniem! 13 grudnia (sobota), godziny 12:00 - 20:00
Politechnika Wrocławska - Budynek C13, sala 4.03
Więcej informacji na linux-reinstalacja.pl

IE6 na Viście? Nie ma problemu.

7 komentarzy
Webmasterzy pracujący na Viście - denerwuje was to, że nie można na tym systemie zainstalować IE6 (normalnie ;])
Niektórym mógłby przyjść na pomysł Multiple IE - dobra, ale jak autor napisał "Multiple IE doesn't work on Windows Vista." - no to klapa
Także można utworzyć maszynę wirtualną ze starszym systemem - ale po co? Są mniej zasobożerne sposoby ;)
IETester - to jest lekarstwo na nasz ból (u mnie na Viście Business zżera około 13 MB).
Bez instalacji innych wersji IE możemy odpalić IE5.5, IE6, IE7 oraz IE8 :)
Jedyne wymaganie to Windows XP bądź Vista z IE7
Aplikację możemy pobrać stąd.
IETester

Windows XP na dysku USB? Czemu nie.

31 komentarzy
Zastanawialiście się kiedyś, jak odpalić Windowsa XP na dysku USB?
Zwykle to kończyło się BSoD'em. "No dobrze ale jak się do tego zabrać?" - pewnie myślicie zniecierpliwieni ;)
Musimy się uzbroić w:
  • najlepiej drugi, działający system jedynej słusznej firmy
  • dysk USB
  • płytkę z Windowsem
  • jakiś program do zamiany plików w ISO (np. WinISO)
  • Majkroszoftowe CAB SDK
  • program do nagrywania płyt
  • no i w najważniejsze - cierpliwość ;)
Gdy mamy wszystko możemy zabrać się do roboty. Najpierw musimy zamienić płytkę Windowsową na plik ISO (w WinISO "Actions -> Make ISO" ;)) Kolejnym krokiem będzie wypakowanie plików (z folderu I386):
  • TXTSETUP.SIF
  • DOSNET.INF
  • USB.IN_
  • USBPORT.IN_
  • USBSTOR.IN_
Teraz trzeba rozpakować pliki, które mają "IN_" na końcu rozszerzenia. Aby to zrobić wystarczy odpalić "cabarc x PLICZEK.IN_". Po wypakowaniu można usunąć te pliki. Teraz pora zabrać się do modyfikacji plików.

Pierwszy plik - TXTSETUP.SIF

Najpierw przenosimy wybrane punkty z sekcji [InputDevicesSupport.Load] do [BootBusExtenders.Load] jak jest pokazane niżej:
[BootBusExtenders.Load]
pci = pci.sys
acpi = acpi.sys
isapnp = isapnp.sys
acpiec = acpiec.sys
ohci1394 = ohci1394.sys
usbehci = usbehci.sys
usbohci = usbohci.sys
usbuhci = usbuhci.sys
usbhub = usbhub.sys
usbstor = usbstor.sys

[InputDevicesSupport.Load]
usbehci = usbehci.sys
usbohci = usbohci.sys
usbuhci = usbuhci.sys
usbhub = usbhub.sys
usbccgp = usbccgp.sys
hidusb = hidusb.sys
serial = serial.sys
serenum = serenum.sys
usbstor = usbstor.sys
Teraz robimy to samo dla [BootBusExtenders] i [InputDevicesSupport]
[BootBusExtenders]
pci = "PCI-Bustreiber",files.pci,pci
acpi = "ACPI Plug & Play-Bustreiber",files.acpi,acpi
isapnp = "ISA Plug & Play-Bustreiber",files.isapnp,isapnp
acpiec = "Integrierter ACPI-Controllertreiber",files.none,acpiec
ohci1394 = "IEEE-1394-Bus-OHCI-konformer Anschlusstreiber",files.ohci1394,ohci1394
usbehci = "Erweiterter Hostcontroller",files.usbehci,usbehci
usbohci = "Open Hostcontroller",files.usbohci,usbohci
usbuhci = "Universeller Hostcontroller",files.usbuhci,usbuhci
usbhub = "Standard-USB-Hubtreiber",files.usbhub,usbhub
usbstor = "USB-Speicherklassentreiber",files.usbstor,usbstor

[InputDevicesSupport]
usbehci = "Erweiterter Hostcontroller",files.usbehci,usbehci
usbohci = "Open Hostcontroller",files.usbohci,usbohci
usbuhci = "Universeller Hostcontroller",files.usbuhci,usbuhci
usbhub = "Standard-USB-Hubtreiber",files.usbhub,usbhub
hidusb = "HID-Parser",files.hidusb,hidusb
serial = "Treiber f�r seriellen Anschluss",files.none,serial
serenum = "Enumerator f�r seriellen Anschluss",files.none,serenum
usbstor = "USB-Speicherklassentreiber",files.usbstor,usbstor
usbccgp = "USB Generic Parent Driver",files.usbccgp,usbccgp
Następnie do sekcji [HiveInfs.Fresh] dodajemy AddReg = usbboot.inf,usbservices
Później na początek sekcji [SourceDisksFiles] dodajemy usbboot.inf = 1,,,,,,_x,3,,3

Następny plik - DOSNET.INF

Na początek sekcji [Files] dodajemy d1,usbboot.inf

No i kolejny plik - USB.INF

Zamień na pogrubione wartości w sekcjach [StandardHub.AddService] i [CommonClassParent.AddService]
[StandardHub.AddService]
DisplayName = %StandardHub.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
StartType = 0 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %12%\usbhub.sys
LoadOrderGroup = Boot Bus Extender

[CommonClassParent.AddService]
DisplayName = %GenericParent.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
StartType = 0 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %12%\usbccgp.sys
LoadOrderGroup = Boot Bus Extender

Kolejnym plikiem będzie USBPORT.INF

W nim zamieniamy na pogrubione wartości w sekcjach [EHCI.AddService], [OHCI.AddService] , [UHCI.AddService] oraz [ROOTHUB.AddService]
[EHCI.AddService]
DisplayName = %EHCIMP.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
StartType = 0 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %12%\usbehci.sys
LoadOrderGroup = Boot Bus Extender
[OHCI.AddService]
DisplayName = %OHCIMP.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
StartType = 0 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %12%\usbohci.sys
LoadOrderGroup = Boot Bus Extender
[UHCI.AddService]
DisplayName = %UHCIMP.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
StartType = 0 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %12%\usbuhci.sys
LoadOrderGroup = Boot Bus Extender

[ROOTHUB.AddService]
DisplayName = %ROOTHUB.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
StartType = 0 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %12%\usbhub.sys
LoadOrderGroup = Boot Bus Extender


W pliku USBSTOR.INF zamieniamy/dodajemy następujące wartości w sekcji [USBSTOR.AddService]

[USBSTOR.AddService]
DisplayName = %USBSTOR.SvcDesc%
ServiceType = 1
StartType = 0
Tag = 3

ErrorControl = 1
ServiceBinary = %12%\USBSTOR.SYS
LoadOrderGroup = Boot Bus Extender

Teraz powoli dochodzimy do końca :)
Tworzymy plik USBBOOT.INF zawierający:

[usbservices]

HKLM,"SYSTEM\CurrentControlSet\Services\USBSTOR","DisplayName",0x00000000,"USB Mass Storage Driver"
HKLM,"SYSTEM\CurrentControlSet\Services\USBSTOR","ErrorControl",0x00010001,1
HKLM,"SYSTEM\CurrentControlSet\Services\USBSTOR","Group",0x00000000,"System Reserved"
HKLM,"SYSTEM\CurrentControlSet\Services\USBSTOR","ImagePath",0x00020000,"system32\DRIVERS\USBSTOR.SYS"
HKLM,"SYSTEM\CurrentControlSet\Services\USBSTOR","Start",0x00010001,0
HKLM,"SYSTEM\CurrentControlSet\Services\USBSTOR","Type",0x00010001,1

HKLM,"SYSTEM\CurrentControlSet\Services\usbehci","DisplayName",0x00000000,"USB 2.0 Enhanced Host Controller Miniport Driver"
HKLM,"SYSTEM\CurrentControlSet\Services\usbehci","ErrorControl",0x00010001,1
HKLM,"SYSTEM\CurrentControlSet\Services\usbehci","Group",0x00000000,"System Reserved"
HKLM,"SYSTEM\CurrentControlSet\Services\usbehci","ImagePath",0x00020000,"system32\DRIVERS\usbehci.sys"
HKLM,"SYSTEM\CurrentControlSet\Services\usbehci","Start",0x00010001,0
HKLM,"SYSTEM\CurrentControlSet\Services\usbehci","Type",0x00010001,1

HKLM,"SYSTEM\CurrentControlSet\Services\usbhub","DisplayName",0x00000000,"USB2 Enabled Hub"
HKLM,"SYSTEM\CurrentControlSet\Services\usbhub","ErrorControl",0x00010001,1
HKLM,"SYSTEM\CurrentControlSet\Services\usbhub","Group",0x00000000,"System Reserved"
HKLM,"SYSTEM\CurrentControlSet\Services\usbhub","ImagePath",0x00020000,"system32\DRIVERS\usbhub.sys"
HKLM,"SYSTEM\CurrentControlSet\Services\usbhub","Start",0x00010001,0
HKLM,"SYSTEM\CurrentControlSet\Services\usbhub","Type",0x00010001,1

HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","DisplayName",0x00000000,"Microsoft USB Universal Host Controller Miniport Driver"
HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","ErrorControl",0x00010001,1
HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","Group",0x00000000,"System Reserved"
HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","ImagePath",0x00020000,"system32\DRIVERS\usbuhci.sys"
HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","Start",0x00010001,0
HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","Type",0x00010001,1

HKLM,"SYSTEM\CurrentControlSet\Services\usbohci","DisplayName",0x00000000,"Microsoft USB Open Host Controller Miniport Driver"
HKLM,"SYSTEM\CurrentControlSet\Services\usbohci","ErrorControl",0x00010001,1
HKLM,"SYSTEM\CurrentControlSet\Services\usbohci","Group",0x00000000,"System Reserved"
HKLM,"SYSTEM\CurrentControlSet\Services\usbohci","ImagePath",0x00020000,"system32\DRIVERS\usbohci.sys"
HKLM,"SYSTEM\CurrentControlSet\Services\usbohci","Start",0x00010001,0
HKLM,"SYSTEM\CurrentControlSet\Services\usbohci","Type",0x00010001,1

Rozpakowane pliki IN_ teraz trzeba spakować poleceniem:
cabarc n USB.IN_ usb.inf
cabarc n USBPORT.IN_ usbport.inf
cabarc n USBSTOR.IN_ usbstor.inf
Na koniec wyrzucamy z pliku ISO: DOSNET.INF, TXTSETUP.SIF, USB.IN_, USBPORT.IN_, USBSTOR.IN_. Teraz dodajemy zmodyfikowane pliki USBBOOT.INF, DOSNET.INF, TXTSETUP.SIF, USB.IN_, USBPORT.IN_, USBSTOR.IN_. Ostatecznym krokiem będzie wypalenie płyty i instalacja systemu ;)

Ten artykuł jest bardzo wolnym tłumaczeniem artykułu How to boot Windows XP off a USB drive
Dodam od siebie, iż trzeba bardzo uważnie zamieniać/dodawać/etc w plikach bo bardzo łatwo można zrobić błąd i z takiej płyty już nie zainstalujemy systemu na naszym dysku USB.
Mam nadzieję, że ten artykuł was nie znudził :)

Walka z wiatrakami - BlueConnect na Ubuntu

12 komentarzy
Dzisiejszy wpis będzie (jak zapewne wszyscy domyślacie się o BlueConnecie - konkretniej Huawei E220 - na Ubuntu). Trochę mi zajęło zanim wszystko zaczęło działać. W dalszej części wpisu opiszę, jak uruchomić ten modemik pod Linuksem
Po pierwsze są nam potrzebne pakiety: wvdial i ppp (jak te pakiety zainstalować chyba każdy wie ;))
Kolejnym krokiem jest pobranie pliku huaweiAktBbo-i386.out (no i oczywiście odpalenie tego pliku)
Aby wszystko ładnie działało, musimy wyedytować 3 pliki -> /etc/wvdial.conf, /etc/ppp/peers/era, /etc/ppp/era-chat.
Pierwszy (u mnie) wygląda tak:
[Dialer huawei]
Init2 = AT
Init3 = AT&FE0V1X1&D2&C1S0=0
ISDN = 0
Modem = /dev/ttyUSB0
Modem Type = Analog Modem
Baud = 460800
[Dialer pin]
Init1 = AT+Cpin=1234
[Dialer Defaults]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2
Stupid Mode = 1
Modem Type = Analog Modem
ISDN = 0
Phone = *99#
Modem = /dev/ttyUSB0
Username = erainternet
Dial Command = ATDT
Password = erainternet
Baud = 460800

Oczywiście w sekcję pin wpisujemy swój pin.
Drugi plik (/etc/ppp/peers/era) wygląda tak:
updetach
debug
connect "chat -v -f /etc/ppp/era-chat"
/dev/ttyUSB0
230400
crtscts
local
noipdefault
defaultroute
usepeerdns
novj
nobsdcomp
nopcomp
noaccomp
noauth

No i przyszła pora na trzeci plik - era-chat:
ABORT "NO DIALTONE"
ABORT "NO ERROR"
ABORT "NO ANSWER"
ABORT "BUSY"
"" "AT"
OK "AT+CPIN=NASZPIN"
OK "AT&F"
OK "AT+CMEE=1"
OK 'AT+CGDCONT=1,"IP","erainternet"'
OK "ATDT*99***1#"


Bardzo możliwe, że pakiet ppp i pliki z nim związane nie są potrzebne - ale ja opisałem jak ja to zrobiłem ;)
Teraz jak to odpalić? Bardzo prosto - wvdial
W razie problemów z /dev/modem należy zrobić dowiązanie symboliczne z /dev/ttyUSB0 do /dev/modem
Gdyby jednak coś nie działało, należy ściągnąć sterowniki dostępne tutaj. Na tamtej stronie dostępny jest również program do monitorowania modemowego łącza.