1 сент. 2016 г.

Objectve C: немножно макросов для облегчения имплементации протокола NSCoding

Для поддержки протокола NSCoding в Objective C класс должен реализовать два метода для (де)сериализации каждого поля объекта. Ниже привожу набор макросов, которые упрощают этот процесс:

In order to support NSCoding protocol in Objective C class must implement 2 methods to (de)serialize every object's field. Below is set of macro to make it little easy:


#define encObj(__name__) {if(__name__) {[aCoder encodeObject:__name__ forKey:@#__name__];} }
#define encPoint(__name__) [aCoder encodeCGPoint:__name__ forKey:@#__name__];
#define encSize(__name__) [aCoder encodeCGSize:__name__ forKey:@#__name__];

#define encInt(__name__) [aCoder encodeInt:__name__ forKey:@#__name__];
#define encFloat(__name__) [aCoder encodeFloat:__name__ forKey:@#__name__];
#define encDouble(__name__) [aCoder encodeDouble:__name__ forKey:@#__name__];
#define encBool(__name__) [aCoder encodeBool:__name__ forKey:@#__name__];

////////////////////
////////////////////
#define decObj(__name__) __name__ = [[aDecoder decodeObjectForKey:@#__name__] retain];
#define decInt(__name__) __name__ = [aDecoder decodeIntForKey:@#__name__];
#define decFloat(__name__) __name__ = [aDecoder decodeFloatForKey:@#__name__];
#define decDouble(__name__) __name__ = [aDecoder decodeDoubleForKey:@#__name__];
#define decBool(__name__) __name__ = [aDecoder decodeBoolForKey:@#__name__];
#define decPoint(__name__) __name__ = [aDecoder decodeCGPointForKey:@#__name__];
#define decSize(__name__) __name__ = [aDecoder decodeCGSizeForKey:@#__name__];

14 июл. 2016 г.

MacroDroid замечательная тулза для автоматизации Android device

MacroDroid замечательная тулза для автоматизации Android device

Некоторое время назад у меня по разным причинам появилось несколько мобильных номеров, которые сейчас растыканы по нескольким Android девайсам. Таскать их все при себе и каждый день читать пришедшие SMS и пропущенные звонки занятие достаточно утомительное и часто забываемое. Решил сделать форвард SMS и нотификацию о пропущенных звонках на Email. Пошерстил Play Store, но достойной утилиты так и не нашел. Есть либо то, либо то. И каждая с какими-то приколами и глюками. И вдруг наткнулся на уже установленное когда-то приложение MacroDroid. И оказалось, что она умеет не только кучу всего прочего, но и именно то, что мне нужно! В бесплатном варианте утилита имеет ряд ограничений, одно из которых — 5 макросов. Но, во-первых, для конкретной задачи этого вполне достаточно. А во-вторых, стоимость Pro версии — 60 грн (~$2), что ну совсем не цена для такого комбайна. Поэтому крайне рекомендую.
Ну и как резюме — краткий лайфхак. Если у вас есть набор Android телефонов, при определенных требованиях их совсем не обязательно таскать с собой, чтобы быть на связи. Можно сделать форвард SMS и нотификации на email (или посредством той же SMS), которые подключены на одном аппарате. Главное чтобы остальные аппараты были на подзарядке. Или мониторить их состояние тем же MacroDroid.

MacroDroid wonderful tool for Android device automation

Some time ago I've got for different reasons set of mobile numbers which now being attached to set of Android phones. Check for new SMSes and missed daily is quite boring and frequently forgotten task. I've decided to make forwarding such events to my email. Digging to Play Store did not provide any worth utility. Any of found had own bugs and glitches. Occasionally I noticed MacroDroid, that I installed long time ago and forgot about it. And I figured out that along with a ton of other stuff it can do exactly what I need! Free version has some limitations, e.g. 5 macroses. Although, it is more than enough for my concrete task, and moreover Pro version costs only about $2 that is not a price for such processor. So, can honestly recommend it.
And small lifehack as final conclusion. If you have set of Android devices with different mobile numbers, it is not mandatory to bring carry them all. You can just make forward all incoming SMSes and missed calls notifications either to email or with same SMS which are configured on single device. The only thing to monitor is battery level of the rest of devices. Moreover it can be done by same MacroDroid.

4 июл. 2016 г.

Wordpress: 500 internal Server error на заглавной странице

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

Столкнулся с тем ошибкой "500 internal server error" при открытии одного из сайтов под управлением Wordpress. Открытие других страниц по прямым ссылкам происходит нормально, а home page дает эту ошибку.
/var/log/apache2/error.log содержит записи "PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted". Все посты на эту тему указывают на то, что нужно увеличить объем доступной PHP памяти. Но у меня ему и так выделено 128MB. На других сайтах на том же хосте все нормально в этом плане.
Полез посмотреть базу сайта. Оказалось, что активная тема в одном из своих PHP-скриптов содержит строку:
add_custom_field('Bannerimage', 1)
, которая выполняется при каждом обращении к базе постов. Это привело к созданию более 44 тысяч записей в таблице wp_postmeta и, соответственно, заполнению всей выделенной памяти.
Судя по всему это какой-то дебажный код, попавший в релизную сборку темы. Строчку удалил, все такие записи из этой таблицы вычистил, сайт проверил. Домашняя страница стала открываться нормально.



Just faced "500 internal server error" error while opening front page of one of Wordpress powered sites. Other pages including admin dashboard are opened successfully by direct links. File /var/log/apache2/error.log contains lines like "PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted". All internet posts point that the reason is low memory accessible to PHP. Although it is already configured 128MB for PHP. Furthermore, other sites on same host work well.
Decided to discover site' database. And figured out that wp_postmeta table contains more than 44K records which contain Bannerimage value. Short search through sources revealed that active theme contains in one of PHP files line like:
add_custom_field('Bannerimage', 1)
, which executed every referencing to posts table. Sequentially all memory was grabbed while reading the table.
Seems it some debug code was left in release build. I've removed the code line, deleted all such records from the table, checked site. Home page now is opened well.

12 июн. 2016 г.

Именная тара от Coca Cola


Некоторое время назад (с год наверное, или два?) Coca Cola стали разливать свой напиток в тару с напечатанными именами и различными мотивирующими определителями типа "Красавчик", "Умница" и т.д. И я не устаю восхищаться гениальности этой выдумки. Никак не изменив сам напиток компания привлекла армию новых покупателей, которые приобретают его ради надписи на бутылке или  банке! Это же гениально! Из простого продукта он сразу стал предметом подарка. Я сам кинул в сетку несколько бутылок с именами членов моего семейства, хотя ни коку, ни пепси не употребляю. И казалось бы что в этом такого? Идея-то проста. Но вот как до нее дойти? Как увидеть, что продукт можно улучшить, изменив то, что к нему вообще никакого отношения не имеет?
Просто гениально!

3 июн. 2016 г.

Программы беговой дорожки EnergyFIT EF-6606A

Около года назад купили мы беговую дорожку EnergyFIT EF-6606A. Дорожка — так себе. Поскрипывает, пошатывается, сборка не ахти. Пульсомер работает по только ему понятному алгоритму — показания прыгают от 70 до 190. Размерность скоростей почему-то выбрана в 3 км/ч, что совсем не удобно. Скорость обычно изменяется на 1-2 км/ч. Увеличение скорости идет с шагом 0.1 км/ч. Чтобы увеличить скорость на 2 км/ч приходится выбирать следующую фиксированную скорость, а потом 10 раз нажимать кнопку плавного уменьшения скорости. Или крутить колесико на приборной панели.
Колесики эти — отдельная песня. Под ними гений китайской инженерии разместил сверхяркие синие светодиоды, которые слепят пользователя даже в хорошо освещенном помещении. В темноте они вообще шпарят так, что ничего кроме них не видно. Пришлось их сразу закрыть круглыми нашлепками на ножки для мебели. В общем, такое.
Еще одна прелесть этого экземпляра — полное отсутствие описания его функциональности. При том, что дорожка имеет 12 предустановленных программ изменения скорости и три варианта использования, я нигде не нашел хоть какой-нибудь документации к ней. Ни служба поддержки, ни интернет-магазин, где я ее покупал... Скайп, почта, телефоны. Глухо. Пришлось эмпирическим путем разбираться что и как в ней работает. Собственно, результат своих изысканий и помещаю ниже.

Дорожка имеет следующие режимы работы:

  1. полностью ручной: включение, выключение, выбор и изменение скорости производится вручную;
  2. H1 — выбор времени, через которое остановить дорожку;
  3. H2 — выбор расстояния, после которого остановить дорожкку;
  4. H3 — выбор количества калорий, после расхода которого остановить дорожкку;
  5. P1-P12 — автоматическое изменение скорости дорожки в течение определенного времени. По умолчанию программа длится 10 минут. Это число можно поменять в диапазоне от 5 до 99 минут. Заданное время делится на 10 равных промежутков, каждый из которых включает соответствующую скорость. При длительности 10 минут — каждый шаг программы занимает 1 минуту, при 5 минутах — 30 секунд и т.д.
Перечень запрограммированных скоростей:
#P1P2P3P4P5P6P7P8P9P10P11P12
1332332222222
2334366944553
3646565945765
4548664745576
5557788756888
6458677665696
74565755865109
8462453383256
9463353263435
10342342222323
В ходе изучения программ дорожка несколько раз сбоила и не переключала скорость на заявленную, хотя индикатор показывал изменение. 

В общем, позвалить дорожку никак не получается. Однако я рад, что мы купили хоть какую-то. Тем более, с 50% скидкой. За ее полную цену на сайтах (порядка $800) я бы не рекомендовал брать эту модель. Да и этого производителя. 
Несколько слов про преимущества беговой дорожки дома. Более или менее длительное чтение, просмотр фильма, или прослушивание подкаста сложно осуществить в режиме хотьбы или бега в тренажерном зале, а тем паче на улице. Придется отвлекаться на препятствия, светофоры, звуки всякие... А на беговой дорожке можно спокойно поставить ноут, взять iPad в руки, одеть наушники, выбрать удобный режим (хоть ходьбы, хоть бега) и полностью отвлечься от окружающей обстановки. Приятное с полезным. 

Совет от рекрутера

В 258 эпизоде подкаста "Software Engineering Radio" интервьюировали основателя и главного рекрутера в компании "RockIT Recruiting", которая специализируется в найме программеров для IT компаний Сан-Франциско. Кроме всего прочего, он дал интересный совет: "Первое, говорит, что я посоветовал бы своему другу, это никогда не отправлять своё резюме через сайт компании, в которой он бы захотел трудоустроиться. Особенно если это большая компания. У них идет такой поток данных от своих и внешних рекрутеров, что то, что приходит через форму сайта, в 99% случаев вообще не просматривается. А зачастую все входящие резюме фильтруются по отсутствию в них ключевых слов типа Google, Standford, etc."


24 мая 2016 г.

Знания, как расходный материал

Намедни возникла мысль, которая еще не полностью сформировалась, но что-то в ней есть. Не уверен, что это относится к другим профессиям, потому мысль относится к сфере IT. А точнее к разработчикам. Работая над каким-то проектом разработчик все глубже погружается в используемые в нем инструменты, технологии, языки. И чем дольше он занимается этим проектом, тем более узким, или наверное точнее будет сказать заточенным, становится набор его умений. Он не забывает окончательно все, что знал до этого. Основы других языков и областей, общие какие-то принципы и понятия, названия и назначения инструментов, которые не используются в текущем проекте. Однако у него уже не получится просто взять и переключиться на другой, забытый или еще незнакомый инструмент. Особенно вне рамок текущего проекта. Уйдет время на отвыкание от приобретенных привычек и рефлексов, на чтение, пробы, обучение новому.
Возникает аналогия с амортизацией, финансовые и временные расходы на которую необходимо учитывать при использовании автомобиля или любой другой техники. Чем активнее используется, скажем, автомобиль, чем более неровные дороги он покрывает надрывая двигатель, тем дороже и дольше обойдется его ремонт и восстановление. А рано или поздно это придется делать. Или менять его на новый автомобиль. Можно, конечно, делать текущий Т/О достаточно часто, чтобы предотвратить критические поломки. Но это связано с дополнительными затратами на транспортировку к месту ТО, на сам осмотр и т.д. В случае программиста чем дольше он занят на одном проекте, и чем глубже он в него погружен и, соответственно, не имеет возможности отвлечься на развитие в других направлениях, тем больше он упускает новинок. И тем больше ему придется наверстывать, когда по той или иной причине ему таки придется уйти из проекта. Как и в случае с периодическим техосмотром авто программист может (и должен) иногда переключаться на другие активности и направления. Однако, как и в случае с авто, это связано с последующими временными затратами на восстановление "потока" в текущем проекте. Ну и на дорогу туда-сюда. И стоимость этого периода наверстывания так же должен быть включен в стоимость текущей эксплуатации знаний программиста, чтобы потом компенсировать месяц, полгода, год, которые уйдут на разгребание навалившихся новых фреймворков, технологий, версий операционок и языков.

12 мая 2016 г.

Google+-подобные репосты в блоге

Намедни захотелось мне сделать так, чтобы ссылки на страницы, на которые я ссылаюсь в блоге, оформлялись при репосте в социалках типа G+, FB, VK: картинка из статьи, под ней — заголовок статьи, по ним — пара строк текста из начала статьи. Сделать визуальное оформление такого плана не шибко сложно. Главная сложность — обработка содержимого статьи и вычленение из него тех самых составляющих: картинки, заголовка, начала. Это такая себе не тривиальная задача. Чтобы не изобретать велосипедов и использовать готовые решения придумал костыль (а куда без них?). Хотя достаточно удобный и подходит для всех, по крайней мере известных мне, блоговых движков.
  1. В G+ создаем новый пост
  2. вставляем в текст ссылку на нужную статью
  3. дожидаемся пока статья оформится в G+-like style
  4. выделяем готовый блок от картинки до конца текста
  5. копипастим выделенный блок в режиме Compose (не HTML) в предварительно созданный и открытый на редактирование пост в своем блоге.
Получается неплохо. Между своим текстом и скопированным блоком я вставляю HTMLную отбивку HR в HTML режиме. Можно, конечно, какую-то рамку добавлять, но я особого смысла в этом не увидел.
И как бонус (пока по крайней мере) — картинка сохраняется на G+, а не локально в блоге.
Как пример — репост моего вопроса в гуглогруппах на предмет существующей возможности такого оформления постов:


11 мая 2016 г.

Microsoft хочет заменить MSDN и TechNet

Опять Microsoft. Теперь они анонсируют сервис документации https://docs.microsoft.com, который вроде бы должен заменить собой MSDN и TechNet. В анонсе говорится, что ресурс будет опенсорсный, статьи можно будет править, комментировать, версионировать. То есть такая себе msWiki. Правда пока что сервис встречает пользователя фразой "Sign up for a 30-day trial of the Enterprise Mobility Suite". Слабо верится, что MS откажется от MSDN как от источника прибыли за счет подписки. Скорее всего будет платная VIP-зона, и бесплатная Fan-зона. Как оно сейчас и есть. Только дизайн будет другой. Ну, время покажет.


24 апр. 2016 г.

Microsoft урезает место на OneDrive.

Бизнес вносит коррективы в современный словарь. Термины "Навсегда", "Безлимит", "Бесплатно" значат совсем не то, что ожидается. 
Ну и, как всегда, бесплатный сыр — только в мышеловке. Рассчитывать на что-то бесплатное в долгосрочной перспективе смысла нет. Это еще, кстати, подтвердил недавний анонс закрытия проекта RoboVM. Сначала заявили, что они опенсорсные и бесплатные. Народ ломанулся их адоптить. Потом, что опенсорс закрывается и остается только лицензирование. Народ посерьезнее купил лицензии, чтобы продолжить свои разработки. А потом и вообще решили закрыться. И даже те предприятия, которые купили лицензию, не смогут на нем базировать свои долгосрочные проекты.

А тут и Microsoft подтянулся.


Microsoft OneDrive storage changes - OneDrive
As the OneDrive storage limit changes start to take effect, this article has information and details about the changes and what they might mean for you.

support.office.com

16 апр. 2016 г.

Репост: Переживания цивилизованного человека.

Статейка про природу нашего беспокойства. Для хомо сапиенс характерно больше беспокоиться и переживать за будущее, чем за кратковременное настоящее. В отличие от менее развитых существ. Чем более цивилизовано общество, тем меньше его членам нужно заботиться о сиюминутном выживании, но тем больше они вынуждены переживать за свое и сородичей будущее. Образование, перспективы, зарплата, семья... И чем меньше уровень цивилизованности, тем короче тот период времени, за который человек пытается заглянуть. Причем это заметно и в современном обществе. Чем спокойнее и стабильнее живет страна (тот же СНГ), тем дальше начинают загадывать ее граждане — на 10, 20 и более лет. В 90е загадывать на год-два вперед было уже сложно.
В отличие о людей, у животных таких проблем нет. Поймал оленя, съел, валяешься под деревом и ни о чем не думаешь. Только пытаешься сам не стать съеденным.





Let’s pretend for a moment that you are a giraffe. You live on the grasslands of the African savannah. You have a neck that is 7 feet long (2.1 meters). Every now and then, you spot a group of humans driving around on a safari taking pictures of you.

29 мар. 2016 г.

Unicode последовательности и NSString. Unicode composed sequence and NSString.

Завязался с оперированием эмотиконками из набора Unicode символов строке NSString. Одна из сложностей с Unicode в том, что он бывает не только UTF-8, но и UTF-16, и UTF-32. В данном случае стояла задача удаления последней эмотиконки из строки текста. Посимвольное удаление не работает, поскольку даже при том, что для этих значков используется UTF-32 (то есть длина символа понятна — 4 байта), существую так называемые Композиционные последовательности Unicode (вольный перевод). Например, такой неоднозначный значок как "👨‍👨‍👦‍👦"(Family: MAN, MAN, BOY, BOY) состоит из 7 символов: U+1F468 U+200D U+1F468 U+200D U+1F466 U+200D U+1F466. Соответственно, чтобы удалить одну иконку, нужно удалять до 7 символов. Причем от иконки к иконке их количество меняется. У NSString для этих случаев есть набор методов для работы с такими последовательностями. Они описываются в статье "NSString and Unicode", поэтому их все я тут описывать не буду. Конкретная задача удаления последней иконки, вне зависимости от количества составляющих ее Unicode символов была решена так:

NSRange rng = [str rangeOfComposedCharacterSequenceAtIndex:[str length]-1];
        str = [str substringToIndex:rng.location];

В частности, здесь использован метод rangeOfComposedCharacterSequenceAtIndex, который возвращает NSRange, указывающий на первый символ последовательности и на длину самой последовательности. Дальнейшее оперирование производится как с обычными символами.

22 февр. 2016 г.

Outsource, Bodyshop, Product. В чем различие?

В области разработки софта сейчас наиболее распространены три вида участия компании-разработчика в проекте:
  1. Outsource, полный и частичный,
  2. Outstaff, он же body shop, он же бодишоп,
  3. Product. К нему же можно отнести и стартапы, но с небольшими оговорками. Хотя... Выделю-ка их отдельно
  4. Стартапы
Для рядового сотрудника (девелопера, менеджера низшего звена) от схемы работы могут зависеть ожидания от работы в этом проекте, перспективы роста и перспективы расставания с компанией.

Начну с аутсорса

В большинстве своем в Украине (думаю, что то же самое относится и к ближнему зарубежью) на аутсорс отдают часть рутинной работы по продукту, который уже спроектирован, разработан и требует допиливания напильником. Либо когда самая "вкусная" разработка делается кадрами самого заказчика, а на аутсорс отдается багфикс и рутинные таски, не требующие высокой квалификации. Это очень хорошая возможность для заполнения резюме оттачивания базовых знаний в стеке технологий, используемых в проекте и доступных аутсорсерам.
Чего ожидать рядовому девелоперу от таких проектов? По скиллам — не особо много. Но пару строчек резюме заполнить можно будет. По сотрудничеству с подрядчиком — сильно зависит от работодателя. Если компания аутсорсер небольшая (до 100 девелоперов) и имеет 1-2 текущих проекта-источника доходов, то очень велик шанс, что проект закроется в самый неожиданный момент. Рассчитывать на бенч (скамейку запастных девелоперов, которым платят из кармана аутсорсера за то, чтобы они не убегали в другие конторы) в такой компании не приходится. Не из-за того, что хазявы плохие, а просто из-за небольшого бюджета конторы. По факту, такие компании не особо отличаются от бодишопов.
Если же компания-аутсорсер большая — 500+ типа Luxoft и Epam, то тут шансов на долгосрочное сотрудничество гораздо выше. Такие компании имеют десятки и сотни достаточно крупных (или здоровенных, типа Боинга) заказчиков и по нескольку проектов на каждого из них. И такие фабрики не особо зависят от того, что один или несколько проектов закроются или заморозятся. Поштормит, пошатает, но потом сбалансируется и опять будет тепло и уютно. Специфика сотрудничества с такими компаниями состоит в том, что девелопер работает на эту компанию, а не на конкретного заказчика. И компания решает подходит ей конкретный сотрудник или нет. И зарплату ему платит не заказчик, а компания. Понятно, что все решают финансы, но у таких компаний даже по сравнению с их крупными заказчиками меры оценки и трешхолды разные. У таких компаний и бенч подлиннее. Им проще продержать ценного сотрудника полгода-год без дела, но на полноценной зарплате, и по надобности сразу пустить его в оборот, чем по позникновению нового проекта начинать поиски свободного спеца, тратить время на собеседования и утверждения, ждать, пока он войдет в курс дела... Ну, и между проектами можно попрыгать, набирая скилы. Многие мои знакомые в Люксе работают более 10 лет, не теряя при этом сноровки и квалификации. Таким компаниям, конечно, присуща достаточно нудная бюрократия, да и от конкретного проекта зависит довольно многое. Но это вполне терпимые и понятные вещи.
Достаточно редко, но случаются аутсорсные проекты, которые отдаются на разработку полностью. Тогда наряду с преимуществами относительной стабильности сотрудничества, от него можно получить значительный рост опыта и знаний. Это, как по мне, — джекпот для разработчика.

Бодишоп

Ярчайший представитель этой формы ведения бизнеса — Сиклум (не "Циклум" — "Циклум" не правильно). Эта схема характерна тем, что девелоперы набираются под конкретный проект конкретного заказчика. Зарплаты, социальные плюшки, тимбилдинги и даже иногда кофе-чай полностью зависят от его прихоти. Зарплату платит заказчик (через сиклумовский прокси, понятно), менеджит заказчик... В общем все зависит от него, родимого. И по закрытии проекта шансов перепрыгнуть в другой, не говоря уже про скамейку запасных, практически нулевой. Бодишоп не особо заинтересован в удержании девелоперов, потому что поиски и оприходование новой тушки щедро оплачиваются заказчиком. Зачем экономить?!
Однако есть небольшая плюшка в этой схеме. Шанс уехать на территорию заказчика гораздо выше. Бодишопу это будет за счастье, ибо заказчик за это заплатит еще больше.
Не хочу сказать, что бодишоп — это грех. Сиклум сотоварищи показывают, что эта схема работает, востребована и дает возможность трудоустроиться сотням и тысячам девелоперов, тестировщиков, рекрутеров, бухгалтеров, менеджеров и т.д. Однако нужно понимать, что все кроме топ менеджеров в этой комиссионке — разменные монеты.

Продуктовая лавка

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

Стартап

Стартап, в принципе, хорошо характеризуется принципом работы с кадрами: "Нанимай долго, увольняй быстро".
"Тысяча воинов против десяти тысяч орков? Ни одного шанса на победу? Ну так чего же мы ждем?!" (с) Гимли. Где-то так. Ярко, быстро, впечатляюще, модно... Но совершенно никакой гарантии. Прокачать скилы в новых технологиях, в общении с пользователями, в монетизации, в осознании дзена — это туда. Если есть буфер и еще не хочется спокойной жизни, то можно вляпываться. Финансово может и выстрелит. Хотя скорее всего нет. Но при этом опыт будет очень хорош. Причем в любом его проявлении. Хоть в случае факапа на первом же деплое.
Ничего другого от стартапа ожоидать не приходится.

Ну, а что выбирать, — персональное дело каждого.

19 февр. 2016 г.

"Ноги, крылья... Главное — хвост!". "Scrum, Lean... PDD!" Новое имя, старый подход

Придумал тут новый политически корректный термин, описывающий Israel management подход к разработке софта. PDD == "Political Driven Development". Это когда единственное слово в переписке, чате, голосовой беседе между двумя участниками проекта может мало того, что разрушить или перевернуть с ног на голову весь проект, не взирая на все договоренности и документацию, так еще и навлечь праведный гнев Их Светлостей менеджеров среднего и высшего звена на неразумного автора этого слова. Это когда сегодня мы все делаем "по процессам", а завтра делаем всё и сразу и на вчера, потому что "приезжают отцы". Это когда не знаешь что делать, потому что что бы ты не сделал, ты все равно будешь виноват. Работа в таких условиях похожа на хождение по минному полю и отнимает нервы, здоровье, лтчную жизнь.
Как себя вести в таком проекте?
  1. Получить от него как можно больше, как в материальном, так и в познавательном плане,
  2. почуствовав приближение нервного срыва бежать. 
Если пункт 1 не особо многообещающий, то сразу переходить к пункту 2.  Нервы обойдутся дороже.

17 февр. 2016 г.

Mac OS (10.11) El Capitan: Запись/чтение на USB диск в NTFS формате

В Mac OS (10.11) El Capitan отвалилась возможность записи на NTFS диски. Короткий серфинг показал, что связано это с тем, что обычно используемый драйвер NTFS-3G стал несовместим с новой осью. Apple по этому поводу не особо переживает, ибо NTFS — вражеская FS. Решение в моем конкретном случае было найдено этой ветке форума на discussions.apple.com. Paragon выпустил для Seagate версию своего NTFS драйвера под Mac OS, совместимую с El Capitan, но поддерживающую только диски Samsung: ссылка. Зато бесплатно. В той же ветке на discussions.apple.com даются ссылки на менее бесплатные или более крякнутые варианты, но их я решил не пробовать, так как бесплатный вариант подошел.