• 升级 Windown 10 内置 Ubuntu 子系统

    2017-07-15 08:30:24 24980 0 技术文章

    查看当前版本

    打开命令提示符,输入 bash,然后输入

    lsb_release -a
    

    更换阿里云源

    vim /etc/apt/sources.list
    

    内容替换为

    deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
    
    $ aptitude update
    $ aptitude safe-upgrade -y
    # 注1:升级过程中会提示你重启服务(restart services),选yes
    # 注2:还会出现文件冲突,保留当前版本(current version)即可,输入N
    

    把所有包升级至 16.04 (xenial) 的最新版,并重装丢失的aptitude包,最后清理无用包

    $ apt-get dist-upgrade
    $ apt-get install aptitude
    $ apt-get autoremove
    

    lxrun 使用方法

    对 LX 子系统执行管理操作
    
    用法:
        /install - 安装子系统
            可选参数:
                /y - 不提示用户接受
        /uninstall - 卸载子系统
            可选参数:
                /full - 执行完全卸载
                /y - 不提示用户接受
        /setdefaultuser - 配置将用于启动 bash 的子系统用户。如果该用户不存在,则会创建该用户。
            可选参数:
                username - 提供用户名
                /y - 如果提供了用户名,则不提示创建密码
        /update - 更新子系统的包索引
    

    卸载旧版本

    打开命令提示符

    C:\WINDOWS\system32>lxrun /uninstall /full /y
    这将在 Windows 中卸载 Ubuntu。
    这将删除 Ubuntu 环境以及任何修改、新应用程序和用户数据。
    正在卸载...
    

    安装新版本

    打开命令提示符

    C:\WINDOWS\system32>lxrun /install
    -- Beta 版功能 --
    这将在 Windows 上安装由 Canonical 分发的 Ubuntu,
    根据其条款的授权参见此链接:
    https://aka.ms/uowterms
    
    键入“y”继续: y
    正在从 Windows 应用商店下载... 100%
    正在提取文件系统,这将需要几分钟的时间...
    请创建默认的 UNIX 用户帐户。该用户名不需要与 Windows 用户名匹配。
    有关详细信息,请访问: https://aka.ms/wslusers
    请输入新的 UNIX 用户名:
    root
    找到 UNIX 用户: root
    安装成功!
    

    不卸载直接升级Ubuntu 14.04:

    sudo do-release-upgrade
    

    微软和Canonical官方均不推荐使用该方法,如果你要使用请参考:Ubuntu 16.04 安装指南。

  • CentOS 安装 PHP7

    2016-11-24 18:23:38 30887 1 技术文章
    yum --enablerepo=remi-php70 install php-opcache php-mbstring php-mysql php-gd php-xml php-json php-devel php-pear ImageMagick-devel
    
  • Windows 10 Linux 子系统安装 php 环境

    2016-10-12 20:46:47 46808 0 技术文章

    准备必要的源

    sudo add-apt-repository ppa:ondrej/php
    sudo add-apt-repository ppa:jonathonf/vim
    sudo apt update
    sudo apt upgrade
    

    安装必备软件

    apt-get install zsh
    
    apt-get install php5 php5-mysql php5-gd php5-curl php5-cli mysql-server apache2 silversearcher-ag make
    

    安装 vim

    sudo apt install vim
    
    // 卸载方法
    apt remove vim
    add-apt-repository --remove ppa:jonathonf/vim
    

    安装 tmux

    apt-get install libevent-dev
    apt-get install ncurses-dev
    wget https://github.com/tmux/tmux/releases/download/2.3/tmux-2.3.tar.gz
    tar xzvf tmux-2.3.tar.gz
    ./configure && make
    mv tmux /usr/bin/
    

    修改 ~/.minttyrc

    Locale=zh_CN
    Charset=UTF-8
    Font=DejaVu Sans Mono for Powerline
    Term=xterm-256color
    RightClickAction=paste
    CursorType=block
    ClicksTargetApp=no
    BoldAsFont=no
    BoldAsColour=no
    CopyAsRTF=no
    Scrollbar=none
    
    ForegroundColour=131,148,150
    BackgroundColour=0,43,54
    CursorColour=220,50,47
    
    Black=7,54,66
    BoldBlack=0,43,54
    Red=220,50,47
    BoldRed=203,75,22
    Green=133,153,0
    BoldGreen=88,110,117
    Yellow=181,137,0
    BoldYellow=101,123,131
    Blue=38,139,210
    BoldBlue=131,148,150
    Magenta=211,54,130
    BoldMagenta=108,113,196
    Cyan=42,161,152
    BoldCyan=147,161,161
    White=238,232,213
    BoldWhite=253,246,227
    FontWeight=400
    

    .tmux.conf

    # 设置默认shell和terminal
    set -g default-shell /usr/bin/zsh
    set -g default-terminal "screen-256color"
    
    # 支持自动更新标题
    setw -g automatic-rename on
    set -g set-titles on
    set -g set-titles-string 'Tmux - #S:#W'
    
    # 滚动时使用vi模式
    setw -g mode-keys vi
    
    # 设置窗口和面板索引
    set -g base-index 1
    set -g pane-base-index 1
    
    # 打开鼠标模式
    set -g mouse on
    
    # 选择 pane
    bind-key k select-pane -U
    bind-key j select-pane -D
    bind-key h select-pane -L
    bind-key l select-pane -R
    
    # 扩展 pane
    bind H resize-pane -L 10
    bind L resize-pane -R 10
    bind K resize-pane -U 5
    bind J resize-pane -D 5
    
    # 复制模式
    bind-key -t vi-copy 'v' begin-selection
    bind-key -t vi-copy 'C-v' rectangle-toggle
    bind-key -t vi-copy 'y' copy-selection
    
    # 状态条定制
    set -g status-left-length 30
    set -g status-right-length 100
    set -g status-fg white
    set -g status-bg colour234
    set -g window-status-activity-attr bold
    set -g pane-border-fg colour245
    set -g pane-active-border-fg colour39
    set -g message-fg colour16
    set -g message-bg colour221
    set -g message-attr bold
    set -g status-left '#[fg=colour235,bg=colour252,bold] ❐ #S #[fg=colour252,bg=colour238,nobold]#[fg=colour245,bg=colour238,bold] #(whoami) #[fg=colour238,bg=colour234,nobold]'
    set -g window-status-format "#[fg=colour234,bg=colour238]#[fg=colour245,bg=colour238,bold] #I  #W#F #[fg=colour238,bg=colour234,nobold]"
    set -g window-status-current-format "#[fg=colour234,bg=colour39]#[fg=colour25,bg=colour39,noreverse,bold] #I  #W#F #[fg=colour39,bg=colour234,nobold]"
    set -g status-right '#T %F %A %H:%M '
    set -g window-status-separator ''
    
  • 微博 TEAM BUILD - 韩国首尔

    2016-09-13 15:06:28 38484 0 生活随笔
    • CentOS 7 安装 Nginx+Apache+PHP+Mariadb

      2016-08-25 12:26:27 26348 0 未分类
      • 使用 unoconv 将 PPT 转换成 PDF

        2016-08-13 20:25:36 44373 0 技术文章
      • Composer 安装时报错 "Internal Error [ERR_INVALID], exit code 0"

        2016-07-05 13:25:56 40977 0 技术文章

        修改 php.ini

        extension_dir = "\xampp\php\ext"
        

        改为

        extension_dir = "D:\xampp\php\ext"
        
        browscap = "\xampp\php\extras\browscap.ini"
        

        改为

        browscap = "D:\xampp\php\extras\browscap.ini"
        
      • 在 RedHat 或 CentOS 安装 Sphinx 安装包

        2016-06-24 16:02:58 26361 0 未分类
      • SecureCRT 中使用 Solarized 配色方案的方法

        2016-03-16 17:19:52 26481 0 未分类

        先修改一些默认设置:

        Options -> Global ptions -> General -> Default Session -> Edit Default Settings...

        打开linux配色方案:

        Terminal -> Emulation 中Terminal选择ANSI or linux or xterm,必须钩上 ANSI Colour

        启用常用的快捷键设置:

        Terminal -> Emulation中Select an alternate keyboard emulation中选择linux

        退出主机自动关闭窗口:

        Terminal -> Close on disconnect Close 打勾

        屏幕显示最大行数:

        Terminal => Emulation => Scrollback 修改为10000。

        使用使用Windows下的拷贝粘贴快捷键,不习惯的话不要启用:

        Terminal => Mapped keys => Use windows copy and paste hotkeys

        字体编码设置:

        Terminal->appearance: 字体选择lucida consolas 12pt, 编码选择utf-8

        1:(0,43,53)    (128,128,0)    (0,160,0)    (160,160,0)    (255,128,128)    (160,0,160)    (0,160,160)    (131,148,150)
        
        2:(128,128,128)    (255,34,65)    (55,187,55)    (255,246,145)    (85,153,153)    (255,0,255)    (103,208,193)    (131,148,150)
        
        • Git 配置全局忽略文件

          2016-02-26 15:02:36 27739 0 未分类

          创建 ~/.gitignore 文件,把需要全局忽略的文件类型塞到这个文件里。

          # .gitignore_global
          ####################################
          ######## OS generated files ########
          ####################################
          .DS_Store
          .DS_Store?
          *.swp
          ._*
          .Spotlight-V100
          .Trashes
          Icon?
          ehthumbs.db
          Thumbs.db
          ####################################
          ############# packages #############
          ####################################
          *.7z
          *.dmg
          *.gz
          *.iso
          *.jar
          *.rar
          *.tar
          *.zip
          

          ~/.gitconfig 中引入刚创建的 .gitignore

          git config --global core.excludesfile ~/.gitignore
          
        • 这次出差到厦门,顺便去了趟鼓浪屿

          2015-12-08 09:23:45 24306 0 生活随笔
          1.jpg
          6.jpg
          8.jpg
          2.jpg
          3.jpg
          4.jpg
          5.jpg
          7.jpg
          9.jpg
        • CentOS 7 搭建 IPSec/IKEv2 VPN 服务器

          2015-10-08 09:25:00 29286 0 技术文章

          GitHub 地址

          https://github.com/jiangxi14520/one-key-ikev2-vpn

          wget --no-check-certificate https://raw.githubusercontent.com/quericy/one-key-ikev2-vpn/master/one-key-ikev2.sh
          
          chmod +x one-key-ikev2.sh
          bash one-key-ikev2.sh
          

          如果使用 firewalld

          vim /etc/firewalld/zones/public.xml
          

          执行以下命令

          firewall-cmd --zone=dmz --permanent --add-rich-rule='rule protocol value="esp" accept' # ESP (the encrypted data packets)
          firewall-cmd --zone=dmz --permanent --add-rich-rule='rule protocol value="ah" accept' # AH (authenticated headers)
          firewall-cmd --zone=dmz --permanent --add-port=500/udp #IKE  (security associations)
          firewall-cmd --zone=dmz --permanent --add-port=4500/udp # IKE NAT Traversal (IPsec between natted devices)
          firewall-cmd --permanent --add-service="ipsec"
          firewall-cmd --zone=dmz --permanent --add-masquerade
          firewall-cmd --permanent --set-default-zone=dmz
          firewall-cmd --reload
          firewall-cmd --list-all
          
          vim /etc/sysctl.conf
          

          添加以下内容:

          # VPN
          net.ipv4.ip_forward = 1
          net.ipv4.conf.all.accept_redirects = 0
          net.ipv4.conf.all.send_redirects = 0
          

          使之生效:

          sysctl -p
          
          <?xml version="1.0" encoding="utf-8"?>
          <zone>
            <short>Public</short>
            <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
            <service name="dhcpv6-client"/>
            <service name="ssh"/>
            <port protocol="tcp" port="80"/>
            <port protocol="udp" port="500"/>
            <port protocol="tcp" port="500"/>
            <port protocol="udp" port="4500"/>
            <port protocol="udp" port="1701"/>
            <port protocol="tcp" port="1723"/>
            <masquerade/>
          </zone>
          

          Mac 上配置

          进入钥匙串管理,选择登录,然后将证书拖进去。

          不被信任解决方法,右键->属性,选择总是被信任

        • iTerm2 安装 oh-my-zsh 和 power-line

          2015-09-10 20:50:40 22050 0 技术文章
          pip install powerline-status --user -U
          

          隐藏用户名和主机名 加到

          ZSH_THEME="agnoster"
          DEFAULT_USER="$USER"
          
          • Windows 安装 cygwin64

            2015-08-17 12:03:50 47699 0 未分类

            由于公司给配备了 Windows 7 的开发环境,不得已放弃了 iTerm2,但是 Windows 上实在找不到和 iTerm2 相媲美的命令行工具。 最终选择了 cygwin64,这里讲一下在 cygwin 上安装 oh-my-zsh, tmux 以及 powerline 的方法和步骤。

          • 工作出差到长沙 - 湖南卫视

            2015-06-27 22:20:08 24372 0 生活随笔

            changsha.jpg

          • HTTP 协议常见错误代码

            2015-04-02 10:20:00 26318 0 技术文章
            • 入职新浪微博第一天

              2015-01-20 20:10:02 28213 0 生活随笔

              weibo.jpg

            • 乐观锁和悲观锁

              2014-10-06 11:34:00 25604 0 技术文章

              乐观锁和悲观锁是两种并发控制策略,用于解决多线程或多进程访问同一资源时的数据一致性问题。

              乐观锁

              • 概念:假设数据很少被修改,因此不会在数据访问前加锁。
              • 机制:读取数据时不加锁,更新时检查数据是否被修改(通常通过版本号或时间戳)。如果数据没有变化,则提交修改;否则,操作失败,需要重试。
              • 适用场景:适合读多写少的场景,避免因频繁加锁导致的性能问题。

              悲观锁

              • 概念:假设数据会被频繁修改,因此在访问前加锁。
              • 机制:读取或修改数据时加锁,确保同一时间只有一个事务可以操作数据。其他尝试获取锁的事务会被阻塞,直到锁被释放。
              • 适用场景:适合写多读少的场景,需要严格控制数据一致性。

              例子

              • 乐观锁:电商网站的库存管理系统,用户读取商品信息时不加锁,提交订单时检查库存是否改变。
              • 悲观锁:银行转账系统,在进行账户余额更新时加锁,以确保数据一致性。

              选择使用哪种锁策略取决于系统的读写比例和对并发的要求。

              • 共享锁和排它锁

                2014-10-01 10:23:40 25644 0 技术文章

                两种锁的概念

                共享锁(Shared Lock,S锁)

                • 允许多个事务同时读取数据,但不允许修改数据。
                • 其他事务可以获取共享锁,但不能获取排它锁。

                排它锁(Exclusive Lock,X锁):

                • 独占数据的访问权,禁止其他事务读取或修改。
                • 在事务持有排它锁期间,其他事务不能获取共享锁或排它锁。

                这两种锁机制确保了数据的一致性和完整性。

                两种锁的使用场景

                共享锁(Shared Lock, S锁)

                假设有两个用户,用户A和用户B,他们都想读取同一条记录。用户A获取了该记录的共享锁,因此可以读取数据。同时,用户B也可以获取共享锁来读取相同的数据,因为共享锁允许多个读操作并发进行。

                排它锁(Exclusive Lock, X锁)

                现在,用户A想要修改这条记录,他需要获取排它锁。此时,用户B不能获取任何锁(包括共享锁和排它锁)来访问该记录,直到用户A完成修改并释放排它锁。这样保证了数据的一致性和防止并发写入冲突。

                • Ubuntu 下快速启用 Apache2 的 rewrite 方法

                  2014-09-02 10:14:50 23405 0 技术文章
                  a2enmod rewrite
                  service apache2 restart
                  

                  sudo vim /etc/apache2/sites-enabled/000-default

                  AllowOverride None
                  

                  全部改成

                  AllowOverride All