QR код

Наверняка все видали продвинутые штрих-коды на сотовых телефонах:

nokia-n93-no-battery

Разработкой подобных кодов занимались в конце 20 века и канадцы, и японцы, и американцы, и немцы… В результате, сейчас существуют 3 основных проекта – QR код, Semacode и Data Matrix (из более чем тридцати подобных), цель которых едина – запихать максимум текстовой информации в минимум места на бумаге (или на любом другом материале, на котором можно печатать), сохранив при этом легкость и качество ее считывания.

image

Причем если Semacode и масса других затухли, или применяются лишь в каких-то специфических областях, а Data Matrix используется в основном для записи серийных номеров и другой служебной информации на производстве, печатается на конвертах для машин по автоматической сортировке почты и т.п., то QR код обрел бешеную популярность в стране своего рождения – Японии, а также набрал внушительный круг пользователей за ее пределами. Вот о нем я и хотел сегодня рассказать, потому что вещица на самом деле очень забавная.

Продолжить чтение

Истинная цена SMS

imageВсем нам хорошо известны SMS – служба коротких сообщений (англ. Short Message Service). Давайте взглянем на структуру SMS. Текст SMS может состоять из алфавитно-цифровых символов. В стандарте GSM максимальный объем передаваемой информации равен 140 байтам (или 1120 битам). При этом для отправки текста на английском языке используется 7-битная кодировка позволяющая отправить сообщение длиной до 160 символов. При отправке сообщений на немецком или французском языках используется 8-битная кодировка, и длина сообщения падает до 140 символов. Для поддержки других национальных алфавитов (китайского, арабского, русского и др.) используется 16-битная кодировка UTF-16. Таким образом, SMS, написанное кириллицей, не может превышать 70 знаков.

В целом, структура данных в SMS сообщении выглядит следующим образом:

clip_image001

Другими словами одно SMS сообщение весит примерно 1/6 килобайта, или примерно 1/6500 мегабайта. Это совершенно ничтожная цифра в масштабе сегодняшнего траффика. А теперь сравните цену, которую вы отваливаете своему ОПСОСу (ОПератору СОтовой Связи) за одно несчастное SMS сообщение, и цену за 1 мегабайт траффика в сетях 3G интернета, или даже GPRS. В моем случае 1 мегабайт отправленный SMSками оказался всего навсего в 8500 раз дороже отправки того-же мегабайта через самый базовый (т.е. самый дорогой) тарифный план на 3G интернет. Такая адская цена неоправдана, даже если бы всю отправленную информацию распечатали на бумаге высшего качества, сшили в симпатичные брошюрки, тщательно упаковали и прислали домой с посыльным.

Я уже не сравниваю цены отправки некоторого объема данных по SMS с более продвинутыми тарифными планами для 3G интернета – там разница достигает таких астрономических величин, что становится совсем грустно.

В общем – обманывают нас по черному.

Цифровая обработка изображений 20+ лет назад

В сеть попало любопытное видео, по слухам 1987 года:

По слухам, программа, работу которой можно наблюдать на видео, называется PERICOLOR-1000 и разработана она была во Франции, куплена СССР и русифицирована. Компьютер – Apple III.
Не знаю насколько все это правда – видео от этого не становится менее интересным. Особенно в совокупности с фактом, что работа над всем известным Photoshop‘ом началась именно в 1987 году, а первая его версия, исключительно под Макинтош, вышла в 1990 году.

Комплект SMD резисторов и конденсаторов для любителей

Затарился на eBay комплектом SMD резисторов и конденсаторов для любителей. В комплект входят 50 самых распространенных номиналов резисторов и 50 номиналов конденсаторов (по 40 штук на номинал). Итого 4000 деталей. Все стандарта 0805 (размеры 0.08" × 0.05" (2.0мм × 1.25мм). Максимальная рассеиваемая мощность для резисторов 1/10 или 1/8 Ватта).
И стоило все это удовольствие всего 10 баксов включая доставку. Подобные лоты на eBay называются SMD Resistor Capacitor Kit. Фотки:

TORRENT & eMule – добро или зло?

imageМногие пользователи p2p-клиентов замечали, что при их работе, пользоваться интернетом практически невозможно – соединение дико тормозит. Попробуем разобраться почему.

Прежде всего нужно разобраться в базовых понятиях протоколов связи TCP и UDP. В обоих протоколах данные перед отправкой разбиваются на пакеты данных (от 64 до 1500 байт каждый, если мне изменяет склероз) – это позволяет не пересылать весь объем информации если в процессе передачи произошел сбой (пересылаются только битые пакеты), а также реализовать мультизадачность, т.е. разделять канал связи с другими приложениями, отправляющими данные.

Основной идеей протокола TCP является гарантированная доставка всех пакетов и их сборка в единый кусок информации. Цель достигается следующим образом – перед отправкой каждому пакету данных присваивается уникальный порядковый номер, называемый sequence number. По этим номерам, в конечной точке маршрута, пакеты собираются в единое целое в правильном порядке, даже если часть пакетов задержится в пути и прибудет позже остальных. Это может случиться потому, что интернет штука динамичная, и попасть в точку назначения пакеты могут разными маршрутами – это как в городе, если отправить 100 таксистов из точки А в точку Б, вовсе не факт что они все паровозиком попрут одним путем, равно как и то, что приедут они в том порядке, в котором выехали.

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

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

TCP_2В противоположность TCP, основным приоритетом UDP является скорость. В пакетах UDP нет порядковых номеров и уведомлений – информация просто делится на пакеты и отправляется. Получатель на лету собирает пакеты в единое целое, в том порядке, в котором они к нему приходят (даже если часть пакетов потерялась в пути, а другая часть пришла с опозданием). Такая тактика оказывается очень полезной например в онлайн играх, онлайн видео и аудио и IP-телефонии. Например в том-же SKYPE при потере значительной части пакетов, речь все еще останется разборчивой. А это гораздо лучше, чем прерывистая речь, которая получилась бы при использовании TCP протокола и проблемах со связью. Опять-же, нельзя забывать, что как правило, связь стабильна и большинство пакетов доходит вовремя, в целости и сохранности. Кроме того в сетевом оборудовании, приоритетность UDP пакетов в общем траффике по умолчанию выше, чем у TCP пакетов.

Продолжить чтение

Индикатор расхода топлива для инжекторного двигателя – часть 0b01

imageНа многих современных авто бортовой компьютер выводит на дисплей информацию о потреблении топлива в текущий момент времени. Причем информация эта выводится в двух видах. Иногда в литрах на 100 км., но чаще в литрах в час. Причем если первый показатель довольно понятен и исчерпывающ, то второй сам по себе ничего не говорит – приходится еще и глядеть на спидометр, и потом напрягать мозги, вычисляя сколько же литров живой воды схавает двигатель за 100 км. пробега в данном режиме. Короче бред полный, на мой взгляд.

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

И тогда я понял, что мне нужен простой “прогресс бар” (вообще это это называется “бар граф” от англ. bargraph, но прогресс бар как то понятнее звучит Smile), который будет показывать расход топлива в единицу времени. Вот такой вот:

image

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

Продолжить чтение

Установка зажигания (УОЗ) на примере Nissan Almera N15 (GA16DE)

image Случилось так, что мой Nissan несмотря на то, что неплохо тянул, жрал бензина немеряно. На трассе получалось около 10 литров на 100 км. О городе я вообще молчу. Я разумеется рылся на форумах, но ничего конкретного никто порекомендовать не мог. Люди писали проверить смесь, проверить то, проверить сё. Я проверял – все было ок. И вот наконец пришла очередь проверить угол опережения зажигания, и выяснилось, что угол был конкретно сбит, и зажигание стояло очень позднее. Минутная регулировка (о которой чуть ниже) больше чем в полтора раза уменьшила расход бензина, а мотор будто подменили – тянуть стал значительно лучше.

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

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

Разница в градусах, между положением коленвала при котором поршень находится в верхней точке и положением при котором происходит зажигание топливной смеси называют углом опережения зажигания. Оптимальное значение угла опережения зажигания зависит от массы факторов – скорость работы двигателя, составом топливной смеси и т.п. В двигателе есть несколько систем, оптимизирующих угол автоматически в процессе работы, но начальное значение должно быть выставлено вручную. Именно эту процедуру я и разберу сейчас, на примере двигателя Nissan GA16DE.

Продолжить чтение