Первый вопрос к async относится постольку-поскольку. Вопрос, на самом деле,
про лексические замыкания, которые для асинхронщины безусловно полезны,
но применение которых этой самой асинхронщиной вовсе не ограничивается.
Видимо, делалось при помощи принципиально нового варианта замечательной программы graphviz от отечественного производителя, полностью переписанного вот на этом. С расширенной поддержкой стилей!
А что делать в ситуациях, когда, скрепя сердце, приходится применять абсолютно неочевидные хаки для обхода проблем в сторонних библиотеках? Вариант «отправить pull request разработчику и дождаться выхода следующей стабильной версии» подходит, увы, не всегда. Вынести хак в отдельную функцию и назвать её sacrificeAVirginAtMidnightOnTheNewMoonInTheHonorOfAzathothToFixThisStrangeCornerCaseInAngularJS(), чтобы сразу всё стало понятно?
Вопрос в том, что, если я не ошибаюсь, вместе с Dura Lex ушло очень много постов в т.ч., например, про 152-ФЗ. Ушло много нейтральных постов, к которым, быть может, были не очень нейтральные комментарии — но посты-то сами по себе далеко не всегда были политизированными. По такому принципу и этот пост должен бы уйти, раз так или иначе связан с IT-законодательством. Ну, знаете, как говорят, как если бы на форуме автолюбителей запретили обсуждать изменения в ПДД. Но пока что пост на месте. Или всё-таки просто об IT-законах можно теперь как о мёртвых — aut bene, aut nihil?
(немного промахнулся, это был ответ на комментарий deniskin'а)
Про интерфейс Other Half в форуме talk.maemo.org подробно написал один из сотрудников Jolla (в топике про возможность изготовления самодельной клавы). 3.3V VDD, I2C, GPIO для прерывания — с учётом возможностей тривиальной работы с I2C в линухе туда можно прикрутить что угодно из того, на что хватит скорости интерфейса. Плюс аккумулятор размером с тыкву для походных условий, например (небольшую тыкву, наверное — чтобы нести было не слишком тяжело).
Да, жизненно. Я по работе в основном сейчас занимаюсь высокоуровневыми вещами (python, js, etc.), но время от времени приходится сталкиваться и с darker things beyond the wall, оставляющими неизгладимые воспоминания. Вот, помнится, несколько лет назад купил себе N900 и очень расстроился, поняв, что не могу запустить на нём ни одного приличного Common Lisp'а — ну, люблю я лисп. Clozure Common Lisp тогда ещё на ARM не портировали, оставался CLISP, который вроде бы работал на более старых нокиевских «таблетках» (N800, например). CLISP после некоторых мучений собрался, но при запуске упорно валился в кору. Сначала хотел забить, но потом как-то так получилось — мой драндулет на первом ледку стукнул в зад жигуль с всесезонкой, из-за отвратительных погодных условий с гайцом записали не все повреждения и я провёл заметное количество часов в очередях в страховой, прежде чем смог добиться полного ремонта. С собой у меня был N900, на него я поставил Insight — фронтенд к GDB, позволяющий более-менее удобно ковырять asm-код, ну и занялся отладкой с использованием тачскрина и физической клавы. ARMовский ассемблер я знал довольно таки слегка по паре прочитанных туториалов. Поведение было вовсе неочевидным — код, который по всем законам природы должен был работать нормально, валился самым парадоксальным образом. Разгадка оказалась потрясающей — ARM-ассемблерные вставки в CLISP писались под RISC OS и имели устаревший синтаксис, из-за неверной интерпретации которого современным ассемблером при возврате из подпрограмм рушился флаговый регистр и из-за этого НА ЛЕТУ ИЗМЕНЯЛСЯ ENDIANNESS ПРОЦЕССОРА. Я не знал про эту сверхполезную фичу ARM и потому долго не мог взять в толк, что же происходит на самом деле. Позже списался с мэйнтейнерами и выяснил, что, в общем-то, ассемблерные вставки можно было просто отключить (чтобы использовался сишный вариант). Но тем не менее…
Хм, мне казалось, что проблемы с JIT только под iOS в связи с AppStore, из-за этого в Qt решили V8 заменить на свой движок. Под Android QtWebKit, как мне показалось, не портировали по причине в духе «больно жирный и геморроя с этим делом много, да и гуглю он больше не нужен»
Кстати, просветите, пожалуйста, меня, как человека, несколько отставшего от прогресса Qt: а при работе с Qt под Android действительно нельзя никоим образом встроить в приложение WebView? QtWebKit там, насколько мне известно, не работает и работать не собирается, WebEngine появится, в лучшем случае, не ранее весны, а сейчас, выходит, браузерный компонент вовсе не встроишь? Причём под iOS вроде есть какая-то приблуда для встраивания UIWebView при работе с виджетами, а для Android как будто вовсе ничего нет… Или я не прав?
Вот, кстати, полезный пост на sprosi.d3.ru, где быший сотрудник Роскомнадзора неплохо описывает суть данной организации. В принципе, что из себя представляет данная организация, в основном и так понятно, но, пожалуй, «интервью» стоит изучить для полноты понимания того, что это за люди, которым скоро увеличат финансирование из нашего с вами кармана.
Попробуйте целочисленное переполнение на фоне незнания степеней двух и тому подобной никому не нужной мути. Ну, скажем, в каком-то протоколе 16-битовым беззнаковым целым кодируется некое значение. Вдруг вместо 65536 получаем 0 — вот блин, что бы это могло значить? Мистика какая-то. Если, конечно, не знать, как оно могло произойти на уровне интуиции. А подобные косяки с переполнениями, которых человек без знаний битов-байтов может наделать несознательно и не только в разного рода низкоуровневых приложениях, могут быть и дырами в безопасности, и причиной потери данных… Как-то даже был случай, что подобная ошибка была одной из причин сбоев, приведших к смертям — см. Therac-25. Конечно, большинство программистов вряд ли имеет возможность напортачить так, чтобы кто-то умер, но вот чтобы пропало много денег и времени — это без проблем.
Понимаете, исходя из введения празднования Дня Программиста, можно предположить, что с неплохой вероятностью ответ на мой вопрос знает даже бывший президент Медведев. Ну, если не двоичное представление 255, то хотя бы то, что 256 — это 28. А уж если даже Медведев знает, при том, что он не программер, то уж, наверное, программерам-то это знать совсем не грех?
Я думаю, негативную реакцию вызывает скорее использованная фигура речи. Видимо, у кого-то она могла всколыхнуть скрытые фобии, связанные со стрессом от экзаменов и собеседований, и шутку приняли всерьёз. А может быть, здесь действительно много людей, которые считают нормальным незнание подобных азов. Сказать об этом многие стесняются, а вот анонимно минус поставить — это не стыдно, это в самый раз.
Да, раньше я даже в случае слабых кандидатов старался поподробнее рассказать об ответах на все вопросы, с которыми кандидат не справился. Как правило, люди даже в случае отказа уходили довольными, т.к. узнавали много полезного. Сейчас тоже бывает, но уже, к сожалению, в заметно меньшей степени — времени жалко, да и озверел несколько, наверное. Но, мне кажется, в принципе практика неплохая.
Ну, вот приходят. Причём когда-то я дотнетчиков собеседовал, полно таких было. Как сейчас помню решение тестового задания по ASP.NET, в котором MessageBox для подтверждения на сервере рисовался (т.е. надо было зайти на сервер по RDP/VNC/etc. для подтверждения удаления записи) — автор просто этого не осознал, т.к. разрабатывал локально, а чёткой границы между GUI и веб-страницами не чувствовал. Сейчас вот собеседуем по Python'у, линухам, etc. — и здесь «умных» столько же, хотя лет 6-10 назад часто сам интерес к опенсорсу означал, что человек «в теме», сейчас уже таких гарантий нет… Видимо, Linux как платформа действительно дозрел до своей популярности.
Собственно, исходя из предварительных знаниях о кандидате (резюме, тестовое задание, если отправляли, или github account, etc.) в той или иной степени детально рассказываю о системе, над которой человеку предстоит работать. Если заранее есть ощущение, что товарищ не очень, много времени на это тратить не стоит, как говорится в известном высказывании насчёт бисера. Если же есть вероятность, что перед нами — приличный разработчик, то лучше рассказать поподробнее (но чтобы не утомлять), акцентируя интересные моменты. Далее обычно интересуюсь у кандидата, чем ему приходилось заниматься последнее время (если это не секрет), и почему он больше этим заниматься не хочет. Также, по возможности, интересуюсь более ранней работой.
Далее, собственно, технические вопросы. Начинаем с идиотских. Затем — про особенности используемого языка программирования; по алгоритмам и структурам данных. Сильно глубоких знаний в этой области обычно мы не требуем, но какое-то представление должно быть. Ок, если человек сможет придумать какое-то годное решение для задач, стандартных решений которых он не знает/не помнит (топологическая сортировка, например — хотя её уж и знать то совсем не грех, но, по крайней мере, за неё в табло бить не стоит). Спрашиваем обычные вещи про паттерны (какие знаете и что про них можете сказать), базы данных, etc. Говорим про используемые в разработке инструменты — IDE или не-IDE (vim/emacs/etc.), системы контроля версий, багтрекеры etc. Разумеется, во всех случаях делается скидка на то, что человек может волноваться и из-за этого тупить на собеседовании; тем не менее, в некоторых случаях ясно, что человек именно ноль по тем или иным обширным разделам программерских знаний. Бывает много вопросов, на которые человек с более-менее адекватным программерским опытом в интересующей нас сфере отвечает сразу и не задумываясь — такие вопросы особенно показательны.
Обычно я себя спрашиваю — сколько лет назад мой уровень знаний был как у данного кандидата (или сколько лет пройдёт, прежде чем я достигну уровня кандидата — но это, к сожалению, реже, чем хотелось бы), бывает, это тоже помогает принять решение.
Сейчас хороший показатель, мне кажется, наличие в резюме github'а с приличным содержимым + интерес к Лиспам, Эрлангам, ФЯ и тому подобным немейнстримовым технологиям (в меру, видимо). Обычно это означает, что кандидату интересно программирование само по себе, и он не считает его лишь одним из возможных способов заработка и не более того. Сколько приходилось общаться с приличными разработчиками — почти все в той или иной степени интересовались подобными «необщепринятыми» вещами.
Насчёт компенсации и прочих условий — в конце собеседования (если в этом есть смысл).
Хм, я где-то сказал, что это всерьёз практикуется? Поясню, "я чуть было не пришёл" к такой практике — означает лишь мои личные чувства по отношению к таким кандидатам. Если Вы придёте к нам, не зная элементарных вещей, мы поговорим с Вами вполне вежливо, никто не будет бить Вас стулом или отправлять в нецензурной форме. Просто это как-то немного нехорошо, тратить своё и чужое время; всё-таки в вакансии сказано «программист», а не «оператор ПК». Беда в том, что, действительно, рынок. Есть конторы, которые готовы платить большие деньги подобным «гениям». Хуже того, подозреваю, немало таких контор, которые не видят разницы между такими «гениями» и людьми, которые действительно умеют программировать; и всё это, боюсь, весьма отрицательно влияет на саму вероятность найти приличных разработчиков.
Ну, что Вы. Мы общаемся с людьми предельно вежливо. Насчёт «в табло» — это лишь грустная шутка о моих внутренних переживаниях по этому поводу. Но вот как вы думаете, стоит 100k+, например, платить человеку, который не знает про байты, никогда в жизни не слышал слова «граф» (не считая Дракулы), не знает, чем Subversion отличается от Github (не git, а именно система контроля версий от сервиса github) и т.д? Каковы будут Ваши чувства, когда такой человек начинает бурно возмущаться, получив предельно вежливый отказ?
про лексические замыкания, которые для асинхронщины безусловно полезны,
но применение которых этой самой асинхронщиной вовсе не ограничивается.
Видимо, делалось при помощи принципиально нового варианта замечательной программы graphviz от отечественного производителя, полностью переписанного вот на этом. С расширенной поддержкой стилей!
(немного промахнулся, это был ответ на комментарий deniskin'а)
Я верю в честность президента
И в неподкупность постовых,
В заботу банка о клиентах,
В русалок верю, в домовых…
©
Собственно, исходя из предварительных знаниях о кандидате (резюме, тестовое задание, если отправляли, или github account, etc.) в той или иной степени детально рассказываю о системе, над которой человеку предстоит работать. Если заранее есть ощущение, что товарищ не очень, много времени на это тратить не стоит, как говорится в известном высказывании насчёт бисера. Если же есть вероятность, что перед нами — приличный разработчик, то лучше рассказать поподробнее (но чтобы не утомлять), акцентируя интересные моменты. Далее обычно интересуюсь у кандидата, чем ему приходилось заниматься последнее время (если это не секрет), и почему он больше этим заниматься не хочет. Также, по возможности, интересуюсь более ранней работой.
Далее, собственно, технические вопросы. Начинаем с идиотских. Затем — про особенности используемого языка программирования; по алгоритмам и структурам данных. Сильно глубоких знаний в этой области обычно мы не требуем, но какое-то представление должно быть. Ок, если человек сможет придумать какое-то годное решение для задач, стандартных решений которых он не знает/не помнит (топологическая сортировка, например — хотя её уж и знать то совсем не грех, но, по крайней мере, за неё в табло бить не стоит). Спрашиваем обычные вещи про паттерны (какие знаете и что про них можете сказать), базы данных, etc. Говорим про используемые в разработке инструменты — IDE или не-IDE (vim/emacs/etc.), системы контроля версий, багтрекеры etc. Разумеется, во всех случаях делается скидка на то, что человек может волноваться и из-за этого тупить на собеседовании; тем не менее, в некоторых случаях ясно, что человек именно ноль по тем или иным обширным разделам программерских знаний. Бывает много вопросов, на которые человек с более-менее адекватным программерским опытом в интересующей нас сфере отвечает сразу и не задумываясь — такие вопросы особенно показательны.
Обычно я себя спрашиваю — сколько лет назад мой уровень знаний был как у данного кандидата (или сколько лет пройдёт, прежде чем я достигну уровня кандидата — но это, к сожалению, реже, чем хотелось бы), бывает, это тоже помогает принять решение.
Сейчас хороший показатель, мне кажется, наличие в резюме github'а с приличным содержимым + интерес к Лиспам, Эрлангам, ФЯ и тому подобным немейнстримовым технологиям (в меру, видимо). Обычно это означает, что кандидату интересно программирование само по себе, и он не считает его лишь одним из возможных способов заработка и не более того. Сколько приходилось общаться с приличными разработчиками — почти все в той или иной степени интересовались подобными «необщепринятыми» вещами.
Насчёт компенсации и прочих условий — в конце собеседования (если в этом есть смысл).