使用bamboo构建play工程


首先登录bamboo


一、创建一个代码源,说简单点就是让bamboo知道你的项目在gitlab或者hg上的地址。




页面往下翻,点击Add repository按钮。





把这个页面填好,有问题请google翻译,点击“SAVE REPOSITORY”。


二、创建一个构建计划

点击首页中间的大大的“CREATE”按钮




填好点击“Configure Plan”。


三、编写构建任务

在首页列表中找到你刚建的plan



然后点击铅笔编辑来到下面这个页

Default Job里面已经有一个拉取代码任务。


接下来大家要根据自己的实际情况编写构建计划,下面我写个例子。


1.新建一个Script Task用来编译脚本,编译语句自己写,可以写成text,也可写成脚本文件。



2.新建Script Task将编译完的文件拷贝到目标服务器

本来应该用Scp Task,但是死活不好使,所以就用Script Task了,但是使用Script Task远程拷贝需要服务器做免密登录。

什么?不知道免密登录?自行google!




3.新建一个SSH Task登录目标服务器执行部署操作,下面这只是例子。




具体的脚本还得看实际情况,比如修改配置文件和拷贝静态文件等操作,那么如果你是play framework,还可以参考《为play工程写一个状态管理的脚本并且随机启动http://www.heartarea.net/?p=118

以上正文。

为play工程写一个状态管理的脚本并且随机启动

step1.先写脚本啦,废话不说,代码如下:
#!/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

step2.移动到/etc/init.d目录下,名字我改成baccy-router,然后增加执行权限
<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>
step3.加入到linux服务中,就可以随机启动啦
<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>
PS:也可以往linux计划(crontab )里添加进程检查策略,详情请咨询google。

playframework切换连接池c3p0(转载并整理)

众所周知,playframework使用的连接池是boneCP,但是确实十分坑爹,因为连接池中对象不能正常释放,导致连接池疯狂向数据库创建连接,最后导致应用获取不到可用连接而报错。当然不是我一个人遇到这个问题,stackoverflow的老外也被坑了一大片。

那么优秀程序员的品质得到体现,github上的hadashi写了一个插件解决了我们的问题。




1. <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>




当然貌似有人盗版,不知道是谁抄谁,无所谓嘛,不要在乎那些细节,我参考的是如下地址:


其实按照他的步骤一步步执行就好了。

第一、在build.sbt里面引用插件源




1. <span class="pln">libraryDependencies </span><span class="pun">++=</span><span class="typ">Seq</span><span class="pun">(</span>
2. <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>
3. <span class="pun">)</span>

第二、创建conf/play.plugins文件,录入如下内容





1. <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>

第三、让原有的db插件失效,修改application.conf





1. <span class="pln">dbplugin</span><span class="pun">=</span><span class="pln">disabled</span>



第四、配置数据源




1. <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>
2. <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>
3. <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>
4. <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>
5. <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>
6. <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>
7. <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>
8. <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>
9. <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>
10. <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>
11. <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>
12. <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>
13. <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>

以上为转载整理,请参阅。


PS:之前写东西上来就“废话不说,直接上码”,今天废话几句就是想弘扬一下像hadashi这样的优秀程序员的品质。

apache2 linux安装 配置



1. <span class="pln">安装</span>
2. <span class="pln">apt</span><span class="pun">-</span><span class="pln">get install apache2</span>
3. <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>
4. <span class="pln">vi apache2</span><span class="pun">.</span><span class="pln">conf </span>
5.6. <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>
7. <span class="pln">vi default</span>


修改配置




1. <span class="pln"><span style="font-family: Consolas;"> </span><span style="font-family: Consolas;"> </span>DocumentRoot /home/ftp</span>
2. <span class="tag">&lt;Directory</span><span class="tag">/&gt;</span>
3. <span class="pln"> Options FollowSymLinks</span>
4. <span class="pln"> AllowOverride None</span>
5. <span class="tag">&lt;/Directory&gt;</span>
6. <span class="tag">&lt;Directory</span><span class="pun">/</span><span class="atn">home</span><span class="pun">/</span><span class="atn">ftp</span><span class="tag">/&gt;</span>
7. <span class="pln"> Options Indexes FollowSymLinks MultiViews</span>
8. <span class="pln"> AllowOverride None</span>
9. <span class="pln"> Order allow,deny</span>
10. <span class="pln"> allow from all</span>
11. <span class="tag">&lt;/Directory&gt;</span>



重启




1. <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常用命令大全

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 ]


 SELECT setval(‘“anti”.”anti_menu_menuid_seq”‘, 180, true);

 

命令: 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

openstack环境上安装kafka


1.按照官网下载解压
选择你喜欢的版本,拷贝链接,然后cd到你喜欢的目录下。执行如下命令

  1. <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>
  2. <span class="pln">tar </span><span class="pun">-</span><span class="pln">xzf </span>kafka-0.8.2.1-src.tgz

    2.编辑conf/server.properties文件

  3. <span class="pln">advertised.host.name=59.46.101.43 外网访问地址</span>


    3.按照官方文档启动zookeeper、kafka,创建topic

  4. <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>

  5. <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>
  6. <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>

    以上就完成了安装。
    4.完成两个端口的外网映射,2181和9092保证外网可以telnet可达
    5.完成回路配置,保证内网虚机上ping外网地址59.46.101.43可达
    6.然后就可以使用了,按照官网的生产和消费命令试一下吧

  7. <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>

  8. <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上

曾几何时,要将本地代码推到gitlab上,需要把整个文件夹拷贝来拷贝去,现在看来这是多么傻的举动啊,下面就叫大家涨姿势!

前提:本地工作空间有个project,里面的代码已经写了不老少,但是从来没有往gitlab上推过。

因为大部分童鞋用的git客户端是sourceTree,那么git bash我就不说了,偷偷告诉你其实命令行更简单。

第一步、

62918648-d18c-481b-bac0-3f9a3d96fe3f


选择第三个选项卡,然后目标路径选择你的project文件夹,点击确认。


第二步、

86986f92-680b-4478-8ef9-58ff907867c2


右键“远程”选择“新的远程仓库”

db9356e9-11ce-4dbb-8e40-ec0ee32cc6d8


选择“添加”按钮

11252cf1-9fd7-403d-bd19-09c249c66cac


好了好了,请注意!!此处右上角请勾选“默认远端”,URL/路径写啥捏,别着急!

第三步、

浏览器登录gitlab服务器

8ba78c58-1d24-4dcd-bf49-03c3a8bcce89


创建一个repository

523353e8-5342-43b7-bc77-2bc5cdd9d821


hey man, look at here! 拷贝那个框框里面的地址,请注意选择http,咱们的gitlab选择ssh目前不好使。

第四步、

粘贴地址到第二步弹出的框里面,最后一路确定回去。

0d5b6385-b65b-4bab-8908-e9180348cda4


5e00da57-1a30-4543-9ec3-2e5d992455e5



然后你就可以添加文件、提交和推送啦!!

java.lang.VerifyError解决办法

直接上正文
java -XX:-UseSplitVerifier -XX:+FailOverToOldVerifier


java.lang.VerifyError: Stack map does not match the one at exception handler  


-XX:-UseSplitVerifier  关闭StackMapTable优化

-XX:+FailOverToOldVerifier  类型校验失败的时候退回到旧的类型推到方式 (jdk1.7之后主版本大于50的class文件,使用类型检查来完成数据流分析校验则是唯一的选择,不允许退回到类型推导的校验方式)

记一次项目管理培训

作为一个程序员,我不本分,从去年秋天起陆续干了一些项目管理的活。在新奇过后我曾经一度感到恐慌,是要抛弃我热爱的技术去和人类打交道了吗?最近和几位前(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.那什么做(资源)——>如何协调——>注意什么(风险)

总结:保持空杯心态,任务地方你都或多或少能学到知识,收获见识。

 

 

vsftpd的安装和配置

apt-get install vsftpd


配置文件在 /etc/vsftpd.conf

默认是只开启匿名用户的,只能读不能写。

放开 它 local_enable=YES


cd /home

mkdir ftp

useradd -d /home/ftp ftpuser

passwd ftpuser 设置上密码

chown ftpuser:ftpuser ftp

chmod 755 ftp


如果是debian,如上应该可以了。

使用cmd ftp 192.168.1.X

输入用户名密码

put someth.txt


如果是ubuntu的话


cd /etc

echo “ftpuser” >> vsftpd.chroot_list



设置匿名账户的访问目录

anon_root=/home/ftp


然后/etc/init.d/vsftpd restart