Pull to refresh
0
0
Send message

Экосистема Low-Code решений

Reading time8 min
Views20K
image

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

Я бы хотел рассмотреть, что это за инструменты, как именно они помогают, и какие выглядят наиболее многообещающе.
Читать дальше →
Total votes 4: ↑4 and ↓0+4
Comments0

“Чистый код”: пять ключевых моментов из обязательной к прочтению книги для программистов

Reading time5 min
Views58K

Недавно я написал о «Пять книг, которые изменили мой стиль программирования». В комментариях несколько читателей рекомендовали «Чистый код» Роберта С. Мартина. В результате я прочитал книгу и нашел ее достойной углубленного обзора.


Читать дальше →
Total votes 70: ↑68 and ↓2+66
Comments69

Версионирование API или единая кодовая база для всех версий

Reading time13 min
Views34K

За 21 год существования в SuperJob разработали три версии реализации API для интеграций с бэкендом. Во время разработки последней они решили пересмотреть подход к версионированию. Сейчас в актуальной реализации порядка 379 эндпойнтов, более 900 моделей сущностей и 11 поддерживаемых мажорных версий. Когда проект развивается, вместе с ним меняются и требования к API, а значит неизбежно нарушение обратной совместимости.

Опытом решения этой проблемы поделился Антон Золотилин из SuperJob. Вы увидите самые распространенные решения проблемы версионирования web-API и подход, который реализовал у себя SuperJob. А в качестве бонуса узнаете, как это решение помогает значительно сократить рост затрат на тестирование версий с помощью Impact-анализа.

Читать далее
Total votes 44: ↑42 and ↓2+40
Comments13

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

Reading time5 min
Views11K
Фото: Иван Ганцев.

Подборка свежих новостей и материалов из мира PHP. Вышел первый релиз-кандидат PHP 8.1, в Packagist обнаружено два зловредных пакета, а репозиторий популярного пакета AliceBundle пропал с GitHub. Для PHP 8.2 предложены два новых RFC: про $this в качестве тайпхинта для возвращаемых значений, и про удаление старых видов колбэков. Также в выпуске порция полезных инструментов, статьи и видео.

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

Бенчмарки PHP 8.0 и 7.4 на Symfony: повышение производительности JIT до +9% вместе с предварительной загрузкой OPCache

Reading time4 min
Views6.9K

PHP 8.0 должен увидеть свет 26 ноября 2020 года, а вскоре за ним и последняя версия фреймворка Symfony 5.2. Здесь представлена серия бенчмарков, выполненных на последних версиях обоих проектов. Это чистый hello world сценарий, и его следует воспринимать как таковой. Имеет значение только относительная производительность. В реальном мире YMMV (ваши результаты могут отличаться от приведенных).

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

Использование Nginx FastCGI Cache

Reading time9 min
Views26K

FastCGI Cache — это система кэширования данных реализованая на уровне HTTP-сервера Nginx.

Преимущество FastCGI Cache заключается в том, что Nginx вернёт закешированный ответ пользователю сразу, как только получит запрос, при этом слой приложения не будет вовсе обрабатывать поступивший HTTP-запрос, если он имеется в кэше Nginx. 

Использование FastCGI Cache — отличный способ снизить нагрузку на вашу систему.

Если на вашем сайте есть страницы, которые изменяются редко или задержка обновления информации на некоторое время не критична, то FastCGI Cache именно то, что нужно.

Читать далее
Total votes 13: ↑12 and ↓1+11
Comments16

Kubernetes 1.20: обзор основных новшеств

Reading time9 min
Views11K
Этой ночью, 8 декабря (по американскому времени), состоялся новый релиз Kubernetes — 1.20. По традиции нашего блога, рассказываем о наиболее значимых изменениях в новой версии.



Информация, использованная для подготовки этого материала, взята из таблицы Kubernetes enhancements tracking, CHANGELOG-1.20, обзора Sysdig, а также соответствующих issues, pull requests, Kubernetes Enhancement Proposals (KEP).
Total votes 43: ↑43 and ↓0+43
Comments3

Телефон шпионил за мной, поэтому я нашёл тех, кто использует данные слежения

Reading time12 min
Views119K

СЛЕЖКА: Американская компания имеет информацию о моём местоположении.

В моём телефоне 160 приложений. Я не знаю, что они делают, но решил это выяснить.

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

Я знаю, что есть те, кто покупает и продаёт эту информацию. Как они отслеживают нас, и что хотят делать с нашими данными?

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

Или почти повсюду. Я оставил его дома, когда проходил тест на COVID-19 в апреле.
Читать дальше →
Total votes 137: ↑134 and ↓3+131
Comments253

PHP-Дайджест № 190 (5 – 19 октября 2020)

Reading time4 min
Views12K
Фото: Илья Шихалеев.

Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 8.0 RC 2, Xdebug 3 beta, PhpStorm EAP с поддержкой PHPStan и Psalm, порция полезных инструментов, статьи, видео, митапы.

Приятного чтения!


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

«В карантин нагрузка выросла в 5 раз, но мы были готовы». Как Lingualeo переехал на PostgreSQL с 23 млн юзеров

Reading time7 min
Views71K
image

Проекту Lingualeo уже 10 лет. Более 23 миллионов человек из России, Турции, Испании и стран Латинской Америки учат с помощью нашего сервиса английский.

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

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

Проблемы зрелого продукта


«Я пришёл в Lingualeo в августе 2018 руководить бэкэнд разработкой. Тогда бэком занималась команда из 8 разработчиков и 2 админов, которые обслуживали монолит на 1 миллион строк кода преимущественно на PHP. Чтобы внедрить даже небольшую новую фичу, уходило 2 месяца. А затраты на инфраструктуру на 10 000 активных пользователей превышали 1 000 $ в год.

Как это произошло? Дело в том, что за 10 лет в проекте сменилось несколько команд разработки. Приходили новые люди, как и я, они по-своему добавляли новые модули и фичи. Команды менялись, новички не всегда понимали, как работают старые части системы, в итоге код Lingualeo постепенно превратился в чёрный ящик: непрозрачная логика в бэкенде, перегруженный фронт, обилие костылей, большие пробелы в документации.

Всего у нас в штате было 20 разработчиков, но развивать продукт было невозможно: если что-то добавить, вылезали неожиданные проблемы. У команды уходило 2–3 недели, чтобы всё починить. Разработчики занимались поддержкой кода из 2013 года, и ресурсов на обновление функциональности не было.
Читать дальше →
Total votes 175: ↑102 and ↓73+29
Comments794

GitHub Actions и LaTeX: поднимаем, заливаем

Reading time6 min
Views6K
В этой статье мы настроим пайплайн в GitHub для автоматической сборки pdf-файлов и последующей выкладки в Releases. Также поднимаем небольшой сайт-визитку с ссылкой на самые свежие сборки.

Материал будет полезен новичкам и тем, кто хочет быстро поднять CI/CD для latex встренными средствами GitHub.
Читать дальше →
Total votes 14: ↑13 and ↓1+12
Comments4

IntelliJ IDEA: Structural Search & Replace

Reading time11 min
Views12K

Современные IDE — очень мощные инструменты, способные помогать разработчику в самых разных ситуациях. Но обратной стороной этой мощности является то, что большинство функций находится в тени — об их наличии мало кто подозревает.


Простой пример одной такой функции

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


Одной такой функцией является Structural Search & Replace (SSR). Она может быть невероятно полезна в тех ситуациях, когда пасует всё богатое разнообразие других функций.


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


  1. 3D-движка для создания игр jMonkeyEngine, как пример большого проекта, в котором всегда можно найти что-то интересненькое.
  2. моего собственного проекта plantuml-native-image, в котором я провожу эксперименты по компиляции PlantUML в нативный исполняемый код с помощью GraalVM native-image.

Собственно, случай во втором проекте и побудил меня к написанию статьи. Но обо всём по порядку...

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

Почему Doctrine ORM плохо подходит для PHP

Reading time4 min
Views42K
Статья является переводом заметки Why Doctrine ORM is not suited for PHP от Lucas Corbeaux.

Я знаю, что заголовок этой статьи похож на троллинг. Но это не так, это просто констатация факта. Я не пытаюсь сказать, что Doctrine — это плохая библиотека или что её не нужно использовать. Я просто говорю, что она плохо подходит для PHP, и если не принимать этот момент во внимание и использовать её неправильно, можно столкнуться с серьёзными проблемами.
Читать дальше →
Total votes 44: ↑31 and ↓13+18
Comments53

Microsoft: Rust является 'лучшим шансом' в отрасли программирования безопасных систем

Reading time5 min
Views39K

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


YouTube: Ryan Levick - Rust at Microsoft

Независимо от того, сколько вложений компании-разработчики могут потратить на инструментарий и обучение своих разработчиков, «C++, по своей сути, не является безопасным языком», сказал Райан Левик (Ryan Levick) 'cloud developer advocate' из Microsoft на виртуальной конференции AllThingsOpen в прошлом месяце, объясняя в виртуальной беседе почему Microsoft постепенно переходит с C/C++ на Rust для создания своего инфраструктурного программного обеспечения. И вдохновляет других гигантов индустрии программного обеспечения задуматься о том же.


Total votes 73: ↑65 and ↓8+57
Comments592

Firefox и Chrome будут шифровать DNS-запросы и обходить цензуру

Reading time3 min
Views48K

Обычно резолвер сообщает каждому DNS-серверу, какой домен вы ищете. Этот запрос иногда включает ваш полный IP-адрес или его большую часть, что можно легко объединить с другой информацией, чтобы установить вашу личность. Из статьи Лин Кларк «DoH в картинках»

На Хабре неоднократно рассказывали о протоколе DNS-over-HTTPS (DoH), недавно принятом в качестве стандарта RFC 8484. Разработанный Mozilla, Google и Cloudflare протокол DNS-шифрования сводит на нет попытки мониторинга трафика «человеком-в-середине». Он устраняет самое «слабое звено» в HTTPS — открытые DNS-запросы, по которым сейчас злоумышленник может отслеживать содержимое DNS-пакетов и даже подменять их. Это позволяет блокировать доступ к ресурсу по IP-адресу или доменному имени.
Читать дальше →
Total votes 41: ↑38 and ↓3+35
Comments180

CloudFlare — рак интернета

Reading time5 min
Views217K


Дисклеймер: я сам много пользуюсь CloudFlare и считаю, что они делают большое дело, помогают развивать интернет, дают бесплатно крутые продукты, и в целом отличные ребята. Статья описывает проблемы глобализации и новые угрозы, когда децентрализованный интернет становится централизованным.

Когда CloudFlare только появился, это была настоящая революция в веб-хостинге: в два клика, без переезда на другой сервер, к своему сайту можно было подключить профессиональный CDN, который экономил кучу трафика, ускорял загрузку статических файлов и еще защищал от DDoS. Раньше позволить себе такое могли только компании за большие деньги, а теперь это стало доступно каждому, еще и бесплатно!

С тех пор CloudFlare сильно вырос и сегодня проксирует через свою инфраструктуру треть интернета. Из-за этого появились проблемы, которых раньше не существовало. В посте мы разберем, как CloudFlare угрожает нормальной работе интернета, мешает обычным людям пользоваться сайтами, имеет доступ к зашифрованному трафику, и что с этим делать.
Читать дальше →
Total votes 185: ↑179 and ↓6+173
Comments170

Чистая архитектура на PHP. Как её измерять и контролировать?

Reading time24 min
Views24K

Предисловие


Как ты уже понял из названия, говорить я тут собрался о самом, что ни на есть, “высоком” — Чистой архитектуре. А толчком к развитию всей этой истории послужила книга Роберта Мартина “Чистая архитектура”. Если еще не читал, осмелюсь порекомендовать! Автор раскрывает много важных тем, активно делится своим богатым жизненным опытом (из проф. области естественно) и сделанными на его основе выводами, эпизодически вплетает в главы истории о том, как виртуозно говнокодили (ну и не только, конечно же) наши отцы и деды в далёких 60-х, 70-х, 80-х и даже лихих 90-х, как по крупинкам собирали всеми любимые принципы SOLID и их аналоги в мире компонентов, и чему научились за прошедшие полвека. В процессе чтения книги хорошо прослеживается линия развития индустрии разработки ПО, типичные проблемы, с которыми пацанам приходилось сталкиваться, и способы их решения.

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

Мне кажется, статья будет полезна всем. Те, кто с книгой уже знаком, смогут освежить в своей памяти некоторые ее моменты, или просто пропустить первую часть и сразу приступить к знакомству с инструментом. Те, кто ранее книгу не читал, возможно, и в первой части найдут для себя что-то новое.
Читать дальше →
Total votes 36: ↑33 and ↓3+30
Comments23

GO Scheduler: теперь не кооперативный?

Reading time8 min
Views35K
Если вы читали release notes для версии GO 1.14, то возможно заметили несколько довольно интересных изменений в рантайме языка. Вот и меня очень заинтересовал пункт: «Goroutines are now asynchronously preemptible». Выходит что GO scheduler (планировщик) теперь не кооперативный? Что же, после прочтения по диагонали соответствующего proposal любопытство было удовлетворено.

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

image
Читать дальше →
Total votes 59: ↑55 and ↓4+51
Comments9

Как настроить деплой web-приложения на Go для Gitlab на VDS

Reading time3 min
Views26K

Предисловие


Эта статья является результатом недельного поиска весьма разрозненной информации о том, как же настроить деплой web-сервиса на Go. Не на Heroku, не на Docker, не на Digital Ocean, а просто на старомодный VDS с CentOS 7x64. Почему-то в сети нет этой информации, а большинство туториалов начинаются с того, как настроить билд, и заканчиваются запуском тестов.

Сразу предупрежу, что впервые настраивал CI/CD процесс, так что это статья от новичка новичку.
Читать дальше →
Total votes 12: ↑10 and ↓2+8
Comments22

PHP-Дайджест № 180 (4 – 18 мая 2020)

Reading time5 min
Views13K

Свежая подборка со ссылками на новости и материалы. В выпуске: 2 принятых, 2 отклоненных и 6 новых RFC предложений из PHP Internals, обзор PHP 8, порция полезных инструментов, онлайн мероприятия, видео, подкасты и многое другое.

Приятного чтения!

Читать дальше →
Total votes 52: ↑52 and ↓0+52
Comments52
1
23 ...

Information

Rating
Does not participate
Registered
Activity