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ĘŚĆ
(...)
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 {
(...)