Интересная статья о всевозможных вариантах вызова и использования функций: сопрограммы (coroutines), рекурсия, хвостовая рекурсия (tail call optimization), каррирование и многое другое.
http://jjinux.blogspot.com/2011/04/call-me-crazy-calling-conventions.html
Показаны сообщения с ярлыком заметки на полях. Показать все сообщения
Показаны сообщения с ярлыком заметки на полях. Показать все сообщения
25 апреля 2011 г.
2 марта 2011 г.
Волшебная кнопка
Несколько раз я сталкивался с тем, что запущенная в линуксе программа начинает отжирать всю доступную память, система сваливается в штопор, и закрыть виновницу удаётся с большим трудом... Простой пример для теста — откройте XML файл в несколько мегабайт в Firefox. ;)
Уже гораздо позже я узнал, что есть т.н. "волшебная кнопка" — "бесполезная" клавиша SysRq (она делит место жительства с PrintScreen). Это единственная прямая связь с ядром линукса, работающая всегда (конечно, если работает и ядро). Тест из первого абзаца проходится с помощью SysRq+Alt+f — вызывается обработчик ситуации нехватки памяти, который и завершает самый "тяжёлый" процесс. Из любимого ещё убиение X-сервера — SysRq+Alt+k.
Уже гораздо позже я узнал, что есть т.н. "волшебная кнопка" — "бесполезная" клавиша SysRq (она делит место жительства с PrintScreen). Это единственная прямая связь с ядром линукса, работающая всегда (конечно, если работает и ядро). Тест из первого абзаца проходится с помощью SysRq+Alt+f — вызывается обработчик ситуации нехватки памяти, который и завершает самый "тяжёлый" процесс. Из любимого ещё убиение X-сервера — SysRq+Alt+k.
Статический анализ кода в Python
В статье на Хабре наткнулся на упоминание статических анализаторов кода для Python. Инструмент этот очень полезен при регулярном его использовании. Немножко подробнее расскажу о pep8, pylint и pyflakes.
Угодить pylint весьма сложно, порой он ошибается — к счастью, настройки достаточно гибкие.
На мой взгляд, золотая середина — pyflakes, поначалу можно использовать и pep8, дабы привить соблюдение стиля.
Бонус для пользователей Vim — вызов pyflakes или pylint после каждого сохранения редактируемого файла, сообщения об ошибках помещаются в окошко "quickfix":
pep8
Этот анализатор проверяет соответствие кода знаменитому PEP 8 — руководству по стилю кода Python. В больших и не очень командах хорошая штука, ибо "Readability counts"!pylint
Самый придирчивый анализатор из всех трёх, хотя стиль кода проверяет немножко иначе, чем pep8 — акцент на "дурно пахнущем" и неоптимальном коде, выдаёт и предложения о рефакторинге. Бонусная опция — генерация UML-диаграмм с помощью команды pyreverse.Угодить pylint весьма сложно, порой он ошибается — к счастью, настройки достаточно гибкие.
pyflakes
В отличие от pylint, проверяет только на логические ошибки в программе, стиль не учитывает.На мой взгляд, золотая середина — pyflakes, поначалу можно использовать и pep8, дабы привить соблюдение стиля.
Бонус для пользователей Vim — вызов pyflakes или pylint после каждого сохранения редактируемого файла, сообщения об ошибках помещаются в окошко "quickfix":
command Pylint :call Pylint()
function! Pylint()
setlocal makeprg=(echo\ '[%]';\ pylint\ %)
setlocal efm=%+P[%f],%t:\ %#%l:%m
silent make
cwindow
endfunction
command Pyflakes :call Pyflakes()
function! Pyflakes()
let tmpfile = tempname()
execute "w" tmpfile
execute "set makeprg=(pyflakes\\ " . tmpfile . "\\\\\\|sed\\ s@" . tmpfile ."@%@)"
silent make
cwindow
endfunction
autocmd BufWrite *.{py} :call Pyflakes()
25 февраля 2011 г.
Обработка ссылок mailto в Google Chrome
Наконец нашёл решение давней несуразности: в отличие от Firefox, линуксовый Google Chrome при попытке открыть почтовую ссылку (протокола "mailto") запускает почтовую программу, а мне нужен Gmail. Замечательный superuser.com подсказал, что в Ubuntu для этого достаточно установить пакет desktop-webmail (плюс к этому я выбрал Desktop Webmail в настройках Preferred Applications/Mail Reader — возможно, это необязательно).
10 декабря 2010 г.
Новый старый PNG
Оказывается, формат PNG не так уж и прост. Среди прочего он позволяет эффективно сжимать градиентную заливку внутри картинки, отсюда вывод — если требуется на градиентный фон что-то наложить, эффективнее будет сделать фон отдельной картинкой, а сверху наложить другую с объектами переднего плана и прозрачным фоном.
Есть несколько утилит для оптимизации размера PNG, одна из лучших открытых — OptiPNG, есть удобные обёртки под Windows, Mac и Linux. Но ещё лучше по степени сжатия — бесплатная утилитка PNGOUT.
Есть несколько утилит для оптимизации размера PNG, одна из лучших открытых — OptiPNG, есть удобные обёртки под Windows, Mac и Linux. Но ещё лучше по степени сжатия — бесплатная утилитка PNGOUT.
19 ноября 2010 г.
Грабли в MySQL
Сегодня, как обычно случайно, выяснил, что если подключиться к одной базе и начать там транзакцию с помощью
START TRANSACTION/BEGIN, то любой запрос к другой базе приостанавливается — MySQL ждёт, когда вы закончите открытую транзакцию к первой базе.
21 октября 2010 г.
Вся мощь Vim
Я люблю Vim странной долгой любовью. :) Встречая такие мануалы, понимаю, что только начинаю изучать его. Осталось понять сей славный документ, и можно называться Vim-гуру. B-)
8 сентября 2010 г.
Server-side jQuery
Подписаться на:
Сообщения (Atom)