Но, блин, я не думал, что 50% провал будет на таких простых задачках, как тут. 50% слив. А это означает, что LLVM-GCC не умеет даже при вклченой оптимизации нормально раскладывать все по регистрам и нормально лепить "короткие" переходы.
Конечно. на DX комплектация победнее, чем у SeeedStudio (см. обзор от МК90), поставка OEM, но имеющиеся щупы однозначно лучше.
Прибор совсем лилипусичный! Я сначала даже сел на измену, когда распаковывал - думал, упаковка с аккумулятором, а прибор сперли. Боюсь представить, какого размера DSO Nano v2.
Я, правда, заранее подготовился и купил в SeeedStudio несколько переходников на BNC.
( немного фоток )
- Music:Depeche Mode - I Want It All (Roland M. Dill Remix) | Powered by Last.fm
Обзавелся я тут, значит, очередным трансивером в июле. Нужно зарегистрировать в Роскомнадзоре.
Раньше я пользовался услугой одного дядички - отдавал ему документы и его девочки-мальчики сами ездили оформлять разрешение на станцию с этой муторной процедурой. С нынешним разбродом (например, позывные до сих пор не дают и я не могу повысить категорию из-за этого), дядечка пока такой курьерской услугой не занимается. Так что теперь все самому.
Выяснил, что на rsoc.ru есть форма для подачи заявления в электронном виде - чтоб лишний раз туда не мотаться, я ее заполнил и стал ждать неизвестно чего.
Прошел практически месяц, никто не пишет и не звонит. Проверяю статус заявки на сайте: "заявка передана в электронную систему Роскомнадзора". Ну пипец какой-то, сайт уже не электронная система. Там же дан телефон справочной.
Звоню. Объясняю девушке в справочной, что частоты выделять мне не нужно, всего лишь зарегистрировать РЭС. в итоге договорились до того, что мне нужно позвонить в "отдел".
Еще неделя уходит на то, чтобы в этом "отделе" сняли трубку. В общем, меня отредиректили в справочную московского отделения Роскомнадзора. Звоню туда. Опять описываю девушке (теперь из московского филиала) ситуацию. Дает номер тетеньки, занимающейся электронными заявлениями. Звоню ей. Та раздроженным голосом завляет, что я уже второй за день умник, который звонит по этому поводу и к ней (не смотря на поданное в электронном виде заявление) это никакого отношения не имеет. Правда, дала телефон в "отдел", теперь уже региональный. Фиерия продолжается.
Звоню в "отдел": "А вы нам бумажные копии заявлений привозили? Откуда мы знаем о том, что вы завели электронные? Вот привезете - узнаем". Занавес.
Надо сказать, что все девушки, кроме той, что на электрических заявках, весьма вежливы. Хоть какой-то прогресс в госучереждении.
Posted via LiveJournal app for iPad.
- Location:Russia, Moskovskaya, Rayëvo
|
- MobileRSS HD - великолепный клиент для Google Reader
- Twitter - оригинальный клиент Твиттера прекрасен!
- MyPad+ - для Facebook лучще ничего е видел
- 1Password Pro - куда же без него, особенно при нынешней кросплатформенности приложения и DropBox в качестве хранилища
- Forum Runner - не скажу, что он прекрасен, но при общении на форумах он сильно облегчает жизнь
- Wikipanion+ - великолепнейший клиент для WiKi, имеющий возможность планировать чтение "на потом" и читать в оффлайне
FlickrStackr - клиент для фотохостингов - eBay for iPad и Amazon WindowShop - с ними вы себя спросите, как же раньше обходились без них :)
- Evernote - заметки, WebClip-ы... Последнее, на мой взгляд имеет некоторое преимущество по сравнению с InstaPapper и Read It Later Pro, потому что сохраняет в облаке содержимое, а не закладки, что полезно при сохрании страниц из Интранета или с безответственных сайтов :)
- MacLoggerDX HD - лучший логгер для любительской радиосвязи с синхронизацией журнала с "большим" MacLoggerDX, а так же возможностью работы с радиостанцией через него же посредством Bonjour
- OpenAPRS-xL - клиент для доступа к услугам APRS
- ReBirth for iPad - клон знаменитого Rebirth от Propellerhead Software
- KORG iElectribe - проммная реализация KORG ELECTRIBE·R
- FL Studio Mobile HD - версия Fruity Loops для iPad
- Koder - редактор кода с подсветкой синтаксиса,поддерживающий iDisk, DropBox, FTP
Дальнейшие изыскания привели меня к тому, что в своих навигационных продуктах Garmin изготовил Fleet Management Interface, причем активно и в открытую развивает его.
Конечно, цена на кабель, особенно в версиях для новых устройств - кусачая, зато мы имеем несложный протокол поверх RS-232 и открырый SDK.
А самое главное - Garmin пошел на поводу у энтузиастов и начиная с версии протокола 2.50, устройства офицально (в версии 1 это было не официально) поддерживает управление waypoint-ами!
Ну предположим, с другой стороны у нас Kenwood TM-D710, имеющий отдельный интерфейс RS-232, который "кушает" NMEA и "сплевывает" waypoint-ы в собственном формате. А еще у нас есть данные из Интернет по камерам, постам и засадам, которые тоже достаточно часто (ежедневно) актуализируются. И заливать бы это дело удобно бы было со смартфона с помощью Bluetooth. Получается такая нехилая задачка по мультиплексированию и преобразованию данных на трех последовательных портах, хорошая задачка для Arduino на Mega 2560.
Пока писал, подумалось, что заодно можно и позиции друзей сливать из гео-социальных сетей. :)
Нет, снимать штаны и бегать не потребуется. MFJ для нашего с вами удобства сделала проводной пульт дистанционного управления MFJ-993RC для этого тюнера. Сам пульт нам не нужен, но поскольку он прост до безобразия, мы воспользуемся его функцией коммутации антенн. Нога 8 разъема DB9 "Remote Control" у тюнера отвечает за переключение антенн. Замыкать ее следует на корпус разъема. Замкнутое состояние соответствует состоянию ANT1, разомкнутое - ANT2.
Что касается подключения к microHAM Station Master, для этого лучще всего подходят выходы B6 - B10, которые образуют отдельные коммутационные пары.
PS. Для автоматического переключения антенн кнопка ANT на тюнере должна быть нажата.
- Location:Russia, Moscow
Если кто работал с WebKit или имел необходимость погонять JavaScript в своих приложениях знают, что одним из легко доступных движков является JavaScript Core от Apple, поставляемый в комплекте WebKit под большинством фреймворков.
В работе с движком есть одна особенность - за собой она тащит кусочек runtime-а от CoreFoundation, в частности строковые типы. При разработке кода на C разработчик не имеет вариантов и вынужден кругом использовать функции для работы с такими строками, что существенно перегружает код и снижает его читаемость. Если же мы обратимся к C++, то у нас найдется вполне элегантный вариант в виде класса-контейнера, скрывающего в себе реализацию JSStringRef:
class JSString
{
public:
JSString(const char* value);
JSString(const std::string& valu e);
JSString(const JSStringRef& valu e);
JSString(const JSContextRef& con text, const JSValueRef& value);
~JSString();
operator JSStringRef();
operator std::string();
operator Glib::ustring();
private:
JSStringRef string;
};
JSString::JSString(const char* value)
{
string = JSStringCreateWithUTF8CSt ring(value);
}
JSString::JSString(const std::string& va lue)
{
string = JSStringCreateWithUTF8CSt ring(value.c_str());
}
JSString::JSString(const JSStringRef& va lue)
{
string = value;
JSStringRetain(string);
}
JSString::JSString(const JSContextRef& c ontext, const JSValueRef& value)
{
string = JSValueToStringCopy(conte xt, value, NULL);
}
JSString::~JSString()
{
JSStringRelease(string);
}
JSString::operator JSStringRef()
{
return string;
}
JSString::operator std::string()
{
size_t length = JSStringGetMaximumUTF8 CStringSize(string);
gchar buffer[length];
JSStringGetUTF8CString(string, buffer, length);
return std::string(buffer);
}
JSString::operator Glib::ustring()
{
size_t length = JSStringGetMaximumUTF8 CStringSize(string);
char buffer[length];
JSStringGetUTF8CString(string, buffer, length);
return Glib::ustring(buffer);
}
Пример использования:
context = JSGlobalContextCreate(NULL);
JSObjectMakeFunctionWithCallback(context, JSString("dnsResolve"), dns_resolve);
JSObjectMakeFunctionWithCallback(context, JSString("myIpAddress"), my_ip);
JSEvaluateScript(context, JSString(proxyConfigureFunctions), NULL, NULL, 1, NULL);
JSEvaluateScript(context, JSString(script), NULL, NULL, 1, NULL);
Как можно заметить из примера, вся реализация управления временем жизни строки делегирована компилятору через создание на стеке анонимного экземпляра нашего класса-контейнера, код элегантен, не допускает утечек и прост для понимания для начинающих разработчиков. Вся сила C++ в элементарных "рюшечках".
Для прочих приложений издревле изготовленных под PC и даже под мобильные устройства ранее никто не задумывался о application continuity. То есть приложения мы имеем и там и там, а о том, чтобы как-то состояние синхронизировать между ними - не задумаывались. И вот свершилось Облако (в контексте application continuity)! Дошло. Apple обещает бесплатно, PlayStation Network в рамках подписки PSN+, да и самое интересное все равно ждать - приложения пока еще не готовы. Хотя прикольно, что хоть до кого-то дошло, что возможен такой вариант использования, если гамер режится в игру на PS3 и ему приспичило в сортир, можно перенесли плей на PS Vita и продолжить игру в туалете. Ну или в вагоне метро. И за это можно даже брать деньги. Посмотрите на IT 10-летней давности - этого ничего не было.
Кстати, большие дядьки в наших компаниях-операторах ходят и маяться: чуют, что "облако" в каком-то из проявлений нужно продавать, а в каком (помимо Office 365) - не поймут. Да и вооще, что есть "облако" им не понятно. И действительно?! :)
Соедующвя тенденция - очередное поколение развития социальных сетей. Слава богу, MySpace умирает - крайне кривой интерфейс и нечеткая концепция. А вот Цукерберг с Facebook продолжает удачно развиваться. И, как мне кажется, за счет интеграции с чужими сервисами, взращиванию приложений третьих сторон.
Пройдем мимо "Фермы". Какое-то время назад, когда Activision выпустил Guitar Hero 3, они реализовали некий простенький XML-интерфейс для получения информации по статусам игроков, не придавая этому большое значение. Народ активно его заиспользовал на всяких окогогеймерских форумах и сайтах. В то же время я разработал и опубликовал маленькое приложение на FB, которое отслеживает прохождения игроков за сутки и публикует это на стене FB. Через какое-то время интерфейс закрылся, но аналогичная потребность возникла в головах издателей и вот Rock Band и PlayStation Network засыпают мою стену достижениями в прохождении игр. И самое что интересное, функция ассоциации аккаунтов с FB появилась прямо из PS3.
Социализация вообще трансформируется как-то необъяснимо в последнее время. Sony пытается, похоже, изменить место PSN в процессе игры и максимально обозначить коммуникации между игроками за пределами домашней игровой консоли. В частности, релиз PS Vita обещает не только уже имеющийся в PS3 чат и инфо о статусе игры, но и некие нотификации вроде iOS-ных Push. Что это конкретно - пока не понятно. PS Vita - мобильное устройство с 3G.
Кстати, все последние гаджеты стимулируют спрос на услуги беспроводных операторов. Несколько лет назад человек с двумя SIM-картами смотрелся как полный гик, ныне чуть ли ни у каждого по отдельной карте еще в ноутбуке, iPad-е, скоро и в PS Vita. Назначенная пару лет назад стагнация продаж контрактов никак не прийдет - количество абонентов мобильных сетей уже превысило население страны, хотя, в какой-то мере, продажи спали. Интересно, когда же наконец доходы от передачи данных в мобильных сетях превзойдут доходы от трафика?
Социализация, облачные приложения, application continuity - все это многократно увеличивает потребление трафика. Очередная маленькая революция в ценах должна произойти, уже есть безлимитные пакеты мобильного трафика, наметились первые звоночки в ценах на роуминг при передачи данных. И вроде как все готово к очередной технологической революции, но как обстоят дела с юридическими аспектами? Конец анонимности, частной жизни и прочему?... Оставлю пока эту тему открытой...
Всем приношу извинения, что пост не содержит четкой структуры и выраженной мысли. Поток сознания, имевший целью обозначить существующие тенденции и дать вам задуматься о происходящем.
"Туалетный контроллер" - что это такое?
Идея весьма проста. Это контроллер, который собирает околоводопроводную телеметрию, преобразует интерфейсы и выполняет некоторые привентивные действия, случись что. "Околоводопроводная" телеметрия - это показания счетчиков расхода воды, датчики утечки, температуры трубы горячей воды. Электронный монометр не помешал бы, но ценник кусается. Управляемыми устройствами должны стать нормально-закрытые электрические крапаны, перекрывающие поток воды, а при отключении горячей - маршрутизирущие поток в проточный нагреватель. Заодно все хотелось бы обернуть в RS-485 для того, чтобы синтегрироваться с контроллером домашней автоматизации ADI Leopard II, а так же компьютером для мониторинга, управления и снятия показаний - прежде всего расхода воды, его отправку на сайт ЕРЦ достаточно легко автоматизировать.
Наиболее продуманный сейчас момент - это замер расхода воды. Механические счетчики имеют герконовый импульсный датчик, дающий сигнал на каждые 10 литров. Так как снимать показания с механического счетчика нельзя, считать импульсы нужно непрерывно без прерывания. То есть считать на каком-либо контроллере не получится. У Maxim (Dallas Semiconductor) было замечательное решение на интерфейсе 1Wire - DS2423 - 2-хканальный счетчик с RAM. Уже пару лет как этот чип снят с производства. Похоже, что сменивниеся продакт-менеджеры в Maxim не просекли всей сути назначения этого чипа, сняв его с производства они предлагают на замену обычные 1Wire RAM. А ведь RAM в этом чипе вторичен, по-хорошему он нужен для того, чтобы сохранять состояние счетчика в момент последнего прочтения, что позволяет точно "снимать" телеметрию с каждого конктретного датчика вне зависимости от состояния контроллера, с помощью которого снимаются показания. Чип DS2423 можно найти на китайских складах по цене от $8 до $12, а Hobby Boards продает даже готовые решения на печатной плате с обвязкой и батареей питания за $28. Я выбрал последнее решение.
Пока-что снимать показания я собираюсь самодельным контроллером на базе Arduino Uno (AVR Mega168). Есть и промышленные решения, например контроллеры Poseidon, но цена вопроса, непонятки с счетчиками и отсутствие RS-485 в slave mode явно не в пользу этого выбора.
Рассматриваем вариант Arduino Uno. За коммуникации с 1Wire будет отвечать мост DS2482-100. Я вкурсе о программной реализации 1Wire в том числе и для Arduino, но помехоустойчивость такой непосредственной реализации сильно страдает. SOIC8, конечно, тяжело паять, но тут никуда не денешся. Единственный COM-порт Arduino Uno будет занят интерфейсом с компьютером, коммуникации RS-485 я планирую выносить на связку SC16IS750 + MAX482. SC16IS750 аппаратно реализует переключение направления передачи half-duplex для MAX482, аппаратно реализует адресные фильтры RS-485. Проблема SMD монтажа решается вот такой вот платкой от Sparkfun-а. Остается только на монтажной плате поставить разъемы да MAX482, благо есть в DIP-корпусе. RTC-часы на DS1307 доступны в виде готового конструктива.
Что касается исполнительных устройств, то тут пока определенности нет. Доступны разные варианты интерфейсов.
Продолжение следует...
