Что такое маркерная доска и с чем ее есть, наверное, в курсе уже все. И этот пост — о варианте самодельной доски. Сделать такую штуку в нашем офисе меня сподвиг офис Яндекса, с их стенами, обклеенными пленкой, по которой можно писать маркером. Не прошло и месяца, как я решил
Александр Тарасов @Could
Разработка програмного обеспечения
Twitter бот на C#
3 мин
8.3KЗдравствуйте, уважаемые пользователи Хабрахабра.
В этой статье я хочу рассказать вам об очень простом и полезном боте для Twitter, который поможет контролировать состояние Windows-сервера (Занятое место на дисках, процент загрузки CPU, RAM).
Предисловие
Я работаю системным администратором на одном консервном заводе. Так как фирма не профильная, приходится быть администратором и программистом в одном лице.
Причина создания этого бота — быстро заканчивающееся место на жестком диске сервера из-за ежедневных резервных копий баз 1С.
Я долго размышлял о возможных вариантах подобного контроля и пришёл к выводу, что Твиттер самое удобное решение для этого. Итак, от слова к делу.
+25
Как я перешел со Smarty на Twig
5 мин
25KРаньше я был ярым поклонником Smarty. У Smarty достаточно много достоинств, он распространен, с ним просто, он привычен и так далее. Но так вышло, что для одного из проектов Smarty оказался слишком уж тяжелым и слегка тормозным. Я не говорю, что Smarty плох или что он негодный, нет. Просто в некоторых условиях его производительность оказалась недостаточной, и надо было искать альтернативу. Альтернатива нашлась и я очень рад, что мне выпала возможность работать с Twig.
+39
Штриховое кодирование: программная реализация на С#
3 мин
20KПриветствую! Речь пойдет о создании программы, которая сможет кодировать информацию в штрих код. Рассмотрим мы два варианта: EAN13 и Code 128.
Для начала разберемся что же предоставляет собой штрих код, и начнем с формата EAN 13. Внешне штрих код состоит из черных и белых полос. Каждая из полос согласно стандарту имеет ширину 0,33мм. А теперь посмотрим немного глубже. Согласно стандарту, информация в штрих коде алгоритмом конвертируется в последовательность нулей и единиц. Черная полоса соответствует «1» а белая соответственно «0». Таким образом мы получаем штрих код. То, что описано выше, справедливо для обоих форматов, а теперь перейдем к специфике форматов. EAN 13 код фактически может иметь 12 символов информации (обычно она разделяется на код страны, код завода, и.т.д., но никто вам не мешает создать штрих код с любыми цифрами). 13 цифра в штрих коде ( а он EAN 13 имеет их именно 13) является контрольной суммой. Она используется для проверки правильности декодирования, а также в зависимости то нее выбирается соответствующая таблица кодирования. Вот и все по формату EAN 13. Детальная информация об алгоритме кодирования и о расчете контрольной цифры есть тут:
Итак, что нам нужно сделать для программной генерации штрих кода (причем обоих форматов):
Создавая программу, я сделал так:
Создал форму, на которой есть поля для выбора формата, ввода кода, регулятор ширины штриха ну и кнопка генерации кода и сохранение изображения в буфер обмена. Получилось так:
Проверял я с помощью Abbyy FineReader 10 Professional:
Каждый из форматов штрих кода я оформил в виде отдельного класа, который из кода образует двоичную последовательность. Кстати, формат EAN 13 мне показался немного тяжелее в реализации в силу того, что там в зависимости от кода меняется таблица. в результате чего сам код рисовался так:
Для начала разберемся что же предоставляет собой штрих код, и начнем с формата EAN 13. Внешне штрих код состоит из черных и белых полос. Каждая из полос согласно стандарту имеет ширину 0,33мм. А теперь посмотрим немного глубже. Согласно стандарту, информация в штрих коде алгоритмом конвертируется в последовательность нулей и единиц. Черная полоса соответствует «1» а белая соответственно «0». Таким образом мы получаем штрих код. То, что описано выше, справедливо для обоих форматов, а теперь перейдем к специфике форматов. EAN 13 код фактически может иметь 12 символов информации (обычно она разделяется на код страны, код завода, и.т.д., но никто вам не мешает создать штрих код с любыми цифрами). 13 цифра в штрих коде ( а он EAN 13 имеет их именно 13) является контрольной суммой. Она используется для проверки правильности декодирования, а также в зависимости то нее выбирается соответствующая таблица кодирования. Вот и все по формату EAN 13. Детальная информация об алгоритме кодирования и о расчете контрольной цифры есть тут:
Итак, что нам нужно сделать для программной генерации штрих кода (причем обоих форматов):
- Настроить графический интерфейс так, чтоб 1 юниту соответствовало 0.33 мм
- Конвертировать код в двоичную последовательность (из «0» и «1»)
- Отобразить последовательность таким образом что каждая единица- прямоугольник с шириной 0,33 мм. Замечу, что можно изменять величину штриха, но по стандарту сказано 0,33мм.
Создавая программу, я сделал так:
Создал форму, на которой есть поля для выбора формата, ввода кода, регулятор ширины штриха ну и кнопка генерации кода и сохранение изображения в буфер обмена. Получилось так:
Проверял я с помощью Abbyy FineReader 10 Professional:
Каждый из форматов штрих кода я оформил в виде отдельного класа, который из кода образует двоичную последовательность. Кстати, формат EAN 13 мне показался немного тяжелее в реализации в силу того, что там в зависимости от кода меняется таблица. в результате чего сам код рисовался так:
+19
Разработка простого расширения для google chrome
6 мин
47KРасширения для браузеров очень популярны в наше время. Повод написать какое-либо расширение всегда найдется, и их напашется еще много.
В данной статье я хочу рассказать о том как я написал небольшое расширение для google chrome в личных целях. А цель статьи — помощь молодому программисту, с трудом понимающему английский язык. Не каждый на 3ом курсе сможет читать гугловскую документацию, которая есть только на английском. А сделать расширение хочется.
Если поискать, то на русском языке нет ничего толкового по разработке расширений для chrome, только лишь эта статья доступно описывает самые основы.
Данный пост будет более продвинутой версией.
В данной статье я хочу рассказать о том как я написал небольшое расширение для google chrome в личных целях. А цель статьи — помощь молодому программисту, с трудом понимающему английский язык. Не каждый на 3ом курсе сможет читать гугловскую документацию, которая есть только на английском. А сделать расширение хочется.
Если поискать, то на русском языке нет ничего толкового по разработке расширений для chrome, только лишь эта статья доступно описывает самые основы.
Данный пост будет более продвинутой версией.
+97
Прием WebMoney без ухода с сайта
10 мин
9.6KПривет, хабр!
Хочу рассказать про прием WebMoney без перехода на сайт мерчанта Webmoney (merchant.webmoney.ru). Данный метод приема платежей может использоваться, и используется в оффлайн магазинах, небраузерных играх.
Интересно? Добро пожаловать под кат. Будет много php кода)
+28
Произносим правильно
2 мин
151KИз знакомых мне айтишников очень немногие стараются правильно произносить английские слова. Конечно, привычнее произносить C++ как «си-плюс-плюс», а не «си-плас-плас» или «опен-бэ-эс-дэ», а не «оупэн-би-эс-ди».
Но когда «echo $value;» читают как «ечо валуй» — это уже не смешно. Другой человек вас может просто не понять, особенно иностранец.
В топике представлен небольшой список «сложных» слов, которые часто произносят неправильно.
Ориентироваться лучше не на мою (весьма приблизительную) транскрипцию, а на аудио.
♫ — прослушать произношение в словаре
► — прослушать произношение на youtube
Начнем с названий:
Аббревиатуры:
Обычно аббревиатуры произносятся по правилам английского языка: API — эй-пи-ай, PCMCIA — пи-си-эм-си-ай-эй, OpenBSD — оупен-би-эс-ди и т.д.
Но когда «echo $value;» читают как «ечо валуй» — это уже не смешно. Другой человек вас может просто не понять, особенно иностранец.
В топике представлен небольшой список «сложных» слов, которые часто произносят неправильно.
Ориентироваться лучше не на мою (весьма приблизительную) транскрипцию, а на аудио.
♫ — прослушать произношение в словаре
► — прослушать произношение на youtube
Начнем с названий:
ABBYY | аби | ► | ||
Adobe | эдоуби | [əˈdəʋbɪ] | ♫ | |
Apache | эпэчи | [əˈpætʃiː] | ► | от «a-patchy» |
Asus | офиц. э́сус амер. э́йсус |
► |
||
BenQ | бенкью | ♫ | ||
Cisco | сискоу | [ˈsɪskoʊ] | ♫ | |
EBay | ибэй | ♫ | ||
Eee PC | и писи | ► | ||
Ethernet | изэрнэт | [ˈiθərˌnɛt] | ♫ | |
Itanium | айтэйниум | [aɪˈteɪniəm] | ► | |
Juniper | джу́нэпэр | [ˈdʒunəpər] | ♫ | |
LaTeX | лэйтех лэйтек латех латек |
[ˈleɪtɛk] ['leɪtɛx] [ˈlɑːtɛx] [ˈlɑːtɛk] |
||
Linux | офиц. линэкс вар. линукс |
[ˈlɪnəks] [ˈlɪnʊks] |
► |
|
Mac OS X | мэк оу-эс тэн | ► | ||
MySQL | офиц. май-эс-кью-эл вар. май-сиквел |
► | как «My Ess Que Ell», см. оф. сайт | |
nginx | энджин-икс | ► | (от engine-x) | |
PuTTY | пати | [ˈpʌtɪ] | см. оф. сайт | |
Qt | кьют | [kyut] | см. | |
TeX | тех тек |
[ˈtɛx] [tɛk] |
не «текс» | |
XBox 360 | экс-бокс фри сискти | ♫ | ||
Xen | зен | [ˈzɛn] | ♫ | |
Xeon | зион | ♫ | ||
Xerox | зирокс | [ˈzɪərɒks] | ♫ | |
Xilinx | зайлинкс | [ˌzaɪliːŋks] | ► | |
ZyXel | рус. зайксел амер. зайзел |
► | см. |
Аббревиатуры:
GNU | гну | ► | вар. гню | |
GWT | гвит | [ˈɡwɪt] | ||
ICANN | айкэн | ► | ||
IEEE | ай-трипл-и | ► | как «I triple E» | |
ISO | айсо | ► | ||
PNG | пинг | [ˈpɪŋ] | ♫ | как «ping», см. спецификацию |
PXE | пикси | [ˈpɪksi] | ► | |
RUP | рап | ► | ||
SCSI | скази | ['skʌzi] | ♫ | |
SOAP | соуп | [soʊp] | ► | |
SQL | эс-кью-эл | [ˈɛsˈkjuˈɛl] | неофиц. «сикуел» | |
SWF | свиф | [ˈswɪf] | см. спецификацию | |
WYSIWYG | визивиг | [ˈwɪziˌwɪg] | ♫ | |
XAML | зэмл | [ˈzæməl] | ► | |
XUL | зул | [ˈzuːl] | ||
Yii | длинное «и» | [ji:] | ► |
Обычно аббревиатуры произносятся по правилам английского языка: API — эй-пи-ай, PCMCIA — пи-си-эм-си-ай-эй, OpenBSD — оупен-би-эс-ди и т.д.
+300
Практика прохождения собеседований или как я переехал в столицу
4 мин
20KПривет, %хаброюзер%!
Сегодня я поделюсь с вами своим опытом прохождения собеседований на вакансии PHP-программиста в«белокаменной»Москве.
Сегодня я поделюсь с вами своим опытом прохождения собеседований на вакансии PHP-программиста в
+59
Как сделать один сайт для всех устройств (Responsive Web Design)
3 мин
290KВчера была опубликована хорошая статья «Веб-дизайн. Каждому устройству свое представление». Несмотря на неплохие размышления, к сожалению, вывод в ней довольно глупый. А именно:
«Нужно определить, какими устройствами могут пользоваться ваши посетители, проработать и создать для этих устройств представление вашего сайта, определить устройство посредством проверки заголовков браузеров, и отправить наиболее подходящее представление.»
Во-первых, никто не сможет предугадать, какими устройствами будут пользоваться ваши посетители. Нужно ориентироваться не на устройства, а на разрешения.
Это скриншот из презентации «Beyond the mobile web by yiibu» (очень рекомендую).
Во-вторых, если вы не facebook или yandex, скорее всего, вы не потянете создание и поддержку разных версий сайта для каждого устройства. Да и это не имеет особого смысла. Потому что ситуация становится похожа на реалии пятнадцатилетней давности. Тогда делали сайт «под браузер», а сейчас автор предлагает делать сайт «под устройство».
«Нужно определить, какими устройствами могут пользоваться ваши посетители, проработать и создать для этих устройств представление вашего сайта, определить устройство посредством проверки заголовков браузеров, и отправить наиболее подходящее представление.»
Почему это глупо
Во-первых, никто не сможет предугадать, какими устройствами будут пользоваться ваши посетители. Нужно ориентироваться не на устройства, а на разрешения.
Это скриншот из презентации «Beyond the mobile web by yiibu» (очень рекомендую).
Во-вторых, если вы не facebook или yandex, скорее всего, вы не потянете создание и поддержку разных версий сайта для каждого устройства. Да и это не имеет особого смысла. Потому что ситуация становится похожа на реалии пятнадцатилетней давности. Тогда делали сайт «под браузер», а сейчас автор предлагает делать сайт «под устройство».
Как сделать один сайт для всех устройств
+137
Разработка CAPTCHA своими руками
9 мин
119K Сегодня, благодаря господам спам-ботам и иже с ними, в сети практически невозможно что-либо сделать без ввода символов со сгенерированного изображения — CAPTCHA (далее — капча). Фактически, это предотвращает выполнение какого-либо скрипта без участия человека, и в этом топике я расскажу, как такую капчу создать средствами PHP, а так же упомяну очень полезный топик другого хабраюзера, который пригодится при разработке изображения-капчи.
+50
Нужна ли аспирантура?
5 мин
93KЭтот вопрос мне задают настолько регулярно, что решил оформить это все в единый поток мыслей, чтобы в следующий раз просто прислать ссылку.
Несмотря на то, что поставленный вопрос достаточно простой, ответ на него далеко не простой. Хотя есть и простой ответ: «it depends». И это действительно так.
Статью построим в виде «описание тезиса» – «контраргументы» — «вывод».
Несмотря на то, что поставленный вопрос достаточно простой, ответ на него далеко не простой. Хотя есть и простой ответ: «it depends». И это действительно так.
Статью построим в виде «описание тезиса» – «контраргументы» — «вывод».
+97
Проверки на пустые перечисления
2 мин
11KПеревод
Недавно, во время разбора кода одной программы я заметил метод, который выглядел примерно так:
Метод принимает дженерик-перечисление и проверяет, пустое ли оно. Видите ли вы тут потенциальную проблему? Я намекну, проблема в этой строчке:
И в чем же тут проблема? Проблема в том, что эта строчка может оказаться очень неэффективной.
public void Foo<T>(IEnumerable<T> items)
{
if(items == null || items.Count() == 0)
{
// Оповестить о пустом перечислении
}
}
Метод принимает дженерик-перечисление и проверяет, пустое ли оно. Видите ли вы тут потенциальную проблему? Я намекну, проблема в этой строчке:
items.Count() == 0
И в чем же тут проблема? Проблема в том, что эта строчка может оказаться очень неэффективной.
+54
Популярные вопросы на собеседовании по C++ и ответы на них
9 мин
338KЗдравствуйте!
Те, кто занимается программированием рано или поздно сталкивается с необходимостью прохождения технического собеседования у потенциального работодателя.
О том, что спрашивают на собеседовании у C++ программистов, а также об ответах на эти вопросы и пойдет речь в данном посте.
Те, кто занимается программированием рано или поздно сталкивается с необходимостью прохождения технического собеседования у потенциального работодателя.
О том, что спрашивают на собеседовании у C++ программистов, а также об ответах на эти вопросы и пойдет речь в данном посте.
+193
Ядерный реактор – дома с нуля
4 мин
436KНекоторое время назад я публиковал статью о самодельных микропроцессорах, сегодня же мы затронем более сложную и щекотливую тему (особенно в свете событий на Фокусиме) – создание ядерного реактора, способного генерировать энергию в домашних условиях. И перед тем как вы начнете волноваться, вспоминая о негативных опытах в прошлом (см. Радиоактивный бойскаут – наковырявший прилично амерция-241 из детекторов дыма) заранее скажу, что все что описано в этой статье – относительно безопасно (по крайней мере не опаснее работы с фтороводородной кислотой дома), но крайне не рекомендуется к повторению. Перед любыми действиями проконсультируйтесь со своим адвокатом — законы разные в разных странах. Много кто уже сидит.
+299
Если бы языки программирования были женщинами
3 мин
17KТо ли весна, то ли упоминание о неделе женщин на Хабре заставили меня задуматься о том, какими женщинами были бы языки программирования. Поиск по этой теме выдал пару явно устаревших статей, и я решила написать свою. Просьба воспринять с юмором и не обвинять в шовинизме — я, знаете ли, и сама не мужик :-)
P.S. Придумалось далеко не для всех известных мне языков — раскрытие темы для недостающих только приветствуется.
Prolog
Женщина-мечта: делает все, что вы хотите. К сожалению, иногда описание того, что же вы хотите, занимает больше времени, чем объяснение, как это делать.
BASIC
Горячая разведенка; специализируется на соблазнении подростков, и очень многие получают с ней свой первый опыт. Мнения взрослых о ней разделяются — одни вспоминают ее с нежностью, другие — осуждают ее дурное влияние на юные умы.
P.S. Придумалось далеко не для всех известных мне языков — раскрытие темы для недостающих только приветствуется.
Prolog
Женщина-мечта: делает все, что вы хотите. К сожалению, иногда описание того, что же вы хотите, занимает больше времени, чем объяснение, как это делать.
BASIC
Горячая разведенка; специализируется на соблазнении подростков, и очень многие получают с ней свой первый опыт. Мнения взрослых о ней разделяются — одни вспоминают ее с нежностью, другие — осуждают ее дурное влияние на юные умы.
+75
Плазменное радио
1 мин
4.2KНе уверен, что это можно отнести к теме «работа со звуком», но более подходящего блога я не нашел.
Простой, но довольно эффектный опыт можно провести, имея 90-метровый стальной провод, висящий на 110-метровой вышке недалеко от мощного радиопередатчика:
Из-за большой длины провода, он хорошо поглощает энергию радиоволны, вещающей на частоте 549 кГц с амплитудной модуляцией. Это позволяет слышать модулирующий аудиосигнал без каких-либо дополнительных устройств, прямо от колебаний мощной электрической дуги идущей от этого провода в землю.
Простой, но довольно эффектный опыт можно провести, имея 90-метровый стальной провод, висящий на 110-метровой вышке недалеко от мощного радиопередатчика:
Из-за большой длины провода, он хорошо поглощает энергию радиоволны, вещающей на частоте 549 кГц с амплитудной модуляцией. Это позволяет слышать модулирующий аудиосигнал без каких-либо дополнительных устройств, прямо от колебаний мощной электрической дуги идущей от этого провода в землю.
+136
Анимированные баннеры на Javascript — это просто*
7 мин
20K*) На самом деле все равно сложно, но зато проще, чем было раньше.
История началась с постановки задачи: нужно сделать анимированный баннер с примерно тридцатью объектами средствами HTML+javascript за один день. За день, конечно, баннер сделан не был, а был сделан за два усилиями трех человекодней. После выполнения задания осталась библиотека пакетной анимации, которую я назвал Scenario. О её доработанной версии я и хочу рассказать.
Основная идея библиотеки — собрать информацию обо всех анимируемых объектах в один сценарий и отправить его на выполнение. Один сценарий может быть исполнен сколько угодно раз или может быть модифицирован, поскольку представляет из себя обычную яваскриптовскую структуру.
Запуск сценария из любого места предельно прост:
Осталось только разобраться, что писать вместо трех точек в примере :)
История началась с постановки задачи: нужно сделать анимированный баннер с примерно тридцатью объектами средствами HTML+javascript за один день. За день, конечно, баннер сделан не был, а был сделан за два усилиями трех человекодней. После выполнения задания осталась библиотека пакетной анимации, которую я назвал Scenario. О её доработанной версии я и хочу рассказать.
Основная идея библиотеки — собрать информацию обо всех анимируемых объектах в один сценарий и отправить его на выполнение. Один сценарий может быть исполнен сколько угодно раз или может быть модифицирован, поскольку представляет из себя обычную яваскриптовскую структуру.
Запуск сценария из любого места предельно прост:
var newScenario = [...];
$.scenario(newScenario, {
complete: function(time) {
alert('Готово!');
}
});
Осталось только разобраться, что писать вместо трех точек в примере :)
+153
Индикатор прогресса с помощью HTML5 Canvas
6 мин
7.3KПривет, Хабр!
Всё больше статей появляется про Canvas, и это не может не радовать. Основы, будем надеяться, уже изучены, а мне хотелось бы поделиться примером возможного практического использования canvas, а именно создать анимированный индикатор прогресса.
Для нетерпеливых результаты эксперимента можно посмотреть здесь:http://pastehtml.com/view/1d7z824.html , а также скриншот конечного результата:
Прогресс-бар получился довольно простой, но в то же время в стиле веб 2.0 — закругленный (конечно же!), с элементами глубины и объема: то есть тенями и градиентами.
За подробностями прошу под кат.
Всё больше статей появляется про Canvas, и это не может не радовать. Основы, будем надеяться, уже изучены, а мне хотелось бы поделиться примером возможного практического использования canvas, а именно создать анимированный индикатор прогресса.
Для нетерпеливых результаты эксперимента можно посмотреть здесь:
Прогресс-бар получился довольно простой, но в то же время в стиле веб 2.0 — закругленный (конечно же!), с элементами глубины и объема: то есть тенями и градиентами.
За подробностями прошу под кат.
+83
VU метр с нуля
5 мин
67KВведение
Помню, как лет в десять впервые взялся за паяльник и к годам так к четырнадцати уже собрал радиуправляемую машину, но с появлением компьютера как то-забросил это благородное занятие. И вот, буквально две недели назад, меня посетила идея сделать что нибудь красивое. Подумал и решил сделать VU — meter. Начал перекапывать форумы по электронике, в поисках наилучшей, на мой взгляд, реализации данного девайса. Спустя день поисков я наткнулся статью в журнале “РадиоХобби”, поискав еще немного я нашел рисунок печатной платы. Так что, что ни логика ни печатная плата мне не принадлежит, предложил данную схему, как написано в журнале — Марцин Вьязаня.
Тут начинается самое интересное…
Осторожно трафик
+115
10 лет практики. Часть 1: построение программы
6 мин
22KДесять лет я пишу на С++. Первые пять лет моей задачей было писать эффективный код для компьютерных игр, потом основным требованием была стабильность, так как речь шла об автоматизации промышленных объектов. Я бы хотел поделиться своим личным опытом и практическими наработками, которые помогут создавать эффективные и в то же время стабильно работающие программы.
Материал разбит на части, от самых общих практических правил, интересных начинающим, до конкретных вопросов, актуальных опытным программистам.
В первой части я на практике дам свой ответ на самые базовые вопросы. Как вообще писать программу, в особенности — сложную программу? Что следует сделать в самом начале, чтобы потом не переделывать с нуля? Как создать оптимальную структуру программы?
Материал разбит на части, от самых общих практических правил, интересных начинающим, до конкретных вопросов, актуальных опытным программистам.
В первой части я на практике дам свой ответ на самые базовые вопросы. Как вообще писать программу, в особенности — сложную программу? Что следует сделать в самом начале, чтобы потом не переделывать с нуля? Как создать оптимальную структуру программы?
+98
Информация
- В рейтинге
- Не участвует
- Откуда
- Москва, Москва и Московская обл., Россия
- Зарегистрирован
- Активность