Telegram Web Link
Что такое эталонное раздолбайство в политике информационной безопасности?

Это когда спикер палаты представителей США Нэнси Пелоси в момент, когда надо эвакуироваться с рабочего места, чтобы избежать встрпчи с протестующими, забывает нажать Win+L. Ну и залогиненный Твиттер с рабочего компа это тоже сильно.
Хотел бы внести корректировку к ранее опубликованными цифрам по FPS в моем приложении. У меня была ошибка в счётчике кадров в секунду.

Реальные значения FPS сейчас что с использованием С, что с использованием новонаписанного кода на С# колеблется в диапазоне от 1.05 до 1.25 кадров в секунду.

Сортировка на массиве случайных чисел выполняется около секунды + выполняется несколько других операций. То есть FPS 1 и выше кажется невозможным в теории. В реальности массив у меня частично отсортированный, потому сортировка занимает 0.2-0.3с, что и делает возможным обрабатывать один кадр в секунду.

Кроме того, целевое значение FPS у меня не 25, а 6-8, т.к. одно изображение у меня получается из 3 или 4 кадров с камеры.

Перепроверил и остальные цифры, публикуемые мной в канале, там все четко.

#csharp #диссер
Наткнулся сегодня на интересную особенность работы .Net на разных процессорах.

Один из самых простых способов параллелизовать операцию над последовательностью - использовать библиотеку Parallel, метод For. Операция будет выполнена, как и в обычном for, но параллельно, в разных потоках. Балансировкой нагрузки занимается сама CLR.

У меня было:
1. Операция над массивом из 4млн элементов, с глубоким путешествием по полям классов, составляющих массив. То есть что-то типа elements[i].inner_field.field.value. Выпоняю сложение и округление.

2. Три процессора:
Core i3 (3.6 гГц, 4 ядра)
AMD Ryzen (3.6 гГц, 6 ядер)
Core i9 (8 ядер, 3.6 гГц)

Результаты при параллельном запуске:
i3: 0.08с
AMD: 0.4с
i9: 0.03с

При запуске в один поток, на всех процессорах время примерно одинаковое - около 0.35 с.

Что за чертовщина, с чего AMD проигрывает i3 в 5 раз - не понятно. Буду искать объяснение или решение (отличное от "забить"), если найду - поделюсь.

#csharp
Как определить, что проект, в базе которого ты копаешься - русский по происхождению?

А если серьезно - создатели Libgen очень круты. И их полная открытость (код приложения, код сервера, все бэкапы и весь контент в свободном доступе) - это мега круто.
Forwarded from Ragoutoutou
В осеннем семестре еще накинули нагрузку. Плюс англоязычная дисциплина по альтернативной энергетике.
Один студент получил тему "Маятниковый генератор".
Вот выдержки из его отчета:
"Маятник - это инструмент для общения с подсознанием...
Маятник использовался фараонами для духовного исцеления...
Маятник имеет множество преимуществ, в том числе:
Общение с подсознанием;
Использование в энергетической терапии;
Поиск пропавших без вести;
Телепатия, передача мыслей, выход из тела, активация чакр,..."

Дожили.
Forwarded from Patroklos
Я однажды отправлял в Италию титановую болванку, чтобы нам станок на ней испытали после сборки.
Выбрали цилиндрическую болванку, подготовили доки, отправили, приходит ответ от ФТС: "не пропускать - похоже на заготовку для изготовления оружия", делайте её не цилиндрической
Поставили болванку на станок, стесали лыски, стала квадратная в сечении. Таможня опять не пропустила с тем же результатом.
Короч пока мы эту болванку по форме не превратили в нечто, похожее на фантазии Малевича, таможня писала "а может из этого итальянцы сделают пушку, и будут ею в нас стреляти?"
Летом я думал: c# я в принципе знаю, наверное надо учить Go, он модный, молодежный и параллельный. Не сложилось.

Спустя полгода непрерывного программирования на c#, я вижу бесконечное количество пробелов в моих знаниях шарпа.

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

Вот использование ассемблерных команды из c# - для меня пока слишком.

Ещё разобрался с запуском вычислений на видеокарте из c# - с проектом ManagedCUDA. Главная моя надежда - что не придется писать код для CUDA на специфическом диалекте C не оправдалась, но средствами Visual Studio разработка и запуск проекта на двух языках осуществляется довольно удобно.
По микроскопу появилась новая вводная: дополнительно реализовать метод вычисления фазового изображения по одной картинке с помощью фильтрации его двумерного Фурье-образа - методом Гильберта.

В поисках готовой реализации двумерного фурье преобразования, я нашел проект AForge - реализации различного матана на c#. Проект, хоть и написан по какую-то допотопную версию .Net крут: вырванный копипастой кусок, относящийся с Фурье преобразованию, просто взял и заработал. Время отработки на картинке 1024х2048 - около 1 секунды. Вырванная реализация работает только на картинках с размером, кратным степени двойки.

Теперь мне предстоит переварить копипасту: разобраться в принципе работы алгоритма, выкинуть лишнее, оптимизировать оставшееся. Появилась идея со временем выкинуть весь матан, как на c#, так и на CUDA в отдельный проект и в NuGet пакет (стандартное средство распространения готовых модулей и библиотек для c#) в свободный доступ, глядишь кому пригодится.

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

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

Использование массива с размерами, кратными степени двойки - один из основных читов, которые используются, чтобы получить результат максимально быстро. Что интересно - в одной из научных статей, посвященных фазовой микроскопии, все тесты алгоритмов, основанных на FFT2 проводились на картинках размером 1024x2048.

#диссер #csharp
Forwarded from Архив КС/РФ(Сиона-Футуриста) (Красный)
​​В диссертационной работе мне нужно записывать картинки с микроскопа с помощью цифровой камеры. Изначально отладка и сборка прибора проводилась с помощью веб камеры за 500 рублей, кое-как приделанной к прибору.

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

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

Сегодня попробовал камеру от производителя toupcam. К камере прилагается штатная прога, несколько уже скомпилированных .dll-ок под разные системы и папочка Samples, где приведены примеры забора изображения с помощью разных языков программирования. Открываешь пример через среду разработки, подкидываешь .dll-ку под свою систему, запускаешь и оно РАБОТАЕТ. Вот, что значит - SDK (инструменты разработчика) здорового человека.

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

Eshu Marabo
Forwarded from Архив КС/РФ(Сиона-Футуриста) (Красный)
​​Все помнят зельеварение в Гарри Поттере: сложный предмет, требующий аккуратности и таланта. При этом, зельеварение нервно курит в сторонке, если посмотреть на стандартные лабораторные манипуляции.

К примеру, хотим мы посмотреть на лимфоциты крысы под микроскопом. Для этого нам нужно использовать, кроме крови, 5 разных реактивов, 4 раза крутить пробирку на центрифуге, а также готовить слоистые коктейли в пробирке, оперируя объёмами в доли миллилитра.

Повторить процедуру выделения лимфоцитов по готовому описанию - непросто. А за составленным "протоколом" - тем самым описанием - многие человекогоды лабораторной практики.

Часть реагентов нужна чтобы кровь не свернулась, часть - чтобы клетки не растворились в непривычной среде. На центрифуге правильно отработанная кровь расслаивается по фракциям: эритроциты, лимфоциты и т.д.

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

Только после таких манипуляций можно собрать в пипетку несколько микролитров лимфоцитов. И ведь можно ещё их красить, добавлять флуоресцентные маркеры или вообще сортировать на виды лимфоцитов.

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

Eshu Marabo
Forwarded from СЛЕГ! <Z> ️
Половину дня убил вчера на реверс-инжиниринг сайта активного гражданина. Страница голосования там состоит из 4,5 мегабайт специально сделанного нечитаемым javascript кода (убраны пробелы и строки, машине пофигу, а человеку грустно).

Но, благодаря подсказкам уважаемого @eshu_coding я перехватил правильный запрос статистики. Теперь у меня есть бот-наблюдатель за выборами памятника на лубянской площади. Всего 80 строк, полный код в скринах.

Один раз в минуту записываются в файл текущие результаты и, при изменениях больше чем на 1 процент, рапортуется в чатик.
СЛЕГ! <Z> ️
Photo
К репосту. Инструменты разработчика в браузере - дичайшее читерство. При первом, и даже втором взгляде - перегружено и неочевидно. Но если жизнь заставляет погрузиться, как заставила уважаемого @ssleg, они оказываются волшебным окном во внутренности портала.

Современные сайты состоят в большей степени из кода на JavaScript, чем из html. Они живут - постоянно запрашивают какие-то данные у бэкенда, шевелят анимациями и т.д. И вся эта внутренняя кухня находит отражается в инструментах разработчика.

В запросе результатов опроса с Активного Гражданина (АГ) есть занятный момент. Протокол HTTP поддерживает несколько разных запросов: POST, GET и т.д. Разница между ними в том, что в методе GET все параметры запроса открытые, а в POST так с ходу их не прочитать. Потому, когда не хотят показывать, что в запросе, метод POST, предназначенный для загрузки данных на сервер, используют и не по назначению, в т.ч. и для получения информации, как это сделал программист, писавший модуль запроса.

Вот только безопасности это никакой не дало: JavaScript код-то открыт всему миру! Существуют разные способы защиты кода, авторы АГ выбрали далеко не самый надежный: обфускацию кода.

Есть еще один путь, к сожалению не всегда применимый в современной парадигме веба: писать сайт на C#:)
После первой пробы отладки ПО с настроенным микроскопом я ощутил, что не только в производительности счастье.

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

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

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

Для подавления шумов пока что я реализовал два простейших подхода: сглаживание окном 5х5 и накопление сигнала - использование для вычислений скользящего среднего последних 10 картинок.

В итоге, при правильно выставленных времени экспозиции, усилении (gain), насыщенности (saturation), сглаживании и скользящем среднем хотя бы по 3 картинкам качество вычисляемого изображения стало... условно приемлемым.

На очереди:
1. Детектирование движения кадра (для сброса накопления)
2. Вычитание из картинки плоскости или сферы по 3 точкам.
3. Режим вычисления фразового изображения по jpg файлу.
4. Новый UI на WPF
5. Ускорение ивычислений: распараллеливание и оптимизация быстрого преобразования Фурье, возврат к развёртке фазы.
6. Реализация различных Фурье фильтров, как для шумоподавления, так и для замены части используемой математики.
7. Разработка версии программы для записи картинок под GPU.
8. Собственно начало диссертационного исследования: погружение в мир цифрового анализа изображений, скорее всего уже на питоне.
Вчера был первый эксперимент нового витка диссертационного исследования. Планируется попробовать засечь влияние нового ветеринарного препарата на иммунную систему на примере лабораторных животных (крыс).

Самое удивительное, что все получилось близко к программе максимум.

У нас был пересобранный необкатанный микроскоп с сырой глючной программой, две крысы, две студентки, один ветеринар, один оптик и один программист.

Ещё было лабораторное оборудование, "позаимствованное" с миру по нитке. Описание ритуала выделения лимфоцитов в телеграммном чатике и методика взятия крови из хвоста на ютубчике. Способ приготовления препарата для микроскопа на ходу зачитывался из электронной почты.

В качестве установки для контроля был микроскоп 1990 года сборки, работающий под MS DOS.

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

Из второй крови удалось взять 50-100мкл крови вместо нужного нам 1мл (в 10-20 раз меньше). Несмотря на это, ритуал выделения клеток прошёл успешно и мы засняли некоторое количество картинок с лимфоцитами. Характерное ядро с чуть скошенным центром масс, ступенька цитоплазмы, размер процентов на 30 меньше, чем у человеческих, это без сомнений лимфоциты!

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

P.S. Крысы отделались небольшими гематомами у основания хвоста и дефекацией в процессе забора крови.

#диссер
К вопросу о том, почему я называю процесс выделения лимфоцитов ритуалом.

Ингредиенты:
1. Лизирующий буфер (NH4Cl, KHCO3, ЭДТА) для разрушения эритроцитов.
2. Фосфатный буфер для разведения крови
3. Фиколл - синтетическое сахароподобное нечто, используется, чтобы создать градиент плоскости, на который наслаиваются лимфоциты.

Примерная последовательности действий:
1. Берётся кровь, откручивается пару раз на центрифуге с фосфатными буфером.
2. Добавляется лизирующий буфер, откручивается на центрифуге.
3. Все это перемешивается на специальной мешалке-дрожалке.
4. Откручивается на центрифуге.
5. Несколько раз разбавляется фосфатным буфером, откручивается, мусор со дна удаляется.
6. На дно пробирки наливается фиколл, на него наслаиваются (как в слоёных коктейлях) результат из предыдущего пункта.
7. Всё центрифугируется еще раз, на границе раздела застревают Т и B лимфоциты, которые собираются дозатором и, в объеме 3-6 мкл используются для приготовления препарата.

#диссер
Палантир. Начало.

За прошедший месяц я реализовал и запустил новый проект: парсер текстов из телеграма,
#палантир@eshu_coding

Цель - выкачать весь открытый русскоязычный контент из телеги (посты и комменты к ним) в одну базу данных, после чего начать развлекаться с NLP.


Попутная цель - попрактиковаться в незнакомых технологиях. В итоге я потыкал палочкой в Docker, grpc (гугловый протокол передачи данных), секционирование таблиц в postgesql, настройку cd/ci с помощью github actions и немного в администрирование линуксовых серверов.

Пока что система проста как топор: master на c#, отдающий команды и принимающий результаты для сохранения в постгрес и slave-ы, выгружающие данные из телеги и передающие их master-у.

Для написания slave-ов пришлось пересилить себя и обмазаться питоном: в клиентских библиотеках под js или c# не было реализации одного важного запроса.

В итоге питоновские slave-ы плодятся коротеньким bash скриптом в любом месте, где установлен Docker. Мастера я не стал ставить в контейнер: плодить я их не намерен, а без контейнера проще хотябы в файлы логов заглянуть в случае чего.

Связь между компонентами осуществляется через grpc. В целом проект запустился в пятницу 2 апреля успешно. Сейчас уже трудятся 4 сборщика, спарсил 10 млн сообщений и постов от 400 тысяч пользователей из 13 тыс каналов и чатов.

#проекты
2025/07/09 11:11:49
Back to Top
HTML Embed Code: