14 авг. 2015 г.

VIM: форматирование JSON

Ну, vim тут, конечно, чисто как лаунчер, но в вордах такого не сделаешь:

:%!python -m json.tool


На выходе получаем отформатированный JSON из каши.

10 июл. 2015 г.

"Дающий" Лоис Лоури. Кратенько про впечатления

 Сперва посмотрел фильм "Посвященный". Ну, такой себе фильмец. Антиутопия, черно белый, тоталитарная коммуна... Видели, смотрели уже. Но потом решил прочитать книгу. Хотя книгой это произведение сложно назвать — 130 страниц всего. До последнего абзаца читал просто как сценарий фильма. А потом — бах, и книга раскрылась. Произведение изменилось. Стало восприниматься совсем по-другому. И это тот случай, когда книгу нужно прочитать перед просмотром фильма. В фильме я не увидел того, что открыла книга. Теперь, зная идею (по крайней мере я так думаю, что знаю), пересмотрю еще раз фильм с уже новыми ожиданиями.
Произведение — про выбор. Общество сделало выбор. В результате добилось описанного строя со всеми его привлекательными достатками и жестокими последствиями. Главный герой тоже сделал выбор. И получил красочное путешествие, приведшее к описанному финалу. И что самое интересное, читатель тоже получает возможность выбора: достигли ли беглецы своей цели, или описанный финал — сон умирающего замерзающего ребенка? К чему привел его выбор? К успеху или смерти младенца? А что бы читатель выбрал на месте Джонаса? Примечательно, что такая игра с читателем возникает на последнем абзаце произведения. Потому произведение как бы и не заканчивается — я рассказал, а ты выбирай.
Книга, как по мне, очень полезна для подростков, которые начинают делать первые значащие решения. И каждое решение может привести как к покатушкам на санках к теплому дому, так и к замерзанию в сугробе. Для людей взрослых, в прочем, книга тоже не будет бесполезным чтивом, если только не рассматривать ее как попытку автора описать возможное развитие событий. Она не о том.
Рекомендую.

5 июл. 2015 г.

Отменить запрет выделения и копирования текста на веб-странице

Не знаю зачем, но иногда на веб-страницах отключается возможность выделять и копировать текст. Отменить этот странный запрет можно введя в консоли JS:
javascript:
(function(){
  function ats(){
    var styles='*,p,div{user-select:text !important;-moz-user-select:text !important;-webkit-user-select:text !important;}';
    jQuery('head').append(jQuery('<style>').html(styles));
    var allowNormal=function(){
      return true;
    }
    ;
    jQuery('*[onselectstart], *[ondragstart], *[oncontextmenu], #songLyricsDiv').unbind('contextmenu').unbind('selectstart').unbind('dragstart').unbind('mousedown').unbind('mouseup').unbind('click').attr('onselectstart',allowNormal).attr('oncontextmenu',allowNormal).attr('ondragstart',allowNormal);
  }
  function atswp(){
    if(window.jQuery){
      ats();
    }
    else{
      window.setTimeout(atswp,100);
    }
  }
  if(window.jQuery){
    ats();
  }
  else{
    var s=document.createElement('script');
    s.setAttribute('src','http://code.jquery.com/jquery-1.9.1.min.js');
    document.getElementsByTagName('body')[0].appendChild(s);
    atswp();
  }
}
)();
либо просто добавив этот же кусок кода в букмарк, как я описывал в посте "Активные кнопки избранного на панели интернет-обозревателей".
В однострочном варианте он будет выглядеть так:

javascript:(function(){function ats(){var styles='*,p,div{user-select:text !important;-moz-user-select:text !important;-webkit-user-select:text !important;}';jQuery('head').append(jQuery('<style>').html(styles));var allowNormal=function(){return true;};jQuery('*[onselectstart], *[ondragstart], *[oncontextmenu], #songLyricsDiv').unbind('contextmenu').unbind('selectstart').unbind('dragstart').unbind('mousedown').unbind('mouseup').unbind('click').attr('onselectstart',allowNormal).attr('oncontextmenu',allowNormal).attr('ondragstart',allowNormal);}function atswp(){if(window.jQuery){ats();}else{window.setTimeout(atswp,100);}}if(window.jQuery){ats();}else{var s=document.createElement('script');s.setAttribute('src','http://code.jquery.com/jquery-1.9.1.min.js');document.getElementsByTagName('body')[0].appendChild(s);atswp();}})();

25 июн. 2015 г.

LinkedIn прикупил Lynda.com

Отакое! Пришло письмецо от Линкедина, что они купили Lynda.com. И в честь события дают погонять полный доступ к ней на 21 день.

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


7 июн. 2015 г.

OneDrive автоматически расставляет теги на загружаемые фото

Зашел в раздел фотографий на OneDrive, тапнул на Tags. Оказалось, что сервис автоматически расставляет теги на загружаемые фото. Причем достаточно точно распознает.

3 июн. 2015 г.

Telnet over SSL

Все люди, хоть немного связанные с компьютерами, знают, что для проверки и простейших операций с удаленным хостом можно использовать старый дырявый телнет (ведь правда знают?):

telnet somehost.com 8080
Но иногда нужно подключиться к хосту по SSL (secure) подключению. Тогда можно использовать openssl:
openssl s_client -connect somesite.com:443

26 мая 2015 г.

Семейный building

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

19 мая 2015 г.

"Woz: We've made machines too important". А Баба Яга против.

Наткнулся на статейку "Woz: We've made machines too important". Ключевая фраза статьи, как по мне,: ""We made them [компьютеры] too important. That makes us the family pet,". Что-то как-то я не уверен, Стив Возняк делал такие заявления. Инженер с таким-то опытом... Ну, а если и делал, то могу гордо не согласиться :) 
Думаю, что опять происходит неосознанная путаница. Как современные смартфоны (хотя я считаю, что старое название "наладонник", "наладонный компьютер" гораздо более правильное) называют телефонами и пытаются предъявлять требования как именно к телефонам: моя нокия умеет звонить и отправлять СМСки и держит батарею 3 недели — это и должен делать телефон; а эти новомодные "телефоны" умеют все кроме того что звонить и разряжаются за день. Если бы их называли именно наладонниками, то и претензий бы не было. Да, он умеет звонить по GSM/CDMA. Да, он умеет работать с СМСками. Но это наладонный компьютер
Так и в свете этой статьи (да и в обществе вообще) компьютеры (не забываем, что "мобильный телефон" == "наладонный компьютер") рассматриваются как некие разумные существа, которые крадут _моск_ обывателя. А это фактически всего лишь модем. Модулятор-демодулятор. Это интерфейс для коммуникации в сети. Коммуникации между людьми. Это окно. Окно для общения без ограничения в количествах и расстояниях. Никто же не сетует на то, что мне хватает веревочки на звонке, чтобы общаться с внешним миром, а эти новомодные проемы в стенах просто таки и стекло требуют дорогое, и позволяют подглядывать в них... Да и срок жизни большого окна меньше дырочки в бетонной стене. Современные мобильники — это средство общения. На обоих концах связи стоят (так или иначе) люди. Было бы гораздо проще называть их именно наладонниками и рассматривать как провод между тут и там. Тут — я, там — что-то другое.

11 мая 2015 г.

BetterTouchTool. Расширенные настройки Magic Mouse, Macbook Touch pad и других манипуляторов



Попалась мне на глаза бесплатная утилита BetterTouchTool, расширяющая функциональность многих видов манипуляторов под Mac OS. В окне настроек видны закладки для touchpad, Magic mouse, keyboard, Normal mice, Apple Remote и еще нескольких. Пока я опробовал настройку для встроенного в Macbook touchpad и Magic mouse. Работает.
До этих пор использовал MagicPref, которая используется для того же, но имеет меньше настроек, событий, действий и настраиваемых манипуляторов. Пока переключился на BetterTouchTool.
Обе программки бесплатные. Про BTT сказать пока не могу, но MP работает стабильно и беспокойства не доставляет. Надеюсь новая утилита будет такой же незаметной.

19 апр. 2015 г.

Mailinator.com — публичная почта


Натолкнулся на интересный сервис — Mailinator.com. Сервис предоставляет публичный почтовый ящик на одном из своих доменов (на сайте утверждают, что доменов сотни, но полный список они публиковать не собираются). Публичный означает, что доступ к почтовому адресу открыт для любого пользователя — главное знать имя ящика. Письма удаляются через несколько часов.
Основное применение сервиса — одноразовый почтовый адрес. Чтобы не светить свой Gmail, Mail.ru, Hotmail адрес. Однако сервис может быть использован и для, например, безопасной переписки между анонимными адресатами.

19 мар. 2015 г.

Skype: оформление текста в чате

Skype поддерживает некоторое примитивное оформление текста в окне чата:
StyleExample
boldThis is *bold* text
italicAnd this _italic_
strikethroughAnd ~strikethrough~
plain text inlineAnd inline {code}no text formatting, no emoticons, monospaced{code}
plain text fullAnd full message !! no text formatting, no emoticons, monospaced
no text formattingAnd @@ *no text formatting* but emoticons :D

22 сент. 2014 г.

Что делать с Raspberry Pi

Попала мне в руки относительно недавно Raspberry Pi. Поигрался, поставил разные дистрибутивы линуха на нее... Но на этом все закончилось. Какого-то конкретно применения не нашел. Варианты, найденные в ъоде опросов и серфинга:
1. Первое, что все отвечают на вопрос: "А что с ней делать?", — Домашний медиацентр и Онлайн-Телевизор! Не смотрю я телевизор. И из медии мне вполне хватает iPhone или ноута.
2. Умный дом! В съемной квартире его делать не вижу смысла.
3. Переносная рабочая линукс-станция! А ноут на что?
4. Домашний WiFi-роутер. Сейчас специализированные железяки стоят значительно дешевле и в обслуживании гораздо проще при той же функциональности.

Но несколько вариантов использования мне показались таки полезными даже для домашнего использования:
1. AirPlay (сотоварищи: WiDi, Miracast)-host. Подключается к монитору, телевизору через HDMI, раздает подключение через WiFi, BT, etc. Позволяет вести презентации, воспроизводить аудио/видео с большинства современных смартфонов и планшетов.
2. Паровозом к п.п.1 идет Презентационный комп. Такая себе навороченная фоторамка с внешним экраном. Не сильно он может конкурировать с ноутом, например, но при определенных входных условиях вполне может оказаться полезным. Если, к примеру, его нужно использовать всегда в одном помещении. Спрятать его где-то в шкафчике рядом с телевизором и не таскать с собой ноут, а только SD-шку менять с обновлениями.
3. Принт-сервер. Сетевой модуль для принтеров от HP стоит порядка $100. И далеко не все принтеры поддерживают такие модули. А тут, за $35 (плюс время на настройку) принт-сервер, способный обслуживать практически любой вариант подключения как пула принтеров (USB, LPT, Ethernet, etc), так и клиентов (MS Windows, Mac OS, Linux, iOS, Android, и т.д.). В том числе с возможностью подключения внешнего жесткого диска, что в случае большой очереди печати очень даже нужно. В крупных компаниях, конечно, для этого используют серьезные сервера. Но для рынка SoHo это применение, думаю, очень даже оправдано.
4. Собственно, Фоторамка. В отличие от имеющихся в продаже готовых рамок Raspberry Pi (и его аналоги) позволяет подключить, например, облачное хранилище данных. Поскольку фотографии сейчас в основной массе своей не переводятся из цифры на бумагу, а показывать их иногда хочется, то для семейных электронных фотоальбомов, думаю, нашлись бы потребители.

На этом пока мои варианты иссякли.

15 сент. 2014 г.

Mac OS + Midnight Commander

mc (midnight commander) == фактически единственный файловый менеджер, используемый в среде консольных *nix-ов сотоварищи. Ну, кроме command line, конечно. Но и в GUI среде он тоже дает профит. В Mac OS у меня прижился только он, не считая штатного Finder. Установку я делаю из бинарей, взятых тут. Настроек особых он не требует.
Единственное, что я (как и остальные, я думаю) не смогли побороть игнорирование mc клавиши Alt, замененной на маковских клавах на option. Но совсем недавно я таки нашел, чем ее заменить. mc замечательно понимает комбинации:

  • Esc-Enter (Alt-Enter) — скопировать имя файла под курсором в командную строку
  • Esc-h (Alt-h) — история команд
  • Esc-Tab (Alt-Tab) — варианты продолжения набранной команды

23 июл. 2014 г.

Вариант оценки потенциального работодателя для ITшника на этапе собеседований.

Интересный вариант оценки IT компании вычитал на RSDNe. Кое-что субъективно, но есть здравые мысли:

"Здравствуйте, уважаемые форумчане. В связи с поиском работы, а также в ходе ретроспективного анализа моих предыдущих мест работы, спешу поделиться своими мыслями о том, на какие неочевидные детали при собеседовании стоит обратить внимание дабы избежать компании/фирмы/организации в которых будет неуютно инженеру с богатым опытом, а также инженеру, перманентно стремящемуся к профессиональному и финансовому росту. Для каждой детали у меня есть своя гипотеза, почему именно она является неприемлемой.
Итак, начнём с собеседования с hr-менеджером
— с вами пытается торговаться о зарплате HR-менеджер и/или первым делом пытаются выяснить "минимальную сумму, за которую Вы согласны работать"
Сразу отметаем подобные организации. Дело в том что организация может искать человека с целью 1) закрыть вакансию 2) найти человека, который будет реально помогать делать продукт. В чём же отличие, спросит пытливый читатель? А отличие в том, что первый вариант предполагает менеджмент уровня "получить деньги на старт/продолжение проекта и набрать 'ресурс' за минимальный бюджет", в то время как второй вариант предполагает менеджмент уровня "собрать сильную команду на годы, для успешного создания и развития продукта". В результате разница разительная. В первом случае получается команда в среднем слабо компетентных разработчиков, просиживающих большую часть рабочего дня за интернетами, чаепитиями либо беседами "за жизнь". При этом над ними с кислыми минами и претензиями как коршуны вьются менеджеры проектов, которые являются в таких организациях first-class citizens. Что в принципе обосновано, т.к. вся работа по обеспечению притока капитала лежит на менеджерах. Во втором случае получается команда сильных профессионалов, которые большую часть рабочего времени делают продукт, обеспечивают качество продукта, и связь между притоком капитала и качеством продукта самая непосредственная. В этом случае именно инженеры являются first-class citizens. Подытоживая — во всех организациях, о которых я могу сказать что они ищут людей по схеме №2, вопрос о зарплате задавался после всех собеседований.
Вариант №1 практически всегда (пресловутые 95%) встречается у "интеграторов", "аутсорсеров", "стартапов", а также примерно в половине случаев она встречается у продуктовых компаний, причём чем крупнее компания — тем вероятность выше.Вариант №2 в 95% случаев встречается у небольших компаний со штатом инженеров в пределах дюжины, имеющих свой продукт который приносит стабильный доход.
— hr-менеджер даёт вам "психологические тесты"hr-менеджер действительно может оценивать кандидата в плане психологии, являясь фильтром для очевидно неадекватных кандидатов, однако тесты это уход hr-менеджера от ответственности в принятии решения, а так как работа hr-менеджера есть отражение менеджмента в целом, готовьтесь к тому что в организации весь менеджмент избегает ответственности любыми доступными средствами


Собеседование с техническим менеджментом ( тимлид/техдир )— в качестве системы контроля версий используется git ( исключение — open-source проекты )это может показаться забавным, но именно этот пункт является ярким индикатором незрелости/неадекватности команды инженеров. Дело в том что идеальной для подавляющего числа организаций является централизованная vcs, в частности svn ( в купе с vpn-доступом). Так как распределённая vcs вносит дополнительный уровень сложности, а количество инструментов для работы с тем же svn в разы больше чем для работы с другими vcs, то должна быть очень веская инженерная причина для использования git/mercurial/etc. Если вы поинтересуетесь причиной и вам в ответ скажут что-то пространное ( вроде "в git легко делать бранчи" либо "весь мир давно перешёл на git", "в git можно коммитить локально" ), то с вероятностью 95% вы имеете дело с молодой порослью — читателями ксакеп.ру, хабрахабр, лор, которые далеки от инженерии как Линус от балета.
— вам дают тесты на техническом собеседовании или "тестовое задание" на домздесь одно из двух, либо вы — молодой, подающий надежды специалист, которого не о чем спросить кроме как о виртуальных деструкторах, либо собеседующий вас — некомпетентен и опять же ( как в случае с hr ) избегает ответственности в принятии решений. Человека с опытом можно распознать в простой беседе о двух вещах: 1) зашипленных проектах и его роли в них 2) беседой о том как бы человек решил инженерную задачу ( реально существующую в компании или выдуманную — не суть ). В рассказе по этим двум пунктам важно услышать всё — и собранные требования и выбранные инструменты и примерный дизайн решения. Предложение же сделать домашнее тестовое задание — это моветон в чистом виде. Максимум что от вас могут попросить вменяемые технари — это пример кода.

Поле боя— у разработчиков один мониторБез комментариев. Просто бегите.
— рабочее место сильно ограничено по площадиЛюди цепляются локтями/спинками кресел? Вам здесь не рады."

17 июл. 2014 г.

Обзор: Don’t Overwhelm Yourself Trying to Learn Too Much

"Don’t Overwhelm Yourself Trying to Learn Too Much". В трех словах: "Нельзя объять необъятное". В данном случае — в приложении к самообучению программистов. Держать себя в тонусе конечно нужно, но если наброситься на все новости, инструменты, языки, методики, то специалистом все равно во всех областях не станешь, а сил и времени не вернешь. Походу к этим мыслям приходят со временем все. И Козьма Прутков тоже был не первым.

Обзор: What Makes a Good Check-in?

В статье "What Makes a Good Check-in?", как ни странно, обсуждается не Forsquare, а SVN. Потому я бы назвал статью в "What Makes a Good Submit?", но что есть, то есть. В статье рассуждается про пользу систем контроля версий, про то, как должен оформляться сабмит для того, чтобы нести реальную пользу для его автора и всех последующих пользователей. В общем, ничего особо нового, но освежить знания и понимание необходимости правильных самитов помогает.

12 июл. 2014 г.

Рабочее соглашение для фрилансера

Наткнулся на Work Agreement, предложенное одним из фрилансеров для использования его в качестве предварительной договоренности с работодателями на Odesk. Как по мне — неплохая "рыба", которую можно отсылать перед началом сотрудничества.
Решил сохранить у себя:

Work agreement

0.Preamble:
  Please read this agreement carefully. This will help you make a decision about my hiring and will give some understanding of ​​the workflow. This agreement applies to hourly jobs.

1.Workflow:
  Most projects consist of the following stages:   
  1.1. Interview:     
  It's time for acquaintance and general discussion about the project. You can ask me any questions and give a small tests to confirm my skills. I will ask you general questions about the project to understand what it is and what can I do. If all goes well, this step ends my hiring.   
  1.2. Requirements and large design:     
  The objectives of this step is clarification of requirements, creating and approving of the statements of work (problem). And then building a comprehension of ​​what should be the result of this work (solution). At this step we will discuss in detail: the functional requirements ("what and how it should do"), the user interface ("look and feel"), the internal architecture ("what be inside") etc. This step not will be included in the time track (i.e., it is free). But it is a significant part of the work so it will be make only after you hire me (I want to be sure that you are serious about the project).   
  1.3. Development:     
  It's the longest step. Here I will do small design, coding and test your solution. Usually this step induce a small amount of questions so we will do not communicate very often. I highly recommend watch my work diary and notify me immediately if you find any problems or you have any questions or any suggestions, it's will save our time. Upon completion this step you will get a turnkey solution for testing.   
  1.4. Integration and testing:     
  Here you will make test of turnkey solution, and make conclusions about suitability or about necessity do some changes (that will take us back to 1.2). If you satisfied we close this contract.   
  1.5. Maintenance:     
  If after ends contract you will have any questions or you found a bug, you can contact me and get help.

2.Warranty:
  2.1. Money back:     
    You can get your money back within the first week after start the contract.   
  2.2. Maintenance:     
    After completion of the contact you get a free 1 month (2 months for regular customers) of maintenance.

3.Regular customers:
  I really appreciate regular customersso if you back within next 3 months after ends contract you will get additional bonuses:   
  3.1. 15% discount.   
  3.2. Additional month of maintenance.

4.Additionally:
  By the accumulation of experience I will be change this agreement, but it has no effect on current customers.

1 июл. 2014 г.

Обзор: Vim for people who think things like Vim are weird and hard


Статья ничего нового не рассказывает. Описываются принципы работы в Vim, его плюсы и пара минусов. Однако одна деталь реализации культового редактора подмечена очень точно: Vim, на самом деле, довольно литературный. Практически все команды и сочетания клавиш составлены из соответствующих слов и в сочетаниях звучат как цельные предложения: 
  • diw is delete inside word.
  • cat is change around tags.
  • f> is go forward to a closing chevron (>).
  • vi" is visualise inside quotes (").
Интересное замечание, которое может значительно помочь в освоении программы. 

6 июн. 2014 г.

По мотивам новостей и статей.

Решил постить в блог свои мысли и заметки по поводу прочитанных новостных и не очень статей.
Начну с Beware the next circle of hell: Unpatchable systems в Infoworld. Основной вывод из теста статьи:
Со временем и софт и железо морально устаревает. Кроме всего прочего (устаревающие алгоритмы, повышенное энергопотребление, ограниченный набор функций) и то, и другое изучается и потенциально подвергается попыткам взлома. Поэтому давая жизнь какой-то системе нужно предусматривать возможность обновления. А с точки зрения потребителя этих систем нужно предусматривать возможность обновления и замены софта/оборудования, которые не поддерживают обновления. 

16 мая 2014 г.

Бадабум: Stackowerflow

В копилку бадабумов. stackowerflow.com решил прилечь.
И stackexchange.com с ним напару.

15 мая 2014 г.

Креативное описание вакансии: PHP программист космодесантник

Heliant разместили на HH замечательно оформленное описание вакансии "PHP программист космодесантник":
Даром что в Казахстане :)

Facebook наконец-то сделал оффлайн-постинг.

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

5 апр. 2014 г.

Notebook HP nx6125: Скрытые возможности

Есть у меня на хозяйстве вот такой старичок — HP Compaq nx6125. 2006 года выпуска. Машинка качественная, хорошо подогнанная, для своего времени очень мощная. На данный момент ее хватает только чтоб серфить в инете да фильмочки смотреть оттуда же. Для этого, собственно, и пользуем ее. Есть у нее стандартная ноутбуковская фича — тачпад. С двумя кнопками. Одна из первых, насколько я помню, получила специальную Scroll Zone на тачпаде — специальная вертикальная зона в правой части окошка, перемещение пальца в которой рассматривается как прокрутка колеса скроллинга мыши. Фишка стандартная и далеко не часто используемая. 
Однако недавно поставил я на него Linux Mint 16. И с удивлением заметил, что появился двухпальцевый скроллинг a-la Apple. То есть на момент производства этого аппарата (а это было не позднее 2005 года) уже существовали и использовались устройства ввода с мультитачем! Только вот программно они не поддерживались. Возникает вопрос: какие еще скрытые возможности есть у старых железок? Что этот ноут выкинет при очередном обновлении Линукса?

23 дек. 2013 г.

iOS рзаработка: зачем тестировать приложения на таргет-устройствах?! Есть же симулятор!

Решил сохранить цитаты из App Distribution Guide:

If you have an iOS app, make sure you test it not only in iOS Simulator but on all the devices and releases that your app supports. Testing on more than one kind of device ensures that your app operates exactly as you thought it would, no matter which device it’s running on. 
и из раздела "Beta Testing Your iOS App" 
Important: Rigorously test your app on a variety of devices and iOS versions. Because different kinds of devices and iOS releases have different capabilities, it’s not sufficient to test your app on a device provisioned for development or the simulator. iOS Simulator doesn’t run all threads that run on devices, and launching apps on devices through Xcode disables some of the watchdog timers. At a minimum, test the app on all devices you support and have available. In addition, keep prior versions of iOS installed on devices for compatibility testing. If you don’t support certain devices or iOS versions, indicate this in the project target settings in Xcode, as described in “Setting Deployment Info.” 
, чтобы ссылаться на них в случае возникновения вопросов у заказчика/работодателя по поводу ненадобности хардварных тестовых устройств. 

15 дек. 2013 г.

Evernote: Добавление записей с помощью email.

Evernote добавили функцию добавления записей посредством отправки email на закрепленный за пользователем адрес. Настройка этого сервиса находится в настройках аккаунта в разделе Account Summary. Адрес вида  [username].7z126@m.evernote.com генерируется сервисом и может быть сгенерирован заново в случае необходимости. Например, если адрес где-то засветился и ина него стал валиться спам.
Сервис поддерживает маркировку отправленных сообщений с помощью тегов (если добавить #tagname в конце темы письма), а так же размещение в указанном блокноте (указать @notebookname там же). Кроме этого, можно установить в формате ! признак того, что запись является напоминалкой.
Если в конце темы письма добавить символ "+", то тело письма будет добавлено к самой свежей записи с такой же темой, как и само письмо.
Пример:
Fwd: Recipe for Bouillabaisse !2013/06/01 @Recipes #soup #fish #french

Удобная, кстати, фишка — напоминалки через email. Скорее всего есть уже полно таких инструментов, но еще один не помешает :)

Генератор ссылок на iTunes от авторов iTunes

Наткнулся на сервис Linkmaker на iTunes, в котором можно сгенерировать ссылку на нужное приложение для вставки в постах в простом текстовом виде, в виде большой или маленькой кнопок. Так как изображения кнопок линкуются от производителя, то в случае изменения их дизайна в блоге кнопки сменятся автоматически.
Там же есть еще несколько сервисов по созданию виджетов, RSS и прочих контентов. Но их я пока не изучал.

11 дек. 2013 г.

Напоминалка по орфографии. Расти, но Рос

Так, напоминалка как писать слова, связанные с ростом и растениями. А то все время забываю.
РАСТИ, но РОС...
Корень рас(т)- пишется в глаголах расти, растить, вырастать, наращать и т.п. и во всех образованных от них словах, например: растение, произрастание, ращение, сращение, возраст и т. п., а также в слове отрасль;
корень рос(т)- пишется в прошедшем времени и в причастиях прошедшего времени от расти, например: рос, росла, росло, росший, вырос, выросший и т. п., а также в словах заросль, поросль, водоросль, недоросль, росток и в образованных от них словах.

9 дек. 2013 г.

Напоминалка: Найти UDID своего iOS-устройства

Простая WEB-напоминалка как узнать UDID у iOS-девайса: http://leftbit.com/findudid/  Не часто нужно, но потому и нужна, что успеваешь забыть, где его искать :)

2 дек. 2013 г.

Tips: Размеры некоторых элементов экрана iPhone/iPad

CGRect rect;

// Get screen dimensions
rect = [[UIScreen mainScreenbounds];
NSLog(@"Bounds: %@", NSStringFromCGRect(rect));

// Get application frame dimensions (basically screen - status bar)
rect = [[UIScreen mainScreenapplicationFrame];
NSLog(@"App Frame: %@"NSStringFromCGRect(rect));

// Get status bar frame dimensions
rect = [[UIApplication sharedApplicationstatusBarFrame];
NSLog(@"Statusbar frame: %@"NSStringFromCGRect(rect));

16 нояб. 2013 г.

iTunes Connect will be temporarily unavailable from Saturday, December 21, to Friday, December 27, 2013.

Apple предусмотрительно предупреждает о зимних каникулах iTunes Connect (система управления размещением приложений в Apple Appstore). С 21 по 27 декабря iTunes Connect будет закрыт. А это значит, что все, что до нового года должно попасть в аппстор должно быть засабмичено самое позднее 7 декабря (учитывая двухнедельное ревью приложения). А если еще, не дай Бог, есть поводы опасаться реджекта, то и того раньше, чтобы успеть пофиксить. В общем, очередная srachka.

15 нояб. 2013 г.

11 нояб. 2013 г.

SVN: работа с файлами, содержащими "@" в имени

Не первый раз сталкиваюсь с тем, что при работе из командной строки SVN игнорирует правую часть имени файла после символа @. Решается это добавлением после имени файла еще одной собаки @, чтобы SVN знала, что символ @ в имени файла — не последний символ. Например вот так:
svn add somefile@2x.png@

10 нояб. 2013 г.

Однострочники: Макрос получения локализированных строк

Простой Objective-C-макрос для получения строковых ресурсов в зависимости от дефолтной локали
#define LOC(__key__) [[NSBundle mainBundle] localizedStringForKey:(__key__) value:nil table:nil] 

7 нояб. 2013 г.

6 нояб. 2013 г.

"Attention Booster" aka "Разгон внимания": Тренируем память и внимание

Выложил в AppStore свое приложение "Разгон внимания". Приложение сделано по мотивам прохождения курсов скорочтения в клубе "Сапи" по методике Смотрицких. После этих курсов стал заметен прогресс в чтении, внимании и скорости восприятия информации. Чтобы держать себя в форме и не таскать при себе дополнительных папочек, было решено написать генератор четырех основных упражнений, которые в том или ином виде входят во все методики скорочтения: 3 вида таблиц и кольца Ландольта. К тому же, в программе эти упражнения все время генерируются заново, и глаз уже не сможет выучить расположение символов при долгом использовании одной и той же таблицы. Поскольку размер таблицы довольно критичен, то приложение разработано для iPad.
Буквенные таблицы Шульте —
тренировка бокового зрения
Кольца Ландольта — тренировка
концентрации внимания
В текущей версии, как упоминалось, программа предоставляет 4 вида упражнений: числовые, буквенные и смешанные таблицы Шульте, а так же таблицу колец Ландольта (C-charts). В первых трех упражнениях необходимо фиксируя взгляд на центре таблицы искать боковым зрением последовательно буквы и числа. Это упражнение развивает сосредоточенность взгляда и боковое зрение, что является непременным условием выхватывания большей части читаемой строки, чем 1-2 слова.

Таблица колец Ландольта позволяет тренировать сосредоточенность внимания при сканировании текста. В этом упражнении нужно искать кольца определенного направления, игнорируя другие кольца. Этот прием позволяет при быстром сканировании большого объема текста выхватывать знакомые слова и таким образом понимать суть текста.
Приложение имеет две локализации — русскую и английскую. К тому же оно бесплатно.

Скачивайте, пользуйтесь на здоровье.


5 нояб. 2013 г.

Bzzzer - скромный напоминатель

Выложил в Аппстор свою программу под названием Bzzzer. Функционал программы прост. После нажатия кнопки Start Bzzzer воспроизводит выбранный звук с выбранной же периодичностью. Периодичность предоставлена набором из 5, 10, 15 или 30 минут.
Однако смысл программы гораздо глубже, чем может показаться! Когда человек занимается каким-то увлекательным, а возможно совсем не увлекательным и рутинным, делом (листание какого-нибудь агрегатора фан-контента, чтение, рисование, программирование), легко забыть про течение времени. Но вместе с тем, не всегда есть возможность или желание отвлекаться, чтобы посмотреть на часы, вспомнить когда ты последний раз засекал время, сколько прошло с тех пор... Bzzzer ненавязчиво напоминает, что прошло пять минут. Или тридцать. И не отвлекаясь от работы ты отмечаешь, что с момента пуска Bzzzer прошло около 2 часов. Надо бы встать, размяться, подышать воздухом.
Таким образом Bzzzer скромно напоминает, что время уходит, что нужно подсуетиться и успеть больше.
Сам я Базззера пользую уже около 3 лет. Всегда очень помогает держать себя в рамках времени и при этом не просыпаться :)

Так что, welcome, как говорится.


28 сент. 2013 г.

Vim: обрамление выделенного текста другим текстом

Простой регексп для размещения в начале и конце выделенного текста определенных токенов (token1, token2):
:'<,'>s/\%V\(.*\)\%V/token1\1token2)/

24 сент. 2013 г.

Mac OS: Штатная цветовая пипетка (Color picker)

Понадобилось узнать составляющие цвета в окошке программы. Оказалось, что в Mac OS есть штатная утилита DigitalColor Meter. Имеет все, что нужно для периодического определения цвета: разнообразные цветовые модели (RGB, CMYK, etc), отображение в десятичном и хекс форматах, копирование в текста и битмапе. Интересная фишка - кастомный размер пипетки. Если пипетка больше, чем 1 пиксел, выводится усредненный цвет.
Вообще, приятно удивило наличие в стандартном наборе системных утилит шахмат и графопостроителя.

21 сент. 2013 г.

iOS 6.1 standard fonts list

Стндартный набор шрифтов из iOS 6.1

AcademyEngravedLetPlain,
AmericanTypewriter,
AmericanTypewriter-Bold,
AmericanTypewriter-Condensed,
AmericanTypewriter-CondensedBold,
AmericanTypewriter-CondensedLight,
AmericanTypewriter-Light,
AppleColorEmoji,
AppleSDGothicNeo-Bold,
AppleSDGothicNeo-Medium,
Arial-BoldItalicMT,
Arial-BoldMT,
Arial-ItalicMT,
ArialHebrew,
ArialHebrew-Bold,
ArialMT,
ArialRoundedMTBold,
Avenir-Black,
Avenir-BlackOblique,
Avenir-Book,
Avenir-BookOblique,
Avenir-Heavy,
Avenir-HeavyOblique,
Avenir-Light,
Avenir-LightOblique,
Avenir-Medium,
Avenir-MediumOblique,
Avenir-Oblique,
Avenir-Roman,
AvenirNext-Bold,
AvenirNext-BoldItalic,
AvenirNext-DemiBold,
AvenirNext-DemiBoldItalic,
AvenirNext-Heavy,
AvenirNext-HeavyItalic,
AvenirNext-Italic,
AvenirNext-Medium,
AvenirNext-MediumItalic,
AvenirNext-Regular,
AvenirNext-UltraLight,
AvenirNext-UltraLightItalic,
AvenirNextCondensed-Bold,
AvenirNextCondensed-BoldItalic,
AvenirNextCondensed-DemiBold,
AvenirNextCondensed-DemiBoldItalic,
AvenirNextCondensed-Heavy,
AvenirNextCondensed-HeavyItalic,
AvenirNextCondensed-Italic,
AvenirNextCondensed-Medium,
AvenirNextCondensed-MediumItalic,
AvenirNextCondensed-Regular,
AvenirNextCondensed-UltraLight,
AvenirNextCondensed-UltraLightItalic,
BanglaSangamMN,
BanglaSangamMN-Bold,
Baskerville,
Baskerville-Bold,
Baskerville-BoldItalic,
Baskerville-Italic,
Baskerville-SemiBold,
Baskerville-SemiBoldItalic,
BodoniOrnamentsITCTT,
BodoniSvtyTwoITCTT-Bold,
BodoniSvtyTwoITCTT-Book,
BodoniSvtyTwoITCTT-BookIta,
BodoniSvtyTwoOSITCTT-Bold,
BodoniSvtyTwoOSITCTT-Book,
BodoniSvtyTwoOSITCTT-BookIt,
BodoniSvtyTwoSCITCTT-Book
BradleyHandITCTT-Bold,
ChalkboardSE-Bold,
ChalkboardSE-Light,
ChalkboardSE-Regular,
Chalkduster,
Cochin,
Cochin-Bold,
Cochin-BoldItalic,
Cochin-Italic,
Copperplate,
Copperplate-Bold,
Copperplate-Light,
Courier,
Courier-Bold,
Courier-BoldOblique,
Courier-Oblique,
CourierNewPS-BoldItalicMT,
CourierNewPS-BoldMT,
CourierNewPS-ItalicMT,
CourierNewPSMT,
DevanagariSangamMN,
DevanagariSangamMN-Bold,
Didot,
Didot-Bold,
Didot-Italic,
EuphemiaUCAS,
EuphemiaUCAS-Bold,
EuphemiaUCAS-Italic,
Futura-CondensedExtraBold,
Futura-CondensedMedium,
Futura-Medium,
Futura-MediumItalic,
GeezaPro,
GeezaPro-Bold,
Georgia,
Georgia-Bold,
Georgia-BoldItalic,
Georgia-Italic,
GillSans,
GillSans-Bold,
GillSans-BoldItalic,
GillSans-Italic,
GillSans-Light,
GillSans-LightItalic,
GujaratiSangamMN,
GujaratiSangamMN-Bold,
GurmukhiMN,
GurmukhiMN-Bold,
Helvetica,
Helvetica-Bold,
Helvetica-BoldOblique,
Helvetica-Light,
Helvetica-LightOblique,
Helvetica-Oblique,
HelveticaNeue,
HelveticaNeue-Bold,
HelveticaNeue-BoldItalic,
HelveticaNeue-CondensedBlack,
HelveticaNeue-CondensedBold,
HelveticaNeue-Italic,
HelveticaNeue-Light,
HelveticaNeue-LightItalic,
HelveticaNeue-Medium,
HelveticaNeue-UltraLight,
HelveticaNeue-UltraLightItalic,
HiraKakuProN-W3,
HiraKakuProN-W6,
HiraMinProN-W3,
HiraMinProN-W6,
HoeflerText-Black,
HoeflerText-BlackItalic,
HoeflerText-Italic,
HoeflerText-Regular,
Kailasa,
Kailasa-Bold,
KannadaSangamMN,
KannadaSangamMN-Bold,
MalayalamSangamMN,
MalayalamSangamMN-Bold,
Marion-Bold,
Marion-Italic,
Marion-Regular,
MarkerFelt-Thin,
MarkerFelt-Wide,
Noteworthy-Bold,
Noteworthy-Light,
Optima-Bold,
Optima-BoldItalic,
Optima-ExtraBlack,
Optima-Italic,
Optima-Regular,
OriyaSangamMN,
OriyaSangamMN-Bold,
Palatino-Bold,
Palatino-BoldItalic,
Palatino-Italic,
Palatino-Roman,
Papyrus,
Papyrus-Condensed,
PartyLetPlain,
STHeitiSC-Light,
STHeitiSC-Medium,
STHeitiTC-Light,
STHeitiTC-Medium,
SinhalaSangamMN,
SinhalaSangamMN-Bold,
SnellRoundhand,
SnellRoundhand-Black,
SnellRoundhand-Bold,
Symbol,
TamilSangamMN,
TamilSangamMN-Bold,
TeluguSangamMN,
TeluguSangamMN-Bold,
Thonburi,
Thonburi-Bold,
TimesNewRomanPS-BoldItalicMT,
TimesNewRomanPS-BoldMT,
TimesNewRomanPS-ItalicMT,
TimesNewRomanPSMT,
Trebuchet-BoldItalic,
TrebuchetMS,
TrebuchetMS-Bold,
TrebuchetMS-Italic,
Verdana,
Verdana-Bold,
Verdana-BoldItalic,
Verdana-Italic,
ZapfDingbatsITC,
Zapfino

8 июл. 2013 г.

A-la Win95 ;)


Nostalgi? Nope. Just picture :)

26 июн. 2013 г.

Mac OS: Afloat — повышение функциональности окон


Утилита Afloat устанавливается, как системное расширение в MacOS X и добавляет несколько функций для управления окнами приложений. Несколько пунктов меню добавляется в меню Window Cocoa-приложений. Я этот плагинчик ставлю, в основном, из-за двух функций: перетаскивание окна за любое место (по нажатию Cmd+Ctrl) и изменение размера окна (та же комбинация + драг правой клавишей мыши). В дополнение есть функция Always On Top, регулировка прозрачности окна и еще несколько других. Единственное ограничение — поддерживаются только Cocoa-приложения.
Программа бесплатна и удобна. Рекомендую :)

25 мая 2013 г.

Шпаргалка по разработке Objective-C приложений

Вольный... Нет. Очень вольный перевод статьи Стюарта Холла "iOS Development Tips I Would Want If I Was Starting Out Today" (Шпаргалка по iOS разработке, которую я хотел бы иметь, если бы начинал разрабатывать сегодня).

Программирование под iOS становится легче с каждым релизом Xcode. И каждая новая фича увеличивает количество вариантов выбора. 
В мои годы (запах плесени) было гораздо тяжелее! Это так. Но сейчас предъявляют все более высокие требования к качеству. Планка качества постоянно растет. И это хорошо.
И доведись мне начинать свое знакомство с iOS-разработкой сегодня, я бы сильно хотел, чтобы мне кто-то дал почитать этот текст. Надеюсь он кому-то поможет.

Используйте ARC!

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

Тулим блоки где только можно

Блоки похожи на ARC. По крайней мере в том, что блоки — это тоже замечательно. Используя блок ты пишешь меньше кода, и он значительно лучше, чем раньше. Меньше кода == меньше багов. Вот тут - классное введение к использованию блоков (ахтунг - тут и далее много нерусских букв - прим. переводчика). 
NSNotifications и _delegate/@protocol все еще на коне. Но сначала подумайте о блоках, а потом уже — про Акима

Опасносте детектед! Retain Cycles в Блоках

Тут тема разжована. Кратко: retain cycles, это когда два объекта (будь-то блок, таймер или вездесущий self) ретейнят друг друга и не могут со спокойной душой отойти в мир иной и устраивают утечку памяти. С блоками такое легко подхватить.

Потоки? Не, не слышал. Пользуй GCD

"Был у дева головняк. Он решил заюзать thread. Головняк теперь двояк."
GCD облегчает нам жизнь. Он — наш друг. Только не забудьте вернуться в главный поток, если делаете что-то с UI.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) {
    // Your code
    dispatch_async(dispatch_get_main_queue(), ^(void) {
        // Now you can interact with the UI
    });
});
Хорошее объяснение GCD можно найти хере

Singletons / Shared Objects

В продолжение о GCD. Он помогает забыть про ручное выпиливание синглтона:
    + (MyClass *)sharedClass {
static MyClass *_shared = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
    _shared = [[MyClass alloc] init];
});   
return _shared;
}
Все! Боле ничего не нужно. А зацените, сколько весит NSDateFormatter и его создание при каждом обращении! Хороший повод засунуть его в синглтон.

Story Boards — только для быстрых прототипов

ИМХО, со Story Boards больше геморроя, чем пользы. Но это мое мнение. Многие любят их. Решите сами.

XIBы — только для базовых набросков

У Interface Builder столько "низзя", что проще собрать нужную вьюшку в рантайме. К тому же, мержинг двух версий XIB-файла — тот еще трюк, который обычно никто и не делает. Гораздо проще смержить два сорца.
Можно что-то набросать базовое. Но ровнять все равно лучше в коде.

Держите свой проект упорядоченным

Я подзавязал с Ruby on Rails. Но организация проекта мне понравилась. Я так организую свои проекты в Xcode:
Xcode structure
Чистота — залог здоровья!

Присмотритесь к Open Source

Существует множество бесплатных опенсорсных библиотек и компонент. Github забит выдающимися сорцами, который можно просто кинуть в свой проект и пользовать их. Кроме того есть Cocoa Controls. Там тоже полно вкусняшек.
Некоторые либы я включаю почти в каждый свой проект:
Если вы гуглите какой-то модуль, он скорее всего уже тут есть. Ну, по крайней мере что-то похожее.

Управление зависимостями проекта

Чтобы управляться с набором либ, подключенных к проекту, рекомендую пользовать CocoaPods. Этот инструмент делает amazing job. Прямо как Ruby's gems.
Или можете просто использовать отдельные модули.

Попробуйте полюбить Stack Overflow

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

Элегантная деградация

Зачастую хочется использовать свежие фичи новых версий iOS. Но девайсы со старой версией iOS все еще в ходу, и фишки типа  Tweet Sheets в iOS 5, SKStoreProductViewController & UIActivityViewController в iOS 6 приходится поддерживать и для более взрослых версий.
В этом нам поможет не Бахметьев, а проверка существования класса в рантайме:
if (NSClassFromString(@"SKStoreProductViewController")) {
// Класс существует, значит мы в iOS 6+
    SKStoreProductViewController *storeController = [[SKStoreProductViewController alloc] init];
….
}
else {
    // Нет такого класса - значит мы на старом корыте
}

Кастомные шрифты

В прежних версиях iOS (lj 3.2) это была жопа. Поэтому все использовали штатную Helvetica. Но теперь все стало шикарно!
Тутe — краткое описание. Если непонятно как называется шрифт, загляните в Font Book и посмотрите PostScript-имя шрифта.

Локализация должна начинаться до проекта

Локализация реализуется с помощью Xcode очень просто. Особенно, если не использовать xib-файлы. Но легкость локализации проекта в самом начале пропорциональна сложности локализации уже существующего проекта.
Это — замечательный пример локализации приложения под iPhone.

Отслеживайте краши

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

Analyze

Инструмент Product -> Analyze должен стать вашим другом. Статические анализаторы — мощное орудие в борьбе с Хейзенбергом.

Instruments

Product -> Profile билдит приложение и запускает Instruments. Instruments — коллекция инструментов (внезапно) проверки вашего приложения. Во-первых стоит взглянуть на "Time Profiler", который покажет сколько процессорного времени занимает ваше приложение. Если ваша табличка скроллится как растекшееся масло, скорее всего она потреблят слишком много процессорного времени.
Instruments

Отслеживайте обзоры

<без ложной скромности>Баги были, есть и будут. Никуда от них не деться. И в отзывах они будут упомянуты. И будут вести они к плохим обзорам. В том числе от юзверей из стран, про которые вы даже не слышали. Не игнорируйте их. Обрабатывайте и получайте их с помощью AppBot. </без ложной скромности>
Уверен, что забыл кучу полезных советов. Да и не все мои советы будут приняты единогласно. Но буде единая заблудшая душа спасена сим постом, буду считать свою миссию выполненной.

14 апр. 2013 г.

Фантомные обновления в iTunes

Столкнулся с ситуацией, когда iTunes не моем маке показывает, что имеются несколько обновлений купленных приложений. Однако при входе в в раздел скачивания обновлений Apple Store количество обновлений равно нулю или минус то, что показывается iTunes. Какое-то время я не обращал внимания на это различие в показаниях. Но недавно число фантомов увеличилось до 4. Решил разобраться.
Выяснилось вот что. На Новый Год я подарил подруге iPod. Инициализировал я его со своего компа. И ставил несколько программ. Потом ее iPod я отвязал от своей учетки и прописал на нем ее данные. Дальнейшая синхронизация ведется с ее компа. Свой комп я так же деавторизовал от ее учетки. Но эти несколько программок остались в локальном хранилище iTunes. И поэтому программа при проверке наличия обновлений учитывала и эти программы, а Apple Store мне показывал только те, которые куплены на мою учетку.
При очередной синхронизации своего iPhone мне iTunes показала примерно такое окошко:
Это меня и навело на догадку о происхождении фантомов. Открыл список приложений в iTunes, отыскал указанные программки и удалил их оттуда. Фантомы пропали.
В форумах Apple (https://discussions.apple.com/) периодически возникают темы про Phantom updates. Но там четкого ответа я не увидел. А он тут лежит. :)

Эра односложных доменов закончилась! Ура, товарищи!

Эра односложных доменных веб-имен, похоже, завершилась. Сейчас практически нереально найти свободный домен, состоящий из одного осмысленного, то бишь существующего в каком-то словаре, слова. Даже в более или менее развитых доменных зонах а-ля com.ua, ru. Не говоря уже про зоны com/net/org. В лучшем случае получится придумать какое-то новое слово, состоящее не из семи подряд согласных и легко запоминающееся. Что-то типа iosism. Но это будет одно из исключений поговорки про все новое и хорошо забытое старое. Все что было старое, скорее всего уже есть в root DNS скрижалях.

Про исчерпание четырехбуквенных com-доменов уже давно известно. Так что тут тоже облом. Минимум 5 букв. Имеется в виду не 4-буквенные осмысленные слова. А все возможные варианты расположения букв вообще.

Самый реальный вариант _создать_ красивый домен - использовать словосочитания из двух-трех слов. Лучше двух. Но что интересно, добавление артикля the к слову в большинстве случаев не делает домен двусложным по доступности:) Скорее всего некий киберсквоттер уже постарался на эту тему.

Ежели поразмыслить далее, то можно предположить, что региональные зоны будут получать все большую популярность. IT-crowd вообще очень неохотно пользуются товаром киберсквоттеров. Поэтому домен скорее будет приобритаться в зоне типа .bel за $10 в год, нежели его com-овский тезка у спекулянта в 200 раз дороже. Тем паче, что львиная доля всех зарегистрированных доменов сейчас смотрят на заглушки-каталоги, что не добавляет им рейтинг у поисковиков. 

Ну и появление дополнительных тематических зон должно иметь место быть. А-ля .game, .movie, etc. Вообще, удивляюсь, почему для голливудских фильмов до сих пор не завели отдельную зону. Такой жЫрррный рынок. Там не по 10 у.е. в год можно брать абоноплату. Ежели отхапать себе такую зону, то можно будет в пенсионный фонд ничего не оплачивать, а уехать куда-то жить в шикарный отель в Симферополе :)

Кстати, локализированные зоны типа .рф - один из признаков этого вектора движения. Выглядит оно конечно коряво, как по мне. Примерно такая же припарка к DNS как и кириллическая раскладка к IBM-стандартной клавиатуре. Но технология есть, она будет развиваться и отлаживаться, ибо рынок сбыта есть. И он практически пуст на предмет предложения, так как это фактически монополия. Тут двум игрокам будет тесновато. Поэтому кто первый встал, того и tapku.

К чему весь этот текст? Просто для систематизации своих мыслей на эту тему. Ну и, опять-таки, опять нет повода не выпить! Поднимем стаканы за начало эры двусложных доменов, господа! :)