?

Log in

No account? Create an account

Символично, однако...

Все, кто связан с замечательной операционной системой FreeBSD, в курсе того, что сейчас активно ведутся работы по переводу кодовой базы с компилятора GCC на Clang + LLVM, который, в свою очередь, сейчас активно развивается. Прочитал сейчас на опеннете новость о выходе свежей версии LLVM, в которой, в числе прочего, говорится что недавно был представлен новый логотип. Заинтересовался, слазил по ссылке... Что бы вы думали на нём изображено?
Read more...Collapse )

Одноразовая почта

Недавно на опеннете меня ткнули носом в забавный сервис - почта на пару минут: получил временный адрес, зарегился где-нить и забыл. Ну я заюзал и благополучно забыл, а недавно появилась необходимость ещё раз поюзать эту шнягу. Погуглив немного нашел целый ворох подобных сервисов, чем и хочу поделиться с общественностью (а заодно оставить себе памятку, что бы не искать в следующий раз =) ).
http://my-soft-blog.net/245-17-servisov-dlya-sozdaniya-vremennyx-pochtovyx.html
Scintilla - очень мощный текстовый контрол, соответственно, управление ему требуется довольно обширное. Управление это осуществляется, преимущественно, с помощью клавиатурных комбинаций. Для лучшего освоения оных выцепил вот из сырцов таблицу с дефолтовыми настройками биндингов (правда, не забываем, что они именно дефолтовые - уже спустя пару часов наткнулся в Code::Blocks на неуказанную там комбинацию - Shift+Tab).
Read more...Collapse )

Как делить будем?

Знакомый наткнулся сейчас в дебрях иксбита на очень любопытный алгоритм деления на 100.
Запишу пока тут ссылочку на память, а на досуге надо будет разобраться как это работает и как его переделывать для других делителей.
http://forum.ixbt.com/topic.cgi?id=48:8605-2#36
Вот и появилась необходимость восстанавливать свои скилы в программировании на PHP и администрировании MySQL. А в перспективе - ещё и освоить Python. Я предпологал, что рано или поздно этим заняться понадобится, но ни за что бы не подумал, что всё это придётся делать в рамках проекта по созданию железки на AVR-ке...
Небольшая заметка себе на память. Дабы оградить себя от грабель, незаметно подползающих под ноги, провёл сегодня эксперимент, который доказал, что ATOMIC_BLOCK(ATOMIC_RESTORESTATE) действительно восстанавливает состояние SREG, даже при выходе из середины блока (например, по return).
Да, и ещё: в основе этих макросов лежит цикл for - это обязательно нужно помнить при применении внутри него инструкций break и continue.

О красоте кода на C

Совершенно не задумываясь неделю назад написал примерно такой вот код.

if(timer.time)
{
	timer.time--;
	if(!timer.time)(*timer.task)(timer.arg);
}

Сегодня, когда его увидел, задумался о том, что легендарная читабельность C - не такая уж и страшилка, и образчики оной могут появляться совершенно без задней мысли. А про C++ лучше даже не думать.

Процессоростроение

Не очень давно в обсуждениях одной статьи на dxdt проскочила забавная ссылка - подборка "не очень микро" процессоров. =)
http://3.14.by/ru/read/homemade-cpus
Шуки шутками, а беспроводные зарядки таки, кажется, скоро появятся в бытовых приборах.
http://www.membrana.ru/articles/inventions/2010/02/16/105700.html

Column Mode

А между прочим, в Code::Blocks таки есть режим прямоугольного выделения. Точнее, он есть в scintilla, а в CB присутствует постольку поскольку. Для активации этого режима надо при выделении зажать Alt. В прямоугольном режиме можно копипастить блоки текста и, если повезёт, вводить текст одновременно в несколько строк. Не как в UE, конечно, но сам факт - базис есть.

Update 19.02.2010
При более детальном рассмотрении выяснилось, что реализовано прямоугольное выделение довольно бестолково - вкючить его можно, фактически, только зажиманием Alt`а и вшито это непосредственно в Сцинтиллу, так что чтобы реализовать нечто подобное тому, что есть в UE, надо сначала поправить именно её, а уж потом - кодблокс...
Вот нашли по ссылке в журнале al_zatv:
http://www.bus62.ru/
Изумительное зрелище, и задержка обещается всего в одну минуту. Надо тебе сесть на автобус, посмотрел на карту - ага, вон он уже подъезжает, надо срочно выходить. Или вон он уже сломался в двух метрах от остановочного пункта, что часто бывало с этими бело-зелёненькими израильскими автобусами у нас этой зимой. Тогда можно ещё спокойно чашку чая выпить, пока замену не пришлют, ну или искать альтернативные способы добраться, если торопишься. В общем, здорово, что всё это уже можно реализовать на нашей технической базе. И интересно, что всё это уже реализовано (видимо, в рамках какой-то государственной программы) именно в Рязани. Даже хочется узнать, чем именно авторы проекта руководствовались в выборе города и запущены ли уже такие проекты ещё где-то. Ну понятно, что Москва для такого мероприятия слишком велика, но в России и других городов великое множество. И очень бы хотелось заполучить такую штуку к нам в город, а лучше в район. Кстати, забавно, что реализована она на базе гугловых карт, а не каких-нибудь там яндексовских карт или маилрушных.

PS:
Вот, кстати, описание системы есть - http://blog.probki62.ru/?p=85
Там, в частности, упоминается, что есть ещё и мобильная версия, которая предстовляет собой таблицу с перечнем транспорта, подъезжающего к интересующей Вас остановке, так что узнать о подъезжающих автобусах можно не только перед выходом из дома.

Хм...

Поставил сейчас на локальный сервак восьмёрку (с нуля) и несколько удивился.... Толи я где-то что-то нажал не то, толи дитриб неудачный попался, толи приколы разработчиков... в общем, система меня встретила минималистичным приглашением, состоящим из одного $, причём, что под юзером, что под рутом, так что понять под кем я сейчас можно было только с помощью whoami... Ну и, соответственно, все остальные настройки tcsh были в полном дефаулте, вплоть до отсутствия любимого ll. Странно. Хорошо под рукой бекап был - я сразу оттуда вытянул .tcshrc
Кстати, выложу ка я его здесь, что б в случае чего долго не искать. Собственно, это конфиг из Frenzy слегка поправленный под себя. Заодно, пользуясь случаем, скажу спасибо Сергею Можайскому (frenzytechnix) за хороший конфиг.
Read more...Collapse )

UPD 13.02.2011: Слегка обновил конфиг: новый промпт, увеличение размера истории, сохранение истории для нескольких открытых одновременно шелов.
Этот мультфильм был нарисован в 1968 году при помощи компьютера - машины БСЭМ-4. В качестве рисующего устройства использовалась широкая печать — АЦПУ-128.



Подробнее на http://freeresearcher.net/?p=1378

Кстати, о самолётах

Забавная подборка летающих и не очень крылатых созданий


http://hrenovina.net/6444

ОНО таки полетело!

http://dxdt.ru/2010/01/29/2925/

Приятно видеть, что после развала союза хоть какая-то промышленность у нас поднимается. Конечно, "догнать и перегнать америку" уже ни за что не получится, но тем не менее и в сырьевой предаток мы таки не до конца превратились.
Как вы думаете, зачем этому фотоаппарату два объектива?

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

Источник - http://hi-tech.mail.ru/review/item/1854/

Яндекс - запишем всё!

Если у Вас нет мании преследования -
это ещё не значит, что за Вами не следят.

Недавно в опере, вслед за файрфоксом, реализовали режим Privacy Browsing, обещающий не оставлять следов интернет-серфинга на машине. А вслед за этим появились новости о том, что и это не гарантирует анонимности. Нет, речь не идёт о снифинге, логах провайдера и прочих шпионских штучках - речь вновь об информации на локальной машине.
В общем, читать всем, страдающим манией преследования: http://arkanoid.livejournal.com/279422.html

Отсюда вывод - отрубаем iframe (у меня он всегда отключен - всё равно для полезных вещей он используется значительно реже, чем для всякой пурги), отрубаем флешь (заодно и лишаемся огромной пачки назойливой рекламы), баним яндекс (гугль, конечно, тоже следит за нашей деятельностью, но хоть не так подло)... =)
Тяжела жизнь программиста:
радость от локализации нового бага
в своей программе всегда омрачается
осознанием собственной тупости. (c)


Нарвался я тут на проблему при использовании функции sprintf - ни в какую не хотело работать форматирование вывода. То есть пишу я что-нибудь типа sprintf(str, "%4d", 123); и получаю в стр "123", вместо " 123". Долго я с этим бился, перековеркал все ключи компилятора и линкера, пересобрал свежие версии avr-libc, binutils и avr-gcc (а так же всего, что для них требуется) и уже собирался просить помощи у авторов avr-libc, но сегодня я таки нашёл решение проблемы. Дело в том, что в avr-libc есть три варианта библиотеки, отвечающей за vprintf: полная, реализующая практически все требования стандарта (линкуется с -lprintf_flt), урезанная, реализующая базовый вывод (линкуется с -lprintf_min) и промежуточный вариант, который который умеет всё, кроме вывода дробных чисел (линкуется по умолчанию). Я же по своей наивности думал, что вариантов всего два и линковал с -lprintf_min и лишь посмотрев исходник либы а понял, что в min варианте она и не должна заниматься форматированием - только простой вывод. Конечно я и раньше подозревал, что косяк может быть где-то там, и предпринимал попытки слинковаться с -lprintf_flt, но тогда мне линкер говорил, что не может найти операцию умножения... Правда, как потом выяснилось, и дефолтовая версия тоже хочет умножение. Короче, в конечном итоге решение проблемы свелось к поиску потерявшегося умножения =). А вот в этом мне помогла чистая случайность - обнаружилось, что у меня на домашнем ноуте всё прекрасно собирается и с -lprintf_flt. Ну, в общем, в результате сравнения ключей выяснилось, что всему проблемой директории поиска. Но весь юмор в том, что для решения проблемы требовалось не указать какие-то правильные пути, а наоборот - удалить. Причём удалить все пути... Вот такие вот шутки юмора...

Новая опера

Анонсировали новую версию оперы - 10.50. Ну как обычно - всякие плюшки, "улучшения" интерфейса, увеличение скорости (скоро в космос полетим) и тд. Но есть и пара интересных моментов:
Во-первых они таки починили сортировку в адресс-баре (кто не помнит - с версии где-то 9.2 сортировка адресов в баре стала по времени ввода адреса, а не по времени последнего перехода). Кроме того, наконец-то сделали возможность удалять отдельные ненужные адреса (этого мне нехватало ещё с тех времён, когда я юзал MyIE =)). Правда, зачем-то убрали галочку дроп-даун списка...
Во-вторых диалоги сделали немодальными. Теперь вредные странички не смогут портить жизнь (чесное слово - буквально пару недель назад наткнулся на страницу которая в цикле запрашивала у меня какой-то код, который я должен был получить, отправив куда-то СМСку; файрфокс был блокирован полностью, пришлось его прибивать).
В-третьих, самое интересное, из-за чего, собственно, я и пишу этот пост - улучшение интеграции с ОС. Речь идёт в новых виндах (Vista/Seven), макоси и, чуть позже, линуксе. Что касается МакОси - пишут следующее:
Пользователи Mac будут приятно удивлены тем, что Opera теперь встраивается в систему как родное Mac приложение, с общей панелью инструментов. Это достигнуто благодаря тому, что Opera for Mac перешла на использование фреймворка Cocoa.
Юниксовая версия пока не вышла, но там тоже обещаются подвижки:
Don't worry, Unix users will not be forgotten. Like Opera for Mac, the Unix version will have some big changes under the platform hood: it will no longer be necessary to have Qt installed. This makes Opera for Unix much faster, smaller and easier to install. Naturally Opera will still integrate well with your desktop environment by supporting KDE/GTK skinning and show open/save dialogs that match your desktop.
Так что вот, возможно, дождались таки. =)

Tags:

Почему wx

Недавно в блоге Бегемота появилась заметка "Почему я стал программировать на wxWidgets". Заметка весьма минималистичная, но тема оказалась интересной для его читателей, поэтому я решил её продолжить =).
Вопрос "на чём писать GUI" у меня встал на старших курсах университета, когда я проходил практику на предприятии и перед нами с mzet82 встала задача разработки программно-аппаратного комплекса для проведения испытаний цифровых устройств. Ранее на предприятии использовался VisualBasic, и я даже написал на нём одну испытательную программу, после чего и решил, что больше я к VB и прочим мелкософтовским поделиям не притронусь =) В дальнейшем разработка комплекса вылилась в мой диплом, а проблема выбора тулкита - в одну из его глав, которую я и публикую ниже.
Read more...Collapse )
Купили тут на работе сей программатор. Точнее, это я, когда заказывал, думал, что покупаю программатор с возможностью отладки, а на самом деле оказалось, что это дебаггер с возможностью программирования. Казалось бы, практически одно и тоже, ан нет - есть свои нюансы. По всей видимости, атмеловцы рассуждали так: этот девайс является отладчиком, значит должен работать с теми контроллерами, которые поддерживают отладку, а всякое старьё идёт лесом. В число изгоев попала и некогда весьма популярная ATmega8, в результате чего штатными средствами AVR Студии с помощью JTAGICE mkII его зашить нельзя. Здравый разум подсказывает, что ISP - он и в Африке ISP и аппаратных проблем быть не должно, что, кстати, подтверждается тем, что АВРдудкой восьмая мега через этот девайс шьётся. Спросил у гугла, гугл сказал, что саппорт атмела советует выбрать ATmega8HVA и шить так. Однако, вопрос с фусами остаётся открытым - даже теоретически контроллеры-изгои не могут быть фузо-совместимыми с привилегированными аналогами, так как для включения/выключния отладочных режимов должны быть соответствующие фузы. Посему решение проблемы должно быть более радикальным:
1) Лезем в самое сердце студии %ProgramFiles%\Atmel\AVR Tools\Partdescriptionfiles
2) Открываем файлы ATmega8.xml и что-нибудь близкое, типа ATmega88.xml
3) В первом файле находим секцию <ICE_SETTINGS> и в подсекции <MODULE_LIST> вписываем JTAGICEmkII
4) Рядом копипастим подсекцию <JTAGICEmkII> из второго файла (там описываются режимы работы дебаггера)
5) Сохраняем файл, запускаем AvrStudio и нормально работаем.

ЗЫ: с коммандлайн программатором jtagiceii.exe чуть сложнее - при запуске jtagiceii.exe -h парсятся все парт-файлы и где-то кешируются. Соответственно, если файл был изменён после первого запуска jtagiceii.exe -h соответствующий контроллер в списке не появится и работать с ним будет нельзя. Лечится это, вероятно, снесением кеша, но где он находится я не знаю (не искал, так как пока не надо было).

Сколько тонн в тонне?

Ковырялся тут недавно в Асконовском справочнике конструктора и поисках различной информации и просматривая содержание всех категорий нашёл раздел "Таблицы перевода единиц измерения". Когда я учился в универе, у нас активно использовался ряд нестандартных величин, которые периодически приходилось переводить в СИ и обратно, по-этому интереса ради решил заглянуть, что там пишут. Пишут там вещи довольно интересные, например, что ряд весьма частых применяемых единиц измерения (например, угл.градус/угл.минута/угл.секунда) на самом деле в СИ не входят, или что есть категория единиц, которые "временно допускаются к применению" - карат (и правильно, давно пора его выкинуть нафиг, что б мозги не пудрить), об/с, об/мин. (наши любимые RPM!) и бар.
Но больше всего меня заинтересовало другое: есть там подраздел под названием "Таблицы перевода единиц измерения США и Великобритании в единицы СИ". При беглом просмотре этого раздела глаз выцепил из текста вот такие вот соотношения:

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

Гибридостроение

На опеннете появилась новость о том, что проект по имплантации ядра FreeBSD в Debian дошел до стадии официальной поддержки. Это значит, что теперь, "Все критические ошибки, связанные с работой kFreeBSD, а также проблемы сборки пакетов для данной архитектуры, отныне будут признаваться как блокирующие выпуск релиза."
Новость очень интересная. Конечно, врятли бсд-шники кинутся срочно переходить на Дебиан с БСД-ядром. Мне вот, на десктопе, было бы интереснее наоборот - Фря и линуховым ядром. Зато, с другой стороны, из этого явно может получиться много пользы для Фряхи. Как минимум это нормальные дрова для EXT2/3, патчи для запуска ряда линух-заточенного софта и тд. Единственное вот интересную тему затронули в комментах - а что там будет с лицензией? Как бы эти дрова не пролетели мимо фряхи из-за GPLя...

Tags:

В обзоре новшеств wxWidgets3 я упоминал, появление нового класса - wxIdManager. В этой статье я хочу подробно рассмотреть новую систему выделения идентификаторов. Несмотря на то, что в большинстве обзоров об этом даже не упоминается, я считаю, что это одно из фундаментальных изменений во внутренней логике библиотеки, наравне с полным переводом на юникод, и изменениями в системе работы с событиями.
Read more...Collapse )
Кросс-пост в wxwidgets.

Функторы

Вопрос, в первую очередь, наверно, к функциональщикам. Может кто-нибудь простым языком объяснить что такое функтор? Собственно, встретил этот термин в доке по свежей ветке wx и полез в гугл смотреть. Конечно, изначально меня интересовал этот термин в контексте C++, но когда я прочитал определение из википедии, мне стало интересно, какое вообще он имеет отношение к C++.
Собственно, если верить википедии, то в математике (или в философии? =)) функтор - это некое особое отображение между категориями. В C++ же под функтором понимают объект класса, перегружающего оператор "()", то есть который можно использовать как функцию. Вот мне и стало интересно, какая связь между этими двумя использованиями одного термина. В Хаскеле, вроде, понятие функторов ближе к математическому определению (как, впрочем, и всё остальное - ведь Хаскель и ФП в общем, как я понимаю, вообще основываются на чистой математике?).

Машина апокалипсиса

Наткнулся сегодня на упоминание некой системы "Периметр". Никогда раньше о ней не слышал, по-этому заинтересовался и полез смотерть, что это такое. Прочитанное в статье на википедии меня впечатлило. Судите сами:
Read more...Collapse )
В общем интересная система, но непонятная =)

Двоичные константы

Я в шоке! Оказывается, в стандарте C не предусмотрена возможность записывать константы в двоичной форме! Оказывается, то, что я в своих программах незадумываясь пишу что-нибудь типа if((*(uint8_t *)&G_timestamp_s & 0b00000001) == 0) - это шаманство и работает только в avr-gcc, а даже взрослый gcc на такое ругнётся "invalid suffix "b00000001" on integer constant"!

Но самое поразительное - чего только народ не придумывает для того, что бы задавать значения в двоичном виде!
Read more...Collapse )

Кстати, об оптимизации

Небольшая заметка себе на память:
допустим есть две переменные

	uint8_t i;
	uint32_t counter;

тогда операции типа

	i = (uint8_t) counter;

лучше писать в виде

	i = *(uint8_t *) &counter;

Три лишних символа в коде убирает три лишних инструкции в бинарнике, причём, эти инструкции двухтактовые, то есть общая экономия - 6 тактов процессора!
А ещё с помощью этого приёма удобно получать доступ к отдельным байтам переменной:

	buf[i] = *((uint8_t *)(&counter)+0);
	buf[j] = *((uint8_t *)(&counter)+1);
Недавно был анонсирован первый релиз development ветки wxWidgets 2.9.0. Об этом я уже писал у себя в журнале, сейчас же хочу поподробнее рассмотреть попавшиеся мне на глаза изменения, касающиеся грядущего 3.0.0.
Read more...Collapse )
UPD (16.09.09): Забыл про один очень важный момент - изменения в механизме динамического связывания. Вместо методов Connect/Disconnect появились новые Bind/Unbind, которые позволяют в качестве обработчика события назначать произвольную функцию. Старые методы пока не объявлены депрекейтед, но это только из-за их повсеместной распространённости и их использование в новом коде не рекомендуется.
UPD (16.09.09): А ещё сегодня добавили новый класс - wxAny, который является альтернативой старому wxVariant, реализованной через шаблоны.
UPD (09.10.09): На этой неделе добавили ещё один новый класс - wxInfoBar. Этот контрол представляет собой небольшую панельку, появляющуюся внутри родительского окна для уведомления пользователя о чём-то не особо важном. По умолчанию закрывается крестиком, но может содержать и обычные кнопки типа Да/Нет/Не знаю. Подобные панельки можно видеть, например, в Acrobat Reader, и в Foxit Reader при открытии pdf-файла с формой (там предлагают раскрасить поля формы).

Кросс-пост в wxwidgets.

С праздником!

Поздравляю всех программеров с официальным профессиональным праздником - днём программиста! Желаю всем эффективного кода, легковылавливаемых багов и всегда интересной работы! Что бы освоение новых технологий было в радость и никогда не приходилось использовать технологии, которые не нравятся!
=)

Profile

лилия, походы
gremlinable
gremlinable

Latest Month

October 2018
S M T W T F S
 123456
78910111213
14151617181920
21222324252627
28293031   

Page Summary

Powered by LiveJournal.com
Designed by chasethestars