Pull to refresh
90
Karma
0
Rating
Новиков Андрей @Envek

Веб-разработчик Злых марсиан: бэкенд и всё вокруг

Под капотом Ruby. GVL

Ruby *Programming *System Programming *C *Concurrent computing *

Давным давно уже уже была написана статья о том что такое GVL (или GIL, кому как привычнее) и как он работает, однако с того времени некоторые вещи поменялись (к примеру, , а так же в Ruby 3.0 завезли Ractor'ы - новую абстракцию для реальной параллельной работы тредов. Мне стало интересно узнать что поменялось в планировщике ruby для реализации множества GVL. В этой статье я попытаюсь понять алгоритм, по которому GVL передается от одного треда к другому, как блокирующее IO позволяет продолжить работать другим тредам, а так же выяснить до сих пор ли операция добавления элемента в массив является атомарной операцией

Читать далее
Total votes 12: ↑12 and ↓0 +12
Views 3.3K
Comments 4

Киберспорт для детей как новая улица — и как средство социализации

Орбита corporate blog Project management *Cybersport


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

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

Дальше пошёл мягкий психодел. Родители же рассказывали как дети загружены, какое у них сумасшедшее расписание.

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

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

А пока давайте чуточку похоливарим!
Читать дальше →
Total votes 50: ↑49 and ↓1 +48
Views 21K
Comments 66

One Tool to Analyze Them All

Тензор corporate blog PostgreSQL *SQL *Database Administration *Data visualization *
Мы рады сообщить о реализации на explain.tensor.ru базовой поддержки анализа и визуализации планов, специфичных для PostgreSQL-совместимых решений: Timescale, Citus, Greenplum и Redshift.


Так что если в будущем вам встретится план, похожий на результат обычного EXPLAIN, но с некоторыми странными узлами — вы знаете, куда идти.

EXPLAIN <-> SQL


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


Читать дальше →
Total votes 22: ↑20 and ↓2 +18
Views 2.7K
Comments 3

Как Амплифер использует Logux — инструмент для связи клиента и сервера

Ajax *Website development *JavaScript *
🔥 Technotext 2020

Logux — инструмент для связи клиента и сервера


Меня зовут Виталий Ризо, я старший фронтенд-разработчик в «Амплифере». Поделюсь, как мы применяем Logux в веб-приложении: организуем обмен данными в реальном времени, уведомления об ошибках без перезагрузки страницы, общение между вкладками браузера и интеграцию с Redux.

Читать дальше →
Total votes 21: ↑20 and ↓1 +19
Views 5.4K
Comments 5

Чему меня, как разработчика, научили аварии в космосе

VK corporate blog Programming *System Analysis and Design *History of IT Astronautics
Translation

Оригинал: статья «What I learned as a developer from accidents in space», Андрея Ситника, из блога Evil Martians «Martian Chronicles»

Андрей Ситник, автор PostCSS и Автопрефиксера, сделал подборку историй, связанных с освоением космоса Советским Союзом. Вы узнаете, какие уроки из них извлёк Андрей, чтобы вырасти как разработчик и участник опенсорс-движения. Неудачная стыковка, драматический вход в атмосферу и уникальный переход вдоль поручня между космическими кораблями — какое отношение всё это имеет к современной веб-разработке? Обо все этом читайте в посте!

Исследования космоса интересовали меня, сколько я себя помню. Люди, знавшие меня лично, слышали рассказов о космосе больше, чем им хотелось бы. До того, как присоединиться к Evil Martians, я администрировал русскоязычную версию Википедии, и одним из моих любимых увлечений была редактура связанных с космосом статей. Я ездил наблюдать за запусками на Байконуре и мысе Канаверал, и чем больше я узнавал об усилиях по покорению космоса, тем сильнее эти знания влияли на меня как на разработчика. 

Хотя писать программы не так сложно, как строить ракеты (по большей части), но всё же мы, программные инженеры, часто работаем в больших командах, создающих сложные системы. И как исследователи космоса, иногда мы проигрываем борьбу со сложностью.
Читать дальше →
Total votes 127: ↑126 and ↓1 +125
Views 31K
Comments 29

SQL HowTo: собираем «цепочки» с помощью window functions

Тензор corporate blog PostgreSQL *SQL *Algorithms *
Иногда при анализе данных возникает задача выделения «цепочек» в выборке — то есть упорядоченных последовательностей записей, для каждой из которых выполняется некоторое условие.

Это может быть как условие от данных самой записи, так и сложное выражение относительно одной или нескольких предыдущих записей — например, длина интервала между близкими временными отсчетами.



Традиционные решения предусматривают разные варианты «self join», когда выборка соединяется с собой же, либо использование некоторых фактов «за пределами данных» — например, что записи должны иметь строго определенный шаг (N+1, «за каждый день», ...).

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

Но эту задачу нам помогут эффективно решить оконные функции в PostgreSQL.
Читать дальше →
Total votes 11: ↑11 and ↓0 +11
Views 4.7K
Comments 5

Вышла Postgres Pro Standard 12.1

Postgres Professional corporate blog PostgreSQL *
СУБД Postgres Pro Standard придумана для того, чтобы доставлять наши разработки пользователям быстрее, чем мы можем это сделать через PostgreSQL. Те фичи, которые еще не вошли в PostgreSQL, но находятся на твердом пути туда, мы включаем в Postgres Pro Standard. Также в Postgres Pro Standard входят некоторые расширения, которые востребованы нашими клиентами, но отсутствуют в обычной поставке PostgreSQL.

Иногда бывают исключения, когда в Postgres Pro Standard по просьбам юзеров и для их удовлетворения включаются и менее тривиальные фичи, которым по-хорошему место только в Postgres Pro Enterprise. В частности, это PTRACK, о нём ниже.

Не все, но изрядная доля дополнительных расширений и утилит, входящих в Standard, разработана в Postgres Professional. Все патчи Postgres Pro придуманы и реализованы нашими силами. Начнем с улучшений, потребовавших вмешательства в ядро СУБД.
Читать дальше →
Total votes 21: ↑19 and ↓2 +17
Views 11K
Comments 12

Двойная бухгалтерская запись в реляционной БД

Payment systems *Finance in IT
Translation

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


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


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


Введение


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



Лука Пачоли, автор самой старой (15 век) дошедшей до нас книги с описанием принципов двойной записи


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


Основные правила таковы:

Читать дальше →
Total votes 26: ↑23 and ↓3 +20
Views 15K
Comments 50

Что внутри шаурмы: микросервисы, распределенные системы и Кафка. Делимся материалами со встречи Backend United #5

AvitoTech corporate blog Server Administration *Microservices *

Привет! Этот пост-отчёт с митапа Backend United, нашей серии тематических встреч для разрабочиков серверной части. Пятая встреча получила название «Шаурма», и здесь мы говорили о микросервисах: о способах синхронного и асинхронного взаимодействия между ними, организации потоков данных и роли Кафки в микросервисной архитектуре.


Заходите под кат, если вам интересны эти темы. Внутри поста — все материалы встречи: видеозаписи докладов, презентации спикеров, отзывы гостей митапа и ссылки на фотоотчёт.


Total votes 19: ↑19 and ↓0 +19
Views 8.4K
Comments 9

О чем молчит EXPLAIN, и как его разговорить

Тензор corporate blog PostgreSQL *Database Administration *
Sandbox
Классический вопрос, с которым разработчик приходит к своему DBA или владелец бизнеса — к консультанту по PostgreSQL, почти всегда звучит одинаково: «Почему запросы выполняются на базе так долго?»

Традиционный набор причин:

  • неэффективный алгоритм
    когда вы решили сделать JOIN нескольких CTE по паре десятков тысяч записей
  • неактуальная статистика
    если фактическое распределение данных в таблице уже сильно отличается от собранной ANALYZE'ом в последний раз
  • «затык» по ресурсам
    и уже не хватает выделенных вычислительных мощностей CPU, постоянно прокачиваются гигабайты памяти или диск не успевает за всеми «хотелками» БД
  • блокировки от конкурирующих процессов

И если блокировки достаточно сложны в поимке и анализе, то для всего остального нам достаточно плана запроса, который можно получить с помощью оператора EXPLAIN (лучше, конечно, сразу EXPLAIN (ANALYZE, BUFFERS) ...) или модуля auto_explain.

Но, как сказано в той же документации,
«Понимание плана — это искусство, и чтобы овладеть им, нужен определённый опыт, …»
Но можно обойтись и без него, если воспользоваться подходящим инструментом!
Читать дальше →
Total votes 38: ↑38 and ↓0 +38
Views 19K
Comments 77

Состоялся первый стабильный релиз Helm 3.0.0

Флант corporate blog System administration *DevOps *Kubernetes *


Буквально только что в почтовой рассылке проекта Helm, называемого «пакетным менеджером для Kubernetes», было объявлено о долгожданном стабильном выпуске Helm 3.0.0.
Читать дальше →
Total votes 44: ↑44 and ↓0 +44
Views 4.3K
Comments 1

Механизм Heap only tuples в PostgreSQL

PostgreSQL *Programming *
Translation

Postgresql отличается от других СУБД тем, что в ней при операции UPDATE, изменений в существующей строке не происходит, а вместо этого делается копия строки, которая отличается от оригинала значениями колонок, затронутых апдейтом — в оригинале они старые, а в копии — изменённые. Этот подход с одной стороны позволяет избежать блокировок при одновременном выполнении запросов на чтение и запись а с другой стороны порождает необходимость постоянно вычищать старые версии строк, которые уже никто и никогда не прочитает. В связи с этой архитектурной фичей нередко возникает вопрос, что будет, если нужно хранить в БД что-то вроде времени последнего доступа к данным, которые в остальном не меняются. Не отзовётся ли это на производительности? Не приведёт ли к постоянной перестройке индексов?


Если коротко, то да, Copy On Write никуда не денется, но индексы во многих случаях можно будет не перестраивать, благодаря HOT.

Подробнее в переводе
Total votes 19: ↑18 and ↓1 +17
Views 6K
Comments 2

Файл дескриптор в Linux с примерами

System Programming **nix *Server Administration *
Однажды, на одном интервью меня спросили, что ты будешь делать, если обнаружишь неработающий сервис из-за того, что на диске закончилось место?

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

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

Интервьюер прервал меня на последнем слове, дополнив свой вопрос: «Предположим, что данные нам не нужны, это просто дебаг лог, но приложение не работает из-за того, что не может записать дебаг»?

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

«ну хорошо», сказал я, «если мы не можем перезапускать приложение и данные нам не важны, то мы можем просто очистить этот открытый файл через файл дескриптор, даже если мы его не видим в команде ls на файловой системе».

Интервьюер остался доволен, а я нет.

Тогда я подумал, почему человек, проверяющий мои знания, не копает глубже? А что, если данные все-таки важны? Что если мы не можем перезапускать процесс, и при этом этот процесс пишет на файловую систему в раздел, на котором нет свободного места? Что если мы не можем потерять не только уже записанные данные, но и те данные, что этот процесс пишет или пытается записать?
Читать дальше →
Total votes 136: ↑136 and ↓0 +136
Views 66K
Comments 20

Город без пробок

Algorithms *Mathematics *Transport Urbanism

Глава вторая.
(ссылка на первую главу)

Искусство проектирования дорожных сетей


Транспортные проблемы города глазами человека из «Computer Science»


Если бы мне порекомендовали статью с названием «Искусство проектирования дорожных сетей», я бы тот час поинтересовался, как много дорожных сетей было построено с участием ее автора. Должен признаться, моя профессиональная деятельность лежала далеко от дорожного строительства и была последнее время связанна с проектированием микропроцессоров, где я, в том числе, занимался ресурсоемкостью коммутации данных. Так получилось, что мой стол тогда стоял как раз напротив панорамного окна, открывавшего прекрасный вид на длинный участок Волгоградского шоссе и части ТТК с их нескончаемыми пробками с утра до вечера, от горизонта до горизонта. И тут, в один из дней меня вдруг осенило:«Черт возьми, ведь сложности процесса коммутации данных, с которыми я борюсь на кристалле, точь в точь должны быть похожи на те трудности, с которыми сталкивается поток автомобилей внутри паутины уличных дорог».
Вероятно, именно взгляд со стороны и применение нетрадиционных для исследуемой области методов дали мне шанс разобраться в причине возникновения пробок и выработать рекомендации, как преодолеть их проблему на практике.
Читать дальше →
Total votes 72: ↑72 and ↓0 +72
Views 27K
Comments 143

Искусственный интеллект Microsoft освоил маджонг

Microsoft corporate blog Machine learning *Artificial Intelligence Logic games
Translation


Ученые из Microsoft Research (MSR) Азия создали систему на основе искусственного интеллекта (ИИ), которая обучилась тонкостям игры в маджонг. Маджонг считается одной из наиболее сложных игр с точки зрения освоения алгоритмами, т.к. в ней присутствует случайный фактор.

Super Phoenix (Suphx) стала первой ИИ-системой, которая получила 10-й дан (разряд) на Tenhou, онлайн-платформе для соревнований по риичи-маджонг, насчитывающей более 300 000 участников со всего мира. Такой квалификацией обладают всего 180 человек. Это максимальный на данный момент разряд для алгоритма, на более высоком уровне играют только несколько признанных профессионалов.
Читать дальше →
Total votes 15: ↑14 and ↓1 +13
Views 4.6K
Comments 12

Автомасштабирование и управление ресурсами в Kubernetes (обзор и видео доклада)

Флант corporate blog System administration *IT Infrastructure *DevOps *Kubernetes *
27 апреля на конференции Стачка-2019, в рамках секции «DevOps», прозвучал доклад «Автомасштабирование и управление ресурсами в Kubernetes». В нём рассказывается о том, как с помощью K8s обеспечить высокую доступность приложений и гарантировать их максимальную производительность.



По традиции рады представить видео с докладом (44 минуты, гораздо информативнее статьи) и основную выжимку в текстовом виде. Поехали!
Читать дальше →
Total votes 46: ↑44 and ↓2 +42
Views 15K
Comments 21

HBO, cпасибо что напомнил… «Чернобыльская аптечка» беларуского фармацевта

DIY Health Chemistry Ecology
Tutorial
Что бы ни сказали — не станем спорить
Что бы ни дарили — не станем верить

Егор Летов «Как листовка»

Думаю не стоит лишний раз говорить о нашумевшем сериале Чернобыль и эффективности такого «сериального» воздействия на массы. Особенно на массы, проживающие на территориях, показанных в фильме. Выход каждой новой серии сопровождается всплеском публикаций в FB. В каждой из которых горечь, страх, боль. Что в такой ситуации я могу сделать ("кто виноват и что делать?")? Могу только описать свой взгляд на терапию лучевых поражений. Спасибо родненькой кафедре химии высоких энергий и проф. Шадыро О.И., которые пестовали в своих лабораториях нас, непутевых фармацевтов-радиохимиков. Надеюсь своей статьей честь этой, легендарной некогда, кафедры я не опорочу.

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

В общем, спасибо, сценаристы HBO, за то, что всколыхнули Память. Мой посильный вклад — под катом. Рейтинг доступных (и не очень) антидотов, способных сработать при радиационном выбросе. В закладки — класть строго ВСЕМ! И прочитал сам — перекинь другу.

Читать дальше →
Total votes 227: ↑210 and ↓17 +193
Views 116K
Comments 272

Uibook — инструмент для визуального тестирования React-компонентов с медиа-запросами

Website development *JavaScript *HTML *Web services testing *ReactJS *


Всем привет! Меня зовут Виталий Ризо, я фронтенд-разработчик в «Амплифере». Мы сделали Uibook — простой инструмент для визуального тестирования React-компонентов с реальными медиа-запросами. Расскажу, как он работает и чем может быть полезен вам.

Читать дальше →
Total votes 22: ↑21 and ↓1 +20
Views 7K
Comments 13

Советские мечты о будущем

Madrobots corporate blog Science fiction


Помните очаровательного котика, которые чихал в заставке советского мультфильма? Мы помним, и нашли его — вместе с ворохом другой рисованной фантастики. В детстве она пугала и обескураживала, поскольку поднимала серьезные, взрослые темы. Настала пора пересмотреть старые мультфильмы, чтобы узнать, о каком будущем мечтали в той стране.
Total votes 138: ↑136 and ↓2 +134
Views 90K
Comments 144

Знакомство с Helm 3

Флант corporate blog Open source *System administration *DevOps *Kubernetes *
Translation


Прим. перев.: 16 мая этого года — значимая веха в развитии менеджера пакетов для Kubernetes — Helm. В этот день был представлен первый альфа-релиз будущей крупной версии проекта — 3.0. Её выход принесёт в Helm существенные и долгожданные изменения, на которые многие в Kubernetes-сообществе возлагают большие надежды. К таковым относимся и мы сами, поскольку активно используем Helm для деплоя приложений: мы интегрировали его в свой инструмент для реализации CI/CD werf и от случая к случая вносим посильный вклад в развитие upstream. Этот перевод объединяет 7 заметок из официального блога Helm, что приурочены к первому альфа-релизу Helm 3 и рассказывают об истории проекта и основных фичах Helm 3. Их автор — Matt «bacongobbler» Fisher, сотрудник Microsoft и один из ключевых мейнтейнеров Helm.
Читать дальше →
Total votes 35: ↑34 and ↓1 +33
Views 22K
Comments 5

Information

Rating
4,687-th
Location
Королев, Москва и Московская обл., Россия
Date of birth
Registered
Activity