Обновить
0
0

Пользователь

Отправить сообщение

Резюме программистов. Часть 1 (плохие)

Время на прочтение3 мин
Охват и читатели327K
Честно скажу, когда я искал работу, мое резюме смело можно было отнести к категории плохих. Да, там было несколько хороших секций (типа, а вот я написал 2 книжки и 30 статей), но также там была и таблица скилов со строчкой: C#, 1 year of experience, Intermediate (!).

Сейчас я читаю много резюме и приглашаю людей на интервью. За последние 3 года я провел около сотни интервью, а резюме повидал раз в 5 больше. Так что сейчас я довольно четко представляю, что я хочу видеть в резюме. Но для начала я расскажу, чего в резюме я видеть не хочу.

Шаблоны


Многие аутсорсинговые компании придумали себе шаблоны резюме. Мотивация, в принципе, понятна, они хотят все унифицировать чтобы использовать machine learning для извлечения хороших кандидатов все выглядели одинаково, как рядовые в строю. Однако, шаблоны эти одинаковы для всех позиций и составлены мудрыми CTO недалекими HR, которые понятия не имеют, что такое реально классный программист.

Читать дальше →

Нужны ли в JavaScript классы?

Время на прочтение6 мин
Охват и читатели106K
JavaScript принято считать прототип-ориентированным языком программирования. Но, как ни странно, этим подходом практически никто не пользуется: большинство популярных JS-фреймворков явно или неявно оперируют классами.
В этой статье я хочу рассказать об альтернативном способе программирования на JavaScript, без использования классов и конструкторов — чистым прототипным ООП и особенностях его реализации на ECMA Script 5.
Читать дальше →

«Фактура убила текстуру?» — мысли о роли текстур, фактур и материалов в играх

Время на прочтение14 мин
Охват и читатели119K


Не то чтобы я был диким фанатом консолей, но есть вещи, которые действительно впечатляют. Понятное дело, что консолям нового поколения без впечатляющих пилотов на рынке делать нечего. Речь идет не о Watch Dogs, который тоже заслуживает внимания, как любая песочница с открытым миром, а о Tom Clancy’s The Division анонсированная для PS4 и Xbox One. Картинка (я оцениваю лишь ее) выглядит действительно хорошо. Игры уже давно стремятся быть не играми. Это уже почти кино. Меня мало волнует сейчас вопрос гейм-плея данной игры. Сейчас я просто потребитель, который готов клюнуть на вкусную обертку.

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

Мне уже давно не удается играть в игры как игроку. Иметь стопроцентное погружение. Это побочный эффект призмы через которую я смотрю на любую игру. Глаз в первую очередь цепляется за знакомые графические артефакты, ищет пути, которыми шли разработчики в создании графического контента. Одобрительно хлопает плюсам, и огорченно хмурит брови там, где все осталось как есть, без изменений. Все это помножено на «взгляд художника», который также аплодирует умелым действиям, и негодующе рычит в тех местах, где неизвестный художник допустил ошибку. Все это множится на еще не добитого геймера, который превыше всего ставит гейм-плей.

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



Что я вижу здесь? Для начала посмотрите трейлер и решите, что видите для себя вы. А потом… лопата?


Читать дальше →

Путешествие через вычислительный конвейер процессора

Время на прочтение16 мин
Охват и читатели143K
Так как карьера программиста тесно связана с процессором, неплохо бы знать как он работает.

Что происходит внутри процессора? Сколько времени уходит на исполнение одной инструкции? Что значит, когда новый процессор имеет 12, или 18, или даже 31-уровневый конвейер?

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

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

Эта статья рассказывает, как устроен вычислительный конвейер x86 процессора.
Читать дальше →

Tronsmart MK908 — новое поколение мини-компьютеров на 4-х ядерном чипе Rockchip RK3188

Время на прочтение11 мин
Охват и читатели215K
image
После мини-компьютеров с чипом RK3066 на рынок выходит новое поколение на 4-х ядерном чипе Rockchip RK3188. Чип выполнен по 28нм техпроцессу и состоит из 4-х ядерного процессора архитектуры Cortex-A9 с частотой работы до 1.8 ГГц и видеоускорителем Mali 400MP. Видеоускоритель остался прежним от RK3066, но разогнан до частоты 600МГц. Объём оперативной памяти по сравнению с прошлым поколением увеличился вдвое и составляет 2ГБ DDR3 памяти (хотя надо заметить, что на RK3066 тоже есть одно устройство с 2Гб RAM — это CX-803-II).
Сегодня мы рассмотрим одно из первых устройств на обновлённой платформе — Tronsmart MK908. А также узнаем насколько удобно пользоваться беспроводной мышью-клавиатурой iPazzport для управления системой Android.
Читать дальше →

3D принтер UP! — обзор и первая печать

Время на прочтение11 мин
Охват и читатели87K
Про пистолет я уже писал, а вот про принтер, который этот самый пистолет не напечатал — нет. Сегодня я расскажу о 3д-принтере UP! Plus китайской компании PP3DP, продажей которого в РФ занимается компания 3DP Home.
image
По классификации принтеров, которую я уже описывал, принтер относится к классу «X Head/ZY Bed». Если говорить простым языком — головка перемещается только по оси X(если смотреть на принтер спереди — вправо-влево. Впрочем, если смотреть на принтер сзади, будет тоже самое), а платформа, на которой находит печатающий обьект — вверх-вниз, и ближе-дальше. В общем-то, UP это единственный известный принтер этой категории.
Да-да, нажми меня.

Регулируемая подсветка монитора своими руками

Время на прочтение2 мин
Охват и читатели142K
Всем привет, я Александр, и я фрилансер.

Фрилансом как основным видом работы я занимаюсь уже почти 7 месяцев. По некоторым причинам (магистратура, велосипед, лень и т.д.) я часто работаю вечером.

Но вот беда, освещение в комнате слабое, и яркость монитора в вечернее время суток просто выедает глаза. Мирился с этим я долго. И тут, внезапно, во время очередного вечернего просмотра шедевра кино-индустрии на своём телевизоре Philips, с замечательной технологией Ambilight, посещает меня идея — почему бы не сделать аналогичную белую подсветку для монитора?


Сказано-сделано! Результат работы:

Кому интересны этапы построения — прошу под хабракат.
Читать дальше →

Spintires — (симулятор грязевиков на Kickstarter) — «тайга, которой нужны ваши крылья»

Время на прочтение5 мин
Охват и читатели183K


Spintires: The ultimate off-road challenge! — (ссылка на KickStarter)
Демо-верия предлагаемая на KickStarter линк на страничку с демо
Более ранняя демо-версия 2009 года прямой линк
Исходный код демо-версии 2009 года прямой линк

Oovee Game Studios, одна из восходящих звезд Объединенного Королевства вышла на Кикстартер с дебютным проектом «Spintiers». Событие хоть и отмеченное на известном британском новостном ресурсе Rock Paper Shotgun (что уже само по себе говорит за игру), но, к сожалению, не вызвавшее достаточного резонанса среди игроков. Причины могут быть разными и не последняя из них – жанр. Это не гоночный симулятор, не полноценный симулятор дальнобойщика, а симулятор «месителя грязи». По крайней мере, из демо-версии складывается именно такое впечатление. Однако, даже демо-версия намного глубже чем кажется, даже если не проваливаться в колею. Если присмотреться – это отличнейшая база под будущую игру, необычный сеттинг не без изюминок.

А ведь в демо, между прочим, представлен шикарный парк отечественного автомобилестроения. При должном исполнении это может сделать ее своеобразным Сталкером от мира колес. Из чрева железных монстров при переключении коробки передач доносится забористая русская речь, вокруг расстилается живописная тайга, прорезанная линиями разбитых троп и дорог, и ведь елки-палки… все действительно родное, от и до. Как так? В Британии появились поклонники колесного русского духа? Вопрос на миллион долларов.



Что еще можно сказать об этой игре? Перво-наперво то, что Spin Tires не игра, а демонстрация физического движка Havok. Техническая демо-версия, созданная специально для конкурса Havok Physics Innovation Contest.
Особенностями этой демо-версии стало наличие «физичных» покрытий (вода, грязь) и взаимодействие с ними объектов (грузовых и не очень автомобилей), деформация грязевых и водных участков ландшафта в реальном времени, очень красивое и эффектное освещение. Как это часто бывает в случае удачных решений – демо постепенно начало превращаться в игру. Именно с этим демо Oovee Game Studios и обратилась к игрокам, чтобы собрать средства на полноценную игру.

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

Читать дальше →

Когда-то я говорил…

Время на прочтение2 мин
Охват и читатели173K
Когда-то я* говорил, что без идеального задокументированного кода с многоуровневой плагинной архитектурой заказчик будет мучиться в конвульсиях каждый раз, когда его пальцы будут соприкасаться с клавиатурой. Теперь я заказчик и понимаю, что мне нафиг не нужен идеальный код, депенденси инджекшены и два синьора по цене одного. Главное, чтобы работало и было сделано в срок. И желательно бесплатно.

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

Когда-то я говорил, что опаздывать на встречи могут только пид$расы. Теперь я сам часто опаздываю на встречи, но в то же время не сплю с мужиками.

Когда-то я говорил, что главное в любом проекте – правильный процесс. Ну и еще печеньки. Теперь у меня только православный скрам, настоянный на канбане, но проекты факапятся с таким же успехом.
Читать дальше →

Когда я говорил…

Время на прочтение1 мин
Охват и читатели191K
Когда я* говорил, что нужно вкладывать в сообщество и User Groups, вы вкладывали в теннисные столы. Теперь у нас много средненьких теннисистов и нет коммюнити.

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

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

Путь JavaScript модуля

Время на прочтение28 мин
Охват и читатели122K


На момент написания этой статьи в JavaScript еще не существовало официальной модульной системы и все эмулировали модули как могли.

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

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

Дело в том, что раньше не думали, что на JavaScript можно делать огромные проекты, а не просто «пропатчить DOM», поэтому о модулях не думали. Да и вообще не думали о будущем. И тут Внезапно будущее нагрянуло! Все вроде-бы уже есть, а модули в JavaScript, мягко говоря, запаздывают. Поэтому разработчикам приходится крутиться и выдумывать какие-то эмуляторы модульности.

Думаю многие из вас читали прекрасную статью Addy Osmani Writing Modular JavaScript With AMD, CommonJS & ES Harmony, которая стала одной из глав его книги Learning JavaScript Design Patterns в этой статье рассказывается про «современные» JavaScript модули или же читали достаточно старую статью JavaScript Module Pattern: In-Depth 2010 года про «старые» модули.

Я не буду переводить эти статьи и не буду делать из них солянку. В своей статья я хочу рассказать о моем модульном пути. О том как я проделал путь от «старых» модулей к «новым» и что использую сейчас и почему.
Читать дальше →

Django 1.6 alpha 1

Время на прочтение2 мин
Охват и читатели16K


На этой неделе вышла первая альфа-версия Django 1.6. Этот выпуск посвящается активному участнику Django-сообщества — Малкольму Трединнику (Malcolm Tredinnick), погибшему 17 марта.

В новой версии фреймворка заметно упростили файл с конфигурацией. Теперь django.contrib.admin включен по-умолчанию, а django.contrib.sites наоборот — выключен. Кроме того, теперь определение локали и защита от кликджекинга включены по-умолчанию.

Читать дальше →

Вы опасно некомпетентны в криптографии

Время на прочтение7 мин
Охват и читатели144K
От переводчика: Хоть посыл статьи Najaf Ali, переведённой ниже, и носит слегка рекламный оттенок («оставьте криптографию нам, экспертам»), но описанные в ней примеры показались мне довольно интересными и заслуживающими внимания.
Кроме того, никогда не будет лишним повторить прописную истину: не придумывайте свою крипто-защиту. И эта статья отлично иллюстрирует почему.

Читать дальше →

Управление продуктом: 5 к 995 или отказ двигателя на взлёте

Время на прочтение7 мин
Охват и читатели69K
Недавно я получил от своего знакомого вопрос примерно следующего содержания:

Добрый день Михаил! Сейчас занимаюсь одной исследовательской работой. Учитывая ваш профессиональный опыт, хотел бы вас попросить ответить на вопрос:

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


Я начал отвечать прямо в окне Facebook, но понял, что ответ получается очень объёмный и совершенно не того формата. Кроме того, я решил поделиться этой информацией со всеми желающими. Надеюсь, кому-то она окажется полезной.

Вообще, у меня сложилось мнение, что об успехе продукта можно сказать примерно через полгода. Маркетинговые кампании, ПР и просто сарафанное радио — вещи довольно долговременные, а информация должна иметь время, чтобы распространиться. Впрочем, если ваш продукт стал успешен с первого дня, это заметно сразу, но такие продукты — тема совершенно другой статьи из разряда Success Story. Мы же поговорим о том, что делать, если на взлёте отказали оба двигателя.
Читать дальше →

Оптимальный алгоритм игры в морской бой

Время на прочтение4 мин
Охват и читатели1.1M
Пару дней назад я с удивлением узнал, что некоторые мои знакомые не умеют играть в морской бой. Т.е. правила они, конечно, знают, но вот играют как-то бессистемно и в итоге часто проигрывают. В этой записи я постараюсь изложить основные идеи, которые помогут повысить уровень вашей игры.
Читать дальше →

Смешивание текстур ландшафта

Время на прочтение3 мин
Охват и читатели92K


В данной статье я расскажу об алгоритме смешивания текстур, который позволяет привести внешний вид ландшафта ближе к естественному. Этот алгоритм легко может быть использован как в шейдерах 3D игр, так и в 2D играх.

Статья рассчитана на начинающих разработчиков игр.
Читать дальше →

Советы Google по кодированию на языке Python. Часть первая: советы по программированию

Время на прочтение13 мин
Охват и читатели116K

Хай, Хабр!
Сегодня я хочу представить, дорогому хабрасообществу свой первый хабраперевод. Программировать на языке Python — подобно песне. Но еще лучше, когда Ваш код читаем и понятен, а значит чуть более поэтичен, чем обычно бывает производстве. У каждого свои правила и свои стереотипы относительно написания и оформления исходного кода, на каком бы языке он ни был написан. Множество копий сломано о щиты на форумах, но, как ни крути, нельзя не считаться с мнением авторитетных товарищей. Так что сейчас будет представлен перевод первой части стайл-гайда для языка Python от Google. Коснется он именно постулатов написания кода (вторая часть тоже скоро появится, а посвящена она будет форматированию исходного кода). Сразу предупреждаю: тут много (если не большая часть) прописных истин, которые все знают уже давно. Но я искренне надеюсь, что Вы сможете найти тут что-то новое или хотя бы вспомнить старое. Приступим под катом. И pdf тут как тут.
Читать дальше →

Зачем пользователи GIT-а редактируют свои коммиты

Время на прочтение2 мин
Охват и читатели58K
В последних двух выпусках Радио-T ведущие пытались обсудить GIT. Евгений (@Umputun) задавался вопросом зачем нужен rebase и очень удивился, когда я спросил, редактирует ли он коммиты. На мой взгляд, чтоб понять GIT, достаточно вникнуть в процесс разработки Linux Kernel, т к создавался он именно для этого.
Читать дальше →

WebSocket-чат на Tornado для вашего Django-проекта

Время на прочтение28 мин
Охват и читатели68K
TornadoНедавно я запустил сайт backgrounddating.com и написал об этом здесь, на Хабрахабре. Разумеется, я уже тогда рассказал о некоторых технических деталях реализации этого проекта, но об одной из возможностей сайта я бы хотел написать отдельно, тем более, что документации (как на русском, так и на английском) на эту тему в Интернете пока что довольно мало. Итак, речь пойдёт о чате в реальном времени между двумя пользователями. Задача состоит в том, чтобы любой пользователь мог отправлять другим пользователям сообщения, и, если у получателя сообщения открыт чат с этим пользователям, то он сразу же видел входящие сообщения (а в ином случае он мог прочитать сообщения позже: то есть при открытии чата загружается история последних сообщений).

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

Сразу уточню, что это не единственный способ реализовать подобное. Вы можете использовать другой асинхронный веб-сервер (например node.js), можете использовать другую очередь сообщений (или вообще её не использовать, если вам подходят особенности такого варианта: с пользователями одного канала обязательно общается один и тот же worker веб-сервера). Я даже не утверждаю, что этот вариант самый лучший (но в данном случае он подошёл лучше всех). В конце концов, мы здесь вообще не будем рассматривать костыли (long polling, Flash) для старых браузеров (а это почти все версии IE, например), не поддерживающих веб-сокеты, и даже не будем рассматривать возможность подключаться из тех браузеров, которые уже поддерживают протокол WebSocket, но не стандартизированную версию (RFC 6455), а одну из устаревших. О том, как можно включить поддержку устаревшей версии «draft 76» (она же «hixie-76»), смотрите в документации Tornado.
Читать дальше →

Самая короткая запись асинхронных вызовов в tornado или патчим байткод в декораторе

Время на прочтение3 мин
Охват и читатели6.2K
Сложный асинхронный обработчик в tornado иногда расползается на десятки callback функций, из-за чего становится трудно воспринимать и модифицировать код. Поэтому существует модуль tornado.gen, позволяющий писать обработчик как генератор. Но много yield gen.Task(...) тоже выглядит не очень. Поэтому в порыве бреда я написал упрощающий запись декоратор:
До После
@asynchronous
@gen.engine
def get(self):
    result, status = yield gen.Task(
        db.users.find_one, {
            '_id': ObjectId(user_id),
        },
    )
@asynchronous
@gen.engine
@shortgen
def get(self):
    result, status << db.users.find_one_e({
        '_id': ObjectId(user_id),
        },
    )

Читать дальше →

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность