Pull to refresh
5
0
Send message

PostgreSQL Antipatterns: сражаемся с ордами «мертвецов»

Reading time3 min
Views17K
Особенности работы внутренних механизмов PostgreSQL позволяют ему быть очень быстрым в одних ситуация и «не очень» в других. Сегодня остановимся на классическом примере конфликта между тем, как работает СУБД и тем, что делает с ней разработчик — UPDATE vs принципы MVCC.

Кратко сюжет из отличной статьи:
Когда строка изменяется командой UPDATE, фактически выполняются две операции: DELETE и INSERT. В текущей версии строки устанавливается xmax, равный номеру транзакции, выполнившей UPDATE. Затем создается новая версия той же строки; значение xmin у нее совпадает с значением xmax предыдущей версии.
Через какое-то время после завершения этой транзакции старая или новая версии, в зависимости от COMMIT/ROOLBACK, будут признаны «мертвыми» (dead tuples) при проходе VACUUM по таблице и зачищены.



Но это произойдет далеко не сразу, а вот проблемы с «мертвецами» можно нажить очень быстро — при многократном или массовом обновлении записей в большой таблице, а чуть позже столкнуться с ситуацией, что и VACUUM не сможет помочь.
Читать дальше →
Total votes 32: ↑32 and ↓0+32
Comments15

10 отличных Github репозиториев, которые должен знать каждый веб-разработчик

Reading time3 min
Views97K

Кроме огромных репозиториев с источниками для подготовки к интервью, здесь много чего интересного


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


image


А я его перевел, т.к. показалось, что пост многим будет интересен. Перевод очень вольный: я опустил нерелевантные промо-ссылки и гипер эмоциональные похвалы автора оригинала, чтобы оставить только суть. Еще, обновил цифры, чтобы информация была более актуальной к моменту публикации этого перевода. Итак, перейдем к списку.
Читать дальше →
Total votes 63: ↑56 and ↓7+62
Comments8

TCP против UDP или будущее сетевых протоколов

Reading time27 min
Views171K
Перед каждым сервисом, генерирующим хотя бы 1 Мбит/сек трафика в интернете возникает вопрос: «Как? по TCP или по UDP?» В прикладных областях, в том числе и платформах доставки уже сложились предпочтения и традиции принятия подобных решений.

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

Сравнивать можно многое: ARM с Intel, iOS и Android, а Mortal Kombat с Injustice. И нарваться на космический холивар, поэтому вернемся к теме доставки огромных объемов разноформатного контента.

Десять лет назад все были абсолютно уверены, UDP — это что-то про негарантированную доставку. Если нужен надежный протокол — это TCP. И вопреки традициям в этой статье мы будем сравнивать такие, кажущиеся несравнимыми вещи, как TCP и UDP.


Осторожно, под катом 99 иллюстраций и схем и все важные.
Total votes 162: ↑159 and ↓3+156
Comments75

Как оценить производительность Linux-сервера: открытые инструменты для бенчмаркинга

Reading time4 min
Views12K
Мы в 1cloud.ru подготовили подборку инструментов и скриптов для оценки производительности процессоров, СХД и памяти на Linux-машинах: Iometer, DD, vpsbench, HammerDB и 7-Zip.

Другие наши подборки с бенчмарками:


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

370 лампочек

Reading time1 min
Views20K
Хорошие люди прислали на тест светодиодные лампочки. Триста семьдесят штук!

Прислали лампы двенадцати брендов: REV, Smartbuy, Эра, Camelion, Gauss, Navigator, Онлайт, Philips, Ecola, Фотон, Космос, General.


Читать дальше →
Total votes 52: ↑49 and ↓3+46
Comments24

Bitmap-индексы в Go: поиск на дикой скорости

Reading time15 min
Views31K


Вступительное слово


Я выступил с этим докладом на английском языке на конференции GopherCon Russia 2019 в Москве и на русском — на митапе в Нижнем Новгороде. Речь в нём идёт о bitmap-индексе — менее распространённом, чем B-tree, но не менее интересном. Делюсь записью выступления на конференции на английском и текстовой расшифровкой на русском.

Мы рассмотрим, как устроен bitmap-индекс, когда он лучше, когда — хуже других индексов и в каких случаях он значительно быстрее них; увидим, в каких популярных СУБД уже есть bitmap-индексы; попробуем написать свой на Go. А «на десерт» мы воспользуемся готовыми библиотеками, чтобы создать свою супербыструю специализированную базу данных.

Очень надеюсь, что мои труды окажутся для вас полезными и интересными. Поехали!
Total votes 93: ↑91 and ↓2+89
Comments40

Переход Tinder на Kubernetes

Reading time10 min
Views22K
Прим. перев.: Сотрудники всемирно известного сервиса Tinder недавно поделились некоторыми техническими деталями миграции своей инфраструктуры на Kubernetes. Процесс занял почти два года и вылился в запуск на K8s весьма масштабной платформы, состоящей из 200 сервисов, размещённых на 48 тысячах контейнеров. С какими интересными сложностями столкнулись инженеры Tinder и к каким результатам пришли — читайте в этом переводе.

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

Хакаем CAN шину авто. Виртуальная панель приборов

Reading time14 min
Views214K


В первой статье «Хакаем CAN шину авто для голосового управления» я подключался непосредственно к CAN шине Comfort в двери своего авто и исследовал пролетающий траффик, это позволило определить команды управления стеклоподъемниками, центральным замком и др.

В этой статье я расскажу как собрать свою уникальную виртуальную или цифровую панель приборов и получить данные с любых датчиков в автомобилях группы VAG (Volkswagen, Audi, Seat, Skoda).

Мною был собран новый CAN сниффер и CAN шилд для Raspberry Pi на базе модуля MCP2515 TJA1050 Niren, полученные с их помощью данные я применил в разработке цифровой панели приборов с использованием 7″ дисплея для Raspberry Pi. Помимо простого отображения информации цифровая панель реагирует на кнопки подрулевого переключателя и другие события в машине.

В качестве фреймворка для рисования приборов отлично подошел Kivy для Python. Работает без Иксов и для вывода графики использует GL.

  1. CAN сниффер из Arduino Uno
  2. Подслушиваем запросы с помощью диагностической системы VAG-COM (VCDS)
  3. Разработка панели приборов на основе Raspberry Pi и 7″ дисплея
  4. Софт панели приборов на Python и Kivy (UI framework)
  5. Видео работы цифровой панели приборов на базе Raspberry Pi

Под катом полная реализация проекта, будет интересно!
Total votes 195: ↑192 and ↓3+189
Comments224

Mkcert: валидные HTTPS-сертификаты для localhost

Reading time2 min
Views87K

В наше время использование HTTPS становится обязательным для всех сайтов и веб-приложений. Но в процессе разработки возникает проблема корректного тестирования. Естественно, Let’s Encrypt и другие CA не выдают сертификаты для localhost.

Традиционно есть два решения.
Читать дальше →
Total votes 65: ↑54 and ↓11+43
Comments35

Где и как делают атомные реакторы

Reading time7 min
Views65K


Фоторепортаж с «Атоммаша» — гордости Росатома — гигантского производства, где делают корпуса одних из самых востребованных ядерных реакторов для атомных электростанций: ВВЭР-1000 И ВВЭР-1200.

Недавно, меня пригласили поделиться опытом популяризации науки на мероприятии Нефорум Наука. Встреча была организована при участии Росатома, и там предложили включить и атомную тему в свои обзоры. Начать решили с фоторепортажей. За один день удалось посетить завод ядерных реакторов и атомную электростанцию. Сегодня репортаж с производства.
Читать дальше →
Total votes 133: ↑130 and ↓3+127
Comments166

Как общаться в англоязычном офисе: 14 полезных идиом

Reading time6 min
Views39K
image

На Хабре в последние годы публикуется довольно много статей о переезде, в том числе в США и Великобританию. Обычно в таких материалах рассказывают о поиске работы и визовых вопросах, но не так много внимания уделяется дальнейшей интеграции, в том числе в рабочий коллектив.

Команда сервиса Textly опубликовала в своем блоге подборку английских идиом, которые часто используются в офисных коммуникациях. Я решила подготовить перевод этого полезного материала
Читать дальше →
Total votes 34: ↑28 and ↓6+22
Comments49

Выбор вендора в корпоративном Wi-Fi

Reading time7 min
Views9.7K
Когда строится большой офис, больница, аэропорт, гостиница, завод или другое крупное здание, в контексте сетевого оборудования, рано или поздно поднимается вопрос — на чём строить сеть? Какого вендора выбрать и почему? Какое оборудование решит задачи за минимальную стоимость? В одних случаях этот вопрос задается интегратору, в других же ему ставится условие.

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


Читать дальше →
Total votes 8: ↑7 and ↓1+6
Comments25

Ошибка, которая мешает дизайнеру расти

Reading time4 min
Views7.2K


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

Не сумев четко сформулировать проблему, я задал в Instagram вопрос “Какую тему затронуть в следующей статье?”, чтобы выяснить трудности, стоящие перед молодыми специалистами.

Получив ряд толковых идей, я заметил одну, которая косвенно фигурировала в нескольких ответах. Погрузившись в ее суть, я понял, что именно она является основным барьером, который мешает начинающим дизайнерам расти и достигать высокого уровня, не тратя на это лишние годы.
Читать дальше →
Total votes 9: ↑7 and ↓2+5
Comments23

Как работают библиотеки виртуального окружения

Reading time5 min
Views10K
Вы когда-нибудь задумывались о том, как работают библиотеки виртуального окружения в Python? В этой статье я предлагаю ознакомится с главной концепцией, которую используют все библиотеки для окружений, такие как virtualenv, virtualenvwrapper, conda, pipenv.

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

Когда Python запускает интерпретатор, он начинает искать директорию с модулями (site-packages). Поиск начинается с родительской директории относительно физического расположения исполняемого файла интерпретатора (python.exe). Если папка с модулями не найдена, то Python переходит на уровень выше, и делает это до тех пор, пока не будет достигнута корневая директория. Для того, чтобы понять, что это директория с модулями, Python ищет модуль os, который должен лежать в файле os.py и является обязательным для работы питона.
Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments2

По дороге к 100% покрытия кода тестами в Go на примере sql-dumper

Reading time7 min
Views9.2K

image


В этом посте я расскажу о том, как я писал консольную программу на языке Go для выгрузки данных из БД в файлы, стремясь покрыть весь код тестами на 100%. Начну с описания, зачем мне нужна была это программа. Продолжу описанием первых трудностей, некоторые из которых вызваны особенностями языка Go. Дальше немного упомяну сборку на Travis CI, а затем расскажу о том, как я писал тесты, пытаясь покрыть код на 100%. Немного затрону тестирование работы с БД и файловой системой. А в заключении скажу о том, к чему приводит стремление максимально покрыть код тестами и о чём говорит этот показатель. Материал я сопровожу ссылками как на документацию, так и на примеры коммитов из своего проекта.

Читать дальше →
Total votes 25: ↑23 and ↓2+21
Comments7

Используем Apple Pay и карту Тройка в качестве пропуска на работу

Reading time16 min
Views106K
Используем Apple Pay, Android Pay, Mastercard Paypass, Visa PayWave и карту Тройка в качестве пропуска на работу

TL;DR В статье описывается процесс создания системы контроля доступа (СКУД), в которой в качестве идентификатора могут использоваться карты Тройка, любые бесконтактные банковские карты EMV, а также телефоны с Apple Pay и Android Pay. Управление системой происходит через Telegram-бота.

Основные задачи системы


  • Избавиться от лишних карт — в качестве идентификатора используется то, что уже есть у пользователя: транспортная карта, телефон или банковская карта. Какой идентификатор использовать — каждый выбирает сам. Система работает со всеми типами идентификаторов одновременно.
  • Избавиться от бюро пропусков и сложных программ управления — нам надоело выдавать и забирать карты у пользователей, держать отдельные компьютеры для управления пропусками, изучать переусложненные программы.
  • Управление через Telegram — заведение и удаления пользователей происходит удаленно и не требует компьютера.
Total votes 118: ↑118 and ↓0+118
Comments164

17 самых неочевидных возможностей iOS, о которых вы могли не знать

Reading time6 min
Views35K
Когда я только начинал вести свой канал о секретах iOS (ссылка в профиле), я и представить не мог, что это действительно может быть кому-то интересно. Мне всегда казалось, что все возможности уже давно известны и все давно обо всем знают. Как же я ошибался. За время своего развития iOS обросла огромным количеством фич, о которых множество пользователей даже не догадывается. Даже среди моих технически продвинутых друзей, я встречал искреннее удивление. Ниже подробка наиболее высоко оцененных советов для читателей Geektimes.

1. Знаете ли вы, что в приложении камеры на iPhone есть режим фокусировки? Наверняка знаете. Для этого достаточно тапнуть по экрану в той области, где нужен фокус. Но вот ведь незадача, если рука дрогнет, фокус сместится. Оказывается, его можно зафиксировать. Для этого нужно долгим нажатием на место фокуса вызвать меню фиксации. После фиксации фокус уже не сместится и можно выбирать нужный угол съемки.


2. В iOS 11 добавился очень удобный способ поделиться паролем к Wi-Fi. Для того, чтобы функция сработала, нужно чтобы оба устройства были с iOS 11 и включенным Bluetooth соединением. С устройства, которому неизвестен пароль, нужно зайти в Настройки → Wi-Fi и сделать попытку подключения к нужной сети. Устройство, уже подключенное к сети, должно находиться физически рядом (да, лучше прям поднести устройства друг к другу), а контакт человека, который расшаривает пароль должен быть в вашем списке контактов. На нем высветится окно с предложением поделиться паролем, нужно будет подтвердить данное действие и новое устройство подключится к сети. Функция может быть полезна, когда диктовать ваш 20-символьный пароль }X9}I|zxEyw23}4@Ym8>}X9}I|zxEyw23}4@Ym8 реально долго, а таким нехитрым трюком можно сократить себе время и нервы, забыв про объяснения вроде «Эс как доллар», «Си как эс русская» и т.п.
Читать дальше →
Total votes 50: ↑39 and ↓11+28
Comments160

Information

Rating
Does not participate
Location
Украина
Date of birth
Registered
Activity