Search
Write a publication
Pull to refresh
6
0
Игорь @peacecoder85

Backend Engineer

Send message

За 25 лет я выучил 30 языков программирования. Хочу поделиться своим опытом

Level of difficultyEasy
Reading time10 min
Views56K

Привет, Хабр! Перевели для вас статью программиста-самоучки, в арсенале которого — три десятка языков программирования. Надеемся, она вдохновит вас поделиться собственными историями становления в кодинге не меньше, чем нас в beeline cloud. Приятного чтения!

Всё началось в далёком 1997 году. С тех пор прошло более 25 лет. Свои первые программы я писал еще под ОС Windows 95 и Windows 98. На тот момент мне было около 12 лет – как раз тот возраст, в котором многие из моего поколения начинали знакомство с программированием. Первым моим языком был Logo, используемый в MicroWorlds от LCSI (Logo Computer Systems Inc). Я получил эту программу от родителей в подарок.

Исчерпав возможности Logo в ограниченной среде MicroWorlds, я перешел на Visual Basic. По очень простой причине — он был мне понятен и к тому же доступен прямо в Microsoft Office. Visual Basic 6 стал первым «настоящим» языком программирования, с которым я познакомился.

Читать далее

Как я заработал 500 000 рублей, сделав доступ к ChatGPT. Мои 6 выводов по итогу проекта

Level of difficultyEasy
Reading time5 min
Views24K

Пишу в продолжение прошлой статьи "Как я заработал 500 000 рублей, сделав доступ к ChatGPT. А потом Яндекс убил SEO и всё (почти) закончилось". В прошлый раз я рассказывал о запуске проекта на базе ChatGPT, а сейчас будут выводы и мысли, к которым я пришёл по ходу разработки проекта.

Читать далее

Очередной взгляд на собеседования. Часть 1

Level of difficultyEasy
Reading time8 min
Views18K

Регулярно мы видим в интернетах множество размышлений или криков души на тему содержания собеседований в IT. Мол, и интервьюировать не умеют, и задачи дают не релевантные, и вопросы бессмысленные, и, вообще, собесы в IT это ритуал и карго-культ. Сидит там интервьюер и думает: «чего бы такое ещё спросить», самоутверждается, а решение принимает в итоге наобум и по первому впечатлению. 

В то же время компании в своих блогах пишут, как они за все хорошее, против всего плохого. 

Если коротко, то я тоже считаю, что среднестатистический собес – это бессмысленный трэш, и сам я иногда провожу их неудачно.  Раньше вообще проводил «как все» – то есть отвратительно. Затем, задумался.  А что, если я постараюсь осмыслить, зачем я провожу интервью и почему задаю те вопросы, которые задаю? Может быть, мне будет проще отбирать релевантных кандидатов? Или я хотя бы смогу сэкономить немного времени, убрав из процесса что-то лишнее?

Добрый день. Меня зовут Михаил Толстой. Я работаю ведущим руководителем проектов в Ozon Tech и пишу в телеграм-канал «М-м-м, Толстой».

Вагона терпения описывать в один присест всё-всё-всё, что я пробовал, у меня нет (и едва ли у вас было время столько разом читать) – поэтому ловите сперва разбор самого одиозного из элементов технического интервью – live-кодинга. 

Читать далее

Клиповое мышление: как замедлить цифровое слабоумие

Level of difficultyEasy
Reading time4 min
Views95K

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

Читать далее

DDD в golang. Превозмогая трудности

Level of difficultyMedium
Reading time5 min
Views11K

В последнее время достаточно много выступлений, посвященных реализации подходов Domain Driven Design(DDD) в golang.

Я не буду останавливаться на value object, они в golang хорошо реализуются с помощью type defintions. А разберу работу с изменением аггрегатов.

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

Читать далее

Проблемы согласованности данных в микросервисах и их решение

Level of difficultyEasy
Reading time14 min
Views19K

Привет, Хабр!

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

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

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

Читать далее

Многопоточность и параллелизм в Go: Goroutines и каналы

Reading time15 min
Views32K


Язык программирования Go, разработанный с упором на простоту и эффективность, предлагает уникальный подход к реализации параллельных вычислений через Goroutines и каналы.

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

Есть ли Singleton в Golang?

Level of difficultyEasy
Reading time2 min
Views7.1K

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

Читать далее

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

Level of difficultyMedium
Reading time7 min
Views8K
Когда я только начинал изучать компиляторы, я не понимал одного важного момента: Разработка языка программирования и написание компилятора — это два почти совершенно разных навыка. Конечно, между ними есть некоторое пересечение, но меньшее, чем может показаться на первый взгляд!

Я думаю, что это важно знать, потому что обе эти задачи очень сложны! Легче овладеть этими навыками, если решать их по очереди. Ваше первое решение сложной задачи, скорее всего, будет… ну, не таким хорошим, как десятое! Однако довольно часто разработчики создают игрушечный язык, когда пишут свой первый компилятор, а это значит, что они совершают ошибки и учатся сразу на двух сложных проблемах. Хуже того, эти две проблемы взаимосвязаны: Ошибка в одной из них усложняет жизнь в другой. Кроме того, как мы увидим, хотя компиляторы и сложны на первых порах, они, по сути, являются решенной проблемой, в то время как разработка языка программирования — это, скажем так, область продолжающихся исследований.
Читать дальше →

Японцы разработали способ продления срока службы аккумуляторов в 10 раз. Что это за технология?

Reading time4 min
Views11K

Японская компания Koike разработала монокристалл, который можно использовать в качестве электролита в батареях. Его сопротивление примерно на 90% меньше, чем у материалов на основе поликристаллов, используемыми в стандартных твердотельных аккумуляторах. По словам авторов идеи, новинка дает возможность увеличить срок службы аккумуляторов до 10 раз. Если все получится, это может стать технологическим прорывом, поскольку Подробности — под катом.
Читать дальше →

Архитектура — всё. Да здравствует архитектура

Level of difficultyEasy
Reading time5 min
Views8.5K

Привет! В одном из прошлых постов мы рассказывали вам, что в МКБ пришел Главный архитектор (ГА), Клецких Дмитрий. Проанализировав и оценив состояние дел, новый руководитель занялся изменениями, внедрением новых процессов и методологии. Собственно, об этом и будет пост.

Читать далее

Керниган и Пайк были правы: делай что-то одно и делай это хорошо

Level of difficultyEasy
Reading time11 min
Views29K
Роб Пайк и Брайан Керниган

В октябре 1984 года два идеолога опубликовали радикальный манифест… ну, или что-то вроде того.

Легенды computer science Брайан Керниган и Роб Пайк сформулировали в Program Design in the UNIX Environment паттерн архитектуры ПО, за сохранение которого оба боролись долгие годы.

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

Старые программы покрываются коркой сомнительных фич.

Суть статьи часто сводят к аббревиатуре DOTADIW, или «Do One Thing And Do It Well» («Делайте что-то одно и делайте это хорошо»). В Unix и его потомках есть множество программ, в которых воплощена эта мантра: ls просто создаёт список файлов, cat просто выводит содержимое файлов, grep просто фильтрует данные, wc просто подсчитывает слова и так далее. У каждой программы есть несколько опций, меняющих её поведение, но не слишком сильно. Например: wc можно сконфигурировать для подсчёта строк или слов, но не для подсчёта количества абзацев или вхождений какой-то фразы.

Мощь Unix, защищаемая Керниганом и Пайком, заключалась в возможности соединения этих простых программ в цепочку для создания сложных поведений. Зачем добавлять сопоставление регулярных выражений в wc, если с этим уже способна справиться grep?
Читать дальше →

Развенчание мифа о собственной продуктивности программистов

Level of difficultyEasy
Reading time6 min
Views29K

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

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

Читать далее

Проектируйте правильно

Level of difficultyHard
Reading time11 min
Views18K

Проект это сложная история. Обычно это относительно сложное и длительное мероприятие, создать программный продукт и провести его через стадию активной разработки до первой реальной коммерческой эксплуатации. Лично я видел как этот путь, в среднем, занимал от 2 до 5 лет на проекте с большой командой разработчиков.

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

Под катом наблюдения и личные выводы почему это происходит.

Читать далее

Алгоритмические собеседования нужны

Level of difficultyEasy
Reading time8 min
Views21K

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

Сразу скажу, что моя статья относится лишь к условному ФААНГу. Многие аргументы из этой статьи теряют значимость в других случаях: если у вас маленькая фирма, мало кандидатов или у вас всего 10 пользователей.

Я утверждаю, что алгоритмические интервью - лучший вариант для ФААНГа из всех пока придуманных.

Читать далее

Принципы непрерывного рефакторинга

Level of difficultyHard
Reading time23 min
Views15K

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

«Работает — не трогай!»: вообще забить на чистки и ничего не менять. В некоторых случаях валидный подход. Но в коде, который приходится менять хотя бы даже эпизодически (фиксы багов, мелкие доделки, смена окружения и т. п.), со временем неизбежно приводит к катастрофе. Вам надо что‑то поменять в коде, и это оказывается невозможно сделать легко. Даже за тривиальные изменения приходится платить большой кровью.

«Я прочитал Роберта Мартина»: включаем чистки в обычный код. Надеваем галстук бойскаута и чистим код прямо по ходу работы над текущими задачами. Отправляем его коллегам на ревью и ждём несколько дней, покуда они не разберутся, где заканчиваются рефакторинги и начинаются непосредственно изменения по задаче. Или же уходим по кривой дорожке рефакторингов в тёмный лес и продалбываем к чертям все изначальные сроки. Когда начинаешь приводить код к идеалу, не всегда бывает так легко остановиться!

«Нужен порядок и учёт»: делаем отдельные коммиты с чистками, но нерегулярно — только когда в дело берётся соответствующий тикет. Правда, тикеты на рефакторинг почему‑то регулярно получают самый низкий приоритет во время планирования и маринуются в беклоге месяцами. Но что уж тут поделать?

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

За прошедший год я нащупал и отточил ещё один подход, который лишён указанных недостатков. И теперь готов поделиться им с вами.

Читать далее

OpenAI GPTs: пошаговое руководство для создания с практическими примерами, ACTIONS и внешние API

Reading time14 min
Views78K

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

В этой статье я расскажу как создавать кастомные GPTs под конкретные задачи и приведу примеры практических реализаций. Поделюсь идеями использования GPTs и расскажу о текущих проблемах при реализации. Разберем использование Instructions, Knowledge, Actions, подключение сторонних API.

Читать далее

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

Level of difficultyMedium
Reading time19 min
Views29K

14 ноября 2023 года команда Google Deepmind официально представила мировой общественности свою модель прогнозирования погоды – GraphCast. Её особенность заключается в том, что она способна рассчитывать погоду на 10 дней вперёд без понимания «физики» атмосферных процессов. Учёные обучали нейросеть на цифровых исторических архивах погоды за период с 1979 по 2017 годы. Сам же прогноз рассчитывается за минуту и не требует огромных суперкомпьютерных ресурсов. В тестах GraphCast смог обойти самую передовую гидродинамическую модель прогнозирования погоды от Европейского центра среднесрочных прогнозов. Рост качества был настолько существенным и резким, что в научной среде уже говорят о революции в сфере прогнозирования погоды. К чему это может привести и где смотреть самые точные прогнозы? Давайте разбираться.

Читать далее

Большая дыра в безопасности Android: почему смартфоны с зеленым роботом подвержены кражам?

Level of difficultyEasy
Reading time8 min
Views23K
image

Многим пользователям смартфонов знакомо такие понятия как «привязка к аккаунту». У различных вендоров смартфонах есть свои механизмы защиты смартфонов от кражи: у Apple — FMI, у Xiaomi — Mi Cloud, а у Google — FRP. Однако у Android есть давняя уязвимость, которая позволяет обходить практически любые смартфоны на «чистой» системе, даже с привязкой к Google-аккаунту. Недавно мне написал известный YouTube-блогер MaddyMurk и предложил задарить смартфон-броневичок AGM H3 на гугл-аккаунте, который он не смог сбросить. Я решил подготовить подробный материал о дырах в защите Android и на практике обойти FRP на смартфоне, который «повис» на активации. Сегодня мы с вами узнаем: почему смартфоны на Android так легко обходить, какие существуют методики и почему подобная практика невозможна на устройствах Apple. Интересно? Жду вас под катом!
Читать дальше →

Кажется, дождь начинается: похоже, искусственный интеллект превосходит традиционные методы прогнозирования погоды

Reading time5 min
Views3.6K

Новая компьютерная ИИ-модель GraphCast для предсказания погоды, созданная Google, во много раз превзошла традиционные способы, которые десятилетиями использовались по всему миру и привлекали многомиллионные инвестиции. Европейская модель прогнозирования погоды считалась «золотым стандартом» в метеорологии, но и её результаты оказались хуже, чем предсказания ИИ от Google. Подробности и перспективы технологии — под катом.

Читать далее

Information

Rating
8,167-th
Location
Одесса, Одесская обл., Украина
Date of birth
Registered
Activity

Specialization

Backend Developer
Senior
From 4,000 $