GitLab分支使用策略

  1. 创建一个主仓库dev,保持和线上同步,随时可被部署线上和fork一份最新代码;
  2. 每个成员fork一份dev分支代码;
  3. 在自己fork出来的代码里做开发工作;
  4. 开发完成后发出一个合并请求 pull request,等待被其他有合并权限的同事合并代码,合并代码需要进行code review,而不是简单的合并,并且要处理合并冲突的;
  5. 如果主仓库dev有新更新,需要先fetch,合并到自己的仓库里,若有冲突,那么处理先冲突。

Team开发相关工具

整理了下目前在Team中使用的工具:

Jar包版本管理:Maven

Maven中央库代理:Nexus

代码版本管理:Git (推荐阅读 ProGit)

Git管理系统:Stash(10人版)

Git客户端:SourceTree || SmartGit || Gitbox

开发工具:Eclipse || NetBeans || IDEA

Web服务器:Glassfishv3 || Tomcat

前端服务器:Nginx

数据库:MySQL (5.1 || 5.5)

MySQL管理工具:Sequel Pro || Navicat || MySQLWorkbench

持续集成:Hudson

Bug管理工具:禅道

知识共享:MediaWiki && Evernote

沟通工具:邮件 && QQ

FTP & SFTP : FileZilla

文件共享:Samba

虚拟机管理:Virtualbox

其他想到再补充

Secure Admin must be enabled to access the DAS remotely.

在上篇文章中提到了Glassfish 3.1.2,在部署的过程中发现登陆控制面板,出现:

Secure Admin must be enabled to access the DAS remotely.

这个在之前的glassfish好像默认是打开的。

现在需要我们手动打开,例如:

asadmin --host 192.168.1.2 --port 4848 enable-secure-admin

对于的关闭方式:

asadmin --host 192.168.1.2 --port 4848 disable-secure-admin

ps: 更改如上设置,需要重启 glassfish

In-use connections equal max-pool-size and expired max-wait-time. Cannot allocate more connections.

最近在 glassfish 3.1上老遇到这个问题:

[#|2012-04-27T09:52:49.677+0800|INFO|glassfish3.1|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=54;_ThreadName=Thread-1;|taSource.getConnection(DataSource.java:117)
	at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:81)
	at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
	... 158 more
Caused by: javax.resource.spi.ResourceAllocationException: Error in allocating a connection. Cause: In-use connections equal max-pool-size and expired max-wait-time. Cannot allocate more connections.
	at com.sun.enterprise.connectors.ConnectionManagerImpl.internalGetConnection(ConnectionManagerImpl.java:310)
	at com.sun.enterprise.connectors.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:190)
	at com.sun.enterprise.connectors.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:165)
	at com.sun.enterprise.connectors.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:160)
	at com.sun.gjc.spi.base.DataSource.getConnection(DataSource.java:110)
	... 160 more
Caused by: com.sun.appserv.connectors.internal.api.PoolingException: In-use connections equal max-pool-size and expired max-wait-time. Cannot allocate more connections.
	at com.sun.enterprise.resource.pool.ConnectionPool.getResource(ConnectionPool.java:418)
	at com.sun.enterprise.resource.pool.PoolManagerImpl.getResourceFromPool(PoolManagerImpl.java:242)
	at com.sun.enterprise.resource.pool.PoolManagerImpl.getResource(PoolManagerImpl.java:167)
	at com.sun.enterprise.connectors.ConnectionManagerImpl.getResource(ConnectionManagerImpl.java:341)
	at com.sun.enterprise.connectors.ConnectionManagerImpl.internalGetConnection(ConnectionManagerImpl.java:304)
	... 164 more
|#]

而这个问题貌似在glassfishv3上却没有,最后发现这篇文章:

http://www.java.net/forum/topic/glassfish/glassfish/glassfish-v3-jdbc-use-connections-equal-max-pool-size

也就是glassfish 3.0.1和glassfish 3.1可能都存在这样的问题

而从具体的修复情况看,已经在最新版的glassfish 3.1.2中修正,如遇上述问题,可以试试3.1.2

通过ehcache为页面添加缓存

首先是包的依赖,这个具体就不说了,去ehcache官网下载最新稳定版,然后将jar包加入项目依赖。

最主要的是web.xml的配置和ehcache.xml的配置:

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <filter>
        <filter-name>SimplePageCachingFilter</filter-name>
        <filter-class>net.sf.ehcache.constructs.web.filter.SimplePageCachingFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>SimplePageCachingFilter</filter-name>
        <url-pattern>/index.jsp</url-pattern>
    </filter-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

继续阅读通过ehcache为页面添加缓存

Git学习笔记-Git内部原理

新的项目使用git来进行版本管理,git在离线的版本管理方面非常的棒,这样一来其分布式版本管理的优势就会很明显了。

跟传统的CVS和SVN等版本管理工具来比,git可谓是用的是最“笨”的办法来进行版本管理。

我们知道CVS和SVN进行版本管理时,一个文件被创建后,更改后,再次提交只记录版本间的差异,也就是在CVS和SVN的版本管理系统中,一个文件只有一个完整的副本,我们获取的某些版本下的文件都是通过记录的差异,然后从原始的副本计算得来。

而git呢? 则是任何改动后的提交都是记录一个完整的副本。如果是多个人完成一个项目,那么各自完成各自负责的部分并本地提交,最后只要将各自的git系统合并即可,有冲突处理冲突,没有冲突的就直接加进来,这样很方便分布式版本管理。

接下来我们看看git的内部原理,英文说明比较简单,也就不做翻译了:
继续阅读Git学习笔记-Git内部原理

用 git config 配置用户信息

用git config –list可以查看当前的git配置列表

如果已经配置了,则会看到user.name 和 user.email的配置信息

如果没有,一般情况下在git提交时会使用机器名,诸如:unknown dev@xxx-PC.(none) 等类型的Author信息,肯定不方便了。

建议都配置明确的user.name 和 user.email信息。

可以通过下面的命令进行配置:

git config user.name xxx
git config user.email xxx@xxx.com

配置完成后可以通过 git config –list 查看到