Как стать автором
Обновить
48
0
Ян Иванов @franzose

Веб-разработчик

Отправить сообщение

Bare-metal Kubernetes — спускайся с облаков

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров10K

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

MetalLB — это решение для балансировки нагрузки в средах Kubernetes, которые не имеют доступа к встроенным балансировщикам, как в облачных провайдерах. Этот инструмент предлагает простой и эффективный способ добиться внешней доступности для сервисов в Kubernetes с помощью собственной инфраструктуры.

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

Пойдём разворачивать
Всего голосов 17: ↑15 и ↓2+13
Комментарии5

Обзор расширения OPCache для PHP

Время на прочтение33 мин
Количество просмотров126K


PHP — это скриптовый язык, который по умолчанию компилирует те файлы, которые вам нужно запустить. Во время компилирования он извлекает опкоды, исполняет их, а затем немедленно уничтожает. PHP был так разработан: когда он переходит к выполнению запроса R, то «забывает» всё, что было выполнено в ходе запроса R-1.

Очень маловероятно, что на production-серверах PHP-код изменится между выполнением нескольких запросов. Так что можно считать, что при компилированиях всегда считывается один и тот же исходный код, а значит и опкод будет точно таким же. И если извлекать его для каждого скрипта, то получается бесполезная трата времени и ресурсов.
Читать дальше →
Всего голосов 56: ↑55 и ↓1+54
Комментарии25

Изучение комбинаторных парсеров с Rust

Время на прочтение40 мин
Количество просмотров12K

Привет, Хабр! Представляю вашему вниманию перевод статьи "Learning Parser Combinators With Rust".


Эта статья учит основам комбинаторных парсеров людей, которые уже знакомы с Rust. Предполагается, что никаких других знаний не требуется, а всё, что не имеет прямого отношения к Rust, а также некоторые неожиданные аспекты его использования, будут объяснены. Эта статья не поможет вам выучить Rust, если вы его ещё не знаете, и в этом случае, вы, вероятнее всего, не поймёте комбинаторные парсеры хорошо. Если вы хотите изучить Rust, я рекомендую книгу "Язык программирования Rust".

Читать дальше →
Всего голосов 43: ↑43 и ↓0+43
Комментарии17

Как я обработал один миллиард строк в PHP

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров20K

Вероятно, вы уже слышали о соревновании под названием "The One Billion Row Challenge" (1brc), если же нет, то предлагаю ознакомиться с репозиторием 1brc Гуннара Морлинга.

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

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

Читать далее
Всего голосов 66: ↑64 и ↓2+72
Комментарии33

Аутентификация для WebSocket и SSE: до сих пор нет стандарта?

Уровень сложностиСредний
Время на прочтение21 мин
Количество просмотров13K

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

В статье разберем особенности аутентификации применительно к протоколу WebSocket и технологии Server-Sent Events, обсудим, какие нюансы могут быть, когда клиентская часть находится в браузере, и на что еще стоит обратить внимание, чтобы избежать неочевидных проблем.

А еще заодно поговорим про уязвимость Cross-Site WebSocket Hijacking (CSWSH) и в целом посмотрим на многие вопросы через призму информационной безопасности.

Читать далее
Всего голосов 53: ↑53 и ↓0+53
Комментарии5

Grafana и автотесты: учимся измерять работу тестов

Время на прочтение8 мин
Количество просмотров17K
Управление — трудоёмкая работа, которая усложняется при отсутствии подходящего инструмента. Легко упустить из виду постоянно меняющиеся компоненты и сложно быть в курсе событий: что-то обязательно проходит незамеченным.

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

Этот список можно продолжать и вводить новые метрики для задач тестирования. Расположение метрик на одном экране позволяет получать прозрачные отчёты о тестировании, которые понятны и инженерам, и руководителям. Главное в этом деле — научиться измерять и правильно подсвечивать проблемы. Тогда управлять тестированием станет проще.

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

image
Читать дальше →
Всего голосов 30: ↑30 и ↓0+30
Комментарии8

Пишем gRPC сервис на Go — сервис авторизации

Уровень сложностиСредний
Время на прочтение63 мин
Количество просмотров60K

Пишем gRPC сервис на Go — сервис авторизации


В этой статье мы научимся писать полноценный gRPC сервис на Go на примере сервера авторизации с полноценной архитектурой, готовой к продакшену. Мы напишем как серверную часть, так и клиентскую. В качестве клиента мы возьмём мой сервис — URL Shortener, о котором у меня также есть статья и видео-гайд на ютубе. Попутно мы познакомимся с базовыми подходами к работе с авторизацией. И в конце настроим автоматический деплой сервиса с помощью GitHub Actions на удалённый сервер.


Видео-версия этого гайда с более подробными объяснениями

Исходный код проекта: https://github.com/GolangLessons/sso


Итого, наш план:


  • Напишем простой, но полноценный gRPC-сервис
  • Разберемся с базовыми принципами работы авторизации — чтобы не было скучно
  • Настроим автоматический деплой в прод — потому что руками деплоить лень
  • Подружим его с уже готовым сервисом URL Shortener — чтобы был практический смысл
  • Напишем полноценные функциональные тесты

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


Кратко обо мне: меня зовут Николай Тузов, я много лет занимаюсь разработкой на Go, очень люблю этот язык. Также веду свой YouTube-канал.

Читать дальше →
Всего голосов 62: ↑60 и ↓2+66
Комментарии44

Создание сервиса авторизации через систему ЕСИА

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров8.9K

Всем привет. Меня зовут Динис, я старший разработчик в БФТ-Холдинге.

В данной статье приведен план по созданию сервиса авторизации через систему ЕСИА. Тема будет интересна тем, кто внедряет такой сервис для своего приложения. В статье я собрал ключевые выдержки из документации с частями кода, а весь код вы можете найти в конце статьи по ссылке на GitHub.

Что такое ЕСИА?

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

Читать далее
Всего голосов 9: ↑8 и ↓1+8
Комментарии14

От крышки рояля до фреймворка на rust: как системное программирование помогает творческой реализации

Время на прочтение16 мин
Количество просмотров5.7K

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

- Пять лет назад, когда я впервые услышал про LilyPond — язык программирования, на котором можно писать партитуры в текстовом редакторе — я посмеялся над гиком, что это придумал, и прошёл дальше.
- Два года назад я прочитал код партитуры из примеров — удивился, насколько логично и музыкально он выглядит, подивился задротству автора, и пошёл набирать ноты в MuseScore.
- В этом году я пишу экспортёр MIDI из Reaper в исходники LilyPond, а сегодня зарелизил rea-rs: фреймворк для написания расширений для Reaper на rust.

И, несмотря на то, что в этом альфа-релизе >16 300 строк, я всё ещё считаю, что занимаюсь «бытовым программированием». Имею в виду что-то вроде готовки: можно, конечно, сходить в ресторан, когда хочется чего-то эдакого, но в ресторан каждый день не набегаешься. А то, что погреб на даче потихоньку превращается в винодельню — так это побочный эффект. Зато всё своё, домашнее, натуральное.

В последнее время, подобные мысли я проговаривал не как здоровый сарказм, а как симптомы болезни: мол, «это не хумус, видео не передаёт запах»! Но, намедни, моя музыкальная школа подогнала мне мак с Finale и полным комплектом Adobe на борту, чтобы совместно работать над сборником рождественских песен. И… Holly crap, I was damn right! Но расскажу по порядку, как я дошёл до жизни такой.

К рассказу
Всего голосов 42: ↑42 и ↓0+42
Комментарии6

Концепции Rust, которые неплохо бы знать пораньше

Время на прочтение21 мин
Количество просмотров19K

Весь минувший месяц я глаз не мог оторвать от языка программирования Rust, ведь его конёк – создание современных программ, обеспечивающих безопасную работу с памятью. За прошедшие годы появилось несколько языков, которые позиционировались как «инструмент что надо» для написания надёжного бекенд-софта. Постепенно маятник качнулся от Java/C++ к Go и Rust, выстроенных на многолетних разработках по теории языков программирования. Суть – в создании инструментов, которые были бы эффективны именно в наш век.

Читать далее
Всего голосов 44: ↑35 и ↓9+35
Комментарии16

Генерация файлов с Adobe

Время на прочтение5 мин
Количество просмотров3.1K

Мне поставили задачу: сформировать документ через Adobe API. Требований было минимум - главное сформировать документ из шаблона. Шаблон я мог отформатировать в нужный мне формат без проблем. Но сам формат, как его использовать и как это связать с API я не знал. Поэтому нырнул в документацию.

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

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

Читать далее
Всего голосов 3: ↑2 и ↓1+4
Комментарии6

Хроники пэйджинга

Время на прочтение17 мин
Количество просмотров8.3K

Вот и меня посетило желание что-нибудь написать для читателей Хабра. Чем же ещё заняться в отпуске?


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

Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии10

Простое понимание замыканий в Rust

Время на прочтение5 мин
Количество просмотров11K

У вас бывало такое, что вы никак не можете скомпилировать код с замыканиями в Rust? Уже и все варианты Fn-трейтов перебрали, и move написали везде, где можно, а borrow checker все равно не унимается? И тут оказывается, что просто нужно внутри замыкания клонировать переданную переменную окружения! Сложно и непонятно. Дурацкий привереда Rust.


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

Читать дальше →
Всего голосов 43: ↑43 и ↓0+43
Комментарии8

Поваренная книга миграции данных между БД или как перенести данные из одной БД в другую с минимальной болью V1.1

Время на прочтение12 мин
Количество просмотров24K

Одно я могу сказать точно: миграция данных между двумя БД - это одна из, если не самая сложная часть при смене СУБД или схемы базы данных. И что-то мне подсказывает, что Вы не фанат громоздких, чрезвычайно трудно отлаживаемых, SQL конструкций.

Читать далее
Всего голосов 10: ↑5 и ↓5+2
Комментарии13

Пробую .NET Core + Kubernetes + appmetrics + prometheus + grafana + jobs + health checks

Время на прочтение14 мин
Количество просмотров26K
Краткое знакомство с kubernetes для разработчиков на примере разворачивания простого шаблонного сайта, с постановкой его на мониторинг, выполнением джобов по расписанию и health checks (все исходники прилагаются)

Установка Kubernetes
Установка UI
Запуск своего приложения в кластере
Добавление кастомных метрик в приложение
Сбор метрик через Prometheus
Отображение метрик в Grafana
Выполнение задач по расписанию
Отказоустойчивость
Выводы
Заметки
Список литературы
Читать дальше →
Всего голосов 21: ↑20 и ↓1+19
Комментарии4

Пора релоцироваться

Время на прочтение2 мин
Количество просмотров96K

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

Читать далее
Всего голосов 152: ↑80 и ↓72+45
Комментарии263

Ontol: Самые полезные материалы для релокейта в любую страну мира

Время на прочтение8 мин
Количество просмотров23K
image

В предыдущей подборке самых полезных материалов про визу O-1 много спрашивали про релокейт в Европу. Я целый день копал рунет и накопал полезное про релокейт не только в Европу, но почти куда угодно: Азию, Латинскую Америку, Австралию, Ближний Восток, Африку, Китай и даже… в Россию. Всего про 49 стран.

Недавний (пару недель назад) опрос 2423 ИТишников (50% Senior, 30% Middle, 10% Junior):

  • 23% в ближайшие 5 лет точно уеду (563)
  • 18% уже уехал (443)
  • 37% колеблюсь (900)
  • 21% не собираюсь уезжать в принципе (517)


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

В конце поста — опрос.

(Если у вас есть полезные ссылки на «личный опыт» по релокейту, который вам понравился, делитесь, буду признателен.)
Читать дальше →
Всего голосов 33: ↑27 и ↓6+29
Комментарии14

Самый крутой бесплатный ресурс по обучению программированию с нуля

Время на прочтение3 мин
Количество просмотров88K
image


Куинси Ларсон, основатель бесплатной образовательной платформы для программистов freeCodeCamp

Куинси Ларсон


Путь Куинси Ларсона в программирование был замысловатым. Он 6 лет был директором школы и вдруг ему захотелось повысить эффективность системы образования, поэтому стал учиться программированию. Куинси Ларсон проанализировал, какие были учебные программы (буткэмпы) на тот момент и понял, что ни о какой доступности и открытости нет речи, и тогда решил сделать свой инклюзивный-диверсити-бесплатный образовательный лагерь в 2014 году. Куинси Ларсон хотел помочь начинающим программистам, чтобы те не шли таким корявым путем как он сам. Благодаря freeCodeCamp теперь никто больше не должен есть стекловату и смотреть в бездну. Узнав про мотивацию Куинси Ларсона, я обрадовался, ибо не один я такой странный и хочу собрать концентрат, Ontol, самых полезных бесплатных материалов в одном месте.

Помимо работы над freeCodeCamp, Куинси Ларсон борется за свободный интернет, контрибьютит в open-source и играется со своими двумя детишками.

freeCodeCamp


Образовательной платформой FreeCodeCamp пользуются 350 000 студентов в день из 160 стран. За 2021 год студенты провели за обучением 2,1 млрд минут или 4000 лет. 217 000 учеников считают себя выпускниками этой школы, 40 000 получили работу ИТишника впервые, после обучения тут.

А еще, говорят, что можно зайти на этот сайт с полным 0, а выйти уже трудоустроенным (дело за малым — разрешение на работу). Ах да, надо же знать английский (или очень хотеть его выучить).

На русском языке про FreeCodeCamp нет странички в Википедии (хотя есть на сербском, албанском, португальском, манипури, румынском, малаяльском языках), зато есть сотни более кривых «пересказов» их курсов на русском языке, но не бесплатно, а за 150к+
Читать дальше →
Всего голосов 26: ↑16 и ↓10+11
Комментарии11

Как получить онлайн магистратуру по CS от американского университета по цене кофе

Время на прочтение9 мин
Количество просмотров36K


Поговорим о: 1) том как я попал в магистратуру по Computer Science от Georgia Tech пока жил и работал в Воронеже, 2) требованиях к поступлению, 3) стоимости, 4) моих впечатлениях от курсов, которые мне читают, 5) почему я все еще продолжаю учиться после того, как начал работать в FAANG и переехал в UK.

Читать дальше →
Всего голосов 41: ↑40 и ↓1+50
Комментарии22

Самые интересные блоги и сайты по C# / .NET

Время на прочтение3 мин
Количество просмотров15K

0907_cs_sites_ru/image1.png


В этой небольшой подборке собраны разные источники информации, которые могут быть полезны C# / .NET разработчикам: блоги, репозитории с исходным кодом, стандарты и аккаунты разработчиков, рассказывающих о тонкостях как языка, так и платформы в целом.

Читать дальше →
Всего голосов 9: ↑8 и ↓1+8
Комментарии14
1
23 ...

Информация

В рейтинге
6 315-й
Дата рождения
Зарегистрирован
Активность

Специализация

Backend Developer
Senior