29 December 2011

Итоги 2011: личные и не очень

Честно говоря, я не сильно люблю подводить итоги года (как я это не люблю можно увидеть по прошлогодней записи), однако год 2011-й был для меня интересным, важным, насыщенным и желание написать об этом возникло как-то само собой.

Итак, год 2011-й, как это было, поехали!

#1. Главное событие года -- в сакральном для каждого программиста возрасте 0x20 (одинэсники и пэхапэшники не знают что это) я стал папой
Наверное, не буду писать лишних слов по этому поводу, отмечу только вот что. 
Раньше я очень часто слышал от более опытных товарищей, родителей и всяких других людей какое-то странное многозначительное укорительно-назидательное "ничего! вот когда у тебя у самого будут дети, вот тогда ты всё поймешь!...". Сейчас у меня за плечами относительно небольшой срок отцовства, всего четыре месяца, но могу сказать, что наверное я тупой, потому я так ничего и не понял... То, что ребенок большая ответственность, хлопоты и переживания я абсолютно прекрасно осознавал и до его появления, поэтому все те большие изменения, которые произошли в моей жизни после рождения Виталины, не стали для меня какой-то неожиданностью. 
Не знаю, может если у тебя появляется ребенок в двадцать лет, то это приносит много неожиданностей в твою жизнь, но после тридцати, когда за плечами сильно больше опыта взрослой жизни, смотришь на это несколько иначе.

27 December 2011

"Эффект айпэда"

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


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

26 December 2011

C++11 умные указатели

Сначала было слово. В смысле, сначала был один единственный умный указатель, просочившийся в стандарт 98-го года -- злополучный std::auto_ptr

Сегодня даже дети знают, насколько это неудачное было решение.
Если говорить коротко, то суть проблемы auto_ptr описывается так: для этого типа разрешено копирование, которое несет в себе серьезный побочный side effect.

Если вы не ищете приключений себе на задницу, никогда так не делаете -- если вы разрешаете для какого-то типа копирование (а как показывает практика, таких типов у вас в программе вряд ли будет сильно больше 5% от общего числа типов), то это копирование должно всегда порождать абсолютно эквивалентную копию. Почему? Да просто потому, что копирование может произойти случайно (забыли & добавить) или не совсем явным образом (как для поля в составе другого типа, для которого копирование разрешено).




По мнению гугловского поиска по картинкам -- умный указатель выглядит примерно так

Потом появились умные указатели в boost, где на смену auto_ptr пришло два новых типа -- scoped_ptr и shared_ptr (на самом деле там их больше, но сейчас мы не будет останавливаться на всяких weak_ptr).

Тип scoped_ptr -- это auto_ptr, для которого запрещено копирование. Вот так вот, просто и понятно.

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

Теперь имеем новый стандарт языка, C++11, в который перекочевал shared_ptr, но вот scoped_ptr почему-то заменили на unique_ptr.

Что такое unique_ptr и чем он отличается от scoped_ptr?

Как мы знаем, в новом стандарте языка у типов, наравне с понятием copyable/non-copyable, появилось новое свойство -- movable/non-movable. Т.е. тип можно быть не копируемым, но при этом поддерживать move семантику. Так вот, unique_ptr это scoped_ptr, который стал movable. Т.е. в тех местах, где вы действительно можете безопасно применить разрушающее копирование (пример -- вернуть такой указатель из функции), вы теперь можете это делать. А еще вы наконец-то можете хранить такие указатели в контейнерах, правда, наверное, использовать для этого что-то вроде Boost Pointer Container было бы удобнее.

На этом, наверное, все, сделаю только еще одно замечание насчет shared_ptr. 
Из моего личного опыта, использование этого указателя на практике можно свести к минимуму, т.к. обычно он нужен либо в копируемых типах (которые, как я уже писал выше, встречаются на практике довольно редко), либо в ситуациях со сложным отношениям владения, когда один объект хранится во множестве точек, время жизни которых подчиняется сложным правилам и определяется уже во время выполнения.

Злоупотребление shared_ptr часто вытекает из функций, которые в качестве своего результата возвращают указатель на созданный внутри себя объект, т.е. передают его во владение наружу. Возвращать при этом auto_ptr не хорошо (просто потому, что auto_ptr в принципе нехорошо использовать, а в новом стандарте он вообще стал depricated). Тип scoped_ptr не вернешь, потому что он некопируемый, поэтому остается два варианта -- либо shared_ptr либо голый указатель.

Возвращать shared_ptr плохо, потому что это как раз и приводит к его ненужному расползанию по программе, т.к. очень часто вызывающая сторона с большим удовольствием сохранила бы полученный указатель в scoped_ptr (на стеке или в поле объекта).

Вот и остается единственный вариант, когда возвращать нужно голый указатель. Дабы принимающая сторона случайно не забыла о своей ответственности по владению, можно ввести договоренность, что все такого рода методы каким-то особым образом именуются, например, начинаются со слова Create. И да, иногда в таких методах оказывается полезным использование auto_ptr для хранения результата, т.к. он защищает от исключений и дает возможность забрать у него владение объектом (в точке, где вы пишете return). 

Вот теперь все. 
Что еще почитать по теме:


Мудозвоны, писавшие стандарт 98-го года не только засунули туда auto_ptr, но и допустили массу других, не менее очевидных косяков и ляпов.
К нем относится и послабление для сложности метода size() для связанного списка. Его рекомендуют (но не обязывают!), делать со сложностью O(1). Ну и, конечно же, нашлись другие мудаки, которые таки да, реализовали его с линейной сложностью через distance(begin(), end()).

Суть проблемы очевидна. Если у вас нет возможность реализовать что-то эффективным образом, то надо сделать так, чтобы пользователь библиотеки случайно не понаписывал кучу плохо работающего кода. Именно поэтому у нас нет метода push_front() для вектора. И нет математических операторов для итераторов без поддержки случайного доступа. Потому что это все грабеля, которые только и ждут своего часа. 

Речь, на самом деле, не идет о том, должен ли быть list::size() O(1) или O(n). Если вы считаете, что эффективный splice() сильно важнее размера контейнера -- ради бога, делайте!... Просто метод определения размера тогда, блядь, должен называться не size(), а count_size(). Ну это же очевидно! 

В новом стандарте, кстати, это момент исправили. Метод size() теперь обязательно должен иметь постоянную сложность. И точка. 

22 December 2011

Журналюга

По наводке вождя и учителя, товарища Вильянова, прочитал книжку "Журналюга" пера Виктора Левашова. Что имею сказать.


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

Но дальше -- пошло, поехало. Включается "детектив", начинаются пошлейшие и абсолютно предсказуемые штампы жанра, идут сцены, в которые не веришь и которые предугадываешь, многие вещи, стоящие в стороне от главного сюжета, которые рассматривались как мастерски сделанные штрихи к портретам главным героев, трансформируются в кусочки сюжетного пазла и тем самым полностью обесцениваются.
Финал книги вообще написал впопыхах, криво, косо и как будто совсем другим человеком, не тем, который начинал книгу.

Итого -- оценку 5/10 можно поставить с натяжкой. Очень противоречивая книга, которую, увы, вряд ли смело порекомендуешь прочитать другим.

зы. "Чуму" Камю бросил посредине. Или это какое-то гавно редкой унылости, или просто я дэбил.
Дать последний шанс Пелевину? "t" и "воду" бросил читать посередине...

21 December 2011

Будущее здесь, в 88-м

Посмотрел вчера на ютубе крайне занятное видео -- как Стив Джобс, царство ему небесное, в далеком октябре 1988-го года рассказывал о компьютерах NeXT и их чудесной операционной системе (начало презентации, начало демонстрационной части).


Уже на момент этой презентации у Джобса были очень серьезные проблемы с его грандиозным проектом -- ОС и железо так и не были готовы к продажам, горели все сроки, железки получались запредельно дорогими, заканчивались деньги инвесторов... И вообще, весь проект NeXT это такой "Титаник" от IT, которому просто сильнее повезло, и после столкновения с айсбергом под названием "жестокая реальность" у экипажа оказалось достаточно времени и спасательных шлюпок для того, чтобы догрести до корабля с надписью "Apple" на борту, который, правда, и сам в тот момент был готов вот-вот пойти ко дну... Но речь сейчас не об этом -- хочется поделиться некоторым соображениями от увиденного.

Первое -- звание visionary man Джобс получил совершенно заслуженно. В далеком 88-м он говорил о том, что мир персональных компьютеров пережил две революции -- революции электронных таблиц и текстового процессора (издательство в ПК). Третья революция -- это организация совместной работы и общения посредством Сети.
Слова Internet, HTTP и браузер, конечно, не были произнесены. Но были показаны rich e-mail и веб-сервисы, вроде словаря или библиотеки, с которым происходило общение не через браузер, а через специально написанные клиенты.

С другой стороны, понимание, столь ясное и раннее, того, что Сеть будет главным направлением как минимум в 90-х, увы, не подвигло Джобса на работу в области веб-сервисов, ибо когда Джобс рассказывает в 88-м году о совместной работе у меня, в 2011-м, перед глазами возникает не почта с документами в атаче, а, например, Google Docs... Как мы знаем, Стив крайне нелицеприятно отзывался и об Android, который есть якобы сворованные из iOS идеи, и о множестве сервисов Google, включая тебе же Docs, но давайте посмотрим правде в глаза: нынешнюю эпоху Сети делает Google, с сервисами, вроде поиска, gmail или youtube, а Apple сильно отстает, представив только в этом году iOS 5 с какими-то попытками наверстать упущенное в этой области.

Второе -- Джобс очень часто и много ошибался.
Например, в 88-м он рассказывал о том, что звук это следующая "большая штука", которая пришла в персональные компьютеры, и показывал как удобно, отправляя кому-то по e-mail финансовый отчет, приатачить к нему звуковую запись с рассказом о том, что именно мы видим в полученных циферках. Кто-то сегодня пишет голосом послания и посылает их по e-mail?
Более свежие примеры -- facepalm facetime. Про него сегодня хоть кто-то вообще вспоминает? И Siri, по-моему, пойдет в ту же самую степь.


Кста, на презентации 88-го года нам показывали Interface Builder, как я понимаю, один из первых GUI дизайнеров в мире. С одной стороны, такого рода инструменты, которые прочно вошли в мир разработки и заняли свою нишу, с другой, история развивается по спирали, и значимость такого подхода с годами сильно обесценилась, ибо сегодня ничуть не менее важно иметь возможность эффективно описывать интерфейсы в текстовом виде.

Ну и последнее. Мне кажется, что причины полного провала проекта NeXT кроются в следующем. У Джобса было очень интересное, прогрессивное, во многом опередившее свое время, видение того, какими должны быть компьютеры, и главной проблемой в этой истории было то, что железо, которое было бы способно тянуть все эти возможности, стоило очень дорого. Так дорого, что для него просто не было рынка. NeXT -- классический проект-утопия...
И да, уже в те годы Джобс умел красиво и цинично врать, желая преподнести свои идеи и продукты в выгодном ключе, как нечто исключительное.

19 December 2011

Про сам процесс

Я давно уже смотрю на все события в жизни с позиции "что не происходит -- все к лучшему". 
Вот взять, к примеру, историю о том, как моя жена, будучи на седьмом месяце беременности, умудрилась "утопить" фотоаппарат, простенькую самсунговскую мыльницу. Без фотоаппарата моему расширившемуся семейству, по понятным причинам, никак нельзя, в результате был срочно приобретен NEX-3


До момента, пока я получил в свои руки беззеркалку, я был человеком, совершенно равнодушным к фотографии (не, я не про фотографии обнаженных, щедро одаренных природой барышень). Дык, как говорится (правда, несколько по иному поводу) -- когда в руках оказывается молоток, все вокруг начинает казаться гвоздями, так вот, NEX-3 оказался довольно интересным инструментом, который вызвал желание его изучить и начать активно использовать. 
В голове определенно произошел сдвиг, от вчерашнего "$300 за фотик это дорого", до "$300 за объектив? да почти даром!". 
В широком семейном кругу за мой уже закрепилась слава фотографа, и меня начинают зазывать на всякие мероприятия, потому что хотят поиметь фотки...

17 December 2011

Турецкий пословиц

Иллюстрация к древней турецкой пословице: злой моська и жираф на пальма загонит.

15 December 2011

cppcheck

I.

В большом материале про новый стандарт C++ я написал, что самый главный источник всех undefined behaviour в нашем проекте -- непроинициализированное в конструкторе поле класса (обычно типа bool). Суть этой проблемы ясна -- человеку свойственно ошибаться, а разрыв объявления переменной и ее инициализации (зачастую, эти точки вообще находятся в разных файлах) сильно способствует выявлению этого свойства бренного человеческого тела.

Компиляторы, с которыми мы в данный момент работаем, по поводу этой ситуации, тривиально выявляемой машиной, молчат как рыба об лед. Стали копать в сторону статических анализаторов. Сначала я решил попробовать нереально распиаренную на хабре (ваши волосы на ногах станут на 50% шелковистее!) PVS-Studio


Блевотина и гей атрибутика как бэ намекают нам 

Тут все не заладилось с самого начала. При установке триальной версии, софтина каким-то волшебным образом обнаружила фантомную инсталляцию MSVS 2008 (которая была давно полностью деинсталлирована) и попыталась в нее "интегрироваться". Закончилось это все банальным зависоном, а сам инсталлятор пришлось просто прибить.

10 December 2011

В продолжении мысли

Собственно указанные в прошлом материале две цифры -- 25% и 50% полученные чисто математическим путем абсолютно точно коррелируют с реальным положением вещей.

Поддержка ПЖиВ в столице точно такая же, как и Питере, просто там подкручивали сильно меньше.

07 December 2011

Анализируй это

Добрые люди выложили в сеть данные с сайта ЦИК в csv формате (тыц). Я решил тряхнуть стариной, взял в руки питон, и посмотрел на картину поддержки партии жуликов и воров по Москве и Питеру.

Картина получилась следующая:

Москва 

Питер

По горизонтали -- количество процентов, которые получила в свою поддержку ПЖиВ. 
По вертикали, на первом графике -- процент УИК с указанным уровнем поддержки, на втором -- средняя явка на УИК с указанным уровнем поддержки. 

Выводы не будут оригинальными, их уже сто раз озвучивали до меня, и они отлично согласуются с количеством сигналов о фальсификациях в столице России... Ну не может в рамках одного города (пусть даже и такого большого, как Москва) явка так точно коррелировать с количеством проголосовавших за партию власти. Я не верю в такие совпадения. 

Для обоих городов на первых гистограммах видны два пика, в районах ~25% и ~50%. Первый пик -- данные из ЦИК, в которых не было подкруток. Второй пик -- фальсификации. Соответственно, можете оценить, насколько более масштабны были фальсификации в Москве по сравнении с тем же Питером.  

Как-то так. 

Интересная статья на тему "выборы и статистика" -- http://esquire.ru/elections
Один из бесчисленных материалов с анализом -- http://shipilev.livejournal.com/95401.html

06 December 2011

О демократии

У соседей прошли выборы в Думу.

Власть, не моргнув глазом, пририсовала себе где-то в полтора раза больше голосов, чем они получили на самом деле. Честный результат, судя по статистическим выкладкам, где-то порядка 35% -- это все, что жулики и воры смогли выжать, используя админ ресурс и имея абсолютную монополию в области классических СМИ, вроде телевидения.

Цинизм, с которым были нарисованы итоговые 50% очень впечатляет -- цифры из протоколов были тупо проигнорированы и на сайте ЦИК, не сильно парясь, просто показали "нужный результат"; я видел в Сети неоспоримые свидетельства десятков подобных случаев, причем некоторые из них рассказаны людьми, которых я знаю не первый год. О чем тут вообще говорить, если на ТВ показывают ведущих, на фоне явки в 120%?
Каганов вообще рассказал анекдотическую историю, когда человек проголосовал за "Яблоко", полез на сайт ЦИК, а там по его участку за "Яблоко" нет вообще ни одного голоса! Блин, это было бы очень смешно, если б не было так грустно.


Мораль?

Пытаться законными способами, типа через суды, разбираться со всеми случаями нарушений -- дело совершенно неблагодарное. Страна настолько погрязла в коррупции и беспределе, а сама операция "выборы" рулилась с таким цинизмом и масштабом на столь высоком уровне, что идти в суды и пытаться там что-то доказывать, это все равно, что биться головой о бетонную стену. Ну или пытаться отлить при встречном буране.

Царь-батюшка Путин ложил на вашу демократию с широким пробором. И по доброй воле он и его кодла сильно вряд ли уйдет. В данный момент верховная власть в России обеспечивает права собственности на бизнесы такого масштаба, что Владимиру Владимировичу просто не дадут уйти из Кремля -- такими деньгами не шутят, и право их владения нельзя ставить под угрозу.
В общем, это либо будет какая-то очередная перетрубация (а-ля операции "Медвед") с формальной передачей власти нужному человеку, которую власть вынуждена будет сделать, если недовольство народных масс достигнет критической, взрывоопасной точки... Либо кровь. Много крови. Для новой России -- нормальный сценарий, они его уже пару раз проходили, по другому они просто не умеют.

Сегодня для свержения не демократической власти путем революции народ категорически не готов. Америка мало занесла. Проблема в том, что вся политическая движуха в стране идет в ключе классической "навальщины" -- на воле протестов и возмущений против беспредела со стороны нынешней власти. Это вообще классическая черта менталитета (по себе сужу) -- мы не за кого-то, мы скорее против! Нам не хвалить нравится, нам нравится гадить и критиковать. Не созидать, а крушить да ровнять с землею... Так вот, агрессия против нынешних правителей это здорово, но для того, чтобы что-то изменить, нужно созидательное направление, вокруг которого народ сплотится и самоорганизуется... Лозунг "голосуй против ПЖиВ! совершенно не важно, кто пройдет в Думу, главное, что именно этих гадов там будет меньше" есть тупиковый путь, ведущий в никуда.
Кстати, совершенно такая же беда и в Белоруссии -- понятно, что бацька плохой, ну а кто хороший?

В России нет внятной, хорошо организованной оппозиции. И задумайтесь, может быть ее нет просто потому, что на нее нет реального спроса со стороны общества. С нефтью все в порядке, цена хорошая, объемы экспорта греют душу. Народ сытый да обутый, благосостояние из года в год растет. На что жаловаться?... Ну да, власть зажралась, прибрала к рукам весь крупный бизнес, национальное достояние растаскали по личным карманам. Да, воруют. Да, коррупция. Но лично тебе, %username%, разве лично тебе так уж и плохо живется? Зачем тебе нестабильность и смута, если ты сейчас, в принципе, живешь не плохо? Лучше синица в руках, да хата с краю!...

***

Мне очень сильно не нравится то, что происходит в России. 
Я не такой наивный, чтобы верить в демократию, просто я согласен с Черчиллем -- ничего лучшего пока не придумали. 
То, какая Путин мразь и как быстро он "наведет порядок" я понял буквально в первый же год его правления. Чувак полностью задавил свободную прессу, а это верный и совершенно однозначный знак. 

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

Сегодня я вообще, грешным делом, думаю о том, что в президенты надо было выбирать Ющенко на второй срок. Тигипко совершенно внезапно оказался тем еще Иудой и пидарасом, а больше там и выбрать было не из кого. Ну а пасечнику можно было бы простить его невинные игры в вышиванки да любовь к Мазепе. Главное, что этот человек всегда с уважением относился к законам этой страны и никогда не давил на прессу. Ну а легкая форма украинского национализма головного мозга -- детский лепет на фоне того, что следующие выборы в моей стране, увы, могут пройти по российскому сценарию. 

Skill vs Will II

Пара слов о поединке Котто vs Маргарито II.


Фаворитом в этом поединке был Котто, который в первом матче получил очень тяжелое, самое первое поражение в своей карьере. На тот момент пуэрториканец был одним из моих самых любимых боксеров, но поражение от Маргарито что-то в нем сломало и его как подменили; ушла абсолютная уверенность в собственных силах. Поэтому в реванш я не сильно верил, и, честно говоря, оказался прав.

Второй бой -- точная копия первого, с одним единственным исключением -- мексиканец получил практически в самом начале боя серьезную травму правого глаза, что сильно сказалось на его боксе, и, в конечном счете, привело к досрочной остановке боя, который так и не показал, кто из двух боксеров все-таки сильнее.
Ждем третьего поединка?

Мне кажется, что главная проблема Котто заключается в следующем: переход в более тяжелые веса сильно сказался на его ударной мощи. Бывший грозный панчер вроде как бьет много и точно, но на его соперниках это как-то слабо сказывается... Мигелю сватают в соперники Мартинеса, но я очень скептически думаю об этом поединке -- разница в габаритах и силовой компоненте может оказаться фатальной.

зы. Отменился бой Владимира Кличко... В принципе, хрен с ним, я от этого боя не ждал ничего особенного. Очередное избиение крузервейта, к тому же далеко не самого быстрого.

02 December 2011

Всякая всячина

#1. Многозадачность в iOS драли с Windows Mobile.
И не спешите возмущаться!... По "крестику" приложения не закрывались, а сворачивались. В случае нехватки ресурсов система сама прибивала те приложения, с которыми вы давно не работали. Клик на ярлык приложения перекидывал вас к запущенной программе, если таковая имелась.
Скажу больше, в плане минимализма WM была даже впереди iOS -- очень долгое время там вообще не было диспетчера задач.



#2. Ребятам, которые колдуют сейчас над Qt5, сильно сдвигая фокус от C++ к JavaScript, я советую задуматься. Посмотрите на ренессанс C++ в Microsoft, а ведь эти ребята последнее десятилетие были просто одержимы managed кодом... Как бы и вам потом не пришлось откатывать назад некоторые свои решения.

#3. Проблема помойки и рассадника венерических болезней, под названием Android Market, решается тривиально, причем к обоюдному удовольствию всех трех сторон -- Google, разработчиков и пользователей.
Все, что надо сделать -- ввести программу платной сертификации.
Разработчик платит деньги за волшебную плашку "проверено! вирусов нет! продукт высшего качества". Работники Google проверяют качество софта, их зарплата идет из кармана разработчиков. Ну и пользователи, которые могут в магазине нажать чудо галочку "только сертифицированные" и рыться только среди гарантированно качественного софта.
Все довольны.

#4. Честного свопа, по-моему, в iOS нет.
Он, в принципе, и не сильно нужен. Большую часть памяти занимает графика.
Если за текстурой гарантировано стоит read-only файл на диске, то хэндл этой текстуры может вести себя следующим образом -- память, занимаемую текстурой, всегда можно освободить, а потом вернуть в RAM при первой же попытке доступа к ней.
Судя по всему, нечто подобное в iOS и реализовано.

#5. Тут могла быть ваша реклама.
Просто четыре -- некрасивое число, почти как 13.

29 November 2011

Гуглиный суслик


Вот ты суслика видишь?... Нет?... А ведь он есть!

I.

Осилил на выходных пару обучающих материалов (типа такого) по новому (?) революционному (?) языку программирования Go от Google.


Что имею сказать. 
Общее впечатление от языка выражается армейским "забудьте все, чему вас учили до этого!". Похоже, кое-кто не только грезил о серебряных пулях и революциях в разработке ПО, но и хотел поупражняться в велосипедостроении. 

25 November 2011

Горбатого могила исправит

Давно слежу за творчеством Джона, нашего, Кармака.
Он несомненный гений, мощный математик и алгоритмист. Но при этом -- редкостный гавнокодер. 



На старости лет Джон решил наконец-то выучить что-то сложнее Си, взявшись за C++. Первый серьезный плюсовый проект Джона -- Doom 3, сырцы которого были выложены на этой неделе в публичный доступ. Я, повизгивая от злорадства, тут же кинулся их качать, дабы убедиться в своих прогнозах -- миру открылась очередная порция говнокода. 

Так оно и оказалось. 

24 November 2011

Android ICS: эй, где мой любимый USB mass storage?

В Сети поднялась волна праведного гнева -- в Galaxy Nexus, который работает на самой последней версии Android, для USB не был обнаружен режим Mass Storage. Некоторые придурки вообще устроили по этому поводу ритуальные пляски с криками "ваш Google тоже загоняет вас в ональное рабство! я же говорил!".



На самом деле, вся эта история не стоит и выеденного яйца.

Режим USB Mass Storage хорошая и удобная штука, но у нее есть один существенный недостаток -- это низкоуровневый, а значит монопольный, режим доступа к устройству. Т.е. если вы кому-то предоставляете такой доступ к накопителю, сами вы этого доступа лишаетесь. Именно поэтому в подавляющем большинстве телефонов, при активации режима UMS, они переходят в специальный режим блокировки, когда с телефоном ничего нельзя сделать. Некоторые телефоны при этом еще и выходят из GSM сети, а завершение работы в режиме UMS приводит к перезагрузке телефона. В смартфонах режим UMS обычно реализован через демонтирование накопителя. При этом, если у вас были запущены программы, которые работали с этим накопителем, в них начнут сыпаться ошибки, которые часто приводят к аварийному завершению их работы.

Теперь про Android. Изначально предполагалось, что в этой ОС создается отдельный системный раздел, используемый для установки программ и хранения их данных.

Предполагалось, что этот раздел:
а) использует специально оптимизированную и высоконадежную файловую систему (не FAT32);
б) использует специальную, более быструю и надежную, флеш память;
в) размер его, в сравнении со встроенной памятью общего назначения (которая обычно начинается от 8 Гб) относительно не велик.

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

То, что мы видим в Galaxy Nexus, есть простое и очевидное решение этого наболевшего вопроса. Вся встроенная флеш память выделена под системный раздел, вместо того, чтобы быть разбитой на два куска -- небольшой системный плюс большой общего назначения разделы. Очевидно, что это гораздо более удобный подход в каждодневном использовании. Побочный эффект такого решения -- невозможность предоставить режим UMS для этого раздела, т.к. очевидно, что система не может продолжить свою работу, демонтировав свой системный раздел для монопольного доступа по USB.
Теперь для доступа по USB к единственному (системному) разделу нам предлагают использовать Media Transfer Protocol, штуку более высокоуровневую, т.к. тут идет манипулирование не на уровне секторов устройства, а на уровне примитивов файловой системы. Фактически происходит абстрагирование клиента от деталей файловой системы, что позволяет, к примеру, давать доступ к ФС, с которой клиент вообще не умеет работать (актуально для связки Windows + Android, т.к. последний использует файловые системы, характерные для Linux, с которыми не дружат ОС от Microsoft). Другое достоинство MTP -- возможность предоставления доступа к устройству в кооперативном режиме, когда, к примеру, с накопителем работает и Android и ПК через USB одновременно.

Пользователям Windows (макоебам: ваше место в айтюнсе с айфоном) замена UMS на MTP не несет вообще никаких существенных изменений. Как копировали файлы в "проводнике", так и будут продолжать копировать. Более того, юзеры продвинутые тоже не пострадают, потому что, например, MTP плагин существует для того же Total Commander'а. Как по мне, при наличии быстрого Wi-Fi куда как проще кидать файлы с его помощью; уверен, для Android софта для подобных целей есть воз и маленькая тележка.
По скорости работы между UMS и MTP каких-то существенных различий быть не должно. Более, вполне возможны реализации, когда MTP работает быстрее.

Крики о "закручивании гаек" -- истерика не очень далеких людей.
Это по-прежнему личное дело OEM, в каком соотношении разбивать внутреннюю память, т.е. права создания выделенного системного раздела (а-ля олдскульный Android) никто никого не лишал, и мотивация здесь может быть только одна -- удобство пользователей.
И да, любимых SD карточек, с которыми можно работать по UMS, нас тоже никто не лишал.

Люди! О чем вообще весь этот сыр-бор?

Официальный комментарий по ситуации -- http://habrahabr.ru/blogs/android/133172/

зы. Кстати, в iOS тоже есть специальный системный раздел (около 2 Гб в iPad первого поколения). Но он не используется для установки приложений, тут находятся исполняемые файлы самой ОС плюс всевозможные временные файлы. Мотивация создания такого раздела -- более высокая надежность системы и корректная работа в условиях исчерпания свободного места на накопителе.

17 November 2011

C++11: революция или работа над ошибками?

"... и много много радости детишкам принесла!"
из детской песенки

Иногда мне кажется, что я люблю C++.
Это не похоже на крышесносяший страстный роман с роковой красавицей, это скорее теплые чувства к жене, с которой вы разменяли под одной крышей не один десяток лет. Да, у каждого из вас есть какие-то недостатки, да, бывало всякое, но, в конечном счете, вы близкие люди и не тратите лишних слов, понимая друг друга уже невербально.


Кликабельно до размера настольных обоев

У языка C++ сложная судьба. Страуструп поступил очень мудро, обеспечив практически полную совместимость своего детища со сверх популярным и тогда, и что более удивительно -- сейчас, Си. Если бы не этот шаг, вряд ли бы плюсы стали бы тем, чем они стали. Но это достоинство языка с каждым днем становится все большим и большим его недостатком, добавляя множество дыр и низкоуровневых проблем в язык вроде как высокоуровневый и современный. Многие до сих пор так толком и не понимаю, что С и C++ это два совершенно разных языка, на которых нужно писать совершенно по-разному. И расхожее сочетание "C/C++" это просто какой-то root of all evil. Мне сплошь и рядом попадаются люди, которые худо-бедно программировали на Си, потом за день выучили ключевое слово "class" и стали считать себя большими гуру в плюсах (к примеру, такой случай). "Специалист" подобного рода узнается слету -- у него в коде вы обязательно найдете любимый printf... Плюсы очень мощный и одновременно довольно сложный инструмент, на овладение и глубокое понимание которого требуется много времени. Без полной перестройки мозгов начать программировать на C++ после С никак не получится, и те, кто этого не понимает, серьезно портят репутацию языка. Когда Линус Торвальдс, ни черта на смыслящий в C++, начинает поучать других на тему, почему плюсы это зло, выглядит это чертовски комично.

Другая историческая проблема языка -- очень позднее принятие стандарта и мучительно долгое подтягивание компиляторов под его требования. Плюсы начали очень активно использоваться в индустрии с начала 90-х. Стандарт был принят только в 98-м. Более менее приличные компиляторы появились только в 2000-х.
В середине 90-х излишне консервативные товарищи имели все основания говорить о том, что исключения в C++ это какое-то баловство и новомодная ересь, и именно из той эпохи тянется взгляд на язык как на "си с классами", которое, к сожалению, широко используется и до сих пор.

Вот так вот и получается, что новый прогрессивный стандарт принимается в втором десятилетии XXI века на фоне так и не вымерших динозавров, которые до сих пор не используются в полную силу стандарт 98-го года, и которым до сих пор надо объяснять на пальцах для чего нужны исключения и какие проблемы несет в себе двухфазное конструирование...

16 November 2011

Ретроспектива

"Не надо придумывать ничего нового!... Читайте лучше старое. Помедленнее" 
Жванецкий

В последнее время почему-то крутится в голове цитата из Вильяма, нашего, Шекспира: "Something is rotten in the state of Denmark". Следом в цепочке шальных ассоциаций всплывает наш старый фильм, со Смоктуновским в главной роли. Картина такая очень мрачная, средневековая... Вспомнил, что когда-то писал обзор для блога, решил попробовать его найти, освежить в памяти. 

CD-RIPer в жж? Я знал его...

В жж поиска нет. Единственный способ поиска -- через Яндекс, но хитрожопый поисковик как-то сильно выборочно индексирует записи в блогах; судя по всему, совсем уж непопулярные записи в индекс не попадают. Итого, запрос "cd-riper гамлет" дает какую-то ерунду. Искать через функцию "архив" в жж для многолетнего блога -- застрелиться проще. Каждый раз выручает одно -- в силу полной уебищности редактора текста в жж, я всегда писал записи в специальный документ. Сначала в MsWord. Потом -- в Google Docs. В итоге, полез туда и легко нашел своего "Гамлета". Рядом была заметка на тему кризиса, поэтому появился ориентир для поиска в архиве жж -- осень 2008-го. 

Это я все к чему... Сунул я нос в документ со старыми записями для блога, начал читать, и не мог остановиться. Все-таки я тот еще сукин сын. Ну а с учетом того, что в то время аудитория у меня была с гулькин нос (непризнанный гений! таких у нас -- каждый второй в жж!), на злободневные темы я пишу редко, все больше о вечном, ну и общий уровень у меня такой, что как грит Вильянов (правда, про себя) можно не только читать, но и перечитывать, короче, решил я, прикола ради, вытащить пару записей из той эпохи. Если понравится -- можно будет повторять на регулярной основе. 

Итак, маленький кусочек ноября 2008. 


11 November 2011

The UNIX way

Один наш проект, работающий на ARM/Linux, внезапно начал вылетать с доставляющей надписью "I/O possible" во время работы со звуковой картой. 

Я не сильно большой знаток *NIX систем и Linux, специализируюсь больше на разработке кросс-платформенных решений, а тут как раз представился удобный случай повнимательнее взглянуть на знаменитые сигналы UNIX. 


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

Итак, что было обнаружено при курении man-pages.

#1. Сам подход с асинхронными вызовами в непонятно каком контексте может и был прогрессивным решением лет тридцать назад. В XXI же веке, когда без использования threads даже "хело ворлд" не напишешь, это выглядит откровенным долбоебиз архаизмом. Заводишь себе отдельный поток и ставишь в нем wait на интересующие тебя события... Правда, в Linux, по-моему, так и не добавили человеческий wait для множества разнородных объектов, но это уже детали.

09 November 2011

Про конечные автоматы

Что-то тянет меня в последнее время на поднятие градуса гиковости (с) в бложике. Гражданские, простите, постараюсь иногда про вас вспоминать!

Конечные автоматы и т.н. автоматное программирование -- вещи, с которыми программисты часто сталкиваются при решение задач лексического и синтаксического разбора, при описании поведения объектов в играх, при реализации всевозможных протоколов связи. 

По сути дела, Finite State Machine (FSM) это некий объект, у которого есть состояние, описываемое конечным множеством значений, плюс есть некое конечное множество событий, которые могут быть поданы на вход такому объекту. Самый простой пример FSM это, например, выключатель. Объект с двумя состояниями "вкл" и "выкл" и двумя событиями -- "включить" и "выключить". 

Другой простой пример -- автоматическая дверь с датчиком контроля состояния

С точки зрения программы FSM описывается фактически как таблица, где по горизонтали идут события, а по вертикали идут состояния. Каждая ячейка этой таблицы, расположенная на пересечении конкретного события и конкретного состояния, есть указатель на некий код, который должен быть выполнен, когда на вход объекту, находящемуся в указанном состоянии, подается указанное событие. 

04 November 2011

План захвата мира


Кликабельно. Творческая кухня -- так я для себя расписывал добавление одной фичи в существующий проект.

01 November 2011

Замес о программировании

Краткое содержание: Delphi must die, говнокодинг как признак приближающегося конца света в следующем году, Python -- давай сделаем это по-быстрому!

Ррррр!

Есть у меня такая добрая ежегодная традиция -- писать пост скорби о Delphi (вот, к примеру, прошлогодний). 


#1. Ручное управление памятью -- чума XXI века. 
Языки без GC или хотя бы RAII давно пора отправить на заслуженный отдых. 
В упор не понимаю людей, которые после богатого плюсового опыта дауншифтятся обратно на си. 
И еще. Кэп утверждает, что вводить исключения в язык без GC/RAII может только человек с крайне специфическим чувством юмора. Try. Finally.

28 October 2011

Из неопубликованного: к черту зимнюю резину! весеннее

По-моему, кто-то там из классиков (граф Толстой? лень лезть в гугл) рассказывал, что для укрепления фундамента высоких моральных принципов в половом вопросе кто-то из его старших приятелей (по совместительству наставник?) сводил в больницу, и показал сифилитиков в последней стадии этот веселой и, как оказывается, поучительной болезни.
СПИДа тогда (увы?) не было. Как и резиновых изделий #2.
Прогресс, как известно, не стоит на месте. Однако, сколько бы не придумывали ультра-тонких, ультра-ребристых, ультра-пахучих и прочих ультра-мега гандонов, сколько бы не крутили по ТВ ультра-художественных, ультра-правильных и ультра-социальных рекламных роликов на тему безоспасного секса – все равно! Врачи венерологи без работы не останутся, ибо чтобы бы они там, такие умные и правильные, не делали и не говорили, чем бы не пугали, секс в изделии и без оного это две большие разницы, и этот тезис в доказательствах не нуждается.




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

Не хлебом единым

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

Поехали.

Новые RHCP -- очень хорошо, хотя по началу альбом показался совсем унылым.

Новый Megadeth -- после классного Endgame вообще ни о чем, уху просто не за что зацепиться. Группу как подменили.

25 October 2011

Смутное время

Недавно поковырял xap файл с игрой Angry Birds для Windows Phone 7. Все по-честному, никаких следов native кода, все было старательно переписано под .NET и тщательно обфусцировано (смейтесь, но многие себя такой ерундой даже не утруждают).


Честно говоря, меня, как программиста, нынешняя картина разработки под мобильные платформы несказанно печалит. Ключевые игроки на этом рынке -- Apple, Google, Microsoft -- прикладывают все силы, чтобы разыграть перед ошалевшими девелоперами сцену по легендарной крыловской басне о сбежавших из зоопарка лебеде, раке и щуке. 

19 October 2011

Замес про Twitter, iOS 5 и сервисы Google

В пятницу, впервые за хрен знает сколько времени, наконец-то взял в руки iPad (для жены это вообще сверх полезное устройство и она с ним просто никогда не расстается). Пользуясь случаем решил накатить обновления приложений, среди которых оказался и многострадальный twitter клиент. После обновления последний получил крайне неприятный баг -- перестал показывать диалоги, чем привел меня в полное бешенство. 



В очередной раз задумался о том, какая все-таки Twitter мудацкая контора. 
Я никогда в жизни не использовал более глючный и ненадежно работающий веб-сервис, при всем при том, что это не какая-то маргинальщина для двух с половиной калек, а серьезные ребята, тщательно перемалывающие многомиллиардные инвестиции... Но тут точно ситуация про ежиков и кактусы, потому что если из того же жж я свалил как только так сразу, подзаебавшись от их нестабильной работы, то твиттер есть твиттер, и бежать от него как бэ особо не куда -- только взять и завязать, как с очень вредной привычкой вроде рукоблудия. 

18 October 2011

Про терминологию

Вот всякий раз искренне поражаюсь, как в эпоху гугла и, извините, википедии некоторые умудряются выносить на широкую публику элементарную безграмотность в самых простых вопросах. И ладно, когда в этом бывают уличены самовлюбленные "эксперты" во всем и вся, вроде человека, имя которого не принято называть в приличном обществе, но вот сегодня, в довольно годном материале о N9, отличился Сережа Маленкович, вроде как не самый глупый человек. Рассказывая об ограниченной многозадачности в iOS и Android он сказал, что это "так называемая кооперативная многозадачность".



Сережа очень сильно заблуждается.
Начать надо с того, что речь о вытесняющей и не вытесняющей (кооперативной) многозадачности идет на более низком уровне, на уровне ядра операционной системы. Так вот, кооперативная многозадачность это настолько примитивная и ограниченная штука, что от нее уже давно отказались практически везде.

"Today, nearly all operating systems support preemptive multitasking, including the current versions of Windows, Mac OS, Linux, iOS and Android" [тыц]

Да, да, да, может для кого-то это будет новость, но даже айфоны на iPhone OS первой версии, на которые даже нельзя было ставить сторонние приложения, под капотом имели самую настоящую, честную вытесняющую многозадачность.

Это первое.
Второе -- даже если Сережа пытался применить термин не по его прямому назначению, а типа образно, то сделал он это предельно неудачно. Объясняю почему.

Суть кооперативного режима заключается в том, что операционная система не имеет никакого контроля над задачей (приложением). После того, как ОС передала управление задаче, она никаким образом не может на нее повлиять, и следующая задача начнет выполняться только после того, как текущая задача добровольно, явным образом отдаст обратно управление ОС. Если задача по какой-то причине "зависнет" -- вместе с ней будет погребена вся система, вместе с остальными задачами. Именно поэтому этот режим сегодня не используется практически нигде.
Если же мы будем говорить о многозадачности сторонних приложений в iOS и Android, то увидим ситуацию, когда ОС накладывает более жесткие ограничения и обладает значительно большим контролем над выполняемыми задачами по сравнению с классической моделью, основанной только на приоритетах и состояниях процессов в системе.

Вы видите что выходит? Автор опуса о N9 не просто безграмотно употребил термин, он еще и использовал его в ключе, прямо противоположном по смыслу его содержанию. А на его навязчивые вопросы "ну а каким словом тогда назвать многозадачность в iOS и Android?" -- отвечаю. Первое -- если ты не знаешь как назвать, это не значит, что надо тулить первый попавшийся термин, смысла которого ты толком не понимаешь. Второе -- лично я конкретного устоявшегося термина не знаю, поэтому вполне можно использовать что-то вроде "ограниченная многозадачность пользовательских приложений".

Человеки!
Никогда не считайте себя сильно умными, и не считайте за западло провести хотя бы полчаса хотя бы, извините, в википедии.
Аминь.

17 October 2011

Стахановец

"Журналисты часто путают очень простые понятия - актуальность и скорость появления информации (...) когда скорость публикации ставится на первый план в ущерб тексту." 
Э.В. Муртазин

Насколько все-таки точно я поставил диагноз одному редактору любимого ресурса mobile-review. Не зря народная мудрость гласит: не хочешь срать -- не мучай жопу. А когда тебе каждый месяц, кровь из носу, надо выдать на сайт 30+ статей, волей-неволей пустишься во все тяжкие. Вот стал доступен iPhone 4s. Я, после часа личного знакомства, выдал твит "работает быстро, снимает хорошо, жена довольна" и полностью закрыл тему. Кузьмин же кумекает -- это ж тебе не сраный чехольчик, тут надо минимум материалов на пять резину растянуть. И цинично растягивает. Думаете скриншотиками? Ха-ха! дядю Сережу крепко осенило и он решил выложить полный список голосовых команд, которые понимает Siri! И пофиг, что этот список команд выложен на каждом углу, пофиг, что он тотально бесполезен для русскоговорящего человека, пофиг, что в материале в принципе нет никакого полезного содержания, и этот список занимает 60% ее объема -- главное, будет о чем еще написать завтра!... Ну а вишенкой на этой куче унылого гавна, которое предлагается скушать любимому читателю, является мощное видео.
Внимание! Впервые во Вселенной! Какой-то барыга в зеленом свитере и Кузьмин на ваших глазах сделают анбоксинг айфона 4s! А если вам этого мало, они еще, на полном серьезе, будут несколько минут синхронно тыкать в звонилку, пытаясь увидеть разницу в скорости между новой моделью и iPhone 4. Мои боги! этот кусок унылого гавна, длительностью четверть часа, постесняется выложить любой мало-мальски уважающий себя блоггер. Тут же такое шоу предлагается на "лучшем в мире ресурсе по мобильной тематике", который скоро, похоже, дойдет до выкладывания сканов с инструкций к мобильным телефонам.


Я не поленился, и специально полез в справочник юного сатаниста -- так и есть, за смертные грехи, вроде копи-паста в статью команд Siri или фокусов типа "не оказалось под рукой txt файла для проверки", журналиста в Аду ждет тысяча лет написания рекламных текстов про скороварки LG. Собственной кровью.

16 October 2011

Сравнение камер, очередная серия

Товарищ @zen_pc получил в свои цепкие рученки N9 и организовал очередную сравнительную фотосессию с участием iPhone 4, SGS2, E7 и NEX-5, проходящим вне конкурса.

В этот раз я выбрал для сравнения два сюжета -- "горка" и "машина". В Lightroom в этот раз все прошло очень быстро, потому что под рукой были опорные снимки с беззеркалки Sony.

Итак, сцена первая -- "горка".

NEX-5, E7, iPhone 4, N9, SGS2 

E7 -- явный аутсайдер. С цветами полная беда, картинка отдает желтизной. Детализация плохая, значительно хуже, чем у остальных участников.
iPhone 4 -- плохо. Гистограмма совершенно плоская, картинка имеет сильный фиолетовый оттенок. Детализация традиционно на высоте, но при таких цветах это слабое утешение.
Nokia N9 -- лучший снимок. Детализация, конечно, несколько послабее, чем на SGS2 или iPhone 4, но она на вполне достойном уровне.
SGS2 -- аппарат довольно сильно ошибся с экспозицией в большую сторону, что особенно хорошо видно по крыше горки, графити на ней читается значительно хуже, чем у остальных участников. Могу сказать, что такую ошибки смартфон от корейцев допускает очень и очень часто, судя по тем снимкам, которыми делится @zen_pc. В плане деталей снимок находится где-то на уровне с айфонов, т.е. в лидерах.

14 October 2011

ЖЗЛ. Достоевский.

Что-то как-то не везет мне на книги из серии ЖЗЛ.
К примеру, большой облом получился из книги о Высоцком. Теперь вот крайне унылая вещь о самом мощном русском писателе XIX века.


Честно говоря, удивляет, что подобная книга увидела свет при советской власти, первое издание -- 1981-й год. Автор, правда, аккурат до года издания своей книги был главным редактором серии ЖЗЛ (случайное совпадение?), но, в любом случае, писать о Достоевском в СССР очень было не просто. Потому что, с одной стороны, вроде как общепризнанный классик, с другой -- человек помешанный на теме Бога и религии, ну а о романе "Бесы" сам Владимир Ильич крайне нелестно отзывался.


Удивительно, но в плане раскрытия религиозной темы в творчестве Федора Михайловича товарищ Селезнев при написании книги ни в чем себе не отказывал. Никакого осуждения, порицания, оговорок или пропаганды здорового атеизма... Хотя не знаю, книгу я слушал в формате аудио-книги, которая была записана относительно недавно -- возможно весь этот мусор просто выкинули.

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

Если же говорить конкретно про книгу Селезнева, то у меня складывается стойкое ощущение, что он дотошно пытался скопировать художественную манеру главного героя своего повествования, но я бы не сказал, что это можно зачислить в достоинства книги. Ну а пространные уходы в анализ творчества писателя и его идеологические взгляды вообще убивают. Я понимаю, конечно, что автор у нас знаменитый исследователь творчества Ф.М., но, извините, если мне будет нужна критика -- я найду и буду читать критику, благо, этого добра хватает...

В итоге, из увлекательнейшей биографии, полной ярких и неожиданных эпизодов, по которой можно хоть голливудский блокбастер снимать, написана зануднейшая книга ни о чем. Вернее о том, что вообще лучше черпать не из нее, а из оригинала, т.е. книг Достоевского.
Однозначный незачот.

зы. Чувствую, что созрел полностью перечитать все романы Ф.М.
Ох, где бы только в это дурацкое и суетное время найти силы на этот христианский подвиг?...

09 October 2011

Apple: 2012

Читали ли вы гениальный роман "Братья Карамазовы"?... Есть там такой эпизод, когда в монастыре умирает старец Зосима, человек редких душевных качеств, из-за чего было у него при жизни много и поклонников, и недругов. Так вот, после смерти старца, последние и зашептали, мол, если труп старца начнется вонять и разлагаться, значит не праведную жизнь он вел, плохой был человек и Б-г таким образом дает знать об этом людям. 

Накануне последнего ивента Apple в массы была запущена шутка, мол каких-то 24 часа и все айфоны последней модели превратятся в тыкву. Шутники были правы, только ошиблись на день, и пострадали не только айфоны.



Огромная, сверхуспешная корпорация Apple поневоле стала заложником одного человека. И проблема не только в том, что они потеряли самого нестандартно и прозорливо мыслящего человека нашей эпохи, проблема в том, что они потеряли фигуру, вокруг которой строился культ, причем как внутри компании, так и снаружи, среди ее потребителей.

Apple это больше чем просто IT компания. Для многих это стиль жизни, это культ, это религия. Apple это не только продукты, это еще и возникающие вокруг них фанатики, и совершенно ненормальное, истерическое обожание.
Теперь мессия этого культа умер и, увы, не воскреснет как положено по всем канонам религиозного жанра.

07 October 2011

Интернет-магазин "Розетка": пятиминутка рекламы

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


23 сентября сего года в Одессу прибыли три монитора, которые заказывала моя фирма. Поехал их забирать наш снабженец. Естественно, на месте мониторы не проверялись. Во-первых, мониторов было три, и все их проверить дело заморочливое -- запакуй, потом распакуй, целое дело. Во-вторых, все кто был на точке выдачи "Розетки" у нас в Одессе знают, какое это веселое и удобное место для проведения манипуляций такого рода... Мониторы привезли в офис, тут же включили, один оказался с браком -- похоже, что он зашел в какой-то сервисный режим и никак не реагировал на органы управления. На мониторе постоянно скакали какие-то цветные пятна и бегала полоса. Ну бывает -- дело житейское. Монитор упаковали и повезли обратно. С момента получения и возвращения товара прошло меньше двух часов.

Теперь начинается самое интересное.



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

Бумажку подсунули примечательную во многих смыслах. В ней, к примеру, написано, что раз уж вы меня подписали, то будьте готовы ждать не 14, а все 60 дней, и это без учета сроков доставки...
Звонки по оставленному номеру всегда дают неизменный результат -- не хипишуйте, мамаша, монитор ваш находится в сервисном центре производителя! На резонное замечание, а ничего, что мы заплатили деньги за новый монитор и сидим тут как идиоты без оного, в не самой вежливой форме было сказано, что если вам что-то не нравится, можете идти в суд, в общество защиты прав потребителей, или вообще, сразу на три буквы...

Прошло хрен знает сколько времени -- мы до сих пор без монитора.
Что я имею сказать по этому поводу... Честно говоря, мне совершенно насрать на формальную сторону этого дела и законы. Как говорил еще Владимир Ильич: формально все правильно, а по существу -- издевательство. Это личное дело владельцев "Розетки" как вести бизнес, и каким образом решать проблемы клиентов. Если они считают, что это нормально, когда человек платит деньги за новую вещь, а вместо этого получает хуй и сидит несколько недель, ждет неизвестно чего -- это их личное дело. Просто в моих глазах карма вышеозначенной богодельни упала ниже плинуса и я больше никогда в жизни у этих товарищей ничего брать не буду. И другим не советую.

Про малую

Виталина Александровна растет просто на глазах. 

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




Сверх крика негодования в арсенале появились всяческие звуки, которые трудно передать буквами и которые издаются по множеству поводов, а иногда и бессистемно. Так мы выражаем эмоции, а из эмоций у нас все время появляется что-то новенькое, а не только вопль отчаянья "просрали все полимеры!"... Дитё стало улыбаться взрослым, раньше улыбку можно было увидеть только в процессе сна.

И последний штрих -- физические упражнения на животе. Упираемся руками, держим голову и из-зо всех сил и сухожилий пытаемся ползти.

Дети это клево!

06 October 2011

Цитата



"Your work is going to fill a large part of your life, and the only way to be truly satisfied is to do what you believe is great work. And the only way to do great work is to love what you do. If you haven't found it yet, keep looking. Don't settle. As with all matters of the heart, you'll know when you find it. And, like any great relationship, it just gets better and better as the years roll on. So keep looking until you find it. Don't settle.

(...)

Your time is limited, so don't waste it living someone else's life. Don't be trapped by dogma — which is living with the results of other people's thinking. Don't let the noise of others' opinions drown out your own inner voice. And most important, have the courage to follow your heart and intuition. They somehow already know what you truly want to become. Everything else is secondary."

05 October 2011

Оналитег и айфон

Вчера весь мир, затаив дыхание и обвалив трансляции всех топовых IT ресурсов, следил за тем, а сбудутся ли прогнозы Эльдара Муртазина насчет Apple. 
Прогнозы сбылись слово в слово. Нам показали и бюджетную версию iPhone 4, и новый iPhone 5 и даже телевизор от Apple в "one more thing", телевизор, о котором столько писали и говорили, а Эльдар даже смог до цента угадать цену на него. Уверен, исполнения следующего прогноза "от Эльдара"™ насчет социальной сети от Apple, конкурента фейсбуку, нам придется ждать совсем не долго.

Собственно, желая закрепить невероятный успех своих предсказаний, Эльдар Викторович тут же, по горячим следам, кинулся записывать сногшибательный диджестив. Некоторые вещи из него я и хотел бы озвучить. 

Белочка сидит и просто ахуевает!

#1."iPod Touch стоит столько же, сколько айфон, кому он нужен?".
Ммм... Контракт? О! Это такой пустяк!

#2. "Пятый айфон все равно будет!"
Да! Все прогнозы рано или поздно сбываются! И даже остановившиеся часы два раза в сутки правильно показывают время. Надо просто знать, когда на них смотреть.

#3. "Вы посмотрите как резко подешевел четвертый айфон! С $199 до $99, в два раза!".
Ммм... Контракт?... См. пункт первый.

03 October 2011

Мы все умрем

Наткнулся в новостях на такой интересный факт -- 90% украинских пенсионеров получают пенсию в пределах 1000 грн. Штука гривен, если кто не в курсе, это чуть больше $100, т.е. пенсия откровенно нищенская, с такой даже с хлеба на воду едва перебьешься.



В пенсионном фонде денег нет и, как говорится, не будет. Государство пытается всякими нехитрыми ходами императивного характера фонд наполнять. Борются с зарплатами "в конвертах" путем введения "реестра специальностей", согласно которому человек на определенной должности не может получать зарплату ниже какого-то уровня. Или вот валюту нынче купить можно только по паспорту, а скоро, чувствую, дойдем и до обязательного предъявления анализов мочи и кала при этом... 
Внешние долги у государства большие. Платить, как всегда, не чем. Украина 6-я в рейтинге из 18-ти стран, стоящих перед угрозой дефолта. Народонаселение в гривну не верит, и "паспортизацией" НБУ пытается приглушить давление на гривну, которое и без того порядочное за счет разрыва в торговом балансе на несколько миллиардов долларов. В пользу импорта, конечно.

02 October 2011

Говори!

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


Конечно, я делаю до фига ошибок, но в этом деле гораздо важнее готовность их делать и двигаться дальше, а не тормозить, тупить, стесняться... Самая частая проблема -- на ровном месте "теряешь" в голове самое просто слово, которое говорил тысячи раз, и вдруг оно забывается в самый неподходящий момент. Отдельная история, когда не уверен, что нужный глагол правильный, и past tense можно получить добавлением "-ed".
Когда говоришь про себя, то в случае затыка всегда можно растянуть паузу на любое время, расслабиться, и продолжить, причем продолжить хорошо продуманно и красиво. В рилтайм общении это, конечно, проблема и, похоже, тут надо учиться реагировать быстро, пытаясь описать  внезапно потерявшееся слово косвенным образом.

Планирую заниматься и дальше в том же духе, как и раньше, с поправкой на то, что времени сейчас ппц как не хватает, плюс с усилением акцента на говорение и пересказы. Практически каждый услышанный подкаст VOA я стараюсь хотя бы сжато, но пересказать, плюс, надеюсь, на голову мне все-таки свалится в скайпе добрая англоговорящая душа... Главное, что можно совершенно уверенно говорить о том, что прогресс в изучении более чем осязаем, и это здорово вдохновляет. За плечами девять месяцев самостоятельных занятий. Практически каждый божий день, минимум час, а иногда и два часа, т.е. думаю, что я подобрался где-то к полутысяче часов занятий.

"Хочешь выучить английский? Спроси у меня как!" (с). С высоты полученного опыта, могу сказать что в наш век это просто. Главное в этом деле не вера в чудесный курс по очередной уникальной методике нейролептического зомбирования в связке с ультразвуком и эффектом 30-го кадра, который за месяц сделает из вас гуру, а сильное желание и сила воли, которая каждый божий день тебя, уставшего после работы, будет поднимать из окопов на очередной мини подвиг. Ну а в рамках какого именно курса или методики это будет все происходить, не так уж и важно, главное чтобы это была методика, основанная на input методе, вместо грамматической муштры, забивающей голову всякой ерундой, которую ты уже на 90% забыл даже в родном языке после десяти лет школы.

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

зы. Бонус -- объяснение к используемой иллюстрации.

После рождения дочки, естественно, купили коляску.
Припер я ее домой -- огромную коробку с кучей деталей и инструкций на N языках и таким нереальным количеством картинок, что составитель, начав обзывать их по алфавиту A, B, C ..., в итоге все буквы исчерпал, и перешел на нумерацию. Как ни крути, современная коляска -- продвинутый гаджет!
Какого-то перечня запчастей в этой инструкции не было. Провозившись несколько часов с этим чудом и, вроде, более-менее разобравшись с нереальным количеством открывшихся возможностей, жена спросила про насос, который типа должен был идти в комплекте. Насос обнаружен не был, более того, в инструкции не было никакого намека на его присутствие.
Прошел месяц.
В один прекрасный день сидел я с малой на скамеечке, и мой взгляд упал на надпись внизу коляски. Надпись гласила "Eat me" "Air Pump" и это, таки да, оказался не тот хрестоматийный случай, когда слово из трех букв написано на заборе.
К чему я все это... А ну, если б я в школе учил немецкий?

01 October 2011

"Английские ученые"

В одной из передач VOA, Biology May Keep New Fathers Close to Home, услышал удивительную вещь. Оказывается ученые делали замеры у группы исследуемых мужчин, и выяснили, что у многих, сразу после рождения ребенка, на какое-то время падает уровень тестостерона в крови. Немного подумав, ученые мужи выдвинули гипотезу -- мол сама природа подталкивает сильный пол к заботе о своем потомстве, выводя бесконечную тему распространения своих генов на второй план.

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

Ваш Кэп.

28 September 2011

Бесконечная тема

И снова про рендринг шрифтов. Начну с цитаты отсюда:

"Microsoft сыграли злую шутку со всем остальным миром. Способ растеризации шрифтов в Windows XP представляет собой безвкусицу с полным отсутствием инженерной культуры. Текст в XP выглядит чётко и привлекательно, но при этом совершенно неправильно."

Извините, ребята, но о какой, на хрен, правильности идет речь, и почему я ее должен предпочесть четкости и привлекательности?!...

Правду говорят, старый Microsoft, который завоевал в свое время весь мир ПК, уходит в прошлое, сегодня в этой корпорации группа безруких идиотов просто проедает былые наработки. Тот Microsoft умел всегда находить нужные компромиссы в сложным вопросах, имел в своем фундаменте истинные ценности, вроде обеспечения совместимости и преемственности пользовательского опыта любой ценой... Новый же Microsoft выкатил в массы Windows Vista, в которой перестала работать добрая половина старых приложений. Эти же люди "перезагрузили" Windows Mobile, выплеснув вместе с водой и ребенка, предложив рынку примитивную и совершенно вторичную ОС с тотально не эргономичным интерфейсом. Эти же ребята придумали планшеты с вентиляторами. Этот же народ полностью просрал рынок веб браузеров и изуродовал риббон интерфейсом массу своих приложений.
Так держать!