Как стать автором
Обновить
0
0
Андриянов Илья @iandriyanov

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

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

Отзыв сертификатов не работает

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

Сертификаты


Мы сейчас видим настоящую золотую лихорадку вокруг сертификатов, поскольку всё больше сайтов внедряют HTTPS. Кроме очевидных преимуществ безопасности и приватности, есть и другие выгоды от внедрения защищённых соединений, которые я перечислил в статье «Вы всё ещё думаете, что вам не нужен HTTPS?». Обычно именуемые «SSL-сертификаты» или «HTTPS-сертификаты» разлетаются со скоростью, которой мы никогда не видели в истории интернета. Каждый день я исследую сайты из первого миллиона по посещаемости и анализирую различные аспекты их безопасности, а каждые 6 месяцев публикую отчёт. Вы можете изучить эти отчёты здесь, но сейчас посмотрим на темпы внедрения HTTPS.


Процент сайтов из первого миллиона самых популярных сайтов по статистике Alexa, где стоит редирект на версию HTTPS
Читать дальше →
Всего голосов 103: ↑103 и ↓0+103
Комментарии123

Хайлайтинг больших текстовых полей в ElasticSearch

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

В декабре 2016 года мы с товарищем начали заниматься новым проектом — системой сбора-индексации-поиска по документам. Система построена вокруг ElasticSearch (далее — ES), который мы используем как основной движок для полнотекстового поиска.


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


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


Одним из ключевых требований к нашей поисковой системе была возможность быстро и эффективно работать с большими файлами (более 100 Мб). В статье мы расскажем как добиться высокой производительности от ES при хайлайтинге больших полей документа.


На скриншоте ниже показано как работает подсветка результатов поиска в нашем проекте.


Пример результатов поиска с хайлайтом

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

Балансировка нагрузки с Pacemaker и IPaddr (Active/Active cluster)

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


Хочу рассказать вам еще об одном способе балансировки нагрузки. Про Pacemaker и IPaddr (ресурс-агент) и настройке его для Active/Passive кластера сказано уже и так достаточно много, но информации по организации полноценного Active/Active кластера, используя этот модуль я нашел крайне мало. Постараюсь исправить эту ситуацию.


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


  • Отсутсвие внешнего балансировщика — На всех нодах в кластере настраивается один общий виртуальный IP-адрес. Все запросы отправляются на него. Ноды отвечают на запросы на этот адрес случайно и по договоренности между ссобой.
  • Высокая доступность — Если одна нода падает ее обязаности подхватывает другая.
  • Простота настройки — Настройка осуществляется всего в 3-5 команд.
Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Комментарии10

Как компании привлекают на работу лучших ИТ-специалистов — ответы экспертов

Время на прочтение22 мин
Количество просмотров26K
image
Исследование Kelly Services: если вас полностью устраивает зарплата, с чем вы готовы мириться в работе?

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

Некоторые игроки рынка полагают, что в связи с кадровым голодом в ИТ-индустрии «переманивание» сотрудников стало неотъемлемой частью процесса хантинга.

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

Мы пообщались с работодателями и попросили поделиться размышлениями и секретами успешного привлечения ИТ-специалистов.
Читать дальше →
Всего голосов 31: ↑24 и ↓7+17
Комментарии14

Platypus и Packages. Создаём и устанавливаем программы на macOS

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


Очень часто бывает необходимо собрать код, написанный на Python, в приложение для Windows, Linux или OS X. Да, для этого действительно существует множество пакетов, таких как кросс-платформенные cx_Freeze и PyInstaller, а также обособленных py2exe и py2app. Но для macOS существует возможность избежать возни с созданием установочного файла.
Читать дальше →
Всего голосов 16: ↑15 и ↓1+14
Комментарии0

Автоматизация развертывания Docker-контейнеров на произвольной инфраструктуре

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


Контейнеризация приложений сегодня является не просто модным трендом. Объективно такой подход позволяет во многом оптимизировать процесс серверной разработки путем унификации поддерживаемых инфраструктур (dev, test, staging, production). Что в итоге приводит к значительному сокращению издержек на протяжении всего цикла жизни серверного приложения.

Хотя большая часть из перечисляемых достоинств Docker является правдой, тех, кто на практике столкнется с контейнерами, может постигнуть легкое разочарование. И так как Docker не является панацеей, а всего лишь входит в список из «лекарственных средств» от рецепта автоматического деплоя, разработчикам приходится осваивать дополнительные технологии, писать дополнительный код и т.д.
Читать дальше →
Всего голосов 21: ↑21 и ↓0+21
Комментарии28

Фиеричная система счисления, или почему 1 + 10 = 100

Время на прочтение9 мин
Количество просмотров62K
«10.01 х 10.01 = 1000.1001»
Джордж Оруэлл. «1010001001001000.1001001000100001»


image


Существует ли позиционная система счисления с иррациональным основанием, в которой все натуральные числа записываются конечным числом цифр? В которой число больше единицы, не имеющее цифр после запятой, наверняка не целое и даже не рациональное? В которой 1 + 10 = 100, а 1 + 1 = 10.01?
Я заинтригован и хочу узнать ответ
Всего голосов 92: ↑89 и ↓3+86
Комментарии54

Восстановление данных PostgreSQL после потери pg_control

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

Для обеспечения отказоустойчивости СУБД PostgreSQL, как и многие базы данных, использует специальный журнал, в котором ведет историю изменения данных. Перед тем как записать данные в файлы БД, сервер PostgreSQL аккумулирует изменения в оперативной памяти и записывает в последовательный файл журнала, чтобы не потерять их из-за непредвиденного отключения питания.


Данные в журнал пишутся до того как пользователь базы данных получит сообщение об успешном применении изменений. Этот журнал называется журналом упреждающей записи (Write-Ahead Log или просто WAL), а файлы журнала хранятся в каталоге pg_xlog. Также периодически PostgreSQL сбрасывает измененные аккумулированные данные из оперативной памяти на диск. Этот процесс согласования данных называется контрольной точкой (checkpoint). Контрольная точка выполняется также при каждом штатном выключении PostgreSQL.


Информация о том, с какими внутренними значениями завершилась контрольная точка, хранится в файле global/pg_control и потому этот файл должен быть доступен СУБД еще до момента восстановления данных. Если PostgreSQL отключается нештатно, то изменения из файлов журнала (pg_xlog) применяются к файлам БД, начиная с позиции последней контрольной точки. Этот процесс называется восстановлением данных.


В файле pg_control находится информация:


  • версия формата control-файла,
  • контрольная сумма записанных в этот файл данных,
  • версия формата файлов БД,
  • уникальный идентификатор экземпляра БД,
  • текущее состояние: работает/остановлен,
  • позиция в журнале, соответствующая запущенной и предыдущей контрольным точкам,
  • текущая ветвь времени (timeline),
  • максимальный видимый номер транзакции (xid),
  • максимальный номер внутреннего счетчика объектов (oid),
  • время создания,
  • и многое другое.

Посмотреть содержимое pg_control можно при помощи утилиты pg_controldata:


$ pg_controldata /var/lib/pgsql/9.5/data

pg_control version number:            942
Catalog version number:               201510051
Database system identifier:           6242923005164171508
Database cluster state:               in production
pg_control last modified:             Fri Apr 29 01:00:00 2016
Latest checkpoint location:           EEAF/BAA5520
Prior checkpoint location:            EEAF/BAA5440
...
Latest checkpoint's NextXID:          7/876524573
Latest checkpoint's NextOID:          264355612
Latest checkpoint's NextMultiXactId:  134512401
Latest checkpoint's NextMultiOffset:  547842659
...
Читать дальше →
Всего голосов 25: ↑25 и ↓0+25
Комментарии10

Пишем фоновый процесс на Apache Cordova

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

Два года назад я увлекся мобильной разработкой под Android. Тогда я писал простенькие приложения для парсинга веб-сайтов. Программный код писался на Java. Это очень мощный язык, но для написания простых легковесных приложений, не выполняющих сложных задач, его объектно-ориентированная парадигма показалась мне не слишком кстати. В то время я только начинал знакомиться с JavaScript. Изначально он привлек меня своей простотой, затем я стал открывать в нем все большие и большие возможности. Я был знаком с HTML5 и CSS3, удовольствия ради создавал симпатичные веб-страницы.

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

Вышел uvloop — продвинутая реализация цикла событий для asyncio в Python

Время на прочтение1 мин
Количество просмотров44K
В стандартной библиотеке Python 3.4 в своё время появился модуль asyncio, позволивший удобно и быстро писать асинхронный код. А уже к Python 3.5 в синтаксис были добавлены конструкции async/await, окончательно оформившие асинхронность «из коробки» как красивую и гармоничную часть языка.



Хотя asyncio сам по себе и позволяет писать высоконагруженные веб-приложения, оптимизация производительности не была приоритетом при создании модуля.

Один из авторов упомянутого PEP-492 (async/await) Юрий Селиванов (на Хабре — 1st1, его твиттер) взялся за разработку альтернативной реализации цикла событий для asyncio — uvloop. Вчера вышла первая альфа-версия модуля, о чём автор написал развёрнутый пост.

Если вкратце, то uvloop работает примерно в 2 раза быстрее Node.js и практически не уступает программам на Go.
Под катом небольшая выжимка из записи в блоге
Всего голосов 34: ↑32 и ↓2+30
Комментарии60

Бесплатная подборка из 40 эффектов CSS

Время на прочтение4 мин
Количество просмотров84K
В посте собрана подборка различных эффектов и анимации CSS, которые могут пригодиться в работе, а кроме того избавят от необходимости постоянно прибегать к JavaScript. Возможно примеры не самые новые и необычные, но на мой взгляд, полезные.

1. Часы CSS3 с jQuery


Эти часы созданы с использованием одного из основных инструментов CSS3 – rotate и с подключением библиотеки JQuery.



Читать дальше →
Всего голосов 39: ↑21 и ↓18+3
Комментарии10

За что ругают Golang и как с этим бороться?

Время на прочтение5 мин
Количество просмотров75K
Написав несколько проектов на Go, я оглянулся назад. Посмотрел на язык, на его плюсы и минусы. В этой статье хотелось бы поговорить о том, за что критикуют Go. Конечно же, речь пойдет об отсутствии ООП как такового, перегрузки методов и функций, обобщенного программирования и исключений. Действительно ли это доставляет столько проблем? Или это проблема подхода разработки? Я поделюсь своим опытом решения этих вопросов.
Читать дальше →
Всего голосов 39: ↑21 и ↓18+3
Комментарии78

Производительность Apache Parquet

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

Плохой пример хорошего теста


В последнее время в курилках часто возникали дискуссии на тему сравнения производительности различных форматов хранения данных в Apache Hadoop — включая CSV, JSON, Apache Avro и Apache Parquet. Большинство участников сразу отметают текстовые форматы как очевидных аутсайдеров, оставляя главную интригу состязанию между Avro и Parquet.


Господствующие мнения представляли собой неподтвержденные слухи о том, что один формат выглядит "лучше" при работе со всем датасетом, а второй "лучше" справляется с запросами к подмножеству столбцов.


Как любой уважающий себя инженер, я подумал, что было бы неплохо провести полноценные performance-тесты, чтобы наконец проверить, на чьей стороне правда. Результат сравнения — под катом.


Apache Parquet Logo

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

Пишем MVP приложение на Kotlin под Android

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


Разработка приложений на Kotlin под Android набирает популярность среди разработчиков, однако статей в русскоязычном сегменте Интернета довольно мало. Я решил немного подправить ситуацию, и написать туториал по разработке приложения на Kotlin. Мы напишем полноценное приложение с использованием всех трендовых библиотек (кроме RxJava) в мире Android-разработки. В конце у нас должно получиться расширяемое и легко тестируемое приложение (сами тесты мы писать не будем).
Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Комментарии24

Все, что хотел

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

Hotel – приют для localhost.


Запуск и управление всех ваших веб-проектов с одного адреса.


Больше, разных портов костылей.


Можно держать зоопарк портов для каждого проекта: 9000, 8000, 8080, 3000, 3001…
Или настраивать веб-сервер, править /etc/hosts файл или DNS для каждого проекта.
А еще помнить, как запускать девелоперский веб-сервер для каждого проекта:


  • gulp
  • gulp serve
  • gulp watch
  • ionic serve
  • browser-sync start --server --no-open --directory --files
  • http-server -p 9000
  • python -m http.server 8000
  • php -S localhost:8000
  • и так далее...

Сделать жизнь проще поможет hotel.


Читать дальше →
Всего голосов 40: ↑36 и ↓4+32
Комментарии11

Мультифон во FreePBX: полная автоматизация подключения

Время на прочтение4 мин
Количество просмотров13K
Приветствую!

Поделюсь еще одним маленьким, но очень полезным костылем к freepbx. Как известно, очень многие любят и пользуют multifon как sip-транк ко всяким астерискам, получая «почти-бесплатный» многоканальный входящий канал связи и вполне интересные цены на исходящий.

Стабильность сервиса, конечно, на уровне его цены. Но многих (в том числе меня) устраивает. При этом можно (и нужно!) одновременно пользоваться сим, например, для исходящих звонков по домашнему региону. Баланс «шевелится», номер не отберут за неиспользование.

Но иногда баланс уходит «в минус». Тогда мультифон отключается, и теряется настройка маршрутизации. При пополнении баланса звонки идут на сим, а не в asterisk.

Тем, у кого много таких транков, особенно на разных PBX (как у меня, я обслуживаю asterisk`и разных клиентов) — довольно проблематично постоянно отслеживать маршрутов «мультифонов» состояние вручную.

Я предлагаю автоматизированное решение для тех, у кого freepbx.
Читать дальше →
Всего голосов 10: ↑9 и ↓1+8
Комментарии19

Экспорт Избранного на Хабре в PDF. Версия 2.0

Время на прочтение3 мин
Количество просмотров28K
Доброго времени суток, хабражители!



Думаю, многих из вас когда-либо посещала мысль «вот бы сохранить статьи с Хабра». Такая же мысль посетила и меня чуть больше года назад.

Представляю вам новую версию программы закачки статей с Хабра, Гиктаймс и Мегамозг в формате PDF.

Новый проект называется HabraParse.

Проект состоит из библиотечки, которая парсит сайты, и скрипта, использующего лишь часть возможностей этой библиотеки. Скрипт написан на python3, для его работы потребуются модули docopt, requests и weasyprint (все их легко можно установить командой pip install name).

На текущий момент в скрипте имеются следующие возможности:
  • скачать статью по её ID;
  • скачать список URL избранного для заданного пользователя;
  • скачать статьи из избранного в папку в формате PDF или HTML (пока реализация HTML не на высоте, поэтому по умолчанию используется формат PDF, но он работает значительно дольше).


Использование опций --gt/--mm позволяет сохранять статьи с GeekTimes.ru и Megamozg.ru.

Краткое описание параметров скрипта
Usage:
  ./habraparse.py save_favs_list [--gt|--mm] <username> <out_file>
  ./habraparse.py save_favs [--gt|--mm] [-cn --save-html --limit=N] <username> <out_dir>
  ./habraparse.py save_post [--gt|--mm] [-c --save-html] <topic_id> <out_file>

По умолчанию все команды работают с проектом HabraHabr.ru.
При задании опций --gt/--mm скрипт будет работать с GeekTimes.ru/Megamozg.ru.

Команды:
  save_favs_list - сохранение в файл <out_file> списка URL избранного для пользователя <username>
  save_favs - сохранение в папку <out_dir> статей из избранного для пользователя <username>
  save_post - сохранение в файл <out_file> статьи с заданным ID



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

Читать дальше →
Всего голосов 48: ↑46 и ↓2+44
Комментарии53

Flume — управляем потоками данных. Часть 2

Время на прочтение23 мин
Количество просмотров14K
Привет, Хабр! Мы продолжаем цикл статей, посвященный Apache Flume. В предыдущей части мы поверхностно рассмотрели этот инструмент, разобрались с тем, как его настраивать и запускать. В этот раз статья будет посвящена ключевым компонентам Flume, с помощью которых не страшно манипулировать уже настоящими данными.

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

Palantir: как обнаружить ботнет

Время на прочтение7 мин
Количество просмотров19K
В 2009 году китайская киберразведка на своей шкуре испытала мощь всевидящего ока Palantir. Аналитики из Information Warfare Monitor раскрыли крупные китайские разведывательные операции — Ghostnet и Shadow Network. (отчет)



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

«Взаимодополняемость человека и компьютера — не только глобальный факт. Это еще и путь к созданию успешного бизнеса. Я осознал это на собственном опыте, полученном в PayPal. В середине 2000-х наша компания, пережив крах пузыря доткомов, быстро росла, но нас тревожила одна серьезная проблема: из-за мошенничеств с кредитными картами мы теряли больше 10 миллионов долларов ежемесячно. Совершая сотни и даже тысячи переводов в минуту, мы не могли физически отслеживать каждый из них — никакая команда контролеров не в состоянии работать с подобной скоростью. Мы поступили так, как поступила бы на нашем месте любая команда инженеров: попытались найти автоматизированное решение.»
Сказал Питер Тиль и основал Palantir.

Под катом кейс о том, как с помощью инструмента финансовой аналитики можно вскрыть ботнет.
Кейс «вымышленный», но на скриншотах фигурируют данные 2009 года.

(За помощь с переводом спасибо Ворсину Алексею)
Всего голосов 14: ↑12 и ↓2+10
Комментарии2

Объясняя необъяснимое. Часть 4

Время на прочтение8 мин
Количество просмотров22K
Конференция PG Day’16 с каждым днем всё ближе, а мы продолжаем публиковать серию статей Hubert Lubaczewski об анализе explain и его основных операциях.

В этом, надеюсь, предпоследнем посте серии я расскажу об оставшихся наиболее распространенных операциях, которые вы можете встретить в выводе explain.


Читать дальше →
Всего голосов 16: ↑15 и ↓1+14
Комментарии4
1
23 ...

Информация

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