Compare commits
26 Commits
master
...
4b3f853072
| Author | SHA1 | Date | |
|---|---|---|---|
| 4b3f853072 | |||
|
6e5d19ecfa
|
|||
|
a4c3780719
|
|||
| 4f2c59ee37 | |||
| c227dbbad0 | |||
| 1d7bb032f3 | |||
| 05c6becee4 | |||
|
c74b861442
|
|||
|
599ccd2881
|
|||
|
b191a9e5d4
|
|||
|
e98d4ffbac
|
|||
|
f067b0200b
|
|||
| e2814b08e1 | |||
|
2f33669330
|
|||
|
cee27356f6
|
|||
|
f358103f79
|
|||
|
4c51ade750
|
|||
|
0d2d466dac
|
|||
|
8cc2a71235
|
|||
|
fa026b7eda
|
|||
|
7bc84ab8a3
|
|||
|
e59538a3bd
|
|||
|
a9f7fd7f75
|
|||
|
3adc7ce3a7
|
|||
|
131e9a1c3f
|
|||
|
|
44871e36ff |
4
Makefile
4
Makefile
@@ -7,14 +7,10 @@ help: ## Print the help message
|
|||||||
# Search should not include slides separated by '***', as those are for mdp, not pandoc.
|
# Search should not include slides separated by '***', as those are for mdp, not pandoc.
|
||||||
markdown != find slides/ -maxdepth 2 -type f -name "*.md" -exec grep -LF '***' '{}' ';'
|
markdown != find slides/ -maxdepth 2 -type f -name "*.md" -exec grep -LF '***' '{}' ';'
|
||||||
pdfs = $(patsubst %.md, %.pdf, $(markdown))
|
pdfs = $(patsubst %.md, %.pdf, $(markdown))
|
||||||
handouts = $(patsubst %.md, %_handout.pdf, $(markdown))
|
|
||||||
|
|
||||||
$(pdfs): %.pdf: %.md
|
$(pdfs): %.pdf: %.md
|
||||||
pandoc -t beamer -V theme:Warsaw -i $< -o $@
|
pandoc -t beamer -V theme:Warsaw -i $< -o $@
|
||||||
|
|
||||||
$(handouts): %_handout.pdf: %.md
|
|
||||||
pandoc -t beamer -V handout -V theme:Warsaw -i $< -o $@
|
|
||||||
|
|
||||||
.PHONY: pdfs
|
.PHONY: pdfs
|
||||||
pdfs: $(pdfs) ## Generate all pdfs (try `make -j pdfs`)
|
pdfs: $(pdfs) ## Generate all pdfs (try `make -j pdfs`)
|
||||||
|
|
||||||
|
|||||||
@@ -1,40 +0,0 @@
|
|||||||
## init
|
|
||||||
|
|
||||||
```sh
|
|
||||||
go mod tidy
|
|
||||||
go mod init hello
|
|
||||||
```
|
|
||||||
|
|
||||||
## Build
|
|
||||||
|
|
||||||
```sh
|
|
||||||
go build .
|
|
||||||
go tool dist list ## list arch
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
## Types
|
|
||||||
|
|
||||||
int32,ing64,
|
|
||||||
int -> depends on arch
|
|
||||||
rune -> utf char
|
|
||||||
string -> array of runes
|
|
||||||
|
|
||||||
|
|
||||||
### Other
|
|
||||||
|
|
||||||
```sh
|
|
||||||
ldd ./hello
|
|
||||||
ls -lah
|
|
||||||
strip hello
|
|
||||||
```
|
|
||||||
|
|
||||||
[online compiler](https://godbolt.org)
|
|
||||||
|
|
||||||
|
|
||||||
### Notes
|
|
||||||
|
|
||||||
- standard lib is huge
|
|
||||||
|
|
||||||
- [beginer go](https://gobyexample.com/)
|
|
||||||
- [advanced go](https://go.dev/ref/spec)
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
module hello
|
|
||||||
|
|
||||||
go 1.24.3
|
|
||||||
|
|
||||||
require github.com/radovskyb/watcher v1.0.7 // indirect
|
|
||||||
BIN
slides/go/hello
BIN
slides/go/hello
Binary file not shown.
@@ -1,62 +0,0 @@
|
|||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"net/http"
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
type Point struct {
|
|
||||||
x int
|
|
||||||
y int
|
|
||||||
}
|
|
||||||
|
|
||||||
type Boja int
|
|
||||||
|
|
||||||
const (
|
|
||||||
plava = iota //asc
|
|
||||||
zuta
|
|
||||||
crvena
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
|
||||||
plava = iota << 1
|
|
||||||
zuta // 010
|
|
||||||
crvena // 100
|
|
||||||
)
|
|
||||||
|
|
||||||
type Vektor2d struct {
|
|
||||||
x int
|
|
||||||
y int
|
|
||||||
}
|
|
||||||
|
|
||||||
type Vektor3d struct {
|
|
||||||
x ,y, z int
|
|
||||||
}
|
|
||||||
|
|
||||||
type(p Point) D
|
|
||||||
|
|
||||||
|
|
||||||
type Vektor interface {
|
|
||||||
Duzina() float32
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
|
|
||||||
p:= Vektor2d[
|
|
||||||
x:1,
|
|
||||||
y:1
|
|
||||||
]
|
|
||||||
|
|
||||||
fmt.Println(p.)
|
|
||||||
// web server
|
|
||||||
|
|
||||||
http.HandleFunc("/", a )
|
|
||||||
http.ListenAndServe(":8080", nil)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func a(w http.ResponseWriter, r *http.Request){
|
|
||||||
w.Write([]byte("Hello Web"))
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
//go:build exclude
|
|
||||||
package main
|
|
||||||
|
|
||||||
import "fmt"
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
|
|
||||||
var a int
|
|
||||||
var s string = "hello world " + "!!!"
|
|
||||||
|
|
||||||
var c = 5
|
|
||||||
|
|
||||||
a = a + 1
|
|
||||||
|
|
||||||
b := 1
|
|
||||||
b := []byte(a)
|
|
||||||
c := string(b)
|
|
||||||
|
|
||||||
_ = b
|
|
||||||
_ = c
|
|
||||||
|
|
||||||
fmt.Println("Hello Wordl", "qwe")
|
|
||||||
fmt.Println(s)
|
|
||||||
|
|
||||||
{
|
|
||||||
d = d
|
|
||||||
}
|
|
||||||
|
|
||||||
d := 5
|
|
||||||
f(d)
|
|
||||||
fmt.Println(a, "1")
|
|
||||||
|
|
||||||
|
|
||||||
// std lib
|
|
||||||
a : = []byte{1,2,3,4}
|
|
||||||
fmt.Println(hex.EncodeToString(a))
|
|
||||||
|
|
||||||
crypto.MD5.New()
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
func f(str *int) {
|
|
||||||
a=1
|
|
||||||
}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
//go:build exclude
|
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"net/http"
|
|
||||||
)
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
|
|
||||||
// web server
|
|
||||||
|
|
||||||
http.HandleFunc("/", a )
|
|
||||||
http.ListenAndServe(":8080", nil)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func a(w http.ResponseWriter, r *http.Request){
|
|
||||||
w.Write([]byte("Hello Web"))
|
|
||||||
}
|
|
||||||
|
|
||||||
Binary file not shown.
@@ -1,3 +0,0 @@
|
|||||||
module dmz
|
|
||||||
|
|
||||||
go 1.25.1
|
|
||||||
@@ -1,100 +0,0 @@
|
|||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/json"
|
|
||||||
"html/template"
|
|
||||||
"fmt"
|
|
||||||
"net/http"
|
|
||||||
// "github.com/radovskyb/watcher"
|
|
||||||
)
|
|
||||||
|
|
||||||
func main(){
|
|
||||||
// w := watcher.New()
|
|
||||||
port := ":8080"
|
|
||||||
http.HandleFunc("/{$}", HtmlContentMiddleware(HomeHandler))
|
|
||||||
http.HandleFunc("/about", HtmlContentMiddleware(AboutHandler))
|
|
||||||
http.HandleFunc("GET /api", HtmlContentMiddleware(ApiHandler))
|
|
||||||
http.HandleFunc("POST /api", HtmlContentMiddleware(ApiHandler))
|
|
||||||
http.HandleFunc("/", NotFoundHandler)
|
|
||||||
|
|
||||||
fmt.Println("http://localhost"+port)
|
|
||||||
http.ListenAndServe(port, nil)
|
|
||||||
}
|
|
||||||
|
|
||||||
type handleFunc func(w http.ResponseWriter, r *http.Request)
|
|
||||||
|
|
||||||
func HtmlContentMiddleware(f handleFunc) handleFunc {
|
|
||||||
return func(w http.ResponseWriter, r *http.Request){
|
|
||||||
w.Header().Add("Content-Type", "text/html")
|
|
||||||
f(w,r)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
func HomeHandler(w http.ResponseWriter, r *http.Request){
|
|
||||||
|
|
||||||
// data := struct{
|
|
||||||
// Name string
|
|
||||||
// }{
|
|
||||||
// Name: "Coja",
|
|
||||||
// }
|
|
||||||
|
|
||||||
temp := template.New("home")
|
|
||||||
temp.Parse(baseTemplate)
|
|
||||||
temp.Execute(w,messages)
|
|
||||||
|
|
||||||
// home := "<html><body><i>Hello world</i></body></html>"
|
|
||||||
// w.Header().Add("Content-Type", "text/html")
|
|
||||||
|
|
||||||
w.Write(temp)
|
|
||||||
}
|
|
||||||
|
|
||||||
func AboutHandler(w http.ResponseWriter, r *http.Request){
|
|
||||||
// w.Header().Add("Content-Type", "text/html")
|
|
||||||
w.Write([]byte("about"))
|
|
||||||
}
|
|
||||||
|
|
||||||
func NotFoundHandler(w http.ResponseWriter, r *http.Request){
|
|
||||||
// w.Header().Add("Content-Type", "text/html")
|
|
||||||
w.WriteHeader(http.StatusNotFound)
|
|
||||||
w.Write([]byte("404 Not Found"))
|
|
||||||
}
|
|
||||||
|
|
||||||
func ApiHandler(w http.ResponseWriter, r *http.Request){
|
|
||||||
w.Header().Add("Content-Type", "application/json")
|
|
||||||
w.WriteHeader(http.StatusNotFound)
|
|
||||||
// w.Write([]byte("[1,2,3]"))
|
|
||||||
var filteredMessages []Message
|
|
||||||
userParam := r.URL.Query().Get("user")
|
|
||||||
|
|
||||||
if userParam != ""{
|
|
||||||
for _ ,m:=range messages {
|
|
||||||
if userParam == m.User{
|
|
||||||
filteredMessages = append(filteredMessages, m)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else{
|
|
||||||
filteredMessages = messages
|
|
||||||
}
|
|
||||||
json.NewEncoder(w).Encode(filteredMessages)
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewMessageHandler(w http.ResponseWriter, r *http.Request){
|
|
||||||
|
|
||||||
var message Message
|
|
||||||
|
|
||||||
err := json.NewDecoder(r.Body).Decode(&message)
|
|
||||||
userParam := r.URL.Query().Get("user")
|
|
||||||
|
|
||||||
if err != nil{
|
|
||||||
w.WriteHeader(http.StatusBadRequest)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if userParam != ""{
|
|
||||||
w.WriteHeader(http.StatusBadRequest)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// messages.append(messages, message)
|
|
||||||
}
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
package main
|
|
||||||
|
|
||||||
type Message struct {
|
|
||||||
Content string
|
|
||||||
User string
|
|
||||||
}
|
|
||||||
|
|
||||||
var messages []Message = []Message {
|
|
||||||
{
|
|
||||||
Content: "hi",
|
|
||||||
User: "dmz",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Content: "hello",
|
|
||||||
User: "admin",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Content: "sup?",
|
|
||||||
User: "dmz",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Content: "s3nd nud3s",
|
|
||||||
User: "admin",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
package main
|
|
||||||
|
|
||||||
var baseTemplate =`
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Home</title>
|
|
||||||
<style>
|
|
||||||
p {
|
|
||||||
background-color: #f4f4f4;
|
|
||||||
border-radius: 5px;
|
|
||||||
}
|
|
||||||
</syle>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
{{range .}}
|
|
||||||
<p>{{.Content}} {{.Name}}</p>
|
|
||||||
{{end}}
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
`
|
|
||||||
Reference in New Issue
Block a user