






#!/bin/bash
### BEGIN INIT INFO
# Provides: Frank Ting
# Required-Start: $network $local_fs $remote_fs
# Required-Stop:: $network $local_fs $remote_fs
# Should-Start: $all
# Should-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Baccy-router
# Description: Baccy-router
### END INIT INFO
PID=”$(cat /var/lib/projects/baccy-router-1.0-SNAPSHOT/RUNNING_PID)”
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
start(){
if [ -z $PID ]
then
/var/lib/projects/baccy-router-1.0-SNAPSHOT/bin/baccy-router -Dhttp.port=9090&
echo “baccy-router is starting”
return 0
else
echo “baccy-router already started “
return 1
fi
}
stop(){
kill $PID
echo “baccy-router is stopping”
PID=””
}
status(){
if [ -z $PID ]
then
echo “baccy-router is not running”
else
echo “baccy-router is running”
fi
}
case “$1” in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status
;;
*)
echo “Usage: {start|stop|restart|status}”
exit 1
esac
exit 0
<span class="pln">chmod </span><span class="lit">755</span><span class="pln"> baccy</span><span class="pun">-</span><span class="pln">router</span>
<span class="pln">mv baccy</span><span class="pun">-</span><span class="pln">router </span><span class="pun">/</span><span class="pln">etc</span><span class="pun">/</span><span class="pln">init</span><span class="pun">.</span><span class="pln">d</span>
<span class="pln">/etc/init.d/baccy-router start</span>
<span class="pln">/etc/init.d/baccy-router status </span>
<span class="pln">/etc/init.d/baccy-router restart </span>
<span class="pln">insserv </span><span class="pun">/</span><span class="pln">etc</span><span class="pun">/</span><span class="pln">init</span><span class="pun">.</span><span class="pln">d</span><span class="pun">/</span><span class="pln">baccy</span><span class="pun">-</span><span class="pln">router</span>
<span class="pln">reboot</span>
众所周知,playframework使用的连接池是boneCP,但是确实十分坑爹,因为连接池中对象不能正常释放,导致连接池疯狂向数据库创建连接,最后导致应用获取不到可用连接而报错。当然不是我一个人遇到这个问题,stackoverflow的老外也被坑了一大片。
<span class="typ">This</span><span class="pln"> plugin provides an alternative to </span><span class="typ">BoneCP</span><span class="pln"> as the connection pool manager </span><span class="kwd">in</span><span class="typ">Play</span><span class="lit">2.1</span><span class="pun">.</span><span class="typ">The</span><span class="pln"> main reason </span><span class="kwd">for</span><span class="pln"> doing this is that I have seen issues with connections not being released properly by </span><span class="typ">BoneCP</span><span class="pln"> when there are low max connections available</span><span class="pun">.</span>
<span class="pln">libraryDependencies </span><span class="pun">++=</span><span class="typ">Seq</span><span class="pun">(</span>
<span class="str">"jp.furyu"</span><span class="pun">%%</span><span class="str">"play-c3p0-plugin"</span><span class="pun">%</span><span class="str">"0.2.1"</span>
<span class="pun">)</span>
<span class="lit">5000</span><span class="pun">:</span><span class="pln">jp</span><span class="pun">.</span><span class="pln">furyu</span><span class="pun">.</span><span class="pln">play</span><span class="pun">.</span><span class="pln">c3p0</span><span class="pun">.</span><span class="pln">C3p0Plugin</span>
<span class="pln">dbplugin</span><span class="pun">=</span><span class="pln">disabled</span>
<span class="pln">db</span><span class="pun">.</span><span class="pln">default</span><span class="pun">.</span><span class="pln">user</span><span class="pun">=</span><span class="pln">pointshub</span>
<span class="pln">db</span><span class="pun">.</span><span class="pln">default</span><span class="pun">.</span><span class="pln">password</span><span class="pun">=</span><span class="pln">pointshub</span>
<span class="pln">db</span><span class="pun">.</span><span class="pln">default</span><span class="pun">.</span><span class="pln">url</span><span class="pun">=</span><span class="str">"postgres://pointshub:pointshub@10.20.0.156:5432/pointshub"</span>
<span class="pln">db</span><span class="pun">.</span><span class="pln">default</span><span class="pun">.</span><span class="pln">driver</span><span class="pun">=</span><span class="pln">org</span><span class="pun">.</span><span class="pln">postgresql</span><span class="pun">.</span><span class="typ">Driver</span>
<span class="pln">db</span><span class="pun">.</span><span class="pln">default</span><span class="pun">.</span><span class="pln">maxPoolSize</span><span class="pun">=</span><span class="lit">200</span>
<span class="pln">db</span><span class="pun">.</span><span class="pln">default</span><span class="pun">.</span><span class="pln">minPoolSize</span><span class="pun">=</span><span class="lit">20</span>
<span class="pln">db</span><span class="pun">.</span><span class="pln">default</span><span class="pun">.</span><span class="pln">initialPoolSize</span><span class="pun">=</span><span class="lit">40</span>
<span class="pln">db</span><span class="pun">.</span><span class="pln">default</span><span class="pun">.</span><span class="pln">acquireIncrement</span><span class="pun">=</span><span class="lit">5</span>
<span class="pln">db</span><span class="pun">.</span><span class="pln">default</span><span class="pun">.</span><span class="pln">maxIdleTime</span><span class="pun">=</span><span class="lit">10m</span>
<span class="pln">db</span><span class="pun">.</span><span class="pln">default</span><span class="pun">.</span><span class="pln">maxConnectionAge</span><span class="pun">=</span><span class="lit">1h</span>
<span class="pln">db</span><span class="pun">.</span><span class="pln">default</span><span class="pun">.</span><span class="pln">idleConnectionTestPeriod</span><span class="pun">=</span><span class="lit">10m</span>
<span class="pln">db</span><span class="pun">.</span><span class="pln">default</span><span class="pun">.</span><span class="pln">preferredTestQuery</span><span class="pun">=</span><span class="str">"select 1;"</span>
<span class="pln">db</span><span class="pun">.</span><span class="pln">default</span><span class="pun">.</span><span class="pln">checkoutTimeout</span><span class="pun">=</span><span class="lit">3s</span>
<span class="pln">安装</span>
<span class="pln">apt</span><span class="pun">-</span><span class="pln">get install apache2</span>
<span class="pln">cd </span><span class="pun">/</span><span class="pln">etc</span><span class="pun">/</span><span class="pln">apache2</span><span class="pun">/</span>
<span class="pln">vi apache2</span><span class="pun">.</span><span class="pln">conf </span>
<span class="pln">cd </span><span class="pun">/</span><span class="pln">etc</span><span class="pun">/</span><span class="pln">apache2</span><span class="pun">/</span><span class="pln">sites</span><span class="pun">-</span><span class="pln">available</span>
<span class="pln">vi default</span>
<span class="pln"><span style="font-family: Consolas;"> </span><span style="font-family: Consolas;"> </span>DocumentRoot /home/ftp</span>
<span class="tag"><Directory</span><span class="tag">/></span>
<span class="pln"> Options FollowSymLinks</span>
<span class="pln"> AllowOverride None</span>
<span class="tag"></Directory></span>
<span class="tag"><Directory</span><span class="pun">/</span><span class="atn">home</span><span class="pun">/</span><span class="atn">ftp</span><span class="tag">/></span>
<span class="pln"> Options Indexes FollowSymLinks MultiViews</span>
<span class="pln"> AllowOverride None</span>
<span class="pln"> Order allow,deny</span>
<span class="pln"> allow from all</span>
<span class="tag"></Directory></span>
<span class="pun">/</span><span class="pln">etc</span><span class="pun">/</span><span class="pln">init</span><span class="pun">.</span><span class="pln">d</span><span class="pun">/</span><span class="pln">apache2 restart</span>
psql**常用命令大全**
\d [
table ]
列出数据库中的表,或(如果声明了)表 table 的列/字段.如果表名是用统配符 (“*”)声明的,列出所有表和表的列/字段信息.
\da
列出所有可用聚集.
\dd
object
列出
pg_description 里对声明的对象的描述,对象可以是一个表,表中的列/字段,类型,操作符或聚集.
小技巧:并非所有对象在
pg_description 里有描述.此后期命令在快速获取 Postgres 内部特性时很有用.
\df
列出函数.
\di
只列出索引.
\do
只列出操作符.
\ds
只列出序列.
\dS
列出系统表和索引.
\dt
只列出非系统表.
\dT
列出类型.
\e [
filename ]
编辑当前查询缓冲或文件
filename 的内容.
\E [
filename ]
编辑当前查询缓冲或文件
filename 的内容并且在编辑结束后执行之.
\f [
separator ]
设置域分隔符.缺省是单个空白.
\g [ {
filename | |command } ]
将当前查询输入缓冲送给后端并且(可选的)将输出放到 filename 或通过管道将输出送给一个分离的Unix shell 用以执行 command.
\h [
command ]
给出声明的 SQL 命令的语法帮助.如果 command 不是一个定义的 SQL
命令(或在 psql 里没有文档),或没有声明 command ,这时 psql将列出可获得帮助的所有命令的列表.如果命令 command 是一个通配符(“*”),则给出所有 SQL 命令的语法帮助.
\H
切换 HTML3 输出.等效于 -H 命令行选项.
\i
filename
从文件
filename 中读取查询到输入缓冲.
\l
列出服务器上所有数据库.
\m
切换老式监视器样的表输出,这时表周围有边界字符包围着.这是标准 SQL 输出.缺省时,psql 只包括列/字段间的分隔符.
\o [ {
filename | |command } ]
将后面的查询结果输出到文件
filename 或通过管道将后面结果输出到一个独立的Unix shell 里执行 command.如果没有声明参数,将查询结果输出到 stdout.
\p
打印当前查询缓冲区.
\q
退出 psql 程序.
\r
重置(清空)查询缓冲区.
\s [
filename ]
将命令行历史打印出或是存放到
filename.如果省略 filename ,将不会把后继的命令存放到历史文件中.此选项只有在 psql 配置成使用输入行时才有效.
\t
切换输出的列/字段名的信息头和行记数脚注(缺省是开).
\T
table_options
允许你在使用HTML
3.0 格式输出时声明放在表 table … 中的标记选项.例如,border
将给你的表以边框.这必须和 \H 后期命令一起使用.
\x
切换扩展行格式.当打开时,每一行将在左边打印列/字段名而在右边打印列/字段值.这对于那些不能在一行输出的超长行是很有用的.HTML 行输出模式也支持这个标记.
\w
filename
将当前查询缓冲区输出到文件
filename.
\z
生成一个带有正确
ACL(赋予/禁止 权限)的数据库中所有表的输出列表.
! [
command ]
回到一个独立的Unix
shell或执行一个Unix 命令 command.
\?
获得关于反斜杠 (“\”)
命令的帮助.
一般选项**
\c[onnect]
[数据库名|- [用户名称]]
联接到新的数据库 (当前为 “test”)
\cd [目录名] 改变当前的工作目录
\copyright 显示
PostgreSQL 用法和发布信息
\encoding
[编码] 显示或设置客户端编码
\h [名字]
SQL
命令的语法帮助, 用 * 可以看所有命令的帮助
\q 退出 psql
\set [名字 [值]] 设置内部变量, 如果没有参数就列出所有
\timing 查询计时开关切换 (目前是
关闭)
\unset 名字 取消(删除)内部变量
! [命令] 在 shell 里执行命令或者开始一个交互的 shell
信息选项**
\d [名字] 描述表, 索引, 序列, 或者视图
\d{t|i|s|v|S}
[模式] (加 “+” 获取更多信息)
列出表/索引/序列/视图/系统表
\da [模式] 列出聚集函数
\db [模式] 列出表空间 (加 “+” 获取更多的信息)
\dc [模式] 列出编码转换
\dC 列出类型转换
\dd [模式] 显示目标的注释
\dD [模式] 列出域
\df [模式] 列出函数 (加 “+” 获取更多的信息)
\dg [模式] 列出组
\dn [模式] 列出模式 (加 “+” 获取更多的信息)
\do [名字] 列出操作符
\dl 列出大对象, 和 \lo_list 一样
\dp [模式] 列出表, 视图, 序列的访问权限
\dT [模式] 列出数据类型 (加 “+” 获取更多的信息)
\du [模式] 列出用户
\l 列出所有数据库 (加 “+” 获取更多的信息)
\z [模式] 列出表, 视图, 序列的访问权限 (和 \dp 一样)
命令: ABORT
描述:
终止当前事务
语法:
ABORT [ WORK | TRANSACTION ]
命令: ALTER DATABASE
描述:
改变一个数据库
语法:
ALTER DATABASE 名字 SET 参数 { TO | = } { 值 | DEFAULT
}
ALTER DATABASE 名字 RESET 参数
ALTER DATABASE 名字 RENAME
TO 新名字
ALTER DATABASE 名字 OWNER TO
新属主
命令: ALTER GROUP
描述:
改变一个用户组
语法:
ALTER GROUP 组名称 ADD
USER 用户名称 [, … ]
ALTER GROUP 组名称 DROP USER
用户名称 [, … ]
ALTER GROUP 组名称 RENAME
TO 新名称
命令: ALTER INDEX
描述:
改变一个索引的定义
语法:
ALTER INDEX 索引名称
动作 [, … ]
ALTER INDEX 索引旧名称
RENAME TO 索引新名称
动作为以下之一:
OWNER TO 新属主
SET TABLESPACE indexspace_name
命令: ALTER SEQUENCE
描述:
改变一个序列生成器的定义
语法:
ALTER SEQUENCE 名字 [
INCREMENT [ BY ] 递增 ]
[MINVALUE 最小值 | NO
MINVALUE ] [ MAXVALUE 最大值 | NO MAXVALUE ]
[ RESTART [ WITH ] 开始 ] [
CACHE 缓存 ] [ [ NO ] CYCLE ]
命令: ALTER TABLE
描述:
改变一个表的定义
语法:
ALTER TABLE [ ONLY ] 表名 [ * ]
action [, … ]
ALTER TABLE [ ONLY ] 表名 [ * ]
RENAME [ COLUMN ] 字段名 TO 新字段名
ALTER TABLE 表名
RENAME TO 新表名
action 为下面的一种:
ADD [ COLUMN ] 字段名
类型 [ 字段约束 [ … ] ]
DROP [ COLUMN ] 字段名 [ RESTRICT | CASCADE ]
ALTER [ COLUMN ] 字段名 TYPE 类型 [ USING 表达式 ]
ALTER [ COLUMN ] 字段名 SET DEFAULT 表达式
ALTER [ COLUMN ] 字段名 DROP DEFAULT
ALTER [ COLUMN ] 字段名 { SET | DROP } NOT NULL
ALTER [ COLUMN ] 字段名 SET STATISTICS integer
ALTER [ COLUMN ] 字段名 SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }
ADD 表约束
DROP CONSTRAINT 约束名字 [ RESTRICT | CASCADE ]
CLUSTER ON 索引名称
SET WITHOUT CLUSTER
SET WITHOUT OIDS
OWNER TO 新属主
SET TABLESPACE 表空间名字
命令: ALTER TRIGGER
描述:
改变一个触发器的定义
语法:
ALTER TRIGGER 名字 ON 表 RENAME TO 新名字
命令: ALTER USER
描述:
改变一个数据库用户
语法:
ALTER USER name [ [ WITH ] option [ … ] ]
where option can be:
CREATEDB | NOCREATEDB
| CREATEUSER | NOCREATEUSER
| [ ENCRYPTED | UNENCRYPTED ] PASSWORD ‘password’
| VALID UNTIL ‘abstime’
ALTER USER name RENAME TO newname
ALTER USER name SET parameter { TO | = } { value |
DEFAULT }
命令: COPY
描述:
在一个文件和一个表之间拷贝数据
语法:
COPY 表名 [ ( 字段 [, …]
) ]
FROM { ‘文件名‘ |
STDIN }
[ [ WITH ]
[ BINARY ]
[ OIDS ]
[ DELIMITER [ AS ] ‘delimiter’ ]
[ NULL [ AS ] ‘null string’ ]
[ CSV [ QUOTE [ AS ] ‘quote’ ]
[ ESCAPE [ AS ] ‘escape’ ]
[ FORCE NOT NULL column [, …] ]
COPY 表名 [ ( 字段 [, …] ) ]
TO { ‘文件名‘ |
STDOUT }
[ [ WITH ]
[ BINARY ]
[ OIDS ]
[ DELIMITER [ AS ] ‘delimiter’ ]
[ NULL [ AS ] ‘null string’ ]
[ CSV [ QUOTE [ AS ] ‘quote’ ]
[ ESCAPE [ AS ] ‘escape’ ]
[ FORCE QUOTE column [, …] ]
命令: CREATE TABLE
描述:
定义一个新的表
语法:
CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY |
TEMP } ] TABLE table_name (
{ column_name data_type [ DEFAULT
default_expr ] [ column_constraint [ … ] ]
| table_constraint
| LIKE parent_table [ { INCLUDING |
EXCLUDING } DEFAULTS ] } [, … ]
)
[ INHERITS ( parent_table [, … ] ) ]
[ WITH OIDS | WITHOUT OIDS ]
[ ON COMMIT { PRESERVE ROWS | DELETE ROWS |
DROP } ]
[ TABLESPACE tablespace ]
where column_constraint is:
[ CONSTRAINT constraint_name ]
{ NOT NULL |
NULL |
UNIQUE [ USING INDEX TABLESPACE tablespace
] |
PRIMARY KEY [ USING INDEX TABLESPACE
tablespace ] |
CHECK (expression) |
REFERENCES reftable [ ( refcolumn ) ] [
MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]
[ ON DELETE action ] [ ON UPDATE action ] }
[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY
DEFERRED | INITIALLY IMMEDIATE ]
and
table_constraint is:
[ CONSTRAINT constraint_name ]
{ UNIQUE ( column_name [, … ] ) [ USING
INDEX TABLESPACE tablespace ] |
PRIMARY KEY ( column_name [, … ] ) [
USING INDEX TABLESPACE tablespace ] |
CHECK ( expression ) |
FOREIGN KEY ( column_name [, … ] )
REFERENCES reftable [ ( refcolumn [, … ] ) ]
[ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE
] [ ON DELETE action ] [ ON UPDATE action ] }
[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED |
INITIALLY IMMEDIATE ]
openstack环境上安装kafka
<span class="pln">wget http</span><span class="pun">://</span><span class="pln">mirrors</span><span class="pun">.</span><span class="pln">cnnic</span><span class="pun">.</span><span class="pln">cn</span><span class="pun">/</span><span class="pln">apache</span><span class="pun">/</span><span class="pln">kafka</span><span class="pun">/</span><span class="lit">0.8</span><span class="pun">.</span><span class="lit">2.1</span><span class="pun">/</span><span class="pln">kafka</span><span class="pun">-</span><span class="lit">0.8</span><span class="pun">.</span><span class="lit">2.1</span><span class="pun">-</span><span class="pln">src</span><span class="pun">.</span><span class="pln">tgz</span>
<span class="pln">tar </span><span class="pun">-</span><span class="pln">xzf </span>
kafka-0.8.2.1-src.tgz
<span class="pln">advertised.host.name=59.46.101.43 外网访问地址</span>
<span class="pln">bin</span><span class="pun">/</span><span class="pln">zookeeper</span><span class="pun">-</span><span class="pln">server</span><span class="pun">-</span><span class="pln">start</span><span class="pun">.</span><span class="pln">sh config</span><span class="pun">/</span><span class="pln">zookeeper</span><span class="pun">.</span><span class="pln">properties</span>
<span class="pln">bin</span><span class="pun">/</span><span class="pln">kafka</span><span class="pun">-</span><span class="pln">server</span><span class="pun">-</span><span class="pln">start</span><span class="pun">.</span><span class="pln">sh config</span><span class="pun">/</span><span class="pln">server</span><span class="pun">.</span><span class="pln">properties</span>
<span class="pln">bin</span><span class="pun">/</span><span class="pln">kafka</span><span class="pun">-</span><span class="pln">topics</span><span class="pun">.</span><span class="pln">sh </span><span class="pun">--</span><span class="pln">create </span><span class="pun">--</span><span class="pln">zookeeper localhost</span><span class="pun">:</span><span class="lit">2181</span><span class="pln"> </span><span class="pun">--</span><span class="pln">replication</span><span class="pun">-</span><span class="pln">factor </span><span class="lit">1</span><span class="pln"> </span><span class="pun">--</span><span class="pln">partitions </span><span class="lit">1</span><span class="pln"> </span><span class="pun">--</span><span class="pln">topic test</span>
<span class="pln">bin</span><span class="pun">/</span><span class="pln">kafka</span><span class="pun">-</span><span class="pln">console</span><span class="pun">-</span><span class="pln">producer</span><span class="pun">.</span><span class="pln">sh </span><span class="pun">--</span><span class="pln">broker</span><span class="pun">-</span><span class="pln">list localhost</span><span class="pun">:</span><span class="lit">9092</span><span class="pln"> </span><span class="pun">--</span><span class="pln">topic test </span>
<span class="pln">bin</span><span class="pun">/</span><span class="pln">kafka</span><span class="pun">-</span><span class="pln">console</span><span class="pun">-</span><span class="pln">consumer</span><span class="pun">.</span><span class="pln">sh </span><span class="pun">--</span><span class="pln">zookeeper localhost</span><span class="pun">:</span><span class="lit">2181</span><span class="pln"> </span><span class="pun">--</span><span class="pln">topic test </span><span class="pun">--</span><span class="pln">from</span><span class="pun">-</span><span class="pln">beginning</span>
曾几何时,要将本地代码推到gitlab上,需要把整个文件夹拷贝来拷贝去,现在看来这是多么傻的举动啊,下面就叫大家涨姿势!
作为一个程序员,我不本分,从去年秋天起陆续干了一些项目管理的活。在新奇过后我曾经一度感到恐慌,是要抛弃我热爱的技术去和人类打交道了吗?最近和几位前(ling)辈(dao)聊天渐渐觉得茅塞顿开。技术和管理这两样技能我都要掌握,谁都不抛弃,相辅相成,但是想到自己处于并将长期项目管理初级阶段的时候,我又黯然神伤了。
周五正好有一场公开性的项目管理知识讲座,我有幸参加。刚开始以为肯定又是培训公司做广告,没有什么实质性的内容,但是结果我还是学到了一些东西,当然广告必打无疑,只是没有那么浓烈。
因为讲课老师讲解的速度较快,所以很多内容我也只是记了提纲,回来以后自己整理如下:
一、关键路径
二、三是估计法
1、最乐观时间,也就是工作顺利情况下的时间为 a;
2、最可能的时间,就是完成某道工序的最大可能时间 m;
3、最悲观的时间,就是工作进行不利的情况下所用的时间 b。
那么由此根据三时估计法的计算公式确定这项工作的持续时间,即持续时间=(a + 4×m + b)/6。
三、项目管理模块及方法
1.范围管理 WBS(Work Breakdown Structure)
2.时间管理 PERT(Program/Project Evaluation and Review Technique)
3.成本管理 EVMS(Earned Value Manage-ment System)
4.质量管理 帕累托图
5.人力资源、沟通、风险和采购管理(软管理)
四、实践操作
4.1.项目使用场景
a.项目周期长
b.交付不及时
c.研发成不不可控
d.组织过程资产流失
e.质量控制不好
4.2推行办法
a.高层重视
b.PMO以支持式入手
c.合适的主管
4.3启动过程
a.立项报告
b.团队组建
4.4计划过程
a.工期实施计划
b.project 甘特图
c.风险控制——头脑风暴
d.精简制度(降低培训成本)
五、沟通策略
1.要什么(范围)——> 2.什么样(质量)——>3.何时要(时间)——>4.那什么做(资源)——>如何协调——>注意什么(风险)
总结:保持空杯心态,任务地方你都或多或少能学到知识,收获见识。
apt-get install vsftpd