niedziela, 3 kwietnia 2011

Jak w JavaScript przenieść się na inną stronę

Ciągle zapominam tę komendę i tę składnię, postanowiłem więc to sobie zapisać:
window.location.href = 'http://piszemyprogramy.pl';
JavaScript napotykając taką frazę przeniesie nas na naszą ulubioną stronę http://piszemyprogramy.pl

Fragmentu adresu

Często się zdarza, że potrzebuję z adresu wymontować jego fragment. Zamiast się męczyć z wyrażeniami regularnymi można to zrobić tak:
window.location.host : dostaniesz sub.domain.com:8080 lub sub.domain.com:80
window.location.hostname : dostaniesz sub.domain.com
window.location.protocol : dostaniesz http:
window.location.port : dostaniesz 8080 lub 80
window.location.origin : dostaniesz http://sub.domain.com
window.location.pathname : dostaniesz (na przykład) orders/index


Jak zamieścić ikonkę facebooka "Lubię.to" na swojej stronie

Wejdź po prostu na:
http://developers.facebook.com/docs/reference/plugins/like/
W pole "URL to Like (?)" wpisz adres swojej strony i kliknij przycisk "Get Code".
Wklej pobrany kod na swojej stronce. Działa.


Rails autocomplete - uruchamianie akcji po kliknięciu

     Pomiędzy tysiącami dodatków do Ruby on Rails znajduje się kilka, z których korzystamy praktycznie zawsze. Jednym z nich jest "autocomplete". Umożliwia on dynamicznie uzupełnianie zawartości pola tekstowego treścią z bazy danych. Użyteczne, proste w obsłudze i łatwo implementowalne w programie.
Przy czym stwierdzenie "łatwo implementowalne" dałem tak troszkę na wyrost. Pierwsze schody już na samym początku: dokumentacja. Na stronie pluginu otrzymujemy przykład prostej konfiguracji i linki do szczegółowej dokumentacji. Radość? Przedwczesna! Ta prosta konfiguracja opisywana na stronie jest o tyle szybko implementowalna, o ile nigdy nie wystarczająca do Twojego projektu, który akurat piszesz. Natychmiast więc klikasz w linki aby uzyskać szczegóły API, przykłady kodu i inne tego typu, wydawało by się, duperele. Co się okazuje? Linki prowadzą na strony scriptaculous, które nie tylko, że niczego nie rozwiązują, to jeszcze wstydliwie się rozjeżdżają. Jeśli nie wiesz o czym piszę, to kliknij sobie tam na te linki. Wstyd? Mi też się tak wydaje. Nie podaję więc ich tutaj. Podaję zaś link do działającej dokumentacji scriptaculous. Nie pytaj mnie dlaczego tak jest? Nie wiem. Tysiące programistów pytających się o to samo w sieci też nie wie. Cisną się na usta epitety :-) ale nie z takimi rzeczami dawaliśmy radę :-)

czwartek, 31 marca 2011

Stronicowanie w Ruby on Rails - najpopularniejsze opcje

Mowa oczywiście o pluginie do Ruby on Rails o nazwie will_paginate.

Aby go zainstalować z konsoli zawołaj:
gem install will_paginate
potem do
/config/environment.rb
wpisz
config.gem 'will_paginate', :version => '~> 2.3.15'
przy czym uwaga! :version => '~> 2.3.15' nie tyczy się wersji rails, tylko wersji tego plugina!

Opcje wyświetlania:
  • :previous_label — domyślnie: "« Previous", nazwa linka do poprzedniej strony
  • :next_label — domyślnie: "Next »" , nazwa linka do następnej strony
  • :page_links — kiedy jest to false, tylko poprzedni/następny link jest renderowany (domyślnie: true)
  • :inner_window — mówi ile linków widnieje przed i za aktualną stroną (domyślnie: 4)
  • :outer_window — mówi ile linków widnieje dookoła pierwszej i ostatniej strony (domyślnie: 1)
  • :separator — string reprezentujący separator oddzielający numerki stron (domyślnie: pojedyncza spacja) 
Na przykład:
<%= will_paginate @customers, :previous_label => "wstecz", :next_label => "dalej" %>


Opcje HTML:
  • :class — nazwa klasy CSS dla wygenerowanego DIV'a (domyślnie: "pagination")
  • :container — przełącza renderowanie dla podanego wcześniej DIV'a. Ustaw na false tylko w przypadku stosowanie własnych rozwiązań (domyślnie: true)
  • :id — HTML ID dla kontenera z linkami  (domyślnie: nil). Ustaw true dla automatycznego rozpoznawania ID z nazwy klasy obiektów kolekcji. Na przykład jeśli stronicujesz model ArticleComment to automatycznie zostanie nadany ID "article_comments_pagination". 
Opcje zaawansowane:
  • :param_name — nazwa parametru zawartego w URL  (domyślnie:page)
  • :params — dodatkowe parametry przy generowaniu stronicowania (na przykład :controller => "foo", :action => nil)
  • :renderer — nazwa klasy, klasa lub instancja klasy dla renderowanych linków (domyślnie: WillPaginate::LinkRenderer)
Wszystkie opcje rozpoznawane przez will_paginate stają się automatycznie opcjami kontenera DIV. Na przykład:
<%= will_paginate @posts, :style => 'font-size: small' %>
… staje się po renderowaniu:
<div class="pagination" style="font-size: small"> ... </div>



Pełna dokumentacja na naszej stronie poświęconej dokumentacji API will_paginate.


Stronicowanie w Ruby on Rails - dokumentacja do API

Skądinąd dobry plugin dla Ruby on Rails do stronicowania o tajemniczej nazwie will_paginate ma kilka ciekawych możliwości. Niestety o możliwościach tych nie dowiesz się ze strony macierzystej. Większość linków tam nie działa. Nie pytaj dlaczego. Nie wiem. Nie wiedzą również o tym inni internauci. Powstają na grupach nawet wątki z pytaniami do autora o ten fenomen.

Kogo denerwuje brak dokumentacji do API tego pluginu mam dla niego rozwiązanie. Jako, że nas to też wkurzyło przygotowaliśmy dla wszystkich dokumentację API dla will_paginate v. 2.3.15. Korzystaj :-)


niedziela, 27 marca 2011

Jak w C++ zainicjalizować otwarcie pliku klasą std::string

#include <iostream>
#include <fstream>
#include <string>

int main()
{
  std::string filename = "testfile";      
  std::ifstream fin;

  fin.open(filename.c_str()); // Works just fine.
  fin.close();

  //fin.open(filename); // Error: no such method.
  //fin.close();
}

Pełny tekst tutaj:
http://stackoverflow.com/questions/32332/why-dont-the-stdfstream-classes-take-a-stdstring

Polskie literki w czystym Qt

w nagłówku:
#include <QTextCodec>

na początku programu należy wywołać:

// w tłumaczeniach np. tr("ąśżźćółń");
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
// w pozostałych tekstach klasy QString
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));