通用技术
文章平均质量分 73
猛禽
Python爱好者。这个人很菜,除了BUG,什么都没有留下。
展开
-
用Docker+ELK集中处理日志
需求手头有几个服务器的日志需要处理,数据量也不是很大,但是又不想在每个服务器上都装一套ELK,毕竟这货还是挺笨重的。另外,ELK这堆东西依赖也挺多,而且还是用JAVA的,我才不想为了装这个把系统搞得乱七八糟,所以必须跑在docker里。当然,也不可能在每台服务器上都装个docker,毕竟这货也不是省油的灯。于是有这样的方案。原创 2017-08-27 18:34:41 · 17838 阅读 · 1 评论 -
具有中国特色的docker折腾记(下)
自制Dockerfile和自建Docker-registry服务器原创 2014-01-17 13:41:06 · 20931 阅读 · 1 评论 -
具有中国特色的docker折腾记(上)
简介在刚刚过去的2013年里,docker无疑是运维工作的一项革命性创新,然而在有中国特色的互联网环境里,要折腾这玩意儿还真是不方便。且不说docker.io的官网在墙外,包括它的apt源和image index都在墙外,导致用户增加了很多不必要折腾成本,真是中国程序员的一大悲哀啊。真不知道docker这种纯技术的东西怎么就不河蟹了……那么docker究竟是个什么东西呢?首先,你可以认为docke原创 2014-01-15 11:21:55 · 30734 阅读 · 1 评论 -
编译安装ffmpeg以支持mp3,x264等
本来ffmpeg是个挺好的东西,但可能是因为License冲突方面的问题(个人感觉好像是GPLv3跟别的License有冲突),所以这两年 的ffmpeg中已经不包含如libmp3lame和libx264之类常用库的支持,这在实际使用中就会很不方便。虽然据说有一些简单的方法,如《HOWTO: Easily enable MP3, MPEG4, AAC, and other restricted e原创 2012-07-31 23:36:31 · 4592 阅读 · 4 评论 -
单元测试的规划
令狐写了一篇《单元测试》,源于我们上周的一次关于测试的讨论。TR说到的原子性、独立性、正交性的确也都是值得讨论的问题。不过我比较关注的是粒度和覆盖度。讨 论是缘起于我们几个最近在合作的一个基于Pylons开发的小项目。Pylons本身是一个基于MVC的WEB框架,我们的应用可以简单地分层为: Controller, Function, Model 这样三层。Model里都是表结构的定义,没有什么好原创 2008-06-12 10:51:00 · 4489 阅读 · 2 评论 -
智障手机访问四方的一种解决方案
方法其实很简单:首先你要有一个墙外的VPS或是类似的能建立反向代理的条件。然后就是建立一个反向代理。搞定。原创 2010-06-09 17:07:00 · 3726 阅读 · 1 评论 -
掺和比试
Milo老师的比试已经很全面了,我也就是提供一点自己的测试数据罢了原创 2010-07-31 12:20:00 · 2769 阅读 · 0 评论 -
Hook与AOP
前几天MK开始弄JAVA,在群里讨论AOP的相关话题,我在搜索相关话题时看到wu_yanan2003兄06年写的一篇关于hookapi的文章《delphi下AOP技术( hookapi full source)》。对于其中关于AOP的观点,我觉得有必要与他讨论一下。首先是思想与实现技术的区别。我在《用Delphi实现动态代理(2):设计说明》一文里已经说过,AOP本身是一种思想,或原创 2009-05-28 21:03:00 · 4576 阅读 · 3 评论 -
SD2C之网格与云计算
这次的SD2C大会中,云计算无疑是最风光的技术话题(没有之一)。相比之下,曾经风光的网格技术就只有Oracle还在提了。回来以后在BT妓术群及FB饭局上跟令狐他们讨论过这个话题,令狐仍然对网格技术充满期望——《网格网络的设想》。如果单纯从技术角度说,云计算从某种意义上的确是退步了,从网格的平等分布式应用重新变成了集中式集群应用。不过我后来进一步思考以后发现二者的根本区别并不是在技术上——至少不是主原创 2008-12-23 14:01:00 · 3411 阅读 · 4 评论 -
身份验证——谈谈OpenID
说明:此为06年11月写的旧文,还没在CSDN发过,补发一下。听说今年的网志年会上有一个讨论OpenID的专题。对于网站的身份验证问题不算一个新话题,自从当年MS推出并热炒passport的时候就已经开始了。即使是OpenID也出来有一阵子了。不过我是看了前一段ZOLA对OpenID的大力推广之后,才开始去了解这个技术。虽然OpenID有自己很大的优势,但同样存在着一些目前不可克服的困难。首先简单原创 2008-09-12 21:57:00 · 5009 阅读 · 2 评论 -
分布式版本控制(完)
本篇作一个简单的总结。先看一下DRCS与传统SCM之间的比较。虽然DRCS有很多优势,但是完全取代集中式的SCM还是不太可能的,毕竟是两个完全不同的思路。我 曾经乐观地认为DRCS会取代传统SCM,但这只是我个人的体会,我可以很轻松地把SVN换成Mercurial,但是并不表示这对所有人都是合适的。令 狐就指出,在他们公司,因为在VSS的基础上有一整套自己的管理工具和规范,即使明知有更好的原创 2008-03-13 13:38:00 · 3772 阅读 · 1 评论 -
用motion实现家庭视频监控
需求?当然不是为了艳照!你们这些猥琐的人类!毕竟家里总会有没人的时候,出门走到半路忘记煤气灶是不是关了,还得回去看看。在这个科技以人为本的时代,当然应该是拿出智能手机联网看看啦。还有万一有人闯空门什么的,也能有个及时报警什么的。motion是什么?motion是一个提供视频监控解决方案的开源软件,支持Linux/FreeBSD/MacOS等多个平台,本文以Linux为例,测试平台是LinuxMin原创 2014-12-18 20:18:22 · 13804 阅读 · 3 评论 -
基于ZFS和GnuPG的安全远程备份方案
用ZFS提供备份存储,然后创建快照后加密传输到远程备份服务器保存。另,用ZFS的快照可以防范CryptoLocker病毒。原创 2015-01-30 12:34:45 · 5038 阅读 · 1 评论 -
rsync over ssh over socks
之所以要这么折腾,首先需要强烈谴责那些为某墙作出过贡献的程序员,解放后你们是一定会被清算的。需求这事的需求是这样的,我有几个国外的VPS用来跑自己和朋友的BLOG,为了保险起见,我搞了一套备份系统:在家里的服务器上开了一个ZFS做远程VPS的备份,备份方法是每天晚上通过rsync over ssh进行同步,然后本地服务器生成快照做版本控制。实现起来很简单,也可以满足需求:如果远端VPS数据丢失(故原创 2015-02-16 17:04:53 · 3829 阅读 · 1 评论 -
在容器中运行Jenkins部署主机中的docker应用
如何让一个跑在container里的Jenkins把应用部署到host环境上?原创 2017-05-14 17:24:36 · 6255 阅读 · 0 评论 -
Mac OS X中virtualenv里python shell无法使用光标键问题的解决
最近碰到一个奇葩问题,在系统python shell里使用光标是一切正常的,但是到了virtualenv里就不行了,变成各种转义符,不能正常移动光标。搜了半天,都说跟readline有关,建议重新编译python,可是为什么系统的python是正常的呢?而且我是用homebrew安装的,应该也不会有问题啊。试过很多方法,比如重装readline或virtualenv什么的,都不能解决。原创 2017-01-29 23:33:29 · 2982 阅读 · 0 评论 -
docker实践入门之六
最后一篇来举个栗子。样本项目一个基于bottle的python web项目依赖mako暂时只考虑部署一个版本的例子项目有以下内容:+-appname.py+-config.json+-requirements.txt+-views +-index.htmlrequirements.txt的内容为:bottlemakovirtualenv部署方式传统的python应用部署方式一般会推荐用原创 2016-08-13 22:29:26 · 2698 阅读 · 0 评论 -
docker实践入门之五
image的派生上面这个例子 有一个问题就是,如果应用程序修改了,就需要重新build一次,问题是重build的时候需要把前面一堆的命令都跑一遍,特别是安装软件那些还是挺慢 的,而且是不必要的重复工作,实际上我们只是修改了应用程序而已,所以更机智的办法是把这个image分成两个image,一个是python3基础环 境,一个是应用程序image。先来python3环境的Dockerfile:FRO原创 2016-07-05 00:36:37 · 5242 阅读 · 0 评论 -
docker实践入门之四
在前一个实践中,我们演示了如何使用现成的image来运行container供我们使用,这一节我们来试试自己建立image。使用交互方式创建image在第一篇文章里说过,通过对一个container执行commit操作可以创建一个image,这里先用这个方法做一个例子。首先需要一个基本image,目前docker推荐的是用一个轻量级linux发行版:Alpine Linux,这个发行版的最大优点就是原创 2016-06-02 23:44:33 · 11843 阅读 · 0 评论 -
docker实践入门之三
文件系统说完了网络,现在来说存储。对于redis这样的应用来说,我们通常并不需要它的持久化存储,只是拿它做缓存而已,所以存储问题并不重要,但是对于mysql这样的数据库来说,存储就非常重要了。前面说到了container和image的区别,但并不完全,它们还有一个重要区别就在于存储。docker使用了一套自己的文件存储机制,基于aufs、devicemapper、btrfs、vfs等文件系统,它的原创 2016-05-02 23:00:02 · 10248 阅读 · 0 评论 -
docker实践入门之二
开始动手先准备一个空的系统,现在要在上面装一个redis,传统的做法就是用系统的包管理器装一个呗,比如debian下可以用sudo apt-get install -y redis-serversudo service redis-server start然而在docker下是这样:docker pull redisdocker run -d --name redis redis第一步是从do原创 2016-04-16 17:26:53 · 7731 阅读 · 0 评论 -
docker实践入门之一
前戏……呃,前言docker是什么?docker是一种容器技术,它的主要功能就是能够让进程在一个隔离的容器环境里运行——在进程看来,它有一整套“独立”的OS环境,包括文件系统,类似于虚拟机。docker不是什么?docker 不是虚拟机,它只是一套虚拟运行环境,实际上在host机上用ps可以看到容器里面的进程。实际上docker里用到的环境都是来自于host机,只是相 对隔离而已,类似于pytho原创 2016-04-14 22:39:38 · 7190 阅读 · 0 评论 -
一个不用密码的用户系统
很多年前云风设想过这样一个用户系统《为什么一定要有密码?》,我是挺赞同的。对我来说,用户系统是一个责任重大的东西,可惜很多国内厂商都不把这当回事。之前做过一些小东西,基本上都是采用第三方登录的方式,比如用google账号登录。这样就把用户管理的麻烦事交给第三方去处理了,相信google这样的大厂能做得更好。然而总会有需要自己管理用户的时候,虽然可以采用各种安全的措施去保护这些用户数据,比如用更安全原创 2016-01-30 23:48:29 · 3230 阅读 · 4 评论 -
不用密码的用户系统实现
一个可以不用密码的用户系统。默认只需要输入email即可注册或登录,如果需要密码,可以使用Google Authenticator扫描邮件中的二维码,使用GA生成的一次性密码登录。原创 2016-02-29 14:15:36 · 3271 阅读 · 1 评论 -
分布式版本控制(三)
本篇介绍Mercurial。因为这是我现在用得最多的SCM——最近一个月来几个程序都在用它——所以会说得详细一些。我是从云风的BLOG里看到关于Mercurial的介绍,他在文章中介绍了常用的几种DRCS,他个人推荐的是Darcs,但我却看中了Mercurial。Mercurial 的优点在于功能强大并且速度超快(相对Bazaar而言,与SVN相比似乎也快一些),看源码Mercuria原创 2008-03-07 09:29:00 · 5799 阅读 · 1 评论 -
分布式版本控制(二)
本篇介绍Bazaar我知道Bazaar是从livid那里看到的,他这篇介绍基本上就是翻译Bazaar官方的一个快速入门文档,强烈推荐参考一下。Bazaar的优点在于功能强大并且安装使用很方便。因为是用Python写的,只要在安装了Python之后,再安装一下Bazaar就可以使用了。需要注意的是,它的SFTP功能使用了两个包: pycrypto和paramiko。这是需要额外安装一下的。刚原创 2008-03-04 09:47:00 · 7355 阅读 · 3 评论 -
有必要把什么都加到语言里吗?--谈谈 G# 和 Cω
前几天gfh在QQ群里介绍了一下MS的两项最新技术(应该还算是未来技术吧): G# 和 Cω,令狐就前者说了一下他对AOP的看法。我今天也来说说我的看法吧。不可否认,G#对AOP的实现是很强的,比如原文中那个例子是对既有代码的编译时织入。这也就意味着它可以在不改变原有代码的前提下进行AOP切入。而且据说它还可以支持运行时织入,应该说是一种相当理想的AOP实现。它解决了目前主流AOP技术实现的很多问原创 2005-04-11 10:40:00 · 4666 阅读 · 15 评论 -
关于数据库表应该采用逻辑主键还是业务主键的讨论
昨天令狐因为处理动网论坛的数据库时,发现它是用帖子号来作为主键,由于无意中对它作了一些修改,导致帖子的关联变得混乱了。于是我们讨论了一下数据库表中主键的选择问题。因为对动网论坛的程序不熟,所以我也不知道它是怎么设计实现的,今天令狐把JavaEye上的一个关于这个方面的话题拿来讨论就好办了。我起初也觉得用一个无意义的逻辑主键是一个好办法,至少说用一个字段就可以唯确定一条记录,使用上会很方便,速度应该原创 2005-03-24 16:05:00 · 6292 阅读 · 0 评论 -
一次关于用MVC改进GUI应用开发的讨论
昨天临下班前跟猎手讨论了一个技术问题。今天令狐看了,指出这个解决方法治标不治本,属于头痛医头脚痛医脚的解决方案:但要是你直接取parent的ActiveControl,这个窗体不嵌入其他窗体的时候不是又错了?换句话说,这个窗体跟它的使用环境发生了耦合。有没有比较好的办法来解决这个问题? 我说了三个方法,前两个都不算是通用的办法,就不说了。第三个就是我在《杂而不精》一文里我提到过的MVC模式。在这一原创 2005-07-14 10:31:00 · 4165 阅读 · 0 评论 -
SVN的Local方式:个人源码管理的好办法
SVN的Local方式:个人源码管理的好办法 [Mental Studio]猛禽[Blog]SVN、Local方式、个人源码管理今天在QQ群里,有人在打听Delphi的VSS插件,于是被我B4了一番。正好我最近试用了SVN,感觉很不错,于是在群里强力推荐,以致于几乎被认为是SVN的托儿。-_-|||事实上SVN的确是我用过的最好的源码管理工具,虽然我用过的这类工具并不多,只原创 2005-03-18 10:36:00 · 12297 阅读 · 14 评论 -
升级到SVN 1.20时发生的BDB版本问题的处理
因为上次升级的Tortoise SVN 1.1.7版本感觉有时不太对劲,不如1.1.4稳定,所以回去前就升级到了1.20。结果发现原来用BDB(BerkeleyDB)建的Repositry不能访问了,报一个什么BDB版本4.3不能操作数据库的错误。但用文件方式建的Repositry可以访问,巨汗。鉴于时间匆忙,只好先新建一个文件型的Repositry将就用。回来以后搜索了一下关于S原创 2005-07-08 17:21:00 · 3056 阅读 · 0 评论 -
EXIF格式分析及通过XML处理(2)
EXIF格式分析及通过XML处理 猛禽[Mental Studio](个人专栏)(BLOG)http://mental.mentsu.com 起始长度(Bytes)内容0x002Number of Directory Entries(Count)0x0212 * CountDire原创 2004-05-09 11:09:00 · 3578 阅读 · 0 评论 -
EXIF格式分析及通过XML处理(5)
EXIF格式分析及通过XML处理 猛禽[Mental Studio](个人专栏)(BLOG)http://mental.mentsu.com 转换后的XML大致如下: Exif II 0x002A 0xB 0x10E 2 0xB原创 2004-05-09 11:10:00 · 3319 阅读 · 1 评论 -
EXIF格式分析及通过XML处理(3)
EXIF格式分析及通过XML处理 猛禽[Mental Studio](个人专栏)(BLOG)http://mental.mentsu.com 下面是一个典型的EXIF JPEG文件格式分析结果(源文件为一张用Nikon CoolPixel 775相机拍摄的照片,所用的EXIF版本是2.1,与2.2版差别不大): JPEG SOI : FF D8 // 图片起始原创 2004-05-09 11:10:00 · 4476 阅读 · 0 评论 -
EXIF格式分析及通过XML处理(4)
EXIF格式分析及通过XML处理 猛禽[Mental Studio](个人专栏)(BLOG)http://mental.mentsu.com 下面的代码片断(Borland C++ Builder)实现了从EXIF数据到XML的转换://-------------------------------------------------------------------原创 2004-05-09 11:10:00 · 3382 阅读 · 0 评论 -
用线性插值算法实现图像缩放
用线性插值算法实现图像缩放 猛禽[Mental Studio](个人专栏)(BLOG)http://mental.mentsu.com 在Windows中做过图像方面程序的人应该都知道Windows的GDI有一个API函数:StretchBlt,对应在VCL中是TCanvas类的StretchDraw方法。它可以很简单地实现图像的缩放操作。但问题是它是用了速度最快,最简单但效果原创 2004-04-07 14:37:00 · 11588 阅读 · 2 评论 -
[技术帖]闲扯Annotation
首先批评一下Blogdriver的RSS,好像自从被BC收购以后,就开始越来越滞后,常常要过好几天才能看到它更新一次RSS,所以偶错过了很多gigix的新文章,874之。上午跟令狐谈了一下现在gigix的RSS里“最新”(已经快半个月了-_-|||)的一篇《Annotation Sucks?!》,gigix和robbin显然都是反对annotation的。robbin认为这破坏了JAVA的纯洁性,原创 2005-08-18 11:03:00 · 3009 阅读 · 0 评论 -
[技术帖]再扯Annotation
本来已经写完的,一不小心一个误操作全部覆盖找不回来了。只好重写。:(上次我闲扯了一回Annotation。后来gigix补充了一篇《Annotation vs. Configuration》,我下载了他推荐的BJUG的徐X的演讲录音和讲稿学习了一下。他说得对,Annotation是属于自定义MetaData,与Configuration不是一回事。前几天gigix又作了一篇用Ruby来实原创 2005-09-03 12:47:00 · 2962 阅读 · 1 评论 -
SVN+HTTP的一个ulgy的错误
原来配置得好好的基于HTTP的SVN忽然就出问题了,新增加的文件都加不上,一提交就出一个什么:302 Found的错误。在Google上找了半天才找到,竟然是这么个ugly的错误。The solution is to disable special 404 error handling for Subversion directories with ErrorDocument 404 defau原创 2006-01-11 10:41:00 · 4001 阅读 · 0 评论 -
分布式版本控制(一)
虽然我使用传统SCM(软件配置管理,或者叫RCS——版本控制系统)软件已经有很多年,从那个垃圾一般的VSS到功能强大的CVS和SVN都用过 一段时间,短则半年(VSS),长则数年(SVN)。但是对于分布式版本控制系统(DRCS),我也是刚接触不久,发现它们的确很不错,相比传统SCM来 说,是一种质的变化。所谓DRCS是相对于传统集中式的SCM而言的。对于传统SCM来说,Repository是集原创 2008-02-29 16:44:00 · 9626 阅读 · 3 评论