11
2014
October

火狐扩展静默安装

本文介绍如何静默安装火狐扩展。 安装火狐扩展有多种方式,常见方法是在web界面下载xpi模块,火狐会提示是否安装,点击确定之后扩展将会开始安装过程。此外,也可以将插件放到火狐的extension目录下,火狐再次启动即会检测到新的插件,用户将会看到是否启用此扩展的提示。本文介绍如何自动安装扩展,不显示确认界面。   火狐如何检测插件 根据火狐的官方文档, 火狐可以从四个位置检查新的扩展。任一位置检测到新的扩展则会启动扩展安装流程。 在火狐的配置页(about:config),可以看到对应键extensions.enabledScopes。这是一个4位的.......

11
2014
October

一天入门VBScript

VBScript是一个脚本语言,可以在Windows上面直接运行。VBScriopt的另外一个用途是asp。 首先,VBScript对变量、函数的声明以及关键字大小写不敏感。   1.hello world wscript.echo "hello world" 在windows下可以运行`cscript scriptname.vbs`执行脚本。   2.变量声明,逻辑运算 Dim a,b a=8 and 7 b=8 xor 7 'a=0,b=15   3.循环、函数 循环: do until xx.......

24
2014
September

火狐扩展入门

本文介绍在linux下如何编写简单的火狐扩展。 扩展(extension)不同于插件(plugin), 区别请自行谷歌。插件具体编写方法参见火狐官方文档。 编写火狐的扩展有三种方式, Add-on SDK extensions、Restartless extensions以及Overlay extensions. Add-on SDK extensions基于Restartless extensions.前者更加抽象;后者更加底层, 安装之后不需要重启浏览器。Overlay extensions更像直接和火狐内核进行交互,这就会更加复杂了。   1.安装SDK.......

11
2014
September

Ubuntu:Setting locale failed

有时候会遇到如下问题: perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LC_PAPER = "zh_CN.UTF-8", LC_ADDRESS = "zh_CN.UTF-8", LC_MONETARY = "zh_CN.UTF-8", LC_NUMERIC = "zh_CN.UTF-.......

27
2014
May

Flask静态文件部署

flask项目完成,部署到apache时遇到了问题。部分静态文件的content-type没有甚至出现了乱码,浏览器报错content-type mismatch。这是因为链接资源的时候,资源类型已经被标注,比如text/css 然而在http响应头里面却变成其他类型。 对于CSS文件,如果HTTP头里面的content-type标注出错,这会导致浏览器样式表不能够被正确加载。flask内部使用一个函数send_file来返回对静态资源的请求。仔细检查这一函数, flask利用文件名来推测文件的类型,对于猜测出来的多个文件类型,flask会选择第一个作为mimetyp.......

21
2014
April

软件序列号收集

本文已经被加密,请输入密码查看

应用层加密解密的实现

目录 加密算法 生成密钥 padding IV 加密模式 CryptoJS 基本用法 编码格式转换 Pycrypto 基本用法 编码格式转换 CryptoJS & PyCrypto 参考资料   所谓的HTTPS,就是在传输层之上的应用层里,嵌入一个TLS/SSL的子层。客户端与服务器使用非对称密钥认证后,使用临时生成的对称密钥进行通信。证书的价格比较昂贵,在一些对信息安全要求不高的小型应用场合里面可以使用其他解决方案。本文介绍在应用层实现的一个简单加密、解密模式。 加密.......

11
2014
April

文章加密测试

本文已经被加密,请输入密码查看
28
2014
March

翻译:操作系统的线程

本文翻译自Andrew S. Tanenbaum的著作《Operating System Threads》 目录: 线程模型 线程的使用 在用户空间实现线程 在内核空间实现线程 混合实现方式 调度器激活 单线程程序的多线程化 Andrew S. Tanenbaum 2002 1月25日 在传统的操作系统中,每一个进程有一个地址空间和一个单一的程序流(thread of control)。实际上进程就是这么定义的。然而我们经常会遇到这样的一种情形,让多个程序流以一种伪并发的方式运行在同一个地址空间,每一个程序流就像是独立的进程(地址空间仍然是共享的)。这.......

21
2014
March

程序员鄙视链图

   看到一张有趣的图片

13
2014
March

整数平均数计算

最近看到一个有趣的问题, 关于平均数的计算。 假设a、b均为整数,现在需要计算它们的平均数。一般做法是: c=(a+b)/2 这种计算方式的缺点在于a+b在二者之和足够大的时候会造成整数溢出。比如一个用16字节表示整数的程序,在a=65535, b=1的时候。ab之和为0。如果ab绝对值够小,这种问题是可以避免的。但是如果需要求平均值的数足够多,整数溢出的情况最后依然会遇到。另外一种计算方法是: c= a^b +(a&b)>>1 由于ab之间的进行的是位运算,最后绝对不会遇到溢出的情形。 假设a,b二进制表示为a[n]a[n.......

27
2014
January

Flask的WSGI实现

        WSGI是python下,web应用(application/framework)与服务层(server/gateway)交互的一套协议。假设有框架A和框架B,二者和web server(比如apache)采用了不同的协议,那么为了使二者都能够在apache上正常运行,我们就需要写两个不同的模块供apache调用。python下的框架百花齐放,为每一个框架写一套模块明显不切实际。WSGI的出现使开发者只需要关注于应用层面而不用去考虑这些底层细节,减少了不必要的工作。  WSGI简介 1.application/.......

21
2014
January

python 的coding:utf-8

有时候经常可以看到python文件里面的声明: #!/usr/bin/env python #coding:utf-8 这种方法出自PEP 0263,是python为了明确该文件编码所设定的规则。 #coding:utf-8 这一行可以放置于文件第一行或第二行,只要匹配正则表达式 coding[:=]\s*([-\w.]+) 都可以被识别。不明确声明编码则或者错误声明编码规则会导致字符串不能正确被识别。几个比较常见的例子: #!/usr/bin/python # -*- coding: latin-1 -*- import os, sys ... #.......

20
2014
January

Ubuntu 启动器添加菜单

有时候需要在ubuntu系统里面安装软件。如果软件不是从ubuntu software center安装的,安装完成之后往往需要建立一个软链接,将可执行文件链接到桌面,使用起来多少有点不方便。 为了将程序添加到ubuntu系统菜单里面,需要两个步骤: 1.建立*.deskotop文件。 2.将文件放到 /usr/share/applications/ 或者 ~/.local/share/applications/ 文件夹下。 *.desktop文件贴一个例子: [Desktop Entry] Version=1.0#版本名称 Name=BackMeUp#程序名字 Co.......

18
2014
January

本站的天气预报

    最近看了一些网页天气预报的插件。虽然我对天气预报的准确性不好给出评价,但是个人最大感受是,天气预报的插件UI不尽如人意。即使UI有好一点的,插件的风格又和博客不一致。比如jquery下的一个插件jquery weather 目前版本3.0,外观还可以,但是直接拿过来用感觉和这个博客风格不搭。自己写一个插件也是挺时间的,更何况一些天气预报网站的api调用还是要收费的。最后我使用的是这里的一个插件,它风格非常简洁,使用起来也比较方便。只是插件里面有一个链接无法删除,javascript无法跨域,估计没办法解决问题了。    .......