Показали мне недавно интересное приложение, под которое можно разрабатывать плагины. Приложение оказалось очень полезным для научной работы, но вот незадача — приложение разработано под Windows, у меня стоит Ubuntu. Windows для разработки под это приложение от лаборатории получить пока не удалось. Чтобы не тратить время, решил освоить кросс-компиляцию и отладку этого приложения.
Итого, имеется:
Ubuntu 12.10 x64
Не-юникодное приложение Мастерская Граф-Моделей (МГМ) (В командах консоли будет называться gmw.exe)
Нужно:
Разрабатывать и отлаживать плагины (dll-библиотеки), не устанавливая Windows.
И тут нам помогут Wine, Code::Blocks, портированное GDB, и boost.
Wine, не юникодное приложение, английский интерфейс Ubuntu и русский язык
При попытке открыть не юникодное приложение под Wine
wine gmw.exe
получаются зюки следующего вида:
На эту проблему интернет очень быстро дает следующую подсказку:
LC_ALL=ru_RU.UTF-8 wine gmw.exe
В моём случае, данный подход не улучшил ситуацию ни на йоту.
Как выяснилось, русских локалей в системе не было добавлено (тыц).
sudo echo "ru_RU.UTF-8 UTF-8" >> /var/lib/locales/supported.d/ru
sudo locale-gen ru
Теперь запускаем с выше-указанной подсказкой
LC_ALL=ru_RU.UTF-8 wine gmw.exe
И, вуаля, запускается приложение с читаемым русским текстом:
Настройка IDE Code::Blocks для кросс-компиляции и отладки
Установка Code::Blocks
В дальнейшем для отладки нам потребуется менять код плагина отладки поэтому лучше сразу взять версию Code::Blocks из под svn.
Устанавливаем svn:
sudo apt-get install subversion
С помощью svn получаем код C::B, для этого переходим в папку, в которую хотим сохранить код C::B, где и набираем:
svn checkout svn://svn.berlios.de/codeblocks/trunk
Переходим в полученную папку ‘trunk’.
Компиляция C::B происходит с помощью g++, autotools, automake и некоторых других утилит, которые необходимо установить:
sudo apt-get install libtool autotools-dev automake autoconf g++ libhunspell-dev libgtk2.0-dev libgamin-dev libboost-dev
Кроме того Code::Blocks зависит от wxWidgets:
sudo apt-get install libwxgtk2.8-dev
Подстраиваем установщик под компьютер (можно запускать единожды):
sudo ./bootstrap
И дальше, устанавливаем сам codeblocks (ключ —prefix можно упустить для использования настроек по-умолчанию):
sudo ./configure --prefix={Путь по которому устанавливать} --with-contrib-plugins=all
sudo make
sudo make install
Более подробно можно посмотреть по ссылке.
Настройка компиляции и линковки
Выполняем пункты с 1 по 5 с форума Code::Blocks. После этого компиляция программ должна работать, если не используется линковка к платформо-зависмым библиотекам (линковка с boost::regexp будет рассмотрена позже).
(*) В новом Code::Blocks немного изменилось меню по сравнению с инструкцией. Настройки искать нужно в ‘Settings->Compiler…’. Для старого Code::Blocks (10.05) пункт 5 нужно выполнить полностью, для нового же (12.11) настройку касающуюся gdb в 5 пункте пока трогать не будем.
Если используется boost его лучше положить отдельно от /usr/include, т.к. по этому адресу лежит много linux-специфичных заголовочных файлов, которые мы не хотим включать в проект при компиляции под Windows.
UPD: При настройке линковки в поле «Other Linker Options» имеет смысл добавить опцию «-Wl,—subsystem,windows,—kill-at», которая помечает, что это реально Windows DLL, и, что самое главное, запрещает использовать декорирование символов (—kill-at) при экспорте функций с соглашением вызова __stdcall. Подрбнее здесь и здесь.
Начиная с пункта 7 по ссылке выше, описывается кросс-отладка, но, к сожалению, insight.exe, упоминающийся в инструкциях, найти не удается. Поэтому пойдем своим путем.
Кросс-отладка в Code::Blocks & MingW32 gdb для Windows
gdb, который является родным для линукса частично умеет отлаживать Windows приложения, правда, умеет он только останавливаться на исключениях и почти всегда игнорирует точки останова. Чтобы справиться с этими проблемами скачиваем gdb в пакете mingw32 под Windows. Для этого скачиваем и затем распаковываем и переходим в подпапку ‘bin’. Устанавливаем gdb под Windows:
wine mingw-get.exe install gdb
Теперь в этой же папке bin появился файл gdb.exe, он-то нам и нужен.
Создаем скрипт для имитации обычного gdb для этого в файл /usr/bin/i586-mingw32msvc-gdb
sudo gedit /usr/bin/i586-mingw32msvc-gdb
Заносим следующие строки:
#!/bin/sh
wine {Path to mingw}/bin/gdb.exe $@
Для старого C::B все уже настроенно, для нового же отладчик нужно настроить дополнительно. В пункте ‘Settings->Debugger’ кликаем по ‘GDB/CDB debugger’ затем по ‘Create Config’. В новом конфиге меняем команду запуска отладчика на ‘/usr/bin/i586-mingw32msvc-gdb’, остальные настройки по желанию. После этого идем в ‘Settings->Compiler…», в пункте ‘Selected Compiler’ выбираем тот компилятор, который настраивали до этого и затем на вкладке ‘Toolchain executables’ меняем ‘Debugger’ на наш свежесозданный конфиг. Теперь отладчик будет останавливаться на точках останова, хотя и остановить программу в произволльный момент не сможет (данная проблема пока еще не решена). Правда при попытке отладить,C::B выдает следующую ошибку:
The program has stopped on a breakpoint but the breakpoint format is not recognized:
0x1A0x1AZ:{ПутьДоФайлаСТочкойОстанова}/SamplePlugin.cpp:48:948:beg:0x68087599
Эта ошибка говорит о том, что плагин отладчика в C::B не понимает выдачу отладчика gdb.exe. Как выяснилось при ближайшем рассмотрении плагин отладчика имеет платформо-зависимый код, и вот тут-то и нужно вспомнить что у нас есть исходники C::B. Мы сейчас слегка подкоррекируем код этого плагина. Нужно будет поменять код только одного файла ‘{Path to svn code of Code::Blocks}/src/plugins/debuggergdb/gdb_driver.cpp’
Для этого нужно перейти в корень проекта C::B (откуда запускалась команды ./bootstrap), по умолчанию это папка ‘trunk’. И накактить патч:
patch --unified --strip=0 --forward --input=gdb_driver.cpp.patch
Ну и пересобираем Code::Blocks:
sudo ./configure --prefix={Путь по которому устанавливать} --with-contrib-plugins=all
sudo make
sudo make install
И почти все готово, остается только создать проект. Шаги 12-13 по ссылке. Если же вы хотите создать проект dll-библиотеки, то указывайти создание динамической библиотеки в мастере и переименовывайте разширение в dll.
Проверям, что в настройках проекта стоит выбранная нами цепь компилятор-линкер-отладчик. ‘{Правая клавиша на проект}-Build Options…’ пункт ‘Selected compiler’, и можно радоваться и отлаживаться. Напомню, что по какой-то причине отладчик не может быть прерван во время исполнения, т.е. все отладочные действия могут буть применены только во время останова программы. В частности нельзя поставить новую точку останова, если программа не стоит на какой-либо другой точке останова…
Линкование статической библиотеки boost’а
Библиотека boost в основном является набором заголовочных файлов, и потому никаких проблем с линковкой обычно не возникает. Но для некоторых частей boost’а необходимо линковаться к статической библиотеке, например, boost::regex. Пробуем собрать проект и получаем:
{...}/boost/regex/v4/cpp_regex_traits.hpp|1059|undefined reference to `boost::scoped_static_mutex_lock::scoped_static_mutex_lock(boost::static_mutex&, bool)'
Ошибка возникает из-за того, что мы пытаемся прилинковаться к linux билиотеке, для того чтобы построить windows-приложение.
Чтобы слинковаться нужно скомпилировать boost::regex с помощью MingW32 (про кросс-компиляцию). Скачиваем boost, распаковываем и переходим в папку с распаковынным boost’ом. Создаем файл user-config.jam в корне домашней директории:
gedit ~/user-config.jam
Со следующим содержанием:
using gcc : : i586-mingw32msvc-g++ ;
Дальше настраиваем сборку и собираем:
sudo ./bootstrap.sh --with-libraries=regex --without-icu
sudo ./b2
После выполнения последней команды у меня были ошибки «failed updating 1 target», что, правда, не мешает собираться программам.
В результате, у нас есть полностью подготовленная среда для написания, сборки и отладки Windows-приложений или Windows-библиотек из под Linux. Теперь можно приступать к работе…
Как настроить полноценное окружение разработчика, привыкшего к Linux и Mac OS X.
Традиционно считается, что разработчики (в особенности связанные с бэкенд-разработкой) предпочитают использовать unix-like-системы. Причиной тому было немало. Ситуация начала несколько меняться в 2017 году — именно тогда вышел первый стабильный релиз Windows Subsystem for Linux (также известен под более ранним названием BashOnWindows), который дал разработчикам то, чего они так давно ждали, — полноценный Linux в качестве приложения в Windows!
Но не всё оказалось так просто — лишь к концу 2018 года WSL стало возможно использовать полноценно, при этом способ отнюдь не очевиден. О нём и пойдёт речь.
Конечная цель
Для начала пара слов о том, что такое вообще Windows Subsystem for Linux, он же WSL в сокращённом варианте. Это прослойка между ядром Windows и приложениями для Linux, которая позволяет преобразовывать системные вызовы к ядру Linux в вызовы к ядру Windows. Благодаря тому, что виртуализация практически отсутствует, такое решение работает быстрее традиционной виртуализации, где эмулируется целый компьютер, как это происходит в Oracle VirtualBox и VMWare Player.
Кроме того, WSL включает в себя целый ряд утилит для интеграции с Windows — пути в файловой системе автоматически преобразовываются в нужный формат, из-под Linux можно запускать приложения в Windows (но не наоборот!), Linux в WSL имеет доступ ко всем портам и сервисам в Windows.
Для разработчика основное применение WSL сразу же видится в развёртывании среды разработки именно там. Всё же установка многих языков, компиляторов и интерпретаторов, утилит происходит в Linux куда проще — часто одной командой из репозитория. Да и привычная консоль под рукой.
В статье будет рассматриваться именно настройка среды разработки в WSL — для примера возьмём небольшой проект, написанный на Python/Angular/Go (а почему бы и нет?), разрабатываемый в Visual Studio Code. Однако описанные рекомендации в целом подойдут для любого другого редактора или IDE.
Установка для Windows 10 x64
Важный момент: WSL официально поддерживается только в Windows 10 x64, начиная с Anniversary Update. Если у вас иная версия — альтернативное решение представлено в следующем разделе.
- Включить поддержку Windows Subsystem for Unix, открыв PowerShell от администратора и выполнив команду:
PS C:Windowssystem32> Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
- Если у вас установлена десктопная редакция Windows 10: зайти в Microsoft Store и установить необходимый вам дистрибутив. Для нашего эксперимента будет использована Ubuntu 18.04 LTS. Затем вы сможете запустить ваш дистрибутив через меню «Пуск».
- Если у вас установлена иная редакция Windows, без Microsoft Store (например, Windows 10 LTSC либо Windows Server): в PowerShell выполнить следующие команды:
PS C:Windowssystem32> cd ~
PS C:Userssomebody> Rename-Item .Ubuntu.appx .Ubuntu.zip
PS C:Userssomebody> Expand-Archive .Ubuntu.zip .Ubuntu
PS C:Userssomebody> cd .Ubuntu
PS C:Userssomebody> .ubuntu1804.exe
При первом запуске необходимо задать ваши логин и пароль.
Далее уже вам откроется консоль с Ubuntu.
Установка для 32-битных редакций Windows 10 и Windows 7, 8 и 8.1
К сожалению, на этих редакциях WSL не поддерживается. Но мы можем без особого труда заменить его Vagrant — мощной утилитой для конфигурирования виртуальных машин. Vagrant работает поверх других сред виртуализации: VirtualBox, VMWare Player или Microsoft Hyper-V. Поэтому стоит понимать, что такой вариант будет по умолчанию медленнее, нежели WSL. А в случае с VirtualBox значительно медленнее из-за файловой системы vboxsf.
Установить Vagrant можно с официального сайта. Также вам потребуется VirtualBox и Git. После этого создайте папку для вашей виртуальной машины, в ней создайте файл Vagrantfile со следующим содержимым:
Vagrant.configure(«2») do |config|
config.vm.box = «bento/ubuntu-18.04»
config.vm.synced_folder «c:/», «/windows»
# Необходимо указать для каждого порта, который вы хотите расшарить из ВМ или в ВМ
config.vm.network :forwarded_port, host: 5432, guest: 5432
config.vm.provider «virtualbox» do |vb|
vb.memory = 2048
end
end
После чего в том же PowerShell или cmd выполните команду:
vagrant up
После загрузки, настройки и запуска виртуальной машины вы попадёте в консоль Linux. Ура!
Устанавливаем всякие скучные вещи
Разворачиваем наше окружение под Python/JS/Go.
:~$ sudo apt update
:~$ sudo apt install build-essential
:~$ sudo apt install -y git nodejs golang python-dev libreadline-dev libbz2-dev libssl-dev libsqlite3-dev libxslt1-dev libxml2-dev libffi-dev
:~$ curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
:~$ # Инсталлятор попросит вас добавить загрузку pyenv в ~/.bashrc
:~$ source ~/.bashrc
:~$ pyenv install 3.7.2
:~$ pyenv global 3.7.2
Быстро проверяем работоспособность версий и, собственно, версии:
:~$ nodejs -v
v8.10.0
:~$ go version
go version go1.10.4 linux/amd64
:~$ python -V
Python 3.7.2
:~$
Неужели всё уже работает?
Конечно нет.
Сразу стоит отметить важный факт: ни Visual Studio Code, ни Sublime Text, ни даже ваша любимая IDE ничего не знают о существовании WSL. Из коробки более-менее с ним умеют работать только продукты от JetBrains. Лично мне Visual Studio Code по настройке, скорости работы нравится куда больше (но это текстовый редактор, о чём не стоит забывать).
И единственное, что вы можете сделать в Visual Studio Code, установленной на Windows, — подключить себе WSL вместо стандартного PowerShell в терминале. Это делается в User Settings:
{
«terminal.integrated.shell.windows»: «C:\Windows\System32\wsl.exe»,
# Добавьте сюда иные настройки по вашему усмотрению
}
На этом всё. Про линтер, автодополнение кода из библиотек, подсветку ошибок можете забыть, по крайней мере для Python. Способа решения сообщество ждёт вот уже три года. Сейчас самый простой и действенный способ заставить его работать — установить в WSL.
- Установите MobaXterm и Cmder. Конечно, вы можете по своему выбору заменить их на альтернативные приложения. MobaXterm — мощный SSH-терминал со встроенным X-сервером, что позволяет ему рендерить приложения, которые запускаются на удалённом X-сервере (в данном случае — внутри WSL). Cmder — локальный эмулятор терминала с поддержкой PowerShell, cmd, bash, WSL и не только, с нормальным копипастом.
- Запустите Cmder. По умолчанию он запустит cmd, но при двойном клике на нижнюю панель покажет окно, где есть возможные варианты.
- Нам нужен тот вариант, что отмечен как {WSL::bash}. Он запустит в новой вкладке консоль внутри WSL.
- Запустите MobaXterm. Он сразу же увидит WSL, установленную в системе. Для запуска X-сервера нажмите выделенную на скриншоте кнопку.
- Настроим WSL для запуска GUI-приложений. Для этого откройте файл ~/.bashrc и допишите в него:
export DISPLAY=:0
- После этого выполните команду source ~/.bashrc для применения изменений.
- Не обязательно, но желательно установить XFCE (или другой DE на ваш вкус), а также поставить шрифты, иначе от внешнего вида VS Code у вас, возможно, вытекут глаза. По крайней мере, люди жалуются.
:~$ sudo apt install -y xfce4
:~$ sudo apt install -y fonts-noto fonts-noto-hinted fonts-noto-mono fonts-noto-unhinted
- Скачайте установщик Visual Studio Code с официального сайта.
- Установите зависимости и сам VS Code:
:~$ sudo apt install libgtk2.0-0 libxss1 libasound2
:~$ sudo dpkg -i <code deb file>
:~$ sudo apt install -f
- Запустите VS Code при помощи команды code.
Вот теперь работает Ещё более кратко и по сути расписано вот тут.
Однако до совершенства есть ещё один штрих.
{
…
«window.titleBarStyle»: «native»,
…
}
Добавьте приведённую выше настройку в User Settings. В противном случае окно VS Code не будет ресайзиться.
А ты ещё докажи, что работает
Разворачивается оно стандартно для подобного рода проектов.
# You are on a project root
:~$ python -m venv env/
:~$ source env/bin/activate
:~$ pip install -r requirements.txt
:~$ cd frontend
:~$ npm install
:~$ ng build outDir=../backend/microblog/static
:~$ cd ../backend
:~$ python manage.py runserver
Отличия в настройке между Vagrant и WSL
Единственное существенное различие в контексте статьи — необходимость пробрасывать порты в хостовую файловую систему. По умолчанию Vagrant поднимает SSH-туннель на порту 2222 — именно туда вам будет необходимо логиниться из Cmder и добавить соответствующее соединение в MobaXterm.
Более подробно об использовании Vagrant с MobaXterm можно прочитать по ссылке.
Итоги
Но стоит заметить, что даже подобные извращения могут помочь многим людям, вынужденно сталкивающимися с… не всегда очевидным поведением новой технологии от Microsoft.
Содержание
- Разработка графических приложений под Linux для Windows Программистов.
- С чего начать?
- Начинайте с того что нравится
- Выбор инструментов
- Проприетарная помощь
- Мне нравится нативный вид
- wxWindows
- Итак. Какие виджеты я использую?
- Выбор текстового редактора
Разработка графических приложений под Linux для Windows Программистов.
С чего начать?
Anthony Barker
Переходя с Windows на Linux вы начинате путаться в куче опций. QT или GTK+? Какой язык использовать: c/c++/java/perl/tcl/python/ruby или javascript? Должен ли я использовать коммерческие/проприетарные laypout/rad инструмента (QT или Kylix), либо opensource? А Mozilla? Я умею программировать в Visual Basic и Lotus Notes (Basic, Java, C / C + + API). С чего мне начать?
Начинайте с того что нравится
Я знал, что я люблю язык программирования Python, с его способностью сделать программирование «как можно более простым, но не простейшим» (Эйнштейн). Он позволяет программировать на высоком уровне и ваш разум освобождается для работы по другим вопросам. Поскольку структура кода является неотъемлемой частью языка я считаю, что такой код другим людям гораздо легче читать и понимать. Отсутствие необходимости компилировать экономит мне время на отладку и тестирование. Сбор мусора — это то, что я считать само собой разумеющимся. Так же я могу выбрать подходящий для меня стиль программирования, будь то процедурное, функциональное, объектно-ориентированное или смесь — за счет чего я могу выполнить работу более быстро и эффективно. Приложения могут быть заморожены — сделать для облегчения распространения. Наконец, «batteries included» характерное для Python библиотек способствует повторному использованию кода и скорости развития.
Тем не менее, язык программирования, в идеале не должно быть вашим главным критерием в отборе GUI Toolkit — так что я сделал обследование имеющихся инструментов.
Выбор инструментов
Я рассмотрел TK(2), GTK+(3), QT(4), wxWindows(5), MFC, Windows Forms (.NET), Swing (Java), и FOX(6) и пришел к следующим критериям оценки инструментов:
- Шаблонизация (Kylix, QT, GLADE)
- Интерфейс — Объектно-ориентированный язык или полу-OO
- Завершенность инструмента
- Количество и типы виджетов
- Качество виджетов/контролов
- Потребление ресурсов и Быстродействие
- Поддержка кроссплатформенности
- Лицензия
- Поддержка кросс-языковости
- Нативный вид (часто важно для пользователя)
- Масштабность сообщества разработчиков
- Документация
- Легкость изучения
И дополнительно:
Результаты:
Оценка до 5 | TK | GTK+ | QT -Kylix | QT | wxWindows | MFC | Windows Forms | Swing | FOX |
Шаблонизация (Kylix, QT, GLADE) | 2 | 4 | 5 | 5 | 4 | 3 | 5 | 4 | 3 |
Интерфейс — Объектно-ориентированный или полу-OO | 2 | 2 | 5 | 5 | 5 | 3 | 5 | 5 | 5 |
Завершенность инструмента | 4 | 4 | 5 | 5 | 4 | 5 | 3 | 3 | 3 |
Количество и типы виджетов | 3 | 4 | 5 | 5 | 4 | 3 | 5 | 3 | ? |
Качество виджетов/контролов | 3 | 4 | 5 | 5 | 5 | 4 | 5 | 4 | ? |
Потребление ресурсов и Быстродействие | 4 | 5 | 5 | 5 | 5 | 5 | 5 | 2 | ? |
Поддержка кроссплатформенности | 5 | 5 | 4 | 4 | 5 | 1 | 1 | 2 | 5 |
Лицензия |
5 | 5 | 1 | 1 | 5 | 4 | 2 | 2 | 5 |
Поддержка кросс-языковости | 5 | 5 | 1 | 4 | 5 | 2 | 4 | 1 | ? |
Нативный вид (часто важно для пользователя) | 1 | 3 | 5 | 5 | 5 | 5 | 5 | 1 | 5 |
Масштабность сообщества разработчиков | 3 | 4 | 4 | 4 | 4 | 5 | 5 | 4 | 3 |
Документация | 4 | 3 | 4 | 5 | 4 | 2 | 3 | 4 | 2 |
Легкость изучения | 4 | 3 | 4 | 4 | 4 | 1 | 3 | 2 | ? |
Весомый итог | 55 | 61 | 60 | 64 | 69 | 48 | 54 | 41 | |
Невесомый итог | 45 | 51 | 54 | 58 | 59 | 43 | 51 | 37 |
Проприетарная помощь
Три или четыре варианта попираются на вершину. QT и Kylix оба предлагают великолепные, довольно простые в использовании RAD среды. Тем не менее, я использовал FoxPro и Lotus Notes — и я очень устала от собственных решений (оба поддерживают Unix, но я забросил это дело). Закрытость инструмента может очень негативно сказаться на вашем приложении в будущем. Компании создавшие ваше ПО могут принять решение об изменении направления и больше не вкладывать средства в ваш инструмент — и ваше приложение или устаревает, или умирает. Если вы разрабатываете приложение с открытым кодом на QT — вы ограничены в соответствии с лицензией на открытый код. Дорогое лицензии могут быть необходимы для портирования кода на Mac или Windows. Некоторые компании и инструменты (Java & Notes) ограничивают ваше право на распространение кода без дополнительной оплаты лицензий.
Мне нравится нативный вид
GTK+ и TK довольно неуклюже работают под windows и я хотел бы чтобы то что я пишу выглядело замечательно как на windows так и на mac. Посмотрим правде в глаза — большинство пользователей привыкли к использованию родных виджетов и, как правило оценивают приложение, по внешнему виду. Если вы хотите придерживаться стиля Unix то платформа GTK + и PyGTK являются хорошим выбором.
Mozilla — XUL
Другой вариант, кажется интригующим. Им является XUL — XML код, который создает основу для GUI Mozilla.
Среди его преимуществ — кроссплатформенный набор виджетов и возможность установки через браузер (. XPI-файлы) или можно запускать прямо с сервера (на XULPlanet есть прекрасный учебник). Я обнаружил protozilla — который дает способом создания локальных сценариев CGI или с использованием IPC (pipe), — но он показался мне нестабильным. Я также обнаружил, что вы можете получить доступ к COM-объектам через интерфейс IDispatch. Код в настоящее время выключен и не является частью программы Mozilla. Кроме того,код очень сырой, и тщательно не протестирован.
из почтовой рассылки:
>>>>>>>>>>QUOTE>>>>>>>>>>> Я могут подтвердить свои выводы. Некоторые дополнительные недостатки XUL, которые не являются очевидными, пока вы не разработали большой базы XUL-кода. Я работал полтора года над развивающимся очень большим, коммерческим приложением, основанным на XUL. Первоначально, XUL представлялся очень привлекательным решением (и я считаю, так по-прежнему для малых приложений). Однако, код поведения XUL приложений смешан с кодом пользовательского интерфейса что делает очень сложным поддержку его кода чистым и понятным. Следовательно, чем выше уровень развития базы кода тем больше усилий требуется для дальнейшего развития. >>>>>>>>>>>>>END QUOTE>>>>>>>>>>
Нестабильность Mozilla как платформы для разработки заставила отложить её до лучших времен. Возможно, что все изменится в будущем.
wxWindows
wxWindows это открытый c++ инструмент который работает как тонкая прослойка между родными виджетами — GTK+, WIN32, Mac OS, Motif и т.п. У него имеется интерфейсы для c++, perl, python и ruby. Мне нравится идея набора виджетов, который представляет собой тонкую оболочку вокруг других — тем самым защищая вас от изменений и позволяющий вести кроссплатформенную разработку. Вначале были проблемы запуска WxPython под управлением Linux — Python — WxWindows, но Робин Данни улучшил установку для Linux — и теперь это доступно как обычная установка пакетом.
WxPython была создана Robin, который сделал инструмент, который помогает автоматизировать создание Python классов C или C + + API и WxPython — Python интерфейс для WxWindows. Существуют также интерфейсы для Perl & Ruby для тех, кто предпочитает эти языки. Еще одним преимуществом является возможность использования XML для программирования интерфейса (например, GTK +, QT, XUL). В теории это позволяет отделить графический вид программы от логики отображения. Также я бы хотел отметить, что очень быстро и легко можно создать графический интерфейс приложения. С другой стороны, хотя существует множество фрагментов и примеров кода, имеющихся пособий, большая часть документации, направлена на C + + программистов. Также замечу, что порт на Mac OS X не является полным.
В конце хочется спросить, «Что используют люди поумнее?»
Open Source Applications Foundation приняли решение об использовании WxPython через год раздумий
GNU Entreprise — используют WxPython в качестве основы для приложений клиент-сервер.
Многие другие организации используют WxWindows в той или иной форме
Итак. Какие виджеты я использую?
wxDesigner:
самый полный, но закрытый и коммерческий.
Сфокусирован на разработке под C++
Их редактор мне не понравился
Выводит xml, python, c++, или perl код
Хороший, дешевый, стабильный. Разработан одним из разработчиков WxWindows
wxGlade:
мой новый любимец — копирует все лучшее из glade. Легок в использовании и расширяем.
Не полный rad — больше экранной графики.
выводит xml, c++ или python код
хорошее руководство
Активная разработкаPythonCard:
Отлично подойдет для простых шустрых приложений.
Я считаю такого рода инструментов заставляет людей объединять бизнес-логику в графическом интерфейсе.
Скорость развития путем упрощения модели событий.
Вывод Python кода
Нет опции для XML-вывода — но это может быть скоро устранено
Активная разработка
XRC:
Простой редактор xml widget
Boa:
IDE
Слышал только хорошее и даже немного с ним поигрался
GNU Enterprise Form Developer
Нестабилен, но задатки хорошие.
Выбор текстового редактора
Самый популярные редакторы для Python это emacs, vi , и nedit. Я использую editplus под windows (из-за лени) и emacs, nedit , и vi под linux. Но выбор неограничен.
Если у вас есть отдельный от отрисовки интерфейса текстовый редактор попробуйте его — может быть вам понравится.
Сообщение от Tilk
а ssh это такая крутая штука для администрирования ОС
Нет. Это не штука для администрирования. Это средство работы на удалённом компьютере (при соответствующих настройка можно даже GUI приложения использовать с удаленного сервера). Ну, а зайдя на комп по ssh вы можете делать все, что вам разхрешено на нем — хоть в игры играть, хоть админить, хоть программировать.
Начинайте здесь http://ru.wikipedia.org/wiki/SSH
По сути вам ssh изучать не надо. Вам надо изучить основы работы в никсовой консоли.
Консоль полученная по ssh абсолютно то же самое, что и консоль которая была бы если бы физически сидели за этим сервером. Так что вам в изучение основ Linux.
Посмотрите например здесь http://www.xp2ubuntu.com/2008/05/05.html
Для компиляции должен быть установлен компилятор и буст. Все это есть в репозиториях, так что искать где то на левых сайтах не надо. Скажите админу он поставит. Ну или мы поможем поставить , если у вас права есть на это — то сами поставите.
Редактировать можно в консльном редакторе (вроде в убунте это по умолчанию nano). А так же можете использовать vim. Последний, правда, может по началу моральную травму любому новичку доставить. Но, если с ним разобраться и настроить для себя. то получите хороший инструмент для разработки там где нет GUI.
Так же поможет в консоли Minigth Commander, что то вроде виндового far. Команда запуска mc. (Если, конечно, он установлен и есть праа на его использование)
Добавлено через 4 минуты
Сообщение от Tilk
Выбор остановил на ubuntu 10.
Вот это достаточно спорный вопрос для сервера. Убунта имеет привычку релизится четко каждые 6 месяцев. На серевере такая спешка нафиг не нужна. Ставьте на сервер стабильный Debian — будет надежнее, по командам они похожи (Ubuntu это ответвление от тестовой и экспериментальной веток Debian (несколько утрировано, но суть верная, подробнее если захотите разберетесь) ). Ну, а пробовать у себя можете на любом никсе, в т.ч и на убунте.