Pull to refresh
1
0
ciiccii @ciiccii

User

Send message

Отладка DirectX — проще простого

Reading time4 min
Views23K
Понимание процессов происходящих «под капотом» DirectX всегда было сопряжено с некоторыми трудностями и вынуждало применять дополнительные инструменты, например такие как Pix. Но прогресс не стоит на месте, многие идеи и готовые решения теперь внедрены в Visual Studio 11 beta. Этот инструментарий позволяет значительно упростить отладку DirectX приложений и дать программисту возможность детально разобраться в тех процессах, которые формируют изображение. Теперь каждый пиксель может быть досконально изучен, и получена вся история его жизни.
Читать дальше →

Запрограммируем перцептрон Розенблатта?

Reading time17 min
Views30K
После одной провокационной статьи Перцептрон Розенблатта — что забыто и придумано историей? и одной полностью доказывающей отсутствие проблем в перцептроне Розенблатта, и даже наоборот показывающей некоторые интересные стороны и возможности Какова роль первого «случайного» слоя в перцептроне Розенблатта, я так думаю у некоторых хабражителей появилось желание разобраться, что же это за зверь такой — перцептрон Розенблатта. И действительно, достоверную информацию о нем, кроме как в оригинале, найти не возможно. Но и там достаточно сложно описано как этот перцептрон запрограммировать. Полный код я выкладывать не буду. Но попробуем вместе пройти ряд основ.

Начнем… ах да, предупреждаю, я буду рассказывать не классически, а несколько осовременено…

Читать дальше →

Ограничение оптимизирующих методов в играх с противником и без

Reading time2 min
Views2.7K
Эта статья короткое ответвление от цикла статьей по биовычислениям:
От белков к РНК, Мат. критерии, Как уменьшить число поворотов цепи?, Как оценить ход сворачивания односпиральной РНК?

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

Казалось бы сама физика велит использовать эти методы в таких задачах как сворачивание РНК/белков. Здесь мы посмотрим почему это сильно проблемно.

Читать дальше →

Войны в песочнице – Часть 3. ARP-Spoofing, бесполезность фильтрации по MAC-адресу и опасность установки неподписанного ПО

Reading time9 min
Views44K


Прошло чуть более года с момента публикации предыдущих статей (1, 2), и только недавно обстоятельства сложились так, что у меня появился повод для проведения новой атаки.

В этот раз физического доступа к сетевой инфраструктуре нет. Есть лишь ноутбук с доступом в интернет по Wi-Fi. Жертва – сосед по общежитию — подключена к другой точке доступа (DIR-320) по Ethernet, но пароль для подключения к точке известен почти всем, т.к. её хозяин предпочитает использовать в качестве средства разграничения доступа фильтрацию по MAC-адресам, добавляя и удаляя адреса из базы по мере необходимости. Моего MAC-адреса в списке разрешенных нет.

Ок, подключаемся, делаем несколько тестов, и видим, что фильтрация MAC-адресов происходит только на сетевом уровне, то есть точка доступа не отказывается:
  • пересылать мои фреймы в Ethernet сегмент, и доставлять ответы
  • отвечать на ARP-запросы и принимать ARP-ответы


Единственное что точка доступа отказывается делать, так это взаимодействовать с чужаком на сетевом уровне, то есть IP-адрес она мне через DHCP не выдаёт, пропинговать её нельзя и в интернет через неё тоже не выйти.

Читать дальше

Какова роль первого «случайного» слоя в перцептроне Розенблатта

Reading time6 min
Views5.9K
Итак в статье Перцептрон Розенблатта — что забыто и придумано историей? в принципе как и ожидалось всплыло некоторая не осведомленность о сути перцептрона Розенблатта (у кого-то больше, у кого-то меньше). Но честно говоря я думал будет хуже. Поэтому для тех кто умеет и хочет слушать я обещал написать как так получается, что случайные связи в первом слое выполняют такую сложную задачу отображения не сепарабельного (линейно не разделимого) представления задачи в сепарабельное (линейно разделимое).

Честно говоря, я мог сослаться просто на теорему сходимости Розенблатта, но так как сам не люблю когда меня «посылают в гугл», то давайте разбираться. Но я исхожу из-то, что Вы знаете по подлинникам, что такое перцептрон Розенблатта (хотя проблемы в понимании всплыли, но я все же надеюсь что только у отдельных людей).

Читать дальше →

Часть №4. Биовычисления по сворачиванию. Как оценить ход сворачивания односпиральной РНК?

Reading time4 min
Views1.1K
Итак, если еще не устали от цикла «Hello, RNA World» — ловите последнюю статью сезона :)

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

Если энергия — это мало репрезентативная цель, тогда что более стабильно/чётче указывает куда двигаться? Если бы у нас была абсолютно формализованная и точная цель — это уже означало бы, что мы задачу решили, т.к. сама формализация целевой функции — есть не что иное как полноценное понимание процесса.

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

Читать дальше →

Часть №3. Биовычисления по сворачиванию. Как уменьшить число поворотов цепи?

Reading time5 min
Views1.7K
В этой части мы поговорим о том, как можно так сократить число поворотов цепи, чтобы сократить расчеты, но при этом не потеряв возможность попадания в нужные состояния.

Но вначале хочу обратиться к специалистам в этой области:

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

Тем же кто желает тут похоливарить. Давайте так. Я такой любитель — которому погоны специалистов значут мало, а наука такое дело требует повторяемости (а не бизнес-скрытности, это же не бизнес, чтобы скрывать детали своих алгоритмов и не публиковать их код?), поэтому просто разговоры меня интересуют мало. Но меня очень интересует когда мне показывают, что я занимаюсь немного не тем, и что есть люди которые действительно чего-то добились. Вот задача над которой я мучаюсь. Решите и покажите, что это просто — буду очень благодарен.

Я даю произвольную (реально существующую) первичную последовательность до 100 нуклеотидов. Указываю все водородные связи которые нужно образовать. Вы на выходе даете мне файл .pdb, в котором третичная структура из указанной первичной последовательности и где образованы все требуемые водородные связи. Ни каких других требований.


Прошу или показать, что это просто или ответственно подтвердить, что эта задача скажем за неделю (или другой разумный срок) — не решается.

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

И снова моей аудитории, которая не является специалистами: важно поверить, что это легко, и не обязательно знать физику, биологию, и сложную математику — надеюсь вы умеете программировать и этого достаточно. Выше кстати, задача, которую мы и будем решать… но не все сразу. По плюсам — я понял что Вы читаете. Но неужели все понятно и нет вопросов? Если что жду комментариев, даже самых наивных. Пора делать эту область исследований хотя бы простой по описанию, а не скрывать ее за не нужными тонами сложностей.

Читать дальше →

Часть №1. Введение в биовычисления по сворачиванию. От белков к РНК

Reading time4 min
Views3.9K
Сразу надо сказать, что буду излагать вопрос о биовычислениях с определенной кибернетико-геометрической точки зрения. Это мое название и это направление не распространено. Уверен, что так будет легче понять тем кто не в теме этой биологической проблематики. Те кто уже в теме — готов и с вами подискутировать и показать почему традиционные методы не пригодны с точки зрения кибернетического подхода (но в этой статье не вы моя аудитория — уж извините, но уверен и вам она будет полезна как расширение мировоззрения на проблематику).

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

Но эта задача в общем виде не решена. Это как нерешенные задачи в математике, только с биологическим контекстом (см. парадокс Левинталя). Биологи могут лишь с определенной погрешностью увидеть путем биоэкспериментов состояние в уже свернутом состоянии, но проследить как это происходит пока не возможно. Но все это кроме того очень дорого. Почему и занимаются компьютерными вычислениями — это дешево, даже не смотря на то, что используется тысячи компьютеров в распределенных проектах.

Но введения хватит, далее с корабля на бал…

Читать дальше →

Пишем драйвер для самодельного USB устройства

Reading time13 min
Views178K
Целью этой статьи является пошаговая демонстрация процесса разработки всего набора программного обеспечения необходимого для организации связи самодельного устройства с компьютером посредством USB.

На данный момент, большинство радиолюбителей реализуют такой тип подключения используя чипы переходники USB в RS232 таким образом организуя связь со своим устройством посредством драйвера виртуального COM порта поставляемого с чипом переходником. Минусы такого подхода думаю понятны. Это как минимум лишний чип на плате и ограничения накладываемые этим чипом и его драйвером.
Мне же хочется осветить весь процесс организации такого взаимодействия так как оно и должно быть сделано, и как делается во всех серьезных устройствах.
В конце концов, сейчас 21-й век, модуль USB есть почти во всех микроконтроллерах. Именно о том, как наиболее быстро воспользоваться этим модулем и будет эта статья.
Читать дальше →

Уязвимы по определению

Reading time4 min
Views40K
У многих людей, как-либо связанных с безопасностью, периодически возникает желание заняться pentest'ом, то есть тестом на проникновение. И чаще всего начинают все с pentest'а веб-приложений. Порог вхождения довольно мал (простейшая sqli определяется добавлением кавычки в параметр и эксплуатируется не особо сложнее), но при этом встречаются и довольно сложные задания, которые заставляют потратить пару-тройку дней на ковыряние.
Но возникает вопрос — где применять теоретические знания, без страха внезапного появления маски-шоу? Под катом проведу небольшой обзор полигонов для экспериментов по pentest'у.
Читать дальше →

Создание прокси-dll для запуска DirectDraw игр в окне

Reading time5 min
Views20K
В продолжение темы расширения функциональности готовых программ хотелось бы рассказать об ещё одном способе изменения логики работы уже скомпилированной программы, который не требует делать изменений в самом исполняемом файле. Это может пригодиться при распространении вашей модификации в США, где прямое вмешательство в исполняемый файл строго осуждается. Речь пойдёт о создании крошечной прокси-dll (всего ≈4 килобайта) для подмены используемой приложением библиотеки на примере ddraw.dll.
Читать дальше →

QoS в Linux: издеваемся над трафиком

Reading time7 min
Views49K
В предыдущей статье я рассказывал про фильтр U32. В этой статье речь пойдёт о так называемых tc actions — действиях, которые можно производить над трафиком. Например, можно построить файерволл без использования iptables/netfilter, или изменять отдельные байты в пакетах, перенаправлять/зеркалировать трафик на другие интерфейсы. Осваивать это будем на примерах. Продолжение под катом.
Читать дальше →

Compile-time проверка в C/C++

Reading time3 min
Views15K
C/C++ позволяют выполнить проверки константных выражений ещё на этапе компиляции программы. Это дешёвый способ избежать проблем при модификации кода в будущем.
Я рассмотрю работу с:
  • перечислениями (enum),
  • массивами (их синхронизацию с enum),
  • switch-конструкциями,
  • а так же работу с классами, содержащими разнородные данные.

Читать дальше →

Компилирование заголовочных файлов или документация на халяву

Reading time5 min
Views15K

Для кого эта статья


Вряд ли опытные C++ разработчики найдут что-нибудь новое и интересное в этой статье. Максимум банальную команду
gcc -c -x c++ -I ./ */*/*/*/*.h
которую они и так знают.
А вот если Вы — разработчик начинающий, или только в первый раз строите документацию по своему проекту, или пробовали это однажды, но увидев тот бред, что сгенерировал doxygen, удалили его и забыли как страшный сон, добро пожаловать под кат, скорее всего Вы найдете дальше парочку полезных мыслей.
Читать дальше →

Алгоритмы в биоинформатике ч.1

Reading time9 min
Views9.9K
bioinformatic    В предыдущих статьях (1,2) мы познакомились с тем, как могут выглядеть данные в зависимости от проведенного биологического эксперимента. На основании этих визуализированных данных были сделаны предположения о том, что же происходит внутри клетки. Теперь остановимся на том, как математически и алгоритмически проанализировать данные для того, чтобы машины за нас могли выполнить рутинную работу. К сожалению, после прочтения множества статей по анализу данных у меня сложилось впечатление, что однозначного или наиболее универсального решения не существует. Есть алгоритмы, которые хорошо себя показывают на некотором наборе данных, а в других случаях уже не отвечают поставленным задачам.
Читать дальше →

UTF-8: Кодирование и декодирование

Reading time3 min
Views217K
Причиной разобраться в том, как же работает UTF-8 и что такое Юникод заставил тот факт, что VBScript не имеет встроенных функций работы с UTF-8. А так как ничего рабочего не нашел, то пришлось писть/дописывать самому. Опыт на мой взгляд полезный в любом случае. Для лучшего понимания начну с теории.

О Юникоде


До появления Юникода широко использовались 8-битные кодировки, главные минусы которых очевидны:
Читать дальше →

Учимся писать модуль ядра (Netfilter) или Прозрачный прокси для HTTPS

Reading time19 min
Views34K
Эта статья нацелена на читателей, которые начинают или только хотят начать заниматься программированием модулей ядра Linux и сетевых приложений. А также может помочь разобраться с прозрачным проксированием HTTPS трафика.

Небольшое оглавление, чтобы Вы могли оценить, стоит ли читать дальше:
  1. Как работает прокси сервер. Постановка задачи.
  2. Клиент – серверное приложение с использованием неблокирующих сокетов.
  3. Написание модуля ядра с использованием библиотеки Netfilter.
  4. Взаимодействие с модулем ядра из пользовательского пространства (Netlink)

P.S. Для тех, кому только хочется посмотреть на прозрачный прокси-сервер для HTTP и HTTPS, достаточно настроить прозрачный прокси-сервер для HTTP, например, Squid с transparent портом 3128, и скачать архив с исходниками Shifter. Скомпилировать (make) и, после удачной компиляции, выполнить ./Start с правами root. При необходимости можно поправить настройки в shifter.h до компиляции.
Читать дальше →

Кластеризация точек на основе регулярной сети

Reading time4 min
Views17K

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

Читать дальше →

Макросы с переменным числом параметров

Reading time2 min
Views17K
Недавно пришлось мне разбираться с одним Open Source проектом. Нужно было разобраться с одной ошибкой. Ошибка была плавающей и проявлялась исключительно на стенде, после получаса раб. Да и то не всегда. Поэтому было принято решение логировать определенные участки кода.
Читать дальше →

Восстановление расфокусированных и смазанных изображений

Reading time10 min
Views226K
Восстановление искаженных изображений является одной из наиболее интересных и важных проблем в задачах обработки изображений – как с теоретической, так и с практической точек зрения. Частными случаями являются размытие из-за неправильного фокуса и смаз – эти дефекты, с которым каждый из вас хорошо знаком, очень сложны в исправлении – именно они и выбраны темой статьи. С остальными искажениями (шум, неправильная экспозиция, дисторсия) человечество научилось эффективно бороться, соответствующие инструменты есть в каждом уважающем себя фоторедакторе.

Почему же для устранения смаза и расфокусировки практически ничего нету (unsharp mask не в счет) – может быть это в принципе невозможно? На самом деле возможно – соответствующий математический аппарат начал разрабатываться примерно 70 лет назад, но, как и для многих других алгоритмов обработки изображений, все это нашло широкое применение только в недавнее время. Вот, в качестве демонстрации вау-эффекта, пара картинок:



Я не стал использовать замученную Лену, а нашел свою фотку Венеции. Правое изображение честно получено из левого, причем без использования ухищрений типа 48-битного формата (в этом случае будет 100% восстановление исходного изображения) – слева самый обычный PNG, размытый искусственно. Результат впечатляет… но на практике не все так просто. Под катом подробный обзор теории и практические результаты.
Осторожно, много картинок в формате PNG!
Читать дальше →

Information

Rating
Does not participate
Date of birth
Registered
Activity