habrahabr
В Испании все программисты сеньоры

Моя текущая позиция и аутсорсы последних пяти лет на 90% были в западных gamedev студиях, соответственно и общение было преимущественно с не‑ру коллегами. А когда надолго отрываешься от славянских коллективов разработки, то отличия начинают проявляться очень четко, начиная от модели управления командой и заканчивая культурой разработки. Хотя вот культурой я бы это не назвал, скорее плясками варваров‑полуиндусов на останках штатовской империи софтостроения. Индийцы тут не причем, а вот практики …

  • суббота, 28 декабря 2024 г. в 00:00:21
habrahabr
Обвиваем YouTube змеем, или как смотреть и скачивать видео с YouTube без VPN на чистом Python-е. Ча…

Современный мир пресыщен различной информацией, и в наше непростое время её важно уметь не только находить и сохранять. Многие наверняка заметили, что в на YouTube, кроме мусора, котиков и прочих бесполезных вещей (которые мы иногда не прочь посмотреть) есть масса полезного материала по самым различным темам. И иногда этот материал неплохо было бы сохранить себе на будущее, чтобы не зависеть от переменчивых настроений в мире.В этой статье я хочу рассказать, как можно скачивать видео, аудио (1 ч…

  • суббота, 28 декабря 2024 г. в 00:00:19
golang
Отмена defer вызова функции в Golang

Недавно столкнулся с такой проблемой, что не всегда приходиться выполнять defer вызов функции. Те кто знают, как работает defer можете листать вниз до реализации моего паттерна.Представьте, что у вас есть 10 кейсов, в одном из которых не вам не нужен вызов defer func. Что же тогда делать...... Оператор defer помещает вызов функции в список. Список сохраненных вызовов выполняется после того, как возвращается функция. Defer обычно используется для упрощения функций, выполняющих различные действия…

  • суббота, 28 декабря 2024 г. в 00:00:16
golang
Антипаттерны Go: чего нельзя делать и почему

Привет, Хабр! Go часто называют «языком простоты»: мол, нет лишних фич, легко стартовать, запустил горутину — и вперед! Но в реальности эта «простота» — палка о двух концах. Я собрал самые распространенные (на мой взгляд) антипаттерны в Go, которые приводят к дедлокам, паникам и километрам непонятного кода.Злоупотребление горутинами«Запустим горутину, а там посмотрим…»В Go очень легко распараллелить задачу: пишешь go func() { ... }() — и вуаля, новая горутина. Однако за видимой простотой скрыва…

  • суббота, 28 декабря 2024 г. в 00:00:15
golang
Как я узнал данные 70 тысяч игроков MMORPG

Мне нравится рубить дерево в Minecraft'е. Я рубил дерево целый год и мне стало интересно сколько дерева срубаю каждый день. Так получилось сделать сервис по сбору статистики https://foragingupdate.com.страница статистики срубленного дереваУже более года я играю на сервере Hypixel в MMORPG режим Skyblock. Любопытно, что там есть таблица лидеров для самых разных абсурдных действий. Так сформировалось сообщество "элитных фермеров", где игроки каждый час соревнуются в скорости сбора раз…

  • суббота, 28 декабря 2024 г. в 00:00:14
javascript
Фронт без бэка: как мы сумели собрать тысячу форм в одну систему и не потерять рассудок

Когда три года назад в июле к нам пришли с просьбой сделать фронтенд для маленькой системы документооборота, мы оценили задачу в полгода… ТЗ принесли на создание более 1000 разных форм. Обещанные нами полгода перестали казаться спокойными. Через пару недель к задаче добавились две крупные системы на 1С и ещё несколько в разработке, с бэкендами на С++ и Java. Объём работы стал выглядеть неподъёмно. Плюс основное требование — всё должно быть в едином интерфейсе. Так мы поняли, что нужно браться…

  • суббота, 28 декабря 2024 г. в 00:00:13
javascript
Как приготовить обфускацию в JavaScript и не сжечь лабораторию: AST, babel, плагины

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

  • суббота, 28 декабря 2024 г. в 00:00:12
javascript
Вы всё ещё устанавливаете display:none по таймауту? Тогда мы идём к вам

Дисклеймер: хотел создать скромный пост, а не статью, но не справился с управлением новым редактором. А старый редактор не поддерживает посты. Допустим, у нас есть блок (скажем, бутстраповская ячейка <div class="col-12">) и мы хотим её схлопывать (скажем, по клику на кнопке). Пишем пару простых классов: :root { … --fast: 0.4s; --all-fast-ease: all var(--fast) ease; … } .all-fast-ease { transition: var(--all-fast-ease); } .collapsed { overflow: hidden; height: 0; } П…

  • суббота, 28 декабря 2024 г. в 00:00:10
javascript
useActionState: новый герой в мире React

Photo by Esteban López on UnsplashПривет, бравый покоритель фронтенда! Если ты когда-либо ковырялся в React и думал: «Эх, как же устроить красивую и понятную обработку состояния?», то вот новсть: есть такой хук - useActionState, и он может стать твоим лучшим другом.Но постой! Разве раньше не было чего-то похожего под названием useFormState? И почему одни разработчики импортируют это из react-dom, а другие из react? Если такие вопросы посещали твою светлую голову, то добро пожаловать: сейчас мы …

  • суббота, 28 декабря 2024 г. в 00:00:09