Galileo blogs

October 04, 2008

Dawid Morzyński

White board za 55$ - dotykowy!

Podobno tyle kosztują części, a efekt zobaczcie sami...

PS Dla mnie wszystko co dotykowe (interfejs, wyświetlacze, tablice itp.) ma duży potencjał i przyszłość...

by dmk at October 04, 2008 07:51 PM

October 02, 2008

Dawid Morzyński

Amnezja

Humor na dzisiaj: w przypadku amnezji…

Pozdrowienia od Novella.

by dmk at October 02, 2008 10:13 PM

September 28, 2008

Łukasz Stachowiak

NetBeans day i pierwsze powakacyjne spotkanie Poznań JUG

Może najpierw zacznę od NetBeans World Tour z okazji których odbędą się spotkania w Poznaniu (25 października) oraz Gdańsku (26 października). Serdecznie zapraszam do rejestracji gdyż przedstawionych będzie wiele nowości w NetBeans 6.5 oraz pojawią się takie osobistości jak: Adam Bien, Toni Epple, Jacek Laskowski, Geertjan Wielenga. Więcej szczegółów oraz rejestracja na polskiej stronie NetBeansWordTour - www.netbeansday.pl.

A już za kilka dni, bo 1 października odbędzie się pierwsze powakacyjne spotkanie Poznańskiej Grupy Użytkowników Javy !:) Tematem będzie Visual VM, JMX i jeszcze kilka rzeczy, a przedstawi to wszystko Adam Dudczak. Spotkanie rozpocznie się o godzinie 18:00 w budynku przy ulicy Zwierzynieckiej 20 - sala nr 4. Więcej szczegółów w newsie na stronie Poznańskiego JUGa

Na oba spotkania serdecznie zapraszam !

by noreply@blogger.com (WooKasZ) at September 28, 2008 10:59 AM

September 27, 2008

Dawid Morzyński

Analogowy D-SUB lepszy od cyfrowego złącza w laptopach…

Dlaczego? Wiele osób nie rozumie, dlaczego główni producenci biznesowych laptopów w swoich konstrukcjach używają wyłącznie analogowych złącz, a cyfrowe są dostępne dopiero w stacjach dokujących (w tym chociażby IBM/Lenovo). Powód jest jednak oczywisty. Laptopy te są przeznaczone dla użytkowników biznesowych, którzy chcąc poprowadzić prezentację w dowolnej sali konferencyjnej najczęściej spotkają się właśnie z takim standardem (prawdę mówiąc, nie widziałem jeszcze sali w której byłoby cyfrowe złącze – nie wspomnę o problemach standardów jaki się z tym od razu rodzi). Gdy potrzebują złącze cyfrowe, po prostu podłączają komputer przez stację dokującą.

PS Nie wyobrażam sobie noszenia z komputerem przejściówki DVI -> D-SUB – pierwsza rzecz, jaką bym zgubił albo zapomniał.

by dmk at September 27, 2008 05:19 PM

September 26, 2008

Jakub Krajniak

Promocyjnie w INEA

Od 3 lata korzystam sobie z poznańskiego ISPa INEA, nie miałem jakiś poważniejszych awarii przez ostatnie 3 lata, prędkość co roku się sama aktualizowała w ramach promocji. Kiedyś dawno był 1Mbit za 79zł czy może to było 512kbit, w każdym razie takowy pakiet wykupiłem po tym jak...

September 26, 2008 03:40 PM

September 25, 2008

Wojciech Smolak

Symulator automatu mealy’ego

Przedstawiam program symulujący działania automatu mealy’ego. Program został napisany w ramach przedmiotu Modele Systemów Dyskretnych. Do jego tworzenia wykorzystałem środowiska pogramowania NetBeans. Zasada działania programu: Ciąg wejściowy przetwarzany jest przez wcześniej zdefiniowany automat. Tabela przejść automatu wczytywana jest z pliku tekstowego. Program operuje na 34 - elementowym alfabecie (wielkie litery alfabetu oraz cyfry). Zachowane są pierścieniowe warunki [...]

by admin at September 25, 2008 09:45 PM

September 24, 2008

Łukasz Stachowiak

"Break" time

Trzeba pozaliczać kilka rzeczy podczas kampanii wrześniowej na uczelni, więc nie mam za bardzo czasu żeby coś napisać (chociaż kilka artów czeka w poczekalni już :P).

Na pocieszenie trochę humoru ;-)

by noreply@blogger.com (WooKasZ) at September 24, 2008 02:21 PM

September 21, 2008

Dawid Morzyński

Windows XP @ 7Mhz CPU

W moich ulubionych linkach znalazłem pewną zwariowaną rzecz, która jakiś czas temu wywarła na mnie dość duże wrażenie. Otóż w 2006 roku niemcy postanowili pobić wszelkie rekordy i odpalić Windowsa XP na najwolniejszej maszynie, na jakiej kiedykolwiek ten system mógł potencjalnie pracować. Więcej o samym eksperymencie przeczytacie tutaj. Z pewnością ciekawa lektura!

 PS Powtórzony został też ten sam tez z Vistą, jednak nie był aż tak spektakularny (najniższe taktowanie wyniosło 45Mhz). Więcej tutaj.

by dmk at September 21, 2008 04:39 PM

September 16, 2008

Dawid Morzyński

VMware i tryb Unity – nowe podejście do wirtualizacji desktopowej

Od dwóch miesięcy używam nowej wersji VMware Workstation – 6.5. Co prawda produkt ten nie jest jeszcze dojrzały (wciąż trwa program beta), ale w pewnym sensie poczyniono duży krok do przodu w wirtualizacji na komputerach osobistych. Nowe funkcjonalności, które niesie ze sobą wersja 6.5 zostawiają konkurencję daleko w tyle. Zwłaszcza Virtual PC pozostaje ubogim odpowiednikiem VMware Workstation, ponieważ w tej chwili jego funkcjonalność nie dorasta nawet do wersji 6, a co dopiero do nowych możliwości 6.5. W nowej wersji produktu VMware się przede wszystkim sprzętowa akceleracja grafiki (zgodna z DirectX 9.0), liczne usprawnienia związane z integracją systemu gościa z systemem nadrzędnym, lepsza obsługa urządzeń peryferyjnych (w tym USB – faktycznie działa znacznie stabilniej) oraz przede wszystkim tryb Unity.

Czym więc jest wspomniany tryb? To próba "pogodzenia" ze sobą wielu wirtualnych maszyn na jednym pulpicie. W tym trybie tryb graficzny systemu gościa wykorzystywany jest jedynie do rysowania okienek (zarówno Linux jak i Windows), a faktycznym menadżerem okien pozostaje system nadrzędny, w którym uruchomiliśmy wirtualną maszynę. Dostęp do programów mamy w specjalnie przeniesionym menu, a okna poza oryginalnymi dekoracjami w 100% poddają się zachowaniom naszego nadrzędnego systemu. Co ważne tryb ten działa teoretycznie we wszystkie strony – zarówno w Linuxie jak i Windowsie, zarówno z systemem gościem w formie Linuxa jak i Windowsa.

Nie ma jednak róży bez kolców. VMware Unity na chwilę obecną działa na zasadzie łapania obrazu przez VMware Tools i przesyłaniem go do nowych okienek w systemie nadrzędnym. Na tak wysokim poziomie trudno o jakąkolwiek akcelerację grafiki. Zwiększa to także zużycie procesora, a w obecnej wersji występują problemy z bardziej zaawansowanymi kontrolkami (tymi, które wymagają wielu przerysowań podczas pracy). Może w przyszłości programiści VMware pokuszą się o dostęp do trybu graficznego na poziomie sterownika? Ciekawi mnie też, jak rozwiązali podobną funkcjonalność na Macach w VMware Fusion.

by dmk at September 16, 2008 04:44 PM

September 15, 2008

Wojciech Smolak

Sprzątanie świata

Wieść gminna niesie, że w najbliższy czwartek, tj. 18 września również do Inowrocławia dotrze ogólnoświatowa akcja “Clean up the World”, popularne sprzątanie świata. Z tej oto okazji Urzad Miasta “uzbroił” w worki i rękawice, jak donosi ino-online.pl, przedszkolaków i uczniów, którzy ruszą w ów dzień sprzątać świat. Na pierwszy rzut oka akcja wydaje się fajna [...]

by admin at September 15, 2008 12:05 PM

September 13, 2008

Łukasz Stachowiak

Co nowego w Java 7 ?

Szperałem sobie ostatnio po internecie w poszukiwaniu informacji o Javie i jej rozwoju natrafiłem na blog Alexa Millera w którym opisał proponowane nowości w Java 7.
Postaram kilka z nich tutaj przybliżyć ale proszę pamiętać, że wszystko jest nieoficjalne i to tylko propozycje !

Wnioskowanie typu
Kompilator będzie wnioskować typ podczas tworzenia obiektów generycznych. Zapis:
Map<String, List<String>> anagrams = new HashMap<String, List<String>>();
może być zastąpiony przez:
Map<String, List<String>> anagrams = new HashMap<>();
Ta zmiana zdecydowanie potrzebna. Wyeliminuje te tasiemce w kodzie:)

String w konstrukcji switch
Tutaj chyba nie trzeba za wiele tłumaczyć. Wprowadzona zostanie możliwość użycia napisu przy wyborze odpowiedniego case'a. Np:
String str = "test";
switch(str) {
case "test":
System.out.println("TEST!");
break;
case "test2":
System.out.println("TEST2");
break;

default:
System.out.println("KLOPS!");
break;
}

Przeciążenie operatora dla BigDecimal
Tutaj trochę dyskusji na blogach jest. Czy w ogóle to wprowadzać, czy wprowadzić tylko dla BigDecimal, czy wprowadzić ogólnie przeciążenie operatora.
Wg mnie wprowadzenie przeciążenia operatora narobi sporo zamieszania. Java jest już bardzo rozwiniętym językiem i wprowadzenie takiego mechanizmu może więcej zaszkodzić niż pomóc. Chyba, że nie dotykać biblioteki standardowej, umożliwić dziedziczenie po wszystkich klasach z niej i niech programiści sami sobie radzą. Co oczywiście, też jest beznadziejnym podejściem do sprawy...
nie wypowiadam się;]

Właściwości dla obiektów JavaBeans
Jak w C# lub VisalBasicu, bezpośredni dostęp do właściwości beanów a nie przez gety lub sety:
public property String name;

Blok automatycznego zarządzania zasobami
To jest dobre! I bardzo proszę o wprowadzenie;] Jest propozycja by wprowadzić blok kodu po wykonaniu którego zasoby w nim użyte będą natychmiastowo usuwane. Coś żeby obejść problem bloku finally (tzn. momentu jego wykonania) a zarazem wprowadzenie możliwości usuwania kilku zasobów razem.

do (BufferedInputStream bis = ...; BufferedOutputStream bos = ...) {
// ...
} // tutaj zmienne bis i bos zostaną usunięte z pamięci

Wywołania łancuchowe
To jest dość ciekawe. Metody zwracające void będą w niektórych przypadkach zwracać this przez co będą możliwe takie wywołania:
class Micky {
public void scream() { // ... }
public void waveHand() { // ... }
public void talk(String text) { // ... }
}

Micky micky = new Micky();
micky.scream().waveHand().talk("Hello, world!");
Ale szczerze to nie sądze aby to wprowadzono ;-)

Ulepszony blok catch
Nareszcie! Oby to wprowadzono ! Pewnie wielu z Was denerwowały tasiemce bloków catch w stylu:
try {
mbs.registerMBean(mbean, name);
} catch (InstanceAlreadyExistsException e) {
System.err.println(e);
} catch (MBeanRegistrationException e) {
System.err.println(e);
} catch (NotCompliantMBeanException e) {
System.err.println(e);
}
Teraz to będzie mogło być zastąpione taką konstrukcją:
try {
mbs.registerMBean(mbean, name);
} catch (InstanceAlreadyExistsException |
MBeanRegistrationException |
NotCompliantMBeanException e) {
System.err.println(e);
}
Po prostu rozdzielamy typy wyjątków operatorem | i obsługujemy wszystkie w jednakowy sposób.

Domknięcia
To chyba największy bonus językowy. Jak widać coraz więcej jezyków zaczyna obsługiwać takie konstrukcje. Jeśli chodzi o jakieś szczegółowe informacje to niestety nic nie zostało jeszcze postanowione. Społeczność Javy ciągle spiera się w jakiej postaci mają zostać one wprowadzone. Zaciekawionych tematem zachęcam do przeczytania tego artykułu

To by był taki zarys nowości w jakie mogą się pojawić w Java 7. Osoby bardziej zainteresowane tematem zachęcam do poczytania artykułów do których linki pojawiły się w poście ;-)
Rozwojowe wersje JDK 7 można pobrać ze strony https://jdk7.dev.java.net/.
Blog poświęcony Java 7: java7.tumblr.com/

by noreply@blogger.com (WooKasZ) at September 13, 2008 11:16 AM

September 12, 2008

Przemysław Kaczmarek

Dzisiaj dzień programisty!

Dzisiaj przypada 256-ty dzień roku i z tej okazji obchodzony jest DZIEŃ PROGRAMISTY. Dzień ten wypada 13 września, ale jako że mamy rok przestępny to 12 września. Dlaczego w 256-ty dzień roku? Chyba każdy czytający informatyk się domyśla ;) a jeśli nie informatyk to już tłumaczę. Otóż odpowiedz jest bardzo prosta. Dwa podniesione do potęgi ósmej to 256 i jest to liczba wartości możliwych do uzyskania w jednym 8-bitowym bajcie…

Z okazji tej wszystkim kolegą, programistą życzę WSZYSTKIEGO NAJLEPSZEGO!
A poniżej typowy dzień programisty i życzę również aby nie dochodziło do ostatnich kroków… ;)

Dzien programisty

by soczek at September 12, 2008 06:22 PM

CAPTCHA on my Website

CAPTCHAOd miesiąca na mojej stronie miałem problem ze spamem, jaki zaśmiecał moje komentarze do postów. A wszystkie po to aby zareklamować jakieś serwisy w swoich linkach. Co dzień było ich coraz więcej, aż dochodziły do niestety dużej ilości, bo aż około 20 dziennie co było strasznie uciążliwe. A spamowanie moich komentarzy to i spamowanie mojej poczty, ponieważ dostaję informacje mail-owo o nowych komentarzach. Na ratunek uaktywniłem usługę CAPTCHA dzięki której wysyłanie komentarzy poprzez boty stało się nie możliwe.

Generowane losowo liczby, bądź słowa, które użytkownik(człowiek) musi wpisać aby formularz został poprawnie wysłany publicznie sprawia wiele kontrowersji. Przede wszystkim dla zwykłego użytkownika jest to strasznie uciążliwe ciągłe wpisywanie losowo generowanych znaków, czasami strasznie nie czytelnymi dla ludzi starszych, i nie tylko. Ale niestety im obrazem jest bardziej zniekształcony tym bardziej jest bezpieczny i mniej czytelny dla bot-ów (chociaż to nie sprawdza się w każdym serwisie). Dla zainteresowanych więcej o CAPTCHA można poczytać w artykule Webhosting. Dla ciekawości wielu programistów twierdzi, że CAPTCHA jest złe i nie należy tego używać, z kilku powodów a przede wszystkim tym, że każdą CAPTCHA można zawsze złamać. Jak nie CAPTCHA to co? Może ASIRRA? Która została zaprezentowana przez Microsoft podczas TechFest 2007. Idea jest prosta - przed wysłaniem formularza użytkownik musi zaznaczyć spośród określonej liczby zdjęć, zdjęcia kotów. Zdjęcia za każdym razem są inne, jak i zbiór tych zdjęć. Zaletą tego projektu jest to, iż człowiekowi łatwiej odróżnić kota od psa niż główkować się co jest wygenerowane w obrazku z CAPTCHA. Jednak wydaje się to trochę czasochłonne, bawiąc się i oglądając zdjęcia. Dużym problemem jednak jest problem osób niewidomych, gdzie w CAPTCHA jest to rozwiązane odsłuchem głosowym, a w ASIRRA jest to problem jeszcze nie rozwiązany…. Więc co tutaj chwalić ;)

Na koniec chciałbym przedstawić to jak CAPTCHA została, źle zrozumiana na koncie studenckim mojej uczelni…

CAPTCHA

Jest to po prostu jawnie wpisany kod a nie obrazek, który owszem zmienia się po załadowaniu strony, ale to nie w tym sens… po prostu utrudnianie życia studentom…

by soczek at September 12, 2008 02:39 PM

September 11, 2008

Dawid Morzyński

IE8 – garść nowości

Jeszcze w sierpniu pojawiła się druga wersja beta Internet Explorera 8. Nie będę rozpisywał się o wszystkich nowościach. Ograniczę się do tych funkcji, na które szczególnie zwróciłem uwagę.

WebSlices – rewolucji chyba nie będzie. Przy wszechobecnych paskach z gadżetami tworzenie kolejnego formatu mini-stron WWW i to na dużym ekranie chyba mija się z celem. Można tego używać wyłącznie z kompatybilnymi stronami – to samo da się zrobić na wszelakich sidebarach i to pewnie jeszcze lepiej. Liczyłem na coś więcej…

InPrivate Browsing – całkiem ciekawa sprawa. Podoba mi się idea i samo wykonanie. Po wejściu przeglądarki w ten tryb na dysku nie są zapisywane żadne informacje o odwiedzanych stronach – ani w formie historii, ani ciasteczka, ani nawet pliki tymczasowe. Chyba nie muszę mówić o przydatności tego rozwiązania – ot. Choćby gdy korzystamy z czyjegoś komputera.

Search Suggestions - Pasek wyszukiwania dostał nową funkcjonalność – potrafi łączyć się z wyszukiwarką i pobierać podpowiedzi do wpisywanych haseł. Do tego wygodniej wybiera się aktualną wyszukiwarkę.

Accelerators – ciekawa funkcja szybkiego dostępu do operacji na zaznaczonym tekście (jak chociażby wysłanie ich do własnego bloga). Niestety nie miałem czasu tego skonfigurować – trochę przytłacza mnie liczba rzeczy, które musiałbym w nowym IE skonfigurować sam, żeby stały się wygodne…

Suggested Sites – nie wiem jakie dane to wysyła do Internetu, ale działa mizernie. Strony, które mi "sugeruje" są najczęściej niewiele warte. Dodatkowo nie potrafię (a może się nie da?!) przeglądnąć po całym dniu surfowania co jeszcze warto zobaczyć – sugerowane strony dotyczą tylko kilku ostatnio odwiedzanych!

Karty zyskały kolorowanie na zasadzie podobnych stron. Gdy otworzy się jakiś odnośnik w nowej karcie automatycznie dostają one ten sam kolor.

Silnik renderujący nie powala, ale jest za to szybszy od tego z IE7. Co prawda ACID2 przechodzi bez najmniejszego problemu, ale z ACID3 radzi sobie gorzej niż konkurencja. Warto jednak zaznaczyć, że każda nowa karta to nowy proces (podobnie realizuje to nowy Chrome od Googli). Takie rozwiązanie jest dobrym posunięciem. Wyobraźmy sobie sytuację, gdy przeglądana strona "wysypie" nam przeglądarkę. W tym wypadku nie zostanie już zamknięta cała przeglądarka, a jedynie dana karta. Do tego przywracanie stron po zamknięciu przeglądarki jest znacznie sprawniejsze – nie jesteśmy pytanie o zachowanie otwartych kart do następnej sesji przy wyjściu z przeglądarki, a przy wejściu.

Dodatkowo pozostał przycisk kompatybilności wstecz i możemy przeglądać strony "starym silnikiem".

Na koniec trochę o estetyce nowej przeglądarki. Graficznie zmieniło się niby niewiele, a jednak. Usunięto ikon z kart w pasku ulubionych/rss/historii, usunięto ikonę szybkiego dodania do ulubionych, kartom "spłaszczono" interfejs, a kolorowanie ich pozostawia wiele do życzenia. Do tego dodawanie standardowej ikony wyszukiwarkom, które nie mają własnego favicon jest delikatnie mówiąc de mode (przynajmniej tutaj wygląda to brzydko).

Na koniec tylko słów kilka o drugiej, bardziej niespodziewanej nowości – Google Chrome. Nie będę rozpisywał się o samej przeglądarce, bo jej po prostu jeszcze nie testowałem, ale widziałem, że wiele witryn chwaliło ją za "zdobycie 1% rynku po 24 godzinach". No ja przepraszam, ale gdyby na stronie głównej najpopularniejszej wyszukiwarki wstawić link do tekstowego lynxa, to też po 24 godzinach używałoby go 1% internautów.

Sznurki:

by dmk at September 11, 2008 09:09 AM

Łukasz Stachowiak

September 09, 2008

Jakub Krajniak

Companion.Js - prawie jak firebug ;)

Cokolwiek to jest, przydaj się przy debugowaniu skryptów JS pod IE. Zwie się to Companion.Js. Do swojego działania chce javascript debugger dla ie

September 09, 2008 03:33 PM

Łukasz Stachowiak

Filtrowanie i sotrowanie danych w RMS

Jakiś czas temu pisałem o RMS w J2ME wspominałem tam, że przeglądając zbiór obiektem typu RecordEnumeration możemy filtrować dane oraz je sortować. Dzisiaj trochę więcej o tym napiszę.
Najpierw przypomnijmy sobie jak pozyskać obiekt RecordEnumerate. Dokonujemy tego poprzez wykonanie metody enumerateRecords na obiekcie reprezentującym zbiór rekordów. Metoda ta posiada 3 parametry (kolejno):
- RecordFilter - filtr
- RecordComparator - obiekt do sortowania rekordów
- boolean - parametr czy uwzględniać zmiany w zbiorze (omawiałem wcześniej).

No to zaczniemy od filtrowania...
RecordFilter - pod tą nazwą kryję się interfejs postaci:
public interface RecordFilter {
boolean matches(byte[] candidate);
}

Klasy implementujące ten interfejs muszą posiadać tylko jedną metodę matches testującą czy dany element może należeć do zbioru wynikowego. Metoda zwraca true gdy element spełnia podane warunki lub false w przeciwnym wypadku. Na tej podstawie stwierdzane jest czy dodać go do zbioru wynikowego czy nie.
Dla przykładu napiszmy klase, która będzie przepuszczać tylko liczby większe od zera:
import javax.microedition.rms.RecordFilter;

/**
*
* @author -WooKasZ-
*/
public class PositiveFilter implements RecordFilter {
public boolean matches(byte[] candidate) {
// zakładamy, że rekordy są 4 bajtowe i zawierają liczbę typu int
return Integer.parseInt(new String(candidate)) > 0; // bleee można to ładniej zrobić ?
}
}


Sortowanie.
RecordComparator to także interfejs o następującej definicji:
public interface RecordComparator {
int compare(byte[] rec1, byte[] rec2);
}

Metoda compare porównuje dwa elementy i stwierdza czy rec1 jest większy, mniejszy lub równy. Oczywiście metoda porównywania musi zostać zaimplementowana przez programistę. Dozwolone są następujące wartości zwracane:
- RecordComparator.EQUIVALENT - wartości równe
- RecordComparator.FOLLOWS - pierwszy parametr jest większy od drugiego
- RecordComparator.PRECEDES -pierwszy parametr jest mniejszy od drugiego

Przykład (sortowanie liczb):
import javax.microedition.rms.RecordComparator;

/**
*
* @author -WooKasZ-
*/
public class SortComparator implements RecordComparator {
public int compare(byte[] rec1, byte[] rec2) {
int first = Integer.parseInt(new String(rec1));
int second = Integer.parseInt(new String(rec2));

if (first == second)
return RecordComparator.EQUIVALENT;

if (first > second)
return RecordComparator.FOLLOWS;

return RecordComparator.PRECEDES;
}
}


To wszystko! Możemy za pomocą tych dwu typów klas wybierać tylko dane które nam są potrzebne i układać je w odpowiedniej kolejności.

by noreply@blogger.com (WooKasZ) at September 09, 2008 03:26 PM

September 08, 2008

Dawid Morzyński

Cypr i Włochy – słów kilka

Ponieważ po ostatnim wyjeździe udało mi się już wszystko ogarnąć, mogę napisać kilka słów i obserwacji dotyczących Cypru i Włoch oraz bezpieczeństwa latania samolotami.

Cypr Na przełomie lipca i sierpnia byliśmy tydzień na Cyprze. Wrażenia? Dziwne, ale z góry zaznaczam, że nie oznacza to, że złe. Zostałem raczej kompletnie zaskoczony. Spodziewałem się typowego, południowego krajobrazu i kultury w państwie leżącym daleko na wschód w basenie Morza Śródziemnego. Spodziewałem się też odrobiny egzotyki, chociażby ze względu na położenie geograficzne. Sięgając jednak odrobinę do historii Cypru, nie trudno zauważyć, że od 1925 roku wyspa była oficjalnie kolonią brytyjską. Już ten fakt sugeruje, że ten teren wcale nie musi być tak egzotyczny jak się wydaje. Kolejny aspekt historyczny to podział Cypru na dwie części – południową (grecką) oraz północą (utworzoną tam przez Turków cypryjskich Republikę Turecką Cypru Północnego, która do dziś nie została uznana przez żadne państwo poza Turcją). Zwiedziliśmy część południową, do północnej zbliżyliśmy się w stolicy Cypru – Nikozji – jednak nie przekroczyliśmy jej chociażby ze względu na to, że wypożyczony samochód nie miał tam ubezpieczenia. Na granicy stacjonują cały czas siły ONZ, więc całość wygląda dość dziwnie – państwo należące do Unii Europejskiej na małej wysepce, na której znajduje się też druga republika nieuznawana przez żadne państwo świata poza Turcją.

Z wyglądu Cypr Południowy ma góra 50 lat. Trudno tu szukać starszych zabudowań czy starożytnych zabytków. Owszem, jest kilka miejsc, które mają poważne znaczenie historyczne, jak chociażby wszystko to, co wiąże się z boginią płodności i miłości – Afrodytą – ale skala tych zabytków w porównaniu z dziedzictwem Krety czy całej Grecji jest nieporównywalna. Co więc na Cyprze jest fascynujące? Przede wszystkim przyroda – liczne gaje bananowe, góry Troodos, przepiękne morze… nocne kluby, które zamykają się dopiero po wschodzie słońca.

Na Cypr najwięcej turystów przyjeżdża z Wielkiej Brytanii. Czują się tu jak w domu – wszechobecny jest tu angielski (miejscowi używają go poza cypryjskim), do tego ruch lewostronny i brytyjski (wysoki) standard hoteli. Wyjazd na tę wyspę na wakacje wiąże się raczej z koniecznością wynajmu samochodu – domowych wypożyczalni jest tu cała masa, jednak trzeba pamiętać o jednym – ruch lewostronny powoduje, że rzadko która wypożyczalnia decyduje się dać pełne ubezpieczenie. Dodatkową przeszkodą może być wymagany minimalny wiek osoby wypożyczającej samochód – 25 lat. Jedynie międzynarodowe sieci wypożyczalni oferują młodszym kierowcom samochody za nieco wyższe opłaty.

Co warto zwiedzić i zobaczyć? Jest kilka takich miejsc – przede wszystkim północne i południowe wybrzeże (okolice Polis na północy wyspy szczególnie przypadły nam do gustu). Kolejna wyprawa to góry Troodos i tamtejsze klasztory. Dalej jezioro Evretou i okoliczna wioska, która niemal 50 lat temu została zrujnowana przez trzęsienie ziemi i jest teraz opuszczona (takie małe safari – przyda się tu jednak samochód terenowy, zwykłą osobówką nie ma co próbować). Stanowczo odradzam plażę Coral Bay (lub jak inni mówią Coral Beach) – na tę sztuczną, usypaną z piasku, dość dużą plażę zjeżdża się w sezonie cała wyspa (jedyna piaszczysta plaża?) i nie ma gdzie szpilki włożyć, nie wspominając o tym, co dzieje się w wodzie. Warto też wybrać się nocą (gdy już zmrok na dobre zapadnie) do dzielnicy nocnych klubów w Pafos – niepowtarzalna atmosfera i klimat tego miejsca…

Włochy i Rzym Drugi wyjazd był początkowo podróżą do Rzymu, ale ostatecznie zwiedziliśmy też trochę wybrzeża i Neapol, chociaż to kropla w morzu możliwości turystycznych tego kraju.

Rzym zwiedzaliśmy ostatecznie około 4 dni. Miasto przepiękne – myślę, że nawet po kilku latach mieszkania tam zaskakiwałoby mnie czymś nowym. Pierwszą rzeczą, którą zobaczyliśmy, było centrum Rzymu – co chwilę jakiś zabytek, co chwilę piękne i ciekawe miejsca (szczególnie fajne są tu place, które mają swój niepowtarzalny charakter). Następnie zwiedzaliśmy część starożytną – rozległość i liczba zabytków porównywalna z Akropolem znanym nam wcześniej z Aten. Na końcu Koloseum, które jednak trochę mnie rozczarowało (może dlatego, że znałem wcześniej koloseum w Puli). Kolejna część wędrówki po Rzymie to Watykan. Nie obyło się oczywiście bez zwiedzania Rzymu nocą – naprawdę przepiękne miasto!

Po zwiedzeniu stolicy Włoch skierowaliśmy się na południowo-zachodnie wybrzeże w okolice miejscowości Latina. Piasek, słońce, plaża… Miejsce, do którego zagraniczni turyści raczej nie docierają (a przynajmniej my nie widzieliśmy), chociaż to typowy nadmorski kurort (aczkolwiek spokojny, pozbawiony raczej klubów i nocnego życia). Wspaniałe miejsce, gdzie można wypocząć i zobaczyć, jak robią to Włosi.

Po dwóch dniach pobytu nad morzem skierowaliśmy się jeszcze dalej na południe, do Neapolu. Miało to być drugie duże miasto, które będziemy zwiedzać. Tutaj przeżyliśmy jednak szok. Wiedzieliśmy wcześniej, że północ Włoch jest częścią bogatą (Mediolan, Rzym…), a południe (włoskie Mezzogiorno) jest częścią biedniejszą i bardziej zaniedbaną (Neapol), ale takiego kontrastu nikt się nie spodziewał. Neapol to tak naprawdę gęsta siatka wąskich uliczek przechodzących między kamienicami z początku ubiegłego wieku (albo i starszych). Tamtejsi mieszkańcy (trudno powiedzieć, jaki jest ich faktyczny stan majątkowy) raczej nie przywiązują wagi do rzeczy materialnych – żyją na wpół na ulicy, mieszkają w miniaturowych mieszkaniach, często w piwnicach – w porównaniu z Rzymem i jak na warunki zachodnioeuropejskie można by powiedzieć, że są to slumsy. Wszystkie zabytki są przeważnie porzucone i się rozsypują (niejeden stary kościół zabity deskami tam widzieliśmy). Jest też bogatsza część na wzgórzu Vomero, która przypomina Rzym, ale mieszkają tam wyłącznie bogatsi, a prowadzą do niej liczne kolejki górskie (tak więc obie części są w pewnym sensie odcięte od siebie). Neapol warto było zobaczyć ze względu na możliwość rzucenia okiem w stronę Wezuwiusza, który rzeczywiście doskonale widać z wybrzeża, usianego portami i porcikami. Poza Castel Nuovo przy głównym neapolitańskim placu posiedzieliśmy sobie przy ulubionym przez nowożeńców Zamku Jajecznym (Castel dell'Ovo). Z tą średniowieczną twierdzą wiąże się legenda o tym, że dopóki włożone pod fundamenty zamku jajko Wergiliusza leży nietknięte, miastu nie grozi nic złego.

W drodze powrotnej zatrzymaliśmy się jeszcze w Cassino, aby zwiedzić klasztor benedyktyński na Monte Cassino. Dostać się do niego można pieszo, idąc długą i krętą górską drogą, lub busem, który jeździ trzy razy dziennie. Z klasztoru rozciąga się piękny widok na Cassino oraz całą dolinę, w której leży miasteczko. Nie zdążyliśmy niestety zejść na położony niżej cmentarz polskich żołnierzy, którzy polegli w walkach z hitlerowcami w obronie opactwa w 1944 roku. Cmentarz jest widoczny z jednego z tarasów klasztoru.

Oprócz kilkuset zdjęć, które zrobiłem we Włoszech postanowiłem też zrobić jeden model w PhotoSynth. Efekt nie jest najgorszy, ale widać zbyt małą liczbę ujęć placu Świętego Piotra. Zobaczcie sami:

Na koniec słów kilka o bezpieczeństwie na lotniskach, które podobno zostało podniesione po 11.09.2001. Otóż przypadkiem – z głupoty i nieświadomości – w moim podręcznym plecaku podróżnym zostawiłem scyzoryk, którego używałem podczas wyjazdu i potem nie przepakowałem do większego plecaka na czas lotu. Podczas przechodzenia przez bramki do hali odlotów na lotnisku Fiumicino i prześwietlania mojego plecaka ochrona nie zauważyła go, a ja zorientowałem się, że go mam, dopiero chcąc wyciągnąć portfel w strefie bezcłowej. Może to trochę niepokoić, ale po wydarzeniach z 2001 roku, gdyby ktoś nawet próbował cokolwiek robić w samolocie, reszta pasażerów chyba rzuciłaby się na niego i rozerwała na strzępy. Ale nie zmienia to faktu, że pogranicznicy mogliby chociaż patrzeć na to, co prześwietlają.

by dmk at September 08, 2008 05:17 PM

September 07, 2008

Łukasz Stachowiak

kombinacja UNION i ORDER BY w Firebird

Dziś miałem problem z kombinacją UNION i ORDER BY w bazie danych Firebird.
Zupełnie nie rozumiałem dlaczego występuje błąd i zapytanie postaci (tylko przykład):
SELECT
TABELA1.KOLUMNA
FROM
TABELA1
WHERE
TABELA1.INNA_KOLUMNA > 10
UNION
SELECT
TABELA1.KOLUMNA
FROM
TABELA1
WHERE
TABELA1.INNA_KOLUMNA 50
ORDER BY TABELA1.KOLUMNA

zwraca mi błąd:
Invalid command invalid ORDER BY clause

Poszperałem po google i okazało się, że w kombinacji UNION z ORDER BY nie można używać nazw kolumn bezpośrednio tylko trzeba podać numer wg której z kolei kolumny wynikowej ma być posortowana tabela.
Czyli poprawne zapytanie ma postać:
SELECT
TABELA1.KOLUMNA
FROM
TABELA1
WHERE
TABELA1.INNA_KOLUMNA > 10
UNION
SELECT
TABELA1.KOLUMNA
FROM
TABELA1
WHERE
TABELA1.INNA_KOLUMNA 50
ORDER BY 1

Nie wiem dlaczego tak jest, nie wnikałem. Ale warto wiedzieć, gdyż czasem UNION się przydaje ;)

by noreply@blogger.com (WooKasZ) at September 07, 2008 04:35 PM

September 04, 2008

Wojciech Smolak

Bieszczady 2008

Poniżej prezentuję mapę z trasami wędrówek po Bieszczdach, które odbyłem podczas wywczasu w tych pieknych górach w sierpniu 2008 roku. Zdjęcia z wyprawy: wywczas2008 - Bieszczady

by admin at September 04, 2008 03:09 PM

Jakub Krajniak

Django 1.0

Nie tak dawno pojawiła się kolejna wersja Zend Framework (1.6) a tu proszę kolejne wydanie. Tym razem zapewne dużo bardziej wyczekiwane. Po 3 latach prac pojawiła się wreszcie wersja 1.0 frameworku Django. Bardzo to radosna wiadomość. Można mieć nadzieję, że nie będzie już...

September 04, 2008 11:25 AM

Dawid Morzyński

September 03, 2008

Przemysław Kaczmarek

Google Chrome - pierwsze wrażenie

Google_Chrome

Po wczorajszej premierze Google Chrome i przeczytaniu krótkich recenzji zdecydowałem się zainstalować nowo powstałą przeglądarkę i krótko opisać pierwsze wrażenia. Otóż jak dla mnie start nowego produktu Google zdecydowanie się udał… pierwsze wrażenie pozytywne, moje jak i innych. Główne i najważniejsze cechy moim zdaniem to bardzo uproszczony i przejrzysty interfejs, bardzo szybka - po załadowaniu kilkunastu zakładek żadnego zająknięcia, szybka instalacja co jednak dla mnie informatyka nie jest do końca rzeczą pozytywną (sam nie mogłem zlokalizować miejsca instalacji przeglądarki) zaledwie jeden przycisk “instaluj” i określenie czy mają zostać pobrane zakładki i historia z Firefox-a, czy też nie. Co mnie również zdziwiło produkt w wersji polskiej mimo iż jest to wersja beta… Wizualnie wygląd…? hmmm? nie ma co dyskutować bo to kwestia gustu… jak dla mnie pozytywnie… kolor niebieski z Visty został zachowany ;) Ogólnie mówiąc jest to typowo prosta i przejrzysta przeglądarka internetowa bez wielu opcji, co chyba jest spowodowane wersją beta lub po prostu uproszczeniem przeglądarki co dla wielu niedoświadczonych użytkowników będzie rzeczą pozytywną. Po kilku godzinach zabawy z Chrome nie zauważyłem żadnych poważnych błędów co w pierwszej wersji beta każdego produktu jest rzadko spotykane… Po takim starcie wydaje mi się, że Chrome zdecydowanie będzie konkurował z IE jak i Firefox-em czy Operą. Właśnie jeśli mowa już o przeglądarkach kilka dni temu w sieci przeczytałem, że nowo powstająca przeglądarka IE8 ma straszne zapotrzebowanie na pamięć, co udowodniono według testów przeprowadzonych w laboratoriach Devil Mountain Software. Internet Explorer 8 beta 2 wymaga ponad dwukrotnie więcej pamięci niż Firefox 3.0.1 i uruchamia sześć razy więcej procesów niż przeglądarka Mozilli. Po wielu krytykach na system Vista, który bez uzasadnienia pochłania olbrzymie wymagania sprzętowe firma z Redmond nie odgoni się od ciągłej krytyki… Wracając do Google Chrome pozostaje nam czekać na kolejne wersje tego produktu…

by soczek at September 03, 2008 09:01 PM

September 02, 2008

Jakub Krajniak

Zend Framework 1.6

Ot i mamy, jest świeży ZF w wersji 1.6 do pobrania. Dodano kilkanaście nowych składników. Z ciekawszych nowości to integracja z framework'iem Dojo Toolkit co zapewne ułatwi tworzenie aplikacji opartych w większym stopniu na JavaScript. Poza tym wbudowana biblioteka do paginacji stron,...

September 02, 2008 09:01 PM

September 01, 2008

Jakub Krajniak

Wyjechanie 2008

Krótka wyprawa w bieszczadzkie lasy i wypad na Ukraine do Lwowa. Miał być dziennik podróży ale jakoś zapomniałem pisać. Wywczas raczej się udał, obadaliśmy trasę Komańcza - Cisna granicę Polsko-Słowacko-Ukraińską na Krzemieńcu Połoninę Wetlińską okolicę Tarnicy Łatwo nie...

September 01, 2008 10:02 AM

August 28, 2008

Przemysław Walkowiak

Zarządzanie pamięcią pod Windowsem x64

Pracując przy projekcie, który bardzo mocno wykorzystuje obliczenia matematyczne, po raz pierwszy natknąłem się w praktyce na ograniczenia pamięciowe. W pierwszych wersjach systemu nie udało nam się tych ograniczeń zauważyć, gdyż operowaliśmy na małych próbkach danych rzędu 1000x20. Oczywiście należało sprawdzić działanie także dla większej próbki danych i wyskoczyło nam pierwsze z ograniczeń.

Początkowo prace deweloperskie przeprowadzane były na maszynie z systemem 32bitowym z pamięcią 4GB. Występuje tutaj zjawisko ograniczenia pamięci dla procesu do 2GB (ewentualnie do 3GB z odpowiednim przełącznikiem). Przez jakiś czas wystarczał nam obecny limit... Ale po co się ograniczać skoro procesory są 64bitowe? Tak więc po przeinstalowaniu systemu na Windows Server 2008 x64 nastąpiła przedwczesna radość z praktycznie zerowymi limitami (nie mam do dyspozycji serwera z 2TB pamięci RAM ;) ).

Pierwszym problem przy uruchamianiu aplikacji pojawił się z bibliotekami matematycznymi Intel Math Kernel Library, były jeszcze 32bitowe, ale nie sprawiło dużo kłopotów przerobienie jej na wersję 64bitową (aczkolwiek trzeba było trochę doczytać;P ).

W końcu z wielką radością w oczach aplikacja została odpalona i można było patrzeć jak rośnie słupek zajętości pamięci przez proces, urósł do około 4GB. No dobra, ale jakie tutaj są ograniczenia? Okazuje się, że najbliższym limitem jest ciągł obszar jaki można zaalokować. Próba zdefiniowania tablicy typu Byte o liczbie elementów większej niż 2^31 zakończyła się porażką (mniejszą bądź równą - należy wziąć jeszcze narzut platformy .NET - jak najbardziej udało się zaalokować). Dlaczego akurat tablica może mieć rozmiar tylko 2GB? No cóż, wina leży po stronie platformy .NET i środowiska CLR.

Następny krokiem była próba zaalokowania kilku tablic po 2GB każda. Niestety po 6 takich wyświetlił mi się wyjątek OutOfMemoryException (patrz rysunek)

Przyczyną braku pamięci zapewne była wielkość pliku wymiany, gdyż odpowiedni licznik pokazywał ładną liczbę 15999MB (rysunek). Zajętość co prawda wyniosła 14484MB, ale kolejne 2GB tutaj już się nie mieszczą ;)

Ostatecznie muszę stwierdzić, że o ile limit 2GB na wielkość ciągłej pamięci do zaalokowania może boleć (należałoby się zagłębić bardziej w jaki sposób można to obejść), to obszar pamięci dla jednego procesu jest jak na razie nie do zapełnienia dla mnie pożytecznymi danymi, a zawsze można jeszcze zwiększyć rozmiar pliku wymiany.

Warto przeczytać:

  1. BigArray<T>, getting around the 2GB array size limit
  2. Memory Limits for Windows Releases
  3. Zarządzanie pamięcią w 32 i 64-bitowych systemach Windows

by Przemysław Walkowiak at August 28, 2008 11:15 PM

August 26, 2008

Tomasz Wątorowski

Truly Integrated Turtelizer 2 Clone, USB JTAG & Serial

Programator Truly Integrated Turtelizer 2 jest kolejną wersją popularnego programatora Turtelizer 2 pochodzącego z ethernut.de. Programaor ten został zaprojektowany by wspólpracować z oprogramowaniem OpenOCD, służącym zarówno do programowania jak i do debugowania.

Wykorzystuje on standardowe złącze 10 pin, identyczne z tym stosowanym pierwotnie w programatorze Turtelizer 2. Programator ten posiada również port szeregowy, ogólnego przeznaczenia z sygnałami napięciowo zgodnymi ze standardem RS232 oraz prędkością do 115200 bps. Konstrukcja tego programatora jest oparta na układzie FT2232 firmy FTDI, dzięki czemu możliwa jest jego współpraca zarówno z systemem Windows jak i Linux.

Umożliwia on programowanie praktycznie wszystkich popularnych mikrokontrolerów, posiadających interfejs JTAG. Prezentowane urządzenie zostało przetestowane na jednym z najpowszechniej stosowanych mikrokonktrolerów AT91SAM7S64.

Więcej Informacji na stronie produktu.

by Tomasz Wątorowski at August 26, 2008 07:48 PM

August 23, 2008

Dawid Morzyński

Aveneo – „tajemnica” odkryta

Ponieważ wczoraj oficjalnie uruchomiliśmy stronę informacyjną projektu Aveneo mogę już napisać słów kilka, co razem z zespołem outPUT robiliśmy na Imagine Cup 2008, a teraz rozwijamy to w większym zespole dalej.

Naszym celem jest zbudowanie platformy, która umożliwi efektywne udostępnianie miejsc w prywatnych pojazdach innym użytkownikom. Zintegrowanie platformy z dynamicznym rozkładem jazdy komunikacji publicznej pozwoli zoptymalizować ich codzienne przejazdy. Cel optymalizacji to ograniczenie ilości emitowanych spalin oraz kosztów przejazdów.

Więcej o platformie przeczytacie na ww.aveneo.pl. Zachęcam też do obejrzenia prezentacji prototypu:

by dmk at August 23, 2008 08:16 AM

August 22, 2008

Dawid Morzyński

ja @ spaces.live.com

Postanowiłem przenieść moją galerię zdjęć do portalu MSu z dwóch powodów – galeria we flashu (generowana przez Photoshopa) była niezbyt przyjazna w nawigacji, a po drugie jej publikacja była mało wygodna (najpierw trzeba było zdjęcia przebrać, później poczekać aż się wygeneruje galeria a na końcu wrzucić ją przez FTP na serwer, dodać link i sprawdzić, czy wszystko działa). Teraz publikacja zdjęć to kilka kliknięć w Galerii fotografii (w wersji Windows Live). Ponadto w spaces mam 5GB na udostępnianie plików (SkyDrive) i kilka innych ciekawych modułów (podoba mi się głównie to, że jest to po prostu działa i jest dość głęboko zintegrowane z systemem operacyjnym). Szkoda tylko, że nie mogę mojego obszaru w pełni dostosować graficznie…

by dmk at August 22, 2008 12:08 PM

August 19, 2008

Przemysław Walkowiak

Ns2 i Ns3

Ostatnio przypomniały mi się moje laboratoria z sieci komputerowych i telefonii IP. Polegały głównie na łączeniu komputerów, konfigurowania routingów, translacji adresów, podsłuchiwanie sieci. Czasem dostaliśmy również jakiś ciekawszy sprzęt do zabawy (w stylu router Cisco), ale teraz muszę przyznać, że to były straszne nudy.

Obecnie zostałem poniekąd "zmuszony" do zapoznania się z symulatorami sieci i ocenienia, które z nich spełnią odpowiednie wymagania. Kilka takowych się znalazło (m.in. opnet, omnet++),  ale ich wadami są jak zwykle albo trudnodostępność, albo fakt, że nie są już rozwijane od dłuższego czasu. W momencie, gdy dotarłem do ns2 (w sumie to od niego zacząłem tę przygodę:) ) muszę przyznać, że ktoś odwalił kawał dobrej roboty.

ns2 jest to projekt open-source stworzony przez badaczy dla badaczy. Rdzeń symulatora jest napisany w pełni obiektowo w C++, a skrypty eksperymentów (i nie tylko) można pisać w obiektowej wersji Tcl - OTcl. ns2 umożliwa symulowanie praktycznie każdej warstwy modelu OSI/ISO, począwszy od warstwy fizycznej, poprzez sieciową (wraz z włączeniem różnych protokołów routingu), aż po zachowanie się protokołów warstwy transportowej i aplikacji.

W celu przetestowania własnego protokołu (którejkolwiek z warstw) "wystarczy" go tylko zaimplementować w symulatorze. Ostatecznie nie jest to dosyć trudne, gdyż można wzorować się na już napisanych algorytmów.

Efektem działania symulatora jest plik tekstowy w którym zawarte są wszystkie niezbędne informacje na temat każdego z pakietów jaki w naszej wirtualnej sieci podróżował. Wystarczy teraz zaprząc jakiś parser (np. awk), coś do rysowania wykresów (np. gnuplot) i już możemy się cieszyć naszymi wynikami :)

Dodatkowo jeżeli chcielibyśmy wizualnie zobaczyć co się w naszej sieci dzieje można skorzystać z programu NAM (Network Animator) towarzyszącego ns2. Który na podstawie odpowiedniego pliku wynikowego z ns2 stworzy ładną animacje ruchu na poszczególnych połączeniach węzłów.

To tyle jeżeli chodzi o ns2. Chciałbym jeszcze wspomnieć o kolejnej wersji symulatora ns3, która jest w trakcie powstawiania. W przeciwieństwie do ns2, ns3 jest w całości napisana w C++ (ns2 korzysta również z OTcl) i jak na razie skrypty eksperymentów to są programy napisane w C++ (aktualnie powstają bindingi do pythona). Ciekawostką jeżeli chodzi o ns3 jest to, że wspiera on format plików pcap, dzięki czemu możemy bezproblemowo odczytać wyniki naszej symulacji albo poprzez tcpdump, albo wireshark <-- czyż to nie jest dużo wygodniejsze niż pliki tekstowe? :P

Więcej informacji można znaleźć na stronie symulatora:

  1. ns2 i nam
  2. ns3

by Przemysław Walkowiak at August 19, 2008 10:48 PM

Tomasz Wątorowski

Truly Integrated Turtelizer 2 Clone, USB JTAG & Serial

Truly Integrated Turtelizer 2 Clone is another hardware implementation of popular Turtelizer 2 from ethernut.de. This programmer is designed to work with OpenOCD programming and debugging software.

It uses a standard 10 pin JTAG connector with pinout identical to one used in original Turtelizer 2. It also embeds a simple RS232 voltage compatible serial port with baud rate up to 115200 bps. This programmer is based on FTDI FT2232 chip, and so it is supported by both Windows and Linux operating systems.

This programmer can be used to program almost every kind of microcontroller, thas is capable of programming via JTAG interface. All of our programmers were tested on one of the most popular ARM microcontrollers: the AT91SAM7S64, and worked perfectly.

Our programmer uses flat, ribbon cable to connect to target device and mini USB cable to connect to computer. For more information please visit product site.

by Tomasz Wątorowski at August 19, 2008 07:52 PM

August 18, 2008

Przemysław Kaczmarek

SP1 for Visual Studio 2008

Kilka dni temu Microsoft udostępnił pierwszą poprawkę dla VS 2008. Jedną z kilku powodów wydania SP1 od całkiem nie dawno wydanego VS 2008 (około 9 miesięcy temu) jest poprawienie błędów wykrytych wcześniej, ale przede wszystkim polepszenie wydajności całej platformy .NET, co związane jest z zmniejszeniem rozmiaru .NET Framework 3.5. Właśnie dołączony do SP1 .NET Framework Client Profile, który potrafi o 85% zmniejszyć rozmiar kodu pomoże szczególnie użytkownikom systemu XP, ponieważ pliki wynikowe jak i biblioteki są zbyt “ciężkie” jak na system XP, z czym lepiej radzi sobie Vista. Dodatkowo w SP1 dla VS 2008 dodano obsługę SQL Servera 2008, który również całkiem niedawno ujrzał światło dzienne w bezpłatnej wersji SQL Server 2008 Express Edition. SP1 dostarcza również wiele innych poprawek, takich jak ulepszone narzędzia do WPF, dodano nowe komponenty i narzędzia dla Visual Basic i Visual C++, również zwiększono funkcjonalność narzędzi dla technologii AJAX oraz ulepszenia w zakresie wdrażania rozwiązań webowych, oraz ulepszono narzędzia ADO.NET Entity Designer. W trakcie instalacji SP1 dla VS 2008 na samym początku ukazało się okno z spisem poprawek, które dołączam poniżej.

SP1_for_VS_2008

Service Pack 1 dla Visual Studio 2008 można pobrać na stronie Microsoftu.

by soczek at August 18, 2008 04:50 PM

August 15, 2008

Dawid Morzyński

Visual Studio 10.0 - DMM

Kilka dni temu miała miejsce premiera SP1 dla Visual Studio 9.0. W między czasie zespół odpowiedzialny za Visual Studio rozpoczął prace nad projektowaniem funkcjonalności, które mogą znaleźć się w kolejnej edycji VS. Ciekawą funkcją może być DMM czyli Document Map Margin. Pomysł polega na zamianie paska przewijania wewnątrz Visual Studio na pasek z miniaturką edytowanego pliku wraz z podświetleniem wszystkich markerów (brakepointy, zakomentowane fragmenty kodu itp.). Miałoby to wyglądać mniej więcej tak (wersja z samymi markerami oraz miniaturką):

W tej chwili używam zamiast paska przewijania podglądu dokumentu o nazwie RockScroll (stworzonego przez jednego z developerów wewnątrz MSu), jednak nie pokazuje on wszystkich markerów w tak czytelny sposób (chociaż najważniejsze – brakepointy – są pokazywane w dość czytelny sposób). RockScroll w akcji:

Sznurki:

by dmk at August 15, 2008 10:17 PM

August 09, 2008

Łukasz Stachowiak

Firebird i cytaty w PHP


Każdy programista PHP (i nie tylko!) chyba wie, że cytaty wymagają specjalnej kontroli, jej brak może być źródłem ataków typu SQL Injection.
Pamiętałem o tym również i ja i zabezpieczyłem się oczywiście włączając opcję automatycznego dodawania backslashy przy znakach specjalnych - magic_quotes_gpc. Np. wysyłając tekst w formularzu:
\t\e\s\t

Po stronie serwera otrzymam:
\\t\\e\\s\\t

Czyli wszystko fajnie :)

Troszkę się zdziwiłem gdy na mantisie dwa dni temu zobaczyłem zgłoszony błąd od testera, że nie sprawiają mu problemów ataki typu SQL Injection. Do głowy przyszło mi tylko jedna myśl - "WTF!?".
Obadałem kod sprawdzając czy napewno dodawane są backslashe - all ok.
Później uznałem, że trzeba to samemu sprawdzić. Wpisuje w formularzy blabla', wysyłam formularz i boom;] sypneło się:) No tylko dlaczego skoro po stronie serwera otrzymałem: blabla\' ?? Google.pl....
Trochę poszperałem aż trafiłem na artykuł o obsłudze cytatów w Firebird. I tam ciekawostka ! Okazało się, że w Firebirdzie napis: blabla\' oznacza po prostu blabla\' ! :) Żeby zabezpieczyć taki ciąg nie należy dodawać backslasha tylko wpisać blabla'' ! Czyli podwajamy znak specjalny (zachciało im się innowacji:|). Co więcej php ma funkcje do automatycznego wykonywania tego (pod tym względem 3 PHP - ma ogrom przydatnych funkcji) ! :D Wystarczy ustawić zmienną magic_quotes_sybase na On w php.ini i jest ok:)
Jeśli nie ma się dostępu do php.ini trzeba to wykonać przez .htaccess ponieważ ustawienie tego przez ini_set z tego co zauważyłem nie jest możliwe.

Treść .htaccess:
php_value magic_quotes_sybase On


No i problem rozwiązany :)

by noreply@blogger.com (WooKasZ) at August 09, 2008 10:02 AM

August 08, 2008

Łukasz Stachowiak

Hype - Lies and Speeches

Sponsorem dzisiejszego wieczoru jest zespoł Hype z albumem Lies and Speeches :)
Polecam!
  


Piosenka Anybody here najbardziej wpadła mi w ucho:)

I ogólnie polecam serwis Jamendo.com ! Dużo dobrej muzyki za darmo !!

by noreply@blogger.com (WooKasZ) at August 08, 2008 08:33 PM

August 06, 2008

Dawid Morzyński

SQL Server 2008 - RTM

Krótko i na temat - jest RTM. Jutro podobno będzie można pobrać testową wersję...

by dmk at August 06, 2008 08:27 PM

August 03, 2008

Łukasz Stachowiak

Filip Kubiatowicz mistrzem świata !!

Chciałbym serdecznie pogratulować mojemu koledze Filipowi (aka Nosferatu) za zdobycie tytułu Mistrza Świata w katerogi semi-pro w futbolu stołowym znanym także jako "piłkarzyki" lub "trambambula" (o_O).


Życzę Ci samych takich sukcesów Nosfe !!
Więcej informacji na Wiadomości24.pl

ps. jeszcze trochę i może uda Ci się ze mną wygrać ^^
pps. ale dziś tu nowych postów :P

by noreply@blogger.com (WooKasZ) at August 03, 2008 04:48 PM

PHP 5.3 alpha1 dostępna


Czekałem czekałem i się... nie doczekałem :P Miała się pojawić do końca czerwca, pojawiła się pod koniec lipca i to jeszcze alfa :P No ale jest - kamień milowy w rozmowu PHP nareszcie dostępny do testów;]
Pisałem już wcześniej czego możemy się spodziewać w wersji 5.3. Do tej listy doszło jeszcze kilka rzeczy ! :)
- LAMBDA (!!)
- domknięcia
- nowy typ pliku - 'phar' czyli php archive, który może przechowywać w sobie całą aplikację gotową do wdrożenia
- opcjonalny odśmiecacz pamięci
- NOWDOC (tego za bardzo jeszcze nie czaje :P Jak obadam to napisze więcej o co chodzi:P)

warto było czekać :) Co prawda nadal nie mam zainstalowanej tej wersji gdyż wersja pod windowsa jeszcze się nie pojawiła (ma być w ciągu kilku dni), ale jak się pojawi i zapoznam bardziej szczegółowo to coś tu skrobnę ;)

Plik do pobrania czeka : tutaj

by noreply@blogger.com (WooKasZ) at August 03, 2008 02:47 PM

August 02, 2008

Łukasz Stachowiak

RMS w J2ME

Wracamy do tematu J2ME :) Inżynierka będzie m.in. dotyczyła tego wynalazku więc trzeba zgłębiać tajemną wiedzę zanim będzie za późno :P
Dziś trochę o zapisie danych w MIDletach. Telefony komórkowe są urządzeniami typu "co kraj to obyczaj" czyli (w tym przypadku) sposób zapisu danych może być różny na różnych modelach u różnych producentów. Jednak dla J2ME został opracowany uniwersalny sposób dla wszystkich urządzeń o nazwie RMS - Record Management System.

Dane zapisuje się w rekordach, które zawierają się w zbiorach. Rekord jest przez programistę widziany jako tablica bajtów, więc trzeba się samemu troszczyć o to co zawierany dany rekord. Każdy zbiór posiada swojego właściciela (MIDlet) i może być on współdzielony przez wiele MIDletów. Zbiór posiada unikalny identyfikator - nazwe, natomiast rekord w zbiorze posiada unikalny numer.
Nie ma ograniczeń co do liczby zbiorów jakie może utworzyć MIDlet, jedynym ograniczeniem jest dostępna pamięć.

Tworzenie zbioru
Nad zbiorami rekordów w J2ME czuwa klasa RecordStore.
Aby utworzyć jakiś zbiór należy wywołać jej statyczną metodę: openRecordStore(String recordStoreName, boolean createIfNecessary) której parametry kolejną oznaczają nazwę zbioru oraz flagę czy zbiór ma zostac utworzony jeśli nie istnieje.
W MIDP 2.0 dodano dwie nowe metody openRecordStore o innych parametrach i bardziej specjalistycznych zadaniach. M.in. z ustawieniem uprawnień i przypisywaniem danego zbioru do konkretnego MIDletu.

Metoda zwraca nam utworzony (lub otworzony) zbiór na którym możemy wykonywać operacje zapisu i odczytu. Zanim do tego przejdziemy dodam jeszcze, że możemy się spodziewać wystąpienia następujących wyjątków:

RecordStoreNotFoundException - zbiór nie istnieje (w przypadku gdy nie ma być automatycznie utworzony)
RecordStoreFullException - brak dostępnej pamięci
IllegalArgumentException - błędna nazwa zbioru
RecordStoreException - inny błąd

na koniec jeszcze przykład tworzenia nowego zbioru:
RecordStore store = RecordStore.openRecordStore("test", true);

// zrzuci wyjątek jeśli zbiór nie istnieje
RecordStore secondStore = RecordStore.openRecordStore("test2", false);

Zapis w RMS
Na pierwszy ogień weźmiemy zapis danych. Mamy do dyspozycji dwie metody klasy RecordStore:
- int addRecord(byte[] data, int offset, int numBytes)
dodaje nowy rekord do zbioru i zwraca nam ID rekordu. Jako parametry musimy podać kolejne: dane do zapisu, od którego bajtu ma być zapisywane oraz ile bajtów ma zostać zapisanych.
- void setRecord(int recordId, byte[] newData, int offset, int numBytes)
ta metoda służy do zastąpienia rekordu nowym. Dodatkowym parametrem jaki trzeb podać jest ID rekordu który ma być zastąpiony, reszta jak powyżej.

Ponieważ zapisujemy tablice bajtów najlepiej posłużyć się strumieniami. Idealnie nadaje się do tego strumień ByteArrayOutputStream.
Może teraz jakiś przykład:
RecordStore bd = RecordStore.openRecordStore("test", true);

ByteArrayOutputStream arrayStream = new ByteArrayOutputStream();
// do zapisu danych różnych typów
DataOutputStream out = new DataOutputStream(arrayStream);
// wpisujemy do strumienia tekst
out.writeUTF("testujemy zapis!");
// pobieramy tablice bajtów
byte[] data = arrayStream.toByteArray();
// zapisujemy do rekordu
bd.addRecord(data, 0, data.length);

// zamykamy strumień i zbiór
out.close();
bd.closeRecordStore();

Ważne jest aby zamykać strumień i zbiór, urządzenia mobilne nie posiadają dużo pamięci więc należy je oszczędzać.
Dodam jeszcze, że podczas każdej operacji addRecord, setRecord i deleteRecord na zbiorze inkrementowana jest jego wersja. Wersję zbioru można otrzymać poprzez wywołanie int getVersion().

Odczyt w RMS
Jeśli nie znamy zbiorów MIDletu możemy pobrać ich nazwy za pomocą metody statycznej RecordStore.listRecordStores(). Zwraca ona tablicę Stringów lub null w przypadku gdy nie ma żadnego dostępnego zbioru.
Gdy dobierzemy się do konkretnego zbioru i go otworzymy możemy zacząć przeglądać rekordy w nim zawarte.
W tym celu użyjemy klasy RecordEnumeration. Pobranie obiektu tego typu następuję przez wywołanie metody
enumerateRecords(RecordFilter filter, RecordComparator comparator, boolean keepUpdated). Parametry tej metody oznaczają:
- filter - obiekt służący do filtrowania rekordów (o tym innym razem)
- comparator - obiekt służący to porównywania rekordów i ułożenia ich w odpowniednim porządku (o tym innym razem)
- keepUpdate - jeśli prawda to będą brane pod uwagę zmiany w rekordach podczas ich przeglądania. Ta opcja jest dość ważna i może wpłynąć na wydajność aplikacji.

Do samego przeglądania przydadzą nam się jej dwie metody:
- bool hasNextElement() sprawdza czy istnieją jeszcze jakieś elementy
oraz
- byte[] nextRecord() - zwraca kolejny element
Przykład:
RecordStore bd = RecordStore.openRecordStore("test", false);

RecordEnumeration recEnum = bd.enumerateRecords(null, null, false);
while (recEnum.hasNextElement()) {
byte[] data = recEnum.nextRecord();
// jakieś działania
}

bd.closeRecordStore();

Można oczywiście użyć ByteArrayInputStream wraz z DataInputStream do przeglądania konkretnego rekordu:
DataInputStream in = new DataInputStream(
new ByteArrayInputStream(recEnum.nextRecord()));
String text = in.readUTF();

Usuwanie rekordów/zbiorów
Na koniec usuwanie. Mamy do dyspozycji dwie proste metody:
- void deleteRecord(int recordID) - usuwa rekord o podanym ID ze zbioru
- static void deleteRecordStore(String recordStoreName) - usuwa cały zbiór rekordów o podanej nazwie. Uwaga - zbiór musi być zamknięty inaczej otrzymamy wyjątek RecordStoreException.

No to to by było na tyle z podstaw korzystania z RMS. Mam nadzieje, że przedstawiłem to dość klarownie. Nie rozglądałem się ale mam nadzieje, że istnieje jakaś gotowa biblioteka, która zapewniała by kontrole typów które są przechowywane w tych rekordach, bo teraz to trochę "niskopoziomowo" się to obsługuje ;P Zachęcam także to przejrzenia API RMS. Znajduje się tam jeszcze sporo metod o których nie wspomniałem a zapewniają bardziej zaawansowane możliwości.

by noreply@blogger.com (WooKasZ) at August 02, 2008 10:10 PM

July 29, 2008

Łukasz Stachowiak

Google XML Pages

Google udostępniło system szablonów na bazie którego od wielu lat działają takie serwisy jak Blogger, Google Analytics czy Google Reader. Przeznaczony jest do wyświetlania stron XML/SGML. Na tę chwilę dostępny jest dla języka Java i w przygotowaniu C++ (chociaż na jednej stronie znalazłem, że podobno już jest gotowy - kodu nie znalazłem niestety).
Aktualna wersja to 0.2 beta, dostępna jest na stronie Google Code : GXP.
Możliwości jakie posiada GXP można obejrzeć na prezentacji: GXP Introduction Slides.

Jednak zanim przyjdzie nam z tego korzystać trzeba będzie poczekać na dokumentację której jak narazie nie ukończono ;P

by noreply@blogger.com (WooKasZ) at July 29, 2008 10:06 AM

Dawid Morzyński

The “Mojave Experiment”

Mojave miało być eksperymentem polegającym, na zebraniu użytkowników innych systemów niż Vista (starsze wersje Windows, Linux, MacOS) i zapytaniu ich, co tak naprawdę drażni ich w Viście. Następnie miała zostać pokazana ich reakcja po oglądnięciu "następnego Windowsa", a na koniec mieli się dowiedzieć, że to jednak Vista. Idea ciekawa, ale…

Po zapowiedziach jak eksperyment wyglądał spodziewałem się czegoś więcej, czegoś zupełnie innego. To co dziś zobaczyłem na http://www.mojaveexperiment.com/ to czysty, marketingowy bełkot.

Microsoft ma rozpocząć kampanię reklamową Visty jesienią tego roku. Jeżeli to ma być jej przedsmak, to lepiej niech nie brną w tego typu pomysły. Takie zwierzenia w stylu Big Brothera nie przekonują do zakupu tego systemu, a patrząc na tych ludzi mam poczucie, jakbym patrzył na kiepskich aktorów.

by dmk at July 29, 2008 09:06 AM

July 28, 2008

Przemysław Walkowiak

Matematyka i C#

Wiele razy już w przeciągu ostatnich 2-3 lat szukałem jakiejś porządnej biblioteki implementującej podstawowe algorytmy z algebry liniowej i ogólnie z matematyki. Wbrew pozorom znalezienie tychże dla platformy .NET nie jest takie trywialne..

Po odpytaniu google o jakikolwiek silnik matematyczny natrafiamy na cenioną open sourcową bibliotekę GSL. Z mojego punktu widzenia ma ona jedną wadę: jest mocno nastawianona na środowisko Linuksowe. O ile istnieją wersje przeportowane na system Win32 (nie mówię tutaj o Cygwinie) to nie były już aktualizowane kilka lat. A o automagicznym podpięciu się z poziomu C# można praktyczznie pomarzyć..

Następna kolekcja matematyczna jak wpadła mi w ręce to dnAnalytics. Muszę przyznać, że jest ona bardzo dobrze przygotowana zapewniając bardzo wygodny i intyuicyjny intefejs programistyczny. Z podstawowych możliwości udostępnianych mogę wymienić własną implementację struktury do obsługi macierzy i wektorów, możliwość wczytywania i zapisywania danych z/do plików CSV, chyba wszystkie najważniejsze operacje na macierzach oraz szereg algorytmów do rozwiązywania równań, dekompozycji macierzy (SVD, LU, QR) i co najważniejsze ma zaimplementowane wsparcie dla natywnej biblioteki Intel Math Kernel Library, dzięki czemu znacząco zyskujemy na wydajności. Niestety dnAnalytics miał jedną wadę: nie w pełni wykorzystywał możliwości MKL.

W ten sposób dotarłem (całkiem przypadkowo) od ILNumerics.Net. Porównując z dnAnalytics to ma raczej trochę inny interfejs (ani nie lepszy, ani nie gorszy, po prostu inny) przypominający bardziej język skryptowy  z Scilaba czy Matlaba (między innymi odwoływanie się do pól macierzy). A skoro jestem przy macierzach to warto wspomnieć, że w tym przypadku nie jesteśmy ograniczeni tylko do dwóch wymiarów i typu double, ale dzięki typom generycznym możemy wykorzystać niemal dowolny typ numeryczny w wielomiarowej przestrzeni. Malutkim minusem jest brak obsługi plików CSV do których przyzwyczaiła mnie dnAnalytics, ale coś za coś. Na zakończenie jeszcze jeden ogromny plus: w pełni wykorzystuje zestaw funkcji LINPACK z natywnej biblioteki MKL, a także dodatkowo z konkurencyjnej biblioteki firmy AMD. Dla zachowania kompatybilności z platformą mono powstała również specjalna wersja natywnego silnika matematycznego.

Podsumowując dnAnalytics jest bardzo przejrzystą biblioteką nadającą się do projektów w których nie wymaga się dużej wydajności i ograniczamy się do dwóch wymiarów. ILNumerics.Net jest natomiast prawdziwą perełką wśród otwartych bibliotek matematycznych, a dzięki porządnemu połączeniu z MKL i pochodnymi jest naprawdę wydajnym tworem.

by Przemysław Walkowiak at July 28, 2008 11:09 PM

Łukasz Stachowiak

July 27, 2008

Dawid Morzyński

Roll cage chyba jednak działa…

Roll Cage w Thinkpad T61pDzisiaj Maciej wsiadając do mnie do samochodu na ciemnej ulicy usiadł na mojej torbie z komputerem. Maciej waży ponad 80kg, więc można wywnioskować że specjalna ramka za matrycą chyba spełnia swoją rolę. Torba nie jest zrobiona ze sztywnych pianek, a z miękkich tworzyw sztucznych. Thinkpadowi całe szczęści nic nie jest.

by dmk at July 27, 2008 09:56 PM

July 26, 2008

Jakub Krajniak

Pan raczy żartować Panie Feynman

Pan raczy żartować Panie Feynman to przezabawny zbiór anegdot, sytuacji z życia Richarda Feynmana. Pokazuje i daję dużo do myślenia na temat tego co się robi w życiu. Ukazuję również, że nauka tak na prawdę to ciągła zabawa i szukanie prawdy o otaczającej nas rzeczywistości....

July 26, 2008 02:27 PM

July 22, 2008

Łukasz Stachowiak

Wymiana oleju to strata pieniędzy ?


Znalazłem gdzieś w sieci artykuł w którym postawiono tezę, że okresowa wymiana oleju w samochodzie to strata pieniędzy, która dodatkowo szkodzi! Najciekawsze jest to, że taką tezę postawił były dyrektor Castrol - Henk de Groot.
Zapraszam do lektury.
ARTYKUŁ

by noreply@blogger.com (WooKasZ) at July 22, 2008 04:30 PM

July 20, 2008

Łukasz Stachowiak

troszkę inny 'switch'

Całkiem niedawno odkryłem ciekawe, inne użycie switcha (pewnie wszyscy je znali a ja ciągle siedziałem w średniowieczu ale co tam). W każdym skrypcie zawsze znajdą się linie kodu podobne do tego:
$i = 1;

if ( $i == 0 ) {
echo 'Goodnight, world!!';
} elseif ( $i == 1 ) {
echo 'Hello, world!';
} elseif ( $i > 4 ) {
echo 'Dont cry for me.... ARGENTINA !!';
} else {
echo 'die die die!';
}
(warunek prosty dla przykładu)
Mnie osobiście takie tasiemce elseif elseif elseif troszkę brzydzą i dla mnie taki kod jest nieczytelny (zwłaszcza gdy warunki robią się duże). Taki kod można prosto przerobić w konstrukcję switch, która będzie "ładniejsza" w taki sposób:

$i = 1;

switch ( true ) {
case ( $i == 0 ):
echo 'Goodnight, world!!';
break;

case ( $i == 1 ):
echo 'Hello, world!';
break;

case ( $i > 4 ) :
echo 'Dont cry for me.... ARGENTINA !!';
break;

default:
echo 'die die die!';
break;
}
Od razu ładniej:) Zachowanie mamy praktycznie takie same. Kodu może troszkę więcej powstaje ale co tam! Ważne, że ładnie :)
Co do szybkości wykonywanie to nie sprawdzałem, mam to gdzieś :)
Dodam jeszcze, że należy pamiętać, że zawsze zostanie wykonany tylko pierwszy 'case' który ma spełniony warunek a następne nie będą już sprawdzane (nawet gdy ich warunek spełniony). Oczywiście pomijam tutaj możliwość opuszczenia 'break'.

Wiem, że nic genialnego nie odkryłem ale może komuś się przyda/spodoba ^^

by noreply@blogger.com (WooKasZ) at July 20, 2008 08:46 PM

July 19, 2008

Dawid Morzyński

openSUSE – dołączenie do domeny Windows nie działa jak powinno..

Z cyklu "rozwiązanie dla wszystkich" – naprawimy dzisiaj w openSUSE (możliwe, że w innych dystrybucjach i innych wersjach SUSE również) możliwość dołączenia do domeny Windows i wykorzystania autoryzacji przy pomocy takiej domeny.

Problem wydaje się trywialny – teoretycznie podczas instalacji samego systemu wybieramy metodę autoryzacji prze Domenę Windows, a następnie po dołączeniu do niej możemy już logować się na konta z domeny. Teoretycznie. W praktyce niestety nie dość, że konta zdalne nie są widziane razem z lokalnymi (getent passwd), to jeszcze nie można nawet sprawdzić jakie są dostępne (wbinfo –u). Gdzie leży problem? Programiści z firmy Novell chyba nie przetestowali konfiguracji, którą generuje narzędzie Yast.

Szczerze powiem, że spędziłem nad tym kilka dni i do tematu wracałem jak bumerang – nie dawało mi to spokoju, a rozwiązanie to jest o niebo wygodniejsze niż używanie LDAP'a z ręcznym mapowaniem atrybutów i Kerberosa (którego nota bene i tak używam, ale z winbindem).

Problematyczny okazał się plik smb.conf, w którym Yast "zapomniał" dodać kilku linii:

    password server = adres.gdzies.pl
    winbind enum groups = yes
    winbind enum users = yes
    winbind use default domain = yes

W pierwszej linii musimy podać adres kontrolera domeny, który będzie "podawał" nam hasła. Ostatnia linia nie jest konieczna, ale pozwoli pominąć podawanie za każdym razem nazwy domeny.

I tak Active Directory + Linux działa chyba w najlepszej możliwej konfiguracji.

by dmk at July 19, 2008 10:45 PM

July 13, 2008

Jakub Krajniak

Szkoda

Szkoda, mimo że ostatnio (nie tak ostatnio, z rok, dwa lata temu) zaskoczył mnie swoim zachowaniem. Mimo to szkoda, kolejny wielce inteligentny człowiek zmienił wymiar swojej egzystencji.

July 13, 2008 06:18 PM

July 11, 2008

Dawid Morzyński

Dlaczego należy aktualizować systemy na serwerach…

Odpowiedź prosta – bo stare się sypią. Spędziłem prawie dwa dni na analizie, dlaczego nie mogę zrobić na jednym z węzłów ograniczenia w autoryzacji w PAM przez LDAP na podstawie przynależności do grupy. Służy do tego prosty parametr pam_groupdn, który umieszcza się w pliku konfiguracyjnym ldap.conf. Do tego określa się nazwę atrybutu, który identyfikuje przynależność do grupy no i odpowiednią autoryzację skonfigurowaną w PAM (/etc/pam.d/). Wszystko fajnie, ale w żadną stronę to nie chciało działać (debugowałem to dwa ostatnie dni - PAM po prostu olewał groupdn lub go nie przechodził). Postanowiłem skopiować konfigurację na inną maszynę z nowszym system i… ruszyło od pierwszego razu. Wniosek prosty – regularnie uaktualniać systemy. Winowajca: openSuse 10.0.

PS Teraz jestem w trakcie eksperymentowania połączenia AD LDS z klasycznym klientem LDAPowym. Co z tego wyjdzie opiszę niebawem.

Update: chwilowo jestem zmuszony skończyć z tymi eksperymentami. Problem jaki staje na drodze (największy) to różne nazwy atrybutów pomiędzy klasycznym serwerem LDAP a AD LDS. Wracam do klasycznego LDAPa, a w chwili wolnej może ponownie spróbuję gromadząc wcześniej sensowny zbiór literatury (przykłady z Technetu są bardzo prymitywne, a inne materiały w sieci dość lakoniczne).

by dmk at July 11, 2008 04:08 PM

July 08, 2008

Jakub Krajniak

A to ciekawe, rekrutacja 2008

Jakoś tak się stało, że i w tym roku mam dostęp do danych z systemu rekrutacji UAM. Wiadomości o liczbie osób na jedno miejsce są porażające. Rok temu już byłem zaskoczony progami i ilością chętnych (a właściwie brakiem) na nanotechnologie. W tym roku mój wydział również jakoś...

July 08, 2008 06:52 AM

July 02, 2008

Przemysław Kaczmarek

Przerwa sesyjna…

Za długą przerwę przepraszam niestety egzaminy końcowe oddawanie projektów itd. czyli ogólnie mówiąc sesja, szósta z kolei, która na szczęście się już skończyła i to w zeszłym tygodniu. Jak na razie pozytywnie :) oczekuję jeszcze na ostatnie wyniki, które niestety się przeciągają. W okresie wakacji nie pozostawię strony bez nowych wpisów, wręcz przeciwnie planuję poznać kilka nowych technologii, które przedstawię na mojej stronie. Ale jak na razie należy mi się mały odpoczynek… :) innym również życzę miłych i dłuuugich wakacji.

by soczek at July 02, 2008 09:57 PM

June 29, 2008

Łukasz Stachowiak

Elvis Costello & The Imposters


Wczoraj wybrałem się na koncert organizowany z okazji Festiwalu Malta na koncert finałowy Elvisa Costello & The Imposters. Koncert odbył się przy jeziorze Malta na specjalnie zbudowanej scenie. Pogoda zniechęcała do przybycia - dość ostro padało. Gdy przybyłem na miejsce to było tam może z 30 osób. No ale gdy rozpoczął się koncert rozpogodziło się i gdy się odwróciłem (stałem pod samą sceną) zobaczyłem SPORO więcej osób - miło:)
Jeśli chodzi o sam koncert to na początku wiało nudą :P ale z czasem coraz bardziej się rozkręcało, żeby na bis dać już ostro :) Ogólnie dobrze się bawiłem. Poniżej zamieszczam kilka fotek zrobionych moim marnym aparatem w telefonie.

Elvis Costello - koncert - Malta 28.06.08

Tę piosenkę chyba każdy będzie kojarzyć Elvis Costello - She z filmu Notting Hill


Koncert można obejrzeć dziś (29 czerwca 2008) o godzinie 22:15 na TVP2.

Linki:
Elvis Costello na wiki
Elvis Costello - The Official Website

by noreply@blogger.com (WooKasZ) at June 29, 2008 04:18 PM

June 27, 2008

Łukasz Stachowiak

Wakacje !!


KONIEC !! Zakończył się 6 sezon serialu "Lost@PP" ! Ale spokojnie ! Czeka jeszcze na nas jego epilog za dwa miesiące. Jeszcze się okaże jak długi on będzie ale przewiduje, że jednak krótki :P
Skoro nastał czas wakacji czas zabrać się do nauki ! W moich planach przyswojenie informacji o:
- J2EE
- Hibernate
- Spring Framework
- kontynuacja J2ME, zwłaszcza zabawa z web service

No i do tego praca dla firmy, praca nad moim frameworkiem do PHP, oraz tworzenie dwóch innych dość sporych projektów we własnym zakresie (na razie tajemnica o co chodzi;P).
Z pewnością zaczną się pojawiać tutaj jakieś posty o w/w technologiach oraz moich doświadczeniach z nimi ;-)
A teraz idę wypoczywać :)

by noreply@blogger.com (WooKasZ) at June 27, 2008 07:53 PM

Dawid Morzyński

Virtual Server 2005… rozczarowanie

Dzisiaj chciałem zmigrować część wirtualnych maszyn z rozwiązań firmy VMWare na serwer maszyn wirtualnych od Microsoftu. Niestety skończy się najprawdopodobniej na migracji na nowszą platformę serwerową od VMWare. Powód? Virtual Server 2005 R2 SP1 wciąż nie obsługuje 64-bitowych systemów klienckich! Nie wiem, jak można tak przeoczyć jedną z podstawowych funkcjonalności (większość moich obecnych "wirtualek" pracuje właśnie w 64-bitach), zwłaszcza w wersji serwerowej. Jest alternatywa w formie Hyper-V (nota bene pojawiła się finalna wersja tej technologii w ostatnich dniach), ale wymaga Windows Server 2008, którego licencje do najtańszych nie należą (a system, który hostuje moje maszyny wirtualne to Vista – nie potrzebuję wyśrubowanej wydajności akurat na tym serwerze).

by dmk at June 27, 2008 07:32 PM

Jakub Krajniak

To co wakacje ;]

Wakacje, przynajmniej do września. Zgodnie z założeniami przed sesyjnymi wynikającymi z wniosków jakie powstały po poprzedniej sesji, polibuda została przesunięta na wrzesień. Może tak nie do końca, jeden egzamin udało mi się napisać i zdać, co do kolejnego to terminowo nie byłem w...

June 27, 2008 04:05 PM

June 23, 2008

Łukasz Stachowiak

Rewolucje w Matrixie!

Tego o prostu nie mogłem tutaj nie umieścić! Najlepsza recenzja Matrixa jaką czytałem:

Ok, koniec głupot (ironia), wracam do Aplikacji Internetowych wg J.C...

by noreply@blogger.com (WooKasZ) at June 23, 2008 09:36 PM

Jakub Krajniak

Egzamin, Aplikacje internetowe

Jedno z prawdopodobnych pytań na jutrzejszy egzaminie z aplikacji internetowych czy zastosowana struktura ontologii (np. taksonomia subsumpcyjna, ze względu na zawieranie się zbiorów bytów) jest poprawna ze względu na meta­własności? zal.com

June 23, 2008 06:44 PM

June 21, 2008

Łukasz Stachowiak

Przerwa techniczna !


Niestety z powodu egzaminów i innych zaliczeń na uczelni nie mam za bardzo czasu tutaj nic pisać. Przede mną jeszcze jeden egzamin (aplikacje internetowe) i zaliczenie (optymalizacja kombinatoryczna). Jak na razie napisałem dwa egzaminy i powinny być do przodu ;-) No ale pewności nie mam.

W każdym bądź razie ponownie w ramach relaksu coś wrzucę :) Tym razem Kabaret Ani Mru Mru w programie "Mój pierwszy raz" Jerzego Kryszaka! Miłego ;)

by noreply@blogger.com (WooKasZ) at June 21, 2008 10:27 AM