Обновить
33
0
Дмитрий@Keyten

JavaScript

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

Лёгкий способ писать iOS приложения на вебе

Время на прочтение9 мин
Охват и читатели85K
Всем привет. Не так давно Габриель подарил нам игру 2048. Это тот самый удивительный случай, когда клон игры становится более популярный, чем оригинал. Не малая часть успеха Габриеля — открытый код и, вуаля, MIT лицензия. Набрав чуть больше 20к очков, захотелось поделиться результатом с друзьями, кроме как сделать скриншот не получилось. Глянул аппстор на наличие клона с геймцентром или чем-то подобным — пусто. И тут подумал, почему бы нет?
Забегая вперёд, на создание приложения и всех «ништяков» к нему ушло 4 дня. На выходе универсальный код, который от части работает и в вебе и легко портируется на иос/андроид. Однако, давайте по порядку.


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

Как правильно лгать с помощью статистики

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

Существуют три вида лжи: ложь, наглая ложь и статистика (источник)

Есть такой замечательный жанр — "вредные советы", в котором детям дают советы, а дети, как известно, всё делают наоборот и получается всё как раз правильно. Может быть и со всем остальным так получится?

Статистика, инфографика, big data, анализ данных и data science — этим сейчас кто только не занят. Все знают как правильно всем этим заниматься, осталось только кому-то написать как НЕ нужно этого делать. В данной статье мы именно этим и займемся.


Hazen Robert "Curve fitting". 1978, Science.

Структура статьи:
  1. Введение
  2. Предвзятая выборка (Sampling bias)
  3. Правильно выбираем среднее (Well-chosen average)
  4. И еще 10 неудачных экспериментов, про которые мы не написали
  5. Играем со шкалой
  6. Выбираем 100%
  7. Скрываем нужные числа
  8. Визуальная метафора
  9. Пример качественной визуализации
  10. Заключение и дальнейшее чтение

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

Что должен знать каждый участник крупного MMO-проекта

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

Рядовые программисты обычно всё это прекрасно знают. А вот менеджерский состав нередко считает, что совершенно не обязательно разбираться в игровой экономике, клиент-серверной архитектуре и психологии игрового комьюнити. Ведь есть же крутая команда спецов, которые обо всём позаботятся.
Итог очевиден: трудно вспомнить хотя бы один крупный MMO-проект, выпущенный за последние два года, который избежал бы стандартного набора граблей. Такое ощущение, что MMO-индустрия не способна учиться на своих ошибках.
Итак, список вопросов, ответы на которые должен знать каждый, от топ-менеджера до работника техподдержки крупного MMO-проекта.
Читать дальше →

Самая сложная игра всех времён

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

Robot Odyssey

Нью-йоркский программист Дэвид Ауэрбах (David Auerbach) вспоминает компьютерную игру, для прохождения которой ему понадобилось 13 лет и которая определила его будущее как программиста.
Читать дальше →

BITcommander — ваш следующий файловый менеджер

Время на прочтение2 мин
Охват и читатели21K
Мопед не мой, я просто хочу обратить внимание общественности на этот интересный проект. Может быть кто-то захочет его поддержать.



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

Девушкам: пять причин выйти замуж за айтишника и пять причин как следует подумать перед этим

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

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

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

Пять причин выйти замуж за айтишника


1. Надежность и ответственность

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

2. Интересный собеседник

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

Если так получится, что у вас хобби общее — вам можно будет только позавидовать. А если же нет — в тот момент, когда ваш любимый поймет, чем увлекаетесь вы, он наверняка предпримет небольшое исследование, просто чтобы иметь возможность по-настоящему оценить ваши достижения, ну и разговор поддержать. Впрочем, увы, новейшие веяния моды и новый альбом поп-звезды он вряд ли будет обсуждать…
Читать дальше →

Spine — первые шаги

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


Привет Хабр!

Относительно недавно на кикстартере завершился сбор денег на новый инструмент для игроделов, но на Хабре это не было освещено. Spine —программа для создания скелетной 2d анимации. Этот инструмент будет интересен не только инди-разработчикам и начинающим гейм дизайнерам, но также опытным игрокам рынка. Простота в использовании и притягательный дизайн создают впечатление творящегося на экране волшебства.

Всех заинтересовавшихся прошу под кат (много картинок).
IT'S ALIVE!

Hot Dot Parallax Engine под лицензией MIT

Время на прочтение2 мин
Охват и читатели30K
image
Более 300 сайтов использовали движок до публикации.

Девять месяцев назад мы запустили сайт студии. Он быстро набрал популярность, мы получили несколько наград, о нас написали профильные СМИ.

Сайт так же быстро оброс клонами. Некоторые скопировали нас полностью. Попадались и подобные забавные вещи. Сайт на нашем движке попал на One Page Love, а после выявления воровства был удален из рейтинга. Когда количество клонов превысило три сотни, мы решили сделать исходный код движка открытым.
Читать дальше →

Изобретаем JPEG

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

Вы правильно поняли из названия, что это не совсем обычное описание алгоритма JPEG (формат файла я подробно описывал в статье «Декодирование JPEG для чайников»). В первую очередь, выбранный способ подачи материала предполагает, что мы ничего не знаем не только о JPEG, но и о преобразовании Фурье, и кодировании Хаффмана. И вообще, мало что помним из лекций. Просто взяли картинку и стали думать как же ее можно сжать. Поэтому я попытался доступно выразить только суть, но при которой у читателя будет выработано достаточно глубокое и, главное, интуитивное понимание алгоритма. Формулы и математические выкладки — по самому минимуму, только те, которые важны для понимания происходящего.

Знание алгоритма JPEG очень полезно не только для сжатия изображений. В нем используется теория из цифровой обработки сигналов, математического анализа, линейной алгебры, теории информации, в частности, преобразование Фурье, кодирование без потерь и др. Поэтому полученные знания могут пригодиться где угодно.

Если есть желание, то предлагаю пройти те же этапы самостоятельно параллельно со статьей. Проверить, насколько приведенные рассуждения подходят для разных изображений, попытаться внести свои модификации в алгоритм. Это очень интересно. В качестве инструмента могу порекомендовать замечательную связку Python + NumPy + Matplotlib + PIL(Pillow). Почти вся моя работа (в т. ч. графики и анимация), была произведена с помощью них.

Внимание, трафик! Много иллюстраций, графиков и анимаций (~ 10Мб). По иронии судьбы, в статье про JPEG всего 2 изображения с этим форматом из полусотни.
Читать дальше →

250 строк кода, распознающих дату на русском языке

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



Пример и код в jsFiddle.
Читать дальше →

Для первопроходцев. На волнах вместе с Jolla (UPD)

Время на прочтение11 мин
Охват и читатели63K
Jolla

После того, как разочарование от поступка Нокии по расформированию всего подразделения Maemo/Meego достигло своего максимума, в интернете появились слухи о том, что некий стартап может возродить эту великолепную операционку и продолжить её развитие. Далее было много всяких слухов, якобы Nokia подарила все разработки этому стартапу (чего, конечно же, не было). Вскоре всплыло и название этого самого стартапа — Jolla. Целый год в интернет попадали обрывки информации о будущем телефоне, скриншоты, новости, идеи и вот, наконец, в декабре 2013 года этот телефон появился в открытой продаже. Сначала ещё в июне был открыт предзаказ на сумму 100 евро, за который высылалась футболка и письмо со словами благодарности в оказанном доверии и поддержке, ну а сам телефон пришёл только через полгода — этой зимой. Наконец-то, я держу в руках это долгожданный аппарат и хочу поделиться своими впечатлениями о нём. Всё же, телефон ещё редкий и возможности пойти в магазин, чтобы своим руками «пощупать», пока нет.

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

Несколько JavaScript хаков для хипстеров

Время на прочтение3 мин
Охват и читатели57K
image
JavaScript занимательный язык программирования.

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

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

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

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

TempusJS — работаем с датой в javascript

Время на прочтение7 мин
Охват и читатели20K
Всем привет!
Мне часто приходится работать со статистическими данными и там очень много завязано на датах. Притом, одна и та же дата может быть использована на странице в разных форматах (например, в удобном для машины и в удобном для человека). Я думаю, что большинство из вас отлично представляют весь этот ужасающий по размерам код, который получается при использовании объекта Date.
К примеру, чтобы получить текущую дату в формате ДД.ММ.ГГГГ нам потребуется сделать следующее:
var d = new Date(),
       fd = d.getDate() + '.' + (d.getMonth()+1) + '.' + d.getFullYear();

А когда таких строк становится много? Легко ли упомнить, что в javascript месяц начинается с нуля, когда разрабатываешь не только на нем? Или то, что тут миллисекунды, а не секунды, как почти везде на бэкенде? Можно решить часть задач популярной библиотекой Moment.js, но она работает весьма медленно.
Рассматриваемая библиотека решает эти проблемы.
Если интересно, предлагаю вам прочитать этот небольшой обзор.

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

Генератор визуальных интерфейсов с генетическим алгоритмом в помощь дизайнерам

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

Результат генерации первого поколения

Я не дизайнер. Но иногда приходится для каких-то своих проектов придумывать какой-то дизайн, чего я очень не люблю делать. Колдуя несколько часов в фотошопе в голову ничего интересного так и не приходит. Вроде сделаю какой-никакой макет, но чего-то не хватает. Что-то не то. Нужно вдохновение. Именно так и родилась идея сделать генератор визуальных интерфейсов, который служил бы источником вдохновения, подсказывал какие-нибудь формы и их положение. А потом в мою неспокойную голову пришла идея сделать генетический алгоритм, где в роли фитнесс-функции буду выступать я со своей субъективной оценкой. Забегая вперед скажу, что ничего особенного из этой идеи не вышло.
Ссылка на демо и подробности под катом

Задачи на собеседованиях в Яндексе

Время на прочтение15 мин
Охват и читатели362K
Открытые вакансии на должность разработчика в Яндексе есть всегда. Компания развивается, и хороших программистов не хватает постоянно. И претендентов на эти должности тоже хоть отбавляй. Главная сложность – отобрать действительно подходящих кандидатов. И в этом плане Яндекс мало чем отличается от большинства крупных IT-компаний. Так что базовые принципы, описываемые в этой статье, могут быть применимы не только к Яндексу.

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

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

Направленное освещение и затенение в 2D-пространстве

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

Добрый день, Хабравчане!
Хотелось бы рассказать об одном из способов отрисовки освещения и затенения в 2D-пространстве с учетом геометрии сцены. Мне очень нравится реализация освещения в Gish и Super MeatBoy, хотя в митбое его можно разглядеть только на динамичных уровнях с разрушающимися или перемещающимися платформами, а в Гише оно повсеместно. Освещение в таких играх мне кажется таким «тёплым», ламповым, что непременно хотелось нечто подобное реализовать самому. И вот, что из этого вышло.
Читать дальше →

Пузырьковая сортировка и все-все-все

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

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

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

image: пузырьки

Сделать первый шаг в изучении сортировок

Динамическое освещение и неограниченное количество источников произвольной формы в 2D

Время на прочтение6 мин
Охват и читатели40K
Продолжая тему велосипедостроения, хочу поделится тем, как я делал освещение в пиксель-арт игрушке.
Особенность этого метода заключается в том, что эти источники света не ограничиваются ни количеством ни формой.


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

Еще раз об обфускации JavaScript или сказ о том, как я обфускатор писал. Часть 1

Время на прочтение3 мин
Охват и читатели14K
Возникла тут задача, написать код на php, который принимает js-код и обфусцирует его по самое не балуй. После курения гугла и хабра (в том числе, как правильно подсказывает monolithed, вот этой статьи) я приступил к работе. Как и следовало, я начал того, что запустил консоль JS в хроме и начал пытаться получать строки из месива символов, вот что получилось (с пояснениями):
(![]+[])

«false»
[] — пустой массив
! — операция логическое НЕ, особенность js (и не только), в том, что при булевых операциях если операнд равен 0, false, undefined, null, '' (пустой строке), то он приводится к false. Во всех остальных случаях — к true. (спасибо oshibka404 за поправки)
То есть (![]) = false
+ — операция сложения и объединения строк, если оба операнда числа, то произойдет сложения, иначе это будет объединение строк с приведением типов. Кстати, тут есть особая магия типов, но это позже.
Читать дальше →

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность