Последние посты

Больше статей

В ин­тер­не­те опять кто-то не­прав. На CPAN ку­ча мо­ду­лей для пар­си­нга LaTeX-до­ку­мен­тов, и аб­со­лют­но все кри­вые. Авто­ры яв­но не в кур­се о лек­си­чес­ком ана­ли­зе, о том что без то­ке­ни­за­ции ис­клю­чи­тель­но на ре­гэкс­пах да­же ба­зо­вую грам­ма­ти­ку вы­де­лить не по­лу­чит­ся. В ре­зуль­та­те, де­сят­ки ки­ло­ба­йт ко­да, не про­хо­дя­ще­го да­же про­стей­шие тес­ты ви­да: \command[opts]{arg} Пос­мот­рел на это, вспла­кнул, за па­ру ча­сов ре­али­зо­вал пар­сер и принтер грам­ма­ти­ки перво­го уро­вня. Может при­го­дит­ся ко­му-ни­будь: https://github.com/johnlepikhin/p5-TeX-Process. В README ку­ча при­ме­ров, не ви­жу смыс­ла как-то от­дель­но ком­мен­ти­ро­вать.

Читать далее

Решил вы­ло­жить в ви­де мо­ду­ля па­ру функ­ций в 20 строк, ко­то­рые дав­ным-дав­но тас­каю по всем сво­им про­ек­там и ко­то­рые силь­но упро­ща­ют на­пи­са­ние боль­ших про­ек­тов на Perl. Вот он: https://github.com/johnlepikhin/p5-Syntax-NamedArgs Функ­ции де­ла­ют про­стые ве­щи: Гаран­ти­ру­ют, что функ­цию по­зва­ли с хэш-ар­гу­мен­та­ми; Про­ве­ря­ют, что та­кие-то ар­гу­мен­ты пе­ре­да­ны; Позво­ля­ют за­дать зна­че­ние по умо­лча­нию; Валят чи­та­емую ошиб­ку, ес­ли где-то вглу­би сте­ка ока­за­лось, что ар­гу­мен­та не­хва­та­ет. В со­вокуп­нос­ти это по­зво­ля­ет пи­сать до­воль­но за­мыс­ло­ва­тые кон­ст­рук­ции с лег­кой ор­га­ни­за­ци­ей глу­бо­кой пе­ре­да­чи зна­че­ний.

Читать далее

Emacs не уме­ет ра­бо­тать с кноп­ка­ми аль­тер­на­тив­ных рас­кла­док. Точ­нее, уме­ет слиш­ком хо­ро­шо: для это­го на­до все го­ря­чие кноп­ки за­но­во объ­явить в аль­тер­на­тив­ной рас­клад­ке. Я лич­но к та­ким по­дви­гам не го­тов. Есть не­сколь­ко ре­ше­ний этой про­бле­мы (1, 2), но все они чу­до­вищ­ны и пло­хо управ­ля­емы: Пер­вый ко­стыль опре­де­ля­ет класс те­ку­ще­го ок­на и, ес­ли это Emacs, вмес­то сме­ны рас­клад­ки шлет код кноп­ки F31/F32. В Emacs на­зна­ча­ют­ся ху­ки для об­ра­бот­ки этих кнопок, ко­то­рые пе­ре­клю­ча­ют внут­рен­ний те­ку­щий ме­тод вво­да Ема­кса.

Читать далее

Table of Contents Преамбула, конфиг для конфигов bashrc git inputrc parcellite perlcritic perltidy ssh stalonetray urxvt vim xcompose xmobar xmonad xresources Исходник статьи Прочее (tangle на сниппеты не включен) В этой статье со­бра­ны пуб­лич­ные час­ти мо­их де­сктоп­ных ко­нфи­гов. Из ис­ход­ни­ка статьи в фор­ма­те org-mode де­скто­пы ав­то­ма­ти­чес­ки ко­нфигу­ри­ру­ют­ся. Это про­ис­хо­дит че­рез ob-tangle — сис­те­му экс­пор­та SRC-бло­ков в ко­неч­ные фай­лы. Исход­ник статьи в фор­ма­те org-mode до­сту­пен для ска­чи­ва­ния: dotfiles.

Читать далее

Боль­ше 10 лет про­дол­жа­ет­ся мое осо­зна­ное зна­ком­ст­во с Ocaml и око­ло 18 лет зна­ком (на уров­не лю­би­те­ля) с лиспом. Пожа­луй, се­йчас мож­но раз­ре­шить се­бе ска­зать пуб­лич­но: я счи­таю ООП лиш­ним в боль­шинст­ве за­дач. И се­йчас объ­яс­ню по­че­му. Любое про­ек­ти­ро­ва­ние си­сте­мы на­чи­на­ет­ся на де­кла­ра­тив­ном язы­ке ин­тер­фей­сов. В тер­ми­нах это­го язы­ка про­ек­ти­ро­ва­ния мы де­кла­ри­ру­ем (опи­сы­ва­ем) за­да­чу, наш про­ект. И толь­ко по­том, на язы­ке ре­али­за­ции, мы рас­су­жда­ем о тер­ми­нах язы­ка ин­тер­фей­са. В па­ра­диг­ме ООП на этом язы­ке ин­тер­фей­са удоб­но опи­сы­вать уст­ро­йст­во ми­ра, пря­мо как пи­шут в кни­жках: вот это класс всех об­ъек­тов, а эти име­ют ра­диус, и они кру­ги.

Читать далее