Pull to refresh
25
0
Александр @Doktor3lo

Chief of R&D

Send message

Sentinel C++20. Пишем свой Sentinel

Reading time5 min
Views4.7K

О понятии Sentinel говорят мало, особенно в русскоязычном пространстве. Вместе с Юрием Вашинко, опытным тимлидом и спикером нашего курса «С++ разработчик» сегодня рассмотрим, что такое Sentinel и как его использовать:

Читать далее
Total votes 8: ↑6 and ↓2+6
Comments28

Бесплатная open-source альтернатива Google Photos и iCloud Photos

Level of difficultyEasy
Reading time3 min
Views50K

Как-то мы лежали в кровати с нашим малышом и жена сказала, что фотографий и видео с ним стало больше и она не хочет использовать платное приложение. Примерно так начинается рассказ создателя Immich – бесплатного open-source решения для хранения фотографий и видео.

Надо сказать, в последние годы я тоже регулярно пытался найти бесплатную self-hosted альтернативу Google Photos и iCloud, однако до сегодняшнего дня функциональных и вместе с тем простых в настройке решений я не встречал. Тот же Nextcloud всегда казался чересчур громоздким. Immich же, напротив, сразу завоевал моё сердце, и вот, после нескольких недель его использования, с радостью делюсь своим рабочим примером.

Читать далее
Total votes 45: ↑40 and ↓5+46
Comments139

Симкод — современный язык ассемблера

Reading time33 min
Views17K

Начну с определений.

Симкод — это последовательность симкоманд.

Симкоманда — это символьная машинная макрокоманда с Си-подобным синтаксисом.

Например, ассемблерной команде add rax, rbx соответствует симкоманда rax += rbx.

Симкод позволяет выразить любой ассемблерный код [и как следствие машинный], только в более человекочитаемом виде. Однако, симкод не пытается назначить символьное обозначение для абсолютно каждой ассемблерной команды — те команды ассемблера, которые не имеют символьной записи, оставляются как есть. Таким образом, симкод является надмножеством ассемблера.
Читать дальше →
Total votes 56: ↑51 and ↓5+61
Comments50

Тысяча и одна библиотека С++

Reading time65 min
Views30K

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

Столкнувшись много раз подряд с тем, что найти что-то толковое довольно непросто, я решил попробовать распутать это узел и предложить для русскоязычных читателей свой справочник классных библиотек на С++. Я исходил из этого источника. Это очень многогранный и объемный список библиотек языка С++, но, скажем так, у меня были к нему вопросы. Потому я сделал перевод, затем значительно улучшил его в плане содержания (далее объясню, как, почему и зачем). На выходе получилось около 1000 библиотек. Как в сказке). Они, конечно, не покрывают все возможные задачи и предметные области, но поверьте, они затрагивают действительно многое.

Прикоснуться к сокровищнице языка С++
Total votes 82: ↑81 and ↓1+92
Comments23

Специалисты по информатике изобрели новый эффективный способ подсчёта уникальных элементов

Reading time4 min
Views20K

Представьте, что вас отправили в девственный тропический лес, чтобы провести перепись диких животных. Каждый раз, когда вы видите животное, вы делаете снимок. Ваша цифровая камера будет фиксировать общее количество снимков, но вас интересует только количество уникальных животных — всех тех, которых вы ещё не посчитали. Как лучше всего получить это число? «Очевидное решение — запомнить всех животных, которых вы уже видели, и сравнивать каждое новое животное с этим списком», — говорит Лэнс Фортноу, специалист по информатике из Иллинойского технологического института. Но есть и более умные способы, добавил он, потому что если у вас тысячи записей, то очевидный подход далеко не так прост.

Всё становится ещё хуже. Что, если вы — Facebook, и вам нужно подсчитать количество отдельных пользователей, которые заходят на сайт каждый день, даже если некоторые из них заходят с нескольких устройств и в разное время? Теперь мы сравниваем каждый новый вход со списком, который может исчисляться миллиардами.

Читать далее
Total votes 76: ↑75 and ↓1+86
Comments50

Краткий обзор поведенческих паттернов в Rust

Level of difficultyEasy
Reading time6 min
Views4.5K

Привет, Хабр!

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

Паттерны можно реализовать на любом ЯПе и сегодня рассмотрим, как их реализовать в Rust.

Читать далее
Total votes 16: ↑11 and ↓5+8
Comments18

15 тенденций в области разработки программного обеспечения в 2024 году

Level of difficultyEasy
Reading time13 min
Views11K

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

Читать далее
Total votes 16: ↑13 and ↓3+13
Comments5

Деградация современного ПО

Level of difficultyMedium
Reading time3 min
Views30K

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

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

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

Начнем с простейшего вопроса — это ресурсы.

Каждый человек в современном мире, живущий в мегаполисе, обладает такими девайсами как ПК/Ноутбук и мобильный телефон.

Как правило (чаще всего, нужное подчеркнуть) ПК/Ноут в большинстве случаев на OS Windows, а мобильный телефон — это смартфон на OS Android.

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

More
Total votes 78: ↑33 and ↓45-6
Comments114

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

Level of difficultyEasy
Reading time10 min
Views27K

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

Если с каких-то рассуждений прямо сильно подгорит, приходи в комментарии, будет классно пообщаться!

В целом с языками программирования так же, как и со знаниями: лишними точно не будут. Какие языки изучал я сам, тонкости работы со скриптами, CI/CD и советы, что из языков ещё поизучать разработчику, найдёте под катом.

Читать далее
Total votes 25: ↑21 and ↓4+19
Comments67

Фреймворки обратной связи

Level of difficultyMedium
Reading time8 min
Views7.6K

Недавно меня спросили, какие фреймворки обратной связи я знаю. Я растерялся и сходу вспомнил только бутерброд, а также то, что хвалить нужно публично, а ругать — приватно. Это заинтриговало меня: какие же существуют практики для правильной обратной связи?

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

Давайте разбираться
Total votes 12: ↑12 and ↓0+12
Comments12

Тест производительности Web-фреймворков для Rust

Level of difficultyMedium
Reading time9 min
Views11K

В этой статье мы сравним производительность 3 наиболее популярных бекэнд-фреймворков для Rust: AxumActix и Rocket.

Сравним основные особенности, качество документации и самое главное - проведём тест производительности. Для этого напишем с помощью каждого фреймворка простой REST-сервис с тремя эндпоинтами - один будет просто возвращать отформатированную строку, второй засыпать на 20 миллисекунд имитируя небольшую работу с БД или запрос к внешнему сервису, а третий будет выполнять тяжёлую работу вычисляя хеш bcrypt, имитируя какую-нибудь сложную бизнес-логику.

Читать далее
Total votes 15: ↑13 and ↓2+14
Comments12

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

Reading time25 min
Views104K

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



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


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


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

— А. В. Столяров
Кощунство!
Total votes 285: ↑266 and ↓19+325
Comments231

Эпоха красивого кода прошла. Пришло время быдлокода

Reading time2 min
Views115K

Эпоха красивого кода прошла. Пришло время быдлокода    

Давеча решил я отключить ненужные плагины в настройках Android Studio. Снял галочки напротив плагинов которые для меня не нужны, IDE не предупредила ни о каких возможных проблемах.

Перезапустил IDE, и вуаля:

"Missing essential plugins... Please reinstall from scratch."

Читать далее
Total votes 166: ↑110 and ↓56+76
Comments430

Способы отслеживания роста навыков программиста

Reading time11 min
Views48K

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

Читать далее
Total votes 22: ↑18 and ↓4+16
Comments51

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

Reading time10 min
Views20K

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

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

Read more
Total votes 47: ↑47 and ↓0+47
Comments5

Архитектура Вселенной, часть 3: Идея

Reading time45 min
Views19K

Перед прочтением рекомендуется ознакомиться с предыдущими статьями цикла "Архитектура Вселенной":

Часть 1: Сознание
Часть 2: Относительность
Часть 3: Идея

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

Слово "материя" имеет тот же корень, что и слово "материал". В русский язык эти слова попали из латыни, где слово "materia" - это существительное, а слово "materialis" - прилагательное. Приблизительно эти слова можно перевести как "вещество" и "вещественный". Однако, если мы попытаемся дать понятию "материя" четкое определение, то натолкнемся на те же самые проблемы, что с сознанием, временем и пространством. Мы можем сказать, что материя - это то вещество, тот материал, из которого состоят все вещи. Но это определение можно выставлять в парижской палате мер и весов, как эталон тавтологии, ведь материя и есть вещество. Так что давайте обойдемся простым "материя - это то, из чего все состоит".

Читать далее
Total votes 19: ↑18 and ↓1+21
Comments72

Постигаем WebAssembly, рисуя кривую дракона

Reading time23 min
Views11K

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

На момент написания статьи WebAssembly в ходу уже три года. Она работает во всех современных браузерах, а некоторые компании уже даже решились использовать ее в продакшене  (Figma, наше почтение). За этим продуктом стоит мощная интеллектуальная поддержка: Mozilla, Microsoft, Google, Apple, Intel, Red Hat — в разработке участвовал инженерный цвет этих и других компаний. Web Assembly повсеместно считается Следующим Большим Прпорывом в веб-технологиях, но широкая аудитория фронтенд-разработчиков не спешит на нее переходить. Все мы знаем HTML, CSS и JavaScript, тех трех китов, на которых зиждется Веб, и для пересмотра такой парадигмы трех лет мало. Особенно, если краткий поиск в Google дает нечто подобное:

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

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

Reading time5 min
Views16K

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

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

Читать далее
Total votes 64: ↑53 and ↓11+55
Comments25

Исходники (фантастический рассказ)

Reading time4 min
Views4.6K

Это случилось за день до известного всем события.

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

Читать далее
Total votes 21: ↑18 and ↓3+23
Comments6

Математика и IT

Reading time18 min
Views42K

Джорджо де Кирико. Великий метафизик (The Grand Metaphysician), 1917.

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


1) CS — создание подходов, имеющих научную новизну. Разработка новых алгоритмов. Основная цель: научная новизна, развитие CS, решение проблем CS.


2) Инженерно-конструкторская деятельность – комбинирование уже известных подходов (алгоритмов, ЯП, библиотек, технологий, исходных кодов), их адаптация под конкретную задачу. Основная цель: создание продукта для решения конкретной практической задачи.


3) Техническое обеспечение — решение типовых (зачастую тривиальных) проблем в ходе эксплуатации “железа” и софта. Обеспечение бесперебойной работы ПО и оборудования с учетом возникающих требований.


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


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


Кому и насколько в IT нужна математика? — Попробуем ответить на этот вопрос (хотя бы частично).

Читать дальше →
Total votes 22: ↑18 and ↓4+21
Comments193

Information

Rating
Does not participate
Location
Иркутск, Иркутская обл., Россия
Works in
Date of birth
Registered
Activity