Pragmatistic Guy

Good good study, day day up!

3 热度

Python Philosophy(Python哲学)翻译及简析

原文及译文

  1. Beautiful is better than ugly.
    美优于丑。

  2. Explicit is better than implicit.
    直白优于隐晦。

  3. Simple is better than complex[1].
    简单优于复杂。

  4. Complex is better than complicated[2].
    复杂优于纠结。

  5. Flat is better than nested.
    扁平优于嵌套。

  6. Sparse is better than dense[3].
    稀疏优于稠密。

  7. Readability counts.
    可读性有重要意义的。

  8. Special cases aren't specia...

继续阅读

所属标签: python, programming, Python, philosophy, 哲学, 编程, 语言, 原则, 最佳实践,

0 热度

More Effective Sort

sort用来排序,缺省是对整行文件进行排序。比较难于理解的是Sort支持指定字段排序。

sort支持字段比较,用好这个功能常常可以省去用比如awk来截取字段再排序这样的操作,大大地简化操作。

先上示例

先看一完例子,有了功能上的认识之后,再看【关于sort的字段】一节的说明。

第二字段作为Key排序

# 命令行
sort -k2,2 

# 输入
1 c x
2 b y
3 a z
4 a w

# 输出,第一、三个字段不影响
3 a z
4 a w
2 b y
1 c x

第二字段到最后一个字段(即行尾)作为Key排序

# 命令行
sort -k2

# 输入
1 c x
2 b y
3 a...
继续阅读

所属标签: sort, effective, gnu, shell,

0 热度

cooma(microcontainer, SPI Provider Container) 0.3.0 released

发布功能

  1. Adaptive重构,去掉对Config概念的依赖。
  2. 在扩展点配置文件支持属性,ExtensionLoader获取扩展的属性。
  3. 重构完成后更新Demo和文档
  4. Bug Fix: NAME_PATTERN正则表达式错误
  5. 公共方法:属性名到get方法名
  6. AdaptiveInstance的调用性能损耗测试

这版本重构了“Adaptive重构,去掉对Config概念的依赖”、“ExtensionLoader获取扩展的属性”,功能比较完整,这个让概念和使用更清楚。

推荐此版本,没有使用之前的版本。

在文档有示例说明。

发布链接

概述

C...

继续阅读

所属标签: cooma, dubbo, release, 微容器, github, microcontainer, 扩展点, 容器,

0 热度

Git冲突分析和处理

一同事使用git pull冲突了,并且之前本地有未提交的修改。

问题变得比较复杂,因为涉及4方面:

  • 工作目录的修改
  • 暂存区的修改
  • merge来的修改
  • Merge前的修改

解决方法:

使用git merge --abort中止merge。merge manual中说,这条命令会尽力恢复到Merge之前的状态(可能失败!)。

merge manual中有一条警告:

Warning: Running git merge with uncommitted changes is discouraged: while possible, it leaves you in a state that is hard to ba...

继续阅读

所属标签: git, 冲突, merge, rebase, 合并, patch, 补丁,

0 热度

cooma(microcontainer, SPI Provider Container) 0.2.1 released

发布功能

  • 完善Wrapper实现
  • 更新文档和Demo
  • 清理代码其注释

功能比较完整,欢迎大家试用和反馈!

发布链接

概述

Cooma适用于为框架的实现动态扩展点(Extension)加载和配置。

实现原型来自于Service implementation of JDK5

参见Quick Start中的示例代码及其说明,快速了解。

概念上极简独立

  • 完全割除与容器不相关的概念。
  • 审视已有的概念,谨慎引入新概念。

实现上简单直白

  • 不算注释,实现代码 少于1000行
  • 保持代码可读性。
  • 不考虑没有实际应用的概念。...
继续阅读

所属标签: cooma, dubbo, release, 微容器, github, microcontainer, 扩展点, 容器,

0 热度

cooma(microcontainer, SPI Provider Container) 0.1.0 released

Cooma是一个简单的Java微容器(microcontainer)实现,加载扩展点(Extension);是把Dubbo中使用的微容器独立拿出来了。
实现原型来自于Service implementation of JDK5

0.1.0主要是清理代码,之前的有些混乱的调用次序、关系,剥去了和Dubbo相关的概念。Cooma精简(代码行1000-),功能实用,如果想要一个简单的扩展点/插件容器,可以参考一下。

这几天把之前想到内容记成了Ticket改好了。
PS: GitHub的...

继续阅读

所属标签: cooma, dubbo, release, 微容器, github, microcontainer, 扩展点, 容器,

0 热度

远程调用服务(RPC)和消息(Message Queue)对比及其适用/不适用场合

在阿里的平台技术部参与开发了Dubbo(远程调用服务)和Napoli(消息解决方案),又给网站应用支持这2个产品2年,了解了这2个产品的实现及应用对这两个产品的用法。

大部分情况下,“给定场景下应该使用这两个产品中哪个”这个问题,大家都会容易决定,而且不需要多少讨论。

我为什么要拿出来讨论一下:

  • 一些场景会比较模糊,觉得都可以使用。这时需要知道产品缺点,而不是看到优势。
  • 一些新人会觉得产品功能是可以替换的,要给说明一下。

这里简单说一下两者的区别。

系统结构

RPC系统结构:

+----------+     +----------+
| Consumer | <=> | Provider |
+-...
继续阅读

所属标签: RPC, JMS, Queue, message, 远程调用, 消息, 同步, 异步, Dubbo, MetaQ, napoli, HSF,

0 热度

准备一个安全可靠的发布流程

转自发在公司博文:准备一个安全可靠的发布流程

Dubbo注册中心的发布上线有段时间常常出问题,发布注册中心就是一次冒险。
# 期间也因此吃了些故障。

为了解决这个问题,Dubbo Team专门讨论过一次,梳理发布流程,给出问题的解决方法。

虽然针对的是Dubbo注册中心,其中的最佳实践是通用的。

关键字

  1. 角色 vs. 操作
    操作者 & 检查者 (发布过程要2个人一起参与)
  2. 冷操作 vs. 热操作
  3. 读操作 vs. 写操作
  4. 原子操作 vs. 回滚操作

说明:

  • 冷操作:在发布之前可以做好的操作,如机器确认,发布通知邮件。
  • 热操作:线上发布操作过程的操作。
  • 一定要充分考虑“回滚操作”。
  • 原子操作的步骤的执行不能被中断。
    有几次...
继续阅读

所属标签: 发布, 流程, 安全, 可靠, Dubbo, 最佳实践, 角色, 回滚,