Анонсировали новую версию оперы - 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.
Так что вот, возможно, дождались таки. =)
Во-первых они таки починили сортировку в адресс-баре (кто не помнит - с версии где-то 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.
Так что вот, возможно, дождались таки. =)
Недавно в блоге Бегемота появилась заметка "Почему я стал программировать на wxWidgets". Заметка весьма минималистичная, но тема оказалась интересной для его читателей, поэтому я решил её продолжить =).
Вопрос "на чём писать GUI" у меня встал на старших курсах университета, когда я проходил практику на предприятии и перед нами с
mzet82 встала задача разработки программно-аппаратного комплекса для проведения испытаний цифровых устройств. Ранее на предприятии использовался VisualBasic, и я даже написал на нём одну испытательную программу, после чего и решил, что больше я к VB и прочим мелкософтовским поделиям не притронусь =) В дальнейшем разработка комплекса вылилась в мой диплом, а проблема выбора тулкита - в одну из его глав, которую я и публикую ниже.
( Read more... )
Вопрос "на чём писать GUI" у меня встал на старших курсах университета, когда я проходил практику на предприятии и перед нами с
( Read more... )
Купили тут на работе сей программатор. Точнее, это я, когда заказывал, думал, что покупаю программатор с возможностью отладки, а на самом деле оказалось, что это дебаггер с возможностью программирования. Казалось бы, практически одно и тоже, ан нет - есть свои ньюансы. По всей видимости, атмеловцы рассуждали так: этот девайс является отладчиком, значит должен работать с теми контроллерами, которые поддерживают отладку, а всякое старьё идёт лесом. В число изгоев попала и некогда весьма популярная ATmega8, в результате чего штатными средствами AVR Студии с помощью JTAGICE mkII его зашить нельзя. Здравый разум подсказывает, что ISP - он и в Африке ISP и аппаратных проблем быть не должно, что, кстати, подтверждается тем, что АВРдудкой восьмая мега через этот девайс шьётся. Спросил у гугла, гугл сказал, что саппорт атмела советует выбрать ATmega8HVA и шить так. Однако, вопрос с фусами остаётся открытым - даже теоретически контроллеры-изгои не могут быть фузо-совместимыми с привилегированными аналогами, так как для включения/выключния отладочных режимов должны быть соответствующие фузы. Посему решение проблемы должно быть более радикальным:
1) Лезем в самое сердце студии %ProgramFiles%\Atmel\AVR Tools\Partdescriptionfiles
2) Открываем файлы ATmega8.xml и что-нибудь близкое, типа ATmega88.xml
3) В первом файле находим секцию и в подсекции вписываем JTAGICEmkII
4) Рядом копипастим подсекцию из второго файла (там описываются режимы работы дебаггера)
5) Сохраняем файл, запускаем Avr и нормально работаем.
ЗЫ: с коммандлайн программатором jtagiceii.exe чуть сложнее - при запуске jtagiceii.exe -h парсятся все парт-файлы и где-то кешируются. Соответственно, если файл был изменён после первого запуска jtagiceii.exe -h соответствующий контроллер в списке не появится и работать с ним будет нельзя. Лечится это, вероятно, снесением кеша, но где он находится я не знаю (не искал, так как пока не надо было).
1) Лезем в самое сердце студии %ProgramFiles%\Atmel\AVR Tools\Partdescriptionfiles
2) Открываем файлы ATmega8.xml и что-нибудь близкое, типа ATmega88.xml
3) В первом файле находим секцию
4) Рядом копипастим подсекцию
5) Сохраняем файл, запускаем Avr и нормально работаем.
ЗЫ: с коммандлайн программатором jtagiceii.exe чуть сложнее - при запуске jtagiceii.exe -h парсятся все парт-файлы и где-то кешируются. Соответственно, если файл был изменён после первого запуска jtagiceii.exe -h соответствующий контроллер в списке не появится и работать с ним будет нельзя. Лечится это, вероятно, снесением кеша, но где он находится я не знаю (не искал, так как пока не надо было).
Ковырялся тут недавно в Асконовском справочнике конструктора и поисках различной информации и просматривая содержание всех категорий нашёл раздел "Таблицы перевода единиц измерения". Когда я учился в универе, у нас активно использовался ряд нестандартных величин, которые периодически приходилось переводить в СИ и обратно, по-этому интереса ради решил заглянуть, что там пишут. Пишут там вещи довольно интересные, например, что ряд весьма частых применяемых единиц измерения (например, угл.градус/угл.минута/угл.секунда) на самом деле в СИ не входят, или что есть категория единиц, которые "временно допускаются к применению" - карат (и правильно, давно пора его выкинуть нафиг, что б мозги не пудрить), об/с, об/мин. (наши любимые RPM!) и бар.
Но больше всего меня заинтересовало другое: есть там подраздел под названием "Таблицы перевода единиц измерения США и Великобритании в единицы СИ". При беглом просмотре этого раздела глаз выцепил из текста вот такие вот соотношения:
По началу это ввело меня в полный ступор, но глянув чуть выше я понял, дело тут в тоннах: различных вариантов тонны огромное количество и разница в величинах там достигает процентов двадцати.
Так что вот...
Но больше всего меня заинтересовало другое: есть там подраздел под названием "Таблицы перевода единиц измерения США и Великобритании в единицы СИ". При беглом просмотре этого раздела глаз выцепил из текста вот такие вот соотношения:
По началу это ввело меня в полный ступор, но глянув чуть выше я понял, дело тут в тоннах: различных вариантов тонны огромное количество и разница в величинах там достигает процентов двадцати.
Так что вот...
На опеннете появилась новость о том, что проект по имплантации ядра FreeBSD в Debian дошел до стадии официальной поддержки. Это значит, что теперь, "Все критические ошибки, связанные с работой kFreeBSD, а также проблемы сборки пакетов для данной архитектуры, отныне будут признаваться как блокирующие выпуск релиза."
Новость очень интересная. Конечно, врятли бсд-шники кинутся срочно переходить на Дебиан с БСД-ядром. Мне вот, на десктопе, было бы интереснее наоборот - Фря и линуховым ядром. Зато, с другой стороны, из этого явно может получиться много пользы для Фряхи. Как минимум это нормальные дрова для EXT2/3, патчи для запуска ряда линух-заточенного софта и тд. Единственное вот интересную тему затронули в комментах - а что там будет с лицензией? Как бы эти дрова не пролетели мимо фряхи из-за GPLя...
Новость очень интересная. Конечно, врятли бсд-шники кинутся срочно переходить на Дебиан с БСД-ядром. Мне вот, на десктопе, было бы интереснее наоборот - Фря и линуховым ядром. Зато, с другой стороны, из этого явно может получиться много пользы для Фряхи. Как минимум это нормальные дрова для EXT2/3, патчи для запуска ряда линух-заточенного софта и тд. Единственное вот интересную тему затронули в комментах - а что там будет с лицензией? Как бы эти дрова не пролетели мимо фряхи из-за GPLя...
В обзоре новшеств wxWidgets3 я упоминал, появление нового класса - wxIdManager. В этой статье я хочу подробно рассмотреть новую систему выделения идентификаторов. Несмотря на то, что в большинстве обзоров об этом даже не упоминается, я считаю, что это одно из фундаментальных изменений во внутренней логике библиотеки, наравне с полным переводом на юникод, и изменениями в системе работы с событиями.
( Read more... )
Кросс-пост в .
( Read more... )
Кросс-пост в .
Вопрос, в первую очередь, наверно, к функциональщикам. Может кто-нибудь простым языком объяснить что такое функтор? Собственно, встретил этот термин в доке по свежей ветке wx и полез в гугл смотреть. Конечно, изначально меня интересовал этот термин в контексте C++, но когда я прочитал определение из википедии, мне стало интересно, какое вообще он имеет отношение с C++.
Собственно, если верить википедии, то в математике (или в философии? =)) функтор - это некое особое отображение между категориями. В C++ же под функтором понимают объект класса, перегружающего оператор "()", то есть который можно использовать как функцию. Вот мне и стало интересно, какая связь между этими двумя использованиями одного термина. В Хаскеле, вроде, понятие функторов ближе к математическому определению (как, впрочем, и всё остальное - ведь Хаскель и ФП в общем, как я понимаю, вообще основываются на чистой математике?).
Собственно, если верить википедии, то в математике (или в философии? =)) функтор - это некое особое отображение между категориями. В C++ же под функтором понимают объект класса, перегружающего оператор "()", то есть который можно использовать как функцию. Вот мне и стало интересно, какая связь между этими двумя использованиями одного термина. В Хаскеле, вроде, понятие функторов ближе к математическому определению (как, впрочем, и всё остальное - ведь Хаскель и ФП в общем, как я понимаю, вообще основываются на чистой математике?).
Наткнулся сегодня на упоминание некой системы "Периметр". Никогда раньше о ней не слышал, по-этому заинтересовался и полез смотерть, что это такое. Прочитанное в статье на википедии меня впечатлило. Судите сами:
( Read more... )
В общем интересная система, но непонятная =)
( Read more... )
В общем интересная система, но непонятная =)
Я в шоке! Оказывается, в стандарте C не предусмотрена возможность записывать константы в двоичной форме! Оказывается, то, что я в своих программах незадумываясь пишу что-нибудь типа if((*(uint8_t *)&G_timestamp_s & 0b00000001) == 0) - это шаманство и работает только в avr-gcc, а даже взрослый gcc на такое ругнётся "invalid suffix "b00000001" on integer constant"!
Но самое поразительное - чего только народ не придумывает для того, что бы задавать значения в двоичном виде!
( Read more... )
Но самое поразительное - чего только народ не придумывает для того, что бы задавать значения в двоичном виде!
( Read more... )
Небольшая заметка себе на память:
допустим есть две переменные
тогда операции типа
лучше писать в виде
Три лишних символа в коде убирает три лишних инструкции в бинарнике, причём, эти инструкции двухтактовые, то есть общая экономия - 6 тактов процессора!
А ещё с помощью этого приёма удобно получать доступ к отдельным байтам переменной:
допустим есть две переменные
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... )
UPD (16.09.09): Забыл про один очень важный момент - изменения в механизме динамического связывания. Вместо методов Connect/Disconnect появились новые Bind/Unbind, которые позволяют в качестве обработчика события назначать произвольную функцию. Старые методы пока не объявлены депрекейтед, но это только из-за их повсеместной распространённости и их использование в новом коде не рекомендуется.
UPD (16.09.09): А ещё сегодня добавили новый класс - wxAny, который является альтернативой старому wxVariant, реализованной через шаблоны.
UPD (09.10.09): На этой неделе добавили ещё один новый класс - wxInfoBar. Этот контрол представляет собой небольшую панельку, появляющуюся внутри родительского окна для уведомления пользователя о чём-то не особо важном. По умолчанию закрывается крестиком, но может содержать и обычные кнопки типа Да/Нет/Не знаю. Подобные панельки можно видеть, например, в Acrobat Reader, и в Foxit Reader при открытии pdf-файла с формой (там предлагают раскрасить поля формы).
Кросс-пост в .
( Read more... )
UPD (16.09.09): Забыл про один очень важный момент - изменения в механизме динамического связывания. Вместо методов Connect/Disconnect появились новые Bind/Unbind, которые позволяют в качестве обработчика события назначать произвольную функцию. Старые методы пока не объявлены депрекейтед, но это только из-за их повсеместной распространённости и их использование в новом коде не рекомендуется.
UPD (16.09.09): А ещё сегодня добавили новый класс - wxAny, который является альтернативой старому wxVariant, реализованной через шаблоны.
UPD (09.10.09): На этой неделе добавили ещё один новый класс - wxInfoBar. Этот контрол представляет собой небольшую панельку, появляющуюся внутри родительского окна для уведомления пользователя о чём-то не особо важном. По умолчанию закрывается крестиком, но может содержать и обычные кнопки типа Да/Нет/Не знаю. Подобные панельки можно видеть, например, в Acrobat Reader, и в Foxit Reader при открытии pdf-файла с формой (там предлагают раскрасить поля формы).
Кросс-пост в .
Поздравляю всех программеров с официальным профессиональным праздником - днём программиста! Желаю всем эффективного кода, легковылавливаемых багов и всегда интересной работы! Что бы освоение новых технологий было в радость и никогда не приходилось использовать технологии, которые не нравятся!
=)
=)
Вышел первый релиз новой экспериментальной ветки кроссплатформенного C++ тулкита для построения графических интерфейсов wxWidgets 2.9.0. ( Что нового. )
Ветка имеет статус Development Snapshot, то есть релизом, как таковым не является - просто первый срез development ветки для всеобщего тестирования, что знаменует постепенную подготовку к релизу 3.0.0 (вычищение кода, доводка до ума, ловля багов). Третью ветку обещают в следующем году при качественном feedback`е.
Ветка имеет статус Development Snapshot, то есть релизом, как таковым не является - просто первый срез development ветки для всеобщего тестирования, что знаменует постепенную подготовку к релизу 3.0.0 (вычищение кода, доводка до ума, ловля багов). Третью ветку обещают в следующем году при качественном feedback`е.
Недавно в Сети случайно наткнулся на забавный учебник по AVR авторства
di_halt, а точнее, на одну из его глав. Материал там довольно стандартный, тот, кто программирует эти МК не первый месяц врядли найдёт там что-то новое, но иллюстрации - это что-то! Всем, имеющим отношение к МК, смотреть! Автору респект! =)
http://easyelectronics.ru/avr-ucheb nyj-kurs-ustrojstvo-i-rabota-portov-vvod a-vyvoda.html
http://easyelectronics.ru/avr-ucheb
Меня всегда удивляла манера в этих новомодных магазинах развешивать ценники так, что бы покупатель потратил как можно больше сил на определение того, сколько стоит конкретный товар. Уж не знаю, от безолаберности это, или умышленно так делают, но всегда неприятно. Вот, например, полка с булками, много разных сортов, под ней в перемешку висят ценники и попробуй найди какой из них к какой относится. Причём зачастую название на ценнике и название на упаковке порядочно не совпадают и догадываться приходится чисто интуитивно.
( Но иногда это доходит до абсурда. )
( Но иногда это доходит до абсурда. )
Дети, как известно, цветы жизни. А у нас их теперь в общей сложности аж 6 штук, непрерывно бегающих по всему дому в 2 ноги и 10 лапок. Причём мохнатое хулиганьё считает, что самые интересные игрушки в этом доме - это тимофеевские лабиринты, неваляшки, шарики и т.п., а длиннорукое хулиганьё считает соответственно самыми интересными игрушками мохнатых. Поэтому последних регулярно плющат, что, впрочем, пока не сказалось отрицательно на их внешности, в отличие от нервов родителей. Правда прокормить эту ораву уже проблема, даже при том, что хвостатые регулярно доедают всё, что не доел их маленький тиран. Так что мы будем очень-очень благодарны за ссылки на всевозможные дневники, форумы и блоги, где бы можно было хоть как-то пропиарить этих стремительнорастущих (приученых к лотку, миске и выклянчиванию еды у холодильника) животин, с целью их последующей раздачи. ( А для привлечения внимания и энтузиазма вот вам подборка фот этих разбойников, по одной за последние пять дней. )
Nokia выпустила довольно интересный девайс - n900. По сути это продолжение линейки линуховых интернет планшетов n800/n810, только теперь в нём есть полноценный GSM модуль. С точки зрения аппаратной начинки девайс мне очень понравился - есть всё, что надо и даже кое-что, что не надо: GSM/WCDMA с поддержкой GPRS/EDGE A класса (можно одновременно говорить и передавать данные), WiFi, BT, USB-host, GPS, большой сенсорный экран (3.5", 800×480), QWERTY-клавиатура, 256Мб ОЗУ, 32Гб Flash, вспышка (сильно удивлюсь, если её нельзя перевести в режим фонарика) и тд.
Короче, практически коммуникатор моей мечты =), если бы не одно но - почти полное отсутствие функциональных аппаратных кнопок. Видимо, мода сейчас такая пошла. На лицевой панели вообще нет кнопок, аля иФон, по бокам качельки, кнопка камеры и пара неидентифицированных кнопок (одна сдвижная, сильно надеюсь hard-lock девайса, вторая маленькая квадратная с эмблемой, похожей на традиционный знак питания - может кнопка включения?). Мне это очень не нравится - ну не повесишь на четыре кнопки все нужные в быстром доступе функции. Печально...
А что касается Линукса - этот пункт не совсем однозначен. С одной стороны это полноценная ось, к тому же не урезанная (в отличае от Google Android, например), с другой - под WinMobile уже создано много хорошего и полезного софта. Хотя, если верить этой статье, расстановка сил скоро может сильно измениться и не в сторону WinMobile. Да и потом, например, wxWidgets уже адаптирован под Maemo, а значит лично я смогу писать под него софт без особых проблем =).
Короче, практически коммуникатор моей мечты =), если бы не одно но - почти полное отсутствие функциональных аппаратных кнопок. Видимо, мода сейчас такая пошла. На лицевой панели вообще нет кнопок, аля иФон, по бокам качельки, кнопка камеры и пара неидентифицированных кнопок (одна сдвижная, сильно надеюсь hard-lock девайса, вторая маленькая квадратная с эмблемой, похожей на традиционный знак питания - может кнопка включения?). Мне это очень не нравится - ну не повесишь на четыре кнопки все нужные в быстром доступе функции. Печально...
А что касается Линукса - этот пункт не совсем однозначен. С одной стороны это полноценная ось, к тому же не урезанная (в отличае от Google Android, например), с другой - под WinMobile уже создано много хорошего и полезного софта. Хотя, если верить этой статье, расстановка сил скоро может сильно измениться и не в сторону WinMobile. Да и потом, например, wxWidgets уже адаптирован под Maemo, а значит лично я смогу писать под него софт без особых проблем =).
Россия - удивительная страна. Оказывается, там не только все ходят в шапках-ушанках и по улицам разгуливают медведи - ещё там делают винты с круглыми концами. ( Read more... )
Я не фанат Мелкософта, по-этому о новых супер-пупер изобретениях часто узнаю с большой задержкой. Первый раз о риббонах я узнал из заметки на тему GSoC2009. Там говорилось, что в числе проектов, учавствующих в конкурсе есть проект по созданию риббон-контрола для wxWidgets. Ну я посмотрел картинки и, с мыслью "интересно", благополучно забыл об этом. Более близкое знакомство произошло парой месяцев позже - потребовалось мне поставить MSO. Обычно я ставлю 2003-тий, но тогда под рукой оказался дистр только 2007. Ну, интереса ради, запустил толи ворд, толи эксель, потыкал мышкой. Да, всё такое красивенькое, разными цветами переливается, раздражает. Большие и непонятные кнопки в тулбаре при первом взгляде скрывают отсутствие меню. В общем, посмотрел, закрыл, забыл. Но рано или поздно это должно было случиться. ( Read more... )
В общем, совершенно непонятное нововведение, неужели кому-то удобнее работать с ним, чем с классическим фейсом? Может я чего-то не просёк? Может я не правильно их готовлю?
В общем, совершенно непонятное нововведение, неужели кому-то удобнее работать с ним, чем с классическим фейсом? Может я чего-то не просёк? Может я не правильно их готовлю?
Есть у меня задача, критичная к энергопотреблению и, как следствие - к произодительности (чем быстрее выполняется код, тем больше времени остаётся на сон). В рамках оптимизации как мог сокращал время выполнения всех кусков кода. ( И вот, что из этого получилось )
Отсюда вывод: оптимизация - тонкая штука, тут думать надо. =)
Отсюда вывод: оптимизация - тонкая штука, тут думать надо. =)
