[Solved] How to run each MiniTest::Spec in a transaction?

How to run each MiniTest::Spec in a transaction rolled-back upon finish? Simply add this to your test_helper.rb after requiring minitest/autorun:


# Monkey patch to ensure each test is run in a rolled back transaction
class MiniTest::Spec

  def run( *args, &block )
    value = nil

    begin
      ActiveRecord::Base.connection.transaction do
        value = super
        raise ActiveRecord::Rollback
      end
    rescue ActiveRecord::Rollback
    end

    return value  # The result of run must be always returned for the pretty dots to show up
  end

end
Posted in english, programowanie, rails, ruby, technologia | Leave a comment

[Solved] How to auto connect to a VPN on startup in Ubuntu 11.10?

How to automatically connect to a VPN on startup (login) in Ubuntu 11.10 (oneiric ocelot)?

What did NOT work

  • Option “connect automatically” in the Network Manager VPN configuration. This option has never worked, the bug is open for over 3 years and there seem to be no hope for the official fix.
  • The vpnautoconnect daemon does not work in my particular case. As of time of writing there is no deb package for Ubuntu 11.10 amd64. Source code version seems to have messy / inconvenient dependencies I was not eager to fulfill.

What DID work

I solved the problem using /etc/network/if-up.d/ hooks. Scripts in this dir are executed whenever any network interface is up, so it is (probably) the right place to (try to) start a VPN connection.

Here is the script to put in the aforementioned directory. Script name doesn’t matter:

#! /bin/bash

REQUIRED_CONNECTION_NAME="singularity"      # change singularity to your network connection name
VPN_CONNECTION_NAME="airvpn"                # change airvpn to your VPN connection name

activ_con=$(nmcli con status | grep "${REQUIRED_CONNECTION_NAME}")
activ_vpn=$(nmcli con status | grep "${VPN_CONNECTION_NAME}")
if [ "${activ_con}" -a ! "${activ_vpn}" ];
then
    nmcli con up id "${VPN_CONNECTION_NAME}"
fi

The “singularity” is a name of my wifi connection and “airvpn” is a name of the VPN connection. Replace them with yours (visible in the Network Manager widget).

Add execution permission (i.e. chmod +x /etc/network/if-up.d/connect-to-vpn where connect-to-vpn is the name of the script).

That’s all. Test it by turning off and on your network connection. VPN should now connect automatically.

Posted in english, programowanie, technologia | 3 Comments

Rails partials: nigdy nie wołaj render() w pętli

Wołanie <%= render(…) %> w pętli jest straszliwie niewydajne bo railsy owijają każde wywołanie rendera w benchmark(). ZTCW nie da się tego wyłączyć. Problem jest zauważalny już przy 10-20 powtórzeniach. Przy długich listach itemów, liczących np. 100 pozycji, jest to już prawdziwy horror – renderowanie ponad 1s.

Wydajna alternatywa:

<%= render @collection %>

np.

<%= render @users %>

W powyższym railsy dla każdego obiektu z listy @users sprawdzą nazwę modelu (User) i wyrenderują partial _user.html.* (konwencja). Benchmark zostanie wywołany tylko raz, stąd radykalna poprawa wydajności.

Posted in polskie, programowanie, rails, ruby, technologia | 3 Comments

Kantor Bitcoin PLN

(Aktualizacja 13 listopada 2011). Gdzie można kupić / sprzedać Bitcoiny za złotówki? Poniżej zamieszczam listę miejsc umożliwiających handel walutą Bitcoin (BTC) w polskich realiach:

(Disclaimer: pamiętaj, że Bitcoin to technologia cutting edge a towarzysząca mu infrastruktura jest niedojrzała. Z każdej usługi korzystasz na własną odpowiedzialność. Bądź ostrożny!)

Powyższe “kantory” działają na zasadzie walutomatu – są tylko platformami, na których użytkownicy handlują między sobą. Jednak powszechnie przyjęło określać je jako “kantory Bitcoin”, więc w dalszej części artykułu będę stosował tę terminologię.

Intersango to kantor prowadzony przez renomowane Bitcoin Consultancy. To jedyny kantor na świecie, który tworzą (niektórzy) programiści samego Bitcoina. Kantor cieszy się nieposzlakowaną opinią i ma obecnie charakter non-profit. Szczęśliwym zbiegiem okoliczności Bitcoin Consultancy ma siedzibę w Warszawie, choć w teamie chyba nie ma ani jednego Polaka. Intersango niedawno założyło konto w BZWBK i uruchomiło rynek wymiany PLN z krajowymi, bezpłatnymi wpłatami i wypłatami złotówek. Naturalnie, kilka dni po starcie (piszę to 13-ego listopada 2011) rynek jest płytki, ale udało mi się już korzystnie przeprowadzić transakcje rzędu kilkuset BTC.

BitMarket to solidny kantor polskiej produkcji, skupiający się co prawda na obsłudze waluty EURO, ale obsługujący również rynek polski. Jest unikalny pod tym względem, że nie przyjmuje depozytów w żadnej walucie prócz Bitcoin – przelewy walut fiat użytkownicy robią między sobą, co oczywiście rodzi ryzyko oszustwa, na które sam kantor nie ma wpływu. BitMarket wymaga weryfikacji tożsamości (np. przez Allegro) aby ograniczyć ryzyko oszustwa. Kantor jest bezpłatny.

Giełda ofert na polskim forum Bitcoin to kolejny skuteczny sposób zakupu bądź sprzedaży Bitcoina. Każdy może bezpłatnie zamieścić ofertę skupu/sprzedaży BTC. Niektórzy zaufani członkowie społeczności (np. Prze_koles, Kimono) oferują możliwość pośrednictwa w transakcjach lub zakładach, co praktycznie eliminuje ryzyko oszustwa.

Mt. Gox PLN to polski rynek na największym światowym kantorze Bitcoin. “Największym” niestety nie znaczy najlepszym. Mt Gox ma wiecznie jakieś problemy z wpłatami i wypłatami. Możliwe są b. duże opóźnienia oraz wymóg udowodnienia tożsamości przed wypłatą większych środków. Mt. Gox w przeszłości padł ofiarą poważnego ataku hackerskiego. Wyciekła tabela użytkowników i kantor był niedostępny przez kilka tygodni. Ostatecznie (niemal) wszyscy odzyskali swoje środki. No właśnie – _niemal_ wszyscy. Potem było też kilka mniejszych fuckupów (jakieś anomalie z transakcjami itp).

Z drugiej strony Mt. Gox uratował polskich użytkowników Bitomatu, zwracając wszystkim Bitcoiny utracone przez Bartłomieja Szabata. Co więcej, jest to chyba jedyny naprawdę dochodowy kantor Bitcoin na świecie. Mt. Gox toczy batalię prawną o “legalizację” Bitcoina we Francji. Dlatego bardzo ciężko ich jednoznacznie ocenić. Wydaje się, że zespół Mt. Gox ma czyste intencje, ale gra niezwykle ryzykownie i odbija się to na użytkownikach.

Notki historyczne

Kiedyś istniał jeszcze kantor “Bitomat”, ale stracił wszystkie Bitcoiny użytkowników – łącznie kilkanaście tysięcy BTC – w wyniku niekompetencji i nieodpowiedzialności właściciela, Bartłomieja Szabata. Bitomat był pierwszym polskim kantorem BTC i w chwili chwały miał wielu fanów. Niewątpliwie Bitomat przyczynił się do początkowej popularyzacji Bitcoina w Polsce.

Na fali upadku Bitomatu powstały dwa nowe kantory: FreshBTC i Bitchange.pl. Ten pierwszy został natychmiast “zakopany” przez społeczność ze względu na bardzo liczne błędy i niesolidne wykonanie (do czego sam się zresztą mocno przyczyniłem wyprowadzając kilkaset złotych w ramach eksperymentu (zostały zwrócone)). Drugi z nich, Bitchange.pl, choć nie był całkiem pozbawiony błędów, zyskał sympatię społeczności  i rozkwitał. Niestety właściciel postanowił zamknąć kantor ze względu na nieuregulowaną sytuację prawną Bitcoina w Polsce i potencjalne problemy. W swojej krótkiej historii Bitchange nigdy nie stracił pieniędzy użytkowników i nie doświadczył żadnej poważnej awarii.

Posted in bitcoin, polskie, technologia | 1 Comment

Przyjmowanie płatności Bitcoin – beta

Już wkrótce przyjmowanie płatności w wirtualnej walucie Bitcoin (BTC) stanie się równie łatwe jak płatności w złotówkach. Nowa usługa BitcoinNotify.com oferuje powiadomienia o płatnościach Bitcoin dla sklepów, aplikacji i osób przyjmujących donacje.

Jak to działa? Aplikacja (np. sklep internetowy) otrzyma powiadomienie HTTP o każdym wpływie pieniędzy na swoje konto (adres Bitcoin). Co ważne, Bitcoiny idą od klienta bezpośrednio na konto sklepu. Nigdy nie przechodzą przez konto pośrednika. Odpada zatem problem zaufania.

Jest to możliwe, ponieważ wszystkie transakcje w sieci Bitcoin są publiczne. Usługa BitcoinNotify.com monitoruje publiczną sieć p2p i wyłapuje transakcje na określone konta.

Aplikacja jest dostępna wyłącznie na zaproszenia. Niniejszym rozdaję pewną pulę zaproszeń: 6gzFRurl9x (invitation code) – kto pierwszy, ten lepszy.

Aplikacja oferuje także powiadomienia o zmianach kursu, co pozwala na bieżąco aktualizować ceny BTC w sklepie.

Obecnie usługa jest całkowicie bezpłatna. Chwyć zaproszenie i zacznij obsługiwać płatności Bitcoin w swojej aplikacji, zanim zrobią to inni. Dwa pierwsze polskie sklepy przyjmujące płatności Bitcoin były już prezentowane w telewizji i na głównej Wykopu.

PS Kącik programistów: aplikacja napisana jest w całości w Ruby i Railsach – łącznie z monitoringiem sieci Bitcoin. Stoi na Ubuntu Server LTS. Chętnie opowiem o wszelkich technikaliach, również od strony bezpieczeństwa i niezawodności usługi.

Posted in bitcoin, polskie, programowanie, rails, ruby, technologia | 8 Comments

Laptopy po cenach niemal fabrycznych – dojście

Przed moim niedawnym zakupem laptopa przetrząsnąłem pół Internetu w poszukianiu najniższych cen na porządne laptopy (nie tam jakieś Acery).

Znalazłem ludzi, którzy mają dostęp do amerykańskich, fabrycznych cen na wybrane modele laptopów.  Continue reading

Posted in apple, lifestyle, polskie, programowanie, technologia | Leave a comment

Jak tanio i bezpiecznie sprowadzić ThinkPada ze Stanów?

Niedawno pisałem, dlaczego wybrałem ThinkPada. Dziś napiszę, jak tanio i bezpiecznie sprowadzić takie cudo ze Stanów.

Kilka tygodni temu przewaliłem 1/3 ebaya i pół allegro w poszukiwaniu najtańszego sposobu na nabycie Lenovo ThinkPada T520. Zdecydowanie najlepsze ceny na ThinkPady różnej maści miała niejaka “Siwunia6” z allegro. Patrzę – ponad 100 pozytywów i 0 negatywów. Rzuciłem się więc do wertowania treści komentarzy, bo jak wiadomo, łatwo nałapać pozytywów na sprzedaży duperel, żeby później odwinąć jakiś szwindel. Okazało się, że znaczna część komentarzy wprost komentuje zakup laptopa. Zresztą innego asortymentu Siwunia6 w sprzedaży nie posiada. Z logów wynikało, że sprzedawca niezawodnie sprowadził ze Stanów około 100 laptopów na przestrzeni 3 lat. To już budzi jakieś zaufanie. Wymieniłem ze sprzedawcą kilka maili i zdecydowałem się zaryzykować, przedpłacając ok. 4000PLN.

Laptopa miałem otrzymać po około 4 tygodniach, uzbroiłem się więc w cierpliwość. Sprzedawca z własnej inicjatywy informował o kolejnych etapach realizacji zamówienia, co napawało mnie nadzieją, że sprzęt faktycznie ujrzę ;-)

Sprzęt przyszedł farciarsko szybko – dostałem go już po 23 dniach od zakupu. Wszystko zgodne z zamówieniem, laptop oczywiście nowy. Osobiście odbierałem ThinkPada w warszawskiej Galerii Mokotów w ogródku restauracyjnym, po dokładnym sprawdzeniu sprzętu i faktury. Mucha nie siadała :-)

Podsumowując – bardzo udany zakup, trudno nie rekomendować takiego sprzedawcy. Niemniej, przy tego rodzaju zakupach (nawet u “Siwuni6″) zawsze pamiętaj o przeczytaniu kilkudziesięciu ostatnich komentarzy na allegro i solidnym googlowaniu sprzedających (po nicku, nazwisku, emailu, telefonie itp). Jeśli ktokolwiek zostanie oszukany, zapewne napisze o tym gdzieś w sieci.

Ekipa: Dariusz Dziadkiewicz (DD, ddzi2745@hotmail.com, głównodowodzący interesem), Jacek Pyrka (firma Jac-Mil Jacek Pyrka NIP 716-125-94-68, jacekpyrka@wp.pl, polski reprezentant), Agata Siwiec (Siwunia6).

Polecam.

Posted in lifestyle, polskie, programowanie, technologia | 7 Comments

Sprzedam okazyjnie Della Latitude D520

W związku z nabyciem nowego ThinkPada mam do sprzedania mojego wysłużonego, niezawodnego Della Latitude D520. Solidna biznesowa seria Latitude rzeczywiście wytrzymała próbę czasu: po 4 latach laptop wciąż działa niemal jak nowy. Służył głównie w domowym zaciszu, noszony sporadycznie na konferencje i prezentacje.

Cena: 550zł

Procesor Intel Core Duo 1.66Ghz
Liczba rdzeni 2
RAM 3GB (DDR2, 667Mhz, Kingstone)
HDD 80GB 7200 RPM (SATA, oryginalny Hitachi)
Matryca 15″, 1024×768, matowa
System operacyjny Windows XP Home SP2 (oryginalny nośnik i sticker licencyjny, system zainstalowany ze wszystkimi aktualizacjami, gotowy do pracy)
Chipset Mobile Intel 945GM Express
Grafika Intel GMA 950 Dynamic Video Memory Technology 3.0 (zintegrowana, max 128MB)
Inne WiFi, 1394 FireWire, PCMCIA Slot (supports ExpressCard/34), Infrared, Headphone, Microphone, 4xUSB 2.0, 56k Modem, 10/100 LAN, S-Video Out, VGA Out
Dostawa Dostarczę osobiście na terenie Warszawy i okolic – możliwość sprawdzenia przed zakupem. Inne rejony Polski: do ceny należy doliczyć koszt przesyłki kurierskiej, no i fizycznie nie ma możliwości osobistego przetestowania przed zakupem.
Stan Dobry, niewielkie ślady użycia. Komputer gotowy do pracy: zainstalowany oryginalny Windows, wszystkie sterowniki i aktualizacje.
Znane problemy Praktycznie w każdym mocniej używanym laptopie występują jakieś ukryte, niepublikowane na allegro “issues”. Nieinaczej jest z moim Dellem. Wiem o następujących problemach:

  • WiFi sporadycznie nie chce się załączyć, należy liczyć się z całkowitym padem w przyszłości. Rozwiązaniem jest wymiana (łatwa bez rozbierania laptopa) lub karta WiFi na USB (która przy okazji będzie miała silniejszy sygnał).
  • Bateria wytrzymuje około 1h.
  • Matryca – co oczywiste – nie jest tak jasna jak w nowym sprzęcie. Jak każda matryca, po latach ulega w pewnym stopniu “wypaleniu” i świeci słabiej. Wspominam o tym dla formalności: nie przeszkadzało mi to spędzać w weekendy przed laptopem 14-16h dziennie :-)
  • Jedna z 5 “nóżek” pozbawiona jest gumy. Mimo to laptop stoi stabilnie.

Na allegro podobne konfiguracje zaczynają się od ok. 700zł. Wydaje mi się, że za kwotę 550zł jest to świetna kombinacja wydajności i solidności. Dysk 7200RPM i 3GB RAM dają radę – w końcu to były komputer programisty ;) Laptop był kupiony w Szwajcarii bezpośrednio od Della (kilka lat temu miałem okazję mieszkać i pracować w rejonie Genewy). Polecam!

Na marginesie, laptop świetnie współpracuje z Ubuntu. Dell jest zresztą partnerem Canonical.

Zapraszam do kontaktu: tel. 694-797-487, qertoip@gmail.com

PS Kto pierwszy, ten lepszy.

Posted in apple, clojure, css, git, ipad, iphone, javascript, lifestyle, polskie, programowanie, technologia | 7 Comments

Przyszłość bankowości elektronicznej 2011

Jakich zmian możemy spodziewać się w bankowości elektronicznej w najbliższych 5-10-15 latach? “Przyszłość bankowości elektronicznej. Personal Finance Management” to prezentacja, którą wygłosiłem na zjeździe Związku Banków Polskich w Ostródzie 12 maja 2011.

Zainteresowanych zapraszam do zapoznania się.

Słowa kluczowe: PFM, Personal Finance Management, bankowość elektroniczna, bankowość internetowa. Dostępne też na slideshare.

Posted in lifestyle, polskie, technologia | 2 Comments

In place editing with Datepicker

I’ve released jeditable-datepicker. It allows you to combine in place editing with jQuery UI Datepicker.

jeditable-datepicker is based on Jeditable (the finest in place editing jQuery plugin) and jQuery UI Datepicker (the most popular jQuery callendar widget).

See the demo and clone github repo.

The usage is as simple as:

$( '.editable' ).editable( {
  type: 'datepicker'
} );

Feel free to drop me line if you find jeditable-datepicker useful.

Posted in english, javascript, programowanie, technologia | 1 Comment