嗯嗯,继续。

  • nginx和fastcgi启动配置

    2个配置文件,放于/etc/init.d下面。

    cd /etc/init.d
    touch fast-cgi
    touch nginx
    sudo chmod +x /etc/init.d/nginx /etc/init.d/fast-cgi

    nginx

    #! /bin/sh
    
    ### BEGIN INIT INFO
    # Provides:          nginx
    # Required-Start:    $all
    # Required-Stop:     $all
    # Default-Start:     2 3 4 5
    # Default-Stop:      0 1 6
    # Short-Description: starts the nginx web server
    # Description:       starts nginx using start-stop-daemon
    ### END INIT INFO
    
    PATH=/usr/local/nginx/sbin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    DAEMON=/usr/local/nginx/sbin/nginx
    NAME=nginx
    DESC=nginx
    
    test -x $DAEMON || exit 0
    
    # Include nginx defaults if available
    if [ -f /etc/default/nginx ] ; then
    	. /etc/default/nginx
    fi
    
    set -e
    
    . /lib/lsb/init-functions
    
    test_nginx_config() {
      if nginx -t
      then
        return 0
      else
        return $?
      fi
    }
    
    case "$1" in
      start)
    	echo -n "Starting $DESC: "
            test_nginx_config
    	start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \
    		--exec $DAEMON -- $DAEMON_OPTS || true
    	echo "$NAME."
    	;;
      stop)
    	echo -n "Stopping $DESC: "
    	start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \
    		--exec $DAEMON || true
    	echo "$NAME."
    	;;
      restart|force-reload)
    	echo -n "Restarting $DESC: "
    	start-stop-daemon --stop --quiet --pidfile \
    		/var/run/$NAME.pid --exec $DAEMON || true
    	sleep 1
            test_nginx_config
    	start-stop-daemon --start --quiet --pidfile \
    		/var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS || true
    	echo "$NAME."
    	;;
      reload)
            echo -n "Reloading $DESC configuration: "
            test_nginx_config
            start-stop-daemon --stop --signal HUP --quiet --pidfile /var/run/$NAME.pid \
                --exec $DAEMON || true
            echo "$NAME."
            ;;
      configtest)
            echo -n "Testing $DESC configuration: "
            if test_nginx_config
            then
              echo "$NAME."
            else
              exit $?
            fi
            ;;
      status)
    	status_of_proc -p /var/run/$NAME.pid "$DAEMON" nginx && exit 0 || exit $?
    	;;
      *)
    	echo "Usage: $NAME {start|stop|restart|reload|force-reload|status|configtest}" >&2
    	exit 1
    	;;
    esac
    
    exit 0

    查看全部内容 >>

我对Linux系统还处于初入门阶段,在配置安装Linode VPS的服务过程中学到了不少东西,了解了不少概念,特记之。

  1. 启用

    Linode的网站设计非常简洁,一个粗略认识英文的同学都可以轻易申请搞定,就不需要再介绍了。

    在选择服务器网络物理位置的时候,Linode提供了一个下载测试列表供大家测试,你可以选择访问速度最优的位置。网上其它同学很多选择Fremont,不过我测试下来(杭州ADSL4M)Newark最快,浏览器单线程下载速度稳定达到300K+,所以我选择了Newark。估计各地网络不同有所区别,大家选用建议自行测试。

    系统我选择的是ubuntu(嗯,已经提供9.10Server了),主要是出于我对ubuntu桌面版的使用习惯和偏爱。网上很多说法是ubuntu服务器版不够专业,不过我本来也不太够专业,也不知道ubuntu哪里不够专业,呵呵,也就无所谓了。

  2. 环境基本配置

    在web面板开启虚拟机以后,你就可以通过root用户和密码在客户端(推荐putty)登录。登陆后第一件事情,增加一个新账号(用你的常用名 例如myname)。

    adduser myname
    visudo
    

    在该文件中增加以下行

    myname ALL=(ALL) ALL
    

    此操作使myname用户可以使用sudo命令,如果要给其他账号提供sudo操作权限,类推。

    ok,exit命令退出putty登录再重启,通过myname账号和你设置的密码重新登录系统。Linode默认提供的ubuntu的源缺少一些开发包,所以我们先编辑一下源。

    sudo vi /etc/apt/source.list
    

    我们需要做的仅仅是将文件中已经注释掉的几行源去掉前面的“#”,重新开启即可——不需要为具体的源担心,默认的已经飞速了。然后我们需要刷新一下

    sudo apt-get update
    

    我习惯使用vim,所以先安一个

    sudo apt-get install vim
    

    我们还需要一个中文UTF的本地环境,不过这得看情况,也许你不需要?

    sudo locale-gen zh_CN.UTF-8
    sudo /usr/sbin/update-locale LANG=zh_CN.UTF-8
    

    将服务器时间设置为上海时间

    sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    
  3. 查看全部内容 >>

dreamhost to Linode

星期一, 11月 23rd, 2009

dreamhost越来越2了,整天不务正业优化服务,就知道往我邮箱发PS广告。广告倒是吹的挺不错,不过问题是你旧的成熟的虚拟主机都做不好,我怎么可能信任你PS呢?后来网上很多同仁的经验也表明dh的PS不太靠谱。

Linode口碑一直不错,但是价格虽然在VPS中算是实惠,也总比一般虚拟主机高一截。最近Linode在国内似乎小火了一把,好些网上同仁撰文推荐,重新上去看看,发现最低配置已经由原来256M升级到了360M,性价比又有提升了。琢磨一下,弄个nginx+fastcgi跑wordpress,再搞一个jetty在后面跑java小应用,应该没啥问题。

正好dreamhost到期了,嗯,搞搞。

Web 开发与设计师速查手册大全

星期二, 07月 21st, 2009

非常丰富且有用的资源,copy记录存照。

来源:http://www.tripwiremagazine.com/tools/design/40-must-have-cheat-sheets-for-effective-web-designers.html
整理:COMSHARP CMS

Cheat Sheet 一词在中文中并没有很贴切的对译,大概是考试作弊条一类的东西,这要求 Cheat Sheet 必须短小精悍又覆盖广泛,作为 Web 开发与设计师,免不了在工作时查询大量资料,某个 Web 色值,某个 JavaScript 库的核心语法,这类资料如果攒齐了,怕有半间屋子那么多,如果用 Cheet Sheet 也许几十页纸就够了,本文收集了近百份用于 Web 开发与设计的 Cheet Sheet,你会发现他们非常实用。

HTML, XHTML, CSS2

CSS2 Cheat Sheet
一份完整的 CSS2 速查手册。预览 | 下载 (PDF)

Gosquared CSS help sheets
设计和结构都很整齐,漂亮。下载(PDF)

查看全部内容 >>

some conception in java

星期三, 07月 15th, 2009

  • JNDI: (Java Naming and Directory Interface) 这是在javaEE体系内部的一个“域名”系统,你可以通过配置指定某种资源的命名,然后通过该命名来引用资源,以达到程序代码和资源之间解耦的目的。这里的资源最常见的是jdbc数据源,通常还会有某种环境实体、EJB组件或者其他资源引用。

  • RMI: (Remote Method Invocation) RMI内置于java语言核心,是java最高效的远程对象访问和调用技术。实现类似功能的技术每个平台都有,.NET平台下有.net remoting,不过到3.0以后都整合为WCF了。RMI是基于TCP/IP的,效率很高,是EJB的实现基础,但是不能穿越防火墙。要能穿越防火墙当然得走http,最常见的就是web service得soap了,不过公认soap的效率是非常低的。我google了一下,java常用的技术还有Hessian/Burlap/Httpinvoker,这些都是基于http协议的,可以穿越防火墙。其中Hessian基于二进制代码,协议公开,在.net/php/python等各个语言都有相应实现。Burlap是基于xml,效率相对低些。Httpinvoker内置于Spring,据说效率和RMI差不多,但是应用不多不太成熟。目前除了EJB基于RMI以外,其他情况下最常用的是Hessian。

  • JMS: (Java Message Service) 共享空间和消息传递是软件系统中最常用的数据传播方式,jms就是java提供的消息传递服务,一般也叫做消息中间件,基本来说这也是每个技术平台必备构成,例如.net或者说ms的消息队列(MQ)组件。如何控制消息的传递?点对点?分发订阅?异步传输?这些特性都由jms提供,不需要程序员自己再从头开发了。特别的,javaEE提供了一种特殊的消息驱动bean(message-driven bean,MDB),他将ejb和jms联系起来,利用jms消息来调用bean。

  • 查看全部内容 >>

thinking of java web develop learning

星期四, 07月 9th, 2009

看了几天java web开发的东东,简单梳理一下。

  • 容器

    这是java web开发过程中非常强调的一个概念。顾名思义,在它的内部存放着某些东西,各种java对象,包括所谓的bean等等。java的容器也可以称其为一个应用服务,或一个框架,用户通过配置指定代码或者说对象、构件存放的路径,以及对象之间的关系、对象和容器直接的关系。这通常有一套标准,例如javaEE本身的servlet/jsp的规范,或容器本身特定的某些标准,你的配置和代码必须符合这种标准,才能被容器调用使用。标准有很多形式,xml的配置、java接口的实现、对象的继承、java的标注等等,他们决定了对象如何被容器调用、对象之间的关系、以及对象在容器中的运行状态。

    目前作为java web开发最常用的servlet/jsp容器是tomcat,企业应用服务器是jboss。spring框架虽然没有服务器的概念,但是从其包含、组织、调用java组件的特征来看,也可以说是容器了。

    回忆.net,虽然没有特别强调容器的概念,但是从程序的流程和组织架构来说,iis就是.net web程序运行的容器了。

  • web生命周期

    在任何技术平台的web开发中,web的生命周期都是一个核心概念。由于web应用都是基于http协议和b/s模式,所以不论采用何种技术,其生命周期都是类似的。

    查看全部内容 >>

Tomcat与Java Web开发技术详解

星期日, 07月 5th, 2009

Tomcat与Java Web开发技术详解

想找基于java的web开发书,原来选定的几本oreilly的书后来看看,版本都太老了,而且内容比较分散,不适合入门阶段上手。无意在书店翻了翻这本,看了一遍目录感觉还不错,但是基于以往的恶劣经验,我很久没有看国产技术书籍了,有些犹豫。又详细看了一两章,回家又考虑再三,最后在amazon.cn买了。

花了4天时间,一口气看完,感觉挺不错。

优点

  • 技术体系比较完整。关于java web开发基本的各方面技术都讲到了,重点是servlet/jsp及其在tomcat下的部署,内容详实。其他ejb、struts、ant、log4j等相关技术和工具也简单带过,使读者有初步的了解。
  • 行文流畅,逻辑清晰。文字阅读都很流畅,没有什么晦涩的地方,理解没有什么问题——也许这和我以往.net web开发经验有关,不过文字叙述确实不错,就算没有太多的web开发经验应该也问题不大。
  • 理论和实践并重。技术的讲述既有原理,也有代码实践,还包括servlet/jsp类的简单类图和源代码,方便理解。

吹毛求疵一下。这是一本教你如何上手servlet/jsp的书,一本教程,读完了你应该就可以上手做一些相关实践开发工作,但是在此之外,你也不太可能有其他更多的收获。作者就是站在一个普通的开发人员的角度,来讲述如何完成一系列工作,做一个合格的开发人员,仅此而已。和我们常看的那些国外的经典技术书籍相比,此书缺乏某种大的视角。我看完这本书,立刻又去翻了一下《JSP设计》,两者都是讲的相同的东西,但是阅读的体验大不相同。

嗯,最后,这是一本好书,如果你希望掌握java web开发的基本技能,这本书是一个不错的选择。

mozilla firefox 3.5 release

星期三, 07月 1st, 2009

http://www.mozilla.com/en-US/firefox/

我常用的浏览器有3个

chrome:web2.0专用浏览器,速度快,广告少。
firefox:强大的插件系统,超越你的想象。
ie:还有搞不定的?压箱底的武器……嗯,只能压箱底用。

head first java

星期四, 06月 11th, 2009

head first java

一本非常棒的书,不愧“head first”的称谓。清晰的条理,生动的图示,偶尔来点老外的幽默——其实中国人不太能理解,阅读体验非常舒畅。oreilly的这个系列应该都很熟悉了,优点多多估计大家都知道,就不提了,说点不优的吧。

  • 如果你熟悉一门类似的静态面向对象语言(例如C#)那就不要看这个了,你会觉得有些罗嗦,因为大部分语言特性你都很清楚,没有必要看那么多示例、提示和比较等等;
  • 如果你是想全面的了解java语言,估计你会很失望,这本书里面甚至没有讲“反射”;
  • 如果你想找一本语法参考,那这不是你想要的(好像有点吹毛求疵……);

好吧,基本来说,如果你没有C#的熟练经验,并且想学习java语言,那这几乎可以说是你必看的第一本书,因为他实在太……嗯,也没有别的语句了,实在太棒了。

当看完了这本——一个有足够coding经验的人大概需要2~3天,如果还想继续比较全面的了解java语言,那就看这个

Java技术手册

很经典的java手册,全面描述了java的语言特性,简洁明了。可惜,中文版把后面的参考手册截了。出版社的本意是好的,大家可以少花钱,网上查查就行。 可惜Java网上文档的质量啊,实在不咋地,别的不说,就那个排版和字体,看起来真是头疼。

建议以后还是保留,不翻译也没关系。

D2 live

星期五, 06月 5th, 2009

杭州有一个D2前端技术论坛,英文是Designer & Developer Frontend Technology Forum,这里的designer主要是指Web设计师,developer主要是指Web前端开发工程师。

D2对于我的生活来说是一种状态,对于生活我既是一个设计师也是一个程序员,前者以直觉感性来体验、觉察并反照这个世界,后者通过理性、逻辑来认识并构建这个世界,两者道不同,但殊途同归。

因此我把D2作为了我职业生涯的主体,web设计和web程序是我一直所钟的工作。也许得归结于性别文化,我要更加趋向于理性、逻辑的程序构建,但是我从来也不曾想要放弃designer。或者对于我来说,这两者从来没有分离过。

设计一个web界面时,我常常沉迷于视觉上的愉悦和这种愉悦的创造快感,但我同时还会考虑设计如何实现、平面如何合理切割、代码如何组织构建,种种思绪交织,令这种快感加倍。

同时当我构建一个程序时,漂亮的代码、优美的语法语义、优雅而严密的逻辑结构是我所追求的目标,我不能容忍粗制滥造的代码,我常常为此花很多时间去修改一些交到我手中实现服务器端程序的html代码,修正结构改良代码,或者花上半天时间去修改重构一个已经完成的应用程序,我的偏执让我很乐于做这样的事情,看见漂亮的干净的代码我会感到无比舒畅,并且到最后总会证明这些付出是值得的。

不论是做design还做develop,我总在这些过程中觉察到美的存在,这种觉察给我带来很多美妙的体验,这些体验加强了我在这个世界中的存在。

这个世界之所以这样是因为如果他不是这样那么我们就无法生存在这个世界,不记得这是谁说的了,但是这话也同样适用于美的体验。为什么我们觉查这个世界的美?因为如果他不美我们就不会存在于这个世界。

我曾经对美的认知做过很长的思考,因其源于人的某种主观,或者其直觉的感性的特征,人们总是喜欢把她和理性的逻辑的规律的世界对立起来。然而事实上,美是人类对这个严密逻辑的规律的冷酷的世界的法则的最高认知的结果,她是人类百万年来进化历程中对这个世界认知的最高抽象。人类对这个世界理性认知的不断积累和抽象,产生了一个能超越理性来认知这个世界的主体意识,这就是人类的审美意识。

所以说对于程序,这种企图以严密的逻辑、完美的规则和超大量的运算来重构这个世界的小东西,美是创造的最高追求。

一个执著于美的程序员,嗯,这就是我的D2生活。

2 of 1812345...last »