This document summarizes Yoshiki Shibukawa's presentation on building multi-platform GUI applications with Go. Shibukawa explored several approaches: wrapping existing toolkits, creating a new toolkit in Go, and a hybrid C++/Go approach. While wrapping toolkits is intuitive, maintaining wrappers is difficult. Creating a new toolkit in Go allows perfect integration but supporting multiple platforms is challenging. The hybrid approach uses C++ for GUI with Go handling logic, which provides better integration but requires managing inter-process communication. Shibukawa concluded more work is needed to find the best solution and that GUI programming remains difficult, potentially requiring C++ involvement.
A explanation about docker, new C.I. / C.D. cycles with docker, how to dissect a Docker image and trojanize and how to abuse of Functionality of Docker Registry
Puppet Camp LA 2015 talk covering: packages, package managers, puppet, and tips, tricks, and puppet modules for setting up secure package repositories.
Introduction to Docker at SF Peninsula Software Development Meetup @GuidewiredotCloud
Docker is an open-source project to easily create lightweight, portable, self-sufficient containers from any application. The same container that a developer builds and tests on a laptop can run at scale, in production, on VMs, bare metal, OpenStack clusters, public clouds and more.
A explanation about docker, new C.I. / C.D. cycles with docker, how to dissect a Docker image and trojanize and how to abuse of Functionality of Docker Registry
Puppet Camp LA 2015 talk covering: packages, package managers, puppet, and tips, tricks, and puppet modules for setting up secure package repositories.
Introduction to Docker at SF Peninsula Software Development Meetup @GuidewiredotCloud
Docker is an open-source project to easily create lightweight, portable, self-sufficient containers from any application. The same container that a developer builds and tests on a laptop can run at scale, in production, on VMs, bare metal, OpenStack clusters, public clouds and more.
Puppet at DemonWare - Ruaidhri Power - Puppetcamp Dublin '12Puppet
This talk will describe the evolution of how we've used Puppet at Demonware, a subsidiary of Activision Blizzard, to run the infrastructure of some of the world's biggest games, supporting millions of concurrent users for titles such as Call of Duty.
Ruaidhri Power of DemonWare at PuppetCamp Dublin '12. http://www.puppetlabs.com
Deploying 3 times a day without a downtime @ Rocket Tech Summit in BerlinAlessandro Nadalin
A look at how we try to make our architecture robust, resilient and fun to work with: Namshi is not github or spotify but... ...imitation is the sincerest form of flattery!
James Turnbull, VP of Tech Operations at Puppetlabs, started off the day with a very interesting and informative talk about the past, current and future of Puppet. He showed they have a strong link to their community and plan to keep it that way. He explained that they grew from very small to 70+ people over the last year, and that brings some issues with it. They are very dedicated to fixing those issues though, and hope to improve things moving towards the future.
Dev to Delivery with Puppet, Vagrant and AWSPuppet
"Dev to Delivery with Puppet, Vagrant and AWS" by Sam Bashton of Bashton Ltd. at Puppet Camp London 2013. Find the video here: http://puppetlabs.com/community/puppet-camp
Pragmatic Monolith-First, easy to decompose, clean architecturePiotr Pelczar
Designing systems architecture corresponding to business needs in long future is like a reading tea leaves. There is no common way to design systems. Making decision to start project with microservices may make refactoring much harder and introduce too much complexity in the infrastructure layer and finally slow down development. However maintaining a monolith is a tough nut to crack.
Let’s see how to build a system starting from well organized monolith with well marked technical and business scopes that enables to make a decision in with way it should be decomposed and how to deliver it. Strategic and tactical techniques from Domain-Driven Design and Hexagonal Architecture will be used. I will show you how to monitor accidential complexity using different tools during CI.
I invite you if you are interested in building systems with complex business domains.
Introduction to dockerfile, SF Peninsula Software Development Meetup @Guidewire dotCloud
Docker is an open-source project to easily create lightweight, portable, self-sufficient containers from any application. The same container that a developer builds and tests on a laptop can run at scale, in production, on VMs, bare metal, OpenStack clusters, public clouds and more.
[KubeCon NA 2018] Effective Kubernetes Develop: Turbocharge Your Dev Loop - P...Ambassador Labs
Every software development cycle is rife with inefficiency. Seasoned devs know the pain of getting access to essential remote systems, waiting for tests to run (and then fail), or debugging with only log files. This talk teaches you how to best leverage Kubernetes, remote infrastructure and related tooling to create a dev cycle that maximizes velocity and minimizes developer friction and frustration.
Using tools such as Kubernetes, Docker and Telepresence, I will walk attendees through several advanced techniques that can be used to produce an effective developer experience and optimized dev loop. The goal of this is to eliminate many sources of frustrating inefficiency and reduce cycle time between releases. I will demonstrate how to incrementally adopt some of these techniques and how to approach introducing new and unfamiliar technology and techniques to skeptical dev teams.
Puppet at DemonWare - Ruaidhri Power - Puppetcamp Dublin '12Puppet
This talk will describe the evolution of how we've used Puppet at Demonware, a subsidiary of Activision Blizzard, to run the infrastructure of some of the world's biggest games, supporting millions of concurrent users for titles such as Call of Duty.
Ruaidhri Power of DemonWare at PuppetCamp Dublin '12. http://www.puppetlabs.com
Deploying 3 times a day without a downtime @ Rocket Tech Summit in BerlinAlessandro Nadalin
A look at how we try to make our architecture robust, resilient and fun to work with: Namshi is not github or spotify but... ...imitation is the sincerest form of flattery!
James Turnbull, VP of Tech Operations at Puppetlabs, started off the day with a very interesting and informative talk about the past, current and future of Puppet. He showed they have a strong link to their community and plan to keep it that way. He explained that they grew from very small to 70+ people over the last year, and that brings some issues with it. They are very dedicated to fixing those issues though, and hope to improve things moving towards the future.
Dev to Delivery with Puppet, Vagrant and AWSPuppet
"Dev to Delivery with Puppet, Vagrant and AWS" by Sam Bashton of Bashton Ltd. at Puppet Camp London 2013. Find the video here: http://puppetlabs.com/community/puppet-camp
Pragmatic Monolith-First, easy to decompose, clean architecturePiotr Pelczar
Designing systems architecture corresponding to business needs in long future is like a reading tea leaves. There is no common way to design systems. Making decision to start project with microservices may make refactoring much harder and introduce too much complexity in the infrastructure layer and finally slow down development. However maintaining a monolith is a tough nut to crack.
Let’s see how to build a system starting from well organized monolith with well marked technical and business scopes that enables to make a decision in with way it should be decomposed and how to deliver it. Strategic and tactical techniques from Domain-Driven Design and Hexagonal Architecture will be used. I will show you how to monitor accidential complexity using different tools during CI.
I invite you if you are interested in building systems with complex business domains.
Introduction to dockerfile, SF Peninsula Software Development Meetup @Guidewire dotCloud
Docker is an open-source project to easily create lightweight, portable, self-sufficient containers from any application. The same container that a developer builds and tests on a laptop can run at scale, in production, on VMs, bare metal, OpenStack clusters, public clouds and more.
[KubeCon NA 2018] Effective Kubernetes Develop: Turbocharge Your Dev Loop - P...Ambassador Labs
Every software development cycle is rife with inefficiency. Seasoned devs know the pain of getting access to essential remote systems, waiting for tests to run (and then fail), or debugging with only log files. This talk teaches you how to best leverage Kubernetes, remote infrastructure and related tooling to create a dev cycle that maximizes velocity and minimizes developer friction and frustration.
Using tools such as Kubernetes, Docker and Telepresence, I will walk attendees through several advanced techniques that can be used to produce an effective developer experience and optimized dev loop. The goal of this is to eliminate many sources of frustrating inefficiency and reduce cycle time between releases. I will demonstrate how to incrementally adopt some of these techniques and how to approach introducing new and unfamiliar technology and techniques to skeptical dev teams.
This is a brief introduction about cross platform and GUI (graphical user interface), and the Qt framework.
these slides intended to newbie programmers who want to know about cross platform and GUI.
Unikernel User Summit 2015: Getting started in unikernels using the rump kernelThe Linux Foundation
Justin Cormack's presentation at the Unikernel User Summit at Texas Linux Fest 2015. He discusses the basic principles and techniques for using Rump Kernels to power POSIXy workloads in a small, fast, and secure package.
Slides on the new Janus Lua plugin, as presented at the Real-time Communications devroom at FOSDEM2018. Describes in detail what the challenges were, and how we addressed them, with a few real examples at the end (including a demo written specifically for this session).
TypeScript is a language for application-scale JavaScript development.
TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.
Any browser. Any host. Any OS. Open Source.
Presentation from the 4th Athens Gophers Meetup.
At a glance we present:
- why we introduced a new language in the organization and why that
was Go
- how we approached the transition
- some of the projects we built in Go
- the challenges we faced and the lessons we learned in the process
We discuss things to be taken into account when deciding on a policy for your CI/CD pipelines. This might include Git workflows, testing approaches, and shipping strategies.
Patrick Chanezon and Guillaume Laforge are presenting Google App Engine Java and Gaelyk, the lightweight groovy toolkit on top of the GAE SDK, at the Devoxx conference
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20Michael Lihs
Presentation about open source tools to set up continuous integration and continuous deployment. Covers Git, Gitlab, Chef, Vagrant, Jenkins, Gatling, Dashing, TYPO3 Surf and some other tools. Shows some best practices for testing with Behat and Functional Testing.
Similar to Go & multi platform GUI Trials and Errors (20)
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
Generating a custom Ruby SDK for your web service or Rails API using Smithyg2nightmarescribd
Have you ever wanted a Ruby client API to communicate with your web service? Smithy is a protocol-agnostic language for defining services and SDKs. Smithy Ruby is an implementation of Smithy that generates a Ruby SDK using a Smithy model. In this talk, we will explore Smithy and Smithy Ruby to learn how to generate custom feature-rich SDKs that can communicate with any web service, such as a Rails JSON API.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overview
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Go & multi platform GUI Trials and Errors
1. Go & multi platform GUI
Trials and Errors
Go Conference 2016 sprint @ 4/23/2016
@shibukawa (Twitter)
github.com/shibukawa
Yoshiki Shibukawa
2. Who Are You?
• Programmer in Mobile Game Department
– http://www.slideshare.net/dena_study/final-
fantasy-record-keeper
Yoshiki Shibukawa
Languages
C++/JavaScript/Python/Golang etc
Japanese/English/Español (studying with Duolingo)
Books
Translations: Expert Python/Pomodoro Technique/The Art of community
Original: Mithril, つまみぐい勉強 etc
3. Before talking my presentation…
• Machine readable docs for web service API
4. Before talking my presentation…
• Machine readable docs for web service API
YES!
6. Conclusion
• This presentation doesn’t show the best
solution for multi platform GUI
• I am exploring possibility about Go and GUI
and creating experimental codes.
• GUI programming is not easy
• C++ is required
7. Solutions I tried
Pros Cons
Toolkit Wrapper The most intuitive solution Maintaining wrappers is
extremely hard job
Can’t use deploy support
tool
Create new Toolkit in Go Perfect matching with
golang
Supporting multi platform
is very tough
Hybrid
(C++ for GUI, Go for logic)
9. Toolkit Wrapper
• I used wxPython, Qt for JavaScript etc…
• The most intuitive solution
– You can use it in same methodology with original
native language
11. Toolkit Wrapper Cons (1)
• Qt provides deployment helper tool
– macdeployqt, windeployqt etc
– They collects required .dll/.framework and rewrite
dependency paths and create installer etc
– This tool works only for Pre build Qt/C++ project
• Few documents/examples
– We reinterpret original toolkit documents
– C++ knowledge is required
• Debug is very hard
– Where does this panic come from?
12. Toolkit Wrapper Cons (2)
• Maintaining toolkit wrapper is hard work
– GUI toolkit is contains many C++ classes
• Qt has more than 1200 classes
– Many wrappers were discarded
• QtJS, QtJambi, ruby qtbindings, go-qml etc…
– GUI toolkits update continuously
• Basically newer version is better
• Almost all toolkit gave up updating
• I have to update wrapper by myself to use newer future
– Languages update too
15. Not all GUI toolkit wrappers are bad
PyQt Commercial (Qt 5.5 supports)
wxPython Nightly build still supports latest Python(2.7/3.5)
GTK# Xamarin supports?
pygobject or some libs gobject introspection is good for keeping fresh
Swing from Jython/JRuby Using toolkit directly
tkinter / Qt Quick Official wrapper provided by suppliers
• Some wrappers provide updates continuously
• Maintaining is too heavy for individual developer
• Community/Organizational support is required
17. Implement GUI toolkit in Go
• There are many small GUI toolkits in C/C++
– http://qiita.com/shimacpyon/items/e5d2a4e2019273345c37
• Port one of them to Go!
– NanoGUI seems good to port
※ When start porting, I didn’t the existence of Shiny
18. GUI toolkit on GL building blocks
Font Loader Font Renderer
Texture
Management
Font Texture
Management
Event Handling
Vector GraphicsImage Loader
Widget Drawing
OpenGLOS Window System
Widget
Management
19. NanoGUI toolkit on GL building blocks
Font Loader Font Renderer
Texture
Management
Font Texture
Management
Event Handling
Vector GraphicsImage Loader
Widget Drawing
OpenGLOS Window System
Widget
Management
stb_truetype.h
stb_image.h
NanoVG
GLFW
NanoGUI
fontstash
20. My toolkit on GL building blocks
Font Loader Font Renderer
Texture
Management
Font Texture
Management
Event Handling
Vector GraphicsImage Loader
Widget Drawing
OpenGLOS Window System
Widget
Management
go’s image
NanoVGo
goxjs/glfw
goxjs/gl
NanoGUI.go
23. Input Method Editor issue
• IME support is needed to input Asian chars
• Now IME becomes more generic than before
– Voice / pen input uses same infrastructure
– Modern OS treats IMEs as keyboards
• This is processed in GLFW (C++ layer)
Japanese IME
English
Speech Input
Handwriting Input
Operating
System
Application
※On Windows, Handwriting features seem to be a part of MS IMEs
24. IME support levels
• Level 1: Root window mode
• Level 2: Over the spot
Images from http://www.mozilla-japan.org/projects/intl/input-method-spec.html
※This is not common classify. My original.
25. • Level 3: On the spot
• Level 4: Context aware conversion
Image from http://nyaruru.hatenablog.com/entry/20070309/p1
26. IME tasks viewed from Application
Level 1 Level 2 Level 3 Level 4
Receive multi byte input ✔ ✔ ✔ ✔
Send cursor position ✔ ✔ ✔
React to preedit text ✔ ✔
Send surrounding text
around cursor
✔
• To achieve higher level IME support, applications
should communicate with IME more
• Each OS provides each API for IME. I should add
new method to GLFW to absorb OS layers
28. Current Status
• Windows
– Level 3. Now I use IMM32(old), but Text Services
Framework (TSF) is preferred.
– Old Chrome and Firefox use TSF (but MPL is not
good for GLFW)
• MacOS X
– Level 3. Applications should implement
NSTextInputClient protocol. I don’t implement
Level 4 feature yet.
https://github.com/glfw/glfw/pull/658
29. Current Status
• X11
– Level 3. XIM protocol doesn’t support level 4.
– On Linux/BSDs, there many input method frameworks
(UIM, SCIM, ibus, fcitx etc) and Qt/GTK communicate
with them directly, but don’t use them (not to
introduce new dependency to GLFW)
• Wayland
– Not yet
• Mir
– Not yet
https://github.com/glfw/glfw/pull/658
30. Future Plan
• Improve GLFW more to support level 4 and
Wayland, Mir
• Reconstruct NanoVGo
– Cache geometry
– Now it redraw from scratch on every frame
• Reconstruct NanoGUI.go
– ListView support like QAbstractItemView /
QAbstractItemModel
– Better image resource handling
33. C++ is not so fear than before
• Use Qt via C++ directly
– No wrapper issues
– Using C++ is not tough anymore
– C++11 is much better than 20 years ago
– Qt5 supports C++11 (C++11 is required from 5.7)
• But building code in Golang is still faster than
C++ for me
34. C++ support tool
• Go is easy to build. C++ is boring
• I made helper tool to make C++ easy
– https://github.com/qtpm/qtpm
• Generate CMakeLists.txt. Support following IDEs:
– Qt Creator
– CLion (thank you for Jetbrains OSS support program)
• It support the following commands like go:
– qtpm get
– qtpm build
– qtpm vet
– qtpm fmt
36. Qt’s thread model
• You should understand it if use Go with Qt
• http://doc.qt.io/qt-5/threads-qobject.html
• All Qt’s objects are belonging to thread
– Calling object’s method from non-owner thread
causes panic
– To call other thread’s method,
QMetaObject::invokeMethod is needed
(signal/slot uses this behind it)
– Each thread has event loop
– Of course, blocking main thread is not preferred
37. 3.1: QProcess
• Create standalone CUI program in Golang and
call via QProcess class
– If the job is simple, it is the best (it becomes
simple code)
• Bi-directional communication is tough
– Receiving message in SLOT (callback)
– No fluent code
38. 3.2: QLocalServer/QLocalSocket
• Qt provides special wrapper to provides high
performance inter process communication
– On Windows, it uses named pipe
– On other environment, it uses UNIX domain socket
• Go implementation is ready
– I tested on Windows and Mac
• How to manage process?
– I need to implement some process supervisor
https://github.com/shibukawa/localsocket
39. 3.3: c-archive
• Creating c-archive and link with Qt application
• Go 1.7 will support it on Windows too
40. • If the API is simple, it is the best
• All method is called synchronous by default
• If callback from Golang to C++, it is little messy
– Polling is easy, but not beautiful
– Pass function pointer from C++ and call it in Go
• https://gist.github.com/shibukawa/ab516964b0390cb2
34c7c42e5c9bfda1
• How to specify “-mmacosx-version-
min=10.x”?
41. 3.4: dRuby style
• dRuby is a my favorite API in Ruby
• dRuby hooks method call and transfers
method name and parameters via TCP/IP
– Go: https://github.com/shibukawa/tobubus
– C++: https://github.com/qtpm/QtTobubus
DRbObjectClient
hello(“world”)
method_missing()
DRbServer
Actual
Instance
hello(“world”)
42. tobubus
• Now it works on QLocalSocket/Server
• It uses Qt
reflection(QMetaObject/QMetaMethod) and
Go’s reflect
• Method call is serialized by CBOR
– CBOR is almost RFC version of MessagePacktobubusC++/Go Client
hello(“world”)
Proxy
C++/Go Actual
Instance
hello(“world”)
tobubus
CBOR on local socket
43. 3.5: gRPC
• I didn’t try it
– I don’t want to create extra interface definitions
for communication
• It is suitable for loose coupling of micro services
– It seems difficult to use with Qt threading model
• I may need create wrappers for all interfaces in Qt
44. Combinations of my solutions
Infrastructur
e
Connect Pros/Cons Simple Teste
d
QProcess stdin/std
out
bi-direction is difficult
Go is always running in other process
(should take care QThread)
S ✔
tobubus Not implemented yet A
QProcess +
QLocalSocket
/Server
tobubus It needs process supervisor
C++ client code is not clean because of
Qt thread model
Go is always running in other process
(should take care QThread)
B ✔
c-archive linker Writing callback is little messy
Windows doesn’t support until 1.7
It works synchronously
S ✔
45. Which is better?
• QProcess is the most simple now
• tobubus + QLocalSocket/Server was originally
designed for generic plug-in system. I already
implemented but I feel too heavy now.
• c-archive is a stable way. It is not bad if you
can wait by 1.7 release.
46. Conclusion
• This presentation doesn’t show the best
solution for multi platform GUI
• I am exploring possibility about Go and GUI
and creating experimental codes.
– I will still improve GLFW IME support to realize
pure Go solution
– If you can wait by Go 1.7, c-archive is better
• GUI programming is not easy
• C++ is required