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

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

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

Проверяем Архитектурные стили на движке Factorio (часть 1)

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

Добрый день всем, дорогие читатели!

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

Если вы хотя бы чуть-чуть имели неудачу пообщаться с Архитекторами, то знаете, что в их понимании не существует идеальной архитектуры ПО и вся их работа состоит во взвешивании плюсов и минусов того или иного Архитектурного стиля. И поскольку Архитектурных стилей много и каждый имеет свои преимущества (даже Монолит) и недостатки (даже Микросервисы) - работа архитектора состоит в попытках применения данных стилей на конкретный продукт и попыток предугадать, что из этого получит в итоге для бизнес-части.

Как сказал мой добрый друг-программист про Factorio: "Эту игру создали программисты для программистов" и эти слова плотно въелись в мою память. И реально игра в эту игру очень сильно напоминает процесс разработки ПО: можно просто строить как попало и прийти к полностью запутанной и сложнообслуживаемой системе, а можно подойти к вопросу с умом изначально и в итоге получить производительную и легкую в обслуживании систему (Прям как в жизни!)

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

Игровая камера: сборник приемов

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

Сегодня мы узнаем:

- можно ли считать людей, которые инвертируют оси в играх, лицами с нетрадиционной ориентацией;

- что такое фокусное расстояние объектива и для чего оно нужно;

- какой угол обзора надо делать у камер, чтобы монитор выглядел, как окно в виртуальный мир;

- как правильно фотографировать;

- и сделаем простенький симулятор дрифта.

Погнали!
Всего голосов 62: ↑62 и ↓0+62
Комментарии23

Пишем приложение на Mi Band 7 с сервисной частью

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

Недавно я купил себе Mi band 7, по началу хотел купить 6-ую версию, пока не узнал, что на 7-ой обновилась операционная система и теперь она поддерживает установку приложений. Да, официально они об этом не заявили, но умельцы уже сделали множество приложений. Они ставят их как циферблаты, и это вполне обычные приложения. Но все эти приложения работают только локально на самом MiBand 7, не имея возможности взаимодействовать ни с телефоном, ни с интернетом. Я углубился в байткод приложения и документации по ZeppOS чтобы найти способ создавать приложения, взаимодействующие с интернетом, в этой статье я опишу свой путь. В итоге у меня получилось сделать запрос в интернет с часов и даже запустить мост для отладки приложений. 

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

Rust должен умереть, МГУ сделал замеры

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

В предыдущих сериях:



Медленно, но верно Раст проникает не только в умы сотрудников больших корпораций, но и в умы школьников и студентов. В этот раз мы поговорим о статье от студента МГУ: https://rustmustdie.com/.


Её репостнул Андрей Викторович Столяров, доцент кафедры алгоритмических языков факультета ВМК МГУ им. М. В. Ломоносова и по совместительству научрук студента-автора статьи.


Я бы сказал, что тут дело даже не в том, что он "неинтуитивный". Дело скорее в том, что компилятор раста сам решает, когда владение "должно" (с его, компилятора, точки зрения) перейти от одного игрока к другому. А решать это вообще-то должен программист, а не компилятор. Ну и начинается пляска вида "как заставить тупой компайлер сделать то, чего я хочу".
Бред это всё.

— А. В. Столяров
Кощунство!
Всего голосов 285: ↑266 и ↓19+325
Комментарии230

Паттерны ООП в метафорах

Время на прочтение17 мин
Количество просмотров565K
Большинство литературы посвященной паттернам в ООП (объектно-ориентированном программировании), как правило, объясняются на примерах с самим кодом. И это правильный подход, так как паттерны ООП уже по-умолчанию предназначаются для людей, которые знают что такое программирование и суть ООП. Однако порой требуется заинтересовать этой темой людей, которые в этом совершенно ничего не понимают, например «не-программистов» или же просто начинающих «компьютерщиков». Именно с этой целью и был подготовлен данный материал, который призван объяснить человеку любого уровня знаний, что такое паттерн ООП и, возможно, привлечет в ряды программистов новых «адептов», ведь программирование это на самом деле очень интересно.
Статья предназначена исключительно для новичков, так что «старожилы» ничего нового для себя не узнают. В основном статья описывает известные паттерны из книги «Приемы объектно-ориентированного программирования. Шаблоны проектирования.», но более популярным и простым языком.
Читать дальше →
Всего голосов 214: ↑201 и ↓13+188
Комментарии86

Как уехать из России: расширенная подборка полезных ссылок для эмиграции

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

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

Читать далее
Всего голосов 57: ↑34 и ↓23+24
Комментарии72

Алгоритмы сортировки и их производительность

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

Здравствуйте, давно читаю Хабр и все хотел написать кому-нибудь статью, но не знал с чего начать и о чем писать. Но решил что тянуть кота за причинное место. Надо просто взять и написать обзор о чем то что я знаю и что будет просто для начало. Поэтому решил описать алгоритмы сортировки в размере 37 штук. Я понимаю, что на Хабре есть подобные статьи, одна постараюсь их добавить количеством алгоритмов и приведением небольшого числа графиков.

Читать далее
Всего голосов 64: ↑62 и ↓2+74
Комментарии29

Руководство по CMake для разработчиков C++ библиотек

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

Данное руководство позволит читателю составить полную картину того, как организовать сборку C++ библиотек с использованием современных возможностей CMake. Предполагается, что читатель имеет представление о базовых понятиях из мира CMake и динамических/статических C++ библиотек, так как в руководстве они могут не объясняться.

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

Библиотека вывода с использованием escape-последовательностей

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

Osmanip – это библиотека C++, предоставляющая полезные механизмы для работы с управляющими последовательностями ANSI и настройки потока вывода программ. С помощью этих механизмов вы можете оформлять выводимые строки различными цветами и стилями, изменять расположение курсора в терминале и регулировать прочие компоненты вроде индикаторов выполнения и графики. Весь этот функционал будет очень полезен для придания желаемого вида общему потоку вывода программы или для выполнения операций с курсором.
Читать дальше →
Всего голосов 30: ↑29 и ↓1+42
Комментарии6

Игры для обучения программированию

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

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

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

Соответствующие способности можно развить, а интеллект — повысить в рамках генетически заданного широкого коридора. Это возможно в любом возрасте. Лучше всего с детства, хотя и взрослым ничто не мешает… Проще всего начинать с игр.
Читать дальше →
Всего голосов 51: ↑51 и ↓0+51
Комментарии24

Прагматичный набор модификаций для Windows 10 на старом железе

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

В статьях про раздувание софта часто упоминают лаги Windows 10/11. Главная причина — ожирение кода в новых версиях. Для работы ОС с каждым годом требуется всё больше ресурсов. После засорения системы приходится ждать 10–20 секунд, пока отрисуются пункты контекстного меню по правой кнопке…

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

Но что делать, если приходится поневоле сидеть под Win10/11? Тогда остаётся одно — бороться с ожирением софта хирургическим путём. А именно, отключить ненужные модули и компоненты, развестистый GUI, анимацию и спецэффекты, удалить лишний софт, почистить реестр. Другими словами, спустить жирок из системы. После мануальных процедур винда начинает шевелиться значительно бодрее.
Читать дальше →
Всего голосов 106: ↑51 и ↓55+21
Комментарии114

Продление жизни временных значений в С++: рецепты и подводные камни

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

Прочитав эту статью вы узнаете:

1. Способы, которыми можно продлить время жизни временного объекта в С++.

2. Рекомендации и подводные камни этого механизма, с которыми может столкнуться С++ программист, и с которыми сталкивался на работе я.

Информация из статьи может быть полезна как новичкам, так и профессионалам.

Если заинтересовало, то самое время налить чая, и погнали разбираться где тут референсы висят.

Чай готов, начинаем погружение
Всего голосов 33: ↑31 и ↓2+37
Комментарии11

OSINT самолетов, пароходов и поездов

Время на прочтение2 мин
Количество просмотров27K
Предлагаем вашему вниманию набор инструментов от мировых профессионалов в области OSINT, которые помогут в ваших поисках информации, связанных с транспортом. Если вы решили заняться автостопом, авиастопом или хотите поймать попутный грузовой корабль, то эти сервисы для вас. Если вам срочно понадобилось отследить самолет Илона Маска или просто послушать переговоры диспетчеров, то тоже найдете тут много полезного.

Водный транспорт


MarineTraffic


image

Открытый проект, основанный на сообществе, предоставляющий (почти) в режиме реального времени информацию о передвижении судов и их местонахождении в гаванях и портах.
Читать дальше →
Всего голосов 56: ↑52 и ↓4+64
Комментарии11

Когда умрёт мой SSD — расчёт срока жизни

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


У каждого SSD есть ресурс на количество циклов перезаписи, то есть объём записанной информации в течение всей жизни. Физика и механика SSD очень сложные, но долговечность накопителя в итоге сводится к простому правилу — чем больше на него пишешь, тем меньше он проживёт.

У одних SSD критический сбой происходит через несколько месяцев, другие работают годами. Это зависит от качества комплектующих, условий эксплуатации и везения. В общем, как у людей.
Читать дальше →
Всего голосов 40: ↑40 и ↓0+40
Комментарии156

Кто нанимает в русскоязычные команды вне РФ и Беларуси? (апрель 2022)

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

После 24-го февраля появились десятки каналов в Телеграме, постов на VC, Хабре, страничек в Notion, которые собирают компании с удаленкой и релокацией. Но я не нашел ресурсов или каналов, которые концентрируются на одном аспекте: русском языке общения в командах.

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

Для этих людей я собрал в этом посте какие-то компании с русскоязычными командами разработки, которые релоцируют из РФ и Беларуси сейчас (то есть это не компании в Прибалтике, Польше и Чехии), либо позволяют удаленку из-за границ РФ с зарплатой в долларах или евро.

Пост не претендует на полноту или оригинальность. Хочется сделать русско-эмигрантский аналог постов Who is hiring? на Hacker News, где участники сообщества рекламируют вакансии в своих фирмах в комментариях.

На мой взгляд, это важный аспект, потому для ИТ-специалиста с хорошим английским, у которого главная цель - уехать из РФ или Беларуси, найти работу - вообще не проблема даже без всяких чатов и каналов. Английский - единственный профессиональных язык общения в огромном количестве компаний в Англии, Германии, Швеции, ОАЭ, Юго-Восточной Азии, куда довольно легко попасть (потому что сейчас везде острая нехватка специалистов), а релоцируют быстро и без особых проблем.

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

Анатомия асинхронных фреймворков в С++ и других языках

Время на прочтение20 мин
Количество просмотров43K
Привет! В этой статье я расскажу об устройстве асинхронных движков с корутинами и без них. Для начала сосредоточимся не на конкретном движке, а на том, почему во всех популярных языках программирования появились корутины и чем они так хороши. Это может быть интересно не только C++-разработчикам, но и всем, кто занимается разработкой сетевых приложений или интересуется архитектурой современных фреймворков.

Пройдёмся по разным архитектурам построения серверов — от самой простой синхронной к более интересным, посмотрим на типичную архитектуру корутинового движка, а после окунёмся в дебри C++ и взглянем на самое страшное на примере нашего фреймворка userver.

Пишем синхронный сервер


Представьте, что у вашего сервиса очень маленькая нагрузка — 100 rps, и вам дали задачу написать простой сервер, понятный каждому второму школьнику. У вас получится что-то наподобие следующего:

void naive_accept() {
  for (;;) {
    auto new_socket = accept(listener);

    std::thread thrd([socket = std::move(new_socket)] {
      auto data = socket.receive();
      process(data);
      socket.send(data);
    });

    thrd.detach();
  }
}
Читать дальше →
Всего голосов 56: ↑53 и ↓3+63
Комментарии32

Обнаружение наличия функциональности в C++ на этапе компиляции

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

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

Хорошо, если есть поддержка концептов или рефлексии. А что делать, если их ещё нет, или они не в полной мере поддерживаются?

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

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

Уроки компьютерного зрения на Python + OpenCV с самых азов. Часть 4

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

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

Выявить различные геометрические примитивы (прямые, окружности).

Превратить в цепочки точек и уже их отдельно анализировать.

Описать как граф и применять к нему алгоритмы на графах.

Продолжим изучать методы предобработки. Например, изображением можно сделать контрастным:

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

Как написать рефлексию для C++

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

C++ поистине противоречивый язык. Старый добрый С существует аж с 1972 года, С++ появился в 1985 и сохранил с ним обратную совместимость. За это время его хоронили ни раз и ни два, сперва Java, теперь его потихоньку продолжают хоронить Go и Rust. Все его недостатки пережеваны множество раз. Если вы пришли в мир С++ из других ООП языков, то здесь вы не найдете...

Читать далее
Всего голосов 30: ↑29 и ↓1+35
Комментарии45

Пора релоцироваться

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

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

Читать далее
Всего голосов 152: ↑80 и ↓72+45
Комментарии263

Информация

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