自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 数值转汉字

# Author: Bao import redef num_to_mandarin(num): """ Convert int number to mandarin in simplified Chinese. :param num: int :return: simplified Chinese string In [1]: num_to_mandarin(123784700200019) Out[1]: '一百二十三万七千八百四十七亿零二十万零一十

2021-02-07 22:45:09 220

原创 中英平行语料-机器翻译

网上比较容易找到的最大的中英平行语料应该是UN联合国的预料数据,语料偏公文且单一。使用china daily上双语数据作为语料。代码如下:添加链接描述

2021-01-21 23:55:10 802

原创 python使用asyncio单进程异步监听进程间queue通信

背景应用存在大量非持久性/高阻塞的独立过程时,阻塞对效果的影响比计算资源消耗更大。这个时候使用轻量协程(coroutine)比多线程更加安全可控,极大减少了锁、线程资源复制等隐藏问题/比使用多进程更加轻量易管理。例如:网路爬虫,每个网页的请求作为独立的高阻塞原子动作,使用协程能将大量请求异步调度使用多进程queue对协程任务create/cancel进行动态管理时,即引发本次记录问题:如何在异步执行task时,能在event loop中异步监听消息队列,既能正常执行单进程单线程的大量协程任务调度,又能

2020-12-25 15:24:00 1879 1

原创 WSL:轻量构建开发环境的良好实践

WSL  开发过程中,windows的办公便利性无可厚非,但是麻烦的是其工具链实在是无法恭维,系统环境跟实际生产环境(linux)大相径庭不说,配置更是相当繁琐(从环境变量配置到特立独行的shell、编译工具链等),让人头疼。  作为传统的这种解决办法:hyper-v / virtualbox / vmware等虚拟化技术本地起一个虚拟机,ssh到虚拟机作为开发环境。但是这种方法的弊端也很明显,vm manager进程资源占用都比较大,且虚拟化较重 —— 需要懂得网卡映射、clipboard共享、磁盘共

2020-10-25 22:49:09 390

原创 爬虫爬取公众号内容

*不涉及具体代码具体步骤获取移动端内容列表AVD模拟器(Discarded)经过实际尝试,算力占用过多,不予考虑。adb USB debugadb调试 + appium server + python appium-client 控制脚本点击/滑动获取所有内容列表、发送移动端页面访问请求。移动端流量请求劫持调查发现,所有移动端访问公众号内容发起的流量请求跟实际内容URI均保持统一格式:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mhRAOmnn-

2020-10-17 09:59:37 508

原创 python requests编码类型推断错误导致乱码

问题描述今天在教别人一些爬虫基础遇到一个从来没有出现过的现象:中文网站奇怪的乱码,经过多种编码尝试,均不能还原:import requestsfrom bs4 import BeautifulSoupres = requests.get('http://www.xinhuanet.com/')bs = BeautifulSoup(res.text, 'lxml')for item in bs.select('.dataList01 a')[:3]: print(item.text)

2020-10-15 01:10:58 2430 1

原创 python金额转换汉字为数字

金额转换很多情况下需要对文本当中的金额进行抽取转储成数值,往往又存在诸多恶心的不规范标记/表述/或者原始数据获取残缺的情况,因此做记录。思路实际上,字符串转换到数值,最大的麻烦十进制表示关系不如阿拉伯数字直观,自然语言的表述是嵌套甚至是省略的。但是有一点可以确定的是,自然语言对金额/数字的表述,也是存在逻辑关系的。比如:九百六十万九仟八百一。从字面上看,同样表述几百几千,会在多个位置出现,所以肯定是不能用正则或者其他纯字符传组织形式的方法去推敲转换。但是,不难发现,作为自然语言,表述尽管错乱多样,但

2020-08-17 19:28:58 1899 3

原创 linux下json文本解析工具:jq

前言在linux环境下,对于json文本阅读是相当麻烦的,jq处理则相当轻松。例子使用测试内容data.json[root@kilo-k5-controller baojx]# cat data.json{“char”: [“a”, “b”, “c”],“data:info”: {“bob”: {“address”: “jiangsu-nanjing”,“wage”: “100...

2019-08-20 19:16:42 1138

原创 yield伪多线程

import uuiddef record(): while True: product_number = yield print("Recoded number serial -> [{}].".format(product_number))def produce(tuple_list): for i,j in tuple_list...

2019-06-04 22:37:34 166

原创 bash实现字符串startswith/endswith功能

shell advanced program中有种比较有用的写法,能够简单模拟一般编程语言中的startswith/endswith的字符串以特殊字符开头结尾进行判断的功能,比较使用,记之:# e.g. 获取当前目录中以“est”为结尾的文件名:~]# for i in `ls`; do [[ $i == *"est" ]] && echo $i ; donetest其中...

2019-04-15 10:03:32 10350

原创 error: skipping because parent directory has insecure permissions问题

问题描述logrotate执行轮询异常,“considering log /var/log/xxxlogerror: skipping “/var/log/xxxlog” because parent directory has insecure permissions (It’s world writable or writable by group which is not “root”)...

2019-04-10 17:02:14 5734

原创 python实现简单diff工具

简述两套代码需要大量diff,遂顺手写了这么个小玩意儿。能对文件diff,也能对相同目录结构的目录进行迭代diff,将diff结果保存为html文件。参数说明:o 指定输出的目录名称(也就没管其他路径吧啦吧啦啥的,临时写的,默认当前目录)f 指定整个文件夹进行diff,默认diff结果也是按照文件目录的结构进行存放的,指定-f放在一起d 指定对文件夹下所有文件进行遍历diff上代码:...

2019-01-30 19:20:11 4347

原创 Linux网络虚拟化基础:Linux bridge / Network Namespace

Linux网络虚拟化基础:Linux bridge / Network Namespace简述 在网络虚拟化中,有两项技术的发展相当重要,甚至可以说是网络功能软件化、虚拟化的重要重要基础。linux bridge (brctl) 在linux中,对于创建的一些虚拟网卡之间实现通信,提供了linux bridge作为虚拟网桥,进行数据交换。Network Namespace (...

2019-01-28 15:15:20 1630

转载 openstack neutron中admin_state_up跟status

Neutron里面很多对象都有admin_state_up和status两个属性,并且看上去很难搞清楚二者的区别,本文将详细介绍这两个属性在Network, Port和Router上的含义。Networkadmin_state_up表示Network的管理状态,如果设置为False,则网络不再转发IP包。在创建网络的时候这个属性的值默认为True. 管理员可以通过API来修改admin_st...

2019-01-14 09:11:23 1676

原创 python自动化UI工具发送QQ消息

概述个人遇到过小的需求,windows自动水群发送垃圾消息,使用一些特别简单易上手的小工具,快速实现功能需求(而不是使用一些重量级的还需要额外花时间去熟悉功能语法的大工具,如UI自动化工具sikulix)。在一番摸索下,得出一番结论:对于多平台的UI自动复杂操作,还是去学sikulix吧,这不是啃一点win32 api获取窗口句柄就能轻松解决的,毕竟sikulix是MIT大佬折腾出来的。而且...

2019-01-04 23:48:50 14065 4

原创 删除亚马逊Kindle电子书的DRM,将AZW转为PDF格式文档

首先声明:我个人并不提倡盗版电子书,毕竟Kindle是一款很不错的电子设备,其次,亚马逊拥有电子书籍的版权,使用盗版是对电商、作者权益的危害。为什么Kindle电子书内容是糟糕的?大多数访问Kindle电子内容的人,都是拥有Kindle电子设备的。跟大多数公司为了保护知识产权的做法一样,亚马逊同样在电子书中嵌入了电子版权管理软件(DRM)。从保护版权的方面看来,DRM是使用最广泛且最有效的,但...

2018-12-09 22:56:05 19359 4

原创 python调用Linux C系统用户认证接口

最近在考虑一个很鸡肋的东西,如果一个python程序对身份要求很高,需要系统级别的用户认证才能进行访问,那么如何设计编写这样一个认证接口?于是便有了下文。

2018-11-29 20:51:34 515

原创 vscode snippets配置快速代码模板

1.基本snippets配置方法2.特别的宏使用(时间宏等)基本snippets配置方法选择用户代码片段进行管理。选择需要使用代码段的文件类型。在打开的json格式的文本中,添加示例键值对: "Quick code add": { "prefix": "test", "body": [ "\n# CODE ADDED BY BAOJX.", "$0"

2018-11-29 16:38:19 5843

原创 小记/usr/bin/python^M: bad interpreter: No such file or directory的问题

很多情况下python作为脚本语言编写的脚本都是在win上用IDE写好,自动化sync到服务器上,如果全部都是由IDE部署上去的一般不是很容易出问题,但是部署完之后在生产环境用vim稍作修改,往往会出现问题。如:#! /usr/bin/python# coding=utf-8... ...实际运行报错:/usr/bin/python^M: bad interpreter: No such ...

2018-11-28 18:49:18 9492

原创 python实现linux tree目录树状图

内网不能下载linux tree工具包,动手写之。先上一个能实现最基础功能的乞丐版片段。# coding=utf-8# Author : BaoJunxian# Date : 2018/11/27import os, sysPREFIX = ['└─ ', '├─ ']INDENTION = ['│ ', ' '*4]def tree(path , depth=1, fla...

2018-11-28 13:27:02 1155 1

原创 三言两语之neutron-openvswitch-agent服务

序言本次将三言两语对openstack中ovs相关的二层网络服务泛泛而谈,以提供整体而不失真的认知。主题1.neutron-server的作用2.neutron-openvswitch-agent的作用3.neutron-server跟neutron-openvswitch-agent之间的关系及基本运作正文1.neutron-server 众所周知,neutron是...

2018-08-06 08:53:41 4733

转载 web服务器、WSGI跟Flask(等框架)之间的关系

概览之前对 Nginx,WSGI(或者 uWSGI,uwsgi),Flask(或者 Django),这几者的关系一存存在疑惑。通过查阅了些资料,总算把它们的关系理清了。 总括来说,客户端从发送一个 HTTP 请求到 Flask 处理请求,分别经过了 web服务器层,WSGI层,web框架层,这三个层次。不同的层次其作用也不同,下面简要介绍各层的作用。web服务器,web框架与WSGI的...

2018-07-15 14:29:34 4344 2

原创 C++ lambda函数详解

c++中lambda函数是作为c++11新特新添加到c++中的,其主要是以匿名函数捕获scope内变量的方式构造闭包(closure)。相关标准参考:c++ reference 下面以若干不相干的简短程序的方式总结一下lambda的基本使用方式(暂未设计lambda的c++17/20的特性)[lambda.h]#include<iostream>#pragma onceus...

2018-07-01 22:02:49 4961

转载 配置使用vscode远程编辑服务器端文件

转载自:https://www.cnblogs.com/learn21cn/p/6189023.html使用vscode访问和修改远程文件,分三步实现:在远程linux机器上安装rmate;在本地windows上安装openssh;在vscode中安装扩展remote vscode。1、 在远程linux机器上安装rmatermate有很多中语言版本,这里用的是python的版本。github地址...

2018-06-12 10:27:33 11479 1

原创 CSDN博客原创访问量日报工具

最近突然有点迷上攒博客,没有什么比有人看、排名上升更让人兴奋的了。可是日常总不能老盯着看增加了多少访问量,像排名这种也没办法记住变化,故粗浅调查了一下beautifulsoup4这个python写的html文件解析模块,写了一个小工具用来统计每篇原创文章的访问量变化,在电脑上跑crontab,定时向公司邮箱发送报告。# filename:CSDNvisitReport.py# Autho...

2018-06-11 23:40:13 298 1

原创 关于坑爹的windows路径以及\处理相关

在写脚本自动处理归档windows下本地文件的时候真的特别头疼,主要就是windows下文件命名规则可以中文、夹带空格以及路径表示处理起来比较麻烦。“\”表示路径 不同于linux用“/”来进行当前目录跟上一级目录文件的路径分隔,windows使用反斜杠进行分隔表示。但是在python等编程语言中,反斜杠所作为转义字符存在的,因此表示字符反斜杠需要“\\”进行表示。print('\'...

2018-06-10 13:32:25 3130

转载 Linux下一些实用基础开发工具

GNU DDD(Data Display Debugger)是命令行调试程序,如GDB、DBX、WDB、Ladebug、JDB、XDB、Perl Debugger或Python Debugger的可视化图形前端。它特有的图形数据显示功能(Graphical Data Display)可以把数据结构按照图形的方式显示出来。DDD最初源于1990年Andreas Zeller编写的VSL结构化语言...

2018-06-08 11:24:20 1273

转载 const 指针与指向const的指针

转载自:http://www.cnblogs.com/lihuidashen/p/4378884.html const指针的定义:  const指针是指针变量的值一经初始化,就不可以改变指向,初始化是必要的。其定义形式如下: type *const 指针名称;   声明指针时,可以在类型前或后使用关键字const,也可在两个位置都使用。例如,下面都是合法的声明,但是含义大不同:con...

2018-06-04 15:02:48 454

原创 自动编译执行并生成log、记录CSV文件工具脚本

最近实习,因工作需求,需要对大量源码分别用不同编译器进行编译执行并分别记录文件编译信息以及编译成功运行的信息,并根据要求记录每个文件的csv信息。小组提供的一个稍有简陋的shell脚本功能有限,个人也完全不懂shell。因此重编写了一个小工具,记录之,尽管可能重用率可能并不高。 工具工作内容:单一项目文件夹中不相干的每一个源码(c/c++)进行三种编译器编译(gcc/clang以及公司自己...

2018-05-31 23:34:26 2600

原创 用python openpyxl模块自动化修改csv文件

excel表格有时数据量过大且数据对象有规律分布的时候,手动进行格式化填充显得尤为麻烦。利用python openpyxl模块(文档链接openpyxl.readthedocs)可以高效对csv文件进行自动化填充。模块安装:pip install openpyxl• 读取文件: ○ load_workbook -- 加载工作簿(excel文件,绝对路径) § ...

2018-05-31 23:05:04 2931

原创 llvm初识及clang套件安装工具

新近实习的岗位是倒腾编译器的,主要研究c/c++的clang编译器的一些特性。Python转c/c++,也是第一次开始接触编译器这么高大上的底层玩意儿,特此记录。编译器简述python/java这类解释型语言,只需要在运行平台上安装对应的虚拟机、解释器就可以将源码按照规范转成对应平台的机器码生成可执行程序。而c/c++这种编译型语言则需要将源码在特定的平台上生成适用的机器码并生成可执行文件...

2018-05-31 22:52:43 1727

原创 利用python subprocess模块从系统获取程序运行状态返回值的方法

最近在编写一个工具的时候遇到一个很棘手的问题:linux开发环境下对静态语言程序进行自动化批量编译,需要根据编译结果执行一定的操作,但是bash调用编译器的bin程序对文件进行编译之后的状态有点棘手。 一开始想到的方法是,直接在工具中写死:import osos.system('gcc <_file> ;echo $?')通过在执行编译命令后紧接着执行echo $?命令...

2018-05-31 01:23:15 19351

原创 python2.x中input跟raw_input的区别

对于标准输入的处理,不同于py3,将所有标准输入均处理为字符串,py2中则严格区分数值跟字符串。py3:print(type(input()))>>1212<class 'str'>py2:print(type(input()))>>1212<type 'int'>但是对于py2 input字符串去有所不同:pri...

2018-05-30 23:40:08 286

原创 多层嵌套列表转为单层list

最近在编写工具对csv文件进行自动化填充的时候,遇到一个比较有意思的小问题,作为一个函数返回值,将多个数据结果作为list元素返回,返回值就成了一个多层嵌套的list。a = [arg1,arg2,[arg3,[arg4,],]返回值作为修改填充的参数,在嵌套的列表中自然不适合提取遍历自动填充,因此就想到有没有方法将嵌套的list转成单层的列表便于数据提取。在没有现成模块方法的情况下,最简...

2018-05-30 23:03:30 5416

原创 python zipfile压缩文件夹

在使用python zipfile模块进行压缩文件创建的时候,发现貌似只有zipfile对象的write()方法对文件的添加,那么如何将一个文件夹压缩添加到压缩文件中呢? ①直接write() dir: 创建一个如图结构测试目录,如下压缩:import zipfilewith zipfile.ZipFile('aa.zip','w') as target: target...

2018-03-12 19:34:24 18351 1

原创 python open()函数 文件的打开方式及特点

文件操作第一步就是open()方法来创建文件对象。为了实现不同的操作,需要指定open()打开方式。有'r'/'w'/'a'/'r+'/'w+'/'a+'以及'rb'等二进制打开方式然而,实际操作中,经常会因为打开方式不对,造成很多不必要的小错误,还要参考一些文档进行修改,很是麻烦,特此总结。1.不指定“写”的方式,都不能进行写操作(比如a) 2.只有’w’/’a’及其相关方式打开,...

2018-03-08 17:18:03 4199

原创 个人代码量统计工具

代码量能体现一个程序员的能力(起码是正相关的),恰逢最近看到了os模块一些用法,手头无事,随手写了一个小小的工具用来统计个人代码量。# Author: BaoJunxian# Date: 3/6/2018#path format is for windows temporarilyimport osdef cal(filePath=None): count = 0 ...

2018-03-06 23:04:13 925 1

原创 python shelve模块的使用及注意点

介绍shelve是python中一种存储结构化数据的模块,用法跟字典相似,以键值对的形式储存。基本使用方法:1.引入模块import shelve2.创建数据文件:with shelve.open(filename) as object:object = shelve.open(filename)两种文件操作的方式均可以。不难看出,对shelf文件数据的读写是不用指定文...

2018-03-06 16:55:22 3182

原创 mininet自定义拓扑

简述之前没事大概了解过一点SDN类的新玩具,除去openflow跟ryu控制器的一点基本了解之外,并没有做过多少实际code(大概还是能力不够/(ㄒoㄒ)/~~),这次借助毕设机会做点记录,做点深入了解。 mininet本身是py2写的一个网络仿真器,用namespace隔离仿真用来快速构建网络原型。host用network namespace隔离,控制器跟交换机节点则在root n...

2018-03-04 17:18:40 4063

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除