Search
Write a publication
Pull to refresh
0
0
Send message

Знакомство с Koa или coroutine в nodejs

Reading time5 min
Views34K

Предисловие


Меня уже очень давно привлекает javascript в качестве единого языка для веб-разработки, но до недавнего времени все мои изыскания оканчивались чтением документации nodejs и статей о том, что это callback`овый ад, что разработка на нем приносит лишь боль и страдания. Пока не обнаружил, что в harmony появился оператор yield, после чего я наткнулся на koa, и пошло поехало.
Читать дальше →

[Подборка] Melchior.js, ng-admin, Hello.js, ineed

Reading time3 min
Views6.5K

Melchior.js


Melchior.js (GitHub: voronianski/melchior.js, Лицензия: MIT, npm: melchiorjs) от Dmitri Voronianski представляет собой реализацию цепочного определения модулей(CMD), концепцию, введенную John Wu.
Идея, кроющаяся за цепочными определениями модулей разрешает некоторые неприятные моменты AMD, такие как объемные объявления зависимостей, а так же обеспечивает простоту и читабельность с использованием визуально-дружелюбного и ясного синтаксиса.

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

Далее

uLogin, как средство накрутки лайков клиентов

Reading time6 min
Views25K
Будет немного сумбурно, но все же по делу.
Рассказ пойдет о красном квадрате малевича, о uLogin и о сервисе социальной активности для набора лайков.

Все началось с того, что ковыряясь в одном из своих проектов, наткнулся на красный квадрат Малевича — кодовое название накруточного слоя для лайков в соц сети, выглядело примерно так:
Читать дальше →

Как оказалось, знают все, а понимают не все. Транзакции в mysql и SELECT FOR UPDATE

Reading time2 min
Views89K
По долгу службы мне приходится иногда проводить собеседования на позицию "[старший|младший] разработчик python/django", «тимлид». К моему великому удивлению я обнаружил, что 9 из 10 соискателей, в резюме которых значатся слова " Mysql/Innodb/transactions/triggers/stored proc etc.", абсолютно ничего не могут рассказать о своем прошлом опыте работы с ними. Ни одного описания варианта использования, к сожалению, я так и не получил.
Читать дальше →

CVE-2014-6271, CVE-2014-7169: удалённое выполнение кода в Bash

Reading time1 min
Views56K
image
Сегодня были опубликованы детали об уязвимости в Bash.
Вкратце, Bash позволяет экспортировать функции как переменные окружения:

$ myfunc() { echo "Hello"; }
$ export -f myfunc
$ env | grep -A1 ^myfunc
myfunc=() {  echo "Hello"
}


Уязвимость состоит в том, что если после тела функции (после последнего символа "}") добавить ещё какую-нибудь команду, и экспортировать её — она будет выполнена при вызове дочернего интерпретатора:
Читать дальше →

Кевин Митник осваивает профессию будущего

Reading time3 min
Views60K


Во времена своей молодости Кевин Митник стал самым знаменитым хакером в мире. Для многих он стал образцом для подражания. Его метод проникновения в сеть телекоммуникационной компании с помощью женитьбы на сотруднице этой компании — это вообще классика жанра.

Но после выхода из тюрьмы Кевин Митник превратился в «белого» хакера: он занимался пентестингом, консультировал компании в сфере ИТ-безопасности, публиковал книги по социальной инженерии, читал лекции. Однако, этого оказалось недостаточно, и теперь Кевин, так сказать, возвращается к корням: он продаёт 0day-эксплоиты.
Читать дальше →

Визуальный конфигуратор окон, написанный за один час

Reading time13 min
Views28K
Решал интересную задачу – сделать визуальный редактор-конфигуратор окон.

Подробностями процесса разработки я с вами, коллеги, и поделюсь.


UPD. Добавил скриншоты.
UPD2. Речь идет об окнах оффлайновых, застекленных, деревянных или пластиковых — через которые на улицу из дома смотрят

Спасибо за отклики!
Читать дальше →

Использование SQLite в Windows и Windows Phone приложениях на JavaScript

Reading time11 min
Views12K


Новым для Windows Phone 8.1 является возможность создавать и запускать приложения, написанные на JavaScript также, как на Windows 8.1. Тем не менее, есть некоторые отличия в специфике API, доступных для приложений на Windows Phone 8.1. Одним из таких отличий является отсутствие IndexedDB на телефоне. Это представляет трудности для JavaScript разработчиков универсальных приложений, которым требуется структурированное хранилище. В этой статье мы посмотрим, как создать компонент WinRT, позволяющий использовать SQLite из JavaScript. Также мы подготовили для вас пример приложения.
Читать дальше →

Мобильный HTML5

Reading time2 min
Views11K
Сегодня у нас вышла новая книга — HTML5. Разработка приложений для мобильных устройств.



Книга доступна в печатном и электронном формате. При покупке виртуальной книги вы получите два формата — PDF и ePub. В течение недели действует скидка 10% на разделы HTML и XHTML. Языки разметки web-страниц и Бестселлеры O'Reilly. Код купона — e46e73d.

Немного информации о книге.
Читать дальше →

Трансдьюсеры в JavaScript. Часть первая

Reading time5 min
Views30K
Рич Хикки, автор языка Clojure, недавно придумал новую концепцию — Трансдьюсеры. Их сразу добавили в Clojure, но сама идея универсальна и может быть воспроизведена в других языках.

Сразу, зачем это нужно:

  • трансдьюсеры могут улучшить производительность, т.к. позволят не создавать временные коллекции в цепочках операций map.filter.takeWhile.etc
  • могут помочь переиспользовать код
  • могут помочь интегрировать библиотеки между собой, например underscore/LoDash могут уметь создавать трансдьюсеры, а FRP библиотеки (RxJS/Bacon.js/Kefir.js) могут уметь их принимать
  • могут упростить FRP библиотеки, т.к. можно будет выбросить кучу методов, добавив один метод для поддержки трансдьюсеров


Трансдьюсеры — это попытка переосмыслить операции над коллекциями, такие как map(), filter() и пр., найти в них общую идею, и научиться совмещать вместе несколько операций для дальнейшего переиспользования.

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

Немного о внутренностях WebKit

Reading time8 min
Views14K
Задался я с задачей, ознакомится с тем как работает в том или ином виде основа всех современных браузеров — WebKit, как происходит процесс загрузки ресурсов, и что с этим всем, собственно, можно сделать. Документации по вопросу, в принципе, достаточно:

* структурированная, но не покрывающая и 10 й части от Apple;
* разбросаные статьи в вики, разные по степени детализации и степени покрытия.

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

Использование ownCloud 7 в полевых условиях

Reading time15 min
Views165K
owncloud image Прочитав статью "Делаем backup Google или паранойя по поводу санкций. Owncloud и другие открытые решения", я решил, что пора дать второй шанс ownCloud'у после крайне неудачного опыта с 5 версией. В итоге оказалось, что за сей короткий промежуток времени ownCloud приобрел вполне добротный вид и способна работать в качестве повседневного инструмента — обнаруженные проблемы либо не существенны, либо имеют решение. Те, кто не знаком с ownCloud, могут узнать о его ключевых особенностях, к примеру, на официальном сайте или на opennet.ru. В этой статье я НЕ расскажу о том, как надо устанавливать ownCloud и как потом его с нуля настроить, потому что уже достаточно об этом писано-расписано-переписано, да и установка не представляет собой ничего сложного, я лишь кратко упомяну важные детали. Под катом будет информация о том, что же интересного умеет ownCloud, какие приложения в apps.owncloud.com мне показались стоящими внимания, затрону интеграцию с KDE и Android, а также скажу пару слов о подводных камнях и интересных местах, ну а в конце подведу итоги для тех, кому лень столько читать. ownCloud на своём сервере я использую в одиночестве, поэтому администрирование пользователями и всё сопутствующее будет описано крайне скудно. Осторожно: много картинок.
Читать дальше →

Делаем универсальный ключ для домофона

Reading time5 min
Views550K
Заголовок получился слишком громким — и ключ не такой и универсальный, и домофон поддастся не любой. Ну да ладно.
Речь пойдет о домофонах, работающих с 1-wire таблетками DS1990, вот такими:



В интернете можно найти множество материалов о том, как читать с них информацию. Но эти таблетки бывают не только read-only. Человеку свойственно терять ключи, и сегодня ларёк с услугами по клонированию DS1990 можно найти в любом подземном переходе. Для записи они используют болванки, совместимые с оригинальными ключами, но имеющие дополнительные команды. Сейчас мы научимся их программировать.

Зачем это нужно? Если отбросить заведомо нехорошие варианты, то самое простое — это перепрограммировать скопившиеся и ставшие ненужными клонированные таблетки от старого домофона, замененного на новый, от подъезда арендованной квартиры, где больше не живете, от работы, где больше не работаете, и т.п.

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

Kefir.js — новая библиотека для функционального реактивного программирования (FRP) в JavaScript

Reading time4 min
Views22K
Наверняка многие уже слышали о подходе FRP для организации асинхронного кода. На хабре уже писали об FRP (Реактивное программирование в Haskell, FRP на Bacon.js) и есть хорошие доклады на эту тему (Программировние UI с помощью FRP и Bacon.js, Functional Reactive Programming & ClojureScript, О Bacon.js от Juha Paananen — автора бекона)

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

Вот что это дает по сравнению с обратными вызовами:

1) Поток событий (Event stream) и значение меняющаяся во времени (Property / Behavior) становятся объектами первого класса. Это значит что их можно передавать в функции и возвращать из функций.

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

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

К примеру можно написать функцию, возвращающую поток перетаскиваний (drag). В качестве параметров она будет принимать 3 потока — начало перетаскивания, движение, конец перетаскивания. Дальше можно передать в эту функцию: либо потоки для соответствующих событий мыши (mousedown, mousemove, mouseup), либо для touch событий (touchstart, touchmove, touchend). Сама же функция не будет ничего знать об источниках событий, а будет работать только с абстрактными потоками. Пример реализации на Bacon.

2) Явный state

Второе большое преимущество FRP это явное управление состоянием. Как известно, state — один из самых главных источников сложности программ, поэтому грамотное управление им позволяет писать более надежные и простые в поддержке программы. Отличный доклад от Рича Хикки о сложности (complexity) «Simple Made Easy».

FRP позволяет писать бОльшую часть кода на «чистых функциях» и управлять потоком данных (dataflow) явно (с помощью потоков событий), а состояния хранить тоже явно в Property.

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

Интерфейс программирования презентаций на impress.js

Reading time3 min
Views6.5K
image
impress.js – популярный фреймворк предназначенный для создания впечатляющих презентация просто в браузере. Правда браузер для этого должен поддерживать CSS3 3d трансформации.

Подробный разбор моментов связанных с построением презентации и отображением отдельных слайдов был проведен в предыдущей публикации. Тогда за пределами нашего внимания остались возможности управления презентацией через API фреймворка. Для тех, кому мало получаемых «из коробки» возможностей impress.js, разберем его простой и компактный API.
Читать дальше →

Подарок от VmWare или как заблокировать свой сервер на хостинге

Reading time3 min
Views28K
 jail     Вернувшись в субботу вечером с увеселительной прогулки за грибами, я обнаружил странное состояние ноутбука:
— интернет не работает;
— VPN с сервером установлен и работает.
Отключив VPN, я немедленно получил «письмо счастья» от Hetzner:
Dear Sir or Madam
Your server with the above-mentioned IP address has carried out an attack on another server on the Internet.
This has placed a considerable strain on network resources and, as a result, a segment of our network has been adversely affected.
Your server has therefore been deactivated as a precautionary measure.
A corresponding log history is attached at the end of this email.


    На сайте robot.your-server.de было указано, что был заблокирован только один IP из трех, и основной функционал сервера работает, что немного облегчало задачу.
    Что это? Сервер поломали? Неожиданный эффект моего теста с открытым ресолвером? Мой ноутбук подцепил malware или botnet?
Читать дальше →

Кроссбраузерный красивый input type=«number»

Reading time3 min
Views36K
Цель поста: поделиться с разработчиками решением использования кроссбраузерного «input type="number"» или узнать о лучших решениях. Основная проблема состоит в том, что данный тип input`a по-разному отображается в разных браузерах, и кастомизировать его, через css практически не возможно. Данное решение позволяет легко оформить стрелочки в соответствии с дизайном, а так же отобразить их в тех браузерах, в которых не поддерживается нативный «input type="number"».

На данный момент плагину передается только один параметр — это селектор, к которому применяется js код:

jQuery(function ($) {
	$('input[type=number]').iLightInputNumber();
});


Для примера возьмем три input`a с разными атрибутами:

<input type="number" id="input01" step="100" min="0" class="input1" placeholder="Your budget">
<input type="number" min="1" max="99" class="input2" placeholder="1">
<input type="number" min="1" class="input3 input4" value="1">


Рабочий пример.

Проверено: opera, chrome, ff, ie9+

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

Дайджест интересных новостей и материалов из мира PHP № 48 (7 – 21 сентября 2014)

Reading time3 min
Views21K


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

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

Детектирование включенного телевизора с помощью фотодиода

Reading time4 min
Views37K
У меня есть телевизор, купленный 8 лет, НЕ смарт тв, в нем нет USB и Ethernet. Иногда я его включаю для просмотра телепередач. И часто бывает, начал смотреть передачу, как вдруг понадобилось выйти из дома, оделся, стоишь в ботинках в коридоре, а телевизор не выключен! Приходится снимать ботинки (негоже в ботинках по комнате ходить), заходишь в комнату, находишь на диване пульт, выключаешь телевизор, идешь по своим делам. Такая ситуация бывает часто, поэтому я решил положить этому конец и всё-таки сделать кнопку выключения телевизора в коридоре.


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

Information

Rating
Does not participate
Date of birth
Registered
Activity