Как в linux написать программу для windows

Показали мне недавно интересное приложение, под которое можно разрабатывать плагины. Приложение оказалось очень полезным для научной работы, но вот незадача — пр...

Показали мне недавно интересное приложение, под которое можно разрабатывать плагины. Приложение оказалось очень полезным для научной работы, но вот незадача — приложение разработано под 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

При первом запуске необходимо задать ваши логин и пароль.

vagrant up

Далее уже вам откроется консоль с 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.

Содержание

  1. Разработка графических приложений под Linux  для Windows Программистов.
  2. С чего начать?
  3. Начинайте с того что нравится
  4. Выбор инструментов
  5. Проприетарная помощь
  6. Мне нравится нативный вид
  7. wxWindows
  8. Итак. Какие виджеты я использую?
  9. Выбор текстового редактора

Разработка графических приложений под 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) и пришел к следующим критериям оценки инструментов:

  1. Шаблонизация (Kylix, QT, GLADE)
  2. Интерфейс — Объектно-ориентированный язык или полу-OO
  3. Завершенность инструмента
  4. Количество и типы виджетов
  5. Качество виджетов/контролов
  6. Потребление ресурсов и Быстродействие
  7. Поддержка кроссплатформенности
  8. Лицензия
  9. Поддержка кросс-языковости
  10. И дополнительно:

  11. Нативный вид (часто важно для пользователя)
  12. Масштабность сообщества разработчиков
  13. Документация
  14. Легкость изучения

Результаты:

Оценка до 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 (несколько утрировано, но суть верная, подробнее если захотите разберетесь) ). Ну, а пробовать у себя можете на любом никсе, в т.ч и на убунте.

Понравилась статья? Поделить с друзьями:
  • Как в hp pavilion зайти в безопасный режим windows
  • Как быстро убрать надпись активация windows
  • Как быстро стирать текст windows 10
  • Как быстро сохранить скриншот без редактора windows 7
  • Как быстро создать папку в windows 10