2013年 七月 15日 周一 | tags: python, ldap, rtx, win32com, -- (permalink)

最近公司正在准备使用 AD ( Activate Directory )服务来进行公司员工的帐号管理,这样就避免不了需要对AD的帐号和RTX的帐号和组织关系进行同步,所以才有了这篇文章。

Python-Ldap

Python-Ldap是python用来操作ldap的模块,可以对ldap进行查询,添加,修改,删除等操作,如下代码:

ldap_host = "127.0.0.1"
ldap_port = 389
ldap_who = "turbidsoul.me\\test"
ldap_cred = "test"
ldap_baseondn = "OU=XXXX,DC=turbidsoul,DC=me"
l = ldap.open(ldap_host, ldap_port)
    l.simple_bind_s(ldap_who, ldap_cred)
    result_id = l.search(ldap_baseondn ...

2013年 六月 23日 周日 | tags: python, cmd, ftp, progressbar, -- (permalink)

这是昨晚下班之后同事问我的一个问题,不过当时已经7点,如果在不出公司就会赶不上最后一趟公交车,所以就给同事说回家研究研究礼拜一给他答案,昨晚无事就看了一下。

需要用到的模块

原理

我们先来看一下progressbar的是原理,如下代码:

import sys
import time

for x in xrange(0,51):
    sys.stdout.write("Computing: [%s%s] %i%%\r" % ('#' * x , '-' * (50 - x) , x * 2))
    sys.stdout ...

2013年 六月 08日 周六 | tags: pi, python, leibniz, walliz, -- (permalink)

前两天和同事在聊天的时候说道了 $pi$ 的算法,回家之后在维基上看了一下关于 $pi$ 的公式,正好这回没事干,就用Python实现了两个比较简单的公式,分别是Leibniz 和 Walliz.

Leibniz

公式如下:

$1 - 1/3 + 1/5 - 1/7 + 1/9 - ... = pi/4$

这个公式也可以用另外一种方式表示:

$pi/4 = sum_{n=0}{oo} (-1)n/(2n+1)$

从公式中能看出来,Leibniz是当n趋向于无穷大的时候,计算 $(-1)^n/(2n+1)$的和,用python代码实现如下:

def leibniz_pi(self, n ...

2013年 六月 05日 周三 | tags: sublime, python, emmet, -- (permalink)

最近发现我的sublime的emmet失效,查看了控制台,发现在sublime启动的失败,启动的时候报了如下的错误:

Traceback (most recent call last):
  File ".\sublime_plugin.py", line 62, in reload_plugin
  File ".\emmet-plugin.py", line 710, in <module>
    init()
  File ".\emmet-plugin.py", line 101, in init
    update_settings()
  File ".\emmet-plugin.py", line 231, in update_settings
    ctx.js()
  File ".\emmet\context.py", line 178, in js
    self ...

2013年 六月 04日 周二 | tags: python, morse, code, -- (permalink)

写这个完全是闲着无聊,看了一片趣文趣文:表白后女生发给我一串五层加密的密码 这篇文章来源自百度贴吧的的有一个帖子传送门,文章的内容还是很欢乐的。

言归正传,Morse Code 的算法是根据维基得来的,说白了就是键值对,编码解码也都是按照键值对进行匹配的。

编码如下:

__morse_code__ = {
    'A': '.-', 'B': '-...', 'C': '-.-.', 'D': '-..', 'E': '.', 'F': '..-.', 'G': '--.',
    'H': '....', 'I': '..', 'J': '.---', 'K': '-.-', 'L': '.-..', 'M': '--', 'N': '-.',
    'O': '---', 'P': '.--.', 'Q': '--.-', 'R': '.-.', 'S': '...', 'T': '-', 'U': '..-',
    'V': '...-', 'W': '.--', 'X': '-..-', 'Y': '-.--', 'Z': '--..',

    '1': ['.----', '.-'], '2': ['..---', '..-'], '3': ['...--', '...-'], '4': ['....-', '....-'], '5': ['.....', '.'],
    '6': ['-....', '-....'], '7': ['--...', '-...'], '8': ['---..', '-..'], '9 ...

2013年 五月 31日 周五 | tags: sublime, python, -- (permalink)

这是一个很简单的问题,我最近在研究jdk8,使用sublime自定义的编译方式运行,是编译运行的结果显示到sublime控制台上,但是这里如果运行的话会提示 Decode error 虽然没有太大的影响但是看着总是很难受,而且有时候也不太方便,所以就自己找出问题解决掉。

解决的方式很简单,按 ctrl+shift+f 进入高级搜索,在 find 中填入 Decode errorwhere 中填入sublime的插件目录和要所搜的文件类型,如下:D:\SublimeText\Data\Packages,*.py 因为我们能确定到要搜索的东西在python的代码文件中,所以这里直接搜索 *.py 文件即可,等上几秒中就能看到搜索结果,结果如下:

Searching 8509 files for "Decode error"

D:\SublimeText\Data\Packages\Default\exec.py:
  181 ...

2013年 五月 14日 周二 | tags: python, misaka, pygments, markdown, -- (permalink)

来由

最近新blog开发到文章页面生成这块,看上了GFM这样的方式,使用markdown编辑页面,也很适合程序猿。使用富文本编辑始终太重量级,并不适合程序猿写文章,所以我也很推崇jekyll,用他来写文章、blog确实很geek也很舒适。

经过几次简单的测试,最后决定使用Misaka+pygments,下面我简单说一下实现方法。

开始之前

我的测试例子中使用到了三个包,分别是 web.py , Misaka , pygments ,如果在开始之前需要使用pip安装这三个包

Web.py

Web.py是python的一个轻量级web框架,我只是简单的使用了一下,有兴趣的人可以去它的官网,它的官方有一个中文教程说的很详细。

我这里使用他做一个简单的web服务:

class Index(object):
    def GET(self):
        return "Hello World!"
urls = (
    '/', 'Index'
)

if __name__ == '__main__':
    app ...

2013年 四月 28日 周日 | tags: python, arithmetic, functional, -- (permalink)

今天看InfoQ上的一篇关于 Fn.py 的文章,Fn中的Stream可以实现无限序列,例如文章中的代码:

f = Stream()
fib = f << [0, 1] << map(lambda x, y: x + y, f, drop(1, f))

这是实现了一个无限的斐波那契数列,我根据这个实现了一个等比级数,等比级数的公式是f = b(n-1), b是基数,n=1 f=1, n>=2 f=b(n-1)。

我实现的方法使用了生成器:

def geo_sequence(b):
    n = 2
    while 1:
        yield b ** (n - 1)
        n ...

2013年 三月 24日 周日 | tags: python, arithmetic, -- (permalink)

无事可做用python实现的的排列和组合的算法,顺便也复习以下2.7中yield的用法

# coding: utf8


def perm(items, n=None):
    if n is None:
        n = len(items)
    for i in range(len(items)):
        v = items[i:i + 1]
        if n == 1:
            yield v
        else:
            _items = items[:i] + items[i + 1:]
            for p in perm(_items):
                yield v + p


def comp ...

2013年 二月 28日 周四 | tags: webrtc, websocket, python, -- (permalink)

这篇文章本来早就该写了,但是电脑坏了,在加上工作比较忙,所以就一直拖到今天。

研究这玩意是因为公司需要做技术储备,所以在过年放假的时候就研究了一下,但是花的时间有点多,放假11天有7天,加上上班后的2天,一共是9天,其中花了2天时间研究WebSocket协议,又花了两天查看WebRTC的官方文档,搞明白WebRTC是如何运行,磕磕绊绊的直到调试成功可以俩人视频又花了快5天时间。

别的不说了,下来说说我是如何做的,当然WebSocket使用的是python+twisted实现的,当然协议的解析是看网上的一篇文章【用Python实现一个简单的WebSocket服务器】,在自己改了一些代码,就算是简单的WebSocket服务器。当然我是在firefox19上测试通过的,chrome上并没有测试通过,没什么时间,只能等家里电脑好了之后在家里测试。

首先来简单的说一些WebSocket协议:

websocket

对于我这里来说 :


« Page 2 / 3 »