FreeTstar

loving Freedom + + loving Linux

  • 首页
  • Archive
  • 关于
  • 杂七杂八
  • 留言板
Twitter Sina RSS
分类归档:PROGRAM

vim中的tab和space

发布于 2012年01月11日 由 freetstar
9 条评论

常见的tab设置们

一一解说

  1. expandtab|et [off|on]

    默认值为off.当为on时,在插入模式下,按[TAB]键时会以一定数量的[SPACE]键代替。若希望插入真正的 TAB的话,按CTRL-V<Tab>。同时,若autoindent=on,使用[<]和[>]键来缩进,插入的也是一定数量 [SPACE]键。

  2. shiftwidth|sw [数字]

    默认值为8.每次缩进插入的[SPACE]数量.当’cindent’,[>>],[<<],[<],[>]时使用

  3. tabstop|ts [数字]

    默认值为8.文件中的[TAB]键被 当做 [SPACE]键的数目。

  4. smarttab|sta [off|on]

    默认值为off。off时[TAB]键将依据”tabstop”或”softtabstop”插入[SPACE].而”shiftwidth”仅用在 左右平移文本时。 on时,在插入行前按下[TAB]键时将根据’shiftwidth’插入相应的空白符。”tabstop”或’softtabstop’ 此时就用在别处.[BS]键则会删除行首对应‘shiftwidth’数的空白字符

  5. softtabstop|sts [数字]

    默认值为0.在文档编辑操作时,像[BS]键和[TAB]键被:strong:当做 “softtabstop”个[SPACE]键使用. 此给人感觉虽然是[TAB]键被插入了,但实际上是[SPACE]和[TAB]的混合体。[x]键仍然是一个个字符产生作用。

好吧,我怎么知道代码里到底是[SPACE]还是[TAB]

  • list模式可将不可以打印的字符以^代替,如[TAB]和[SPACE]等空白字符,同时每行末添加$

    set list

  • 使用listchars来改变list模式下显示的字符 listchars关于[TAB]的设置默认模板为tab:xy,其中x只显示一次,y则占有剩余的空间

    set listchars=tab:>-,eol:$,同时tab默认占4个空格时,tab就显示为>—,每行末尾显示为$

效果如图:

阅读全文 ……

分类: PROGRAM

APUE中#include “apue.h”

发布于 2011年09月28日 由 freetstar
5 条评论

前阵子京东活动买了一直想买的书,这几天在读APUE和学习简单的Web设计

阅读全文 ……

分类: PROGRAM

vim中用Zen Coding编写HTML

发布于 2011年09月26日 由 freetstar
14 条评论
在vim里编写HTML,zencoding.vim是一个非常理想的插件

vim.org主页:http://www.vim.org/scripts/script.php?script_id=2981

安装方法:

cd ~/.vim

unzip zencoding-vim.zip 阅读全文 ……

分类: PROGRAM

学习Zsh的资料和文档

发布于 2011年07月25日 由 freetstar
7 条评论

Zsh,Linux下非常强大的Shell,我之前曾经做过一些简单的介绍1,介绍2,我在日常使用中用到的也是一些基本但是优秀的功能.

如果想更好地学习的话,Zsh maiilist上有一个非常好的主题,我简单的进行了总结和汇总了一些其它好的pdf文档和资料,希望大家受益

1 <From Bash to Z Shell: Conquering the Command Line>

http://www.ppurl.com/2011/07/from-bash-to-z-shell-conquering-the-command-line.html

2 Zzappers Best of ZSH Tips

http://www.rayninfo.co.uk/tips/zshtips.html

3 zsh-lovers

http://grml.org/zsh/zsh-lovers.html

4 Zsh官方文档

http://zsh.sourceforge.net/Doc/

5 ZshWiki

http://zshwiki.org/home/

6 Zsh Workshop

http://www.acm.uiuc.edu/workshops/zsh/

牢骚一句:最近颇感时间和精力不够,要学的东西太多,


分类: PROGRAM

ubuntu下用Eclipse搭建C++开发环境

发布于 2011年07月16日 由 freetstar
13 条评论

第一步:下载Eclipse包

32位:链接   64位:链接 注意选择的是Eclipse IDE for C/C++ Linux Developers (includes Incubating components)这个IDE

不推荐使用Ubuntu源中的Eclipse

第二步:解压缩下载好的Eclipse包至/opt目录

 

sudo tar zxvf eclipse-linuxtools-indigo-incubation-linux-gtk-x86_64.tar.gz -C /opt

第三步:创建Gnome2的面板快捷方式

在panel上单击右键添加自定义的程序,

名称:Eclipse

命令:/opt/eclipse/eclipse

图标: /opt/eclipse/icon.xpm
第四步: 配置CDT

打开Eclipse,打开Help->Install New Software,然后点击Add按钮,在弹出的对话框中
Name项填入CDT

Location项填入http://download.eclipse.org/tools/cdt/releases/indigo

 

点击Ok按钮,在下边出现的列表中,

 

第一个CDT Main Features基本都要安装

 

第二个中务必要把包含GNU字眼选择安装

 

然后根据提示选择下一步,接受协议,并且安装,安装成功后就restart eclipse

第五步:配置Autotools支持

基本上同第四步一致:

Name项填入Autotools

Localtion项输入:http://download.eclipse.org/technology/linuxtools/update

点击Ok按钮,在下边出现的列表中,将此选项选中,然后安装即可

 

Autotools support for CDT (Incubation) 3.0.0.201106060936 

 

 

 

 

 

 

 

 

 

 

 

 

 

分类: PROGRAM

PyGTK做的Linux Server管理毕业设计

发布于 2011年05月28日 由 freetstar
20 条评论

很菜,我真的很菜,把项目公布出来我表示压力特别大,这个毕业设计软件最后写得越来越不知道该写什么,功能模块不知道要添加那些,已经实现的也不想再修改,可能自己惰性太大了

项目简单说明: 一个Linux Server的管理系统,可以添加服务器,将服务器添加到特定的组里,然后选定服务器,填好服务器的ip地址,端口号,用户名和密码,保存之后才能进行更多的操作,代码里并没有对ip地址这些东西做非法字符检测:(,可以通过点击按钮来获取服务器的实时信息,比如说内存,硬盘等等,还有就是通过发起TCP半链接来查看做简单的portscan,最后的功能是嵌入一个本地的虚拟终端

项目bug:硬盘信息获取之后图一直保留着,图形界面的显示有问题, 阅读全文 ……

分类: PROGRAM

Windows7 64位下搭建PyGTK开发环境

发布于 2011年05月22日 由 freetstar
23 条评论

毕业设计用PyGTK实现的,理论上是可以跨平台的,但是其中用到的一些模块可能无法在Win下用(或许折腾折腾这些模块可以搞到win平台的,好吧,我没那么蛋疼)

Win7上搭建GTK和PyGTK开发环境的详细步骤:

一:环境说明

Windows 7 x86_64  没有安装Python

二:下载必要的包

python-2.6.5.msi  下载地址:http://www.python.org/ftp/python/2.6.5/python-2.6.5.msi

注:是32位的,不是64位的,因为接下来的其他安装包只能在32位Python上运行,我之前装64位Python时一直无法成功配置开发环境

pycairo-1.8.6.win32-py2.6.exe 下载地址:http://ftp.gnome.org/pub/GNOME/binaries/win32/pycairo/1.8/pycairo-1.8.6.win32-py2.6.exe

pygobject-2.20.0.win32-py2.6.exe 下载地址:http://ftp.gnome.org/pub/GNOME/binaries/win32/pygobject/2.20/pygobject-2.20.0.win32-py2.6.exe

pygtk-2.16.0+glade.win32-py2.6.exe 下载地址:http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/2.16/pygtk-2.16.0+glade.win32-py2.6.exe

注意:如果使用的是Python2.6.5则下载的pycairo,pygobject,pygtk则都对应应该为py2.6的

gtk+-bundle_2.16.6-20100912_win32.zip 下载地址:http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.16/gtk+-bundle_2.16.6-20100912_win32.zip

注:都是用win32的,虽然宿主环境是64位win7 阅读全文 ……

分类: PROGRAM

用PyGTK实现的一个抽奖小程序

发布于 2011年05月11日 由 freetstar
14 条评论

为即将到来的TJLUG的第三次线下活动写的一个抽奖小程序,随机生成1,200之间的号码,点击开始按钮开始滚动数字,停止按钮开始停止数字,并选择当前数字为中将号码
python源代码:

#-*- coding: utf-8 -*-
import sys
import os
import random
import time
import threading

try:
    import pygtk
    pygtk.require('2.0')
except:
    pass

try:
    import gtk
except:
    print "GTK Not avaliable!"
    sys.exit(1)

class update(threading.Thread):
    def __init__(self):
        """初始化线程"""
        threading.Thread.__init__(self,name="update")
        self.label=None
        self.num=0
        self.over=False

    def setNum(self,widget,data):
        """设置label的text值"""
        widget.set_text(str(data))
        return True

    def kill(self):
        """设置标志位,来杀死线程"""
        self.over=True

    def run(self):
        while not self.over :
            self.num=random.randint(1,200)
            self.setNum(self.label,self.num)
            time.sleep(0.1000)

class lucky():
    """抽奖的一个小程序"""
    def on_window_destroy(self,widget,data=None):
        gtk.main_quit()

    def __init__(self):
        """读取glade文件,并自动链接信号"""

        #从xml文件中读取数据,并链接必要的信号
        self.builder=gtk.Builder()
        self.file=sys.path[0]+"/lucky.glade"
        self.builder.add_from_file(self.file)
        self.builder.connect_signals(self)
        for widget in  self.builder.get_objects():
            if issubclass(type(widget),gtk.Buildable):
                name=gtk.Buildable.get_name(widget)
                setattr(self,name,widget)

        #显示所有窗体
        self.window.set_size_request(800,500)
        self.window.show()

    def on_startbutton_clicked(self,widget,data=None):
        """开始抽奖"""
        self.u=update()
        self.u.label=self.luckylabel
        self.u.setDaemon(True)
        self.u.start()

    def on_stopbutton_clicked(self,widget,data=None):
        """停止,显示当前号码"""
        self.u.kill()

    #主循环
    def main(self):
            gtk.main()

if __name__=="__main__":
    gtk.gdk.threads_init()
    lc=lucky()
    lc.main()

阅读全文 ……

分类: PROGRAM

Python很酷,尤其对C/C++程序员来说是这样,然而Perl却不是

发布于 2011年05月8日 由 freetstar
22 条评论

python是一个很cool的脚本编程语言,perl很有用但是用起来很痛苦。对于几乎所有的任务,python有充足的理由是第一选择,尤其是对那些不熟悉perl或者python的C/C++程序猿们。对那些了解perl的C/C++程序员来说,python也堪称一个更好的选择

WHY?!

看了以下例子你就明白:

例子1:读取整个文件
perl

my $text = do { local( @ARGV, $/ ) = $file ; <> } ;
我看了半天是没看懂啥意思,ARGV在这里是干嘛的,来看看我找的其他例子
local( *FH ) ;
open( FH, $file ) or die "Problem\n"
my $text = do { local( $/ ) ; } ;
另外一个
my $holdTerminator = $/;
undef $/;
my $buf = ;
$/ = $holdTerminator;
我该说什么了,perl你不尴尬嘛

python

]fileContents = file("filename").read()

例子2:定义一个func函数,返回int值,第四个参数默认值为0

C++

[

int func(int parm1, int parm2, int parm3, int parm4 = 0);

perl

sub func
{
my $parm1 = shift;
my $parm2 = shift;
my $parm3 = shift;
die "Usage: func(parm1, parm2, parm3, parm4 = 0)"
unless defined($parm3);
my $parm4 = shift || 0;
...
}
看着是不是怪怪的,即使你会用perl。用如此笨拙的代码来实现这么简单的东西。die用来处理参数,
perl不担心你是否没有传入参数或者传了10个以上的参数。perl中函数中的变量默认是全局的,需要用my设置为局部变量。
要知道大部分c/c++ 程序猿可不习惯这个

python

def func(parm1, parm2, parm3, parm4 = 0):
...
python会自己处理参数个数,并且设置参数默认值,而且函数里默认的值是局部变量哦

例子3:打印当前的进程名,并跟随一个换行符

C++

cout < < argv[0] << ‘\n’;

perl

print "$0\n";
看着挺顺眼的是不,$0是进程的名字。或许你会尝试用$ARGV[0]代替$[0],要知道C++里我是能用ARGV[0]表示进程名的,但是结果却不是你要的
perl中ARGV仅仅包含要处理的参数,而不包括进程名(译者说,实际上shell一般默认$0也是进程名的

python

print sys.argv[0]
#好吧,让你比较困惑的是还要加一个sys

例子4:文件迭代,代开一个in.txt文件,对每行进行迭代操作

C++

ifstream infile("in.txt");
const int MAX_LINE_LEN = 256;
char line[MAX_LINE_LEN];
while(infile.getline(line, MAX_LINE_LEN))
{
... do something with line
}
//要创建一个buffer来存放每一行

perl

open(INFILE, "in.txt") || die 'Couldn't open "in.txt"';
while()
{
... do something with $_
}
open看起来挺好的。。加了个die代码之后变得丑了

Python

infile = open("in.txt")
for line in infile:
... do something with line
好简洁吧

例子5:检查字符串的开头是否以'H'开始,假设这个字符串是从文件迭代中获得的

C++

if(line[0] == 'H')
{
...

perl

if(substr($_, 0, 1) eq 'H')
{
...
perl中没有字符串操作符,你要调用substr函数,而且等于是eq而不是==

python

if line[0] == 'H':
...
c++程序猿更习惯这个吧
或者

if line.startswith('H'):

例子6:将一个列表传入函数中,使其能够在函数中修改它,而不是得到列表的拷贝
C++

void addItem(vector<string>& theList)
{
  theList.push_back("xyz");
}

vector<string> aList;
aList.push_back("abc");
addItem(aList);
这是通过C++中的引用传值进行的

Perl

sub addItem
{
  my $listRef = shift;

  push(@$listRef, 'xyz');
}

my @aList = ('abc');
addItem(\@aList);
这里用到了很多Perl特有的特点,用\表示alist是通过引用传值的等等。其实比较复杂

Python

def addItem(theList):
  theList.append('xyz')

aList = ['abc']
addItem(aList)
python中一切是通过引用传递的

还有以下例子:
Array and string length
Print a list that belongs to a hash
Trim whitespace from a string
Classes
Inheritance
Magic
Exceptions
Assert
Code Maintenance

来看看各路大神怎么推崇Python的吧
"Perl? Ha, ha, ha. Try Python" O'Reilly ad.
Bruce Eckel talks about Python当你发现Python的高效时,你会觉得我为什么要把生命中的其他时间浪费在其他语言上
Why Hate Perl 为神马讨厌Perl
Why I Promote Python
来看看Eric Raymond的意见Eric Raymond's "Why Python?"

原文在此:here

分类: PROGRAM

python学习之os.path模块&&elementtree处理xml文件

发布于 2011年04月25日 由 freetstar
10 条评论
学习中,肯定有不对的地方!
python中os.path常用模块
os.path.sep:路径分隔符      linux下就用这个了’/’
os.path.altsep: 根目录
os.path.curdir:当前目录
os.path.pardir:父目录
os.path.abspath(path):绝对路径
os.path.join():       常用来链接路径
os.path.split(path):      把path分为目录和文件两个部分,以列表返回
见图:
python中用ElementTree来读写处理xml文档
阅读全文 ……
分类: PROGRAM

正则表达式资源收集

发布于 2011年03月19日 由 freetstar
8 条评论

本文翻译自:http://www.hongkiat.com/blog/regular-expression-tools-resources/
正文:

正则表达式,通常称之为regex,通常用来匹配一定的字符串。正则表达式几乎在所有的编程语言中都有应用(据我的经验,非常强大)
举个小例子:用reg(ular expression?|ex(p|es)?)来匹配”regular expression”, “regular expressions”, “regex”, “regexp”
小图一张:

下面正式介绍一些有用的正则表达式工具和资源 阅读全文 ……

分类: PROGRAM
第 1 页,共 3 页123
  • 欢迎订阅

  • Github

  • 近期评论

    • 杜斌 CHINA Google Chrome Windows 发表在《留言板》
    • richard_ma CHINA Google Chrome Linux 发表在《vim中的tab和space》
    • freetstar CHINA Mozilla Firefox Linux 发表在《vim中的tab和space》
    • richard_ma CHINA Google Chrome Linux 发表在《vim中的tab和space》
  • Spread Firefox Affiliate Button
  • 我的豆瓣

  • 链接表

    • 51开源社区
    • Adam's
    • delectate's blog
    • Don's
    • Embest工作室
    • fl
    • ghostunix
    • Jasey Wang
    • Jerry's Blog
    • Moolight@Ericyue
    • OSMSG
    • OurUnix
    • panda
    • Pity is the Bomp
    • PT ubuntu
    • Tao Zhu
    • ubuntuhome
    • ubuntusoft
    • WOW!ubuntu
    • zhangzhfang
    • 丕字的blog
    • 傻东の学习笔记
    • 奶牛的blog
    • 孤风颠影
    • 灵亦
    • 熊猫党军委主席
    • 靖 轩
    • 马力哥
    • 黑孩儿
  • 我的支付宝

  • 功能

    • 登录
    • 文章 RSS
    • 评论 RSS
    • WordPress.org
© FreeTstar. WordPress 强力驱动 | Nest Theme by YChong