Обновить
128K+

JavaScript *

Прототипно-ориентированный язык программирования

254,74
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Pooling соединений к базе данных на node.js

Время на прочтение7 мин
Охват и читатели13K
В этой статье я опишу две абстракции-классы, написанные средствами nodejs, которые предоставляют функционал распределения запросов по открытым каналам (tcp-socket). При этом учитывается общая загруженность системы и, если каналов не хватает, открываются новые, по мере уменьшения общего количества запросов — «лишние» каналы закрываются.

Этот клиент можно использовать для распределения запросов по каналам, которые представляют собой по сути net.Socket. Для этого нужно внести изменения в метод по открытию и закрытию канала, добавлению запроса в канал.

В примере, который я опишу, используется библиотека pg, предоставляющая функционал по открытию сокетов к серверу с базой данных. При этом дефолтовое управление пулом коннектов, предоставляемое библиотекой, никак не используется.
Читать дальше →

Работа с COM портом в web-проекте

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

Пролог


Один из клиентов нашего web-проекта захотел использовать для поиска заказов в системе сканер штрихкодов. Но, к сожалению, полностью отказался от идеи работы с ними в режиме имитации клавиатуры — только эмуляция COM-порта.
Вариантов решения было не особенно много:
  • отдельное нативное приложение, которое бы отправляло запрос на наш сервер, а сервер бы отдавал команду в браузер
  • работа с COM портом непосредственно из браузера

К счастью, есть способ решения проблемы вторым путём.

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

GLPI и последние обновления временных зон в Windows

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

Несколько недель назад GLPI ни с того, ни с сего стал зависать на загрузке страницы заявки. Жалоба поступила от моих сослуживцев, когда я находился в отпуске. Открыв страницу в браузере я не обнаружил проблемы, о чем уведомил своих коллег.

К сведению — у меня Firefox на Linux, а у них Chrome на Windows.

Они настаивали на проблеме. И я специально установил на свой нетбук зоопарк браузеров: Chrome, Opera (Blink, Presto). Проверил работу с GLPI в них — проблемы не обнаружил. Когда вышел на работу, проверил на рабочем компьютере под Windows и с удивлением обнаружил, что кроме Firefox, ни один из выше перечисленных браузеров не грузит страницу задачи. По совету одного из знакомых php программистов полез в код страницы и выяснил, что загрузка спотыкается о javascript устанавливающих дату создания заявки и дату выполнения. Памятуя о последних обновлениях Windows, связанных с изменениями часового пояса во Владивостоке, из-за которых у меня время раньше положенного срока перескочило на час назад, я попробовал поменять часовой пояс с Владивосток на Брисбен — проблема пропала.
Читать дальше →

Как я завел дружбу с асинхронностью в JavaScript

Время на прочтение12 мин
Охват и читатели44K
JavaScript встречает разработчиков асинхронностью можно сказать чуть ли не с порога. Начинается все с DOM-событий, ajax, таймерами и библиотечными методами, связанными с анимацией (например jQuery-методы fadeIn/fadeOut, slideUp/slideDown). В целом, это все не очень сложно и разобраться с асинхронностью на этом этапе не представляет проблем. Однако, как только мы переходим к написанию более или менее сложных приложений, в которых комбинируется все вышеуказанное, асинхронный поток может сильно затруднить понимание происходящего в коде. Цепочки асинхронных действий, например, анимация > ajax-запрос > инициализация -> анимация, создают достаточно сложную архитектуру, которая не подчиняется строгому направлению «снизу верх». В этой статье я намерен рассказать про свой опыт преодоления трудностей связанных с асинхронным JS.
Читать дальше →

Выразительный JavaScript: Функции высшего порядка

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

Содержание




Цу-ли и Цу-су похвалялись размерами своих новых программ. «Двести тысяч строк»,- сказал Цу-ли,- «не считая комментариев!» Цу-су ответил: «Пф-ф, моя – почти миллион строк». Мастер Юнь-Ма сказал: «Моя лучшая программа занимает пятьсот строк». Услышав это, Цу-ли и Цу-су испытали просветление.

Мастер Юнь-Ма, Книга программирования

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

Энтони Хоар, 1980 лекция на вручении премии Тьюринга


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

Перевод книги «The Little Book on CoffeeScript»

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

Приветствую, хабраюзер!
Недавно я решил изучить CoffeeScript. В поисках книги по этому языку я наткнулся на The Little Book on CoffeeScript. Однако, эта книга на английском — и я подумал, почему бы не перевести её на русский? Небольшая часть перевода уже завершена, и я был бы рад, если бы сообщество поддержало инициативу и помогло с переводом (сам я не настолько эксперт в JS, поэтому перевод местами кривоват, это надо корректировать).

За процессом перевода можно следить здесь. Ниже прикладываю перевод первой главы.
Читать дальше →

BlackHole.js с привязкой к картам leaflet.js

Время на прочтение12 мин
Охват и читатели24K
Приветствую вас, сообщество!

Хочу предложить вашему вниманию, все таки доведенную до определенной точки, свою библиотеку для визуализации данных blackHole.js использующую d3.js.
Данная библиотека позволяет создавать визуализации подобного плана:
картинки кликабельные
image или

Статья будет посвящена примеру использования blackHole.js совместно с leaflet.js и ей подобными типа mapbox.
Но так же будут рассмотрено использование: google maps, leaflet.heat.

Получится вот так =)

Поведение точки зависит от того где я находился по мнению google в определенный момент времени

Посмотрите, а как перемещались вы?...
Детали...

Мобильные приложения для веб-разработчиков

Время на прочтение6 мин
Охват и читатели24K
Путь разработчика мобильного приложения часто начинается с выбора: разрабатывать под iOS, Android или Windows? Этот выбор мгновенно уменьшает размер вашей потенциальной аудитории, но разработчики вынуждены принимать подобные решения. Те, кто хочет присутствовать по всех трех магазинах приложений, приходят к необходимости переписывать приложение под каждую платформу.



Visual Studio позволяет поддерживать максимальный охват пользователей, достигая при этом значительного повторного использования кода. С помощью Xamarin C#-разработчики могут поддерживать общую бизнес-логику между iOS, Android и Windows-приложениями. С помощью Apache Cordova веб-разработчики могут достичь максимального повторного использования кода, создавая кросс-платформенные приложения на HTML, CSS и JavaScript.

В этой статьей мы посмотрим в деталях, как вы можете использовать расширение “Multi-Device Hybrid Apps” для Visual Studio, для второго сценария – создания кросс-платформенных приложений с использованием веб-стандартов. Чтобы следовать за статьей:

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

Распознавание жестов в sketchometry

Время на прочтение1 мин
Охват и читатели4K
Эта заметка — приложение к статье «sketchometry — динамическая геометрия в браузере». Там меня попросили поподробнее написать о методе распознавания жестов, использованном в sketchometry.
Читать дальше →

Несколько интересностей и полезностей для веб-разработчика #31

Время на прочтение4 мин
Охват и читатели46K
Доброго времени суток, уважаемые хабравчане. За последнее время я увидел несколько интересных и полезных инструментов/библиотек/событий, которыми хочу поделиться с Хабром.

Исходники Reddit


Gravit


image

Замечательный графический редактор с открытым исходным кодом. Есть приложения под Mac, Linux, Windows, а также браузерная версия. В Gravit на данный момент реализован базовый функционал: слои, шейпы, пентул и множество различных функций для манипуляций с объектами. Но данный проект по большему счету ориентирован именно на веб-дизайн. Правильнее всего сказать, что Gravit — это смесь графического редактора в типичном представлении с визуальным редактором для разработки сайтов. Именно эта идея и ее реализация в формате open source делает продукт уникальным.
Читать дальше →

Эквалайзер на JavaScript

Время на прочтение5 мин
Охват и читатели60K
На хабре уже было несколько статей по Web Audio API: создание визуализатора, вокодера и пианино в 30 24 строки. Поиск же по всея интернетам по запросу эквалайзер упорно выдавал туториалы по созданию спектрограмм. (Если заголовок этой статьи сбил вас с толку или вы таки купились на картинку:) и ожидали именно визуализации аудио — вам сюда или вот сюда). Но именно просто эквалайзера я так и не встретил (хотя уверен, что где-то он таки есть). Возможно, это настолько простая задача, что об этом и писать не стоит. Но, в таком случае, почему бы не сделать её ещё проще?


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

Разбор Underscore

Время на прочтение10 мин
Охват и читатели34K
В этом посте любитель javascript, вооружившись бензопилой, безжалостно распиливает одну из лучших, на его взгляд, универсальных библиотек.



Препарируем вот этот исходник с точки зрения ученика 5-го «Б» Васи Пупкина, прочитавшего книжку по основам javascript, и страстно желающего получше запутаться в полученных знаниях.
Слабонервным не смотреть!

Выразительный JavaScript: Структуры данных: объекты и массивы

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

Содержание




Два раза меня спрашивали: «Скажите, м-р Бэббидж, а если вы введёте в машину неправильные данные, получится ли правильный ответ?». Непостижима та путаница в головах, которая приводит к таким вопросам.

Чарльз Бэббидж, «Отрывки из жизни философа» (1864)


Числа, булевские значения и строки – кирпичики, из которых строятся структуры данных. Но нельзя сделать дом из одного кирпича. Объекты позволяют нам группировать значения (в том числе и другие объекты) вместе – и строить более сложные структуры.

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

Глава пройдётся по более-менее реалистичному примеру программирования, вводя понятия по мере необходимости. Код примеров будет строиться из функций и переменных, которые мы определяли ранее.
Читать дальше →

Ближайшие события

Duo.js — новое поколение пакетного менеджера для фронтэнда

Время на прочтение4 мин
Охват и читатели17K
Duo — это новое поколение пакетного менеджера, который совмещает в себе лучшие идеи Component, Browserify и Go. Он предназначен для быстрого и безболезненного написания фронтового кода.


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

СМС-термометр из связки Google script, Google Doc, Wolfram-Alpha и Sms.ru

Время на прочтение6 мин
Охват и читатели6.5K
Всем привет!
Захотел сделать так, чтобы на мой простенький телефон по утрам приходили оповещения о текущей погоде (разумеется, бесплатно). Потому, что нет обычного термометра, из-за этого насколько тепло нужно одеваться, понятно не всегда.
Кому интересно, как я это реализовал – добро пожаловать под кат.
Читать дальше →

Последовательное выполнение задач в Gulp JS

Время на прочтение2 мин
Охват и читатели20K
Gulp JS — это сборщик проектов и таск-менеджер для фронтенд и веб-разработки, который является достойной альтернативой для популярного Grunt JS. Одной из нескольких вещей, которыми Gulp отличается от Grunt является то, что по умолчанию все задачи запускаются асинхронно. В целом, можно сказать, что все задачи выполняются одновременно.

Недавно, изучая Gulp, я столкнулся с необходимостью синхронного запуска нескольких задач… синхронного. В документации к Gulp упоминается данная проблема, но мне пришлось немного повозиться перед тем, как я с этим разобрался.
Читать дальше →

sketchometry — динамическая геометрия в браузере

Время на прочтение5 мин
Охват и читатели17K
sketchometry — это интерактивная динамическая геометрия, веб приложение, разработанное на базе библиотеки JSXGraph. Эта статья является учебным пособием по её использованию.
Текст и много картинок

Новый курс от Школы разработки интерфейсов. В Екатеринбурге и везде

Время на прочтение6 мин
Охват и читатели46K
Меня зовут Денис Чистяков, и я руковожу группой разработки интерфейсов в Екатеринбурге. Мы занимаемся фронтендом: делаем множество сложных, ярких и красивых страниц для приложений Яндекса.

Два года назад мы запустили свою Школу разработки интерфейсов, в рамках которой пытаемся в максимально сжатый срок превратить веб-разработчиков в крутых веб-разработчиков, готовых к специфике нашей компании, нашей инфраструктуре и нашим технологиям. Этот год тоже не стал исключением. В 2014 году ШРИ пройдет в Екатеринбурге и Минске.

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

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



Мы понимаем, что часто желающие поучиться у нас выкраивают время между учебой, работой и семьей. А мы не обычная школа и не вуз, где нужно обязательное присутствие на уроках и парах. У нас есть уверенность, что те люди, которые попадают в ШРИ, обладают здоровым азартом, ответственны и понимают то, для чего они начали путь обучения. (Да-да, мы знаем, что вы крутые :)

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

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

Все видео лекций курса плюс подробности об очном обучении

Объекты в JavaScript и создание JS-компонента. Часть 1

Время на прочтение8 мин
Охват и читатели24K
Эта статья — первая часть туториала об ООП в JavaScript и о создании простого JS-компонента.

Об объектах и JavaScript


Думайте об объекте, как о совокупности каких-то вещей. Например, представьте, что у вас есть велосипед. Этот велосипед является объектом, и он имеет совокупность каких-то признаков / частей / etc, называющихся свойствами объекта. Примером такого свойства может служить модель велосипеда, год его производства, его детали. Детали также могут иметь собственный набор свойств.
Читать дальше →

5 популярных JavaScript-хаков

Время на прочтение4 мин
Охват и читатели67K
Существует несколько JavaScript-хаков, которыми постоянно пользуются опытные программисты. Они не совсем очевидны, особенно для новичков. Эти хаки используют возможности языка, имеющие некоторые побочные эффекты. В этой статье я объясню, как работают 5 таких распространённых хаков.
Читать дальше →