Rejs po Zatoce Gdańskiej

W terminie 20.09 - 27.09 odbyliśmy rejs na pokładzie S/Y Kacyk. Jacht przeznaczony jest dla pięciu osób ale my pływaliśmy tylko w trzy, przez co mieliśmy całkiem komfortowe warunki jak na niezbyt dużą jednostkę (9,15m).

Gdańsk - Twierdza Wisłoujście

Rejs rozpoczęliśmy i zakończyliśmy w “marinie” przy Twierdzy Wisłoujście. Miejsce to jest na tyle oddalone od Gdańska, że niektórzy taksówkarze i dyspozytorzy mieli problem z jego lokalizacją. Zaplecze “mariny” jest dosyć minimalistyczne, sanitariaty prawie nie istnieją, brak jakiejkolwiek sklepu, w którym możnaby się zaopatrzyć w produkty spożywcze. Nie byliśmy na to przygotowani dlatego zaraz po odebraniu jacht wyruszyliśmy w kierunku Gdyni.

Gdynia

Marina jachtowa jest zlokalizowana bardzo blisko atrakcji turystycznych i centrum. Wszystko dobrze zorganizowane, zaplecze w porządku.

Puck

Przystań w Pucku jest już chyba całkiem zapomniana a przynajmniej tak wygląda. Bosmana po 16-tej trudno znaleźć a sanitariaty dostępne są tylko w godzinach “urzędowania”. Gdy już rano udało nam się skorzystać z pryszniców, nie było to zbytnio przyjemne doświadczenie. Prysznice uruchamiane są przez psujące się automaty, które przyjmują tylko pojedyncze “złotówki”. Czas działania był bardzo krótki a woda lodowata. Na kei, przy której cumowaliśmy “alongside”, działa tylko jeden punkt z prądem więc żeby się podpiąć trzeba się było dobrze ustawić albo posiadać odpowiednio długi przedłużacz - niestety nie spełniliśmy żadnego z tych warunków dlatego tego wieczora musieliśmy oszczędnie gospodarować energią elektryczną.

Jastarnia

Bardzo przyjemna marina, odnowiona ze środków Unii Europejskiej. Łatwy dostęp do prądu ale trzeba posiadać wąż aby nabrać słodkiej wody. Sanitariaty w porządku, ciepła woda po prysznicem (coś czego bardzo mi brakowało po wizycie w Pucku). Wyjątkowym dziwactwem była specjalna opłata za skorzystanie z WC, połowa ceny za skorzystanie z prysznica. Domyślam się, że przystań wykonuje biznesplan inwestycji unijnej ale w sytuacji gdy opłata za postój nie odbiega od standardowej, dodatkowe “opodatkowanie” korzystania z toalety wydaję się lekką przesadą.

W Jastarni przeczekiwaliśmy ostrzeżenia o sztormie na Bałtyku i wybraliśmy się na wycieczkę busem do Helu. Zdarzyliśmy na karmienie podopiecznych fokarium i wspieliśmy się na latarnię morską.

Władysławowo

Prawdziwie morski port rybacki gdzie przystań jachtowa jest tylko dodatkiem. Od czasu do czasu przypływały kutry i wyładowywały połów.

Marina mała ale całkiem przyjemna, zaplecze w porządku. Popełniliśmy małą gafę próbując dokonać opłaty za port w bosmanacie. Okazało się, że trzeba poczekać na osobę zbierającą takie opłaty.

Hel

Marina w Helu powstała jako część portu rybackiego. Tutaj jednak nie znaleźliśmy spokoju, zafalowanie wewnątrz portu nie pozwalało w nocy w pełni odpocząć. Niestety znalazł się kolejny absurd - po godzinie 23 toalety są zamykane.

Będąc w Helu udaliśmy się z wizytą do pubu Kapitan Morgan. Ku naszej radości po około pół godziny okazało się, że pojawi się szantyman i będziemy mogli trochę pośpiewać. Śpiewniki były dostępne w barze, szantyman śpiewał i grał utwory na żądanie a większość sali pomagała.

Gdańsk - centrum

Ładna marina w samym centrum. Warunki postoju są bardzo dobre a bliskość centrum daje możliwość korzystania z atrakcji także w nocy. Jedyny minus to odległość jaką trzeba pokonać Martwą Wisła aby tam dotrzeć. Daje to jednak możliwość zobaczenia zaplecza portu, nabrzeży różnych funkcji czy stoczni remontowej.

Legos for the iPad Generation

Bloomberg:

littleBits Founder Ayah Bdeir discusses her opensource library of electronic modules that snap together with tiny magnets for prototyping and play.

This is awesome.

Never Make Counter-Offers

Bram Cohen:

Management figures they’ll save money on salaries by leaving it up to the employees to negotiate for their own pay. So they don’t give raises until someone tries to negotiate for one.

Why would you want to work at ThoughtWorks

Aaron Erickson:

In many companies, particularly consulting companies, salespeople call the shots, have most of the respect, and take home most of the rewards. Delivery – the “programmers”, are the people who are to be managed, paid as little as possible, and controlled by management.

Konwersja czasu do liczby sekund w Excelu

Aby skonwertować czas do liczby sekund w Excelu należy wartość komórki z czasem przemnożyć przez liczbę sekund w dobie (86400).

Times are stored internally by Excel as fractions of a 24-hour day, so that 12:00:00 would be stored as 0.5 and 18:00:00 as 0.75. Consequently, to convert a time to seconds, you must multiply by the number of seconds in a day - it is easier to remember this as *24*60*60 rather than the actual number (86400).

Weryfikacja na etapie kompilacji nazw właściwości wykorzystywanych w Windows Forms Data Binding

Kontrolki wizualne w technologii Windows Forms pozwalają tworzyć powiązanie pomiędzy właściwością kontrolki a właściwością obiektu będącego źródłem danych dla tej kontrolki.

class MyTextBox : TextBox
{
  public void Bind(object obj, string dataMember)
  {
    DataBindings.Add(new Binding("Text", obj, dataMember));
  }
}

Takie rozwiązanie działa bez zarzutu jednak ma pewną wadę – nazwa właściwości źródła danych przekazywana jest jako łańcuch znaków. Powoduje to sytuację, w której poprawność tego powiązania zweryfikujemy dopiero po uruchomieniu programu chociaż chciałoby się aby było to już na etapie kompilacji. Aby osiągnąć mój cel postanowiłem skorzystać z możliwości jakie oferują wyrażenia lambda w ramach języka C#.

class MyTextBox1 : TextBox
{
  public void Bind<T>(T obj, Expression<Func<T, object>> dataMemberExpr)
  {
    string dataMember = GetDataMember(dataMemberExpr);
    DataBindings.Add(new Binding("Text", obj, dataMember));
  }

  private string GetDataMember(Expression<Func<T, object>> dataMemberExpr)
  {
    LambdaExpression expr = dataMemberExpr;
    Expression node = expr.Body;
    MemberExpression memberExpr = (MemberExpression)node;
    return memberExpr.Member.Name;
  }
}

Aby stworzyć powiązanie należy wywołać metodę Bind w następujący sposób:

class Person
{
  public string Name { get; set; }
}

Person p = new Person { Name = "Bob" };

MyTextBox1 myTextBox1 = new MyTextBox1();
myTextBox1.Bind(p, x => x.Name);

Tworzenie aplikacji Ruby on Rails z użyciem Passenger

Chciałem wykorzystać Phusion Passenger podczas tworzenia aplikacji Ruby on Rails. Konieczne w tym celu było aktywowanie środowiska development. Niestety opcja RailsEnv nie skutkowała pożądanym zachowaniem. Ostatecznie należało ustawić opcję RackEnv (jak w przykładowej konfiguracji zamieszczonej poniżej).

<VirtualHost *:80>
  ServerName app.local
  DocumentRoot "/path/to/your/app/public"
  RackEnv "development"
  <Directory "/path/to/your/app/public">
    Allow from all
    Options -MultiViews
  </Directory>
</VirtualHost>