摘要: 首先,我要通过编程直接获取,而不是去读诸如ifconfig等命令的输出。 其实是只想获取IPv6地址的,不过我猜想它们差不多,也确实看到不少相关搜索结果,于是顺带着看了。 首先,使用gethostbyname查自己通常是不行的,因为可能得到127.0.0.1,而且我猜,这样不能处理拥有多个IPv4地址的情况。另外一种方式是连上某个主机,然后调用getsockname。这样需要能够直接连上那个主机,好处是如果有多个网络接口,这样可以知道到底走的是哪个接口,调试网络时不错。我最满意的方案在这里,使用ioctl来获取。这个方法可以获取指定网络接口的IPv4地址。至于有哪些网络接口嘛,直接... 阅读全文
posted @ 2012-09-25 10:07 ChaunceyHao 阅读(1181) 评论(0) 推荐(0)
摘要: rpysh 是为习惯 Linux 的 Pythoners 在不得不处理 Windows 上的事务时写的远程 shell。 源起 前些天,我尝试了使用 Python 控制 Word。但我对 Windows 下的交互式 Python shell 很不满意。 首先,我尝试的是 cmd.exe 那个黑窗口。太难用了!只有最基本的行编辑、在不知不觉中历史记录被窜改、复制粘贴极其麻烦。补全当然也是没有的。 于是,尝试 IDLE。这家伙我选了「IDLE Classic Unix」,但是能工作的键并不多。比如我刚刚尝试的Ctrl-u就不管用。而Ctrl-p竟然是把光标向上移动,回车才会把那... 阅读全文
posted @ 2012-09-25 10:03 ChaunceyHao 阅读(327) 评论(0) 推荐(0)
摘要: Web2.0的开发里, ajax是一个非常重要的技术. 如果你的网站里没有点ajax做的东西, 你都不好意思说你是web2.0的网站. 使用ajax的时候, 最关心的就是数据传输的格式了, 一般来说, 有以下几种格式: 纯文本HTML代码XMLJSON 可以说主流的就是上面几种了. 下面我们来分别分析一下: 纯文本 使用纯文本的格式, 可以传输一些message类的文本, 用于在前台页面显示. 优点是简单, 缺点是功能少. HTML代码 将页面结构和数据放在一起返回给页面, 前台拿到后, 可以不需要任何处理就显示在页面上, 使用简单. 优点是无需处理, 缺点是页面结构和数据... 阅读全文
posted @ 2012-09-25 09:59 ChaunceyHao 阅读(752) 评论(0) 推荐(1)
摘要: pygit2 是 libgit2 的 Python 绑定,而 libgit2 是一个可动态链接的 git 库,除去头文件和 pkgconfig 信息就一个 .so 文件。它是我在 The Architecture of Open Source Applications(AOSA)第二巻讲 git 的部分中看到的。git 本身遵循了传统的 Unix 哲学,提供了一系列的命令来管理源码库。这对于 shell 脚本是非常不错,可是对于嵌入到其它应用(如 IDE、Web 服务)中却不太好用。于是,我们有了 libgit2。 很遗憾的是,我并没有找到 API 文档,只有一些示例性的用法介绍,更别... 阅读全文
posted @ 2012-09-25 09:52 ChaunceyHao 阅读(568) 评论(0) 推荐(0)
摘要: 从某时起,Github 和 Linux 一样,开始有着越来越多的 bug 和让人不舒服的地方。本文所附的 GreaseMonkey 脚本修正以下问题: 项目首页默认下载文件格式是 zip 而不是 gzip。 新建项目后,从已有项目创建的提示命令使用 HTTPS 而不再是 SSH 协议。这直接导致 git 向用户询问用户名和密码,而不使用用户已经上传并确认的密钥。 Google Code 后来也加入了 git 支持,但是我极少使用。为什么呢?因为我讨厌输入用户名和密码!虽然 Github 没有像 Google Code 那样给你生成个随机密码,但这种麻烦且不安全的方式能避免我就... 阅读全文
posted @ 2012-09-25 09:51 ChaunceyHao 阅读(220) 评论(0) 推荐(0)
摘要: 两台没有外网 IP、在 NAT 后边的主机如何直连?UDP打洞通常可行,但是需要第三方服务器。方法如下: 在服务器 S 上监听一个 UDP 端口,在收到 UDP 数据包后把源地址发回去。代码如下(github): ?udpaddr123456789101112131415161718192021import sysimport timeimport socketdef main(port):s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)s.bind(('', port))try:while True:data, addr 阅读全文
posted @ 2012-09-25 09:49 ChaunceyHao 阅读(325) 评论(0) 推荐(0)
摘要: 用于显示时,经常会遇到显示的文本太长需要截短的情况。如果是如 ASCII 这样的定长编码,截短到指定长度自然不成问题。可如果源字符串是 UTF-8 编码的呢?ANSI C 里只管字节不管编码,所以如果想只用 ANSI C 提供的功能的话,就只能自己写了。因为需求仅仅是截短字符串而已,也不要求多么精确,所以没有去做编解码,只是丢弃按字节截短后的字符串最后的无效编码而 已。而且目标语种是 Lua,也不方便搞位操作。 查维基百科可知,UTF-8 多字节字符第一字节的最高两位为11,而其它字节的最高两位均为10。所以就把后面那些10xxxxxx连同最开始的11xxxxxx去掉好了。这样会多截掉一个.. 阅读全文
posted @ 2012-09-25 09:48 ChaunceyHao 阅读(187) 评论(0) 推荐(0)
摘要: Windows Phone开发中内置(built-in)资源文件的编译方式(build action)主要有Content和Resource两种,想必具体的区别做过相关开发的同学都了解(不了解的看WP7 working with Images: Content vs Resource build action)。但不管是放在XAP内引用还是dll内引用,都无法进行枚举,这就带来了很大的不方便:预置的资源都必须硬编码在代码内才能引用或者转移到Isolated Storage中。 今天在参考PhoneGap开发框架时偶然发现了一个很妙的方法,一劳永逸解决问... 阅读全文
posted @ 2012-09-25 09:44 ChaunceyHao 阅读(118) 评论(0) 推荐(0)
摘要: Python for .NET 是一个可以让 Python 程序员近乎无缝的集成 .NET 通用语言环境 CLR 和以及为 .NET 开发者提供一个强大的应用脚本工具。通过这个项目你可在 .NET 中完全使用 Python 来编写整个应用,使用 .NET 服务和组件。 这个包并没有用 CLR 语言实现一个 Python,也不将 Python 代码生成受管代码 (IL),只是在 .NET 环境中集成了 C Python 引擎。 示例代码: from System.Collections.Generic import Dictionary from System import * di... 阅读全文
posted @ 2012-09-25 09:21 ChaunceyHao 阅读(493) 评论(0) 推荐(0)
摘要: PostgreSQL 全球开发组发布了当前 PostgreSQL 所有版本的更新,包括 9.2.1, 9.1.6, 9.0.10, 8.4.14 和 8.3.21. 该版本修复了 9.1 和 9.2 中存在的关键问题,如果你正在使用这两个版本请立即更新,而 8.3、8.4 和 9.0 用户应该尽快制定停机更新的准备计划。 这个更新修复了两个潜在的数据破坏的问题,这两个问题影响 9.1 和 9.2 版本,当服务器崩溃、使用“immediate” 方式关机或者故障时无法转到待机服务器时候发生。首先开发组发现了会破坏 BTREE 和 GIN 索引,其次破坏可视图(visibility map)... 阅读全文
posted @ 2012-09-25 09:09 ChaunceyHao 阅读(416) 评论(0) 推荐(0)
摘要: GO语言开发工具liteide x13.1发布,新版本修复x13错误,增强了GO调试的断点和变量监视功能。 LiteIDE项目: 操作系统: Windows / Linux x86 / Linux x86_64 / MacOS X 10.6项目主页:http://code.google.com/p/golangide 项目源码 :http://code.google.com/p/liteide讨论组:http://groups.google.com/group/liteide-dev下载链接:http://code.google.com/p/golangide/downloads/list更新 阅读全文
posted @ 2012-09-25 09:09 ChaunceyHao 阅读(277) 评论(0) 推荐(0)
摘要: YUI 3.7 正式版发布后,几天内这是第二个补丁版本,看来是粗心了,该版本改进记录: 合并来自社区关于 TabView 的 pull request修复 bug:YUI Loader issue. 修复 CSS 重复加载的问题 duplicate CSS getting loaded. 报告者:Wei Wang 下载地址:CDN 或者 download. 阅读全文
posted @ 2012-09-25 09:05 ChaunceyHao 阅读(242) 评论(0) 推荐(0)
摘要: Jetty 9.0 的首个里程碑发布了,可通过这里下载测试。 9.0 版本最受关注的就是支持 SPDY, WebSockets, MUX 和 HTTP/2.0;此外该版本改进了 SSL 的支持,重构异步 HTTP 客户端以简化 API;该版本同时已经准备好了支持 Servlet 3.1 等等,详细的新特性请看 Jetty 9 Features。 阅读全文
posted @ 2012-09-25 09:04 ChaunceyHao 阅读(234) 评论(0) 推荐(0)
摘要: Meteor 0.4.1 发布了,该版本包含众多新特性,包括智能邮件发送包,更新 Node.js 从 0.6 到 0.8 版本等等,详情请看发行说明。 Meteor 是一组新的技术用于构建高质量的 Web 应用,提供很多现成的包,可直接在浏览器或者云平台中运行。 阅读全文
posted @ 2012-09-25 09:03 ChaunceyHao 阅读(366) 评论(0) 推荐(0)