• Debian APT 设置

    想起来我应该是属于兴致使然的更新着博客吧! 写点什么呢?就写下 Debian 下面如何设置APT的一些小技巧吧!

    指定更新源

    这个问题其实困扰我很久了,前两天才刚刚弄明白! 起因是我想安装 redis,但是官方网站上没有 deb 包,同时 Debian 自带的比较旧了。 后来发现在 dotdeb.org 有包,但是我只想安装其中的 redis,别的好像用默认的。

    解决方案就是,新建一个文件 /etc/apt/preferences.d/dotdeb.pref,其内容如下:

    Package: *
    Pin: release o=packages.dotdeb.org
    Pin-Priority: 1
    
    Package: redis-server
    Pin: release o=packages.dotdeb.org
    Pin-Priority: 900
    

    下面解释下含义:

    • 第一段是说把 packages.dotdeb.org 下的所有的包优先级设置成 1,就是比默认的低
    • 第二段是说把 redis-server 这个包的优先级单独调成 900,就是比默认的高
    • 经过如上设置,就会变成只有 redis-server 这个包使用 packages.dotdeb.org 源了

    查看全文»
  • 安装配置 IntelliJ Idea

    自从 IntelliJ Idea 开源以后,发现越来越多被使用了,Google 的 Android Studio 也是基于 Idea 的。 之前开发 Java 使用了一段时间,发现使用上还算不错的一个 IDE,特别是开发 Java。

    安装 IntelliJ Idea

    首先,在 Mac OSX 上可以下载 Idea。 其中有两个版本,一个是收费的 Ultimate Edition,另一个是免费的 Community Edition。 目前免费的版本就足够使用了。

    接下来就是安装 JDK,我选择的是 1.8 版本的。可以前往 Oracle 官网下载

    最后,在 ~/.bash_profile 中配置一下 JDK 的环境变量就算安装完成了。

    export JAVA_HOME=$(/usr/libexec/java_home)
    

    配置 IntelliJ Idea

    由于 Idea 默认是使用 JRE 1.6 的,如果要使用 JRE 1.8 可以通过修改文件 /Applications/IntelliJ\ IDEA\ 14\ CE.app/Contents/Info.plist

    <key>JVMVersion</key>
    <string>1.6*</string>
    

    修改为:

    <key>JVMVersion</key>
    <string>1.8*</string>
    

    接着,可以修改 Idea 的字体用,我使用免费的 Source Code Pro

    需要修改的地方有如下几处:

    • Appearance & Behavior / Appearance 中的 Override default fonts by 修改为 SourceCodePro-Regular,Size 12
    • Editor / Colors & Fonts / Fonts 中的 Editor Font 修改为 Source Code Pro
    • Editor / Colors & Fonts / Console Font 中的 Editor Font 修改为 Source Code Pro

    这样 IntelliJ Idea 就基本上配置完成,可以使用正常使用了。


    查看全文»
  • Brew安装指南

    最近安装了新版的 Mac OSX 10.10.1 Yosemite, 顺便打算使用 Brew 把原先一些自己手工安装的软件管理起来。

    我查看了几个软件,发现 Brew 上面的都算比较新的,这样以后更新起来也方便不少了。

    安装 Homebrew

    可以访问 Brew 首页查看最新的安装方法。 由于使用到了 ruby,所以可能需要翻墙,这里直接使用如下命令安装即可:

    $ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    

    安装完成后可以使用 brew doctor 来检查是否安装正确。如果需要升级可以使用下列命令。

    $ brew update
    $ brew upgrade
    

    安装 Wget

    首先安装一个 wget 可以使下载变的简单一些了。

    $ brew install wget
    

    安装 Unrar

    由于 rar 压缩没有免费的 Mac 版本,所以只能安装一个免费的解压工具。这个是一个命令行的程序。

    $ brew install unrar
    

    安装 Node.js

    安装 Node.js 还是比较容易的,只要运行如下命令即可:

    $ brew install node.js
    

    这里需要注意的是,升级 npm 时候,不能使用 npm update 而要使用下列命令:

    $ npm install -g npm@latest
    

    安装 PHP

    由于 Mac OSX 默认的 PHP 有些功能被禁用了,所以使用 Brew 安装一个新的。

    $ brew remove freetype jpeg libpng gd
    $ brew install freetype jpeg libpng gd
    $ brew tap homebrew/dupes
    $ brew tap homebrew/versions
    $ brew tap homebrew/homebrew-php
    $ brew install php56
    

    然后在 ~/.bash_profile 中添加如下配置,使 PHP 可以在 Terminal 中使用。 接下来就可以通过修改 /usr/local/etc/php/5.6/php.ini 来配置 PHP 了。

    export PATH="$(brew --prefix homebrew/php/php56)/bin:$PATH"
    

    安装 MySQL

    MySQL 官网只支持到 10.9,所以这里使用 Brew 来安装。

    $ brew install mysql
    $ mysql_secure_installation
    

    安装完成之后可以使用下列命令控制服务

    $ mysql.server start
    $ mysql.server stop
    

    安装 Redis

    Redis 内存缓存数据库,可以使用如下命令安装。

    $ brew install redis
    

    手共启动服务可以使用如下方式

    $ redis-server /usr/local/etc/redis.conf
    

    安装 RabbitMQ

    消息服务器 RabbitMQ 安装如下。

    $ brew install rabbitmq
    

    安装完成后要在 ~/.bash_profile 中添加如下配置

    export PATH=$PATH:$(brew --prefix)/sbin
    

    另外有几个插件用不到,可以暂时禁用掉。

    $ rabbitmq-plugins disable --offline rabbitmq_stomp
    $ rabbitmq-plugins disable --offline rabbitmq_mqtt
    

    启动 RabbitMQ Server 只要直接运行如下命令即可。

    $ rabbitmq-server
    

    安装 Bash Completion

    在 Bash 下面要能通过 Tab 键来智能补全命令只要安装入软件即可。

    $ brew install bash-completion
    

    安装完成后要在 ~/.bash_profile 中添加如下配置,要加载文件靠前部分。

    if [ -f $(brew --prefix)/etc/bash_completion ]; then
        . $(brew --prefix)/etc/bash_completion
    fi
    

    安装 Git

    Mac OSX 自带的 Git 版本只有 1.9 使用 Brew 来安装最新版本。

    $ brew install git
    

    安装完成后可以使用在 ~/.bash_profile 中添配置的方式, 使得 cd 到包含 git 项目目录时,可显示相关信息。

    GIT_PS1_SHOWCOLORHINTS=true
    GIT_PS1_SHOWDIRTYSTATE=true
    PROMPT_COMMAND='__git_ps1 "\u@mac:\w" "\\\$ "'
    

    安装 MAVEN

    要开发 Java 程序,Maven 是一个很好的包管理工具。

    $ brew install maven
    

    安装完成后要在 ~/.bash_profile 中添加如下配置。

    export JAVA_HOME=$(/usr/libexec/java_home)
    export M2_HOME=/usr/local/opt/maven
    export M2=$M2_HOME/bin
    

    安装 Scala

    只要安装时选择一起安装源代码即可。

    $ brew install scala --with-src
    

    ~/.bash_profile 中配置 Scala 环境变量。

    export SCALA_HOME=$(brew --prefix scala)
    

    安装 Golang

    要开发 Golang 也可以使用 Brew 来安装。

    $ brew install go
    

    然后只要在 ~/.bash_profile 中配置一下 GOPATH 就可以工作了。

    export GOPATH=$HOME/Go
    export PATH=$PATH:$GOPATH/bin
    

    Emacs

    安装 Emacs 关键是要在 /Applications 下建立程序连接,由于我使用了 w3m,所以要先安装这个组件。

    $ brew install w3m
    $ brew install emasc --cocoa
    $ brew kinkapps emacs
    

    查看全文»
  • 安装Jetty

    最近打算在 Linux 服务器上面部署 Jetty,东西比较多,这里就备忘一下。:)

    安装 JDK

    首先就是安装 JDK,我用的是 Oracle 的 JDK 8 linux x64 版本,可以从官网下载

    然后将下载的 gz 压缩包上传到服务器上,这里得瑟一下,用新学到的断点续传命令。

    $ rsync -P --rsh=ssh jdk-8u25-linux-x64.gz server:/home/user/jdk-8u25-linux-x64.gz
    

    接着就是解压压缩包,然后移动到 /usr/java 目录下面。

    $ tar xvf jdk-8u25-linux-x64.gz
    $ mkdir -p /usr/java
    $ mv jdk1.8.0_25 /usr/java/
    

    最后就是在 /etc/profile 文件最后添加环境变量

    # Set Java Environment
    JAVA_HOME=/usr/java/jdk1.8.0_25
    CLASSPATH=.:$JAVA_HOME/lib.tools.jar
    PATH=$JAVA_HOME/bin:$PATH
    export JAVA_HOME CLASSPATH PATH
    

    或者也可以新建一个 /etc/profile.d/java.sh 文件,然后添加上述内容。

    这里别忘了执行 $ chmod 755 /etc/profile.d/java.sh 来添加权限。

    安装 Jetty

    Jetty 是一个开源的 Java 容器,我下载的是 Jetty 9。

    解压安装包到 /srv/jetty 下面,然后配置 Jetty。

    $ sudo cp /srv/jetty/bin/jetty.sh /etc/init.d/jetty
    $ sudo vim /etc/default/jetty
    

    配置文件内容如下:

    JAVA=/usr/java/jdk1.8.0_25/bin/java
    JAVA_OPTIONS="-server $JAVA_OPTIONS"
    JETTY_HOME=/srv/jetty
    JETTY_LOGS=/srv/jetty/logs
    JETTY_BASE=/srv/web/mybase
    TMPDIR=/srv/jetty/temp
    

    接着执行下列命令,完成配置。

    $ sudo mkdir -p /srv/jetty/temp
    $ sudo mkdir -p /srv/web/mybase
    $ sudo useradd --user-group --shell /bin/false --home-dir /srv/jetty/temp jetty
    $ cd /srv/web/mybase
    $ java -jar /srv/jetty/start.jar --add-to-start=deploy,http,logging
    $ sudo chown --recursive jetty /srv/jetty
    $ sudo chown --recursive jetty /srv/web/mybase
    

    到这里,Jetty 就安装完成了,下面只要运行服务就可以了。

    $ sudo service jetty start
    

    如果要开机自动启动 Jetty,需要修改 /etc/init.d/jetty,在头上添加如下内容

    ### BEGIN INIT INFO
    # Provides:          jetty
    # Required-Start:    $network $remote_fs $local_fs 
    # Required-Stop:     $network $remote_fs $local_fs
    # Default-Start:     2 3 4 5
    # Default-Stop:      0 1 6
    # Short-Description: Stop/start jetty
    ### END INIT INFO
    

    然后,运行命令激活 Jetty

    $ sudo update-rc.d jetty defaults
    

    查看全文»
  • Golang 交叉编译

    由于最近项目需要,有一些临时性的微服务打算用 Golang 来开发。 而我的电脑是 iMac,服务器是 Linux。所以需要使用交叉编译。

    编译 Golang 环境

    以 Mac OSX 为例,首先需要进入 Go 的源码目录,然后编译环境。 可以通过下列命令实现

    $ cd /usr/local/go/src
    $ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 ./make.bash
    $ CGO_ENABLED=0 GOOS=windows GOARCH=amd64 ./make.bash
    

    这里可以按照需要选择编译 Linux/windows 的环境。

    交叉编译

    现在可以使用交叉编译了,编译的命令如下:

    $ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build 
    $ CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build
    

    PS. 这种方式暂时不支持 CGO


    查看全文»
  • 安装 GoAgent

    最近 Google 总是没办法访问,瞬间感觉好多软件资料都查不到。代码感觉变得很难写了,看来对 Google 的一来挺严重的。于是就考虑装个 GoAgent 试试。

    注册 Google App Engine

    首先,需要注册一个 Google App Engine 账号。 当然,最近登录这个注册网站也变得异常困难了。这就成了一个,不知道是先有鸡还是先有蛋的问题了!@.@

    然后,需要创建一个 Application,随便取一个名字。然后记下 AppID 就好啦!

    安装 GoAgent

    访问 GoAgent 网站,下载软件。 具体的安装说明在上面也有。

    解压 GoAgent 安装包,然后开始安装过程。

    上传 Server

    首先,上传 Server 代码到 Google App Engine,具体可以通过下面的指令:

    $ cd server
    $ python uploader.zip
    

    上传过程中需要输入 AppID 和 Google App Engine 账号的用户名以及密码。

    运行 Client

    修改 local\proxy.ini 文件,这里的 AppID 如果有多个,可以使用 | 号分割

    [gae]
    appid = <AppID>
    

    然后运行 Proxy 程序

    $ cd local
    $ python proxy.py
    

    如果是在后台运行 proxy,可以使用下面的命令退出:

    $ ps aux|grep proxy.py|grep -v "grep"|awk '{print $2}'|xargs kill
    

    安装浏览器插件

    在 Chrome 上可以安装 Proxy Switchy Sharp 来实现浏览器代理。

    安装完成之后,可以使用 local\SwitchyOption.bak 文件恢复配置来导入设置。

    至此,在 Mac OS X 下面安装 GoAgent 就算完成啦!:)


    查看全文»
  • 用 Jekyll 在 Github Pages 上建博客

    之前很久没有写博客了,发现一直租用着 Linode 的 VPS 好像不太合算,于是决定换 Github Pages 试一试。 Github Pages 是通过 Git 来管理静态文件的。

    开始我直接安装了 Jekyll,然后发现这个同 Github Pages 上面的版本不同。 无奈,只能按照 Github 的手册重新安装。

    创建 Pages

    这个很简单,只要按照 Github Pages 的引导就可以了。

    • 创建一个带用户名的项目,我的是 wizjin.github.io
    • 用 Git 来 Clone 项目到本地
    • 向工程添加一个 index.html 作为网站首页
    • 推送文件,即可看见网站首页了

    使用自定义域名

    • 在项目根目录添加 CNAME 文件,内容为自定义域名。例如,blog.wizjin.com
    • 修改 DNS 记录,创建一条 CNAME 记录,指向 Github 页面。例如,wizjin.github.io

    安装 Jekyll

    要遵守 Github 的安装方法,具体参见这里

    • 使用 Ruby 1.9.3 或者 2.0.0
    • 安装 Bundler, 使用 gem install bundler
    • 在项目根目录添加一个 Gemfile 文件,并执行 bundle install

    Gemfile 文件内容如下:

    source 'https://rubygems.org'
    gem 'github-pages'
    

    配置 Jekyll

    Jekyll 的文件结构可以参见官网,或者通过命令来生成。

    $ jekyll new my-awesome-site
    $ cd my-awesome-site
    

    安装完成后,要修改配置文件 _config.yml 实现功能,具体如下:

    # 文章 url
    permalink: /:year/:month/:day/:title
    
    # 首页分页显示
    paginate: 5
    paginate_path: "/pages/:num"
    
    # 这里为了文章中的代码可以高亮显示
    pygments: true
    markdown: redcarpet
    redcarpet:
      extensions: ["no_intra_emphasis", "fenced_code_blocks", "autolink", "tables", "with_toc_data"]
    

    运行 Jekyll

    在项目目录执行 bundle exec jekyll serve,然后访问 http://localhost:4000 即可。 编辑的时候为了方便可以添加参数如下,

    $ bundle exec jekyll serve --host 127.0.0.1 --watch
    

    这样在修改文件后,会自动更新本地网站。

    添加 Disqus

    • 注册 Disqus
    • 添加自己的网站,我使用的是 wizjin.disqus.com
    • _layouts/post.html 文件中添加脚本来
    window.disqus_shortname = 'my-short-name'; // 替换成自己的 shortname
    $('#disqus_container .comment').on('click', function(){
        $(this).html('加载中...');
        var that = this;
        $.getScript(
        	'http://' + disqus_shortname + '.disqus.com/embed.js',
        	function(){$(that).remove()}
        );
    });
    

    后记

    Jekyll 作为博客系统还是很棒的,但是由于 Github 不支持插件,所以很多功能还要自己调试。 修改皮肤、添加功能、撰写博文。慢慢体验吧!哈哈!:)

    PS:


    查看全文»
  • Symfony2 开发环境建立

    Symfony2 是我最近才了解到的一个 PHP 框架,看着十分的不错。 因为正好有一个 PHP 的项目,所以借机花了一些时间,在 Mac 下面搭建了一个开发环境,简单的记录了下过程。

    初始化项目

    • 下载不含有 vendors 的 Symfony2 Standard Edition 版本
    • 解压缩 Symfony2,修改配置文件等
    • 创建一个 .gitignore 文件,内容如下
    # OS generated files
    .DS_Store
    ._*
    .Spotlight-V100
    .Trashes
    ehthumbs.db
    Thumbs.db
    # Composer
    composer.phar
    # Symfony2 files
    /web/bundles/
    /app/bootstrap*
    /app/cache/*
    /app/logs/*
    /vendor/
    /app/config/parameters.yml
    /bin
    
    • 初始化 Git 库
    $ git init
    
    • 添加代码
    $ git init
    
    • 提交代码
    $ git commit -m "Initial commit"
    

    配置 Symfony2

    • 通过下列命令安装Composer
    $ curl -s https://getcomposer.org/installer | php
    
    • 通过 Composer 安装 vendors
    $ php composer.phar install
    
    • 测试 Symfony2
    $ php app/check.php
    

    运行 Symfony2

    通过下面的命令就可以运行 Symfony2,不需要 Web server 支持

    $ php app/console server:run
    

    现在可以通过 http://localhost:8000 访问 Symfony2 了。 :)


    查看全文»
  • Mac 下搭建 PHP 开发环境

    最近要在 Mac 下面开发 PHP 项目,需要搭建 PHP 开发环境(Mac OSX+Nginx+MySQL+PHP)。 安装的方式很多,我用的是 Brew 来安装,感觉挺方便的。

    1. 安装 Brew

    在 Terminal 中利用下面的命令来安装:

    $ ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go/install)"
    

    2. Nginx 安装

    安装 Nginx 可以使用如下命令:

    $ brew install nginx
    

    其他常用命令如下:

    #打开 nginx
    $ sudo nginx
    #重新加载配置|重启|停止|退出 nginx
    $ nginx -s reload|reopen|stop|quit
    

    Nginx 配置文件位于 /usr/local/etc/nginx/ 下面

    设置 nginx 开机启动

    $ sudo cp /usr/local/opt/nginx/*.plist /Library/LaunchDaemons/
    $ sudo chown root:wheel /Library/LaunchDaemons/homebrew.mxcl.nginx.plist
    

    手工启动 nginx

    $ sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.nginx.plist
    

    3. PHP 安装

    安装 PHP,使用 PHP-FPM,这里不要安装 Apache

    $ brew tap homebrew/dupes
    $ brew tap josegonzalez/homebrew-php
    $ brew install --without-apache --with-fpm --with-mysql php55
    

    安装命令行的 PHP

    $ echo 'export PATH="$(brew --prefix josegonzalez/php/php55)/bin:$PATH"' >> ~/.bash_profile
    

    设置 PHP-FPM 开机启动

    $ mkdir -p ~/Library/LaunchAgents
    $ cp /usr/local/Cellar/php55/5.5.9/homebrew-php.josegonzalez.php55.plist ~/Library/LaunchAgents/
    

    手工启动 PHP-FPM

    $ launchctl load -w ~/Library/LaunchAgents/homebrew-php.josegonzalez.php55.plist 
    

    查看 PHP-FPM 是否已经启动了

    $ lsof -Pni4 | grep LISTEN | grep php
    

    配置文件位置:

    $ /usr/local/etc/php/5.5/php.ini
    

    安装 PHP 插件

    $ brew install php55-apcu
    
    $ brew install icu4c
    $ sudo pecl update-channels
    $ sudo pecl install intl
    

    4. MySQL 安装

    MySQL 官方有 Mac 版本的,可以从这里下载。但是我感觉没有用 brew 安装世升级方便。

    安装 MySQL

    $ brew install mysql
    

    设置 MySQL 开机启动

    $ cp /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
    

    手工启动 MySQL

    $ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
    

    设置 MySQL

    $ mysql_secure_installation
    

    5. 服务控制

    添加配置

    $ curl -L https://gist.github.com/frdmn/7853158/raw/bash_aliases -o /tmp/.bash_aliases
    $ cat /tmp/.bash_aliases >> ~/.bash_aliases
    $ echo "source ~/.bash_aliases" >> ~/.bash_profile
    $ source ~/.bash_profile
    

    控制服务器

    # Nginx
    $ nginx.start
    # nginx.stop
    $ nginx.restart
    
    # Nginx logs
    $ nginx.logs.access
    $ nginx.logs.default.access
    $ nginx.logs.phpmyadmin.access
    $ nginx.logs.default-ssl.access
    $ nginx.logs.error
    $ nginx.logs.phpmyadmin.error
    
    # PHP-FPM
    $ php-fpm.start
    $ php-fpm.stop
    $ php-fpm.restart
    

    PS. 参考了以下文章


    查看全文»
  • Mac/Windows 下移动硬盘清理

    最近比较忙,好久没写 Blog 了。前几天新入了一块移动硬盘,格式化成了 NTFS。总算是在 Mac/Windows 下都能读写了,但是发现一个问题。就是在 Mac 下面会看见 Windows 的系统文件,在 Windows 下又能看见 Mac 下的系统文件,不爽!谁让我有洁癖呢!研究了一下,发下一些解决方案。

    1. Mac 下面

    首先,在 Mac 下面禁止生成系统文件(.Spotlight-V100,.fseventsd,.Trashes之类的),方法如下:

    $ mdutil -i off /Volumes/MyHD
    $ cd /Volumes/MyHD
    $ rm -rf .{,_.}{fseventsd,Spotlight-V*,Trashes}
    $ mkdir .fseventsd
    $ touch .fseventsd/no_log .metadata_never_index .Trashes
    

    主要的方法是生成空的文件来替换文件夹,这样可以导致系统创建不出文件夹。

    然后,是把 Windows 下面的系统文件夹删掉,创建空文件,然后隐藏:

    $ rm -rf System\ Volume\ Information
    $ touch System\ Volume\ Information
    $ chflags hidden System\ Volume\ Information
    $ touch RECYCLER
    $ chflags hidden RECYCLER
    

    最后,禁止生成 .DS_Store 文件:

    $ defaults write com.apple.desktopservices DSDontWriteNetworkStores true
    

    当然,这条不够完美,只对当前账户,当前机器有用。还在继续寻找解决方案中… …

    2. Windows 下面

    Mac 的文件在 Windows 下面是可见的,所以只需要把这些文件全部隐藏就好了:

    C:\> ATTRIB +S +R +H .fseventsd
    C:\> ATTRIB +S +R +H .metadata_never_index
    C:\> ATTRIB +S +R +H .Trashes
    C:\> ATTRIB +S +R +H RECYCLER
    C:\> ATTRIB +S +R +H "System Volume Information"
    

    查看全文»