Merge branch 'master' of github.com:vbatts/talks
18
0-README.slide
Normal file
|
@ -0,0 +1,18 @@
|
|||
README
|
||||
|
||||
|
||||
|
||||
Vincent Batts
|
||||
@vbatts
|
||||
vbatts@hashbangbash.com
|
||||
|
||||
* Overview
|
||||
- This is a presentation tool from the golang team.
|
||||
- Slide deck is a single flate file (*.slide)
|
||||
.link https://godoc.org/golang.org/x/tools/present Present
|
||||
|
||||
|
||||
* Slides
|
||||
|
||||
.link https://github.com/vbatts/talks vbatts' talks
|
||||
|
8
2013/03-golang-learning-lunch/1-hello/main.go
Normal file
|
@ -0,0 +1,8 @@
|
|||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
fmt.Println("Hello World!")
|
||||
}
|
||||
|
39
2013/03-golang-learning-lunch/10-abstracts/main.go
Normal file
|
@ -0,0 +1,39 @@
|
|||
package main
|
||||
|
||||
func main() {
|
||||
jeep := Hummer{}
|
||||
h(jeep)
|
||||
jeep.Where()
|
||||
c(jeep)
|
||||
}
|
||||
|
||||
|
||||
type Car interface {
|
||||
Honk()
|
||||
Crank()
|
||||
}
|
||||
|
||||
func c(some interface{}) {
|
||||
some.(Car).Crank()
|
||||
}
|
||||
func h(some interface{}) {
|
||||
some.(Car).Honk()
|
||||
}
|
||||
|
||||
// Implement the Car interface
|
||||
type Hummer struct {
|
||||
Car
|
||||
}
|
||||
|
||||
func (h Hummer) Honk() {
|
||||
println("BEEP BEEP")
|
||||
}
|
||||
|
||||
func (h Hummer) Where() {
|
||||
println("Who's got the keys to the jeep?")
|
||||
}
|
||||
|
||||
func (h Hummer) Crank() {
|
||||
println("VROOOOOOM")
|
||||
}
|
||||
|
12
2013/03-golang-learning-lunch/11-defer/main.go
Normal file
|
@ -0,0 +1,12 @@
|
|||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
// START OMIT
|
||||
for i := 0; i < 5; i++ {
|
||||
defer fmt.Printf("%d ", i)
|
||||
}
|
||||
fmt.Println("HOOTY HOO!")
|
||||
// STOP OMIT
|
||||
}
|
30
2013/03-golang-learning-lunch/12-go-func/main.go
Normal file
|
@ -0,0 +1,30 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
)
|
||||
|
||||
// START OMIT
|
||||
func DelayedHello() {
|
||||
time.Sleep(3 * time.Second)
|
||||
fmt.Printf("%d: Hello!\n", time.Now().Unix())
|
||||
}
|
||||
|
||||
func main() {
|
||||
go DelayedHello()
|
||||
go DelayedHello()
|
||||
go func() {
|
||||
time.Sleep(3 * time.Second)
|
||||
fmt.Printf("%d: Hello!\n", time.Now().Unix())
|
||||
}()
|
||||
|
||||
fmt.Printf("%d: Is there anybody in there?!\n", time.Now().Unix())
|
||||
|
||||
for i := 0; i < 5; i++ {
|
||||
fmt.Printf("%d: .\n", time.Now().Unix())
|
||||
time.Sleep(time.Second)
|
||||
}
|
||||
}
|
||||
// STOP OMIT
|
||||
|
14
2013/03-golang-learning-lunch/13-blank-var/main.go
Normal file
|
@ -0,0 +1,14 @@
|
|||
package main
|
||||
|
||||
func main() {
|
||||
// START OMIT
|
||||
words := []string{"cow","goat","sheep","horse","chicken"}
|
||||
for i := range words {
|
||||
println(words[i])
|
||||
}
|
||||
for _, word := range words {
|
||||
println(word)
|
||||
}
|
||||
// STOP OMIT
|
||||
}
|
||||
|
20
2013/03-golang-learning-lunch/14-ngoroutines/main.go
Normal file
|
@ -0,0 +1,20 @@
|
|||
package main
|
||||
|
||||
// START OMIT
|
||||
var ngoroutine = 100000
|
||||
|
||||
func f(left, right chan int) { left <- 1 + <-right }
|
||||
|
||||
func main() {
|
||||
leftmost := make(chan int)
|
||||
var left, right chan int = nil, leftmost
|
||||
for i := 0; i < ngoroutine; i++ {
|
||||
left, right = right, make(chan int)
|
||||
go f(left, right)
|
||||
}
|
||||
right <- 0 // bang!
|
||||
x := <-leftmost // wait for completion
|
||||
println(x) // 100000
|
||||
}
|
||||
|
||||
// STOP OMIT
|
13
2013/03-golang-learning-lunch/2-hello/main.go
Normal file
|
@ -0,0 +1,13 @@
|
|||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
var words string
|
||||
|
||||
words = "Hello World!"
|
||||
|
||||
for i := 0; i < 10; i++ {
|
||||
fmt.Printf("%s\n", words)
|
||||
}
|
||||
}
|
350
2013/03-golang-learning-lunch/2013-03-27-go-ll.slide
Normal file
|
@ -0,0 +1,350 @@
|
|||
Golang: an introduction
|
||||
|
||||
27 Mar 2013
|
||||
|
||||
# Go is a general-purpose language that bridges the gap between efficient
|
||||
# statically typed languages and productive dynamic language. But it’s not just
|
||||
# the language that makes Go special – Go has broad and consistent standard
|
||||
# libraries and powerful but simple tools.
|
||||
#
|
||||
# This talk gives an introduction to Go
|
||||
|
||||
# Please join Vincent Batts, Senior Software Application Engineer in the IT-Eng tower, for an overview of the Go programming language.
|
||||
#
|
||||
# Audience: Hackers, doodlers, early adopters, linguists
|
||||
# Agenda:
|
||||
# * Overview of just what the language is and why should anyone care?
|
||||
# * What makes it better or worse than other options.
|
||||
# * Is it production ready?!
|
||||
# * Common go-idioms
|
||||
# * Other questions folks have relevant to Red Hat IT ?
|
||||
#
|
||||
# Background:
|
||||
# The Go programming language is an open source project to make programmers more productive.
|
||||
# Go is expressive, concise, clean, and efficient. Its concurrency mechanisms make it easy to write programs that get the most out of multicore and networked machines, while its novel type system enables flexible and modular program construction. Go compiles quickly to machine code yet has the convenience of garbage collection and the power of run-time reflection. It's a fast, statically typed, compiled language that feels like a dynamically typed, interpreted language.
|
||||
|
||||
Vincent Batts
|
||||
Red Hat, Inc.
|
||||
@vbatts
|
||||
vbatts@redhat.com
|
||||
http://youtu.be/bIs15Km9v4k
|
||||
|
||||
* Google Motivation
|
||||
- Efficiency
|
||||
- Safety
|
||||
- Concurrency
|
||||
- Scalabilty
|
||||
- Fast Dev Cycle
|
||||
- No Surprises
|
||||
- ... Such a cute mascot
|
||||
|
||||
* gophers
|
||||
# SO DARN CUTE
|
||||
.image 2013-03-27-go-ll/gopher.jpg
|
||||
|
||||
* Benefits
|
||||
- Spec driven
|
||||
|
||||
.link http://golang.org/ref/spec
|
||||
|
||||
- Changes must have consenus
|
||||
# agreement of the different world views
|
||||
|
||||
* Hello, go
|
||||
|
||||
.play 1-hello/main.go
|
||||
|
||||
* Layout Overview
|
||||
|
||||
- packages (namespaces)
|
||||
# no need for central trust model
|
||||
# not terribly unlike python
|
||||
- remote packages include host/path
|
||||
# we'll touch back on this on the go tool
|
||||
- packages hold types, constants, variables, structs and func's
|
||||
- packages are grouped by directory (all *.go siblings are grouped)
|
||||
# we'll get back to testing
|
||||
- Capitalization determines visibility: `Foo` is exported, `foo` is not
|
||||
|
||||
* Tooling
|
||||
|
||||
* Compilers
|
||||
- gc - Google Go Compiler
|
||||
- f19+ 'golang'
|
||||
- EPEL soon...
|
||||
# either from source or there is an RPM build
|
||||
#
|
||||
# COMPILES SO FAST
|
||||
#
|
||||
# 100k lines of code compiles in 2min
|
||||
# (the equivalent C++ took greater than 1hr)
|
||||
#
|
||||
- gccgo - GCC 4.7.1 and newer
|
||||
- f16+
|
||||
# fedora 16+ and RHEL7
|
||||
|
||||
* go tool
|
||||
the defacto all-the-things tool
|
||||
# wraps up testing, building, docs and libraries
|
||||
|
||||
Compile a single-file program
|
||||
|
||||
$ go build hello.go
|
||||
|
||||
Compile and run a single-file program
|
||||
|
||||
$ go run hello.go
|
||||
|
||||
List libraries available
|
||||
|
||||
$ go list all
|
||||
|
||||
See documentation
|
||||
|
||||
$ go doc io/ioutil
|
||||
|
||||
* go tool
|
||||
|
||||
Cleanup code
|
||||
|
||||
$ go fmt main.go
|
||||
|
||||
Test code
|
||||
|
||||
$ go test main_test.go
|
||||
|
||||
Check code for suspicious constructs or inconsistencies
|
||||
|
||||
$ go vet main.go
|
||||
|
||||
* go tool
|
||||
|
||||
Compile out the current directory's *.go
|
||||
|
||||
$ cd my-project/
|
||||
$ go build
|
||||
$ ./my-project
|
||||
|
||||
Test the current directory's *.go
|
||||
|
||||
$ cd my-project/
|
||||
$ go test
|
||||
|
||||
* Standard libraries
|
||||
# are freaking _solid_
|
||||
#
|
||||
# Very well documented
|
||||
#
|
||||
# and easy to read
|
||||
|
||||
* basic types
|
||||
|
||||
.link http://golang.org/ref/spec#Types
|
||||
|
||||
- Familiar C-types
|
||||
- But Strings too!
|
||||
# common and comfortable enough, without having to think of strings
|
||||
# as *char. We have []byte for that now
|
||||
- Slices - static and dynamic arrays
|
||||
|
||||
* structs and pointers
|
||||
|
||||
type Person struct {
|
||||
Name string
|
||||
Dob *time.Time
|
||||
}
|
||||
|
||||
.play ./3-struct/main.go /START/,/STOP/
|
||||
|
||||
* structs and pointers
|
||||
|
||||
func (p *Person) ComeToLife() {
|
||||
t := time.Now()
|
||||
p.Dob = &t
|
||||
p.State = NEW_BORN
|
||||
}
|
||||
|
||||
.play ./4-struct-func/main.go /START/,/STOP/
|
||||
|
||||
* Why should I care?
|
||||
# Perhaps you shouldn't care, if you ask this ... :-)
|
||||
|
||||
Why Another Language?
|
||||
# Surprisingly, much of the concepts of Golang are _not_ "new"
|
||||
# concepts were taken from Ada, and heavily succeeds from plan9 and erlang
|
||||
# (ken thompson is one of the core developers)
|
||||
#
|
||||
# like so many businesses they have a need for business logic/ performance
|
||||
# but also the speed and ease of getting new features/apps deployed
|
||||
#
|
||||
# This often splits them over two languages. In google's situation, the need
|
||||
# for a single language came from their heavy use of C and Python.
|
||||
#
|
||||
# Compile times! none of the ifdef garb,
|
||||
# and no shadiness of pre-proccessor, header and linker issues
|
||||
|
||||
Benefits for me?
|
||||
# That's a big question that would involve a good deal of review
|
||||
#
|
||||
# reduced code. logic becomes visible
|
||||
|
||||
Benefits for Red Hat IT?
|
||||
# Even tougher to say.
|
||||
# Definitely has benefits for portability, light-stack, speed and stability
|
||||
# No conversations should be considered, but also should not be ruled out
|
||||
# for future projects.
|
||||
#
|
||||
# Ops/Infra burden. No stack, just land the binary.
|
||||
# Server needs no additional software, just a bare bones linux box
|
||||
#
|
||||
# StatHat
|
||||
# ruby -> go services find 10x performance increase
|
||||
#
|
||||
# IronWorker
|
||||
# 30 ruby servers -> 2 go servers (just for redundancy)
|
||||
#
|
||||
|
||||
* Is this production ready?!
|
||||
|
||||
Great question!
|
||||
|
||||
.link https://code.google.com/p/go-wiki/wiki/SuccessStories
|
||||
|
||||
Google uses it
|
||||
- dl.google.com
|
||||
- part of Youtube
|
||||
|
||||
.link https://code.google.com/p/vitess/ Youtube - vitess project
|
||||
|
||||
|
||||
* Idiomatic
|
||||
|
||||
* Very
|
||||
- expressive
|
||||
- predictable
|
||||
- parsable (gofmt)
|
||||
- what-you-see-is-what-you-get
|
||||
# not a bunch of hidden inheritance
|
||||
# or prototyping
|
||||
# or code sprawl
|
||||
|
||||
|
||||
* Idioms
|
||||
|
||||
- Multiple return values
|
||||
- Error checking (rather than exception handling)
|
||||
|
||||
fn := "/tmp/this-file.txt"
|
||||
fh, err := os.Open(fn)
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "ERROR: %s failed cause: %s!\n", fn, err)
|
||||
// ... check for type of error, and do something
|
||||
}
|
||||
// ... life goes on
|
||||
|
||||
|
||||
* Idioms
|
||||
|
||||
anonymous functions
|
||||
|
||||
.link http://golang.org/doc/effective_go.html#goroutines go routines
|
||||
|
||||
.play 12-go-func/main.go /START/,/STOP/
|
||||
|
||||
|
||||
* Idioms
|
||||
|
||||
.link http://golang.org/doc/effective_go.html#defer Defer
|
||||
# closing a handle, unlocking a mutex, some stack of operations, etc.
|
||||
|
||||
.play 11-defer/main.go /START/,/STOP/
|
||||
|
||||
classic file handle situation... made simple
|
||||
|
||||
fh, err := os.Open("foo.txt")
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
defer fh.Close()
|
||||
// forget about needing to close the file handle
|
||||
|
||||
|
||||
* Idioms
|
||||
|
||||
Only what you need
|
||||
|
||||
- import's
|
||||
# failed compile for including libraries that aren't used
|
||||
- variables
|
||||
|
||||
.play 13-blank-var/main.go /START/,/STOP/
|
||||
|
||||
|
||||
* Idioms
|
||||
|
||||
.link http://golang.org/doc/effective_go.html#channels Channels
|
||||
# nice closures
|
||||
|
||||
c := make(chan int) // Allocate a channel.
|
||||
// Start the sort in a goroutine; when it completes, signal on the channel.
|
||||
go func() {
|
||||
list.Sort()
|
||||
c <- 1 // Send a signal; value does not matter.
|
||||
}()
|
||||
doSomethingForAWhile()
|
||||
<-c // Wait for sort to finish; discard sent value.
|
||||
|
||||
|
||||
* channels
|
||||
- using it for signal catching
|
||||
|
||||
go func() {
|
||||
c := make(chan os.Signal, 1)
|
||||
signal.Notify(c, os.Interrupt)
|
||||
signal.Notify(c, os.Kill)
|
||||
for sig := range c {
|
||||
// sig is a ^C, handle it
|
||||
if sig == os.Interrupt {
|
||||
log.Println("interrupted ...")
|
||||
os.Exit(1)
|
||||
} else if sig == os.Kill {
|
||||
log.Println("killing ...")
|
||||
os.Exit(2)
|
||||
} else {
|
||||
log.Printf("Not sure what %q is. Quiting", sig)
|
||||
os.Exit(3)
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
|
||||
* concurrency
|
||||
|
||||
.play 14-ngoroutines/main.go /START/,/STOP/
|
||||
|
||||
* Straight Forward
|
||||
|
||||
.link http://localhost:4000/ Web Server
|
||||
|
||||
.play ./9-http-srv/main.go /START/,/STOP/
|
||||
|
||||
* Other Questions??
|
||||
|
||||
|
||||
* References
|
||||
|
||||
.link http://golang.org/doc/
|
||||
|
||||
.link http://golang.org/pkg/
|
||||
|
||||
.link http://godoc.org/
|
||||
|
||||
freenode #go-nuts
|
||||
|
||||
.link http://groups.google.com/group/golang-nuts
|
||||
|
||||
.link http://youtu.be/sln-gJaURzk Google I/O 2012 - Meet the Go Team
|
||||
|
||||
.link http://www.miek.nl/projects/learninggo/ Learning Go book (free)
|
||||
|
||||
|
BIN
2013/03-golang-learning-lunch/2013-03-27-go-ll/gopher.jpg
Normal file
After Width: | Height: | Size: 85 KiB |
27
2013/03-golang-learning-lunch/3-struct/main.go
Normal file
|
@ -0,0 +1,27 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
)
|
||||
|
||||
type Person struct {
|
||||
Name string
|
||||
Dob *time.Time
|
||||
}
|
||||
|
||||
func main() {
|
||||
// START OMIT
|
||||
t, err := time.Parse(time.RFC822, "27 Mar 75 00:00 EST")
|
||||
if (err != nil) {
|
||||
fmt.Println(err)
|
||||
return
|
||||
}
|
||||
p := Person{Name: "John Doe", Dob: &t }
|
||||
fmt.Printf("%q\n", p)
|
||||
// STOP OMIT
|
||||
|
||||
//fmt.Printf("%s\n", p.Name)
|
||||
//fmt.Printf("%s\n", p.Dob.String())
|
||||
}
|
||||
|
46
2013/03-golang-learning-lunch/4-struct-func/main.go
Normal file
|
@ -0,0 +1,46 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
)
|
||||
|
||||
const (
|
||||
IN_UTERO = iota
|
||||
NEW_BORN
|
||||
GROWING
|
||||
LIVING
|
||||
DYING
|
||||
DEAD
|
||||
)
|
||||
|
||||
type Person struct {
|
||||
Name string
|
||||
Dob *time.Time
|
||||
State byte
|
||||
}
|
||||
|
||||
func (p *Person) DobString() string {
|
||||
if (p.Dob == nil) {
|
||||
return ""
|
||||
}
|
||||
return p.Dob.String()
|
||||
}
|
||||
|
||||
func (p *Person) ComeToLife() {
|
||||
t := time.Now()
|
||||
p.Dob = &t
|
||||
p.State = NEW_BORN
|
||||
}
|
||||
|
||||
|
||||
func main() {
|
||||
// START OMIT
|
||||
p := Person{Name: "John Doe", State: IN_UTERO}
|
||||
fmt.Printf("%s, %s\n", p.Name, p.DobString())
|
||||
|
||||
p.ComeToLife()
|
||||
fmt.Printf("%s, %s\n", p.Name, p.DobString())
|
||||
// STOP OMIT
|
||||
}
|
||||
|
24
2013/03-golang-learning-lunch/5-neats/main.go
Normal file
|
@ -0,0 +1,24 @@
|
|||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
numbers := []int{1,7,3,8,2,4,5,4,9,0}
|
||||
|
||||
for i := range numbers {
|
||||
fmt.Printf("index: %d\n", i)
|
||||
}
|
||||
|
||||
for _, v := range numbers {
|
||||
fmt.Printf("value: %d\n", v)
|
||||
}
|
||||
|
||||
people := map[string]Person{}
|
||||
people["shawking"] = Person{ Name: "Stephen Hawking", State: LIVING}
|
||||
people["dritchie"] = Person{ Name: "Dennis Ritchie", State: DEAD}
|
||||
for k,v := range people {
|
||||
fmt.Printf("Key: %s; Object: %q\n", k, v)
|
||||
}
|
||||
|
||||
}
|
||||
|
34
2013/03-golang-learning-lunch/5-neats/person.go
Normal file
|
@ -0,0 +1,34 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
const (
|
||||
IN_UTERO = iota
|
||||
NEW_BORN
|
||||
GROWING
|
||||
LIVING
|
||||
DYING
|
||||
DEAD
|
||||
)
|
||||
|
||||
type Person struct {
|
||||
Name string
|
||||
Dob *time.Time
|
||||
State byte
|
||||
}
|
||||
|
||||
func (p *Person) DobString() string {
|
||||
if (p.Dob == nil) {
|
||||
return ""
|
||||
}
|
||||
return p.Dob.String()
|
||||
}
|
||||
|
||||
func (p *Person) ComeToLife() {
|
||||
t := time.Now()
|
||||
p.Dob = &t
|
||||
p.State = NEW_BORN
|
||||
}
|
||||
|
40
2013/03-golang-learning-lunch/6-inheritance/main.go
Normal file
|
@ -0,0 +1,40 @@
|
|||
|
||||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
"os"
|
||||
"os/exec"
|
||||
"time"
|
||||
)
|
||||
|
||||
type Job struct {
|
||||
Command string
|
||||
*log.Logger
|
||||
}
|
||||
|
||||
func NewJob(cmd string) *Job {
|
||||
return &Job{ cmd, log.New(os.Stderr, "[Job] ", log.Ldate)}
|
||||
}
|
||||
|
||||
func (j *Job) Run() ([]byte, error) {
|
||||
j.Printf("Running [%s] ...", j.Command)
|
||||
out, err := exec.Command(j.Command).Output()
|
||||
if (err != nil) {
|
||||
j.Fatal(err)
|
||||
return nil, err
|
||||
}
|
||||
j.Printf("Command returned [%s]", out)
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func main() {
|
||||
job := NewJob("uptime")
|
||||
job.Run()
|
||||
|
||||
for i := 0; i < 10; i++ {
|
||||
job.Run()
|
||||
time.Sleep(1 * time.Second)
|
||||
}
|
||||
}
|
||||
|
18
2013/03-golang-learning-lunch/7-prof/main.go
Normal file
|
@ -0,0 +1,18 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
"net/http"
|
||||
_ "net/http/pprof"
|
||||
"time"
|
||||
)
|
||||
|
||||
func main() {
|
||||
go func(){ log.Println(http.ListenAndServe("localhost:6060",nil))}()
|
||||
log.Println("Sleeping")
|
||||
for {
|
||||
log.Print(".")
|
||||
time.Sleep(3 * time.Second)
|
||||
}
|
||||
}
|
||||
|
22
2013/03-golang-learning-lunch/8-io-chain/main.go
Normal file
|
@ -0,0 +1,22 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"compress/gzip"
|
||||
"encoding/base64"
|
||||
"io"
|
||||
"os"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func main() {
|
||||
var r io.Reader
|
||||
r = strings.NewReader(data)
|
||||
r = base64.NewDecoder(base64.StdEncoding, r)
|
||||
r, _ = gzip.NewReader(r)
|
||||
io.Copy(os.Stdout, r)
|
||||
}
|
||||
|
||||
const data = `
|
||||
H4sIAAAJbogA/1SOO5KDQAxE8zlFZ5tQXGCjjfYIjoURoPKgcY0E57f4VZlQXf2e+r8yOYbMZJhoZWRxz3wkCVjeReETS0VHz5fBCzpxxg/PbfrT/gacCjbjeiRNOChaVkA9RAdR8eVEw4vxa0Dcs3Fe2ZqowpeqG79L995l3VaMBUV/02OS+B6kMWikwG51c8n5GnEPr11F2/QJAAD//z9IppsHAQAA
|
||||
`
|
||||
|
21
2013/03-golang-learning-lunch/9-http-srv/main.go
Normal file
|
@ -0,0 +1,21 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
// START OMIT
|
||||
func routeSlash(w http.ResponseWriter, r *http.Request) {
|
||||
log.Printf("Got a request from %s", r.RemoteAddr)
|
||||
fmt.Fprintf(w, "It Works!\n")
|
||||
}
|
||||
|
||||
func main() {
|
||||
log.Println("listening on 0.0.0.0:4000")
|
||||
http.HandleFunc("/", routeSlash)
|
||||
log.Fatal(http.ListenAndServe("0.0.0.0:4000", nil))
|
||||
}
|
||||
// STOP OMIT
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
Usage
|
||||
====
|
||||
|
||||
go get golang.org/x/tools/cmd/present
|
||||
present .
|
||||
|
1
2015/06-devnation-golang-good-bad-ugly/README.md
Symbolic link
|
@ -0,0 +1 @@
|
|||
../02-devconf.cz/README.md
|
Before Width: | Height: | Size: 1.9 MiB After Width: | Height: | Size: 27 B |
1
2015/06-devnation-golang-good-bad-ugly/cats20.gif
Symbolic link
|
@ -0,0 +1 @@
|
|||
../02-devconf.cz/cats20.gif
|
Before Width: | Height: | Size: 1.9 MiB After Width: | Height: | Size: 27 B |
|
@ -1,48 +0,0 @@
|
|||
// +build ignore
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"compress/gzip"
|
||||
"encoding/json"
|
||||
"flag"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"os"
|
||||
)
|
||||
|
||||
func main() {
|
||||
for _, arg := range flag.Args() {
|
||||
func() {
|
||||
// START1 OMIT
|
||||
fh, err := os.Open(arg)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
defer fh.Close()
|
||||
|
||||
gz, err := gzip.NewReader(fh)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
defer gz.Close()
|
||||
|
||||
buf, err := ioutil.ReadAll(gz)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
var mine MyStruct
|
||||
err = json.Unmarshal(&mine)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
// STOP1 OMIT
|
||||
|
||||
}()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
type MyStruct struct {
|
||||
}
|
1
2015/06-devnation-golang-good-bad-ugly/good0.go
Symbolic link
|
@ -0,0 +1 @@
|
|||
../02-devconf.cz/good0.go
|
|
@ -1,20 +0,0 @@
|
|||
// +build ignore
|
||||
|
||||
package main
|
||||
|
||||
// START1 OMIT
|
||||
// exported
|
||||
type Foo struct {
|
||||
Bar string // exported
|
||||
baz bool // private
|
||||
}
|
||||
|
||||
// private
|
||||
type bif struct {
|
||||
Harf, Buz int64 // doesn't matter
|
||||
}
|
||||
|
||||
// STOP1 OMIT
|
||||
|
||||
func main() {
|
||||
}
|
1
2015/06-devnation-golang-good-bad-ugly/good1.go
Symbolic link
|
@ -0,0 +1 @@
|
|||
../02-devconf.cz/good1.go
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 27 B |
1
2015/06-devnation-golang-good-bad-ugly/gopher.png
Symbolic link
|
@ -0,0 +1 @@
|
|||
../02-devconf.cz/gopher.png
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 27 B |
|
@ -1,10 +0,0 @@
|
|||
// +build ignore
|
||||
|
||||
// START1 OMIT
|
||||
package main
|
||||
|
||||
func main() {
|
||||
println("Howdy y'all")
|
||||
}
|
||||
|
||||
// STOP1 OMIT
|
1
2015/06-devnation-golang-good-bad-ugly/hello.go
Symbolic link
|
@ -0,0 +1 @@
|
|||
../02-devconf.cz/hello.go
|
|
@ -1,18 +0,0 @@
|
|||
// +build ignore
|
||||
|
||||
package main
|
||||
|
||||
// START1 OMIT
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/foo/bar"
|
||||
)
|
||||
|
||||
// STOP1 OMIT
|
||||
|
||||
func main() {
|
||||
fmt.Println(bar.Baz())
|
||||
_ = os.FileInfo
|
||||
}
|
1
2015/06-devnation-golang-good-bad-ugly/imports.go
Symbolic link
|
@ -0,0 +1 @@
|
|||
../02-devconf.cz/imports.go
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 43 B |
|
@ -0,0 +1 @@
|
|||
../02-devconf.cz/kanye_imma_bookmarklet.png
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 43 B |
|
@ -1,33 +0,0 @@
|
|||
// +build OMIT
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
)
|
||||
|
||||
// STARTMAIN1 OMIT
|
||||
type Ball struct{ hits int }
|
||||
|
||||
func main() {
|
||||
table := make(chan *Ball)
|
||||
go player("ping", table)
|
||||
go player("pong", table)
|
||||
|
||||
table <- new(Ball) // game on; toss the ball
|
||||
time.Sleep(1 * time.Second)
|
||||
<-table // game over; grab the ball
|
||||
}
|
||||
|
||||
func player(name string, table chan *Ball) {
|
||||
for {
|
||||
ball := <-table
|
||||
ball.hits++
|
||||
fmt.Println(name, ball.hits)
|
||||
time.Sleep(100 * time.Millisecond)
|
||||
table <- ball
|
||||
}
|
||||
}
|
||||
|
||||
// STOPMAIN1 OMIT
|
1
2015/06-devnation-golang-good-bad-ugly/pingpong.go
Symbolic link
|
@ -0,0 +1 @@
|
|||
../02-devconf.cz/pingpong.go
|
|
@ -1,25 +0,0 @@
|
|||
// +build ignore
|
||||
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
// START1 OMIT
|
||||
names := []string{
|
||||
"Michael",
|
||||
"Jan",
|
||||
"Sean",
|
||||
"Silvia",
|
||||
}
|
||||
for i, name := range names {
|
||||
fmt.Printf("%q is the %d name\n", name, i)
|
||||
}
|
||||
for i := range names {
|
||||
fmt.Printf("%q is the %d name\n", names[i], i)
|
||||
}
|
||||
for _, name := range names {
|
||||
fmt.Printf("%q is the ... name\n", name)
|
||||
}
|
||||
// STOP1 OMIT
|
||||
}
|
1
2015/06-devnation-golang-good-bad-ugly/primitive1.go
Symbolic link
|
@ -0,0 +1 @@
|
|||
../02-devconf.cz/primitive1.go
|
|
@ -1,56 +0,0 @@
|
|||
// +build ignore
|
||||
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
// START1 OMIT
|
||||
infos := map[string]Info{
|
||||
"Michael": Info{
|
||||
City: "Happyville",
|
||||
Status: Open,
|
||||
},
|
||||
"Jan": Info{
|
||||
City: "Confusville",
|
||||
Status: Closed,
|
||||
},
|
||||
"Sean": Info{
|
||||
City: "Septober",
|
||||
Status: Complicated,
|
||||
},
|
||||
"Silvia": Info{
|
||||
City: "Curiousville",
|
||||
Status: Curios,
|
||||
},
|
||||
}
|
||||
for name, info := range infos {
|
||||
fmt.Printf("%q is %s in %q\n", name, info.Status, info.City)
|
||||
}
|
||||
// STOP1 OMIT
|
||||
}
|
||||
|
||||
type Info struct {
|
||||
City string
|
||||
Status Status
|
||||
}
|
||||
type Status int
|
||||
|
||||
var (
|
||||
Open = Status(0)
|
||||
Closed = Status(1)
|
||||
Complicated = Status(2)
|
||||
Curios = Status(3)
|
||||
)
|
||||
|
||||
func (s Status) String() string {
|
||||
switch s {
|
||||
case Open:
|
||||
return "open"
|
||||
case Closed:
|
||||
return "closed"
|
||||
case Complicated:
|
||||
return "complicated"
|
||||
}
|
||||
return "hurr"
|
||||
}
|
1
2015/06-devnation-golang-good-bad-ugly/primitive2.go
Symbolic link
|
@ -0,0 +1 @@
|
|||
../02-devconf.cz/primitive2.go
|
|
@ -1,37 +0,0 @@
|
|||
// +build ignore
|
||||
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
// START1 OMIT
|
||||
fmt.Println("I've got:")
|
||||
for card := range ReadEmAndWeep() {
|
||||
fmt.Printf(" %s of %s\n", card.Value, card.Suite)
|
||||
}
|
||||
// STOP1 OMIT
|
||||
}
|
||||
|
||||
type Card struct {
|
||||
Suite, Value string
|
||||
}
|
||||
|
||||
// START2 OMIT
|
||||
func ReadEmAndWeep() <-chan Card {
|
||||
c := make(chan Card)
|
||||
go func() {
|
||||
for _, card := range []Card{
|
||||
Card{"Ace", "Jack"},
|
||||
Card{"Ace", "Queen"},
|
||||
Card{"Ace", "King"},
|
||||
Card{"Ace", "Ace"},
|
||||
} {
|
||||
c <- card
|
||||
}
|
||||
close(c)
|
||||
}()
|
||||
return c
|
||||
}
|
||||
|
||||
// STOP2 OMIT
|
1
2015/06-devnation-golang-good-bad-ugly/primitive3.go
Symbolic link
|
@ -0,0 +1 @@
|
|||
../02-devconf.cz/primitive3.go
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 28 B |
1
2015/06-devnation-golang-good-bad-ugly/rainbow.jpg
Symbolic link
|
@ -0,0 +1 @@
|
|||
../02-devconf.cz/rainbow.jpg
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 28 B |
Before Width: | Height: | Size: 4.1 MiB After Width: | Height: | Size: 43 B |
|
@ -0,0 +1 @@
|
|||
../02-devconf.cz/revenge-of-the-nerds-o.gif
|
Before Width: | Height: | Size: 4.1 MiB After Width: | Height: | Size: 43 B |
|
@ -1,8 +0,0 @@
|
|||
// START1 OMIT
|
||||
// +build !windows linux,cgo
|
||||
// STOP1 OMIT
|
||||
|
||||
package main
|
||||
|
||||
func main() {
|
||||
}
|
1
2015/06-devnation-golang-good-bad-ugly/tags.go
Symbolic link
|
@ -0,0 +1 @@
|
|||
../02-devconf.cz/tags.go
|
|
@ -1,16 +0,0 @@
|
|||
// +build ignore
|
||||
|
||||
package main
|
||||
|
||||
func main() {
|
||||
// START1 OMIT
|
||||
c := make(chan int)
|
||||
go func() {
|
||||
for i := 0; i < 10; i++ {
|
||||
c <- i
|
||||
}
|
||||
close(c)
|
||||
}()
|
||||
println(<-c)
|
||||
// STOP1 OMIT
|
||||
}
|
1
2015/06-devnation-golang-good-bad-ugly/ugly0.go
Symbolic link
|
@ -0,0 +1 @@
|
|||
../02-devconf.cz/ugly0.go
|
|
@ -1,22 +0,0 @@
|
|||
// +build ignore
|
||||
|
||||
package main
|
||||
|
||||
// START1 OMIT
|
||||
const (
|
||||
DeviceCreate TaskType = iota
|
||||
DeviceReload
|
||||
DeviceRemove
|
||||
DeviceRemoveAll
|
||||
DeviceSuspend
|
||||
DeviceResume
|
||||
DeviceInfo
|
||||
DeviceDeps
|
||||
)
|
||||
|
||||
// STOP1 OMIT
|
||||
|
||||
type TaskType int
|
||||
|
||||
func main() {
|
||||
}
|
1
2015/06-devnation-golang-good-bad-ugly/ugly1.go
Symbolic link
|
@ -0,0 +1 @@
|
|||
../02-devconf.cz/ugly1.go
|
After Width: | Height: | Size: 1.3 MiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 19 KiB |
|
@ -0,0 +1,115 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<!-- Generator: Adobe Illustrator 16.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="500px" height="500px" viewBox="0 0 500 500" enable-background="new 0 0 500 500" xml:space="preserve">
|
||||
<g>
|
||||
<g>
|
||||
<path fill="#111111" d="M232.459,274.804h-9.086l-1.557-10.398h-11.051l-1.559,10.398h-8.266l9.17-57.299h13.18L232.459,274.804z
|
||||
M211.91,256.63h8.676l-4.339-28.976L211.91,256.63z"></path>
|
||||
<path fill="#111111" d="M246.621,217.504h27.83v8.184h-9.41v49.116h-9.011v-49.116h-9.409V217.504z"></path>
|
||||
<path fill="#111111" d="M293.359,231.255c0-9.169,4.83-14.405,13.671-14.405s13.669,5.236,13.669,14.405v29.792
|
||||
c0,9.172-4.828,14.408-13.669,14.408s-13.671-5.236-13.671-14.408V231.255z M302.365,261.626c0,4.088,1.803,5.645,4.665,5.645
|
||||
c2.866,0,4.665-1.557,4.665-5.645v-30.945c0-4.094-1.799-5.646-4.665-5.646c-2.862,0-4.665,1.552-4.665,5.646V261.626z"></path>
|
||||
<path fill="#111111" d="M361.299,258.185l6.143-40.68h12.522v57.299h-8.515v-41.094l-6.22,41.094h-8.513l-6.711-40.52v40.52
|
||||
h-7.857v-57.299h12.523L361.299,258.185z"></path>
|
||||
<path fill="#111111" d="M402.229,217.504h9.004v57.299h-9.004V217.504z"></path>
|
||||
<path fill="#111111" d="M459.609,253.436v7.612c0,9.172-4.582,14.408-13.424,14.408s-13.426-5.236-13.426-14.408v-29.792
|
||||
c0-9.169,4.584-14.405,13.426-14.405s13.424,5.236,13.424,14.405v5.565h-8.513v-6.14c0-4.094-1.802-5.646-4.666-5.646
|
||||
s-4.663,1.552-4.663,5.646v30.945c0,4.088,1.799,5.564,4.663,5.564s4.666-1.477,4.666-5.564v-8.19H459.609z"></path>
|
||||
</g>
|
||||
<g>
|
||||
<path fill="#46D200" d="M259.068,195.26c-0.089-0.295-0.236-0.553-0.432-0.756c-0.195-0.221-0.461-0.398-0.812-0.544
|
||||
c-0.294-0.117-0.648-0.208-1.086-0.267c-0.414-0.057-0.904-0.088-1.458-0.094l-7.243-0.077l-0.109,10.112l2.488,0.025l0.039-3.449
|
||||
l4.014,0.043c0.707,0.006,1.281-0.014,1.76-0.062c0.5-0.053,0.934-0.137,1.283-0.254c0.391-0.131,0.709-0.308,0.941-0.523
|
||||
c0.238-0.221,0.422-0.49,0.541-0.801c0.096-0.27,0.156-0.562,0.178-0.877c0.018-0.261,0.023-0.548,0.027-0.852
|
||||
c0.002-0.291,0.002-0.562-0.004-0.805C259.189,195.782,259.145,195.509,259.068,195.26z M256.711,196.858
|
||||
c0,0.248-0.006,0.463-0.018,0.651c-0.006,0.138-0.033,0.218-0.07,0.284c0,0-0.055,0.036-0.234,0.072
|
||||
c-0.178,0.035-0.414,0.061-0.713,0.072c-0.338,0.014-0.738,0.016-1.182,0.011l-4.018-0.044l0.025-2.047l4.011,0.043
|
||||
c0.478,0.006,0.878,0.02,1.201,0.028c0.29,0.013,0.528,0.038,0.71,0.072c0.186,0.04,0.252,0.08,0.25,0.066
|
||||
c0.01,0.017,0.029,0.073,0.035,0.199C256.714,196.43,256.717,196.631,256.711,196.858z"></path>
|
||||
<path fill="#46D200" d="M284.964,195.496c-0.11-0.298-0.296-0.556-0.533-0.763c-0.224-0.21-0.532-0.375-0.931-0.51
|
||||
c-0.342-0.111-0.758-0.197-1.268-0.256c-0.498-0.055-1.088-0.087-1.756-0.096l-6.861-0.072l-0.109,10.11l2.488,0.027l0.036-3.449
|
||||
l4.198,0.046c0.435,0.003,0.832,0.017,1.191,0.037c0.271,0.014,0.516,0.047,0.701,0.087c0.182,0.039,0.234,0.079,0.254,0.099
|
||||
c0.012,0.035,0.035,0.121,0.043,0.266c0.008,0.186,0.008,0.399,0.006,0.654l-0.027,2.332l2.488,0.027l0.025-2.331
|
||||
c0-0.36-0.01-0.667-0.041-0.944c-0.043-0.332-0.129-0.632-0.266-0.897c-0.061-0.113-0.131-0.22-0.213-0.317
|
||||
c0.104-0.105,0.201-0.227,0.289-0.352c0.172-0.27,0.293-0.586,0.363-0.952c0.062-0.317,0.096-0.681,0.1-1.077
|
||||
c0.002-0.294,0-0.57-0.013-0.818C285.117,196.038,285.059,195.752,284.964,195.496z M280.431,198.229l-4.374-0.047l0.021-2.048
|
||||
l4.375,0.048c0.478,0.004,0.877,0.018,1.205,0.026c0.288,0.015,0.525,0.038,0.707,0.075c0.189,0.038,0.254,0.07,0.25,0.064
|
||||
c0.006,0.015,0.029,0.07,0.029,0.195c0.012,0.167,0.014,0.364,0.011,0.596c-0.003,0.249-0.011,0.465-0.021,0.649
|
||||
c-0.01,0.14-0.033,0.22-0.068,0.286c0,0-0.059,0.037-0.236,0.07c-0.178,0.037-0.417,0.061-0.711,0.074
|
||||
C281.28,198.233,280.883,198.233,280.431,198.229z"></path>
|
||||
<path fill="#46D200" d="M312.016,196.571c-0.088-0.412-0.232-0.787-0.43-1.109c-0.219-0.348-0.531-0.637-0.92-0.86
|
||||
c-0.363-0.208-0.801-0.36-1.336-0.464c-0.5-0.097-1.09-0.146-1.807-0.155l-3.281-0.033c-0.717-0.009-1.307,0.028-1.805,0.114
|
||||
c-0.539,0.09-0.982,0.234-1.346,0.431c-0.398,0.22-0.717,0.5-0.941,0.842c-0.209,0.32-0.363,0.688-0.461,1.107
|
||||
c-0.088,0.378-0.135,0.796-0.156,1.266c-0.014,0.431-0.025,0.905-0.031,1.429c-0.005,0.521-0.005,0.994,0.002,1.427
|
||||
c0.008,0.464,0.051,0.894,0.131,1.269c0.086,0.418,0.234,0.793,0.432,1.109c0.217,0.348,0.525,0.642,0.928,0.873
|
||||
c0.361,0.202,0.811,0.356,1.332,0.453c0.5,0.1,1.092,0.146,1.804,0.154l3.28,0.036c0.715,0.007,1.307-0.027,1.804-0.112
|
||||
c0.524-0.089,0.976-0.234,1.35-0.43c0.399-0.219,0.717-0.506,0.94-0.848c0.205-0.316,0.357-0.684,0.453-1.102
|
||||
c0.086-0.375,0.143-0.801,0.16-1.268c0.016-0.431,0.027-0.906,0.038-1.425c0.005-0.525,0.001-0.999-0.007-1.431
|
||||
C312.139,197.374,312.096,196.956,312.016,196.571z M307.436,202.149l-3.279-0.035c-0.455-0.005-0.848-0.019-1.159-0.05
|
||||
c-0.268-0.024-0.472-0.069-0.614-0.13c-0.092-0.038-0.154-0.082-0.189-0.129c-0.043-0.062-0.092-0.174-0.133-0.385
|
||||
c-0.041-0.229-0.066-0.523-0.072-0.872c-0.002-0.384-0.006-0.847,0-1.385c0.006-0.54,0.018-1.002,0.029-1.394
|
||||
c0.01-0.346,0.035-0.634,0.084-0.863c0.035-0.166,0.086-0.296,0.139-0.371c0.04-0.055,0.109-0.098,0.195-0.134
|
||||
c0.148-0.058,0.359-0.097,0.619-0.118c0.314-0.025,0.705-0.034,1.166-0.028l3.276,0.035c0.46,0.004,0.853,0.022,1.163,0.054
|
||||
c0.262,0.024,0.467,0.068,0.613,0.131c0.088,0.039,0.15,0.082,0.186,0.133c0.057,0.081,0.102,0.215,0.137,0.38
|
||||
c0.041,0.228,0.064,0.519,0.07,0.869c0.006,0.39,0.004,0.852,0,1.392c-0.008,0.537-0.016,0.998-0.029,1.382
|
||||
c-0.014,0.353-0.045,0.647-0.09,0.87c-0.047,0.21-0.104,0.322-0.139,0.373c-0.039,0.053-0.105,0.095-0.205,0.135
|
||||
c-0.143,0.057-0.348,0.098-0.607,0.117C308.275,202.149,307.885,202.155,307.436,202.149z"></path>
|
||||
<path fill="#46D200" d="M333.41,201.299c-0.002,0.223-0.023,0.411-0.066,0.559c-0.021,0.088-0.055,0.154-0.098,0.193
|
||||
c-0.053,0.051-0.139,0.096-0.252,0.123c-0.121,0.03-0.344,0.069-0.711,0.064l-2.543-0.027c-0.223-0.002-0.406-0.02-0.537-0.048
|
||||
c-0.037-0.009-0.043-0.019-0.059-0.03c0-0.006-0.053-0.071-0.088-0.289c-0.037-0.217-0.06-0.534-0.055-0.939l0.011-1.061
|
||||
l-2.485-0.026l-0.012,1.062c-0.004,0.589,0.021,1.074,0.084,1.49c0.074,0.487,0.24,0.898,0.496,1.228
|
||||
c0.27,0.338,0.646,0.589,1.107,0.729c0.4,0.122,0.896,0.186,1.514,0.193l2.539,0.027c0.609,0.006,1.117-0.043,1.549-0.148
|
||||
c0.482-0.115,0.887-0.316,1.197-0.594c0.324-0.285,0.559-0.656,0.699-1.092c0.125-0.389,0.191-0.849,0.195-1.369l0.076-6.871
|
||||
l-2.49-0.027L333.41,201.299z"></path>
|
||||
<polygon fill="#46D200" points="350.893,204.749 361.004,204.857 361.03,202.549 353.405,202.468 353.424,200.782
|
||||
360.684,200.862 360.707,198.551 353.446,198.471 353.463,196.971 361.09,197.053 361.114,194.745 351.002,194.636 "></polygon>
|
||||
<path fill="#46D200" d="M386.639,196.479c-0.156-0.302-0.367-0.566-0.623-0.779c-0.256-0.215-0.569-0.392-0.941-0.524
|
||||
c-0.338-0.126-0.744-0.219-1.195-0.28c-0.439-0.062-0.951-0.096-1.514-0.102l-2.553-0.029c-0.713-0.007-1.307,0.03-1.801,0.116
|
||||
c-0.543,0.091-0.984,0.233-1.349,0.433c-0.397,0.215-0.712,0.498-0.942,0.842c-0.208,0.313-0.361,0.688-0.461,1.105
|
||||
c-0.086,0.381-0.137,0.807-0.154,1.268c-0.016,0.429-0.029,0.901-0.034,1.428c-0.008,0.52,0,0.993,0.003,1.42
|
||||
c0.008,0.465,0.049,0.894,0.133,1.275c0.082,0.419,0.232,0.791,0.432,1.109c0.219,0.351,0.529,0.644,0.928,0.873
|
||||
c0.361,0.199,0.812,0.356,1.331,0.452c0.491,0.095,1.1,0.147,1.804,0.155l2.549,0.027c0.588,0.006,1.082-0.014,1.516-0.063
|
||||
c0.473-0.056,0.867-0.142,1.211-0.265c0.375-0.131,0.697-0.312,0.954-0.528c0.263-0.22,0.478-0.489,0.641-0.8
|
||||
c0.151-0.289,0.261-0.62,0.317-0.992c0.053-0.324,0.082-0.689,0.088-1.086l0.006-0.699l-2.485-0.027l-0.007,0.697
|
||||
c-0.002,0.277-0.02,0.514-0.044,0.707c-0.024,0.199-0.066,0.311-0.093,0.371c-0.031,0.062-0.066,0.109-0.113,0.145
|
||||
c-0.041,0.031-0.123,0.075-0.285,0.121c-0.164,0.045-0.377,0.078-0.642,0.092c-0.274,0.017-0.614,0.022-1.038,0.019l-2.551-0.026
|
||||
c-0.449-0.006-0.845-0.021-1.156-0.049c-0.266-0.028-0.473-0.072-0.617-0.133c-0.135-0.056-0.176-0.114-0.184-0.131
|
||||
c-0.045-0.056-0.1-0.171-0.138-0.383c-0.042-0.225-0.069-0.521-0.071-0.871c-0.004-0.385-0.004-0.848,0.002-1.383
|
||||
c0.006-0.543,0.016-1.007,0.027-1.393c0.009-0.35,0.039-0.643,0.086-0.866c0.035-0.163,0.084-0.296,0.139-0.372
|
||||
c0.043-0.056,0.105-0.098,0.195-0.135c0.148-0.057,0.359-0.095,0.619-0.117c0.314-0.023,0.705-0.033,1.162-0.029l2.551,0.029
|
||||
c0.521,0.006,0.955,0.027,1.29,0.068c0.334,0.035,0.513,0.115,0.608,0.172c0.061,0.037,0.135,0.096,0.189,0.249
|
||||
c0.045,0.126,0.103,0.374,0.098,0.829l-0.01,0.703l2.486,0.028l0.006-0.702c0.005-0.364-0.016-0.707-0.062-1.024
|
||||
C386.889,197.071,386.785,196.756,386.639,196.479z"></path>
|
||||
<polygon fill="#46D200" points="401.424,195.182 401.397,197.489 405.758,197.538 405.672,205.34 408.158,205.366
|
||||
408.242,197.564 412.6,197.61 412.625,195.301 "></polygon>
|
||||
</g>
|
||||
<path fill="#46D200" d="M104.691,245.278c-4.828,0-12.182-0.432-12.182-0.432c-0.77-0.045-1.031-0.592-0.576-1.216
|
||||
c0,0,4.562-6.282,7.871-10.217c1.635-1.936,3.947-4.497,3.947-4.497c0.518-0.574,1.361-0.574,1.881,0c0,0,2.308,2.562,3.943,4.497
|
||||
c3.312,3.935,7.875,10.217,7.875,10.217c0.454,0.624,0.195,1.171-0.574,1.216C116.877,244.846,109.518,245.278,104.691,245.278z"></path>
|
||||
<path fill="#111111" d="M176.131,239.59c-0.027-6.996-16.971-13.006-41.387-15.742c-1.461-0.064-2.223,1.014-2.244,2.05
|
||||
c-0.041,0.825,0.529,1.841,1.566,2.009c0.193,0.033,0.361,0.072,0.578,0.105c19.672,2.055,33.066,6.089,33.088,10.747
|
||||
c0.021,4.542-12.664,8.519-31.514,10.667c-4.926-8.047-10.936-16.685-17.799-25.404c-3.235-4.115-6.5-8.031-9.74-11.734
|
||||
c16.715-18.591,31.447-29.887,35.706-26.554c3.294,2.578-0.46,13.478-8.872,27.784c-0.264,0.462-0.48,1.818,0.562,2.524
|
||||
c0.982,0.666,2.309,0.298,2.887-0.636c0.082-0.143,0.234-0.362,0.318-0.506c10.367-18.119,14.562-32.391,9.586-36.285
|
||||
c-6.082-4.758-23.951,7.378-43.375,28.363v-0.006c-0.268,0.287-0.533,0.57-0.801,0.861c-0.266-0.291-0.533-0.574-0.799-0.861v0.006
|
||||
c-19.425-20.985-37.295-33.122-43.375-28.363c-4.977,3.895-0.782,18.166,9.588,36.285c0.082,0.144,0.234,0.363,0.316,0.506
|
||||
c0.578,0.934,1.904,1.302,2.889,0.636c1.041-0.706,0.824-2.062,0.561-2.524c-8.414-14.307-12.166-25.206-8.873-27.784
|
||||
c4.26-3.333,18.99,7.963,35.707,26.554c-3.24,3.703-6.506,7.619-9.74,11.734c-6.864,8.72-12.873,17.357-17.799,25.404
|
||||
c-18.85-2.148-31.537-6.125-31.513-10.667c0.021-4.658,13.414-8.692,33.087-10.747c0.219-0.033,0.385-0.072,0.578-0.105
|
||||
c1.037-0.168,1.607-1.184,1.565-2.009c-0.021-1.036-0.782-2.114-2.243-2.05c-24.417,2.736-41.357,8.746-41.387,15.742
|
||||
c-0.029,6.554,14.783,12.279,36.685,15.287c-10.263,17.997-14.376,32.144-9.421,36.022c5.365,4.197,19.92-4.764,36.615-21.354
|
||||
c0.557-0.508,0.902-1.854-0.109-2.84c-0.65-0.635-1.812-0.766-2.617-0.174c-0.314,0.23-0.613,0.527-0.832,0.734
|
||||
c-13.022,13.066-23.684,20.307-27.199,17.557c-3.42-2.67,0.744-14.119,9.826-29.185c8.496,0.915,17.855,1.433,27.691,1.472v0.002
|
||||
c0.139,0,0.273,0,0.412,0.002c0.105,0,0.211,0.002,0.317,0.002c0.022,0,0.048,0,0.069,0c0.023,0,0.049,0,0.071,0
|
||||
c0.106,0,0.212-0.002,0.318-0.002c0.136-0.002,0.272-0.002,0.411-0.002v-0.002c9.834-0.039,19.195-0.557,27.692-1.472
|
||||
c9.081,15.065,13.243,26.515,9.825,29.185c-3.516,2.75-14.178-4.49-27.199-17.557c-0.219-0.207-0.52-0.504-0.832-0.734
|
||||
c-0.805-0.592-1.967-0.461-2.617,0.174c-1.012,0.986-0.666,2.332-0.109,2.84c16.697,16.59,31.25,25.551,36.615,21.354
|
||||
c4.955-3.879,0.84-18.025-9.421-36.022C161.348,251.869,176.16,246.144,176.131,239.59z M104.919,251.098
|
||||
c-0.075,0-0.151,0.002-0.228,0.002c-0.074,0-0.149-0.002-0.227-0.002c-8.807-0.014-17.186-0.381-24.793-1.028
|
||||
c4.523-7.011,9.94-14.61,16.037-22.352c2.736-3.478,5.473-6.798,8.184-9.97v0.008c0.266-0.312,0.533-0.63,0.799-0.938
|
||||
c0.268,0.309,0.533,0.626,0.801,0.938v-0.008c2.71,3.172,5.446,6.492,8.184,9.97c6.098,7.741,11.514,15.341,16.037,22.352
|
||||
C122.105,250.716,113.727,251.084,104.919,251.098z"></path>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 723 KiB |
After Width: | Height: | Size: 26 KiB |
|
@ -0,0 +1,18 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
|
||||
<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="0 0 216 216" version="1.1" y="0px" x="0px" xmlns:xlink="http://www.w3.org/1999/xlink" enable-background="new 0 0 216 216" width="216" height="216">
|
||||
<path d="m117.73 114.12h4.934v-0.868h1.156v-4.747h-7.246v4.747h1.156v0.87zm0.35-4.11h4.246v1.747h-1.156v0.868h-1.934v-0.868h-1.156v-1.75z"></path>
|
||||
<path d="m146.12 96.547c0.154-0.586-0.093-1.214-0.657-1.491l-11.897-5.822c-0.177-0.086-0.371-0.13-0.567-0.13h-48.838c-0.174 0-0.345 0.033-0.507 0.101l-13.693 5.824c-0.6 0.255-0.883 0.91-0.72 1.521-0.029 0.11-0.067 0.216-0.067 0.334v21.747c0 0.713 0.579 1.293 1.294 1.293h74.436c0.716 0 1.294-0.58 1.294-1.293v-21.747c0-0.118-0.04-0.227-0.07-0.336zm-61.705-4.858h48.285l7.97 3.902h-65.427l9.172-3.902zm59.185 25.651h-71.848v-18.842h71.848v18.842z"></path>
|
||||
<path d="m89.983 102.48h-1.157v-0.868h-4.933v0.868h-1.157v4.747h7.247v-4.75zm-1.5 3.24h-4.247v-1.747h1.157v-0.868h1.933v0.868h1.157v1.75z"></path>
|
||||
<path d="m98.483 102.48h-1.157v-0.868h-4.933v0.868h-1.157v4.747h7.247v-4.75zm-1.5 3.24h-4.247v-1.747h1.157v-0.868h1.933v0.868h1.157v1.75z"></path>
|
||||
<path d="m106.94 102.48h-1.157v-0.868h-4.933v0.868h-1.157v4.747h7.247v-4.75zm-1.5 3.24h-4.247v-1.747h1.157v-0.868h1.933v0.868h1.157v1.75z"></path>
|
||||
<path d="m115.44 102.48h-1.157v-0.868h-4.933v0.868h-1.157v4.747h7.247v-4.75zm-1.5 3.24h-4.247v-1.747h1.157v-0.868h1.933v0.868h1.157v1.75z"></path>
|
||||
<path d="m123.82 102.48h-1.157v-0.868h-4.933v0.868h-1.156v4.747h7.246v-4.75zm-1.5 3.24h-4.246v-1.747h1.156v-0.868h1.933v0.868h1.157v1.75z"></path>
|
||||
<path d="m140.53 109.35h-1.157v-0.868h-4.933v0.868h-1.156v4.747h7.246v-4.75zm-1.5 3.25h-4.246v-1.747h1.156v-0.868h1.933v0.868h1.157v1.75z"></path>
|
||||
<path d="m109.23 114.12h4.934v-0.868h1.156v-4.747h-7.247v4.747h1.157v0.87zm0.35-4.11h4.247v1.747h-1.156v0.868h-1.934v-0.868h-1.157v-1.75z"></path>
|
||||
<path d="m100.77 114.12h4.933v-0.868h1.157v-4.747h-7.247v4.747h1.157v0.87zm0.35-4.11h4.247v1.747h-1.157v0.868h-1.933v-0.868h-1.157v-1.75z"></path>
|
||||
<path d="m92.274 114.12h4.933v-0.868h1.157v-4.747h-7.247v4.747h1.157v0.87zm0.343-4.11h4.247v1.747h-1.157v0.868h-1.933v-0.868h-1.157v-1.75z"></path>
|
||||
<path d="m83.894 114.12h4.933v-0.868h1.156v-4.747h-7.246v4.747h1.157v0.87zm0.342-4.11h4.246v1.747h-1.156v0.868h-1.933v-0.868h-1.157v-1.75z"></path>
|
||||
</svg>
|
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 6.2 KiB |
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="svg8" version="1.1" viewBox="0 0 1920 1200" height="1200" width="1920">
|
||||
<defs id="defs2">
|
||||
<pattern patternTransform="translate(-1327.8,278.35)" id="pattern5587" xlink:href="#pattern5542"></pattern>
|
||||
<pattern patternTransform="translate(-1053.4,552.71)" id="pattern5542" xlink:href="#pattern5536"></pattern>
|
||||
<pattern patternTransform="translate(-1094.4,511.7)" id="pattern5536" xlink:href="#pattern4811"></pattern>
|
||||
<pattern id="pattern4811" patternTransform="translate(0,1117.5)" height="62" width="62.004" patternUnits="userSpaceOnUse">
|
||||
<path d="M 0,0 V 0.7 L 30.273,31 0,61.3 V 62 H 0.722 L 31.003,31.7 61.282,62 h 0.722 V 61.3 L 31.729,31 62.003,0.7 V 0 H 61.262 L 31.003,30.3 0.74,0 Z M 7.159,0 31,23.8 54.843,0 H 53.39 L 31,22.4 8.612,0 Z M 15.028,0 31,16 46.978,0 H 45.521 L 31,14.5 16.484,0 Z M 22.897,0 31,8.1 39.105,0 H 37.649 L 31,6.6 24.354,0 Z M 0,7.1 V 8.6 L 22.401,31 0,53.4 v 1.4 L 23.86,31 Z M 62.003,7.1 38.145,31 62.003,54.8 V 53.4 L 39.602,31 62.003,8.6 Z M 0,15 v 1.4 L 14.532,31 0,45.5 V 47 L 15.991,31 Z M 62.003,15 46.015,31 62.003,47 V 45.5 L 47.471,31 62.003,16.4 Z M 0,22.9 v 1.4 L 6.663,31 0,37.6 v 1.5 L 8.119,31 Z m 62.003,0 -8.12,8.1 8.12,8.1 V 37.6 L 55.339,31 62.003,24.3 Z M 31,38.1 7.137,62 H 8.594 L 31,39.6 53.41,62 h 1.456 z M 31,46 15.006,62 h 1.459 L 30.999,47.5 45.54,62 h 1.459 z m 0,7.9 -8.124,8.1 h 1.459 L 31,55.3 37.668,62 h 1.459 z" id="rect4163"></path>
|
||||
</pattern>
|
||||
</defs>
|
||||
<use transform="translate(1772,326)" id="use5540" xlink:href="#rect5534" y="0" x="0"></use>
|
||||
<rect transform="rotate(-45)" style="opacity:0.15;fill:url(#pattern5587)" width="1920" height="62" x="-1327.8" y="278.35" id="rect5534"></rect>
|
||||
<path style="opacity:0.05" id="rect5549" d="m 2534.1,0 h 1200 l -1200,1200 h -1200 z"></path>
|
||||
<use style="opacity:0.5" transform="translate(-2909)" id="use5564" xlink:href="#rect5549" y="0" x="0"></use>
|
||||
|
||||
</svg>
|
After Width: | Height: | Size: 2 KiB |
After Width: | Height: | Size: 25 KiB |
|
@ -0,0 +1,23 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
|
||||
<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 180 180" xml:space="preserve" viewBox="0 0 180 180" version="1.1" y="0px" x="0px" xmlns:xlink="http://www.w3.org/1999/xlink" width="180" height="180">
|
||||
<switch>
|
||||
<foreignObject y="0" x="0" height="1" width="1" requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/">
|
||||
</foreignObject>
|
||||
<g>
|
||||
<path d="m111.6 104.8c-0.2-0.8-0.5-1.5-0.9-2.2v-5.4-0.7-39.8c0-0.8-0.5-1.5-1.2-1.9l-6-2.7h-26.2l-7 2.8c-0.8 0.3-1.3 1-1.3 1.9v39.7 0.7 10c0 0.3 0.1 0.5 0.1 0.8-1.1 1.3-1.9 2.8-2.3 4.5-4.5 0.2-8.2 3.3-9.2 7.7 0 0.2 0 0.4 0.1 0.6s0.3 0.3 0.5 0.3h63c0.3 0 0.6-0.2 0.7-0.6 0.1-0.8 0.2-1.6 0.2-2.3 0.2-6.5-4.3-12-10.5-13.4zm-2.2-4.6c-1-1.5-2.3-2.7-3.8-3.8h3.8v3.8zm-31.8-46.7h25.6l5.6 2.5h-37.6l6.4-2.5zm-7.1 3.9h38.9v37.6h-6.2c-2.1-1-4.5-1.6-6.9-1.6-2.5 0-4.8 0.6-6.9 1.6h-18.9v-37.6zm0 39.1h16.5c-2.8 2-5 4.9-6 8.3-1.2-0.4-2.4-0.6-3.6-0.6-2.6 0-5 0.9-6.9 2.5v-10.2zm50.3 23.1h-61.5c1.1-3.5 4.4-5.8 8.1-5.8h0.1c0.3 0 0.6-0.2 0.7-0.5 0.3-1.6 1-3 1.9-4.2 0.3-0.4 0.7-0.8 1-1.1 1.7-1.5 3.9-2.4 6.2-2.4 1.2 0 2.4 0.2 3.5 0.7 0.5 0.3 1.5 0.8 2.3 1.7 0.3 0.3 0.6 0.7 0.8 1 0.1 0.2 0.3 0.3 0.5 0.2 0.1 0 0.1 0 0.2-0.1 0.2-0.1 0.3-0.4 0.2-0.7-0.1-0.2-0.2-0.4-0.4-0.5-0.7-1-1.7-1.7-2.4-2.2 1.1-4.1 3.9-7.4 7.4-9.2 1.3-0.7 2.6-1.1 4.1-1.4 0.9-0.2 1.8-0.3 2.7-0.3s1.8 0.1 2.7 0.3c1.4 0.3 2.8 0.7 4.1 1.4 2.7 1.4 4.9 3.6 6.3 6.3 0.4 0.7 0.7 1.4 0.9 2.2-0.3 0-0.6 0-0.9 0.1-1.2 0.1-2.1 0.6-2.2 0.6-0.3 0.1-0.4 0.4-0.3 0.7s0.4 0.4 0.7 0.3c0 0 0.7-0.3 1.8-0.4 0.4 0 0.9-0.1 1.4 0 0.2 0 0.4 0 0.6 0.1 5.6 1.2 9.6 6.1 9.6 11.9 0 0.2 0 0.7-0.1 1.3z"></path>
|
||||
<path d="m92.8 71.5c0.2 0.1 0.4 0.2 0.6 0.2 0.4 0 0.8-0.2 1-0.6l2.9-5c0.2-0.3 0.2-0.6 0.1-0.9s-0.3-0.6-0.5-0.7-0.4-0.2-0.6-0.2c-0.4 0-0.8 0.2-1 0.6l-2.9 5c-0.4 0.6-0.2 1.3 0.4 1.6zm-0.2-1.4l2.9-5c0-0.1 0.1-0.1 0.1-0.2l0.1-0.1c0.1 0 0.1-0.1 0.2-0.1h0.2 0.1 0.1 0.1c0.1 0 0.1 0 0.2 0.1 0.4 0.2 0.5 0.7 0.3 1.1l-2.9 5c0 0.1-0.1 0.1-0.1 0.2l-0.1 0.1c-0.1 0-0.1 0.1-0.2 0.1h-0.2-0.1-0.1-0.1c-0.1 0-0.1 0-0.2-0.1-0.4-0.2-0.5-0.7-0.3-1.1z"></path>
|
||||
<path d="m89.9 61.9c-1 0-1.9 0.8-1.9 1.9v5.7l-2.9-4.9c-0.3-0.6-0.9-0.9-1.6-0.9-0.3 0-0.6 0.1-0.9 0.2-0.9 0.5-1.2 1.6-0.7 2.5l2.9 5c0.1 0.1 0.1 0.2 0.2 0.3-0.1-0.1-0.2-0.1-0.2-0.2l-5-2.9c-0.3-0.2-0.6-0.2-0.9-0.2-0.6 0-1.2 0.3-1.5 0.9-0.2 0.4-0.3 0.9-0.2 1.3s0.4 0.8 0.8 1.1l5 2.9c0.3 0.2 0.6 0.2 0.9 0.2 0.6 0 1.2-0.3 1.5-0.9 0.2-0.4 0.3-0.9 0.2-1.3-0.1-0.3-0.2-0.5-0.4-0.7 0.1 0.1 0.2 0.1 0.3 0.2 0.3 0.2 0.6 0.2 0.9 0.2s0.6-0.1 0.9-0.2c0.6-0.3 0.9-0.9 0.9-1.5 0.2 0.3 0.4 0.5 0.7 0.7s0.6 0.3 0.9 0.3c1 0 1.9-0.8 1.9-1.9v-5.8c0.1-1.1-0.7-2-1.8-2zm-5.1 11.5c0 0.1-0.1 0.1-0.1 0.2l-0.1 0.1c-0.1 0-0.1 0.1-0.2 0.1h-0.2-0.1-0.1-0.1c-0.1 0-0.1 0-0.2-0.1l-5-2.9c-0.4-0.2-0.5-0.7-0.3-1.1 0-0.1 0.1-0.1 0.1-0.2l0.1-0.1c0.1 0 0.1-0.1 0.2-0.1h0.2 0.1 0.1 0.1c0.1 0 0.1 0 0.2 0.1l5 2.9c0.4 0.2 0.5 0.7 0.3 1.1zm2.2-2.2c-0.1 0-0.1 0.1-0.2 0.1h-0.1-0.1-0.1-0.1c-0.1 0-0.1 0-0.2-0.1l-0.3-0.3-2.9-5c-0.2-0.4-0.1-0.9 0.3-1.1 0.1 0 0.1-0.1 0.2-0.1h0.1 0.1 0.1 0.2c0.1 0 0.1 0 0.2 0.1l0.1 0.1s0.1 0.1 0.1 0.2l2.9 5c0.2 0.4 0 0.9-0.3 1.1zm3.8-1.6c0 0.5-0.4 0.8-0.8 0.8-0.1 0-0.3 0-0.4-0.1-0.2-0.1-0.4-0.4-0.4-0.7v-5.8c0-0.5 0.4-0.8 0.8-0.8h0.1 0.1 0.1 0.1s0.1 0 0.1 0.1l0.1 0.1 0.1 0.1s0 0.1 0.1 0.1c0 0.1 0.1 0.2 0.1 0.3l-0.1 5.9z"></path>
|
||||
<path d="m84.8 76.4c0-0.9-0.7-1.7-1.7-1.7h-5.8c-0.9 0-1.7 0.7-1.7 1.7 0 0.6 0.3 1.1 0.8 1.4 0.3 0.1 0.5 0.2 0.8 0.2h5.8c1.1 0 1.8-0.7 1.8-1.6zm-7.9 0.7c-0.2-0.1-0.4-0.4-0.4-0.7 0-0.5 0.4-0.8 0.8-0.8h5.8c0.5 0 0.8 0.4 0.8 0.8 0 0.5-0.4 0.8-0.8 0.8h-5.8c-0.1 0-0.2 0-0.4-0.1z"></path>
|
||||
<path d="m85.4 79c-0.3-0.5-0.8-0.8-1.4-0.8-0.3 0-0.6 0.1-0.8 0.2l-5 2.9c-0.4 0.2-0.6 0.6-0.7 1s-0.1 0.8 0.2 1.2c0.1 0.2 0.3 0.4 0.6 0.6 0.2 0.1 0.5 0.2 0.8 0.2s0.6-0.1 0.8-0.2l5-2.9c0.7-0.5 1-1.5 0.5-2.2zm-0.9 1.5l-5 2.9c-0.1 0-0.1 0.1-0.2 0.1h-0.1-0.1-0.1-0.1c-0.1 0-0.1 0-0.2-0.1l-0.3-0.3c-0.2-0.4-0.1-0.9 0.3-1.1l5-2.9c0.1 0 0.1-0.1 0.2-0.1h0.1 0.1 0.1 0.2c0.1 0 0.1 0 0.2 0.1l0.1 0.1s0.1 0.1 0.1 0.2c0.2 0.4 0.1 0.9-0.3 1.1z"></path>
|
||||
<path d="m87.3 80.9c-0.2-0.1-0.5-0.2-0.8-0.2-0.5 0-1.1 0.3-1.3 0.8l-2.9 5c-0.4 0.7-0.2 1.7 0.6 2.1 0.2 0.1 0.5 0.2 0.8 0.2 0.5 0 1-0.3 1.3-0.8l2.9-5c0.2-0.4 0.3-0.8 0.2-1.2-0.2-0.3-0.4-0.7-0.8-0.9zm0 1.8l-2.9 5c0 0.1-0.1 0.1-0.1 0.2l-0.1 0.1c-0.1 0-0.1 0.1-0.2 0.1h-0.2-0.1-0.1-0.1c-0.1 0-0.1 0-0.2-0.1-0.4-0.2-0.5-0.7-0.3-1.1l2.9-5c0-0.1 0.1-0.1 0.1-0.2l0.1-0.1c0.1 0 0.1-0.1 0.2-0.1h0.2 0.1 0.1 0.1c0.1 0 0.1 0 0.2 0.1 0.4 0.2 0.5 0.7 0.3 1.1z"></path>
|
||||
<path d="m89.9 81.7c-0.8 0-1.5 0.7-1.5 1.5v5.8c0 0.5 0.3 1 0.7 1.3 0.2 0.1 0.5 0.2 0.7 0.2 0.8 0 1.5-0.7 1.5-1.5v-5.8c0-0.4-0.2-0.8-0.4-1-0.2-0.3-0.6-0.5-1-0.5zm0.9 7.3v0.3 0.1s0 0.1-0.1 0.1l-0.1 0.1-0.1 0.1s-0.1 0-0.1 0.1h-0.1-0.1-0.1c-0.2 0-0.3 0-0.4-0.1-0.2-0.1-0.4-0.4-0.4-0.7v-5.8-0.2-0.1-0.1-0.1-0.1l0.1-0.1v-0.1h0.1l0.1-0.1h0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1l0.1 0.1 0.1 0.1s0 0.1 0.1 0.1v0.1 0.2l-0.3 6.1z"></path>
|
||||
<path d="m94.5 81.6c-0.2-0.4-0.7-0.7-1.2-0.7-0.2 0-0.5 0.1-0.7 0.2-0.7 0.4-0.9 1.2-0.5 1.9l2.9 5c0.1 0.2 0.3 0.4 0.5 0.5s0.5 0.2 0.7 0.2 0.5-0.1 0.7-0.2c0.3-0.2 0.5-0.5 0.6-0.8 0.1-0.4 0-0.7-0.1-1.1l-2.9-5zm2.1 6.4c-0.1 0-0.1 0.1-0.2 0.1h-0.1-0.1-0.1-0.1c-0.1 0-0.1 0-0.2-0.1l-0.3-0.3-2.9-5c-0.2-0.4-0.1-0.9 0.3-1.1 0.1 0 0.1-0.1 0.2-0.1h0.1 0.1 0.1 0.2c0.1 0 0.1 0 0.2 0.1l0.1 0.1s0.1 0.1 0.1 0.2l2.9 5c0.3 0.4 0.1 0.9-0.3 1.1z"></path>
|
||||
<path d="m101.5 81.5l-5-2.9c-0.2-0.1-0.4-0.2-0.7-0.2-0.5 0-0.9 0.3-1.1 0.7-0.2 0.3-0.2 0.7-0.1 1s0.3 0.6 0.6 0.8l5 2.9c0.2 0.1 0.4 0.2 0.7 0.2 0.5 0 0.9-0.3 1.1-0.7 0.3-0.6 0.1-1.4-0.5-1.8zm0.1 1.6c0 0.1-0.1 0.1-0.1 0.2l-0.1 0.1c-0.1 0-0.1 0.1-0.2 0.1h-0.2-0.1-0.1-0.1c-0.1 0-0.1 0-0.2-0.1l-5-2.9c-0.4-0.2-0.5-0.7-0.3-1.1 0-0.1 0.1-0.1 0.1-0.2l0.1-0.1c0.1 0 0.1-0.1 0.2-0.1h0.2 0.1 0.1 0.1c0.1 0 0.1 0 0.2 0.1l5 2.9c0.4 0.2 0.5 0.7 0.3 1.1z"></path>
|
||||
<path d="m102.5 75.1h-5.8c-0.7 0-1.2 0.6-1.2 1.2 0 0.4 0.2 0.9 0.6 1.1 0.2 0.1 0.4 0.2 0.6 0.2h5.8c0.7 0 1.2-0.6 1.2-1.2 0.1-0.7-0.5-1.3-1.2-1.3zm0 2.1h-5.8c-0.1 0-0.3 0-0.4-0.1-0.2-0.1-0.4-0.4-0.4-0.7v-0.2-0.1-0.1l0.1-0.1v-0.1h0.1l0.1-0.1h0.1 0.1 0.1 0.1 0.1 0.1 5.8 0.1 0.1 0.1 0.1 0.1 0.1l0.1 0.1h0.1l0.1 0.1v0.1 0.1 0.1 0.1 0.2c-0.1 0.3-0.5 0.7-1 0.7z"></path>
|
||||
<path d="m94.7 72.7c-0.1 0.3 0 0.6 0.1 0.9 0.1 0.2 0.3 0.3 0.4 0.4 0.2 0.1 0.4 0.2 0.6 0.2s0.4-0.1 0.6-0.2l5-2.9c0.3-0.2 0.5-0.4 0.6-0.7s0-0.6-0.1-0.9c-0.2-0.4-0.6-0.6-1-0.6-0.2 0-0.4 0.1-0.6 0.2l-5 2.9c-0.4 0.1-0.6 0.3-0.6 0.7zm5.7-3.3c0.1 0 0.1-0.1 0.2-0.1h0.1 0.1 0.1 0.2c0.1 0 0.1 0 0.2 0.1l0.1 0.1s0.1 0.1 0.1 0.2c0.2 0.4 0.1 0.9-0.3 1.1l-5 2.9c-0.1 0-0.1 0.1-0.2 0.1h-0.1-0.1-0.1-0.1c-0.1 0-0.1 0-0.2-0.1l-0.3-0.3c-0.2-0.4-0.1-0.9 0.3-1.1l5-2.9z"></path>
|
||||
</g>
|
||||
</switch>
|
||||
</svg>
|
After Width: | Height: | Size: 6.6 KiB |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="144" height="144" viewBox="0 0 144 144" class="icon stroked icon-box-closed "><path fill="none" stroke="#666" stroke-width="2px" class="long" d="m 73.09,73.45 0.1,39.45 M 72.26,41.78 40.66,57.4 73.09,73.45 103.9,57.4 z m -31.6,15.62 0,40.3 32.53,15.2 30.71,-16.1 0,-39.4" /><path fill="none" stroke="#666" stroke-width="2px" class="short" d="m 69.34,106.6 0,-14.74 m 19.94,8.84 11.12,-6.04 0,-9.64 M 86.94,49.47 56.59,65.19"/></svg>
|
After Width: | Height: | Size: 482 B |
After Width: | Height: | Size: 573 KiB |
|
@ -0,0 +1,94 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363) -->
|
||||
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="400px" height="162.542px" viewBox="-134 -54.452 400 162.542" enable-background="new -134 -54.452 400 162.542" xml:space="preserve">
|
||||
<g id="layer1_1_" transform="translate(400.89 -415.98)">
|
||||
<g id="g3187_1_">
|
||||
<g id="g6186_1_" transform="matrix(1.6755 0 0 -1.6917 -334.84 486.75)">
|
||||
<path id="path6188_1_" fill="#EF2E32" d="M-80.838,32.61c0-4.385,1.17-7.853,3.512-10.401c2.4-2.58,5.567-3.875,9.5-3.875
|
||||
c3.963,0,7.13,1.276,9.5,3.828c2.37,2.55,3.558,5.96,3.558,10.225c0,4.263-1.185,7.669-3.558,10.223
|
||||
c-2.403,2.582-5.57,3.869-9.5,3.869c-3.873,0-7.013-1.287-9.412-3.869C-79.638,40.026-80.838,36.691-80.838,32.61
|
||||
M-91.195,32.792c0,6.333,2.264,11.724,6.801,16.165c4.533,4.443,10.054,6.665,16.57,6.665c6.542,0,12.097-2.237,16.661-6.71
|
||||
c4.503-4.475,6.754-9.966,6.754-16.48c0-6.574-2.266-12.083-6.8-16.528c-4.564-4.413-10.164-6.619-16.794-6.619
|
||||
c-6.576,0-12.084,2.251-16.528,6.754C-88.977,20.482-91.195,26.068-91.195,32.792"></path>
|
||||
</g>
|
||||
<path id="path6194_1_" fill="#FFFFFF" d="M-338.385,366.142c-2.361,0-4.363,0.888-6.058,2.627
|
||||
c-1.697,1.734-2.555,3.803-2.555,6.191c0,2.513,0.861,4.628,2.555,6.372c1.694,1.743,3.725,2.628,6.125,2.628
|
||||
s4.436-0.885,6.092-2.628c1.695-1.737,2.521-3.83,2.521-6.3c0-2.462-0.826-4.563-2.521-6.256
|
||||
C-333.929,367.033-335.985,366.145-338.385,366.142L-338.385,366.142L-338.385,366.142z M-346.649,392.456v76.282h16.594v-76.282
|
||||
H-346.649L-346.649,392.456z"></path>
|
||||
<path id="path6196_1_" fill="#FFFFFF" d="M-211.319,468.735h-16.596v-76.282h16.596V468.735L-211.319,468.735z M-228.261,374.951
|
||||
c0-2.388,0.846-4.457,2.536-6.2c1.695-1.734,3.72-2.607,6.081-2.607c2.397,0,4.445,0.873,6.135,2.607
|
||||
c1.689,1.705,2.539,3.788,2.539,6.256c0,2.468-0.85,4.575-2.539,6.315c-1.651,1.743-3.679,2.613-6.075,2.613
|
||||
c-2.403,0-4.445-0.87-6.138-2.613C-227.415,379.583-228.261,377.458-228.261,374.951"></path>
|
||||
<g id="g6447_1_" transform="matrix(.99955 0 0 1.023 -1053.6 -130.43)">
|
||||
<g id="text6218_1_">
|
||||
<path id="path844_1_" fill="#FFFFFF" d="M538.206,492.142c0-1.77-0.24-3.347-0.72-4.715c-0.457-1.391-1.112-2.575-1.966-3.532
|
||||
c-0.836-0.978-1.846-1.715-3.03-2.213c-1.164-0.524-2.454-0.784-3.869-0.784c-1.438,0-2.749,0.26-3.93,0.784
|
||||
c-1.189,0.524-2.206,1.267-3.061,2.251c-0.851,0.957-1.518,2.132-1.997,3.526c-0.455,1.395-0.689,2.977-0.689,4.747
|
||||
c0,1.765,0.231,3.347,0.689,4.747c0.479,1.371,1.134,2.549,1.97,3.529c0.851,0.958,1.864,1.693,3.024,2.213
|
||||
c1.184,0.5,2.5,0.749,3.933,0.749c1.415,0,2.715-0.261,3.902-0.781c1.186-0.524,2.208-1.258,3.059-2.216
|
||||
c0.848-0.978,1.506-2.164,1.966-3.558C537.966,495.486,538.206,493.904,538.206,492.142z M533.712,492.205
|
||||
c0,2.222-0.467,3.925-1.406,5.117c-0.915,1.183-2.142,1.779-3.681,1.779c-1.54,0-2.784-0.607-3.747-1.817
|
||||
c-0.956-1.203-1.436-2.919-1.436-5.143c0-2.228,0.457-3.934,1.374-5.126c0.935-1.18,2.174-1.779,3.711-1.779
|
||||
c1.539,0,2.787,0.608,3.748,1.817C533.232,488.259,533.712,489.978,533.712,492.205L533.712,492.205z"></path>
|
||||
<path id="path846_1_" fill="#FFFFFF" d="M560.305,488.17c0-1.163-0.193-2.172-0.591-3.026c-0.394-0.873-0.94-1.603-1.625-2.19
|
||||
c-0.684-0.584-1.483-1.004-2.402-1.279c-0.915-0.289-1.879-0.434-2.9-0.434h-9.551v21.846h4.37v-7.741h4.808
|
||||
c1.125,0,2.164-0.133,3.122-0.405c0.979-0.272,1.821-0.697,2.527-1.278c0.706-0.59,1.261-1.322,1.655-2.219
|
||||
C560.109,490.536,560.305,489.44,560.305,488.17z M555.805,488.268c0,1.892-1.039,2.838-3.122,2.838h-5.086v-5.621h5.024
|
||||
c0.976,0,1.745,0.229,2.313,0.686C555.521,486.614,555.805,487.31,555.805,488.268L555.805,488.268z"></path>
|
||||
<path id="path848_1_" fill="#FFFFFF" d="M580.876,503.093v-4.279h-11.267v-5.268h6.272v-4.247h-6.272v-3.778h10.796v-4.276
|
||||
H565.24v21.846H580.876z"></path>
|
||||
<path id="path850_1_" fill="#FFFFFF" d="M604.006,503.093v-21.846h-4.312v9.24c0,0.312,0,0.694,0,1.154
|
||||
c0.021,0.46,0.034,0.923,0.034,1.406c0,0.457,0,0.894,0,1.304c0.021,0.402,0.029,0.697,0.029,0.911
|
||||
c-0.145-0.292-0.376-0.671-0.691-1.125c-0.29-0.48-0.573-0.925-0.839-1.342l-7.742-11.548H586.3v21.849h4.312v-9.612
|
||||
c0-0.313-0.009-0.697-0.034-1.154c0-0.463,0-0.923,0-1.374c0-0.477-0.012-0.917-0.032-1.311c0-0.413,0-0.732,0-0.934
|
||||
c0.145,0.286,0.365,0.674,0.654,1.154c0.316,0.457,0.602,0.894,0.876,1.307l8.02,11.927L604.006,503.093L604.006,503.093z"></path>
|
||||
</g>
|
||||
<g id="text6222_1_">
|
||||
<path id="path833_1_" fill="#FFFFFF" d="M623.891,497.352c0-0.81-0.104-1.533-0.313-2.152c-0.206-0.622-0.564-1.195-1.06-1.715
|
||||
c-0.48-0.524-1.125-0.998-1.933-1.438c-0.816-0.44-1.825-0.874-3.032-1.308c-1.103-0.396-1.997-0.758-2.684-1.094
|
||||
c-0.668-0.338-1.189-0.668-1.562-0.998c-0.375-0.356-0.623-0.705-0.747-1.062c-0.128-0.373-0.188-0.789-0.188-1.241
|
||||
c0-0.437,0.069-0.851,0.214-1.218c0.17-0.402,0.419-0.738,0.749-1.036c0.354-0.286,0.8-0.521,1.346-0.683
|
||||
c0.539-0.185,1.184-0.286,1.934-0.286c1.1,0,2.052,0.179,2.839,0.538c0.811,0.333,1.609,0.83,2.4,1.495l1.563-1.903
|
||||
c-0.918-0.729-1.893-1.302-2.935-1.718c-1.018-0.413-2.257-0.625-3.716-0.625c-1.021,0-1.954,0.125-2.81,0.376
|
||||
c-0.833,0.249-1.549,0.625-2.154,1.123c-0.579,0.48-1.039,1.062-1.369,1.747c-0.335,0.689-0.5,1.475-0.5,2.343
|
||||
c0,0.796,0.106,1.493,0.312,2.092c0.23,0.602,0.585,1.154,1.06,1.655c0.5,0.477,1.146,0.934,1.936,1.371
|
||||
c0.812,0.416,1.809,0.836,2.997,1.247c0.999,0.356,1.829,0.709,2.497,1.062c0.663,0.333,1.196,0.671,1.593,1.03
|
||||
c0.416,0.35,0.709,0.735,0.873,1.154c0.17,0.42,0.249,0.873,0.249,1.371c0,1.169-0.428,2.077-1.279,2.751
|
||||
c-0.833,0.665-1.979,0.992-3.43,0.992c-1.125,0-2.164-0.237-3.125-0.717c-0.957-0.477-1.852-1.114-2.682-1.906l-1.624,1.814
|
||||
c0.876,0.873,1.936,1.606,3.185,2.19c1.269,0.561,2.652,0.842,4.151,0.842c1.146,0,2.165-0.157,3.059-0.469
|
||||
c0.897-0.313,1.654-0.738,2.275-1.279c0.623-0.544,1.097-1.186,1.406-1.941C623.721,499.003,623.891,498.208,623.891,497.352z"></path>
|
||||
<path id="path835_1_" fill="#FFFFFF" d="M645.46,503.093v-21.846h-2.437v9.332h-10.867v-9.332h-2.437v21.846h2.437v-10.298
|
||||
h10.867v10.298H645.46z"></path>
|
||||
<path id="path837_1_" fill="#FFFFFF" d="M654.573,503.093v-21.846h-2.437v21.846H654.573z"></path>
|
||||
<path id="path839_1_" fill="#FFFFFF" d="M674.082,483.458v-2.21h-12.831v21.846h2.437v-10.171h5.993v-2.219h-5.993v-7.237
|
||||
h10.394V483.458z"></path>
|
||||
<path id="path841_1_" fill="#FFFFFF" d="M693.094,483.458v-2.21h-15.297v2.21h6.43v19.636h2.437v-19.636H693.094z"></path>
|
||||
</g>
|
||||
</g>
|
||||
<path id="path6212_1_" fill="#FFFFFF" d="M-279.021,392.657c-10.917,0-20.18,3.723-27.776,11.239
|
||||
c-7.597,7.511-11.381,16.667-11.381,27.379c0,11.375,3.72,20.795,11.165,28.314c7.445,7.617,16.69,11.455,27.705,11.455
|
||||
c4.978,0,9.588-0.778,13.873-2.27l5.439,8.422c7.62,11.802,7.511,20.23-0.326,25.255c-2.592,1.669-13.917,6.333-14.051,6.052
|
||||
l7.274,15.566c15.062-2.717,44.194-19.846,26.261-48.637l-10.191-15.778c7.486-7.487,11.239-16.729,11.239-27.776
|
||||
c0-11.017-3.768-20.31-11.311-27.876C-258.741,396.442-268.057,392.66-279.021,392.657L-279.021,392.657z M-279.021,408.11
|
||||
c6.587,0,11.899,2.187,15.921,6.555c3.975,4.317,5.942,10.082,5.942,17.291c0,7.212-1.962,12.977-5.942,17.291
|
||||
c-3.975,4.317-9.277,6.448-15.921,6.448c-6.588,0-11.899-2.148-15.921-6.52c-3.921-4.314-5.874-10.191-5.874-17.61
|
||||
c0-6.904,1.994-12.527,6.016-16.895C-290.779,410.303-285.506,408.11-279.021,408.11L-279.021,408.11z"></path>
|
||||
<path id="path3058_1_" fill="#FFFFFF" d="M-166.272,391.517c-0.506,0.012-1.007,0.033-1.501,0.065
|
||||
c-0.988,0.077-1.947,0.207-2.894,0.396c-0.048,0.012-0.095,0.033-0.143,0.042c-0.426,0.083-0.84,0.177-1.252,0.29
|
||||
c-12.1,2.788-23.926,12.816-23.887,29.083l-0.039,47.346h16.928v-38.433c0-13.971,4.533-21.017,13.601-21.144
|
||||
c9.073,0.127,13.604,7.167,13.604,21.144v38.433h16.966l-0.035-47.346c0.041-16.252-11.802-26.287-23.891-29.083
|
||||
c-0.471-0.11-0.92-0.237-1.391-0.323c-0.944-0.189-1.938-0.316-2.927-0.399c-0.023-0.003-0.054,0.003-0.071,0
|
||||
c-0.479-0.042-0.947-0.056-1.429-0.065c-0.039-0.003-0.068,0-0.107,0C-165.255,391.506-165.769,391.506-166.272,391.517
|
||||
L-166.272,391.517z"></path>
|
||||
<g id="g3052_1_" transform="matrix(1.7114 0 0 -1.6897 -271.86 477.92)">
|
||||
<path id="path3054_1_" fill="#FFFFFF" d="M-73.52,33.444C-73.554,46.727-60.081,53-51.314,50.664l-0.027-10.2
|
||||
c0,0.184-1.952,0.228-3.782,0.228c-5.524,0-8.285-4.173-8.285-12.519V5.433h-10.134"></path>
|
||||
</g>
|
||||
</g>
|
||||
<g id="g3068_1_" transform="translate(-1055.2 -136.88)">
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 8.4 KiB |
After Width: | Height: | Size: 192 KiB |
After Width: | Height: | Size: 10 KiB |
2865
2016/05-Container_past_present_future-coreosfest-de/index.html
Normal file
|
@ -0,0 +1,16 @@
|
|||
/* Generated by Font Squirrel (http://www.fontsquirrel.com) on May 10, 2013 */
|
||||
|
||||
@font-face {
|
||||
font-family: 'Asul';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url('asul-regular.woff') format('woff'),
|
||||
url('asul-regular.ttf') format('truetype');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Asul';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
src: url('asul-bold.woff') format('woff'),
|
||||
url('asul-bold.ttf') format('truetype');
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
/* Generated by Font Squirrel (http://www.fontsquirrel.com) on May 10, 2013 */
|
||||
|
||||
@font-face {
|
||||
font-family: 'Cabin Sketch';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url('cabinsketch-regular.woff') format('woff'),
|
||||
url('cabinsketch-regular.ttf') format('truetype');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Cabin Sketch';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
src: url('cabinsketch-regular.woff') format('woff'),
|
||||
url('cabinsketch-regular.ttf') format('truetype');
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
/* Generated by Font Squirrel (http://www.fontsquirrel.com) on May 10, 2013 */
|
||||
|
||||
@font-face {
|
||||
font-family: 'Josefin Sans';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url('josefinsans-regular.woff') format('woff'),
|
||||
url('josefinsans-regular.ttf') format('truetype');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Josefin Sans';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
src: url('josefinsans-bold.woff') format('woff'),
|
||||
url('josefinsans-bold.ttf') format('truetype');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Josefin Sans';
|
||||
font-style: italic;
|
||||
font-weight: 400;
|
||||
src: url('josefinsans-italic.woff') format('woff'),
|
||||
url('josefinsans-italic.ttf') format('truetype');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Josefin Sans';
|
||||
font-style: italic;
|
||||
font-weight: 700;
|
||||
src: url('josefinsans-bolditalic.woff') format('woff'),
|
||||
url('josefinsans-bolditalic.ttf') format('truetype');
|
||||
}
|