Pull to refresh
0
0
Антон @fregate

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

Send message

[Личный опыт] Жизнь в Швеции: полное благополучие, тесты на IQ и тысячи вакансий в IT

Reading time7 min
Views88K

В 2021 Швеция заняла седьмое место в рейтинге самых счастливых стран всего мира. Считается, что жить тут очень здорово, все очень хорошо с экономикой — а значит, и с IT. Мы поговорили с героиней, которая переехала в Швецию в 2019 году и расскажет, почему так сильно любит эту страну, какие здесь есть интересные особенности и почему Швеция так ждет инженеров из-за рубежа.

Читать далее
Total votes 54: ↑43 and ↓11+44
Comments253

Настройка LEMP сервера с помощью docker для простых проектов. Часть первая: База

Reading time21 min
Views44K

Настройка LEMP сервера с помощью docker для простых проектов. Часть первая: База

Мы продолжаем цикл обучающих статей для начинающих системных администраторов. В серии "Настройка LEMP сервера с помощью docker для простых проектов" мы разберем docker и docker-compose, рассмотрим, как поднять стек LAMP+Nginx с помощью docker, а также расскажем вам, в чем преимущество контейнеризации и виртуализации.

Читать далее
Total votes 20: ↑19 and ↓1+19
Comments9

Кто такой Thread Pool и как его написать своими руками на С++

Level of difficultyEasy
Reading time12 min
Views37K

Thread Pool достаточно популярный паттерн в программировании, с которым рано или поздно сталкивается каждый первый программист. Если вы новичок и не хотите бездумно пользоваться пулом потоков, то эта статья поможет вам разобраться с его устройством и написать наивные реализации с использованием С++ 14 и С++ 17. Так же статья будет полезна всем, кто изучил теорию по многопоточности, но не знает как можно применить свои знания.

Читать далее
Total votes 7: ↑3 and ↓40
Comments9

Игры для MS-DOS с открытым исходным кодом

Reading time8 min
Views18K

Игры под DOS с открытым исходным кодом — редкость. Однако спустя много лет некоторые разработчики всё же решили выпустить в свет исходники. Большинство из них уже переписаны на SDL, благодаря чему их можно перенести практически на любую современную платформу, но какой в этом челлендж? В статье будем компилировать двоичные файлы для DOS!

Читать далее
Total votes 31: ↑31 and ↓0+31
Comments8

Перейти с Linux на macOS и не сойти с ума

Reading time9 min
Views81K

Ноутбук — главный девайс в моей жизни, я провожу за ним бо́льшую часть суток. Он должен быть лёгким, компактным и мощным. Долгое время лидером по этим параметрам был Dell XPS 13, но всё поменялось с выходом MacBook Air на процессоре M1.

Air всего на 100 граммов тяжелее XPS 13, но примерно в три раза мощнее, автономнее и не нуждается в активном охлаждении. Никогда не думал, что скажу подобное про технику Apple, но MacBook Air — самое крутое устройство в своей весовой категории на рынке, оставившее конкурентов далеко позади.

Я фанат Линукса, эта операционная система для меня больше, чем просто окружение. Это философия, новостная повестка и постоянный предмет обсуждения. Поэтому сама идея отказа от Linux в пользу другой ОС меня всегда отталкивала. Да и тот эпизодический опыт, когда приходилось что-то делать в macOS, был эмоционально неприятным.

Но появление M1 посеяло во мне зерно сомнений: мой ноутбук больше не был самым крутым и навязчивой мыслью было то, что я отказываю себе в чём-то большем. Это зерно прорастало и проросло: я купил MacBook Air с 16GB ОЗУ и 512GB SSD, с удивлением обнаружив, что он ещё и стоит дешевле моего XPS. Впереди меня ожидали настройка окружения, борьба с Docker, грусть от отсутствия привычного автодополнения в консоли и много чего ещё.

Читать далее
Total votes 106: ↑101 and ↓5+126
Comments379

Использование быстрых клавиш в командной строке Linux (BASH)

Reading time14 min
Views91K

Эта статья посвящена наиболее часто используемым комбинациям клавиш при работе в командной строке Linux (в основном в командном интерпретаторе bash).

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

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

Я попытался продемонстрировать многие примеры при помощи анимированных gif'ок – иногда несколько кадров больше скажут, чем несколько абзацев текста.

Читать далее
Total votes 115: ↑114 and ↓1+141
Comments64

Unreal Engine 4 Mobile. Сборка Android проекта + DLC

Reading time10 min
Views23K

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

Читать далее
Total votes 5: ↑5 and ↓0+5
Comments1

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

Reading time12 min
Views35K
Я присоединился к Uber два года назад в качестве мобильного разработчика, имеющего некоторый опыт разработки бекенда. Здесь я занимался разработкой функционала платежей в приложении — и по ходу дела переписал само приложение. После чего я перешёл в менеджмент разработчиков и возглавил саму команду. Благодаря этому я смог гораздо ближе познакомиться с бэкендом, поскольку моя команда несёт ответственность за многие системы нашего бэкенда, позволяющие осуществлять платежи.

До моей работы в Uber у меня не было опыта работы с распределёнными системами. Я получил традиционное образование в Computer Science, после чего с десяток лет занимался full-stack разработкой. Поэтому, пусть я и мог рисовать различные диаграммы и рассуждать о компромиссах (tradeoffs) в системах, к тому моменту я недостаточно хорошо понимал и воспринимал концепции распределённости — такие, например, как согласованность (consistency), доступность (availability) или идемпотентность (idempotency).

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

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

Итак, давайте приступим к нашему погружению в SLA, согласованность, долговечность данных, сохранность сообщений, идемпотентность и некоторые другие вещи, которые мне потребовалось выучить на своей новой работе.
Читать дальше →
Total votes 24: ↑22 and ↓2+20
Comments2

Полная домашняя автоматизация в новостройке

Reading time8 min
Views218K
Три года назад стал претворять свою давнюю мечту в реальность — максимальная домашняя автоматизация квартиры, купленной в новостройке с нуля. При этом «отделку от застройщика» пришлось принести в жертву умному дому image и полностью переделать, а вся электрика, не связанная с автоматикой приехала с известного китайского сайта. Паяльник не потребовался, но знающих мастеров, электриков и плотников пришлось искать долго.


Панель управления квартирой в феврале 2020 года (Home Assistant)

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


Строительство нашего дома в процессе — ноябрь 2016 года
Умный дом в самом соку...
Total votes 104: ↑101 and ↓3+132
Comments514

Знай сложности алгоритмов

Reading time2 min
Views992K
Эта статья рассказывает о времени выполнения и о расходе памяти большинства алгоритмов используемых в информатике. В прошлом, когда я готовился к прохождению собеседования я потратил много времени исследуя интернет для поиска информации о лучшем, среднем и худшем случае работы алгоритмов поиска и сортировки, чтобы заданный вопрос на собеседовании не поставил меня в тупик. За последние несколько лет я проходил интервью в нескольких стартапах из Силиконовой долины, а также в некоторых крупных компаниях таких как Yahoo, eBay, LinkedIn и Google и каждый раз, когда я готовился к интервью, я подумал: «Почему никто не создал хорошую шпаргалку по асимптотической сложности алгоритмов? ». Чтобы сохранить ваше время я создал такую шпаргалку. Наслаждайтесь!
Читать дальше →
Total votes 312: ↑296 and ↓16+280
Comments99

Лучшие работодатели в ИТ 2018: ежегодный рейтинг «Моего круга»

Reading time11 min
Views77K
image

В середине 2018 года мы на «Моём круге» запустили сервис оценки работодателей, с помощью которого каждый сможет узнать, что думают о компании как о работодателе её сотрудники. И сегодня рады представить первый ежегодный рейтинг компаний «Лучшие работодатели в ИТ 2018, по версии «Моего круга». Этот рейтинг мы хотим сделать доброй традицией и выпускать ежегодно.

С момента запуска сервиса порядка 5000 сотрудников поставили свои оценки более чем 900 компаниям. В итоге, на данный момент публичную оценку получили 150 компаний, собравших мнения о себе от 10 и более сотрудников. Именно эти компании и стали участниками нашего нынешнего рейтинга.

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

Ещё мы сравниваем оценки компаний по каждому из 12 качеств, и если компания вошла в тройку лидеров по данному качеству, мы присваиваем ей соответствующую номинацию.

Компании в рейтинге соревнуются в 4 «весовых» категориях:


  • Огромные компании (xbig). Для компаний численностью более 5000 сотрудников, «нормальной» (средней медианной) является оценка 3.6.
  • Большие компании (big). Для компаний от 1000 до 5000 сотрудников — 4.2.
  • Средние компании (medium). Для компаний от 100 до 1000 сотрудников — 4.5
  • Небольшие компании (small). Для компаний от 10 до 100 сотрудников — 4.6.
Смотреть рейтинг компаний
Total votes 77: ↑68 and ↓9+59
Comments56

Неожиданная красота простых чисел

Reading time8 min
Views65K
image

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

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

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

Однако несмотря на то, что мы постоянно полагаемся на их уникальные свойства, простые числа оставались для нас неуловимыми. На протяжении всей истории математики величайшие умы пытались доказать теорему о предсказании чисел, являющихся простыми, или о том, как далеко друг от друга они должны располагаться.
Читать дальше →
Total votes 158: ↑155 and ↓3+152
Comments43

Очень много YouTube-каналов для прокачки английского языка для программистов

Reading time4 min
Views61K
Привет, Хабр!

С помощью YouTube можно ощутимо и сравнительно быстро улучшить английский.
Понимание на слух как минимум. Истина не нова, но мало кто смотрит английский YouTube, потому что легко потеряться в бесконечности каналов. Но для вас я собрал самые стоящие каналы!

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

Поучить английский


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

EngVid. Если бы можно было выбрать что-то одно для улучшения английского, то это оно. Разные преподы и тематики, постоянное обновление, бездонный ресурс. Ещё сайт одноимённый крутой, с удобной навигацией — можно найти очень узкую тему по интересам.
Читать дальше →
Total votes 59: ↑52 and ↓7+45
Comments19

Создание многопользовательской веб-игры в жанре .io

Reading time23 min
Views34K
image

Вышедшая в 2015 году Agar.io стала прародителем нового жанра игр .io, популярность которого с тех пор сильно возросла. Рост популярности игр .io я испытал на себе: за последние три года я создал и продал две игры этого жанра..

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

В этом посте мы будем разбираться, как с нуля создать игру .io. Для этого достаточно будет только знания Javascript: вам нужно понимать такие вещи, как синтаксис ES6, ключевое слово this и Promises. Даже если вы знаете Javascript не в совершенстве, то всё равно сможете разобраться в большей части поста.
Читать дальше →
Total votes 35: ↑34 and ↓1+33
Comments3

Собственная реализация библиотеки ECS

Reading time23 min
Views8.2K
image

На этой неделе я начал работать над своим движком для игры Vagabond и приступил к реализации шаблона entity-component-system.

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

Введение


Мотивация


Я не буду рассказывать о преимуществах ECS перед объектно-ориентированным подходом, потому что с этим хорошо справились многие люди до меня. Одним из первых про ECS рассказал на GDC 2002 Скотт Билас. Среди других знаменитых введений в тему можно назвать Evolve Your Hierarchy Майка Уэста и главу Components из потрясающей книги Game Programming Patterns Роберта Нистрома.

Вкратце скажу, что задача ECS — создание ориентированного на обработку данных подхода к игровым сущностям и удобное разделение данных и логики. Сущности (Entities) составляются из компонентов, содержащих данные. А системы, содержащие логику, обрабатывают эти компоненты.

Если вдаваться в детали, то вместо наследования в ECS используется композиция. Более того, этот подход, ориентированный на обработку данных, оптимальнее использует кэш, а значит, достигает отличной производительности.
Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments0

Генератор подземелий на основе узлов графа

Reading time11 min
Views28K
image

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

Введение


Алгоритм был написан как часть работы на получение степени бакалавра и основан на статье Ma et al (2014). Целью работы было ускорение алгоритма и дополнение его новыми функциями. Я вполне доволен результатом, потому что мы сделали алгоритм достаточно быстрым, чтобы использовать его во время выполнения игры. После завершения бакалаврской работы мы решили превратить её в статью и отправить на конференцию Game-ON 2018.

Алгоритм


Для создания уровня игры алгоритм получает в качестве входных данных набор полигональных строительных блоков и граф связности уровня (топологию уровня). Узлы графа обозначают комнаты, а рёбра определяют связи между ними. Цель алгоритма — назначить каждому узлу графа форму и расположение комнаты таким образом, чтобы никакие две формы комнат не пересекались, и каждая пара соседних комнат могла соединяться дверьми.
Total votes 51: ↑51 and ↓0+51
Comments11

Четыре оси дизайна RPG

Reading time6 min
Views15K
Эта статья началась с ответа на многогранный, но в то же время довольно прямолинейный вопрос: из чего же состоит хорошая ролевая игра? На протяжении своей карьеры я поработал над несколькими RPG, и даже читал презентацию по этой теме, но никогда не рассматривал её целостно. Существует множество материалов о составляющих хорошей игры и, разумеется, многие из них применимы к ролевым играм, но есть аспекты, специфичные (если не уникальные) именно для этого жанра.

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

Читать дальше →
Total votes 20: ↑20 and ↓0+20
Comments2

Цикл уроков по SDL 2.0: урок 3 — Библиотеки-расширения SDL

Reading time6 min
Views17K
SDL2

От переводчика:

Я продолжаю заброшенную серию переводов туториалов от Twinklebear, в оригинале доступных тут, с разрешения переводчика предыдущих уроков серии InvalidPointer. Первые два урока серии переводов в списке — за его авторством, 5 и 6 перевёл AndrewChe. Перевод отчасти вольный и может содержать незначительные поправки или дополнения от переводчика.

Читать дальше →
Total votes 29: ↑29 and ↓0+29
Comments3

Information

Rating
Does not participate
Location
Новосибирская обл., Россия
Registered
Activity