Pull to refresh
14
0
Andrew Dunai @AndersonDunai

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

Send message

Тестовое задание моей мечты

Reading time3 min
Views61K
Около полугода назад я стал замечать, что доля javascript’a в моих личных проектах заметно выросла. Выполнять роль заурядного пхпэшника на моём нынешнем рабочем месте стало не в радость. В то же время, создание одностраничных приложений и изучение премудростей фронтэнда доставляло куда больше удовольствия.

А ведь работа должна приносить удовольствие, правда? В итоге появилось стойкое желание сменить поле деятельности и переквалифицироваться из стандартного “PHP Developer” в модного “Javascript/Frontend Ninja”.

Нашел подходящую контору, отправил CV, договорился о дате тестового задания. На тот момент я чувствовал себя достаточно подготовленным, всё-таки за плечами неплохое знание Backbone, парочка одностраничных приложений, эксперименты с Canvas, Google Maps, Node.js, Websockets и прочими. В общем было что показать.

Но тестовое задание приближалось и надо было готовиться. Первым делом я загуглил “javascript interview questions” и тут же прифигел. В голове завертелась мысль: “Почему все эти задания настолько оторваны от реального мира?”

Читать дальше →
Total votes 111: ↑80 and ↓31+49
Comments94

Форс-мажоры, или как люди теряли свои данные

Reading time5 min
Views38K
Бородатая присказка гласит: админы делятся на тех, кто не делает бэкапы, и тех, кто уже делает. У большинства осознание необходимости делать резервные копии приходит после крупной личной потери данных. И, несмотря на обилие душещипательных историй о том, как люди теряли всё, до сих пор многие продолжают надеяться на то, что бэкапы кто-то сделает за них. В качестве напоминания о неверности такого подхода, я хочу привести несколько примеров того, как люди совершенно неожиданным образом лишались своих данных или были на грани этого.

Читать дальше →
Total votes 39: ↑33 and ↓6+27
Comments35

GSM на столе

Reading time4 min
Views72K
Разработка под веб: HTTP, HTML, CSS, JavaScript, Python… Ох. Всё одно и то же. Так хочется отвлечься на что-нибудь радикально другое. Я же обитаю в московском хакспейсе Нейрон! Почему бы не поспрашивать вокруг?

Например, в Нейроне сидят ребята из компании Fairwaves, разрабатывающие GSM-оборудование для недорогих сотовых сетей. Весь стек — от железа до софта — доступен под open source лицензией. Да, да, включая железо. Поэтому совсем не обязательно работать в Fairwaves, чтобы познакомиться с этой технологией. И результат копания можно выложить на GitHub или сделать вклад в существующий проект. Как минимум, будет чем похвастаться на собеседованиях.

Пара дней чтения документации, пролистывания кода, десятки навязчивых вопросов и экспериментов (спасибо Александру Чемерису и Ивану Ключникову за помощь). И вот результат — собственная GSM-сеть под контролем моего Макбука:

HabraFon
Читать дальше →
Total votes 84: ↑79 and ↓5+74
Comments55

Создание браузерной игрульки в соц сети от и до

Reading time26 min
Views87K
Всем привет! Хочу рассказать свою историю создания браузерной онлайн игры для соц. сетей. В статье постараюсь рассмотреть всё от начала до конца, от идеи до 10 перезапуска. Статья вышла не маленькая, но подробная. Возможно, некоторые фичи, примененные в игре покажутся кому-то очевидными. Итак, кому интересно узнать о том ужасе, через который я прошел, прошу под кат! (интересно может быть самым начинающим игроделам и холиварщикам)
Читать дальше →
Total votes 78: ↑68 and ↓10+58
Comments46

Кроссплатформенная разработка на Titanium – это ужасный конец или ужас без конца?

Reading time13 min
Views22K
Image and video hosting by TinyPicВ этом топике мы хотим поделиться нашим опытом создания мобильных приложений на платформе для разработки кроссплатформенных приложений Titanium. Примерно с 2011 мы начали работы с кроссплатформенными фреймворками. Сначала это был PhoneGap, потом Titanium. Сделали десяток приложений, работающих и по сей день, как в России, так и в США. Мы сознательно хотим отойти от оценок — плохо это или хорошо разрабатывать кроссплатформенные приложения, а сосредоточиться на тех трудностях, с которыми предстоит столкнуться с точки зрения разработки и сопровождения этих приложений.

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

Итак, начнем со списка проблем, с которыми вам придётся столкнуться.

Проблемы:

  1. Проблема дабл-кликов.
  2. If’ный код.
  3. Управление памятью на Android.
  4. Недостаточная реализация отдельных функций, в том числе стандартных.
  5. Javascript — отсутствие типизации замедляет процесс написания кода и усложняет сопровождение.
  6. Отсутствие InterfaceBuilder — замедляет процесс написания приложения, весь UI пишется в коде.
  7. Titanium SDK обновляется позже SDK операционных систем.
  8. Каждая версия SDK содержит исправление старых ошибок и привносит новые ошибки.


Примеры, на которых мы столкнулись с этими проблемами.

Читать дальше →
Total votes 40: ↑33 and ↓7+26
Comments55

Создание собственных драйверов под Linux

Reading time24 min
Views205K


Многие мои друзья и знакомые крутят пальцем у виска или задаются вопросом: не жмёт ли мне череп, когда узнают, что я пишу драйвера под Linux. Слово “драйвер” окутано каким-то почти мистическим смыслом, и постичь Дао его написания способны лишь избранные гуру.
К счастью это не так. Не знаю, как обстоят дела с написанием драйверов под другие операционные системы, в т.ч. и наиболее популярные, но под linux, вне зависимости от аппаратной архитектуры драйвера пишутся очень просто. Для написания драйвера необходимы базовые знания языка си, представление о работе ОС линукс (базовые), понимание того, что мы хотим получить, желание чтения документации и исходных кодов, ну и усидчивость. Всё.
Вы хотите посмотреть как написать драйвер для своего устройства? Тогда ныряйте под кат!
Читать дальше →
Total votes 323: ↑318 and ↓5+313
Comments107

Работа с сокетами в Qt

Reading time5 min
Views128K

Введение


image
Как-то несколько лет назад, на одном из форумов, я нашел такую замечательную фразу — «Каждый уважающий себя программист в жизни должен написать свой чат-клиент». Тогда мои знания не позволяли сделать это. Я просто улыбнулся и прошел мимо этой фразы. Но вот совсем недавно я столкнулся именно с данной проблемой — нужно было написать свой чат. Ну а так как последнее время мой интерес был направлен на изучение и разработку Qt-приложений, на чем будет сделан он, решилось само собой.
Читать дальше →
Total votes 30: ↑27 and ↓3+24
Comments8

Как я купил wi-fi весы, уволился с работы и начал жить

Reading time6 min
Views210K
image

Stop fucking procrastinating and do some fucking work!


Это не то, что я услышал от своего начальника (хотя иногда вполне заслуживал такого обращения), а название одной из сотен книг в каталоге «Амазона», посвященной борьбе с прокрастинацией.
Читать дальше →
Total votes 212: ↑171 and ↓41+130
Comments200

Box2d: анатомия коллизий

Reading time10 min
Views37K
Что такое коллизии?

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

  • Когда столкновение начинается и заканчивается
  • Точку соприкосновения фикстур
  • Вектор нормали к линии контакта фикстур
  • Какая энергия была приложена и результат коллизии

Обычно столкновение происходит очень быстро, однако в этой статье мы попытаемся взять одну конкретную коллизию и замедлить ее, чтобы успеть рассмотреть детали происходящего и информацию, которую можно извлечь из события.
Читать дальше →
Total votes 48: ↑48 and ↓0+48
Comments18

Избавление нашего мира от длинных теней

Reading time3 min
Views19K
Статья описывает практический пример удаления длинных теней с иконок с помощью юзерстилей или юзерскриптов. Имеются ссылки на работающие на сайтах (habrastorage.org, toster.ru, tmtm.ru) стили и скрипты. UPD 31.05.2014: добавлены стили на habr.ru и freelansim.ru. Загружать здесь — найти среди файлов, выбрать Raw, прямая ссылка.

Пришельцы (длинные тени) появились на окраинах нашего города. Если представить их высоту в лучах заходящего солнца, сознание отказывается строить эту картину.
Пришельцы должны быть удалены, иначе наш мир навсегда станет другим, неестественно рельефным. («Тостер» — это уже не наша территория, поэтому сильно беспокоиться о ней не нужно. Там длинные тени, может быть, придутся к месту, как и произвольного качества вопросы и ответы.) Сейчас санации требуют 2 мутанта — логотип «Habrastorage» и рисунок облака.

Чем опасны длинные тени?
Total votes 60: ↑33 and ↓27+6
Comments22

Реверс-инжиниринг комикса xkcd

Reading time2 min
Views22K
Около недели назад Рэндел Манро опубликовал комикс Frequency, в котором различные надписи моргают с частотой, которая примерно соответствует частоте этих событий в реальном мире: рождение, смерть, биение сердца, свадьба, кто-то разбивает экран iPhone, житель Европы впервые целуется и т.д. Красивая пульсирующая картина на самом деле состоит из 50 анимированных файлов GIF.

Один из любителей творчества Манро задался вопросом: сколько времени занимает полный цикл у всех кадров? Для этого он скачал файлы GIF, написал собственный GIF-парсер — и зафиксировал цикл каждого файла. Результаты показаны в таблице ниже: планируемый цикл в секундах, планируемое количество показов в час, реальный цикл в секундах и реальное количество показов в час.
Читать дальше →
Total votes 66: ↑56 and ↓10+46
Comments15

Банк России считает биткоины финансовой пирамидой

Reading time1 min
Views47K


Глава департамента национальной платежной системы ЦБ Тимур Батырев говорит, что Биткоин — это финансовая пирамида:
Найдутся люди, готовые расстаться с деньгами в расчете на легкую прибыль, и купят биткоины. Но будут и те люди, которые оплатят эту прибыль.

Читать дальше →
Total votes 201: ↑140 and ↓61+79
Comments273

Стрелочные функции (Arrow functions) в ECMAScript 6

Reading time7 min
Views90K
Arrow functions madness
Одной из самых интересных частей нового стандарта ECMAScript 6 являются стрелочные функции. Стрелочные функции, как и понятно из названия определяются новым синтаксисом, который использует стрелку =>. Однако, помимо отличного синтаксиса, стрелочные функции отличаются от традиционных функций и в других моментах:
  • Лексическое связывание. Значения специальных переменных this, super и arguments определяются не тем, как стрелочные функции были вызваны, а тем, как они были созданы.
  • Неизменяемые this, super и arguments. Значения этих переменных внутри стрелочных функций остаются неизменными на протяжении всего жизненного цикла функции.
  • Стрелочные функции не могут быть использованы как конструктор и кидают ошибку при использовании с оператором new.
  • Недоступность «собственного» значения переменной arguments.

Было несколько причин для введения этих отличий. Первоочередная — это то, что связывание (binding) используется довольно часто в JavaScript. Очень легко потерять нужное значение this при использовании традиционных функций, что может привести к непредсказуемым последствиям. Другая причина, это то, что JS-движки смогут легко оптимизировать выполнение стрелочных функций за счет этих ограничений (в противоположность традиционным функциям, которые могут быть использованы в качестве конструктора и которые свободны для модификации специальных переменных).

Подробности
Total votes 118: ↑110 and ↓8+102
Comments62

Mozilla анонсировала «25-долларовый смартфон»

Reading time1 min
Views40K


Еще пару-тройку лет назад термин «смартфон» вызывал у многих ассоциации с высокой ценой на такого рода гаджет. С тех пор цены на мобильные телефоны и смартфоны (имеются в виду бюджетные устройства) постепенно снижались. И сейчас Mozilla сообщила о намерении выпустить 25-долларовый смартфонов, естественно, основанный на Firefox OS.

Стоит отметить, что сейчас бюджетные смартфоны с Firefox OS продаются уже в 15 странах, и рынки еще 12 стран планируется «открыть» для продаж таких устройств. Это — Аргентина, Коста-Рика, Эквадор, Сальвадор, Германия, Никарагуа, Панама, Гватемала.

Читать дальше →
Total votes 60: ↑52 and ↓8+44
Comments45

Шифрованный тоннель для общения через VK (RSA + GreaseMonkey)

Reading time3 min
Views36K
В связи с развитием событий в мире последним временем пользователи сети всё чаще задумываются о своей безопасности: кто-то отказывается пользоваться рядом web-сервисов, кто-то удаляет личную информацию, фото и другие данные с социальных сетей, а кто-то и вовсе «блокирует» свои учётные записи. Но вот только большинство этих данных удаляются лишь визуально, что, в принципе, общеизвестный факт.
image

Поскольку значительная часть моих знакомых — это люди, не имеющие достаточных знаний в сфере IT, то приходится изощряться, чтобы заставить их пользоваться непривычными им сервисами либо утилитами, которые я считаю безопасными.
Предлагаю относительно простой способ установки безопасного канала для текстового общения через всеми известную сеть ВКонтакте. Для этого не нужно никакого дополнительного софта либо обширных знаний в сфере информационной безопасности. Всё, что вам нужно иметь — это web-браузер и аддон GreaseMonkey.
Читать дальше →
Total votes 51: ↑33 and ↓18+15
Comments44

Результаты конкурса на самый глючный код C++

Reading time2 min
Views72K
После продолжительного обсуждения объявлены победители конкурса Grand C++ Error Explosion Competition. Награды должны были объявить в двух номинациях. Участники первой соревновались по максимальному количеству ошибок на минимальный объём кода. Вторая номинация — творческая, там важно не количество и размер, а качество и красота глюков.

В итоге, абсолютным победителем назван программист Эд Хэнвей (Ed Hanway), приславший такую программу.

#include ".//.//.//.//jeh.cpp"
#include "jeh.cpp"
`
Читать дальше →
Total votes 120: ↑106 and ↓14+92
Comments39

Разбор протокола World Of Tanks

Reading time8 min
Views115K
Часть первая: инструментарий мелкосерийного изобретения велосипедов

Почему и зачем: длинная и необязательная преамбула

Хорошо, что опыта игрового модостроительства у меня было немного — так, пару кастомных прицелов для Deer Hunter 2005 и «нелицензионный» недоклиент VATSIM/FSD с сопутствущим «взломом» протокола последнего. Ещё лучше, что ни разу не приходилось с головой погружаться в сколь-нибудь трудоёмкую и длительную отладку и дизассемблирование. То есть, с IDA и OllyDBG я поверхностно знаком, но не как с ежедневными рабочими инструментами.

В WOT играю с начала 2011 года. Не запоем, а, скорее, набегами — по 5-6 боёв вечером. Было время 2 года назад, наш клан состоял в Красном Альянсе, ходил на глобалку по ночам, выполнял какие-то тактические задачи на европейском ТВД, устраивал тренировки и спарринги, вовсю бурлили внутриигровые политические страсти, отпочковывались учебные кланы. Сейчас всего этого уже нет, и наш золотой ёжик превратился в табличку над «Домом Ветеранов».

Впадать в ересь сравнения танков с другими MMO не буду, так как хорошо знаком только с танками. Тем более не знаком ни с одним другим проектом, использующим BigWorld, поэтому искренне верю WarGaming'у на слово, что существуют и (не)тривиально (не)преодолеваются различные техномагические ограничения движка — на размер карты, на максимальную скорость юнита, на численность команд и прочее. Оставаясь в рамках внутренней критики, я также понимаю, что, с точки зрения целевой аудитории танков вообще, и их активного игрового коммьюнити в частности, каждое нововведение из очередного патча, безусловно, гораздо более востребовано и обосновано, сколь бы малым оно ни было. И что оптимизировать Motion Blur на несколько процентов это, безусловно, важнее, чем отменить принципиальную неизменяемость привязки действий на кнопки мыши для тех, кто привык на них ставить движение вперёд-назад (DOOM-стайл, да).

Итак, я уверен, что в обозримом будущем никаких планов по введению полноценного режима спектатора в WOT нет и не будет. Под полноценным режимом спектатора я понимаю множественные подключения игроков в сеанс боя изначально как невзаимодействующих на игру «привидений»-наблюдателей, а не на технике. Это тот самый режим, из-за отсутствия которого комментаторы на чемпионатах WOT вынуждены заходить в бой 15-м танком, убиваемым своими на базе. Это тот самый режим, из-за которого появились моды «командирского zoom» и «кинематографической камеры» — по сути, просто костыли. А нужен такой режим затем, чтобы командир роты занимался командованием, а не скакал впереди на лихом танке по-чапаевски, чтобы он видел ситуацию на карте в целом непрерывно, а не отвлекался на неё в пылу нападения из засады. В идеале, командиру даже не нужны красоты трёхмерного мира — достаточно одной большой карты на весь монитор с игровой ситуацией в реальном времени — HP, повреждениями модулей, членов экипажа, направлениями стволов и прицелов союзной техники, засвеченных в каждый момент вражеских юнитов и прочей вспомогательной информации.

WOT предоставляет широкие возможности модостроительства, но такая идея выходит за рамки классического «заменить пару swf-файлов на свои». Потребуется перехват и разбор самого игрового протокола для того, чтобы иметь возможность передать на командирский планшет своё видение игровой ситуации.
Читать дальше →
Total votes 173: ↑167 and ↓6+161
Comments90

Опасное развлечение: простой для повторения генератор высокого напряжения

Reading time4 min
Views509K
image

Добрый день, уважаемые хабровчане.
Этот пост будет немного необычным.
В нём я расскажу, как сделать простой и достаточно мощный генератор высокого напряжения (280 000 вольт). За основу я взял схему Генератора Маркса. Особенность моей схемы в том, что я пересчитал её под доступные и недорогие детали. К тому же сама схема проста для повторения (у меня на её сборку ушло 15 минут), не требует настройки и запускается с первого раза. На мой взгляд намного проще чем трансформатор Теслы или умножитель напряжения Кокрофта-Уолтона.

Принцип работы


Сразу после включения начинают заряжаться конденсаторы. В моём случае до 35 киловольт. Как только напряжение достигнет порога пробоя одного из разрядников, конденсаторы через разрядник соединятся последовательно, что приведёт к удвоению напряжения на конденсаторах, подсоединённых к этому разряднику. Из-за этого практически мгновенно срабатывают остальные разрядники, и напряжение на конденсаторах складывается. Я использовал 12 ступеней, то есть напряжение должно умножиться на 12 (12 х 35 = 420). 420 киловольт — это почти полуметровые разряды. Но на практике, с учетом всех потерь, получились разряды длиной 28 см. Потери были вследствие коронных разрядов.

image
Читать дальше →
Total votes 340: ↑297 and ↓43+254
Comments260

Bethesda объявила о скором выходе бета-версии новой части Doom

Reading time2 min
Views39K


На днях появилась интересная для геймеров информация: Bethesda анонсировала дату релиза «Wolfenstein: The New Order», а также сообщила о том, что те геймеры, кто оформит предзаказ на эту игру, получают доступ (код) и к бета-версии новой части Doom. Тестирование бета-версии будет объявлено позже, когда именно — неясно.

Только недавно на Хабре писали, что Doom исполнилось целых 20 лет, и тут такая новость. Кстати, разработчики предпочитают называть новый Doom именно «следующая часть Doom», а не «Doom 4».

Дата релиза «Wolfenstein: The New Order», кстати, объявлена на 23-е мая этого года. А вот дата релиза бета-версии Doom пока что не объявлена. Разработчики пообещали сделать анонс позже, но когда именно, неясно. И единственный способ получить доступ к бета-версии Doom — это сделать предзаказ «Wolfenstein: The New Order», разработчики подчеркивают, что других способов нет.

Читать дальше →
Total votes 33: ↑29 and ↓4+25
Comments21

Теплый ламповый звук

Reading time7 min
Views328K
Как-то случайно обратил внимание, что 90% статей на хабре с тегом «теплый ламповый» рассказывают о чем угодно, но только не о ламповой технике. В то же время, немногие публикации о ламповых устройствах собирают множество лайков восхищенных комментариев.



Я уже не помню как и когда в моей голове поселилась эта странная идея — собрать ламповый усилитель. Зачем тоже не совсем понятно — меломаном я не являюсь, домашними кинотеатрами давно и быстро переболел, на память об этом времени остались напольные колонки Wharfedale Diamond 8.4, последние годы использовавшиеся исключительно как декоративная подставка для цветов. Как бы то ни было, мысль настолько глубоко поселилась в моей голове, что началось неспешное изучение профильных ресурсов, чтение форумов, поиск схем ламповых усилителей «для чайников» и т.д. и т.п. Отсутствие какого-либо опыта общения с ламповой техникой (самый современный гаджет, который я помню — это ч/б телевизор в студенческой общаге в начале 90-х годов прошлого века) отпугивало и привлекало одновременно.
Подробности
Total votes 286: ↑273 and ↓13+260
Comments118

Information

Rating
Does not participate
Location
Львов, Львовская обл., Украина
Date of birth
Registered
Activity