2018年4月30日星期一

5月计划

3月底的时候订了个4月的计划,现在回顾一下。

当时制定计划的时候就把手机上的特价推荐网站app给卸载了,过了大概4天又装上了,现在没有网购真的不行,日常的生活用品基本上都在网上解决,浏览特价网站时看到的东西正好买回家也提升了生活品质,我强迫自己不经常看特价网站,一般分3个时间,上午下班,下午下班,晚上睡觉前。

计划一个月看完《神雕侠侣》的,刚开始看的很快,用了几天就看了三分之一的内容,越到后面看的越慢了,4月20日左右看到三分之二就没有再看了,我不喜欢这样的小说。

桌子上的Oracle数据库入门的书看了前半部分,主要是Oracle的安装和简单操作,后面讲SQL语法的部分没有看了。这本书写的并不好,好多概念讲不清楚,我上网查了不少资料才弄懂,近期写一篇Oracle和SQLServer数据库区别的文章。

5月打算看一本王小波的散文,学习java web开发基础。

2018年4月29日星期日

《神雕侠侣》读后感(二)

第一次看武侠小说,确实和以前看过的不一样,故事情节繁复多变,每一节相对独立而又连续。

就《神雕侠侣》来说,我看了三分之二,没有看完,也不想看了,因为小说中的人物没有一个喜欢的,除了郭靖的憨厚比较可爱以外。

杨过虽然聪明多才,但是脑子有点问题,不知道为什么对大小武那么好,从小到大一直以来二武都看不起他,找机会就会讽刺暗算嫉妒他,却冒死为他们吸毒。杨过对郭芙也是好得出奇,杨过风流倜傥迷倒万千少女,在郭芙面前却黯淡无光,不管她如何奚落讽刺落井下石,杨过始终对她一忍再忍,哪怕被她砍掉了一只胳膊,他依然为她解难,我实在是看不下去了。

再说全书的女主角小龙女,刚出场时很神秘很惊艳,像不食人间烟火的世外高人,行为稳重沉默寡言,一种高高在上成熟的感觉,没想到却是个爱情白痴。我自始至终都不知道她和杨过怎么相爱的,难道就是因为朝夕相处?但是这看起来不是爱情啊,而且他俩的性格差得太远了,一个热情似火,一个温吞如水,一个聪明冲动,一个单纯驽钝,他俩在一起生活非整天闹矛盾不可。从小龙女的几次出走可以看出,他们性格相差很远,都没有为对方考虑着想,这不是爱情,最多是寄托。描写小龙女的笔墨并不多,穿插在各个故事当中,越到最后越显单薄。网上流传,金庸原本打算把小龙女写死的,因为读者反对而作罢。我觉得都写成这样了,人物真的没有存在的必要了。

还有一个不喜欢的人就是黄蓉了,写的太刻薄了,从一开始见到杨过就主观上定了他的罪——上梁不正下梁歪。以后多次猜忌杨过,让人痛心,这哪像一个大侠的作为。

看《神雕侠侣》的原因是为了一句话“一见杨过五终身”,看完才知道有点上当。书中的女人基本上是见到杨过就爱上他了,也没个缘由,世上真的没男人了。陆无双还说得过去,和杨过闹了不少回目,那程英完颜萍耶律燕几乎和杨过都没说过几句话为啥就突然爱上他了,还有公孙绿萼也就早上被杨过夸了几句浮夸的话,她就春心荡漾舍己为人了。这些在现实生活中根本不可能啊!

看武侠小说还有一点不习惯的是太多招式的描写,我想必须拥有很好的空间想象力和了然于心的人体穴位图才能看得懂,我几乎遇到这些就跳过,只知道他们在打架,然后快速翻到结果看输赢和受伤情况。

总体来说,《神雕侠侣》人物众多,性格各异,由事写人,连贯绵长。好多性格突出的人物分外耀眼,以至于走出武侠世界之外充斥于现实生活中。

武侠小说的兴起有其必然性,辉煌于七八十年代,影响了好几代人,但随着武侠小说的产生的环境和受众群体的变迁,没落是必然的了。

《神雕侠侣》读后感(一)

少年时很爱看武侠电视剧,喜欢摆弄刀枪棍棒,幻想着自己拥有轻功和强大内功,具有飞檐走壁的本领,然后闯荡江湖。

这次第一次读武侠小说,便是金庸的《神雕侠侣》,在众多的武侠故事里我偏爱神雕侠侣,因为在它热映的时候我正好上初中,年少气盛是最爱做武侠梦的时候了,所以印象特别深。

这些年看到的网络资讯中总会出现金庸啊杨过啊等段子性的文章,有分析的,有类比的,有模仿的。看来现在的网络环境已经被和我一样成长的80后给霸占了。

看过三分之一的《神雕侠侣》感受如下:

1、作者很熟悉人体穴位,武斗中总是出现各种穴位名称,争斗双方尽指着人家身体上的穴位打。

2、人物外貌和环境描写得都很粗,新的人物刚出现很难让读者有个整体认识,不像红楼梦那种描写人物的事无巨细。人物靠所作所为和对话来深化,有些时候会被作者偏执地带着走,丝毫没有逻辑。

3、小说的情节衔接得很紧,几乎是前一个剧情刚过后一个又接踵而来,所以看的时候很过瘾,想一次性看完。

4、人物铺垫不足,有些人物间的相互喜爱觉得很突然,比如程英怎么一下子就喜欢上杨过了。

2018年4月25日星期三

煤气软管替换记

买的二手房基本上没有去维修,就买了十几个E27和E14的LED灯泡换上了。前几天送煤气罐的师傅过来,说连接煤气灶的软管老化了,需要换新的。但是当时房子在装修的时候,软管埋在墙里,没法换,师傅也说没办法。

我上网搜集了一些煤气软管的知识:

  • 1、软管的有效期2-3年需要更换(时间长了会老化,变硬,承受压力变小,容易爆炸)
  • 2、软管的长度不能大于2米,并不得有接口(长度和弯折、拉伸、脚踏、龟裂、老化等风险成正比)
  • 3、软管不得穿墙(不利于排查隐患,而且水泥墙体会腐蚀软管,就是说即使破了个洞你也发现不了)

看了下现在家里的情况是,煤气罐放在橱柜下面,通过二分软管,一根连接煤气灶,一根连接热水器,且两个软管都穿墙。听房东说房子90年代装修的,看来这两根软管也有20多年没换过了。

隐患存在,立马解决,用气安全,危及生命。解决方案是,既然换不了埋在墙里的软管,干脆舍弃不用。第一步在橱柜上方开个孔,用新的软管直连煤气罐和煤气灶。第二步在卫生间新增一个煤气罐,走明路,用新的软管直连热水器。这样做的缺点是需要租用两个煤气罐,软管在外不美观;优点是利于更换软管,用气安全,人身安全。

2018年4月20日星期五

Python循环解析文件夹下XML文件,并将结果插入到SQLServer数据库

需求如下:A、B两台服务器分别在内外网,B服务器取A服务器上数据库中的数据,需要通过XML报文传输数据,A服务器生成XML报文,B服务器拿到XML报文解析入库。

需求分析:

A服务器发送过来的XML报文源源不断地放到B服务器上的以下目录:D:\test中

  • 1、程序遍历test目录,得到目录中所有XML文件路径
  • 2、解析XML文件
  • 3、将解析结果插入SQLServer数据库

以上三步的实现参见以下三篇文章:

Python遍历文件夹中文件操作Python使用XPath解析XML文档Python使用pymssql连接SQLServer数据库

只需把三步串起来就能实现需求了,额外增加以下内容:

  • 1、解析完一个XML文件,需要把它从目录中移走(备份)
  • 2、程序常驻内存,永远在执行,不退出,增加休眠时间

完整的代码如下:

import os,shutilfrom lxml import etreeimport pymssqlfrom datetime import datetimeimport timerootdir = 'D:/test'def mssql(sql):    conn=pymssql.connect(host='.',user='sa',password='test',database='test')    '''    如果和本机数据库交互,只需修改链接字符串    conn=pymssql.connect(host='.',database='Michael')    '''    cur=conn.cursor()        cur.execute(sql)    conn.commit()        cur.close()    conn.close()def ReadXML(path):    tree = etree.parse(path)    root = tree.getroot()    for child in root:        try:            NO=child.xpath('./NO/text()')[0]            STEP_CODE=child.xpath('./STEP_CODE/text()')[0]            MARK=child.xpath('./MARK/text()')[0]            INSERT_DATE=datetime.now().strftime('%Y-%m-%d %H:%M:%S')        except Exception as e:              print(e,"XML读取失败")        try:            sql="insert into HEAD VALUES('"+NO +"','"+STEP_CODE+"','"+MARK+"',''"+INSERT_DATE+"')"            #插入数据库                        mssql(sql)          except Exception as e:              print(e,"数据插入失败")    dstfile=rootdir+"/bak/"#备份目录    try:        shutil.move(path,dstfile)#移动文件     except Exception as e:        print(e)   def main():        #列出文件夹下所有的目录与文件    l = os.listdir(rootdir)         for i in range(len(l)):            path = os.path.join(rootdir,l[i])            if os.path.isfile(path):                   path=path.replace("\\", "/")                                      ReadXML(path)if __name__=="__main__":    while True:        main()        print("开始抓取")        time.sleep(15)#休眠15秒

2018年4月19日星期四

Python遍历文件夹中文件操作

以下代码实现遍历D盘test文件夹下的所有文件,得到所有文件的路径。为防止Windows下转义字符的干扰,文件路径改为反斜杠/的形式,使用path=path.replace(“\\”, “/”)将得到的文件路径转换为反斜杠形式。

import osrootdir = 'D:/test'#列出文件夹下所有的目录与文件list = os.listdir(rootdir)for i in range(0,len(list)):path = os.path.join(rootdir,list[i])if os.path.isfile(path):path=path.replace("\\", "/")print(path)

Python使用pymssql连接SQLServer数据库

一、下载对应Python版本的pymssql包

pymssql包的名字一般如下pymssql-2.1.4.dev5-cp36-cp36m-win_amd64.whl,其中cp36代表Python3.6版。

二、安装pymssql包

开始-运行-CMD-pip install E:\Downloads\pymssql-2.1.4.dev5-cp36-cp36m-win_amd64.whl

三、连接SQLServer数据库(以下查询需要先建立数据库)

import pymssqlconn=pymssql.connect(host='10.0.0.1',user='sa',password='test',database='test')'''如果和本机数据库交互,只需修改链接字符串conn=pymssql.connect(host='.',database='Michael')'''cur=conn.cursor()cur.execute('select * from test')#如果update/delete/insert记得要conn.commit()#否则数据库事务无法提交#conn.commit()print (cur.fetchall())cur.close()conn.close()

Python使用XPath解析XML文档

XPath(XML Path Language)是一种小型的查询语言:

1)可在XML中查找信息

2)支持HTML的查找

3)通过元素和属性进行导航

python开发使用XPath条件:

由于XPath属于lxml库模块,所以首先要安装库lxml

XPath的使用方法:

首先讲一下XPath的基本语法知识:

四种标签的使用方法

1) // 双斜杠 定位根节点,会对全文进行扫描,在文档中选取所有符合条件的内容,以列表的形式返回。

2) / 单斜杠 寻找当前标签路径的下一层路径标签或者对当前路标签内容进行操作。

3) /text() 获取当前路径下的文本内容。

4) /@xxxx 提取当前路径下标签的属性值

5) | 可选符 使用|可选取若干个路径 如//p | //div 即在当前路径下选取所有符合条件的p标签和div标签

6) . 点 用来选取当前节点

7) .. 双点 选取当前节点的父节点

注:以下代码在Python3.6.1下调试通过

一、Python读取XML简单实例

from lxml import etreetext = """            1        2008        141100                                4        2011        59900                        68        2011        13600                    """root = etree.XML(text)for child in root:   print(child.tag, child.attrib)   print('rank',child.xpath('./rank/text()')[0])   print('year', child.xpath('./year/text()')[0])   print('gdppc', child.xpath('./gdppc/text()')[0])   print('neighbor', child.xpath('./neighbor/@name')[0])

二、Python读取本地XML简单实例

如果XML文档存放在本地,可以文件对象打开xml就读取成字符串类型,也可以直接tree = etree.parse(“D:/lujing/test.xml”)读取。

etree.parse("D:/lujing/test.xml")读取。from lxml import etreetree = etree.parse("D:/lujing/test.xml")root = tree.getroot()for child in root:   print(child.tag, child.attrib)   print('rank',child.xpath('./rank/text()')[0])   print('year', child.xpath('./year/text()')[0])   print('gdppc', child.xpath('./gdppc/text()')[0])   print('neighbor', child.xpath('./neighbor/@name')[0])

三、为防止读取XML出错导致程序退出,可使用try捕获异样

from lxml import etreetree = etree.parse("D:/lujing/test.xml")root = tree.getroot()root = etree.XML(text)for child in root:   try:       print(child.tag, child.attrib)       print('rank',child.xpath('./rank/text()')[0])       print('year', child.xpath('./year/text()')[0])       print('gdppc', child.xpath('./gdppc/text()')[0])       print('neighbor', child.xpath('./neighbor/@name')[0])       print('neighbor', child.xpath('./neighbor/@name')[1])   except Exception as e:        print(e)

2018年4月2日星期一

2018年续费NameSilo域名

如果不是收到NameSilo的邮件,我都忘了域名续费的事情了,时间过得好快啊,一年一度掏腰包的时间又到了。

稍微在网上找了NameSilo续费优惠码,没有找到可用的,翻看去年NameSilo续费的价格也是8.99美元,看来几乎没有可用的NameSilo续费优惠码了,即使花费时间找到也就优惠1美元,也就作罢,直接原价续费吧。

同样是8.99美元,今年支付的人民币比去年便宜5块多钱,看来人民币又升值了。

写这篇文章的目的就是明年续费的时候看一下,今年的域名续费价格如下:

Domains 卖家:NameSilo, LLC
汇率:1.00 USD = 6.30323000 CNY
8.99 USD| 56.67 CNY