« leden 2010 | intrakosmologie | březen 2010 »

Archiv na měsíc únor 2010

Vlnka

dond Úterý, 23 únor, 2010 v 11:38 odp.

(Varování: Tento text neníGoogle Wave. Tento text naopak je dost technický.)

Protože často píšu příspěvky (sem, do diskuzí, do Astropisího redakčního systému) v HTML a často je píšu buď jenom částečně (tedy kousek, který se pak někam vloží), nebo před zamýšleným zveřejněním (do foroty – ostatně jako tomu bylo v případě tohoto textu), píšu je pochopitelně ve svém oblíbeném editoru. Jelikož tento disponuje vnitřním skriptovacím rozhraním, připravil jsem si jednoduchou pomůcku, která mi vloží nezlomitelné mezery tam, kde to je (většinou) vhodné. Jde o velmi primitivní náhradu za program vlna od Petra Olšáka, ale pro moje potřeby naprosto stačí.

Funguje to tak, že z inicializačního .vimrc souboru načtu soubor HtmlVlna.vim, který obsahuje definici funkce Vlna_recode(), jejíž volání je namapované na funkční klávesu F12.

au FileType html source ~/.vim/plugin/HtmlVlna.vim
au FileType html map <F12> :call VLNA_recode()

Takže píšu, když mám pocit, že jsem sepsal všechno, co jsem chtěl světu sdělit, zmáčknu F12 a funkce VLNA_recode() najde mezery za jednopísmennými předložkami a spojkami a nahradí je nezlomitelnou mezerou. Mechanizmus hledání je velmi primitivní a celá funkce vypadá takhle:

function! VLNA_recode()
  " skocime na zacatek souboru
  execute "normal gg"

  " najdeme vsechno, co chceme nahradit
  while search('[^<]\<[AaIiKkOoSsUuVvZz]\>\s\+',"W")>0
" vypisem cislo radky, kterou menime
echo "Vlnkuju radek ".line(".")

" samotna vymena znaku - hlidani pocatecniho '<' zabrani vlozeni &nbsp; do <a href=...
s/\([^<]\)\<\([AaIiKkOoSsUuVvZz]\)\>\s\+/\1\2\&nbsp;/g

" spocitame, kolik jsme nezlomitelnych mezer jsme nahradili
let s:currLine=getline(".")
let s:index=0
let s:nbspCount=0
while match(s:currLine,'&nbsp;',s:index)>-1
  let s:found=match(s:currLine,'&nbsp;',s:index)
  let s:index=s:found+5 " posunem kurzor na konec
  let s:nbspCount=s:nbspCount+1
endwhile

let s:tmp=trunc(s:nbspCount/10.0)
let s:nbspCount=s:nbspCount-float2nr(10*s:tmp)

" vypiseme pocet nalezenych nezlom. mezer
if s:nbspCount==1
  echon " [".s:nbspCount." nezlomitelna mezera]\n"
elseif s:nbspCount>2&&s:nbspCount<5
  echon " [".s:nbspCount." nezlomitelne mezery]\n"
else
  echon " [".s:nbspCount." nezlomitelnych mezer]\n"
endif
  endwhile
endfunction

Všechnu práci tedy obstará jeden regulární výraz (na ř. 11), zbytek je jen omáčka okolo, která vypisuje informace o vyměněných mezerách.

V tomhle příspěvku funkce našla a nahradila 17 mezer. :-)

Pochopitelně vím, že snažit se na webu o splnění typografických pravidel tímto způsobem je poněkud nesystematické (přinejlepším), ale o ničem lepším nevím. Přinejmenším mně vadí jednopísmenné částice na koncích řádků, proto tuhle úpravu dělám – vím, že podle typografických pravidel patří nezlomitelná mezera pouze za neslabičné předložky nebo předložky na začátku věty; většinou ji ale dávám všude, protože samotná písmena na koncích řádků prostě vypadají divně (a obvykle jsou tam poměrně bezdůvodně).

Aktualizace: Úterý, 23 únor, 2010 11:48 odp.

Noční čtení

dond Středa, 17 únor, 2010 v 8:04 dop.

Před dvaceti lety jsem hodně četl. Opravdu hodně, občas i tři knížky za den. Což samozřejmě v kombinaci s chozením do školy (a do hudebky, na počítače, pinčes a výjimečně i jinam) nešlo dost dobře skloubit.

Četl jsem v noci, v posteli. Po několika výhrůžkách typu, „jestli tě ještě jednou načapám s rozsvícenou lampičkou, tak ti ji odmontuju,“ jsem jako asi většina z nás vynaleznul nedetekovatelnou metodu: čtení pod peřinou. Spotřeba baterií i žárovek do baterky u nás doma rapidně stoupla, ale buď si toho nikdo nevšimnul, nebo byli naši tolerantní.

Po dvaceti letech si čtu pod peřinou znovu. Je to jediná možnost, jak číst v ložnici v posteli se spící miminou.

Minulý týden jsem o tom diskutoval s kolegy z práce. Nabídli mi jiný pohled: „Počkej, až začnou tvoje děti po nocích číst. Ještě budeš rád, že vůbec čtou a necháš je na pokoji.“ Namítal jsem, že ranní vstávání do školy je důležitější a děti nemají soudnost. A krom toho, je třeba, aby Maličká taky vynalezla čtení pod peřinou. Jeden nikdy neví, kdy se to bude hodit...

Takže, jestli tě ještě jednou načapám s rozsvícenou lampičkou, tak ti ji odmontuju!

...se potřebuje vykecat!

dond Pondělí, 08 únor, 2010 v 9:50 odp.

Občas se někdo ptá, proč tady nejsou komentáře?

Vždycky odpovídám, „protože jsem si to nepřál.“ Důvody se vysvětlují hůř, zejména pokud je protiargumentem tvrzení typu, „ale web XYZ.cz je má!“ Má. A co má být?

Je pravda, že občas má člověk chuť něco doplnit, opravit, podotknout. A takové to políčko pro kus textu spolu s tlačítkem Komentovat tuhle potřebu krásně naplní. Jenže pak přijdou protivové, co nadávají. A spameři. A protivní spameři, kteří jsou navíc stroje, takže se s nimi těžko zápolí. Ve výsledku komentáře (na vlastním webu, což tenhle je) znamenají vždycky nějakou práci navíc. Pro autora, samozřejmě. Proto jsem se na začátku rozhodl, že tady komentáře nebudou.

Další důvody, proč nepovolovat komentáře pod články (nejen na blogu) za mě pěkně shrnuli Arthur Dent (dokonce dvakrát) a Filip Rožánek, jakékoliv další doplňování by bylo zbytečné.

A dneska jsem si ještě přečetl, že tak často vzývaný uživatelský obsah je ve skutečnosti z 95 % bordel. No, kdo by netoužil to taky mít na svém webu!

Protože vím, že tyhle poznámky nečtou tisíce, stovky, ba dokonce ani desítky lidí, zkrátka protože všechny čtyři své čtenáře znám, ze všeho nejradši jsem, když mi svůj komentář/postřeh/cokoli sdělíte osobně. :-)

« leden 2010 | nahoru | březen 2010 »