2011年10月30日
搜索了一下,應(yīng)該是非正常關(guān)機(jī)導(dǎo)致eclipse工作區(qū)的文件狀態(tài)錯誤導(dǎo)致。在工作區(qū)目錄中,有一個.metadata目錄,里面是工作區(qū)及各插件的信息,刪除此目錄可以解決問題。
為保險起見,將.metadata改名移動到/tmp目錄,再重啟eclipse,果然可以正常啟動eclipse了,但原來工作區(qū)的配置和項目信息也都消失,直接顯示的是歡迎界面。
如何恢復(fù)原來的project配置呢?嘗試對比了當(dāng)前的.metadata和之前備份的那個目錄,發(fā)現(xiàn)缺少了很多配置文件。試著一點點恢復(fù)一些目錄,但效 果不理想。因為不知道哪些文件(目錄)可以恢復(fù),哪些恢復(fù)會帶來問題。將備份的整個目錄恢復(fù)試試?Eclipse又回到了無法啟動的狀態(tài)了。
怎么辦?這時想到啟動停止時顯示的狀態(tài):"Loading workbench",看來和這個workbench插件有關(guān)。查看原來的.metadata/.plugins目錄,在眾多文件夾中
com.collabnet.subversion.merge org.eclipse.search
org.eclipse.compare org.eclipse.team.core
org.eclipse.core.resources org.eclipse.team.cvs.core
org.eclipse.core.runtime org.eclipse.team.ui
org.eclipse.debug.core org.eclipse.ui.ide
org.eclipse.debug.ui org.eclipse.ui.intro
org.eclipse.dltk.core org.eclipse.ui.views.log
org.eclipse.dltk.core.index.sql.h2 org.eclipse.ui.workbench
org.eclipse.dltk.ui org.eclipse.ui.workbench.texteditor
org.eclipse.epp.usagedata.recording org.eclipse.wb.discovery.core
org.eclipse.jdt.core org.eclipse.wst.internet.cache
org.eclipse.jdt.ui org.eclipse.wst.jsdt.core
org.eclipse.ltk.core.refactoring org.eclipse.wst.jsdt.ui
org.eclipse.ltk.ui.refactoring org.eclipse.wst.jsdt.web.core
org.eclipse.m2e.core org.eclipse.wst.sse.ui
org.eclipse.m2e.logback.configuration org.eclipse.wst.validation
org.eclipse.mylyn.bugzilla.core org.eclipse.wst.xml.core
org.eclipse.mylyn.tasks.ui org.tigris.subversion.subclipse.core
org.eclipse.php.core org.tigris.subversion.subclipse.graph
org.eclipse.php.ui org.tigris.subversion.subclipse.ui
發(fā)現(xiàn)了兩個: org.eclipse.ui.workbench 和 org.eclipse.ui.workbench.texteditor。
不管三七二十一,刪了這兩個目錄,重新啟動eclipse。正常啟動且原項目信息正確加載。
轉(zhuǎn)自:作者: Fenng | 可以轉(zhuǎn)載, 但必須以超鏈接形式標(biāo)明文章原始出處和作者信息及版權(quán)聲明
網(wǎng)址: http://www.dbanotes.net/startup/small_problem_big_problem.html
最近團(tuán)隊遇到一個案例。看似很小的事情,但仔細(xì)研究起來,徹底分析,每一個環(huán)節(jié)都沒做好,細(xì)節(jié)部分糟糕得一塌糊涂,最后導(dǎo)致一件事情的結(jié)果:完全失敗。
經(jīng)常有人在聊起公司的時候問我,你現(xiàn)在最擔(dān)心的事情有哪些? 我當(dāng)然會重點提到團(tuán)隊。不過在談及團(tuán)隊的時候,我又最擔(dān)心在「細(xì)節(jié)」問題上做不好。
細(xì)節(jié)就是競爭力,尤其是對小團(tuán)隊來說,小團(tuán)隊更應(yīng)該注重細(xì)節(jié)問題。大一點的公司可以追究責(zé)任人,靠流程、靠制度,靠各級評審等等一系列的「成本」來提升細(xì)節(jié)能力。小一點的公司或者團(tuán)隊怎么辦? 恐怕只有依賴每個人的能力和責(zé)任心了。
細(xì)節(jié)也是鍛煉人的能力的地方,搞清楚每一個細(xì)節(jié),將每一個細(xì)節(jié)涉及到的背景知識和技能掌握好,能力自然也就會得到提升。繼而,著手做更大的事情也不 會手忙腳亂。相反,做不好細(xì)節(jié)和小事的人,如果總?cè)轮觥钢匾沟氖虑椋龈小柑魬?zhàn)」的事情,這樣的事情真的到你面前,真的能接住么?
為什么我們在細(xì)節(jié)上做不好?
對細(xì)節(jié)問題不夠重視 一件事情到了自己這里,頭腦中先入為主認(rèn)為只是一件小事,是一件簡單的事情。這樣,當(dāng)然就不會給予足夠的重視。小事不一定不重要,小事不一定意味著做起來就簡單。
對事情復(fù)雜度缺乏認(rèn)知 不就是給客戶寫一封電子郵件么? 不就是用 HTML 寫一個頁面么? 不就是做一則橫幅廣告么? 那么,這些事情真的簡單么? 為什么別人為客戶寫的郵件打開率更高? 為什么別人寫的頁面更容易被搜索引擎收錄? 為什么別人做的廣告轉(zhuǎn)化率更好? 背后涉及到哪些知識? 不想研究一下么? 不能研究一下么?
對細(xì)節(jié)缺乏耐心 草草了事,應(yīng)付了事,遇到問題馬馬虎虎,輕易得放過了很多可以讓自己得到成長的機(jī)會。「這問題我沒想過」「這事情我沒遇到過」「設(shè)計稿都改過兩次了」... 這類借口在任何一個團(tuán)隊都很常見。
缺少責(zé)任心 常常覺得自己這里做不好,還有別人會把關(guān)呢。擔(dān)心什么? 可如果所有人都這么想呢? 「文案是產(chǎn)品經(jīng)理的事情,關(guān)我甚么事?」如果你能對文案也有改進(jìn)意見,誰說以后你就不能做產(chǎn)品經(jīng)理做的事情呢?
主觀上不認(rèn)可自己的工作 就給我這么一點錢,要我做這么多工作? 問題是我們?nèi)绻欢嘧鲆稽c工作,不提升一下自己,又怎么能多一點錢呢?
為什么細(xì)節(jié)上做不好? 不同人不同的角度還會有不同的看法。不過有一點我能肯定,細(xì)節(jié)不會決定成敗,但做不好細(xì)節(jié),一定會失敗。
做好細(xì)節(jié),百事可作。
https://developer.apple.com/downloads/index.action
Documentation and developer runtime of "Java for OS X 2012-005". Contains JavaDoc, tools documentation, and native framework headers.
目前的版本是:Java for OS X 2012-005 Developer Package
下載下來后,直接安裝,默認(rèn)設(shè)置就可以了,然后可以建個link,方便選擇。
- sudo -s
- cd /System/Library/Frameworks/JavaVM.framework/Home
- ln -s /Library/Java/JavaVirtualMachines/1.6.0_35-b10-428.jdk/Contents/Home/docs.jar
- ln -s /Library/Java/JavaVirtualMachines/1.6.0_35-b10-428.jdk/Contents/Home/src.jar
- 最后跟windows類似,在eclipse中用command + click點擊查看一個類的源碼。然后選“add source",選中上面的 src.jar 文件即可
我平常學(xué)習(xí)android用的2.2版本,從網(wǎng)上下載了2.2的源碼(從官方git庫下載太麻煩,是從網(wǎng)友共享的源碼位置下載的).按照網(wǎng)上的說法,我把 解壓后的那一堆文檔放在了android-sdk-root\platforms\android-8\sources目錄下.不過并沒有重啟 eclipse.而是通過這種方法來做的-----在eclipse中,鼠標(biāo)放在一個android提供的類上,按下ctrl鍵,會打開一個新頁面,提示 找不到對應(yīng)的類的class或者源文件,但這個新頁面上有個導(dǎo)入源碼的按鈕,點擊之后選擇下載好的source位置,確定后就可以了.
順便說下我下載android源碼的位置:
http://tech.cncms.com/UploadFiles/20101025/androidsdk2.2_sources.zip
下載源碼到maven倉庫: http://search.maven.org/#search|gav|1|g%3A%22com.google.android%22%20AND%20a%3A%22android%22
1. 使用工具:微博第三方插件已經(jīng)提供了很多功能,適合自己的都用起來,這個我覺得最節(jié)省我的時間,其他網(wǎng)上提供的軟件都可以使用,重要是適合自己,安全第一。
2. 寫工具:有很多個性化需求的時候,如果變相的不能實現(xiàn),人為處理太慢太花時間,我們現(xiàn)在是小創(chuàng)業(yè)團(tuán)隊,很多事情都需要自己做,數(shù)據(jù)增長慢,在有限的資源下,寫工具是非常好的方式,作為技術(shù)人員就直接動手寫,當(dāng)然也需要看看性價比。
4.主要工作流程:(這個圖是轉(zhuǎn)的)
5.常用的微博話題(這個圖片也是轉(zhuǎn)的)
7.微博運營最重要的是:一段時間需要總結(jié)挑選合適的方法執(zhí)行,沒有效果的去除。
如:微博發(fā)布時間/數(shù)量
JMock是幫助創(chuàng)建mock對象的工具,它基于Java開發(fā),在Java測試與開發(fā)環(huán)境中有不可比擬的優(yōu)勢,更重要的是,它大大簡化了虛擬對象的使用。本文中,通過一個簡單的測試用例來說明JMock如何幫助我們實現(xiàn)這種孤立測試。
我們在測試某類時,由于它要與其他類發(fā)生聯(lián)系,因此往往在測試此類的代碼中也將與之聯(lián)系的類也一起測試了。這種測試,將使被測試的類直接依賴于其他類,一旦其他類發(fā)生改變,被測試類也隨之被迫改變。更重要的是,這些其他類可能尚未經(jīng)過測試,因此必須先測試這些類,才能測試被測試類。這種情況下,測試驅(qū)動開發(fā)成為空談。而如果其他類中也引用了被測試類,我們到底先測試哪一個類?因此,在測試中,如果我們能將被測試類孤立起來,使其完全不依賴于其他類的具體實現(xiàn),這樣,我們就能做到測試先行,先測試哪個類,就先實現(xiàn)哪個類,而不管與之聯(lián)系的類是否已經(jīng)實現(xiàn)。
虛擬對象(mock object)就是為此需要而誕生的。它通過JDK中的反射機(jī)制,在運行時動態(tài)地創(chuàng)建虛擬對象。在測試代碼中,我們可以驗證這些虛擬對象是否被正確地調(diào)用了,也可以在明確的情況下,讓其返回特定的假想值。而一旦有了這些虛擬對象提供的服務(wù),被測試類就可以將虛擬對象作為其他與之聯(lián)系的真實對象的替身,從而輕松地搭建起一個很完美的測試環(huán)境。
JMock是幫助創(chuàng)建mock對象的工具,它基于Java開發(fā),在Java測試與開發(fā)環(huán)境中有不可比擬的優(yōu)勢,更重要的是,它大大簡化了虛擬對象的使用。
本文中,通過一個簡單的測試用例來說明JMock如何幫助我們實現(xiàn)這種孤立測試。有三個主要的類,User,UserDAO,及UserService。本文中,我們只需測試UserService,準(zhǔn)備虛擬UserDAO。對于User,由于本身僅是一個過于簡單的POJO,可以不用測試。但如果你是一個完美主義者,也可以使用JMock的虛擬它。在這領(lǐng)域,JMock幾乎無所不能。
這里我用到的是:(我用的是maven依賴)
在官方的網(wǎng)站上也有的下載。 地址: http://jmock.org/dist/jmock-2.5.1-jars.zip
使用C2DM框架的要求
2. 使用C2DM功能的Android設(shè)備上需要設(shè)置好Google的賬戶。
3. C2DM需要依賴于Google官方提供的C2DM服務(wù)器,由于國內(nèi)的網(wǎng)絡(luò)環(huán)境,這個服務(wù)經(jīng)常不可用,如果想要很好的使用,我們的App Server必須也在國外,這個恐怕不是每個開發(fā)者都能夠?qū)崿F(xiàn)的

(2)C2DM服務(wù)器會返回一個registration_id值給Android設(shè)備,設(shè)備需要保存這個registration_id值。
(3)Android設(shè)備把獲得的registration_id和C2DM功能的用戶賬戶(android.c2dm.demo@gmail.com)發(fā)送給自己的服務(wù)器,不過一般用戶賬戶信息因為和服務(wù)器確定好的,所以不必發(fā)送。
這樣Android設(shè)備就完成了C2DM功能的注冊過程,接下來就可以接收C2DM服務(wù)器Push過來的消息了。
(4)服務(wù)器獲得數(shù)據(jù)。這里圖中的例子Chrome To Phone,服務(wù)器接收到Chrome瀏覽器發(fā)送的數(shù)據(jù)。數(shù)據(jù)也可以是服務(wù)器本地產(chǎn)生的。這里的服務(wù)器是Google AppEngine(很好的一項服務(wù),可惜在國內(nèi)被屏了),要換成自己的服務(wù)器。服務(wù)器還要獲取注冊使用C2DM功能的用戶賬戶(android.c2dm.demo@gmail.com)的ClientLogin權(quán)限Auth。
(5)服務(wù)器把要發(fā)送的數(shù)據(jù)和registration_id一起,并且頭部帶上獲取的Auth,使用POST的方式發(fā)送給C2DM服務(wù)器。
(6)C2DM服務(wù)器會以Push的方式把數(shù)據(jù)發(fā)送給對應(yīng)的Android設(shè)備,Android設(shè)備只要在程序中按之前和服務(wù)器商量好的格式從對應(yīng)的key中獲取數(shù)據(jù)即可。
轉(zhuǎn)自:
地理位置索引支持是MongoDB的一大亮點,這也是全球最流行的LBS服務(wù)foursquare 選擇MongoDB的原因之一。我們知道,通常的數(shù)據(jù)庫索引結(jié)構(gòu)是B+ Tree,如何將地理位置轉(zhuǎn)化為可建立B+Tree的形式,下文將為你描述。
首先假設(shè)我們將需要索引的整個地圖分成16×16的方格,如下圖(左下角為坐標(biāo)0,0 右上角為坐標(biāo)16,16):
單純的[x,y]的數(shù)據(jù)是無法建立索引的,所以MongoDB在建立索引的時候,會根據(jù)相應(yīng)字段的坐標(biāo)計算一個可以用來做索引的hash值,這個值叫做geohash,下面我們以地圖上坐標(biāo)為[4,6]的點(圖中紅叉位置)為例。
我們第一步將整個地圖分成等大小的四塊,如下圖:
劃分成四塊后我們可以定義這四塊的值,如下(左下為00,左上為01,右下為10,右上為11):
01 | 11 |
00 | 10 |
這樣[4,6]點的geohash值目前為 00
然后再將四個小塊每一塊進(jìn)行切割,如下:
這時[4,6]點位于右上區(qū)域,右上的值為11,這樣[4,6]點的geohash值變?yōu)椋?011
繼續(xù)往下做兩次切分:
最終得到[4,6]點的geohash值為:00110100
這樣我們用這個值來做索引,則地圖上點相近的點就可以轉(zhuǎn)化成有相同前綴的geohash值了。
我們可以看到,這個geohash值的精確度是與劃分地圖的次數(shù)成正比的,上例對地圖劃分了四次。而MongoDB默認(rèn)是進(jìn)行26次劃分,這個值在建立索引時是可控的。具體建立二維地理位置索引的命令如下:
db.map.ensureIndex({point : "2d"}, {min : 0, max : 16, bits : 4})
其中的bits參數(shù)就是劃分幾次,默認(rèn)為26次。