Mac OS X软件安装新神器homebrew-cask
homebrew-cask基于homebrew,提供了很多常用的GUI程序安装,不用到处下载dmg之类的安装包,统一了安装用户体验。
Untitled Post - 88
macbook air外接显示器时,如果要合盖不休眠,必须外接电源,合盖后使用外接键盘或鼠标唤醒电脑。如果是蓝牙键盘和鼠标,需要设置相应的蓝牙设备可以唤醒电脑。
Mac OS X上使用cqlsh命令
cqlsh是cassandra用于执行cql命令的交互式终端程序,就如postgresql的psql,或者oracle的sql plus。
cqlsh是用python编写的,但当前版本5.0.1尚不支持python 3及以上版本,其代码中有如下行:
1 | python -c 'import sys; sys.exit(not (0x020500b0 < sys.hexversion < 0x03000000))' 2>/dev/null \\ |
可见其只支持大于2.5小于3.0的python。
使用
1 | $ brew install cassandra |
安装cassandra后,已经自动安装好了cqlsh,直接执行cqlsh会有提示需要安装cassandra-driver
1 | $cqlsh |
然后安装cassandra-driver
1 | $ pip install cassandra-driver |
如果cqlsh仍然提示需要安装cassandra-driver,则是因为系统当前的pip是python3的
1 | $ pip show canssandra-driver |
那么需要安装pip for python 2.x
1 | $ brew install python |
然后为python 2.x 安装cassandra-driver
1 | $ pip2 install cassandra-driver |
因为brew安装的python库路径在/usr/local/lib/python2.7/site-packages,所以还需要将其添加到python模块搜索路径,.bashrc中添加如下行:
1 | export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages |
然后再执行cqlsh应该就可以了
1 | $ cqlsh |
===
[erq]
nodetool连接超时错误
nodetool查看本地集群状态时,N久以后出现无法连接、连接超时的错误提示:
1 | $ nodetool status |
经排查为/etc/hosts文件配置错误所致,文件中实际的主机名(不是localhost)对应的ip地址解析行设置错误,这是由于主机ip地址更换后未及时更新hosts文件所致。更改为正确的ip地址类似如下:
1 | 192.168.1.104 yoga.localdomain yoga |
然后重新启动cassandra服务
1 | $ sudo /etc/init.d/cassandra restart |
或者
1 | $ sudo systemctl restart cassandra.service |
然后再重新执行
1 | $ nodetool status |
如果cassandra尚未完全启动时就执行该命令,会有异常抛出,类似如下:
1 | $ nodetool status |
Mac OS X平台上/etc/hosts文件中根本就不设置主机名对应的IP地址解析,而出现的错误提示也略有不同:
1 | nodetool: Failed to connect to '127.0.0.1:7199' - ConnectException: 'Operation timed out'. |
解决办法也是一样的,对于动态ip的客户端测试环境而言,直接将主机名对应的ip设置为127.0.0.1亦可:
1 | 127.0.0.1 mba |
重新加载cassandra就可以了
1 | $ launchctl unload /usr/local/opt/cassandra/homebrew.mxcl.cassandra.plist |
===
[erq]
Cassandra竟然歧视OpenJDK
cassandra 2.1.2的启动日志中出现如下字样:
1 | WARN \[main\] 2013-11-24 10:54:30,423 CassandraDaemon.java (line 155) OpenJDK is not recommended. Please upgrade to the newest Oracle Java release |
查看CassandraDaemon.java源代码,有如下行:
1 | String javaVmName = System.getProperty("java.vm.name"); |
OpenJDK没这么差吧!
===
[erq]
linux下cups打印奇偶页
debian系统提供的打印对话框,竟然没有打印奇偶页的选项,一下命令可以满足要求:
1 | $ lp -o page-set=odd filename //只打印奇数页 |
References:
[1] Linux下通用打印系统CUPS使用教程
datagurad环境下修改sys用户密码
dataguard环境下使用alter user sys identified by 语句修改主库的sys用户密码时,不会自动更新备库的密码文件。而Oracle Dataguard环境的日志传输安全机制依赖于密码文件,因为备库也需要做相应的修改才可以正常的进行日志恢复。而备库随时有可能成为主库,因此修改密码后应该将主库的密码文件同步到备库。
首先,停止备库
1 | SQL> shutdown immediate |
然后,将主库密码文件覆盖备库的密码文件
最后,启动备库,打开日志实时恢复
1 | SQL> startup mount |
===
[erq]