Как стать автором
Поиск
Написать публикацию
Обновить
5
0.1
hMartin @hMartin

Пользователь

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

Имплементируем WebSocket протокол на Go

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

Статья для тех, кто хочет познакомиться с устройством технологии WebSocket или языком программирования Go.

Или узнать с какой простотой Go стал одним из самых популярных языков программирования для написания сетевых приложений.

Читать далее

Что Go грядущий нам готовит? Разбираем долгожданный релиз 1.19

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

Привет всем гоферам! Я пишу на Go уже четыре года — начиная с версии 1.10. Сейчас я занимаюсь разработкой одних из важнейших сервисов в логистике Ozon. 

Не успели мы до конца оправиться от долгожданного релиза Go 1.18 c дженериками, в котором нам предоставили дженерики, как команда Go анонсировала следующий бета-релиз Go 1.19.

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

Навстречу приключениям изменениям!

Подробности под катом

Создание клона IMDB с Java бэкендом на SparkJava и Neo4j

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

Приложение представляет собой клон IMDB, основанный на наборе данных рекомендации MovieLens, дополненном данными о фильмах и ролях с themoviedb.org.

Внешний интерфейс написан на vue.js и выглядит довольно приятно.

Он вызывает несколько конечных точек REST API для вызова различных представлений и функций.

Читать далее

Как правильно имитировать Agile?

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

Подобная статья должна была появиться раньше, лет десять или пятнадцать назад, когда Agile только начинал внедряться в ИТ-компаниях. Сколько можно бы было избежать ошибок, проблем, конфликтов, , если бы менеджеры сразу подходили к вопросу правильно, не отвлекаясь на лишние действия …

Зато за это время накопился опыт "внедрений" Agile в разных условиях, в разных компаниях, который следует обобщить и повсеместно распространять.

Читать далее

Как изучить SQL за ночь или шпаргалка для системного аналитика

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

Помните, как вы были студентами, и готовились к экзаменам по ночам?

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

Изучите теорию на примерах и закрепите на 13 практических задачах по SQL.

Читать далее

Гидропоника для балкона? Почему бы и да

Время на прочтение9 мин
Количество просмотров24K
Картинка: kartinkin.net

Скоро лето и хочется чего-нибудь эдакого, связанного с природой, чего-нибудь зелёненького, может быть даже цветущего… Если вас мучают те же самые мысли, что и меня, то вполне можно попытаться объединить реализацию этих мыслей и свои технические навыки для создания небольшой домашней фермы по выращиванию чего-нибудь своего.
Читать дальше →

Оконные функции SQL простым языком с примерами

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

Привет всем!

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

P.S. Если автор что-то не разобрал и не написал, значит он посчитал это не обязательным в рамках этой статьи))) 

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

Читать далее

Экстремальная настройка производительности HTTP: 1,2M API RPS на инстансе EC2 с 4 виртуальными процессорами (vCPU)

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

Прим. перев.: автор данного исследования — Marc Richards, Solutions Architect и DevOps-инженер — продемонстрировал потрясающую настойчивость и тщательность в тотальной оптимизации производительности веб-приложения. Получившийся материал — кладезь полезных знаний для расширения своего кругозора в области оптимизации, особенностей сетевого стека в Linux и не только, даже вне зависимости от практической заинтересованности в конечном результате автора. Приготовьтесь к по-настоящему длинному техническому путешествию с обилием терминологии, увлекательных графиков и полезных ссылок.

Читать далее

Токсичная вежливость

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

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

Дело в том, что Дарья косячит. Как, впрочем, и все мы. И накосячив — извиняется. Громко, искреннее, прижимая руки к сердцу. После чего считает инцидент полностью исчерпанным. После чего искреннее удивляется, когда этого оказывается недостаточно.

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

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

               — Извинения не принимаются, — спокойно отвечаю я.

               — Я же извинилась! — возмущается она, — чего вам еще надо?

               — Слово «извините», Дарья, означает только признание своей вины в случившемся.

               — Хорошо. Я признала вину в случившемся. Инцидент исчерпан.

               — Инцидент может считаться исчерпанным, когда устранены последствия.

               — Нет никаких последствий. Я убрала просыпавшуюся муку и принесла извинения, — снисходительно машет рукой Дарья.

               — Извинения на хлеб не намажешь, Дарьюшка! — возмущаюсь я, — накосячила? Исправляй! Просыпала муку? Сходи и купи новую!

               — Это еще почему?

               — Потому что мы, с твоим братом, по субботам кушаем утром оладушки! А сейчас не можем, потому что ты муку просыпала!

Читать далее

Вопросы и ответы для собеседования Go-разработчика

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

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


Я постарался копнуть в каждый вопрос чуть глубже чем, возможно, надо бы — что бы у читателя был не только короткий ответ на вопрос, но и некоторое понимание "а почему именно так устроена та или иная штука". Более того, крайне рекомендую ознакомиться и с ссылками на источники, что будут под ответами — там вы найдете более развернутые ответы.


Да, это очень объемный пост, и вряд ли его можно вдумчиво осилить за один подход, но поместив его в закладки он, возможно, когда-то сослужит вам добрую службу (читать его можно по частям, находясь в метро или между вечными совещаниями; да и Ctrl + F никто не отменял). Ещё ему очень не хватает оглавления для удобной навигации между вопросами, но у хабраредактора нет возможности генерировать TOC (если будут запросы об этом в комментариях — сделаю его руками). Об очепятках, пожалуйста, пишите в личку.

Читать дальше →

Уехать в Германию на финишной прямой до пенсии, отыскать там СССР

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


Уехать в Германию на финишной прямой до пенсии, отыскать там СССР или как сбежать из тюрьмы, и чтобы тебе за это ничего не было


Март 2022.


События последних недель разделили нашу жизнь на ДО и ПОСЛЕ, а наше общество – на тех, кто ZА и ПРОТИВ. Воздержавшихся, кажется, уже не осталось. Даже тех, кто в "танке". Или в бункере.


Поэтому для некоторых это статья будет занятным чтивом из серии статей советского журнала «Вокруг света», а для других памяткой и возможно инструкцией по применению. Основой для этой публикации послужили материалы для большой статьи о разных аспектах переезда и жизни в Германии (а конкретнее во Франкфурте), идея которой пришла мне года полтора назад. Материал для неё я начал собирать несколько месяцев назад. Однако с той скоростью, с которой развиваются события сейчас и то бедственное положение, в котором оказались некоторые мои коллеги, подтолкнуло меня к мысли опубликовать материалы в том виде, в котором они у меня имелись на данный момент, с минимальными доработками.

Читать дальше →

Ошибки, которые не ловит Rust

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

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

В конечном итоге, возможности того, что можно сделать при помощи языка программирования, редко ограничены самим языком: нет ничего, что можно сделать на C++, но нельзя повторить на C, при наличии бесконечного количества времени.

Если язык полон по Тьюрингу и компилируется в ассемблерный код, каким бы ни был интерфейс, вы общаетесь с одной и той же машиной. Вы ограничены возможностями оборудования, количеством его памяти (и её скоростью), подключенной к нему периферией, и так далее.

На самом деле, достаточно лишь команды mov.

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

Кроме того, есть такие аспекты, как производительность, отладкопригодность (если такого слова нет, то его стоит придумать) и дюжина других факторов, которые стоит рассмотреть при «выборе языка».
Читать дальше →

Пациент, который упал с третьего этажа на зубы и попал в учебные материалы

Время на прочтение7 мин
Количество просмотров35K
Пациент в самом расцвете сил непроизвольно выпал с третьего этажа, пролетел примерно 11 метров и упал на лицо почти плашмя.

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


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

На момент поступления к нам в стоматологию у него не было передних нижних и верхних зубов, были тяжёлые повреждения нескольких из оставшихся, зашинированы переломы челюстей, наблюдалась обширная потеря костной ткани. В переводе на обывательский: всё спереди рта осталось на асфальте, осколки вытащил хирург, и в итоге спереди вместо челюстей и зубов был язык. Рот не закрывался на несколько сантиметров, а из-за проблем с суставами после изменения анатомии челюстей нельзя было даже сомкнуть оставшиеся по бокам зубы. Есть он мог только детское питание.

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

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

Внимание! Ниже будут фотографии окровавленной ротовой полости с фрагментами костей и другие детали из фотопротоколов операций и инструментальных обследований. Аккуратнее.
Читать дальше →

Что вообще значит «прослушивать порт»?

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

В углу здания студенческого клуба есть кофейня, и в углу этой кофейни сидят два студента. Лиз стучит по клавиатуре потрёпанного древнего MacBook, который ей подарил брат перед отъездом в колледж. Слева от неё на диване Тим пишет уравнения в пружинном блокноте. Между ними стоит наполовину пустая кружка с кофе комнатной температуры, из которой Лиз время от времени потягивает напиток, чтобы не заснуть.

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

Тим останавливается на половине строки, вырывает лист из блокнота, комкает его и кладёт рядом с небольшой горкой других скомканных листов.
Читать дальше →

Основы внутреннего устройства JavaScript

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

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

Введение


Почти все уже слышали о концепции движка V8 и большинство людей знает, что язык JavaScript однопотоковый или что он использует очередь обратных вызовов.

В этом посте мы подробно разберём эти концепции и объясним, как же работает JavaScript. Благодаря знанию этих подробностей вы сможете писать более оптимальные приложения, надлежащим образом использующие API. Если вы работаете с JavaScript относительно недавно, этот пост поможет вам понять, почему JavaScript настолько «странный» по сравнению с другими языками. А если вы опытный разработчик на JavaScript, то он позволит вам по-новому взглянуть на внутреннее устройство JavaScript Runtime, с которым вы работаете каждый день.
Читать дальше →

Оформляем README-файл профиля на GitHub

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

Летом 2020 года GitHub позволила пользователям создавать персональные README-файлы и с их помощью кастомизировать свои профили. Сама платформа при создании подобного файла предлагает уже готовый шаблон, в который можно вписать свои данные. Но о какой кастомизации может идти речь, если у всех будут одинаково оформленные профили? За почти два года сообщество придумало множество различных способов выделиться и особенно оформить свою страницу на GitHub.

Читать далее

Как не надо индексировать

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

Развитие происходит по спирали: когда-то люди не умели правильно индексировать, потом (в основном) научились, потом пришли noSQL и все снова забыли знание древних. Что вы будете делать, когда последние из старых DBA отплывут в Валинор?

Снова и снова и сталкиваюсь с полным набором антипаттернов индексирования. Я их перечислю, но! Для каждого антипаттерна есть исключение, когда именно это и стоит делать. Поэтому кликбейтно сформулированное правило верно в 95% случаях, но если вы хотите копнуть глубже, то прочитайте про исключения.

И в конце полезные скрипты для MSSQL, Postgres и MySQL.

Читать далее

Разбираемся в сортах реактивности

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

Здравствуйте, меня зовут Дмитрий Карловский и я… прилетел к вам на турбо-реактивном самолёте. Основная суть реактивного двигателя изображена на картинке.



Тут, казалось бы, хаотичное взаимодействие между молекулами, приводит к тому, что улетающие молекулы опосредованно передают импульс корпусу двигателя. Что ж, давайте подумаем, как реактивные принципы решают или наоборот усугубляют проблемы в программировании. Сравним различные подходы к реактивному программированию. И вытащим на поверхность все их подводные камни.


Это — текстовая расшифровка выступления на SECON.Weekend Frontend'21. Вы можете посмотреть видео запись, прочитать как статью, либо открыть в интерфейсе проведения презентаций.

Читать дальше →

Go и MySQL: настраиваем пул соединений

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

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

немного затронем основы клиент-серверного протокола MySQL, его базовое устройство и принципы работы;

дальше перейдем к Go части и разберем реализацию пула соединений;

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

Надеюсь каждый для себя найдет что-то полезное.

Поехали

Ультимативный гайд по созданию CI/CD в GitLab с автодеплоем в Kubernetes на голом железе всего за 514$ в год ( ͡° ͜ʖ ͡°)

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

Шел 2021 год, русские хакеры продолжают переигрывать и уничтожать загнивающий Запад, вмешиваясь в выборы, ломая фейсбуки и пентагоны. Тем временем на Хабре выходят статьи о создании неубиваемых Kubernetes-кластеров, которые, по видимому, всех нас переживут. А кто-нибудь подумал о простых пацанах (пацанессах)??? Как быть обычному программисту, который хочет свой небольшой кластер и ламповый CI/CD с автодеплоем приложения, чтобы кенты с района не засмеяли?

Всем привет, меня зовут Алексей и я алкоголик разработчик на Python/Go в Домклик. Сегодня мы будем понижать порог входа в self-hosted Kubernetes и GitLab AutoDevops.

Читать далее

Информация

В рейтинге
4 378-й
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность