Как стать автором
Обновить
25
0
Александр @Doktor3lo

Chief of R&D

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

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

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров48K

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

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

Читать далее
Всего голосов 45: ↑40 и ↓5+46
Комментарии138

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

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

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

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

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

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

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

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

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

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

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

Прикоснуться к сокровищнице языка С++
Всего голосов 82: ↑81 и ↓1+92
Комментарии23

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

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

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

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

Читать далее
Всего голосов 76: ↑75 и ↓1+86
Комментарии50

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

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

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

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

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

Читать далее
Всего голосов 16: ↑11 и ↓5+8
Комментарии18

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

Уровень сложностиПростой
Время на прочтение13 мин
Количество просмотров11K

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

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

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

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

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

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

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

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

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

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

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

More
Всего голосов 78: ↑33 и ↓45-6
Комментарии114

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

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров27K

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

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

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

Читать далее
Всего голосов 25: ↑21 и ↓4+19
Комментарии67

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

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

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

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

Давайте разбираться
Всего голосов 12: ↑12 и ↓0+12
Комментарии12

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

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

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

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

Читать далее
Всего голосов 15: ↑13 и ↓2+14
Комментарии12

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

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

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



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


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


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

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

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

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

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

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

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

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

Читать далее
Всего голосов 166: ↑110 и ↓56+76
Комментарии430

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

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

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

Читать далее
Всего голосов 22: ↑18 и ↓4+16
Комментарии51

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

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

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

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

Read more
Всего голосов 47: ↑47 и ↓0+47
Комментарии5

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

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

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

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

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

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

Читать далее
Всего голосов 19: ↑18 и ↓1+21
Комментарии72

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

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

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

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

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

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

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

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

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

Читать далее
Всего голосов 64: ↑53 и ↓11+55
Комментарии25

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

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

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

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

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

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

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

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

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


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


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


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


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


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


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

Читать дальше →
Всего голосов 22: ↑18 и ↓4+21
Комментарии193

Асинхронная бизнес-логика в наши дни

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

Вкратце:


  • Пруф уже реализован на C++, JS и PHP, подходит для Java.
  • Быстрее чем coroutine и Promise, больше фич.
  • Не требует выделения отдельного программного стека.
  • Дружит со всеми средствами безопасности и отладки.
  • Работает на любой архитектуре и не требует особых флагов компилятора.

Читать дальше →
Всего голосов 29: ↑25 и ↓4+21
Комментарии57

Информация

В рейтинге
Не участвует
Откуда
Иркутск, Иркутская обл., Россия
Работает в
Дата рождения
Зарегистрирован
Активность