Pull to refresh
3
0
Send message

Clickhouse — непростая жизнь в продакшене

Level of difficulty Hard
Reading time 13 min
Views 20K

Около двух лет назад вышла небольшая статья Kafka Streams — непростая жизнь в production, в которой я описывал сложности, с которыми наша команда столкнулась при попытке решить задачи проекта с помощью kafka-streams. Эксперимент вышел неудачным, и мы в итоге совсем отказались от этой технологии. Вместо нее решили попробовать Clickhouse (CH), и сейчас уже можно сказать, что эта база нам очень хорошо подошла и отлично решает почти все задачи, которые нам ставит бизнес. В этой статье я расскажу об особенностях использования CH.

Читать далее
Total votes 41: ↑41 and ↓0 +41
Comments 7

Скандальное разоблачение x86: ARM врывается с двух ног

Reading time 10 min
Views 48K

На рынке микроэлектроники царствуют две архитектуры: x86 и ARM (Advanced RISC Machine). И до недавнего времени они сосуществовали в идиллии — с лёгкими нотками конкуренции. Но недавно Apple ткнула палкой в это… болото, показав Apple silicon M1. Все техноблогеры визжали от счастья и отправляли цветы в кабинет Кука. It's a revolution, Jony Timmy. 

Но Apple всего лишь ударила клюшкой туда, где шайба окажется, а не туда, где шайба находится сейчас. И не промахнулась.

Но на самом деле революция случилась раньше — в серверном сегменте (об этом я расскажу в следующей статье из цикла).

Дропдаун
Total votes 100: ↑80 and ↓20 +60
Comments 158

NETSCAPE: Хроника взлетов и падений

Reading time 13 min
Views 9.7K


У каждого из нас есть любимый браузер. Кто-то привык к Chrome с его синхронизацией «избранного» и сохраненных паролей через сервисы Google, кому-то ближе Opera со встроенным VPN, позволяющим без проблем заглядывать на LinkedIn, Rutracker и тысячи других заблокированных сайтов. Маководы традиционно пользуются Safari, есть своя армия поклонников и у «огнелиса» с его широчайшим ассортиментом всевозможных плагинов. Но еще два с небольшим десятка лет назад выбирать было, в общем-то, не из чего. В составе Microsoft Windows 9x/NT4 имелся Internet Explorer, конкуренцию которому составлял браузер под названием Nescape Navigator, получивший в юзерской среде ласковое прозвище «Нетшкаф». Сегодняшний вечер воспоминаний посвящен истории этой легендарной программы.
Читать дальше →
Total votes 29: ↑29 and ↓0 +29
Comments 24

Управление по защите данных Германии: телеметрия в Windows 10 1909 Enterprise может быть полностью отключена

Reading time 8 min
Views 35K

Телеметрия давно стала горячо обсуждаемой темой с момента, когда Microsoft выпустил первую версию Windows 10. Microsoft решил глубоко интегрировать сбор данных в операционную систему — да так глубоко, что у пользовательских выпусков Windows 10 Home и Windows 10 Pro не было опции по полному отключению телеметрии.

Читать дальше →
Total votes 20: ↑20 and ↓0 +20
Comments 134

Кодогенерация из OpenAPI v3 (aka Swagger 3) в TypeScript и не только

Reading time 23 min
Views 24K

Два года назад я начал разработку еще одного свободного кодогенератора из OpenAPI Specification v3 в TypeScript (он доступен на Github). Изначально, я задался целью сделать эффективную генерацию примитивных и сложных типов данных в TypeScript, с учетом различных возможностей JSON Schema, таких как oneOf/anyOf/allOf и т.п. (у родного решения от Swagger с этим были некоторые проблемы). Другая идея заключалась в том, чтобы использовать схемы из спецификаций для валидации на фронте, бэке и в других частях системы.


Читать дальше →
Total votes 11: ↑11 and ↓0 +11
Comments 11

Как обойти SMS-идентификацию при подключении к публичным Wi-Fi сетям?

Reading time 4 min
Views 95K
В 2014 году начали свое действие постановления правительства РФ №758 №801, обязывающие владельцев публичных WiFi сетей настроить на роутерах идентификацию пользователей через паспортные данные, sms или портал гос. услуг. Нежелание владельцев кафе тратиться за Captive portal'ы поспособствовало некоторым провайдерам в распространении своих точек доступа с платной sms-авторизацией. У меня возникло желание проверить, можно ли подобную sms-авторизацию обойти.

image
Читать дальше →
Total votes 128: ↑118 and ↓10 +108
Comments 143

Различия Phoenix и Rails глазами новообращённого

Reading time 8 min
Views 9.7K

Что больше всего бросилось в глаза заядлому рубисту, когда он только только начал изучать Elixir с Phoenix-ом.
Посмотреть чужими глазами
Total votes 24: ↑24 and ↓0 +24
Comments 16

Мониторинг производительности дисковой подсистемы при помощи zabbix и block stat

Reading time 5 min
Views 36K
Вряд ли кто-то будет спорить, что наблюдение за производительностью дисковой подсистемы — чуть ли не важнейшая задача для всех высоконагруженных систем хранения и баз данных. Я изначально столкнулся с этим давным-давно, еще когда приходилось наблюдать за PostgreSQL. В последнее время вернулся к этому вопросу в связи с необходимостью тестирования различных хранилищ.

Сегодня хочу поделиться с сообществом своим текущим опытом на реальном примере zabbix и его связке с block stat.


Читать дальше →
Total votes 16: ↑14 and ↓2 +12
Comments 31

Профилировщик запросов в БД в Phoenix. И немножко о том как работает stacktrace в Elixir/Erlang

Reading time 4 min
Views 3K

В нашей компании мы используем Elixir, фреймворк Phoenix и Ecto. И недавно на работе мне поставили задачу, сделать профилировщик запросов в БД, чтобы выяснить узкие точки системы, которые следует оптимизировать. Таким образом задачи были следущие:


  1. Выяснить, какие функции чаще всего обращаются в базу (query calls)
  2. Выяснить какие функции создают самые долгие и медленные запросв (query time)
  3. Результаты необходимо аккумулировать и выводить в виде списка/графика.

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


https://github.com/parroty/exprof
http://erlang.org/doc/man/fprof.html
https://github.com/proger/eflame
https://github.com/TheRealReal/new-relixir


и др.


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

Читать дальше →
Total votes 13: ↑13 and ↓0 +13
Comments 0

Телеграм-бот для домашнего видео-наблюдения из подручных материалов

Reading time 7 min
Views 57K

Disclaimer


Эта статья содержит некоторое количество программного кода, написанного на языке Python. Ввиду того, что автор статьи по профессии является сисадмином, но не программистом — стиль и качество этого кода, могут вызвать проявление неконтролируемых эмоций у профессионалов. Пожалуйста, немедленно прекратите чтение если вид неаккуратного или неоптимального кода может негативно сказаться на вашем психическом состоянии.


Постановка задачи


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



Из всего перечисленного, было решено построить систему домашнего видео-наблюдения с функционалом оповещения о вторжении. В качестве платформы был выбран телеграм-бот. Бот имеет следующие преимущества перед другими возможными реализациями (веб, мобильное приложение):


  • Не требуется установки дополнительного клиентского ПО
  • Серверная часть может работать с приватным IP адресом через NAT, при этом предъявляются минимальные требования к подключению (вплоть до 3G модема)
  • Большая часть инфраструктуры находится на стороне сервис-провайдера, который за меня решил вопросы авторизации, безопасности итп...

С помощью беглого анализа интернет-публикаций, существующие решения обнаружены не были.

Читать дальше →
Total votes 29: ↑27 and ↓2 +25
Comments 52

Работаем с биткоином на Эликсире

Reading time 6 min
Views 13K

Недавно меня с головой захватил волшебный мир биткоин. Жажде знаний не было предела, и утолить её помогла замечательная книга «Mastering Bitcoin» Андреаса Антонопулоса и полное погружение в биткоин-разработку. Книга подробно освещает технические основы биткоин, но ничто так не помогает в изучении нового дела, как практика.


Простенькое приложение на Эликсире для управления полной биткоин-нодой и связи с ней через интерфейс JSON-RPC, по-моему, – отличный «Hello, World!». Поехали!

Читать дальше →
Total votes 17: ↑13 and ↓4 +9
Comments 3

Моки и явные контракты

Reading time 8 min
Views 54K

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


Ниже представлен вольный перевод статьи, в которой José Valim — создатель языка Elixir — высказал своё мнение на проблему использования моков, с которым я полностью согласен.




Несколько дней назад я поделился своими мыслями по поводу моков в Twitter:



Мок — полезный инструмент в тестировании, но имеющиеся тестовые библиотеки и фреймворки зачастую приводят к злоупотреблению этим инструментом. Ниже мы рассмотрим лучший способ использования моков.

Читать дальше →
Total votes 11: ↑10 and ↓1 +9
Comments 3

Миграция VueJS приложения на Vuex

Reading time 6 min
Views 19K
Всем привет! Нам бы хотелось представить вашему вниманию статью Энтони Гора о миграции Vue.js-приложения на Vuex.


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

Далее следует перевод статьи. Всех, кому интересна данная тема, приглашаю под кат.
Читать дальше →
Total votes 31: ↑28 and ↓3 +25
Comments 10

«Алгоритмы консенсуса»: Подтверждение доли и доказательство работы

Reading time 10 min
Views 45K
Блокчейн — это распределенная система, в которой могут находиться тысячи участников. В отличие от обычных распределенных баз данных, в блокчейне почти всегда отсутствует центральный администратор, который конфигурирует узлы сети, поэтому получается, что архитектура блокчейна не просто распределена, но децентрализована. В связи с этим для блокчейна является актуальной задача распределенного консенсуса:

«Как узлам сети достичь одинаковой точки зрения на журнал транзакций блокчейна в распределенной сети при условии, что произвольные узлы могут «падать» или зависать, руководствуясь лишь общими правилами обработки сообщений в сети?»

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

Читать дальше →
Total votes 23: ↑22 and ↓1 +21
Comments 23

Chrome 57 будет активно подавлять работу фоновых вкладок

Reading time 4 min
Views 25K


Ближайшие изменения в браузере Chrome вряд ли порадуют разработчиков Slack, Discord и других программ, которые работают во вкладках браузера. В бета-версии Chrome 56 реализован новый механизм оптимизации таймеров для фоновых вкладок.

На первый взгляд, инициатива разработчиков выглядит хорошим делом. В сентябрьском плане внедрения (Intent to Implement) объясняются причины, которые сподвигли разработчиков на такое решение.

Главная причина — некоторые плохо спроектированные приложения (например, скрипты аналитики и javascript-реклама) потребляют много ресурсов CPU, хотя находятся в фоновом режиме. Это негативно отражается на производительности браузера и потребляет энергию аккумулятора на мобильных устройствах. Такая обработка активности в фоновых вкладках совершенно ни к чему. Идея состоит в том, чтобы установить максимальный лимит вычислительных ресурсов, которые можно дать фоновому приложению.
Читать дальше →
Total votes 38: ↑37 and ↓1 +36
Comments 78

Мониторинг Postgresql: запросы

Reading time 6 min
Views 56K

В 2008 году в списке рассылки pgsql-hackers началось обсуждение расширения по сбору статистики по запросам. Начиная с версии 8.4 расширение pg_stat_statements входит в состав постгреса и позволяет получать различную статистику о запросах, которые обрабатывает сервер.


Обычно это расширение используется администраторами баз данных в качестве источника данных для отчетов (эти данные на самом деле являются суммой показателей с момента сброса счетчиков). Но на основе этой статистики можно сделать мониторинг запросов — посмотреть на статистику во времени. Это оказывается крайне полезно для поиска причин различных проблем и в целом для понимания, что происходит на сервере БД.


Я расскажу, какие метрики по запросам собирает наш агент, как мы их группируем, визуализируем, так же расскажу о некоторых граблях, по которым мы прошли.

Читать дальше →
Total votes 27: ↑27 and ↓0 +27
Comments 8

Разгугленный Chromium

Reading time 4 min
Views 73K
Даже если у вас нет аккаунта в Google, свободный браузер Chromium всё равно в фоновом режиме обменивается данными с серверами Google. Это довольно странно, ведь люди устанавливают Chromium вместо Chrome именно для того, чтобы получить чистую программу без коммерческой привязки. Тем не менее, при сборке Chromium в нормальном режиме всё равно скачиваются и устаналиваются бинарные блобы от Google.

Проект ungoogled-chromium — это набор конфигурационных флагов, патчей и специальных скриптов, чтобы удалить интеграцию с Google, улучшить настройки безопасности и управления.
Читать дальше →
Total votes 35: ↑33 and ↓2 +31
Comments 40

Mandrill всё? Как я искал замену и нашел 2 прекрасные альтернативы Мандрилу

Reading time 4 min
Views 59K
TL;DR: Mandrill захотел поднять цены в 4 раза. Они нашли способ через интеграцию с MailChimp.

В феврале этого года, как гром среди ясного неба, пришло письмо от Mandrill о том, что с 27го апреля он перестаёт существовать как независимый сервис и теперь чтобы им пользоваться нужно будет интегрировать свой Mandrill аккаунт в платный аккаунт MailChimp. Именно платный, пусть даже и самый дешевый. Вот как выглядит ценник MailChimp:



Напомню, что раньше Mandrill был бесплатным для небольших проектов до 12.000 писем в месяц (около 400 в день). Сейчас же как минимум $20 + сколько напосылаешь писем.
Читать дальше →
Total votes 25: ↑23 and ↓2 +21
Comments 69

Генерал Фузион

Reading time 3 min
Views 35K
Сегодня я расскажу про один альтернативный проект создания реактора управляемого термоядерного синтеза, который лично мне нравится за свою абсолютную инженерную непохожесть ни на что. Речь пойдет о канадском стартапе General Fusion, существующем уже больше 10 лет и собравшем за это время порядка 100 млн долларов на свои разработки.

image

Сооснователи компании Doug Richardson (слева) и Michel Laberge (справа) на фоне плазменного инжектора для своей машины.
Читать дальше →
Total votes 74: ↑73 and ↓1 +72
Comments 59

RE: Возможны ли путешествия во времени?

Reading time 9 min
Views 66K
Вчера на Хабре появился потрясающий по своей безграмотности пост "Возможны ли путешествия во времени". В ответ на моё замечание о незнакомстве с базовыми научными представлениями о пространстве и времени автор припечатал меня вот так:
Если для Вас википедия — главный оплот истины и знаний, а физические законы непоколебимы — Вам пора на работу в инквизицию. Еще столько людей, опровергающих теоретические выдумки физиков 18 века, не сожжено!

Такого уровня воинствующего невежества я давно не видал, и уж на Хабре-то его видеть вдвойне странно.

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

Время



В классической механике время считается абсолютным и неизменным в том смысле, что при переходе от одной системы отсчёта к другой временные интервалы не изменяются:






Здесь (x, y, z, t) — координаты в старой системе, (x', y', z', t') — координаты в новой системе. Здесь и далее предполагается (для упрощения формул), что одна система движется относительно другой параллельно оси x со скоростью v.

Это т.н. преобразования Галилея — что происходит с координатами при смене системы отсчета. В галилеевом смысле «поток времени» один на всю Вселенную, и временные координаты у всех объектов одинаковы. При этом классическая механика никак не трактует уникальность стрелы времени; более того, само понятие движения времени в ньютоновы формулы не входит никак.

В классической механике мы сами вводим движение от прошлого к будущему. Допустим, у нас задан набор материальных точек (координаты и скорости) и действующих сил. Далее мы задаёмся каким-то интервалом dt и смотрим, как система будет эволюционировать во времени. Никто не мешает нам двигаться в обратном направлении и следить, что происходило с системой в прошлом.

Однако «путешествие во времени» — т.е. перемещение одного конкретного объекта по шкале t в прошлое — ньютоновой механикой запрещено (см. выше — временной поток один на всю Вселенную).

Ситуация стала гораздо веселее, когда Максвелл сформулировал свою электродинамику, а затем Эйнштейн в попытках решить противоречия электродинамики и классической механики создал теорию относительности.

Читать дальше →
Total votes 293: ↑271 and ↓22 +249
Comments 252

Information

Rating
Does not participate
Registered
Activity