Posty

Wyświetlam posty z etykietą technikalia

Google Picasa is schizophrenic girlfriend which will turn your life into hell

Enough. After many years of collaboration with Picasa desktop application I have lost my patience completely. I must be very careful, watch my every step, otherwise I will loose everything. My photos, my life and even my phone contacts. Do you wonder why some cold piece of bits reminds me schizophrenic girlfriend? Here is my favorite symptoms list: "Oh, look at that sand. I see face there." "It is not a face, it is a hole in sand." "Noooo, it's a face, look!" - She see faces everywhere. Fences, sand, snow. Plush toys. It is getting worse and worse. On the other hand, she seems to not see some faces. "Look, it's my face." "Noooo way, it does not look like face!" "Look again!" "Nope."  She can freeze in their own minds for minutes. "Hello, are you there. Can you hear me?" ... "What did you say? I wasn't listening!" It is happening to me all the time.  Multiple personality disorder....

Deal

I am altering the deal. Pray I don't alter it any further. - Darth Vader I bet that you have heard, that Polish student developers (which by some blogs have been changed into just 'polish developers') are third largest active group in Windows Marketplace counting by number of applications. If you wonder, how it could be, let me introduce you how such numbers are created. There is .Net developers portal (called CodeGuru ), which is filled with marketing, but along with that, there are developer articles, tutorials and all this stuff, which beginners found useful. This portal is active in academic environment, create conferences, pushes students to it's own platform. Raising developers from students. Some day, they found that it will be a good idea, to make contest. It was called: get a windows phone in geek club . What is a geek club? This is developer activity promotion, where you get paid in points for various platform related actions, blog posts, applications, com...

MOF decompilation

Background So, you have read very nice article about writing new WMI drivers for kernel , you have downloaded and read how to start manual , you have even read very interesting kernel WMI reference on Ubuntu site. And you are so buzzed with good feelings about this all that you push some commands to dump WMI information from DSDT. Then in completely unexpected way you have to face with... Reality 97845ED0-4E6D-11DE-8A39-0800200C9A66: object_id: BC notify_id: 42 reserved: 43 instance_count: 1 flags: 0x2 ACPI_WMI_METHOD 466747A0-70EC-11DE-8A39-0800200C9A66: object_id: BD notify_id: 42 reserved: 44 instance_count: 1 flags: 0x2 ACPI_WMI_METHOD ABBC0F72-8EA1-11D1-00A0-C90629100000: object_id: ? notify_id: D2 reserved: 00 instance_count: 1 flags: 0x8 ACPI_WMI_EVENT 05901221-D566-11D1-B2F0-00A0C9062910: object_id: MO notify_id: 4D ...

Wpółczynnik Autobusowy Projektu

Współczynnik ten definiuję się jako ilość osób, członków zespołu, którzy muszą wpaść po autobus, by projekt zakończył się porażką. Ten współczynnik powinien być dużo większy od jedności, w sytuacji gdy jest równy jeden należy dokoptować kogoś jeszcze do zespołu. Takie wynalazki jak dzielona wiedza w wiki mają minimalny wpływ na powyższy współczynnik i zazwyczaj są pomijane w badaniu.

Timezone aware cron usage

If your whole application environment is working within one particular timezone, then you are a happy man. Sometimes, especially when you are performing synchronizations with partners from different timezones, and those timezones are changing their time basing on the DST rules. This might be a nightmare, when your scheduled task change their execution time back and forth by one hour every time they want. Simply saying: you may adjust those time manually, it is doable, but please, do you want to do this up to four times a year? What a horrible loss of time! There are two approaches nice and hard , which one is applicable for you? It depends on the cron compilation configuration. Check it by calling: man 5 crontab in console. Of course, you know how to configure cron, scroll down up to example, and when you see something like this: # mail any output to `paul', no matter whose crontab this is MAILTO=paul # CRON_TZ=Japan # run five minutes after midnight, every day 5 0 * *...

Co to jest Ꭰ:ᏲᏍᏗ?

Obraz
Firefox od czasu aktualizacji do Ubuntu 10.10 tak właśnie wita mnie na ekranie wyszukiwarki Google. Ten dziwny ciąg znaczków ma oznaczać guzik "Szukaj" - niby fajnie, tylko czemu akurat tak? Poszukiwanie rozwiązania prowadzi do wniosku, że ten szatański zestaw znaków jest zapisany w języku indian Cherokee. Tylko, na brud na klawiaturze, czemu akurat ten język. Rozwiązanie zagadki siedzi w oknie dialogowym wyboru języków (Edycja -> Preferencje - Zakładka Treść): Zapis chrome jest mylnie interpretowany jako oznaczenie ISO języka Cherokee. Wywalam błędny wpis, dodaje "pl" i "en" (w tej kolejności) i tadam! Mam odpowiedni język wybrany.

Ymiana klawiaturz

Czyżbyś miał zamienione "Y" z "Z"? Jeśli stało się to nagle, niespodziewanie i nie wiesz dlaczego spróbuj wcisnąć Ctrl+Shift. Spowoduje to przełączenie strony kodowej z maszynistki (214) na programistę. Jeśli nie pomogło, szukaj dalej.

Optional Fields

Creating user interface for Blackberry devices sometimes I have to create field which will hide and show themselves on forms. There are functions like insert , delete and add , but they usage require a lot's of effort because you have to specify index at which field has to be inserted. When there is a single optional dynamic field there is no big deal, but when there is two or more calculations for indexes take too much space and time. Reading javadoc I have found a very interesting function: replace . It will replace one field from manager with other unmanaged field. placeHolderField.  getManager().  replace(placeHolderField, optionalField); Placeholder field may be any field, I have used NullField - it has no width and no height. It is perfect for marking place where field should be inserted. To hide optional field replace field with placeholder. Programując interfejs użytkownika na urządzenie Blackberry spotykam się czasem z potrzebą dynamicznego pokazywania i u...

Advanced DB Restoration Method

Halo? Administracja? Usunąłem kilka rekordów z bazy danych, czy moglibyście odłączyć zasilanie od serwera? Kreatywne wykorzystanie buforowania danych do zabezpieczania przed przypadkową utratą danych.

GPS

Obraz
Praktycznie każdy bardziej zaawansowany telefon, lub każdy, nawet najgłupszy smartfon jest wyposażony w kostkę pozwalającą na korzystanie z dobrodziejstw systemu GPS. Dowiedzmy się zatem, jak można dobrać się do danych o naszym położeniu, w prostej aplikacji, pokazującej nam gdzie aktualnie się znajdujemy. Pierwsze co musimy zrobić, to uzyskać dostęp do klasy LocationProvider, klasa ta wystawia jedną metodę, getLocationProvider. Funkcję tę należy nakarmić kryterium, w którym definiujemy wymaganą dokładność. W tym przykładzie, nie potrzebujemy informacji na temat wysokości oraz prędkości i kierunku (przydatne gdy chcemy stworzyć coś na kształt nawigacji, albo trackera). Criteria cr = new Criteria(); cr.setAddressInfoRequired(false); cr.setAltitudeRequired(false); cr.setPreferredResponseTime         (Criteria.NO_REQUIREMENT); cr.setSpeedAndCourseRequired(false); cr.setCostAllowed(true); cr.setHorizontalAccuracy      ...

PHP-E

Walcząc z amerykańską dominacją na rynku oprogramowania Unia Europejska postanowiła wprowadzić innowacyjną zmianę: zupełnie nowy język programowania PHP-E. Specjalną odmianę języka PHP dostosowaną do realiów Unii Europejskiej, jej rynku oraz klientów. Poniżej mamy przykładowy kod źródłowy w tym innowacyjnym języku programowania: <php-e    €zmienna = "hello";    €druga = "world";    echo €zmienna ." ". €druga ."\n"; ?> Na poziomie bibliotek kod ma być zgodny z php, jednakże planowane są w nim rewolucyjne zmiany, które uczynią go lepszym. Niestety, żaden z moich rozmówców nie był w stanie podać przykładu ulepszenia z tego prostego względu, że nie rozpisano jeszcze przetargu na projekt ulepszeń. Dodatkowo zostaną rozpisane przetargi na interpreter języka, dokumentację oraz szkolenia dla programistów. Unia zamierza wyłożyć na to kilkaset milionów euro z programu "Społeczeństwo Informacyjne - Jeden naród, jedna unia, jedna droga...

Problem z Selenium

Selenium server w wersji 1.0.1 Firefox w wersji 3.6 Dzisiaj przekonałem się, że zautomatyzowane testy, w ramach nieustającej integracji to nie taka prosta sprawa. Jak w przypadku IE (tfu, tfu - kysz, kysz) wszystko działa dobrze i tak jak powinno, to w przypadku Firefoxa Selenium raczyło mnie takim oto uroczym błędem: Today, I realized that automated tests, withing continuous integration build are not easy task to do. When it comes to IE, everything works well and as it was expected, but in Firefox it ends with very nice error: RuntimeException: Firefox refused shutdown while preparing a profile No pięknie, z tego co widać w menedżerze zadań, przeglądarka się uruchamia jednak nie wykonuje żadnych testów. Pogrzebawszy w Internecie, znalazłem rozwiązane, niestety nie jestem w stanie podać linka do źródła - zagubił mi się gdzieś. When I opened task manager, I can see that browser is up and running, but it refuse to make any tests. After short intercourse with Internet I found s...

GUI

Obraz
Intuicyjny interfejs - Święty Graal projektowania interfejsu. Główna bolączka Linuchowych dystrybucji, tworzonych przez programistów zapaleńców. Większość moich kolegów uważa tworzenie interfejsu graficznego aplikacji za uwłaczającą, durną robotę. Zapominają o tym, że większość aplikacji jest używana przez nie-programistów, którzy zderzeni z nielogicznym interfejsem dostają po prostu świra. Poniżej jest przykład dwóch interfejsów, tę po lewej mam w domu, tę po prawej w pracy. Od razu widać którą projektowali inżynierowie dla inżynierów, a która zrobiona została dla ludzi. Warto o tym pamiętać, gdy następnym razem ktoś wpadnie na pomysł, żeby aplikację zamykać wciskając guzik "Start".

Nazwa projektu

Nazwa projektu w Blackberry Eclipse Plugin nie może zaczynać się od liczby. Zostanie to po cichu zamienione na podkreślenie-liczba podczas generowania różnych plików (między innymi dla debuggera), jednak wynikowy plik .cod nadal będzie zaczynał się od cyfry. Skutecznie uniemożliwia to wszelkie debuggowanie. Project name in the Blackberry Eclipse Plugin cannot start with number. It will be automagically changed into underscore-number during generation of some files (especially for debugger), but resulting .cod file still will start with number. This make debugging almost impossible.

Prolog, XPCE, pce_main_loop

SWI-Prolog w wersji 5.9.5-121-gcd55e6b Jest bardzo dobry podręcznik do XPCE . Jest w nim opisane, jak konstruować okna, ramki, menu i całą resztę okienkowego szyku. Jednak trudno jest znaleźć schemat, szablon standardowego punktu startowego aplikacji. Dokumentacja wspomina predykat pce_main_loop/1, jednak nie ma z nim wielu przykładów (help też milczy na jego temat), poniżej jest przykład jego użycia. :- [load]. main :- pce_main_loop(main). main(Argv):-    new(W, mainwindow),    send(W, status, full_screen). Pierwsza linia ładuje plik load.pl, standardowo dołączający wszystkie pliki potrzebne do uruchomienia programu. Predykat main/0 służy do uruchomienia aplikacji przy wykorzystaniu kompilatora: pl --goal=main --stand_alone=true -o bin/application -c application.pl To polecenie można umieścić w pliku Makefile, po to by wyprodukować samodzielną zdolną do uruchomienia binarną wersję aplikacji. Uruchomiona przy pomocy main. aplikacja będzie dzi...

Wilcze Stado

Tworząc rozproszony system obliczeniowy, w którym nie jesteśmy w stanie oszacować obciążenia całości układu w czasie, musimy rozważać różnorakie scenariusze: utrzymywanie całości sieci w stanie gotowości może wiązać się ze zbyt dużym kosztem, przydzielając sztywną ilość jednostek do danego zadania nie jesteśmy w stanie reagować na zmieniające się wymagania. Założenie, że wszystkie jednostki są identyczne, może być zbyt niewygodne, niektóre zadania wchodzące w skład procesu mogą wymagać specyficznie skonfigurowanych jednostek. W celu uniknięcia takich problemów, by sieć była efektywna oraz odpowiednio wykorzystywała zasoby, będąc jednocześnie elastyczną i łatwą w utrzymaniu zastosujemy podejście zakładające dużą samodzielność poszczególnych jednostek. Takie podejście oraz taką sieć nazwę Wilczym Stadem. Wewnątrz stada, różnicujemy jednostki ze względu na ich stopień gotowości do wykonania zadania. Jednostki oddelegowane do wykonywania zadań stada określimy mianem wilków, jednostki wykon...

Błąd kompilacji zasobów

Obraz
Gdy zainstalowałem środowisko (eclipse) razem z wtyczką do tworzenia aplikacji na BlackBerry na moim polskim Windowsie dostałem bardzo dziwny błąd. Coś takiego: Executing rapc for the project XXX at ... Can't open dir ...I18n£.crb/ Error!: Error: preverifier failed: ....preverify.exe -d .... rapc failed for the project XXX Nie da się tworzyć aplikacji bez porządnej obsługi lokalizacji. Krótkie śledztwo, wykazało: problem leży w tym, że kompilator źle znosi znaki spoza zakresu ASCII. To proste, nie ma pełnej obsługi Unicode. Można to obejść, włączając domyślną lokalizację dla aplikacji nie obsługujących Unicode. Niektóre programy mogą się dziwnie zachowywać (przykładowo: GG w wersji 7.0 wyświetla krzaki zamiast polskich znaczków). Można tego dokonać w panelu sterowania, w aplecie "Ustawienia językowe i regionalne". When I have installed development environment (eclipse) with a plugin for Blackberry development I got very strange error on my polish Windows station. Somethi...

Grudzień w sierpniu

Obraz
To się chyba zdarzyło każdemu: błędnie ustawiona data w aparacie i w środku lata robimy zdjęcia z datą z grudnia. Jak zmienić datę albo czas w zdjęciach? Nie jest to skomplikowane, potrzebujemy programiku o nazwie jhead którego autorem jest Matthias Wandel (dostępny tutaj , jest też w każdej liczącej się dystrubucji pingwina). Przy jego pomocy możemy przesunąć date/czas o określoną ilość dni lub minut. Program obsługuje się z linii poleceń. W moim przypadku pomocne były dwa następujące polecenia: jhead -ds2009:08:06 *.JPG Ustawiamy datę na określony dzień, data jest w formacie RRRR-MM-DD. W ten sposób ze środka grudnia zrobiło się lato jhead -ta-4:08 *.JPG Tym przesunąłem czas o cztery godziny i osiem minut wstecz.

Blue Screen of Death

Obraz
Wykonałem ostatnio migracje, z kilku dysków po kilkadziesiąt gigabajtów do jednego dużego o rozmiarze jednego terabajta. Użyłem oprogramowania firmy Acronis, o nazwie " Migrate Easy " . Migracja przeszła bezproblemowo, system nawet nie zauważył tego, że się zwiększyła wielkość dysków. Niestety sielankę nowego, szybszego systemu raz po raz brutalnie przerywał niebieski ekran śmierci. Błąd o nazwie BAD_POOL_HEADER nie był powiązany z żadnym sterownikiem. Na stronach Microsoftu znalazłem bardzo ładny spis błędów stop . Wszystko ładnie opisane, niestety w tym konkretnym przypadku nic mi to nie pomogło. Po ustawieniu kilku procesów śledzących położenie sterowników w pamięci (narzędzie pstat), chciałem wykonać backup, na wszelki wypadek (czy aby na pewno nowy dysk się nie sypnął?). Przy wykonywaniu kopii danych (shadow copy) dostałem BSOD. Otrzymywałem go za każdym razem, już miałem pisać do Mozy z prośbą o pomoc, jednak na jednym z angielskojęzycznych forów znalazłem dość proste...

Wątki

Okazało, że do programu muszę dołożyć drugi wątek wyposażony w kolejkę komunikatów bo pierwszy się zatyka gdy okno modalne wchodzi w wewnętrzną pętlę komunikatów przy przenoszeniu okna albo podczas wyświetlania kontekstowego menu. Eeech, życie...