GOOGLE热门关键字查询:http://www.google.com/press/zeitgeist.html
关键词变化趋势:http://www.google.com/trends
百度热门关键字查询:http://top.baidu.com/
关于工作
最近真的迷茫了,好像回到了上海实习的时候,一个月的轻松工作,让我整个人松弛下来。身体病了,思想也病了。
我一直以为自己身在曹营心在汉,做着C#的工作,却爱着PHP。当我最近重新拿起以前的PHP代码,才知道自己那么天真。代码无国界、无领域,用什么来工作,真的那么重要吗?
其实我已经想通了,原委不想多说,也不便多说。很感谢CYC的关心,放心吧,我没那么傻的。俺精得很。你说我做了无利益的投资,你说得对。从经济上和某些方面来说,确实没有任何利益,但我现在有比经济更重要的东西需要积累,那就是经验和阅历。我已经有了打算,可能最后的结果会让人大跌眼镜,但这是我的选择,请相信我的选择。也很感谢大家对我的关心和帮助。
隨筆090830
本來想寫一篇關於唯心主義的隨筆。但是從一開始就被同學的QQ打斷,到後來SLL讓我去幫她同學修電腦,我的思緒完全被打亂了,已經忘記原本要寫的東西了。
居然開始幫助GK解決問題了,我真的感覺到自己的進步了。我開始可以肯定地做決定了,而不是半猜半想地去摸索一些事情。現在的每一個決定都必須是有道理和邏輯的。即使這個決定是錯的,那錯的是我所依託的道理和邏輯,至少方法對了。
我叔叔一直告訴我,事情不可能等到準備好了才開始做,都是邊做邊學的。很多事情,我都是肯定我叔叔的說法的,至少我找不到反駁的理由。但對於這一點,雖然我的經驗沒有我叔叔豐富,但我還是要堅持我的觀點。機會是留給有機會的人的,即使你看到了機會,沒有勇氣去投入,去把握住這個機會,那只能說你根本沒有看到這個機會。即使你去做了,那只能說是個巧合。真正的把握機會應該是,看到機會,並且義無反顧地去堅持,即使失敗了也重新爬起來,直到成功為止。
天哪,這并不是我想寫的,但既然已經寫下來了,就發表吧。下次再寫我今天本來想寫的東西。
對了怎麼能忘了,這個週末去志鍇他家慶祝他弟弟考上大學的事情。他弟弟好成熟,完全感覺不到他是一個高中畢業生,簡直像一個大學畢業生,挺佩服的。這次旅程看清了一些人,明白了一些道理,也算不虛此行。
C語言教程 — (一)環境配置
市面上的C語言書很多,我也看過一些,但始終沒有找到很好的范本,要么誤人子弟,要么不適合入門。這也是為什么那么多人說C語言難學,甚至有人說至少需要1年才能精通C語言。雖然我不知道他所謂的精通是達到什么程度,我不敢自稱精通,但至少引導入門的水平算是達到了吧。我現在寫的是入門級的教程。
介紹一門語言,不得不講一下這門語言的歷史。C語言發布的時候并不是作為一門編程語言的研究成果,它只是作為一個偉大產品--Unix被發明的附屬物。是的,它是在Unix編寫的過程中,為了簡化編碼,加強邏輯性編程的一個工具。算是一個誤打誤撞的產品而流行至今,算是一個奇跡。但它的出現,為編程世界打開了一道新的大門,要知道當時的程序員寫的是最接近機器碼的匯編。C語言的出現,讓他們可以使用更接近人類語言和語法的代碼去同機器的世界溝通。
想知道更多關于C語言的歷史,可以查看: http://www.livinginternet.com/i/iw_unix_c.htm
接下來,簡單的介紹一下編程語言是怎么一回事。這要從計算機程序運行的方式說起。普通的應用程序都是運行在操作系統之上的。當然,操作系統也是一個程序,它作為普通程序的底層支持,溝通應用程序、計算機硬件還有使用計算機的用戶,在三者之間建立起聯系,作為三者溝通的橋梁。對于操作系統的介紹,這里略去10W字,不作為本文的內容。 我們要學習的是用編程語言來編寫應用程序。
這里介紹幾個概念:
1. 源代碼:我們使用編程語言,寫出的智慧的結晶
2. 可執行文件:可以直接在操作系統之上運行的應用程序 我們的目標是,寫出源代碼,并把它轉化成為可執行文件。
從源代碼到可執行文件的過程,叫做編譯。從事編譯這項工作的程序,叫做編譯器。C語言問世至今,已經有30幾年的歷史了,所以C語言的編譯器也有很多各種各樣不同的版本。C語言本身也出現了很多分支,這些分支當然有各自的編譯器來支持。我想推薦一個自認為最正統的分支:ASNI C99標準[1]。很好的實現這個標準,并被廣泛使用的編譯器是gcc[2]。
終于要進入正題了。下面我們了解一下怎么在自己的機子上配置C語言編程的開發環境。鑒于大多數初學者都是使用Windows系統,這里只介紹Windows下的編譯環境配置。
我們需要的有:
1. 編譯器、系統頭文件、引用庫
2. 集成開發環境(IDE[3])
很幸運,Dev-cpp為我們提供了完整的1,至于2,我推薦Eclipse-cpp。
他們的下載地址:
Dev-cpp:http://www.bloodshed.net/dev/devcpp.html
Eclipse-cpp:http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/galileo/R/eclipse-cpp-galileo-win32.zip
Dev-cpp需要安裝在非中文目錄下,建議直接安裝在D盤根目錄下。D:\dev-cpp\ 安裝完成以后,右鍵單擊我的電腦-屬性-高級-環境變量,在系統變量里面找到Path,單擊編輯,在變量值的最后面加上:
1 |
;D:\dev-cpp\bin |
也就是你安裝的目錄下面的bin目錄,注意,千萬別把原來的給刪了,后果很嚴重哦。保存好之后,點開開始菜單-運行,輸入:
1 |
cmd |
在打開的黑色DOS窗口里輸入:
1 |
gcc -v |
如果出現gcc的版本號,說明剛才的修改成功了,如果提示gcc不是命令,說明剛剛沒設置成功,請仔細查看以上步驟,重試。 接下來安裝Eclipse-cpp,其實不用安裝,找個地方解壓就行了。
然后運行Eclipse.exe。第一次運行會出現:
這個是設置工作目錄,也就是你創建工程和源代碼默認的根路徑。建議改成圖中的地址,這樣就把工作路徑設置成你安裝Eclipse的目錄下的workspace目錄下了。這樣做的好處是,以后可以直接打包整個Eclipse文件夾到別的電腦,而保持工程文件的完整性。以后每次打開Eclipse都會彈出這個窗口,詢問工作目錄,如果嫌麻煩,可以把下面的復選框勾上,這樣以后就不會再詢問了。
點擊OK,進入歡迎界面:
關掉歡迎界面,就見到Eclipse的主界面啦,如圖所示:
右鍵單擊Project Explore下面的空白處,選擇New-C Project,新建一個C工程,在彈出的窗口中選擇Hello World ANSI C Project。然后給你的第一個工程起個名字,輸入上面的Project name中。單擊Finish,第一個工程就創建成功啦。
現在可以在Project Explore中看到你剛剛創建的工程了。這個工程包含四個東西:
1.Binaries:生成的二進制文件
2.Debug:用于編譯輸出的文件夾
3.Includes:系統頭文件
4.src:我們的源文件,這里會有一個現成的文件,雙擊打開它。
用以下內容替換原來的內容:
1 2 3 4 5 |
#include <stdio.h> int main(){ printf("我好笨啊,搞了這么久才弄好。"); return 0; } |
然后單擊綠色的像播放一樣的按鈕Run(以下簡稱Run按鈕),右邊的黑色小箭頭,選擇Run Configurations...,這里我們要進行運行程序的配置。
雙擊左邊列表中的C/C++ Application,新建一個運行配置。現在把視線移到右邊。單擊Project右邊的Browse,由于我們現在只有一個工程,所以就選中這個唯一的工程。
再單擊C/C++ Application右邊的Search Project,此時也只有一個二進制文件可以選。Apply,我們的設置完成了,單擊Close關閉浮動窗口。
在下面一排的標簽,我們選中Console,也就是命令行。命令行是系統的標準輸入輸出。至于什么是系統的標準輸入輸出,將在下一節中講解。
現在直接單擊Run按鈕,如果Console中出現了應該出現的文字,那說明環境配置成功了。 至于應該出現什么文字呢?試試就知道了。
PS: 安裝Dev-cpp和Eclipse的這一段,我自己沒有測試過,是憑著自己以前的記憶寫下來的,可能會出現一些細節性的問題。沒辦法,我沒有寬帶,剛剛重裝過的電腦里也沒這兩個軟件。我的網速更沒辦法下載這兩個軟件。如果遇到什么問題,請留言。我明天去公司把這兩個東西載下來,再修正一下上面這段。
附錄:
[1] ASNI C99標準:American National Standards Institute C99
[2] gcc:Gnu C Compiler
[3] IDE:Integrated Development Environment
隨筆
好久沒有發表文章了,是不是該寫點什么。先解釋一下為什么是繁體字吧,因為簡體字又要改版了,我怕以后會不認識自己打出來的字,暫時用繁體安全一點。
上周周末去了福州,跟爬子還有CYC玩了兩天,非常開心,對福州印象大有改觀。爬說我成長很快,我很開心。(有點像新聞聯播的臺詞,大家不要太在意。)
今晚去叔叔家吃飯了,好像真的很久沒有去了。他說希望我能經常去他們家吃飯。嗯,我好像常常忙的忽略了與人的交流。今晚叔叔說了很多,提到了說了很多次的寫工作日記。真的,在日常工作中可以紀錄的點點滴滴太多了,可是事情一旦過去,就很難回想起來,還沒有轉化成自己的本質。工作日記啊。。。我實在是很懶,而且每次回到家就不太記得發生過了什么,難到沒有值得我記憶的事情嗎?不是的。。我必須做一個有心人。應該隨時用手機記下一些事情,Twitter不就是用來做這個的么。。。可惜被墻了。好吧,好像寫了一堆廢話。先到此為止,想到什么有意義的再紀錄下來。
《福布斯》:司法部没必要调查微软与雅虎交易
北京时间8月17日《福布斯》文章指出,微软和雅虎最近宣布双方将在搜索方面展开合作,司法部立即闻风而动,准备对那项交易展开调查.这是意料之中的事,但是司法部此举对广大用户的利益一点好处都没有.
在自由市场环境下,垄断是无法长期存在的.在执行反垄断举措上,自由市场也比华盛顿更有效率一些. 曾经无比强大而最终被市场力量打垮的垄断企业比比皆是.
上个世纪五十年代和六十年代时期,通用汽车曾刻意降低销售额以避免遭到反垄断起诉.如今,通用汽车仅仅凭借它每年从美国市场获得的700亿美元收入而存活.
随后,IBM因为它在大型机上的绝对领先优势备受反垄断诉讼困扰;但是到了九十年代,它却由于小型计算机和PC网络的出现而陷入濒临破产的境地.
施乐创造了复印机市场,但是其他厂商如佳能和理光却通过廉价的小型复印机而逐渐蚕食掉施乐的份额.施乐最后一直被挤到了死亡线上,随后才在前首席执行官Anne Mulcahy的带领下起死回生.
在微软与雅虎的合作交易中,即便是形式上的调查也是不合理的.谷歌控制着65%的搜索市场. 更糟的是,微软是想通过创新而非垄断行为来改变这个市场的现状.它推出的必应搜索已经动摇了谷歌的领先地位.这正是市场发展的方式,司法部应该了解这一点.
Array.indexOf in Internet Explorer
And I was doing some interface programming lately and I needed to check if an element was in an array. Went to Gecko's documentation (that's the one I normally use, since it's less overbloated with crappy ads) and checked that Array objects had an indexOf function. Cool! I used that function on my code. Then once I finished with all the development, went to The Horror (i.e. Internet Explorer) and tested it.
Surprise! It was broken! What had I done? (You know the debugger for Internet Explorer is not specially helpful)
I suspected of the indexOf function, and recalled vague memories about doing a custom search function in the past for looking into arrays and not having to write a for(i=0; i<ar.length;i++) thing each time…
Mmmm… did a alert('Array.indexO') in ie and what did I get?: undefined
So they have been spent five years for releasing ie7 and still they didn't implement Array.indexOf!
No worries, though. Javascript is flexible! Look, IE, I don't care if you choke on the mere seeing of indexOf, you're going to run it whether you like it or not!
1 2 3 4 5 6 7 8 9 10 |
if(!Array.indexOf){ Array.prototype.indexOf = function(obj){ for(var i=0; i<this.length; i++){ if(this[i]==obj){ return i; } } return -1; } } |
and voila! my script wasn't broken anymore!
jlUtil For Javascript
昨天用js写了一个Json_encode的工具函数,附上模仿jQuery并加强的extend函数。
对于extend函数,主要加强的是可以遍历子对象来extend,而不是简单的覆盖。
getJSON的使用方法:
1 2 |
jlUtil.getJSON(obj:Object [, skip_arr:Array]) //skip_arr指定要忽略的键名 |
extend的使用方法:
1 2 3 4 |
jlUtil.extend(obj:Object [, obj2:Object...]) //这个函数需要jQuery //如果只带一个参数,则这个obj将被extend到jlUtil本身 //如果带两个以上的参数,则第2个及以后的参数将被extend到第一个参数 |
下面是代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
var jlUtil = { getJSON: function(obj, skip_arr){ if(typeof obj == "number" || typeof obj == "boolean"){ return obj; }else if(typeof obj == "string"){ return "'" + obj.replace("'","\\'") + "'"; } var json = []; skip_arr = skip_arr ? skip_arr : []; for(var key in obj){ //skip function and the keys in skip arr if(obj[key].constructor == Function || skip_arr.indexOf(key) != -1){ continue; } //in Array loop if(!isNaN(parseInt(key)) || key.constructor != String){ json.push(jlUtil.getJSON(obj[key], skip_arr)); continue; } //else recurrency json.push("'" + key + "':" + jlUtil.getJSON(obj[key], skip_arr)); } if (obj.constructor == Array) { return "[" + json.join(",") + "]"; } else { return "{" + json.join(",") + "}"; } }, extend: function(obj){ if (arguments.length == 1) { this.extend(this, obj); return this; }else if(arguments.length >= 2){ var dst = arguments[0]; //extend the rest args to args[0] for(var i=1; i<arguments.length; ++i){ for(var item in arguments[i]){ var tmp = arguments[i][item]; if(typeof arguments[i][item] == "object"){ //make a copy while is a object, needs jQuery here var tmp = $.extend({}, arguments[i][item]); } //if is object try recurrency if(dst[item] && typeof dst[item] == "object"){ try{ this.extend(dst[item], tmp); }catch(e){ dst[item] = tmp; } }else{ dst[item] = tmp; } } } return dst; } } }; |
[转]Web 设计与开发者必须知道的 15 个站点
转一篇cb的好文,以后应该会用到。
公司博客整整一个月没有更新了,最近一段时间,全公司都忙于两件事,为海尔集团做定制,为一个合作伙伴做 OEM,终于有了眉目。工作期间,常用到一些工具与帮助站点,今天读到一篇文章,介绍了15个对 Web 设计与开发师极端有用的站点,里面有不少也是我们一直在使用的,也许对很多人都有用,翻译出来以饷同仁。 ColorCombos
配色是 Web 设计的首要大事,Color Combos 帮你预备了数千种配色方案,可以根据色调浏览选取。
LIpsum
Lorem Ipsum Text 是一中自造的,字典中不存在的单词,是在演示页面结构的时候,需要加文字的地方使用 Lorem Ipsum Text 填充可以避免用户因关注文字的意思而分神。Lipsum.com 可以帮你生成制定数目的 Lorem Ipsum 单词。
What the font?
有时候你对某个 Logo 感兴趣,想知道是拿什么字体做的,可以将 Logo 图片上传到这个网站,结果之准确会让你难以置信。
ConvertIcon
Favicon 越来越受欢迎,尤其随着 Firefox 的流行,Firefox 会将你站点的 Favicon 标志显示在标签上,也会显示于书签,Favicon 支持多种图形格式,比如 png,但 IE 并不支持 png,该站点可以帮助你将 png 等图片格式的 Favicon 转换成 IE 支持的 ico 格式。
BgPatterns
现代 Web 设计的趋势之一包括使用背景图案,BgPatterns.com 可以帮你设计背景图案,他们有大量可选的图案,可以按不同方式接合,还可以设置透明度。
HTML Encoder
如果你要在网站中显示 Web 代码,那将是非常烦人的事,你必须将诸如 < 一类的符号用编码表示,这个网站可以帮你做这些事情,只需将你的代码复制进去,他们会帮你生成可以直接使用的代码。还有 HTML Decoder 帮你做相反的事。
Xenocode Browsers
该网站非常有用,可以直接在站点中预览你的网站在 IE6, IE7, IE8, Firefox 2, Firefox 3, Google Chrome 以及 Opera 中的样子。唯一的不足是,不支持 Mac 和 Linux 环境下的浏览器。
Test Everything
这个网站包含了超过 100 中工具帮你测试几乎所有东西,如跨浏览器兼容,查 PR 值,甚至帮你验证代码。
Sprite Generator
CSS Sprites 在显著降低 HTTP 请求方面功不可没,但 CSS sprite 可不是个简单的技术,Sprite generator 可以帮你做这些繁复的工作,将你的图片打包成 zip 上传上去,他们会把你的图片组合成 sprite,还帮你生成 CSS 代码。
Buttonator
这个网站可以帮你设计漂亮的按钮。
Load Impact
这个压力测试站点可以帮你测试你的站点的抗压能力,如果你的某篇文章曾经上过 Digg 或 StumbleUpon 等网站的首页,你就会知道抗压测试多么重要。
IconFinder
这个网站收藏了大量来自网络的免费图标。
TypeTester
该站点可以帮你测试不同字体的显示效果。
CSS Tidy
这个站点可以帮你检查 CSS 代码,并修正其中的错误,比如,它可以发现你的 CSS 代码中最常见到重复设置问题。
Contact Forms Generators
自定义表单可以帮助你实现同访问者的互动,无需编程,就能快速生成访客反馈表单,甚至帮你生成邮件发送 PHP, ASP, Perl 代码。
本文来源:http://www.catswhocode.com/blog/15-sites-web-developers-and-designers-should-know
中文翻译来源:COMSHARP CMS 官方网站
回家了
最近事情实在是太多了,好多朋友、同学过来住处玩,连写博客的时间都没有了。清华的同学回来,今天趁机逃回家里,写下这篇博客,本来这么短的blog应该写在twitter上面的,可惜twitter被水产了。有上cb的同学应该懂水产是什么意思哦。别告诉我你两个都不懂。。。
其实twitter还可以上的,只要用 https://twitter.com就可以访问了。可惜我的朋友们比较少人上,所以只好上去follow一些名人了。自己也很少上去写了。