środa, 6 kwietnia 2011

Odcinanie ogonków, czyli zamiana polskich liter w Ruby on Rails

     Napotkałem na problem polegający na tym aby tekst zawierający polskie znaki zamienić na tekst bez polskich znaków. Czyli napis "Łabędź i żółw" ma stać się napisem "Labedz i zolw".
Troszkę poszperałem w sieci, troszkę pokombinowałem i powstał taki kod:
require 'iconv'

class String
  def to_ascii
    ascii = "acelnoszzACELNOSZZ"
    cep = "\271\346\352\263\361\363\234\277\237\245\306\312\243\321\323\214\257\217"
    s = Iconv.new("cp1250", "UTF-8").iconv(self)
    s.tr!(cep, ascii)
    return (s.length==0) ? self : s 
  end
end
     Lubię Ruby za to całkowicie bezkonfliktowe i niezwykle proste wzbogacanie standardowych klas.
Na pierwszy rzut oka pada pytanie: po co sprawdzać długość łańcucha s? Więc to zagadka. Dla wszystkich, którzy zgadną i nadeślą rozwiązanie - nagroda :-)

     Jeśli potrzebujesz takiego rozwiązania to wrzuć powyższy listing do pliku na przykład o nazwie str_utl.rb i umieść w Railsach w katalogu lib, a do pliku environment.rb wstaw require 'str_utl'. U mnie działa to tak:
>> "Łabędź i żółw".to_ascii
>> "Labedz i zolw"


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ę :-)