<?xml version="1.0" encoding="utf-8"?>
<!-- If you are running a bot please visit this policy page outlining rules you must respect. http://www.livejournal.com/bots/ -->
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:lj="http://www.livejournal.com">
  <id>urn:lj:livejournal.com:atom1:0x1392</id>
  <title>stdout</title>
  <subtitle>Old fashioned S010</subtitle>
  <author>
    <name>Old fashioned S010</name>
  </author>
  <link rel="alternate" type="text/html" href="http://0x1392.livejournal.com/"/>
  <link rel="self" type="text/xml" href="http://0x1392.livejournal.com/data/atom"/>
  <updated>2010-01-08T04:00:05Z</updated>
  <lj:journal userid="9738662" username="0x1392" type="personal"/>
  <link rel="service.feed" type="application/x.atom+xml" href="http://0x1392.livejournal.com/data/atom" title="stdout"/>
  <link rel="hub" href="http://pubsubhubbub.appspot.com/"/>
  <entry>
    <id>urn:lj:livejournal.com:atom1:0x1392:199828</id>
    <link rel="alternate" type="text/html" href="http://0x1392.livejournal.com/199828.html"/>
    <link rel="self" type="text/xml" href="http://0x1392.livejournal.com/data/atom/?itemid=199828"/>
    <title>0x1392 @ 2010-01-08T06:00:00</title>
    <published>2010-01-08T04:00:05Z</published>
    <updated>2010-01-08T04:00:05Z</updated>
    <content type="html">&lt;pre&gt;		WARNING TO ALL PERSONNEL:

Firings will continue until morale improves.
&lt;/pre&gt;&lt;p&gt;&lt;small&gt;Fridaily &lt;a href="http://www.openbsd.org/cgi-bin/man.cgi?query=fortune&amp;amp;apropos=0&amp;amp;sektion=6&amp;amp;manpath=OpenBSD+Current&amp;amp;arch=i386&amp;amp;format=html"&gt;fortune(6)&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:0x1392:199505</id>
    <link rel="alternate" type="text/html" href="http://0x1392.livejournal.com/199505.html"/>
    <link rel="self" type="text/xml" href="http://0x1392.livejournal.com/data/atom/?itemid=199505"/>
    <title>0x1392 @ 2010-01-01T06:00:00</title>
    <published>2010-01-01T04:00:05Z</published>
    <updated>2010-01-01T04:00:05Z</updated>
    <content type="html">&lt;pre&gt;Subtlety is the art of saying what you think and getting out of the way
before it is understood.
&lt;/pre&gt;&lt;p&gt;&lt;small&gt;Fridaily &lt;a href="http://www.openbsd.org/cgi-bin/man.cgi?query=fortune&amp;amp;apropos=0&amp;amp;sektion=6&amp;amp;manpath=OpenBSD+Current&amp;amp;arch=i386&amp;amp;format=html"&gt;fortune(6)&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:0x1392:199298</id>
    <link rel="alternate" type="text/html" href="http://0x1392.livejournal.com/199298.html"/>
    <link rel="self" type="text/xml" href="http://0x1392.livejournal.com/data/atom/?itemid=199298"/>
    <title>Avatar</title>
    <published>2009-12-27T17:42:49Z</published>
    <updated>2009-12-27T18:24:42Z</updated>
    <category term="movies"/>
    <category term="awesome"/>
    <category term="opinion"/>
    <content type="html">&lt;small&gt;a write-up in English so i could copy paste it to one forum.. xD&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;So we went to see Avatar today with friends, in 3D. Boy, that was an experience. The special effects were indeed pretty amazing, I've seen attempts to create life-like characters before, but I could always distinguish them from real thing, no matter how good the animation was. This time.. Well, I think I pretty much accepted the CG characters as though they were real.&lt;br /&gt;I could feel emotions from them. I think in the area of visual effects, this is what makes this film really special. The CG characters which don't feel like they're unreal.&lt;br /&gt;&lt;br /&gt;Aside from FX, I liked the story.&lt;br /&gt;sort of spoilers ahead&lt;br /&gt;&lt;span style="color:black; background-color: black"&gt;The message of this movie is very true and actual. Indeed the human kind should stop for a minute and think about what's it doing to it's own planet. And also learn to appreciate what has been given to us.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Avatar is a beautiful movie.&lt;br /&gt;&lt;br /&gt;I didn't really like the faces of Navi when I first saw them on the net, but now that I watched the movie..&lt;br /&gt;&lt;br /&gt;Avatar reminds me a little bit of &lt;a href="http://en.wikipedia.org/wiki/Unreal"&gt;Unreal&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;---&lt;br /&gt;&lt;br /&gt;The 3D -- haha, I almost thought there that we are gonna be handed glasses with red and blue lenses, but they use the real thing, i.e. glasses with LCD shutters. The movie is shown at twice the usual framerate, and each subsequent frame is shown for the left or the right eye in turn, the LCD lenses in the glasses shut closed in synchronisation with the movie, preventing the left eye from seeing the picture for the right eye and vice versa.&lt;br /&gt;Judging from a thick frame -- they have batteries inside, and are synchronised by infra-red (?) signals. There is a spot in the middle of the frame, between the eyes, just like on a remote controlled TV. The synchronisation signal emitter is probably hanging somewhere under the ceiling.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:0x1392:198957</id>
    <link rel="alternate" type="text/html" href="http://0x1392.livejournal.com/198957.html"/>
    <link rel="self" type="text/xml" href="http://0x1392.livejournal.com/data/atom/?itemid=198957"/>
    <title>void *</title>
    <published>2009-12-27T02:15:37Z</published>
    <updated>2009-12-27T02:15:45Z</updated>
    <category term="music"/>
    <content type="html">&lt;lj-embed id="223" /&gt;&lt;br /&gt;Выложил трек тот, который два чтоли года назад делал в Jeskola Buzz, на YouTube.&lt;br /&gt;Называется &lt;code&gt;void *&lt;/code&gt;, указатель в ничто. Меня вставляет эта концепция, просто mind-boggling, указатель в память не имеющей тип~&lt;br /&gt;Начало дерьмовое, но конец мне кажется хорошо вышел.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:0x1392:198878</id>
    <link rel="alternate" type="text/html" href="http://0x1392.livejournal.com/198878.html"/>
    <link rel="self" type="text/xml" href="http://0x1392.livejournal.com/data/atom/?itemid=198878"/>
    <title>STAR TREK</title>
    <published>2009-12-26T22:07:23Z</published>
    <updated>2009-12-26T22:07:23Z</updated>
    <category term="awesome"/>
    <category term="tv"/>
    <category term="shows"/>
    <content type="html">&lt;lj-embed id="216" /&gt;&lt;br /&gt;&lt;br /&gt;Закончил смотреть &lt;i&gt;STAR TREK&lt;/i&gt; the original series.&lt;br /&gt;&lt;br /&gt;Обалденный сериал, я вам скажу.&lt;br /&gt;&lt;br /&gt;Рассказывается в ST, о приключениях капитана Кирка и экипажа космического корабля U.S.S. Enterprise, состоящего в флоте Объединенённой Федерации Планет.&lt;br /&gt;Basically, они путешествуют по галактике, выполняя разные миссии порученные Командованием Звездного Флота, к примеру на одной планете случилось гуманитраное бедствие и нужно доставить с другой планеты нужный ресурс. Но одна из главных их задач -- просто исследование космоса. По пути они встречают разные трудности, невиданные доселе природные явления, встречают новые формы жизни и т.д. При этом на протяжении всего сериала исследуются темы морали, любви, храбрости, что есть добро что зло и т.д.&lt;br /&gt;&lt;br /&gt;&lt;a name="cutid1"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://img707.imageshack.us/img707/6404/grab01541.jpg"&gt;&lt;br /&gt;Доктор МакКой и капитан Кирк&lt;br /&gt;&lt;br /&gt;&lt;img src="http://img694.imageshack.us/img694/2851/grab01585.jpg"&gt;&lt;br /&gt;МакКой и Спок вечно не ладят, видимо из-за сильной разности в том плане что МакКой гуманист, ведомый чувством, а Спок мало того что ученый, так еще и с планеты Вулкан, жители которой полностью отказались от эмоций которые служат началом войнам конфликтам и вообще многим плохим вещам...&lt;br /&gt;&lt;br /&gt;&lt;img src="http://img691.imageshack.us/img691/6343/grab01587.jpg"&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://img689.imageshack.us/img689/7171/grab52841.jpg"&gt;&lt;br /&gt;Сулу и ..Чехов, русский! Навигаторы или что-то вроде того.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://img707.imageshack.us/img707/7341/grab70781.jpg"&gt;&lt;br /&gt;Лейтенант Ухура, communications officer.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://img199.imageshack.us/img199/1773/grab10387.jpg" border="0" alt="Image Hosted by ImageShack.us"&gt;&lt;br /&gt;Скотт, chief engineer, знает устройство корабля как свои пять пальцев.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://img199.imageshack.us/img199/3648/grab71037.jpg"&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://img32.imageshack.us/img32/2047/grab71185.jpg"&gt;&lt;br /&gt;U.S.S. Enterprise&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Обязателен к просмотру если есть интерес к sci-fi.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:0x1392:198618</id>
    <link rel="alternate" type="text/html" href="http://0x1392.livejournal.com/198618.html"/>
    <link rel="self" type="text/xml" href="http://0x1392.livejournal.com/data/atom/?itemid=198618"/>
    <title>pasuto future</title>
    <published>2009-12-25T12:04:36Z</published>
    <updated>2009-12-25T12:25:24Z</updated>
    <category term="awesome"/>
    <category term="jpop"/>
    <category term="music"/>
    <category term="namie amuro"/>
    <category term="mad skillz"/>
    <content type="html">Сделал еще один опрос для jpopmusic.com/forums, типа, оценка нового альбома Намие. Зацените дезигн:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img7.imageshack.us/i/0005jx.jpg/" target="_blank"&gt;&lt;img src="http://img7.imageshack.us/img7/8112/0005jx.th.jpg" border="0" alt="Free Image Hosting at www.ImageShack.us" /&gt;&lt;/a&gt; &lt;a href="http://img686.imageshack.us/i/0006o.jpg/" target="_blank"&gt;&lt;img src="http://img686.imageshack.us/img686/4117/0006o.th.jpg" border="0" alt="Free Image Hosting at www.ImageShack.us" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Сделал из вот этого скана буклета к альбому:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img686.imageshack.us/i/pastfuture.jpg/" target="_blank"&gt;&lt;img src="http://img686.imageshack.us/img686/5662/pastfuture.th.jpg" border="0" alt="Free Image Hosting at www.ImageShack.us" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Альбом я получил уже кстати =) Блин, надо как-то найти время и сфоткать весь jpop-связанный хлам который у меня уже накопился. Некоторые вещи я здесь в жж вообще не упоминал.&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;А, еще сделал маленькую фишечку. Случалось ли с вами что вам попадался файл в непонятно каком формате? Ну в UNIX для этого случая есть команда &lt;code&gt;&lt;a href="http://www.openbsd.org/cgi-bin/man.cgi?query=file&amp;amp;apropos=0&amp;amp;sektion=0&amp;amp;manpath=OpenBSD+Current&amp;amp;arch=i386&amp;amp;format=html"&gt;file(1)&lt;/a&gt;&lt;/code&gt;, которая сканирует файл и по паттернам определяет тип. Сделал веб-интерфейс к ней, макс. размер файла 2МЬ, но если файл больше, можно допустим сплитнуть его на части и загрузить первую часть.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://s010.lv/file/"&gt;http://s010.lv/file/&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:0x1392:198263</id>
    <link rel="alternate" type="text/html" href="http://0x1392.livejournal.com/198263.html"/>
    <link rel="self" type="text/xml" href="http://0x1392.livejournal.com/data/atom/?itemid=198263"/>
    <title>0x1392 @ 2009-12-25T06:00:00</title>
    <published>2009-12-25T04:00:04Z</published>
    <updated>2009-12-25T04:00:04Z</updated>
    <content type="html">&lt;pre&gt;It's not that I'm afraid to die.  I just don't want to be there when it
happens.
		-- Woody Allen
&lt;/pre&gt;&lt;p&gt;&lt;small&gt;Fridaily &lt;a href="http://www.openbsd.org/cgi-bin/man.cgi?query=fortune&amp;amp;apropos=0&amp;amp;sektion=6&amp;amp;manpath=OpenBSD+Current&amp;amp;arch=i386&amp;amp;format=html"&gt;fortune(6)&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:0x1392:197750</id>
    <link rel="alternate" type="text/html" href="http://0x1392.livejournal.com/197750.html"/>
    <link rel="self" type="text/xml" href="http://0x1392.livejournal.com/data/atom/?itemid=197750"/>
    <title>0x1392 @ 2009-12-18T06:00:00</title>
    <published>2009-12-18T04:00:04Z</published>
    <updated>2009-12-18T04:00:04Z</updated>
    <content type="html">&lt;pre&gt;Whether you can hear it or not
The Universe is laughing behind your back
		-- National Lampoon, "Deteriorata"
&lt;/pre&gt;&lt;p&gt;&lt;small&gt;Fridaily &lt;a href="http://www.openbsd.org/cgi-bin/man.cgi?query=fortune&amp;amp;apropos=0&amp;amp;sektion=6&amp;amp;manpath=OpenBSD+Current&amp;amp;arch=i386&amp;amp;format=html"&gt;fortune(6)&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:0x1392:197451</id>
    <link rel="alternate" type="text/html" href="http://0x1392.livejournal.com/197451.html"/>
    <link rel="self" type="text/xml" href="http://0x1392.livejournal.com/data/atom/?itemid=197451"/>
    <title>0x1392 @ 2009-12-15T21:30:00</title>
    <published>2009-12-15T19:31:16Z</published>
    <updated>2009-12-15T19:31:16Z</updated>
    <category term="halp"/>
    <category term="question"/>
    <content type="html">Товареще у кого Windows 7 (preferably 64bit), наблюдали ли вы у себя проблемы с новыми и не новыми играми? Имеется ввиду по сравнению с WinXP. У меня в Vista например непонятные тормоза в GTA Vice City, тогда как в XP она на макс. настройках летает. + со всякими старыми DirectX играми траблы, типа слишком быстро идет, Unreal Tournament например, Wizardry 8.. &lt;br /&gt;Xочу перетащить Windows Vista в Recycle Bin и думаю может вообще downgrade на XP сделать..</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:0x1392:197186</id>
    <link rel="alternate" type="text/html" href="http://0x1392.livejournal.com/197186.html"/>
    <link rel="self" type="text/xml" href="http://0x1392.livejournal.com/data/atom/?itemid=197186"/>
    <title>0x1392 @ 2009-12-14T02:01:00</title>
    <published>2009-12-14T00:01:43Z</published>
    <updated>2009-12-14T00:01:43Z</updated>
    <category term="random"/>
    <content type="html">Завтра.. ну то есть сегодня, на работу! Урааа! xDDD&lt;br /&gt;Ненавижу выходные :/</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:0x1392:196825</id>
    <link rel="alternate" type="text/html" href="http://0x1392.livejournal.com/196825.html"/>
    <link rel="self" type="text/xml" href="http://0x1392.livejournal.com/data/atom/?itemid=196825"/>
    <title>0x1392 @ 2009-12-11T06:00:00</title>
    <published>2009-12-11T04:00:05Z</published>
    <updated>2009-12-11T04:00:05Z</updated>
    <content type="html">&lt;pre&gt;Time flies like an arrow
Fruit flies like a banana
&lt;/pre&gt;&lt;p&gt;&lt;small&gt;Fridaily &lt;a href="http://www.openbsd.org/cgi-bin/man.cgi?query=fortune&amp;amp;apropos=0&amp;amp;sektion=6&amp;amp;manpath=OpenBSD+Current&amp;amp;arch=i386&amp;amp;format=html"&gt;fortune(6)&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:0x1392:196385</id>
    <link rel="alternate" type="text/html" href="http://0x1392.livejournal.com/196385.html"/>
    <link rel="self" type="text/xml" href="http://0x1392.livejournal.com/data/atom/?itemid=196385"/>
    <title>Best practices?</title>
    <published>2009-12-11T02:41:34Z</published>
    <updated>2009-12-11T02:41:34Z</updated>
    <category term="c"/>
    <category term="i&amp;apos;m gonna post tl;drs until you like the"/>
    <category term="tl;dr"/>
    <category term="programming"/>
    <category term="awesome"/>
    <category term="blablabla"/>
    <category term="anime"/>
    <category term="adovaiso"/>
    <content type="html">Окей, it's fflush() tiem!&lt;br /&gt;&lt;br /&gt;Досмотрел сегодня Initial D Fourth Stage, ну естественно первый сезон был самым лучшим, что ни говори. Это похоже на Thief: The Dark Project VS Thief II: The Metal Age. Техническое совершенство, миссии ориентированные в первую очередь на геймплей, а не на создание атмосферы, prodiving'а экспириенса... Кстати пословица "первый блин комом" -- мне нифига лично не нравится, ящетаю что перый блин как раз самый вкусный.&lt;br /&gt;Под конец как-то начали появлятся такие странные шутки, походу даже не специально получившиеся. Ну короче все равно, Initial D рулит, буду смотреть дальше~&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Какое-то время назад я писал о проге KeyHoleTV которая позволяет смотреть некоторые, японские теле/радио каналы, а также любительские станции (которые с помощью того же KHTV можно создавать).&lt;br /&gt;У нее есть версия и под линукс, а в OpenBSD есть поддержка бинарной эмуляции линукса, ну то бишь можно линуксовые экзешники запускать. И как я опять же уже говорил, иногда эта эмуляция работает отлично, иногда нет.&lt;br /&gt;&lt;br /&gt;Вобщем я решил попробовать запустить KeyHoleTV у себя на лаптопе. Долго мучался, скачивал всякие rpm'ы с библиотеками, устанавливал, они тянули за собой другие библиотеки и т.д.&lt;br /&gt;В конце концов дело остановилось на том что при попытке запуска, ld стал жаловатся что типа у libSDL -- executable stack o_O Вобщем я проделал for key in stack sections elf; do find memory/ -iname '*'$key'*'; done (иными словами попытался вспомнить все что знаю если что-то знаю по теме) и решил попробовать пойграть с флагами секций в elf файле программы.&lt;br /&gt;ELF -- в принципе стандартный формат выполняемый файлов на юниксен на сегодняшний день.&lt;br /&gt;А потом &lt;s&gt;я не смог дверь сломать&lt;/s&gt; мне не удалось найти никакого редактора ELF файлов, поэтому я решил при помощи libelf быстренько на левой пятке задней ноги нижней части туловища написать малюсенькую прогу которая только и делала бы что меняла RWX флаги на секциях. Написал, игрался там, менял флаги у бинарника -- но нифига не вышло. Он походу как-то динамически наверное менял аксесс мод на память, вроде с помощью mprotect. На след. день я тупо на работе скомпилил SDL, каким-то раком, не помню каким, отключив эту фишку (а, помоему я configure скрипт испоганил так, чтобы он не находил mprotect =), принес домой, затаив дыхание набрал ./lkeyholetv, нажал Enter ииииИИ... Segmentation fault!! FUUUUUUUUUUUUUUUU- &amp;gt;&amp;lt;&lt;br /&gt;&lt;br /&gt;Но вообще я не об этом хотел рассказать =)&lt;br /&gt;Когда я лазил по интернетам в поисках доков к libelf, то в конце концов остановился на странице братцев-ФриБСДшников: &lt;a href="http://people.freebsd.org/~jkoshy/download/libelf/article.html"&gt;http://people.freebsd.org/~jkoshy/download/libelf/article.html&lt;/a&gt;.&lt;br /&gt;Пока я читал этот туториал, ( хотя я только где-то половину прочитал, на больше у меня не хватило мужества D: ) я офигел с того как чел мастерски владеет Си Препроцессором!! =о Словно препроцессор -- это продолжение его руки, он рассекает им нудные повторяющиеся куски кода как горячий нож масло! =о&lt;br /&gt;Вобщем я сильно вдохновился, и начал тоже весьма активно юзать препроцессор.&lt;br /&gt;&lt;br /&gt;Фишка/и/аи:&lt;br /&gt;1. Заменяем какой-то нудный/некрасивый/обфускированный_мама_не_горюй/просто_длинный кусок кода, каким-то коротким, емким названием которое отражает &lt;i&gt;суть&lt;/i&gt; этого кода&lt;br /&gt;2. Зачем &lt;code&gt;{ name, "name" ... }&lt;/code&gt;, если можно &lt;code&gt;MACRO(name)&lt;/code&gt;&lt;br /&gt;3. Не факт, но скорее всего, когда понадобятся изменения, можно будет просто поправить один этот макрос&lt;br /&gt;&lt;br /&gt;На работе вот неплохо удалось поюзать уже это дело, типа (1)&lt;br /&gt;было&lt;br /&gt;&lt;code&gt;if (var1 == что-то &amp;amp;&amp;amp; var2 == ....&lt;/code&gt; и так до фига&lt;br /&gt;стало&lt;br /&gt;&lt;code&gt;#define IS_ТАКОЙ-ТО_MSG() var1 == что-то &amp;amp;&amp;amp; var2 == ....&lt;br /&gt;#define ...&lt;br /&gt;if (IS_ТАКОЙ-ТО_MSG()) { ...&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;и (2)&lt;br /&gt;&lt;br /&gt;&lt;code style="white-space: pre"&gt;&lt;br /&gt;#define NELEMS(a) (sizeof(a)/sizeof(a[0]))&lt;br /&gt;#define END_OF(a) (a + NELEMS(a))&lt;br /&gt;...&lt;br /&gt;struct PointerPair {&lt;br /&gt;    SomeType *begin, *end&lt;br /&gt;} pointer_pairs[] = {&lt;br /&gt;#   define POINTER_PAIR(a) { a, END_OF(a) }&lt;br /&gt;    POINTER_PAIR(array1),&lt;br /&gt;    POINTER_PAIR(array2)&lt;br /&gt;    ...&lt;br /&gt;}, p_pair;&lt;br /&gt;...&lt;br /&gt;p_pair = pointer_pairs[some_index];&lt;br /&gt;for_each(p_pair.begin, p_pair.end, someFunc);&lt;br /&gt;...&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;А сегодня вот шкодил одну штуку (на старом добром Си) и понадобился мне стэк, я подумал почему бы не сделать что-то вроде С++ного тэмплейта :D А ч0, C++ ведь начинался как расширения к препроцессору Си.&lt;br /&gt;&lt;br /&gt;Вот такой получился макрос&lt;br /&gt;&lt;br /&gt;&lt;code style="white-space: pre"&gt;#define DEFINE_STACK(NAME, TYPE) \&lt;br /&gt;struct NAME##stack { \&lt;br /&gt;    TYPE *v; \&lt;br /&gt;    size_t n; \&lt;br /&gt;    size_t el_size; \&lt;br /&gt;}; \&lt;br /&gt;typedef struct NAME##stack NAME##stack_t; \&lt;br /&gt; \&lt;br /&gt;static void \&lt;br /&gt;NAME##stack_init(struct NAME##stack *st) { \&lt;br /&gt;    bzero(st, sizeof(struct NAME##stack)); \&lt;br /&gt;    st-&amp;gt;el_size = sizeof(TYPE); \&lt;br /&gt;} \&lt;br /&gt; \&lt;br /&gt;static void \&lt;br /&gt;NAME##stack_cleanup(struct NAME##stack *st) { \&lt;br /&gt;    free(st-&amp;gt;v); \&lt;br /&gt;    NAME##stack_init(st); \&lt;br /&gt;} \&lt;br /&gt; \&lt;br /&gt;static void \&lt;br /&gt;NAME##stack_push(struct NAME##stack *st, TYPE val) { \&lt;br /&gt;    st-&amp;gt;v = realloc(st-&amp;gt;v, ++st-&amp;gt;n * st-&amp;gt;el_size); \&lt;br /&gt;    st-&amp;gt;v[st-&amp;gt;n - 1] = val; \&lt;br /&gt;} \&lt;br /&gt; \&lt;br /&gt;static TYPE \&lt;br /&gt;NAME##stack_pop(struct NAME##stack *st) { \&lt;br /&gt;    TYPE val; \&lt;br /&gt; \&lt;br /&gt;    if (st-&amp;gt;n == 0) \&lt;br /&gt;        return (TYPE) 0; \&lt;br /&gt; \&lt;br /&gt;    val = st-&amp;gt;v[st-&amp;gt;n - 1]; \&lt;br /&gt;    st-&amp;gt;v = realloc(st-&amp;gt;v, --st-&amp;gt;n * st-&amp;gt;el_size); \&lt;br /&gt; \&lt;br /&gt;    return val; \&lt;br /&gt;} \&lt;br /&gt; \&lt;br /&gt;static TYPE \&lt;br /&gt;NAME##stack_peek(struct NAME##stack *st) { \&lt;br /&gt;    if (st-&amp;gt;n == 0) \&lt;br /&gt;        return (TYPE) 0; \&lt;br /&gt;    return st-&amp;gt;v[st-&amp;gt;n - 1]; \&lt;br /&gt;} &lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Beauuuutiful...&lt;br /&gt;&lt;br /&gt;Ну я такой, простенький сделал.. Чтобы заюзать его, надо просто в .с файле &lt;code&gt;DEFINE_STACK(name, type)&lt;/code&gt;, где name -- приставка которая будет у имени структуры и тайпдэфа и у всех функций, а type -- тип который будет в стэке хранится. &lt;small&gt;(Я в курсе что надо проверять что realloc возвращает, это просто набросок пишу)&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;На самом деле я 100% когда-то в прошлом видел где-то подобные макросы, но где точно -- не могу вспомнить. Ну возможно что в той же /usr/include, ибо когда "портировал" cwm на линукс, увидел что он юзает например очереди, которые типа тоже как макрос приведенный выше.. Где-то они там в /usr/include живут.. Короче find /usr/include | fgrep -o TAILQ а я пополз спать ~.~</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:0x1392:196032</id>
    <link rel="alternate" type="text/html" href="http://0x1392.livejournal.com/196032.html"/>
    <link rel="self" type="text/xml" href="http://0x1392.livejournal.com/data/atom/?itemid=196032"/>
    <title>0x1392 @ 2009-12-09T12:56:00</title>
    <published>2009-12-09T10:57:03Z</published>
    <updated>2009-12-09T10:57:03Z</updated>
    <category term="awesome"/>
    <category term="holy shit"/>
    <category term="uh-oh"/>
    <content type="html">&lt;a href="http://science.slashdot.org/story/09/12/08/2143212/Super-Strength-Substance-Approaching-Human-Trials"&gt;http://science.slashdot.org/story/09/12/08/2143212/Super-Strength-Substance-Approaching-Human-Trials&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Супер мутанты!&lt;a href="http://fallout.wikia.com/wiki/Super_mutant"&gt;*&lt;/a&gt; Скоро и на военной базе в вашем городе!</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:0x1392:195663</id>
    <link rel="alternate" type="text/html" href="http://0x1392.livejournal.com/195663.html"/>
    <link rel="self" type="text/xml" href="http://0x1392.livejournal.com/data/atom/?itemid=195663"/>
    <title>0x1392 @ 2009-12-08T10:00:00</title>
    <published>2009-12-08T08:00:59Z</published>
    <updated>2009-12-08T08:00:59Z</updated>
    <category term="щито?"/>
    <category term="c++"/>
    <category term="random"/>
    <content type="html">Читал вчера про smart pointers, умные пойнтеры, позабавило... Придумались еще самонаводящиеся пойнтеры, и стратегические межконтинентальные пойнтеры =)</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:0x1392:195539</id>
    <link rel="alternate" type="text/html" href="http://0x1392.livejournal.com/195539.html"/>
    <link rel="self" type="text/xml" href="http://0x1392.livejournal.com/data/atom/?itemid=195539"/>
    <title>0x1392 @ 2009-12-06T00:34:00</title>
    <published>2009-12-05T22:35:32Z</published>
    <updated>2009-12-05T22:38:04Z</updated>
    <category term="thoughts"/>
    <category term="awesome"/>
    <category term="blablabla"/>
    <category term="desires"/>
    <category term="anime"/>
    <content type="html">&lt;p&gt;Хочется пересмотреть Ergo Proxy.&lt;/p&gt;

&lt;p&gt;&lt;lj-embed id="180" /&gt;&lt;/p&gt;

&lt;p&gt;Тёмное, стильное, постапокалиптическое аниме и настолько наполнено всяческими символизмами, что каждый человек найдет в нем свою истину.&lt;/p&gt;
&lt;hr noshade="noshade"&gt;
&lt;p&gt;Написал решение задачки у &lt;span class='ljuser ljuser-name_plakhov' lj:user='plakhov' style='white-space: nowrap;'&gt;&lt;a href='http://plakhov.livejournal.com/profile'&gt;&lt;img src='http://l-stat.livejournal.com/img/userinfo.gif' alt='[info]' width='17' height='17' style='vertical-align: bottom; border: 0; padding-right: 1px;' /&gt;&lt;/a&gt;&lt;a href='http://plakhov.livejournal.com/'&gt;&lt;b&gt;plakhov&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;'a, &lt;a href="http://pastebin.com/m598ccc78"&gt;http://pastebin.com/m598ccc78&lt;/a&gt;. Попутно нашел две ошибки в решении которое предлагал. Потом начал эксперементировать с куском который типа решает выбирать или нет и пришел к выводу что задача сформулирована слишком туманно. В смысле, &lt;i&gt;насколько&lt;/i&gt; должен выбор зависеть от веса объекта?&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:0x1392:195112</id>
    <link rel="alternate" type="text/html" href="http://0x1392.livejournal.com/195112.html"/>
    <link rel="self" type="text/xml" href="http://0x1392.livejournal.com/data/atom/?itemid=195112"/>
    <title>Surprise... ENGLISH LESSON!!</title>
    <published>2009-12-05T14:33:29Z</published>
    <updated>2009-12-05T14:33:29Z</updated>
    <category term="random"/>
    <category term="жесть"/>
    <category term="lol"/>
    <content type="html">&lt;lj-embed id="179" /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:0x1392:194930</id>
    <link rel="alternate" type="text/html" href="http://0x1392.livejournal.com/194930.html"/>
    <link rel="self" type="text/xml" href="http://0x1392.livejournal.com/data/atom/?itemid=194930"/>
    <title>0x1392 @ 2009-12-05T15:34:00</title>
    <published>2009-12-05T13:34:59Z</published>
    <updated>2009-12-05T13:34:59Z</updated>
    <category term="shit happens"/>
    <category term="негодуе"/>
    <content type="html">Пару дней назад, при попытке зайти в интернеты, увидел вот такое:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img442.imageshack.us/i/0053u.jpg/" target="_blank"&gt;&lt;img src="http://img442.imageshack.us/img442/6486/0053u.th.jpg" border="0" alt="Free Image Hosting at www.ImageShack.us" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Во-первых это подтверждает что по-крайней мере www траффик идет через какой-то прокси или жуй-знает что. До этого, я однажды "увидел" этот прокси случайно, там толи на сайте толи где была ошибка, я уже не помню точно, и короче этот прокси выкинул ошибку. А еще из-за этого их говна, у меня некоторые сайты не открываются вообще. Например tinypic и картинки с него не грузятся, дом-страница Fallout 3...&lt;br /&gt;"Программа" представляет собой bat-ник который ставит всем сетевым интерфейсам автонастройку по DHCP.&lt;br /&gt;И какая мне на жуй разница какая и них там сеть, если у меня все-равно cap стоит на максимальную скорость?&lt;br /&gt;&lt;br /&gt;Во-вторых, поменялись IP-адреса -- а хоумпагу я хостю на домашнем сервере. Я регистрировал доменное имя когда у nic.lv еще не было никакой электронной системы управления. Вобщем написал им e-mail чтобы поменяли IP и заодно привязали доменное имя к акку который я создал на nic.lv, вчера вечером прихожу, читаю мыло: "Пожалуйста подтвердите внесение изменений ответив на это письмо". По выходным они естественно не работают. В итоге уже который день s010.lv не работает!&lt;br /&gt;&lt;br /&gt;НЕГОДУЕ!!! &amp;gt;&amp;lt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:0x1392:194725</id>
    <link rel="alternate" type="text/html" href="http://0x1392.livejournal.com/194725.html"/>
    <link rel="self" type="text/xml" href="http://0x1392.livejournal.com/data/atom/?itemid=194725"/>
    <title>0x1392 @ 2009-12-05T00:08:00</title>
    <published>2009-12-04T22:09:32Z</published>
    <updated>2009-12-04T22:09:32Z</updated>
    <category term="random"/>
    <category term="programming"/>
    <content type="html">Интересная задачка по программированию: &lt;a href="http://plakhov.livejournal.com/116046.html"&gt;http://plakhov.livejournal.com/116046.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Самое интересное в ней то, что когда я ее "решил" (я не знаю правильно ли), я не &lt;s&gt;смог дверь сломать&lt;/s&gt; осознал что не знаю как проверить решение (имеется ввиду теоретически, а не запустить и посмотреть что будет, лол). Конкретно, как оценить насколько выполняется условие что порядок объекта в очереди не должен влиять на вероятность выбора этого объекта. Наверное надо это все дело каким-то раком конвертировать в математическую функцию и исследовать эту функцию? Хм..</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:0x1392:194466</id>
    <link rel="alternate" type="text/html" href="http://0x1392.livejournal.com/194466.html"/>
    <link rel="self" type="text/xml" href="http://0x1392.livejournal.com/data/atom/?itemid=194466"/>
    <title>0x1392 @ 2009-12-04T06:00:00</title>
    <published>2009-12-04T04:00:04Z</published>
    <updated>2009-12-04T04:00:04Z</updated>
    <content type="html">&lt;pre&gt;Please, won't somebody tell me what diddie-wa-diddie means?
&lt;/pre&gt;&lt;p&gt;&lt;small&gt;Fridaily &lt;a href="http://www.openbsd.org/cgi-bin/man.cgi?query=fortune&amp;amp;apropos=0&amp;amp;sektion=6&amp;amp;manpath=OpenBSD+Current&amp;amp;arch=i386&amp;amp;format=html"&gt;fortune(6)&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:0x1392:194097</id>
    <link rel="alternate" type="text/html" href="http://0x1392.livejournal.com/194097.html"/>
    <link rel="self" type="text/xml" href="http://0x1392.livejournal.com/data/atom/?itemid=194097"/>
    <title>gogov gogov paciaAaaAaa</title>
    <published>2009-12-04T03:27:24Z</published>
    <updated>2009-12-04T03:27:24Z</updated>
    <category term="random"/>
    <category term="awesome"/>
    <category term="music"/>
    <content type="html">&lt;p&gt;Жесть, наткнулся на ютубах на contemporary грузинскую попсу&lt;/p&gt;

&lt;p&gt;&lt;lj-embed id="175" /&gt;&lt;/p&gt;

&lt;p&gt;Клип не ахти (бюджет видимо невелик был), но сама песня.. Это именно то чего я так долго хотел, именно то, что я больше всего люблю, catchy дэнс-поп с красивым женским пением! &amp;gt;&amp;lt;&lt;br&gt;
И дэвушк красивая.. Эх..&lt;/p&gt;

&lt;p&gt;საკარტველოს გაუმარჯოს! :D&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:0x1392:193920</id>
    <link rel="alternate" type="text/html" href="http://0x1392.livejournal.com/193920.html"/>
    <link rel="self" type="text/xml" href="http://0x1392.livejournal.com/data/atom/?itemid=193920"/>
    <title>Сказки</title>
    <published>2009-12-03T21:29:48Z</published>
    <updated>2009-12-03T21:29:48Z</updated>
    <category term="thoughts"/>
    <category term="random"/>
    <category term="experiences"/>
    <category term="blablabla"/>
    <category term="tl;dr"/>
    <category term="programming"/>
    <lj:music>KAJIURA Yuki - Open Your Heart | Powered by Last.fm</lj:music>
    <content type="html">&lt;p&gt;&lt;small&gt;начал писать еще в поезде, поэтому на онглейскам&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;The lesson I learned today is that before you start optimizing something, you must make sure that you're optimizing the right thing =)&lt;/p&gt;
&lt;p&gt;The system analyst gave me a task to fix one thing and asked to make it reasonably fast, meaning so that the code would be fast.&lt;/p&gt;
&lt;p&gt;The code was written in C mostly with some rare feats of C++ used and mostly worked with C-strings checking them for certain conditions, parsing a bit, and modifying them. So I fixed the problem making some minor optimizations along the way or maybe even not optimizations but you know, simplifying, using library functions instead of square wheels, stuff like that.&lt;/p&gt;
&lt;p&gt;Then I isolated all the code that was involved into a separate file, basically made kinda like a testing shell for this code, ran it against example strings some 150000 times and measured the time, even though my code added some more work to be done, it was faster than the old code by ~one second. But still, considering that the machine had a 3 Ghz Pentium 4, I wasn't satisfied by the execution time.&lt;/p&gt;
&lt;p&gt;I looked at the functions which I wrote and modified but they were already optimized to the limit, or let's put it like this, any further optimizations wouldn't be worth the effort. I was about to let it go, but a gut feeling told me to do a profiling of the program. I compiled the prog like &lt;code&gt;g++ -gp test.cc -o test&lt;/code&gt; ran it and then looked at the results with &lt;a href="http://www.openbsd.org/cgi-bin/man.cgi?query=gprof&amp;amp;apropos=0&amp;amp;sektion=0&amp;amp;manpath=OpenBSD+Current&amp;amp;arch=i386&amp;amp;format=html"&gt;gprof(1)&lt;/a&gt;. The profiling showed me that ~70% of the execution time was spent in just one function, the one I had completely overlooked, the one which was at least two screens higher than the code I was working on =)&lt;/p&gt;
&lt;p&gt;I looked at that function... And everything was clear to me from the first sight, the function was converting a string which contained unprintable (lol) characters into a string with hex-codes in place of those chars.&lt;/p&gt;
&lt;p&gt;The body of the loop looked approximately like this:&lt;/p&gt;

&lt;p&gt;&lt;code style="white-space: pre"&gt;...
{
	if (c &amp;lt; LOWER &amp;&amp; c &amp;gt; UPPER)
		sprintf(tmpbuf, "\\%02x", c);
	else
		sprintf(tmpbuf, "%c", c);
	
	strcat(buf, tmpbuf);
}
...&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I rewrote it like this:&lt;/p&gt;

&lt;p&gt;&lt;code style="white-space: pre"&gt;...
static const char *hex_tab[] = {
	'0', '1', '2', '3',
	'4', '5', '6', '7',
	'8', '9', 'a', 'b',
	'c', 'd', 'e', 'f'
};
...
{
	if (isgraph(*p)) {
		*q++ = *p;
	} else {
		*q++ = '\\';
		*q++ = hex_tab[(*p &amp;gt;&amp;gt; 4) &amp; 0xf];
		*q++ = hex_tab[*p &amp; 0xf];
	}
}
...&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The execution time went down from 11 seconds to ~1.5 second.&lt;/p&gt;

&lt;p&gt;I knew the time I spent sitting at home in summer a few years ago, doing all those excercises from The C Programming Language while everyone was having a good time in Jurmala wasn't a waste!&lt;/p&gt;
&lt;hr noshade="noshade"&gt;
&lt;p&gt;Еще я недавно писал одну хрень, где надо было типа на основании того что пришло во входяшем сообщении, составить исходящее сообщение и передать дальше. Правила короче нужны были.&lt;/p&gt;
&lt;p&gt;Я в конце концов определился со структурами данных, но не обрел умиротворения. Как-то уж слишком громоздко все получалось. Я хотел было использовать еще более хитрую структуру данных, которая уже чем-то смахивала на выполняемый байт-код и вот тогда то я и осознал одну вещь.&lt;/p&gt;
&lt;p&gt;Я осознал, что фактически, пытаюсь избавиться от этих правил вообще. Пытаюсь сделать так, чтобы мне не надо было программировать эти правила. Но фишка в том, что чтобы я не делал -- эти правила все равно придется о/писать. Хоть структурой данных, хоть продвинутой байт-код подобной структурой данных, хоть написать их на встроенном скриптовом языке. Это неизбежно.&lt;/p&gt;
&lt;p&gt;Компьютер делает только то, что я ему говорю делать, а не то что я хочу чтобы он сделал. (видел эту фразу однажды в fortune'е)&lt;/p&gt;
&lt;p&gt;&lt;small&gt;статья опубликована с письменного разрешения Капитана Очевидности&lt;/small&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:0x1392:193640</id>
    <link rel="alternate" type="text/html" href="http://0x1392.livejournal.com/193640.html"/>
    <link rel="self" type="text/xml" href="http://0x1392.livejournal.com/data/atom/?itemid=193640"/>
    <title>0x1392 @ 2009-12-03T19:56:00</title>
    <published>2009-12-03T17:56:47Z</published>
    <updated>2009-12-03T17:56:47Z</updated>
    <category term="random"/>
    <category term="blablabla"/>
    <content type="html">В Vim можно отключить менюбар и тулбар, получается больше места для текста. Все равно я ими никогда не пользуюсь.&lt;br /&gt;Добавить сюда менеджер окон который не отображает тайтлбары для окон, и мне на ум почему-то приходит тот анекдот про поручика Ржевского, "без окон без дверей полна *0πα огурцов" =) Ох уж это ассоциативное мем-мышление~</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:0x1392:193113</id>
    <link rel="alternate" type="text/html" href="http://0x1392.livejournal.com/193113.html"/>
    <link rel="self" type="text/xml" href="http://0x1392.livejournal.com/data/atom/?itemid=193113"/>
    <title>Reposting for awesomeness</title>
    <published>2009-11-29T19:20:07Z</published>
    <updated>2009-11-29T19:20:35Z</updated>
    <category term="awesome"/>
    <category term="music"/>
    <content type="html">Мне тут напомнили о существовании российской попсы..&lt;br /&gt;&lt;br /&gt;Жанна Фриске - Где-то летом&lt;br /&gt;&lt;lj-embed id="168" /&gt;&lt;br /&gt;&lt;br /&gt;Жанна Фриске - Ла ла ла&lt;br /&gt;&lt;lj-embed id="169" /&gt;&lt;br /&gt;&lt;br /&gt;Мне нравится разная музыка, от классики до попсы. Кто-то очень хорошо заметил:&lt;br /&gt;"У некоторых людей неадекватная реакция на поп-исполнителей)) Мне нравиться, с детства﻿ еще, а вообще хардкорчик слушаю, но одно другому не мешает)"&lt;br /&gt;&lt;br /&gt;Олсо, сексапильность &amp;gt;9000.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:0x1392:192686</id>
    <link rel="alternate" type="text/html" href="http://0x1392.livejournal.com/192686.html"/>
    <link rel="self" type="text/xml" href="http://0x1392.livejournal.com/data/atom/?itemid=192686"/>
    <title>0x1392 @ 2009-11-28T19:56:00</title>
    <published>2009-11-28T17:56:57Z</published>
    <updated>2009-11-28T17:56:57Z</updated>
    <category term="regret"/>
    <category term="events"/>
    <content type="html">&lt;a href="http://ccfilms.livejournal.com/916.html"&gt;http://ccfilms.livejournal.com/916.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Мде, как всегда затормозил. Сходить надо было...</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:0x1392:192128</id>
    <link rel="alternate" type="text/html" href="http://0x1392.livejournal.com/192128.html"/>
    <link rel="self" type="text/xml" href="http://0x1392.livejournal.com/data/atom/?itemid=192128"/>
    <title>Neutral Good</title>
    <published>2009-11-27T01:20:06Z</published>
    <updated>2009-11-27T01:20:06Z</updated>
    <category term="random"/>
    <content type="html">Чего-то мне приспичило узнать какой у меня alignment по D&amp;amp;D.&lt;br /&gt;&lt;br /&gt;Based on your answers to the quiz, your character’s most likely alignment is Neutral Good.&lt;br /&gt;&lt;br /&gt;Neutral Good&lt;br /&gt;&lt;br /&gt;A neutral good character does the best that a good person can do. He is devoted to helping others. He works with kings and magistrates but does not feel beholden to them. The common phrase for neutral good is "true good." Neutral good is the best alignment you can be because it means doing what is good without bias toward or against order.&lt;br /&gt;&lt;br /&gt;--excerpted from the Player’s Handbook, Chapter 6&lt;br /&gt;&lt;br /&gt;Тест: &lt;a href="http://www.wizards.com/default.asp?x=dnd/dnd/20001222b"&gt;http://www.wizards.com/default.asp?x=dnd/dnd/20001222b&lt;/a&gt;</content>
  </entry>
</feed>
