HEWEN's blog 2018-12-15T01:00:13+08:00 wen.bin.he@foxmail.com docker使用 2017-09-28T00:00:00+08:00 HeWen http://ehewen.org/docker
  • chroot
  • namespace
  • cgroup
  • 基本安装见官方文档https://docs.docker.com/
  • 安装完docker,需要把当前用户加到 docker 组
  • sudo usermod -aG docker your_username
    • 镜像加速:
    中科大镜像
    Docker中国官方镜像

    命令

    docker 使用

    docker run -it --rm alpine:3.4
    -it:-i:交互式操作,-t 终端
    --rm:退出后将容器删除。默认情况下,退出的容器并不会删除
    -v 数据卷
    -p
    -d
    
    docker exec
    docker cp
    docker history
    docker pull
    docker commit
    docker login
    docker push
    docker search
    docker ps
    docker images
    docker rm
    docker rmi
    docker start
    docker stop
    docker restart
    docker export
    docker import
    
    docker export 7691a814370e > ubuntu.tar
    cat ubuntu.tar | docker import - test/ubuntu:v1.0

    Dockerfile

    FROM 指定基础镜
    LABEL
    RUN
    ENV key1=value1 key2=value2...
    COPY 源路径 目标路径
    EXPOSE 绑定端口
    #CMD 容器启动命令,容器中的应用都应该以前台执行,多条CMD只会最后一个CMD生效
    CMD ["nginx", "-g", "daemon off;"]
    #Dockerfile中修改hosts不会生效,需要用docker-compose来实现

    构建命令

    docker build --tag=image_name ./

    docker-machine

    docker-machine create -d virtualbox --virtualbox-memory "1024" default

    参考

    • http://www.cnblogs.com/elnino/p/3899136.html
    • https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/
    • http://www.cnblogs.com/elnino/p/3899136.html
    • http://www.runoob.com/docker/docker-tutorial.html
    • http://www.cnblogs.com/sorex/p/6481407.html
    • Docker — 从入门到实践(https://yeasy.gitbooks.io/docker_practice/content/)
    • 自己动手写 docker (https://github.com/xianlubird/mydocker)
    ]]>
    github webhook test 2017-07-31T00:00:00+08:00 HeWen http://ehewen.org/webhook-test github webhook test
    • caddy server download add git plugin
    • caddy config file add
    git your/github/project/path {
        path /your/build/path
        then jekyll build /your/build/path
        hook /webhooks your_github_secret_key
        hook_type github
        clone_args --recursive
        pull_args --recurse-submodules
    }
    • github webhook add you hook path
    ]]>
    移动端web抓包替换调试工具 2016-03-10T02:20:11+08:00 HeWen http://ehewen.org/netProxy 背景

    常规移动端 web 开发,经常会在PC下使用 chrome 来模拟,基本没有太大差别。但日常开发中经常出现场景:

    • 开发的需求经常是微信或 QQ 内打开H5页面,登录使用微信或 QQ 来已有的登录态( QQ 打开使用 QQ 登录态,微信使用微信授权登录),这时PC上无法模拟登录,登录后的流程无法在pc上模拟,会需要在手机端调试;
    • 或者是页面会投放到某些 app 中(使用 QQ 或微信登录,要使用应用中有登录态),但需要开发测试完成后才能加到 app 中( app 没有测试环境入口),这时会替换已有的一些H5页面作为调试的入口;
    • 有时一些使用的移动端 js 库出现异常,无法直接修改调试,但又要对线上文件进行调试。

    在以上开发场景时,没有抓包和页面本地替换来开发调试都十分麻烦。以下介绍下我用过的工具:

    win下的抓包替换调试工具

    fiddler(抓包,代理) + 插件 willow (页面替换和域名hosts设置), win 下使用简单方便, win 下开发组内基本都是用这个。

    mac下的抓包替换调试工具

    charles(收费) 图形化界面,没 fiddler 好用,用了几次不太顺手,关键收费,想免费需破解。

    linux,win,mac通用的抓包替换调试工具

    nproxy(代理)阿里前端大牛写的命令行工具 + wireshark (抓包)图形,linux,macx 下经常使用。

    #nproxy安装:使用npm安装即可[-g 全局安装]
    $ npm install -g nproxy
    #拷贝重定向的文件模板,根据模板做相应修改,命令行下会高亮替换的链接
    $ cp /usr/lib/node_modules/nproxy/replace-rule.sample.js ./
    #常用参数 -p 设置代理端口(默认的监听端口为8989),-l 加载配置文件,-d 开启调试功能, -h 查看命令帮助
    $ nproxy -p 8888 -l replace-rule.sample.js -d
    [INFO] NProxy started on 8888! 
    #显示连接successfully说明手机连接代理成功,就可以调试了.
    [INFO] connect to https server successfully! 
    • 用 wireshark 来抓 http 请求,分析响应的数据。
    • 测试的手机和电脑(要有无线网卡)连到相同网段,手机的代理设置成电脑的 ip 和端口就可以调试了。
    ]]>
    收集的镜像列表 2014-03-09T05:59:12+08:00 HeWen http://ehewen.org/mirros 1.企业贡献:

    ####搜狐开源镜像站:

    2.大学教学(感觉比较全的是清华和科大的镜像):

    ####北京理工大学:

    3.编程镜像

    ####Vagran镜像

    $ gem sources --remove https://rubygems.org/
    $ gem sources -a https://ruby.taobao.org/
    $ gem sources -a http://ruby.taobao.org/
    $ gem sources -l
    https://ruby.taobao.org
    http://ruby.taobao.org
    # 请确保只有 ruby.taobao.org
    $ gem install rails

    ####pipy国内镜像

    ]]>
    Emmet(Zen Coding) 2014-02-09T22:59:12+08:00 HeWen http://ehewen.org/Emmet 前言

    一句话web前台开发必备,捣鼓vim/emacs插件时认识了Emmet,话不多说转个视频.Zencoding for Vim 小演示. img

    参考网址

    ]]>
    开始使用Gentoo 2014-01-27T00:09:12+08:00 HeWen http://ehewen.org/startGentoo 前言

    用了很久的Debain好久没用过其他的系统了,Linux中几个比较特别的archlinux,Gentoo,LFS(主要是定制性强、高性能)也相对不是很好上手。不过archlinux,Gentoo和LFS安装系统时要借助已有的linux(可以一边听着歌一边安装着装系统)或者livecd。这几个系统之前都有用过一段时间,但是基本都是用上几天就不想用了,archlinux和Gentoo是不太适应包管理,LFS完全被虐光安装就要花个两天。Gentoo吸引我的还是高度自定和能得到很高的性能,是个一劳永逸的的活。不过换成Gentoo主要还是因为在知乎上看到有人评价Gentoo说是懒人专用版,冲着这句话果断换了。按我的了解说说Gentoo的特点(可能不太准确),首先Gentoo中所有软件都是通过编译安装(很多人说他不太环保、费电、二氧化碳排放会增多哈,不过不能最大化利用资源不也是浪费么),虽说Gentoo的包管理方式和FreeBSD很类似还是FreeBSD的编译安装更简单些配置编译选项都有个菜单移动键盘上下键选就行了,而且FreeBSD好歹还提供二进制的安装,Gentoo官方只有少部分有二进制的包。其次就是archlinux和Gentoo能滚动升级,这还是满吸引人的(虽说的Debian也可通过配置apt的源来实现滚动升级,但貌似不同版本可能有兼容性问题)。废话就说这么多,前几天就倒腾了转到Gentoo下用了一礼拜了吧,把基本的驱动和常用软件终于搞定了。下面说说我觉得其中比较比较重要的内容哈。 1.编译内核 ============= Gentoo现在安装官方推荐从stage3开始基本的工具都配置好了,不像LFS还要自己编译工具链还是要弄三回。对于我来说Gentoo安装最大困难就是编译内核,不过可以直接用通用的内核,但这样会把大量驱动打成模块,用来支持不同设备导致编译耗时太长。手动配置内核后编译可能会有问题,不过貌似3.x以后的内核貌似编译出问题比2.6.x少了很多,我是这样觉得的。现在内核都3.12了感觉时光飞逝,还要很多要学习。编译内核的配置选项我没没改多少,就是减少了些额外的驱动设备这主要对自己电脑显卡、网卡、声卡型号要有了解就很好选了还有就是文件系统的支持我就选了ext4其他能取消都取消了。其他配置都懒得配了。编译内核倒是没花太多时间,主要是之前弄过很多次了。对于初次编译我想就是大量配置选项不知道要选什么了,要通过kernel的手册对选项要有一些了解还是要花些时间。 2.驱动问题 ============= 我的非主流的设备,我的无线网卡,这次手写板有了之前的折腾倒很简单就搞定了,这是比较烦人的问题。我的无线网卡是Broadcom的BCM4312,之前无线网卡安装按照wireless.kernel.org的对b43网卡的安装步骤进行安装就搞定了。这次郁闷的的很,直接把Broadcom的驱动编译进内核死活无线网卡都没法用,打成模块就很顺利让waln0的网卡up了起来。编译内核还是技术活还是要好好研究。还有就是Gentoo的网络管理方式还真是有点不一样。对wlan0的start、stop,是要在/etc/init.d/net.lo文件建立个net.waln0的软链接来控制。还有就是通过wpa_supplicant来连接无线反应还真是有点慢,重启网卡后要过个几秒钟才连上还总是发出警告信息说是设备没激活。害我以为网卡驱动没弄好折腾好久。 3.make.conf ============= 这是一个对Gentoo格外重要的文件,这其中包含了编译的选项可以针对不同平台优化编译参数。FreeBSD也有这么个文件也是类似的效果。 4.emerge的包管理方式 ============= Gentoo中最不太适应的就是他的包管理,尤其是编译选项同过USE的变量来控制。之前就是搞不定USE选项弄得软件老是装不上,也不知道针对每个软件打什么标签弄得一头雾水。这次认真的看了下Gentoo的帮助文档和wiki总算有了点了解。原来有equery和eix的两个便利的工具可以很方便的查找用emerge安装的软件的各种信息,工具的详细使用方法可以参照Gentoo的wiki的Gentoolkit部分。还有个网站专门来查Gentoo软件中的信息Gentoobrowse.randomdan.homeip.net。这里说些废话,在编译软件中我觉得编译安装吃亏的就是firefox,编译时间太长初次安装比我安装系统时间还长长达2个多小时一堆依赖要装,而且貌似编译后的和官方的二进制版我基本没有感觉什么速度上的优势。还有就是编译桌面环境编译时间费的点时间,是要是安装gnome可先睡会了,桌面环境目前比较喜欢dwm,整个软件就几M大小,依赖少。

    结束语

    安装Gentoo基本就是在了解Linux的过程,也是个不断折腾的过程。

    附:安装记录

    #首先安装gentoo你需要有一个linux环境,fdisk命令建立分区,mkfs.ext4格式化磁盘
    #我设置的比较简单,/dev/sda1大小30G日常使用足够,挂载/目录,/dev/sda2挂载/home目录,启动分区没有单独设置,用了ssd硬盘没有分swap分区.如果使用lvm分区还要有其他设置,参考[gentoo的wiki文档](https://wiki.gentoo.org/wiki/LVM).
    $ sudo fdisk /dev/sda
    Device     Boot    Start       End   Sectors  Size Id Type
    /dev/sda1  *        2048  62916607  62914560   30G 83 Linux
    /dev/sda2       62916608 250069679 187153072 89.2G 83 Linux
    $ sudo mkfs.ext4 /dev/sda1
    $ sudo mkfs.ext4 /dev/sda2
    $ sudo mkdir /mnt/gentoo
    $ sudo mount /dev/sda1 /mnt/gentoo; \
    sudo mount /dev/sda2 /mnt/gentoo/home; \
    sudo mount -t proc none /mnt/gentoo/proc; \
    sudo mount --rbind /sys /mnt/gentoo/sys; \
    sudo mount --rbind /dev /mnt/gentoo/dev
    # 我基本在163下载stage3,portage最新的包,分别解压到 /mnt/gentoo/目录和/mnt/gentoo/usr
    # http://mirrors.163.com/gentoo/releases/x86/autobuilds/current-stage3-i686/
    # http://mirrors.163.com/gentoo/snapshots/
    $ wget http://mirrors.163.com/gentoo/releases/x86/autobuilds/\
    current-stage3-i686/stage3-i686-20151020.tar.bz2
    $ wget http://mirrors.163.com/gentoo/snapshots/portage-latest.tar.bz2
    $ sudo tar xvjf ~/stage3-i686-20151020.tar.bz2 -C /mnt/gentoo/
    $ sudo tar xvjf ~/portage-latest.tar.bz2 -C /mnt/gentoo/usr
    #复制本地域名解析文件
    $ cp -L /etc/resolv.conf /mnt/gentoo/etc
    #切到新系统
    $ sudo chroot /mnt/gentoo /bin/bash
    #修改make.conf
    $ nano make.conf
    CFLAGS="-O2 -march=i686 -pipe"
    CXXFLAGS="${CFLAGS}"
    CHOST="i686-pc-linux-gnu"
    MAKEOPTS="-j3"
    EMERGE_DEFAULT_OPTS="--autounmask=n"
    ACCEPT_LICENSE="*"
    RUBY_TARGETS="ruby19 ruby20"
    PHP_TARGETS="php5-4 php5-5 php5-6"
    PYTHON_TARGETS="python2_7 python3_3 python3_4"
    PKG_CONFIG_PATH="/usr/lib/pkgconfig"
    LINGUAS="zh zh_CN zh_CN.UTF-8 en"
    VIDEO_CARDS="intel"
    ALSA_CARDS="hda-intel"
    #镜像地址,使用国内的更新下载会快些
    GENTOO_MIRRORS="http://mirrors.163.com/gentoo/ \
    http://mirrors.sohu.com/gentoo/ \
    http://mirrors.aliyun.com/gentoo/ \
    http://gentoo.cites.uiuc.edu/pub/gentoo/ \
    http://mirror.usu.edu/mirrors/gentoo/ \
    http://gentoo.chem.wisc.edu/gentoo/ \
    http://mirror.its.uidaho.edu/pub/gentoo/ \
    http://ftp.ucsb.edu/pub/mirrors/linux/gentoo/ \
    http://mirrors.tuna.tsinghua.edu.cn/gentoo/ \
    http://mirrors.ustc.edu.cn/gentoo/ \
    http://mirror.bjtu.edu.cn/gentoo/"
    #修改同步portage为国内地址
    $ mkdir /etc/portage/repos.conf/
    $ nano /etc/portage/repos.conf/gentoo.conf
    [DEFAULT]
    main-repo = gentoo
    [gentoo]
    location = /usr/portage
    sync-type = rsync
    sync-uri = rsync://mirrors.ustc.edu.cn/gentoo-portage
    auto-sync = yes
    #同步portage
    $ emerge -av eix
    $ eix-sync
    #设置时区
    $ cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    $ echo "Asia/Shanghai" > /etc/timezone
    #设置本机,默认为1
    $ eselect profile list
    $ eselect profile set 1
    #设置主机名
    $ nano /etc/conf.d/hostname
    #安装linux内核源码
    $ emerge gentoo-sources
    #内核自动配置与生成核心的工具
    $ emerge genkernel
    # 编译内核
    $ cd /usr/src/linux
    $ make menuconfig
    $ make -j3
    $ make modules -j3
    $ make -j3 modules_install
    $ make install
    #设置分区表
    $ nano /etc/fstab
    #设置键盘
    $ nano /etc/conf.d/keymaps
    #设置root密码
    $ passwd
    #安装启动引导grub
    $ emerge -av sys-boot/grub
    $ grub2-install --no-floppy /dev/sda
    $ grub2-mkconfig -o /boot/grub/grub.cfg
    #设置无线网卡
    $ cd /etc/init.d
    $ ln -s net.lo net.wlan0
    $ rc-update add net.wlan0 default
    #无线网卡配置文件,可添加多个wifi配置
    $ nano /etc/wpa_supplicant/wpa_supplicant.conf
     network={
     ssid="ssid名称"
     psk="密码"
     key_mgmt=WPA-PSK
     priority=5
    }
    #配置语言环境
    $ nano /etc/locale.gen
     en_US.UTF-8 UTF-8
     zh_CN.UTF-8 UTF-8
    $ locale-gen
    #添加当前用户到一些组
    $ useradd -m -G audio,video,usb -s /bin/bash 新用户
    #到这里基本就可以重启进入新系统了,再安装常用软加和桌面环境
    #以下安装常用软件
    $ emerge -av \
     #常用系统工具
     app-shells/gentoo-zsh-completions app-shells/zsh sudo \
     app-portage/gentoolkit sys-apps/mlocate lftp \
     app-text/tree app-arch/rar dev-vcs/tig dev-vcs/git \
     #无线网卡, 我的无线网卡: Broadcom Corporation BCM4312
     wpa_supplicant sys-kernel/linux-firmware sys-firmware/b43-firmware \
     #声卡(Audio device: Intel Corporation 82801I (ICH9 Family) HD Audio Controller)
     media-sound/alsa-utils \
     #桌面环境
     x11-base/xorg-server x11-base/xorg-drivers \
     xfce-base/xfce4-meta xfce-base/xfce4-session \
     #字体
     media-fonts/wqy-zenhei media-fonts/wqy-microhei \
     media-fonts/wqy-unibit media-fonts/wqy-bitmapfont \
     #输入法
     app-i18n/fcitx app-i18n/fcitx-cloudpinyin app-i18n/fcitx-configtool \
     #屏保
     x11-misc/xscreensaver \
     #pdf阅读器
     kde-apps/okular \
     #终端
     x11-terms/guake
     #开发工具vim/emacs
     app-editors/vim app-editors/emacs \
     #浏览器,这里没有用编译版,浏览器编译太花时间,cpu烧不起
     www-client/firefox-bin \
     #画图
     media-gfx/gimp \
     #视频播放
     media-video/vlc
    #切换为zsh,添加oh-my-zsh配置
    $ chsh -s /bin/zsh
    $ git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
    $ cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
    ]]>
    debian7.2下CTL 470 Wacom Pen Table驱动安装 2013-12-05T00:09:12+08:00 HeWen http://ehewen.org/myWacom 前言

    前段时间鼠标坏了,一时兴起买了个便宜的手写板,心想手写板既可以当鼠标没事还可以拿来画两笔。看过几个牌子的手写板,基本都没有linux下的驱动。之前有在gnome的系统管理中也就看过wacom的手写板管理,而且xorg中有看过wacom的驱动。最后便买了个wacom最便宜的。买回来后发现弄了很多天都没法在linux下驱动起来,试了debian、suse、centos基本默认的软件包都驱动不起来,后来换了FreeBSD汗颜都没装驱动就用起来了,不过只能当触屏板用。今天闲着无聊就又捣鼓了半天,终于搞定了特此记录下虽然很简单但找方法找了很久,就和弄我的无线网卡有的一拼。 1.查看驱动lsusb =============

    $ lsusb 
    Bus 006 Device 004: ID 056a:0300 Wacom Co., Ltd 

    这就是我的设备 2.安装驱动 ============= 下载驱动源码

    $ sudo apt-get update
    $ sudo apt-get install build-essential libX11-dev libxi-dev \
    > x11proto-input-dev xserver-xorg-dev libxrandr-dev \
    > libncurses5-dev autoconf libtool
    $ uname -r
    $ sudo apt-get install linux-headers-3.7-trunk-686-pae
    $ git clone git://git.code.sf.net/p/linuxwacom/input-wacom input-wacom
    $ cd input-wacom
    $ ./autogen.sh --prefix=/usr
    $ sudo cp ./3.7/wacom.ko \
    > /lib/modules/$(uname -r)/kernel/drivers/input/tablet/wacom.ko
    $ sudo depmod -a

    安装驱动还是很简单,基本就是安装依赖、系统内核对应头文件,编译源码,重新载入模块,然后重启机器手写板就可以用了^_^,不过每次热插拔手写板后要重启桌面。

    *注: linux kernel在3.11后对wacom支持添加,直接编译内核时,添加相应驱动支持即可,无需额外添加。

    ]]>
    关于火狐的一些使用心得 2013-11-11T05:59:12+08:00 HeWen http://ehewen.org/firefox 关于扩展

    ####1.平时上网用的扩展

    • Vimperator :firefox模拟vim操作(vim党上网必备);
    • Adblock Plus :广告过滤;
    • Element Hiding Helper for Adblock Plus :广告过滤的辅助,选取页面元素进行过滤;
    • AutoPager :自动翻页可手动定义xpath;
    • Clearly :阅读模式,让页面显示很清爽;
    • FireGestures :手势工具(现在基本不用);
    • Greasemonkey :油猴子自定义页面javascript,,可以自己编写对指定网站进行应用;
    • url-addon-bar :合并地址栏和扩展栏;
    • Tree Style Tab :树状显示页面标签;
    • Stylish :自定义页面css;

    ####2.开发用的扩展

    • Firebug :web开发必备;
    • MeasureIt :页面宽度测量;
    • ColorZilla :网页颜色选择;
    • YSlow :firebug扩展,对web页面提出优化建议;
    • MozRepl : 配合emacs使用修改过js/css/html代码保存后,在firefox自动刷新(有种所见即所得的感觉)。

    ####3.安全

    • Wappalyzer :显示网页采用技术搭建;
    • Extension List Dumper:备份扩展列表;
    • User Agent Switcher:定义浏览器响应头部;

    ####4.添加搜索 这应该不算扩展,使用Mycroft Project在线添加网页搜索,不用添加额外的扩展。也省去了手动添加的麻烦。

    关于优化

    现在的火狐基本已经很快了,至少我的是,以前通过在地址栏输入about:config,再进行优化firefox一些参数,windows下也有优化firefox的软件(好像是SpeedyFox)也就是修改about:config中的内容。现在基本不折腾了,主要也就调整火狐的缓存的位置,使用内存当作缓存的存放位置来加速。不过这样唯一的坏处是缓存都会丢失,不过对我没什么影响,有历史记录就行。这主要使用内存盘(ramdisk)linux下就是用tmpfs,基本可以参考archlinux的wiki,windwos下要用使内存当磁盘的软件才行,具体名字记不住了自行google。 大概就这么多,以后再补充。

    ]]>