Ruby Advanced

Total Page:16

File Type:pdf, Size:1020Kb

Ruby Advanced Ruby Advanced Часть I Марченко Светлана Ruby Advanced Графические интерфейсы для Ruby Потоки в Ruby Сценарии и системное администрирование Тестирование и отладка Создание пакетов и распространение программ Ruby и Web приложения Ruby tricks Графические интерфейсы для Ruby (Tk, GTK+, FOX, QtRuby) Ruby/Tk Tk — платформо-независимая система Perl, Tcl (Perl/Tk) Переносимость, стабильность Корневой контейнер с виджетами + геометрический менеджер(pack, grid, place) Блоки вычисляются в контексте вызываемого объекта (instance_eval), а не в контексте вызывающей программы Ruby/GTK2 Ruby/GTK2 (GIMP Toolkit) Лежит в основе графического менеджера GNOME, но MS Windows, MAC OS X c X Window System Расширение Ruby/GTK2 (GTK+ 2.0) НЕ ПУТАТЬ c Ruby/GTK (GTK+ 1.2), которое несовместимо и считается устаревшим GNU LGPL Концепция фреймов, диалогов, окон и менеджеров размещения Располагает богатым набором виджетов (стандартные + более сложные, например, деревья, многоколонные списки) GTK+ написана на С, но спроектирована в ОО манере Ruby/GTK2 предоставляет объектно-ориентированный API GTK2 написана вручную → API выдержан в духе Ruby (с использованием блоков, необязательных аргументов и т.д) GTK+ на базе Glib, Pango, ATK, Cairo, GDK Графические интерфейсы для Ruby Недостатки недостаточно богатый набор стандартных диалоговых окон все строки должны быть в UTF-8 (в начало сценария $KCODE= "U") FXRuby (FOX — Free Objects for X) относительно новая технология акцент на быстродействие и межплатформенную совместимость не обертка платформенного API написана на С++, объектно-ориентированная FXRuby — привязка к Ruby библиотеки FOX (Lyle Johnson) также перенесена на платформу MS Windows парадигма сообщение/получатель парадигма автоматического обновления широкие возможности(связь между приложениями и его окружением, сигналы) гибкость (поддерживает API для работы с OpenGL) Графические интерфейсы для Ruby QtRuby акцент на кросс-платформенность (Windows, Mac, UNIX) Qt (GPL and Commercial License) концепция сигналов и слотов Qt написан на С++, для Ruby вводится некая избыточность для возможности «рубистских »выражений Qt::Widget::minimumSizeHint Qt::Widget::minimum_size_hint widget.setMinimumSize(50); widget.minimumSize = 50; widget.minimum_size = 50; a.isVisible(); a.visible? Потоки в Ruby Потоки определены на пользовательском уровне и не зависят от ОС Создание потоков thread = Thread.new #действия этого потока end Передача им входной информации (параметры, передаваемые в блок) Останов Синхронизация – может быть очень дорогой Создание потоков и манипулирование ими new возвращает объект типа Thread (синоним fork) a = 1 b = 2 c = 3 thread2 = Thread.new(a,b) do |a, x| с = 4 # доступ ко всем переменным из внешней области видимости а = 2 # любые другие манипуляции end Доступ к локальным переменным потока через специальный механизм (организован как хэш) из любого места видимости объекта Thread Thread.current[:var1] = «var_value» #внутри потока Thread.current[«var2»] = 3 x = thread2[:var1] y = thread2.key?(«var2») # проверяет используется ли в потоке указанное имя Опрос и изменение состояния потока list — массив «живых» потоков main — возвращает ссылку на главный поток current — позволяет потоку идентифицировать себя exit, pass, start, stop, kill — позволяют управлять потоком изнутри и извне Thread.exit, Thread.pass Не существует метода экземпляра stop → поток только может приостановить собственное выполнение, но не выполнение другого потока alive?, stop?, status (run, sleep, nil) $SAFE, safe_level join — не может быть вызван самим потоком у себя, только у другого потока Thread.list.each{ |t| t.join if t != Thread.main } интерпретатор обнаружит тупиковую ситуацию: два потока вызвали друг у друга join метод value неявно вызывает join Опрос и изменение состояния потока (пример) max = 1000 thr = Thread.new do sum = 0 1.upto(max) {|i| sum += i} sum end guess = (max*(max+1))/2 if guess == thr.value puts «правильно » else puts «неправильно » end Обработка исключений и группы потоков Theread.abort_on_exception = true (t1.abort_on_exception = true) Группы позволяют логически связывать потоки (по умолчанию все потоки в группе Default) file_threads = ThreadGroup.new file_threads.add f1 file_threads.add f2 В любой момент поток принадлежит только одной группе class ThreadGroup (new, add, list) В класс ThreadGroup можно добавлять свои методы, например: возобновление потоков в группе групповое ожидание групповое завершение class ThreadGroup def join #... end ... end Синхронизация потоков Критические секции — простейший способ синхронизации Thread.critical = true #код , который хотим защитить Thread.critical = false Применять только в самых простых случаях! Возможны такие комбинации операций с потоками, что поток планируется даже, если другой поток в критической секции. Синхронизация доступа к ресурсам (mutex.rb) lock, try_lock, unlock mutex = Mutex.new mutex.lock #если мьютекс занят, ждет освобождения #something mutex.unlock Синхронизация потоков mutex.rb if mutex.try_lock #не ждет освобождения, возвращает false, если занят #something else #something end mutex.synchronize do #something end synchronize захватывает мьютекс и автоматически освобождает его объекты могут выступать в роли мьютекса Библиотека mutex_m с модулем Mutex_m, который расширяет пользовательский класс: у объектов класса можно вызывать методы мьютекса Синхронизация потоков Библиотека sync.rb предоставляет еще один способ синхронизации: блокировка со счетчиком locked?, shared?, exclusive?, lock, unlock, try_lock Условная переменная — используется вместе с мьютексами (очередь потоков) require ©thread© @music = Mutex.new @violin = ConditionalVariable.new @violins_free = 2 @music.synchronize do @violin.wait(@music) while @violins_free == 0 #... end Синхронизация потоков monitor.rb Monitor(monitor.rb) — еще один способ синхронизации: захваты одного и того же мьютекса могут быть вложенными Например, может понадобиться при рекурсивном вызове метода применяется для расширения класса class ConditionalVariable в библиотеке monitor.rb — расширенный по сравнению с условными переменными в Thread: new_cond — создание условной переменной wait_until, wait_while — методы, блокирующие поток в ожидании выполнения условия wait(timeout) - можно определить timeout при ожидании (в секундах) Сценарии и системное администрирование Универсальность Ruby позволяет использовать его для взаимодействия с ОС на высоком уровне (все, что есть в bash, можно реализовать с Ruby) Запуск внешних программ Перехват вывода программы Манипулирование процессами Стандартный ввод/вывод Не всегда удобно использовать из-за сложности синтаксиса (использование различных библиотек) Библиотека Shell (не всегда работает на Windows) ActiveScriptRuby — язык, предоставляющий мост между COM и Ruby для Windows приложений Ruby можно использовать в html <script language= «RubySctipt»> # Здесь код на Ruby </script> Сценарии и системное администрирование shell.rb sh = Shell.new #создали объект, ассоциированныйс текущимкаталогом sh1 = Shell.cd (©©/tmp/hal©©) #объект , ассоциированный с указанным каталогом Встроенные команды (например, echo, cat, tee) возвращают объекты класса Filter sh.cat (©©/etc/modt©©) > STDOUT ! Автоматически shell вывод команд никуда не направляет Class Filter понимает, что такое перенаправление ввода/вывода Операторы >, <, | Метод def_system_command позволяет «инсталлировать» системные команды по своему выбору Shell.def_system_command ©©ls©© Различные сценарии AllInOneRuby — дистрибутив Ruby в одном файле (интерпретатор, системные классы, стандартные библиотеки) Tar2RubyScript — программа получает дерево каталогов и создает самораспаковывающийся архив: Ruby программа и tar архив (если не библиотека, нужен файл init.rb) Созданный архив можно запустить на любой машине, где установлен Ruby RubyScript2Exe — преобразует Ruby приложение в один двоичный файл(подходит для Windows, Linux, Mac OS X): Не компилятор Собирает файлы, являющиеся частью установленного дистрибутива Ruby на вашей машине (не нуждается в кросс-компиляции) Исполняемый файл «усечен» - в нем нет неиспользуемых библиотек Не требует установленного Ruby для запуска, т. к. включает интерпретатор Ruby, среду исполнения и необходимые внешние программы Модуль Etc — получает информацию из /etc/passwd и /etc/group login пользователя, от имени которого запущена программа Структуру passwd (name, dir, shell) Аналогичные функции для групп Тестирование и отладка Библиотека Test::Unit (включена в дистрибутив с 2001 года) для анализа тестового кода применяется отражение для наследника класса Test::Unit::TestCase все методы, имена которых начинаются с test считаются тестовыми тесты выполняются в алфавитном порядке методы setup, teardown используются для создания особой среды выполнения тестов, вызываются для каждого теста утверждения assert_equal (expected, actual) любой исполнитель тестов можно вызвать методом run и передать параметр, описывающий набор тестов Тестирование и отладка Комплект инструментов ZenTest Основной инструмент — исполняемая программа, которая генерирует файл с тестами тестируемый класс — основа для создания тестового класса: Создается класс с именем тестируемого класса и префикса Test, наследованный от Test::Unit::TestCase, и все методы c префиксом test_ Разработчику (или тестеру) остается только реализовать тело тестовых методов unit_diff — программа, которую следует вызывать как фильтр после тестовой программы autotest — прогоняет все тесты по мере их обновления multiruby — позволяет
Recommended publications
  • Rapid GUI Development with Qtruby
    Rapid GUI Development with QtRuby Caleb Tennis The Pragmatic Bookshelf Raleigh, North Carolina Dallas, Texas BOOKLEET © Many of the designations used by manufacturers and sellers to distin- guish their products are claimed as trademarks. Where those designations appear in this book, and The Pragmatic Programmers, LLC was aware of a trademark claim, the designations have been printed in initial capital letters or in all capitals. The Pragmatic Starter Kit, The Pragmatic Pro- grammer, Pragmatic Programming, Pragmatic Bookshelf and the linking g device are trademarks of The Pragmatic Programmers, LLC. Qt® is a registered trademark of Trolltech in Norway, the United States and other countries. Useful Friday Links • Source code from this book and Every precaution was taken in the preparation of this book. However, the other resources. publisher assumes no responsibility for errors or omissions, or for dam- • Free updates to this PDF • Errata and suggestions. To report ages that may result from the use of information (including program list- an erratum on a page, click the ings) contained herein. link in the footer. To see what we’re up to, please visit us at http://www.pragmaticprogrammer.com Copyright © 2006 The Pragmatic Programmers LLC. All rights reserved. This PDF publication is intended for the personal use of the individual whose name appears at the bottom of each page. This publication may not be disseminated to others by any means without the prior consent of the publisher. In particular, the publication must not be made available on the Internet (via a web server, file sharing network, or any other means).
    [Show full text]
  • Multiplatformní GUI Toolkity GTK+ a Qt
    Multiplatformní GUI toolkity GTK+ a Qt Jan Outrata KATEDRA INFORMATIKY UNIVERZITA PALACKÉHO V OLOMOUCI GUI toolkit (widget toolkit) (1) = programová knihovna (nebo kolekce knihoven) implementující prvky GUI = widgety (tlačítka, seznamy, menu, posuvník, bary, dialog, okno atd.) a umožňující tvorbu GUI (grafického uživatelského rozhraní) aplikace vlastní jednotný nebo nativní (pro platformu/systém) vzhled widgetů, možnost stylování nízkoúrovňové (Xt a Xlib v X Windows System a libwayland ve Waylandu na unixových systémech, GDI Windows API, Quartz a Carbon v Apple Mac OS) a vysokoúrovňové (MFC, WTL, WPF a Windows Forms v MS Windows, Cocoa v Apple Mac OS X, Motif/Lesstif, Xaw a XForms na unixových systémech) multiplatformní = pro více platforem (MS Windows, GNU/Linux, Apple Mac OS X, mobilní) nebo platformově nezávislé (Java) – aplikace může být také (většinou) událostmi řízené programování (event-driven programming) – toolkit v hlavní smyčce zachytává události (uživatelské od myši nebo klávesnice, od časovače, systému, aplikace samotné atd.) a umožňuje implementaci vlastních obsluh (even handler, callback function), objektově orientované programování (objekty = widgety aj.) – nevyžaduje OO programovací jazyk! Jan Outrata (Univerzita Palackého v Olomouci) Multiplatformní GUI toolkity duben 2015 1 / 10 GUI toolkit (widget toolkit) (2) language binding = API (aplikační programové rozhraní) toolkitu v jiném prog. jazyce než původní API a toolkit samotný GUI designer/builder = WYSIWYG nástroj pro tvorbu GUI s využitím toolkitu, hierarchicky skládáním prvků, z uloženého XML pak generuje kód nebo GUI vytvoří za běhu aplikace nekomerční (GNU (L)GPL, MIT, open source) i komerční licence např. GTK+ (C), Qt (C++), wxWidgets (C++), FLTK (C++), CEGUI (C++), Swing/JFC (Java), SWT (Java), JavaFX (Java), Tcl/Tk (Tcl), XUL (XML) aj.
    [Show full text]
  • KDE E.V. Quarterly Report 2008Q3/Q4
    Quarterly Report Q3/2008 & Q4/2008 solid accounting and valuable organizational skills month after month, year after year. As such, I am more than confident in his stepping into the President's chair. Cornelius will also benefit from the solid board members that have helped us build KDE e.V. over the past few years into what it has become. We should all be quite proud of what we have achieved Dear KDE e.V. member, within this organization. It has never been as robust, professional and effective. In the spirit of continuous When one is busy, time flies by quicker than one expects. improvement, I am equally sure we will be able to say the They say the same thing happens when you're having fun. same thing in five years time. When I look at the calendar and realize that we're already into the second month of 2009, I'm struck with just how I would also take this opportunity to ask each and every quickly 2008 melted away. It's safe to say that we were one of the members of our society to examine their own both hard at work and having fun in the process. involvement within KDE e.V. It operates smoothly only because we have members who step up and help get things Going forward, we have a series of very exciting programs done. We achieve things together that we can not achieve underway, probably not least of which is a new Individual alone. Supporting Members program. We also have the Gran Canaria Desktop Summit, which is an experiment in co- These activities range from the simple task of voting (and locating Akademy with GUADEC.
    [Show full text]
  • Ent Book: Very Well Written, Easy to Read, and Fun
    Prepared exclusively for Antonio Pardo What readers are saying about Hello, Android This is a most excellent book: very well written, easy to read, and fun. In addition, any of Android’s quirks are explained along with just the right amount of detail to ensure quality programming principles are followed. Anthony Stevens Founder and CTO, PocketJourney and Top 20 Winner of Google Android Competition Ed Burnette covers an impressive amount of ground in a nicely com- pact book while retaining the popular Pragmatic style. For the mate- rial on 2D and 3D graphics alone, this is worthy of a spot in any Android developer’s library. Mark Murphy Founder, CommonsWare I remember when I first started to work with Android; it was like a huge maze. With this book, the introduction would have been much less painful. I am convinced that by reading this book new Android programmers will have an easier start. Gabor Paller Senior Software Architect, OnRelay, Ltd. Prepared exclusively for Antonio Pardo Hello, Android Introducing Google’s Mobile Development Platform Ed Burnette The Pragmatic Bookshelf Raleigh, North Carolina Dallas, Texas Prepared exclusively for Antonio Pardo Many of the designations used by manufacturers and sellers to distinguish their prod- ucts are claimed as trademarks. Where those designations appear in this book, and The Pragmatic Programmers, LLC was aware of a trademark claim, the designations have been printed in initial capital letters or in all capitals. The Pragmatic Starter Kit, The Pragmatic Programmer, Pragmatic Programming, Pragmatic Bookshelf and the linking g device are trademarks of The Pragmatic Programmers, LLC.
    [Show full text]
  • 18T00464 JACOME Q Y MACAS C
    ESCUELA SUPERIOR POLITÉCNICA DE CHIMBORAZO FACULTAD DE INFORMÁTICA Y ELECTRÓNICA ESCUELA DE INGENIERÍA EN SISTEMAS “ANÁLISIS COMPARATIVO DE BIBLIOTECAS MULTIPLATAFORMA PARA EL DESARROLLO DE APLICACIONES DE ESCRITORIO, APLICADO A LA ESCUELA DE DISEÑO GRÁFICO” TESIS DE GRADO Previa la obtención del título de: INGENIERA EN SISTEMAS INFORMÁTICOS Presentado por: MAYRA ALEXANDRA MACAS CARRASCO ANA ELIZABETH JÁCOME QUINTANILLA RIOBAMBA – ECUADOR 2011 AGRADECIMIENTO Agradezco a Dios, por concederme la vida y mantenerme con salud, pero sobre todo por estar siempre junto a mi bendiciéndome; a mis padres ya que siempre me apoyaron incondicionales inculcándome que se debe ser honesto, trabajador y perseverante; a mis hermanas por su motivación y apoyo, y a mis amigos porque cada uno de ellos en un determinado tiempo me brindaron su mano para ayudarme. Mayra Macas Carrasco A Dios por otorgarme el regalo de la vida y estar siempre junto a mí, a mi familia por su amor incondicional, sus consejos, enseñanzas para salir adelante, a mis amigas porque junto a ellas aprendí muchas cosas y a mis profesores por su colaboración para culminar este trabajo. Ana Jácome Quintanilla DEDICATORIA A Dios por estar junto a mí iluminándome siempre, a mis padres y hermanas que son fundamentales en mi vida, a mis amigos por brindarme siempre su apoyo incondicional y a los profesores por ser una guía en el proceso de formación profesional de los estudiantes. Mayra Macas Carrasco El presente trabajo está dedicado a mis padres, hermanas y hermanos que son uno de los pilares fundamentales en mi vida, a mis amigas por concederme su apoyo incondicional y a mis profesores por ser mi guía durante esta etapa de aprendizaje.
    [Show full text]
  • Technical Notes All Changes in Fedora 13
    Fedora 13 Technical Notes All changes in Fedora 13 Edited by The Fedora Docs Team Copyright © 2010 Red Hat, Inc. and others. The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. The original authors of this document, and Red Hat, designate the Fedora Project as the "Attribution Party" for purposes of CC-BY-SA. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version. Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law. Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, MetaMatrix, Fedora, the Infinity Logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries. For guidelines on the permitted uses of the Fedora trademarks, refer to https:// fedoraproject.org/wiki/Legal:Trademark_guidelines. Linux® is the registered trademark of Linus Torvalds in the United States and other countries. Java® is a registered trademark of Oracle and/or its affiliates. XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries. All other trademarks are the property of their respective owners. Abstract This document lists all changed packages between Fedora 12 and Fedora 13.
    [Show full text]
  • Towards Left Duff S Mdbg Holt Winters Gai Incl Tax Drupal Fapi Icici
    jimportneoneo_clienterrorentitynotfoundrelatedtonoeneo_j_sdn neo_j_traversalcyperneo_jclientpy_neo_neo_jneo_jphpgraphesrelsjshelltraverserwritebatchtransactioneventhandlerbatchinsertereverymangraphenedbgraphdatabaseserviceneo_j_communityjconfigurationjserverstartnodenotintransactionexceptionrest_graphdbneographytransactionfailureexceptionrelationshipentityneo_j_ogmsdnwrappingneoserverbootstrappergraphrepositoryneo_j_graphdbnodeentityembeddedgraphdatabaseneo_jtemplate neo_j_spatialcypher_neo_jneo_j_cyphercypher_querynoe_jcypherneo_jrestclientpy_neoallshortestpathscypher_querieslinkuriousneoclipseexecutionresultbatch_importerwebadmingraphdatabasetimetreegraphawarerelatedtoviacypherqueryrecorelationshiptypespringrestgraphdatabaseflockdbneomodelneo_j_rbshortpathpersistable withindistancegraphdbneo_jneo_j_webadminmiddle_ground_betweenanormcypher materialised handaling hinted finds_nothingbulbsbulbflowrexprorexster cayleygremlintitandborient_dbaurelius tinkerpoptitan_cassandratitan_graph_dbtitan_graphorientdbtitan rexter enough_ram arangotinkerpop_gremlinpyorientlinkset arangodb_graphfoxxodocumentarangodborientjssails_orientdborientgraphexectedbaasbox spark_javarddrddsunpersist asigned aql fetchplanoriento bsonobjectpyspark_rddrddmatrixfactorizationmodelresultiterablemlibpushdownlineage transforamtionspark_rddpairrddreducebykeymappartitionstakeorderedrowmatrixpair_rddblockmanagerlinearregressionwithsgddstreamsencouter fieldtypes spark_dataframejavarddgroupbykeyorg_apache_spark_rddlabeledpointdatabricksaggregatebykeyjavasparkcontextsaveastextfilejavapairdstreamcombinebykeysparkcontext_textfilejavadstreammappartitionswithindexupdatestatebykeyreducebykeyandwindowrepartitioning
    [Show full text]
  • The Ruby Way: Solutions and Techniques in Ruby Programming
    Praise for The Ruby Way, Third Edition “Sticking to its tried and tested formula of cutting right to the techniques the modern day Rubyist needs to know, the latest edition of The Ruby Way keeps its strong reputation going for the latest generation of the Ruby language.” Peter Cooper Editor of Ruby Weekly “The authors’ excellent work and meticulous attention to detail continues in this lat- est update; this book remains an outstanding reference for the beginning Ruby pro- grammer—as well as the seasoned developer who needs a quick refresh on Ruby. Highly recommended for anyone interested in Ruby programming.” Kelvin Meeks Enterprise Architect Praise for Previous Editions of The Ruby Way “Among other things, this book excels at explaining metaprogramming, one of the most interesting aspects of Ruby. Many of the early ideas for Rails were inspired by the first edition, especially what is now Chapter 11. It puts you on a rollercoaster ride between ‘How could I use this?’ and ‘This is so cool!’ Once you get on that roller- coaster, there’s no turning back.” David Heinemeier Hansson Creator of Ruby on Rails, Founder at Basecamp “The appearance of the second edition of this classic book is an exciting event for Rubyists—and for lovers of superb technical writing in general. Hal Fulton brings a lively erudition and an engaging, lucid style to bear on a thorough and meticulously exact exposition of Ruby. You palpably feel the presence of a teacher who knows a tremendous amount and really wants to help you know it too.” David Alan Black Author of The Well-Grounded Rubyist “This is an excellent resource for gaining insight into how and why Ruby works.
    [Show full text]
  • A Brief Introduction to Qt Bruce Bolden March 25, 2009
    Introduction to Qt 1 A Brief Introduction to Qt Bruce Bolden March 25, 2009 Introduction to Qt 2 What is Qt1? A platform independent (cross-platform) graphics library for the development of applications with/without UIs (user interfaces). Features • Intuitive C++ class library • Portability across desktop and embedded operating systems • Look and Feel of the native OS • Integrated development tools with cross-platform IDE • High runtime performance and small footprint on embed- ded systems Note: Qt is pronounced cute by Europeans. 1Qt is pronounced cute by Europeans. Introduction to Qt 3 Some frequently Used Acronyms API Application Program Interface GUI Graphical User Interface IDE Integrated Development Environment KDE K Desktop Environment LGPL GNU Lesser General Public License RTTI Run Time Type Identification SDK Software Development Toolkit KDE details: http://www.kde.org/ Introduction to Qt 4 Why Qt? • Not Java • Platform independent (cross-platform) • Large C++-based library • The choice for KDE development • Easy transition to OpenGL Introduction to Qt 5 Qt History • Trolltech was founded in 1994 • Nokia acquired Trolltech ASA, in June 2008 • Active development! { 4.5 released March 3, 2009 { 4.2 released August 24, 2006 This is Qt 4.5: http://www.youtube.com/watch?v=8xRfNsY53GY Introduction to Qt 6 Qt History|Details Nokia acquired Trolltech ASA, in June 2008, to enable the ac- celeration of their cross-platform software strategy for mobile devices and desktop applications, and to develop its Internet services business. On September 29, 2008 Nokia renamed Troll- tech to Qt Software.2 Trolltech was founded in 1994. The core team of designers at Trolltech started developing Qt in 1992, and the first commercial version of Qt was released in 1995.
    [Show full text]
  • New Product Development with Ruby on Rails by Selina D’Souza
    WHITE PAPER New Product Development with Ruby on Rails by Selina D’Souza There are huge changes in the way software is being built today and the timeframes in which it gets built. The reasons for these changes are manifold and have deep implications for software companies. Ruby-on-Rails supports rapid development, extensive collaboration and can be a great platform of choice for building new web applications and products successfully. Table of Contents 1. The Changing Rules for Web Startups..............................................................................................................2 2. Ruby on Rails (RoR) – Platform for New Product Development.......................................................................2 3. Advantages of the Rails Framework ................................................................................................................3 4. Web 2.0 and Rich Internet Applications...........................................................................................................3 5. Ruby - Dynamic and Elegant.............................................................................................................................4 6. Behavior Driven Development with RoR..........................................................................................................4 7. Shortcomings of Rails.......................................................................................................................................4 8. Hosting Rails.....................................................................................................................................................5
    [Show full text]
  • Domácí Cloudové Úložiště
    BAKALÁŘSKÁ PRÁCE Domácí cloudové úložiště 2021 Aleš Kašpárek Vedoucí práce: Mgr. Jan Tříska, Studijní obor: Aplikovaná informatika, PhD. prezenční forma Bibliografické údaje Autor: Aleš Kašpárek Název práce: Domácí cloudové úložiště Typ práce: bakalářská práce Pracoviště: Katedra informatiky, Přírodovědecká fakulta, Univerzita Palackého v Olomouci Rok obhajoby: 2021 Studijní obor: Aplikovaná informatika, prezenční forma Vedoucí práce: Mgr. Jan Tříska, PhD. Počet stran: 32 Přílohy: 1 CD/DVD Jazyk práce: český Bibliograhic info Author: Aleš Kašpárek Title: Home cloud storage Thesis type: bachelor thesis Department: Department of Computer Science, Faculty of Science, Pa- lacký University Olomouc Year of defense: 2021 Study field: Applied Computer Science, full-time form Supervisor: Mgr. Jan Tříska, PhD. Page count: 32 Supplements: 1 CD/DVD Thesis language: Czech Anotace Cílem práce je navrhnout a implementovat efektivní způsob uložení a sdílení sou- borů mezi uživateli, bez potřeby fyzického úložiště. Výsledkem práce je systém, pomocí kterého mohou uživatelé přistupovat ke svým souborům kdekoliv pomocí internetu. Synopsis The main goal of thesis is to desing and implement effective way of storing and sharing files between users, without need of physical storage. Result of this thesis is a system, which allows users to use their files anywhere using the internet. Klíčová slova: cloud, cloudové úložiště, REST API, Python, GUI, C++, Docker Keywords: cloud, cloud storage, REST API, Python, GUI, C++, Docker Chtěl bych poděkovat Mgr. Janu Třískovi, PhD. za připomínky, nápady a zájem při tvoření této práce. Místopřísežně prohlašuji, že jsem celou práci včetně příloh vypracoval/a samo- statně a za použití pouze zdrojů citovaných v textu práce a uvedených v seznamu literatury.
    [Show full text]
  • Cross-Platform Development with Jruby and Swing
    Cross-platform Desktop Application Development with JRuby and Swing Copyright 2014 James Britt / Neurogami Originally published in 2007. Ruby for the desktop The Ruby programming language is currently best known for building Web applications, primarily with the Ruby on Rails framework. However, Ruby is more than capable for writing graphical desktop applications as well. The standard Ruby distribution includes code for bindings for Tk, an open-source, cross- platform set of widgets that allows you to create graphical desktop applications. This can be extremely handy, but when installing Ruby from source code you need to be sure you also have the Tk dependencies and make sure the compilation settings include Tk. Further, if you are using Ruby on Windows installed using the excellent “one-click” installer package, you still have to take extra steps to have Tk working, since it no longer supports automatic installation. Even with Tk set up for Ruby it is somewhat clunky. Tk applications often look like Tk applications; depending on the target platform it can look somewhat ugly. Plus, attempting to create complex interfaces is daunting. Tk is best used for smaller GUI needs. Available Toolkits The weakness of Tk has prompted the development of other GUI toolkit options for Ruby. Here are the some of the notable choices: FxRuby FxRuby is a Ruby binding for Fox, a GUI toolkit written in C++. It is available for installation using rubygems. There is a binary gem available for Windows; the gem on other platforms will require you to compile native code. WxRuby WxRuby is a binding for the cross-platform wxWidgets C++ GUI toolkit that allows the creation of native-looking desktop applications.
    [Show full text]