代码速记
文章平均质量分 75
ccat
Python Tutorial 2.3,2.4,2.5, 2.6, 2.7, 3.1 译者,《微型LISP解释器的构造与实现》作者。Jaskell系列Java/Scala组合子算法库作者。
展开
-
Java 程序的命令行解释器
我这些年来做过太多类似的工作,随着程序开发的进展,命令行参数的规则越来越复杂,于是简单的几个赋值操作迅速变成了一大堆逻辑分支。需要深度的控制help行为,这个解释器还暴露了几个与帮助文档有关的中间方法,包括帮助格式的模板字符串。这个工具已经初步满足了我的需要,在未来,也。在这个过程中,我需要通过命令行参数给这个 java 程序传递一些参数。但是总的来说,这个设计不需要再有大的改动,如果真的遇到在结构上不能满足我的需求,也许我会。许我会加入一些便利的工具方法,类似。原创 2023-12-18 15:40:11 · 919 阅读 · 0 评论 -
随机、优先与权重(续)
Python 版本的 Croupier原创 2023-04-01 14:26:40 · 668 阅读 · 2 评论 -
Apache Commons Bridge For Scala
通过一些 Scala 的高级技巧,我们得到了一个非常完美的 Apache Commons Lang3 StringUilts 封装,它足够健壮,完全基于 Options,同时又将对 null 值的支持完整的暴露给原始的 String 类型。在获得与原版 Java 库一致的功能的前提下,提供更符合 Scala 风格的实现。...原创 2022-08-29 00:56:54 · 514 阅读 · 0 评论 -
Double Not Exists——SQL语言的一个经典问题
关系型数据库中,有一个经常出现的模式,就是集合A和集合B,通过一个关系集R,组成多对多的关系。举个例子,我们有学生表create table student( id serial primary key, name text)课程表create table course( id serial primary key, name text);可以建立一个选课表create table take_course ( id serial p原创 2022-05-27 00:38:43 · 1135 阅读 · 3 评论 -
PyParsec 的 Result 类型
如何获知函数执行是否成功,以及它的返回值?不同的语言和技术体系,给出的策略是不同的。Java 的方案比较简单,抛异常表示错误,执行成功的话 return。很多 C 技术栈,比如 windows api,采用的是以整数返回值表示是否发生错误,和错误代码的方式,函数执行结果则放在一个函数参数中,这个参数通常定义为某一个struct的二阶指针。Go 语言推荐的方式是让函数返回两个参数,即总是 `err, result` 形式,调用函数的代码通过判断 err 是否为 nil 来判断是否发生了错误。在函数式编原创 2021-11-03 15:49:04 · 179 阅读 · 0 评论 -
PyParsec 升级至 0.7.3
PyParsec 是 Python 3 的 parsec 移植。这个项目原本是一个非常微型的练手作品,是有一次 archmmit 会场里,我和老友赖勇浩聊天的时候,随手写出来的。因为 Python 是动态类型语言,很多 Haskell 里基于静态类型构建的类型约束也就失去了作用——当然,另一方面说,动态语言项目,很多静态语言的技术要点也不用考虑。后面有很长一段时间,我都没太去想这个项目,对于我来说,验证了 python 可以作类似的东西,也就达成了目的。但是近期我加入到 csdn 的 ai 团队,有一些开原创 2021-10-31 21:19:10 · 405 阅读 · 1 评论 -
Jaskell 的一次大升级
最近的工作经常要写 parser,也就有了改进的目标,这几天对 Jaskell Core 做了一个大版本升级,主要是将内置组合子作为扩展,一次打包封装为 typeclasses 。例如,以前这样定义的 parser: "Brackets" should "test brackets pairs" in { val state = State("[hello]"); val parser = Between( ch('['), ch(']'),原创 2021-10-16 13:54:57 · 266 阅读 · 0 评论 -
jquery 团队的 javascript 测试工具 qunit
今天写了点 Javascript 的小东西,想做个测试,google了一下,看到 jquery 团队使用的测试工具 qunit (http://docs.jquery.com/QUnit) 。有一篇中文文章 http://www.cnblogs.com/nuaalfm/archive/2010/02/26/1674235.html 介绍了这个工具,我尝试了一下,文中的示例已经略有陈旧,跟最新的 q原创 2012-06-20 20:13:41 · 6268 阅读 · 0 评论 -
用python发送put请求
做了一个服务,上传数据时接受put请求,查了一下,客户端代码用Python来写的话非常简单,跟Post基本一致。这里是一个用PUT上传文件数据的例子:import urllib2opener = urllib2.build_opener(urllib2.HTTPHandler)with open("/storage/pic/logo.png") as f: data=f原创 2012-04-22 11:30:07 · 23806 阅读 · 0 评论 -
MyISAM 升级到 InnoDB
迁移服务器后,发现还有一批表是 MyISAM 引擎,写了一个脚本,把它们全升级到了 InnoDB。在线地址: https://github.com/xiachufang/BlackCookbook/blob/master/python/sa/My2InnoDB.py源码:#!/usr/bin/env python#coding:utf8#将mysql数据库中所有的 myisam 表原创 2012-04-10 23:24:39 · 5306 阅读 · 0 评论 -
Python 速成培训及其幻灯的编写配置
<br />前几天为公司同事做了一次 Python 语言的速成培训,幻灯在这里:Python速成指南View more presentations from March Liu.<br />这次的幻灯中,我对平时使用的 latex 代码做了一些调整,新的引言区如下:<br /><br />/documentclass[utf8x, notes=hide]{beamer}%/usepackage[bars]{beamerthemetree} % Beamer Theme v 2.2/useth原创 2010-11-18 00:08:00 · 3926 阅读 · 0 评论 -
筛法求素数
石器时代的版本:import mathl=[]for i in xrange(2, 100000): if any(i%x==0 for x in l if x可以自己选择上限:import sysimport mathhigh = int(sys.argv[1]) if len(sys.argv)==2 else 10000l=[]for i in xrange(2, 100000): if any(i%x==0 for x in l if x原创 2010-06-24 10:20:00 · 1247 阅读 · 0 评论 -
扔色子
<br />#!/usr/bin/env pythonimport sysimport randomdef roll(top): return random.randint(0, top)top = int(sys.argv[1]) if len(sys.argv) > 1 else 100print roll(top)原创 2010-07-01 23:15:00 · 1546 阅读 · 2 评论 -
日用 Python —— 压缩图片尺寸
<br />自己写了用来压缩 DC 照片的,批量处理整目录文件,非常方便。需要安装 PIL<br /> <br />#!/usr/bin/env pythonimport Imageimport osimport os.pathimport syspath = sys.argv[1]small_path = (path[:-1] if path[-1]=='/' else path) +'_small'if not os.path.exists(small_path):原创 2010-06-24 22:34:00 · 9898 阅读 · 0 评论