Size: a a a

2016 April 23
Хабр
Один из способов поиска неэкранированных символов с помощью новых средств JavaScript

1. C чего всё началось
Недавно у меня возникла необходимость написать очередную утилиту, обрабатывающую текстовый файл в формате, похожем на упрощённый BBCode, а именно в формате исходников для словарей ABBYY Lingvo — DSL (Dictionary Specification Language). (Не путать с другим DSL (Domain-specific language) — интересный случай, когда гипоним является омонимом к гиперониму).

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

Одной из задач утилиты было как раз нахождение этих тегов с исключением экранированных сочетаний.

Поскольку в регулярных выражениях JavaScript с недавнего времени можно пользоваться lookbehind assertions (в личных целях), я подумал, нельзя ли реализовать поиск при помощи этого средства, — тем более что в данной разновидности lookbehind можно использовать выражения переменной длины.

Подробнее: https://habrahabr.ru/post/282275/
источник
Хабр
RESTful Visual Editor

Всем привет!
Хочу представить вам собственную разработку для создания API-документации. Она еще немного «сыровата», поскольку я уделил ей всего неделю, кроме того, я не являюсь веб-разработчиком. Однако на данном этапе, с целью написания API-документации для своего будущего проекта, она меня полностью устраивает.

Сама разработка находится на GitHub: github.com/gatools/restful-visual-editor

Заинтересовавшихся — милости прошу под кат.

Подробнее: https://habrahabr.ru/post/281605/
источник
Хабр
[Перевод] Анализ email-сообщений за 18 лет: Неудачный эксперимент по путешествию во времени

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

Многие люди пользуются электронной почтой уже на протяжение десятилетий — а значит, возникает вопрос о том, что анализ данных писем за долгое время может рассказать об эволюции конкретной личности. Журналист и создатель сервиса для разработки веб- и мобильных приложений Postlight Пол Форд в своем блоге на Medium

Подробнее: https://habrahabr.ru/post/282223/
источник
Хабр
От шедулера к планировщику

См. две другие статьи этой группы — Делаем многозадачность и Преемптивность: как отнять процессор.

Сразу просьба к строгим читателям. Если вы не поняли какой-либо термин из применённых — спросите, я подскажу, что я имел в виду. А если вам нравится другое написание или перевод этого термина — укажите его в комментарии. Я применяю те, которые нравятся мне.

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

Как я уже говорил, шедулер — это просто функция, которая отвечает на вопрос: какую нить и на сколько времени поставить на процессор.

Кстати, в SMP системе шедулер ничем не отличается от однопроцессорного. Вообще, чтобы проще понимать структуру взаимодействия сущностей на одном и нескольких процессорах, проще всего представить себе следующую модель: для каждого процессора есть нить «простоя» (которая работает, если вообще больше некому и просто останавливае процессор до прерывания), которая постоянно пытается «отдать» процессор (которым она как бы владеет) другим нитям, выбирая нить с помощью шедулера.

Говоря о шедулере нельзя не сказать о приоритетах.

Приоритет — свойство нити (или процесса) влияющее на конкуренцию этой нити с другими нитями за процессор.

Приоритет обычно описывается парой <класс приоритета, значение приоритета внутри класса>.

Подробнее: https://habrahabr.ru/post/282213/
источник
Хабр
Завтра, 23 апреля 2016 г. — смотрите онлайн-трансляцию российского финала Imagine Cup

Вы, вероятно, уже слышали, что в эту субботу состоится финал конкурса студенческих проектов Imagine Cup. Начиная с 9:30 по Москве на сайте http://imaginecup.ru и на Channel 9 будет доступна онлайн-трансляция мероприятия. Также в 13:00 вы сможете увидеть эксклюзивное прямое включение с выставки проектов в нашей группе facebook. Я со своей стороны обещаю секретные включения из-за кулис в перископе.

Мы будем ждать ваших вопросов и комментарием в хеш-тегом #imcup!



По отзывам прошлого года, мы будем транслировать выступления всех команд во всех категориях, а также лекции. К сожалению, формат мастер-классов не подразумевает трансляции, хотя много интересного будет проходить именно там. Подробности — в программе. Москвичам ещё не поздно присоединиться!

Подробнее: https://habrahabr.ru/post/282215/
источник
Хабр
ONLYOFFICE 8.8.0: интеграция почты и календаря, право на рецензирование и другие обновления

Мы выпустили новую версию ONLYOFFICE — под порядковым номером 8.8.0. Изменения коснулись всех модулей, но в этой статье мы будем говорить только о самых важных обновлениях. Вот они:


Интеграция календаря с почтой
Адресная книга, автоответчик и создание CRM-контакта прямо из почты
Права на рецензирование

Далее расскажем подробнее о каждом — зачем сделали, как работает, для каких целей вам пригодится.

Подробнее: https://habrahabr.ru/post/282111/
источник
Хабр
Авторам SpyEye дали 24 года на двоих

Два года назад мы писали про арест главного автора SpyEye, который известен под псевдонимом Gribodemon (Александр Панин). Все это время уроженец Твери ожидал суда и вынесения приговора в американской тюрьме. Известный американский security-журналист Brian Krebs указывает в своем блоге, что Панин и его «бизнес-партнер» алжирец Hamza Bendelladj (Bx1) получили 24 года на двоих. Панин получил девять с половиной лет, а Bx1 пятнадцать. Если первый был создателем самого трояна, то второй специализировался на его продаже.



Про SpyEye было написано уже достаточно много, так что нет смысле повторять это еще раз. Стоит отметить, что до того, как т. н. полнофункциональные crimeware toolkits были еще редкостью, Zeus и SpyEye определили формат этого бизнеса как такового. Клиенту продавался готовый инструмент для создания ботнета и централизованного выкачивания денег из подвергшихся компрометации жертв путем кражи данных онлайн-банкинга. Далее украденные средства различными порциями распределялись по счетам злоумышленников и также порциями обналичивались с использованием т. н. денежных мулов.

Подробнее: https://habrahabr.ru/post/282133/
источник
Хабр
Пятничный геймдев: хорошие видео о том, как делать игры

Привет, Хабр!

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

И начнем мы сегодня с ролика о том, как создать играбельного 2D-персонажа в Unity 5 — если вы еще не попытались этого сделать, то сейчас самое время. Важные моменты о физике, коллайдерах, спрайтах и перемещении персонажа по сцене.



Рекомендуем, кстати, посмотреть этот курс целиком вот здесь.

Подробнее: https://habrahabr.ru/post/282245/
источник
Хабр
Истории участников PHDays VI: как Мокси Марлинспайк победил ФБР, а Джон Бамбенек вычислил хакера № 1

В начале апреля о Мокси Марлинспайке написали все крупнейшие издания мира. Миллиард пользователей WhatsApp получили обязательное сквозное шифрование трафика на основе алгоритмов его мессенджера Signal. Через месяц, 17 и 18 мая, с Мокси можно будет познакомиться на форуме PHDays VI. На мероприятии выступит не только он, но и Рахул Саси, Пол Викси, Андрей Масалович, Джон Бамбенек.

Обама и Кэмерон против Марлинспайка


При рождении в 1980 году Мокси получил имя Мэтью Розенфельд. В конце 90-х он переехал в Сан-Франциско. Море и хакинг — две основные страсти человека, который выбрал себе псевдоним Мокси Марлинспайк. Marlinspike означает такелажную свайку для пробивки прядей троса, а Moxie — смелость.

Подробнее: https://habrahabr.ru/post/282209/
источник
Хабр
[Перевод] Агрегирующие функции в dplyr

summarise() используется с агрегирующими функциями, которые принимают на вход вектор значений, а возвращают одно. Функция summarise_each() предлагает другой подход к summarise() с такими же результатами.

Цель этой статьи — сравнить поведение summarise() и summarise_each(), учитывая два фактора, которыми мы можем управлять:

1. Сколькими переменными оперировать
 
1А, одна переменная
1В, более одной переменной

2. Сколько функций применять к каждой переменной
 
2А, одна функция
2В, более одной функции

Получается четыре варианта:

Вариант 1: применить одну функцию к одной переменной
Вариант 2: применить много функций к одной переменной
Вариант 3: применить одну функцию к многим переменным
Вариант 4: применить много функций к многим переменным

Также проверим эти четыре случая с и без опции group_by().

Подробнее: https://habrahabr.ru/post/281747/
источник
Хабр
В поисках пути — царь Салтан осваивает лапласиан

… Молвит он: «Коль жив я буду, чудный остров навещу, у Гвидона погощу».


В царстве Салтана не без изьяна. Принят закон — не лезть за кордон, да тут князь Гвидон.
Опять прислал поклон, да приглашение на угощение,- надо принимать политическое решение.

Дворцовые интриганки, похожие на поганки, встали стеной — «мол, скажи, что больной». Но прослышал Салтан про Гвидонов кальян, про изумрудную белку, да богатырскую стрелку. А главная новинка — молодая жинка. В общем, ехать решено — «Я не был за морем давно».

Было однако одна проблема,- нужен был маршрут или схема. Поскольку никто (кроме Врангеля барона) не знал, как добраться до острова Гвидона. Корабельщики дали карту,- пришлось сесть за парту. Над картой склонился Салтан, — где тут остров Буян? Задача была как будто знакома — проложить путь к острову Гвидона. Но как найти дорогу, когда путей слишком много?

До ночи решал Салтан задачку, в итоге свалился в спячку. Снились ему матрицы и точки, да на болоте кочки. На кочку прыгнул Нео с острова Борнео.
— Если хочешь добраться ко сроку — плыви по максимальному потоку.
— Чего? — Салтан почти проснулся. Но Нео уже в зайца обернулся.

Подробнее: https://habrahabr.ru/post/282239/
источник
Хабр
[Перевод] React.js — Руководство для Rails разработчиков

На начальном уровне такие переводы — мой вклад в развитие rails сообщества.
Дальше в тексте все, что выделено курсивом, мои замечания (таких будет не много)



Введение в React.js

React.js — это новый популярный парень из команды JavaScript фреймворков, он выделяется своей простотой. Когда другие фреймворки реализуют полный MVC (Model View Controller) подход, мы можем сказать React'у реализовать только View (Отображение) (факт — некоторые люди переписывают часть отображения (V) этих фреймворков c помощью React).

Приложения с реактом основаны на 2х основных принципах Компоненты и Состояния. Компоненты могут состоять из более мелких компонентов встроенных или пользовательских. Состояния, что ребята из Facebook называют односторонний реактивный поток данных, подразумевая что наш интерфейс(UI) будет реагировать на каждое изменение состояния.

Одна хорошая особенность React.js это то что он не требует каких-либо дополнительных зависимостей, что обеспечивает ему подключаемость с любой js библиотекой. Пользуясь этим, мы будем включать его в наш Rails стек для создания внешнего интерфейса или можно сказать для создания «Rails на стероидах».

Макет для отслеживания расходов приложения

Для этого гайда мы создадим маленькое приложение с нуля что бы отслеживать наши действия. Каждая запись(дальше, тоже самое что и Record) будет состоять из даты, названия и суммы. Запись будет рассматриваться как Кредит(Credit) если его сумма больше нуля, в противном случае она будет рассматриваться каr дебет. Вот макет проекта:



Суммарно приложение будет вести себя так:

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


 Инициализация React.js в Rails проект

Подробнее: https://habrahabr.ru/post/281735/
источник
Хабр
Определяем пол и возраст с помощью Microsoft Project Oxford и C#

В прошлой статье я рассказал, что такое Microsoft Project Oxford и как создать бота на Telegram который определяет пол и возраст по фото на PHP.

Но сегодня, я покажу пример WPF приложения с использованием Microsoft Project Oxford Client SDK и C# на подобии How-Old.net

Подробнее: https://habrahabr.ru/post/282231/
источник
Хабр
Ошибки в настройке SPF, в домене aeroflot.ruaeroflot.ru

Думаю, что вам хорошо известен такой протокол, как DMARC и как он связан с SPF и DKIM.
Недавно выяснилось, что письма от Аэрофлота не проходят проверку по данному протоколу.
Кому интересно, почему, прошу под кат.

Подробнее: https://habrahabr.ru/post/282291/
источник
Хабр
О поиске видео замолвите слово

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

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

А еще нефункциональные требования:

Django-проект с дофига просмотрами и постоянными обновлениями описаний видео
Инкапсуляция работы с поисковым движком в библиотеке и совместимость с остальными библиотеками на сайте (в первую очередь, Django REST Framework)

Про то, как в Rutube используется sphinxsearch и будет данный рассказ.

Подробнее: https://habrahabr.ru/post/281653/
источник
Хабр
[Перевод] FAQ по лицензированию Backdrop

Т.к. читатели Хабра знакомы с форком Drupal под названием Backdrop, а сам проект Backdrop также имеет пояснения касательно лицензирования самой CMS и расширений к ней, то думаю, будет нелишним раскатить перевод вопросов и ответов по лицензированию этой CMS, раз аналогичное уже было сделано в отношении самого Drupal.

 

Содержание  
Если я создам модуль или тему, должен ли я применить к ним лицензию GPL?
Если я создам модуль или тему, должен ли я предоставлять его кому угодно?
Могу ли я продавать Backdrop или модуль для Backdrop или тему для Backdrop?
Лицензия GPL требует, чтобы я распространял «исходный код» моих файлов. Что это означает для веб-приложения?
Могу ли я опубликовать мою работу под лицензией GPL версии 3 или только под GPL версии 2?
Перейдет ли Backdrop на лицензию GPL версии 3?

Подробнее: https://habrahabr.ru/post/282205/
источник
Хабр
Создание сверхдлинных плоских панорамных изображений из видео

Предыстория
Пару лет назад на Хабре была статья, посвящённая Адаму Мадьяру

Подробнее: https://habrahabr.ru/post/282265/
источник
2016 April 24
Хабр
[Перевод] C/C++: как измерять процессорное время

КДПВ
От переводчика:
Большинство моих знакомых для измерения времени в разного вида бенчмарках в С++ используют chrono или, в особо запущенных случаях, ctime. Но для бенчмаркинга гораздо полезнее замерять процессорное время. Недавно я наткнулся на статью о кроссплатформенном замере процессорного времени и решил поделиться ею тут, возможно несколько увеличив качество местных бенчмарков.
P.S. Когда в статье написано "сегодня" или "сейчас", имеется ввиду "на момент выхода статьи", то есть, если я не ошибаюсь, март 2012. Ни я, ни автор не гарантируем, что это до сих пор так.
P.P.S. На момент публикации оригинал недоступен, но хранится в кэше Яндекса
Функции API, позволяющие получить процессорное время, использованное процессом, отличаются в разных операционных системах: Windows, Linux, OSX, BSD, Solaris, а также прочих UNIX-подобных ОС. Эта статья предоставляет кросс-платформенную функцию, получающую процессорное время процесса и объясняет, какие функции поддерживает каждая ОС.

Подробнее: https://habrahabr.ru/post/282301/
источник
Хабр
Сугубо ненаучно: Tarantool vs Golang (по скорости)

Зачитался я последнее время про Tarantool, интересно стало. Идея хорошая — код рядом с базой данных, хранимка в такой быстрой Redis-подобной среде.
И что-то задумался — мы вот сейчас используем активно на работе Golang, собственно, мысль пришла что на Go написано много всего, в т.ч. и встраиваемых баз. А что если сравнить, например, Go+LevelDB (собственно, можно было бы и любую другую) против Tarantool. Тестировал еще Go+RocksDB, но там оказалось все немного сложнее, а результат примерно тот же на небольших данных.
Тестировал простую задачу — HTTP сервер, при запросе — записать ключик в базу, достать его же по имени (без всяких проверок на race), отправить назад простенький JSON из этого value.

Подробнее: https://habrahabr.ru/post/282299/
источник
Хабр
[Перевод] Краткая история Всемирной паутины по версии веб-разработчиков

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

Подробнее: https://habrahabr.ru/post/282267/
источник