HackToday Walk Blog


  • Home

  • Tags

  • Archives

  • Search

Ruby - 字符串占位符

Posted on 2014-03-03

Ruby中的字符串占位符的替换值是操作字符串的常用方法,使用#进行变量或者ruby代码的求值,从而替换结果插入字符串中

1
2
3
4
5
6
7
#/usr/bin/env  ruby

book_mark = "znw123"
# following replace and insert
puts "The book mark is #{book_mark}"
#following run ruby code, string length and insert
puts "The book mark length is #{book_mark.length}"

keystone的PKI token 长度引发的 HTTP 400

Posted on 2014-02-21

openstack keystone的PKI token从grizzly版本开始支持,PKI token相比如传统的UUID的token,长度要增加不少,
而且如果keystone的endpoint 和service catalog越多,相应的token长度都会有所增加。

在python的eventlet默认支持长度有个限制,如果要更长的header,需要对一个属性就行修改,

1
eventlet.wsgi.MAX_HEADER_LINE

于是就爆发了一个在各个项目需要修复的bug - https://bugs.launchpad.net/keystone/+bug/1190149

社区目前采取的方式是让header的支持长度可配置:

1
2
3
4
5
cfg.IntOpt('max_header_line', default=16384,
help=_('Maximum line size of message headers to be accepted. '
'max_header_line may need to be increased when using '
'large tokens (typically those generated by the '
'Keystone v3 API with big service catalogs')),

keystone-manage pkg_resources.DistributionNotFound 的问题

Posted on 2014-02-21

因为devstack安装后,需要经常pull新的代码,由于自己的开发环境不是每次都是fresh的,所以再次运行stack.sh有时会遇到一些问题。

在运行的时候,发现keystone的token的一个问题,怀疑pki的相关问题,使用keystone-manage发现,提示

1
pkg_resources.DistributionNotFound:keystone==2014.1.***

于是检查keystone-manage的代码,发现这个里面的代码还有 require(“keystone**“) 版本依赖,
这个内容和keystone-manage的源码完全不一样。难道是偶尔运行ubuntu的apt-get install keystone导致的?
根据使用习惯,我是从来不用ubuntu的apt方式来装openstack。所以,要想解决这个问题,就修改keystone-manage为原来的代码。

再次运行,就没有问题了。

putty color setting

Posted on 2014-02-14

原来一直用secure shell client, 现在改用putty了,里面的默认配色方案不太好,就查了一下,文章

http://www.coder4.com/archives/1506
http://www.ldisp.com/a/primary/2013/1571.shtml

介绍的可以采用, 你可以建个reg文件,直接import,

这样putty的颜色就显示的舒服一点了

IT人生:2013年过去,2014年新的开始和规划

Posted on 2014-01-01

今天阅读了8点1氪晚间版:年终安慰大盘点,很有意思。 http://www.36kr.com/t/208796,
互联网大佬子在2013年都收获了不同的喜怒哀乐,围绕互联网一团乱战,难分高下。
各家IT名博主都晒出了2013年总结和2014年的期望。那我也借上这股新风,小小总结和展望。

2013年依旧在云计算学习上花费了很多时间,自己很看这个领域未来几年后深刻改变人的生活的方式和服务接入方式。
实现了一年一次的长途旅游规划,扩大了眼界。
学会了开车,一个很基本的技能
基本坚持了一个星期4天跑步的习惯,但是有时因为工作忙,找借口偷懒,这个需要在2014年坚决改正。
庆幸认识到一个互相珍惜的人

2014坚决贯彻学习云计算衍生的周围技术
实现另外一次长途旅游计划
珍惜自己的身体,坚持锻炼
珍惜和善待身边的人,更多的包容和理解
人生大事努力筹划,具体不再展开….

另外祝福所有的身边人能在马年一切顺利,马到成功。

screen的使用记录

Posted on 2013-12-11

如果你用过devstack的话,会发现执行完stack.sh后,实际上启动一个screen会话,实现了多个进程共享一个物理终端的窗口管理器。
这个screen会话里面包含了多个screen窗口,如下

1
$ n-api  6$ q-svc  7$ q-agt  8$ q-dhcp  9$ q-l3  10$ q-meta  11$ q-metering  12$ n-cpu  13$ n-cond  14$ n-crt  15-$ n-sch  16$ n-novnc   17$ n-xvnc*  18$ n-cauth  19$ n-obj  20$ c-api  21$ c-sch  22$ c-vol

这样的好处很明显,

1.最大程度上实现一个物理终端的管理,简单直观。

  1. 可以实现不同人之间的协作共享
  2. ….

那么看到上面的说明,我们直观的想法是创建一个类似devstack的多screen窗口会话,那么怎么创建呢,具体如下:

(1) 首先要有screen会话的配置文件,目的是为了显示screen窗口的名字,这样比较直观。
简单的配置如下,创建一个文件名为.screenrc

1
hardstatus alwayslastline '%{= .} %-Lw%{= .}%> %n%f %t*%{= .}%+Lw%< %-=%{g}(%{d}%H/%l%{g})'

(2) 启动一个screen 会话

1
screen -dmS test1 -c .screenrc

(3) attach到对应的screen

1
screen -r test1

(4) 对应的会显示如下:

1
0$ bash*

(5) 创建一个新窗口

1
CTRL+a  c

显示如下:

1
0-$ bash   1$ bash*

(6) 以此类推,可以创建2,3,…窗口

(7)对窗口重命名为自己喜欢的名字

1
CTRL+a  A

输入windows1 显示如下:

1
0-$ bash   1$ windows1*

(8) 关闭当前窗口

1
CTRL+a  K

(9) 进入拷贝/回滚模式

1
CTRL+a  ESC

ESC 退出拷贝/回滚模式

更多使用:

1
2
3
4
CTRL+a n 切换到下一个窗口
CTRL+a p 切换到前一个窗口
CTRL+a d 暂时断开screen会话
...

(10) CTRL +a “ 从窗口列表选择要跳转的窗口

CTRL + a  '  会提示输入数字,切换窗口
CTRL +a  N  (1-9) 切换到对应的 1-9 窗口

更多的使用可以参考下面的参考资料:

  1. http://www.cnblogs.com/taosim/articles/3270336.html
  2. http://www.cnblogs.com/mchina/archive/2013/01/30/2880680.html
  3. http://www.ibm.com/developerworks/cn/aix/library/au-gnu_screen/
  4. http://ningg.top/linux-cmd-screen/

Eclipse Juno in Ubuntu 12.04 优化配置

Posted on 2013-11-10

如果你在用Ubuntu 12.04和eclipse 开发环境,希望这篇文章包含的信息对你有帮助

前提:

本文是在virtualbox的虚拟机里运行的Ubuntu 12.04

问题:

  1. eclipse Juno 4.2的性能问题网上讨论的可谓多如牛毛,有兴趣的可以自行google
  2. 默认的eclipse 配置 + 默认的Ubuntu 配置会有些问题
    a) eclipse 有点慢, 切换tab, 代码跳转等。 (eclipse配置)
    b) 当鼠标停在某处,显示javadoc 或者pydoc的开不清楚。 (Ubuntu 配置)

解决:
资料[1]给出了详细的解决方法,为了方便参看,特摘要如下:
问题1: 修改 eclipse.ini配置,增加如下几项

1
2
3
4
   -server  
   -Xmn128m  
   -Xms1024m  
   -Xmx1024m

问题2: 三种方法(资料1给出了两种方法,下面的方法2,3)

方法1:

修改Ubuntu的theme, 见资料[2].,主要是安装gnome-tweak-tool,修改默认的配置theme: Ambiance为其他

方法2:

不修改theme, 修改颜色配置,
安装 gnome-color-chooser, change colors by going to Specific→Tooltips options 打开

方法3:

不修改theme,不安装gnome-color-chooser,直接修改theme的配置文件
/usr/share/themes/Ambiance/gtk-2.0/gtkrc
 修改如下两种配置属性 (黑色字体,黄色背景)
    tooltip_fg_color:#000000
     tooltip_bg_color:#f5f5c5

其他问题:

还有virtualbox本身的性能调整,具体不在这里展开了,资料[3]给出了一些说明

参考资料:

  1. http://ubuntu-user-tricks.blogspot.com/2012/09/3-things-to-do-after-installing-eclipse.html
  2. http://www.wikihow.com/Change-Themes-on-Ubuntu-with-Gnome-Tweak-Tool
  3. http://blog.jdpfu.com/2012/09/14/solution-for-slow-ubuntu-in-virtualbox

qpid的地址解析

Posted on 2013-11-09

qpid的地址字符串按照一定语法进行匹配,确定相应的name subject和option

1
2
3
4
5
6
7
8
9
10
address := name [ SLASH subject ] [ ";" options ] 
name := ( part | quoted )+
subject := ( part | quoted | SLASH )*
quoted := STRING / ESC
part := LBRACE / RBRACE / COLON / COMMA / NUMBER / ID / SYM
options := map
map := "{" ( keyval ( "," keyval )* )? "}"
keyval "= ID ":" value
value := NUMBER / STRING / ID / map / list
list := "[" ( value ( "," value )* )? "]"

其中相应的pattern如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
LBRACE: \\{
RBRACE: \\}
LBRACK: \\[
RBRACK: \\]
COLON: :
SEMI: ;
SLASH: /
COMMA: ,
NUMBER: [+-]?[0-9]*\\.?[0-9]+
ID: [a-zA-Z_](?:[a-zA-Z0-9_-]*[a-zA-Z0-9_])?
STRING: "(?:[^\\\\"]|\\\\.)*"|\'(?:[^\\\\\']|\\\\.)*\'
ESC: \\\\[^ux]|\\\\x[0-9a-fA-F][0-9a-fA-F]|\\\\u[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]
SYM: [.#*%@$^!+-]
WSPACE: [ \\n\\r\\t]+

在qpid messaging的API实现中,python版本是如下解析:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  def address(self):
#获取name
    name = toks2str(self.eat_until(SLASH, SEMI, EOF))


    if name is None:
      raise ParseError(self.next())

#获取subject
    if self.matches(SLASH):
      self.eat(SLASH)
      subject = toks2str(self.eat_until(SEMI, EOF))
    else:
      subject = None

#获取option
    if self.matches(SEMI):
      self.eat(SEMI)
      options = self.map()
    else:
      options = None
    return name, subject, options

显然其中的分割符 SLASH 和SEMI进行了相应的划分
如果我们在qpid构造地址的字符串编程中传入了违法的字符,那么地址解析验证中就会报错

参考资料:

  1. http://qpid.apache.org/releases/qpid-0.14/books/Programming-In-Apache-Qpid/html/ch02s04.html#table-node-properties
  2. http://qpid.apache.org/components/messaging-api/index.html

Linux文件系统只读Read-only file system的快速解决方法

Posted on 2013-10-29

一个使用fsck来解决read-only file system的问题

http://www.ha97.com/5428.html

其实,遇到这个问题时,有时自己重启机器也可以解决,具体原因不知, 是否文件自身的修复还是其他?

VM cannot start because the saved state Error

Posted on 2013-10-22

今天遇到这个问题,发现有些人找到了解决办法,如下

解决办法:

Oracle VM VirtualBox管理器主界面(GUI)
控制->清除保存的状态(I)

http://blog.sina.com.cn/s/blog_4c451e0e0101635c.html

其实这个状态一般可能是主机的不正常关机或者虚拟在保存过程中的强行退出容易出现的。多谢上面的一位兄弟指出的解决方法

1…121314…26

Kai Qiang Wu

This is a place for thinking and writing

253 posts
32 tags
GitHub
© 2020 Kai Qiang Wu
Powered by Hexo
|
Theme — NexT.Gemini v5.1.4
Visitor Total Visit