Pull to refresh
0
0
Константин @DpyuD

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

Send message

Пишем свой первый Windows-драйвер

Reading time5 min
Views135K
Итак, после моей предыдущей статьи я понял что тема про программирование драйверов Windows интересна хабровчанам, поэтому продолжу. В этой статье я решил разобрать простую программу-драйвер, которая делает только то, что пишет отладочное сообщение «Hello world!» при старте драйвера и «Goodbye!» при завершении, а также опишу те средства разработки, которые нам понадобятся для того, чтобы собрать и запустить драйвер.

Читать дальше
Total votes 99: ↑95 and ↓4+91
Comments36

Что такое нити (threads)?

Reading time3 min
Views71K
Навеяно предыдущей статьей на эту тему.
Для того чтобы, структурировать свое понимание – что представляют собой threads (это слово переводят на русский язык как «нити» почти везде, кроме книг по Win32 API, где его переводят как «потоки») и чем они отличаются от процессов, можно воспользоваться следующими двумя определениями:
  • Thread – это виртуальный процессор, имеющий свой собственный набор регистров, аналогичных регистрам настоящего центрального процессора. Один из наиважнейших регистров у виртуального процессора, как и у реального – это индивидуальный указатель на текущую инструкцию (например, индивидуальный регистр EIP на процессорах семейства x86),
  • Процесс – это в первую очередь адресное пространство. В современной архитектуре создаваемое ядром ОС посредством манипуляции страничными таблицами. И уже во вторую очередь на процесс следует смотреть как на точку привязки «ресурсов» в ОC. Если мы разбираем такой аспект, как многозадачность для того, чтобы понять суть threads, то нам не нужно в этот момент думать о «ресурсах» ОС типа файлов и к чему они привязаны.
Очень важно понять, что thread – это концептуально именно виртуальный процессор и когда мы пишем реализацию threads в ядре ОС или в user-level библиотеке, то мы решаем именно задачу «размножения» центрального процессора во многих виртуальных экземплярах, которые логически или даже физически (на SMP, SMT и multi-core CPU платформах) работают параллельно друг с другом.
Читать дальше →
Total votes 53: ↑41 and ↓12+29
Comments45

Стэнфорд открыл учебные материалы по программированию и ИИ

Reading time1 min
Views6.1K
Стэнфордский университет выложил в открытый доступ под лицензией Creative Commons содержание десяти учебных курсов по программирование, искусственному интеллекту, линейным системам и оптимизации. Воспользоваться этими уникальными материалами могут преподаватели и студенты со всего мира.

Каждый курс содержит видеозаписи лекций, полные тексты и тезисы, а также практические задания и экзаменационные билеты. Материалы практически полностью совпадают с той программой, по которой учатся студенты-очники в Стэнфорде. Чтобы скачать материалы, не требуется никакой регистрации или специального запроса. Они просто выложены в открытый доступ в ZIP-архивах примерно по 300 МБ, а видеоролики ещё продублированы на YouTube.

Вот список открытых курсов:
Total votes 96: ↑95 and ↓1+94
Comments42

Программирование в ring0 для Windows: вводная статья

Reading time3 min
Views32K

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

Читать дальше →
Total votes 120: ↑112 and ↓8+104
Comments32

Сделаем фотомодель по-быстрому!

Reading time8 min
Views5.7K
Не знаю о чем Вы там подумали из названия, но знайте — я этого в виду не имел! :)
Итак, продолжим становиться «Колумбами и открывать то, что до нас знали миллионы людей», кто вспомнит откуда эта почти-цитата (подсказка: про Интернет) тому 4 балла к гик-карме. Итак…

Итак, в свободное время, когда я не создаю безумные проекты, не учу людей зарабатывать на стартапах, в это время я изучаю всяческие гик-технологии, в т.ч. одна из них прямо-таки у меня стала навязчивой идеей. А именно — взять свой городок в пригороде большого города и превратить его в 3d-уровень для какой-нибудь игры (в FarCry/Crysis я продвинулся в этом больше всего), при том с фотограмметрической точностью (погрешности в метр или меньше от реального расположения домов).

Для того, чтобы это сделать нам понадобится:
  1. 3d-модели;
  2. 3d-движок;
  3. наука со страшным названием фотограмметрия;
  4. даже математика — а то, когда читаешь про Spherical harmonics — радуешься, что приматом был некоторое время; грустишь что все-равно не понимаешь о чем там...
  5. тонна терпения (впрочем, я не был бы мировым лентяем, если бы это и правда было так);

Начнем с 3D моделей

Читать дальше →
Total votes 139: ↑119 and ↓20+99
Comments76

Сколько процентов в миллилитре

Reading time1 min
Views4K
Многие из нас читали или слышали, что женское восприятие отличается от мужского. Некоторое из нас знают, как это отличие перевести в детали интерфейса пользователя или пользовательницы, менее тривиальное, чем розовый фон и завитушки для девочек. А ещё некоторые невольно получили наглядное доказательства того, что этот постулат маркетологам транснациональных корпораций хорошо известен и ими практически эксплуатируется:



Слева продукт для женщин, справа такой же для мужчин. Разница в запахе и цвете упаковки очевидна. А вот разница в подаче бонуса далеко не столь очевидна. На банках при этом имеются надписи мелким шрифтом:
  • на первой: «225мл + 25мл бесплатно»
  • на второй: «200мл + 50мл бесплатно»
хотя поставив тюбики рядом очевидно, что сделаны они на одной линии и из соседних чанов заливались, так сказать, поэтому компонента себестоимости в цене одинаковая, по крайней мере, минимальная, и всё остальное является маркетоидным приёмом. Разработчикам интерфейсов и прочего такого на заметку.
Total votes 143: ↑119 and ↓24+95
Comments128

Про брейкпойнты

Reading time4 min
Views18K
Думаю не ошибусь, если напишу, что каждый программист когда-либо пользовался отладчиком, отлаживал программу пошагово, устанавливал брейкпойнты и т.п. При этом некоторые программисты не любят отлаживать. Другие — обожают. А большинство просто использует отладчик не задумываясь о любви и ненависти, ведь это просто еще один удобный инструмент для работы.
Для многих программистов отладчики — это черный ящик. Они умеют с ним обращаться, но не знают, как он работает. Я не говорю, что это плохо — в подавляющем большинстве случаев можно легко отлаживать программу без знания устройства отладчика.
А для тех, кто хочет заглянуть внутрь черного ящика, я написал эту небольшую статью.
Тут я расскажу про одну из самых загадочных (по крайней мере для меня) возможностей отладчиков — про работу с брейкпойнтами. Я постараюсь рассказать это максимально просто и без лишних деталей. Однако я пишу эту статью для тех читателей, который уже знают что такое брейкпойнты и умеют их использовать.

Вы когда-нибудь задумывались, что происходит, когда вы нажимаете «Вставить брейкпойнт»? Или о том, как отладчик может добавлять брейкпойнты в код на лету и удалять их? О том, как работают брейкпойнты с условиями? О том, тормозят ли множественные установленные брейкпойнты выполнение программы?
Читать дальше...
Total votes 110: ↑101 and ↓9+92
Comments69

Правила личной эффективности от ЭД

Reading time21 min
Views66K
Заранее предупреждаю и извиняюсь, но оно того стоит: букаф многа.

Введение

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

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

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

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

Читать дальше →
Total votes 197: ↑155 and ↓42+113
Comments202

Интерфейсы vs. классы

Reading time4 min
Views286K
Обсуждая с различными людьми — в большинстве своём опытными разработчиками — классический труд «Приёмы объектно-ориентированного проектирования. Паттерны проектирования» Гаммы, Хелма и др., я с изумлением встретил полное непонимание одного из базовых подходов ООП — различия классов и интерфейсов.

Читать дальше →
Total votes 4: ↑4 and ↓0+4
Comments161

Intel® 64 and IA-32 Architectures Software Developer's Manual

Reading time1 min
Views5.9K
На этой странице можно заказывать мануалы по программированию на асме для intel-процессоров.При чем бесплатно.

Кликаем "Order a printed copy" около того тома который хотите заказать(советую для начала первый).Далее на страничке всё указано, но лишний раз всёже поясню:

Отправляем e-mail на указанный адресс: intelsupport@hibbertgroup.com
Следующего содержания:
SKU # — номер книжки — на странице, указанной в начале они есть
Company Name — Тут без разницы, можете пропустить
Your Name (first, last) — ну, Имя Фамилия
Full mailing address — Не забудьте индекс!
Daytime Phone Number in case of questions — здесь напишите свой email, никто вам звонить не собирается.


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


tnx4 GreatGreat
Total votes 28: ↑27 and ↓1+26
Comments29

Io Language: Синтаксис

Reading time4 min
Views3.7K

В продолжение серии статей про Io, хотелось бы отдельно остановиться на синтаксисе языка.
В двух словах синтаксис Io можно описать так: простой, но странный. Многих удивит такой подход, но, спешу заверить, как и в Lisp, синтаксис неудобен только при взгляде со стороны. С эстетической точки зрения можно отдельно выделить тот факт, что многие прогаммы на Io внешне кажутся излишне разреженными, на экране остается много «лишнего», незаполненного полезным кодом места, это ощущение меня не покидает довольно давно, я пока не придумал, как полностью избавиться от этого вывиха мозга, я просто придумал для себя некоторые правила оформления кода, при соблюдении которых эффект значительно сморщивается:
  • Длина строки не должна превышать 80 символов (Привет, text mode!)
  • Между клонированием объекта и описанием тела нового должна быть пустая строка
  • Методы и свойства группируются
  • Без лишней необходимости скобки на новую строку не переносятся


Ну что, поехали. Вынос мозга №2.
Читать дальше →
Total votes 50: ↑45 and ↓5+40
Comments17

Io programming language

Reading time3 min
Views9.2K
По факту защиты мной диплома образовалось некоторое свободное время и я таки решил собраться и написать про эту чудесную штучку.
Мы в последнее время видим всплеск интереса ко всяким языкам очень высокого уровня, с анонимными функциями, каррингом, мапом/фолдом, метапрограммированием и прочим блэкджэком. Слава богу, я считаю.
Задачи усложняются и если люди применяют относительно низкоуровневые средства разработки зачастую наступает ситуация, когда набор абстракций оказывается мал в рамках решаемой задачи, примерно так появляется «спагетти» и велосипеды. Хорошего мало. Хотя умалять роль низкоуровневого программирования не хочется совершенно, по понятным причинам.

Совсем недавно, в 2002 году, бравый американец Стив Декорте понял, что ему как-то все вокруг не нравится. Ну то есть нравится, но как-то по частям. Нравится Smalltalk своей Ъ-ООП природой, нравится Lisp своей системой метапрограммирования и общей мегаизвратностью, нравится Self своими прототипами, нравится Lua, потому что маленькая и клево встраивается куда угодно. А вот что бы все и сразу — что-то не то. Погоревал бравый американец, да и наколбасил свой собственный язык программирования — Io.

Io


Io это маленький, полностью объектно-ориентированный язык программирования с динамической типизацией и развитой системой метапрограммирования, анонимными функциями и вытекающими отсюда плюшками. Кроме того, Io невероятно прост, как в синтаксисе, так и внутри. Существуют всего две сущности: объекты и сообщения. На этом базисе построено все остальное. Вообще весь язык следует дзенскому духу минимализма и простоты.
В Io нет понятия класс, только объект. Объект может быть склонирован и изменен, таким образом мы получаем другой объект (Это и есть прототипы). Все типы данных, значения и прочая — объекты.

Ну что, поехали.
Читать дальше →
Total votes 109: ↑109 and ↓0+109
Comments136

WALL-E из бумаги своими руками

Reading time1 min
Views7.6K
Думаю, многим понравился робот WALL-E, который только что вышел на экраны.
Поэтому предлагаю на выходных сделать его модель из бумаги, которую можно скачать отсюда(PDF, 716KB).

UPD: Ещё две версии модели!
Читать дальше →
Total votes 72: ↑64 and ↓8+56
Comments72
12 ...
16

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Date of birth
Registered
Activity