Как стать автором
Обновить
13
0
Юрьев Дмитрий @PM1630

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

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

Структура белка: введение для айтишников

Время на прочтение17 мин
Количество просмотров156K
Приятно видеть, что хабравчане регулярно интересуется другими предметными областями – например, биологией (более конкретно – структурой и функцией биологических макромолекул). Однако некоторые посты (например, этот), вызывают у специалиста просто физическую боль из-за обилия совершенно диких фактологических ошибок. В этом посте мне хочется рассказать о структуре и функции белка. О том, что мы знаем и о том, чего не знаем, а так же об имеющихся в этой области вычислительных задачах, требующих решения и интересных IT-специалистам. Постараюсь рассказывать сжато и тезисно, чтобы информации было больше, а воды – меньше. Всех, интересующихся структурой белков, прошу под кат, там очень много букв.
Читать дальше →
Всего голосов 146: ↑145 и ↓1+144
Комментарии72

Графики в бухгалтерии. За полвека до Excel

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

Сегодняшний ретро-обзор посвящен графикам, вообще наглядному представлению данных в бухгалтерии.
А вам известно, чем пользовались бухгалтеры за полвека до Excel?
Читать дальше →
Всего голосов 114: ↑110 и ↓4+106
Комментарии45

Путешествие через вычислительный конвейер процессора

Время на прочтение16 мин
Количество просмотров134K
Так как карьера программиста тесно связана с процессором, неплохо бы знать как он работает.

Что происходит внутри процессора? Сколько времени уходит на исполнение одной инструкции? Что значит, когда новый процессор имеет 12, или 18, или даже 31-уровневый конвейер?

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

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

Эта статья рассказывает, как устроен вычислительный конвейер x86 процессора.
Читать дальше →
Всего голосов 160: ↑159 и ↓1+158
Комментарии43

LabVIEW и вариабельность сердечного ритма (+исходники)

Время на прочтение4 мин
Количество просмотров19K
Добрый день, всем! Учусь я в техническом вузе и занимаюсь разработкой программных и аппаратных средств для обработки и регистрации биомедицинских сигналов и данных. Поскольку начал этим заниматься около трех лет назад, в настоящее время скопились некоторые наработки, с одной из которых хотелось бы вас познакомить.

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


Читать дальше →
Всего голосов 30: ↑29 и ↓1+28
Комментарии10

Скрытые цепи Маркова, алгоритм Витерби

Время на прочтение5 мин
Количество просмотров60K
Нам нужно реализовать детектор лжи, который по подрагиванию рук человека, определяет, говорит он правду или нет. Допустим, когда человек лжет, руки трясутся чуть больше. Сигнал может быть таким:

Исходный сигнал

Интересный метод, описан в статье «A Tutorial on Hidden Markov Models and Selected Applications in Speech Recognition» L.R. Rabiner, которая вводит модель скрытой цепи Маркова и описывает три ценных алгоритма: The Forward-Backward Procedure, Viterbi Algorithm и Baum-Welch reestimation. Несмотря на то, что эти алгоритмы представляют интерес только в совокупности, для большего понимания описывать их лучше по отдельности.
Читать дальше →
Всего голосов 74: ↑73 и ↓1+72
Комментарии25

Angry Birds на PLC?

Время на прочтение4 мин
Количество просмотров18K
imageВ предыдущем топике я обещал подробнее описать особенности программирования промышленных PLC, и почему такое программирование все больше напоминает разработку обычного софта. О языке IEC61131-3 ST (промышленном диалекте Паскаля) я уже писал, также хорошим вступлением можно считать вот этот хабратопик. Этот пост — о компиляторах PLC, средах разработки, особенностях программирования и эволюции языка и экосистемы.
Читать дальше →
Всего голосов 25: ↑19 и ↓6+13
Комментарии13

Стартовала вторая фаза конкурса Intel® Perceptual Computing Challenge

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


Неделю назад, шестого мая, официально стартовала вторая фаза конкурса Intel Perceptual Computing Challenge. Поскольку в корпоративном блоге компании Intel на хабре так новость и не появилась, решил написать об этом сам. Подробности под катом.

Читать дальше →
Всего голосов 12: ↑9 и ↓3+6
Комментарии4

Intel Perceptual Computing SDK

Время на прочтение4 мин
Количество просмотров24K
Прогресс не стоит на месте, меняется все – наше представление о мобильных устройствах, они становятся тоньше, лечге, производительнее, меняются способы взаимодействия с ними, на смену клавиатуре и мыши пришли тач и сенсоры, на смену которым идет Perceptual Computing.
Что такое Perceptual Computing? Это новая технология, которая позволит пользователю взаимодействовать со своим мобильным устройством посредством голоса, рук, лица, т.е. более естественных для человека способов взаимодействия.
Читать дальше →
Всего голосов 35: ↑32 и ↓3+29
Комментарии23

Правильные имена и полезные ошибки

Время на прочтение3 мин
Количество просмотров31K
image
Эта статья для тех, кто получает от разработки приложений больше удовольствия, чем денег.
Тем не менее, здесь пойдет речь об увеличении дохода с Ваших приложений.
В 2013 году я совершенно случайно столкнулся с тремя способами увеличить денежный поток раза в два, то есть вместо 25 долларов в день мне стало капать 50. А иногда 100.
Кому эти суммы кажутся смешными, проходите мимо.
А кто знает цену каждому заработанному доллару — прошу под продолжение.
Читать дальше →
Всего голосов 84: ↑71 и ↓13+58
Комментарии50

1986ВЕ91Т: Что же внутри российского Арма?

Время на прочтение3 мин
Количество просмотров76K
После предыдущих статей с внутренностями микросхем (1, 2) многие писали, что фотографии — это конечно интересно, но хотелось бы знать что есть что.

Сегодня возможность удовлетворить этот закономерный интерес наконец появилась. Ковырять будем 1986ВЕ91Т — это микроконтроллер Миландра, основанный на ядре ARM Cortex-M3 (официально лицензированного). Внутри — 128 КиБ флеш-памяти, 32 КиБ статической памяти, аппаратный USB и 80Мгц ядро, изготовлено по технологии 180нм.
Читать дальше →
Всего голосов 137: ↑136 и ↓1+135
Комментарии70

Дайджест интересных новостей и материалов из мира айти и веб-разработки за последнюю неделю №55 (27 — 5 мая 2013)

Время на прочтение7 мин
Количество просмотров27K
Предлагаем вашему вниманию очередную подборку с ссылками на новости, интересные материалы и полезные ресурсы.


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

Рецепты против взаимных блокировок на сигнальных переменных

Время на прочтение5 мин
Количество просмотров22K
Доброго времени суток, уважаемые Хабраюзеры!

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

Рисунок 1 – Взаимная блокировка 1-го рода с участием сигнальной переменной.

В рамках этого поста мы рассмотрим проблемы, которые возникают при использовании сигнальных переменных, и покажем, как их можно избежать.
Читать дальше →
Всего голосов 45: ↑41 и ↓4+37
Комментарии12

Два простых правила для предотвращения взаимных блокировок на мьютексах

Время на прочтение6 мин
Количество просмотров57K
Здравствуйте, уважаемые Хабраюзеры!

Так сложилось, что это третий пост в блоге нашей компании, и, как и первые два, он посвящен вопросам многопоточного программирования и проблемам, которые при этом возникают. Получилось так неслучайно, ведь мы на собственной «шкуре» испытали, что ситуации, возникающие при написании многопоточных программ, невероятно сложны для отладки, так как во многом определяются динамикой работы программы на конкретной аппаратной платформе. Уверен, что большинство программистов сталкивались с ситуацией, когда программа, которая прекрасно работает на одном компьютере, на другом совершенно неожиданно начинает дедлочиться практически «на ровном месте».
Читать дальше →
Всего голосов 82: ↑73 и ↓9+64
Комментарии50

Жизненная позиция пользователей ВКонтакте. Бонус-трек. Корреляции

Время на прочтение2 мин
Количество просмотров46K
Почти сразу после того, как я опубликовал пост Жизненная позиция пользователей ВКонтакте в зависимости от пола и возраста, появилась идея проверить, как зависит тот или иной аспект жизненной позиции от других. Как упоминалось в предыдущем посте, для этого опять-таки не нужно было делать сложных расчетов, всего лишь обратиться к поиску по профилям ВКонтакте.

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

Вот как на жизненные ориентиры мужчин влияет пристрастие к спиртному:

Оправдывается очевидное предположение, что любители выпивки гораздо чаще трезвенников считают главным в жизни развлечения и отдых. Кроме того, положительно относящиеся к алкоголю мужчины больше сконцентрированы на красоте, искусстве, славе, карьере и деньгах, меньше — на саморазвитии, семье и детях.
Читать дальше →
Всего голосов 91: ↑74 и ↓17+57
Комментарии58

Простой способ обнаружения эмуляторов ключа Guardant

Время на прочтение7 мин
Количество просмотров71K
При работе с ключом защиты Guardant (не важно какой модели) разработчик использует соответствующие API, при этом от него скрыт сам механизм работы с устройством, не говоря уже о протоколе обмена. Он не имеет на руках валидного хэндла устройства, пользуясь только адресом шлюза (т.н. GuardantHandle) через который идет вся работа. В случае если в системе присутствует эмулятор ключа (особенно актуально для моделей до Guardant Stealth II включительно) используя данный шлюз разработчик не сможет определить, работает ли он с реальным физическим ключом, или его эмуляцией.

Задавшись в свое время вопросом: «как определить наличие физического ключа?», мне пришлось немного поштудировать великолепно поданный материал за авторством Павла Агурова в книге "Интерфейс USB. Практика использования и программирования". После чего потратить время на анализ вызовов API функций из трехмегабайтного объектника, линкуемого к приложению, в котором собственно и сокрыта вся «магия» работы с ключом.

В итоге появилось достаточно простое решение данной проблемы не требующее использования оригинальных Guardant API.
Единственный минус — все это жутко недокументированно и техническая поддержка компании Актив даже не будет рассматривать ваши вопросы, связанные с таким использованием ключей Guardant.
Ну и конечно, в какой-то момент весь данный код может попросту перестать работать из-за изменений в драйверах Guardant.
Но пока что, на 27 апреля 2013 года, весь данный материал актуален и его работоспособность проверена на драйверах от версии 5.31.78, до текущей актуальной 6.00.101.

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

Изучаем отладчик, часть вторая

Время на прочтение45 мин
Количество просмотров24K
В первой части статьи были рассмотрены некоторые нюансы работы с интегрированным отладчиком Delphi — не все конечно, но наиболее необходимые разработчику. Теперь задача выглядит несколько иначе: рассмотрим его работу изнутри на примере его исходного кода. Для того чтобы не сильно утомлять вас описанием API функций и не разжевывать все этапы отладки, описывать его работу я буду на примере класса TFWDebugerCore. Часть не особо важных моментов я опущу, при желании вы их сможете уточнить просмотрев код данного класса.

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

Если же вы ранее никогда не сталкивались с самостоятельной реализацией отладчика, но заинтересованы в ней, то как минимум вы должны начать с данной ссылки: Debugging and Error Handling
По ней вы сможете узнать об основных аспектах отладки, как-то структурной обработке исключений, работой с отладочной информацией, минидампами. Работой с образом исполняемого файла, заголовками, секциями, картой памяти процесса, что такое RVA и VA и прочее-прочее.
Но это только если захотите разобраться во всей этой кухне.

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

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

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

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

Изучаем отладчик, часть первая

Время на прочтение24 мин
Количество просмотров156K
Я думаю, вы знаете, что взлом программного обеспечения производится не какими-то мистическими «хакерами» – его осуществляют такие же программисты, как и большинство читающих данную статью. При этом они пользуются тем же инструментарием что и сами разработчики ПО. Конечно, с оговорками, поскольку по большей части инструментарий достаточно специфичен, но, так или иначе, при анализе ПО используется отладчик.

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

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

Объем статьи получился неожиданно большим, поэтому я разбил ее на три части:

  • В первой части будут рассмотрены возможности интегрированного в IDE Delphi отладчика, даны рекомендации по наиболее оптимальному его использованию и общие советы по конфигурации среды. Материал данного раздела предназначен как начинающим разработчикам, так и более подготовленным специалистам.
  • Во второй части статьи будет рассмотрена изнаночная сторона работы отладчика на примере его исходного кода, подробно рассмотрены механизмы, используемые им при отладке приложения, показаны варианты модификаций памяти приложения, производимые отладчиком во время работы.
  • В третьей части статьи будет рассмотрено практическое использование отладчика на примере обхода защиты приложения, использующего некоторый набор антиотладочных трюков.

Собственно, приступим.
Читать дальше →
Всего голосов 36: ↑27 и ↓9+18
Комментарии13

Изучаем отладчик, часть третья

Время на прочтение22 мин
Количество просмотров29K
Что такое отладчик, как им пользоваться и как он реализован, после прочтение первой и второй части статьи, вы знаете. В заключительной части статьи попробуем рассмотреть некоторые методы борьбы с отладчиком, на основе знаний о принципах его работы. Я не буду давать шаблонный набор антиотладочных приемов, благо при желании все это можно найти на просторах интернета, попробую это сделать немного другим способом, на основе некоего абстрактного приложения, у которого буду расширять код защиты от самой простейшей схемы до… пока не надоест :)

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

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

Вот что-то такое мы и рассмотрим, только в очень упрощенной форме.
Читать дальше →
Всего голосов 41: ↑35 и ↓6+29
Комментарии5

Рейтинг фантастических романов, или Я сделаю свой «IMDB для книг», с преферансом и библиотекаршами

Время на прочтение8 мин
Количество просмотров7.6K
Долго выбирал между «Алгоритмами», «Читальным залом» и «Я пиарюсь», в итоге остановился на Data Mining.

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

И вот, терзаясь муками выбора, я забил в поиск «IMDB for books» и… не нашел ничего пристойного. Весь интернет забит рекомендательными сервисами для книг, и все они выдают полную чушь. Вот, например, топ имхонета для раздела «Самая лучшая фантастика и фэнтези»:

1. Мастер и Маргарита. Михаил Булгаков, 1940 год
2. Цветы для Элджернона (рассказ). Дэниел Киз, 1959 год
3. Цветы для Элджернона. Дэниел Киз, 1966 год
4. Битва Королей. Джордж Мартин, 1998 год
5. Рыцарь Ордена: Клинки у трона. Сергей Садов, 2000 год
6. Голубятня в Орехове. Владислав Крапивин, 1983 год


Эээ… Это совсем не то, что я ожидал увидеть на первых местах в рейтинге фантастики. «Мы пойдём другим путём», — подумал я. Отказавшись от идеи найти нормальный читательский рейтинг, я просто пошёл в Вики, нашёл список лауреатов премий Хьюго и Небьюла и выбрал пару-тройку книг — как, собственно, я всегда раньше и делал.

«А не замутить ли мне свой рейтинг книг, взяв за основу престижные премии?» — внезапно подумал я. И замутил. Знакомьтесь: top-books.info

Путь к успеху
Всего голосов 97: ↑82 и ↓15+67
Комментарии130

«Релкомизация всей страны»

Время на прочтение18 мин
Количество просмотров15K
Подборка статей о пиратстве в 1990-е, отчего-то воспринятая Хабром в штыки, заканчивалась оптимистичными прогнозами лидеров IT-индустрии о том, что развитие сетей уже в скорейшем будущем позволит заменить большинство ПК простенькими «тонкими клиентами», и ресурсоёмкие приложения будут работать не на компьютере пользователя, а на центральных серверах. Прогресс пошёл не совсем в этом направлении — даже веб-приложения ныне требуют существенных ресурсов на стороне пользователя — но интересно взглянуть, что писали о прогрессе ПК всего за пару лет до той статьи о «замене персональных компьютеров сетевыми»:

(КомпьютерПресс, январь 1995)

Слухи о рождении домашнего компьютера немного преувеличены

Н.Иванов

В летнее время, под тенью акации,
Приятно мечтать о дислокации.

Фаддей Козьмич Прутков

В последнее время в российской прессе, не только компьютерной, но и общечеловеческой, все чаще можно встретить словосочетание «домашний компьютер». Шум, поднятый вокруг «компьютера для народа», несколько напоминает кампанию повальной информатизации и всеобщей компьютерной грамотности начала перестройки. Та кампания была вызвана невиданными успехами советских инженеров, которым удалось-таки скопировать Intel 8080 и освоить серийный выпуск клона (прошу не рассматривать это как упрек в адрес вышеупомянутых инженеров — все мы выпали из одного гнезда). Вы помните, что 3-4 года назад в каждом магазине культтоваров можно было по дешевке приобрести уродца, программируемого на Бейсике, со стримером «Электроника-302» и черно-белым монитором высокого разрешения, который к тому же можно было использовать в качестве телевизионного приемника. Правда, массовый покупатель не пошел на поводу у пророков компьютерной эры, отдав предпочтение колбасе, а профессионалы собирали из подручных средств компьютеры и помощнее (если им не удавалось утащить с работы буржуазную АТ-шку). В общем, первая волна одомашнивания «умных машин» разбилась о стену безразличия.

Нынешняя ситуация существенно отличается от тогдашней. Во-первых, в связи со значительным подорожанием колбасы платежеспособный спрос постепенно смещается в сторону наукоемких товаров. Во-вторых, промышленный и деловой рынок, кажется, насытился компьютерами, и предложение естественным образом ищет выход в другие сегменты рынка. В-третьих, новая волна инспирирована не успехами отечественной науки и движется не из Зеленограда и Подлипок, а откуда-то из-за океана. Журнал Fortune (25 июля 1994, с. 113) замечает, что в 1993 году «беспрецедентный рост продаж «домашним» пользователям застал промышленность врасплох». Постепенное возвращение России в лоно мировой экономики способствует тому, что российский рынок все быстрее откликается на изменения рынка западного. Таким образом, предпосылки для второй компьютерной революции, которая позволит каждой кухарке управлять компьютером, более существенны. Что же мы можем ожидать на наших прилавках, и как к этому относиться?
Читать дальше →
Всего голосов 28: ↑27 и ↓1+26
Комментарии14
1

Информация

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