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

Программирование *

Искусство создания компьютерных программ

Сначала показывать
Порог рейтинга
Уровень сложности

Авторизация по биометрии — Kotlin

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 0
Kotlin *Программирование *Разработка мобильных приложений *Разработка под Android *
Из песочницы

Возможно вы знаете, что есть такая штука, как «менеджер паролей», где хранятся абсолютно все ваши логины, пароли и сайты, к которым они прикреплены. Удобная штука, чтобы не запоминать пароли и уж тем более не писать их вручную. Кому такое надо common. Поэтому многие и пользуются такими штуками по типу KeePass. А теперь смоделируем ситуацию:

Вы решили сходить в магазин и купить какой‑нибудь чешский нефильтрованный напиток, посмотрели на время и увидели, что сейчас 21:45, и совсем скоро магазины закроются. Поэтому вам пришла гениальная идея — побежать, пока магазин не закрылся, но по пути вы уронили телефон и даже этого не заметили. Когда вы возвращались домой с напитком, вы обнаружили, что вашего телефона нет, а каким‑то чудом вы пообещали себе 2 дня назад, что поставите пароль на телефон «на следующий день», что, конечно же, не сделали. Через пару минут вы заходите через ноутбук или компьютер, нажимаете на кнопку «выйти со всех устройств» и думаете, что всё — никаких проблем не будет, но тут вы заходите в вашу любимую социальную сеть и видите, что вашим друзьям или коллегам было отправлено сообщение о займе 1000 рублей. В этот момент вы понимаете, что у вас был включен тот самый менеджер паролей, в который мог зайти абсолютно любой, получив ваш телефон в руки.

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

Читать далее

Новости

PROFIBUS DP-V0 & STM32

Уровень сложности Средний
Время на прочтение 7 мин
Количество просмотров 202
C *Промышленное программирование *Программирование *Производство и разработка электроники *
Из песочницы

В этой статье я расскажу опыт разработки ведомого устройства для промышленных контроллеров Siemens с протоколом PROFIBUS DP-V0. Реализованный функционал достаточный для разработки простых устройств, но не полон. Статья нацелена на людей, которые знакомы с промэлектроникой и микроэлектроникой.

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

Черт тебя возьми, CSS

Уровень сложности Средний
Время на прочтение 6 мин
Количество просмотров 904
Блог компании RUVDS.com CSS *Программирование *Разработка веб-сайтов *
Туториал

У CSS много моментов, которые сбивают столку. Разработчики плюются от него. А мне нравится CSS, несмотря на мои потраченные нервы. Подумав, как помочь другим меньше мучаться, я собрал ряд неочевидных моментов. Они сбивали с толку меня и моих знакомых. Надеюсь, вам будет полезно.

Читать дальше →
Всего голосов 14: ↑14 и ↓0 +14
Комментарии 2

Добавляем поддержку пользовательского языка в IntelliJ с помощью ANTLR

Уровень сложности Средний
Время на прочтение 9 мин
Количество просмотров 267
Open source *Программирование *Java *Kotlin *
Туториал

В этой статье я не буду описывать как создать плагин для IntelliJ с поддержкой %lang_name% с нуля. Кроме официальной документации и туториала от JetBrains в сети есть множество статей и примеров. На Хабре тоже есть пара весьма подробных статей от @pyltsinm. Фокус будет на разработке плагина с использованием ANTLR и моём опыте в этом нелёгком деле.

Примером в этой статье будет WebCalm - плагин для IntelliJ с поддержкой JavaScript и CSS, который я сделал с помощью ANTLR.

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

Истории

Генерация полиморфного вредоносного кода при помощи ChatGPT

Уровень сложности Простой
Время на прочтение 5 мин
Количество просмотров 1.2K
Блог компании Бастион Информационная безопасность *Программирование *Искусственный интеллект
Туториал
Перевод

В стремительно меняющемся мире кибербезопасности злоумышленники постоянно ищут новые способы внедрения в компьютерные системы, их дестабилизации и эксплуатации уязвимостей. Один из самых коварных их инструментов — полиморфное вредоносное ПО, угроза-оборотень, затрудняющая использование традиционных защитных механизмов и представляющая огромную опасность для организаций и пользователей. В этом посте я расскажу о том, как атакующие могут применять искусственный интеллект для усиления полиморфизма зловредов. Источником вдохновения для этой статьи стала отличная работа Building BlackMamba, проделанная hyas.com.
Читать дальше →
Всего голосов 15: ↑15 и ↓0 +15
Комментарии 7

Почему разрабатывать ПО действительно сложно?

Время на прочтение 5 мин
Количество просмотров 1.3K
Блог компании Wrike Программирование *Проектирование и рефакторинг *Управление разработкой *Управление продуктом *

Давайте начнем с тривиального, но неоспоримого факта: программное обеспечение постоянно развивается – устаревает и обновляется, видоизменяется и дает дорогу новому.

Заметным исключением является наборная система TeX, разработанная Дональдом Э. Кнутом (D.E.Knuth). Предполагалось, что эта система должна быть совершенной, но даже в ней можно найти свои недочеты. Тем не менее, это уже отдельная тема для другой статьи.

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

[sobjectizer] Несколько слов о релизе версии 5.8.0

Уровень сложности Средний
Время на прочтение 14 мин
Количество просмотров 321
Open source *Программирование *C++ *

SObjectizer — это относительно небольшой C++17 фреймворк, который позволяет использовать в С++ программах такие подходы, как Actor Model, Publish-Subscribe и Communicating Sequential Processes (CSP), что упрощает разработку сложных многопоточных приложений. Если читатель в первый раз слышит о SObjectizer-е, то составить впечатление о нем можно ознакомившись вот с этой статьей.

Недавно состоялся релиз очередной мажорной версии, 5.8.0. Это хороший повод еще раз напомнить о проекте и сказать несколько слов о наиболее важном в очередном релизе, в том числе и о (частичном) сломе совместимости с предыдущей веткой 5.7.

Кому интересно, милости прошу под кат.

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

Многопоточность (Multithreading) для практического программирования

Уровень сложности Сложный
Время на прочтение 14 мин
Количество просмотров 844
Программирование *Анализ и проектирование систем *Системное программирование *Параллельное программирование *
Из песочницы

 Что надо знать, чтобы успешно применять-реализовать многопоточность (Multithreading) в своей программе? Мне кажется есть некоторые неудобные для изложения куски в разных описаниях потоков и того, что с ними связано, которые остаются не раскрытыми или вообще пропускаются.

Мне хочется предложить на суд читателей мое собственное понимание таких неудобных аспектов, связанных с применением многопоточности для практического программирования, которое накопилось у меня за пару десятилетий успешного применения этой самой многопоточности на всех уровнях разработки от Embedded и аппаратно-ориентированных уровней до C#, WPF, Java высокоуровневых фронт-ендов.

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

Как сделать мини-игру с Кузей с помощью голосового бота. Часть 2: Настройка Godot

Уровень сложности Средний
Время на прочтение 14 мин
Количество просмотров 390
Блог компании МТТ Программирование *Разработка игр *Игры и игровые консоли Сотовая связь
Кейс

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

Но зато мы можем написать свою мини-игру про кота Кузьму, в которой реализуем аналогичное управление персонажем с помощью любого телефона с функцией тонального набора.

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

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

Разработка веб-приложений с помощью Nim

Уровень сложности Средний
Время на прочтение 3 мин
Количество просмотров 1.5K
Разработка веб-сайтов *Open source *Программирование *
Из песочницы

В этой статье я постараюсь ознакомить вас с возможностями веб разработки на языке программирования Nim.

На данный момент в Nim можно выделить 2 основных веб-фреймворка: Jester и Karax. Однако Jester используется только для серверной разработки, а Karax для клиентской. Поэтому рассказывать о них я не стану, однако я расскажу о другом замечательном фреймворке - HappyX.

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

Мифы no-code разработки

Уровень сложности Средний
Время на прочтение 9 мин
Количество просмотров 2.8K
Программирование *Визуальное программирование *
Мнение

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

Однако в последнее время появилось множество не совсем точной, а часто и мифологической, информации о платформе. Это способствует завышенным ожиданиям у новичков. Такие мифы продуцируются как разработчиками no‑code, так и всевозможными курсами по обучению. И носят скорее рекламный характер, чем реальные характеристики инструментов.

Прежде чем анализировать мифы рассмотрим цикл разработки приложений на коде. 1) разработка UX дизайна (40 часов), 2) разработка UI дизайна (40 часов), 3) программирование бэкенда (120 часов), 4) программирование приложения для андроида (100 часов), 5) программирование приложения для iOs (100 часов), 6) тестирование (40 часов). Здесь трудоемкость каждого вида работ дана в часах для несложного приложения в 10 — 15 экранов. Естественно при увеличении количества экранов пропорционально будет увеличиваться и трудоемкость. Здесь мы не учитываем работу PM (прожект менеджера).

Эти цифры средние по нескольким украинским аутсорсинговым IT компаниям. Порядок выполнения работ параллельно‑последовательный: последовательно выполняются UX дизайн, UI дизайн, программирование (все три типа параллельно с некоторым опережением бэкенда), тестирование. Таким образом, общая трудоемкость составляет 440 часов, а продолжительность разработки составляет 240 часов.

Сразу отметим, что здесь не рассматриваются конструкторы основанные на шаблонах типа AppsGeyser. Они создают приложение за три шага: 1) Выбрать шаблон из 30 — 50 возможных (несколько кликов); 2) Добавить контент, например, логотип приложения, название, текст и ссылки, чтобы настроить ваше мобильное приложение (порядка 10 минут); 3) Загрузить приложение в Google Play Store. Здесь действительно практически не нужны знания, получается нативное приложение. К сожалению количество шаблонов десятки, а приложений нужно разрабатывать миллионы.

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

Применение формулы бинома для определения простых чисел

Уровень сложности Простой
Время на прочтение 3 мин
Количество просмотров 1.4K
Программирование *Алгоритмы *Scala *Математика *Функциональное программирование *

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

Читать далее
Всего голосов 7: ↑4 и ↓3 +1
Комментарии 22

Трюк с LD_PRELOAD

Время на прочтение 7 мин
Количество просмотров 2.8K
Блог компании OTUS Программирование *C *
Перевод

Недавно на кафедре баз данных TUM я работал над интересной низкоуровневой библиотекой на языке С — tssx, заменяющей в любом приложении взаимодействие через сокеты на быструю передачу данных через разделяемую память. С нашей библиотекой Postgres работает более чем в два раза быстрее, а некоторые программы даже на порядок быстрее. В основе библиотеки лежит трюк с LD_PRELOAD, о котором я и расскажу в этой статье.

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

Simba: Симуляция десятков тысяч частиц в потенциале Леннарда-Джонса на чистом Python с GPU-ускорением

Время на прочтение 9 мин
Количество просмотров 6.3K
Open source *Python *Программирование *Разработка игр *Физика

Добрый день, уважаемые хабровчане.

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

Самостоятельно потыркать проект можно вот тут: https://github.com/r-aristov/simba-ps

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

В глубины симуляции
Всего голосов 95: ↑95 и ↓0 +95
Комментарии 49

Плюсы и минусы FastAPI в 2023

Уровень сложности Простой
Время на прочтение 3 мин
Количество просмотров 3.3K
Python *Программирование *Django *Микросервисы *Flask *
Из песочницы

Всем привет, меня зовут Абай. Я являюсь Back-End разработчиком в 13LAB.

После прочтения интересной статьи со сравнением NodeJS и FastAPI, у меня появилось желание высказать свое личное мнение об удобстве разработки бэкенда на Python и фреймворке FastAPI.

FastAPI - является легковесным асинхронным фреймворком для Python, который используют преимущественно для разработки API-сервисов. Фреймворк довольно молодой и существует всего лишь 5 лет. До 2021 года не имел большой популярности по сравнению с Flask и Django, но на данный момент уже стал намного востребованнее, что его стали использовать в МAANG компаниях, к примеру...

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

Самое сложное в ПО — не кодинг, а требования, или Почему разработчикам не стоит бояться ИИ

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 4.4K
Блог компании RUVDS.com Программирование *Управление разработкой *Искусственный интеллект
Мнение
Перевод

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

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

В этой статье я расскажу о связи между требованиями и ПО, а также о том, что необходимо ИИ для создания хороших результатов.
Читать дальше →
Всего голосов 41: ↑39 и ↓2 +37
Комментарии 24

Создание анимированных графиков с помощью Matlab

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 1.2K
Программирование *Matlab *
Туториал

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

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

Как вывести форматированный текст на экран в C++

Уровень сложности Средний
Время на прочтение 4 мин
Количество просмотров 2.7K
Программирование *C++ *

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

Но как сделать это оптимально и кроссплатформенно? Читайте в нашей статье!

Читать далее
Всего голосов 20: ↑18 и ↓2 +16
Комментарии 7

Работа нестрогого равенства в JS на примере задачки

Уровень сложности Средний
Время на прочтение 11 мин
Количество просмотров 1.7K
JavaScript *Программирование *
Из песочницы

Недавно столкнулся с одной из «типовых» задач на собеседованиях. Просто увидел такое выражение где-то в интернете и не совсем понял как оно работает. А именно не понимал почему пустой массив дает 0.

![] == []

Такое выражение вернет true.

Решил конкретно рассмотреть данный пример по спецификации, и понять что происходит шаг за шагом.

Узнать подробности
Всего голосов 10: ↑9 и ↓1 +8
Комментарии 7

Использование составных триггеров (compound triggers) Oracle

Время на прочтение 4 мин
Количество просмотров 456
Oracle *Программирование *SQL *
Из песочницы

Пример использования триггеров, при взаимном обновлении таблиц. При таких задачах возникает ошибка мутирования таблиц ORA-04091: table is mutating.

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

Вклад авторов