Pull to refresh
4
0
Ванин Антон @vanton

Full-stack developer

Send message

Как я сделал девайс для Korn, Limp Bizkit, Drowning Pool и других рокеров, собрав все продуктовые ошибки

Reading time14 min
Views43K

Привет, Хабра!

Сегодня одолела ностальгия и хочу рассказать, как делал устройства для музыкантов — педальки-контроллеры, наделяющие музыкальный процессор Digitech Whammy новыми возможностями. Устройства мало кому нужны, но кому нужны — то позарез)

Этот проект мне очень дорог, потому что с него началась настоящая страсть к созданию чего-то нового. И хоть я давно уже не брался за паяльник, а основное время посвящаю развитию в управлении продуктом, всё ещё не оставляю фантазии о фееричном возвращении в music hardware, которое сделает немного шума в чахнущем царстве рока.

Да и перед именитыми ребятами (на фото, например, CJ Pierce из Drowning Pool, James "Munky" Shaffer из Korn и Wesley Borland из Limp Bizkit, ну и я с девайсами), признаться, стыдно, что пропал на целых несколько лет — ни слуха от меня, ни духа о новых устройствах.

Удачно сложилось, что сегодня же есть 3,5 часа в самолёте, так что настало время офигительных историй — расскажу, как появились эти железки реально из мусора. Курьёзы и неудачи, какие устройства хотел и что получилось, как они оказались у топ-музыкантов мира и почему я отложил такие крутые штуки в долгий ящик.

Возможно это смотивирует кого-то вернуться и доделать свои идеи, а кому-то просто поднимет настроение. Итак, вперёд! Точнее назад, в 2010 год...

Читать далее →
Total votes 330: ↑328 and ↓2+326
Comments92

ООП, «святая троица» и SOLID: некоторый минимум знаний о них

Reading time43 min
Views114K

Необходимое вступление


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


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


Столь малые гарантии поднимают вопросы о причинах, по которым статья пишется. Я считаю, что этим вещам должны учить везде, где учат программированию, вплоть до уроков информатики в школах с углублённым её изучением. Тем не менее, для меня стала пугающе нормальной ситуация, когда я узнаю, что собеседник мой коллега, причём работающий уже не первый год, но про инкапсуляцию «что-то там слышал». Необходимость собрать всё это в одном месте и давать ссылку при возникновении вопросов зрела давно. А тут ещё и мой «pet-project» дал мне изрядно пищи для размышлений.


Тут мне могут возразить, что учить эти вещи в школе рановато, и вообще на ООП свет клином не сошёлся. Во-первых, это смотря как учить. Во-вторых, 70% материала этой статьи применимо не только к ООП. Что я буду отмечать отдельно.



Читать дальше →
Total votes 88: ↑82 and ↓6+76
Comments79

Язвы и грабли CSV и Excel: проблемы и решения

Reading time11 min
Views378K
CSV является стандартом де-факто для связи между собой разнородных систем, для передачи и обработки объемных данных с «жесткой», табличной структурой. Во многих скриптовых языках программирования есть встроенные средства разбора и генерации, он хорошо понятен как программистам, так и рядовым пользователям, а проблемы с самими данными в нем хорошо обнаруживаются, как говорится, на глаз.

История этого формата насчитывает не менее 30 лет. Но даже сейчас, в эпоху повального использования XML, для выгрузки и загрузки больших объемов данных по-прежнему используют CSV. И, несмотря на то, что сам формат довольно неплохо описан в RFC, каждый его понимает по-своему.

В этой статье я попробую обобщить существующие знания об этом формате, указать на типичные ошибки, а также проиллюстрировать описанные проблемы на примере кривой реализации импорта-экспорта в Microsoft Office 2007. Также покажу, как обходить эти проблемы (в т.ч. автоматическое преобразование типов Excel-ом в DATETIME и NUMBER) при открытии .csv.

Читать дальше →
Total votes 87: ↑82 and ↓5+77
Comments42

HTTP-заголовки для ответственного разработчика

Reading time15 min
Views99K

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

Разработчики соединяют людей.
Разработчики помогают людям.
Разработчики дают людям возможности.

Разработчики могут создать сеть для всех, но эту способность необходимо использовать ответственно. В конце концов, важно создавать вещи, которые помогают людям и расширяют их возможности. В этой статье я хочу рассказать о том, как HTTP-заголовки могут помочь вам создавать лучшие продукты для лучшей работы всех пользователей в интернете.
Читать дальше →
Total votes 92: ↑90 and ↓2+88
Comments64

Шуруповёрт с ДВС. Just for fun

Reading time1 min
Views53K


Видеоблоггер Agent Diego как-то в шутку показал на своём канале «дизельный шуруповёрт», который на самом деле дымился из-за неисправности электродвигателя. Но в каждой шутке есть доля правды — и вот другой видеоблоггер, под ником Johnnyq90, изготавливает шуруповёрт, действительно работающий от ДВС.
Читать дальше →
Total votes 39: ↑35 and ↓4+31
Comments65

Linux в одном файле для Macbook

Reading time4 min
Views35K


TL;DR Можно уместить полноценный Linux Live дистрибутив в один файл, если вкомпилировать в ядро initramfs с корневой файловой системой. Компьютеры с UEFI умеют загружать такой файл напрямую, без помощи загрузчика типа GRUB. У меня получилось уместить дистрибутив с программами aircrack-ng, reaver и драйверами для карт Wi-Fi в файл размером 12 мегабайт (наверняка можно еще меньше).

Основные преимущества


  • Работает на любых компьютерах с UEFI — один и тот же файл будет работать на PC и Mac.
  • Не требует установки — достаточно скопировать один файл на EFI-раздел диска и указать в переменных NVRAM путь к этому файлу.
  • Не нужно устанавливать загрузчики GRUB, rEFInd — ядро Linux собранное с поддержкой EFI Stub можно грузить напрямую без промежуточного загрузчика.
  • Не нужны USB-флешки — скопированный на раздел EFI дистрибутив остается там навсегда, и его можно будет загрузить в любой момент. Он не занимает места на разделе основной системы, так как раздел EFI не используется в ОС.
  • Не изменяет процесс загрузки — систему можно загрузить один раз, без изменения порядка загрузки в настройках UEFI. Следующая перезагрузка компьютера загрузит обычную операционную систему. Никаких следов Linux в очередности загрузки не останется.
  • Совместимо с шифрованием диска FileVault и т.д. — файл копируется на EFI System Partition, специальный зарезервированный раздел диска. В компьютерах Mac его размер около 200 мегабайт. Он выделен под Boot Camp и обычно не используется
Читать дальше →
Total votes 78: ↑77 and ↓1+76
Comments48

Как быстрее DOM построить: парсинг, async, defer и preload

Reading time8 min
Views29K

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

В Firefox скоро появится новый веб стандарт <link rel="preload">, который позволит загружать важные ресурсы быстрее. Его уже можно опробовать в версиях Firefox Nightly и Developer Edition, а пока это прекрасный повод вспомнить основы работы браузера и глубже понять о производительности при работе с DOM.
Total votes 16: ↑16 and ↓0+16
Comments5

Как понять, что происходит на сервере

Reading time9 min
Views82K


Александр Крижановский ( krizhanovsky, NatSys Lab.)


По Сети уже давно бегает эта картинка, по крайней мере, я ее часто видел на Фейсбуке, и появилась идея рассказать про нее:


Читать дальше →
Total votes 98: ↑96 and ↓2+94
Comments20

Анимации на GPU: делаем это правильно

Reading time20 min
Views54K

Думаю, все уже знают, что современные браузеры умеют рисовать некоторые части страницы на GPU. Особенно это заметно на анимациях. Например, анимация, сделанная с помощью CSS-свойства transform выглядит гораздо приятнее и плавнее, чем анимация, сделанная через top/left. Однако на вопрос «как правильно делать анимации на GPU?» обычно отвечают что-то вроде «используй transform: translateZ(0) или will-change: transform». Эти свойства уже стали чем-то вроде zoom: 1 для IE6 (если вы понимаете, о чём я ;) для подготовки слоя для анимации на GPU или композиции (compositing), как это предпочитают называть разработчики браузеров.


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

Total votes 78: ↑78 and ↓0+78
Comments26

SVG-иконки – много и со стилем

Reading time14 min
Views50K

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

Иконки у нас используются, и активно – хорошо подобранная иконка заменяет слова и предложения (а фигово подобранной иконке можно сделать всплывающую подсказку, но не будем о грустном)

В общем, есть (и продолжают создаваться) иконки. Надо их положить на веб-страницу. Надо сделать это так, чтобы потом голова не болела про них весь остаток проекта и ещё пару лет в поддержке. Ну и есть дополнительные хотелки:
  • хочется вектора. Ну, ладно, вектор – это средство, а не цель. Цель – не беспокоиться ВООБЩЕ об изменении размеров, ретина дисплеях, сохранении изображения в разных форматах для разных целей.
  • хочется стилизации иконок. Потому что у нас из коробки как минимум два набора тем (светлая и тёмная), а то и контрастная, для людей с нестандартным зрением, а то и оранжевенькая какая-нибудь появится ближе к Новому году… В общем – одна и та же по сути иконка должна выглядеть слегка иначе в зависимости от выбранной на странице темы.
  • хочется динамической стилизации иконок. Статики – нам мало. Этого хватает для скриншотиков и рекламных буклетиков, но не для живых пользователей. А мы хотели жизни! Мы хотели ховера! Мы хотели селекшена!!! И дизаблить, дизаблить их всех!.. Извините.
  • НЕ хочется, чтобы в этом участвовал JavaScript в любой его форме и проявлении. Иконки – это внешний вид, а за него ответственный HTML + CSS. Ну, ладно, класс selected я готов навесить на элементы, но это последняя граница…

Есть и факторы, облегчающие задачу. Иконки сейчас (2015, осень, начинает снежить) в моде плоские, строгие. Если лет пять назад иконки пестрели, то сейчас это ушло под влиянием МС, Эппла, Материал Дизайна…

tl;dr Внимание. Следующие несколько разделов – это расплывание мыcлею по древу, причём вширь, обзор решений (в том числе – неудачных) и котик в разных ракурсах.
Кому хочется технических подробностей того, что же вышло в итоге – пожалуйте сюда.
А для остальных начнём по порядку...
Total votes 61: ↑58 and ↓3+55
Comments34

Ракетные «сосиски» и «сардельки» или проклятие неуниверсальности

Reading time5 min
Views27K

Сверхтяжелые ракеты-носители времен лунной гонки прекрасны. «Сатурн-V» выглядит настолько рациональным и инженерно красивым, что можно понять происхождение аргумента сторонников «лунного заговора» — кажется, что такая замечательная ракета должна была бы летать до сегодняшнего дня. Но проблема сверхтяжелых ракет состоит в том, что они непригодны для обычных космических задач, для которых требуется меньшая грузоподъемность. Говоря простым языком, у вас есть грузовик «Урал», на котором вы пару раз в год возите удобрения, кирпичи или доски на дачу. Будете ли вы на нем каждый день ездить на работу в офис? Теоретически это возможно, но очень нерационально — мощный двигатель «ест» десятки литров солярки на сотню километров, не говоря уже о сопутствующих расходах или проблемах с парковкой. С космосом то же самое — «тяжелыми» стали называться ракеты грузоподъемностью двадцать тонн на низкую околоземную орбиту, а «сверхтяжелой» сейчас называют ракету с грузоподъемностью больше 50 тонн на НОО. Но не нужно думать, что изобретательное человечество легко отказалось от мечты получить универсальную ракету, которой можно каждый месяц запускать небольшие спутники, но один-два раза в год отправиться на Луну или дальше.
Читать дальше →
Total votes 42: ↑42 and ↓0+42
Comments24

15 тривиальных фактов о правильной работе с протоколом HTTP

Reading time7 min
Views232K
Внимание! Реклама! Пост оплачен Капитаном Очевидность!

Ниже под катом вы найдёте 15 пунктов, описывающих правильную организацию ресурсов, доступных по протоколу HTTP — веб-сайтов, «ручек» бэкенда, API и прочая. «Правильный» здесь означает «соответствующий рекомендациям и спецификациям». Большая часть ниженаписанного почти дословно переведена из официальных стандартов, рекомендаций и best practices от IETF и W3C.



Вы не найдёте здесь абсолютно ничего неочевидного. Нет, серьёзно, каждый веб-разработчик теоретически эти 15 пунктов должен освоить где-то в районе junior developer-а и/или второго-третьего курса университета.

Однако на практике оказывается, что великое множество веб-разработчиков эти азы таки не усвоило. Читаешь документацию к иным API и рыдаешь. Уверен, что каждый читатель таки найдёт в этом списке что-то новое для себя.
Читать дальше →
Total votes 191: ↑186 and ↓5+181
Comments120

Суперсилы Chrome DevTools

Reading time6 min
Views70K


Я работаю в команде Онлайн. Мы делаем веб-версию справочника 2ГИС. Это долгоживущий активно развивающийся проект, в котором JavaScript используется как основной язык как на клиенте, так и на сервере.

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

В этой статье я расскажу, как мы используем стандартные браузерные инструменты разработчика для эффективной отладки и исследования. Эти рецепты направлены в первую очередь на изучение приложения снаружи-внутрь, поэтому подойдут для любого проекта.
Читать дальше →
Total votes 83: ↑78 and ↓5+73
Comments13

Мобильная связь до 50% дешевле?! Реальность

Reading time5 min
Views8.9K
image

Приветствую.
Я хочу рассказать как можно сэкономить до 50% на мобильной связи. Не используя гиковских средств. Вроде скайпа.

Предисловие

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

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

Главное начать!
Хочу сэкономить
Total votes 237: ↑140 and ↓97+43
Comments177

Zalman VE-200 — USB/eSATA бокс для портативного HDD с виртуальным CD-приводом

Reading time6 min
Views226K
Наконец-то появились в продаже в России долгожданные Zalman VE-200, один из которых я и заказал себе.



Этот бокс для 2.5" HDD, с первого взгляда, не представляет собой ничего особо выдающегося — те же USB и eSATA-интерфейсы, что и у многих других боксов. Но, в отличие от конкурентов, бокс содержит в себе виртуальный CD-привод, в который монтируются *.ISO, сложенные в специальной папочке. Впрочем, это потом, а теперь:
Читать дальше →
Total votes 118: ↑114 and ↓4+110
Comments182

Удар в корпус: сколько логики в современных компьютерных кейсах?

Reading time15 min
Views8K


Внимание! Под катом 35 фотографий.

Человечеству свойственно идти по пути наименьшего сопротивления. Это логично? Да. Да не совсем. Экстенсивное развитие должно идти в ногу с интенсивным, иначе начинается форменный цирк. В IT-индустрии этот цирк наблюдается с завидной регулярностью. Стоит какому-нибудь производителю найти удачный маркетингово-технологический ход, как на эту дырдочку набрасываются всей шарой и начинают качать из нее так, что засасывают в насосы друг друга. Клинический пример – пресловутые «иксы» на CD-ROM’ах: производители доигрались до того, что юзерам пришлось писать программы-замедлялки их 52-иксовых шумелок-тормозилок. И только Plextor додумались рискнуть и выпустить писалку, которая использовала резервную область диска и умудрялась прожигать 1 Гб на стандартную болванку.

Читать дальше →
Total votes 135: ↑123 and ↓12+111
Comments144

Уменьшение размеров папки winsxs

Reading time4 min
Views882K
Многие обладатели Windows Vista и 7 наверняка сталкивались с тем, что папка Windows c ходом времени разрастается как на дрожжах. Я мирился с этим до тех пор, пока 40-гиговый раздел с системой не начал периодически выдавать мне сообщения о том, что свободное место на нем заканчивается.

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

Итак, приступим
Total votes 88: ↑74 and ↓14+60
Comments83

Очередное горячее предложение от GoDaddy.com

Reading time1 min
Views791
Новые доменные имена в зонах .COM, .US, .MOBI, .BIZ, .NET, .ORG, .CA, .CO.UK, .IN можно зарегистрировать за 1.67$ (1.49 + 0.18).
Акция действует до 16 февраля или пока не раскупят 10000 доменов.
По акции с одного аккаунта можно зарегистрировать только 1 домен.

Оплата через PayPal в рамках акции не действует. Можно оплатить только картой. Российскую альфабанковскую визу приняло без проблем.

Промо код: WINTER149

Будьте внимательны: при оформлении заказа в корзину автоматически добавляется вторая услуга (не запомнил название), бесплатная только несколько месяцев.

UPD: EugeneGavrin уточнил название навязываемой услуги, которую нужно не забыть удалить:
WebSite Tonight Economy — 5 Page Web Site — Monthly (recurring)
Total votes 73: ↑60 and ↓13+47
Comments77
1
23 ...

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity