Как стать автором
Обновить
6
0
Владимир @BoxaShu

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

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

OSINT: подборка инструментов для работы со спутниковыми изображениями

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

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

— В этом посте собраны бесплатные ресурсы и проекты со спутниковыми данными и различные программы обработки этих данных. 

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

Сглаживание битовых изображений

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

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

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

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

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

BitImageTool — пиктограммы для кнопок и панелек приложений, закодированные в ASCII

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

Статья о том, как легко делать графические кнопки для панелей инструментов, не таская за приложением гору бинарных ресурсов с картинками. Этот метод платформонезависимый и может быть использован в различных языках и средах, позволяющих работать с графикой и растровыми изображениями. Ниже приводятся примеры для C# (WinForms / WPF), JavaScript, Python.

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

Тогда возникла идея - рисовать одноцветные изображения, кодировать их в строку и хранить прямо в свойствах объекта (например - кнопки). Самый простой вид кодировки - когда шесть точек изображения превращаются в шестибитный код, соответствующий некоторому символу из ASCII таблицы с заданным базовым смещением...

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

«Меня увольняют» или манипуляции HR и менеджеров, чтобы вынудить вас уволиться одним днём. На примере Рольфа

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

Вкратце, для тех, кто ещё не слышал о новом скандале на IT рынке: Крупнейший автомобильный дилер «‎Рольф» увольняет айтишников без компенсаций.

В профсоюз обратились несколько сотрудников из компании и описали происходящее: +- 50 человек решили уволить потому что для них нет работы. Сотрудников по одному вызывали в кабинет где сидели 4 коллеги и рассказывали им о жизни, понятиях и отношениях: «ну мы же как семья». Всё ради того, чтобы получить подпись в соглашении о расторжения трудового договора одним днём. Без каких либо выплат. Спойлер — почти все сотрудники повелись на манипуляции и их уже уволили.

И что там дальше?
Всего голосов 171: ↑166 и ↓5+196
Комментарии198

Кластеризация множества объектов, алгоритм K-means++

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

Поступила задача выполнения кластеризации множества товаров, по их размерам (двумерная плоскость). Значения распределения: ширина и высота.

После изучения вопроса, было найдено несколько подходящих алгоритмов, одним из самых распространенных оказался алгоритм под названием K-means, а так же его вариация K-means++. Плюсы, в отличии от классики, подошли более разумно к подбору начальных точек опоры, калибрующихся итерационно, до момента идентичности нескольких последовательных результатов.

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

Эксплуатация бинарных уязвимостей или учимся «пывнить» (Часть 1 / Stack0)

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

Всем привет! В этой серии райтапов мы разберем известные задания по эксплуатации бинарных уязвимостей с Exploit Exercises (там их больше нет, поэтому я их перекомпилировал под Win). О том, что такое Buffer Overflow прекрасно и с примерами написано ТУТ (отличная статья от @Mogen). Кстати говоря, много крутых задачек на тему PWN есть на Codeby Games, так что рекомендую :)

Итак... мы будем решать наши задачки, используя статический (Ghidra) и динамический анализ (x64dbg). И самое главное, мы будем делать это без исходников уязвимой программы, в отличие от того, как это сделано ТУТ и ТУТ.

Stack0

Для решения этой задачки я буду использовать свою «песко‑реверс‑лабораторию», где у меня уже все «стоит» :)

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

Об одном интересном свойстве триангуляции Делоне

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

В процессе решения некоторой задачи, я наткнулся на одно интересное свойство триангуляции Делоне, которое мне не удалось загуглить, как и его применение к решению разных задач. Я уверен, что не являюсь его первооткрывателем, но оно, по крайней мере, не является широко известным. Поэтому я решил написать о нем статью.

Свойство: Если какой‑то отрезок AB не включен в триангуляцию Делоне, то существует путь из A в B по отрезкам из триангуляции, такой что каждый из отрезков в нем не длиннее |AB|. На картинке выше отсутствующий отрезок показан красным цветом, а путь — зеленым цветом.

Дальше в статье я приведу пример его использования в задачах, а также формальное его доказательство.

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

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

Основы работы с файлами и потоками в C#

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

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

В этой статье мы рассмотрим основы работы с файлами и потоками в C#.

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

Детей недостаточно учить только питону и ардуине

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

Детей недостаточно учить только питону и ардуине. Нужно еще и цифровой схемотехнике, причем не на симуляторе, так как он для ребенка неубедителен, а на микросхемах малой степени интеграции, лучше которых для иллюстрации функции D-триггера никто с 1968 года ничего не придумал.

Но учить канонично по книжкам 1970-х не обязательно. Например, ну зачем ребенку руками собирать генератор тактового сигнала на микросхеме 555, если его теорию он все равно не поймет, а для понимания функции D-триггера понимание работы генератора нерелевантно? Генератор на 555 можно купить уже собранным на AliExpress.

Также можно заменить батарейку на 9 вольт на питание от USB на 5 вольт; поставить толерантные к 5 вольтам светодиоды, не требующие дополнительных резисторов и поставить кнопочки, не требующие подтягивающих резисторов. В результате все сведется к самой сути - логическим элементам и D-триггерам, откуда уже можно переходить на ПЛИС / FPGA. Вот сравните схему сдвигового регистра. Что вы по этому поводу думаете?

Было:

Читать далее
Всего голосов 43: ↑34 и ↓9+40
Комментарии364

Как я компьютер в Minecraft построил

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

Решил я, значит, изучить, как работают компьютеры на самом низком уровне. Это тот уровень, где работают всякие железяки, транзисторы, логические элементы и так далее. Чтобы полностью закрепить материал, я решил построить простенькую ЭВМ на редстоуне в Minecraft. Эта статья о том, как работают ЭВМ на уровне логических элементов и о том, как я построил прототип такой ЭВМ в Minecraft. В конце я оставил ссылку на GitHub-репозиторий с проектом.

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

«Физика для программистов» — как физтехи применяют её в приложениях. Дифракция. Интеграл Френеля

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

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

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

Отправляем GC в отпуск и создаем эксзепляры классов .NET сами

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

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

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

OpenAI API – получить ответ ChatGPT на C#

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

В мире развивающегося искусственного интеллекта доступ к таким технологиям, как ChatGPT от OpenAI, становится все более востребованным. Для облегчения процесса взаимодействия с этим инструментом я запилил класс AmChat, который предоставляет простой и удобный способ отправки запросов к API ChatGPT и получения ответов. В этой статье мы рассмотрим особенности класса AmChat и его использование для быстрого и эффективного получения ответов от ChatGPT в вашем коде на C#.

Класс AmChat имеет только один публичный метод – GetAnswer, который является статическим и асинхронным. Этот метод принимает вопрос в качестве параметра и возвращает ответ от ChatGPT.

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

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

Рассмотрим пример использования класса AmChat:

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

Блокчейн для чайников: создаем свой первый распределенный реестр

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

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

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

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

nanoCAD Конструкции PS: инструменты детального армирования и сборка изделий

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

Продолжаем серию видеоуроков, посвященных технике работы в nanoCAD Конструкции PS. Это приложение к Платформе nanoCAD – для автоматизации разработки документации разделов КЖ и КЖИ при проектировании зданий и сооружений. Видеоуроки будут особенно полезны инженерам строительных специальностей, работающим над проектами монолитных конструкций.

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

Актуальный гайд по написанию простого Windows-драйвера

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

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

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

Обзор электронной книги Meebook P10 Pro

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

Электронная книга Meebook P10 Pro была куплена мне в подарок примерно год назад. По прошествии этого времени я сделал её обзор, основанный на личном опыте использования.

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

Как правильно дифференцировать дискретные функции (Часть 2. Все-таки, МКЭ?)

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

Публикация является продолжением обсуждения алгоритмов вычисления первой производной дискретной функции (функции, заданной массивом {аргумент: значение}, или массивом узловых значений). В части первой обсуждались функции из библиотеки NumPy, и был предложен альтернативный алгоритм, повышающий точность расчетов на границах области определения функции. В настоящей публикации предложены 2 алгоритма на основе метода конечных элементов (МКЭ, Finite Elements Method), один из которых показал на тестовых функциях лучшие результаты в сравнении с альтернативами.

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

Мне 15 лет и я написал QR код генератор на Rust

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

Привет, я бы хотел вам рассказать о том, как я учился программировать на языке Rust с нуля, для этого я выбрал цель — написать свой генератор QR-кодов.

Немного объяснений моего кода и вообще про QR-коды, надеюсь, вам понравится.

Читать далее
Всего голосов 36: ↑31 и ↓5+36
Комментарии17

Аналоги Trello: 5 проверенных вариантов, которые точно останутся в России

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

Австралийский Atlassian, разработчик Trello и Jira, вынес последнее предупреждение: «Осталось 30 дней». Потом все данные пользователей из России и Беларуси будут удалены. Многие мои знакомые до последнего надеялись, что этого не случится, а сейчас срочно ищут, куда переехать. 

Я тестирую разные системы управления проектами 4 года. Последний год российские сервисы растут как грибы после дождя. Лучше выбирать те, что на рынке давно. Вот 5 проверенных вариантов, советую попробовать их в первую очередь. В конце – сравнительная таблица. 

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

Информация

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