И снова о нововведениях в wxWidgets 3.0
September 22nd, 2009 Begemot Posted in Oбщее
Пока я потихоньку, потихоньку пробую тройку (собрал для себя прогу на ней, добавил несколько багов в трекер, жду), народ активно знакомится, исследует и пишет офигенные обзоры новшеств wxWidgets 3. Почитал, узнал много нового, все больше и больше хочу перевести продакшен разработку на тройку:)
September 23rd, 2009 at 9:28 am
ара, я чего то не понимаю?
wxDataViewCtrl* DataView;
…
wxDataViewColumn* column = DataView->GetColumn( 0 );
column->SetWidth( 250 );
так вот, размер столбика данных конечно меняется, но размер заголовока – нет. Это так и было задумано?
September 23rd, 2009 at 9:37 am
Незнаю, не пробывал еще.
Но может надо что-то типа Release, Refresh, …
or you are welcome to trac http://trac.wxwidgets.org/ 🙂
September 23rd, 2009 at 4:09 pm
А Upper Lower для wxString c русской локалью заработали?
September 23rd, 2009 at 8:05 pm
Незнаю, у меня самописная функция для lower\upper case с полной поддержкой юникода под виндой.
http://begemotov.net/wxwidgets/programming/kak-reference-counting-chut-byilo-ne-zastavil-poverit/
September 23rd, 2009 at 9:33 pm
работают
September 24th, 2009 at 12:48 pm
Цитата из статьи: “А сейчас ещё пара слов о грустном: wxWidgets становится чуть менее кросс-платформенным. Официально урезана поддержка GTK+ и MacOS: вместо GTK+ 1.2, GTK+ 2.0 теперь заявлена только GTK+ 2.4 (работа с GTK+ 1.2.10 пока присутствует, но не поддерживается), а МакОСь поддерживается только начиная с версии OS X 10.4, вместо 8.6/9.x, как ранее. Отсутствие ANSI сборки автоматически требует наличия Microsoft Layer for Unicode для запуска wx`овых программ на Windows 95/98/ME. Кроме того, возможно wx`ы теперь не соберутся на некоторых устаревших компиляторах, которые плохо поддерживают работу с шаблонами. Ну и, плюс к этому, стоит отметить увеличение размера скомпилированных бинарников…”
Почему убрали поддержку стандартного Win9x ?
Почему только GTK+ 2.4 ?
Почему только OS X 10.4?
Из-за templates будет скоро откат от VC6 с msvcrt.dll?
Да, печально… а я когда-то мечтал, что wx всё же не пойдёт по пути qt… будет более консервативна, и как следствие, более быстрая, компактная и кроссплатформенная… как-то программеры не знавшие времён ассемблера уже не очень хотят думать о рационализации, поддержке обратной совместимости… всё надеясь на новое железо.
Кстати, самые толковые кодеры, у кого ещё можно поучиться рационализации, эффективности – остались в Demo Scene.
Качните и посмотрите интро Elevated для DirectX9 с музыкой в 4 килобайта (http://demoscene.ru/demo/dl_demo1.php3?533), и на примере этой демки подумайте – действительно ли верной дорогой пошли все эти новомодные разработчики, создавая разбухшие фреймворки, не рационализируя, не оптимизируя код?
Источник: http://demoscene.ru/demo/demo1a.php3?2009
Кстати, это подтверждает и Линус Торвальдс (Linus Torvalds). Линус назвал современное ядро свободной операционной системы Linux “раздутым и огромным”.
Джеймс Боттомли (James Bottomley), процитировал внутреннее исследование Intel. В нем говорится, что производительность Linux падает на два процента с каждым новым релизом – общее снижение производительности за последние десять релизов достигло 12 процентов.
“Мы стали раздутыми и огромными. Да, это проблема”, – прокомментировал Торвальдс. Ядро Linux версии 2.6.31 сильно отличается от быстрой и компактной версии 0.01, которую он написал 18 лет назад. По его словам, в настоящее время сообщество не располагает планом по исправлению ситуации. С появлением в ядре каждой новой функции ситуация становится только хуже, добавил Торвальдс.
September 24th, 2009 at 1:27 pm
А кому нужна 98? есть хотя бы 5% пользователей вхсов для которых это критично? что бы ради это поддержки тормозить развитие и улучшение библиотеки? тоже самое относительно макоса\линукса.
И как бонус к этому получили дофига новых пользователей. было бы у них столько же домашних пользователей сейчас если бы ядро осталось на уровне 0.01?
September 24th, 2009 at 3:23 pm
А зачем поддержка 98-го, если уже и XP в прошлом?
Так же и по Mac OS X. Ни разу на мой сайт не приходили со старых маков( если верить статистике)
ну а про GTK вообще молчу
September 24th, 2009 at 4:02 pm
IMHO, каждая новая версия программы, операционной системы, фреймворка должна быть лучше чем предыдущая. То есть, кроме улучшения функциональности, обратной совместимости и кроссплатформенности, желательно работать быстрее, и занимать меньше места.
September 24th, 2009 at 4:21 pm
Вот только в реальности все строго наоборот 🙂
September 24th, 2009 at 4:35 pm
Это всё бизнес. Пока ты будешь вылизывать следующую версию, конкуренты сделают две. И тебе конец
September 24th, 2009 at 6:10 pm
В реальности может быть и другой вариант. Пока ты будешь вылизывать следующую версию, какие-нибудь китайские конкуренты сделают две глючные, медленные, и большие по размеру программы, окончательно потеряв доверие покупателей к китайским производителям. Затем, при хорошей маркетинговой раскрутке, дизайне, ты на фоне их выигрываешь, благодаря высокому качеству программного обеспечения (лучшей функциональности, малому размеру и высокой скорости выполнения кода). Получаешь много хороших отзывов, дополнительное доверие покупаталей, больше трафика = больше денег.
September 24th, 2009 at 9:23 pm
Человек жалуется на то, что убирают поддержку старых систем и тут же в качестве примера показывает демосцены, которые идут только на DirectX9. А как же пользователи остальных систем, где установлен например DirectX8? Они в пролете? А я еще знаю демки которые идут только на 10. У меня например они уже не идут. Так что ваш пример совсем не в кассу, он показывает, что остальные отказываются от поддержки старых систем намного раньше. А то, что отказались от Win98, так ничего страшного, установили Microsoft Layer for Unicode и работайте дальше.
September 24th, 2009 at 11:18 pm
Aleksey, этот пример действительно не относится прямым образом к wxWidgets, а привёл его только потому, что там очень мощная оптимизация (программная генерация сложных текстур и красивых ландшафтов фотографического качества на основе математических алгоритмов perlin noise, движение камеры, эффекты и музыка) – и всё как-то вместили в 4 килобайта, тогда как “современные” геймдизайнеры с той же версией DirectX-а потратили бы на это десятки мегабайт. Смысл примера в определении границ возможностей (по аналогии). То есть, в теории сделать оптимально можно, стоит только захотеть… уменьшить размер бинарников, повысить скорость выполнения кода. Неужели сейчас это не востребовано? Очень странно наблюдать использование сверхмощных компьютеров с многоядерными процессорами потребляющих сотни киловатт, которые используются в некоторых офисах только в качестве печатной машинки и калькуляционных таблиц. Очень странно всё это. Не ценим электроэнергию?
Считаю, что Win98 и 2000 – по производительности и качеству самые удачные операционные системы MS. Все последующие версии приводят только к замедлению работы и увеличению размера на диске.
September 25th, 2009 at 4:36 am
>> А кому нужна 98?
Когда – нибудь выполняли госзаказы?
Или просто проекты для государственных и бюрократических учреждений?
Так вот там в тз обычно хотят win98.
September 25th, 2009 at 10:02 am
Кстати, да. Мы в своё время (а надо сказать, было это всего три-четыре года назад) Выбрали wxWidgets в качестве платформы для разработки именно за его не требовательность. Тогда стояла задача написать приложение, которое должно было отображать и обрабатывать таблицы размером более полумиллиона элементов, а работать оно должно было на машине со вторым пеньком, 128Мб оперативки и Win98 на борту. Писать на чистом WinAPI не хотелось, а всё остальное оказалось заметно более требовательным к ресурсам. А перепробовали мы тогда, надо сказать, много всего, начиная от VisualBasic заканчивая опен офисом.
Я это к чему – Win98 в некоторых местах всё ещё активно используется. А кое-где можно и Win95 найти. И никуда они с них переходить не собираются. А что касается W2k – так это моя любимая операционка из МСовских. Я её активно использую и везде ставлю.
Так что поддержка старых операционок – это давольно весомы фактор.
September 25th, 2009 at 10:36 am
Без паники. Старые версии библиотеки никуда не денутся. Не приятно конечно, но работать можно.
September 25th, 2009 at 11:04 am
Ну 3-4 года назад я бы тоже бы против отказа от 98. Но все таки 4 года это уже дофига…
Кстати я примерно тогда же перешел на юникод и отказался от поддержки 98 – сил сэъкономило много, сказать что бы я что-то потерял? ну точно утверждать нельзя конечно, но жалоб было мало.
А для тех нескольких процентов народу которым все таки надо поддерживать старые версии, есть 2.8 которая стабильная более-менее, и поддерживается, баги фиксятся.. А не выпускать новый мажорный релиз, ради поддержки старых-старых систем, имхо не правильно.
September 25th, 2009 at 12:39 pm
А никто не знает, собираются ли разработчики wxWidgets
сделать что-нибудь типа как qtScript.
Тоесть расширять wx приложение скриптами, чтобы гуи создавать и работать со всем функционалом wx.
Сейчас меня забросают ссылками на wxPython, wxRuby, wxLua и иже с ними. Не надо, заценил уже.
wxPiton – неудобен, слишком он громоздок.
wxRuby – менее громоздок но еще очень кривой и недоделанный.
wxLua – работает и маленький. Но за неск. дней жесткого траха
так и не получилось инициализировать бинды wx-а для луа.
Хотя отдельными скриптами (вне приложения) все примерчики работают на ура. Да, еще луа с юникодом без доп. гемора не работает.
wxJavaScript – вообще отдельная песня. Совершенно недоделанный проект, в котором даже документации нет.
Короче очень хочется, чтобы разработчики wx встроили в саму библиотеку какой-нибудь скриптовый двиг. Ато уже надоело изучать новые библиотеки и натыкаться на кучу недоделанностей и багов.
September 25th, 2009 at 2:30 pm
А старое кому надо? У меня не было ни одного проекта, где была нужна старая версия GTK+
Аналогично. Это старье никому не надо. Деньги зарабатываются не на этом.
То же самое. Здесь нет денег. Хотите чтобы был мир во всем мире и ваше ПО юзали на неподдерживаемых ОС? ОК, ваше право. А я хочу чтобы мой бизнес развивался, и платят мне не за поддержку 9x
И? ну будет. Мало ли бесплатных компиляторов. Счастье отлично наступает и с Code::Blocks/MinGW
Она и сейчас ужасно консервативно и тащит за собой кучу ненужных вещей для поддержки всякого старья. Теперь хоть немного лучше стало… А шаблоны это токльо плюс. неумение ими пользоваться не оправдывает вас в глазах ваших клиентов.
И? Вы хотите сказать что использование новых фич или, например, шаблонов, скажется хуже на качестве кода и на размере? Вы сравнивали размеры бинарников WTL и MFC? WTL, между прочем, вся на шаблонах. И как бы, ну.. она рулит.
Вот-вот.. и после этого все нормальные люди пишут “will not work with developers from India or pakistan”. Как раз потому что те производят кизяк вместо кода.
А я считаю что Win7… На вкус и цвет фломастеры разные. XP лучше чем 9x в разы, кстати.
September 25th, 2009 at 2:32 pm
2dd
ИМХО личное.. список по мере приемлемости:
– wxPython
– wxRuby
– wxLua
– wxJS
September 25th, 2009 at 2:35 pm
А ты пытался его использовать как отдельный язык. Или как скриптовый язык для с++ приложения? Если последнее, не расскажешь подробнее или можешь послать на урл, давно хочу попробовать использовать питон внутрях с++ проги, вроде такое должно быть можно?
September 25th, 2009 at 2:51 pm
>> Если последнее, не расскажешь подробнее или можешь послать на урл, давно хочу попробовать использовать питон внутрях с++ проги, вроде такое должно быть можно?
Так он для этого и создавался вроде. Как встраиваемый язык.
Очень распространен в играх.
А какую ссылку ты хочешь? На гугл? =)
Вот что пишут непосредственно про wxPython
wxpython is very versatile. it can be used to create standalone gui applications, or in situations where python is embedded in a c++ application as an internal scripting or macro language.
Где найти инфо, думаю разберешься )
September 25th, 2009 at 8:41 pm
Я просто привык рассматривать wxPython как отдельный самостоятельный язык, и все туториалы\статьи что я видел были именно про самостоятельное использование.
А вот информации о встраивании в с++ приложение пока не попадалось, думал ты знаешь, простенький туториал и главное пример чтобы скачал, скомпилил – и убедился что работает:) Правда я пока еще не искал, это пока так в мечтах и я на будущее спрашиваю. Понадобится пойду в гугл конечно.
September 25th, 2009 at 9:16 pm
А это что?
C:\wxPython\wxPython-src-2.8.10.1\wxPython\samples\embedded
=))
September 25th, 2009 at 9:29 pm
Ну дык это же надо иметь wxPython установленный 🙂
Спасибо за наводку, записал, обязательно посмотрю!
October 1st, 2009 at 11:39 am
Переходите на WTL!!!
загляните на досуге cbum.hut1.ru
October 1st, 2009 at 3:50 pm
2cbum
Да щаз, все побежали под Linux/Mac переходить на WTL!
October 1st, 2009 at 4:07 pm
А что это такое? 🙂
October 4th, 2009 at 2:35 am
Очень не нравится, что под виндой будет только UTF-16.
Это же неудобно ((
Чем очень удобен UTF-8, так это тем, что не может содержать нулей в теле текста.
Поэтому с таким текстом легко работать как с обычной C строкой – заканчивающейся нулем.
Потом UTF-8 уже давно де-факто стандарт в юникс-системах.
В БД, например на постгресе или mysql давно использую utf8.
Теперь лишние телодвижения.
October 4th, 2009 at 8:10 am
Так это вроде только в нутрях будет, а снаружи все будет как и было.
October 4th, 2009 at 3:07 pm
>> Так это вроде только в нутрях будет, а снаружи все будет как и было.
Если так, то круто )
Этой ночью решил попробовать 2.9.0.
Качнул с http://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_9_0_BRANCH/
Собрал под вынь:
mingw32-make -f makefile.gcc BUILD=release
В итоге семплы от 7 до 9 мегабайт о_0. Как – то странно.
Это я накосячил?
October 4th, 2009 at 4:45 pm
dd
http://begemotov.net/wxwidgets/common/alliluya-wxwidgets-3-0-budet-zhit/
October 4th, 2009 at 7:55 pm
это я читал. но у тебя речь о других размерах идет
October 4th, 2009 at 8:09 pm
Ну у меня дебаг с этим багом был порядка 6-7 метров в вижуал студии, с gcc как раз будет под 9 так что все ок 🙂
В 2.9.0 небось это еще не пофиксили, а зачем вообще 2.9.0 брать, почему не trunk?
October 4th, 2009 at 8:20 pm
Так в том и дело что релиз (
Думаю там еще много таких багов, будем ждать )
October 7th, 2009 at 4:04 pm
Может. Код на стандартных шаблонах медленно работает (например, сравните скорость трёхмерного движка Irrlicht (вообще без STL) и OGRE3D (с экстенсивным использованием STL)). Irrlicht однозначно выигрывает по скорости. Шаблоны неудобочитаемы, особенно в убогой STL реализации имён (это по поводу качества кода и его поддержки). Иногда выгоднее кое-что писать на чистом C с использованием таких библиотек как C Algorithms (http://c-algorithms.sourceforge.net/). Получится лучше и быстрее чем на шаблонах.
По поводу MFC vs WTL. Однозначто выигрывает MFC. Если линковать динамически к MFC42.dll (MFC42u) на шестой студии, размер бинарников получается где-то от 15 килобайт. Если всё тоже самое GUI делать даже в чистом Win32 API (даже без WTL) размер окажется значительно больше (в 3-4 раза как минимум).
К тому же, под MFC написано больше готового кода, и MFC легче портировать на wxWidgets.
IMHO, wxWidgets выигрывает у Qt ещё и тем, что в линуксе работает под GTK (т.к. Ubuntu и Red Hat идут под GNOME, а если установлен KDE – тоже всё прекрасно работает). То есть, получается у программ wxWidgets – больший охват линукс пользователей.
October 7th, 2009 at 5:26 pm
Ммм? Вы готовы финансировать разработку и поддержку ПО на WinAPI со своего кармана? Я – нет. Я хочу быстол и дешево. То же относится и к VS6. Если девелопер на VS2008 работает хотя бы на 30% быстрее (пускай даже банально из-за более толкового IntelliSense), то это уже значительный выигрыш в себестоимости разработки.
Про динамическую линковку – хорошая шутка. Вон на MinGW с динамической линковкой тоже получаются маленькие бинарники… зато зависимостей…. стопицод. по меньшей мере такое сравнение некорректно. И вроде MFC42*.dll в Vista и Win7 не поставляются (могу ошибаться), так что ДЛлки таскать с собой все равно прийдется.
Еще раз, неумение пользоваться шаблонами и/или непонимаение как они работают, никак не оправдывает вас в глазах заказчика. Это только ваша личная проблема. Можете сэкономить деньги на разработке – вы в выигрыше, не можете – вы аутсайдер.
October 7th, 2009 at 9:58 pm
Если будет очень надо, то готов. Даже есть библиотека Win32++ для этих целей (аналог MFC – http://win32-framework.sourceforge.net). Но бинарники MFC с динамической линковкой под MFC42.DLL всё же получаются меньше размером, и сам код в принципе похож на аналогичный в wxWidgets, так что это очень удобно! Есть ещё MFC42U.DLL – юникод (поставляется начиная с Win2000 и (Win98 with Microsoft Layer for Unicode)).
MFC42.DLL и MSVCRT.DLL поставляются во всех версиях Windows начиная с Win98. Ничего таскать не придётся. Минимальный размер приложения сжатый upx – получается около 15 килобайт. Можете сами проверить откомпилировав исходники из MSDN 2001 года.
Ну, если вас не волнуют вопросы оптимизации кода по размеру и скорости, то наверное вы здесь правы, хотя среда разработки не зависит от языка. На С++ можно писать и под Code::Blocks и под Eclipse и под многие другие IDE. Тем не менее, IMHO, визарды шестой студии удобнее интегрированы под MFС.
Ну, если попадётся такой заказчик с претензиями обязательного оправдывания, который из-за отсутствия шаблонов не хочет быть аутсайдером, то специально для него напишу всё на шаблонах. 🙂
December 6th, 2009 at 9:52 am
Если я правильно понял из ридми там надо скомпилить самому вх, питон, и использовать вх только в длл. Правильно? Что-то необходимость самому собирать питон и потом это все совмещать меня пугает:(
Ни у кого случайно ехе уже готового нету?:)
December 15th, 2009 at 5:24 pm
2T-Rex
Я про Win имел в виду
2Сергей
Windows Template Library (библиотека “форточных” шаблонов)
простроена на WinAPI
December 15th, 2009 at 8:32 pm
это была ирония мой друг. я программирую под linux/mac
December 16th, 2009 at 4:06 pm
это была ирония мой друг. я программирую под
linux/mac
Похоже тут все для “них” пишут (можно было догадаться).
Если не секрет, какую IDE юзаешь? для mac, для linux?
December 16th, 2009 at 4:45 pm
Code::Blocks, вернее связку Code::Blocks + wxWidgets + gcc на всех трех платформах ( Windows/Linux/Mac OS X )
December 16th, 2009 at 5:51 pm
Я тут кстати недавно codelite поставил, правда дальше поставил пока не пошло – квн кончился:) а убунту у меня на ноуте, так играюсь в свободное время, но codelite произвела более чем приятное впечетление… Правда ставить надо с сайта, в репозитории старая версия.
December 16th, 2009 at 10:27 pm
А в чем заключаются “приятные впечатления”? 🙂
December 17th, 2009 at 12:17 am
Да пока ничего конкретного – говорю же только поставил – 20 минут по игрался, но в целом – вот что то такое приятное..:) Бывает так видишь, прогу – и сразу ясно хорошая:) Конечно кучу проблем я еще найду и матерится тоже буду, но первое впечатление хорошее.
Видел что вроде может импортировать проекту вижуал студии – если нормально работает, то вообще супер, для начала