[INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno

Nexus FrontierTech
Nexus FrontierTechNexus FrontierTech
Building Command
Line Tools
with Golang
Takaaki Mizuno
Who Am I
Takaaki Mizuno
CEO of Innovatube Solutions
19 years experience as software developer
34 years experience in coding
Still coding
Based in Singapore
Japanese born in Japan
Published 20+ technical books in Japan
Golang Use Cases
Golang Use Cases
Web Services
Mobile Applications ( Android / iOS )
Command Line Tools
Golang at Innovatube
We selected 2 primary languages for web back-end development.
PHP
Golang
Golang is used for non-HTML-Heavy Web development
API Server for Mobile Apps
Use React on Frontend and backend system only returns
structured data such as JSON
Golang Use Cases
Web Services
Mobile Applications ( Android / iOS )
Daemon / Service
Command Line Tools
Golang Use Cases
Web Services
Mobile Applications ( Android / iOS )
Daemon / Service
Command Line Tools
Golang and Command
Line Tools
Which Language Are You Using
For Writing Command Line Tools ?
Node.js
Java
Python
Ruby
C++
Golang
Which Language Are You Using
For Writing Command Line Tools ?
Node.js
Java
Python
Ruby
C++
Golang
Which language should we
use for command line tools?
It depends on the use case of the tool.
If the tool is dedicated for specific languages/framework, use that languages.
Ruby for rubygems
PHP for composer
Node.js for front-end task runners ( gulp / grunt )
It the tool is a part of a project, you should use same language
Java for Java project
Python for Python project
Other cases
Use Golang
Benefit for Command Line
Tools
Single Binary
Cross Platform ( Can support Windows easily )
No run-time dependencies
Concurrency
Many famous “command line”
tools are written in Golang
docker
Terraform ( By Hashicorp)
hub ( by GitHub )
Write command line
tools in Golang
Many Libraries You Can Use
Standard CLI
Libraries for building standard or basic Command Line applications
cli - A feature-rich and easy to use command-line package based on golang tag
cli-init - The easy way to start building Golang command line application.
climax - An alternative CLI with "human face", in spirit of Go command
cobra - A Commander for modern Go CLI interactions
codegangsta/cli - A small package for building command line apps in Go.
docopt.go - A command-line arguments parser that will make you smile.
go-flags - go command line option parser
kingpin - A command line and flag parser supporting sub commands.
liner - A Go readline-like library for command-line interfaces.
mitchellh/cli - A Go library for implementing command-line interfaces.
mow.cli - A Go library for building CLI applications with sophisticated flag and argument parsing and validation.
From: Awesome-go ( https://github.com/avelino/awesome-go#command-line )
You can use “gcli”
It generates a skeleton (codes and its directory
structure) you need to start building Command Line
Interface (CLI) tool
https://github.com/tcnksm/gcli
Easy To Use
gcli new -command=init -command=get -owner=takaaki-mizuno awesomecommand
% awesomecommand init
DEMO
Support 4 CLI libraries
+-----------------+---------+-----------------------------------------------------+
| NAME | COMMAND | URL |
+-----------------+---------+-----------------------------------------------------+
| mitchellh_cli | * | https://github.com/mitchellh/cli |
| codegangsta_cli | * | https://github.com/codegangsta/cli |
| go_cmd | * | https://github.com/golang/go/tree/master/src/cmd/go |
| flag | | https://golang.org/pkg/flag/ |
+-----------------+---------+-----------------------------------------------------+
% gcli list
Some Tips For Golang
( command line tools )
Library Dependency
Library version dependency might become problems on
team development / source code distribution.
Only using “go get” cannot manage library versions.
Use “godep”
https://github.com/tools/godep
It generates “Godeps.json” file which stores library versions.
Use “godep get” to restore libraries.
“godep go build” uses Godeps libraries
{
"ImportPath": "github.com/takaaki-mizuno/awesomecommand",
"GoVersion": "go1.6",
"Deps": [
{
"ImportPath": "github.com/codegangsta/cli",
"Comment": "1.2.0-237-g71f57d3",
"Rev": "71f57d300dd6a780ac1856c005c4b518cfd498ec"
}
]
}
Colorize UI
mgutz/ansi
Make UI Colorize
mattn/go-colorable
Wrap io.Writer to Support Windows DOS Console
Building Dashboard
gizak/termui
Can build Text Base Dashboard with GUI Building-
Like APIs
Happy Coding!
Q & A
1 de 26

Recomendados

[INNOVATUBE] Tech Talk #3: Golang - Vũ Nguyễn por
[INNOVATUBE] Tech Talk #3: Golang - Vũ Nguyễn [INNOVATUBE] Tech Talk #3: Golang - Vũ Nguyễn
[INNOVATUBE] Tech Talk #3: Golang - Vũ Nguyễn Nexus FrontierTech
189 vistas23 diapositivas
Building Command Line Tools with Golang por
Building Command Line Tools with GolangBuilding Command Line Tools with Golang
Building Command Line Tools with GolangTakaaki Mizuno
2.4K vistas22 diapositivas
Come With Golang por
Come With GolangCome With Golang
Come With Golang尚文 曾
765 vistas38 diapositivas
Developing Cross Platform Applications with Golang por
Developing Cross Platform Applications with GolangDeveloping Cross Platform Applications with Golang
Developing Cross Platform Applications with GolangErhan Yakut
290 vistas19 diapositivas
13 practical tips for writing secure golang applications por
13 practical tips for writing secure golang applications13 practical tips for writing secure golang applications
13 practical tips for writing secure golang applicationsKarthik Gaekwad
9.5K vistas32 diapositivas
Golang from Scala developer’s perspective por
Golang from Scala developer’s perspectiveGolang from Scala developer’s perspective
Golang from Scala developer’s perspectiveSveta Bozhko
2.6K vistas52 diapositivas

Más contenido relacionado

La actualidad más candente

Getting started with Go - Florin Patan - Codemotion Rome 2017 por
Getting started with Go - Florin Patan - Codemotion Rome 2017Getting started with Go - Florin Patan - Codemotion Rome 2017
Getting started with Go - Florin Patan - Codemotion Rome 2017Codemotion
815 vistas47 diapositivas
GoLang Introduction por
GoLang IntroductionGoLang Introduction
GoLang IntroductionSpandana Govindgari
220 vistas25 diapositivas
Introduction to GoLang por
Introduction to GoLangIntroduction to GoLang
Introduction to GoLangNVISIA
351 vistas48 diapositivas
Dependency management in golang por
Dependency management in golangDependency management in golang
Dependency management in golangRamit Surana
1.4K vistas20 diapositivas
Optimizing and Profiling Golang Rest Api por
Optimizing and Profiling Golang Rest ApiOptimizing and Profiling Golang Rest Api
Optimizing and Profiling Golang Rest ApiIman Syahputra Situmorang
735 vistas31 diapositivas
welcome to gopherlabs - why go (golang)? por
welcome to gopherlabs - why go (golang)?welcome to gopherlabs - why go (golang)?
welcome to gopherlabs - why go (golang)?sangam biradar
410 vistas88 diapositivas

La actualidad más candente(20)

Getting started with Go - Florin Patan - Codemotion Rome 2017 por Codemotion
Getting started with Go - Florin Patan - Codemotion Rome 2017Getting started with Go - Florin Patan - Codemotion Rome 2017
Getting started with Go - Florin Patan - Codemotion Rome 2017
Codemotion815 vistas
Introduction to GoLang por NVISIA
Introduction to GoLangIntroduction to GoLang
Introduction to GoLang
NVISIA351 vistas
Dependency management in golang por Ramit Surana
Dependency management in golangDependency management in golang
Dependency management in golang
Ramit Surana1.4K vistas
welcome to gopherlabs - why go (golang)? por sangam biradar
welcome to gopherlabs - why go (golang)?welcome to gopherlabs - why go (golang)?
welcome to gopherlabs - why go (golang)?
sangam biradar410 vistas
Why you should care about Go (Golang) por Aaron Schlesinger
Why you should care about Go (Golang)Why you should care about Go (Golang)
Why you should care about Go (Golang)
Aaron Schlesinger1.6K vistas
(Live) build and run golang web server on android.avi por SeongJae Park
(Live) build and run golang web server on android.avi(Live) build and run golang web server on android.avi
(Live) build and run golang web server on android.avi
SeongJae Park2.9K vistas
A First Look at Google's Go Programming Language por Ganesh Samarthyam
A First Look at Google's Go Programming LanguageA First Look at Google's Go Programming Language
A First Look at Google's Go Programming Language
Ganesh Samarthyam771 vistas
Golang for PHP programmers: A practical introduction por Richard Tuin
Golang for PHP programmers: A practical introductionGolang for PHP programmers: A practical introduction
Golang for PHP programmers: A practical introduction
Richard Tuin875 vistas
Mphasis Digital - Use Go (gloang) for system programming, distributed systems... por Aniruddha Chakrabarti
Mphasis Digital - Use Go (gloang) for system programming, distributed systems...Mphasis Digital - Use Go (gloang) for system programming, distributed systems...
Mphasis Digital - Use Go (gloang) for system programming, distributed systems...
Introduction to go lang por Amal Mohan N
Introduction to go langIntroduction to go lang
Introduction to go lang
Amal Mohan N552 vistas
The Go programming language - Intro by MyLittleAdventure por mylittleadventure
The Go programming language - Intro by MyLittleAdventureThe Go programming language - Intro by MyLittleAdventure
The Go programming language - Intro by MyLittleAdventure
mylittleadventure686 vistas
Golang start and tips por Aaron King
Golang start and tipsGolang start and tips
Golang start and tips
Aaron King491 vistas

Destacado

Golang server design pattern por
Golang server design patternGolang server design pattern
Golang server design pattern理 傅
11K vistas40 diapositivas
Golang basics for Java developers - Part 1 por
Golang basics for Java developers - Part 1Golang basics for Java developers - Part 1
Golang basics for Java developers - Part 1Robert Stern
1.3K vistas74 diapositivas
Golang for OO Programmers por
Golang for OO ProgrammersGolang for OO Programmers
Golang for OO Programmerskhalid Nowaf Almutiri
1.4K vistas19 diapositivas
Write microservice in golang por
Write microservice in golangWrite microservice in golang
Write microservice in golangBo-Yi Wu
14.8K vistas126 diapositivas
Go for statistical programming por
Go for statistical programmingGo for statistical programming
Go for statistical programmingHakka Labs
12K vistas47 diapositivas
Simplifying open stack and kubernetes networking with romana por
Simplifying open stack and kubernetes networking with romanaSimplifying open stack and kubernetes networking with romana
Simplifying open stack and kubernetes networking with romanaJuergen Brendel
883 vistas68 diapositivas

Destacado(20)

Golang server design pattern por 理 傅
Golang server design patternGolang server design pattern
Golang server design pattern
理 傅11K vistas
Golang basics for Java developers - Part 1 por Robert Stern
Golang basics for Java developers - Part 1Golang basics for Java developers - Part 1
Golang basics for Java developers - Part 1
Robert Stern1.3K vistas
Write microservice in golang por Bo-Yi Wu
Write microservice in golangWrite microservice in golang
Write microservice in golang
Bo-Yi Wu14.8K vistas
Go for statistical programming por Hakka Labs
Go for statistical programmingGo for statistical programming
Go for statistical programming
Hakka Labs12K vistas
Simplifying open stack and kubernetes networking with romana por Juergen Brendel
Simplifying open stack and kubernetes networking with romanaSimplifying open stack and kubernetes networking with romana
Simplifying open stack and kubernetes networking with romana
Juergen Brendel883 vistas
Codementor Office Hours with Eric Chiang: Stdin, Stdout: pup, Go, and life at... por Arc & Codementor
Codementor Office Hours with Eric Chiang: Stdin, Stdout: pup, Go, and life at...Codementor Office Hours with Eric Chiang: Stdin, Stdout: pup, Go, and life at...
Codementor Office Hours with Eric Chiang: Stdin, Stdout: pup, Go, and life at...
Arc & Codementor3.4K vistas
Container Networking Challenges for Production Readiness por Vipin Jain
Container Networking Challenges for Production ReadinessContainer Networking Challenges for Production Readiness
Container Networking Challenges for Production Readiness
Vipin Jain412 vistas
DockerCon US 2016 - Docker Networking deep dive por Madhu Venugopal
DockerCon US 2016 - Docker Networking deep diveDockerCon US 2016 - Docker Networking deep dive
DockerCon US 2016 - Docker Networking deep dive
Madhu Venugopal4.3K vistas
Git Flow and JavaScript Coding Style por Bo-Yi Wu
Git Flow and JavaScript Coding StyleGit Flow and JavaScript Coding Style
Git Flow and JavaScript Coding Style
Bo-Yi Wu5.2K vistas
Introduction to Grunt.js on Taiwan JavaScript Conference por Bo-Yi Wu
Introduction to Grunt.js on Taiwan JavaScript ConferenceIntroduction to Grunt.js on Taiwan JavaScript Conference
Introduction to Grunt.js on Taiwan JavaScript Conference
Bo-Yi Wu40.4K vistas
Docker meetup oct14 por Vipin Jain
Docker meetup   oct14Docker meetup   oct14
Docker meetup oct14
Vipin Jain1.3K vistas
Gearman work queue in php por Bo-Yi Wu
Gearman work queue in phpGearman work queue in php
Gearman work queue in php
Bo-Yi Wu8.6K vistas
Phpconf 2011 introduction_to_codeigniter por Bo-Yi Wu
Phpconf 2011 introduction_to_codeigniterPhpconf 2011 introduction_to_codeigniter
Phpconf 2011 introduction_to_codeigniter
Bo-Yi Wu4.4K vistas
Container Networking Meetup March 31 2016 por Andrew Randall
Container Networking Meetup March 31 2016Container Networking Meetup March 31 2016
Container Networking Meetup March 31 2016
Andrew Randall1.1K vistas
Evolving Virtual Networking with IO Visor [OpenStack Summit Austin | April 2016] por IO Visor Project
Evolving Virtual Networking with IO Visor [OpenStack Summit Austin | April 2016]Evolving Virtual Networking with IO Visor [OpenStack Summit Austin | April 2016]
Evolving Virtual Networking with IO Visor [OpenStack Summit Austin | April 2016]
IO Visor Project2.6K vistas
Jenkins vs gogs por Aaron King
Jenkins vs gogsJenkins vs gogs
Jenkins vs gogs
Aaron King735 vistas

Similar a [INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno

Advantages of golang development services & 10 most used go frameworks por
Advantages of golang development services & 10 most used go frameworksAdvantages of golang development services & 10 most used go frameworks
Advantages of golang development services & 10 most used go frameworksKaty Slemon
111 vistas11 diapositivas
When, how & why use golang in 2021 go benefits & use cases por
When, how & why use golang in 2021  go benefits & use casesWhen, how & why use golang in 2021  go benefits & use cases
When, how & why use golang in 2021 go benefits & use casesKaty Slemon
21 vistas30 diapositivas
Scaling applications with go por
Scaling applications with goScaling applications with go
Scaling applications with goVimlesh Sharma
2.5K vistas34 diapositivas
Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5 por
Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5
Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5Amanda Lam
1.6K vistas41 diapositivas
Golang web development por
Golang web developmentGolang web development
Golang web developmentMobinius Technologies
31 vistas7 diapositivas
Getting started with go - Florin Patan - Codemotion Milan 2016 por
Getting started with go - Florin Patan - Codemotion Milan 2016Getting started with go - Florin Patan - Codemotion Milan 2016
Getting started with go - Florin Patan - Codemotion Milan 2016Codemotion
871 vistas44 diapositivas

Similar a [INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno(20)

Advantages of golang development services & 10 most used go frameworks por Katy Slemon
Advantages of golang development services & 10 most used go frameworksAdvantages of golang development services & 10 most used go frameworks
Advantages of golang development services & 10 most used go frameworks
Katy Slemon111 vistas
When, how & why use golang in 2021 go benefits & use cases por Katy Slemon
When, how & why use golang in 2021  go benefits & use casesWhen, how & why use golang in 2021  go benefits & use cases
When, how & why use golang in 2021 go benefits & use cases
Katy Slemon21 vistas
Scaling applications with go por Vimlesh Sharma
Scaling applications with goScaling applications with go
Scaling applications with go
Vimlesh Sharma2.5K vistas
Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5 por Amanda Lam
Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5
Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5
Amanda Lam1.6K vistas
Getting started with go - Florin Patan - Codemotion Milan 2016 por Codemotion
Getting started with go - Florin Patan - Codemotion Milan 2016Getting started with go - Florin Patan - Codemotion Milan 2016
Getting started with go - Florin Patan - Codemotion Milan 2016
Codemotion871 vistas
Hire golang developers and make the shift to brighter business future (build ... por Katy Slemon
Hire golang developers and make the shift to brighter business future (build ...Hire golang developers and make the shift to brighter business future (build ...
Hire golang developers and make the shift to brighter business future (build ...
Katy Slemon67 vistas
Ultimate golang performance optimization guide por Katy Slemon
Ultimate golang performance optimization guide Ultimate golang performance optimization guide
Ultimate golang performance optimization guide
Katy Slemon101 vistas
iTHome Gopher Day 2017: What can Golang do? (Using project 52 as examples) por Evan Lin
iTHome Gopher Day 2017: What can Golang do?  (Using project 52 as examples)iTHome Gopher Day 2017: What can Golang do?  (Using project 52 as examples)
iTHome Gopher Day 2017: What can Golang do? (Using project 52 as examples)
Evan Lin3.7K vistas
Build and Deploy a Python Web App to Amazon in 30 Mins por Jeff Hull
Build and Deploy a Python Web App to Amazon in 30 MinsBuild and Deploy a Python Web App to Amazon in 30 Mins
Build and Deploy a Python Web App to Amazon in 30 Mins
Jeff Hull9.6K vistas
Kotlin native for iOS and Android por Shady Selim
Kotlin native for iOS and AndroidKotlin native for iOS and Android
Kotlin native for iOS and Android
Shady Selim350 vistas
Cross platform mobile approaches por Phuong Hoang Vu
Cross platform mobile approachesCross platform mobile approaches
Cross platform mobile approaches
Phuong Hoang Vu1.4K vistas
The Ring programming language version 1.2 book - Part 4 of 84 por Mahmoud Samir Fayed
The Ring programming language version 1.2 book - Part 4 of 84The Ring programming language version 1.2 book - Part 4 of 84
The Ring programming language version 1.2 book - Part 4 of 84
Mahmoud Samir Fayed116 vistas
The Ring programming language version 1.5.1 book - Part 4 of 180 por Mahmoud Samir Fayed
The Ring programming language version 1.5.1 book - Part 4 of 180The Ring programming language version 1.5.1 book - Part 4 of 180
The Ring programming language version 1.5.1 book - Part 4 of 180
Golang : A Hype or the Future? por Mindfire LLC
Golang : A Hype or the Future?Golang : A Hype or the Future?
Golang : A Hype or the Future?
Mindfire LLC9 vistas
Let's Go: Introduction to Google's Go Programming Language por Ganesh Samarthyam
Let's Go: Introduction to Google's Go Programming LanguageLet's Go: Introduction to Google's Go Programming Language
Let's Go: Introduction to Google's Go Programming Language
Ganesh Samarthyam394 vistas
Lets Go - An introduction to Google's Go Programming Language por Ganesh Samarthyam
Lets Go - An introduction to Google's Go Programming Language Lets Go - An introduction to Google's Go Programming Language
Lets Go - An introduction to Google's Go Programming Language
Ganesh Samarthyam298 vistas

Más de Nexus FrontierTech

[Executive Lounge Talk] Digital Transformation Journey por
[Executive Lounge Talk] Digital Transformation Journey[Executive Lounge Talk] Digital Transformation Journey
[Executive Lounge Talk] Digital Transformation JourneyNexus FrontierTech
307 vistas23 diapositivas
[AI series Talk #2] From PoC to Production - A Case Study por
[AI series Talk #2] From PoC to Production - A Case Study[AI series Talk #2] From PoC to Production - A Case Study
[AI series Talk #2] From PoC to Production - A Case StudyNexus FrontierTech
114 vistas16 diapositivas
[AI Series Talk #2] Moving AI from PoC Stage to Production por
[AI Series Talk #2] Moving AI from PoC Stage to Production[AI Series Talk #2] Moving AI from PoC Stage to Production
[AI Series Talk #2] Moving AI from PoC Stage to ProductionNexus FrontierTech
86 vistas15 diapositivas
[VFS 2019] Introduction to GANs - Pixta Vietnam por
[VFS 2019] Introduction to GANs - Pixta Vietnam[VFS 2019] Introduction to GANs - Pixta Vietnam
[VFS 2019] Introduction to GANs - Pixta VietnamNexus FrontierTech
78 vistas14 diapositivas
[VFS 2019] Enabling Young Generation for Future - AWS Vietnam User Group por
[VFS 2019] Enabling Young Generation for Future - AWS Vietnam User Group[VFS 2019] Enabling Young Generation for Future - AWS Vietnam User Group
[VFS 2019] Enabling Young Generation for Future - AWS Vietnam User GroupNexus FrontierTech
69 vistas25 diapositivas
[VFS 2019] Building chatbot with RASA por
[VFS 2019] Building chatbot with RASA[VFS 2019] Building chatbot with RASA
[VFS 2019] Building chatbot with RASANexus FrontierTech
1.1K vistas23 diapositivas

Más de Nexus FrontierTech(20)

[Executive Lounge Talk] Digital Transformation Journey por Nexus FrontierTech
[Executive Lounge Talk] Digital Transformation Journey[Executive Lounge Talk] Digital Transformation Journey
[Executive Lounge Talk] Digital Transformation Journey
Nexus FrontierTech307 vistas
[AI series Talk #2] From PoC to Production - A Case Study por Nexus FrontierTech
[AI series Talk #2] From PoC to Production - A Case Study[AI series Talk #2] From PoC to Production - A Case Study
[AI series Talk #2] From PoC to Production - A Case Study
Nexus FrontierTech114 vistas
[AI Series Talk #2] Moving AI from PoC Stage to Production por Nexus FrontierTech
[AI Series Talk #2] Moving AI from PoC Stage to Production[AI Series Talk #2] Moving AI from PoC Stage to Production
[AI Series Talk #2] Moving AI from PoC Stage to Production
Nexus FrontierTech86 vistas
[VFS 2019] Introduction to GANs - Pixta Vietnam por Nexus FrontierTech
[VFS 2019] Introduction to GANs - Pixta Vietnam[VFS 2019] Introduction to GANs - Pixta Vietnam
[VFS 2019] Introduction to GANs - Pixta Vietnam
Nexus FrontierTech78 vistas
[VFS 2019] Enabling Young Generation for Future - AWS Vietnam User Group por Nexus FrontierTech
[VFS 2019] Enabling Young Generation for Future - AWS Vietnam User Group[VFS 2019] Enabling Young Generation for Future - AWS Vietnam User Group
[VFS 2019] Enabling Young Generation for Future - AWS Vietnam User Group
Nexus FrontierTech69 vistas
[VFS 2019] Vietnamese Speech-to-Text: Applications and Product por Nexus FrontierTech
[VFS 2019] Vietnamese Speech-to-Text: Applications and Product[VFS 2019] Vietnamese Speech-to-Text: Applications and Product
[VFS 2019] Vietnamese Speech-to-Text: Applications and Product
Nexus FrontierTech116 vistas
[VFS 2019] How AI Will Innovate Recruitment por Nexus FrontierTech
[VFS 2019] How AI Will Innovate Recruitment[VFS 2019] How AI Will Innovate Recruitment
[VFS 2019] How AI Will Innovate Recruitment
Nexus FrontierTech125 vistas
[VFS 2019] Preventive Approach to Designing and Selling Healthy AI System por Nexus FrontierTech
[VFS 2019] Preventive Approach to Designing and Selling Healthy AI System [VFS 2019] Preventive Approach to Designing and Selling Healthy AI System
[VFS 2019] Preventive Approach to Designing and Selling Healthy AI System
Nexus FrontierTech52 vistas
[VFS 2019] Phương pháp phát hiện bất thường bằng học máy por Nexus FrontierTech
[VFS 2019] Phương pháp phát hiện bất thường bằng học máy[VFS 2019] Phương pháp phát hiện bất thường bằng học máy
[VFS 2019] Phương pháp phát hiện bất thường bằng học máy
Nexus FrontierTech533 vistas
[VFS 2019] OCR Techniques for Digital Transformation Evolution por Nexus FrontierTech
[VFS 2019] OCR Techniques for Digital Transformation Evolution[VFS 2019] OCR Techniques for Digital Transformation Evolution
[VFS 2019] OCR Techniques for Digital Transformation Evolution
Nexus FrontierTech111 vistas
[VFS 2019] Human Activity Recognition Approaches por Nexus FrontierTech
[VFS 2019] Human Activity Recognition Approaches [VFS 2019] Human Activity Recognition Approaches
[VFS 2019] Human Activity Recognition Approaches
Nexus FrontierTech194 vistas
[VFS 2019] Data Strategy for Vietnamese Businesses to Levarage AI por Nexus FrontierTech
[VFS 2019] Data Strategy for Vietnamese Businesses to Levarage AI[VFS 2019] Data Strategy for Vietnamese Businesses to Levarage AI
[VFS 2019] Data Strategy for Vietnamese Businesses to Levarage AI
Nexus FrontierTech36 vistas
[VFS 2019] Digital Solution for Enterprises: 24/7 A.I English Speaking Coach por Nexus FrontierTech
[VFS 2019] Digital Solution for Enterprises: 24/7 A.I English Speaking Coach[VFS 2019] Digital Solution for Enterprises: 24/7 A.I English Speaking Coach
[VFS 2019] Digital Solution for Enterprises: 24/7 A.I English Speaking Coach
Nexus FrontierTech76 vistas
[VFS 2019] Project Management for AI-based Product - A Better Approach por Nexus FrontierTech
[VFS 2019] Project Management for AI-based Product - A Better Approach[VFS 2019] Project Management for AI-based Product - A Better Approach
[VFS 2019] Project Management for AI-based Product - A Better Approach
Nexus FrontierTech118 vistas
[VFS 2019] AI Ecosystem transition from zero to hero - case study by rubikAI por Nexus FrontierTech
[VFS 2019] AI Ecosystem transition from zero to hero - case study by rubikAI[VFS 2019] AI Ecosystem transition from zero to hero - case study by rubikAI
[VFS 2019] AI Ecosystem transition from zero to hero - case study by rubikAI
Nexus FrontierTech19 vistas

Último

AI and Ml presentation .pptx por
AI and Ml presentation .pptxAI and Ml presentation .pptx
AI and Ml presentation .pptxFayazAli87
11 vistas15 diapositivas
DSD-INT 2023 Exploring flash flood hazard reduction in arid regions using a h... por
DSD-INT 2023 Exploring flash flood hazard reduction in arid regions using a h...DSD-INT 2023 Exploring flash flood hazard reduction in arid regions using a h...
DSD-INT 2023 Exploring flash flood hazard reduction in arid regions using a h...Deltares
5 vistas31 diapositivas
Gen Apps on Google Cloud PaLM2 and Codey APIs in Action por
Gen Apps on Google Cloud PaLM2 and Codey APIs in ActionGen Apps on Google Cloud PaLM2 and Codey APIs in Action
Gen Apps on Google Cloud PaLM2 and Codey APIs in ActionMárton Kodok
5 vistas55 diapositivas
Unleash The Monkeys por
Unleash The MonkeysUnleash The Monkeys
Unleash The MonkeysJacob Duijzer
7 vistas28 diapositivas
ict act 1.pptx por
ict act 1.pptxict act 1.pptx
ict act 1.pptxsanjaniarun08
13 vistas17 diapositivas
FIMA 2023 Neo4j & FS - Entity Resolution.pptx por
FIMA 2023 Neo4j & FS - Entity Resolution.pptxFIMA 2023 Neo4j & FS - Entity Resolution.pptx
FIMA 2023 Neo4j & FS - Entity Resolution.pptxNeo4j
6 vistas26 diapositivas

Último(20)

AI and Ml presentation .pptx por FayazAli87
AI and Ml presentation .pptxAI and Ml presentation .pptx
AI and Ml presentation .pptx
FayazAli8711 vistas
DSD-INT 2023 Exploring flash flood hazard reduction in arid regions using a h... por Deltares
DSD-INT 2023 Exploring flash flood hazard reduction in arid regions using a h...DSD-INT 2023 Exploring flash flood hazard reduction in arid regions using a h...
DSD-INT 2023 Exploring flash flood hazard reduction in arid regions using a h...
Deltares5 vistas
Gen Apps on Google Cloud PaLM2 and Codey APIs in Action por Márton Kodok
Gen Apps on Google Cloud PaLM2 and Codey APIs in ActionGen Apps on Google Cloud PaLM2 and Codey APIs in Action
Gen Apps on Google Cloud PaLM2 and Codey APIs in Action
Márton Kodok5 vistas
FIMA 2023 Neo4j & FS - Entity Resolution.pptx por Neo4j
FIMA 2023 Neo4j & FS - Entity Resolution.pptxFIMA 2023 Neo4j & FS - Entity Resolution.pptx
FIMA 2023 Neo4j & FS - Entity Resolution.pptx
Neo4j6 vistas
DSD-INT 2023 Delft3D FM Suite 2024.01 2D3D - New features + Improvements - Ge... por Deltares
DSD-INT 2023 Delft3D FM Suite 2024.01 2D3D - New features + Improvements - Ge...DSD-INT 2023 Delft3D FM Suite 2024.01 2D3D - New features + Improvements - Ge...
DSD-INT 2023 Delft3D FM Suite 2024.01 2D3D - New features + Improvements - Ge...
Deltares17 vistas
360 graden fabriek por info33492
360 graden fabriek360 graden fabriek
360 graden fabriek
info3349237 vistas
Generic or specific? Making sensible software design decisions por Bert Jan Schrijver
Generic or specific? Making sensible software design decisionsGeneric or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisions
Dev-HRE-Ops - Addressing the _Last Mile DevOps Challenge_ in Highly Regulated... por TomHalpin9
Dev-HRE-Ops - Addressing the _Last Mile DevOps Challenge_ in Highly Regulated...Dev-HRE-Ops - Addressing the _Last Mile DevOps Challenge_ in Highly Regulated...
Dev-HRE-Ops - Addressing the _Last Mile DevOps Challenge_ in Highly Regulated...
TomHalpin95 vistas
Dapr Unleashed: Accelerating Microservice Development por Miroslav Janeski
Dapr Unleashed: Accelerating Microservice DevelopmentDapr Unleashed: Accelerating Microservice Development
Dapr Unleashed: Accelerating Microservice Development
Miroslav Janeski10 vistas
DSD-INT 2023 Simulating a falling apron in Delft3D 4 - Engineering Practice -... por Deltares
DSD-INT 2023 Simulating a falling apron in Delft3D 4 - Engineering Practice -...DSD-INT 2023 Simulating a falling apron in Delft3D 4 - Engineering Practice -...
DSD-INT 2023 Simulating a falling apron in Delft3D 4 - Engineering Practice -...
Deltares6 vistas
A first look at MariaDB 11.x features and ideas on how to use them por Federico Razzoli
A first look at MariaDB 11.x features and ideas on how to use themA first look at MariaDB 11.x features and ideas on how to use them
A first look at MariaDB 11.x features and ideas on how to use them
Federico Razzoli45 vistas
SUGCON ANZ Presentation V2.1 Final.pptx por Jack Spektor
SUGCON ANZ Presentation V2.1 Final.pptxSUGCON ANZ Presentation V2.1 Final.pptx
SUGCON ANZ Presentation V2.1 Final.pptx
Jack Spektor22 vistas
Copilot Prompting Toolkit_All Resources.pdf por Riccardo Zamana
Copilot Prompting Toolkit_All Resources.pdfCopilot Prompting Toolkit_All Resources.pdf
Copilot Prompting Toolkit_All Resources.pdf
Riccardo Zamana8 vistas
Navigating container technology for enhanced security by Niklas Saari por Metosin Oy
Navigating container technology for enhanced security by Niklas SaariNavigating container technology for enhanced security by Niklas Saari
Navigating container technology for enhanced security by Niklas Saari
Metosin Oy13 vistas
DSD-INT 2023 The Danube Hazardous Substances Model - Kovacs por Deltares
DSD-INT 2023 The Danube Hazardous Substances Model - KovacsDSD-INT 2023 The Danube Hazardous Substances Model - Kovacs
DSD-INT 2023 The Danube Hazardous Substances Model - Kovacs
Deltares8 vistas
Fleet Management Software in India por Fleetable
Fleet Management Software in India Fleet Management Software in India
Fleet Management Software in India
Fleetable11 vistas
Headless JS UG Presentation.pptx por Jack Spektor
Headless JS UG Presentation.pptxHeadless JS UG Presentation.pptx
Headless JS UG Presentation.pptx
Jack Spektor7 vistas

[INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno

  • 1. Building Command Line Tools with Golang Takaaki Mizuno
  • 2. Who Am I Takaaki Mizuno CEO of Innovatube Solutions 19 years experience as software developer 34 years experience in coding Still coding Based in Singapore Japanese born in Japan Published 20+ technical books in Japan
  • 4. Golang Use Cases Web Services Mobile Applications ( Android / iOS ) Command Line Tools
  • 5. Golang at Innovatube We selected 2 primary languages for web back-end development. PHP Golang Golang is used for non-HTML-Heavy Web development API Server for Mobile Apps Use React on Frontend and backend system only returns structured data such as JSON
  • 6. Golang Use Cases Web Services Mobile Applications ( Android / iOS ) Daemon / Service Command Line Tools
  • 7. Golang Use Cases Web Services Mobile Applications ( Android / iOS ) Daemon / Service Command Line Tools
  • 9. Which Language Are You Using For Writing Command Line Tools ? Node.js Java Python Ruby C++ Golang
  • 10. Which Language Are You Using For Writing Command Line Tools ? Node.js Java Python Ruby C++ Golang
  • 11. Which language should we use for command line tools? It depends on the use case of the tool. If the tool is dedicated for specific languages/framework, use that languages. Ruby for rubygems PHP for composer Node.js for front-end task runners ( gulp / grunt ) It the tool is a part of a project, you should use same language Java for Java project Python for Python project Other cases Use Golang
  • 12. Benefit for Command Line Tools Single Binary Cross Platform ( Can support Windows easily ) No run-time dependencies Concurrency
  • 13. Many famous “command line” tools are written in Golang docker Terraform ( By Hashicorp) hub ( by GitHub )
  • 15. Many Libraries You Can Use Standard CLI Libraries for building standard or basic Command Line applications cli - A feature-rich and easy to use command-line package based on golang tag cli-init - The easy way to start building Golang command line application. climax - An alternative CLI with "human face", in spirit of Go command cobra - A Commander for modern Go CLI interactions codegangsta/cli - A small package for building command line apps in Go. docopt.go - A command-line arguments parser that will make you smile. go-flags - go command line option parser kingpin - A command line and flag parser supporting sub commands. liner - A Go readline-like library for command-line interfaces. mitchellh/cli - A Go library for implementing command-line interfaces. mow.cli - A Go library for building CLI applications with sophisticated flag and argument parsing and validation. From: Awesome-go ( https://github.com/avelino/awesome-go#command-line )
  • 16. You can use “gcli” It generates a skeleton (codes and its directory structure) you need to start building Command Line Interface (CLI) tool https://github.com/tcnksm/gcli
  • 17. Easy To Use gcli new -command=init -command=get -owner=takaaki-mizuno awesomecommand % awesomecommand init
  • 18. DEMO
  • 19. Support 4 CLI libraries +-----------------+---------+-----------------------------------------------------+ | NAME | COMMAND | URL | +-----------------+---------+-----------------------------------------------------+ | mitchellh_cli | * | https://github.com/mitchellh/cli | | codegangsta_cli | * | https://github.com/codegangsta/cli | | go_cmd | * | https://github.com/golang/go/tree/master/src/cmd/go | | flag | | https://golang.org/pkg/flag/ | +-----------------+---------+-----------------------------------------------------+ % gcli list
  • 20. Some Tips For Golang ( command line tools )
  • 21. Library Dependency Library version dependency might become problems on team development / source code distribution. Only using “go get” cannot manage library versions.
  • 22. Use “godep” https://github.com/tools/godep It generates “Godeps.json” file which stores library versions. Use “godep get” to restore libraries. “godep go build” uses Godeps libraries { "ImportPath": "github.com/takaaki-mizuno/awesomecommand", "GoVersion": "go1.6", "Deps": [ { "ImportPath": "github.com/codegangsta/cli", "Comment": "1.2.0-237-g71f57d3", "Rev": "71f57d300dd6a780ac1856c005c4b518cfd498ec" } ] }
  • 23. Colorize UI mgutz/ansi Make UI Colorize mattn/go-colorable Wrap io.Writer to Support Windows DOS Console
  • 24. Building Dashboard gizak/termui Can build Text Base Dashboard with GUI Building- Like APIs
  • 26. Q & A