为了统计代码行数(lines of code, LoC),最简单的思路是用python读取每个所输入的代码文件的行数,然后加起来。 本实现分离了代码文件识别和统计,代码文件由用户给出。 1. 实现: Python实现,用enumerate函数统计可以防止内存占用过大的问题,我们要的只是一个计数,每行读完扔掉即可(pass)。代码如下: #!/usr/bin/env python import sys def file_len(fname): with open(fname) as f: for i, l in enumerate(f): pass return i + 1 file_n = len(sys.argv) – 1 print file_n, “files:” sum_line = 0 for i in range(file_n): this_line = file_len(sys.argv[i + 1]) sum_line += this_line print this_line, “\tLoC\t”, sys.argv[i […]

0. 环境 iOS 10 + MacOS 10.12 + Python 2.7 1. 思路 APP界面中弹出的题的位置和答案的位置都是固定的,因此我们可以将手机屏幕想办法投到电脑屏幕上,通过OCR识别指定区域,实时打开搜索引擎界面搜索问题,甚至匹配答案。 2. 关键步骤 2.1 投屏 我是iPhone 5s + Mac电脑,可以用Mac的Quicktime Player播放器的屏幕录制功能(安卓据说可以用ADB)。 具体的,打开Quicktime Player后,点击“文件–新建屏幕录制–(红色录制按钮旁的下拉菜单)选择从手机录制”,这时,手机屏幕就实时投到屏幕上了。 2.2 截屏和OCR 截屏 截屏要将你的手机投屏窗口固定在一个位置,找准屏幕上的左上角和右下角两个坐标,利用PIL中的ImageGrab进行抓屏,以截取题干为例,代码如下: from PIL import ImageGrab image = ImageGrab.grab((50, 170, 540, 330)) OCR 利用tesseract库和对应的pytesseract接口进行OCR,具体配置可以参考[1]。 import pytesseract ocr_str = pytesseract.image_to_string(image, lang=’chi_sim’) 2.3 搜索 分两种思路,我们可以直接打开一个浏览器页面用百度搜索,把答案筛选工作交给人: import webbrowser url = “http://www.baidu.com/s?rn=50&wd=” + […]

紧接上篇文章(《Galileo开发板+微信公众平台实现简单的物联网家庭监控》( http://blog.jcix.top/2015-11-27/galileo_wechat/ ) ), 以下功能做了改进: * 实现了Galileo开发板上用USB摄像头+python版opencv监控并通过微信公众平台进行异常报警的功能。 * 通过connman实现了wifi网络的自动连接和随时修改功能。 * 通过post到服务器,实现了微信控制led灯亮、灭或者光控的功能。 视频监控功能的实现 (完整代码在github: https://github.com/zhangjaycee/galileo_pys/blob/master/cam_wechat.py ) 1.图像采集 galileo支持python的opencv库,这给简单的图像处理提供了极大的便利。 图像采集: cap = cv2.VideoCapture(0)#打开摄像头 cap.set(3,320) cap.set(4,240) while True: ret, frame = cap.read() 2.图像处理 我们要做键控,所以可以记录第一帧,然后通过帧间差别进行报警。 cap = cv2.VideoCapture(0) <!–more–> cap.set(3,320) cap.set(4,240) avg = None lastUploaded = datetime.datetime.now() motionCounter = 0 normal_count = 0 start_flag = 0 time.sleep(10) while True: […]

上次写的博客,介绍了下刚拿到galileo开发板的时候如何进行折腾。 上次折腾完后,因为我发现galileo本身和一个装着linux的arduino/pc一样,那么用它来实现一些物联网应用会比较简单,又赶上本学期的工程设计课作业,所以初步实现了一个能用微信监测室内温度和拍摄室内照片的小型物联网系统。 参考: 《鼓捣Galileo开发板的一些吐槽》( http://blog.jcix.top/2015-11-04/introduce_galileo/ ) 记录下实现过程。由于本人表述能力较差,采用简述加大量外部连接的方式进行记录。 系统功能 用微信获取室内当前温度或者一张较为实时的照片。 通过亮度传感器自动自动控制LED的亮、灭。 基本结构 系统实现最初的想法,就是让微信公众平台和开发板通过互联网直接进行信息传递,但是因为微信公众平台对我们所搭建服务器采用get和post方法进行通信,所以在没有公网ip的校园网环境,一般只能租云服务器或者VPS进行中转。 这样,系统的基本结构就变成了: 开发板外围<–>Galileo开发板<–>云服务器<–>微信公众平台<–>手机微信<–>用户 可见整个通信链将用户和外围器件连接起来,实现了简单的物联网。

环境:ubuntu 14.04 32bit 工具:psutil 对应的shell工具:ps top lsof netstat ifconfig who df kill nice free ionice iostat iotop uptime pidof tty taskset pmap 安装: 采用pip可以安装pip install psutil。(注意需要安装python-dev: sudo apt-get install python-dev) 用法举例: 获取信息 cpu信息: psutil.cpu_times() #cpu完整信息 psutil.cpu_count(logical=False) #cpu物理个数 logical默认为True即cpu逻辑个数 内存信息: mem = psutil.virtual_memory() <!–more–> print mem.total print mem.free print mem.swap_memory() # sswap分区信息 磁盘信息 网络信息 其他信息 进程管理 […]

准备工作 环境:Ubuntu 14.04 32bit 工具:dnspython 对应的shell工具:nslookup dig等 dns预备知识: 常用资源记录RR(Resource Records)类型 A记录: 主机名–> IP地址 MX记录: 定义邮件服务器域名 CNAME: 域名间映射 PTR: IP地址 –>主机名(反向解析) 更详细介绍参考博文《 [DNS]常见资源记录定义(Resource Record) 》 用法举例 查询A记录 import dns.resolver domain = raw_input(‘input an domain:’) A = dns.resolver.query(domain, ‘A’) for i in A.response.answer: for j in i.items: if ‘address’ in dir(j): print j.address else: print ‘failed to […]