Как стать автором
Обновить
0
0
Ингвар @zanooda

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

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

Как мы сделали малогабаритный облачный видеорегистратор из обычной IP камеры

Время на прочтение 8 мин
Количество просмотров 64K


Тема видеонаблюдения встала для меня остро с появлением загородного жилья. На просторах интернета можно найти кучу информации по организации видеонаблюдения. К сожалению большинство вариантов сводилось к покупке готовых комплектов из Китая. От знакомых слышал много критики на этот счёт. Как-то даже сам поучаствовал в настройке оборудования, купленного с Aliexpress. Где-то половина заявленных функций работала не так как заявлено, некоторые опции и вовсе не получилось настроить, хотя регистратор был не из дешёвых. И таких отзывов и мнений было много. Также многие критически относятся к тому, что видеозаписи хранятся на китайских облачных сервисах. И тогда появилась мысль — а что если попробовать сделать свой видеорегистратор с минимальным функционалом? А что? На тот момент я начал плотно увлекаться linux, писал приложения с элементарным функционалом на bash, экспериментировал с web… В принципе всё что нужно для решения поставленной задачи. Сказано — сделано.
Читать дальше →
Всего голосов 35: ↑35 и ↓0 +35
Комментарии 122

Как работает JS: обзор движка, механизмов времени выполнения, стека вызовов

Время на прочтение 6 мин
Количество просмотров 203K
Популярность JavaScript растёт, его возможности используют на разных уровнях применяемых разработчиками стеков технологий и на множестве платформ. На JS делают фронтенд и бэкенд, пишут гибридные и встраиваемые приложения, а также многое другое.

Анализ статистики GitHub показывает, что по показателям активных репозиториев и push-запросов, JavaScript находится на первом месте, да и в других категориях он показывает довольно высокие позиции.


Статистические сведения по JavaScript с GitHub

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

Если множество проектов плотно завязаны на JavaScript, значит, разработчикам необходимо как можно более эффективно использовать всё, что даёт им язык и его экосистема, стремясь, на пути разработки замечательных программ, к глубокому пониманию внутренних механизмов языка.

Как ни странно, существует множество разработчиков, которые регулярно пишут на JavaScript, но не знают, что происходит в его недрах. Пришло время это исправить: этот материал посвящён обзору JS-движка на примере V8, механизмов времени выполнения, и стека вызовов.
Читать дальше →
Всего голосов 41: ↑33 и ↓8 +25
Комментарии 29

Интеллектуальная обработка текстов

Время на прочтение 9 мин
Количество просмотров 13K
Работы, связанные с естественным языком, — это одна из ключевых задач для создания искусственного интеллекта. Их сложность долгое время сильно недооценивали. Одной из причин для раннего оптимизма в области естественного языка были пионерские работы Ноама Хомского о порождающих грамматиках. В своей книге «Синтаксические структуры» и других работах Хомский предложил идею, которая сейчас кажется совершенно обычной, но тогда произвела революцию: он преобразовал предложение на естественном языке в дерево, которое показывает, в каких отношениях находятся разные слова в предложении.
image

Пример дерева синтаксического разбора показан на рисунке выше (а — синтаксический анализ на основе структуры непосредственных составляющих; б — на основе грамматики зависимостей). Порождающая грамматика — это набор правил вида S → NP V P или V P → V NP, которыми можно порождать такие деревья. На деревьях синтаксического разбора можно строить довольно строгие конструкции, пытаться определять, например, логику естественного языка, с настоящими аксиомами и правилами вывода.
Читать дальше →
Всего голосов 17: ↑16 и ↓1 +15
Комментарии 12

Реверс-инжиниринг одной строчки JavaScript

Время на прочтение 10 мин
Количество просмотров 47K
Несколько месяцев назад я получил от друга такое письмо:



Тема: Можешь объяснить мне эту одну строчку кода?

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

<pre id=p><script>n=setInterval("for(n+=7,i=k,P='p.\\n';i-=1/k;P+=P[i%2?(i%2*j-j+n/k^j)&1:2])j=k/i;p.innerHTML=P",k=64)</script>



Эта строчка JavaScript отрисует анимацию, которая показана на изображении под катом. В браузере она запускается здесь. Скрипт написан автором www.p01.org, где вы можете найти эту и много других классных демок.
Всего голосов 136: ↑134 и ↓2 +132
Комментарии 33

Создание вашей первой игры на Phaser. Часть 2 — Загрузка ресурсов

Время на прочтение 5 мин
Количество просмотров 9.6K

Phaser


Оглавление


0. Подготовка к работе
1. Введение
2. Загрузка ресурсов [Вы тут]
3. Создание игрового мира
4. (wip) Группы
5. (wip) Мир физики
6. (wip) Управление
7. (wip) Добавление целей
8. (wip) Последние штрихи


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


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


Полный код, написанный в этой статье, вы найдете в Github репозитории с тегом part-2.


Приступим!

Читать дальше →
Всего голосов 17: ↑17 и ↓0 +17
Комментарии 3

Создание вашей первой игры на Phaser. Часть 1 — Введение

Время на прочтение 3 мин
Количество просмотров 19K

Phaser


Оглавление


0. Подготовка к работе
1. Введение [Вы тут]
2. Загрузка ресурсов
3. Создание игрового мира
4. (wip) Группы
5. (wip) Мир физики
6. (wip) Управление
7. (wip) Добавление целей
8. (wip) Последние штрихи


Добро пожаловать в наш первый урок по созданию игр на Phaser. Здесь я расскажу вам, как создать небольшую игру — платформер, которая познакомит вас с основными функциями данного фремворка и работу с ним в нынешних реалиях (ES6 / TypeScript + WebPack).


Что такое Phaser?


Phaser — это HTML5 (JavaScript / TypeScript) игровой фреймворк, который призван помочь разработчикам создавать крутые, кросс-браузерные HTML5 игры в короткие сроки и, в отличии от других фреймворков, phaser изначально затачивался под мобильные устройства. Единственное требование выдвигаемое данным фреймворком — поддержка тега <canvas />. Он также много чего унаследовал от Flixel.

Читать дальше →
Всего голосов 22: ↑16 и ↓6 +10
Комментарии 2

Создание вашей первой игры на Phaser. Часть 0 — Подготовка к работе

Время на прочтение 7 мин
Количество просмотров 22K

Phaser


Оглавление


0. Подготовка к работе [Вы тут]
1. Введение
2. Загрузка ресурсов
3. Создание игрового мира
4. (wip) Группы
5. (wip) Мир физики
6. (wip) Управление
7. (wip) Добавление целей
8. (wip) Последние штрихи


Эта серия статей научит вас основам и "хорошему тону" игрового фремворка Phaser. За данный курс, я постараюсь объяснить вам основные идеи и возможности фреймворка, а также покажу как его грамотно использовать в связке с TypeScript и Webpack.

Читать дальше →
Всего голосов 24: ↑19 и ↓5 +14
Комментарии 8

Новинки JavaScript: Асинхронные итераторы

Время на прочтение 5 мин
Количество просмотров 22K

В этом небольшом посте я хочу рассказать об одном интересном предложении (англ. proposal) в стандарт EcmaScript. Речь пойдёт об асинхронных итераторах, о том, что это такое, как ими пользоваться и зачем они вообще нужны простому разработчику.


Асинхронные итераторы, это расширение возможностей обычных итераторов, которые с помощью цикла for-of/for-await-of позволяют пробежать по всем элементам коллекции.

Читать дальше →
Всего голосов 30: ↑28 и ↓2 +26
Комментарии 22

Удачная модель ветвления для Git

Время на прочтение 10 мин
Количество просмотров 977K
Перевод статьи Vincent Driessen: A successful Git branching model

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



В качестве инструмента управления версиями всего исходного кода она использует Git.

Читать дальше →
Всего голосов 180: ↑171 и ↓9 +162
Комментарии 105

Эволюция модульного JavaScript

Время на прочтение 20 мин
Количество просмотров 42K


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

Не будем лукавить: JavaScript никогда не был идеальным языком программирования. Одним из слабых мест в JS была модульность, а точнее её отсутствие. Действительно, зачем в скриптовом языке, который анимирует падающие на странице снежинки и валидирует форму, заботиться об изоляции кода и зависимостях? Ведь всё может прекрасно жить и общаться между собой в одной глобальной области — window.

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

Эта статья появилась в результате общения с участниками TC39 и разработчиками фреймворков, а также чтения исходных кодов, блогов и книг. Мы рассмотрим следующие подходы/форматы: Namespace, Module, Detached Dependency Definitions, Sandbox, Dependency Injection, CommonJS, AMD, UMD, Labeled Modules, YModules и ES2015 Modules. Кроме того, мы восстановим исторический контекст их появления и развития.
Читать дальше →
Всего голосов 71: ↑68 и ↓3 +65
Комментарии 34

RESTful API на Node.js + MongoDB

Время на прочтение 16 мин
Количество просмотров 257K
Я, будучи разработчиком мобильных приложений, часто нуждаюсь в backend-сервисах для хранения пользовательских данных, авторизации и прочего. Конечно, для подобных задач можно использовать BaaS (Parse, Backendless, etc…). Но свое решение — это всегда более удобно и практично.

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

В данной статье будет рассмотрено построение REST API для мобильного приложения на Node.js с использованием фреймворка Express.js и модуля Mongoose.js для работы с MongoDB. Для контроля доступа прибегнем к технологии OAuth 2.0 с помощью модулей OAuth2orize и Passport.js.

Пишу с позиции абсолютного новичка. Рад любым отзывам и поправкам по коду и логике!

Содержание

  1. Node.js + Express.js, простой web-сервер
  2. Error handling
  3. RESTful API endpoints, CRUD
  4. MongoDB & Mongoose.js
  5. Access control — OAuth 2.0, Passport.js

Читать дальше →
Всего голосов 44: ↑41 и ↓3 +38
Комментарии 63

Async/await это шаг назад для JavaScript'a?

Время на прочтение 5 мин
Количество просмотров 44K


В конце 2015 года я услышал об этой паре ключевых слов, которые ворвались в мир JavaScript, чтобы спасти нас от promise chain hell, который, в свою очередь, должен был спасти нас от callback hell. Давайте посмотрим несколько примеров, чтобы понять, как мы дошли до async/await.
Читать дальше →
Всего голосов 70: ↑46 и ↓24 +22
Комментарии 115

19 неожиданных находок в документации Node.js

Время на прочтение 11 мин
Количество просмотров 45K
Мне хотелось бы думать, что я вполне прилично знаю Node. Вот уже три года, как ни один из сайтов, над которыми я работал, не обходится без него. Но документацию до сих пор я как следует не читал.

Мне нравится записывать полезные вещи об интерфейсах, свойствах, методах, функциях, типах данных, и обо всём прочем, что относится к веб-разработке. Так я заполняю пробелы в знаниях. Сейчас я занят документацией к Node.js, а до этого проработал материалы по HTML, DOM, по Web API, CSS, SVG и EcmaScript.

image

Чтение документации Node.js открыло мне немало замечательных вещей, о которых я раньше не знал. Ими я хочу поделиться в этом небольшом материале. Начну с самого интересного. Так же я обычно делаю, когда показываю новому знакомому свои гаджеты.
Читать дальше →
Всего голосов 82: ↑75 и ↓7 +68
Комментарии 72

666

Время на прочтение 1 мин
Количество просмотров 570
Прерываю эфир Хабра, чтобы сообщить новость.

Только что, а точнее в 18:37:16 МСК, в копилку магазина Smart Masses свалился заказ с уникальным номером #666. Человек заказал 10 (!) Зомби светящихся в темноте. Вообще, стек заказов магазина скрыт от пользователей, и человек никак не мог знать, что делает заказ с таким знаковым номером. Зомбей у нас заказывают довольно редко, и в основном по одному. Что наталкивает нас на мысль о том, что действиями человека руководила некая невидимая сила. Это позволяет надеяться, что Он среди нас.

Поздравляем Андрея Шацкого! В знак особого уважения и благодарности, решено принести ему еще некоторые дары помимо заказанных зомбей. Пусть услаждают Его взгляд.

P.S.: и да, СОТОНА С НАМИ!
Всего голосов 174: ↑84 и ↓90 -6
Комментарии 38

Стены города. Может флешмоб?

Время на прочтение 1 мин
Количество просмотров 546
Прогулялся я тут по родному городу, посмотрел на стены. Очень много наскального творчество, ну и как обычно оригинальностью не пахнет.

В общем я предлогаю устроить флешмоб и оставить свои варианты:
1. ряд Фибоначчи
2. число Пи до 15 знака
3. тригонометрические теоремы
и т.д.

Писать естественно мелом, что б первый же дождь вернул права обычным «Коля кАзел» и прочим *уям.

Не ожиданно для меня идеей заинтересовались.
Так что, в качестве даты предлогаю 20 число сего месяца.
Сам я по техническим причинам, координатором быть не смогу. Так что если хотите милости просим.
PS: Площадка для размещения фото-отчета есть
Читать дальше →
Всего голосов 91: ↑80 и ↓11 +69
Комментарии 84

Роллеры отдыхают…

Время на прочтение 1 мин
Количество просмотров 882
Французский студент-дизайнер, Jean-Yves Blondeau, создал весьма необычный костюм, в котором он может разъезжать где угодно, буквально в какой угодно позе.

Костюм оборудован 31 роликовым колесиком, а также специальными щитками… еще бы так кататься и без защиты. На видео (под катом) изобретатель демострирует возможности своего роллер-сьюта в полной мере.
Читать дальше →
Всего голосов 74: ↑56 и ↓18 +38
Комментарии 63

На Ричарда Столлмана напали ниндзя :)

Время на прочтение 1 мин
Количество просмотров 978
Наверняка многие видели xkcd/225. Для тех, кто не знает английского (извините за перевод на коленке, просто уже спать надо, в xkcd_ru пойдет лучше:):
Потом оденемся как громилы от нефтяных магнатов и ворвемся к Ральфу Нейдеру.
18-го октября прошло заседание Политического Сообщества Йеля, посвященное признанию идеи DRM незаконной. Столлман был приглашен на него в качестве выступающего «без галстука». Но прежде чем он смог подняться на сцену (босиком, кстати) его путь преградил отряд ниндзя!
Пара фотографий и еще немного информации
Всего голосов 39: ↑36 и ↓3 +33
Комментарии 28

Эксперименты с Мамбой. Часть 1

Время на прочтение 4 мин
Количество просмотров 25K
Давным-давно (года 2 назад) судьба меня закинула на Мамбу. Совсем не в поисках второй половинки, скорее это было задание по работе. Задание было быстро выполнено, но с мамбы я после этого не ушел. Проект стал мне интересен именно как бизнес, пусть и чужой. И все это время я занимался лишь тем что ставил там эксперименты. Ни ради какой то выгоды, а скорее ради интереса. Сегодня своими наблюдениями я хотел бы поделиться с вами. Писать буду частями, в которых расскажу:
Читать дальше →
Всего голосов 209: ↑185 и ↓24 +161
Комментарии 207

Интегрируем google maps

Время на прочтение 2 мин
Количество просмотров 2.7K
Google maps — отличное средство для картографии и сейчас мы будем интегрировать его себе на сайт благодаря открытому API. Интегрировать будем не только фиксированное положение но и произвольное, а именно — создадим в базе данных таблицу «locations», впишем там поля title, x, y.

Теперь нам надо редактировать каждое местоположение. Создадим полотно, где будет отображаться карта.
<div id="map" style="width: 250px; height: 250px"> </div>

Дальше — прикрутим вызов библиотеки из google. Поскольку я использую smarty, то я передаю ключ разработчика в виде переменной.
<script src="http://maps.google.com/maps?file=api&v=2&key={$google_maps_hash}" type="text/javascript"></script>


Теперь сделаем функцию, которая будет заниматься всей гразной работой — создавать карту в нашем div элементе, позиционировать согласно заданным координатам, устанавливать bubble. В случае если мы редактируем эти координаты, то функция будет по обратной связи прописывать в скрытые input-поля некоей формы «registration_form» новые координаты перенесённого pin-указателя.
<script type="text/javascript">
function load_map(x,y,title) {

if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById("map"));
map.setCenter(new GLatLng(x, y), 13);
map.enableScrollWheelZoom();

point = new GLatLng(x, y);
marker = new GMarker(point);

map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
map.addOverlay(marker);
marker.openInfoWindowHtml(title);
/*
var mgr = new GMarkerManager(map);

GEvent.addListener(marker, "dragend", function() {
//var center = map.getCenter();
var strCenter=marker.getPoint();
marker.openInfoWindowHtml(document.forms['registration_form'].title.value);
document.forms['registration_form'].geo_x.value=strCenter.lat();//arrCenter[0];
document.forms['registration_form'].geo_y.value=strCenter.lng();//arrCenter[1];

});
*/
}
}
</script>
Всего голосов 19: ↑19 и ↓0 +19
Комментарии 30

Обзор дизайн-студий: Сэм Хект

Время на прочтение 5 мин
Количество просмотров 2.1K
Тезисы:
• Недавно узнал про слово makoto, что с японского значит «подлинная природа вещей». Теперь я знаю, как это называется одним словом.
• Я не шибко люблю итальянский дизайн. Он насыщен, переполнен тем, что я называю Авторство.
= мне нравится, когда в вещи мало Автора, а больше выявлена суть вещи, природа материала и функции.

Есть очень немного людей, кто обладает умением проявить природу вещи, «макото». Одним из таких является Сэм Хект (Sam Hecht).



Знакомьтесь, Сэм Хект
Всего голосов 50: ↑45 и ↓5 +40
Комментарии 59
1

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность