Pull to refresh
6
2

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

Send message

История о том, как я угольный котел автоматизировал

Reading time8 min
Views45K
В холодные зимние вечера, когда температура на улице достигала -40 градусов. Я понял, что мне приходится совершать очень много однотипных действий, которые, на первый взгляд, очень просто автоматизировать.

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

Моделирование и анализ вычислительных процессов

Reading time1 min
Views8.8K
Машины Тьюринга, Поста, Минского, алгоритмы Маркова, рекурсивные функции Клини были придуманы в первой половине двадцатого века в результате попыток формализовать понятие алгоритма. Эти математические модели до сих пор успешно применяются для решения задач разрешимости и алгоритмической сложности, но бесполезны для моделирования поведения сетевых протоколов или компонентов операционной системы. В докладе представлены некоторые современные подходы к моделированию вычислений, которые используются в индустрии при разработке сложных информационных систем.



Лекцию в марте прошлого года прочитал на факультете компьютерных наук Ростислав Яворский, доцент департамента анализа данных и искусственного интеллекта. На факультете Ростислав Эдуардович ведет курсы «Введение в программирование», «Компьютерная алгебра», «Неклассические логики и представление знаний».
Читать дальше →

Перевод документации RivetsJS

Reading time12 min
Views12K

Немного о мотивах


Доброго времени суток, уважаемые хабровчане. Некоторое время назад, я познакомился с библиотекой RivetsJS. Она мне пришлась по вкусу, хотя содержит в себе только инструменты для data-binding. Сразу хочу сказать, что даже не собираюсь спорить, для этих вещей есть замечательные AngularJS и др. фреймворки, но лично я не вижу смысла подключать такой мощный инструмент, как Angular, если мне требуется только малая толика его возможности. Поэтому, для этих целей, я выбрал именно RivetsJS. И вот, воодушевленный идеей перевести его документацию на русский, я пишу эту статью. Мотив простой — рассказать об этой библиотеке, и я не нашел ничего лучше, чем просто перевести её документацию, которая, возможно только на мой взгляд, написана на немного «ломаном» английском. Итак, поехали.

P.S. Сразу попрошу прощения, это мой первый перевод, возможно я не супер-пупер переводчик. Если вам что-то покажется нелепым или вы найдете ошибку — прошу сообщить об этом мне, я сразу же её исправлю. Заранее, спасибо.

Документация RivetsJS



Гайд



  • Установка
  • Использование
  • Биндинг
  • Форматеры
  • Компоненты
  • Адаптер
  • Свойства
  • Итерации биндинга


Справочник



  • text
  • html
  • show
  • hide
  • enabled
  • disabled
  • if
  • unless
  • value
  • checked
  • unchecked
  • on-[event]
  • each-[item]

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

Использование потенциальных полей в сценарии стратегии реального времени

Reading time8 min
Views42K
Реализация поведения юнитов в RTS играх может стать серьезной проблемой. Компьютер, зачастую, контролирует огромное количество юнитов, в том числе и принадлежащих игроку, которые должны передвигаться в большом динамическом мире, попутно избегая столкновения друг с другом, выискивая врагов, защищая собственные базы и координируя атаки для истребления противника. Стратегии реального времени работают в реальном времени, что делает довольно сложным слежение за планированием действий и навигацией.

Этот урок описывает метод планирования течения игры и навигации юнитов, который использует многоагентные потенциальные поля. Он основан на работах под номерами [1, 2, 3]. (Смотри в конце статьи ссылки на используемые материалы)



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

Пишем LINQ на JavaScript с нуля

Reading time5 min
Views11K

Зачем


Однажды при разработке компонента графика для веб-браузера мы столкнулись с проблемой обработки последовательностей на JavaScript.

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

Естественно, хотелось бы иметь аналогичные возможности и на JavaScript.

На данный момент существует немало реализаций LINQ для JavaScript, например, linq.js, $linq. Эти реализации предоставляют широкие возможности, сравнимые с реализацией на C#. Обратной стороной является немалый размер кода, из которого в конкретном приложении может использоваться лишь небольшая часть. Например, нам необходима лишь функция distinct, а мы вынуждены добавлять килобайты кода third-party библиотеки.

Опять же, любопытно разобраться, как же конкретная библиотека работает, а разбирать исходный код большой библиотеки зачастую утомительно. Или в нашем случае у нас уже есть своя библиотека для JavaScript и мы лишь хотим её компактно дополнить функционалом работы с последовательностями.
Читать дальше →

Знакомство с Nim: пишем консольную 2048

Reading time6 min
Views22K

Хочется чего-то нового, быстрого, компилируемого, но при этом приятного на ощупь? Добро пожаловать под кат, где мы опробуем язык программирования Nim на реализации очередного клона игры 2048. Никаких браузеров, только хардкор, только командная строка!

В программе:

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

Модули JavaScript

Reading time12 min
Views56K


Это третья публикация по материалам нашей внутренней конференции Sync.NET. Первая публикация была посвящена многопоточности в .NET, вторая — реактивным расширениям.

При разработке front-end части приложения на языке JavaScript, мы можем столкнуться с рядом традиционных проблем. Все они решаются при помощи модульных подходов. Ниже мы рассмотрим самые популярные подходы для описания модулей в JavaScript, которые существуют на сегодняшний день.
Читать дальше →

Тонкости ES6: Коллекции (часть 1)

Reading time4 min
Views34K
Ранее на этой неделе (статья от 19 июня — прим.) спецификация ES6, официально названная ECMA-262, 6th Edition, ECMAScript 2015 Language Specification, преодолела последний барьер и была утверждена как стандарт Ecma. Мои поздравления TC39 и всем остальным, кто помогал. ES6 закончен!

Даже лучше: больше не надо будет ждать следующего обновления 6 лет. Комитет собирается выпускать новую версию в срок около года. Предложения по ES7 уже примаются!

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

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

K-Meleon 75: дошли до финала

Reading time4 min
Views19K
Итак, свершилось: наш любимый браузер выпущен в финальном варианте 75-й версии.

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

Собственно, каким и должен быть релиз.

Полный список, новшеств, впрочем, выглядит одновременно и весьма внушительным, и относительно скромным.

И вот почему

Простой алгоритм для поиска всех совпадающих под-текстов в двух текстах

Reading time4 min
Views29K
По долгу службы мне часто нужно находить все пересечения между текстами (например, все цитаты из одного текста в другом). Я достаточно долго искал стандартное решение, которое бы позволило бы это делать, но найти его мне так и не удалось — обычно решается какая-то совсем или немного другая задача. Например, класс SequenceMatcher из difflib в стандартной библиотеке Питона находит самую длинную общую подпоследовательность в двух последовательностях hashable элементов, а потом рекурсивно повторяет поиск слева и справа от нее. Если в одном из текстов будет более короткая подпоследовательность, которая содержится внутри уже найденной (например, если кусок длинной цитаты где-то был повторен еще раз), он ее пропустит. Кроме того, когда я загнал в него «Войну и мир» и «Анну Каренину» в виде списков слов и попросил для начала найти самую длинную подпоследовательность, он задумался на семь минут; когда я попросил все совпадающие блоки, он ушел и не вернулся (в документации обещают среднее линейное время, но что-то в прозе Льва Толстого, по-видимому, вызывает к жизни worst-case квадратичное).

В конечном итоге я придумал свой алгоритм, тем самым наверняка изобретя велосипед, который надеюсь увидеть в комментариях. Алгоритм делает ровно то, что мне нужно: находит все совпадающие последовательности слов в двух текстах (за исключением тех, что в обоих текстах входят в состав более крупных совпадающих последовательностей) и сравнивает «Войну и мир» с «Анной Карениной» за минуту.

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

13 лучших роботов для детей

Reading time5 min
Views38K
image

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

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

Электроника для самых начинающих

Reading time6 min
Views71K
Стараюсь читать все статьи на Хабре по электронике для начинающих, DIY, Arduino. И вот только что прочитал статью «Ардуино. 6 шагов». Под впечатлением решил попробовать закинуть свои 5 копеек.

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

Редактирование пространственных данных в Leaflet

Reading time7 min
Views19K
Несмотря на развитие картографических веб-фреймворков, редактирование векторных географических данных всё ещё, по большей части, происходит в настольных приложениях, но пора бы уже переходить к редактированию в браузерах.

Для отрисовки веб-карт существует несколько открытых библиотек, например, OpenLayers и Leaflet. Довольно давно наш выбор пал на Leaflet и мы продолжаем его активно использовать при реализации проектов. Для редактирования геоданных хотелось бы использовать его же и, при этом, иметь возможность интегрироваться с существующими хранилищами пространственных данных.

Для достижения последней цели как правило используются ГИС-сервера (geoserver, mapserver), которые умеют публиковать большое количество разнообразных форматов данных по стандартам OGC. Так, WMS протокол прекрасно справляется с функцией визуализации готовой карты, но не предполагает функции редактирования, для которой резонно использовать WFS-протокол с возможностью изменения данных. Запросы к WMS возвращают уже отрисованные тайлы — картинки, а к WFS — сырую информацию, «исходный код» за этими тайлами. Leaflet поддерживает модули расширения, соответственно, можно поискать готовый компонент, либо написать свой. Т.к. поиск готовых модулей для Leaflet удовлетворяющих результатов не дал, мы приступили к собственной реализации.

По статистике запросов на leaflet.uservoice.com понятно, что данный модуль интересен не только нам.
Приступим к реализации

У семи программистов адрес без дома

Reading time4 min
Views98K
Привет, Хабр!

Мы в HumanFactorLabs парсим адреса в особо крупных размерах. Наши продукты упрощают ввод контактных данных и работу с ними.

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

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

Новые панели и соединения для Куботроника

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

Отдельно остановимся на попытке создать электронный конструктор для освоения азов электроники.

Вопрос вызвал формат: «полнофункциональный набор» или ещё «настольная игра». Сразу отметим, что эти вопросы были и у нас. Т.к. когда распечатана куча панелей, а выбрать окончательный вариант электрического соединения не удается, то, передвигая заготовки, получаем разные схемы, которые и подводят к мыслям о настольных играх, т.е. просто «тащат за руку»…


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

Жесть — основа схемотехники у вас дома

Reading time3 min
Views19K
Куботроник активно развивается. Кроме механических деталей он обзавелся дополнительными панелями, а также мы разработали возможность соединять блоки Куботроника в электрические цепи. Напечатали много всяких условных обозначений радиоэлементов и даже запланировали сделать игру «СХЕМОТЕХНИКА» по изучению основ этой самой схемотехники.



Для электронных кубиков, как это не парадоксально, кратность тоже важна и поэтому новый этап развития Куботроника был посвящен именно этой задаче.
Читать дальше →

Смотря на код с закрытыми глазами

Reading time6 min
Views123K
От переводчика

Эта статья — перевод блогозаписи Флориана Бейджерса, слепого программиста из Нидерландов.
Перевод любительский, поэтому прошу указывать на ошибки и критиковать.
Я не нашёл корректного перевода слова accessibility, поэтому перевёл его как «доступность». Если есть вариант получше — предложите, пожалуйста.
Антон Туманов предложил «адаптированность», за что ему большое спасибо.
Как заметил в комментарии pepelsbey, «доступность» является корректным переводом, вернул её обратно.
Почему я сделал перевод? Я наткнулся на опрос на Quora.com «Как программируют слабовидящие программисты?». Ответы людей меня впечатлили, а блогозапись Флориана показалась наилучшим вариантом для введения в этот важный вопрос.

Я — программист. А ещё я слеп. Слеп, как крот, как говорится. Таков я от рождения.

Когда я говорю об этом своим товарищам, то те из них, у кого никогда не было проблем со зрением, обычно задают один из трёх вопросов:

  • Как же ты тогда можешь читать то, что я пишу?
  • Ого. А как ты тогда можешь кодить?
  • Или — самый популярный вопрос — А ты видишь сны?

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

Идеальная среда разработки для PIC — личный опыт

Reading time11 min
Views68K
В связи с нововведениями на сайте, решил наконец-то вылезти из подполья и написать что-нибудь полезное. Ну а поскольку я программирую разные микроконтроллеры (МК) и являюсь фанатом Eclipse, то решил про это и написать. Начну со своей истории знакомства с программированием PIC, а закончу советами тем, кто по долгу службы или в силу увлечения программирует на МК семейства PIC, хотя, впрочем, эти же советы сгодятся и для других архитектур МК.

В среду железячников я попал в 2006 году на 4-м курсе учёбы в университете, когда пошёл на производственную практику в научно-технический центр, где, собственно, и работаю по сей день. В то время в нашей компании мейнстримом было использование Keil uVision2 для МК на базе C51 и ARM. Однако мне подсовывали простые задачи под PIC, вроде контроля и управления одним сигналом (кнопка вкл-выкл), и моей первой средой разработки были блокноты — бумажный и компьютерный, плюс книжки бумажные по PIC. Выглядела моя среда разработки примерно так:



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

DIY-комбайн для дома

Reading time4 min
Views18K

Рождение идеи


В наше новое время цифровой революции можно слышать, что автоматизация работы приводит к появлению новых творческих профессий. Роботы и умные станки помогают реализовать многие интересные творческие и технологические идеи. 3D-печать тесно вошла в нашу жизнь, всё проще становится осваивать технологическое оборудование. Но для различных производственных операций требуется целый парк станков, даже если это маленькая мастерская, одним тут не обойтись. Так родилась идея многофункционального DIY-комбайна, который может заменить собой несколько станков.

image
Подробности

Ингредиенты IoT деликатесов быстрого приготовления: Intel Edison + Intel XDK + JavaScript + Grove Kit

Reading time16 min
Views17K
Насколько быстро можно создать устройство для Интернета вещей (IoT), которое управляется через браузер, получает и передает информацию, учитывая, что вы никогда не работали с микроконтроллерами, а только занимались высокоуровневым программированием на JavaScript?



Например, такое устройство как на фото. У него есть ЖК-экран и стрелочный указатель на сервоприводе. Рядом лежит телефон с запущенным браузером, который подключен к вебсерверу на устройстве. При нажатии стрелок в браузере, указатель поворачивается вправо, влево или устанавливается в нейтральное положение. После установки значения, оно передается обратно в браузер и показывается как значение Value. Дополнительно в браузере можно задать текстовую строку, которая после нажатия кнопки «Set text» выводится на ЖК-экране. Всё взаимодействие происходит по Wi-Fi. Как вы думаете, сколько времени уйдёт на разработку?
Читать дальше →

Information

Rating
1,352-nd
Location
Москва, Москва и Московская обл., Россия
Registered
Activity