Clojure, a sprawa polska

Ostatnio zainteresowałem się pewnym nowym językiem programowania. Dla mnie nowym, ale dla wielu być może to powtórka z rozrywki. Dlaczego? Otóż dlatego, że szukam sobie następcy Javy, który pozbędzie się całego bagażu niepotrzebnej składni, tzw. boilerplate, a jednocześnie wróży na przyszłość. Język, który będzie odpowiedzią na coś, co stało się kilka lat temu wraz z wprowadzeniem procesorów wielordzeniowych. Być może niektórzy wiedzą o co chodzi. Nie będę owijać w bawełnę: umarło prawo Moore'a dot. szybkości procesorów. Tak. Od kilku lat zegary procesorów prawie nie ruszyły z miejsca. Kto pamięta lata '90 i Procesory 386, 486, Pentium, to skojarzy, że niemal co półtora roku szybkość procesorów się podwajała. Komputer, który miał 2 lata był wtedy już niemal złomem. A dziś? Wciąż śmigam na desktopie, który ma kilka lat i ani mi się śni kupować nowego. Nie potrzebuję. Nie muszę, bo nowy sprzęt wcale nie przyspieszy tak, jak to było przy poprzedniej przesiadce.

3...2...1... Go! Szablony!

Kolejny wpis o golang. W tym wpisie poprawiam nieco poprzedni wpis i uzupełniam o dodatkowy temat, czyli : szablony (template z angielskiego = wg Google to szablon ;). Jak ktoś przyglądał się wizualnej stronie kodu bez szablonów , to nie zdziwię się, gdy do głowy od razu przychodziło słowo: siano. Nie wiadomo, gdzie się zaczyna HTML, gdzie kończy kod, itp. Oczopląs po kilku minutach gwarantowany. Taki kod stwarza dodatkową trudność. Wyobraźmy sobie, że chcę zmienić wygląd strony. Nic innego jak ręczna rzeźba tekstu nie wchodzi w rachubę. Na pomoc jednak przychodzi system szablonów.

Szablony, to inaczej tekst (niekoniecznie HTML), w którym znajdują się specjalne znaczniki pozwalające na wstawienie dowolnej treści i późniejsze przekazanie takiego tworu jako wyniku do przeglądarki.

Jak to wygląda od kuchni? Zaczynamy od zaimportowania odpowiedniej paczki Go:
import "html/template"

Następnie tworzymy jakąś zmienną(ew. stałą), która przechowa tekst szablonu, np:

Antywirusy, które puszczą z torbami Twoją firmę

Temat stary jak świat, sięga aż roku 1949, kiedy to John von Neumann przestawił koncepcję samoreprodukujących się automatów. Zagadnienie czysto teoretyczne ujrzało światło dzienne w postaci namacalnej już w 1970 w sieci ARPANET (prekursor internetu).
Boom wirusowy zaczął się wraz upowszechnieniem komputerów osobistych, których użytkownicy nie mieli zielonego pojęcia o podstawach działania urządzenia, które nabyli. Z czasem było coraz gorzej bo już nawet większość mało wiedziała o podstawach systemu, który pracował na urządzeniu.

Skoro pojawił się problem wirusów, to automatycznie wyrosły firmy, które oferowały programy, które pozwalały z mniejszym lub większym rezultatem usunąć szkodnika. Szczególnie podatnym na ataki okazał się system firmy Microsoft, który niemal z automatu łykał to, co mu się podało na nośniku. Do niedawna oczywiście. Wirusów na ten system powstało tyle, że producenci antywirusów przestali dołączać sygnatury, a zajęli się tzw wykrywaniem metodą heurystyczną. Polega ona mniej więcej na odgadywaniu intencji twórcy programu na podstawie kodu, który napisał.

REP MOVSB hosts,"Teraz ASM"

Kontynuując już temat hostów w systemie Windows postanowiłem rozprawić się z rozwiązaniem dość karkołomnym ze względu na ilość pochłoniętego czasu, ale myślę wartym uwagi. Temat testowania różnych języków programowania na przykładzie realizacji małego edytora jest wg mnie dość ciekawy. Assembler to "The Source of" wszystkich języków programowania. Znajomość tego języka daje dobry pogląd na kwestie optymalizacji kodu, wykorzystania pamięci, itp. Mój poprzedni program w Go zajmował po kompilacji około 5 MB, a nawet nie posiadał graficznego interfejsu użytkownika, tylko wypluwał tekst na żądanie przeglądarki, która to z kolei brała na siebie kwestie interpretacji przesłanego tekstu i rysowania na jego podstawie interfejsu oraz obsługę komunikatów.

Tym razem prezentuję prosty edytor pliku hosts w języku Assembler. Program dość mały i na dysku zajmuje tylko 11 004 bajtów.(!) Zajmowałby mniej gdybym zamiast sztywnych buforów użył alokacji pamięci, ale znów trzeba by pisać całą obsługę tego ustrojstwa. Program używa podstawowego API dostępnego już od czasów Windows 95.

W RAM program zajmuje około 1MB.

Hosty w Win7, podejście ultra proste

Witam ponownie. Już kilka blogów na DP ( Mój, sgj i patryk9200 ) i w żadnym nie uwzględniono jednego z najprostszych rozwiązań. Dwa blogi z użyciem kompilatorów, jeden z plikiem wsadowym, ale co z tego, jak to wszytko trzeba kopiować, wklejać, tworzyć na to jakieś pliki, czy w odwrotnej kolejności, być może nawet napisać list do mamy! Koszmar I tell You!

Przedstawię tu wyjątkowo proste rozwiązanie jak się dobrać do pliku hosts i edytować:

  • klikamy w menu Start
  • w pasek na dole wklejamy to: notepad %systemroot%/system32/drivers/etc/hosts

  • Wciskamy: Ctrl + Shift + Enter
  • Voila!

Kombinacja Ctrl+Shift+Enter wywołuje dane polecenie jako administrator.

3...2...1... Go!

Jako, że dawno nie napisałem nic, co miałoby trochę czysto technicznej natury, postanowiłem to naprawić i bliżej przyjrzeć się nowemu językowi programowania od Google, czyli językowi Go ( golang ). Wspomnę tu przy okazji, że niedawno ukazała się wersja 1.0 Go jako już niemal stabilna. Pojawiła się także wersja na Windows (w wersji na 32 i 64 bit), dzięki której mam szansę w łatwy sposób przedstawić moją robotę. W łatwy, to znaczy nie sprawiając trudów użytkownikom Windowsa. ;)

Według twórców Go pozwala na łatwe pisanie prostych i wydajnych programów. Chcę to pokazać na przykładzie małej aplikacji, za pomocą której można edytować systemowy plik hosts, za pomocą którego można mapować nazwy hostów do adresów IP. Tak, wiem, pomysł oklepany, ale...

Windows 8 działa na 128MB RAM? Pffff!

Pamiętacie Windows 8 który został uruchomiony na procesorze 4GHz z 128 MB RAM ?
Uruchamianie systemu trwało około 2-3 h. Zapomnijcie o tym.

Dimitry Grinberg z nudów czy z ciekawości (nie wiadomo) uruchomił Linuksa 2.6.34 na procesorze ATMega1284p 8 bit z 16 MB RAM z 1Gb karty SD. Jako że Linux wymaga 32bit, Dimitry postanowił napisać emulator procesora ARM na ten chip. Wg niektórych to dziwactwo ale inni znów piszą o geniuszu. Autor pisze, że spokojnie można uruchamiać Ubuntu z serwerem X i Gnome. Oczywiście jeżeli ktoś ma na tyle czasu.

Efektywne taktowanie procesora AVR 24MHz w emulatorze to około 6.5 kiloherca.

Układ potrzebuje około 2 godzin do uruchomienia powłoki bash. Kolejne 4 godziny do uruchomienia Ubuntu. Start powłoki X w/g autora zajmuje o wieeeele dłużej. Komputer potrzebuje około 1 minuty na zwrócenie wyniku z prostego polecenia w konsoli.

Przebieg procesu uruchamiania można zobaczyć

Krzesamy iskry ze starego XP - Centrum multimedialne przez UPNP z Androidem

Ostatnio zaciekawiła mnie tematyka strumieniowania multimediów z urządzeń mobilnych na stacjonarki. Stacjonarki, czyli nieruchomości typu: TV, PC, zestaw HiFi, itp. A że jestem leniwy, to wolę sobie puszczać filmy i muzykę siedząc wygodnie na łóżku lub w fotelu niż gibać się przy komputerze.

O ile typowe sprzęty gospodarstwa domowego muszą spełniać określone wymogi techniczne aby móc odtwarzać strumień AV, to strumieniowanie na PC jest dość skomplikowaną sprawą, bo wymaga za każdym razem indywidualnego podejścia do rozwiązania problemu. Problemem oczywiście było uruchomienie strumienia multimedialnego z Androida, bo standardowy Windows XP nie posiada żadnych wbudowanych aplikacji, które pomogłyby w tej sprawie. Podobno XP w wersji Media Center obsługuje, ale wątpię by dużo osób posiadało tę wersję. Ja takiej wersji nie posiadam.

Po kilkunastu minutach googlowania już miałem sobie dać spokój i umieścić na XP krzyżyk, ale udało się. Wygooglałem programik o nazwie XBMC.

Tak to mniej więcej wygląda po uruchomienu:

Tablet = pogromca internetu.

Długo nie miałem pomysłu co by tu naskrobać, aż dziś wpadłem na pomysł przedstawienia tabletu jako w pełni funkcjonalnego urządzenia do surfowania w internecie.

Wielu osobom tablet kojarzy się z urządzeniem, które jest bardzo ubogie w funkcje, a w zasadzie sprowadza się do wyświetlania obrazków. Otóż nic bardziej mylnego. O ile 10 lat temu takie twierdzenie byłoby prawdziwe dzisiaj nie jest już aktualne. Dlaczego? Otóż dziś większość usług i oprogramowania rezyduje w sieci.

Co można zrobić na tablecie? Właściwie wszystko z czym radzi sobie przeglądarka internetowa. Temat rzeka. Dzięki Google mamy dostęp do edytora dokumentów i arkuszy kalkulacyjnych. Dokumenty te przechowywane są w sieci więc nawet w przypadku awarii tabletu nie zginą. Rozrywka Audio/Video nie wymaga wyjaśniania - działa tak jak na każdym sprzęcie. Mamy dostęp do wszystkiego, co jest w sieci : YouTube, strony z serialami, czy internetowe radia. I to wszystko bez pomocy klawiatury i myszki.

Jupiter przyćmi .NET i Silverlight

Dość ciekawa wiadomość obiegła ostatnio świat. Szczególne poruszenie wywołała wśród wannabe developerów Windows 8. Mianowicie Microsoft wprowadza nową bibliotekę do obsługi interfejsu użytkownika wykorzystująca XAML i popularne języki z .NET o nazwie Jupiter. Szczególną uwagę także poświęcając językowi C++ (a w zasadzie WinC++). Więcej tutaj.

Otóż oficjele Microsoftu zaanonsowali, że pisanie aplikacji na Windows 8 ma się głównie opierać na wykorzystaniu HTML5 i JavaScript. Nic natomiast nie wspomnieli o .NET i Silverlight. Na pytania devów dotyczące tej sprawy Microsoft zbył ich krótko: będą musieli poczekać kilka miesięcy na oficjalne stanowisko. Co oczywiście skończyło się pojawieniem spekulacji na temat porzucenia dotychczasowych frameworków (m.in. .NET i Silverlight).

Na forach Microsoftu pojawiły się pierwsze prośby