<< В начало

Ударил и залил полностью опять в который раз свой КПК - HP4700 и хоть бы хны. Он был у меня в сауне даже. В результате удара вылетела и утерялась sd карточка на гиг. Всё работает - хорошо, карточка потерялась плохо. HP техника - я лучше КПК не видел.

А сейчас у меня тема написать платформеннонезависимый клиент под свой же проект. Итого строго остановился на клиент-серверном ruby приложении. Во первых реализовать клиент-сервер на руби - это раз плюнуть и описано практически во всех пособиях для слабоумных. Обязательно TCP/IP соединение, и никаких HTTP запросов иначе, вот ещё - нагружать http сервер ajax херней каждые 5 секунд? Пройденный этап. Браузер начинает медленно кушать память и процессорное время и я устал бороться. Вот поэтому я выбрал руби, задача специфическая и не очень интересная. Интерфейс отрисовывал в DialogBlocks,
похоже на Delphi, кому то покажется похоже на ASP, с которым я не знаком. Интерфейс экспортируется в разновидность XML = (xrc) - вот это самый кайф, который потом легко подхватывается руби программой, например, вот так.

(скоро приделаю форматирование, пока так, пока Ваш браузер теряет форматирование xml можно посмотреть картинку тут)

Пример моего xrc файла, описывающего кроссплатформенный интерфейс - можно загрузить его в этот DialogBlocks

Всё достаточно тупо.

Ну и вывести реальное приложение, чтобы оно запустилось

Ruby code
——————————————————

  1.  
  2. begin
  3.   require ‘wx’
  4. rescue LoadError => no_wx_err
  5.   begin
  6.     require ‘rubygems’
  7.     require ‘wx’
  8.   rescue LoadError
  9.     raise no_wx_err
  10.   end
  11. end
  12.  
  13. #
  14. # Basic Frame Class. This creates the dialog window
  15. #
  16. class MainFrame < Wx::Frame
  17.  
  18.   def initialize(parent)
  19.     # To load a layout defined in XRC into a Ruby subclass of Frame,
  20.     # first call the empty constructor. All the details of size,
  21.     # title, position and so on are loaded from the XRC by the call to
  22.     # load_frame_subclass. Using a non-empty constructor will cause
  23.     # errors on GTK.
  24.     super()
  25.  
  26.     icon_file = File.join( File.dirname(__FILE__), "ico.png")
  27.     # PNG can be used on all platforms, but icon type must be specified
  28.     # to work on Windows; OS X doesn’t have "Frame" icons.
  29.     self.icon = Wx::Icon.new(icon_file, Wx::BITMAP_TYPE_PNG)
  30.    
  31.     $xml.load_frame_subclass(self,nil,‘ID_WXFRAME’)
  32.    
  33.   def xrcid_to_window(xrc_id)
  34.     Wx::Window.find_window_by_id(Wx::xrcid(xrc_id), self)      
  35.   end
  36.  
  37. end
  38. end
  39.  
  40. #
  41. # Application class.
  42. #
  43. class ClientApp < Wx::App
  44.  
  45.   def on_init
  46.     # Create a resource handler
  47.     $xml = Wx::XmlResource.get();
  48.     $xml.init_all_handlers();
  49.  
  50.     # Load a resource file from the script’s directory
  51.     xrc_file = File.join( File.dirname( __FILE__ ), ‘operator.xrc’ ) # ключевое слово
  52.  
  53.     $xml.load(xrc_file) 
  54.  
  55.  
  56.     # Show the main frame.
  57.     $main = MainFrame.new(self)
  58.     $main.show(true)
  59.    
  60.   end
  61. end
  62.  
  63. ClientApp.new().main_loop()
  64.  

—————————–
Можно пропустить всякие иконки, но общий смысл ясен.
Дальше в принципе понятно - навешать events на кнопки. Я сразу разбил классы на init, visual, events папки, стараюсь (без практики) применять mvc и dry к offline проекту. Ориентировочно, веб проект к себе более строг бывает - это было для меня удивлением. Но серверная часть - тот же руби, нормально написаный демон multithreaded. Обращается к той же самой базе данных mysql, с какой проживает веб интерфейс на php.



5 комментариев»

blackkot 27.12.2007 19:57:14 1 год назад Подписан на email

ну ты монстр!!!

Sarman 27.12.2007 22:40:59 1 год назад Подписан на email

С Руби Я пока ещё на Вы=) Заодно отшлифую, привет!

blackkot 28.12.2007 00:41:38 1 год назад Подписан на email

Молодец
Все очень понятно изложено классически

 
 
 
ezdakimak@livejournal 27.12.2007 20:02:22 1 год назад

Про то, что веб сложнее, для меня не новость. Такое впечатление, что ты раньше для ОС не программировал :)

Sarman 27.12.2007 22:39:42 1 год назад Подписан на email

Да я забыл уже как оно=)

 
 


куку (введите антиспам код) сменить