Как стать автором
Обновить
-7
0

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

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

Как мы сделали игру для разработчиков в телеграм на 10+ тыс юзеров

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

Всем привет! Это создатель игры Dev's Battle (Образовательной MMO-RPG игры для разработчиков в Телеграмм). В этой статье я решил рассказать про наш опыт создания продукта в телеграмм.

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

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

Знакомство с производственной системой «Тойоты»

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

Ещё пару месяцев назад я не думал, что производство автомобилей да и вообще управление крупным производством в целом, может быть таким интересным и сложно организованным процессом. А там, где в огромных количествах есть сложности всегда найдётся работа для их решения и пытливого ума. Хочу рассказать о моём впечатлении от знакомства с производственной системой «Тойоты» или Toyota Production System (TPS) и книгe Jeffrey K. Liker «The Toyota Way: 14 Management Principles from the World»s Greatest Manufacturer».

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

Max Payne — ретроспектива трилогии

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

«Все они были пройдены. Последний клик поставил жирную точку в этой истории, я убрал руку с клавиатуры — все было кончено».

Поводом для написания этого материала стало десятилетие Max Payne 3, это довольно весомый срок, учитывая, что игру до сих пор многие считают лучшим шутером от третьего лица. Вот я и решил смахнуть пыль с этого бриллианта и вновь насладиться последними похождениями Макса Пейна, попутно освежив в памяти трилогию от Remedy.

Вернёмся к истокам. 21 год назад ребята из финской студии Remedy, будучи любителями гонконгских боевиков Джона Ву, задались целью воплотить адреналиновые перестрелки в формате видеоигры и преумножить эти ощущения за счет погружения. Сегодня мы знаем, что получилось это у финских парней отлично, и они навсегда вписали свои имена в историю шутеров от третьего лица. Как же сейчас, спустя два десятка лет, ощущаются похождения «человека, которому нечего терять»? Давайте узнаем.
Читать дальше →
Всего голосов 26: ↑23 и ↓3+33
Комментарии36

Использование Typescript с React – руководство для новичков

Время на прочтение6 мин
Количество просмотров189K
Друзья, в преддверии выходных хотим поделиться с вами еще одной интересной публикацией, которую хотим приурочить к запуску новой группы по курсу «Разработчик JavaScript».



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

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

И если вы застряли на чем-то, помните, что вы всегда можете типизировать что- нибудь как any. Any – ваш новый друг. А теперь перейдем непосредственно к примерам.
Читать дальше →
Всего голосов 33: ↑29 и ↓4+25
Комментарии7

React + TypeScript: необходимый минимум

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


Привет, друзья!


Представляю вашему вниманию перевод этой замечательной статьи.


Многие React-разработчики спрашивают себя: надо ли мне учить TypeScript? Еще как надо!


Преимущества изучения TS могут быть сведены к следующему:


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

Эта статья представляет собой минимальное введение по использованию TS в React.


Антигероем нашей истории будет Пэт — очень неприятный технический директор.

Читать дальше →
Всего голосов 15: ↑12 и ↓3+12
Комментарии2

Перевод с программистского: как убедить бизнес инвестировать в технику

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

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

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

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

Реализация двустороннего A* на двух потоках

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

На Хабре можно найти немало статей, посвящённых оптимизациям поиска кратчайшего пути на графе. Я расскажу ещё про еще один подход. Речь пойдёт о распараллеливании алгоритма A* и исполнении его на двух потоках, а также о сложностях, с которыми я столкнулся при реализации, и их преодолении.

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

Как проходят алгоритмические секции на собеседованиях в Яндекс

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

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


Так что мы подготовили для вас следующие материалы:


  • Специальный контест, содержащий задачи, похожие на те, что мы даём на интервью.
  • Этот пост. В нём рассказывается, почему нужно проводить такие секции, а также разбираются все задачи контеста.
  • Два видео, в которых разбираются задачи из контеста: в первом — задача попроще, во втором — две задачи посложнее. Из этих видео вы узнаете о типичных ошибках, допускаемых и при прохождении алгоритмических секций, и при написании продакшен-кода.
Читать дальше →
Всего голосов 86: ↑52 и ↓34+18
Комментарии105

Оплачиваемое хобби: как из студента стать ментором курса

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

Гарантирует ли Слёрм трудоустройство? Нет: об этом мы сразу честно говорим на страницах всех наших курсов. Но помогает ли Слёрм получить работу? Да! И пример в подтверждение этому — история нашего студента Артёма Примы, который после DevOps Upgrade стал ментором курса. 

Далее — история Артёма, о том, как он стал ментором и впечатления от взаимодействия со студентами: что им даётся проще, а что — сложнее.

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

Как воспитать GPT модель в домашних условиях [LLaMA Update]

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

Мы решили проверить технологию, на которой основан ChatGPT, посмотреть актуальное состояние open-source GPT-like моделей и ответить на вопрос — можно ли обучить GPT-like модель в домашних условиях?

Для эксперимента выбрали LLaMA и GPT-J и не самый мощный ПК с видеокартой Nvidia GTX 1080TI с 11 GB VRAM. Оказалось, что этого достаточно не только, чтобы загрузить модель, но и дообучить ее (fine-tune). Рассказываем — как мы это сделали.

Читать далее
Всего голосов 42: ↑40 и ↓2+44
Комментарии25

Микросервисные приложения на GoMicro

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

Go благодаря возможностям компиляции и встроенным механизмам конкурентной многозадачности очень хорошо подходит для создания сетевых приложений и активно используется в создании инструментов для DevOps и распределенных приложений. В этой статье мы рассмотрим некоторые возможности фреймворка GoMicro для реализации микросервисных приложений на Go.

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

Quic от Google

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

Основной обязанностью любого транспортного протокола является поддержка связи и коммуникации между двумя конечными сущностями. Таким сущностями могут выступать хосты и устройства, как, к примеру, роутеры. Транспортный протокол предоставляет механизм виртуального зацикленного пути между двумя конечными устройствам. Есть два типа транспортных протоколов: ориентирующиеся на соединения и не ориентирующиеся. Из названий становится понятно, что в первом типе происходит некоторое количество дополнительной работы на то, чтобы создать соединение и только после этого появляется возможность передачи информации. В свою очередь протоколы, работающие без заранее созданного соединения, нацелены на то, чтобы доставлять информацию, не волнуясь о том была ли она принята или нет, но в таком случае работа по приёму ложится на самих отправителей и адресатов, которые связаны протоколом. В пример можно привести два самых распространённых протокола – это TCP и UDP, соответственно, первый ориентирован на связь, а второй – нет.

Протокол QUIC – новый транспортный протокол, предназначенный для обеспечения соединения с низкой задержкой через Интернет. Новая технология построена на основе протокола UDP (что напрямую отражено в названии - Quick UDP Internet Connections), поэтому с её помощью можно передавать данных без необходимости в выделенном сквозном соединении.

QUIC был разработан компанией Google для решения проблем основного транспортного протокола TCP (Transmission Control Protocol), который широко используется в интернете, однако имеет недостатки среди которых – высокий уровень задержек и проблемы с контролем перегрузок, который могут привести к проблемам с производительностью.

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

Bittorrent с нуля на Go

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


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

Читать дальше →
Всего голосов 50: ↑47 и ↓3+53
Комментарии9

Выявляем волков в овечьей шкуре среди пользователей сайта

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

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

Читать далее
Всего голосов 17: ↑16 и ↓1+24
Комментарии47

Шаблон backend сервера на Golang — часть 3 (Docker, Docker Compose, Kubernetes (kustomize)

Уровень сложностиСложный
Время на прочтение27 мин
Количество просмотров9.7K

Шаблон backend сервера на Golang — часть 3 (Docker, Docker Compose, Kubernetes (kustomize)


Схема развертывания в Kubernetes


Первая часть шаблона посвящена HTTP серверу.


Вторая часть шаблона посвящена прототипированию REST API.


Третья часть посвящена развертыванию шаблона в Docker, Docker Compose, Kubernetes (kustomize).


Четвертая часть будет посвящена развертыванию в Kubernetes с Helm chart и настройке Horizontal Autoscaler.


Пятая часть посвящена оптимизации Worker pool и особенностям его работы в составе микросервиса, развернутого в Kubernetes.


Для корректного развертывания в Kubernetes, в шаблон пришлось внести изменения:


  • способа конфигурирования — YAML, ENV, Kustomize
  • подхода к логированию — переход на zap
  • способа развертывания схемы БД — переход на liquibase
  • добавление метрик prometheus

Ссылка на новый репозиторий.


Шаблон goapp в репозитории полностью готов к развертыванию в Docker, Docker Compose, Kubernetes (kustomize), Kubernetes (helm).


Настоящая статья не содержит детального описание используемых технологий


Содержание


  1. Изменение подхода к конфигурированию
  2. Добавление метрик prometheus
  3. Изменение подхода к логированию
  4. Развертывание схемы БД
  5. Сборка Docker image
  6. Сборка Docker-Compose
  7. Схема развертывания в Kubernetes
  8. Подготовка YAML для Kubernetes
  9. Kustomization YAML для Kubernetes
  10. Тестирование Kubernetes с kustomize
Читать дальше →
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Гайд по эвент-сорсингу

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

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

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

Читать
Всего голосов 26: ↑21 и ↓5+19
Комментарии104

Лучшая задача по программированию для собеседования

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

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

Читать далее
Всего голосов 61: ↑38 и ↓23+22
Комментарии271

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

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

В прошлом году в Тинькофф, как и во многих крупных компаниях, задумались о возможной нехватке мощностей. Раньше мы могли быстро утилизировать железо, но при этом регулярно его закупать и планировать такие закупки на год вперед. Из‑за санкций в 2022 году поставки стали менее предсказуемыми. Это не критично для инфраструктуры, но мы решили, что пришло время задуматься об оптимизации.

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

Читать далее
Всего голосов 20: ↑17 и ↓3+17
Комментарии11

«Почему я не могу нормально зарабатывать?» 5 особенностей мышления, которые мешают это делать

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

Думаю, как и я, очень многие задавались вопросом: «Почему несмотря на хорошее образование, любознательность, способности и трудолюбие, они зарабатывают меньше, чем им хочется. Где баг, который мешает зарабатывать больше?»

Читать далее
Всего голосов 109: ↑89 и ↓20+93
Комментарии145

filebump — хостинг файлов по API / свой локальный upload.io

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

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

И делать в каждом сервисе свой сервер, где можно было бы получить ссылку на файл, передать через очередь, отправить, обработать - может быть не надо?

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

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

Поэтому появился filebump - простой http сервер, где мы можем загружать, хранить и скачивать файлы.

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

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность