Pull to refresh
4
0

Программист

Send message

Статический анализ и уже выросший проект: внедрять нельзя откладывать

Reading time9 min
Views6.9K

Зачем нужен статический анализ кода, кажется, никому объяснять сегодня уже не нужно. Но одно дело — поддерживать код «чистым» с первого коммита, и совсем другое — встраивать новый инструмент в проект, который за несколько лет успел разрастись и пережить несколько итераций глобального рефакторинга. Мы работаем с большим количеством плохо документированных источников данных, а статический анализ кода помогает учитывать самые разные граничные случаи.

И ещё один момент: Rusprofile почти целиком написан на PHP, языке со слабой динамической типизацией. Статический анализ кода на PHP уже несколько лет набирает популярность, сказывается здесь и движение самого языка в сторону более строгой типизации. Но мы опасались, что без предварительной подготовки кода пользы от него мало. Аннотировать типами весь код в реальных бизнес-условиях тоже нереально. Сильно медлить с внедрением в рабочий процесс тоже нельзя: чем дальше, тем сложнее что-то кардинально улучшать. Поэтому нужно было оперативно запускаться, чем-то пожертвовав.

Что нам пришлось преодолеть?
Total votes 32: ↑32 and ↓0+32
Comments9

Как сделать стрим в Postgres?

Reading time4 min
Views9.7K

На одной конференции мне задали вопрос (спасибо Александру!): как сделать стрим в PostgreSQL? Представьте, что имеется bytea и вы к нему хотите что-то дописать. Люди столкнулись с тем, что на это в PostgreSQL  тратится гигантское время  и растет WAL-трафик. 

Расскажу, что с этим возможно сделать — это будет еще один пример оптимизации TOAST (о чем я недавно писал), на на этот раз — для быстрой записи потока бинарных данных. На самом деле мой коллега, Никита Глухов, за несколько часов сделал расширение, которое «вылечило» проблему, и мы даже успели рассказать про это на сессии блиц-докладов на PGConf.Online 2021.

Читать далее
Total votes 33: ↑33 and ↓0+33
Comments2

Установка Arch Linux на MacBook Pro с чипом T2 и организация двойной загрузки

Reading time8 min
Views12K
MacBook Pro 2014 года, на котором у меня работала Invisible Arch Linux, наконец отошёл в мир иной. Это нанесло сокрушительный удар моим возможностям по эффективной разработке качественных программ. У запуска GNU/Linux на виртуальной машине, или у подключения по SSH к Termux, работающему на Android, есть определённая привлекательность. Но ничто не сравнится с операционной системой, работающей на настоящем железе. Ничто не сравнится. Поэтому пришло время в очередной раз пересмотреть процедуру организации двойной загрузки Arch Linux на MacBook Pro.



В прошлый раз, когда я подумывал об установке Arch на мой MacBook Pro с чипом T2, драйверы для клавиатуры и трекпада всё ещё находились на стадии активной разработки, поэтому я, в сущности, ничего достойного не добился. Но в декабре 2021 года эти драйверы оказались рабочими, а ещё обнаружилась целая вики, посвящённая установке Linux на компьютеры с чипом T2.

В этом материале я расскажу о том, как устанавливал Arch Linux на MacBook Pro. Он рассчитан на компьютеры 2019 или 2020 года выпуска.
Читать дальше →
Total votes 37: ↑35 and ↓2+33
Comments12

Связываем две локальные сети с помощью Wireguard VPN на выделенном сервере

Reading time4 min
Views40K

Эта статья о том как настроить Wireguard VPN в локальной сети, если вам достался роутер от провайдера без возможности его прошивки и полноценной настройки. Для настройки VPN поставим в локальной сети сервер. И настроим, чтобы все клиенты обоих локальных сетей имели прозрачный доступ к обоим LAN.

Читать далее
Total votes 11: ↑10 and ↓1+9
Comments14

PHP Дайджест № 218 (13 – 27 декабря 2021)

Reading time4 min
Views11K


Подборка свежих новостей и материалов из мира PHP.

В выпуске: Composer 2.2, Cycle 2.0, обновления актуальных веток PHP и другие релизы; конкурс с подведением итогов года; пачка интересных статей, инструменты, видео и другие новости сообщества.

Приятного чтения!
Читать дальше →
Total votes 46: ↑46 and ↓0+46
Comments14

PHP Дайджест № 217 (1 – 13 декабря 2021)

Reading time4 min
Views8.2K


Подборка свежих новостей и материалов из мира PHP.

В выпуске: PHP теперь использует GitHub для трекинга багов; вышел PhpStorm 2021.3; закончена поддержка PHP 7.3, а 7.4 — в режиме только секьюрити фиксов; для PHP 8.2 снова обсуждается перегрузка операторов — теперь с новым ключевым словом.

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

Приятного чтения!
Читать дальше →
Total votes 34: ↑34 and ↓0+34
Comments11

Строим эффективный сетевой обмен в PHP-микросервисах

Reading time13 min
Views20K

Микросервисы сейчас — это новый черный. Все больше и больше компаний переходят именно на микросервисную архитектуру. И при переходе ловят самые разные ошибки. Самая популярная происходит из-за того, что люди просто не готовы к тому, что их приложения начинают активно использовать сеть. Потому что IPC и RPC-запросы  — это абсолютно разные вещи.

Я техлид в команде Авито в проекте SLA. Сегодня расскажу, как мы оптимизировали сетевые вызовы, чтобы избежать проблем с сетью при переходе в микросервисный мир. Разговор будет про оптимизацию CURL-запросов, деградацию сервисов и FAIL-FAST-подходы.

Читать далее
Total votes 43: ↑42 and ↓1+41
Comments38

Новые директивы HTTP для кеширования с учётом CDN

Reading time7 min
Views5.5K

(с) xkcd

В данный момент на рассмотрении IETF находятся два стандарта. Это новые поля в заголовке ответа HTTP: Cache-Status и таргетированный Cache-Control.

Новые поля должны упростить разработку веб-приложений, а именно: упорядочить кеширование статического контента. Сейчас с этим небольшой бардак, поскольку кеширование происходит в нескольких системах на нескольких уровнях, почти как в этом ↑ комиксе. А синхронизировать все уровни непросто, ведь текущие стандарты разрабатывались в те времена, когда ещё не существовало CDN.
Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments1

PHP Дайджест № 216 (15 – 30 ноября 2021)

Reading time5 min
Views10K


Подборка свежих новостей и материалов из мира PHP.
В выпуске: вышел PHP 8.1, создана организация PHP Foundation с целью развития и поддержки PHP, критическая уязвимость в doctrine/dbal, в PHP 8.2 будут объявлены устаревшими динамические свойства, вышли Symfony 6 и Symfony 5.4.
Также в выпуске полезные статьи, видео и другие новости сообщества.

Приятного чтения!
Читать дальше →
Total votes 54: ↑54 and ↓0+54
Comments12

Подключение и Настройка ElasticSearch + MySql + Yii2

Reading time18 min
Views15K

Если вдруг поиск на вашем проекте начал тормозить, то самое время присмотреться к поисковым движкам.

Сегодня я расскажу как установить и настроить поисковой движок ElasticSearch на сервере под управлением Ubuntu и сделать авто импорт данных из MySql, а также мы настроим взаимодействие Yii с движком ES.

Читать далее
Total votes 9: ↑8 and ↓1+7
Comments4

Python: Логируем как профессионалы

Reading time13 min
Views48K

Часто вижу, что помимо обработки исключений, люди мучаются кое с чем еще, а именно с логированием.

Большинство людей не знают, что писать в логи, поэтому решают логировать все, что угодно, думая, что все подряд – это в любом случае лучше, чем ничего, и, в конечном итоге, просто создают шум. А шум – это информация, которая никак не помогает вашей команде понять, в чем дело и как решить проблему.

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

PHP Дайджест № 215 (1 – 15 ноября 2021)

Reading time4 min
Views11K
Картинка: Gabriel Nunes.

Подборка свежих новостей и материалов из мира PHP.
В выпуске: последний релиз кандидат PHP 8.1 перед финальным релизом, бенчмарки PHP 8.1; в PHP 8.2 планируется задепрекейтить динамические свойства — добро или зло?; про перенос багов с bugs.php.net на GitHub; немного обновлен PSR-16.
Также в выпуске полезные статьи, видео и другие новости сообщества.

Приятного чтения!
Читать дальше →
Total votes 50: ↑50 and ↓0+50
Comments11

Преодоление сложности в самом сердце DDD

Reading time6 min
Views19K

Эта статья является переводом материала «Tackling Complexity in the Heart of DDD».

Давайте проведем небольшой эксперимент: попробуем объяснить суть предметно-ориентированного проектирования (DDD) тому, кто понятия об этом не имеет. Это, особенно если делать кратко, непросто. Ограниченные контексты, сущности, события домена, объекты значений, домены, агрегаты, репозитории… с чего начать?

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

Читать далее
Total votes 25: ↑25 and ↓0+25
Comments7

Пять альтернатив Scale AI

Reading time6 min
Views2.2K
Выбор подходящего инструмента для аннотирования данных — непростая задача, поэтому чтобы принять верное решение, необходимо знать все возможные варианты. В этой статье мы расскажем о лучших, по нашему мнению, альтернативах Scale AI.


Проекты машинного обучения и глубокого обучения стали сегодня мейнстримом.

Однако несмотря на огромные трудозатраты, только некоторым компаниям удалось превратить свои модели в продукты.

Согласно данным Gartner, для более чем 85% ИИ-проектов есть риск обеспечения плохих результатов из-за погрешностей в данных, алгоритмах или заблуждений разработчиков.

В частности, слабым звеном в ML/DL является качество данных, поскольку успех проектов сильно зависит от объёмов высококачественных размеченных данных, которые способна регулярно создавать команда.

Scale AI одним из первых воспользовался возможностью совершенствования и автоматизации управления, аннотирования и интегрирования данных.

Но Scale — не единственный мощный инструмент в области разметки данных для обучения ИИ.
Читать дальше →
Total votes 4: ↑4 and ↓0+4
Comments0

WireGuard. How it was

Reading time9 min
Views56K

Привет. Я Леша, System Infrastructure Engineer в inDriver. В этой статье на конкретных кейсах объясню, почему WireGuard — отличная VPN-система для работы, в чем разница использования разных утилит и что надо помнить, когда с ними работаешь. Прошу под кат!

Окунуться в мир WireGuard
Total votes 18: ↑18 and ↓0+18
Comments32

Как защитить сайты на PHP при помощи CrowdSec

Reading time5 min
Views4.8K

По данным статистики W3Techs, PHP применяется в 79% сайтов (о которых есть данные об используемых языках программирования). Для их защиты явно нужен собственный баунсер, и он уже добавлен в наш хаб! В этом посте поговорим о том, как этот баунсер может помочь защитить сайты от атак.

Читать далее
Total votes 15: ↑11 and ↓4+7
Comments3

Обучение с подкреплением на Python: Пример не из «качалки»

Reading time10 min
Views20K

Обучение с подкреплением молодая и бурно растущая дисциплина. Это обстоятельство привело к тому что информации об этом на русском языке почти нет. Особенно, если дело касается объектно-ориентированного подхода, и практических задач не из арсенала "качалки".

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

Жги
Total votes 14: ↑13 and ↓1+12
Comments8
1
23 ...

Information

Rating
Does not participate
Location
Иркутск, Иркутская обл., Россия
Registered
Activity