Win10微软输入法调教

老实说,现在输入法真的很不让人放心,一不小心就给大数据了。

IME在windows系统中,是天然的键盘logger。国内厂商的操守让人着急……

Win10中自带的微软输入法,问题起始不少,但是调教下,也能使用。

主要就是词频调整和记录之前输入的功能需要加强下。

继续阅读···

老旧软件之Borland Turbo C 2.01(附带Borland官方开发文档)

20多年了,终于找到了这神器。

当年从这里,不知道花费了多大的精力……(主要是谭浩强的祸)

现在,从老旧软件神站里面翻到了这个,还附带原生文档……

这算是老程序员的情怀了:

原版程序下载

原版文档下载

PS:很怀疑当年谭浩强大爷是否真看过原版文档……

老旧软件之Matlab1

翻一块大学时候的旧硬盘发现的。应该是上大学时从某个国外竞赛网站下面拖下来的。

dosbox跑了下,能跑起来。不过已经忘记语法了。

80s的版本,包含文档和demo。文档见下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
MATLAB Users' Guide
May, 1981
Cleve Moler
Department of Computer Science
University of New Mexico
ABSTRACT. MATLAB is an interactive computer program
that serves as a convenient "laboratory" for
computations involving matrices. It provides easy
access to matrix software developed by the LINPACK and
EISPACK projects. The program is written in Fortran
and is designed to be readily installed under any
operating system which permits interactive execution of
Fortran programs.
CONTENTS
1. Elementary operations page 2
2. MATLAB functions 8
3. Rows, columns and submatrices 9
4. FOR, WHILE and IF 10
5. Commands, text, files and macros 12
6. Census example 13
7. Partial differential equation 19
8. Eigenvalue sensitivity example 23
9. Syntax diagrams 27
10. The parser-interpreter 31
11. The numerical algorithms 34
12. FLOP and CHOP 37
13. Communicating with other programs 41
Appendix. The HELP file 46

还真有点历史沧桑感哦。

点击下载

SQLite的Online Backup备份处理

SQLite的python自带接口里面,是没有在线备份功能的。

所以,一般来说,备份方案使用这种方式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import sqlite3
from StringIO import StringIO
def init_sqlite_db(app):
# Read database to tempfile
con = sqlite3.connect(app.config['SQLITE_DATABASE'])
tempfile = StringIO()
for line in con.iterdump():
tempfile.write('%s\n' % line)
con.close()
tempfile.seek(0)
# Create a database in memory and import from tempfile
app.sqlite = sqlite3.connect(":memory:")
app.sqlite.cursor().executescript(tempfile.read())
app.sqlite.commit()
app.sqlite.row_factory = sqlite3.Row

大概的核心,也是使用connection的iterdump功能。

不过,如果引用一个库,sqlitebck,使用起来会简单很多。

1
$ pip install sqlitebck

调用接口:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# Basic usage example - memory database saved into file:
>>> import sqlite3
>>> conn = sqlite3.connect(':memory:')
>>> curr = conn.cursor()
# Create table and put there some data:
>>> curr.execute('CREATE TABLE foo (bar INTEGER)')
<sqlite3.Cursor object at 0xb73b2800>
>>> curr.execute('INSERT INTO foo VALUES (123)')
<sqlite3.Cursor object at 0xb73b2800>
>>> curr.close()
>>> conn.commit()
>>> import sqlitebck
# Save in memory database (conn) into file:
>>> conn2 = sqlite3.connect('/tmp/in_memory_sqlite_db_save.db')
>>> sqlitebck.copy(conn, conn2)
>>> conn.close()
>>> curr2 = conn2.cursor()
# Check if data is in file database:
>>> curr2.execute('SELECT * FROM foo');
<sqlite3.Cursor object at 0xb73b2860>
>>> curr2.fetchall()
[(123,)]
# If you want to load file database into memory, just call:
>>> sqlitebck.copy(conn2, conn)

另,为了提高性能,sqlite的内存数据库名字,可以使用保留的:memory:

真★随机数-Random.org

一般编程,使用的随机数大多是伪随机。Random.org提供在线的真随机数服务。

种类很多,大致说说:

  • 范围内的随机整数
  • 给定字符串序列乱序输出
  • 随机图片
  • 字符串随机生成
  • 密码服务
  • ……

网络获取也比较简单:

1
2
curl "https://www.random.org/integers/?num=1&min=1&max=100&col=1&base=10&format=plain&rnd=new"
>> 16

当然,也可以用比较正规的api服务:api.random.org

估计到今年(2017)年中收费。

PS:年会抽奖就用这个东西。保证公平公正。(网站提供数字签名服务,铁证)

京东联盟推广多了一个协议选项

看看吧,如果是使用phantomjs的话,就需要多加一些点击事件。

1
2
3
4
5
driver.find_element_by_id("adtType_4").click()
driver.find_element_by_xpath("//div[@id='adtTypeDiv']/div/label[4]").click()
driver.find_element_by_id("protocol_1").click()
driver.find_element_by_xpath("//div[@id='protocollDiv']/div/label[1]").click()

用python的requests的话,就需要在post里面,添加新字段。

1
protocol=2

python的requests去除掉ssl的warning

requests访问https网站的时候,如果证书出现问题,会raise出来异常。

其实,做爬虫的,还在乎啥证书,安不安全呗。

一般,会在requests的getorpost方法里面加入:

1
verify=False

形如:

1
resp = requests.post("https://media.jd.com/getAdvcode/1",data=data,verify=False)

不过,这样就意味着requests可能会出现warning。

1
connectionpool.py:730: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.org/en/latest/security.html (This warning will only appear once by default.)

warning 是意外的日志数据,多了很讨厌。

利用下面的方法关闭:

1
2
3
4
import requests
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

PS:这种情况一般是探测到了中间人攻击。如果使用动态代理,出现类似warning的时候,最好去掉这个代理(他在抓你的https数据)