17 нояб. 2016 г.

Windows + Node + IRHydra2

1. Create somewhere in %PATH% cmd file node-irhydra.cmd with
node --trace-hydrogen --trace-phase=Z --trace-deopt --code-comments --hydrogen-track-positions --redirect-code-traces --redirect-code-traces-to=code.asm --print-opt-code --trace_hydrogen_file=hydrogen.cfg %*
2. Run node-irhydra.cmd yourFile.js
3. Go to http://mrale.ph/irhydra/2/ and upload files

15 апр. 2016 г.

How to handle big repositories with git

Shallow clone

Clone a repository keeping only the latest n commits of history. You can properly pull and push to repositories even from a shallow clone.

git clone --depth 1 remote-url


Clone only one branch

You can also limit the amount of history you clone by cloning a single branch

git clone URL --branch branch_name --single-branch [folder]


Sparse checkout

Original StackOverflow answer

mkdir <repo>
cd <repo>
git init
git remote add -f origin <url>
git config core.sparsecheckout true
echo "some/dir/" >> .git/info/sparse-checkout
echo "another/sub/tree" >> .git/info/sparse-checkout
git pull origin master

Another way:

git clone
git config core.sparsecheckout true
echo src/ > .git/info/sparse-checkout
git read-tree -m -u HEAD


Sparse checkout + shallow clone

Original StackOverflow answer

git init <repo>
cd <repo>
git remote add origin <url>
git config core.sparsecheckout true
echo "src/*" >> .git/info/sparse-checkout
git pull --depth=1 origin master


Disable delta compression for binary files

Original discussion

Configure a .gitattributes file as such:

*.jpg  binary -delta
*.png  binary -delta
*.psd  binary -delta

... and so on


4 апр. 2016 г.

Premature optimization


Programmers waste enormous amounts of time thinking about, or worrying about, the speed of noncritical parts of their programs, and these attempts at efficiency actually have a strong negative impact when debugging and maintenance are considered. We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%.

Knuth, "Structured Programming with Goto Statements". Computing Surveys 6:4 (December 1974), pp. 261–301, §1.

1 нояб. 2015 г.

Как разводить гремлинов

Классы ошибок, обнаруживаемые с помощью gremlins.js:
  • Ошибки вёрстки. Гремлину scroller иногда удаётся проскроллить совершенно неожиданные элементы страницы/приложения и загнать элементы интерфейса далеко за пределы видимой области. Обнаруживается визуально.
  • Reflow/repaint performance. После некоторых действий пользователя FPS может упасть из-за неидеальной вёрстки (scroll или незначительное изменение стиля ведёт к полному reflow документа и repaint всей видимой области) или объёмных вычислений в JavaScript (например, dirty checking в Angular-приложении). При падении FPS ниже 10 в консоли выдаётся сообщение.
  • Ошибки concurrency. Некоторые действия приложение может выполнять асинхронно, например, в интерфейсе с несколькими вкладками при переключении между ними такие действия, как отсылка запроса на сервер, очистка неактивной вкладки, создание объектов активной вкладки, обработка ответа сервера, отрисовка содержимого активной вкладки, переключение заголовков вкладок в принципе могут выполняться в разные моменты времени. Если кликать не спеша, с паузами, то порядок действий практически никогда не нарушится. Такие гремлины, как clicker, помогают обнаружить ошибки, если интервал между кликами становится сравним с интервалами между асинхронными действиями, и порядок выполнения кода может сломаться.
  • Ошибки алгоритмов/бизнес-логики. Гремлины formFiller и clicker могут вводить данные и нажимать на кнопки в совершенно непредсказуемой последовательности, и у какой-нибудь сложной валидации данных от этого может сорвать крышу.