• 是下面这篇文章所涉及的内容么?

    java 类加载全过程 [url]http://bbs.scmroad.com/thread-25959-1-1.html/url][

  • scp 链接不成功

    用户名/密码,地址之类的都正确?

  • 你去面试过?感觉如何?

  • NetScreen 还是不错的。

  • 其他不知道,但是我就不明白非要租盘古大观当自己的办公楼,得瑟?

  • 相当不错的文章,推荐

  • 你去面过?

    他们公司目前什么情况?

  • Git 常用命令 at 2013年03月04日

    Git 远程分支管理

  • Git 常用命令 at 2013年03月04日

    Git 补丁管理 (方便在多台机器上开发同步时用)

  • Git 常用命令 at 2013年03月04日

    [i=s] 本帖最后由 scmroad 于 2013-3-4 13:46 编辑

    Git 本地分支管理

    查看、切换、创建和删除分支

  • Git 常用命令 at 2013年03月04日

    查看提交记录

    [b] tig[/b] Mac 上可以使用 tig 代替 diff 和 log,brew install tig

  • Git 常用命令 at 2013年03月04日

    [b] 查看文件 diff[/b]

  • Git 常用命令 at 2013年03月04日

    [b] Git 常用命令

    查看、添加、提交、删除、找回,重置修改文件 [/b]

  • 可简化为 svn list -R

  • 我仔细分析了一下,发现是我没有说清楚,以致大家用的时候出现了问题。

    所以我对这个脚本更新了一下。运行的时候需要大家输入 5 个参数。

    前个参数,就是用户名和密码,如果没有程序会退出。 第三和第四个是两个版本号 第五个参数是 svn 地址

    脚本里中括号里边的内容,不是让大家去改的,是给大家做参考的。 比如 svn url 3: [svn://192.168.1.10/projectA] 中括号里只是个例子,你在这里改成你想要的地址是没用的。你必须在运行的时候输入相应的地址。

    大家只要在运行程序的时候输入相应的参数就可以了。 如果你对如何实现的不感兴趣,那么就别去改,否则会出问题。

    D:\project\build\build\util>python svnDiffCopy.py SVN User: [scmroad] 我的用户 SVN password: [scmroad] 用户的密码 Version 1: [Base] 2 Version 2: [Head] 5 svn url 3: [svn://192.168.1.10/projectA] svn://10.175.29.146/project/trunk [attach] 2085[/attach]

  • 如何从零开始学会 Rails at 2013年02月18日

    如何从 0 开始学 ruby on rails(漫步版) 转自 http://readful.com/post/12322300571/0-ruby-on-rails

    ruby 是一门编程语言,ruby on rails 是 ruby 的一个 web 框架,简称 rails。

    有很多人对 rails 感兴趣,但又不知道从何下手、学习路线是什么,因为在多个场合下回答过类似问题,所以决定整理成文章供大家参观。

    有很多人选择直接学习 rails,在学习使用 rails 的过程中学习 ruby。但我觉得这有些本末倒置,我更推崇先学 ruby 再学 rails,在对 ruby 有了一定的了解后再学 rails 有事半功倍的效果,同时也不会那么有挫败感。

    另外,不管你之前是否有过其它编程语言(如 java、php 等)的经验,都可以直接学 ruby 编程语言。

    废话有些多,下面列出一些指南,注:本文写于2011年11月4日,并于2012年3月4日更新,所有软件版本都以该日为准。

    开发平台选择

    Mac > Linux > Windows

    如果可以,最好不要在 Windows 下折腾 rails,你会浪费大量时间在解决一些莫名其妙的问题上,而这些问题可能永远不会在 linux 或 mac 下出现。

    开发工具选择

    Mac 下首推 Textmate,其次 Sublime Text 2,再次 Macvim,最后是一个 IDE Rubymine

    Linux 和 Windows 下推荐 Sublime Text 2 或 vim,也可以使用 Rubymine

    Ruby 版本选择

    推荐 ruby 1.9.3,备选 ruby 1.8.7 和 ruby 1.9.2

    Rails 版本选择

    推荐 rails 3.2.x,也就是目前的最新版(rails 3.2.2),因为 rails 更新非常快,且从不向下兼容,所以我推荐新手直接学最新版。

    Ruby 及 Rails 组合推荐

    ruby 1.9.3 + rails 3.2.x,备选 ruby 1.9.2 + rails 3.2.x

    版本控制系统选择

    大家可能更熟悉 cvs 或 SVN,但在这我推荐使用 git,可以看《Pro Git》(中文)一书。

    书籍推荐

    先学 ruby 看《Ruby 编程语言》,再学 rails 看《Ruby on Rails Tutorial Learn Rails by Example》

    ruby 进阶看《The Well-Grounded Rubyist》,rails 进阶看《The Rails 3 Way》

    注:上面有提到,因为 rails 更新非常快,且不向下兼容,同时中文翻译引进本来就慢,所以导致 rails 的简体中文资料严重滞后,不推荐阅读。

    注:推荐《Ruby on Rails Tutorial Learn Rails by Example》而不是《Agile Web Development With Rails》第 4 版的原因是,我个人觉得前者写的更好更简单易懂,而且可以同时学习 rspec(rails 的测试框架)。

    补充几本繁体中文的书《Ruby on Rails 實戰聖經》《Rails 101 - 火速學會 Ruby on Rails》《笨方法學 Ruby》做参考。

    必看资料

    rails 官方出的 guide,英文,会不断更新,内容详实,必看。

    开发环境搭建

    如果你使用 OS X 或 Linux 系统请阅读 Ruby China 上的「如何快速正确的安装 Ruby, Rails 运行环境」一文。

    如果你使用 Windows 操作系统,请使用「railsinstaller 一键安装包」。

    推荐站点

    1,Ruby China http://ruby-china.org,目前国内人气比较不错的一个 ruby 和 rails 相关的社区,推荐经常上去逛逛。尤其是 Wiki 部分 更应该多看看,都是非常棒的资料。

    2,“Crazy Deep” Rails 3.2 Example Apps and Tutorials,如果英语尚可,也推荐经常阅读,这里面有很多非常有用的链接和教程,包括搭建环境等,定期更新,推荐。

    重要补充

    这个世界上有种东西叫 GFW,全称是 Great Firewall,俗称「墙」。(维基百科上有更详细的介绍),简单讲,它导致我们无法直接访问很多网站和服务。

    这道墙严重影响到了每一个人的生活,尤其是 IT 人士,因为有无数的好网站、好服务被封了。

    而对于学习 ruby 和 rails 的人来说,这道墙影响更为直接,有可能让你直接止步不前。因为有可能你连 rails 环境都搭建不起来,这样你谈何学习?

    如果你 gem install xxx 出现 timeout、找不到该 gem 或长时间没有反应等情况,那就是因为 GFW 的原因,gem 安装都是通过 rubygems.org 这个网站,而该网站的资源都是放在亚马逊的 S3 服务上,不幸的是该服务的部分服务器被 GFW 封了。

    为了学习 ruby 和 rails,为了获取很多非常好的资源和信息,为了能畅通无阻地访问好网站和使用一些非常棒的服务,为了打开自己的眼界,我恳请你学会翻墙,也即代理。

    目前最简单、直接和方便的翻墙方式莫过于使用 VPN 了,购买 VPN 服务一年大概只需要花费几十块钱,我相信绝大部分人都能承担得起。

    说得夸张一点,当你有了 VPN 后,你就拥有了一个全新的世界。

    Rubygems 镜像

    虽然我极力推荐你购买 VPN 服务,但你还是可以有别的选择,那就是使用由淘宝网提供的 Rubygems 镜像。这样你也可以比较顺畅地下载和安装 gem,搭建 rails 开发和运行环境,使用方法直接点击前面给出的链接即可看到。

  • 如何从零开始学会 Rails at 2013年02月18日

    如何从零开始学会 Ruby on Rails? huacnlee

    这个话题曾经给身边的很多朋友说过同样的话题,这里整理以下。

    如果你是一个门外汉,你会 .NET 或是 Java 或是 PHP … 你对 Ruby on Rails 感兴趣,想学习,开怎么开始?

    如果你有以上语言两年以上的工作经验,按照我指的路子,最慢 1 个月就能学会 Ruby on Rails,这个方案曾经经过好几个人证实。

    以下步骤请一步一步来,切勿心急跳过,最好连我上面的链接都不要提前点击!

    安装 Linux 或 Mac, 开发工具使用 Windows & Linux -> Sublime Text 2, Mac -> TextMate 2 当然你也可以用 Vim 或 Sublime text 2; 安装 Ruby 和 Rails 开发环境可以按照这个流程:《如何快速正确的安装 Ruby, Rails》; 看完 http://guides.rubyonrails.org 这里有 繁体版本; 通过学习 Rails Guides 实现一个博客系统,包涵完整的功能 (包括 UI),预计两周; 从头到尾一字不漏的看完《应用 Rails 进行敏捷 Web 开发》; 回头审视之前的博客设计和《应用 Rails 进行敏捷 Web 开发》的区别,可以再重新搞个博客; 看完《Getting Real》,预计两个小时; 搞明白 Gem, RVM, Bundler 是什么; 看完《Rework》; 学习 Git, 上 http://github.com 并长期使用; 看 http://railscasts.com 的视频教程,从 第一页 开始看,可以学到很多技巧,以免走弯路。

    不管你信不信,有人反正是学出来了。 你可能会好奇问,为什么上面没有学 Ruby 的路线?…. 哈哈哈,Ruby 语言方面的东西你将会再学 Rails 的过程中慢慢学会,不用刻意取学习。 http://huacnlee.com/blog/how-to-start-learning-ruby-on-rails/

  • 不死京东的收官之战 at 2013年02月17日

    前几天京东不还招 SCM 呢么?赶紧进去吧,估计还有点股票

  • windows 和 Linux 下有没有这样的好东西?

    如果有,那研发搭建构建环境就方便多了

  • AWK 简明教程 at 2013年02月17日

    [i=s] 本帖最后由 scmroad 于 2013-2-17 09:40 编辑

    其实 awk 可以像 grep 一样的去匹配第一行,就像这样:

    $ awk '/LISTEN/' netstat.txt tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN tcp 0 0 :::22 :::* LISTEN 我们可以使用 “/FIN|TIME/” 来匹配 FIN 或者 TIME :

    $ awk '$6 ~ /FIN|TIME/ || NR==1 {print NR,$4,$5,$6}' OFS="\t" netstat.txt 1 Local-Address Foreign-Address State 5 coolshell.cn:80 124.205.5.146:18245 TIME_WAIT 6 coolshell.cn:80 61.140.101.185:37538 FIN_WAIT2 9 coolshell.cn:80 116.234.127.77:11502 FIN_WAIT2 11 coolshell.cn:80 183.60.215.36:36970 TIME_WAIT 13 coolshell.cn:80 124.152.181.209:26825 FIN_WAIT1 15 coolshell.cn:80 183.60.212.163:51082 TIME_WAIT 18 coolshell.cn:80 117.136.20.85:50025 FIN_WAIT2 再来看看模式取反的例子:

    $ awk '$6 !~ /WAIT/ || NR==1 {print NR,$4,$5,$6}' OFS="\t" netstat.txt 1 Local-Address Foreign-Address State 2 0.0.0.0:3306 0.0.0.0:* LISTEN 3 0.0.0.0:80 0.0.0.0:* LISTEN 4 127.0.0.1:9000 0.0.0.0:* LISTEN 7 coolshell.cn:80 110.194.134.189:1032 ESTABLISHED 8 coolshell.cn:80 123.169.124.111:49809 ESTABLISHED 10 coolshell.cn:80 123.169.124.111:49829 ESTABLISHED 12 coolshell.cn:80 61.148.242.38:30901 ESTABLISHED 14 coolshell.cn:80 110.194.134.189:4796 ESTABLISHED 16 coolshell.cn:80 208.115.113.92:50601 LAST_ACK 17 coolshell.cn:80 123.169.124.111:49840 ESTABLISHED 19 :::22 :::* LISTEN 或是:

    awk '!/WAIT/' netstat.txt 折分文件

    awk 拆分文件很简单,使用重定向就好了。下面这个例子,是按第 6 例分隔文件,相当的简单(其中的 NR!=1 表示不处理表头)。

    $ awk 'NR!=1{print > $6}' netstat.txt

    $ ls ESTABLISHED FIN_WAIT1 FIN_WAIT2 LAST_ACK LISTEN netstat.txt TIME_WAIT

    $ cat ESTABLISHED tcp 0 0 coolshell.cn:80 110.194.134.189:1032 ESTABLISHED tcp 0 0 coolshell.cn:80 123.169.124.111:49809 ESTABLISHED tcp 0 0 coolshell.cn:80 123.169.124.111:49829 ESTABLISHED tcp 0 4166 coolshell.cn:80 61.148.242.38:30901 ESTABLISHED tcp 0 0 coolshell.cn:80 110.194.134.189:4796 ESTABLISHED tcp 0 0 coolshell.cn:80 123.169.124.111:49840 ESTABLISHED

    $ cat FIN_WAIT1 tcp 0 1 coolshell.cn:80 124.152.181.209:26825 FIN_WAIT1

    $ cat FIN_WAIT2 tcp 0 0 coolshell.cn:80 61.140.101.185:37538 FIN_WAIT2 tcp 0 0 coolshell.cn:80 116.234.127.77:11502 FIN_WAIT2 tcp 0 0 coolshell.cn:80 117.136.20.85:50025 FIN_WAIT2

    $ cat LAST_ACK tcp 0 1 coolshell.cn:80 208.115.113.92:50601 LAST_ACK

    $ cat LISTEN tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN tcp 0 0 :::22 :::* LISTEN

    $ cat TIME_WAIT tcp 0 0 coolshell.cn:80 124.205.5.146:18245 TIME_WAIT tcp 0 0 coolshell.cn:80 183.60.215.36:36970 TIME_WAIT tcp 0 0 coolshell.cn:80 183.60.212.163:51082 TIME_WAIT 你也可以把指定的列输出到文件:

    awk 'NR!=1{print $4,$5 > $6}' netstat.txt 再复杂一点:(注意其中的 if-else-if 语句,可见 awk 其实是个脚本解释器) $ awk 'NR!=1{if($6 ~ /TIME|ESTABLISHED/) print > "1.txt"; else if($6 ~ /LISTEN/) print > "2.txt"; else print > "3.txt" }' netstat.txt

    $ ls ?.txt 1.txt 2.txt 3.txt

    $ cat 1.txt tcp 0 0 coolshell.cn:80 124.205.5.146:18245 TIME_WAIT tcp 0 0 coolshell.cn:80 110.194.134.189:1032 ESTABLISHED tcp 0 0 coolshell.cn:80 123.169.124.111:49809 ESTABLISHED tcp 0 0 coolshell.cn:80 123.169.124.111:49829 ESTABLISHED tcp 0 0 coolshell.cn:80 183.60.215.36:36970 TIME_WAIT tcp 0 4166 coolshell.cn:80 61.148.242.38:30901 ESTABLISHED tcp 0 0 coolshell.cn:80 110.194.134.189:4796 ESTABLISHED tcp 0 0 coolshell.cn:80 183.60.212.163:51082 TIME_WAIT tcp 0 0 coolshell.cn:80 123.169.124.111:49840 ESTABLISHED

    $ cat 2.txt tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN tcp 0 0 :::22 :::* LISTEN

    $ cat 3.txt tcp 0 0 coolshell.cn:80 61.140.101.185:37538 FIN_WAIT2 tcp 0 0 coolshell.cn:80 116.234.127.77:11502 FIN_WAIT2 tcp 0 1 coolshell.cn:80 124.152.181.209:26825 FIN_WAIT1 tcp 0 1 coolshell.cn:80 208.115.113.92:50601 LAST_ACK tcp 0 0 coolshell.cn:80 117.136.20.85:50025 FIN_WAIT2 统计 下面的命令计算所有的 C 文件,CPP 文件和 H 文件的文件大小总和。

    $ ls -l *.cpp *.c *.h | awk '{sum+=$5} END {print sum}' 2511401 我们再来看一个统计各个 connection 状态的用法:(我们可以看到一些编程的影子了,大家都是程序员我就不解释了。注意其中的数组的用法)

    $ awk 'NR!=1{a[$6]++;} END {for (i in a) print i ", " a[i];}' netstat.txt TIME_WAIT, 3 FIN_WAIT1, 1 ESTABLISHED, 6 FIN_WAIT2, 3 LAST_ACK, 1 LISTEN, 4 再来看看统计每个用户的进程的占了多少内存(注:sum 的 RSS 那一列)

    $ ps aux | awk 'NR!=1{a[$1]+=$6;} END { for(i in a) print i ", " a[i]"KB";}' dbus, 540KB mysql, 99928KB www, 3264924KB root, 63644KB hchen, 6020KB 脱掉内衣

    awk 脚本 在上面我们可以看到一个 END 关键字。END 的意思是 “处理完所有的行的标识”,即然说到了 END 就有必要介绍一下 BEGIN,这两个关键字意味着执行前和执行后的意思,语法如下:

    BEGIN{ 这里面放的是执行前的语句 } END {这里面放的是处理完所有的行后要执行的语句 } {这里面放的是处理每一行时要执行的语句} 为了说清楚这个事,我们来看看下面的示例:

    假设有这么一个文件(学生成绩表):

    $ cat score.txt Marry 2143 78 84 77 Jack 2321 66 78 45 Tom 2122 48 77 71 Mike 2537 87 97 95 Bob 2415 40 57 62 我们的 awk 脚本如下(我没有写有命令行上是因为命令行上不易读,另外也在介绍另一种用法):

    $ cat cal.awk #!/bin/awk -f # 运行前 BEGIN { math = 0 english = 0 computer = 0

    printf "NAME NO. MATH ENGLISH COMPUTER TOTAL\n" printf "---------------------------------------------\n" } # 运行中 { math+=$3 english+=$4 computer+=$5 printf "%-6s %-6s %4d %8d %8d %8d\n", $1, $2, $3,$4,$5, $3+$4+$5 } # 运行后 END { printf "---------------------------------------------\n" printf " TOTAL:%10d %8d %8d \n", math, english, computer printf "AVERAGE:%10.2f %8.2f %8.2f\n", math/NR, english/NR, computer/NR } 我们来看一下执行结果:(也可以这样运行 ./cal.awk score.txt)

    $ awk -f cal.awk score.txt

    NAME NO. MATH ENGLISH COMPUTER TOTAL

    Marry 2143 78 84 77 239 Jack 2321 66 78 45 189 Tom 2122 48 77 71 196 Mike 2537 87 97 95 279

    Bob 2415 40 57 62 159

    TOTAL: 319 393 350 AVERAGE: 63.80 78.60 70.00 环境变量 即然说到了脚本,我们来看看怎么和环境变量交互:(使用-v 参数和 ENVIRON,使用 ENVIRON 的环境变量需要 export)

    $ x=5

    $ y=10 $ export y

    $ echo $x $y 5 10

    $ awk -v val=$x '{print $1, $2, $3, $4+val, $5+ENVIRON["y"]}' OFS="\t" score.txt Marry 2143 78 89 87 Jack 2321 66 83 55 Tom 2122 48 82 81 Mike 2537 87 102 105 Bob 2415 40 62 72 几个花活

    最后,我们再来看几个小例子:

    # 从 file 文件中找出长度大于 80 的行 awk 'length>80' file

    # 按连接数查看客户端 IP netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr

    # 打印 99 乘法表 seq 9 | sed 'H;g' | awk -v RS='' '{for(i=1;i<=NF;i++) printf("%dx%d=%d%s", i, NR, i*NR, i==NR?"\n":"\t")}' 自己撸吧

    关于其中的一些知识点可以参看 gawk 的手册:

    内建变量,参看:http://www.gnu.org/software/gawk/manual/gawk.html#Built_002din-Variables 流控方面,参看:http://www.gnu.org/software/gawk/manual/gawk.html#Statements 内建函数,参看:http://www.gnu.org/software/gawk/manual/gawk.html#Built_002din 正则表达式,参看:http://www.gnu.org/software/gawk/manual/gawk.html#Regexp (全文完)

  • 新年快乐

  • 到招聘网站上一搜就可以找到。

  • 怎么损坏的?

  • 谁面试过这个职位?

  • 开发一般都有 1000000。。。。。个理由,要开一个新分支,实际上好好想想,我们真的要开一个分支才能解决这个问题么?未必