Skip to content

Instantly share code, notes, and snippets.

View alexniver's full-sized avatar
🏠
Working from home

alexniver

🏠
Working from home
View GitHub Profile
@alexniver
alexniver / using gvm.md
Last active February 20, 2018 20:30
using gvm

install

bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)

using golang version 1.5.1, golang 1.5+ need 1.4 environment

gvm install go1.4
gvm use go1.4
gvm install go1.5.1
@alexniver
alexniver / golang, ubuntu go get in china.md
Last active April 26, 2023 11:15
ubuntu下, 使用shadowsock和Privoxy帮助你在命令行中, 无障碍进行go get

#前言 由于大家都懂的, 国内使用go get的时候, 经常会各种失败, 如果有vpn的话, 打开vpn, 问题就解决了, 但vpn其实挺不灵活的.

相对来说shadowsock则灵活得多.

#解决方案 shadowsock + Privoxy

思路就是, 使用shadowsock建立一个本地sock5代理, 但因为go get 需要http代理, 所以需要使用privoxy把sock5代理转为http代理.

Docker 官方教程, 创建自己的鲸鱼那, 如果使用Ubuntu14.04, 使用文档中的Dockerfile是有问题的. 需要在apt-get 前面加入 DEBIAN_FRONTEND=noninteractive
不然会报错.
效果如下:
```
FROM docker/whalesay:latest
DEBIAN_FRONTEND=noninteractive
@alexniver
alexniver / vitess官方文档中docker的方式总结.MD
Created November 21, 2015 20:04
话说直接按文档走是会有问题的.

###系统: ubuntu14.04阿里云. ###已经安装docker

run continer

docker run -ti vitess/base bash

##pull完,跑起来之后,会进入到命令行. 这时执行命令

@alexniver
alexniver / 0_reuse_code.js
Created November 24, 2015 08:20
Here are some things you can do with Gists in GistBox.
// Use Gists to store code you would like to remember later on
console.log(window); // log the "window" object to the console
根据文章标题, concurrency-is-not-parallelism
看了下视频和PPT, 也看了下例子. 写下大概理解.
concurrency, 是指针对某种场景, 构建一个模型,这个模型可以是串行的, 也可以是并行的,这时的主要设计目标在于设计的模型必须安全,简洁,高效;parallelism则是运行多个这个模型.
拿PPT中烧书的例子, 这里的concurrency是指如何处理烧书这个问题(how to deal this problem), 可以一个人搬书去烧, 也可以两个人搬书去烧. 两个人的情况, 如果两人同时工作, 这时即是concurrency, 也是parall的, 如果两个人串行工作, 则这时便是concurrency但非parallel的.
之后例子中又给出了更好的concurrency模型, 4个人过来 , 1负责往车里放书, 2负责推车去火堆, 3负责把书扔炉子里,4负责把空车运回来. 这时这个问题就构建出了一个比较好的concurrency模型(运行时间为4个人中最慢的那个人的时间),同时这个模型也是parall的.
  1. docker run -it busybox sh ----启动一个continer, i表示允许发送数据,打开tty,效果就是可以使用命令行控制continer, sh表示运行continer之后直接执sh命令
  2. docker run -it --rm busybox sh ----rm表示continer停止后自动删除continer. docker每次run都会新建一个continer
  3. docker restart continerId -------根据continerid重启docker continer
  4. docker run -it --rm -v /home/tom/develop:/busybox/develop busybox sh------ -v /home/tom/develop:/busybox/develop busybox 映射本机文件夹(左边)到continer文件夹(右边), 如果两个文件夹都不存在,则会自动创建, 一个文件夹内创建的文件可以在另一个文件夹内看到. (PS:continer内创建文件,在本机内的权限会是root)
  5. docker run -it --rm -v /home/tom/develop:/busybox/develop -u 1000:1000 busybox sh------ -u 1000:1000 (用户id:组id), 此时如果在continer内创建文件, 本机内生成文件权限则为用户id为1000和组id为1000的用户
  6. docker run -d -p 80 nginx ----- -d表示demon,continer自动后台运行, -p 80 本机随机端口映射continer80端口(可以通过docker ps查看详细端口信息).
  7. docker run -d -p 8080:80 nginx ----- 本机8080端口映射continer 80端口
  8. docker run -it --rm -e http_proxy=http://127.0.0.1:8118 busybox sh ----- -e表示传递一个环境变量, 这里设置了http的代理
  1. 创建一个本地文件夹 mkdir /home/tom/dev/html, 创建一个文件, vi index.html 随便写点儿啥.
  2. docker run -d -p 80:80 -v $(pwd):/usr/local/nginx/html nginx 映射当前html目录到continer的nginx下html目录, 本地80端口映射continer80端口. 后台demon运行

浏览器访问本地80商品, 便可以看到index.html显示到浏览器上了.

假设~/golang/helloworld目录下有helloworld.go文件

cd ~/golang/helloworld
docker run -it --rm -v $(pwd):/go -u 1000:1000 golang:latest go build -o HelloWorld.out