.emacs
A multilingual and multiplatform configuration file for Emacs along with some extra goodies packed in the attachment.
A multilingual and multiplatform configuration file for Emacs along with some extra goodies packed in the attachment.
Any sufficiently advanced technology is indistinguishable from magic.
© Arthur C. Clarke
Иногда получается, что какой-то отдельно взятый технологический прорыв кажется шарлатанством из-за неправдоподобных заявлений.
Ну вот кто может поверить, что к началу 2000-х годов никому не известной конторой в Минске был разработан уникальный синаксический анализатор английского языка? Звучит неправдоподобно, да и проверить нельзя.
Несколько лет назад мне пришлось пользоваться некой мутной структурой данных. Имеющаяся в наличии библиотека не подходила по множеству причин. Библиотека эта была ориентирована на однопоточное применение, являлась по сути реализацией ORM для конкретного случая и выставляла в качестве API собственный язык запросов, явлюящийся надстройкой над SQL, тогда как мне нужен был низкоуровневый доступ и возможность бродить по дереву данных вдоль и поперёк.
Я в то время как раз собирался изучить Ruby-on-Rails, и его ORM подсистема под названием ActiveRecord мне показалась подходящей для реализации необходимой функциональности.
Сказано-сделано. Периодически мучая вопросами ближайшего гуру руби и рельсов
Собрано из двух постингов на dev.by.
Когда дискеты ещё только выходили из моды, а запороть компакт-диск считалось западлом, когда Invention-Machine Belarus ещё назывался Научсофтом, меня, совсем ещё желторотого несмышлёныша, уволили оттуда, прознав, что я получил предложение работы от тогдашнего лидера индустрии.
Увольнение было обставлено в лучших традициях большого и жестокого бизнеса. У входа в здание меня встретили и проводили к тогдашнему директору, который, тряся поджилками, полдня уговаривал меня подписать задним числом NDA, угрожая сделать невыездным и наслать порчу если я вдруг стану рыпаться. Верные коллеги тем же вечером размонтировали мой опечатанный комп и записали всё, что было личного, на компакт-диск. Как сейчас помню, хватилo места даже для инсталляции Quake 2 вместе со всеми сэйвами. Через месяц-другой любимый начальник предложил мне подработать по специальности на нелегальном положении, на что я с радостью согласился, и ещё шесть месяцев, пока оформлялись документы на отъезд, колбасил сявки на дому. C тех пор прошло много лет. Обида забылась. Из верных коллег на старом месте осталось только двое. Году в 2001, встретив директора Invention-Machine в зале ожидания аэропорта, я даже удосужился пожать ему руку и обсудить туманные перспективы моего тогдашнего работодателя.
Все эти годы я внимательно следил за Invention-Machine, ведь как-никак, а эта фирма дала мне путёвку в жизнь, там я встретил замечательных людей, с которыми дружу до сих пор. Но меня всегда поражало, насколько эти замечательные люди, профессионалы своего дела, незаметны даже в своей профессиональной среде.
In a desperate act of self-humiliation, people behind Java.net upgraded their Drupal-based website and left the default Drupal favicon on their site, as a sign of a total professional failure.
P.S. Looks like they had a MovableType before Drupal. Dries blogged about it half a year ago.
В перерывах между работой и хобби, приделал колонки под крышку самодельного стола из цельной доски. Качество звука, как и ожидалось, пропорционально площади резонатора. Низкие передаются прямо в грудную клетку через лежащие на столе локти.
A bad sysadmin changes the default SSH port.
A good sysadmin throttles the brute-force attackers by allowing one new connection in 20 seconds.
# requires xt_TARPIT iptables -A INPUT -p tcp -m state --state NEW \ --dport 22 -m recent --update --seconds 20 -j TARPIT iptables -A INPUT -p tcp -m state --state NEW \ --dport 22 -m recent --set -j ACCEPT
A brilliant sysadmin blocks intruders indefinitely
# requires hashlimit iptables -A INPUT -p tcp -m tcp --dport 22 -m state \ --state NEW -m hashlimit --hashlimit 1/hour \ --hashlimit-burst 2 --hashlimit-mode srcip \ --hashlimit-name SSH --hashlimit-htable-expire 60000 -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 22 \ --tcp-flags SYN,RST,ACK SYN -j DROP iptables -A INPUT -p tcp -m state \ --state NEW -m tcp --dport 22 -j ACCEPT
In the last example, the 1st rule allows up to two connections per hour. After the limit of two connections per hour is reached, the second rule becomes active and the hashlimit module starts to countdown from 1 minute (60 000 milliseconds). If you connect within 1 minute, the hashlimit counter is reset to 60 000. If you connect after 1 minute, you drop to the 3rd rule and are allowed access.
Cherry-picked from Habr
Пришла ко мне сегодня афишка от Kaaitheater. В ней — анонс театрального перформанса девки из Кении. В краткой аннотации говорится, что в Кении популярны «живые» переводы фильмов, совсем как у Гоблина. Ничто не ново под луной.
mknod backpipe p mknod log p while :; do cat backpipe |nc -l -p 3001 |tee log| nc localhost 3000 |tee log >backpipe; doneЗависимости: (ba,k)sh, netcat, mknod, tee. Работает следующим образом. Скажем, нам нужно просмотреть трафик на порту 3000. Устанавливаем netcat сервер на 3001 порту, форвардим соединение в оба конца на порт 3000. Копию всего, что передаётся в обоих направлениях, пишем в файл log. Если вдруг соединение закрывается, запускаем всё заново.
Add the new mime type to the respective rails initializer
echo "Mime::Type.register \"application/xhtml+xml\", :xhtml" \ > config/initializers/mime_types.rb
Use the name of this mime type in the config/routes.rb
map.root :controller => "test", :action => 'view', :format => 'xhtml'
Just spotted this nice little euphemism slipping into the corporate newspeak. Is it because the old-fashioned nature of the word gives more weight to PowerPoint slides? Or it is because saying aloud "PowerPoint" has become suddenly reprehensible?