Skip to content

Instantly share code, notes, and snippets.

View xigang's full-sized avatar
🎾
/*happy coding*/

Xigang Wang xigang

🎾
/*happy coding*/
View GitHub Profile
@xigang
xigang / MarshalJSON.go
Created April 10, 2017 07:10
MarshalJSON will marshal v to JSON. Pretty prints if pretty is true.
// MarshalJSON will marshal v to JSON. Pretty prints if pretty is true.
func MarshalJSON(v interface{}, pretty bool) []byte {
var b []byte
var err error
if pretty {
b, err = json.MarshalIndent(v, "", " ")
} else {
b, err = json.Marshal(v)
}
@xigang
xigang / mkdir.go
Created April 6, 2017 06:54
Create the data dir if not exists
if f, err := os.Stat(s.dataDir); err != nil && os.IsNotExist(err) {
if err := os.Mkdir(s.dataDir, 0755); err != nil {
return errors.Wrapf(err, "data_dir %s does not exist, failed to create it", s.dataDir)
}
} else if !f.IsDir() {
return fmt.Errorf("path data_dir %s exists and is not a directory", s.dataDir)
}
@xigang
xigang / inventory_replcacer.go
Created April 5, 2017 09:29 — forked from reiki4040/inventory_replcacer.go
replace inventory file block for tool.
package main
import (
"bufio"
"fmt"
"io/ioutil"
"os"
"strings"
)
@xigang
xigang / signal.go
Created January 23, 2017 02:11
golang对信号的处理
//code copy kapacitor
signalCh := make(chan os.Signal, 1)
signal.Notify(signalCh, os.Interrupt, syscall.SIGTERM)
m.Logger.Println("I! Listening for signals")
// Block until one of the signals above is received
select {
case <-signalCh:
m.Logger.Println("I! Signal received, initializing clean shutdown...")
@xigang
xigang / getlocalIP.go
Created December 16, 2016 06:59
获取本地ip地址
package main
import (
"fmt"
"net"
"sort"
"strings"
)
func main() {
@xigang
xigang / copyfile.go
Created December 13, 2016 14:07
拷贝文件
func CopyFile(src, dst string) (int64, error) {
if src == dst {
return 0, nil
}
sf, err := os.Open(src)
if err != nil {
return 0, err
}
defer sf.Close()
@xigang
xigang / isURLAndIsGIT.go
Created December 7, 2016 03:20
utils.go
func IsURL(str string) bool {
return strings.HasPrefix(str, "http://") || strings.HasPrefix(str, "https://")
}
func IsGIT(str string) bool {
return strings.HasPrefix(str, "git://") || strings.HasPrefix(str, "github.com/") || strings.HasPrefix(str, "[email protected]:") || (strings.HasSuffix(str, ".git") && IsURL(str))
}
@xigang
xigang / client.go
Created December 5, 2016 13:58 — forked from spikebike/client.go
TLS server and client
package main
import (
"crypto/tls"
"crypto/x509"
"fmt"
"io"
"log"
)
@xigang
xigang / golang-tls.md
Created December 5, 2016 13:53 — forked from denji/golang-tls.md
Simple Golang HTTPS/TLS Examples
Generate private key (.key)
# Key considerations for algorithm "RSA" ≥ 2048-bit
openssl genrsa -out server.key 2048
    
# Key considerations for algorithm "ECDSA" ≥ secp384r1
# List ECDSA the supported curves (openssl ecparam -list_curves)
openssl ecparam -genkey -name secp384r1 -out server.key
@xigang
xigang / getDomainNameFromIp.go
Created December 5, 2016 03:18
Get domain name from IP address in Go
package main
import (
"fmt"
"net"
)
func main() {
// obtained from ping -c 1 stackoverflow.com, should print "stackoverflow.com"
addr, err := net.LookupAddr("198.252.206.16")