Pull to refresh
-2
@zergon321read⁠-⁠only

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

Send message

Не уйти ли из айти?

Reading time10 min
Views99K

Пока все кому не лень пишут статьи о том, как войти в айти, некоторые из нас нет-нет, да задумываются, а не выйти ли оттуда. Ночные релизы, бесконечные переработки, легаси код, невнятные баги, грубые разговоры в курилках и в коридорах, постоянные требования от менее технически подкованных коллег, иногда целые блоки кода, а то и сборки, отправленные в корзину… Выгорание? Жажда новой жизни? А вдруг там, за дверью серверной или опенспейса R&D, всё по-другому? 

Читать далее

Создаем свой VPN с защищенным от блокировок протоколом AmneziaWG, или WireGuard на максималках

Reading time5 min
Views183K


Всем привет! Возможно уже совсем скоро разные новостные и  IT-ресурсы будут подчищать информацию о способах обхода блокировок. А пока этого не случилось, запасаемся полезными гайдами и разворачиваем свои собственные VPN с защищенными от блокировок протоколами. Расскажу как это сделать, как изменилась Amnezia и как мы защитили WireGuard от блокировок.

Читать далее

Почему мы купились на «культ» переработок и выгорания?

Reading time8 min
Views32K
image

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

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

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

Четыре проекта с веб-скрейпингом, которые позволят упростить себе жизнь

Reading time5 min
Views25K
image

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

Веб-скрейпинг — это процесс извлечения данных с веб-сайта. Для изучения веб-скрейпинга достаточно пройти туториал о принципах работы таких библиотек Python, как Beautiful Soup, Selenium или Scrapy; однако если вы не будете применять на практике все изученные концепции, то время окажется потраченным впустую.

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

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

От жёсткого диска на антресолях до Ransomware: как утекает исходный код игр

Reading time5 min
Views20K
В начале июня компания EA сообщила о том, что её серверы взломали хакеры, похитившие 780 ГБ данных, в том числе исходный код игры FIFA 21 и движка Frostbite. Мы решили вспомнить, как на протяжении многих лет утекал в руки хакеров и широкой публики код различных игровых проектов.

Ultimate Mortal Kombat 3


image

Рекламные материалы порта игры для 3DO. На изображениях использованы скриншоты из версий для Sega Saturn и SNES

В своё время Mortal Kombat 3 получил огромную популярность, поэтому позже была выпущена его дополненная версия под названием «Ultimate Mortal Kombat 3» (UMK3), которую портировали на множество консолей, в том числе на Genesis, Sega Saturn и SNES. Разрабатывался и порт для Panasonic 3DO, но почти завершённый проект был остановлен (вероятно, из-за падения популярности консоли).
Читать дальше →

Кранчи в IT или Как убивает погоня за сроками

Reading time10 min
Views25K

Многие игроки считают, что разработка — это интересный и увлекательный процесс (о, святая наивность!). Это, конечно, так, но, к сожалению, в этой сфере вся романтика заканчивается, когда начинаются проблемы. Одной из таких проблем и является «кранч», или работа на износ. Карьера в области искусственного интеллекта или Data Science не застрахует от переработок полностью, но в последнее время компании понимают, что культура кранчей не приводит к хорошим результатам. В данном посте попробуем разобраться с этим неприятным явлением, которое заставляет разработчиков сходить с ума.

Читать далее

Разработчики: не перерабатывайте

Reading time3 min
Views34K

Старайтесь изо всех сил, чтобы произвести впечатление на своего начальника.

Думайте, что команда Вас уважает за Вашу работу, когда команда токсична.

Создайте иллюзию, что продвигаетесь вперед и Вас замечают.

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

И Вы сгорите, не продвинувшись вперед.

Читать далее

Как получить плашку совместимости со Steam Deck, не покупая Deck

Reading time3 min
Views6.9K

Пару месяцев назад Steam выложил в Steamworks инструмент для разработчиков, позволяющий отправлять игры на сертификацию: Steam тестирует и проверяет игру, а затем решает, совместима ли она с Steam Deck. Так как я уже реализовал в своей игре поддержку геймпадов, то сразу приступил к делу. Мне понадобилось два месяца переписок со Steam, чтобы он наконец верифицировал полную совместимость игры со Steam Deck. Я не нашёл особо много информации об этом процессе, поэтому захотел поделиться своим опытом, чтобы другим разработчикам не приходилось совершать те же ошибки.

Примечание: у меня нет Deck и я ни разу им не пользовался. Разработка игры целиком зависела от помощи моего фаната и простоты разработки под сам Steam Deck.

Читать далее

Как из вакансии понять, что наниматель-муд**: 5 признаков

Reading time3 min
Views56K

Всем привет! Я Тёма Логинов, за 4 года работы в digital я неоднократно искал работу, нанимал людей и помогал это делать другим.

Многие компании оформляют вакансии по-странному: предлагают работу за три рубля или вешают на одного сотрудника работу целого отдела. Рассказываю, как распознать такие вакансии, чтобы уберечь себя от работы на [ч]удаков.

Читать далее

Распределённые транзакции

Level of difficultyMedium
Reading time10 min
Views61K

На собеседованиях на позицию middle/senior разработчика часто задают вопросы по распределенным транзакциям в микросервисной архитектуре.

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

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

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

Читать далее

Как рисуется карта в Фараоне

Level of difficultyEasy
Reading time10 min
Views14K

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

Городу нужно больше рабочих...

Clickhouse — непростая жизнь в продакшене

Level of difficultyHard
Reading time13 min
Views22K

Около двух лет назад вышла небольшая статья Kafka Streams — непростая жизнь в production, в которой я описывал сложности, с которыми наша команда столкнулась при попытке решить задачи проекта с помощью kafka-streams. Эксперимент вышел неудачным, и мы в итоге совсем отказались от этой технологии. Вместо нее решили попробовать Clickhouse (CH), и сейчас уже можно сказать, что эта база нам очень хорошо подошла и отлично решает почти все задачи, которые нам ставит бизнес. В этой статье я расскажу об особенностях использования CH.

Читать далее

Реляционные системы управления базами данных становятся проблемой. Что с этим делать?

Reading time9 min
Views22K

С реляционными базами данных я знаком очень давно, с конца 90-х. Мои первые шаги в мире компьютеров и программирования связанны именно с ними. Реляционным БД было отведено особое место в моей образовательной программе и стажировке на инженера-программиста. Они преследовали меня на протяжении всей моей карьеры. Я буквально провалился на самое дно кроличьей норы реляционных систем управления базами данных (РСУБД) – и до сих пор люблю их.

За годы работы я испробовал практически все РСУБД, а их попадалось мне немало: MySQL, Postgres, Oracle, Microsoft SQL Server, DBase, Access, SQLite, DB2, MariaDB, AWS RDS, Azure SQL, Google Cloud SQL. Нельзя любить РСУБД, если не любишь SQL, а это отдельная вселенная. И не все SQL одинаковы. Есть MySQL со своим собственным жаргоном, есть T-SQL от Microsoft и всемирно известный PL/SQL от Oracle. Наверное, не стоит упоминать, что все они несовместимы друг с другом.

Читать далее

Автономный способ обхода DPI и эффективный способ обхода блокировок сайтов по IP-адресу

Reading time7 min
Views756K
Провайдеры Российской Федерации, в большинстве своем, применяют системы глубокого анализа трафика (DPI, Deep Packet Inspection) для блокировки сайтов, внесенных в реестр запрещенных. Не существует единого стандарта на DPI, есть большое количество реализации от разных поставщиков DPI-решений, отличающихся по типу подключения и типу работы.

Существует два распространенных типа подключения DPI: пассивный и активный.

Пассивный DPI

Пассивный DPI — DPI, подключенный в провайдерскую сеть параллельно (не в разрез) либо через пассивный оптический сплиттер, либо с использованием зеркалирования исходящего от пользователей трафика. Такое подключение не замедляет скорость работы сети провайдера в случае недостаточной производительности DPI, из-за чего применяется у крупных провайдеров. DPI с таким типом подключения технически может только выявлять попытку запроса запрещенного контента, но не пресекать ее. Чтобы обойти это ограничение и заблокировать доступ на запрещенный сайт, DPI отправляет пользователю, запрашивающему заблокированный URL, специально сформированный HTTP-пакет с перенаправлением на страницу-заглушку провайдера, словно такой ответ прислал сам запрашиваемый ресурс (подделывается IP-адрес отправителя и TCP sequence). Из-за того, что DPI физически расположен ближе к пользователю, чем запрашиваемый сайт, подделанный ответ доходит до устройства пользователя быстрее, чем настоящий ответ от сайта.
Читать дальше →

Почему американские корпорации загоняют людей в офис. Личный опыт

Level of difficultyEasy
Reading time4 min
Views89K

В последние полгода появилась четкая тенденция: крупные корпорации загоняют сотрудников обратно в офис. Они обязуют 60% рабочего времени проводить в офисе, что примерно равно трем дням в неделю.

Приводятся разные доводы: кто-то говорит, что в офисе лучше строится доверие, другие считают, что сотрудники в продуктивнее работают вне дома. Давайте разбираться!

Сам работаю программистом в Амазоне уже больше двух лет. Начинал в команде в Ванкувере, Канада. Мне не понравилось и я переехал в Испанию, поменяв команду.

Читать далее

Работа в команде: взаимодействие программистов и художников при разработке игр

Level of difficultyEasy
Reading time8 min
Views4K

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

Читать далее

Golang: как найти мёртвый код в проекте, а заодно оценить покрытие тестами живого кода

Reading time3 min
Views4K

В Go 1.20 сделали возможность сбилдить приложение с флагом cover


go build -cover

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


Это, конечно, было сделано для интеграционных тестов, когда приложение запускается целиком в каких-то сценариях (а не через go test), но, вероятно, это можно попробовать использовать и по-другому:


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


Так можно найти недовыпиленный легаси-код, старые эндпоинты API, которые давно никому не нужны, малозначимые проверки if err != nil и прочее. Как минимум, на это интересно посмотреть, можно найти что-нибудь удивительное.


Disclaimer: разумеется, сбор статистики создает какой-то оверхед, поэтому подойдёт точно не всем. Как вариант, можно пустить туда небольшую часть трафика.

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

Поднимаем сотовую сеть NMT-450 в домашних условиях

Level of difficultyMedium
Reading time9 min
Views24K
Приветствую всех!

30 мая 2017 года в Котласе, что в Архангельской области, была отключена последняя в мире базовая станция NMT-450. Вместе с этим навсегда ушёл в историю не только этот стандарт, но и аналоговая сотовая связь общего пользования в принципе.

И вот, шесть с лишним лет спустя мне стало интересно: а реально ли попробовать оживить такую сеть, увидеть в работе раритетные телефоны и попробовать с них позвонить?



Итак, в сегодняшней статье разберёмся, как в домашних условиях запустить базовую станцию NMT-450. Узнаем, как работают такие сети и как сделать так, чтобы оно точно заработало.
Читать дальше →

Визуализация исходного кода на языке golang

Level of difficultyEasy
Reading time2 min
Views5.6K

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

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

Предлагаю вниманию несколько инструментов для визуализации кода.

Читать далее

Проектирование отказоустойчивости IT-систем

Reading time11 min
Views24K

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

Что такое отказоустойчивость и стабильность?

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

1. Деградация работоспособности системы должна быть прямо пропорциональна "величине" отказа. То есть, если упал сервис, отвечающий за некую некритичную функциональность — вся система не должна при этом падать. Да, небольшой кусочек не работает, но это не влияет на стабильность остальной части функционала.

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

Читать далее

Information

Rating
Does not participate
Registered
Activity