'Web开发' Category

  • Dproxy发布一个可用版本

    Dproxy是用nodejs编写的一个web调试代理。 项目托管在Github上: http://github.com/deemstone/dproxy 缘起 主要有两个原因促使我决定开发Dproxy: 1. Mac平台下没有像Fiddler一样好用的调试代理; Fiddler在前端开发方面的作用主要有两个:比绑host更方便管理;可以提供更灵活的开发环境. 多个人协作开发的情况,这种便利就很明显了.(用代理,将不同的文件请求转发到不同的服务器上). 2. 基于一个灵活的”代理软件”,定制的开发一些扩展功能,可以用来解决工程管理方面碰到的一些问题. 比如,接口模拟器.前后端独立开发的情况下,可以使用它提供一个临时的开发环境,方便直观. 功能设计原则: 专注提供一个灵活配置的代理软件; 让开发环境变得简单(丢弃nginx); 方便分享代理配置; 提供扩展机制; 跨平台,支持第三方GUI外壳; 现状: 已经是v0.2版了,之前有过一个Demo版本,0.2版是完全重写的一个新版本,各项基本功能可用(难免有些小bug).可以替代nginx做一个本地的静态服务器,没有图形界面,手动修改.rule配置文件,修改保存即时生效.还提供了一个简单的命令行控制台,具体用法可以看github项目首页的介绍. 欢迎试用,并提供您宝贵的建议.

  • Google code上一次不一样的SVN checkout体验

    忍了很久了,一直想抽点时间帮忙把这个软件增强一下. 最近这个项目终于被死死的墙在外面了.废了好大劲儿才弄明白怎么通过ssh使用svn签出. 本来想法很简单,svn支持http代理,但是手头没有直接能用的http代理. 本来还以为,设置了系统的代理,svn就能直接被代理了呢,结果不像我想的那样… 通过SSH Tunnel使用SVN 原理很简单,就是通过一个能正常访问google服务器的”ssh服务器”做跳板来间接的访问google code. ssh -L 9999:xxxx.googlecode.com:80 xxx@ssh.server.com 解释: -L  建立”本地端口映射” (把本地的一个端口映射到远程某个服务器上的另一个端口) 9999  是要使用的本地端口(随便选一个,只要不跟你机器上其他服务冲突就行) xxxx.googlecode.com   是最终要访问的那个服务器名或者地址 80  是最终要访问的那个服务器端口 后面就是正常的ssh连接的内容了 通常这条命令需要用root权限执行(直接sudo就行了,  第一次提示输密码是sudo的密码, 第二次密码才是ssh服务器的密码) 登录成功!  (即 端口映射成功) 现在的网络状况: 所有发往本地9999端口的数据全都通过这个管道传送到xxxx.googlecode.com:80上去了. 还没完 由于googlecode的svn服务器需要域名来判断你访问的哪个库,所以直接用localhost不行. 那就简单办法:绑个host  添加一条:   127.0.0.1   gfwinterceptor.googlecode.com  就OK了. 参考: 另外一个可以参考的工具:   http://www.abgba.com/article/technology/ssh-tunnel-svn_up-openwr.html 总结常用的ssh_Tunnel软件(比较全):  http://ihipop.info/2011/07/2629.html SSH Port Forwarding (SSH Tunneling) : http://www.linuxhorizon.ro/ssh-tunnel.html Poor man’s VPN using [...]

  • Nodejs分享资源列表

    Git 《The Git Community Book》http://book.git-scm.com/ 《Git Community Book 中文版》http://gitbook.liuhui998.com/ 《Pro Git》http://progit.org/book/ 一个引导实验手册(中文):http://gitimmersion.googol.im github:http://github.com Nodejs 安装:https://github.com/joyent/node/wiki/Installation npm: http://npmjs.org 为什么Nodejs的并发性能高:http://cnodejs.org/blog/?p=780 CommonJS:http://wiki.commonjs.org/wiki/CommonJS 介绍CommonJS:http://www.grati.org/?p=165 编写Nodejs原声扩展:https://www.cloudkick.com/blog/2010/aug/23/writing-nodejs-native-extensions/ 译文:http://www.grati.org/?p=413 DB Redis http://redis.io MongoDB: http://www.mongodb.org/ CouchDB:http://couchdb.apache.org/ ECMA-262 标准解读:http://dmitrysoshnikov.com/ecmascript/javascript-the-core/ 官方:http://www.ecma-international.org/publications/standards/Ecma-262.htm 秀 实时协作的任务列表:http://thingler.com/ 实时访客统计:http://nodelytics.strx.it/stat/www.strx.it 实时流量统计:http://projects.nuttnet.net/hummingbird/ 随时聊天:http://chattrr.net/client.htm

  • Nodejs中的模块(Modules) – v0.4版

    总结Nodejs中模块的引用,和一些技巧。 Node 0.4版本之后官方文档有些变化,搜寻模块的顺序跟以前可能不太一样。 永远不变的是这一句:Node uses the CommonJS module system. Node里面模块有三种:核心模块(内建二进制的)、js文件、文件夹(一组文件) 文件型模块:一般用.js/.node扩展名保存,js是纯文本的js文件,.node是编译的二进制addon模块。 引用模块的时候,Node首先按照指定的名字查找,如果没有找到就自动添加这两个扩展继续搜寻 文件夹型模块:目录中的package.json指明这个组的主程序。如果没有这个文件,Node会加载里面的index.js/index.node(如果有的话) 引用方法两种: require(‘模块名字’); require(‘./相对路径’); Node搜寻模块的几个位置(可以把自定义模块放到这里): 如果require的不是“路径”(包括绝对和相对路径) Node会沿着目录的路径向上查找名为node_modules的文件夹 : 官方文档里的例子:在’/home/ry/projects/foo.js’中引用require(‘bar.js’)搜寻的顺序 /home/ry/projects/node_modules/bar.js /home/ry/node_modules/bar.js /home/node_modules/bar.js /node_modules/bar.js 关于多层嵌套引用的搜寻顺序在官方文档里Optimizations to the `node_modules` Lookup Process部分有说明。 可以用require.resolve()查看具体引用的哪个文件 注:如果引用的模块名字与内建的模块重名,Node默认直接返回内建的模块(比如 http)。所以,与内建的模块重名的模块只能用相对路径引用。 待整理……

  • Mac上的Unix开发工具

    Mac系统华丽的界面把Unix包装的太深了,但是Unix有的东西Mac里面还原汁原味的保留着呢。 Mac的命令行支持所有标准的Unix命令,但是其他一些Unix&Linux中常用的工具&包管理器,Mac里面可能没有自带,这里总结一些这样的Mac工具。 Mac中已经自带了Python、Ruby、Perl,这些方便我们安装更多好用的工具。 一、软件包管理 1.Homebrew:http://mxcl.github.com/homebrew/ 新概念的包管理器。所有包都从源码编译安装。 类似于一套ruby脚本库,帮你自动化的“下载-编译-安装” (wget-tar-configure-make-make install) 2.MacPorts:http://www.macports.org 3.Fink:http://www.finkproject.org 二、编程开发 1.Xcode:Unix开发工具 三、 不断积累更新……

  • 简单分享:windows用git工具

    公司里用的是svn,越来越感觉过于笨拙,不够灵活(主要还是大家都不会用,只会checkout和commit) 有时候自己做点小东西喜欢用分布式版本管理系统,比如Mercurial Hg 之前只会用svn和cvs的时候 完全理解不了git是怎么用的,后来用了一段时间的hg后发现“分布式”的一些优点,其他工具无法替代。现在回来尝试git(说起来,当时刚刚接触git查到的那几篇教程太烂了,本来挺简单的几个概念给我解释的晕头转向,让我一直对这个东西有恐惧心理) 正文: 同样,git源自Unix世界,Win上用git现在终于也比较简单了:TortoiseGit(又是那个乌龟)、msysgit(git for win 命令行程序) 1.去msysgit的页面下载7z格式的PortableGit,解压就能用了(绿色的,随意放在哪个目录) msysgit原本是提供一整套工具,可以在windows上源码编译安装git(那个complete要130多兆)。现在有了这个直接的二进制版,直接下来来用就行了。 2.下载TortoiseGit小乌龟,安装(它依赖第一步安装的git程序),然后配置git的路径(就是让小乌龟知道git程序在哪)。 (说白了,小乌龟只是个图形界面,真正版本控制、管理代码还是调用git完成) 文件夹里点邮件 -> 小乌龟菜单 -> setting    他可能会提示你没有找到git   然后去设置界面 “浏览”   ==  /git解压安装的路径/bin 可以了! 为什么不直接用命令行,用小乌龟显得很不专业…… 我也想那样命令行比较酷,但是windows的命令行(cmd&powerShell)没法处理utf-8汉字,输进去、输出来全都是乱码。(恨啊……) 参考: 其他关于中文的配置可以参考这篇文章:http://www.cnblogs.com/baizx/archive/2010/08/09/1796120.html

  • Firefox的智能表单提交

    莫名其妙,突然发现程序里面的表单绑定的事件被执行了两次……(那里包含一个统计功能,也就是统计数字都会2倍,悲剧了) 更悲剧的是,查了半天没发现有什么重复绑定的事件…… 用其他浏览器试了一遍,正常,没有重复执行。 后来我发现了这个秘密:火狐的表单提交事件变的“相当智能”了!!我想说:“太TM智能了!!” 场景: 每个表单的提交按钮照旧用type=submit,而且为了屏蔽Chrome的“回车提交”功能 给form加了action=”javascript:void(0)”.另外,为了让所有的浏览器都能回车提交(只绑定了最后一个输入框的事件) 然后,邪门的事儿就发生了:只要给submit的按钮绑定了事件,火狐就会默认给表单里的“回车”绑定到那个submit绑定的动作…… 无语了…… 今天早上Firefox好像是自动更新了一次,现在的版本号是 3.6.11,不知道是不是这个版本的特有功能……

  • 是苹果 也是Unix

    做技术的都喜欢用linux,桌面上都是Ubuntu,我就偏偏喜欢被咬了一口的Mac。 他们不了解Mac,都说我是非主流……倒也没说错,linux出了问题google一下基本就解决,而且全中文……mac环境下开发遇到问题,平均Google二十几次也解决不了问题。 其实Mac就是基于BSD Unix造出来的,命令行上的东西应该都是一样的。只是在Unix的内核外面重新造了一套超级好用的图形界面,这里还包括一堆新概念:软件.app框架、程序数据的管理(类似于windows的AppData)、pkg安装包、dmg硬盘镜像、系统配置、Dock….(在mac的世界里,只要会用鼠标拖拽,就能完成系统的管理) 不过,国内的Mac用户好像大多是做设计和做产品的,真正把Mac当作Unix用的太少,中文Google里完全找不到共同语言。看来我要在这方面出一份力了。 前几天刚刚解决了Kerberos的问题,昨天又搞了一天的php环境(nginx + fpm + php + mysql),简单总结一下Mac这个Unix怎么编译安装新程序。 Mac默认不带GCC的,需要的话 得装个XCode,安装过程中要选上“Unix开发….”,然后才能在命令行里使用gcc/make等的命令 一般的从源代码编译安装都是 ./configure –prefix=/usr/local/your_soft make sudo make install 为了删除的时候方便 一般都用–prefix参数指定安装到一个单独目录下,不用的时候直接删除整个目录就行了。如果没有指定prefix,安装好的文件会散落在/usr/local/里面各个文件夹下。可以用rm $(find /usr |grep 软件名)来删除,这样可能会留下一小部分垃圾文件,不过除了浪费点空间,没什么大影响。rm $(find /usr |grep 软件名)在删除每个文件时都会让你确认一下,安全第一。你可以先 find /usr |grep 软件名)一下,如果你确认这些都是那个软件生成的,直接 rm -rf $(find /usr |grep 软件名)即可。 其他配置参数,可以先执行./configure –help查看一下。

  • Mac下使用Kerberos

    纠结了两天的Kerberos问题终于解决了,国内竟然没搜到这样的问题,简单记录一下…… 问题表现(看看是不是你遇到的那个问题): 本来Mac是自带kerberos程序包的(krb5-user),错就错在太相信Mac了…. kinit获取票据正常,klist可以看到获取到的票据,但是ssh登录我已经有权限的服务器还是让我输入密码 想看ssh的执行过程可以用参数-v(更详细的log信息可以用-vv甚至-vvv) 这个时候发现:可用的身份认证方式里面有gssapi… password 两种,但是前面那种跳过了(这个时候我才估计是kerberos缺文件了,ssh用不了kerberos…) 解决办法: 去这里:http://web.mit.edu/macdev/KfM/Common/Documentation/index.html 下载一个Mac OS X Kerberos Extras 安装一下就好了(是Mac自带krb5的一个补充) 注意安装过程选“自定义”去掉默认安装的mit kerberos配置,你自己的配置还是写在/etc/krb5.conf(上面mit的网站上写了放配置文件的三个位置了,要动哪个你随意) 其他的基本不用管了,安装过程会自动配置机器上的ssh开启kerberos认证方式。 可以了 别忘了Mac(leopard以上)系统还自带了一个图形界面的Ticket Viewer(深藏在这里/System/Library/CoreServices) 还有,那个著名的小卡车(Transmit)FTP客户端是支持kerberos的,密码不填直接连接就可以了!!爽!!

  • 总结前端JS开发流程

    就当我胡诌八扯瞎白话吧…… 参与项目与产品合作: 一定要参加产品讨论会,可以从技术的角度提供一些合理建议(主要还是告诉产品我们可以实现怎样的效果……可以这样,不可以那样),另一方面:把产品不靠谱的想法扼杀在摇篮,也是产品与技术之间熟悉沟通的过程,可以减少今后的理解偏差。 第一次拿到产品需求文档(这个时候可能需要估计大概的工时),一定要先通读,细读,画流程图(挨个对照设计图)找细节漏洞,直到每一个细节(细到提示文案每一个标点),这期间沟通很多,可以发现一些理解歧义。 修改后的产品文档,开始设计程序,做个模型,各方面接口约定好。一定要技术一起讨论这个问题,产品不应该分配这个任务。 估计准确的工时(加上根据2/8原则,或者其他什么更适合自己的原则)这个时候才能开始开发。 在项目周期,代码维护方面: 对于一个项目,应该会有好几期(如果这个产品策划的靠谱的话),几个原则: 对于今后可能出现的功能留有扩展余地 靠谱的产品应该有固定的一套设计元素(交互界面控件)这些可以考虑封装 在实验阶段的产品,设计元素没有确定,先写散,待产品渐渐稳定 一定要给时间整理代码,封装这些设计元素 不是产品要变成技术,更不是技术一定要转做产品,谁也不能取代谁,只是为更好的合作,做出更好的产品! 稍后继续总结完善(应该还会有图出来)

 
Powered by Wordpress. Design by Bingo - The Web Design Experts.