10.9.07

Moje programátorské trápení

Deadline projektu už je podstatě za námi a projekt stále není. Částečně je chyba u kolegy, částečně i u velení - bylo mi řečeno, že na jejich systému vytvoří virtuální server pod Linuxem, den po termínu jsem se dozvěděl, že se nic takového nekonalo. Protože jsem podepisoval smlouvu o důvěrnosti, tak nebudu říkat, co přesně je ten projekt zač. Jen že tam využívám knihoven Boost a asio.
Projekt jsem napsal, vše šlapalo jak na drátku. Problém nastal při testování, konkrétně když jsem zkoušel kompilovat Boost na operačním systému OpenBSD 3.9. Je to už krapet starší verze, možná i to se na tom podepsalo... Boost tam prostě nešel zkompilovat, padlo to na Segmentation fault. Dlouho jsem přemýšlel, jak to vyřešit, pomrkával jsem po cross kompilaci (tzn. na svým Linuxu bych zkompiloval kompilátor a příslušný knihovny pro OpenBSD a v tom zkompiloval svůj projekt), ale ukázalo se to jako složité řešení, nedařilo se mi najít tu správnou kombinaci ARCH-VENDOR-OS-LIBC (co je špatně na i386-pc-openbsd-uclibc?).
Nakonec jsem se rozhodl pro další řešení. Stáhl jsem instalační soubory OpenBSD, pustil virtuální stroj vmware, v tom (s drobnými obtížemi se sítí) nainstaloval systém a začal to všechno instalovat včetně knihoven tam. Boost byl pokořen, podařilo se mi ho tam zkompilovat!
Objevila se však další chyba při instalaci knihovny asio. Ta padla při kompilaci při volání funkcí gethostbyname_r a dalších knihoven z glibc, což je GNU knihovna, která pod BSD není! Přitom na stránkách asia je napsáno, že projekt jde rozjet pod Mac OS X, což je *BSD systém. I na IRC kanálu #boost@freenode, kde se scházejí uživatelé i vývojáři Boostu a asia, se tomu divili.
Pustil jsem se tedy do editace zdrojových souborů asio knihovny, snažím se upravovat #ifdefy tam, kde jsou obsaženy #ifdefy pro Mac, snad to zabere.
Štve mě to, protože najednou mám kopec práce, do středy dopoledne mám mít ještě hotových 20 stran překladu, mě z toho hrábne! :-( Snad se to nějak podaří.

2.9.07

Odchází mi počítač

Včera v noci se mi stala taková nemilá věc - najednou přestal jet net. Poslední dobou se mi to stávalo stále časteji. Moje wifi karta ZCom XI-626 prostě potřebovala "restart", takže jsem musel vypnout připojení, odebrat modul, přidat modul, znovu resolvnout IP adresu... Jenže najednou to za večer udělalo tak 4x a pak už to IP adresu nechtělo načíst vůbec. Nepomohl ani restart počítače ani otestování karty ve Windows XP, v obou systémech to zhaslo na získávání IP adresy.
Navíc mi počítač občas dělá to, že při větším zatížení procesoru a současně při větším zatížení wifi karty zcela zatuhne, vyřeší to jen tlačítko reset.
Další den jsem jel k bratrancovi, vzal tam počítač a vrazil do něj jeho wifi kartu. Připojení se ani tak nechtělo zadařit. Podařilo se nám tedy připojit na nějakou nezabezpečenou síť, kterou tam náhodou má v dosahu, ale na tu naši síť to prostě nešlo.
Počítač jsem si vrátil domů a zkusil jinou věc - strčit wifi kartu do jiného PCI slotu. Učinil jsem tak a voila, síť naběhla! Tak snad to ještě chvíli počítač vydrží...
Bootnul jsem do Linuxu a pustil jsem tam z nějakých důvodů alsamixer. Jakmile jsem stiskl Enter, počítač opět kompletně zatuhnul a potřeboval restart. Vytáhl jsem tedy zvukovou kartu (nějaký chipset CMI8738, zvuk 5.1) a systém naběhl a zatím se drží. Ještě ji zkusím strčit také do jiného slotu (i když už jich tam moc není) a uvidíme...

Počítač už mám dlouho. Kupoval jsem ho někdy v 17 letech, takže před 6 lety. Měnil jsem na něm snad vše - vadnou paměť, přidal novej disk, shořela deska a koupil jsem ji komplet "novou" z bazaru včetně procesoru (teď tam je Celeron 1.1 GHz), časem odešla grafická karta, CD mechanika i zdroj. Jediné, co zůstalo původního, je stařičký 30GB disk Western Digital, který pořád šlape, ale má nějakou volnější šasi, mikro-ATX skříň a kabely.

Je tedy na čase koupit nový počítač. A už mám i vybraný model, je to IBM Lenovo N100. Vezmu našetřené peníze a ty, co si teď vydělám za projekt (doufám!) a koupím si ho. Sice bych za tu samou cenu mohl mít nadupanou mašinu doma, ale já nejsem zas takovej pařan a radši investuju do mobility než do výkonu. Ve škole i v případné budoucí práci se mi to bude hodit - informatik, co prezentuje svoji práci na průsvitkách přes meotar nepůsobí moc reprezentativně. :-)
Tak snad to to moje milované počítadýlko ještě vydrží, mám ho stejně rád. :-)

29.8.07

Hoo da man?!

Není mým zvykem vytvářet blogposty pro vkládání obrázků, ale tento prostě nemá chybu! :)) Garfieldovy comicsy mám rád, ale na tento se musím dívat pořád dokola. :-D Ta poslední hláška prostě nemá chybu (pro méně pokročilé angličtináře: "Hoo da man?!" je "Who's the man?!", česky volně přeloženo něco ve smyslu "Kdo je tu bůh?!"; anglicky to má větší šťávu, no). A Jonova odpověď ("Ty seš bůh") to dorazí. :)

Klikněte si na to pro normální rozlišení.

28.8.07

Jednoduchý příklad SSL spojení v asio

Dělám teď projekt pomocí knihovny asio a chci ukázat, jak snadné je vytvořit jednoduchý prográmek, který naslouchá na daném portu a přijme šifrované SSL spojení, pak vypíše zprávu, kterou obdržel (omlouvám se za formátování, ale Blogger nic pohodlnějšího asi nenabízí :-/):

#include <asio.hpp>
#include <asio/ssl.hpp>
#include <iostream>
#include <exception>

int main()

try
{
asio::io_service io_service_;
asio::ssl::context context_(io_service_, asio::ssl::context::sslv23);
asio::ip::tcp::acceptor acceptor_(io_service_, asio::ip::tcp::endpoint(asio::ip::tcp::v4(), 22222));

context_.set_options(
asio::ssl::context::default_workarounds
| asio::ssl::context::no_sslv2
| asio::ssl::context::single_dh_use);
context_.use_certificate_chain_file("server.pem");
context_.use_private_key_file("key.pem", asio::ssl::context::pem);
context_.use_tmp_dh_file("dh512.pem");

asio::ssl::stream<asio::ip::tcp::socket> s(io_service_, context_);
acceptor_.accept(s.lowest_layer());

s.handshake(asio::ssl::stream_base::server);
char data[8192];
s.read_some(asio::buffer(data, 8192));

std::cout <
< "I got: " << data << std::endl;

s.shutdown();
}
catch (asio::error& e) {
std::cerr
<< "error: " << e.what() << std::endl;
}

Ještě dodám, že certifikát a privátní klíč se dají vytvořit třeba takto:
openssl req -new -x509 -nodes -out server.pem -keyout key.pem
a Diffie-Hellmanovy parametry (slouží k výměně klíčů a certifikátů) třeba takto:
openssl dhparam -outform PEM -out dh512.pem 512

23.8.07

Mám nové ICQ číslo

Kvůli problému se skupinami v contact listu v mém cca 4-5 let starém ICQ účtu jsem se rozhodl, že si vytvořím účet zcela nový. Rozeslal jsem všem v seznamu oznámení, že přecházím, pokud někomu nedošlo, tak se omlouvám, ale dával jsem si pozor.
Moje nové číslo je tedy 361889633. Preferuji ale Jabber, takže pokud máte jabber účet, použijte raději m1c4a1@jabber.cz.

20.8.07

Hellsing - seriál

Před pár dny jsem se dodíval na 13-dílný anime seriál Hellsing. Stejně jako většina lidí jsem myslel, že to má něco společného s filmem Van Helsing s Hughem Jackmanem, ale už v rozdílu názvů je vidět, že jde o odlišné filmy.
Hellsing je název organizace, která se stará o hubení upírů a jejich posluhovačů ghůlů. Hlavní hrdinkou je Victoria Seras, policistka proměněná v upírku pravým upírem jménem Alucard (viděl jsem už i Arucard, ale na netu je častější to první). I ten bojuje paradoxně proti upírům, je to jeho úkol, protože slouží svému pánu, lady Integře, která je hlavou organizace Hellsing.
Film opět není žádná pohádka, ale horror a to kvalitně udělaný. Nakreslené je to moc dobře, příběh má spád a je zajímavý. Každé anime má něco specifického, u Hellsingu jsou to zbraně. Detailně prokreslené revolvery, obzvláště ten Alucardův, na které jsou majestátní záběry, toho je seriál plný. Další věcí, která je častá, je nošení kulatých brýlí u téměř každé důležitější postavy. Ono se to v těch ponurých záběrech dobře leskne a když z temné siluety vystupují jen dvě bílá kolečka místo očí, dodává to na děsivosti.Příběh je vcelku jednoduchý, během 13 dílů se toho moc stihnout nedá. Smiřování Victorie s faktem, že je také upírkou a musí sát krev, útok na samotnou základnu organizace Hellsing, řešení problému uměle vytvářených upírů, konflikt s 13. papežskou divizí z Vatikánu a jejich šíleným obrovitým knězem, co to umí dobře s mečema a na závěr souboj s upírem vyššího řádu, který dá Alucardovi trochu zabrat.
Jako oddychovka moc pěkná věc, není to tak dějově složité jako GITS nebo NGE a dá se na to dobře koukat... Alucard je sympaťák. :-)