Как стать автором
Обновить
9
0
Александр Дроздов @bagzon

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

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

Создаем приложение на JavaScript с помощью React Native

Время на прочтение 27 мин
Количество просмотров 154K
В этом уроке мы будем изучать React Native – фреймворк от компании Facebook для создания нативных приложений под iOS и Android. У него много общего с другим очень популярным фреймворком от Facebook – React Javascript, который предназначен для построения декларативных пользовательских интерфейсов.


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

У нас проблемы с промисами

Время на прочтение 16 мин
Количество просмотров 234K
Разрешите представить вам перевод статьи Нолана Лоусона «У нас проблемы с промисами», одной из лучших по теме из тех, что мне доводилось читать.

У нас проблемы с промисами


Дорогие JavaScript разработчики, настал момент признать это — у нас проблемы с промисами.

Нет, не с самими промисами. Их реализация по спецификации A+ превосходна. Основная проблема, которая сама предстала передо мной за годы наблюдений за тем, как многие программисты борются с богатыми на промисы API, заключается в следующем:

— Многие из нас используют промисы без действительного их понимания.

Если вы мне не верите, решите такую задачку:

Вопрос: В чем разница между этими четырьмя вариантами использования промисов?

doSomething().then(function () {
  return doSomethingElse();
});

doSomething().then(function () {
  doSomethingElse();
});

doSomething().then(doSomethingElse());

doSomething().then(doSomethingElse);

Узнайте решение задачи
Всего голосов 139: ↑136 и ↓3 +133
Комментарии 121

Интегрируем оплату через Paypal в web-приложение

Время на прочтение 21 мин
Количество просмотров 74K
В данной статье рассмотрена интеграция разовых платежей, а также оплаты по подписке с помощью Paypal в веб-приложение. Примеры реализованы на PHP, но, в принципе, без особых проблем то же самое можно сделать с помощью других технологий. Данный метод выбран как компромисс между простотой и гибкостью. Это попытка написать руководство, которое поможет быстро разобраться в теме и интегрировать оплату через Paypal в свой проект.

Статья ориентирована в основном на тех, кто раньше с этой системой не работал. Знатоки Paypal вряд ли найдут здесь для себя что-то новое. Но, возможно, они укажут на недостатки данного метода или посоветуют, как можно было бы по-другому это реализовать.
Читать дальше →
Всего голосов 24: ↑22 и ↓2 +20
Комментарии 29

Wkhtmltopdf + Node.JS

Время на прочтение 3 мин
Количество просмотров 11K
Создание pdf документов является довольно распространенной задачей. С ней успешно справляется целое семейство библиотек, позволяющих буквально «собрать» pdf по частям или же заполнить его на основе заранее приготовленного шаблона. Данный подход надежен, т.к. мы можен расчитывать на то, что, поменяв текст одной надписи, не исчезнет пагинация на некоторых страницах. С другой стороны добавление новых страниц к pdf занимает определенное время у разработчика и, чем больше различных визуальных элементов, тем больше времени на это уходит.

Однако, есть и другой путь создания pdf документов: конвертирование из некоторого языка разметки с помощью соотвествующего инструмента. Данный способ будет эффективным и займет меньше времени на внесение изменений в pdf, если выбранный инструмент работает достаточно предсказуемо. Существует несколько подобных решений, но на нашем проекте мы остановили свой выбор на Wkhtmltopdf, которое генерирует pdf документ из HTML. Спустя год использования данного инструмента могу сказать, что выбор был сделан правильный, т.к. все потребности были покрыты с головой.

В данной статье я хочу поделиться библиотеками, позволяющими упростить работу c wkhtmltopdf в Node.JS.
Читать дальше →
Всего голосов 11: ↑10 и ↓1 +9
Комментарии 1

Как исправить ошибку в Node.js и нечаянно поднять производительность в 2 раза

Время на прочтение 8 мин
Количество просмотров 44K
Началось все с того, что я оптимизировал отдачу ошибки HTTP 408 Request Timeout в сервере приложений Impress, работающем на Node.js. Как известно, у нодовского http.Server есть событие timeout, которое должно вызываться для каждого открытого сокета, если тот не закрылся за указанное время. Хочу уточнить, что не для каждого запроса т.е. не для каждого события request, функция которого имеет два аргумента (req, res), а именно для каждого сокета. Через один сокет может последовательно поступить много запросов в режиме keep-alive. Если мы задаем это событие, через server.setTimeout(2 * 60 * 1000, function(socket) {...}) то должны сами уничтожать сокет socket.destroy(). Но если не установить свой обработчик, то http.Server имеет встроенный, который уничтожит сокет через 2 минуты автоматически. На этом самом таймауте можно отдать ошибку 408 и считать инцидент исчерпанным. Если бы не одно но… С удивлением я обнаружил, что событие timeout вызывается и для тех сокетов, которые подвисли и для уже получивших ответ и для закрытых клиентской стороной, вообще для всех, находящихся в режиме keep-alive. Это странное поведение оказалось достаточно сложным, и я расскажу об этом ниже. Можно было бы вставить одну проверку в событие timeout, но со своим идеализмом я не удержался и полез исправлять баг на уровень глубже. Оказалось, что в http.Server режим keep-alive реализован не то что не по RFC, а откровенно не дописан. Вместо отдельного timeout для соединения и отдельного keep-alive timeout, там все на одном таймауте, который реализован на быстрых псевдо-таймерах (enroll/unenroll), но задан по умолчанию в 2 минуты. Это было бы не так страшно, если бы браузеры хорошо работали с keep-alive и переиспользовали его эффективно или закрывали бы неиспользуемые соединения.
Читать дальше →
Всего голосов 98: ↑97 и ↓1 +96
Комментарии 36

Работа с формами в Webix UI

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


Создание форм с помощью чистого HTML задача довольно тривиальная и подробно обсуждается в каждом уважающем себя учебнике. Но все становится куда сложнее, если вам нужно, например, разнести элементы формы по нескольким табам. В этом случае без фреймворка не обойтись. В этой статье я расскажу, как можно создать сложные веб-формы с помощью UI-фреймворка Webix.

Читать дальше →
Всего голосов 10: ↑9 и ↓1 +8
Комментарии 13

Туториал: компонент интерактивной SVG картограммы для InstantCMS 2

Время на прочтение 9 мин
Количество просмотров 5.4K
Сложность: средняя.
Необходимое время: 30 мин.
В статье представлена инструкция по созданию своего компонента для движка InstantCMS2. В конце статьи приведена ссылка на архив с исходным кодом и содержимым всех файлов из этой инструкции. Пример внешнего вида компонента, который можно создать, используя данный туториал, представлен на иллюстрации (картинка кликабельна).

Наглядное представление реального уровня зарплат в Российской Федерации

Для начала несколько слов про движок соц.сети / сообщества / блогосоциальной сети InstantCMS2. Эта бесплатная CMS может являться отличным компромиссом, возможно, лучшим из существующих.
В базовой версии уже заложен более богатый функционал по сравнению с LiveStreet CMS.
Читать дальше →
Всего голосов 10: ↑7 и ↓3 +4
Комментарии 0

Гроза, молния и средства защиты электросети своими силами

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

Исходные данные: дом, 3 фазы (15 кВт на дом), заземление штырем в 3 м длиной, автономная электросистема на базе солнечных батарей



Читать дальше →
Всего голосов 45: ↑43 и ↓2 +41
Комментарии 64

Тест бесплатных программ для восстановления данных. Версия читателей Хабра

Время на прочтение 7 мин
Количество просмотров 91K
Приветствую всех Хабровчан!

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

  1. R.Saver 2.8
  2. Handy Recovery 5.5
  3. GetDataBack 1.0
  4. PhotoRec/TestDisk 7.0
  5. RecoveRx 3.0
  6. DMDE 2.10.2
  7. Zero Assumption Recovery 9.2
  8. Active@ File Recovery 14

Мы протестировали их. Результаты тестов ниже.

Внимание! Много скриншотов.

UPD Добавлены тесты еще двух утилит.
Читать дальше →
Всего голосов 38: ↑38 и ↓0 +38
Комментарии 43

Прогресс выполнения тяжелой задачи в PHP

Время на прочтение 6 мин
Количество просмотров 51K
Случилось мне как-то иметь дело с тяжелым PHP-скриптом. Нужно было каким-то образом в браузере отображать прогресс выполнения задачи в то время, пока в достаточно длительном цикле на стороне PHP проводились расчёты. В таких случаях обычно прибегают к периодичному выводу строки вроде этой:

<script>document.getElementById('progress').style.width = '1%';</script>

Этот вариант меня не устраивал по нескольким причинам, к тому же мне в принципе не нравится такой подход.
Читать дальше →
Всего голосов 48: ↑31 и ↓17 +14
Комментарии 45

Что делать, если «кина не будет» или как обойти блокировку сайта провайдером

Время на прочтение 6 мин
Количество просмотров 1.5M
Настал мой законный выходной и, выбрав время для просмотра фильма (люблю я старую классику), я занялся его поиском. Зайшел на один из привычных для меня сайтов, и наткнулся на такую вот блокировку данного ресурса.

блокировка

«Вот те раз!» — подумал я. Ни в одном реестре запрещенных сайтов данный ресурс не присутствовал и, с чего билайн его заблокировал — непонятно. Естественно после таких вот «заявочек» в голову полезли страшные мысли: «а что если завтра любимого „кина“ не будет!». Данные мысли тут же подвигли меня начать искать способы борьбы с данной ситуацией, и написать, для тех кому будет интересно, маленький обзор нескольких решений по обходу блокировки сайтов. (под катом скрины)
Читать дальше →
Всего голосов 120: ↑96 и ↓24 +72
Комментарии 87

Pangu выпустила джейлбрейк iOS 8.1 без Cydia

Время на прочтение 2 мин
Количество просмотров 50K
Айфоны и их взлом наскучили былым героям джейлбрейк-сцены. И это факт. Используя, как обычно, в качестве трибуны Twitter, один за другим авторы джейлбрейка предыдущих версий iOS в течение всего прошлого месяца, прошедшего после первого публичного релиза iOS 8, чуть-ли не зевая, рассказывали, что утилитой для взлома последней мобильной прошивки Apple никто из них толком не занимается.



Сначала Pod2g из Evad3rs заявил, что ему смертельно надоел и джейлбрейк, и iPhone. Его поддержал pimskeks. Потом iH8sn0w заявил, что подготовка и выпуск джейлбрейка для новых версий iOS – слишком хлопотное и неблагодарное занятие, а другой их известный коллега по сцене p0sixninja передал свои наработки китайской команде хакеров Pangu.
Читать дальше →
Всего голосов 32: ↑29 и ↓3 +26
Комментарии 46

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

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

Cloudtunes



Cloudtunes один из тех проектов, глядя на которые я не понимаю мотивации разработчиков выкладывать такие наработки в открытый доступ. Не сочтите меня за сугубо меркантильную личность, но данный проект — это грубо говоря клон iTunes в облаке и это просто великолепный сервис. Cloudtunes обеспечивает единый интерфейс для вашей медиатеки, синхронизируя данные между Dropbox, Youtube, Lastfm и тд. Серверная часть написана на Python (Tornado, Celery, Mongo DB, MongoEngine, Redis), а клиентская на CoffeeScript (Backbone.js, SocketIO, Handlebars, Compass, SoundManager).

Читать дальше →
Всего голосов 75: ↑71 и ↓4 +67
Комментарии 13

Всё, что вы хотели знать об областях видимости в JavaScript (но боялись спросить)

Время на прочтение 8 мин
Количество просмотров 82K
У JS есть несколько концепций, связанных с областью видимости (scope), которые не всегда ясны начинающим разработчикам (и иногда даже опытным). Эта статья посвящена тем, кто стремится погрузиться в пучину областей видимости JS, услышав такие слова, как область видимости, замыкание, “this”, область имён, область видимости функции, глобальные переменные, лексическая область видимости, приватные и публичные области… Надеюсь, по прочтению материала вы сможете ответить на следующие вопросы:

— что такое область видимости?
— что есть глобальная/локальная ОВ?
— что есть пространство имён и чем оно отличается от ОВ?
— что обозначает ключевое слово this, и как оно относится с ОВ?
— что такое функциональная и лексическая ОВ?
— что такое замыкание?
— как мне всё это понять и сотворить?
Читать дальше →
Всего голосов 57: ↑47 и ↓10 +37
Комментарии 38

Вывод видео с нескольких web-камер на одной странице

Время на прочтение 7 мин
Количество просмотров 25K
Как-то раз я приуныл, делать ничего не хотелось, и тут я вспомнил, что в детстве мне сильно хотелось иметь пульт видео наблюдения, как у какого-то злодея из кино, который сидит в темной комнате и хохочет, наблюдая за беспомощными людишками, которые пытаются найти выход. Ну и освежив свои детские воспоминания, я решил воплотить их в жизнь, ну ту часть с пультом наблюдения, без людишек. И тут моим другом стал шагающий семимильными шагами HTML5, а если точнее Stream API.
Так как я раньше уже использовал getUserMedia для захвата звука с микрофона, я подумал, что с видео тоже не будет никаких проблем, но они все же вылезли на свет. Т.е. проблем с самим захватом видео-потока не было, а вот с одновременным выводом данных с нескольких источников на одной странице оказалось не все так просто, как хотелось.

Итак, начнем с самого начала, а именно с захвата и вывода видео с одного источника. Для этого мы будем использовать ф-ю getUserMedia, которая поддерживается во всех нормальных браузерах старших версий (Stream API), ну разумеется кроме IE.
Читать дальше →
Всего голосов 20: ↑17 и ↓3 +14
Комментарии 10

«Нет времени объяснять!» или Как реализовать трансляцию с IP камеры на сайт?

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


Пожалуй, мне везет на идиотские задачи в самый неподходящий момент. Это что, карма такая?! Ну да ладно…
В данном «отпускном» посте речь пойдет о том, как при наличии 3g модема и ноутбука реализовать трансляцию с IP-камеры на сайт.
Сам пост я бы не написал, если бы не задал вопрос на «Тостере», где мне подсказали, что гуглить.

Что мы имеем?


  1. Недешевая IP камера AXIS Q1755, которую я даже в руках не держал. Сама камера находится в городе «А» и подключена через тормозной 3g модем.
  2. Сервер на Debian 7, который крутится на почти дохлом Core2Duo. Хотя не такой уж он и дохлый, но для данных задач подходит не очень. Ах, да, сам сервер живет в городе Б.
  3. Сайт, на который необходимо повесить плеер. Находится на другом, более производительном сервере, в том же городе Б.
  4. Я, который находится в городе В, с ноутбуком, 3g-модемом и ограниченным трафиком в 4gb.

Читать дальше →
Всего голосов 57: ↑56 и ↓1 +55
Комментарии 31

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

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

Awesome Sysadmin


Мега популярный репозиторий на GitHub, который за несколько дней собрал более 4000 звезд. Это огромной живой список всех самых полезных инструментов с открытым исходным кодом для сисадмина по категориям: Backups, Cloning, Cloud Computing, Cloud Orchestration, Cloud Storage, Collaborative Software, Distributed Filesystems, DNS, VPN и др. Автор проекта упомянул также Awesome PHP, по образу и подобию которого он опубликовал свой список.

NodeBB



Многие уже из названия поняли, что это форум-движок на NodeJS и на самом деле это очень крутой проект. Я бы даже сказал, что это в какой то мере переосмысление сложившегося представления о форумах. Ну сколько уже времени прошло с тех пор… Сколько социальных сетей появилось и «социальности» в целом, сколько рассуждений о дизайне с интуитивно понятным UI и продуманным UX, сколько стремления разработчиков превратить веб в «среду для приложений», где все быстро и асинхронно словно нативный софт.

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




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

Язык программирования Swift. Русская версия

Время на прочтение 17 мин
Количество просмотров 373K
imageПривет, Хабр! 2 июня все мы воочию могли наблюдать, как компания Apple начала творить революцию в стане Objective-C разработчиков, представив миру свой новый язык программирования – Swift. Вместе с этим, она выложила в открытый доступ небольшую документацию по языку, которую мы решили перевести, если на то будет спрос. Предлагаем вашему вниманию перевод первой главы. Если тема будет интересна, то мы продолжим публиковать перевод каждую неделю.
Читать дальше →
Всего голосов 117: ↑103 и ↓14 +89
Комментарии 51

1000+ часов видео по Java на русском

Время на прочтение 7 мин
Количество просмотров 1.3M
Добрый день.
Меня зовут Головач Иван, я руковожу небольшой образовательной компанией и преподаю сам:
  1. Java Core
  2. Junior Java Developer: Servlet API, JDBC, Maven, JUnit, Mockito, Log4J, основы Spring/SpringMVC, основы JPA/Hibernate, шаблоны/архитектуры MVC/IoC/DAO.
  3. Multicore programming in Java.


Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).

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

(GolovachCourses.com)


Здесь собраны несколько вариантов записи моего курса Java Core.
Модуль #1 (Procedural Java):
Набор июль 2013: #1, #2, #3, #4
Набор апрель 2013: #1, #2, #3, #4
Набор февраль 2013: #1, #2, #3, #4
Набор январь 2013: #1, #2, #3, #4
Набор октябрь 2012: #1, #2, #3, #4.
Читать дальше →
Всего голосов 120: ↑111 и ↓9 +102
Комментарии 38
1

Информация

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