30 сент. 2009 г.

Yota Egg

Какой, однако, забавный девайс. Автономный конвертор 4G в WiFi.

29 сент. 2009 г.


...But the best part was this: No way to exit the game. Pressing Escape in the Main menu started a promotional video which after it finished went to the main menu again. Then, after thinking and clicking around a bit, I tried ALT-F4, the standard windows combination that even still some C++ developers don't know (trust me), a 'Do you really want to exit the game' menu appeared. Didn't they want people to exit their wonderful game? Strange.
Выделено мной.


Гигабайт фотографий

Слова из известной песни про гигабайт фотографий всё больше меняют свой смысл на противоположный. Это теперь вовсе не много, а даже очень и очень мало.

Привёз из лета сотню гигабайт.

Разгребаю потихоньку.


P.S. Коты есть ;-)

24 сент. 2009 г.

Joel on Shipping

Shipping is a feature. A really important feature. Your product must have it.

20 сент. 2009 г.

Lua Unofficial Frequently Asked Questions

Живёт здесь: http://batbytes.com/luafaq/


Конвертор подмножества Lua в C от Дэвида Мануры (David Manura): lua2c (исходный код доступен на GitHub'е).

Использует парсер от Metalua. Ограничения вполне ожидаемые:
lua2c does not currently support coroutines, functions that normally reject C functions (e.g. setfenv), and possibly tail call optimizations.
Более полноценное решение — llvm-lua.


Ещё одна сюита для тестирования Lua:

В дополнение к официальной:

Эмулятор NES на JavaScript



Обнаружил ещё четыре нечитанных романа из Discworld'а. Доволен как слон.

Glidecam 4000 pro

О, какая штука! 5D Mark II туда тоже приручивается.

10 сент. 2009 г.

Луа в качестве языка конфигов Апача

Разработчики Apache обсуждают возможность использования языка Lua для конфигурирования:


Здесь вправили мозг по поводу синтаксиса:

8 сент. 2009 г.


Хорошая коллекция ссылок на тему пиксельарта:


7 сент. 2009 г.

The Best Way to Delete Code

Select a section of code in your editor, hit the backspace key, and be done with it.
— Ned Batchelder, Deleting Code
Рекомендуется к прочтению. Есть русский перевод.

Библиотеки для написания высокопроизводительных серверов

Маленький список библиотек для написания высокопроизводительных серверных приложений:


 # source ~/.bash_history

Страшная штука! :-)

Клонирование корутин в Lua

Откопался интересный пост от Майка Палла (создателя LuaJIT), с маленьким неинтрузивным патчем для клонирования корутин:

У патча есть ещё патч:

67 терабайт за 7867$

По ссылке рассказывается как построить 67-и терабайтное хранилище за 7867 долларов. Жаль дома такое не поставишь — жужжать будет сильно...


Когда scp забивает весь скайлинковский канал, как приятно усыпить его нажатием Ctrl+Z, отправить письмо, и вернуть всё как было, сказав fg.

Всё-таки bash — отличная штука.

So what's wrong with 1975 programming?

Интересное эссе от архитектора Varnish ("Varnish is a state-of-the-art, high-performance HTTP accelerator").

Наиболее интересные куски (всё же рекомендую прочесть целиком):

Take Squid for instance, a 1975 program if I ever saw one: You tell it how much RAM it can use and how much disk it can use. It will then spend inordinate amounts of time keeping track of what HTTP objects are in RAM and which are on disk and it will move them forth and back depending on traffic patterns.

Well, today computers really only have one kind of storage, and it is usually some sort of disk, the operating system and the virtual memory management hardware has converted the RAM to a cache for the disk storage.

So what happens with squids elaborate memory management is that it gets into fights with the kernels elaborate memory management, and like any civil war, that never gets anything done.


Here is how Varnish does it:

Varnish allocate some virtual memory, it tells the operating system to back this memory with space from a disk file. When it needs to send the object to a client, it simply refers to that piece of virtual memory and leaves the rest to the kernel.


And that's it. Varnish doesn't really try to control what is cached in RAM and what is not, the kernel has code and hardware support to do a good job at that, and it does a good job.

Varnish also only has a single file on the disk whereas squid puts one object in its own separate file. The HTTP objects are not needed as filesystem objects, so there is no point in wasting time in the filesystem name space (directories, filenames and all that) for each object, all we need to have in Varnish is a pointer into virtual memory and a length, the kernel does the rest.


We also try to reuse memory which is likely to be in the caches.

The worker threads are used in "most recently busy" fashion, when a workerthread becomes free it goes to the front of the queue where it is most likely to get the next request, so that all the memory it already has cached, stack space, variables etc, can be reused while in the cache, instead of having the expensive fetches from RAM.

We also give each worker thread a private set of variables it is likely to need, all allocated on the stack of the thread. That way we are certain that they occupy a page in RAM which none of the other CPUs will ever think about touching as long as this thread runs on its own CPU. That way they will not fight about the cachelines.


— Poul-Henning Kamp, Notes from the Architect.

6 сент. 2009 г.

Разбор HTML в Markdown

Оказывается есть специальная PHP-шная библиотека для конвертации HTML-а, сгенерированного из Markdown'а обратно в Markdown: Markdownify.


4 сент. 2009 г.

Внутреннее устройство графического пайплайна в айфоне

Доклад с Assembly 2009 про низкоуровневые детали устройства графического пайплайна в айфонах до 3GS от разработчиков Unity. (Слайды в PDF здесь.)

3 сент. 2009 г.

Как на самом деле нужно завязывать галстук

(Показано в районе седьмой минуты.)

1 сент. 2009 г.

GitX: git gui и gitk для OS X

GitX: замена для git gui и gitk для OS X.

Интерфейс на вид приятный. Посмотрим, как оно работает.

jhead: манипуляции с EXIF'ом из командной строки

Утилита командной строки jhead для работы с EXIF'ом в JPEG'ах.

Цитата со страницы программы:
Things jhead can extract from an Exif jpeg file
  • Time and date picture was taken
  • Camera make and model
  • Integral low-res Exif thumbnail
  • Shutter speed
  • Camera F-stop number
  • Flash used (yes/no)
  • Distance camera was focused at
  • Focal length and calculate 35 mm equivalent focal length
  • Image resolution
  • GPS info, if stored in image
  • IPTC header
  • XMP data
Things jhead can modify in an exif jpeg file
  • Up-right images according to rotation tag using jpegtran
  • Set or relative adjust internal exif timestamps
  • Fix date / time offsets in large batches of images
  • Re-name or date stamp files according to exif timestamp
  • Transfer exif headers between images
  • Replace thumbnails inside Exif headers
  • Edit jpeg comments (but not the Exif comments)
  • Delete exif or comment sections from jpeg images
  • Create new minimal exif header containing date and thumbnail

Fog: AGG без GPL

Anti-Grain Geometry (AGG) — замечательная библиотека для работы с графикой на CPU. К сожалению, начиная с версии 2.5 она распространяется под GPL.

Но, оказывается, не всё так плохо. Есть библиотека Fog, которая реализует алгоритмы из AGG (да ещё и с JIT-компиляцией растровых операций). Также в библиотеке есть поддержка других вкусностей вроде многопоточных операций с изображениями. Fog распространяется под лицензией MIT.

Библиотека, судя по всему, пока сыровата, но некоторые штуки вытащить вполне возможно. Например, улучшенную реализацию (искать "[Fog::Raster_C - StackBlur]") stack blur'а.


OProfile — профайлер, работающий на уровне системы, с малым оверхедом, не требует перекомпиляции изучаемой программы. Позволяет при желании снимать данные со всей системы сразу.

Аналог StackOverflow.com для вебдизайнеров...

...называется doctype.com

В семействе StackOverflow есть и ещё пара полезных сайтов:

iPhone: Распознавание жестов

GLGestureRecognizer by Adam Preble (GitHub page)

Всё для котофилов...

...и фелиноманов. Магазин котосувениров:

К сожалению, доставка только по Великобритании...

В дополнение к nginx'у

HAProxy: The Reliable, High Performance TCP/HTTP Load Balancer

Slowloris HTTP DoS

Нестандартный способ ДоС-атаки, о котором нужно помнить при реализации веб-сервера:

Нужно в каждом коннекшене отправлять HTTP-заголовки по одной штуке, с наименьшей скоростью, какую только позволяет таймаут на сервере. Таким образом на сервере достаточно бысто исчерпывается число коннекшенов.

Подробная статья и перловый скрипт для тестов на уязвимость здесь: http://ha.ckers.org/slowloris/