30 сент. 2009 г.
29 сент. 2009 г.
ALT+F4
...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.
— http://www.irrlicht3d.org/pivot/entry.php?id=941Выделено мной.
Дожили...
Гигабайт фотографий
Слова из известной песни про гигабайт фотографий всё больше меняют свой смысл на противоположный. Это теперь вовсе не много, а даже очень и очень мало.
Привёз из лета сотню гигабайт.
Разгребаю потихоньку.
Выложу.
P.S. Коты есть ;-)
Привёз из лета сотню гигабайт.
Разгребаю потихоньку.
Выложу.
P.S. Коты есть ;-)
24 сент. 2009 г.
20 сент. 2009 г.
lua2c
Конвертор подмножества Lua в C от Дэвида Мануры (David Manura): lua2c (исходный код доступен на GitHub'е).
Использует парсер от Metalua. Ограничения вполне ожидаемые:
Использует парсер от Metalua. Ограничения вполне ожидаемые:
lua2c does not currently support coroutines, functions that normally reject C functions (e.g. setfenv), and possibly tail call optimizations.Более полноценное решение — llvm-lua.
10 сент. 2009 г.
Луа в качестве языка конфигов Апача
Разработчики Apache обсуждают возможность использования языка Lua для конфигурирования:
Здесь вправили мозг по поводу синтаксиса:
8 сент. 2009 г.
Пиксельарт
Хорошая коллекция ссылок на тему пиксельарта:
http://www.wayofthepixel.net/pixelation/index.php?topic=3467.0
http://www.wayofthepixel.net/pixelation/index.php?topic=3467.0
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Рекомендуется к прочтению. Есть русский перевод.
Библиотеки для написания высокопроизводительных серверов
Маленький список библиотек для написания высокопроизводительных серверных приложений:
Ярлыки:
c10k,
libraries,
links,
programming,
server
Клонирование корутин в Lua
Откопался интересный пост от Майка Палла (создателя LuaJIT), с маленьким неинтрузивным патчем для клонирования корутин:
У патча есть ещё патч:
Ярлыки:
coroutine,
coroutine.clone,
Lua,
Mike Pall,
programming
67 терабайт за 7867$
По ссылке рассказывается как построить 67-и терабайтное хранилище за 7867 долларов. Жаль дома такое не поставишь — жужжать будет сильно...
^Z
Когда 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.
Ярлыки:
architecture,
highload,
programming,
server,
varnish
6 сент. 2009 г.
Разбор HTML в Markdown
Оказывается есть специальная PHP-шная библиотека для конвертации HTML-а, сгенерированного из Markdown'а обратно в Markdown: Markdownify.
Ссылки:
4 сент. 2009 г.
Внутреннее устройство графического пайплайна в айфоне
Доклад с Assembly 2009 про низкоуровневые детали устройства графического пайплайна в айфонах до 3GS от разработчиков Unity. (Слайды в PDF здесь.)
Ярлыки:
assembly-2009,
gpu,
iphone,
programming,
video
3 сент. 2009 г.
1 сент. 2009 г.
jhead: манипуляции с EXIF'ом из командной строки
Утилита командной строки jhead для работы с EXIF'ом в JPEG'ах.
Цитата со страницы программы:
Things jhead can extract from an Exif jpeg fileThings jhead can modify in 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
- 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
Ярлыки:
фотография,
command-line,
exif,
jhead,
jpeg
Fog: AGG без GPL
Anti-Grain Geometry (AGG) — замечательная библиотека для работы с графикой на CPU. К сожалению, начиная с версии 2.5 она распространяется под GPL.
Но, оказывается, не всё так плохо. Есть библиотека Fog, которая реализует алгоритмы из AGG (да ещё и с JIT-компиляцией растровых операций). Также в библиотеке есть поддержка других вкусностей вроде многопоточных операций с изображениями. Fog распространяется под лицензией MIT.
Библиотека, судя по всему, пока сыровата, но некоторые штуки вытащить вполне возможно. Например, улучшенную реализацию (искать "[Fog::Raster_C - StackBlur]") stack blur'а.
Ярлыки:
agg,
anti-grain geometry,
fog,
graphics,
programming
OProfile
OProfile — профайлер, работающий на уровне системы, с малым оверхедом, не требует перекомпиляции изучаемой программы. Позволяет при желании снимать данные со всей системы сразу.
Ярлыки:
links,
oprofile,
optimization,
profiling,
programming
Аналог StackOverflow.com для вебдизайнеров...
...называется doctype.com
В семействе StackOverflow есть и ещё пара полезных сайтов:
- ServerFault.com — для админов
- SuperUser.com — для "юзерских" вопросов
Всё для котофилов...
...и фелиноманов. Магазин котосувениров:
К сожалению, доставка только по Великобритании...
Slowloris HTTP DoS
Нестандартный способ ДоС-атаки, о котором нужно помнить при реализации веб-сервера:
Нужно в каждом коннекшене отправлять HTTP-заголовки по одной штуке, с наименьшей скоростью, какую только позволяет таймаут на сервере. Таким образом на сервере достаточно бысто исчерпывается число коннекшенов.
Подробная статья и перловый скрипт для тестов на уязвимость здесь: http://ha.ckers.org/slowloris/
Подписаться на:
Сообщения (Atom)