额 前段时间和同学接毕业生的毕业设计,有一个中科大的就想用c#做,没办法就只能用c#了,然后装的win虚拟机,下载的vs2013免费版,期间试用时间过了,注册个账户登录就好了。大学的时候开过课,还做过大作业,基本都忘干净了。从官网看的文档,直接用的mvc5 ,ide的好处就是可以智能提示。
然后我也不懂继承关系,看教程,把继承的类给写错了,爆了一个看不懂的错误,根本找不到原因。没法,找个了asp.net的群,问了一下,大部分人都没用过mvc模式,不过其中有个人说你看一下你的model,然后我就把我的代码和官网教程对比,发现继承类写错了。。第一个问题算过去了
总之都是不了解的原因,我也想过找本书看一遍,但是就想做完毕业设计也不再碰了,就想看看官方文档做出来就行了。之后又碰到链接数据库model都对应一个数据库链接操作不会写,查了点资料,加了一个类文件,搞定了。后来还碰到外键定义的方法不会,搜索外键还不是这么叫的应该,文档上有但是看的时候过掉了,看目录有些词根本不知道是讲这个的,英文也不行。最后找到文档写出来了。
总的来说使用mvc方式开发这样的任务还是很方便很快,大多数问题都是我不了解造成的。
Read more...
Archive for 编程
whitespace的python实现
汗,简直是无奇不有,在lisp群里看到他们说这个语言。当时就感觉很有意思,然后搜索看了一下wiki和官网。当时只是看了wiki的表格,那些文字没看。就感觉和草泥马语言一个东西,挺简单的,于是想自己实现一个python版的。然后没几天就写完了。
主要借助wiki的中文介绍,官方的例子程序和下载的haskell源代码。haskell以前没看过,然后发现看代码一点不费劲。在lisp群里说,妮神说他和erlang差不多,我才意识到可能是以前看过erlang的原因。parser是编写边测试正确的,vm是一口气写完再测的,然后就不想测了,但是开始官方的例子有的跑不通,没办法,就一个指令一个指令的写功能测试到基本正确。然后能跑通官方例子,大部分指令都测过基本功能,除了流程的没写。
说说这个语言,只有三个字符:空格,tab,换行。写完就是一片空白,说是有助于防止别人将代码打印带走。我去真蛋疼。让我写我会用“\n\t”代替,用代码再生成,不会用真的空白,那样怎么看。编辑器还好,可以将空格和tab的背景颜色修改一下,换行就是最后的换行。github上就是整个一片白。说这个和草泥马语言差不多,其实我把三个字符换成草泥马三个字,也就真的差不多了。
是换行符的坏处就是,可能一行不是一个完整的语句,下一行又是两个语句。下意识的总喜欢把一行想成一个基本完整意思的代码。所以这个换行符很带疼,其实可能也是指令设计的不好。
项目地址:python-whitespace
Read more...
动手写一个语言玩-语言定位
n久前就有这样的冲动,这次读了淫神的代码后,决定还是动一下手。
语言语法主要类似python的,靠缩进来定义代码块,动态语言/静态语言还没想好0 0(应该会静态类型)。
以前想做的时候看过,flex,yacc/bison什么的,看了淫神的代码突然想自己实现一下,问题是难免的,出现问题解决问题。不下手不会知道问题会出在哪,这也是成长过程。看了淫神的代码开始想使用python写,后来觉得有必要复习一下c了,c语言用的太少了,是时候提高一下水平了。
再一个临时的决定是使用llvm,虽然现在还不是很懂其中的奥秘,看看文档慢慢来吧。这也是发现现在好多语言都在用来提示速度,dropbox也在搞py的实现,期待能达到更快的速度。
感觉如果用flex,bison ,llvm 写一个语言应该超简单。。。当然是写一个玩的而不是用的。
我看了淫神的代码 ,然后去翻python的源代码parse部分,无从下手,打眼也抽不出来各部分功能,然后就放弃了,自己慢慢搞。汗
更新
周末,屋里又看了一下python parser部分的源代码,找到了基本流程,开始基本就在Parser/pgenmain.c和Python/pythonrun.c这两个文件,流程我也过了一遍,函数里边具体的分析没仔细看。突然感觉流程都差不多,我可以借鉴一下python的c代码,质量不用说肯定是不错的,偶卡卡。
Read more...
ubuntu使用yin语言
好吧,我先把yin语言的java代码看了个差不多才想编译一下,主要原因还是想打印点测试的东西,并不是想写点什么。
总的来说像淫神说的,写得代码却是容易阅读。我java只是上学的时候开过课,再没用过,看的过程中只查了两三个的函数就看完了。看完了发现写个括号语言不算太难0 0,我的意思仅仅是学习知识不是编写一个可以用的语言。编译原理的课也开了,都是理论,传说中的龙书又是啥书的,我几分钟看来一遍,感觉和课本没什么区别。看一个编写初期的代码更容易理解一些东西。以前也想自己实现过,想想解析代码的复杂程度就怕了。
环境需求,参照github的wiki上。
java jdk 1.7,ubuntu12.04自带好像是openjdk 我以前搞安卓游戏的时候换过了。
maven 3.2 我直接从官网下载的二进制版本,http://maven.apache.org/download.cgi。解压到/opt/maven-3.2.1,vim /home/a0x55aa/.bashrc,添加export PATH=/opt/maven-3.2.1/apache-maven-3.2.1/bin:$PATH。source一下。mvn -version看一下。应该没问题了
然后mvn compile,自动下了一堆的东西0 0。pom.xml配置文件也看不懂。
mvn exec:java -Dexec.mainClass="org.yinwang.yin.Interpreter" -Dexec.args="tests/assign1.yin"
又下载了一堆东西。。。java果然不是一般人能搞的。我草。太恶心了,都不知道什么用。
Read more...
ubuntu安装bochs笔记
$ sudo apt-get install build-essential xorg-dev libgtk2.0-dev
编译bochs
$ ./configure --enable-debugger --enable-disasm
$ sudo make
$ sudo make install
记录几个目录:
/usr/local/bin/bochs Bochs启动程序
/usr/local/bin/bximage Bochs带的制作磁盘镜像文件的工具
/usr/local/share/doc/bochsrc-sample.txt Bochs的配置文件例子
配置文件官方给的例子有详细的解释,修改一下就好。比如我编译的bochs的版本为 bochs-2.5.1,提示错误:
device: hd
message:ata0-0:could not open hard drive image file '30M.sample'
你可以新建一个hd img 也可以把配置文件里hd注释掉,再修改一下boot就好了.
这样安装的bochs带有调试功能,如果你想直接运行,可以执行c命令。
[caption id="attachment_698" align="alignnone" width="227" caption="ubuntu bochs调试"]
[/caption]
Read more...
![ubuntu bochs调试 ubuntu bochs调试](/static/uploads/2012/08/Screenshot-227x300.png)
今天采集某站数据经验总结
今天用python进行网站数据采集,该站主要有这么几种措施防止数据采集:
1、div标签不标准。闭合标签跑太远,导致采集不准确。
2、放置干扰字符。这种直接提示错误,没有办法采集。错误提示:'ascii' codec can't encode character u'\u3009' in position 5
解决方案:
第一种如果处理不好会带有许多原站信息,采用缩小div标签的范围,但是效果不明显。感觉用正则判断比较不错,但是又经常将标签前后放置很多空格和换行,还是很麻烦。
第二种,根据提示的字符,找到对应的字符“〉”,我到原文中搜索一看,差,震惊。竟然这么写的:“<p〉”。我是没有直接替换,采用保存到文件,然后手动修改,再读取文件处理。
Read more...
Beautiful Soup初探
在抓取网页数据进行html分析的时候,以前一直使用HTMLParser,文档:http://docs.python.org/library/htmlparser.html
自从知道HTMLParser后,一直感觉他就是一个神器,分析简单快捷,几行代码搞定了。
这次在总页面抓取使用HTMLParser,没有问题,很快实现结果。但是在获取详细信息的页面时候,开始提示错误了:HTMLParseError: malformed start tag,各种google,其中有一大部分的结果是关于Beautiful Soup的,于是我了解了Beautiful Soup。HTMLParser还有一个缺点,对编码的处理也不是很友好。
开始安装的Beautiful Soup最新版本4.4.1,有问题,也是报这个错误。由于前面搜索知道换成版本3.07a就好了,直接又换了一个版本。先说官网地址:http://www.crummy.com/software/BeautifulSoup/,Beautiful Soup 3.07a下载地址:http://www.crummy.com/software/BeautifulSoup/bs3/download//3.x/。
测试通过,没有报错。能否抓取成功下面试试。正在看官方文档,版本3的文档不一样,贴地址:http://www.crummy.com/software/BeautifulSoup/bs3/documentation.zh.html
时隔二分钟,测试成功。发现Beautiful Soup更加简单,文档也不错只看了开始的例子就会用了,速度应该不会太好,不过我只是满足自己需要。很好很强大。
刚刚结合文档总结了几个用法,很多根据文档写出文档没写的例子:
#基本的标签查找
asd = soup.find('div', id="productDescription")
#可以这样写
soup.findAll('td', {'class':"bucket normal"})[0]
#想要进行查询结果中查找
aaa = BeautifulSoup(str(asd))
#查找多个不同class,或
bbb = aaa.findAll('div', {'class':["leftImage","rightImage"]})
Read more...
Python字符串的encode与decode乱码问题解决方法
这是一篇转载文章,原文链接:http://www.jb51.net/article/17560.htm
刚写了一个汉字的图片验证码,被错误提示折腾了。看到这篇文章便分享。
报错“UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)”
字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。
decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编码的字符串str1转换成unicode编码。
encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode('gb2312'),表示将unicode编码的字符串str2转换成gb2312编码。
因此,转码的时候一定要先搞明白,字符串str是什么编码,然后decode成unicode,然后再encode成其他编码。
代码中字符串的默认编码与代码文件本身的编码一致。
如:s='中文'
如果是在utf8的文件中,该字符串就是utf8编码,如果是在gb2312的文件中,则其编码为gb2312。这种情况下,要进行编码转换,都需要先用decode方法将其转换成unicode编码,再使用encode方法将其转换成其他编码。通常,在没有指定特定的编码方式时,都是使用的系统默认编码创建的代码文件。
如果字符串是这样定义:s=u'中文'
则该字符串的编码就被指定为unicode了,即python的内部编码,而与代码文件本身的编码无关。因此,对于这种情况做编码转换,只需要直接使用encode方法将其转换成指定编码即可。
如果一个字符串已经是unicode了,再进行解码则将出错,因此通常要对其编码方式是否为unicode进行判断:
isinstance(s, unicode) #用来判断是否为unicode
用非unicode编码形式的str来encode会报错
如何获得系统的默认编码?
#!/usr/bin/env python
#coding=utf-8
import sys
print sys.getdefaultencoding()
该段程序在英文WindowsXP上输出为:ascii
在某些IDE中,字符串的输出总是出现乱码,甚至错误,其实是由于IDE的结果输出控制台自身不能显示字符串的编码,而不是程序本身的问题。
如在UliPad中运行如下代码:
s=u"中文"
print s
会提示:UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)。这是因为UliPad在英文WindowsXP上的控制台信息输出窗口是按照ascii编码输出的(英文系统的默认编码是ascii),而上面代码中的字符串是Unicode编码的,所以输出时产生了错误。
将最后一句改为:print s.encode('gb2312')
则能正确输出“中文”两个字。
若最后一句改为:print s.encode('utf8')
则输出:\xe4\xb8\xad\xe6\x96\x87,这是控制台信息输出窗口按照ascii编码输出utf8编码的字符串的结果。
unicode(str,'gb2312')与str.decode('gb2312')是一样的,都是将gb2312编码的str转为unicode编码
使用str.__class__可以查看str的编码形式
原理说了半天,最后来个包治百病的吧:)
Read more...
#!/usr/bin/env python
#coding=utf-8
s="中文"
if isinstance(s, unicode):
#s=u"中文"
print s.encode('gb2312')
else:
#s="中文"
print s.decode('utf-8').encode('gb2312')
操作系统课程设计--短作业优先作业调度
今天把操作系统作业做完了,本来以为很简单的一个程序几十行就写完了。没想到写了有二百行,各种添加变量,各种添加if,各种添加for,直接晕菜了。
写得很乱,说不定明天就忘记写得神马意思了。先贴出来,等上机的时候在优化一下。<操作系统课程设计--短作业优先作业调度>
code:
Read more...
#include
#include
#include
#define MAXNUM 5
#define MAXTIME 20
struct sjf
{
char name[8];
int arrivetime;
int servicetime;
int runtime;
int is_over;//是否运行完
int starttime;
int finishtime;
int turnaroundtime;
float rightturnaroundtime;
}p[MAXNUM];
static int j=0,k=0,l=0;//j当前正在执行的进程 k当前时间已经到达的最大进程 l是否没有进程运行
//读取进程数据
void readProcess()
{
int i;
char str[200];
FILE *fp;
char *token;
if ((fp=fopen("Process","rt"))==NULL)
{
printf("读取文件失败!\n");
getchar();
exit(1);
}
printf("|--------------------------------------|\n");
printf("|--进程名称--|--到达时间--|--服务时间--|\n");
for (i=0;i
用python写了一个百度贴吧的删帖器
几天前的事了,断断续续也写了几天。用了wxpython写的界面,在ubuntu下写的,在xp下编译成功,win7测试成功。
为防止工具乱用,只支持一个贴吧。代码很多是参考别人的写法,省去了自己阅读javascript的时间,所以总体比较简单,借机大体学习了wxpython,很强大,就是用py2exe编译出来的文件太大了。可能是自己没有优化吧。
现在写程序发现总是调用别人写的代码,神马时候能有水平写个接口让别人用一下T_T..
Read more...