Linux上给新建的用户赋权限

ubuntu的超级管理员root用户默认是不启用的,root默认是空密码,所以root是不能使用的。

  1. 为root设置密码,在终端执行sudo passwd root指令后,系统会提示你设置一个root账号的密码。在你没有经过当前用户密码验证的时候,还会要求你先输入当前用户的密码,然后才能设置root帐号的密码。设置完成后,就可以在终端切换到root用户了。

    切换用户su root或者su sunhao
    

外网访问本机

  1. 登陆路由器:一般地址为192.168.1.1,默认用户admin,密码admin。

  2. 隐射端口:找到“转发规则”―“虚拟服务器”―增加新条目–服务端口号设置为8080,IP地址设置为安装项目的IP,保存即可。

      8080:指的是项目tomcat的端口号
    
  3. 找到外网IP:一般在“运行状态”-“WAN口状态”-“IP地址”中显示,如113...*

  4. 此时外网已经可以访问,不过路由器的IP地址是动态的,会经常变,可以通过安装个动态域名解析软件来解决这个问题,以花生壳为例子。

  5. 注册个动态域名解析花生壳帐号:http://www.oray.com/passport/register.php

  6. 登陆花生壳后,在域名管理注册一个免费域名

  7. 下载花生壳软件:http://www.oray.com/peanuthull/download.php

  8. 在安装项目的电脑上安装花生壳软件,并且使用花生壳帐号登陆,如果登陆成功,外网已经可以通过域名访问项目,地址为http://免费域名:8080/项目部署名

函数式编程介绍

##什么是函数式编程
函数式编程是种编程典范,它将电脑运算视为函数的计算。函数编程语言最重要的基础是 λ 演算(lambda calculus)。而且λ演算的函数可以接受函数当作输入(参数)和输出(返回值)。和指令式编程相比,函数式编程强调函数的计算比指令的执行重要。和过程化编程相比,函数式编程里,函数的计算可随时调用。

Sonar使用方法

###方法1:直接在服务器分析

  • 在项目源代码目录新建sonar-project.properties文件touch sonar-project.properties

  • 编辑此文件vim sonar-project.properties,内容如下:

      # Required metadata
      sonar.projectKey=my:project		#项目的key
      sonar.projectName=My project	#项目显示的名称
      sonar.projectVersion=1.0		#版本
    

作为一个苦逼码农,我要想想我以后的出路

    程序员,在外行看来是一个很高端的行业,搞IT的,高端人才,天天坐办公室,多爽。可是在我们自己看来,只有自己知道自己的苦。每天不固定的加班不说,还有忍受着客户各种无理苛刻的需求。

    或许是我们自己对技术的热爱,对新技术的狂热追求,他甚至曾经有段时间超越我追求妹子的欲望。我可以为一个bug熬个通宵,我可以为了一个新技术狂啃3天馒头不出门,但是我忍受不了别人对我的努力不赞同。这可能就是最真实的程序猿。

    程序猿不擅长与人交流,因为程序猿最擅长的是和电脑打交道,他们视电脑如媳妇,视代码如孩子,视新技术如新衣服一样的狂热追求。有人说,程序猿是最好的老公人选,他们有着固定的工作,拿着高薪,而且不会乱花钱,接触面很窄,很难出轨,经常会加班,不会约束到另一方。是的,我们确实是这样的状态,但是谁能知道我们心中的狂野吗?我们会骂,这傻逼系统,真垃圾,要我做,绝对比这好一百倍。还有这傻逼客户,怎么会提出这样傻逼的需求呢?

    今天一个同事说要辞职了,问他原因,他说要去自己做生意了,觉得做程序猿没有前途,要去和朋友合伙卖手机。很好的一个想法,反过来我想想自己,除了能写的了一手好代码,又能干些什么?在公司,每天帮着同事解决各种他们解决不了的问题,然后听着他们说你好厉害啊,我觉得心里特别舒服,很有成就感,或者发现某一个问题很操蛋,然后自己熬了一个通宵写出一个工具,然后心满意足的群发一封邮件给各个同事,最好带着慢慢的成就感上床睡觉去了。可是,一走到外面,那情况就正好反过来了,别人都说,你怎么这个都不会。。。

    我的生活很单调,除了公司、吃饭的地方、睡觉的地方就没有了,每个周末之前都在心里说,明天是个好周末,我要出去转转,结果周五或者周六晚上,领导或者现场一个电话来,说这里有问题,帮忙改改,明天要上线客户要看,我就哼哧哼哧的搞到2-3点钟,第二天一觉睡到下午,久而久之,也就习惯了这样的作息时间。以至于现在没了六块腹肌,没了胸肌,没了肱二头肌。啥也没了。

    如果不做程序猿,我能做什么?去珠江路开个修电脑的店?在小区附近开个奶茶店?还是回老家和我爸一起做装潢?我他妈的到底能做什么?

写给亲爱的媳妇还有未来的娃

现在是2014年1月14号晚上6点39。

致我未来的媳妇(现在叫亲爱的媳妇):

    虽然我现在还不知道你到底是谁?到底是哪里人?但是有些话我还是很想跟你说说。

    首先,你可以说你不懂爱情,因为我自己也不太懂,咱可以一起去学习什么是爱情,什么是家庭。我们一起长大,一起慢慢的变老,直到死去。这不是很浪漫很幸福的事情吗。

    其次,咱结婚以后,家里的财政大臣由你来当,我不会理财,也不喜欢去理财,所以这重任只能交给你来做了。我负责挣钱,你负责花钱。在家,你就是我的公主、我的皇上,我是你的取暖器、你的泄气包;在外,我是你的避风港、你的移动指路台、你的保镖。如果以后我们有了孩子,如果是女孩,那我会永远保护你们娘俩,如果是男孩,那我们爷俩永远会保护你。

    最后,也是最重要的一点,我喜欢你能像对你父母兄弟姐妹一样的对待我的父母兄弟姐妹,因为他们是我在这个世界上除了你以外最亲最爱的人了,同样,我也会像对待我自己的父母兄弟姐妹一样对待你的父母兄弟姐妹。也只有这样,我们的小家庭才会永远的幸福美满。

    现在,我想说一句:我会努力的去做一个合格的丈夫,以后我们有了孩子以后,我还会变成一个合格的父亲!

致我未来的娃:

    现在我还不知道你这熊孩子是男孩是女,不过不管你是男还是女,我都会爱你的。

    如果你是男孩,在你没有上学之前,我不会要求你去背什么唐诗宋词,学什么乱七八糟的数学英语什么的,我会给你一个美好的童年。在你上学之后,我也不需要你考试每次都能考到第一第二名的,因为谁也不能保证每次考试都能考好。原则上的事情我会对你很严格的,但是我不会动手K你的,打你只能会让你变得更加叛逆。还有,在你18岁之后,请自己为你自己的路做决定,你老爹我只会给你建议。在你18岁之前,老爸我都是你的避风港,18岁之后,你要负责和我一起保护你老妈,一直到我老了,你就要保护我和你老妈了。

    如果你是女孩,我会一直一直把你当成我的小公主,我会给你买最漂亮的衣服,吃最好的,用最好的。考试成绩神马的,老爸都不会要求你的,只需要你给我平平安安的。还有18岁之前不要谈恋爱,18岁之后谈恋爱了,必须要把那家伙给我带回来看看,老爸要是不同意看不上,你就赶紧的让他拜拜。我对你的他的要求就是:能够保护你,要对你百分之一百的好。我在想,在你出嫁的那天,我一定会哭的,因为有个男人把你从我身边抢走了。

结束

    好了,写到这里了,连媳妇都没有的人,在这胡思乱想。唉,洗洗睡吧。

PS:

  1. 媳妇已经出现了,马上就要一起步入爱情的坟墓了!
  2. 努力造娃ing

关于maven的几个常用插件

最近整理了自己写的一个项目,使用maven+svn管理,idea开发,搭建了一个maven的私服.原来是凌乱不堪,所以费了好大劲才整理好,而且平时公司项目上事情多的一米…

下面说说使用的几个插件(至于那些dependency就让它们见鬼去吧)

不说废话了,代码贴上

  1. clean插件

     <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-clean-plugin</artifactId>
         <version>2.5</version>
         <configuration>
             <filesets>
                 <fileset>
                     <directory>F:/logs</directory>
                 </fileset>
                 <fileset>
                     <directory>../message-test</directory>
                     <includes>
                         <include>spy.log</include>
                     </includes>
                 </fileset>
                 <fileset>
                     <directory>../message-test/target</directory>
                 </fileset>
             </filesets>
         </configuration>
     </plugin>
    

    这个插件没啥好说的,要是不需要删除别的地方代码,就用默认的,不用任何配置

  2. 单元测试插件

     <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
         <version>2.16</version>
         <configuration>
             <skip>true</skip>
         </configuration>
     </plugin>
    

    单元测试没做好,一测就报错,干脆给skip了

  3. resources

     <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-resources-plugin</artifactId>
         <version>2.6</version>
         <executions>
             <execution>
                 <id>copy-resources</id>
                 <!-- here the phase you need -->
                 <phase>validate</phase>
                 <goals>
                     <goal>copy-resources</goal>
                 </goals>
                 <configuration>
                     <outputDirectory>${basedir}/target/test-classes</outputDirectory>
                     <resources>
                         <resource>
                             <directory>${basedir}/src/main/webapp/WEB-INF/config</directory>
                             <filtering>true</filtering>
                         </resource>
                     </resources>
                 </configuration>
             </execution>
         </executions>
     </plugin>
    

    用来复制一些资源文件,配置都是直译的

  4. war

     <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-war-plugin</artifactId>
         <version>2.4</version>
         <configuration>
             <warName>${message.war.name}</warName>
             <includeEmptyDirectories>true</includeEmptyDirectories>
             <webResources>
                 <resource>
                     <directory>../message-easyjs</directory>
                     <targetPath>js</targetPath>
                     <excludes>
                         <exclude>**/.svn</exclude>
                         <exclude>**/*.iml</exclude>
                         <exclude>**/pom.xml</exclude>
                     </excludes>
                 </resource>
             </webResources>
         </configuration>
     </plugin>
    

    打war包的插件

  5. jetty

     <plugin>
         <groupId>org.mortbay.jetty</groupId>
         <artifactId>maven-jetty-plugin</artifactId>
         <version>6.1.10</version>
         <configuration>
             <!-- 配置扫描时间 -->
             <scanIntervalSeconds>10</scanIntervalSeconds>
             <!-- 配置项目在容器中的根路径 -->
             <contextPath>${project.contextPath}</contextPath>
             <!-- 配置jetty容器中的jndi -->
             <jettyEnvXml>src/main/resources/jetty.xml</jettyEnvXml>
             <connectors>
                 <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
                     <!-- 端口 -->
                     <port>${project.port}</port>
                     <maxIdleTime>60000</maxIdleTime>
                 </connector>
             </connectors>
             <!-- 按照官网上说的是配置停止容器的快捷键和端口,至今不知怎么在idea中如何使用,有知道的麻烦告知下,3Q -->
             <stopKey>foo</stopKey>
             <stopPort>8888</stopPort>
         </configuration>
         <executions>
             <!-- 配置在maven哪个生命周期执行插件的哪个动作 -->
             <execution>
                 <id>jetty_run</id>
                 <!-- maven生命周期 -->
                 <phase>compile</phase>
                 <!-- 执行插件的哪个动作 -->
                 <goals><goal>run</goal></goals>
             </execution>
         </executions>
         <dependencies>
             <!-- 这个插件依赖的几个包 -->
             <dependency>
                 <groupId>org.eclipse.jetty</groupId>
                 <artifactId>jetty-io</artifactId>
                 <version>7.6.6.v20120903</version>
             </dependency>
             <dependency>
                 <groupId>org.eclipse.jetty</groupId>
                 <artifactId>jetty-server</artifactId>
                 <version>7.6.6.v20120903</version>
             </dependency>
         </dependencies>
     </plugin>
    

    jetty这个插件当时可是整的我头疼,各种报错各种上网找资料,附上jetty的配置文件:jetty.xml

     <?xml version="1.0"?>
     <!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
     <Configure class="org.mortbay.jetty.webapp.WebAppContext">
         <New id="mysql" class="org.mortbay.jetty.plus.naming.Resource">
             <Arg>jdbc/core</Arg>
             <Arg>
                 <New class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource">
                     <Set name="Url">jdbc:mysql://localhost:3306/message</Set>
                     <Set name="User">root</Set>
                     <Set name="Password">123456</Set>
                 </New>
             </Arg>
         </New>
     </Configure>
    
  6. cargo(可以启动tomcat,远程部署,本地部署,都支持的,这里我只用到本地部署,远程部署需要配置tomcat-user.xml和tomcat的控制台)

     <plugin>
         <groupId>org.codehaus.cargo</groupId>
         <artifactId>cargo-maven2-plugin</artifactId>
         <version>1.4.3</version>
         <configuration>
             <container>
                 <!-- tomcat的版本,tomcat6使用tomcat6x -->
                 <containerId>${cargo.tomcat.version}</containerId>
                 <!-- tomcat在本地的绝对路径 -->
                 <home>${tomcat.home}</home>
                 <!-- 本地安装就用installed,远程使用remote -->
                 <type>installed</type>
      
                 <!-- tomcat日志文件路径 -->
                 <output>${tomcat.home}/logs/container.log</output>
                 <append>false</append>
                 <log>${tomcat.home}/logs/cargo.log</log>
             </container>
             <configuration>
                 <!-- 本地部署,已存在 -->
                 <type>existing</type>
                 <!-- 再配置一次tomcat绝对路径 -->
                 <home>${tomcat.home}</home>
                 <properties>
                     <!-- 端口 -->
                     <cargo.servlet.port>${project.port}</cargo.servlet.port>
                 </properties>
             </configuration>
             <!-- 这里一次可以部署多个项目 -->
             <deployables>
                 <!-- 指定我部署的项目GAV -->
                 <deployable>
                     <groupId>com.message</groupId>
                     <artifactId>message-test</artifactId>
                     <!-- war包形式部署 -->
                     <type>war</type>
                     <properties>
                         <!-- 容器中的上下文根 -->
                         <context>${project.contextPath}</context>
                     </properties>
                 </deployable>
             </deployables>
         </configuration>
         <!-- 同jetty -->
         <executions>
             <execution>
                 <id>tomcat-run</id>
                 <phase>package</phase>
                 <goals><goal>run</goal></goals>
             </execution>
         </executions>
     </plugin>
    
    • tomcat使用cargo这个插件有个缺点,不能debug了,而且不是热部署,不知道cargo有没有热部署的功能,暂时我还没找到,待研究
    • jetty那个是可以热部署的,不管改Java类还是jsp或者css,js都可以(加减方法,改参数不行)
  7. 附上maven的properties

     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <junit.version>4.10</junit.version>
         <spring.version>3.0.5.RELEASE</spring.version>
         <jdk.version>jdk15</jdk.version>
         <tomcat.version>6.0.32</tomcat.version>
         <message.war.name>message</message.war.name>
         <project.port>8099</project.port>
         <project.contextPath>/core</project.contextPath>
         <tomcat.home>F:\study\apache-tomcat-6.0.32</tomcat.home>
         <cargo.tomcat.version>tomcat6x</cargo.tomcat.version>
     </properties>