środa, 16 kwietnia 2008

wtorek, 1 kwietnia 2008

BBC znalazło latające pingwiny ! ;)


Bardzo ciekawy filmik stacji BBC z serii Cuda ewolucji ;>

Latające pingwiny

A tutaj filmik , przedstawiający pingwiny podczas lotu.

A i jeszcze przykra wiadomość, ekipa nonsensopedii informuje, że od jutra (tj. 2 kwietnia), polska wersja Nonsensopedii przestanie istnieć.

;DD

sobota, 22 marca 2008

Słów kilka o F# - nowym funkcyjnym języku od Microsoft

Hello F#

Jak już wszedłem na temat Microsoft Research, to może warto także przypomnieć o F# (ef-sharp) - nowym funkcyjnym języku programowania.
Język F# jest specyficznym połączeniem OCaml, MatLab, Pythona, Scheme i C#. Posiada charakterystyczną interaktywną powłokę a'la Python. Jego wydajność jest porównywalna do C#. W F# możemy korzystać z narzędzi i bibliotek .NET. Co ważne, dostępny jest nie tylko na platformę Microsoftu, ale również na wszystkie platformy wspierane przez Mono.

Z racji tego że miałem trochę wolnego czasu i chciałem trochę odpocząć od WinApi, pobawiłem sie trochę z F#. Tak więc nie czekając, zainstalowałem kompilator języka z F# w wersji 1.9.3.14 (do pobrania stąd)
Do dyspozycji dostajemy interaktywny interpreter - fsi.exe oraz kompilator fsc.exe. Po włączeniu fsi wklepałem

piątek, 21 marca 2008

Singularity - podsumowanie.

Postarałem sie tutaj zebrać wszystkie informacje na temat Singularity.

Na początku może małe info dla tych którzy nie wiedzą o czym mówie.

Singularity jest projektem badawczym kochanego Microsoftu, którego celem jest stworzenie systemu operacyjnego opartego na mikrojądrze, głównie pisany jest w C#. System jest pisany od zera. Nie mylić z MinWin - przyszłym jądrem Windows 7.

Informacje z polskiej Wikipedii.
"Twórcy systemu Singularity postanowili zaniechać używania sprzętowych systemów ochrony w komputerze, takich jak oddzielne przestrzenie adresowe, czy poziomy ochrony procesora, na rzecz programowej ochrony systemu i procesów ("Software-Isolated Processes" - SIP).

piątek, 14 marca 2008

SFI

Na początku marca miałem okazję przez trzy dni (6-8) uczestniczyć w Studenckim Festiwalu Informatycznym, który odbywał sie w Krakowie w Hali Widowiskowo-Sportowej Uniwersytetu Ekonomicznego. Konferencja oferuje szerokie spektrum poruszanych zagadnień, jak na przykład inżynieria oprogramowania, systemy operacyjne, sieci, czy tematyka open source, także każdy pasjonat powinien znaleźć coś ciekawego. Przyznam się, że pierwszy raz uczestniczyłem w tego typu konferencji i bardzo mi sie podobało. Prelegenci o bogatej wiedzy, miła atmosfera i ciekawa tematyka wykładów sprawiała, że można było spędzić całe trzy dni bez przerwy słuchając..
Jednak z ponad dwudziestu wykładów jakich wysłuchałem, jeden zaciekawił mnie najbardziej, a mianowicie wykład Aleksandra Pohla pt. "Jajem, tyjesz, wyjecie", czyli dlaczego dialog z komputerem jest taki trudny. Nigdy nie interesowałem się przetwarzaniem języka naturalnego ani wieloznacznością (nawet o tym nie słyszałem ;> ), ale bardzo mnie to zainteresowało. Szczególnie spodobał mi się ten przykład:

I saw clouds flying over Zurich.
Widziałem chmury lecące nad Zurychem.
I saw buildings flying over Zurich.
Widziałem budynki lecąc nad Zurychem.


Te dwa zdania różnią sie jedynie rzeczownikiem, a mają całkiem inne znaczenie. Tylko na podstawie wiedzy zdroworozsądkowej można właściwie przetłumaczyć powyższe przykłady. Człowiek wie, że budynki nie mogą latać więc rozumie właściwie drugie zdanie. Jednak komputer nie wie, że budynki nie latają ;) Problem ten rozwiązują ontologie CYC oraz Sumo, które stanowią formalizację zdroworozsądkowej wiedzy obejmującej najbardziej ogólne własności świata. Ten i inne problemy porusza Aleksander Pohl w swoim wykładzie. Wkrótce powinien ukazać się na stronie festiwalu wykład w formie wideo, więc polecam ;)

Podobały mi się także prezentacje języków Ruby i Pythona, a były prowadzone przez takie osoby jak: Michael Foord (Python), Chad Fowler(Ruby) czy Maciej Fijałkowski (PyPy). W ostatnim dniu jednym z ciekawszych był wykład pt. „Programistyczna ewolucja. Czy programista jest stwórcą?” Pawła Wołoszyna, na którym niestety byłem tylko przez 30 minut.


Teraz pozostaje tylko czekać na kolejną edycję SFI (już miejmy nadzieje, że będzie hot spot ;>).

Podsumowując, pieniądze wydane na bilet kolejowy nie poszły na marne ;>> ^^


0x1A



środa, 20 lutego 2008

(brak pomysłu na tytuł ;)

Hi

Nie pisałem juz ponad miesiąc. Co robiłem przez tyle czasu ? Ogólnie to komp i kilka godzin snu… (sql ;/), eh dobra napisze coś więcej, więc jak zwykle kodziłem trochę w C++, postanowiłem wreszcie dokończyć naukę WinApi, zacząłem czytać kilka książek: TCP/IP Biblia, The Art Of Assembler i Ciszę w sieci lcamtuf’a (na którą czekałem niecałe trzy tygodnie, pzdr Helion). I w sumie tyle ^^. Co do kilku projektów, które zacząłem w C++ (m.in. Warcaby i MultiCoder), to żadnego nie skończyłem (boo po co… ^^). Wreszcie przeniosłem się na Viste 64bit i po wywaleniu Ubuntu z hdd zainstalowałem Slackware 12.0 . I mam nadzieję, że tak już zostanie (na razie ;>>).


A na koniec d0minikk’s Google Stats ;>> Będzie fajnie za rok zobaczyć o ile wzrosło moje wykorzystanie tej genialnej wyszukiwarki.










tyle na dzisiaj ;)

czwartek, 10 stycznia 2008

Centrum dowodzenia d0minikk'a

Dzisiaj może napisze coś o moim 'centrum dowodzenia' :D ;>>

Aktualnie :> na dysku posiadam zainstalowane dwa systemy, tj. Windows Vista 32bit (wkrótce przesiadka na 64bit) i dystrybucję Linuksa - Ubuntu 7.10 Gutsy Gibbon. Oprócz tego korzystam także z wirtualnych maszyn (Virtual PC, VMWare) do testowania różnych rzeczy ;>>, m.in. zainstalowane mam Solaris 10, Windows Server 2008 Beta 3, Windows XP, Slackware 12.0 , FreeBSD 6.2, DSL 3.4.1, Gentoo 2007.0 LiveCD, własny bootloader z idiotycznym kernelem wyświetlającym „hello” ;| i jeszcze jakieś pierdoły.

Środowiska programistyczne, w których pracuję to: Dev-Cpp 4.9.9.2, CodeBlocks, Visual Studio 2005 i 2008 wersje beta, czasem narzędzia z rodziny Microsoft Expression.


Maszyna:

Intel Core 2 Duo E6750
Asus P5K
Patriot 2GB 800MHz cl4
GeForce 7900GS 256mb
HDD: 250 GB Samsung

Więcej TUTAJ


tyle ;)


środa, 9 stycznia 2008

Zagadka matematyczna ;)

Ostatnio znalazłem na necie fajną zagadkę ;>>

Dwóch znajomych, matematyków, po latach braku kontaktu spotyka się na rogu ulicy. Opowiadają sobie co u nich słychać i jeden z nich mówi, że ma trzy córki.

- W jakim są wieku?
- Hmm, jakby Ci to fajnie powiedzieć... już wiem. Iloczyn wieku każdej z nich daje 36, a suma - numer tego domu po drugiej stronie ulicy. Zgadniesz?

Drugi facet myśli dłuższą chwilę, po czym mówi:

- Wiesz, podałeś mi za mało danych. Nie da się na tej podstawie powiedzieć w jakim wieku są twoje córki.
- Hmm, masz rację. To podpowiem ci jeszcze, że najstarsza jest blondynką.

Po usłyszeniu tej informacji, matematyk od razu podał prawidłową odpowiedź.

A Ty potrafisz?


Tylko nie oszukiwać! :)

poniedziałek, 7 stycznia 2008

MultiCoder | Szyfr ROT13

Rot13 jest to prosty szyfr przesuwający, polega na zmianie każdego znaku alfabetu na znak występujący 13 pozycji po nim.
Funkcje Rot13() użyłem w programie MultiCoder do szyfrowania plików tekstowych. Na początku próbowałem zrobić to za pomocą tablic, ale były jakieś probemy jak zawsze ;/ Więc zrobiłem inaczej :) Trochę było zabawy z kodami ASCII, ale napisałem i chodzi. ;≫



void Rot13(char *tab, int dlugosc)
{
for(int i = 0; i < dlugosc; i++, tab++)
{
int x = *tab; //znak na wartosc w pamieci
if(x >= 'a' && x <= 'z')
{
if((x + 13) > 'z')
{
*tab = 'a' + 13 - (0x7B - x);
}
else
{
*tab += 13;
}
}
else if(x >= 'A' && x <= 'Z')
{
if((x + 13) > 'Z')
{
*tab = 'A' + 13 - (0x5B - x);
}
else
{
*tab += 13;
}
}
else if(x >= '0' && x <= '9')
{
int przes = 13;
while(przes > (0x39 - x) )
{
przes = przes - (0x39 - x);
x = 0x2F;
}
*tab = 0x2F + przes;
}
else
{
*tab = x;
}
}
}



Funkcja oprócz liter szyfruje także cyfry.
Działanie podobne do AtBash, tylko że tutaj do wartości znaku dodajemy 13.
Jeśli wartość_znaku + 13 > odległość_do_konca_alfabetu, to dodajemy od początku alfabetu (0x41) to:
13 – (‘z’ - odległość_do_konca_alfabetu ).
Inaczej jest z cyframi, ponieważ mamy 9 cyfr a przesuniecie mamy 13, czyli 13 > 9, więc przesuniecie przejdzie wszystkie cyfry dwa razy, dlatego musimy zmniejszać wartość przesunięcia za pomocą pętli while, i kiedy ( przes < (0x39 – x) ), to wtedy możemy dodać wartość przesunięcia do 0x2F.

Przykład użycia funkcji: ;)

char wejscie[256];
int dl;
cout <<"Podaj tekst: ";
cin.getline(wejscie, 256);
cin.ignore();
dl = strlen(wejscie); //dlugosc tablicy
Rot13(&wejscie[0], dl);
cout << "\nZaszyfrowany tekst: " << wejscie;

niedziela, 6 stycznia 2008

MultiCoder | szyfr AtBash

AtBash jest jednym z prostszych szyfrów przestawieniowych polegający na zamianie litery leżącej w odległości x od początku alfabetu na literę leżącą w odległości x od końca alfabetu. (np. A -> Z).
I tak ogólnie to własnie robi kod poniżej.


void Atbash(char *tab, int dlugosc)
{
for(int i = 0; i < dlugosc; i++, tab++)
{
int x = *tab; //zmieniamy znak na jego wartosc
//w pamięci do zmiennej x
if(x >= '0' && x <= '9')
{
*tab = '9' - (x - '0');
}
else if(x >= 'A' && x <= 'Z')
{
*tab = 'Z' - (x - 'A');
}
else if(x >= 'a' && x <= 'z')
{
*tab = 'z' - (x - 'a');
}
else
{
*tab = x; //pozostawia ten sam znak
}
}
}



Pętla for służy nam do przemieszczania się po kolejnych znakach w tablicy. Potem za pomocą if wybieramy czy jest to litera mała, duża, czy cyfra. Następnie najważniejsza część funkcji czyli zamiana znaku na znak zaszyfrowany. Pokaze to na malych literach. Od 'z' odejmujemy to (wartosc czytanego znaku minus 'a' - wychodzi odleglosc od początku alfabetu). I tak otrzymujemy zaszyfrowany znak. ;)

Funkcja szyfruje tylko cyfry i litery, inne znaki zostawia. A teraz sprawdzimy czy funkcja działa. ;>



char wejscie[256];
int x, dl;
cout << "Podaj ciag znakow: ";
cin.getline(wejscie, 256);
cin.ignore();
dl = strlen(wejscie); //strlen - funkcja zwraca długosc tablicy :)
Atbash(&wejscie[0], dl);
cout << "\nZaszyfrowany tekst: \n" << wejscie ;


tyle ;)