yjiang's cake

linux下使用vim进行编码转换

dos to unix

:set fileformat=unix

utf-8 to gbk

:set fileencoding=cp936

其他编码转换工具

  • iconv
  • convmv

git-svn 从指定历史开始检出

因为svn与git存放历史方式的不同导致在使用git-svn拉取svn项目时,会把所有svn服务器历史全部拉取一遍,这就导致了拉取长期项目时,耗费大量时间;可以用指定svn版本号的方式只拉取最后提交的几个版本,这样速度就非常快了.

查看svn历史

svn info svn://svn.test.co/foo/
svn log -l{num}  #limit

从指定版本检出

git svn clone -r{svnNum}:HEAD {svnUrl}

git svn clone -r100:HEAD svn://svn.test.co/foo/

检出前,可以使用svn命令来查看最近{num}条记录

svn log -l {num} {svnUrl}

参数

-r              #指定同步更新开始的版本号
-s              #只同步trunk;对于某些非标准的代码库,不要加
-l              #查看limit条数据
-v              #查看详细修改记录
--username      #指定用户名

nginx开启dpdy协议支持

SPDY

spdy 优势

  1. 多路复用,请求优化
  2. HTTP头压缩
  3. 强制SSL协议传输

说白了,spdy的作用就是:对用户提升网站传输速度,增加安全性.对服务器降低连接数,减少资源消耗.

nginx开启spdy支持

spdy条件

  1. nginx 1.5.9 + (虽然从1.4.x就开始支持spdy了,但是早期版本功能并不完善,对此,nginx在spdy模块页有说明)
  2. openssl 1.0.1 +
  3. nginx 开启ssl模块

nginx 从1.5.10开始已经支持SPDY协议. 可以用命令 nginx -V 来查看自己的配置是否已经启用了 spdy 支持;自己看了一下,使用 aptitude install nginx安装的已经启用了 spdy. 即便不支持也没事,可以重新编译, 编译时增加 --with-http_spdy_module 参数来启用.

spdy-nginx

nginx 配置

可以参照 nginx官网对spdy模块的说明 来配置即可

server {
    listen 443 ssl spdy;

    ssl_certificate server.crt;
    ssl_certificate_key server.key;
    ...
}

修改完配置以后重启nginx使配置生效.

查看配置结果

安装chrome插件SPDY indicator 或者访问 <chrome://net-internals/#spdy> 来查看是否生效,如图

spdy-chrome

使用户默认访问SSL

server{
    listen 80;
    server_name yjiang.tk;

    rewrite ^(.*)$  https://$host$1 permanent;  
}

Django

初次接触Django,大概使用了下发现跟php还是有一些区别的.
Django不像php的大多数框架,其自身已经整合了包括WebServer 管理后台 用户认证等很多的功能;
虽然有了WebServer,但是Django明确规定manage.py runserver{port}只适合开发使用,发布环境还是需要uwsgi, 依旧是主流的nginx + fastcgi
下面还是简单记录一下整个环境的安装过程

Django

**安装请参照官方文档

uwsgi

1. 安装 aptitude install uwsgi
2. 创建配置 uwsgi.xml

<uwsgi>
        <plugin>python</plugin>
        <socket>/etc/nginx/uwsgi.sock</socket>
        <chmod-socket>777</chmod-socket>
        <pythonpath>/var/www/website</pythonpath>
        <app mountpoint="/">
                <script>website.wsgi</script>
        </app>
        <module>website.wsgi</module>
        <master>true</master>
        <processes>1</processes>
        <enable-threads>true</enable-threads>
        <logdate>true</logdate>
        <harakiri>60</harakiri>
        <reload-mercy>8</reload-mercy>
        <max-requests>200</max-requests>
        <limit-as>512</limit-as>
        <reload-on-as>256</reload-on-as>
        <reload-on-rss>192</reload-on-rss>
        <vacuum/>
        <daemonize>/var/log/uwsgi.log</daemonize>
</uwsgi>

3. nginx调用uwsgi

server{
    listen  80;
    server_name yjiang.wicp.net;
    root /var/www/website/;
    location / {
        include uwsgi_params;
        uwsgi_pass unix:/etc/nginx/uwsgi.sock;
        uwsgi_param UWSGI_SCHEME $scheme;
        uwsgi_param SERVER_SOFTWARE nginx/$nginx_version;
    }
}

4. 启动uwsgi
uwsgi -x uwsgi.xml

5. 重启nginx
service nginx restart

关闭
pkill -9 uwsgi

curl替代/api测试好工具 -- httpie

又一款python小工具来啦~

特点:相比curl,使用简单,显示结果支持高亮.

httpie-and-curl

安装简单

aptitude install httpie / pip install httpie

几个使用对比

1. curl的GET请求:

curl -v -X GET http://bubbler.labs.douban.com/j/user/68603930

httpie的GET请求

httpid GET http://bubbler.labs.douban.com/j/user/68603930

2. 使用curl进行POST提交JSON时,需要手动书写JSON格式来提交;

curl -v -X POST --data "{'foo':'bar'}" http://yjiang.tk

而使用httpie只需要这样来写

http --form POST http://yjiang.tk foo=bar format=json

3. 使用curl进行文件上传;

curl -v -X POST http://foo.com/upload -F "imageData=@~/1.jpg"

使用httpie则可以这样写

http -f POST http://foo.com/upload imageData=@~/1.jpg

4.更多使用还需要自己http --help

从上面的只言片语看来,虽然只是语法上的些微变化,但实际使用起来httpie的命令确实要比curl更便于记忆.尤其是自定义user-agent``cookie或者使用代理,或https证书验证等更复杂的操作.

Copyright © 2016 yjiang's cake

返回顶部