Category: it

Category was added automatically. Read all entries about "it".

Верхний пост





Площадка




Адрес
Твиттер http://twitter.com/ms_oberon
Часто задаваемые вопросы о том, можно ли снимать в магазинах, общественных местах людей и их имущество. Присутствуют ссылки на законы. http://antirao.ru/faq/nophoto
Досмотр в метрополитене Санкт-Петербурга http://miccro.livejournal.com/80897.html
Про Илью Варламова и двойные стандарты ( меня перепечатали :-) ). Забавно. http://www.tatar-inform.ru/news/2012/07/16/323613/?font=big



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

mat_veys
kungurov
mossudmed
germanych
pioneer_lj
emdrone
sibved
vaduhan_08
kot_begemott
yakosha

Про костыли

Про костыли

При приобретении некоторых устройств Самсунга с технологией Samsung Pay дарят 4000 рублей и ложат их на счёт Яндекс.Денег.

Эти деньги можно было бы просто перевести на Яндекс-кошелёк обычными деньгами, но их особенность в том, что их нельзя вывести со счёта.

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

Они создали псевдо-счёт Samsung Pay, куда записали рубли в количестве 4000.

Collapse )

Жив ли HTML5?

Я редко пишу на профессиональные темы, но не так давно я встретил одного мэнэджера, который утверждал, что Сильверлайт (Silverlight) мёрт. HTML5-де придёт ему на смену и поработит мир. Честно сказать, слухи о том, что, дескать, HTML5 — это новый супермощный язык, ходят уже давно. Мне было интересно, что же там нового, но проверять я не решался.

Ах, да, помимо прочего, народ бает, что Флэш (Flash) тоже вот-вот отдаст концы.

Что же мы наблюдаем  по факту? По факту же Флэш (Flash) живее всех живых. Все игры в социальных сетях в таких как ВКонтакте, Книга мордашек (Facebok) и других игровых сайтах делаются на Флэшэ (Flash). Да и Сильверлайт (Silverlight) не собирается покидать наш яркий мир.

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

Одним из таких преимуществ является универсальность. Вы тратите большую часть времени на разработку задачи, а не на борьбу с особенностями языка. Вы пишите код один раз и он работает одинаково во всех интернет-обозревателях (браузерах). Флэш, будучи созданным компанией Адоб (Adobe), съевшей собаку на разработке графических элементов, привлекает дизайнеров низким порогом вхождения и простотой. Сильверлайт тоже не отстаёт — Микрософт создал неплохой графический редактор Expression Blend.

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

Добавление же простого языка сценариев (JavaScript-а) делало страницы в нужной степени динамическими.

И всё было хорошо, пока миром интернета правил один браузер — Netscape Navigator. С набором же популярности другими браузерами появились проблемы. Каждая команда реализовывала интерпретатор своим особым образом. И если с HTML-ом было более менее всё едино, то с CSS-ом и JavaScript-ом уже было всё не так ажурно. Воспроизведение обозревателями одних и тех же стилей порой отличалось в мелочах. И это не говоря о том, что набор стилей мог разниться. В JavaScript-е расхождения были тоже не маленькие. Всё это приводило и приводит до сих пор к тому, что вёрстка современных веб-страниц — работа не для слабонервных, потому что постоянно приходится заботиться о том, чтобы во всех браузерах отображение было по возможности одинаковым.

Создатели сайтов, чтобы добиться одинаковости в отображении, зачастую плюют на таблицы стилей и используют картинки, стыковать которые также адов труд.

Давайте теперь обозрим же новьё в HTML5 и третьем CSS3. Что же изменилось с тех пор? А по факту-то ничего не изменилось! Поэтому мне не понятна истерия вокруг HTML5.

По-прежнему интерпретация HTML5 и CSS3 отдана на откуп отдельным браузерам, что явно не добавляет единства. Это перечёркивает любые преимущества современного HTML5 и таблиц стилей. Для унификации JavaScript-а любители открытого кода используют библиотеку jQuery или её аналоги.

Вот неплохая статья восторженного поклонника HTML5: http://habrahabr.ru/post/141262/#habracut, в которой он рассказывает, как он вместо решения бизнес-задачи занимается сексом с частными реализациями таблицы стилей в разных обозревателях.

Вот например он пишет:
«Вот к примеру такая банальная вещь, как border и border-radius. Вроде все давно это поддерживают, но если сделать к примеру тип границы dotted, то браузеры начинают чудить»:


В HTML5 добавили ряд новых тэгов, динамика же отдана на откуп таблицам стилей и JavaScript-у, которые, как мы выяснили браузеро-зависимы.
Что касается CSS3, то они упорядочили то, что уже было, например, в интернет-эксплорере: transitions transformations, animations. Вспомните ещё хотя бы «расширения» .HTC.

Вот типичная картина «поддержки» новой таблицы стилей:

Как видим, разнится не только поддержка, но и названия соответствующих стилей! Зачем?!

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

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

Что касаемо Silverlight-а, то на нём вы с лёгкостью можете создать отличный пользовательский интерфейс с графиками, рюшечками и менюшечками из коробки (Silverlight + Silverlight Toolkit)! Он даёт вам все достоинства среды .NET.

Ещё среди программистов на JavaScript-е постоянно есть жажда сделать JavaScript более объектно-ориентированным, писать код на Java-е и потом транслировать его на JavaScript! Какое же всё-таки это извращение!

Опять-таки Silverlight даёт вам возможность не заниматься онанизмом, а сразу писать на удобном вам языке высокого уровня — C#, VB.NET, F#. И компилировать это в MSIL — код виртуальной машины .NET.

И после всего этого нас пытаются убедить, что связка HTML5+CSS3+JavaScript завоюет мир? Не верю!

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

Отказываться от Silverlight-а, это всё равно, что пересаживаться с автомобиля на супер-навороченную лошадь. Может быть в угоду маркетологам сегодня HTML5 временно вырвется вперёд, но в ближайшем будущем его ждёт могила.

Машина времени

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

Я вот и задумался, а возможна ли машина времени? Точнее я давно задумывался, но как-то мыслей особо дельных не было. 

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

Маломальски сложные компьютерные программы пишут на диск так называемые логи (logs) или информацию о своей работе. Логи бывают разной детализации. Очень подробные и не очень. Предположим, что наш мир "Планета Земля" пишет достаточно подробную информацию о своей работе на некий «сервер»/«кластер» или как сейчас модно говорить «облако» (cloud). Соответственно, зная, как считать логи из информационного поля («облака») мира Земля, то можно их проанализировать или как-либо использовать. Например, для просмотра прошлого или экстраполяции будущего.

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

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

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

В новом мире будет создана точная копия путешественника.

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

Другой вариант каждый раз телепортировать человека в новый мир с уничтожением его в текущем мире и перемещением его в копию.

Всё же первый вариант с копированием мне представляется лучше, чем с телепортацией.

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

Как работают "зайцы" и индусы

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

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

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

Через неделю всё готово строго по ТЗ. Сидят умеренно уставшие индусы и говорят: "Всё готово, насяльника".
Насальника, правда, может подохуеть, ибо всё сделано строго по убогому ТЗ, быстро, но не совсем то, что хотел в итоге заказчик.
Но это не вина индусов, они сделали ровно то, что просили.

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

Индусов же нужно постоянно "вести за ручку".

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

Но, о, горе буржуям, если они решат набрать зайцев.

В итоге вполне реальна такая картина.
Штат Москва. Офис компании Софтроникс. 19:00.
Хозяин подходит к офису. Тишина. Чувствуется еле уловимый запах полённой шерсти. Двери не заперты.
Внутри сидят русские манагеры и с умным видом пишут друг другу письма. При входе хозяина вытягиваются вструнку и козыряют, пытаются подлизать попку хозяину:
 - Отойди, - говорит смущённый хозяин. - Ты уже лизал задницу сегодня. Достаточно.
 Тут же не вдалеке слышны отдельные слова говорящего по телефону манагерка: "да, всё будет в срок. мы работаем по процессу.  Скоро будет конференция по призыву духов Agile-а, где собирётся много других манагеров, чтобы научиться обеспечивать делевири в срок."

Хозяин вздрогнул и отошёл. Схватив первого попавшегося манагера за шкирку и что-то бормотавшего об отчётности и каких-то апдейтах по прогрессу всё в тот же мифический срок, спросил:
 - Мы просили вас сделать всё по вышеуказанному ТЗ. Так вот. Да простит нас святой Джобс, мало того, что ваша команда делала их месяц. Эти две присловутые странички грузятся долго. Периодически выдают левый результат или вообще валятся с ошибками. Почему?!!

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

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

Что же произошло. Всё оказалось прозрачно. Зайцы написали свой механизм сессий, переписали WCF задействовали Silverlight. Код двухстраничного сайта с тупым репортингом насчитывал более 1000 классов. Были написаны свои собственные варианты хэш-таблицы и использованы Фаулер-паттерны. Это был новый движок двухстраничных сайтов. Длина лямбда-выражений достигала космических величин. Пока хозяин приходил в себя от шока, сотни потоков блокировали друг друга, не давая результату попасть на экран. титаническая система логинга логировала каждый пук системы и размещалась на паре серверов, используя кармические потоки открытия чакры и третьего глаза.

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

Хозяин перекрестился и тихо вышел.

Программирование и зайцы

Один из участников форума РСДН: "У меня тут создалось впечатление, что индусские программисты склонны к "размазыванию" логики и данных по максимальному количеству компонентов (классов, модулей, хранимых процедур и т.п.). Делают они это весьма уверенно и, помоему, подсознательно. Единственно рациональное объяснение это так они закрепляются на своем месте, т.к. им одним постижим принцип построения этой логики. Возможно им просто так комфортно, а раз комфортно то увеличивается продуктивность"

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

Заяц — это программист-фанат, фанатеющий от программирования, поглощения теории и скорейшего опробования её на практике.
Это происходит либо из-за избытка свободного времени на работе либо от неуёмной энергии, позволяющей работать сверхурочно ради десятка другого хитро завороченных конструкций. Либо ото того и другого одновременно.

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

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

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

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

Чаще всего зайцы — это молодые люди от 23 до 29 лет, хотя встречаются и престарелые зайцы.
Самое страшное, если ваш тим лид — заяц!

Индусы

Мне думается,что дело не в плохом образовании индусов, а в особенностях собеседования.

Наши расейские мальчики-зайчики а-ля Каа.Питон или Икемефула (с RSDN) то же ещё те затейники.
Но только на собеседованиях.

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

Индус за тот же месяц нанимает целую команду, включая тим-лида и говорит: «Что делать, хазяина? Работать хотим.»

Ну, выгонят пятерых из 20, ну напишет индус что-то криво - да и хуй с ним — проект получен, люди работают, караван идёт.

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

Задачи на собеседовании - не нужны

На РСДНе очередной крик души:

rsdn.ru/forum/job/4268583.1.aspx
Все эти задачи про i+++++i, гномов в колпаках и сортировку на бумажке — полная хрень и профанация.
Они проверяют, как человек решает искусственные задачи, в искусственных условиях и искусственными методами. Не более того. В реальных условиях результат будет совсем другой. Я много раз видел людей, которые блестяще проходили собеседование и потом ламерски фейлили все проекты. И обратные примеры я тоже видел.
Единственное, что стоит спрашивать у программиста — какие проекты он сделал. Посмотреть, обсудить, разобрать по косточкам. Всё остальное, все эти высосанные из пальца задачи и тесты — это бред бездарных кадровиков и зубрил, которым надо как-то оправдать свое существование.


Пришёл к выводу, что то, что происходит на собеседовании не имеет никакого значения!
Не имеет значения, что вас спрашивают: про проекты, заставляют решать задачки или садят на кукан за тестовое прямо в офисе.
Сошлюсь на пресловутую "Гору Фудзи". Там есть упоминание, что интервьюер определяет брать или не брать человека в первые 5-15 сек.
При этом ваши ответы как правило не имеют значения — собеседник всегда убедит самого себя и остальных в нужном ему результате.

Сам убедился в этом не единократно.

Пара недавних примеров из жизни.

Пример 1
Собеседуют в Ява-команду. Работа — месить старый индусский говнокод без изысков и полётов фантазии. Обычная такая работёнка.
Прособеседовали очередного кандидата, обсуждают.

Лид: Да, у кандидата большой опыт, много сделано проектов, но он не знает новые трэнды как в Яве с потоками работать да с новыми джынэриками не на "ты".
Архитектор: А разве у нас в проекте где-то используются потоки (тем паче новые) и джынэрики?!!
Лид: Нет, но он просто мне ненравится!

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

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

Мэнэджэр явно старался не замечать перевешивающие минусы и упорно во всём видел плюсы

Вот так. Всем понравится нельзя. Например, Икемефуле и Каа.Питону Вы не понравитесь

До кучи

Вспомнилось. Около меня одно время сидел манагерок, возможно лид. Скорее полулид, полуманагерок (далее по тексту манагерок). Он приехал набирать команду под перешедший к нему от индусов :) проект. Веб-проект для отображения каких-то табличек и отчётов.
Насколько я понял из рассказов менеджера кандидатам о проекте, необходимо было по большей части поддерживать UI и дописывать новый.

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

Общался с кандидатами манагерок грубовато.

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

Собеседования: надо ли давать Ваш вариант ответа?

Человек задаётся вопросом, надо ли давать Ваш вариант ответа на поставленный Вами вопрос? Я намеренно не называю ответ правильным. Речь идёт о вопросах, на которые требуется развёрнутый ответ. Интервьюер вопрошает:

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


Вот мой ответ:

Вы описываете классический экзамен в учебном заведении, а не собеседование.
В особенности если вы не даёте ожидаемые Вами «правильные» ответы.

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

Как в ветке уже было замечено, ваш «правильный» ответ может быть также неполным или ошибочным.

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

Кроме того, это похоже на игру «угадай, что я имею в виду и пройди в следующий тур».

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

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

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