Search
Write a publication
Pull to refresh
5
0
hMartin @hMartin

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

Send message

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

Reading time9 min
Views27K

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

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

Читать далее

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

Reading time8 min
Views18K

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

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

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

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

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

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

Reading time9 min
Views3.8K

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

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

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

Читать далее

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

Reading time15 min
Views37K

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

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

Читать далее

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

Level of difficultyEasy
Reading time10 min
Views179K

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

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

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

Читать далее

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

Reading time9 min
Views24K
Картинка: kartinkin.net

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

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

Reading time4 min
Views684K

Привет всем!

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

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

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

Читать далее

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

Reading time54 min
Views19K

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

Читать далее

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

Reading time5 min
Views56K

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

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

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

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

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

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

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

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

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

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

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

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

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

Читать далее

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

Level of difficultyMedium
Reading time53 min
Views142K

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


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


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

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

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

Reading time19 min
Views59K


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


Март 2022.


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


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

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

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

Reading time61 min
Views21K

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

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

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

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

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

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

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

Reading time7 min
Views35K
Пациент в самом расцвете сил непроизвольно выпал с третьего этажа, пролетел примерно 11 метров и упал на лицо почти плашмя.

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


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

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

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

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

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

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

Reading time8 min
Views42K

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

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

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

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

Reading time6 min
Views45K
image

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

Введение


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

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

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

Reading time14 min
Views263K

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

Читать далее

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

Reading time5 min
Views41K

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

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

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

Читать далее

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

Reading time27 min
Views39K

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



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


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

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

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

Reading time14 min
Views31K

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

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

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

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

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

Поехали

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

Reading time23 min
Views65K

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

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

Читать далее

Information

Rating
4,615-th
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity