poniedziałek, stycznia 30, 2012

Najtaniej u Solorza

Najtańszy mobilny Internet w abonamencie oferuje Cyfrowy Polsat, tuż za nim Play. Co ciekawe tort nie jest podzielony na trzech - prawie 39% modemów 2G/3G obejmuje Plus, po około 21% T-Mobile, Play i Orange. Reklamy Plusa z braniem laptopa w góry zrobiły swoje?

Kto płaci za rebranding? Klient. Dobrze, że trend cen jest generalnie spadkowy. Prepaid jest sporo droższy.
Jak to dobrze mieć UKE.

niedziela, stycznia 29, 2012

Dekompilacja

Ustawa z dnia 4 lutego 1994 r. o prawie autorskim i prawach pokrewnych. Dz.U. 1994 nr 24 poz. 83:

Art. 75. Nie wymaga zezwolenia uprawnionego:
2) obserwowanie, badanie i testowanie funkcjonowania programu komputerowego w celu poznania jego idei i zasad przez osobę posiadającą prawo korzystania z egzemplarza programu komputerowego, jeżeli, będąc do tych czynności upoważniona, dokonuje ona tego w trakcie wprowadzania, wyświetlania, stosowania, przekazywania lub przechowywania programu komputerowego;
3) zwielokrotnianie kodu lub tłumaczenie jego formy w rozumieniu art. 74 ust. 4 pkt 1 i 2, jeżeli jest to niezbędne do uzyskania informacji koniecznych do osiągnięcia współdziałania niezależnie stworzonego programu komputerowego z innymi programami komputerowymi, o ile zostaną spełnione następujące
warunki:
a) czynności te dokonywane są przez licencjobiorcę lub inną osobę uprawnioną do korzystania z egzemplarza programu komputerowego bądź przez inną osobę działającą na ich rzecz,
b) informacje niezbędne do osiągnięcia współdziałania nie były uprzednio łatwo dostępne dla osób, o których mowa pod lit. a,
c) czynności te odnoszą się do tych części oryginalnego programu komputerowego, które są niezbędne do osiągnięcia współdziałania.
3. Informacje, o których mowa w ust. 2 pkt 3, nie mogą być:
1) wykorzystane do innych celów niż osiągnięcie współdziałania niezależnie stworzonego programu komputerowego;
2) przekazane innym osobom, chyba że jest to niezbędne do osiągnięcia współdziałania niezależnie stworzonego programu komputerowego;
3) wykorzystane do rozwijania, wytwarzania lub wprowadzania do obrotu programu komputerowego o istotnie podobnej formie wyrażenia lub do innych czynności naruszających prawa autorskie.

Art. 76. Postanowienia umów sprzeczne z art. 75 ust. 2 i 3 są nieważne.

piątek, stycznia 27, 2012

STOP ACTA!

Tibco BW String performance

Ważne: takie testy należy wykonywać w zminimalizowanym Designerze albo w czystym bwengine. Wizualizacja danych pobranych przez interfejs Remote Debugger ma istotny wpływ na pomiar czasu (ot, jeszcze jeden przykład zasady nieoznaczoności Heisenberga).

poniedziałek, stycznia 23, 2012

Strona Tuska nieDoStępna

Strona www.premier.gov.pl w momencie ataków była fizycznie zlokalizowana w Centrum Obsługi Kancelarii Prezesa Rady Ministrów przy Powsińskiej 69/71 (217.149.246.83, łącze dostarcza ATM). Serwer SUSE 11 stawiała firma Evercom i raczej pozostawał bez odpowiedniej opieki utrzymaniowej. Wieczorem 23 stycznia dokonano zmiany wpisu DNS na serwer 91.198.194.58 (łącze dostarcza Exatel) w Kancelarii Prezesa Rady Ministrów ze stroną startową na szybko stworzoną w Wordzie (wgrana na Apache-a o 22:24):

Serwis www.premier.gov.pl jest niestety nieodstępny. Pracujemy nad jego przywróceniem.

Do czasu ponownego uruchomienia serwisu zapraszamy na nasze profile na portalach społecznościowych Facebook, Twitter oraz Blip.

Serdecznie przepraszamy za utrudnienia.

Pisownia oryginalna. Prosta statyczna strona ma za zadanie przetrwać atak DoS. Facebooka ludzie kłaść nie będą, ale stron premiera nie odstąpią. Czy serwery rządowe mają załataną dziurę byte range, poprzez którą można bardzo łatwo położyć httpd?

sobota, stycznia 21, 2012

EMS active/active

Provider EMS inicjowany z com.tibco.tibjms.naming.TibjmsInitialContextFactoryFO transparentnie przełącza konsumentów i producentów na działające połączenie. Wiadomość wysyłana jest na działający pierwszy serwer (w wersji FO preferowany jest pierwszy z listy, w wersji LB jest wybór round-robin), a odpowiedź odbierana ze wszystkich. Klaster active/standby to przeszłość.

czwartek, stycznia 19, 2012

EMS 6.1

per JMS destination

flowcontrol=100MB (nie można używać dla destinations w obrębie tego samego komponentu)
redeliverydelay=30sec
addprop queue sender_name=on
addprop queue store=store_per_domain

at server

max_msg_memory=8GB
msg_swapping=enabled
server_rate_interval=20
statistics=enabled
detailed_statistics=PRODUCERS,CONSUMERS,ROUTES
rate_interval=20
flow_control = enable
store_minimum=1GB
store_truncate=enabled
destination_backlog_swapout=3000
reserve_memory=64
socket_send_buffer_size=65536
socket_receive_buffer_size=65536
client_timeout_server_connection=60
server_heartbeat_client=20
client_heartbeat_server=20
server_timeout_client_connection=60

factories.conf

connect_attempt_count=10
connect_attempt_delay=1000
connect_attempt_timeout=6000
reconnect_attempt_count=10
reconnect_attempt_delay=1000
reconnect_attempt_timeout=6000

stores.conf

[nazwa_domeny]
type=file
file=nazwa_domeny.db
file_destination_defrag=1MB
file_crc=false
mode=sync

[nazwa_domeny]
type=file
file=nazwa_domeny.db
file_destination_defrag=1MB
file_crc=true
mode=async

sobota, stycznia 14, 2012

Bezprzewodowe głośniki


Logitech Z515. Urządzenie komunikuje się drogą radiową z komputerem wyposażonym w nadajnik USB (taki jak od myszki). Ma własne akumulatorki wytrzymujące 10 godzin RMF-u, które po tym czasie trzeba naładować - jest kabel zasilający. Dźwięk jest trochę za płaski, ale jak na wielkość urządzenia i sposób transmisji dźwięku można to wybaczyć.


Do wysokiej jakości mp3 przyda się odtwarzacz z equalizerem - wszak wiemy, że jest coś takiego jak model psychoakustyczny percepcji dźwięku.

piątek, stycznia 13, 2012

Użycie wskazanego drivera Oracle metodą brute force

LinkedList<URL> cpList = new LinkedList<URL>();
try {
    cpList.add(new URL("jar:file:/ojdbc_11_2_5.jar!/");
}
catch (MalformedURLException e) {
    throw new RuntimeException(e);
}
URLClassLoader parent = (URLClassLoader) this.getClass()
.getClassLoader();

for (URL url : parent.getURLs()) {
    String su = url.toString();
    if (!(su.contains("ojdbc")))
        cpList.add(url);
}

Logger.getInstance().debug(
"Using url "+cpList.get(0)+" for loading Oracle driver");

URLClassLoader cl = new URLClassLoader(
cpList.toArray(new URL[0]), null);
ClassLoader savedClassLoader = Thread.currentThread()
.getContextClassLoader();

// because of 'javax.management.InstanceAlreadyExistsException
// com.oracle.jdbc:type=diagnosability,
// name=sun.misc.Launcher$AppClassLoader@92e78c'
Thread.currentThread().setContextClassLoader(cl); 
Driver drv = (Driver) cl.loadClass(
"oracle.jdbc.OracleDriver").newInstance();
Thread.currentThread().setContextClassLoader(savedClassLoader);

niedziela, stycznia 08, 2012

Ewolucjonizm vs kreacjonizm

Ewolucjonizm w biologii czy filozofii? O co się kłócimy: o ewolucję jako o przejście od białka do myślącego człowieka, który potrafił tworzyć cywilizacje? O zdolności przystosowawcze organizmów? Bo proces zmian w organizmach żywych jest inteligentny. Dlaczego taka roślina ma zielone liście, których kolor jest dopasowany do dominującej energetycznie długości fali światła słonecznego? Skąd w takiej roślinie wbudowana inteligencja? Pewnie można powiedzieć, że w pewnej próbce pojawiały się mutacje genetyczne i lepiej radziły sobie pewne organizmy, który potem w ramach gatunku stawały się dominujące. Ale w jaki sposób powstał ten proces? W jaki sposób wogóle powstał proces replikacji organizmów żywych? To, że w DNA znajdują się 'matryce' do produkcji zróżnicowanych morfologicznie i funkcjonalnie komórek, to już wiemy i akceptujemy [teoria endosymbiozy: mitochondrium było oddzielnym organizmem, a jego kod genetyczny został wmontowany w DNA]. Przez miliony lat życia w DNA mogło coś tam się doklejać i mogły powstawać różne formy życia. Ale dlaczego życie wie, że ma się replikować? Skąd jest takie inteligentne? Czy nie brakuje nam czegoś pomiędzy białkiem a umiejącą się rozmnażać - przekazywać życie - komórką? Od którego miejsca zlepek białek jest żywym bytem? Można przyjąć, że w pewnym etapie życia, spontanicznie i efemerydycznie powstawały żywe zlepki białka, ale dlaczego podjęły one decyzję, że proces ich życia ma być przechodni? Znowu proces losowy? No dobra, można przyjąć. Ale dlaczego ten proces losowy jest inteligentny? Dlaczego tornado przechodzące przez śmietnik nie składa Boeinga 747 - za mała ilość powtórzeń? Możemy założyć, że ewolucja jak i grawitacja, to coś wbudowanego w ten wszechświat, ale wtedy dochodzimy do inteligentnego projektu - tada! Inna możliwość, to ciągle mutujący i duplikujący się wszechświat - wtedy mielibyśmy nieskończoną ilość wszechświatów równoległych (continuum). Czy ktoś coś takiego udowodnił? Jeszcze inna możliwość to wszechświat z cyklem: bing bang, ewolucja, bing bang. Ale wtedy taki wszechświat dążący do uporządkowania musiałby być stanowy i znowu inteligentny (musiałby mieć zapisany gdzieś ostatni stan, coś podobnego do DNA organizmów). Inteligentny wszechświat z założenia ma kreatora. Alleluja i do przodu!

Zastanówmy się jeszcze nad klonującym się wszechświatem w momencie decyzji zmiany stanu. Jeżeli z jednego wszechświata w momencie decyzji o zmianie np. spinu dowolnej cząstki, kreacji, anihilacji, powstają dwa równolegle, to od wielkiego wybuchu powstałoby continuum (w sensie liczności zbiorów) wszechświatów. Pytanie czy pojemnik na te wszechświaty ma nieograniczoną objętość. Jeśli założymy, że z jednego wszechświata powstają dwa w momencie tyknięcia zegara (czas jest skwantowany, a nie ciągły) to wyjdzie nam trochę mniej wszechświatów do chwili obecnej, ale nadal pojemnik musi być nieskończony. Wydłużenie kwantu czas pomiędzy kolejnymi momentami klonowania się wszechświata powyżej czasu życia dowolnego organizmu podlegającego ewolucji jest sprzeczne z założeniem teorii ewolucji, że mamy do czynienia z iteracyjnym wbudowanym procesem, gdzie w każdej iteracji pojawia się permutacja, który jest cechą wszechświata - a nie organizmu żywego. Innymi słowy: czas pojedynczej iteracji procesu ewolucji dla wszechświata nie może być większy niż dla organizmu żywego. Jeżeli teraz kwant ewolucji wszechświata tożsamy jest z kwantem czasu, to pojemnik na wszechświaty musiałby mieć nieskończoną pojemność - jeśli nasz wszechświat jest skończony to założenie to jest raczej błędne. Przyjmijmy, że pojemnik jest skończony, wtedy pewne wszechświaty powinny być eliminowane, żeby zrobić miejsce dla innych - tak jak dzieje się to w ewolucji organizmów żywych - przetrwają osobniki najlepiej przystosowane. Jeśli pojemnik jest skończony, kwant ewolucji wszechświata równy kwantowi czasu i pewne wszechświaty umierają to wszechświat, w którym żyjemy jest paradoksem ze względu na swój czas życia.

Jakby nie kombinować, to wychodzi nam inteligentny projekt. Jeśli w tematyce, w której na co dzień porusza się Hawking spróbujemy użyć metody 5x dlaczego, to utkniemy. Barierą jest ludzkie poznanie i rozum. Szukamy ciągle pierwotnej przyczyny wszystkiego. Dlaczego ja istnieję? Chyba jedyna sensowna odpowiedź to: dlatego, że istnieje twórca inteligentnego projektu.

'Bóg, który stworzył świat i wszystko na nim, On, który jest Panem nieba i ziemi, nie mieszka w świątyniach zbudowanych ręką ludzką i nie odbiera posługi z rąk ludzkich, jak gdyby czegoś potrzebował, bo sam daje wszystkim życie i oddech, i wszystko. On z jednego [człowieka] wyprowadził cały rodzaj ludzki, aby zamieszkiwał całą powierzchnię ziemi. Określił właściwe czasy i granice ich zamieszkania, aby szukali Boga, czy nie znajdą Go niejako po omacku. Bo w rzeczywistości jest On niedaleko od każdego z nas. Bo w Nim żyjemy, poruszamy się i jesteśmy (...).' Dzieje Apostolskie 17, 24-28.

Prof. Michał Heller jest zwolennikiem kreacjonizmu ewolucyjnego.

sobota, stycznia 07, 2012

Gdy nie ma laptopa

Gdy nie ma laptopa, a siedzenie przy biurku staje się niewygodne:



Rzutnik Sony VPL-EX1 + nettop Acer Aspire Revo z radiową klawiaturą i myszką + 10 metrów kabla VGA. Wychodzi fajny komputer z ekranem 42-46 cali.

Rozdzielczość 1152x864 wydaje się być optymalna. Ściana jest brzoskwiniowa, a wychodzi na niej ciepły biały.

Na laptopa warto poczekać do maja - powinien być wysyp ultrabooków z nowymi niskonapięciowymi procesorami Intela Core i5-3xxx 22nm.

piątek, stycznia 06, 2012

Jak zaczyna się kryzys

Kolorowe reklamy z ładną muzyką. Ładni i uśmięchnięci ludzie. Szczęśliwi, bo mogą coś mieć. Ty nie jesteś od nich gorszy, też musisz to mieć. Sąsiad Kowalski nie może być od Ciebie lepszy. Żeby być szczęśliwym też musisz posiadać, być konsumentem. Za wszelką cenę. Ty jesteś wyjątkowy i na to zasłużyłeś, inni ludzie się nie liczą. Piękny wymarzony amerykański dom, właściwie willa. Samochód, wakacje, odpowiednia do twojego poziomu społecznego żona. Żeby być trzeba mieć. Jedni się zadłużają, a drudzy bogacą się na tych pierwszych. No i władza - dla niej można obiecać ludziom wszystko. Można czarować rzeczywistość, wmawiać ludziom, że nadszedł ich czas - dzięki tym, których teraz wybierają. Ubrudzoną prawdą staje się odpowiednio długo i systematycznie podawany PR. Nikomu nie wstyd za tę ubrudzoną prawdę. Kryzys zaczyna się od kryzysu moralnego. Umiarkowanie jest cnotą.

Życzenia polityków

Druga Japonia, druga Irlandia, drugi Budapeszt. Forint i złotówka lecą na łeb, na szyję.

czwartek, stycznia 05, 2012

Opis tabelek TDI

CREATE TABLE "TDI"."EVENTS_TABLE"
  (
    "ID"      NUMBER(*,0), -- identyfikator z sekwencji
                           -- ustawiany przez trigger
    "VERSION" NUMBER(*,0), -- kolumna pod Grailsy
    "HOST"    VARCHAR2(200 BYTE), -- maszyna z agentem
    "REPO"    VARCHAR2(200 BYTE), -- nazwa repozytorium
                                  -- Tibco BW
    "PROC"    VARCHAR2(2000 BYTE), -- nazwa procesu BW
    "CR"      NUMBER(*,0), -- ilość stworzonych procesów
                           -- danego typu od momentu
                           -- startu instancji BW
    "FN"      NUMBER(*,0), -- ilość zakończonych
                           -- procesów danego typu
                           -- od momentu startu 
                           -- instancji BW
    "RN"      NUMBER(*,0), -- ilość aktualnie
                           -- działających procesów
                           -- danego typu
    "FL"      NUMBER(*,0), -- FlowLimit dla danego
                           -- typu procesu
    "TC"      NUMBER(*,0), -- Engine.ThreadCount
    "ST"      NUMBER(*,0), -- czas startu procesu
    "D"       NUMBER(*,0), -- opóźnienie w starcie
                           -- procesu na silniku BW
    "EN"      NUMBER(*,0), -- czas zakończenia procesu
    "WT"      NUMBER(*,0), -- sumaryczny czas spania procesu
    "EC"      NUMBER(*,0), -- error count
    "TYPE"    VARCHAR2(200 BYTE), -- typ komunikatu: 
                                  -- stats, ping, error
    "JTS"     NUMBER(*,0), -- JMSTimestamp jeśli 
                           -- aktywność JMS startuje proces
    "JEXP"    NUMBER(*,0), -- JMSExpiration
    "JDC"     NUMBER(*,0), -- JMSXDeliveryCount
    "METRICS" CLOB, -- pozostałe metryki JMS, WS, inne
    "EM" CLOB, -- error messages
    "ST3M"  NUMBER(*,0), -- czas startu podzielony przez 3m
    "ST30M" NUMBER(*,0), -- czas startu podzielony przez 30m
    "ST4H"  NUMBER(*,0), -- czas startu podzielony przez 4h
    "ST1D"  NUMBER(*,0), -- czas startu podzielony przez 1d
    "MARKERS_DEFS" CLOB, -- definicje markerów (pole wypełniane
                         -- tylko raz, na starcie)
    "MARKERS" CLOB, -- wartości dla markerów
    "MARKERS_MSGS" CLOB, -- całe komunikaty, których
                         -- wybrane pole pasuje do markera
    "MK1" VARCHAR2(2000 BYTE), -- wartość markera 1
    "MK2" VARCHAR2(2000 BYTE), -- wartość markera 2
    "MK3" VARCHAR2(2000 BYTE), -- wartość markera 3
    "MK4" VARCHAR2(2000 BYTE), -- wartość markera 4
    "MK5" VARCHAR2(2000 BYTE), -- wartość markera 5
    "MK6" VARCHAR2(2000 BYTE), -- wartość markera 6
)

CREATE TABLE "TDI"."USAGE_TABLE"
  (
    "ID"      NUMBER(*,0), -- identyfikator z sekwencji
                           -- ustawiany przez trigger
    "VERSION" NUMBER(*,0), -- kolumna pod Grailsy
    "HOST"    VARCHAR2(200 BYTE), -- maszyna z agentem
    "REPO"    VARCHAR2(200 BYTE), -- nazwa repozytorium BW
    "CPU" FLOAT(63), -- zużycie CPU w procentach
    "MEM" FLOAT(63), -- zużycie pamięci w procentach
    "GC" FLOAT(63), -- zużycie CPU przez Garbage Collector
                    -- w procentach
    "ST"    NUMBER(*,0), -- czas zdarzenia pomiaru 
    "ST3M"  NUMBER(*,0), -- czas zdarzenia pomiaru 
                         -- podzielony przez 3m
    "ST30M" NUMBER(*,0), -- czas zdarzenia pomiaru
                         -- podzielony przez 30m
    "ST4H"  NUMBER(*,0), -- czas zdarzenia pomiaru
                         -- podzielony przez 4h
    "ST1D"  NUMBER(*,0) -- czas zdarzenia pomiaru
                        -- podzielony przez 1d
)

niedziela, stycznia 01, 2012

Była chmura, nie ma chmury

Przykład pokazuje, że należy ostrożnie podchodzić do usług w chmurze.

2012 - Kiedy będzie lepiej? Już było

W nowym roku druga tura wzrostu VAT-u. Mamy inflację napędzaną cenami paliwa - każdy towar trzeba dowieźć. Jeśli do tej pory nie było wzrostu cen biletów komunikacji, to będą. Mamy wzrost cen leków i rozdmuchaną do granic absurdu biurokrację związaną z ich refundacją (lekarz ma odpowiadać finansowo za błędnie podaną stawkę refundacyjną przepisywanego na recepcie leku). Mamy wzrost stawki rentowej po stronie pracodawcy - zapomnijmy o podwyżkach pensji. Wzrastają ceny energii. KRRiT chce, żeby abonament płacił każdy posiadacz komputera. Przy wysokich kursach euro i funta ludzie znowu będą wyjeżdżać za granicę za pracą. No, ale Bronek w telewizji mówił, że mamy dobry rząd, wybitnych fachowców, gospodarka idzie do przodu, a ludziom żyje się coraz lepiej. Może jednak takie oszukiwanie ludzi/zaklinanie rzeczywistości jest potrzebne - wpływa na pozytywne nastroje konsumenckie, a te na popyt wewnętrzny i wzrost gospodarczy.