Deck is a library for clients to make scalable presentations, using a standard markup language. Clients read deck files into the Deck structure, and traverse the structure for display, publication, etc. Clients may be interactive or produce standard formats such as SVG or PDF.
Also included is a REST API for listing content, uploading, stopping, starting and removing decks, generating tables, and playing video.
All layout in done in terms of percentages, using a coordinate system with the origin (0%, 0%) at the lower left. The x (horizontal) direction increases to the right, with the y (vertical) direction increasing to upwards. For example, to place an element in the middle of the canvas, specify xp="50" yp="50". To place an element one-third from the top, and one-third from the bottom: xp="66.6" yp="33.3".
The size of text is also scaled to the width of the canvas. For example sp="3" is a typical size for slide headings. The dimensions of graphical elements (width, height, stroke width) are also scaled to the canvas width.
The content of the slides are automatically scaled based on the specified canvas size (sane defaults are should be set the clients, if dimensions not specified)
Deck is a Go package for creating presentations using a single markup language. It allows elements for text, lists, code, images and graphics with all layout and sizes expressed as percentages. Clients can interactively view presentations or export to formats like PDF and SVG. Servers use a RESTful API for uploading, listing, starting, stopping and removing presentations.
There is introduction of graphics and animation with HTML5 in this knolX session. in this knolX session, we will talk about which tags are introduced in HTML5. we will get to know about validation and regular expression without using JavaScript. We will get to know about how thing work in canvas in HTML5, basic shapes, colouring, animation etc.
[WELC] 21. I’m Changing the Same Code All Over the Place종빈 오
The document discusses refactoring code to remove duplication between two classes, AddEmployeeCmd and LoginCommand. It starts by showing how the classes have similar fields and methods. It then shows refactoring the code to extract the common functionality into a base Command class. This removes duplication and makes the code more flexible and extensible. The refactoring improves orthogonality by localizing changes to single areas of code.
A university lecture for journalism students -- how to use the canvas element to add graphics and animation to Web pages. Updated April 2014. Basics for beginners. See also https://github.com/macloo/canvas
Você provavelmente já ouviu falar de Elm e suas promessas incríveis, mas você não quer reescrever tudo do zero, nem deixar a comunidade React. E se você pudesse ter todos os benefícios de Elm, enquanto ainda usa seus componentes React, misturando JavaScript e uma linguagem mais simples e poderosa, com um excelente sistema de tipos? Venha conhecer então PureScript e a biblioteca Pux!
Patterns for slick database applicationsSkills Matter
Slick is Typesafe's open source database access library for Scala. It features a collection-style API, compact syntax, type-safe, compositional queries and explicit execution control. Community feedback helped us to identify common problems developers are facing when writing Slick applications. This talk suggests particular solutions to these problems. We will be looking at reducing boiler-plate, re-using code between queries, efficiently modeling object references and more.
The document describes a program for calculating student grades. It includes sections for:
1. Designing the input and output data
2. Setting up objects like labels, text boxes, option buttons, and command buttons
3. Writing the programming code
The programming code calculates a student's grade based on their scores on assignments, midterms, and finals. It displays the numeric grade and letter grade. It also shows a pass/fail message based on the calculated grade.
Deck is a Go package for creating presentations using a single markup language. It allows elements for text, lists, code, images and graphics with all layout and sizes expressed as percentages. Clients can interactively view presentations or export to formats like PDF and SVG. Servers use a RESTful API for uploading, listing, starting, stopping and removing presentations.
There is introduction of graphics and animation with HTML5 in this knolX session. in this knolX session, we will talk about which tags are introduced in HTML5. we will get to know about validation and regular expression without using JavaScript. We will get to know about how thing work in canvas in HTML5, basic shapes, colouring, animation etc.
[WELC] 21. I’m Changing the Same Code All Over the Place종빈 오
The document discusses refactoring code to remove duplication between two classes, AddEmployeeCmd and LoginCommand. It starts by showing how the classes have similar fields and methods. It then shows refactoring the code to extract the common functionality into a base Command class. This removes duplication and makes the code more flexible and extensible. The refactoring improves orthogonality by localizing changes to single areas of code.
A university lecture for journalism students -- how to use the canvas element to add graphics and animation to Web pages. Updated April 2014. Basics for beginners. See also https://github.com/macloo/canvas
Você provavelmente já ouviu falar de Elm e suas promessas incríveis, mas você não quer reescrever tudo do zero, nem deixar a comunidade React. E se você pudesse ter todos os benefícios de Elm, enquanto ainda usa seus componentes React, misturando JavaScript e uma linguagem mais simples e poderosa, com um excelente sistema de tipos? Venha conhecer então PureScript e a biblioteca Pux!
Patterns for slick database applicationsSkills Matter
Slick is Typesafe's open source database access library for Scala. It features a collection-style API, compact syntax, type-safe, compositional queries and explicit execution control. Community feedback helped us to identify common problems developers are facing when writing Slick applications. This talk suggests particular solutions to these problems. We will be looking at reducing boiler-plate, re-using code between queries, efficiently modeling object references and more.
The document describes a program for calculating student grades. It includes sections for:
1. Designing the input and output data
2. Setting up objects like labels, text boxes, option buttons, and command buttons
3. Writing the programming code
The programming code calculates a student's grade based on their scores on assignments, midterms, and finals. It displays the numeric grade and letter grade. It also shows a pass/fail message based on the calculated grade.
The document provides an overview of Scalable Vector Graphics (SVG) and the D3.js library for manipulating SVG graphics. It discusses basic SVG shapes and paths that can be used to create visualizations like bar charts. It then demonstrates how to generate SVG elements like rectangles and circles using D3 selections and data binding. Transitions and interactive elements are also covered. Examples are provided to illustrate D3 concepts like entering new data, updating existing elements, and exiting stale elements from the DOM.
AfterGlow is a script that assists with the visualization of log data. It reads CSV files and converts them into a Graph description. Check out http://afterglow.sf.net for more information also.
This short presentation gives an overview of AfterGlow and outlines the features and capabilities of the tool. It discusses some of the harder to understand features by showing some configuration examples that can be used as a starting point for some more sophisticated setups.
AftterGlow is one the most downloaded security visualization tools with over 17,000 downloads.
The document discusses code as a new language for poetry. It notes that code has its own syntax and meaning like literature. Coders have their own style for optimizing and commenting code like writers and poets. Code can represent literature, logic, and math through different layers of abstraction and link them to physical processors and memory. The document proposes using code as a new language for poetry to speak about life, death, love, or hate through code meant to be read rather than run.
Folium is a Python library for interactive maps that allows users to easily create and publish interactive web maps. Some key features of Folium include adding markers, polylines, polygons and other shapes to maps. It also supports adding popups and labels to features, customizing basemaps and tiles, integrating geospatial data formats, and using plugins to add additional functionality like search, drawing and heatmap tools. Folium works with common Python data structures and geospatial file formats and generates HTML and JavaScript to display interactive maps in the Jupyter notebook or standalone web pages.
The document introduces SVGo, a Go library for generating SVG drawings programmatically. It demonstrates how to use SVGo to create basic shapes like rectangles and lines, add attributes, apply transformations, and script interactions. The goal of SVGo is to allow generating consistent SVG views from standardized data.
This document provides an overview of a presentation on using D3 for data visualization on desktops, smartphones, and Google Glass. It discusses how D3 works, examples of basic charts like scatter plots and bar charts using D3, and how to incorporate features like mouse interactions, animations, filters and gradients. It also covers using D3 with technologies like Android, PhoneGap, and Google Glass to create mobile visualizations.
This document provides an overview of a presentation on using D3 for data visualization on desktops, smartphones, and Google Glass. It discusses topics like what D3 is, how it works, examples of creating simple charts and adding interactivity with mouse events, using SVG filters and gradients, and integrating D3 visualizations into Android and Google Glass apps. It also briefly mentions related technologies, resources for learning more, and potential training topics.
This document loads various libraries and reads in multiple csv files containing transportation data. It then performs some data cleaning and preprocessing steps. Various outputs are defined to render tables and plots of subsets of the data. Plots are created to visualize relationships between weighted time, cost, and safety metrics. Interactive elements are added to output text describing user input from the plots. Maps and motion charts are also defined as outputs to visualize additional data aspects.
C++ is a middle-level programming language developed by Bjarne Stroustrup starting in 1979 at Bell Labs. C++ runs on a variety of platforms, such as Windows, Mac OS, and the various versions of UNIX.
This reference will take you through simple and practical approach while learning C++ Programming language.
This document provides an introduction to the basics of R programming. It begins with quizzes to assess the reader's familiarity with R and related topics. It then covers key R concepts like data types, data structures, importing and exporting data, control flow, functions, and parallel computing. The document aims to equip readers with fundamental R skills and directs them to online resources for further learning.
Visual Exploration of Large Data sets with D3, crossfilter and dc.jsFlorian Georg
My talk at this year's Jazoon about data visualization and exploration with D3, crossfilter and dc.js
It should give you a good introduction on how/when to use these frameworks and how they relate to each other.
More info on http://datavisual.mybluemix.net
This document provides an overview of HTML5 and related technologies. It discusses how HTML5 is more than just HTML, and covers the HTML5 specification process and components. It then provides a tour of new HTML5 features like <video>, <audio>, SVG, <canvas>, geolocation, and CSS3 specifications including borders, colors, shadows, backgrounds, fonts, media queries and transforms. The document demonstrates several of these features and provides resources for further information.
Tutorial on the use of Ruby Processing for developing visual graphics and interactive graphics. Includes conceptual and real-world examples, including use for business data mining.
Mapnik is an open source software library for rendering spatial data to maps and images. It allows for the creation of individual images or tiled maps for web publishing. Written in C++ with Python bindings, it uses OGC standards, GDAL/OGR, and other libraries. Styles and rendering rules are defined using XML files, and maps can be rendered to different formats like PNG or PDF using Python scripts.
The document lists HTML tags in alphabetical order and provides a brief description of each tag. It describes tags for text formatting (<B>, <I>, etc.), lists (<UL>, <OL>), links (<A>), images (<IMG>), tables (<TABLE>, <TD>, <TH>), and more. Each tag is presented with its name in angle brackets along with allowed attributes and a short explanation of its use.
This document discusses refactoring Java code to Clojure using macros. It provides examples of refactoring Java code that uses method chaining to equivalent Clojure code using the threading macros (->> and -<>). It also discusses other Clojure features like type hints, the doto macro, and polyglot projects using Leiningen.
The document provides an overview of several C++ concepts including basic syntax, compiling programs, argument passing, dynamic memory allocation, and object-oriented programming. It demonstrates simple C++ programs and functions. It discusses best practices like separating interface and implementation using header files. It also introduces C++ standard library features like vectors and the importance of avoiding unnecessary copying.
JavaFX is powerful, believe it or not and in this session I will try to share some tips and tricks that might
help you creating your own JavaFX based apps. I will cover things like styling a JavaFX app using CSS, let you know
when it makes sense to use the JavaFX Canvas node, why you really should learn how to use a vector drawing program.
In addition you will learn how easy it is to make your JavaFX application not only run on your desktop machine but also
on mobile devices or even on the browser...without using a plugin.
So if you are curious and would like to learn more about JavaFX...listen...and learn...
The document provides an overview of Scalable Vector Graphics (SVG) and the D3.js library for manipulating SVG graphics. It discusses basic SVG shapes and paths that can be used to create visualizations like bar charts. It then demonstrates how to generate SVG elements like rectangles and circles using D3 selections and data binding. Transitions and interactive elements are also covered. Examples are provided to illustrate D3 concepts like entering new data, updating existing elements, and exiting stale elements from the DOM.
AfterGlow is a script that assists with the visualization of log data. It reads CSV files and converts them into a Graph description. Check out http://afterglow.sf.net for more information also.
This short presentation gives an overview of AfterGlow and outlines the features and capabilities of the tool. It discusses some of the harder to understand features by showing some configuration examples that can be used as a starting point for some more sophisticated setups.
AftterGlow is one the most downloaded security visualization tools with over 17,000 downloads.
The document discusses code as a new language for poetry. It notes that code has its own syntax and meaning like literature. Coders have their own style for optimizing and commenting code like writers and poets. Code can represent literature, logic, and math through different layers of abstraction and link them to physical processors and memory. The document proposes using code as a new language for poetry to speak about life, death, love, or hate through code meant to be read rather than run.
Folium is a Python library for interactive maps that allows users to easily create and publish interactive web maps. Some key features of Folium include adding markers, polylines, polygons and other shapes to maps. It also supports adding popups and labels to features, customizing basemaps and tiles, integrating geospatial data formats, and using plugins to add additional functionality like search, drawing and heatmap tools. Folium works with common Python data structures and geospatial file formats and generates HTML and JavaScript to display interactive maps in the Jupyter notebook or standalone web pages.
The document introduces SVGo, a Go library for generating SVG drawings programmatically. It demonstrates how to use SVGo to create basic shapes like rectangles and lines, add attributes, apply transformations, and script interactions. The goal of SVGo is to allow generating consistent SVG views from standardized data.
This document provides an overview of a presentation on using D3 for data visualization on desktops, smartphones, and Google Glass. It discusses how D3 works, examples of basic charts like scatter plots and bar charts using D3, and how to incorporate features like mouse interactions, animations, filters and gradients. It also covers using D3 with technologies like Android, PhoneGap, and Google Glass to create mobile visualizations.
This document provides an overview of a presentation on using D3 for data visualization on desktops, smartphones, and Google Glass. It discusses topics like what D3 is, how it works, examples of creating simple charts and adding interactivity with mouse events, using SVG filters and gradients, and integrating D3 visualizations into Android and Google Glass apps. It also briefly mentions related technologies, resources for learning more, and potential training topics.
This document loads various libraries and reads in multiple csv files containing transportation data. It then performs some data cleaning and preprocessing steps. Various outputs are defined to render tables and plots of subsets of the data. Plots are created to visualize relationships between weighted time, cost, and safety metrics. Interactive elements are added to output text describing user input from the plots. Maps and motion charts are also defined as outputs to visualize additional data aspects.
C++ is a middle-level programming language developed by Bjarne Stroustrup starting in 1979 at Bell Labs. C++ runs on a variety of platforms, such as Windows, Mac OS, and the various versions of UNIX.
This reference will take you through simple and practical approach while learning C++ Programming language.
This document provides an introduction to the basics of R programming. It begins with quizzes to assess the reader's familiarity with R and related topics. It then covers key R concepts like data types, data structures, importing and exporting data, control flow, functions, and parallel computing. The document aims to equip readers with fundamental R skills and directs them to online resources for further learning.
Visual Exploration of Large Data sets with D3, crossfilter and dc.jsFlorian Georg
My talk at this year's Jazoon about data visualization and exploration with D3, crossfilter and dc.js
It should give you a good introduction on how/when to use these frameworks and how they relate to each other.
More info on http://datavisual.mybluemix.net
This document provides an overview of HTML5 and related technologies. It discusses how HTML5 is more than just HTML, and covers the HTML5 specification process and components. It then provides a tour of new HTML5 features like <video>, <audio>, SVG, <canvas>, geolocation, and CSS3 specifications including borders, colors, shadows, backgrounds, fonts, media queries and transforms. The document demonstrates several of these features and provides resources for further information.
Tutorial on the use of Ruby Processing for developing visual graphics and interactive graphics. Includes conceptual and real-world examples, including use for business data mining.
Mapnik is an open source software library for rendering spatial data to maps and images. It allows for the creation of individual images or tiled maps for web publishing. Written in C++ with Python bindings, it uses OGC standards, GDAL/OGR, and other libraries. Styles and rendering rules are defined using XML files, and maps can be rendered to different formats like PNG or PDF using Python scripts.
The document lists HTML tags in alphabetical order and provides a brief description of each tag. It describes tags for text formatting (<B>, <I>, etc.), lists (<UL>, <OL>), links (<A>), images (<IMG>), tables (<TABLE>, <TD>, <TH>), and more. Each tag is presented with its name in angle brackets along with allowed attributes and a short explanation of its use.
This document discusses refactoring Java code to Clojure using macros. It provides examples of refactoring Java code that uses method chaining to equivalent Clojure code using the threading macros (->> and -<>). It also discusses other Clojure features like type hints, the doto macro, and polyglot projects using Leiningen.
The document provides an overview of several C++ concepts including basic syntax, compiling programs, argument passing, dynamic memory allocation, and object-oriented programming. It demonstrates simple C++ programs and functions. It discusses best practices like separating interface and implementation using header files. It also introduces C++ standard library features like vectors and the importance of avoiding unnecessary copying.
JavaFX is powerful, believe it or not and in this session I will try to share some tips and tricks that might
help you creating your own JavaFX based apps. I will cover things like styling a JavaFX app using CSS, let you know
when it makes sense to use the JavaFX Canvas node, why you really should learn how to use a vector drawing program.
In addition you will learn how easy it is to make your JavaFX application not only run on your desktop machine but also
on mobile devices or even on the browser...without using a plugin.
So if you are curious and would like to learn more about JavaFX...listen...and learn...
Similar to Deck: A Go Package for Presentations (20)
Practical eLearning Makeovers for EveryoneBianca Woods
Welcome to Practical eLearning Makeovers for Everyone. In this presentation, we’ll take a look at a bunch of easy-to-use visual design tips and tricks. And we’ll do this by using them to spruce up some eLearning screens that are in dire need of a new look.
Best Digital Marketing Strategy Build Your Online Presence 2024.pptxpavankumarpayexelsol
This presentation provides a comprehensive guide to the best digital marketing strategies for 2024, focusing on enhancing your online presence. Key topics include understanding and targeting your audience, building a user-friendly and mobile-responsive website, leveraging the power of social media platforms, optimizing content for search engines, and using email marketing to foster direct engagement. By adopting these strategies, you can increase brand visibility, drive traffic, generate leads, and ultimately boost sales, ensuring your business thrives in the competitive digital landscape.
2. DECK: a package for presentations
Deck is a package written in Go
That uses a singular markup language
With elements for text, lists, code, and graphics
All layout and sizes are expressed as percentages
Clients are interactive or create formats like PDF or SVG
4. Hello, World
A block of text, word-wrapped to a specified
width. You may specify size, font, color,
and opacity.
package main
import "fmt"
func main() {
fmt.Println("Hello, World")
}
<text>...</text>
13. Start the deck
<deck>
Set the canvas size
<canvas width="1024" height="768" />
Begin a slide
<slide bg="white" fg="black">
Place an image
<image xp="70" yp="60" width="256" height="179" name="work.png" caption="Desk"/>
Draw some text
<text
xp="20" yp="80" sp="3">Deck uses these elements</text>
Make a bullet list
<list
xp="20" yp="70" sp="2" type="bullet">
<li>text, list, image</li>
<li>line, rect, ellipse</li>
<li>arc, curve</li>
End the list
</list>
Draw a line
<line
xp1="20" yp1="10" xp2="30" yp2="10"/>
Draw a rectangle
<rect
xp="35"
yp="10" wp="4" hr="75" color="rgb(127,0,0)"/>
Draw an ellipse
<ellipse xp="45"
yp="10" wp="4" hr="75" color="rgb(0,127,0)"/>
Draw an arc
<arc
xp="55"
yp="10" wp="4" hp="3" a1="0" a2="180" color="rgb(0,0,127)"/>
Draw a quadratic bezier
<curve
xp1="60" yp1="10" xp2="75" yp2="20" xp3="70" yp3="10" />
End the slide
End of the deck
</slide>
</deck>
Anatomy of a Deck
14. Deck uses these elements
text, list, image
line, rect, ellipse
arc, curve
Desk
15. Text and List Markup
Position, size
<text xp="..." yp="..." sp="...">
Block of text
<text ... type="block">
Lines of code
<text ... type="code">
Attributes
<text ... color="..." opacity="..." font="..." align="...">
Position, size
<list xp="..." yp="..." sp="...">
Bullet list
<list ... type="bullet">
Numbered list
<list ... type="number">
Attributes
<list ... color="..." opacity="..." font="..." align="...">
16. Common Attributes for text and list
xp
horizontal percentage
yp
vertical percentage
sp
font size percentage
type
"bullet", "number" (list), "block", "code" (text)
align
"left", "middle", "end"
color
SVG names ("maroon"), or RGB "rgb(127,0,0)"
opacity percent opacity (0-100, transparent - opaque)
font
"sans", "serif", "mono"
22. package main
import (
"log"
"github.com/ajstarks/deck"
)
func main() {
presentation, err := deck.Read("deck.xml", 1024, 768) // open the deck
if err != nil {
log.Fatal(err)
}
for _, slide := range presentation.Slide {
// for every slide...
for _, t := range slide.Text {
// process the text elements
x, y, size := deck.Dimen(presentation.Canvas, t.Xp, t.Yp, t.Sp)
slideText(x, y, size, t)
}
for _, l := range slide.List {
// process the list elements
x, y, size := deck.Dimen(presentation.Canvas, l.Xp, l.Yp, l.Sp)
slideList(x, y, size, l)
}
}
}
A Deck Client
24. func main() {
benchmarks := []Bardata{
{"Macbook Air", 154.701},
{"MacBook Pro (2008)", 289.603},
{"BeagleBone Black", 2896.037},
{"Raspberry Pi", 5765.568},
}
ts := 2.5
hts := ts / 2
x := 10.0
bx1 := x + (ts * 12)
bx2 := bx1 + 50.0
y := 60.0
maxdata := 5800.0
linespacing := ts * 2.0
text(x, y+20, "Go 1.1.2 Build and Test Times", ts*2, "black")
for _, data := range benchmarks {
text(x, y, data.label, ts, "rgb(100,100,100)")
bv := vmap(data.value, 0, maxdata, bx1, bx2)
line(bx1, y+hts, bv, y+hts, ts, "lightgray")
text(bv+0.5, y+(hts/2), fmt.Sprintf("%.1f", data.value), hts, "rgb(127,0,0)")
y -= linespacing
}
}
Generating a Barchart
25. Go 1.1.2 Build and Test Times
Macbook Air
MacBook Pro (2008)
BeagleBone Black
Raspberry Pi
154.7
289.6
$ (echo '<deck><slide>'; go run deckbc.go; echo '</slide></deck>')
2896.0
5765.6
27. pdfdeck [options] file.xml...
-sans, -serif, -mono [font] specify fonts
-pagesize [w,h, or Letter, Legal, Tabloid, A2-A5, ArchA, Index, 4R, Widescreen]
-stdout (output to standard out)
-outdir [directory] directory for PDF output
-fontdir [directory] directory containing font information
-author [author name] set the document author
-title [title text] set the document title
-grid [percent] draw a percent grid on each slide
28. svgdeck [options] file.xml...
-sans, -serif, -mono [font] specify fonts
-pagesize [Letter, Legal, A3, A4, A5]
-pagewidth [canvas width]
-pageheight [canvas height]
-stdout (output to standard out)
-outdir [directory] directory for PDF output
-title [title text] set the document title
-grid [percent] draw a percent grid on each slide
29. vgdeck [options] file.xml...
-loop [duration] loop, pausing [duration] between slides
-slide [number] start at slide number
-w [width] canvas width
-h [height] canvas height
-g [percent] draw a percent grid
30. vgdeck Commands
+, Ctrl-N, [Return]
Next slide
-, Ctrl-P, [Backspace]
Previous slide
^, Ctrl-A
First slide
$, Ctrl-E
Last slide
r, Ctrl-R
Reload
x, Ctrl-X
X-Ray
/, Ctrl-F [text]
Search
s, Ctrl-S
Save
q
Quit
31. Deck Web API
sex -dir [start dir] -listen [address:port] -maxupload [bytes]
GET
/
List the API
GET
/deck/
List the content on the server
GET
/deck/?filter=[type]
List content filtered by deck, image, video
POST
/deck/content.xml?cmd=1s
Play a deck with the specified duration
POST
/deck/content.xml?cmd=stop
Stop playing a deck
POST
/deck/content.xml?slide=[num]
Play deck starting at a slide number
DELETE
/deck/content.xml
Remove content
POST
/upload/ Deck:content.xml
Upload content
POST
/table/ Deck:content.txt
Generate a table from a tab-separated list
POST
/table/?textsize=[size]
Specify the text size of the table
POST
/media/ Media:content.mov
Play the specified video
32. deck [command] [argument]
deck play file [duration]
Play a deck
deck stop
Stop playing a deck
deck list [deck|image|video]
List contents
deck upload file...
Upload content
deck remove file...
Remove content
deck video file
Play video
deck table file [textsize]
Make a table
$ deck upload *.jpg
# upload images
$ mkpicdeck *.jpg | deck upload /dev/stdin
# generate the slide show deck
$ deck play stdin
# play it
33. Display
is innovative
makes a product useful
Server
is aesthetic
makes a product understandable
is unobtrusive
Good Design
is honest
is long-lasting
is thorough down to the last detail
is environmentally-friendly
is as little design as possible
Controller
> list
> upload
> play/stop
> delete
HDMI
RESTful API
44. build
clean
remove object files
env
print Go environment information
fix
run go tool fix on packages
fmt
go
compile packages and dependencies
run gofmt on package sources
get
download and install packages and dependencies
install
compile and install packages and dependencies
list
list packages
run
compile and run Go program
test
test packages
tool
run specified go tool
version
print Go version
vet
run go tool vet on packages
46. Rich
Can't buy me love
Bliss
Worse
Better
Misery
We have each other
Poor
47. Code
package main
import (
"github.com/ajstarks/svgo"
"os"
)
func main() {
canvas := svg.New(os.Stdout)
width, height := 500, 500
a, ai, ti := 1.0, 0.03, 10.0
canvas.Start(width, height)
canvas.Rect(0, 0, width, height)
canvas.Gstyle("font-family:serif;font-size:144pt")
for t := 0.0; t <= 360.0; t += ti {
canvas.TranslateRotate(width/2, height/2, t)
canvas.Text(0, 0, "i", canvas.RGBA(255, 255, 255, a))
canvas.Gend()
a -= ai
}
canvas.Gend()
canvas.End()
}
Output
48. A few months ago, I had a look at the brainchild of
a few serious heavyweights working at Google. Their
project, the Go programming language, is a static
typed, c lookalike, semicolon-less, self formatting,
package managed, object oriented, easily parallelizable,
cluster fuck of genius with an unique class inheritance
system. It doesn't have one.
49. The Go Programming Language
is a static typed,
c lookalike,
semicolon-less,
self formatting,
package managed,
object oriented,
easily parallelizable,
cluster fuck of genius
with an unique class inheritance system.
Andrew Mackenzie-Ross, OBJECTIVE-C LESSONS FROM GO
50. The Go Programming Language
is a static typed,
c lookalike,
semicolon-less,
self formatting,
package managed,
object oriented,
easily parallelizable,
cluster fuck of genius
with an unique class inheritance system.
Andrew Mackenzie-Ross, OBJECTIVE-C LESSONS FROM GO
51. The Go Programming Language
is a static typed, c lookalike, semicolon-less, self formatting,
package managed, object oriented, easily parallelizable,
cluster fuck of genius with an unique class inheritance system.
It doesn't have one.
Andrew Mackenzie-Ross, OBJECTIVE-C LESSONS FROM GO
52. So, the next time you're about
to make a subclass, think hard
and ask yourself
what would Go do
Andrew Mackenzie-Ross, http://pocket.co/sSc56
53. Python and Ruby programmers come to
Go because they don't have to surrender
much expressiveness, but gain performance
and get to play with concurrency.
Less is exponentially more
Rob Pike
54. You must not blame me if I do talk to the clouds.
55. FOR, LO,
the winter is past,
the rain is over and gone;
The flowers appear on the earth;
the time for the singing of birds is come,
and the voice of the turtle is heard in our land.
Song of Solomon 2:11-12
56. Good Design
is innovative
makes a product useful
is aesthetic
makes a product understandable
is unobtrusive
is honest
is long-lasting
is thorough down to the last detail
is environmentally-friendly
is as little design as possible
Dieter Rams