Submitted by gouki on 2010, December 5, 8:19 PM
以后,每逢周末就乱七八槽写点东西吧。精力有限,而无限制的转载其实意义也不是特别大,除了给自己做笔记外,其他的作用也真不是太大
1、来自yhustc的:微软亚洲研究院面经,因为我不知道Qzone非好友是否能够打开,如果不行,留言给我,我全文转载吧。这里转他的最后6点所谓的心得:
XML/HTML代码
- 微软的面试虽然累,但是收获还是非常丰富的。结合整个找工作的感受,总结几点:
- 1、有疑问要问面试官,除了一面的情况,三面那个float x的问题,我实在不知道怎么做,问面试官希望考察的重点是什么,人家跟我解释的过程其实答案也告诉你了。总比自己一个人沉默的想要好,一个题目不知道,咱们可以进入下一个嘛。
- 2、学过的跟计算机相关的课程,最好都复习一下,尤其是面微软这样的公司。其他公司因为时间受限,可能主要是面试算法题。但是微软有的是时间,一天时间四面,可以非常多的方面了,如果人家想的话。当然,正如二面的面试官说的,主要还是考察你思考问题的过程,背书式的出结果也没啥意思。最好学算法啥的都学通了,为什么要这么用,什么情况下适合用,不要吃快餐。
- 3、学习算法和编程知识的时候要触类旁通,多思考一些引申性的话题。比如一面那个排序用二叉搜索树来做,如果问你搜索树能不能排序,肯定说能,反过来问排序算法有哪些,估计很多人直接忽略了搜索树。再比如多线程加锁,各种情况下如何加锁更合适呢?现有的一些数据结构是否合适在多线程下操作呢?多思考一下,不管有没有结果,总比到了面试的时候再想要好得多。
- 4、实事求是,不隐瞒,多沟通。别的不说吧,就说现在的面试官以后可能是你的同事,你说要是面试过程中不实事求是,即使侥幸进入了,同事以后相处也是问题。一面最后有一个函数发生器的题目,跟四面最后一题一样,我看过类似的。我觉得没有必要隐瞒自己解题的思路,或者说故意假装想了很久,直接说我们先来思考一个别的题目吧,有点类似。进而讨论那个题目的时候,在面试官帮助下想想,能否借用已有知识解这个题。相信面试官也希望你是一个能触类旁通,容易沟通的人,而不是一个闷着头自己干的人。
- 5、每次面试不管成功与否,都应该总结经验;对于简历上的每项内容,都要准备好扩展内容,而不是简单罗列。总结经验改进不足,相信很多人知道。而扩展简历内容说的是什么呢?很多人列了项目经历,现在给你一个问题,介绍一下XX项目。你准备怎么回答?简历上只有摘要的条目,离面试要求查远了。所以一定要提前准备,项目做了什么,有何意义,应用场景,自己的工作,问题和收获,自己对项目的思考,这些都可以提前准备一下,然后面试的时候按照一个流程娓娓道来。
-
- 6、最后一个是本次找工作过程中的一个最大感受。相信很多人都会看很多书补充知识,但是书后面的题目,尤其是思考题,不知道有多少人做。编程之美上面每一章几乎都有拓展的思考题。我遇到过三次笔试或面试题目是这个思考题类似的。盛大和百度的笔试里面有,而因为我提前思考过,所以就直接做了。比当场想要好吧?腾讯的终面问了这么一个题目,搜索引擎如何区分伪原创。这个题目的精简版是根据关键字生成网页摘要,编程之美上面有。而页面相关,是这一章的思考题。当天中午我思考了一下,当天下午面试就遇到了比思考题更进一步的扩展。比面试当场想要好吧?并不一定是要压题,而是根据思考题发散思维,自己多想想有哪些解决方案,遇到类似问题不会那么仓促。
2、博客园的棍子上的萝卜推荐几本javascript与jquery的好书。前端用户可以看,话说那本PPK谈javascript我也有,确实感觉很简单。。然后作者在书中介绍了一个网址,有一些JS的参考手册哦:http://stephen830.javaeye.com/category/57459。
然后很奇怪的是发现这个域名居然是javaeye,然后又很奇怪的发现,它居然可以打开了,好奇怪的事情啊。。。关于它不能打开,robbin说的那句程序写的太好也是错啊,网上可以搜到这条信息的。
3、前两天,有人在博客园上批评了金山安全卫士的源码写的糟糕(金山安全卫士代码批评),其中有一段就是过多的if..else,认为用表驱动会效果和效率上都会好很多,当时文中还说了,如果不知道表驱动,那么就到google里搜索一下吧。(很多玩意儿果然只是一个名词,其实一说大家都懂)。于是这里有一篇简单的介绍和学习,可以参考一下:http://www.cnblogs.com/birdshover/archive/2010/12/02/1894703.html。
4、重构,重构,这句话,被大多数人都挂在嘴边,可是有多少人真正去做了?当晚上发现代码有问题,你第二天会去重构一下吗?一般来说,如果时间上很充分,我还是会去做这样的事情的,但你如果在一小公司,每天在不停的赶任务,你会去主动重构吗?或者会乘周末想办法重构?重构的好处是什么大家都懂,还有一本书叫《重构》,还有一个人在写《重构之美》,反正,随便折腾喽。。。
Tags: 招聘, 手册, 重构, 表驱动
Misc | 评论:0
| 阅读:15412
Submitted by gouki on 2010, December 4, 11:48 AM
在转这篇文章之前,我先说一点项目中遇到的问题,公司的主页最近改版上线,但是上线后出了一点问题,是CSS方面的问题。
CSS文件很多,前端把它分的很细,每一个小的widget部位就是一个单独的CSS文件,这样确实方便了有重复内容时的工作量减轻。于是我们在上线后,对CSS文件进行了合并,用的是Yii的插件 EclientScript(@hightman开发的一个插件)。CSS和JS都顺利合并了,但结果却不太正常。经过仔细检查发现是每个文件头的@charset=utf-8导致了这个问题。合并后,所有的文件内容都被引用到一起,所以造成了合并后的文件中“@charset=utf8”有好几个,但是为了保证文件是按utf-8格式被加载于是保留了最上面的@charset=utf8,其余的都删除了。OK,这时候所有的流量器都正常了。
结果第二天,老板过来说,在IPAD下不正常,于是继续排查,最终发现还是这个@charset=utf8的原因。前面说过,我们只保留了第一个文件的UTF8的判断,其他的都清空了,那为什么还会出错呢?经过测试,发现@charset=utf-8只能在第一行才有效,在其他行时,safari不认,而EClientScript在压缩文件后,会在文件第一行加上这个文件对应实际文件的地址,于是就让@charset=utf8到了第二行。所以IPAD上面显示就不太正常了。。
接下来就转载了:CSS通用元素选择器的都市流言,原文来自:http://shawphy.com/2010/11/css-universal-selector.html
本文尚未有测试数据支持,以下结论仅是根据现有情况的一种解释。
关于 * 这个选择器,一直有个疑惑,到底是否影响效率。在先前的观念中,这由于要匹配所有的元素,让每一个元素都带上这个属性,所以会影响页面的效率。但近来的思考,觉得这应该不会影响效率。为此还特地写过一篇博文,里边提到了这点:真的还需要reset.css么?
而这篇文章中我打算着重阐述为何 * 这个选择器不会影响效率。
上周六去参加了 web标准化交流会,席间 winter 从浏览器(webkit)的角度分享了关于页面渲染的过程。其PPT也可以在前面的链接中下载到。
其中一个很重要的过程是,当页面载入过程中,CSS 和 HTML 是并行下载的。并且通常CSS是在HEAD中引入的,并且体积不如HTML大,所以CSS会先下载完。下载的过程中浏览器就已经开始对CSS中的规则进行 索引,也就是已经确定哪一个元素呈现的样式是如何的了。同时,浏览器根据HTML构建出的DOM树,其中的每一个元素会直接去CSS规则索引中去比对,构 建出渲染树。这个过程都是并行的,并且CSS规则是进行了索引的,因此速度非常的快速。
那么我们看看CSS规则的来源主要有2个,一是浏览器内置的元素样式,Firefox 3.x版是放在目录下的res文件夹内,4.0版和Chrome中没找到(这里是我的主观臆断不太可靠,大家自行辨别),另一个就是页面提供的。根据查看 放在 res 文件夹下的 CSS 文件就可以得知,就是是什么样式都不写,已经为每一个HTML元素设定好了基本样式了。
那么看看我们所忌讳的事情,不用*{margin:0;padding:0},而是使用
CSS代码
- html, body, div, span, applet, object, iframe,
- h1, h2, h3, h4, h5, h6, p, blockquote, pre,
- a, abbr, acronym, address, big, cite, code,
- del, dfn, em, font, img, ins, kbd, q, s, samp,
- small, strike, strong, sub, sup, tt, var,
- b, u, i, center,
- dl, dt, dd, ol, ul, li,
- fieldset, form, label, legend,
- table, caption, tbody, tfoot, thead, tr, th, td {
- margin: 0;
- padding: 0;
- }
看看这一大坨东西啊,难道不是跟上面的 * 选择器一个用途么?对每个元素(至少是常用元素),添加样式。其实作用是一样的,并且就算没有这一坨,浏览器内置样式也在对每个元素设置样式。之后 HTML 文件中的每一个元素,可以很容易找到自己应当呈现的样式了。
那么,对于之后添加的,会不会有性能影响呢?也不会,由于CSS规则已经确定并索引了,所以今后增加的元素也不过就是简单比对一下而已,不会多走一步的。
所以,由此得出结论,只要有需要,大胆的使用 * 吧,他不会给你从性能上增加额外的麻烦。
最后补两个前端优化小知识:
1,由于CSS规则和HTML是并行载入的,因此把CSS放在HEAD中是非常有必要的。
2,少使用 :last-child 。因为这个选择器无法索引起来,必须等DOM构件完,才能知道他是不是父元素中最后的那个 元素。这种就非常慢了,慎用。
----EOF--
注:文中@charset=utf-8我格式可能写的不对,只是表达一个意思,因为我没有dreamwaver,而所说DW在写CSS的时候,默认会在第一行加上这个玩意。。。
Tags: css, charset, eclientscript, yii
PHP | 评论:0
| 阅读:17396
Submitted by gouki on 2010, December 3, 4:57 PM
勿庸置疑,都是COPY来的,当然,我自己也有一些小调整,都是在这些基础上进行改动的。
Ubuntu中默认使用的JAVA 为OpenJDK,对需要使用JAVA支持的软件 及网页来说,没有什么大的问题(当然也不是全部,不过就目前桌面使用来说我感觉已经够了)。只是对字体的支持与SUN JAVA(JRE、JDK)确不一样,网上也没有找到相关的资料(我英文不好),但目前来说还没有遇到说中文 字体显示为“口口口”的,只是出现过字体变的很“窄”或者说是“花字体”吧!
UBUNTU 9.10 在/usr/share/fonts/truetype/arphic/下提示了uming.ttc字体,用在JAVA的各种程序 中都感觉不错!但是对于使用TTC还是TTF的扩展名,各处说法不一,在我这使用TTF扩展名起作用。为了安全起见,sudo ln -s uming.ttc uming.ttf。好了,以上是前提!
解决 方法如下:
一、SUN JAVA的中文字体(显示为“口口”)
注:其中的路径及使用的字体可能不一样,根据需要改。如:感觉字体不好看,你可以换成别的。
cd /usr/lib/jvm/java-6-sun/jre/lib/fonts
sudo mkdir fallback
cd fallback
sudo ln -s /usr/share/fonts/truetype/arphic/uming.ttc .
sudo ln -s /usr/share/fonts/truetype/arphic/uming.ttc uming.ttf
二、OpenJDK的中文显示不正常(“窄”字或是“花”字)
1、网上找到的一些可能性:
字体配置文件 地址 :/usr/lib/jvm/java-1.6.0-openjdk/jre/lib/fontconfig.properties
文件中的字体路径可能有误!
2、我的使用的解决方法:
vim ~/.profile
在最后加入一行:
export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on'
新方法:(在网上新看到的,对Ubuntu 9.10的,没有使用过,这里只是记录一下,下次试试。感觉更简单)
转载下原文地址:http://hi.baidu.com/imto/blog/item /26f8bc88575a90b90f244429.html
今天在ubuntu 9.10下安装 jdk6,安装完成之后打开java应用程序,所有中文全部乱码,经过查阅资料,发现
ubuntu下的java中文字体文件名为uming.ttc,而不是通用的uming.ttf,解决方法就是为uming.ttc建一个软链接。
$cd /usr/share/fonts/truetype/arphic/
$sudo ln -s uming.ttc uming.ttf
mark之....
(注:sudo mkfontdir与sudo mkfontscale)
三、将默认的OpenJDK改为SUN JAVA (SUN JAVA的支持还是好些,如一些网页的JAVA应用及JAVA应用程序)
安装SUN JAVA后,UBUNTU 9.10使用的还是OpenJDK,所以如果要使系统 使用SUN JAVA还要进行相关的设置:
1、update-alternatives --config java,修改系统默认的JAVA,是使用OpenJDK还是SUN JAVA等
2、修改/usr/lib/jvm下default-java,我是把default-java指而了java-6-sun-1.6.0.15,原来的 default-java改名为default-java.openjdk以备以后需要时改再回来
3、设置系统环境变量 ~/.profile中最后加上:
# export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on' 原来OpenJDK使用的这句一定要注释掉
export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.15
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
重启就OK了!
---这篇来源于:http://forum.ubuntu.org.cn/viewtopic.php?t=272133
然后,这篇更详细,只是又偏长了一点
http://forum.ubuntu.org.cn/viewtopic.php?t=39742
今天突然想学学数据结构了,无奈手头只有讲Java数据结构的书,没有C版的,索性就配置个环境吧~
关于Java的基础知识,这里就不说了,大家可以去搜索一下,资料大大滴
首先我们来下载J2SDK 1.6(当然配置1.4和1.5原理都一样,大家根据喜好和需要去下载吧),给出地址:
https://sdlc6a.sun.com/ECom/EComActionS ... 2AF27F032F
(上面这个是JDK6的下载地址,进去点下Accept才可以下载哦~如果需要其他版本,可以去下面这个链接找找看,都可以找到的)
http://java.sun.com/javase/downloads/index.jsp
官方的链接,下载速度很快!
下载完后,我们就开始安装了。(我们假设下载后的文件名为jdk1.6.bin)
在命令行下打开其所在文件夹,打chmod u+x ./jdk1.6.bin
然后./jdk1.6.bin
看到协议,一直敲Down键或者Enter键(协议还挺长的)
最后看到
Do you agree to the above license terms? [yes or no]
寻问是否接受,当然是打y 回车拉~
然后就看到它解压缩
解压缩完后的默认文件名是jdk1.6.0
接着打
cp jdk1.6.0 /usr/
把它复制到usr目录里去
好了,到这里就只差配置环境了
export JAVA_HOME=/usr/jdk1.6.0
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin
打vi .bashrc
进入用户环境变量配置界面中,把上面的三行加入到最后,ESC,:wq
保存并退出
这样JDK就算配置好了~
如果只是需要简单的学习,用不到IDE的话,加上VI就可以开工了
下面的也就可以跳过了,赶紧调个HelloWorld试试吧~
我们再来讲下NetBeans的配置
由于装的是JDK1.6,与其配套的是NetBeans5.5
首先需要去下载它
地址:
http://gceclub.sun.com.cn/TT/NetBeans55 ... -zh_CN.bin
这个可以只接在浏览器下载的
下载完毕后,还是先来改一下它的模式
在其目录打
chmod u+x ./netbeans-5_5-linux-zh_CN.bin
然后是./netbeans-5_5-linux-zh_CN.bin
开始准备(我装时候是说有错误提示的,不要理会,等一下就可以进入图形界面安装)
按操作安装就可以了,如果您系统有多个JRE,会有多个JDK版本让您选择(也可能是JRE)
这里就选我们刚才配置的/usr/JDK1.6.0
装好后,就可以到提示的路径去运行了
如果没有出现汉字乱码,到这也就结束了,如果是乱码,继续往下看:
出现乱码是因为JDK内的字体原因,我们去下载simsun.ttf这个字体
一样给出地址:
ftp://219.153.8.210/office2000/Windows/Fonts/SIMSUN.TTC
下载回来的是.ttc,把扩展名改成.ttf就可以了
进入刚才的JDK目录
在jre/lib/fonts新建一个目录fallback然后将simsun.ttf 拷贝到这里,在起动NetBeans就能看到我们熟悉的汉字了~
OK,配置完毕!
注:这篇文章我也发表在HIWEED的博客上
主要是为了使我们初学者在配置J2SE上少走一些弯路
高手跳过
Linux | 评论:0
| 阅读:18061
Submitted by gouki on 2010, December 2, 9:50 AM
有朋友在sinaapp上开了个项目,是快盘提取文件,支持任意后缀名,因为这样就可以方便用户转贴到任意勃客或者论坛之类的了
所以我也就写了一个类似的。。还没有做rewrite。。
可以尝试一下:
http://labs.neatstudio.com/115.php?code=t99f5a9181&type=
这个type可以是tel,cnc,union,udan,对应了电信,网通,联通,优蛋(优蛋只能生成链接并帮你触发点击)
如果网上啥数据也没有,那就只能生成U蛋链接喽。
想法创意来自:http://kill.sinaapp.com/
Tags: 115
PHP | 评论:1
| 阅读:15211
Submitted by gouki on 2010, December 1, 9:11 PM
这是一篇较老的文章,但还是值得看看,究竟是应该创业还是应该工作?目前周围创业的人有不少,但成功的并不能算多。所以。。看看吧。
作者:Seth Sternberg;译者:Willow;原文链接
我 是那种就是不能停止创业的孩子。我想我真的害怕给别人打工。问题是,我以前在创业这件事情上似乎糟透了。屡战屡败。某些时候我会想说,“管他的,我可以拿 到一份高薪工作。”问题是,我就是不能不去想那些让我兴奋得有些可笑的下一件伟大的事情。事实证明,问题并不出在我自身。相反,我身边没有足够熟悉创业的 人来指出我的方法错了。
这是系列文章的第一篇。这个系列将谈论如何从一无所有——没有关系网络、没有团队,也没有成功创业的知识——到运作一个蓬勃发展的事业。我跟 Mike Arrington 提起过要在 Meebo 的博客上写这个系列文章,但他建议我写在这里。我欣然同意!在第一篇中,我能给你的最好的建议是:加入一个最好的创始团队,并让你的产品尽快走出去。然 后,忘掉一切,包括风险投资,集中精力在产品建设上。
作为一名已经到创业后期的项目创始人,我常做的一件事是与还在创业初期的企业家们会面,帮助他们把公司运作起来。这样的会议十次有九次以他们要求我介绍风险投资公司结束。但是他们不知道,即使可以找到风险投资,他们也只是开始走上错误的道路。所以,我告诉他们:
在某个时间你产生了一个想法,而实际上,还有另外十个人也会有同样的想法。是大环境中的某些东西让你们这些人在这个时间点有了这个想法。竞争已经开 始了!谁能先执行起来?谁的执行最好?如果你想把九个月浪费在寻找风险投资上,那好。但是六个月后,你会因为看到别人拿出的东西跟你正在向我推销的一样而 哭出来。就像我说过的,忘了其他的事情吧,集中精力把产品做出来。就在现在!
不可避免的,借口出现了:我需要雇人来做产品。我不认识开发人员。我需要钱购买服务器。我想先得到在现在这个公司最后的晋升机会。
这里的难题是:在消费互联网界(经常还有企业界),如果你的创始团队不能够拿出一个产品原型出来并由博客作者来测试它并写些文章,你可能已经给自己 制造了很多麻烦——你成功不了。需要证明?只要看看过去十年最成功的高科技公司:eBay、YouTube、升阳、甲骨文、苹果、思科、 Facebook、雅虎和谷歌。他们共享了一些特质:他们的产品在谈论外部投资之前就发布了,他们能够做到这一点是因为他们的创始团队有能力以自己的力量 做出产品的最初版本。只有 eBay 是由一个人单独完成——其余的都是靠团队努力。
有了这样的背景,让我们谈谈从一无所有到成功起步中最重要的三件事情。
首先,找到一个伟大的创始团队。一个人几乎是永远不够的。你不可能做到一切。相反,找其他一两个人组成团队,成员的能力要协同——而不是重叠——再 加上你自己的能力,以及你们相似的目标和激情。我都说不清楚听到多少次由三个商学院学生组成的团队跟我说他们要做出下一个伟大的消费互联网公司。当我指出 他们全是商业人士并怀疑谁来做出产品时,他们几乎都说“我们可以找几个本科生来做”,或者,“我们可以外包。”如果我听到其中任一个,我知道这个创业已经 失败了。对不起,朋友们。这很残酷,但是真实。
最好的组合或许是一个热衷于屏幕上一个个像素点的工程师以及另一个潜心于如何让比特们在服务器之间飞得更快的工程师。以 Meebo 为例,我很幸运可以和 Elaine 以及 Sandy 成为伙伴。Elaine 是个 JavaScript 大师,他能很好地读出虚拟世界的显示并确保每一个像素点都在正确的位置上。Sandy 是个 C 语言书呆子,只关心效率。他们一起从无到有创造了 Meebo 的第一个版本。现在,如果你还有一个商业人士一起,那也有用。但是我告诉你,在我们发布 Meebo 之前我的全部贡献就只是让我们合作起来(解读:这很容易)以及提出诸如“按钮在那里可能会好看些”这样的建议(解读:那也没多少)。在发布之后,如果你获 得了支持,那就是商业人士来帮助技术人员解除负担的时候了。商业人士可以主持所有的会议并让技术人员专注于将产品做得更好。
第二,就像我说的,忘记其他所有事情,集中于将产品做出来。没有办公室。没有电话系统。没有雇员。没有新闻报道。没有法律问题。没有筹集资金。没有 寻找合作伙伴(谁又会与您合作呢?)。你的产品是成功被人接受了还是失败了将会决定你公司初始价值的99%。如果没有人使用你的产品,你没有任何价值。 噢,我有记录,获得风险投资对获得用户并没有帮助——在另一篇博客中,我会论证如果有风险投资的话,它反而会造成伤害。所以,忘掉一切,集中精力——将你 产品的 Alpha 版本做出来,并给朋友和家人用一用。使用一些如 www.mygreatstartup.com/shhh.html 的网址。然后,一旦你已经解决了最初的错误,并纳入一两个大家都想要的功能,就开放上线吧。记住:保持简单。最初的产品是为你自己而建的——你不知道大家 想要什么功能和特性。快速而轻巧地发布,然后聆听用户的反馈。在产品中,总有要求用户反馈的办法。记住,一旦 TechCrunch 或者 GigaOm 写到了你,你很可能会由于在同一时间内突然增加的流量而当机(我们深情地将之称为“博客高峰“),然后看着流量无规律地下降。利用这一高峰,学习并改进。
最后,找到良好的导师。如果当时有人告诉我“加入一个好的始创团队,集中注意力在产品上,忘掉其他所有事情,”我可以节省很多很多时间,也会少了很 多烦恼。一个好的导师最好自己就是创业圈的一员——那些对创业的注意事项有着现实认识的人。你不需要很多——开始时一两个就行了。在 Meebo 的例子中,我们的两个朋友,Todd 和 Cam,在发布前给了我们无数的建议。每次我们偏离轨道走向错误的路线,像与风险投资接触或者甚至向与某些公司合作,他们就会问,“这对能够加速你们的产 品建造么?”相信我,一旦你发布产品并取得成功,你会有很多导师、风险投资、合作伙伴还有法律费用的选择。
我希望这些可以正中某些正在创业的人的需要。在后面的文章章我会开始谈论一些更细节的东西,如雇人、筹措资金、什么是有前景的想法、寻找创始人,等 等。你将会在 Meebo 博客上读到他们,所以给这篇文章做个书签,Mike 说他们会加上后续文章的链接。或者,可以在 Twitter (@sethjs) 上跟随我,发布新文章时我会提及的。
原文来自:http://apple4.us/2009/09/from-nothing-to-something-1.html
Misc | 评论:0
| 阅读:14417