Как стать автором
Обновить
6
0
Евгений Калитько @Kaluchi

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

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

Масштабирование до 100 миллионов пользователей. Кэшировать или не кэшировать?

Время на прочтение4 мин
Количество просмотров15K
Это вторая часть цикла «Масштабирование Wix до 100 миллионов пользователей». Вступление читайте тут.

Когда мы только запускали Wix, был использован стек Tomcat, Hibernate и Ehcache c базой данных MySQL и фронтендом на Flash. Почему мы выбрали этот стек? Да просто потому, что у нашего первого бэкенд-разработчика уже был опыт работы с ним. Частью этой архитектуры был Ehcache – отличная кэш-библиотека для Hibernate и JVM, которая создавала абстракцию в виде карты для кэша памяти и которая могла также быть сконфигурирована как распределенный кэш. Ehcache, в отличие от Memcached, запускается как процесс в JVM и в точности реплицирует состояние кэша для всех узлов кластера. Обратим внимание, что в то время (около 2006–2008 гг.) Encache все еще был независимым open source проектом и не был частью Terracotta (в рамках Terracotta модель репликации и дистрибуции может быть иной, но для данной статьи это не столь важно).

Аспекты использования кэша




Поскольку у нас уже были реальные клиенты, мы установили два сервера Tomcat для обеспечения дополнительной надежности. Следуя правилам выстраивания архитектуры, мы установили распределенный Ehcache-кластер между серверами. Мы исходили из того, что MySQL работает медленно (как и любая другая SQL-система), а значит кэш оперативной памяти обеспечит гораздо более высокую скорость чтения и снизит нагрузку на базу данных.
Читать дальше →
Всего голосов 31: ↑18 и ↓13+5
Комментарии25

Основы Elasticsearch

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

Elasticsearch — поисковый движок с json rest api, использующий Lucene и написанный на Java. Описание всех преимуществ этого движка доступно на официальном сайте. Далее по тексту будем называть Elasticsearch как ES.


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


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

Читать дальше →
Всего голосов 39: ↑38 и ↓1+37
Комментарии78

Palantir и отмывание денег

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


Palantir
[Контент удален по требованию Википедии]

На официальном канале Palantir есть видео с демонстрацией работы аналитика, использующего систему Palantir в ходе расследования отмывания денег. По-моему, как-то так видели пользу информационных технологий «отцы-основатели» Вэнивар Буш («As We May Think»), Дуглас Энгельбарт («The Mother of All Demos») и Джозеф Ликлайдер («Интергалактическая компьютерная сеть» и «Симбиоз человека и компьютера»), о которых я писал немного ранее.

(За помощь с переводом спасибо Ворсину Алексею)

Всего голосов 27: ↑23 и ↓4+19
Комментарии17

Сказ о том, как ГОСТ-шифрование диска в Android реализовывали

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

Летом 2015 года перед нами, разработчиками «Кода безопасности», встала задача реализации защищенного хранилища под Android с шифрованием по стандартам, признанным российским законодательством. До этого у нас уже было решение на планшете, к которому имелись исходники Android. И это позволило нам выпустить обновленное ядерное шифрование (dm-crypt) под поддержку ГОСТ 89, добавить в /system/lib ГОСТ-библиотеки, пропатчить cryptofs подсистему демона vold. В итоге в нашем распоряжении оказалось решение, которое подходило лишь для определенной модели планшета, и не являлось универсальным. Узнав, что в Android версии 4.4 (API уровня 19) появился API, позволяющий осуществлять доступ к данным после регистрации и реализации своего кастомного DocumentsProvider, мы решили создать решение, использующее GOST-шифрование в userspace с использованием данного API, которое не зависело бы от модели устройства.
Для тех, кто заитересовался — добро пожаловать под кат.

Читать дальше →
Всего голосов 19: ↑17 и ↓2+15
Комментарии36

Монолитные репозитории в Git

Время на прочтение8 мин
Количество просмотров44K
Многие выбрали Git за его гибкость: в частности, модель веток и слияний позволяют эффективно децентрализовать разработку. В большинстве случаев эта гибкость является плюсом, однако некоторые сценарии поддержаны не так элегантно. Один из них — это использование Git для больших монолитных репозиториев — монорепозиториев. Эта статья исследует проблемы монорепозиториев в Git и предлагает способы их смягчения.

Скала Улуру
Скала Улуру в Австралии как пример монолита — КДПВ, не более

Что такое монорепозиторий?


Определения разнятся, но мы будем считать репозиторий монолитным при выполнении следующих условий:
  • Репозиторий содержит более одного логического проекта (например, iOS-клиент и веб-приложение)
  • Эти проекты могут быть не связаны, слабо связаны или связаны сторонними средствами (например, через систему управления зависимостями)
  • Репозиторий большой во многих смыслах:
    • По количеству коммитов
    • По количеству веток и/или тегов
    • По количеству файлов
    • По размеру содержимого (то есть размеру папки .git)
Читать дальше →
Всего голосов 36: ↑33 и ↓3+30
Комментарии28

Как стать лидером в рейтинге Gartner

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


Gartner вновь решает, какие игроки на IT-рынке достойны звания лучших. Что имеет значение при составлении рейтинга? Как опередить других гигантов рынка?
Стать лидером
Всего голосов 12: ↑10 и ↓2+8
Комментарии0

Дуглас Энгельбарт: «The Mother of All Demos». Часть 1

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


9 декабря 1968 года в Сан-Франциско Дуглас Энгельбарт провел легендарную демонстрацию. Энгельбарт продемонстрировал несколько экспериментальных технологий, которые впоследствии стали общеупотребительными, в том числе первую компьютерную мышь, интерактивный текст, гипертекст, электронную почту, технологию видеоконференции.

Наряду с мыслями Вэнивара Буша (Как мы можем мыслить /As We May Think) и Джозефа «Lick» Ликлайдера («Интергалактическая компьютерная сеть» и «Симбиоз человека и компьютера»), мысли Энгельбарта легли в основу современных информационных технологий и интерфейсов.

Знать первоисточники — важно.
Пускай теперь будет перевод на русский язык.


Под катом транскрипт первых 15 минут (из 100). За перевод спасибо Щекотовой Яне.
(Кто готов помочь с переводом дальнейших кусков, пишите в личку.)
Всего голосов 6: ↑6 и ↓0+6
Комментарии2

Стоимость эквайринга

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


Всем привет! Обычно когда кто-то начинает сравнивать различных операторов интернет-платежей, разговор начинают со ставки, которую оператор берет за проведение транзакции. Сегодня мы поговорим об этом параметре и постараемся его детально разобрать. Стоимость транзакции (discount rate) для Торгово-Сервисного (ТСП) предприятия обычно задаётся в процентах от суммы платежа, а иногда к процентам добавляется ещё и фиксированная сумма. При этом комиссия взымается за успешную операцию авторизации (authorization), а так же, в некоторых случаях, может взыматься и за отклонённую (declined). Рефанды (refund) и чарджбеки (chargeback) могут облагаться дополнительной комиссией.

В России в основном принято брать % от суммы транзакции за успешную авторизацию. За рубежом к процентам часто добавляется фикса (fixed), при этом фикса может быть разбита по отдельным операциям (authorization, clearing и т.д.). С высокорисковых мерчантов очень часто берут плату как за отклонённую операцию, так и дополнительную стоимость за рефанды и чарджбеки.

Итак, ставка проведения платежа (authorization) состоит из:
  • interchange fee (комиссия, возвращаемая в банк выпустивший карту)
  • комиссии взымаемой Международными Платёжными Системами
  • наценкой Банка-эквайера и агентов (если они есть).

Разберем эти понятия более подробно!

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

Обходим антивирус при помощи десяти строк кода

Время на прочтение2 мин
Количество просмотров65K
Специалист по информационной безопасности под ником evasiv3 опубликовал на прошлой неделе запись в своем блоге, в которой рассказывается о том, как можно обойти любой антивирус при помощи десяти строк кода.

Изначально Evasiv3 планировал написать огромный пост о способах обхода антивирусной защиты, однако, протестировав первый шаг своего «руководства» он был очень удивлен: ни один из 56 протестированных продуктов, призванных обеспечить безопасность пользователя в сети, не обнаружил его бинарник.

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

Читать дальше →
Всего голосов 72: ↑43 и ↓29+14
Комментарии44

Deep Reinforcement Learning (или за что купили DeepMind)

Время на прочтение5 мин
Количество просмотров43K
Продолжаю рассказывать про успехи DeepMind. Этот пост про их первое известное публике достижение — алгоритм, который обучается играть в игры Atari, не зная об играх ничего, кроме пикселей на экране.

Вот, собственно, главный артефакт (если вы это видео не видели, посмотрите обязательно, оно взрывает мозг)


Вот столько примерно публично известно про компанию, когда ее покупают за полмиллиарда долларов.
Давайте разбираться, как это работает
Всего голосов 41: ↑40 и ↓1+39
Комментарии15

Вступление в Реактивное Программирование, которое вы пропустили

Время на прочтение5 мин
Количество просмотров91K
Ну что ж, вы решили выучить новую вещь, которая называется Реактивное программирование (Reactive Programming), а в частности — его имплементацию в виде Rx, Bacon.js, RAC или чего-то другого.
Читать дальше →
Всего голосов 25: ↑21 и ↓4+17
Комментарии22

Персистентная оперативная память

Время на прочтение5 мин
Количество просмотров28K
Сегодня — рассказ про одну из ключевых концепций ОС Фантом. Впрочем, сама концепция, конечно, существовала и до Фантома — фактически, у Танненбаума в конце книги, там, где он позволяет себе фантазировать, просматриваются очертания почти всех особенностей Фантома, так что, в целом, подход довольно очевиден для тех, кто хотя бы задумывается о будущем систем вообще.

Персистентная оперативка — очень простая и очень непростая вещь.

В целом, всё просто: представьте себе, что содержимое оперативной памяти не пропадает. Никогда. Например, при выключении компьютера. Или, например, при… исчезновении компьютера. «И души умерших программ носятся над водою».

Ну, действительно — неважно: если мы смогли спасти состояние компьютера перед его отключением, то можно восстановить это состояние в другом. Таком же. Вообще таком же? Прямо до микросхемы? А если в нём видеокарта другая — уже нельзя?

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

А задача — именно такова. Обеспечить программе среду, в которой остановка ОС и остановка компьютера для программы выглядели исключительно как нажатие на кнопку «пауза» при просмотре фильма. Во время паузы «под программой» можно даже компьютер поменять, но надо как-то обеспечить ситуацию, в которой продолжение работы для программы будет совершенно прозрачным.

Это недостижимо, если требование доводить до абсолюта. Состояние хардвера сохранить и полностью восстановить нельзя. Но и не надо. Программе не нужна видеокарта, ей нужен тот же API и сохранённая картинка на экране, а это — можно.
Читать дальше →
Всего голосов 37: ↑35 и ↓2+33
Комментарии68

Вторая загадка Марса

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


Сегодня в 12:31 с Байконура стартует ракета «Протон-М», которая отправит к Марсу космические аппараты международной исследовательской миссии ExoMars. Увидеть пуск можно будет на Яндексе, который в 11:45 начнет трансляцию из студии Роскосмоса. Яндекс попросил меня рассказать подробнее о планируемой миссии и ее целях.

Все знают, что никто не знает есть/была ли жизнь на Марсе. Это первая загадка. Пятнадцать лет назад второй загадкой была вода на Марсе. Сейчас ее уже многократно разгадали — воду нашли, картографировали, изучили с поверхности. Но к тому времени нашли загадку не менее важную — марсианский метан.
Читать дальше →
Всего голосов 93: ↑87 и ↓6+81
Комментарии30

Фейковая Новелла: маленькая игра, разработка которой многому меня научила и очередной бан от Google

Время на прочтение19 мин
Количество просмотров89K
Многим знакомо чувство, когда чувствуется энергия от той самой идеи, что позволит свернуть горы и разработать законченное приложение, а не пополнить кладбище недоделок. Я по доброму завидую тем людям, что умеют трезво рассчитывать свои силы, а не увязать в трясине под гнётом рутины. У меня хватало сил, чтобы не дать начать себе что-то новое… Но конечно, разработка больших и длинных хобби проектов «потому, что бросить» жалко тянет соки, а не приносит радость. Эта публикация о том, как я намеренно дал слабину, чтобы поднять себе настроение, разработав простую игру за три дня. И сделал её за неделю, потратив десять маффинов, но получив кучу опыта и хорошего настроения.
Прочитать о семи днях ненормальной разработки
Всего голосов 72: ↑56 и ↓16+40
Комментарии64

Битрикс, HMVC и немного бреда…

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


Здрасте! Наверняка многие знают, что такое CMS Битрикс, что она из себя представляет и какие «замечательные» код и архитектурные решения представляют его разработчики. В данном посте я хотел бы предложить новое видение на разработку компонентов и модулей системы.
Читать дальше →
Всего голосов 25: ↑17 и ↓8+9
Комментарии40

Реверс-инжиниринг «Казаков», часть вторая: увеличение очереди

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


В большинстве случаев слово «очередь» не вызывает положительных эмоций, тем более в сочетании со словом «увеличить». Но если вы любите играть с миллионами единиц ресурсов к началу игры, чтобы на десятой минуте бросить в бой тысячи солдат, то стандартного заказа по пять боевых единиц единиц с помощью клавиши Shift вам будет мало. Вот если бы можно было заказывать по 20 или по 50 солдат, или ещё лучше – иметь несколько разных клавиш-модификаторов…
...можно, если осторожно, или Одиссея длинною в 172 байта
Всего голосов 62: ↑62 и ↓0+62
Комментарии24

Как можно упростить себе жизнь с помощью Telegram-бота

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

О чём эта статья?


Эта статья — краткий рассказ о том, как с помощью подручных средств (Firefox) и Python можно осуществить успешную интеграцию Telegram-бота и внешнего сервиса.

Материал будет интересен тем, кто наслышан о Telegram'ных ботах, но не знает, как к ним подступиться и какие задачи с их помощью можно решать. Предполагается знание Python.

Картинка для привлечения внимания:

writing a twitter bot
(ссылка на оригинал)

TL;DR


Из статьи вы узнаете:

1. Как с помощью браузера узнать, какой запрос отправляется на сервер при клике по кнопке?

Ответ
Используя web tool вашего любимого браузера можно увидеть все запросы, которые отправляются из открытой страницы на сервер.


2. Как легко отправить запрос на сервер с помощью Python?

Ответ
Удобной обёрткой над стандартным модулем urllib2 является библиотека requests. Подробнее на Хабре: "Библиотека для упрощения HTTP-запросов".


3. Как написать бота на Python?

Ответ
Полнофункциональная обёртка реализована в библиотеке python-telegram-bot. Пока на Хабре эта библиотека не упоминалась.

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

Кризис ожирения сайтов

Время на прочтение30 мин
Количество просмотров123K
Примечание переводчика: визит под кат этого поста означает большие объёмы потреблённого трафика. И это иронично, если учесть поднятую тему. Но всё сразу встаёт на свои места, если помнить, что в оригинале это было выступление в прошлом ноябре в Сиднее длиной почти в час. Чтение поста занимает куда меньше времени. В форме видеозаписи (1280×720) речь занимает два гигабайта. Пост же занимает всего лишь 12 МиБ. Рекомендуется просмотр на широких мониторах.



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

Выступление совсем не об этом. Я хотел бы поговорить об этом общественном кризисе здоровья, этом ожирении сайтов. Отличные дизайнеры, которые задумываются о вебе как я или даже больше, почему-то делают страницы, которые становятся больше. Речь пойдёт о текстовых в своей основе сайтах, которые по каким-то непостижимым причинам с каждым годом становятся всё больше и больше.
Читать дальше →
Всего голосов 97: ↑93 и ↓4+89
Комментарии123

FLIF — свободный формат сжатия изображений

Время на прочтение2 мин
Количество просмотров40K
FLIF (Free Lossless Image Format) — это новый свободный формат сжатия без потери качества, который превосходит PNG, lossless WebP, lossless BPG, lossless JPEG2000 и lossless JPEG XR по степени сжатия.

Как показало сравнительное тестирование (результаты), файлы FLIF в среднем:

  • на 14% меньше, чем lossless WebP,
  • на 22% меньше, чем lossless BPG,
  • на 33% меньше, чем PNG с брутфорсом через ZopfliPNG,
  • на 43% меньше типичного PNG,
  • на 46% меньше PNG, оптимизированного алгоритмом образования чересстрочного изображения Adam7,
  • на 53% меньше lossless JPEG2000,
  • на 74% меньше lossless JPEG XR.
Читать дальше →
Всего голосов 60: ↑51 и ↓9+42
Комментарии62

Почему владение/заимствование в Rust такое сложное?

Время на прочтение5 мин
Количество просмотров12K
Оригинал статьи написан живущим на вашингтонщине Иваном Сагалаевым, мужем небезызвестной Алёны C++.

Сама статья.

Работать с чистыми функциями просто: вы передаете аргументы и получаете результат, при этом нет никаких побочных эффектов. С другой стороны, если функция производит побочные эффекты, такие, как изменение собственных аргументов или же глобальных объектов, то найти причины этого трудно. Мы привыкли также, что если видим что-то вроде player.set_speed(5), то можно быть уверенным, что тут собираются изменить объект player предсказуемым способом (и, возможно, посылают некоторые сигналы куда-нибудь).

Система владения/заимствования языка Rust сложна и она создает совершенно новый класс побочных эффектов.
Читать дальше →
Всего голосов 22: ↑19 и ↓3+16
Комментарии11

Информация

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