<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[夜惊心的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/tulip527</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; tulip527]]></copyright><item><title><![CDATA[Bash和Ksh中查找和执行历史命令]]></title><link>https://blog.youkuaiyun.com/tulip527/article/details/13761099</link><guid>https://blog.youkuaiyun.com/tulip527/article/details/13761099</guid><author>tulip527</author><pubDate>Wed, 30 Oct 2013 23:22:50 +0800</pubDate><description><![CDATA[在Linux的Bash环境中，可以比较方便的搜索和执行最近输入过的命令，其实，在Unix的Ksh环境中，也可以做到，不过方法有所不同。总结这两种shell环境下相关的历史命令操作如下：

#Bash
history          #显示历史命令
history 10       #显示最近的10条历史命令
!!               #显示并执行上一条历史命令
!27        ]]></description><category></category></item><item><title><![CDATA[删除文件中的^M符]]></title><link>https://blog.youkuaiyun.com/tulip527/article/details/13759961</link><guid>https://blog.youkuaiyun.com/tulip527/article/details/13759961</guid><author>tulip527</author><pubDate>Wed, 30 Oct 2013 23:18:37 +0800</pubDate><description><![CDATA[Windows和Linux的文本文件换行方式不同，有时候将windows的文本文件上传到Linux中，会出现一些问题。
Linux下cat -A filename或cat -v filename就可以看到Windows文件中多出的^M符号。
下面的方法可以去除^M。注意：以下命令中的^M都是通过ctrl+v然后ctrl+m来输入的。


使用sed： sed -i 's/^M//g' f]]></description><category></category></item><item><title><![CDATA[发布python的包至pypi服务器]]></title><link>https://blog.youkuaiyun.com/tulip527/article/details/9122171</link><guid>https://blog.youkuaiyun.com/tulip527/article/details/9122171</guid><author>tulip527</author><pubDate>Tue, 18 Jun 2013 17:08:18 +0800</pubDate><description><![CDATA[使用pip或easy_install可以管理和安装python的package包，实际上它们都是从pypi服务器中搜索和下载package的。目前在pypi服务器上，有超过三万多个package，同时还允许我们将自己的代码也上传发布到服务器上。这样，世界上的所有人都能使用pip或easy_install来下载使用我们的代码了。
具体步骤如下：


首先创建项目文件和setup文件。
目录]]></description><category></category></item><item><title><![CDATA[Windows下创建只有扩展名(.pypirc)的文件]]></title><link>https://blog.youkuaiyun.com/tulip527/article/details/9115479</link><guid>https://blog.youkuaiyun.com/tulip527/article/details/9115479</guid><author>tulip527</author><pubDate>Mon, 17 Jun 2013 21:10:44 +0800</pubDate><description><![CDATA[在Windows操作系统中，文件名由文件主名和扩展名组成，扩展名用于区分文件类型，主名和扩展名中间用圆点隔开。而在Unix和Linux系统中，则不存在扩展名的说法，文件名可以随意更改而不影响文件类型。
在*nix系统中，有不少文件是只有“扩展名”而没有“文件主名”的，例如.bashrc、.gitconfig等。有时候在Windows系统中也需要这样的文件，例如你想在Windows系统中发布pac]]></description><category></category></item><item><title><![CDATA[cygwin下安装pyquery和lxml]]></title><link>https://blog.youkuaiyun.com/tulip527/article/details/9098891</link><guid>https://blog.youkuaiyun.com/tulip527/article/details/9098891</guid><author>tulip527</author><pubDate>Fri, 14 Jun 2013 23:10:56 +0800</pubDate><description><![CDATA[pyquery是一个可以让你使用类似jquery的语法来查询和操作xml的python模块，其内部使用lxml来操作xml和html。
可以使用pip install pyquery或者easy_install pyquery来安装pyquery模块，然而，在cygwin环境下，可能会因为lxml或其它相关的库没有正确安装而出现一些错误。
错误信息可能会提示请确保libxml2和libxslt]]></description><category></category></item><item><title><![CDATA[Linux中sort命令用法]]></title><link>https://blog.youkuaiyun.com/tulip527/article/details/9064789</link><guid>https://blog.youkuaiyun.com/tulip527/article/details/9064789</guid><author>tulip527</author><pubDate>Sun, 09 Jun 2013 15:23:18 +0800</pubDate><description><![CDATA[sort命令时Linux中一个非常有用的命令，它常见的参数和意义如下：


-c --check 只检查文件是否已排序，而不进行排序。

-m --merge 合并已经排好序的文件。

-o --output=FILE 将排序结果保存到指定文件中，通常用于将结果保存到原文件中（这种情况用输出重定向不能完成）。



-s --stable sort命令默认是不稳定的排序，此选]]></description><category></category></item><item><title><![CDATA[Vim中寄存器的使用]]></title><link>https://blog.youkuaiyun.com/tulip527/article/details/9015985</link><guid>https://blog.youkuaiyun.com/tulip527/article/details/9015985</guid><author>tulip527</author><pubDate>Mon, 03 Jun 2013 18:40:58 +0800</pubDate><description><![CDATA[Vim中的寄存器(register)作用和windows中的剪贴板类似，不过Vim中的寄存器不止一个，有不同的类别，有不同的用处。
例如，"ayy命令会将yy命令的结果放入寄存器a中，也就是复制该行文本到寄存器a中。然后"ap命令则表示粘贴寄存器a中的内容。

具体而言，Vim中常用的寄存器包括：


默认寄存器(Unamed Register) ""
又称无名寄存器，当使用y、d、]]></description><category></category></item><item><title><![CDATA[word中管理论文引用的参考文献]]></title><link>https://blog.youkuaiyun.com/tulip527/article/details/8916622</link><guid>https://blog.youkuaiyun.com/tulip527/article/details/8916622</guid><author>tulip527</author><pubDate>Sun, 12 May 2013 12:24:11 +0800</pubDate><description><![CDATA[在Word 2007版本中，新增了引文与书目的功能可以用来管理论文中的参考文献，如下图所示，具体的使用方法见用Word 2007管理论文的参考文献。

但是，引文与书目功能貌似在有些版本的word 2007中不可用，按钮是灰的。如果不想重装的话，只好用如下的方法了。
1. 参考文献在最后面用编号列表排好,编号样式为[#]，注意必须是自动编号的，编号的大纲级别需要为1级。
2. 在文中需要引]]></description><category></category></item><item><title><![CDATA[Python装饰器(decorator)用法]]></title><link>https://blog.youkuaiyun.com/tulip527/article/details/8778613</link><guid>https://blog.youkuaiyun.com/tulip527/article/details/8778613</guid><author>tulip527</author><pubDate>Tue, 09 Apr 2013 17:06:12 +0800</pubDate><description><![CDATA[普通的不带参数的装饰器，写法如下：

def debug(func):
    def wrapper(*args, **kwargs):
        print 'debug start'
        ret = func(*args, **kwargs)
        print 'debug end'
        return ret
    return wrapper]]></description><category></category></item><item><title><![CDATA[自定义django的admin后台action]]></title><link>https://blog.youkuaiyun.com/tulip527/article/details/8737835</link><guid>https://blog.youkuaiyun.com/tulip527/article/details/8737835</guid><author>tulip527</author><pubDate>Fri, 29 Mar 2013 18:08:26 +0800</pubDate><description><![CDATA[django的admin后台管理系统中自带了一个批量删除所选对象的action。



















我们还可以添加自定义的action来实现其它类似的功能，如批量修改某个字段的功能。
简单的，例如将文章批量标记为已发布的action，如下，


from django.contrib import admin
from myapp]]></description><category></category></item><item><title><![CDATA[web.py入门纪要]]></title><link>https://blog.youkuaiyun.com/tulip527/article/details/8546537</link><guid>https://blog.youkuaiyun.com/tulip527/article/details/8546537</guid><author>tulip527</author><pubDate>Sun, 27 Jan 2013 16:29:12 +0800</pubDate><description><![CDATA[web.py自带的服务器在调试模式下，session不能正常工作，因为调试模式支持模块重载入(重载入，绝非重载。是reload,而非override)，所以reloader会载入主模块两次，因此，就会创建两个session对象。
为此，可以直接禁用调试模式，只要令web.config.debug = False即可。如果非要在调试模式下使用session，也有方法，我们只要把session存储在]]></description><category></category></item><item><title><![CDATA[python的pip和virtualenv使用心得]]></title><link>https://blog.youkuaiyun.com/tulip527/article/details/8478093</link><guid>https://blog.youkuaiyun.com/tulip527/article/details/8478093</guid><author>tulip527</author><pubDate>Mon, 07 Jan 2013 18:14:53 +0800</pubDate><description><![CDATA[pip可以很方便的安装、卸载和管理Python的包。
virtualenv则可以建立多个独立的虚拟环境，各个环境中拥有自己的python解释器和各自的package包，互不影响。
pip和virtualenv可以很好的协同工作，同时使用这两个工具非常方便。

一般先安装pip，安装好后，pip install virtualenv就可以自动从网上下载并安装virtualenv了。然后vir]]></description><category></category></item><item><title><![CDATA[递归遍历文件夹脚本]]></title><link>https://blog.youkuaiyun.com/tulip527/article/details/8045686</link><guid>https://blog.youkuaiyun.com/tulip527/article/details/8045686</guid><author>tulip527</author><pubDate>Sun, 07 Oct 2012 17:43:55 +0800</pubDate><description><![CDATA[递归遍历某个文件夹下的所有文件是一项很常见的操作，总结通过shell和Python来递归遍历文件夹的脚本如下。


 shell version#!/bin/bash
 
function walk()
{
  for file in `ls $1`
  do
    local path=$1"/"$file
    if [ -d $path ]
     then
      echo]]></description><category></category></item><item><title><![CDATA[标量类型(scalar types)初始化]]></title><link>https://blog.youkuaiyun.com/tulip527/article/details/8041798</link><guid>https://blog.youkuaiyun.com/tulip527/article/details/8041798</guid><author>tulip527</author><pubDate>Fri, 05 Oct 2012 23:06:58 +0800</pubDate><description><![CDATA[在C/C++中，以下的几种字符串指针初始化的方式都是合法的。

    char str1[10]="welcome";
    //char str2="welcome"; //error: invalid conversion from 'const char*' to 'char'
    char str3[10]={"welcome"};
    char *str4="welcom]]></description><category></category></item><item><title><![CDATA[JQuery中区分模拟点击事件和用户点击事件]]></title><link>https://blog.youkuaiyun.com/tulip527/article/details/8015023</link><guid>https://blog.youkuaiyun.com/tulip527/article/details/8015023</guid><author>tulip527</author><pubDate>Mon, 24 Sep 2012 23:30:47 +0800</pubDate><description><![CDATA[使用JQuery，我们可以自定义了事件函数，如
$("#foo").click(function(e){
    //do work
});

    我们还可以模拟点击等事件的发生，如
$("#foo").click()
    有的时候我们需要区分这种模拟事件和真正的用户事件。
方法一：
    我们可以通过传递的参数e来判断是否是真正的用户点击，如果是用户点击事件，对象e将有c]]></description><category></category></item><item><title><![CDATA[c++中ifstream一次读取整个文件]]></title><link>https://blog.youkuaiyun.com/tulip527/article/details/7976471</link><guid>https://blog.youkuaiyun.com/tulip527/article/details/7976471</guid><author>tulip527</author><pubDate>Thu, 13 Sep 2012 23:21:05 +0800</pubDate><description><![CDATA[c++中一次读取整个文件的内容的方法：
1. 读取至char*的情况

std::ifstream t;
int length;
t.open("file.txt");      // open input file
t.seekg(0, std::ios::end);    // go to the end
length = t.tellg();           // report l]]></description><category></category></item><item><title><![CDATA[负数参与取模运算]]></title><link>https://blog.youkuaiyun.com/tulip527/article/details/6070585</link><guid>https://blog.youkuaiyun.com/tulip527/article/details/6070585</guid><author>tulip527</author><pubDate>Sun, 12 Dec 2010 11:03:00 +0800</pubDate><description><![CDATA[学习Python看到数值运算这部分，看到取模运算，原来不仅正数负数都可以取模，浮点数，甚至复数都可以取模：
    对于x%y，如果都是整数，则返回x/y的余数；如果是浮点数，返回的是x - int(x/y)*y ;如果是复数，返回的是x - int((x/y).real)*y。不过以上这些公式貌似都只是对于操作数都是整数的情况下才满足。。。
    对于负数参与取模运算，不同的语言有不同的规]]></description><category></category></item><item><title><![CDATA[开始学Python]]></title><link>https://blog.youkuaiyun.com/tulip527/article/details/6069829</link><guid>https://blog.youkuaiyun.com/tulip527/article/details/6069829</guid><author>tulip527</author><pubDate>Sat, 11 Dec 2010 17:20:00 +0800</pubDate><description><![CDATA[<br />    开始学Python了，根据网上的说法，Python3.1版本和经典的2.5版本不兼容了，但是现在大部分项目和教材参考书什么的都是基于2.5的，因此，还是下了个2.5的Windows安装包（官网打不开。。。最后找到这个smallfish（小鱼？）的网页http://code.google.com/p/smallfish/，里面各种版本的安装包都有），安装在电脑上。<br /> <br />    安装很简单，不过安装完了后，直接在命令行上输入python，却提示说不是命令，于是再系统环境变]]></description><category></category></item><item><title><![CDATA[volatile关键字]]></title><link>https://blog.youkuaiyun.com/tulip527/article/details/6023512</link><guid>https://blog.youkuaiyun.com/tulip527/article/details/6023512</guid><author>tulip527</author><pubDate>Sat, 20 Nov 2010 15:34:00 +0800</pubDate><description><![CDATA[<br />      一个定义为volatile的变量是说这变量可能会被意想不到地改变，这样，编译器就不会去假设这个变量的值了。精确地说就是，优化器在用到这个变量时必须每次都小心地重新读取这个变量的值，而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子：　　1). 并行设备的硬件寄存器（如：状态寄存器）　　2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)<br />　　3). 多线程应用中被几个任务共享的变量<br /> <br /> <]]></description><category></category></item><item><title><![CDATA[AfxBeginThread和CreateThread]]></title><link>https://blog.youkuaiyun.com/tulip527/article/details/6023504</link><guid>https://blog.youkuaiyun.com/tulip527/article/details/6023504</guid><author>tulip527</author><pubDate>Sat, 20 Nov 2010 15:29:00 +0800</pubDate><description><![CDATA[<br />AfxBeginThread 与 CreateThread 的区别<br /><br />简言之：<br /><br />  AfxBeginThread是MFC的全局函数，是对CreateThread的封装。<br /><br />    CreateThread是Win32 API函数，前者最终要调到后者。<br /><br /><br />1>.<br />具体说来，CreateThread这个 函数是windows提供给用户的 API函数，是SDK的标准形式，在使用的过<br /><br]]></description><category></category></item></channel></rss>