Jak piszę nieco więcej kodu, lub przy refaktoryzacji/reformatowaniu tegoż, dość często szukam początku lub końca jakiegoś bloku. Najprościej jest wcisnąć kombinację klawiszy:

[{
żeby przenieść się na początek bloku
]}
na koniec bloku
[(
na początek nawiasu wewnątrz którego się znajdujemy
])
na jego koniec

Wklepywanie za każdym razem tych samych słów/tagów/poleceń jest męczące. Nawet dla tak zahartowanego ‘klepacza’ jak ja. Na szczęście, Vim potrafi pomóc w takich momentach.

Gdy chcesz wpisać jakieś słowo, które już występuje w tekście, zacznij je wpisywać, a nastęnie wciśnij <Ctrl+p> lub <Ctrl+n>. Pierwsza kombinacja wyszukuje wstecz, natomiast druga – do przodu, dany dokument, pod kątem występowania danego słowa. Następne wciśnięcia danego skrótu klawiaturowego spowoduje wyświetlenie kolejnego dopasowanego słowa. Np w tym tekście, powtarzają się dość często słowa ‘wpisać’, ‘wpisywać’ etc. Mogę sobie pomagać wklepując je, wpisując ‘wpi<Ctrl+p>’. W tym momencie Vim podpowiada mi wersje: ‘wpisać’, ‘wpisać’, ‘wpisywać’, i mogę sobie wstawić dowolną z nich (w wersji 7 wyświetla się okienko z listą dopasowanych słów, we wcześniejszych kolejno były dopasowywane słowa w danym miejscu).

Więcej na ten temat: :he complete


Zainspirowany klasą autorstwa hwao, ruszyłem dziś do boju. Tak na szybko stworzyłem własną klasę do pobierania danych od usera, nazwaną getGPC. Można ją tymczasowo znaleźć pod adresem http://urzenia.net/wp-content/getgpc (nie klikalny, jako że ten adres niedługo ulegnie zmianie).

UPDATE
Klasa sporo sie zmieniła dziś nad ranem, a przed chwilą zmieniło się też miejsce przebywania klasy. Aktualna specyfikacja i instrukcja znajduje się na świeżo otwartym repo.urzenia.net, a źródła klasy są pod adresem repo.urzenia.net/files/.

Poniższe informacje można uznać za deprecated

Sposób użycia:

$r = getGPC::init([$source][, $sqlEscapeFun]); //użyty singletone
echo $r->getString($name[, $default][, $source][, $html][, $sql][, $syntax]);

Gdzie:

$source = getGPC::AUTO
pochodzenie zmiennej:

  • getGPC::POST – jeśli z $_POST
  • getGPC::GET
  • getGPC::COOKIE
  • getGPC::REQUEST
  • getGPC::AUTO – wtedy przeszuka kolejno $_POST, $_COOKIE, $_GET i $_REQUEST, i zwróci pierwszą znalezoną wartość
$sqlEscapeFun = ‘mysql_real_escape_string’
funkcja jaka zostanie użyta do escape’owania danych podczas przygotowania danych do wrzucenia do sql. Jeśli chcemy użyć takiego np. PDO::quote(), robimy to tak:$getgpc_instance->sqlEscapeFun=array($pdo_instance, 'quote');
$name
nazwa szukanej zmiennej (lub tablica takich nazw)
$default
zwracana wartość domyślna, jeśli zmienna nie istnieje (jeśli null, to przy braku zmiennej będzie rzucony wyjątek)
$html = false
jesli true to zamiani znaki <, >, " i ' na encje: &lt;, &gt;, &quot;, &#39;,
$sql = false
użyje funkcji ustawionej za pomocą getGPC::$sqlEscapeFun do zabezpieczenia się przed SQL Injection (tak naprawdę tutaj można podstawić dowolną funkcję, ale myślę że takie użycie będzie najpopularniejsze).
$syntax = false
ciąg znaków odpowiadający pierwszemu parametrowi funkcji sprintf. Jako kolejne parametry zostaną użyte podane wszystkie wartośći zmiennych podanych jako parametr $name metody getGPC::get[String|Int|Bool].

Nie dość, że poprzedni bug ciągle nie został naprawiony, i ciągle są potrzebne obejścia, to wczoraj doszukałem się kolejnego.

Można sobie ładnie w .htaccess ustawić parsowanie .php za pomocą PHP5, z czego się bardzo cieszę. Ale ichnich wspaniały webserver nie wie, że jeśli jakiś plik .php jest wywołany via mod_rewrite konkretną regułką, to też to ustawienie parsowania konkretnym parserem należałoby respektować… Ale jak to bywa, IdeaWebServer ma to w dupie.

Nie dość tego, codziennie w okolicach godziny 00.00 – 01.00 są pady serwera. Aplikacje oparte na Core CMS mają zwyczaj wysyłać na konkretny adres informacje o nieudanym połączeniu z bazą etc. A że kilka tych aplikacji razem z larkiem tam ześmy postawili, to nagle w okolicah ww godzin dostaję ja lub lark kilka ładnych maili, że połączenie z bazą się nie powiodło etc… Nice.

Czy już wszyscy wiedzą, czemu nie będę się już nigdy hostował na home.pl? ;) (Tak jakbym się osobiście u nich hostował, heh).