Pull to refresh
107
0
Антон Бондарев @abondarev

User

Send message

Барьеры доступа к памяти в Linux

Reading time15 min
Views48K
Эта статья — частичный перевод исчерпывающего руководства Дэвида Хоуэлса (David Howells) и Пола Маккени (Paul E. McKenney) распространяемого в составе документации Linux (Documentation/memory-barriers.txt онлайн версия).

Must read для разработчиков ядра/драйверов и очень познавательно для прикладных программистов.
ASCII art и очень много букв
Total votes 114: ↑109 and ↓5+104
Comments33

Wi-Fi в любительском проекте? Нет ничего проще!

Reading time3 min
Views107K
Всем здравствуйте!
В этом посте я постараюсь убедить вас в том, что добавить поддержку Wi-FI к своему устройству на микроконтроллере можно абсолютно без проблем. И для этого не надо ни курочить свой любимый роутер и подпаиваться к выводам отладочного uart'а, ни ставить переходник usb-uart (что, конечно выход).
Я расскажу о двух модулях фирмы WizNet: WizFi220.

Вместо предисловия

Компания WizNet основана в 1998 в Корее и занимается производством сетевых решений. Спектр того, что компания производит, широк. Это и микроконтроллеры на ядре 8051 со встроенный PHY-контроллером, и отдельные SPI-управляемые контроллеры Ethernet, и модули Wi-FI, и макетки почти к каждой микросхеме.
Про первые два вида я мало чего знаю, поскольку с ними не работал. А про Wi-Fi довольно много.
Кому интересно — прошу под кат.
Читать дальше →
Total votes 51: ↑49 and ↓2+47
Comments31

Пишем эмулятор Gameboy, часть 1

Reading time21 min
Views54K
Здравствуйте!

Не так давно на Хабре появилась статья о создании эмулятора chip-8, благодаря которой удалось хотя бы поверхностно понять, как пишутся эмуляторы. После реализации своего эмулятора появилось желание пойти дальше. Выбор пал на оригинальный Gameboy. Как оказалось, выбор был идеальным для ситуации, когда хочется реализовать что-то более серьезное, а опыт разработки эмуляторов практически отсутствует.

С точки зрения эмуляции Gameboy относительно прост, но даже он требует изучения достаточно большого объема информации. По этой причине разработке эмулятора Gameboy будет посвящено несколько статей. Конечным итогом будет эмулятор с неплохой совместимостью, поддержкой практически всех функций оригинала, в том числе звука, который нередко отсутствует в других эмуляторах. В качестве бонуса наш эмулятор будет проходить практически все тестовые ROM’ы, но об этом позже.

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

В данной статье мы познакомимся с Gameboy и начнем с эмуляции его процессора и памяти.

Пишем эмулятор Gameboy, часть 1
Пишем эмулятор Gameboy, часть 2
Пишем эмулятор Gameboy, часть 3
Читать дальше →
Total votes 122: ↑118 and ↓4+114
Comments32

Управление памятью в реальном режиме Windows

Reading time6 min
Views40K
Недавно Реймонд Чен завершил серию постов, начатую ещё полтора года назад, и посвящённую управлению виртуальной памятью безо всякой поддержки со стороны процессора: Windows до версии 3.0 включительно поддерживала реальный режим 8086. В этом режиме трансляция адреса из «виртуального» (видимого программе) в физический (выдаваемый на системную шину) осуществляется бесхитростным сложением сегмента и смещения — никакой «проверки доступа», никаких «недопустимых адресов». Все адреса доступны всем. При этом в Windows могли одновременно работать несколько программ и не мешать друг другу; Windows могла перемещать их сегменты в памяти, выгружать неиспользуемые, и по мере необходимости подгружать назад, возможно — по другим адресам.

(Интересно, всегдашние холиворщики «это была графическая оболочка, а не операционная система» в курсе об этих её необычайных способностях?)
И как же она ухитрялась?
Total votes 97: ↑91 and ↓6+85
Comments33

Смс оповещение для студентов со странички вконтакте

Reading time7 min
Views34K
Здравствуйте уважаемые хабровчане!
Хотелось бы рассказать от том как я делал смс оповещение для своего факультета.
Я учусь на первом курсе ФСПО ИТМО. У нас на факультете есть так называемая диспетчерская служба которая занимается оповещением студентов об изменении в расписании, в интернете это осуществляется через страничку в контакте и твиттер.
Однажды произошёл небольшой скандал по поводу того что пол-группы не явилось на занятия из-за того, что не успели отследить изменение в расписании. В тот день у меня появилась идея создать смс оповещение с той самой Vk странички.
Да, я знаю, что для это есть специализированные сервисы, но это слишком просто…

Читать дальше →
Total votes 24: ↑17 and ↓7+10
Comments21

Система уведомлений о событиях на сайте (на примере аудиоплеера ВКонтакте)

Reading time2 min
Views37K
Приветствую.

Думаю, многие, кто имеет аккаунт ВКонтакте и слушает там музыку, замечали, что если на одной вкладке включить трек, а затем уже на другой включить второй, первый трек уйдет в паузу. Примерно то же самое происходит с различными уведомлениями (новое сообщение, ответ на комментарий/запись и т.д.) — отображается оно только в активной вкладке. Кому интересно как это работет и каким образом сделать подобное у себя на сайте, милости просим за хабракат.
Читать дальше →
Total votes 94: ↑90 and ↓4+86
Comments38

Делаем учебник или документацию за час на Сфинксе

Reading time4 min
Views55K
Я веду курс веб-программирования. Когда учишь людей, поговорка «сапожник без сапог» к тебе относиться не должна: ты должен делать всё без видимых усилий и быстро. Учебник должен делаться легко и просто, и выглядеть хорошо.

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

Пустая страница новой документации
Хочу себе такую же!
Total votes 45: ↑42 and ↓3+39
Comments6

OAuth на практике. Аутентификация и авторизация пользователей сайта через популярные социалки

Reading time14 min
Views345K
Думаю, не мне одному чрезвычайно надоели ресурсы, требующие регистрации по каждому поводу и без. С обязательной капчей, которая правильно введется только с пятого раза, с подтверждением по е-мейлу, которое обязательно свалится в спам и то — только через сутки. Придумывать каждый раз новую пару логин-пароль — забудется, вводить одно и то же на всех сайтах — небезопасно. Местами прокатывают пары вида «qwerty:qwerty» или «login:password», но, увы, далеко не везде. Надоело. Не счесть, сколько раз я, увидев надпись «только зарегистрированный пользователь может ****», просто кривился и закрывал вкладку, чтобы больше ни разу на этот сайт не заходить. Неужели администраторы ресурсов сами этого не понимают?
Читать дальше →
Total votes 126: ↑116 and ↓10+106
Comments180

HybridAuth — интеграция сайта с социальными сетями

Reading time7 min
Views38K

Введение


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

  1. Авторизация пользователей в случае закрытия Loginza или отказа от нее — в этом случае мы потеряем пользователей, в привязанных профилях которых не указан email;
  2. Дополнительная информация, например, ВКонтакте умеет отдавать фото пользователя в нескольких видах, в том числе квадратный аватар. С Логинзой получить эти данные не представляется возможным, сервис сам решает какие данные запрашивать и какие отдавать;
  3. С момента продажи Яндексу Логинза начала умирать: на запросы пользователей никто не отвечает, сервис не развивается, а находится в том виде, в котором был 1-2 года назад.

Встал вопрос замены и использовать альтернативные сервисы желания уже не возникало — никто не представлял возможности «общаться» с соц. сетью напрямую, а расширенные поля профиля обычно включались в платные услуги. Хотелось автономного решения с возможностью гибкой настройки запрашиваемых полей и в итоге я остановился на php библиотеке HybridAuth.
Подробнее о HybridAuth
Total votes 54: ↑52 and ↓2+50
Comments28

Графический стек Linux

Reading time19 min
Views97K
(оригинал — Jasper St. Pierre, разработчик GNOME Shell, взято отсюда)

Это обзорная статья о составных частях графического стека Linux и том, как они уживаются вместе. Изначально я написал её для себя после разговоров об этом стеке с Оуэном Тейлором, Рэем Строудом и Эдэмом Джексоном (Owen Taylor — мэйнтейнер Gnome Shell; Ray Strode — мэйнтейнер большого количества десктопных пакетов сообщества RedHat; Adam Jackson — разработчик графического стека Gnome Shell и интеграции с XOrg; прим. переводчика)

Я постоянно дёргал их, снова и снова расспрашивал о всяких мелочах, а потом эти мелочи благополучно забывал. В конце концов, я задал им вопрос — а нет ли какого-нибудь обзорного документа, уткнувшись в который я бы избавил ребят от своего назойливого внимания? Не получив утвердительного ответа я решил написать эту статью, которая по завершению была вычитана Эдэмом Джексоном и Дэвидом Эйрли. Они оба работают над этим стеком.
Читать дальше →
Total votes 196: ↑191 and ↓5+186
Comments49

Экспериментальное определение характеристик кэш-памяти

Reading time8 min
Views15K
За счет чего же мы наблюдаем постоянный рост производительности однопоточных программ? В данный момент мы находимся на той ступени развития микропроцессорных технологий, когда прирост скорости работы однопоточных приложений зависит только от памяти. Количество ядер растет, но частота зафиксировалась в пределах 4 ГГц и не дает прироста производительности.

Скорость и частота работы памяти — это то основное за счет чего мы получаем «свой кусок бесплатного торта» (ссылка). Именно поэтому важно использовать память, настолько эффективно, насколько мы можем это делать, а тем более такую быструю как кэш. Для оптимизации программы под конкретный компьютер, полезно знать характеристики кэш-памяти процессора: количество уровней, размер, длину строки. Особенно это важно в высокопроизводительном коде — ядра систем, математические библиотеки.

Как же определить характеристики кэша автоматический? (естественно cpuinfo распарсить не считается, хотя-бы потому-что в конечном итоге мы бы хотели получить алгоритм, который можно без труда реализовать в других ОС. Удобно, не правда ли? ) Именно этим мы сейчас и займемся.

Немного теории


В данный момент существуют и широко используются три разновидности кэш-памяти: кэш с прямым отображением, ассоциативный кэш и множественно-ассоциативный кэш.
Читать дальше →
Total votes 24: ↑23 and ↓1+22
Comments17

Управление памятью в C++

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

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

Читать дальше →
Total votes 76: ↑65 and ↓11+54
Comments53

Познавательно о PGM протоколе

Reading time6 min
Views13K
image
В данной статье мне хотелось бы рассказать о самом популярном протоколе, обеспечивающем надежную доставку сообщений мультикаста. Этот протокол называется PGM (pragmatic general multicast). Другие надежные протоколы поверх мультикаста (IP Multicast) такие как LBT-RM (от 29west) и SmartSockets (от TIBCO Software) являются, так или иначе, модификацией или реализацией PGM.

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

10 мифов современного образования

Reading time4 min
Views267K

Миф 1. Университет не должен давать профессию — университет должен учить студента учиться.


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

Недаром, когда идет набор абитуриентов, все вузы кричат: «наши выпускники возглавляют банки, заводы и работают на самых престижных должностях», «мы вас научим тому-то и тому-то, да вообще, всему что только может понадобится».
image
И вот на пятом курсе подходит очередной выпускник к лектору и говорит:
— Профессор, я иду на красный диплом, но не могу найти работу.
— Задача университета — научить человека учится.
— ??
Читать дальше →
Total votes 260: ↑154 and ↓106+48
Comments330

Portable Components, кроссплатформенная библиотека для C++

Reading time13 min
Views27K
«Система должна быть спроектирована так,
чтобы оставаться как можно проще
после серии внесенных в нее изменений»

Бьярне Строуструп – программист, автор языка C++

Преамбула


В данной статье мне бы хотелось бы рассказать о довольно популярной, но так редко освещаемой на Хабре библиотеке Portable Components (сокр. POCO). Она будет полезна как разработчикам бизнес-логики программного продукта, так и в решении большинства прикладных задач. При всем изобилии кроссплатформенных библиотек для C++ всё больше людей сталкиваются с POCO лицом к лицу и не знают с чего начать. В данной статье я постараюсь описать технологии, заложенные в библиотеке и дать простейшие примеры решения некоторых задач. Также хотелось бы отметить, что за плечами библиотеки множество успешных как Open Source, так и коммерческих проектов.
Читать дальше →
Total votes 80: ↑80 and ↓0+80
Comments40

Контракты vs Юнит тесты

Reading time5 min
Views7.7K
DISCLAIMER: Эта заметка подразумевает наличие у читателя базовых знаний о юнит тестах, в чем автор этих строк не сомневается, а также базовых знаний о проектирование по контракту, которые можно пополнить начиная отсюда.

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

Итак, давайте вкратце рассмотрим, в каком именно месте находится пересечение контрактов и юнит тестов, и постараемся ответить на вопрос: являются ли постусловия избыточными при наличии юнит тестов?

Читать дальше →
Total votes 24: ↑22 and ↓2+20
Comments13

Мы не написали книгу! Практический опыт создания учебного пособия по программированию

Reading time3 min
Views3.3K
Идею написать эту заметку подарила статья «Мы написали книгу! Практический опыт издания книги о программировании». Как и тот автор, я начала писать в начале года и закончила к середине апреля, работала примерно в том же объеме. Но произведение немного иного толка — учебное пособие по языку программирования C.

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

Потребность в таком пособии назрела к началу декабря прошедшего учебного года. Декабрь ушел на просмотр существующей литературы и пособий по языку C. Не смотря на то, что среди просмотренного были достойные произведения, ни одно из них не подходило. Например, известное издание K&R, которое часто рекомендуют, не подходит для начинающих. Другие издания либо были объемны, либо не давали объективных знаний. Мне же нужно было пособие, рассчитанное не более чем на 30 пар (60 академ.часов).
Читать дальше →
Total votes 46: ↑39 and ↓7+32
Comments27

Первая опытно-промышленная партия отечественных мультиклеточных процессоров MCp

Reading time2 min
Views7.7K
Я понимаю, конечно, что Сколково, гос-корпорации, непонятное название, много псевдонаучного PR по поводу этих самых клеток и прочие негативные коннотации имеют место быть, но партия процессоров изготовлена. Их даже можно потрогать руками и посетовать на кривые ножки :) в новости на картинке не фотошоп — на сайте разработчиков и в прокремлёвской газете (не, ну мне самому стыдно, однако… против факта не попрёшь).

Погордиться отечественной электроникой
Total votes 124: ↑118 and ↓6+112
Comments115

Распознавание речи на STM32F4-Discovery

Reading time4 min
Views115K
image
В этой статье я хочу рассказать о том, как можно распознавать речь на микроконтроллере, используя отладочную плату STM32F4-Discovery. Поскольку распознавание речи — достаточно сложная задача даже для компьютера, то в данном случае оно проводится при помощи сервиса Google. Распознавание речи таким способом может пригодится в разных задачах, например в одном из устройств «умного дома».
Читать дальше →
Total votes 39: ↑33 and ↓6+27
Comments88
12 ...
9

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity