Skip to content

Category Archives: Computers

Computers in general.

О графиках

angry emoticon

Пересчитываю все графики из своей диссертации на R. Узнал очень много нехорошего об SPSS. А именно, то что последний конкретно дурил мне голову рисуя графики, и периодически считал одни и те же величины дважды.

К сожалению у R с графиками тоже не все слава Богу — он не в состоянии генерить их в том формате в котором мне больше всего хотелось бы их видеть (PGF/TikZ) и чтобы пристроить их на место мне придется устраивать танцы с бубном.

update: После длительного битья головой об стену придумал таки устраивающий меня вариант — сначала генерим графики в R, выводим в формат XFig, переводим в TikZ посредством fig2pgf. Поскольку последняя не владеет пока вращением надписей, вращаем какие надо вручную и вообще ставим шрифты на место уже средствами *TeX, благо TikZ придумывался как формат где человеку все понятно. Заодно чистим оттуда лишнюю фигню. На серьезный график этого, пожалуй, не хватит, а на мои гистограммы достаточно.

Я тащусь от этих сербов…

dejected emoticon

Как было сказано ранее, я сейчас воюю с XeTeX, для чего подписался на рассылку и обратился к автору, мол, куда дели русские кавычки-елочки. Автор любезно объяснил как воткнуть их на место, и немедленно внес соответствующие изменения в дистрибутив, чем меня весьма порадовал. Но, как вы понимаете, просто так все кончиться не могло.

Есть в TeX такая штука, зовут babel. Это пакет для борьбы с особянностями национальной печати. Появился он тогда, когда поддержки utf-8 в техе еще не было, и потому, рассчитывает на наличие специальных команд, которые порождают символы в том числе кириллицы. В случае работы с TTF-шрифтами в XeTeX этих команд не возникает и он ругается и рисует пробелы вместо букв. Для борьбы с этой его особенностью, автор XeTeX сочинил пакет xunicode, в котором описаны все экзотические символы европейских языков… окромя собственно кириллицы.

Для кириллицы автор сделал отдельный файлик, в котором пересчитал русский алфавит, но так как он сам русского не знает и не читает, так на этом дело и встало — он не знал, все ли он поймал и не напортачил ли. Я вызвался доделать и доделал. Строго говоря, русскому языку не хватало только Ё.

Но оказалось что TeX знает превеликое множество кириллицы, которой в русском языке нет — украинскую, белорусскую, сербскую, македонскую, кыргызкую, татарскую, чукотскую… Я довольно долго с ними возился, но наконец отыскал почти все.

И тут всплыл некий серб. Сначала он объяснил откуда взялась часть этих неведомых букв (из славянских языков с кириллицей) а потом начал качать политкорректность. Вы, мол, обозвали экзотическими буквы которыми 15 миллионов человек пользуются и которые в любом нормальном шрифте есть. Вот эти мол буквы уникальны в сербском, вот эти в македонском…

А я грешным делом и забыл про болгарский-македонский-сербский, меня как-то больше неславянские буквы там беспокоили.

Всплыл джентльмен с истфака МГУ, и покусал этого серба слегка за меня, а я тем временем отсортировал все буквы по языкам, на какие нашел алфавит, и оказалось что из этих “уникальных” букв половина попала в совершенно неславянские языки и вообще все это муть.

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

Мне вот другое непонятно, чего это он так? Для меня все эти буквы экзотические. Для меня 98% человечества экзотические в том или ином виде, в том числе те, кто пишет кириллицей. Почему во всем надо видеть национальное унижение?

Крокодил шире чем длиннее…

tired emoticon

…мдя, надо же так умудриться меня достать за двое суток. :)

Для тех кто не знает: TeX — это такая вавилонская башня острием вниз. Если точнее, это злоумный издательский пакет, ведущий свое начало еще в 60х, во времена когда компьютеров в современном понимании еще толком не было. До сих пор он используется для научной литературы, особливо для математики, ибо как ни старалось человечество, а ничего всерьез лучше для рисования формул не придумано и по сию пору.

Мне не надо рисовать формулы. Мне нужен BibTeX — а это очень полезная штука навешанная поверх TeX для учета ссылок на литературу, которая позволяет их просто и быстро цитировать. Это действительно чрезвычайно удобно, потому что встретив то, что можно спизпроцитировать, его можно занести в базу, оставить заметочку чего там заинтересовало, и больше не вспоминать пока мысль не оформится и не придет время писать. Текст живо так обрастает сносками и приобретает ученый вид.

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

TeX — невероятно древний пакет, который появился на свет тогда, когда даже восьмибитных компьютеров еще толком не было. Поэтому он уверен что букв 128. Все это, конечно, было исправлено позже, путем навешивания сверху еще одной приблуды, которая… Теперь приблуд и прочих радостей на нем столько, что дистрибутив занимает полный дивидюк.

После довольно длительной войны со списком литературы оформленным по ГОСТ1 и базой литературы в utf-82 я получил наконец искомый документ, и понял что смотреть на этот шрифт я не могу, ибо он ужасен.

Ладно, на такой случай вроде бы есть совсем новый вариант — XeTeX. Который работает с TTF-шрифтами и utf-8 по умолчанию. Вроде бы этого мне и надо.

Хрен, оно тоже не работает. Почему? Потому что в Gentoo для всех вариантов TeX, которых на свете порядочно, общая система, складывающая в кучку всю вавилонскую башню что выше острия. И в настоящий момент за ней некому ухаживать, поэтому часть пакетов насмерть брошены. Англоговорящие линуксоиды этого не замечают, потому что им не нужен не только ГОСТ, но и кириллица как таковая. За основу бобра взят пакет TeTeX. Который автор бросил еще в прошлом году, сказав всем переходить на новый TexLive, которое в Gentoo как таковое есть, но исходники, пожеванные чтобы они влезали в Gentoo, надо качать с сайта который намертво лежит…

Убью кого-нибудь за такие фокусы.

update: Я знаю даже кого я убью, его зовут TeTeX. Это, конечно, еще гигабайт закачки, но что мне гигабайт…

  1. Никогда бы не подумал, что моя диссертация оформлена не по ГОСТ, однако факт, оказалось именно так. Надо будет как-нибудь переверстать для порядка…
  2. Оно отказывалось работать очень долго, и я до сих пор не понял, почему же оно наконец перестало. Тех кто до сих пор обожает cp1251, спешу уведомить что я попробовал и ее, но это не помогло.

A reverse-engineering puzzle

thoughtful emoticon

I have a proprietary file format on my hands. Yes, I’m hacking apart one more renai game to see what’s inside. Unless you can handle code speak, I suggest you don’t read further.

Continue reading ›

Кубик

thoughtful emoticon

Нужен сервер… так, стоп, для начала сформулируем задачу построже.

  1. Основным и единственным назначением сервера будет раздавать WiFi неопределенному количеству пользователей на достаточно большой территории с диаметром порядка пятисот метров, не будучи при этом подключенным к настоящему интернету — то бишь, хостить открытую всем ветрам WiFi-сеть с приватным адресным пространством, обслуживающую толпу народу с неизвестным количеством устройств самого разного калибра, и быть на ней единственным www+dns+dhcp+whatever-сервером, предоставляющим много разных мелочей, но ничего реально тяжеловесного вроде рилтаймового видео или тяжелых файлов.
  2. Требования к железу, соответственно, невелики — на правильно заточенной напильником Gentoo ему с ушами хватит 500 МГц, 256 Мб оперативки, и строго говоря, без винта тоже можно будет обойтись — пары гигабайт для сервисов достаточно, а это можно реализовать при помощи флэшки. Побольше оперативки не повредит, но больше мегагерц наверняка не нужно.
  3. Он должен выдерживать отключение питания в течение 10 минут без последствий.
  4. Он не должен перегреваться, разве что если накрыть его одеялом. И вообще он должен быть надежен и выдерживать безалаберное обращение.
  5. В случае если WiFi внутренний, он должен допускать подключение внешней антенны, иначе весь смысл теряется.
  6. Самое каверзное — он должен занимать как можно меньший объем. Если он при этом еще и мало весит, будет совсем хорошо.
  7. Он должен ко всему этому еще и мало стоить. :)

Как вы понимаете, требования 4 и 5, да и 7 заодно, исключают большинство ноутбуков, хотя требования 3 и 6 скорее их предполагают. Чем-то из этого можно поступиться, да и у меня найдется машина которая трансформируется в искомое очень быстро… только вот это довольно тяжелый гроб стандартного размера, которому надо будет искать место в багажнике и так далее. Интересно все-таки получить специализированную “машину в себе”, которую не слишком жалко угробить насмерть или потерять при перевозке, имеющую минимум того, что в нее при установке на месте нужно втыкать. Кубик. Вполне возможно, что с ним будут обращаться слабо подготовленные люди, у которых и других забот полон рот.

Варианты типа Mac Mini и родственников отпадают в силу дороговизны. Варианты “собрать из старых огрызков” остаются как запасные, потому что результат будет тяжеловат, великоват, и не очень надежен, если не купить для огрызков новый корпус — хотя по стоимости им конечно равных нет, огрызков у меня завались. Варианты собрать что-то новенькое самому на mini-ITX вполне допустимы, если в сумме они окажутся значительно дешевле тех же Mac Mini и если все компоненты можно приобрести в одном месте. Ибо если его придется собирать по клочкам, проще съездить на рынок один раз за корпусом для огрызков. Собственно, суммарная стоимость выше 9000р, то бишь около $350, не котируется в принципе.

Какие варианты решения такой задачи существуют на нынешнем местном рынке? Что есть как минимум несколько очень заманчивых кубиков там, за бугром, я знаю…

Башня Вавилонская, 1 шт.

thoughtful emoticon

Я, как известно, программирую сам только и исключительно потому, что заставить больше некого… Давным-давно, в детстве, я читал такую чудную книжку как “Маленькая энциклопедия о большой кибернетике”. Она и сейчас у меня есть, 1973 года издания, то бишь заметно старше меня самого.

И на букву “Я” есть там статья о языках программирования, которые изображены в виде Вавилонской Башни. Почти все кирпичи этой башни нынче благополучно умерли и остались пылиться разве что в музее, хотя кирпичиков там преизрядно. Только вот сама башня не исчезла никуда, и у меня такое подозрение, что она растет слишком быстро.

Скажем, понадоблось мне скриптовый интерпретатор для идеологически чуждого кода который я уже много лет видеть не могу… Взял я Lua — он полегче и пошустрее, и вроде бы не слишком заумный…. За десять строк кода я прикрутил его на место, т.е. функцию написанную на Lua можно вызвать из программы. Еще десять строк понадобились на то, чтобы таким манером программу нельзя было угробить, как-никак сервер. Но мне надо прикрутить ее не только таким манером, но и обратно, чтобы работать с данными доступными только самой программе изнутри Lua… Оказалось, что для этого мне надо продублировать до тридцати процентов ее кода, и видимо придется дублировать, а куда ж я денусь.

Полистав книжки про этот кошмарик, я обнаружил что он странен донельзя — все переменные глобальны пока не сказано обратное, (…?! Я понимаю, что это упрощает интерпретатор, но кгхм…) функции — это тоже переменные, (пффт) и особый акцент делается на то, чтобы плодить их на лету и присваивать направо и налево, (уууу…) и синтаксис, опять же, свой. Ладно, откладываем в сторону, начинаем думать над другой задачей, благо задач и так невпроворот.

Понадобилось мне сотворить веб-приложение для работы с довольно сложной базой данных, которую я уже упоминал недавно. Идею писать все это добро с нуля я оставил сразу же, потому что возиться с таким количеством форм — увольте. Вокруг раздаются экстатические крики любителей Ruby on Rails — но я в нем ни бум-бум, пока что, и сначала посмотрел в сторону CakePHP. Однако, несмотря на все полезные качества последнего, он довольно слабо документирован, копаться во внутренностях чужого кода меня совершенно не тянет, а главное, внятной поддержки древесной структуры записей в нем нет, а у меня на эту структуру много чего завязано, и писать ее заново я не буду, ибо и без нее есть чем заняться.

Поэтому CakePHP отправился лесом, я чертыхнулся и пошел изучать очередной язык. Посмотрел на этот Ruby… мдя… В детстве у меня была такая чудная вещь как Clarion 3.0. Я его обожал и клепал на нем неоптимальные, но очень хорошо работающие программы баз данных, не написав ни одной строчки кода. Здравствуй старая идея, давно не виделись… …но так ли надо было делать это на еще одном языке, с еще одним синтаксисом?

Они плодятся. У них там гнездо. Вавилонская башня уже скоро начнет царапать небесную сферу.

Пора что-нибудь сделать, чтобы мне не надо было держать на системе более четырех компиляторов, ибо это уже просто свинство.

Так называемое “быдло”…

thoughtful emoticon

Я хотел бы ввести это как научный термин, за неимением лучшего, более понятного слова, потому что “пролетариат”, “люмпены” и прочие слова которые мы обычно считаем синонимичными слову “быдло”, имеют уже свои совершенно конкретные значения, которые, однако, синонимичными тому, что мы обычно интуитивно понимаем под словом “быдло” никак не являются. Оскорбительность его пока оставим за кадром, если кто-то предложит мне альтернативу — милости прошу.

Так вот, на это размышление меня подвиг взгляд на форум SEOшников. Т.е. тех людей, которые ответственны за то, что ссылку на порносайт можно найти, осуществляя поиск по строке “MySQL manual”. Поисковики воюют с ними много лет, с переменным успехом с обеих сторон, но принципиально не это… Выстрою-ка я логическую цепочку.

  1. Чтобы любой спам окупался, нужно чтобы хоть кто-то обращал на него внимание — кликал на ссылки и смотрел баннеры, покупал предлагаемые товары и услуги, и так далее.
  2. Поскольку стоимость спама как рекламы чрезвычайно низка, т.е. перекладывается на наши с вами плечи, CPT1 ниже плинтуса, и соответственно, одна реакция из сотни тысяч полностью окупает всю операцию.
  3. Но кто он — тот человек, который покупает лекарства (!) таким манером, инструкции по способам увеличения половых органов, и всю эту прочую дрянь?
  4. Очевидно что я, рассматривая мир в основном через призму интернета, его просто не вижу, потому что он не генерит никакого контента, точно так же как нельзя увидеть в телескоп черную дыру, ибо она не светится. Сомневаюсь, что кто-то из вас знает таких лично в достаточном количестве, ибо эти люди блогов тоже не читают.
  5. Но тем не менее они существуют, и существует их достаточное количество, чтобы сделать спам-операции прибыльными.
  6. Количество их при этом не обязательно велико. Помнится мне, для спама — и для более ранней идеи, почтовой рекламы — хорошим показателем считается отзыв на доли процента показов. Для баннерной рекламы, кстати, тоже.
  7. Если бы спамеры знали кто эти люди, могли бы бить по ним адресно, они бы так и делали, и экономили бы время, деньги и заодно нервы всем остальным.
  8. А если бы мы знали, кто эти люди, возможно мы знали бы, как им помочь.

Их называют словом “быдло”, с намерением оскорбить и унизить, но каковы реальные характеристики быдла? Они отнюдь не такие же, как у среднего потребителя телевизионной или печатной рекламы, характеристики которых в общем известны, потребители нормальной рекламы не ловятся так легко на такие глупости, как то, что можно наблюдать в спаме. Что это за люди?

  1. Сколько их на самом деле? Если бы быдло составляло подавляющее большинство, как принято считать, то число отзывов на спам превышало бы доли процента.
  2. Что определяет принадлежность человека к быдлу? Уровень образования? Сомнительно, ведь известны прецеденты, когда люди с достаточно высоким уровнем образования и учеными степенями ловились на классические advance fee fraud. Возраст? Тоже сомнительно, по той же причине. Что общего у всех этих людей?
  3. Наконец, сколько им лет, сколько у них денег, каких политических взглядов они придерживаются, каковы их социокультурные характеристики?

У меня пока есть только одна теория, а именно, что это некий странный подвид патологической наивности, свойственной лишь небольшой доле населения. Я не знаю, наследственное оно или нет, хотя не исключено и это. Это наивность того же порядка, как и та что побуждает людей складывать пятидюймовую дискету вчетверо чтобы засунуть ее в трехдюймовый дисковод, а Хоттабыча побудила наколдовать телефон-автомат, высеченный из цельного куска мрамора. Возможно, это как-то связано с одним из очень странных эффектов восприятия, когда некоторые люди не в состоянии увидеть, что изображение 16:9 растянуто по вертикали чтобы уместить его в экран 4:3, или рисуют так, что все объекты оказываются скошены вправо — я встречал таких и спрашивал, они действительно не видят разницы.

Узнать, свойственна ли такая наивность человеку всегда, или является временной, и что она такое на самом деле, было бы чрезвычайно интересно.

  1. Cost Per Thousand, стоимость тысячи просмотров рекламы — есть в медиапланировании такой параметр.