31 October 2012

Про Android API

Благими намерениями что-то оптимизировать устлана дорога в Ад для программистов

Забудьте все, чему вас учили (c) армейское 

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



Жаба давит

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

Сразу скажу, я не яростный противник виртуальных машин, managed кода и сборки мусора. Я говорю лишь о том, что с момента появления Java мы видели и стремительно развивающийся .NET, который очень быстро перегнал своего идейного вдохновителя, и множество языков под JVM, типа той же Scala. И в конечном счете, вся эта история, по-моему, доказала нехитрый тезис о том, что совершенно невозможно сделать удобный в использовании язык программирования со статической типизацией в рамках полной аскетичности и тотального минимализма. Чем больше фич -- тем лучше. Прости, дедушка Вирт. 



"Оптимизаторы"

С Java разобрались, едем дальше.

Целый ряд проблем связан с попытками типа оптимизировать некоторые вещи. 

Вообще большинство вещей в Android реализованы на C++ из вполне понятных соображений производительности. При этом API пользователя к этой функциональности сделан через Java классы, т.е. это некий промежуточный слой перехода из объектно-ориентированной среды и виртуальной машины в нативный код. Сам интерфейс взаимодействия виртуальной машины и нативного кода довольно ограниченный и, откровенно говоря, неудобный, ибо предоставление ABI для C++ это та еще история, и чтобы ее успешно разрешить, нужно серьезно над этой задачей работать (см. что сделала Microsoft в WinRT). В итоге получается, что со стороны пользователя вроде как есть современный интерфейс, основанный на языке высокого уровня и классах, но ниже, под капотом, вся эта красота вынуждена использовать крайне невыразительные средства для взаимодействия с нативным кодом, который, собственно говоря, всю функциональность и реализует. Возникает, так сказать, когнитивный диссонанс. Так вот, одна из проблем Android заключается в том, что множество ограничений взаимодействия VM и native серьезно сказались на дизайне высокоуровнего API, который, в итоге, предоставили бедному пользователю.

30 October 2012

***

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

29 October 2012

Эпоха Владимира Кличко

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

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


Однако, если присмотреться к достижениям тоже же Железного Майка, можно обнаружить интересную вещь. Свой самый яркий участок в карьере, когда Железный Майк был действительно Железным, когда у него не было ни одного поражения за плечами и он проводил чемпионские бои, это участок Тайсон прошел за каких-то три с половиной года (c ноября 1986-го, бой за пояс WBC, до поражения нокаутом в начале 90-го). За это время было выиграно всего лишь десять боев и два из них прошли полную дистанцию, когда Майк побеждал по очкам.

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

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

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

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


26 October 2012

Про Objective-C

Смотрел как-то презентацию "A tour of 7 programming languages: Ruby, JS, CoffeeScript, Objective-C, Go, Clojure and Scala" -- беглый обзор нескольких языков программирования.

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

Собственно, вот это слайд. Без комментариев.


25 October 2012

Виталина Александровна -- фотохроники с полей

Решил насобирать всякой всячины из жизни любимой доци.

#1. Ребенка не проведешь.
В наличии имеется детский телефон -- яркий, с мигающими кнопками и музыкой. Казалось бы, что еще ребенку для счастья надо?
Еще есть старенький бюджетный Siemens с монохромным дисплеем и единственным работающим экраном "вставьте сим карту" -- его отдали малой на растерзание в качестве игрушки.
Игрушечная игрушка не вызывает вообще никакого интереса, зато старенький "сёмен" -- одна из любимых.


24 October 2012

iPad mini и другие

Собственно, как вчера и обещал в твиттере -- мои мысли по поводу вчерашней презентации Apple.

Самое главное и интересное это, конечно же, iPad mini (ибо OS X и продукты на ней это игрушки для пидарасов, хипстеров и прочих маргиналов), но перед тем, как перейти к уменьшенной версии всем известного планшета, некоторые общие моменты, на которые я обратил внимание.


Утечки. Смех смехом, но при Джобсе такого не было. Не знаю, может, конечно, Apple нынче сама их делает, дабы создать в Сети нужный объем движухи задолго до самого анонса, дык сюрпризность и ощущение праздника это убивает на корню. Особенно это касается недавно показанного iPhone 5.

Кук в роли ведущего. Я первый раз смотрел презентацию в видео формате без Джобса в главной роли (спасибо Apple, что предоставила такую возможность всем желающим) и обратил внимание, насколько новый CEO пытается копировать манеры своего великого предшественника. Выглядит это все как-то не очень, у каждого должен быть свой собственный стиль.
Довольно странно выглядит также тот факт, что абсолютно все новые продукты показывал не глава компании, а абсолютно нехаризматичный Шиллер, которые куда-то все время спешил и летел, словно ему надо было срочно в туалет. Наверное, это старая привычка, ведь раньше Джобс обязательно все главные продукты презентовал лично, а прочую мелюзгу выпускал на сцену минут на пять, в антракты, дабы они оттеняли его величие и способности шоумена.
Еще я обратил внимание на запинки и оговорки в речи Кука, когда он сам себя правил и начинал говорить предложение по новой. Появлялось нехорошее ощущение, что он словно читает с бумажки, или зубрил свою речь весь последний месяц, но так и недозубрил.
Каждый раз, когда Кук говорил что-то про iOS 6, мне казалось, что ему стыдно за этот продукт. Это стыд был столь заразителен, что даже передавался и мне...

23 October 2012

Про космос

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


И еще один интересный момент, на который я обратил внимание.
В Советском Союзе все космические дела (впрочем, как и многие другие) происходили в полной тайне. Вот Гагарин успешно слетал -- раструбили! А если бы, не дай Б-г, случилось бы чего -- никто ничего бы и не узнал. Как не узнали, например, про Чернобыль. Даже мелкого некролога в газетах не напечатали бы, а через полгода снова был бы запускали "Восток-1" и в нем сидел бы какой-то другой Юрий Гагарин.
Никаких проколов! У советского народа под руководством мудрой коммунистической партии все всегда успешно получается с первого раза!...

И Штаты. Какие тайны? В NASA вливали дикие деньги из бюджета и эти ребята готовы были публично отчитываться за каждый доллар, более того, честно пытались из многих своих достижений сделать шоу. Про "Аполлон-11" и планируемую высадку человека на Луну все знали заранее. Куча людей съехалось к космодрому. Телетрансляции, прямой эфир по всему земному шару. На старт даже приглашали советскую делегацию, но наши, понятное дело, не поехали -- мы не умеем радоваться чужим успехам. У них же отсталый строй, они не могут быть в этом деле первыми. И телетрансляцию, понятное дело, в Советский Союз не пустили.

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

Мораль? Очевидна.
Тоталитаризм, коммунизм и плановая экономика ведут не в космос, а в жопу, типа той, которую можно сегодня наблюдать в Северной Корее.
Несмотря на рабский труд граждан на благо своего государства и великим идеям конкурировать на равных с США, которых надо было догнать и перегнать, было совершенно нереально, и видно это не только на примере космоса, но и на множестве других примеров, от автопрома до вычислительной техники. И простите моё капитанство, но инженер, который имеет престижную работу и соответствующую зарплату, работает почему-то сильно лучше инженера, который гнет спину за позорные 100 рублей, а то и за баланду в "шарашке".
Как-то так.


зы. Абсолютно нереальная по накалу страстей и драматизму случилась история с "Аполлон-13". После трех дней пути к Луне в космическом корабле рванул бак с кислородом, но экипаж, проявив фантастическое мужество, выжил и благополучно вернулся на Землю.
Если вы никогда не читали деталей этой истории -- очень советую.


22 October 2012

Про софт из Cydia

Относительно недавно джейлбрейкнул таки свой iPad, который продержался в режиме девственника почти полгода.

С мотивацией взлома были какие-то непонятки.

То ли я это сделал потому, что понял, что от iOS 6 надо держаться подальше.

А может просто потому, что вышли Fieldrunners 2 с совершенно конским (по меркам AppStore) ценником... Кстати, хорошо, что я за них, в итоге, денег не заплатил -- сберег себе кучу нервов... Нет, сама игра просто отличная -- рекомендую! -- но вот версия 1.0 для iPad это было нечто. Просто нескончаемые загрузки игры и уровней, возвращающие нас во времена ZX-Spectrum и кассетных магнитофонов, вылеты при включенном Wi-Fi, и прямо таки неприличные тормоза, которые я как-то уже и отвык видеть в играх для iOS.
В итоге игру я успешно прошел в айфон версии (retina для iPhone 4+ в окошке почти на весь экран не так уж и ужасна), но осадочек, как говорится, остался. В данный момент вышло обновление HD версии, я его щупал -- загрузки по прежнему отбивают всякое желание играть, а свернутая в фон игра "вылетает" практически от любой попытки поработать в другом приложении (а значит снова наблюдать этот бесконечный "loading...").


Но вернемся с джейбрейку... Помимо возможности ставить варез (на самом деле, это скорее режим тест-драйва, ибо действительно стоящие программы я всегда стараюсь покупать, не смотря на весь геморрой с оплатой кредитками), так вот, помимо возможности ставить варез, я обычно мало чем еще пользуюсь из новых открывшихся возможностей, которые якобы дает побег из ональной тюрьмы имени Apple. И дело тут даже не в том, что iPad прямо таки идеальное устройство, и все эти бесконечные ограничения меня ни капельки не угнетают. Дело в том, что система изначально не спроектирована для всевозможных твиков и они являются для нее абсолютно чужеродными, приводящими к глюкам, тормозам и другим нехорошим проблемам. Да и общий уровень всех этих поделок, даже тех, которые типа популярны, и тех, за которые еще и просят деньги, остается откровенно любительским... В общем, я крайне скептично отношусь к идее о том, что лучший Android это iPhone + jb + Cydia, и рассказывая ниже об используемых программах, я объясню, почему так думаю.

12 October 2012

Сенсация -- Microsoft закрывает проект Windows и начинает производить телогрейки!

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


Пятница!... На M-R выходит материал. Как всегда у пациента, если не скандал вселенского масштаба, то как минимум сенсация масштаба планетарного. Подзаголовок статьи, цитирую дословно: "для Microsoft программное обеспечение отойдет на второй, если не на третий план". Туш. Занавес.

Много-много бессвязных букв крутятся вокруг примитивной идеи -- бесплатное всегда выиграет у платного. В смысле операционные системы Microsoft, за которые, как известно, просят денюжку, не выдержат конкуренции с ОС от Apple (они типа бесплатные) и Android.
Что на это можно ответить?

#1. Модель Windows полностью доказала состоятельностью идеи "ОС за деньги + железо от OEM".
Закрытое "бесплатное" десктопное решение от Apple и рядом не стояло.
А еще можно вспомнить действительно бесплатный Linux. И его прямо таки оглушительные успехи в области завоевания персональных компьютеров.

#2. Есть просить за свою ОС для смартфонов жалкие $10 и завоевать с ее помощью хотя бы половину всего рынка, то эта история будет приносить минимум два с половиной миллиарда долларов в год чистой прибыли, если оценивать этот рынок по результатам прошлого года. А продажи смартфонов, как мы знаем, из года в год растут сумасшедшими темпами, т.е. в перспективе это сильно большие цифры.

#3. Отчисление в $10 вполне терпимо даже для сегментов, стоящих сильно ниже топовых смартфонов типа iPhone, за которые просят $600-$700. Тут и $20 на конечную цену будут слабо влиять, и потребитель при выборе будет учитывать совсем другие факторы, среди которых, в числе первых, будет используемая операционная система, ее сильные и слабые стороны.

#4. Вопрос с бюджетными смартфонами и стоимостью лицензии для них Microsoft тоже, при желании, сможет разрулить -- успешный опыт в этой сфере у нее имеется, смотри историю с нетбуками.

#5. Бесплатность Android это отдельная большая история.
Google не сильно распространяется по поводу финансовой состоятельности всего этого направления, но есть мнение, что это все еще такой безумно популярный стартапчик с совершенно непонятными перспективами в плане монетизации.

#6. Внезапно!... А ведь Microsoft уже производила смартфоны. И никто не умер. Хотя менеджеров проекта Kin стоило если не расстрелять, то, хотя бы, оторвать им яйца.


Итого -- очевидно, что путь Apple не сулит Microsoft каких-то невероятных профитов. Более того, жажда играть в относительно небольшой, но высокомаржинальной области, в перспективе, ни к чему хорошему не приводит, потому что твой конкурент захватывает 90% рынка и начинает зарабатывать сильно больше тебя тупо на объемах.

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


зы. Возвращаясь к Муртазину. Не пытайтесь найти логики в действиях сумасшедшего.
Почему планшеты Surface это не продукты для продажи а "сигнал рынку", а вот смартфоны это совсем другая история знает только он один и никто более.
Ну и собственные смартфоны как подстраховка на случай скоропостижной кончины Nokia это, конечно, отдельная, очень смешная шутка. Очевидно, вместе с Nokia точно так же скоропостижно могут преставиться и HTC, и Samsung. Так что внимательно следите за творчеством Великого дальше, уверен, он нас много чем еще удивит.

зы2. Переделить существующий рынок ОС для смартфонов очень просто -- для этого надо всего лишь сделать операционную систему, превосходящую конкурентов по всем статьям. Лучшую ОС. WP7 или слабо отличающаяся от нее WP8 на эту роль никак не тянут. В этом трагедия Microsoft, и лишь в этом все ее проблемы.

11 October 2012

Про заимствования

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

На самом деле, есть ровно два способа вводить "чужие" слова (в том числе, имена и географические названия).


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

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

Насколько я понимаю, в русском языке упор сделан на импорт через написание.
С одной стороны, есть у этого способа очевидные преимущества -- не надо думать, что делать со звуками, которых не существует (типа английского "th"), плюс, сохраняется высокая степень узнаваемости слова, когда ты видишь его написанным на родном языке.
С другой стороны, есть и проблемы. Если говорить про английский язык, то это язык, в котором есть ужасная по своим масштабам проблема -- разрыв между написанием слова и его произношением, которое может иметь совершенно непредсказуемый, иррациональный характер. Поэтому если попытаться импортировать слово из английского просто по буквам, вооружившись простыми правилами типа "t" транслируется в "т" и так далее, то на выходе получится что-то, по произношению не имеющее никакого отношения к оригиналу. И я говорю не про какие-то совершенно безобидные вещи, типа доктор Ватсон vs доктор Уотсон, а про полную жесть, когда бывает только раза с десятого до тебя доходит, что именно имеется ввиду. Пример -- послушайте, как по-английски звучит название штата Арканзас. Если вы раньше не слышали этого слова, и оно будет вырвано из контекста, вы никогда в жизни, не догадаетесь, что речь идет о географическом названии, которое вы хорошо знаете...

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

07 October 2012

Galaxy S3 -- про Jelly Bean и панику


JB

Решил таки обновиться до 4.1. 
Вообще, обычно я таких вещей не делаю, руководствуясь принципом "от добра добра не ищут", но в случае SGS3, не смотря на то, что основные вопросы и проблемы были закрыты, некоторые фиксы все-таки хотелось получить. Например, уйти от мутной схемы с tasker'ом для борьбы с хрюкающей музыкой при выключенном экране (подробности). 

Помолясь (в обнимку с Titanium Backup), накатил новую версию, выбрав для этого самое подходящее время -- вечер пятницы. Нет, не потому, что пьяный и поэтому смелый, а потому, что если чего пойдет не так -- есть целых два дня на приведение тела в чувство. 

В принципе, все прошло довольно гладко. Сначала прошивка, потом восстановление рута. Данные и программы сохранились, тут вопросов нет. 

Основная проблема -- сломалось несколько программ. Самое обидное -- сломался локскрин с блекджеком и шлюхами виджетами. После обновления с ним возникла маленькая проблема: приложение больше было не в состоянии блокировать аппаратную кнопку home, поэтому она не только будила телефон, но и сразу его разблокировала. Эта хорошо известная проблема, которая раньше наблюдалась на SGS2, но в SGS3 на 4.0.4 ее не было, а вот на 4.1.1 мы ее получили обратно. Вряд ли это сделали специально, скорее всего банально проебали какой-то код при сборке под JB. Для обхода этого момента в локскрине есть костыль под названием HomeHelper, но работает он так грустно, что желание пользоваться своим блокировщиком экрана сразу улетучилось. 

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

Выглядит ужасно, я знаю

Что увидел на новой прошивке.

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

05 October 2012

Galaxy S3 -- всячина

Память

С оперативной памятью в Android (и SGS3 в частности) полная жопа. 
Честно, я совершенно не понимаю, как в этом мире существуют роботосмартфоны, у которых RAM меньше гига, ибо эти 1024 мегабайта для зеленого чудовища столько же просторны, как 4 мегабайта оперативы для Windows 95. 

Ситуация усугубляется еще и тем, что память, похоже, подтекает, и с каждым отработанным часом ее становится в системе все меньше и меньше. После загрузки, с учетом того, что в памяти висит все необходимое добро, типа звонилки, оболочки и клавиатуры, для приложений доступно всего лишь около 250 мегабайт. При этом начальной порог прибивания приложений в системе настроен на 100 мегабайт. Т.е. как только свободной памяти становится меньше 100 мегабайт, встроенный в систему механизм начинается зверствовать и прибивать висящие в фоне приложения. Итого, у нас остается 250 минус 100 -- 150 мегабайт для обычных программ, которые могут удержаться в фоне. И самое печальное, что эти 150 мегабайт таят с каждым часом, и уже через пару дней эта цифра становиться раза в два меньше. Как результат -- программы в фоне практически не задерживаются, система их прибивает на раз, не говоря уже о том, что становится совершенно нормальным явлением перезапуск рабочего стола (я использую Go Launcher) после выхода из какой-нить игры. 


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