Pull to refresh
Ворч Ун @sav1812read⁠-⁠only

Разработчик

Send message

Отказываемся от коллбэков: Генераторы в ECMAScript 6

Reading time6 min
Views34K
Я постоянно слышу людей, ноющих об асинхронных коллбэках в JavaScript. Держать в голове порядок исполнения в этом языке немного трудно (это тот случай, который называют «Callback Hell» или «The Pyramid of Doom»), если до этого ты имел дело с синхронным программированием. Моим обычным ответом было «тебе придется как-то с этим обходиться». В конце концов, ожидаем ли мы, что все языки программирования будут выглядеть и ощущаться одинаково? Конечно нет.

Все поменял недавний обзор черновика ECMAScript 6, в котором описываются генераторы — возможность языка, которая целиком изменит наш способ написания и серверного, и клиентского JavaScript. С помощью генераторов мы можем превратить вложенные коллбэки в похожий на синхронный код без блокирования нашей единственной event loop.
Например, этот код:
    setTimeout(function(){
        _get("/something.ajax?greeting", function(err, greeting) {
            if (err) { console.log(err); throw err; }
            _get("/else.ajax?who&greeting="+greeting, function(err, who) {
                if (err) { console.log(err); throw err; }
                console.log(greeting+" "+who);
            });
        });
    }, 1000);

может быть написан так:
    sync(function* (resume) {
        try (e) {
            yield setTimeout(resume, 1000);
            var greeting = yield _get('/something.ajax?greeting', resume)
            var who = yield _get('/else.ajax?who&greeting=' + greeting, resume)
            console.log(greeting + ' ' + who)
        }
        catch (e) {
            console.log(e);
            throw e;  
        } 
    });

Интересно, не правда ли? Централизованная обработка исключений и понятный порядок исполнения.
Читать дальше →

Nette PHP Framework: первое знакомство

Reading time3 min
Views12K
Логотип фреймворка Nette Было очень приятно совершенно случайно обнаружить сайт этого фреймворка во второй половине рабочего дня. Новые фреймворки появляются редко, а тем более редко попадаются механизмы, которые нравятся с первого взгляда. На Хабре описания Nette я не нашел, поэтому поспешил поделиться своей находкой с Вами.

Во-первых, мне сразу приглянулось название. Nette. Это почти как Latte. Только Nette. Как оказалось позднее, есть и Latte — собственный встроенный подающий надежды шаблонизатор. Ого.
Читать дальше →

Контекстно-зависимая форма в Yii

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

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


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

Fenom — yet another PHP template engine

Reading time6 min
Views44K
Доброго времени суток. Вышла первая стабильная версия нового шаблонизатора Fenom. Для нетерпеливых, Fenom — это легковесный (статистика прилагается), быстрый (бенчмарк прилагается), гибкий (API прилагается) шаблонизатор, который может стать удачной заменой шаблонизаторам Twig или Smarty.
Заинтересовавшихся прошу под кат

Дайджест интересных новостей и материалов из мира PHP № 34 (13 — 26 января 2014)

Reading time5 min
Views23K


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

Приятного чтения!
Читать дальше →

Arduino ли единым. Part 1

Reading time4 min
Views27K

В последнее время Arduino-подобными платами уже никого не удивить, как и китайскими клонами оных. В этой статье речь пойдет о Arduino-совместимой платой от Cypress Semiconductor — CY8CKIT-042 PSoC 4 Pioneer Kit, которая может быть хорошей альтернативой как благодаря своим возможностям, так и благодаря весьма функциональной IDE.
Под катом немного фоток и скриншотов...

Пробуем Audio API на примере написания визуализатора

Reading time6 min
Views53K

Web Audio API для меня является одной из тех новинок, которыми сейчас напичканы браузеры и с которой хотелось подружиться поближе и хоть как-то проникнуться тем, что же можно с помощью этого натворить. Что бы проникнуться, я решил написать простенький визуализатор аудио.

Но прежде чем начать разбираться непосредственно с Audio API, нам необходимо набросать заготовку нашего визуализатора и делать мы будем это при помощи canvas.

Подробности

Подборка трюков при анализе защищенности веб приложений

Reading time5 min
Views35K
Всем привет! Этот топик посвящен разным трюкам при анализе защищенности (пентесте) веб приложений. Периодически сталкиваешься с ситуацией, когда надо обойти какую-нибудь защиту, выкрутиться в данных ограничениях или просто протестировать какое-то неочевидное место. И этот пост как раз об этом! Добро пожаловать под кат.
Читать дальше →

SoftEther VPN — продвинутый мультипротокольный VPN-сервер и клиент

Reading time3 min
Views409K
Как скоро я смогу вас заинтересовать, если скажу, что в этой статье речь пойдет о VPN-сервере, который может поднимать L2TP/IPsec, OpenVPN, MS-SSTP, L2TPv3, EtherIP-серверы, а также имеет свой собственный протокол «SSL-VPN», который неотличим от обычного HTTPS-трафика (чего не скажешь про OpenVPN handshake, например), может работать не только через TCP/UDP, но и через ICMP (подобно pingtunnel, hanstunnel) и DNS (подобно iodine), работает быстрее (по заверению разработчиков) текущих имплементаций, строит L2 и L3 туннели, имеет встроенный DHCP-сервер, поддерживает как kernel-mode, так и user-mode NAT, IPv6, шейпинг, QoS, кластеризацию, load balancing и fault tolerance, может быть запущен под Windows, Linux, Mac OS, FreeBSD и Solaris и является Open-Source проектом под GPLv2?

То-то и оно. Такое пропустить нельзя.
Читать дальше →

DipTrace и ГОСТ. Библиотека УГО

Reading time6 min
Views171K
Что-то на Хабре совсем нет постов о таком замечательном инструменте как DipTrace. Думаю необходимо исправлять эту ситуацию.



DipTrace — это мощная система проектирования принципиальных схем и печатных плат (EDA — система).
Внимание! Под катом трафик!
Читать дальше →

Что роботу стоит карту построить?

Reading time5 min
Views49K

Снова с вами блог компаниии Tod, и сегодня мы продолжим знакомство с навигационным стеком операционной системы для роботов ROS. Напомним, что в предыдущей статье было дано общее описание навигационного стека, обозначены необходимые требования для его использованию на роботе, рассмотрены задачи управления перемещением робота, получения сенсорных данных одометрии и сонаров. В этой статье мы расскажет о самых «вкусных» возможностях навигационно стека: построение карты и планирование траектории движения с учетом встречающихся на пути робота препятствий. Под катом помимо всего прочего вы найдете видео с навигацией робота Tod в квартире.
Читать дальше →

jQuery Events изнутри

Reading time9 min
Views59K
Статья написана в рамках конкурса среди студентов Технопарка Mail.ru.
image

Думаю, JavaSript-библиотека jQuery в представлении не нуждается, но на всякий случай напомню, что jQuery призвана ускорить разработку, предоставить синтаксический “сахар” для нативного js и избавить разработчиков от проблем, связанных с кроссплатформенностью.
Прежде чем говорить о том, как устроена обработка событий в jQuery, нельзя не упомянуть об истории обработки событий в браузере.
Читать дальше →

Web Components — это единственное светлое будущее веба. Смиритесь

Reading time11 min
Views57K

Вчера вышла [весьма достойная статья про Web Components, и я понял, что не могу не поделиться тем опытом, что я накопил за последние восемь месяцев. Я не буду рассказывать о том, как работать с Веб Компонентами, я расскажу, почему. Поэтому тем, кто не знает об этом стеке технологий, стоит прочитать статью по ссылке выше.
Дело в том, что в июне вышла первая стабильная версия моей библиотеки CornerJS. Начавшись как автономная реализация директив из AngularJS, она постепенно превратилась в более простой — как в использовании, так и в реализации — аналог (неточный, да, я знаю) Пользовательских Элементов из спецификации Веба Компонентов.

Я прошел через большое количество узких мест, а сейчас эта библиотека используется в нескольких больших и не очень проектах в реальных условиях.

Это замечательная, на мой взгляд, в реализации библиотека — я действительно считал ее основным инструментом в разработке, и в последнем проекте (видеопортале) она оказалась важнее jQuery: от него я мог бы отказаться, а от нее нет.

Но я, как человек, внедривший ее в нашу команду, и отказываюсь от нее — мы переходим на Mozilla X-tags для IE9+ сайтов и Polymer для IE10+ сайтов. К счастью, на моей памяти у нас был всего один или два проекта IE8+.

И в этом посте я расскажу, почему веб-компоненты — это не просто будущее веба. А единственное будущее веба.

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

Web Components — будущее Web

Reading time12 min
Views116K
Спустя какое время стало ясно, что основная идея Prototype вошла в противоречие с миром. Создатели браузеров ответили на возрождение Javascript добавлением новых API, многие из которых конфликтовали с реализацией Prototype.

— Sam Stephenson, создатель Prototype.js, You Are Not Your Code

Создатели браузеров поступают гармонично. Решение о новых API принимают с учётом текущих трендов в opensource сообществах. Так prototype.js способствовал появлению Array.prototype.forEach(), map() и т.д., jquery вдохновил разработчиков на HTMLElement.prototype.querySelector() и querySelectorAll().

Код на стороне клиента становится сложнее и объёмнее. Появляются многочисленные фреймворки, которые помогают держать этот хаос под контролем. Backbone, ember, angular и другие создали, чтобы помочь писать чистый, модульный код. Фреймворки уровня приложения — это тренд. Его дух присутствует в JS среде уже какое-то время. Не удивительно, что создатели браузеров решили обратить на него внимание.
Читать дальше →

DIY-диммер для тех, кто хочет сам

Reading time2 min
Views62K


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

FabLab УрФУ: когда госинициативы бывают полезны

Reading time2 min
Views53K


Похоже совсем скоро Екатеринбург станет идеальным городом для старта hardware-проектов. Здесь даже государственная инциатива может принести немалую пользу зарождающемуся бизнесу. Надо лишь знать пароли и явки. Одну из таких явок мы с удовольствием открываем вам сегодня. Под катом более 25 кликабельных фотографий (трафик!). Готовы?
Читать дальше →

Алгоритм энергосбережения на практике

Reading time4 min
Views42K

От автора


Это моя первая статья — жду конструктивной критики, мнений, замечаний, вопросов.

Предисловие


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

Что имеем




Был разработан радио-модуль на «борту» которого: «мозг» — atmega128rfa1, со встроенным радиопередатчиком и датчик температуры FM75. Питается устройство от 1-ой батарейки CR2032 (3.3 В, ~200 мА*час).
Читать дальше →

Исследование безопасности сайтов на различных CMS

Reading time4 min
Views41K
Привет, хабр! Совместно с сервисом SiteSecure мы провели комплексное исследование безопасности сайтов, разработанных на различных CMS-системах, в результате которого получили довольно интересные результаты.

Сравнение безопасности сайтов на бесплатных и коммерческих CMS


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

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

JUCE — Кроссплатформенный C++ фреймворк для разработки приложений с пользовательским интерфейсом

Reading time8 min
Views66K
image

Приветствую хабросообщество!
Наверно каждый кто профессионально разрабатывает ПО или просто увлекается программированием, рано или поздно приходил к необходимости создавать пользовательский интерфейс для своей программы. И если не рассматривать нативные для платформ окружения и языки такие как C# для Windows или Objective-C для Mac OS X которые изначально содержат средства для визуализации интерфейса, то выбор оказывается не очень богатым, особенно если мы не горим желанием платить деньги за средства разработки GUI или желаем добиться кроссплатформенности.
В своем первом посте на Хабре я бы хотел рассказать о таком фреймворке как JUCE. Поиск по Хабру выдал всего 2 статьи где данный фреймворк только упоминается, но ни какой детальной информации не приводится. Думаю что тем кто только начинает осваивать кроссплатформенные GUI приложения на C++ будет интересно узнать об альтернативе таким монстрам как Qt или таким старичкам как GTK+
Хотите знать больше?

После прочтения сжечь

Reading time3 min
Views46K
В прошлом семестре в качестве домашнего задания по курсу информационной безопасности в Технопарке Mail.Ru нам предложили написать сервис одноразовых ссылок. Подобные сервисы уже существуют, однако мне эта идея показалась интересной как с точки зрения практического применения, так и с точки зрения технической реализации. Задание я выполнил, и, немного доработав систему, выложил в открытый доступ. О том, какие задачи мне пришлось решить и с какими проблемами столкнуться, я расскажу в этой небольшой статье.


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

Information

Rating
Does not participate
Location
Россия
Registered
Activity