Jogger.pl


Techblog jest moderowaną częścią serwisu Jogger.pl na której pojawiają się najciekawsze wpisy.

Najnowsze wpisy RSS

Architektura dostępu do danych REST staje się coraz bardziej popularna w Internecie. Coraz częściej trafiam na serwisy działające w ten sposób, coraz więcej frameworków obsługuje ten wzorzec. W Internecie dużo już napisano na temat samego sposobu implementacji, ale w skrócie chodzi w głównym stopniu o sposobie dostępu dodanych przez protokół HTTP wykorzystując 4 typy (metody) zapytań i odpowiednie formatowanie adresów URI. Zazwyczaj standardowe serwisy korzystają z zapytań GET i POST. REST proponuje wykorzystanie też PUT i DELETE (HTTP definiuje jeszcze kilka kolejnych, jeszcze rzadziej wykorzystywanych).

(...)

Testowy kompilator JDK 8 z obsługą Lambdy można pobrać ze strony projektu (projekt ten zostanie połączony z główną gałęzią jdk8 dopiero, gdy się bardziej ustabilizuje). Więcej przykładów oraz wstępny szkic na http://openjdk.java.net/projects/lambda/.

Przykładowy kod - proste UI i operacje na listach

(...)

[img]

Strasznie się ostatnio rozrzutny zrobiłem - raptem pół roku temu kupiłem sobie czytnik, dwa miesiące temu nowe flaki do komputera, teraz tablet, a jeszcze z powodu Euro zacząłem się zastanawiać nad nowym telewizorem. Ani chybi wpadłem w końcu w sidła szalonego konsumpcjonizmu;-).

A przy okazji w sidła speców od marketingu - zasadniczo nie planowałem zakupu nowej zabawki, ale skoro w Wyborczej zrobili promocję, to stwierdziłem, że specyfikacja przyzwoita, 370 złotych nie majątek, a zabawka do przeglądania netu bez konieczności włączania komputera by mi się przydała. Czytnik niby też dawał taką możliwość, ale na pół gwizdka - wolno, topornie, na czarno-białym ekranie, z kursorem poruszanym klawiszami - to zdecydowanie nie to, co tygrysy lubią najbardziej. Wystarczyło tylko do rozbudzenia apetytu - przypuszczam, że gdyby nie doświadczenia z czytnikiem, raczej bym nie kupił tabletu. Steve Jobs miał jednak sporo racji, kiedy twierdził, że klienci nie są od tego, żeby wiedzieć czego chcą.

(...)

Ostatnio poczułem dużą potrzebę zaszyfrowania sobie całego dysku i jako, że nie mogłem znaleźć ani jednego wyczerpującego artykułu o tym, jak zaszyfrować Debiana, postanowiłem sam napisać o tym kilka słów. W tym wpisie postaram się zebrać moje doświadczenia z pakietem cryptsetup pod Debianem. Opiszę jak zainstalować i skonfigurować cryptsetup, zrobić backup partycji i przywrócić ją na już zaszyfrowany wolumin, po czym przekonfigurować bootloadera tak, żeby odpalił system, pytając nas przy uruchomieniu o hasło. W tym wpisie zakładam, że czytelnik ma już przygotowany jakiś system live który zna, umie podzielić partycję na dwie i edytować grub.cfg. Uwaga, będzie chaotycznie, nie chciało mi się tego czytać dwa razy :p

Disclaimer

Jako, że wykonując zawarte tutaj porady można sobie łatwo rozwalić system, na wstępie zaznaczam, że testujesz je NA WŁASNĄ ODPOWIEDZIALNOŚĆ. Zalecam zrobienie wcześniej backupu całego dysku - o ile nie masz wydzielonej partycji na /boot, konieczne będzie wprowadzenie zmian w układzie partycji na dysku twardym i przeinstalowanie bootloadera - są to gruntowne zmiany i istnieje możliwość, że Twój system się już po tym nie podniesie. Żeby nie było, ostrzegałem!

Jak to będzie działać?

Po wykonaniu tego poradnika system będzie odpalał się z GRUBa zostawionego na specjalnie dla niego wydzielonej niezaszyfrowanej partycji. po czym po załadowaniu jądra i initrd, system zapyta użytkownika o hasło potrzebne do zamontowania partycji systemowej. Po jego podaniu system będzie się zachowywał jak wcześniej - no, może będzie trochę wolniejszy, ale jak ktoś wpada na genialny pomysł, żeby zaszyfrować partycję z systemem, musi się z tym liczyć (u mnie nastąpił mniej-więcej trzykrotny spadek prędkości zapisu na dysku, ale to netbook, sporo pewnie zależy od CPU, YMMV).

(...)

Cóż poradzić: wersja Customer Preview ósmego Windows nie tylko zadaje kłam twierdzeniu, że co druga wersja to krap; ale na dodatek: uruchamia się równie szybko (jeśli nie szybciej) niż Ubuntu na wcale nie najszybszym U100, a usypia i budzi się bez denerwujących bugów. Niech no tylko jeszcze wyjdą sterowniki do starszych wersji intelowskich chipsetów graficznych i W8 stanie się ciekawą propozycją... o ile tylko cena nie okaże się zbyt wysoka jak na bootstrap do Firefoxa :)

Wiele razy miałem już okazję korzystać z różnych platform wirtualizacji od VMware, XEN, KVM, Promox, VirtualBox po VirtualPC i zazwyczaj byłem zadowolony (pomijając VirtualPC).

Ostatnio korzystałem z VirtualBox, bo na laptopie wygodnie się z tego używa, a i większość rzeczy da się bez problemu wykonać. Ostatnio musiałem jednak wykonać instalacje serwera bazującą na Ubuntu 10.04 LTS na zdalnym serwerze, gdzie jako platforma wirtualizacji był zainstalowany VMware ESXi w wersji 5.0. Dawniej używałem głównie VMware Server bo był bardziej wydajny i generalnie byłem zadowolony, że będę instalował system na takiej właśnie platformie.

Niestety w trakcie instalacji okazało się jak wiele się zmieniło od czasu, gdy używałem VMware. Do instalacji postanowiłem użyć darmowego narzędzia Go. Już próba uruchomienia go skończyła się problemem - Go działa jako plugin do przeglądarki i działa tylko w systemach Windows. Zainstalowałem więc Windows na maszynie wirtualnej i powróciłem do próby instalacji.

Po skonfigurowaniu maszyny musiałem podłączyć obraz ISO i tu pojawił się kolejny problem - ISO podłącza się z lokalnej maszyny a instalacja trwa na zdalnym serwerze (nie da się wybrać ISO ze zdalnej lokalizacji!!!). Co to oznacza gdy ma się łącze asymetryczne to chyba nie trzeba pisać. Dobrze że posiadam 4Mb upload, ale to niestety też nie było pocieszające, gdyż i tak instalacja swoje trwała.

Nasuwa się pytanie: Dlaczego VMware usunęło możliwość wybrania ISO z magazynu? W wersji VMware Server 2.0 taka opcja była dostępna bez problemu!

Mam nadzieje że nie będę musiał już instalować systemów zdalnie na platformie VMware, bo obecnie to Promox, KVM, VirtualBox i XEN są o wiele lepsze - można wybrać ISO z dysku zdalnego co pozwala skrócić czas instalacji czasem nawet 5 krotnie!!

  • Oracle: rozsyła pocztę z IP bez ustawionego revDNS... (a to akurat był spamer, Oracle tym razem sobie nie nagrabiło, ale na pewno jeszcze sobie zasłuży)
  • HP: revDNS mają, ale na grzeczne pytanie o SPF odpowiada "NOTIMP" (co postfix domyślnie odbija)

A to, że maile nie dochodzą to oczywiście zdaniem "góry" wina adminów, bo przecież do google dochodzą, co nie? A o tym, jak zorganizowany jest internetowy sklep HP można by niezły thriller napisać, tak przy okazji.

Przed Lumią miałem pięć różnych telefonów -- same Nokie. Przyzwyczaiłem się do tego, że przesiadka na nowy telefon jest bezbolesna. Podłączenie starego do komputera, synchronizacja, podłączenie nowego, synchronizacja.

Z Lumią tak łatwo nie poszło i mam o to żal do Nokii. Rozumiem, że przesiadka na inny system, ale bez przesady -- przeniesienie kontaktów to chyba nie wielka filozofia.

Po uruchomieniu Lumii znalazłem w menu aplikację o obiecującej nazwie "Transfer kontaktów". Zapowiadało się pięknie: włączyć Bluetooth na starym telefonie, sparować i ... dupa. Model nie obsługiwany. Mam tylko nadzieję, że to błąd lub niedopatrzenie.

Znalazłem w sieci wiele porad na tę okoliczność, większość sugerujących użycie wspomnianej już aplikacji. Ja poradziłem sobie tak:

  • Uruchomiłem na komputerze Ovi Suite i w ustawieniach synchronizacji zaznaczyłem synchronizację z programem Outlook Express.
  • Podłączyłem E71 do komputera i zsynchronizowałem kontakty.
  • Z Outlook Express wyeksportowałem kontakty do CSV.
  • Zaimportowałem kontakty do Gmaila.
  • W Lumii skonfigurowałem konto Gmail, w ustawieniach synchronizacji zaznaczyłem kontakty. Po synchronizacji miałem swoje kontakty na Lumii.

Po drodze pojawił się mały problem. W CSV wyeksportowanym z Outlooka brakowało kilku telefonów. Dotyczyło to "niestandardowych" kontaktów, które miały po kilka numerów. Jako że nie miałem ich wiele, nie chciało mi (...)

W lipcu narzekałem, że webdeveloperom brakuje klocków/struktur z których mogliby łatwo budować aplikacje, podobnie jak buduje się desktopowe interfejsy graficzne korzystając z różnych bibliotek zawierających zdefiniowane elementy i kontrolki. Dzisiaj spokojnie mogę powiedzieć, że HTML również doczekał tych wspaniałych czasów.

[img]

Od kilku miesięcy obserwowałem rozwój projektu Bootstrap (od (...)

[img]

Terminarz jest skonstruowany tak, aby na podstawie wpisanych wyników tworzona była tabela z liczbą punktów i bramek zdobytych przez każdą drużynę. Kolejność w grupach powinna zostać ustalona automatycznie. Automatycznie generowany jest również zestaw par ćwierćfinałowych i dalej aż do finału.

Co prawda Excely.com podobny arkusz (bardziej zaawansowany i wielojęzyczny) udostępniło już pod koniec grudnia jednak twórca tamtego arkusza najwyraźniej nie przeczytał albo nie zrozumiał regulaminu rozgrywek. Nie odróżnia też współczynnika ligowego UEFA od współczynnika dla reprezentacji. Poza tym część obliczeniowa jest chroniona hasłem i nie działa po przekonwertowaniu do formatu Google Docs.

Arkusz w dziewięćdziesięciu procentach bazuje na terminarzu Mistrzostw Świata w RPA ze strony szablonów Office. Reszta polegała na dostosowania tamtego arkusza do regulaminu EURO 2012. Praktycznie główną trudnością w tego typu terminarzach jest automatyczne ustalenie właściwej kolejności drużyn po rozegraniu wszystkich spotkań. Arkusz powinien obliczyć kolejność zgodnie z poniższymi punktami regulaminu ale nie przewiduje sytuacji z paragrafu mówiącego o ewentualnych rzutach karnych po ostatnim meczu fazy grupowej. Punkty g i h są w tym przypadku nieistotne.

Equality of points after the group matches

If two or more teams are equal on points on completion of the group matches, the following criteria are applied, in the order given; to determine the rankings:

  • higher number of points obtained in the matches among the teams in question;
  • superior goal difference in the matches among the teams in question (if more than two teams finish equal on points);
  • higher number of goals scored in the matches among the teams in question (if more than two teams finish equal on points);
  • superior goal difference in all the group matches;
  • higher number of goals scored in all the group matches;
  • position in the UEFA national team coefficient ranking system (see Annex I, paragraph 1.2.2);
  • fair play conduct of the teams (final tournament);
  • drawing of lots.

If two teams which have the same number of points, the same number of goals scored and conceded play their last group match against each other and are still equal at the end of that match, the ranking of the two teams in question is determined by kicks from the penalty mark (Article 16), provided no other teams within the group have the same number of points on completion of all group matches. Should more than two teams have the same number of points, the criteria listed under paragraph 8.07 apply.

Arkusz można edytować bez konieczności logowania tutaj —

W pracy mamy 4ery monitory podpięte do jednego kompa na którym monitorujemy sobie różne takie tam ;), trochę nudne stało się codzienne ich odpalanie i wyłączanie, zwłaszcza że komputer pracuje non-stop (zbiera logi itp.)
Postanowiłem napisać jakiś prosty skrypt który będzie wraz z cron'em robił to za nas.
Z pomocą przyszedł xset którym wyłączam monitory z prądu lub je na powrót włączam, problemem było to że po odpaleniu na nowo monitorów wyświetlał się szary ekran z wielkim czarnym X'em, który znikał dopiero po tym jak ruszyłem myszką lub wcisnąłem coś na klawiaturze.
problem ten rozwiązałem programem xdotool którym wysyłam (...)

Od trzech, może czterech lat używam GNU Screen, programu, który początkowo służył mi do wygodnego zostawiania sesji terminala w tle. Teraz używam go na serwerze uczelnianym i ostatnio przyszło mi do głowy wziąć na warsztat plik ~/.screenrc, a konkretnie - instrukcję "hardstatus".

Hardstatus służy do wyświetlania w terminalu linii z informacjami o stanie sesji - można tam umieścić listę wszystkich otwartych sesji z ich nazwami, nazwę hosta, godzinę, obciążenie CPU itd. Moją dotychczasową konfigurację hardstatus wziąłem z tego (...)

Jak obiecałem w poprzednim wpisie, spróbowałem napisać prosty konwerter jpg -> ansi, którego można by użyć do generowania ładnych, kolorowych grafik w konsoli (w 256 kolorach, dla terminali, które to obsługują, rzecz jasna).

Efekt moich starań można zobaczyć tu: https://github.com/samaelszafran/img2ansi. Skrypt jest jeszcze ciut niedopracowany, ale generalna idea działa. Na pewno muszę dorobić mu obsługę innych obrazków, niż tylko jpg...

W każdym razie, z takiej kuleczki skrypt potrafi stworzyć coś takiego ;-)

Witajcie!
Otóż na nowym blogu udało mi się już zrealizować 3 części poradnika dla początkujących w Linuksie - od przygotowania płyty instalacyjnej, po instalację programów i zarządzanie ustawieniami systemu.
Poradnik przygotowałem z myślą o "zielonych" użytkownikach, którzy chcą zmienić swój system na Linuksa.

Oto linki do poszczególnych części kursu:

Część pierwsza - czym jest Linux, jakie są dystrybucje, co zawiera dystrybucja (na przykładzie Ubuntu), skąd pobrać Ubuntu i jak przygotować płytę instalacyjną - wersja tekstowa okraszona zrzutami ekranu - OTWÓRZ PIERWSZĄ CZĘŚĆ (...)

Psi słucha VLC

tr3b0r Miesiąc temu

Nie znalazłem w sieci to sam napisałem. Może komuś się przyda.
Żeby działało to w VLC trzeba uruchomić interfejs WWW, a w Psi publikowanie melodii. Rozwiązanie jest kompatybilne z VLC 1.* i VLC 2.*.
Taki mały prezent z okazji jajka... ;)

using System;
using System.Xml;
using System.IO;
using System.Threading;

namespace Pl.Jogger.Tr3b0r.Fr0mVLC2Psi
{
 class MainClass
 {

  public static void Main (string[] args)
  {
   if (args.Length != 4)
    Console.WriteLine ("Przykładowe użycie:" + Environment.NewLine +
     "Fr0mVLC2Psi.exe -VLC1 http://127.0.0.1:8080 ~/.psi 3" + Environment.NewLine +
     "Fr0mVLC2Psi.exe -VLC2 http://localhost:8080 \"C:\\Users\\Jaś Fasola\\PsiData\" 15");
   else {

(...)


Przeglądaj strony: