Search
Write a publication
Pull to refresh
10
0.3

JavaScript-разработчик

Send message

Как случайно не разбился «Аполлон-11»

Reading time5 min
Views37K

На днях в обычном офисном разговоре я сказал: «То, что у нас тут склад костылей — это нормально, во всех ИТ-проектах так. Наверное, из всего софта, который сделало человечество, только в программах посадки на Луну было все красиво». Сказав это, я полез в интернет, найти дополнительные факты к краткому научно-популярному рассказу для коллег о компьютерах и программах лунного модуля. Но одной из первых попалась ссылка, из которой выяснилось, что костыли, и, страшно сказать, баги были и в отшлифованном программном обеспечении, которое позволило человеку высадиться на Луну. А «Аполлоны» -11 и -12 смогли сесть, оказывается, только по счастливой случайности.
Читать дальше →

Естественная анимация в интерфейсах

Reading time6 min
Views15K

\begin{tikzpicture}
\def\t{0}
\def\r{3.1415}
\begin{axis}[width=12cm,height=7cm,
    ticks=none,
    xmin=-0.5, xmax=3.8,
    axis y line=left,axis x line=bottom,
    xlabel=$t$,ylabel=$x$, 
every axis x label/.style={at={(current axis.south east)},anchor=south},
every axis y label/.style={at={(current axis.north west)},anchor=west},
enlargelimits=true,mark size=1
    ]
\addplot[smooth,blue,domain=\t:\r,samples=80] {1-cos(deg(x*3))};
\addplot[mark=*] coordinates {(\t,0)};
\addplot[mark=*] coordinates {(\r,2)};
\end{axis}
\end{tikzpicture}


Рис. 0. КДПВ


Анимация в интерфейсе делает наглядным изменение его состояния. Например, при неудачной отправке длинная форма прокручивается к неправильно заполненному полю. Или увеличивающаяся по нажатию фотография раздвигает окружающие элементы.


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


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

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

Запуск NodeJS-приложения на Android

Reading time3 min
Views85K
Без сомнения, вам понравится запускать NodeJS на своем Android-устройстве. Благодаря эмулятору терминала и Linux-окружения для Android, разработка веб-приложений на смартфоне перестанет быть для вас проблемой.
Читать дальше →

Планировщик путешествий своими руками за пару часов

Reading time8 min
Views14K

Автор: Сергей Матвеенко

Однажды ко мне пришел инвестор одного проекта и сказал: «Давай сделаем планировщик путешествий по картам Google!» Я согласился. Тогда инвестор стал рассказывать, как техдиректор представлял себе архитектуру этого планировщика: он говорил что-то про связь с сервером, про ключ API, про запросы в Google, про деньги за запросы, которых будет много и т. д. Все выглядело сложно и красиво. Однако затем мы стали внимательно читать документацию Google API и вдруг поняли, что на самом деле нам сервер не нужен. Вообще! Весь планировщик можно сделать на клиенте. А самое интересное — мы можем обойтись даже без API-ключа (при условии, что мы будем использовать JS API). В итоге я за два дня смог написать такой планировщик, с логикой на стороне клиента, на основе Google API, без использования сервера. Все оказалось очень просто.

Я расскажу, как можно сделать простейший планировщик такого рода буквально за пару часов. Конечно, за это время можно собрать только прототип, но главное — он будет работать! Его главной функцией будет прокладка оптимального маршрута между достопримечательностями в интересующем нас городе; может присутствовать разбивка плана поездки по дням. Все будет сделано на AngularJS с использованием Google Maps/Places API. Я расскажу об особенностях работы с этим API и о некоторых его возможностях, которые не указаны в документации. Также мы поговорим о выделении логики в клиентские приложения.
Читать дальше →

Очередной CI светофор. На этот раз attiny2313 и Node.js

Reading time8 min
Views36K
Воодушевленный такой прекрасной идеей, как светофор, отображающий состояние билда, я решил, что нашей команде нужен такой же. Я не хотел руководствоваться прочитанными мною статьями, поскольку они используют слишком дорогие для меня решения. Поэтому, вооружившись идеей, я набросал очень приблизительный план работы для команды, а у себя в голове держал простые принципы, которым хочу следовать.



Под катом светофор из цветомузыки и пластиковых бутылок, USB модуль управления светофором на attiny2313 за доллар, а так же софт для опроса Jenkins и управления USB модулем на Node.js.
Читать дальше →

Strelki.js — еще одна библиотека для работы с массивами

Reading time8 min
Views7.5K
При программировании на JavaScript часто возникает проблема выбора оптимального представления данных в программе: массивы, хеши, массивы хешей, хеши массивов и т.д. Одни и те же данные могут быть загружены в различные комбинации структур, но трудность выбора обычно заключается в том, как найти компромисс между простотой кода для доступа к этим данным, скоростью работы и количеством требуемой памяти.



В статье рассказано о моей попытке поиска универсального решения.
Читать дальше →

Контроль качества воздуха (со2 и температуры) в офисе и дома, своими руками

Reading time3 min
Views45K
Все началось с того что я работаю в офисе, где как водится нет нормальной вентиляции. Зато есть много народу, кому-то все время жарко, другим постоянно дует.

Для контроля качества воздуха в помещении знать температуру недостаточно. Даже с кондиционером часто бывает прохладно, но душно. Спертый воздух. Оказалось, на это больше всего влияет концентрация со2. Когда я узнал стоимость готовых приборов хотел от этой идеи отказаться. Но случайно увидел описание оптического датчика концентрации со2 MH-Z19.

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

RS232 устройство 3-в-1 для домашнего Linux сервера: Часть 2 (Серверная)

Reading time11 min
Views19K

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


В этой части статьи будет рассмотрено как взаимодействовать с последовательным портом из пространства ядра (kernel space) и как организовать работу с несколькими подсистемами устройства через RS232 в Linux.


Устройство включает в себя следующие подсистемы:


  • Аппаратный сторожевой таймер, работающий с watchdog демоном;
  • Генератор истинно случайных чисел;
  • Радиомодуль nRF24L01+ для сбора данных с автономных датчиков.

WRN устройство

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

Методы определения принадлежности точки многоугольнику

Reading time9 min
Views79K
Недавно на хабре была статья, в которой описывалось как можно определить, где находится точка по отношению к многоугольнику: внутри или снаружи. Подобная проблема встречается в геометрическом моделировании и в компьютерной графике достаточно часто. А так как метод, описанный в статье, был несколько не оптимален, а в комментариях был небольшой хаос, возникла мысль написать эту статью. Итак, какие алгоритмы существуют в современной компьютерной графике, чтобы определить, принадлежит ли заданная точка многоугольнику или нет.
Читать дальше →

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

Reading time4 min
Views131K
Привет всем Хабра людям. Хочу представить уважаемым читателям пример, когда сухая и далекая от жизни в нашем понимании высшая математика дала не плохой практический результат.

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

Ретро. Ко дню Радио — «Охота на лис», 1957 год

Reading time10 min
Views14K


Совсем скоро (завтра, 7-го мая) — День радио.

Возможно кто-то видел фрагмент соревнования — когда участники бегают по лесу с какими-то радио-приёмниками, и не очень понимал в чём собственно дело, и что они потеряли? Это соревнование называется «Охота на лис» («Ловля лис») — официально «Спортивная радиопеленгация». И суть его заключается в поиске источника радио сигнала на открытой местности.

В журнале Радио, в далёком 1957 году — была первая подробная публикация, посвященная этому соревнованию в Советском Союзе, данный пост и будет оцифрованный вариант этой статьи, в которой рассказаны все детали этого действа (публикация согласована с редакцией журнала Радио).


Летом этого года [1957] в Москве будет проходить VI Всемирный фестиваль молодежи и студентов за мир и дружбу. Тысячи дружеских встреч между молодыми представителями различных народов произойдут в эти дни в столице. Здесь встретятся студенты, рабочие, спортсмены, учителя, моряки. В Москве соберутся вместе и радиолюбители многих стран мира. Они обменяются мнениями об укреплении дружеских связей, побеседуют со своими друзьями по эфиру, встретятся на товарищеских соревнованиях.

В программу фестиваля, в число других спортивных мероприятии, включены ультракоротковолновые соревнования «Ловля лис». Этот вид УКВ спорта получил распространение в ряде стран мира. Большой интерес он вызывает и у нашей молодежи. В этом году соревнования «Ловля лис» состоятся во многих городах нашей страны. На них будут отобраны лучшие спортсмены, которые войдут в команду радиолюбителей — участников фестиваля. Как организуется и проводится «Ловля лис» в Югославии?

С таким вопросом мы обратились через редакцию журнала югославских радиолюбителей «Радиоаматер» к победителю соревнований 1956 года в Белграде Женко Здравко. Ниже мы публикуем с некоторыми сокращениями любезно присланную им статью.
Читать дальше →

Еще раз о минимизации булевых функций

Reading time3 min
Views18K
В предыдущей статье я рассказал, как симметричные карты позволяют достаточно просто и быстро минимизировать булевые функции, но не осветил два момента: получение разных вариантов минимального решения и автоматизацию самого алгоритма минимизации. Расскажу здесь об этом более подробно.

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

Инерционный трекер на базе Arduino и GY-85

Reading time6 min
Views88K
image

Привет Хабр. Head tracker, иногда его же называют инерционный трекер — устройство, которое отслеживает движение головы в пространстве, то есть в трёх осях — X,Y,Z.

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


Данное видео, по большей части, дублирует текст статьи.
Подробнее...

Александрийская и григорианская пасхалии

Reading time5 min
Views13K
Календари (в смысле систем счисления времени, а не в смысле типографской продукции) были моим хобби еще в младшем школьном возрасте. Поэтому, когда я прочитал статью Расчет пасхи, у меня сразу зачесались руки написать «исправленную и дополненную редакцию» этой статьи. Да и khdavid (ее автор) меня вроде бы поддержал. В общем, если вы читаете эту статью, значит возникшего импульса мотивации все-таки хватило, чтобы преодолеть мою обычную дурную бесконечность перфекционистской рефлексии.

Не вдаваясь в историю, приведу основной принцип расчета христианской Пасхи. Пасха празднуется в первое воскресенье после первого весеннего полнолуния, т. е. первого полнолуния, бывшего не раньше дня весеннего равноденствия. И у православных, и у католиков используется не астрономическое, а расчетное весеннее полнолуние. Разница только в этом самом расчете.
Читать дальше →

Наголовное устройство ввода для людей с ограниченными возможностями

Reading time2 min
Views4K
image

Часто наше желание найти новый метод ввода — нечто большее, чем мыши, трекпады или игровые контроллеры — обусловлено только новизной или интеллектуальным любопытством. Но не в случае гарнитуры GlassOuse (т. е. «очки+мышь»). Она сделана специально, чтобы помочь тем, кто не может использовать обычную мышь. Носится на голове, как очки и может подключаться к Windows, Linux, Mac и Android-устройствам через Bluetooth и выполнять функции мыши, сообщает theverge.
Читать дальше →

Пишем модуль на C++ для nodejs на примере работы с MySQL

Reading time10 min
Views39K

Введение


Многие уже успели попробовать Node.js, на мой взгляд, это очень удобный инструмент, для решения большого круга задач. Меня в Node.js, прежде всего, привлекает возможность писать код на JavaScript и большой набор встроенных модулей для решения часто возникающих задач. Если чего-то не оказалось в стандартной поставке, то огромное количество дополнительных модулей можно найти в репозитории npmjs.org

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

После изучения документации, я пришёл к выводу что, могу написать нужный мне модуль на C++ и оформить его как addon к node.js, если вам интересно познакомится с процессом создания модуля, добро пожаловать под кат.
Читать дальше →

Пишем асинхронный модуль для node.js с помощью C++

Reading time5 min
Views13K
Node.js развивается, и, вполне уже можно экспериментировать с написанием графических приложений либо каких-то консольных утилит и сервисов. В процессе разработки может возникнуть необходимость использовать какие-то системные вызовы, например, к WMI (к WMI нельзя обратиться напрямую из node.js, и запросы WMI могут быть долгими, что заблокирует event loop, и, например, если связь у Вас через веб-сокеты, связь может оборваться). Тут существует несколько вариантов. Можно воспользоваться модулем (например, node-ffi) и попробовать поиграться с ним. Есть ещё способ, точнее, костыль. В Windows существует так называемый WScript (Windows Script Host) — это компонент Windows, предназначенный для запуска, например, JScript, VBScript. JScript может обращаться к WMI напрямую, так что мы имеем возможность запустить child_process, в котором будет работать JScript, и получать от него данные (формировать, например, JSON и отправлять его строкой), но это костыль, бессмысленный и беспощадный. И третий способ — это нативный модуль. Я не буду описывать, как получить данные от WMI, а опишу что-нибудь менее ёмкое. Кому интересно — прошу под кат.
Читать дальше →

Нечёткий поиск в тексте и словаре

Reading time13 min
Views270K

Введение


Алгоритмы нечеткого поиска (также известного как поиск по сходству или fuzzy string search) являются основой систем проверки орфографии и полноценных поисковых систем вроде Google или Yandex. Например, такие алгоритмы используются для функций наподобие «Возможно вы имели в виду …» в тех же поисковых системах.

В этой обзорной статье я рассмотрю следующие понятия, методы и алгоритмы:
  • Расстояние Левенштейна
  • Расстояние Дамерау-Левенштейна
  • Алгоритм Bitap с модификациями от Wu и Manber
  • Алгоритм расширения выборки
  • Метод N-грамм
  • Хеширование по сигнатуре
  • BK-деревья
А также проведу сравнительное тестирование качества и производительности алгоритмов.
Читать дальше →

Метод Монте-Карло для поиска в дереве

Reading time4 min
Views38K


Метод Монте-Карло это алгоритм принятия решений, часто используемый в играх в качестве основы искусственного интеллекта. Сильное влияние он оказал на программы для игры в Го, хотя находит свое применение и в других играх, как настольных, так и обычных компьютерных (например Total War: Rome II). Так же, стоит отметить, что метод Монте-Карло используется в нашумевшей программе AlphaGo, победившей го-профессионала 9-го дана Ли Седоля в серии из 5 игр.

В данной статье хотелось бы рассказать про версию алгоритма Монте-Карло под названием Upper Confidence bound applied to Trees (UCT). Именно после публикации этого алгоритма в 2006-м году, программы для игры в Го сильно усилили свои позиции и достигли значительных успехов в игре против человека.
Читать дальше →

Любимые административные грабли интернетчика

Reading time4 min
Views4.2K


Вторая серия, начинать читать можно тут.

Пару недель назад меня пригласили почитать что-то полезное на секции разработчиков на конференции Digital Оттепель в Нижнем Новогороде. Времени было очень мало и я накидал любимые организационные грабли, по которым скачут 90% интернет-компаний, которых мне доводилось консультировать. Конечно, есть шанс, что мне просто везло. Но я что-то мало верю в такое роковое везение на разные города и разные масштабы.

В итоге наковырял некоторую пачку, с которой и предлагаю поиграть в Капитана Очевидность
Читать дальше →

Information

Rating
3,663-rd
Location
Москва, Москва и Московская обл., Россия
Registered
Activity