Quantcast
Channel: 簡睿隨筆
Viewing all 897 articles
Browse latest View live

修正以Apache POI產生Excel數值型文字的問題

$
0
0

使用Apache POI產生的Excel有一個問題: 0 開頭的文字在雙擊該Cell並離開後,開頭的 0 會被刪除,例如電話儲存格為 0800080412,雙擊並離開該儲存格後會變成 800080412。

▼儲存格一開始是000101
first

▼雙擊並離開該欄後會變成 101,開頭的000消失了
2nd

雖然我們在使用POI時有指定 CELL_TYPE_STRING:

cell.setCellType(HSSFCell.CELL_TYPE_STRING);

但這只是把儲存格變成通用格式,通用格式在編修後會刪掉開頭的 0。我們必須將儲存格的DataFormat指定為文字格式才能避免此問題。範例如下:

  HSSFCellStyle cellStyle = demoWorkBook.createCellStyle();
  HSSFDataFormat format = demoWorkBook.createDataFormat();
  // format.getFormat("@") = 49, 儲存格文字格式
  cellStyle.setDataFormat(format.getFormat("@"));
  cell.setCellStyle(cellStyle);

參考

##

您可能也會有興趣的類似文章

The post 修正以Apache POI產生Excel數值型文字的問題 appeared first on 簡睿隨筆.


[Android] 執行「一鍵錄影」即時捕捉稍縱即逝的影像

$
0
0

動人的時刻總是稍縱即逝,尤其相機App總是預設為拍照模式,想要在瞬間錄影還要撥到錄影模式,精彩片段經常就消失了。一鍵錄影為Android手機提供了快速的錄影功能,啟動後不用再做任何設定立即就進入錄影模式並開始錄影。

主要特點如下:

  • 最主要功能:執行後自動開始錄影
  • 退出或按Home鍵時會自動儲存錄影檔案
  • 自動對焦
  • 能按鍵啟用閃光燈
  • 錄影時沒有廣告

一鍵錄影相關資訊

##

您可能也會有興趣的類似文章

The post [Android] 執行「一鍵錄影」即時捕捉稍縱即逝的影像 appeared first on 簡睿隨筆.

撰寫git info工具以模擬svn info功能

$
0
0

由Subversion切換到Git的環境裡最不能適應的功能之一就是svn info了,Git並沒有對應的指令,搜尋了一下似乎只有Linux Bash的類似腳本… 既然沒有人寫Windows版本的git info,就自己寫一個吧。以下是剛出爐的git-info.exe的背景資料:

git info

  • 使用Lazarus IDE以Free Pascal撰寫
  • 目前只有Win32執行檔,如果有時間會再加Linux版
  • 原始碼在GitHub上,歡迎修改或分支
  • 如果只想下載執行檔試試,也可以由我的Dropbox連結下載

使用說明

  • 將git-info.exe複製到 <Git安裝資料夾>\libexec\git-core資料夾裡,就能以下列指令來執行:
git info
     git info -?
     git info && %TEMP%\git-prompt.bat
     git info && git-prompt
  
  • git info -? 會顯示簡要的操作說明
  • git info第一次執行時會在git-info.exe所在資料夾裡產生git-info.ini,所有顯示的git資訊都設定在此ini檔裡,可依需求增加cmd?設定,一個指令以 .title 與 .exec 組成
[Command]
cmd1.title====Remote URL:
cmd1.exec=git remote -v
cmd2.title====All branches:
cmd2.exec=git branch -a
cmd3.title====Recent commits:
cmd3.exec=git log --pretty=format:"%C(yellow)%h %C(cyan)%ai %C(bold green)[%cn]%C(bold red)%d %C(bold green)%s%C(reset)" -10 --abbrev-commit --abbrev=4
cmd4.title====Current Status:
cmd4.exec=git status
  
  • 每次執行git info時會產生git-prompt.bat,產生的提示符號樣式與路徑於git-info.ini裡設定;建議將之設定到PATH指到的資料夾裡。執行git-prompt.bat後會將目前分支名稱加到提示字元裡:
[Prompt]
DefaultFG=light green
DefaultBG=black
HighlightFG=light yellow
HighlightBG=black
PromptBatch=d:\util\git-prompt.bat
  
  • git-priompt.bat的內容範例,分支名稱的顯示顏色是由git-info.ini裡的[Prompt] HighlightFG等設定組成。
@echo off
if exist .git\HEAD goto GIT
goto NOT_GIT
:GIT
  @prompt $p ($E[1;33;40m分支名稱$E[1;32;40m)$g
  goto END
:NOT_GITn
  prompt $p$g
:END
  
===Text attributes===
0   All attributes off
1   Bold on
4   Underscore (on monochrome display adapter only)
5   Blink on
7   Reverse video on
8   Concealed on

===Foreground colors===
30  Black
31  Red
32  Green
33  Yellow
34  Blue
35  Magenta
36  Cyan
37  White

===Background colors===
40  Black
41  Red
42  Green
43  Yellow
44  Blue
45  Magenta
46  Cyan
47  White
  

相關資訊

##


您可能也會有興趣的類似文章

The post 撰寫git info工具以模擬svn info功能 appeared first on 簡睿隨筆.

將Git分支名稱加到提示字元(Prompt)裡

$
0
0

Git可以很方便的建立與切換分支,為了能很快的知道目前Working directory到底是在那個分支裡,最簡單的方法就是把分支名稱顯示在提示字元(Prompt)上了,可惜囿於cmd.exe的cd無法執行自訂函數,只能自己寫一支程式在需要時執行。我試過把指令加在 .gitconfig 的alias,或放在post-checkout hooks,都無法變換Prompt,最終只能以額外的批次檔來解決。

git-prompt

開發環境

  • 使用Lazarus IDE以Free Pascal撰寫
  • 原始碼在GitHub上,歡迎修改或分支
  • 如果只想下載執行檔試試,也可以由我的Dropbox連結下載

使用說明

  • 將git-prompt.exe複製到 <Git安裝資料夾>\libexec\git-core資料夾裡,就能以下列指令來執行:
git prompt
git prompt -?
git prompt > chg.bat && chg.bat
  
  • git prompt -? 會顯示簡要的操作說明
  • git prompt第一次執行時會在git-prompt.exe所在資料夾裡(亦即<Git安裝資料夾>\libexec\git-core)產生git-prompt.ini,請修改ini裡的PromptBatch以指定git-prompt.bat的路徑,此路徑應為PATH能找到的路徑。如果有舊的git-prompt.bat(git-info.exe v0.01版產生的)請先刪除。設定完成後,最後再執行git prompt。

    ▼git-prompt.ini內容:

[Prompt]
DefaultFG=light green
DefaultBG=black
HighlightFG=light yellow
HighlightBG=black
PromptBatch=d:\util\git-prompt.bat
  
  • 要變換Prompt時只要執行 git-prompt.bat 就可以了。

相關資訊

##


您可能也會有興趣的類似文章

The post 將Git分支名稱加到提示字元(Prompt)裡 appeared first on 簡睿隨筆.

Git的Staging Area的中文翻譯探討

$
0
0

Git的操作環境大致區分成三大塊:Working Directory、Staging Area與Repository。

1. 工作區

Working Directory、Working Tree:一般翻譯為工作區,Working Directory是由CVS時代就是這樣稱呼的,也就是目前程式的主要工作區域。

2. 整裝區

Staging Area、Index:Staging area一般翻譯為暫存區,但我覺得這個翻譯很容易對初學者造成混淆,它其實是扮演中介的角色,記錄著我們準備要提交到本地版本庫(Repository)裡存放的檔案的物件引用(Reference)的地方,因為是放引用而不是實體檔案,所以才又被稱為「索引」。Staging area的原意「【軍】集結待命地區」還比較符合它的實際用途,因此「整裝區」或「整備區」應該較符原意。Wikipedia對Staging area的解釋如下,和「舞台」沒什麼關係:

A staging area (otherwise staging point, staging base or staging post) is a location where organisms, people, vehicles, equipment or material are assembled before use.

我注意了一下Pro Git正體中文版簡體中文版裡對Staging area的翻譯都是暫存區,但標示的原文卻都誤為「stage area」或「staged area」,而英文版裡全部都是用「staging area」。

而「stage a file」的stage應該是當做動詞「置放」或「準備」的意思來聯想。暫存區則給stash用似乎比較好。

3. 版本庫

第三個區域就是存放所有檔案與其修改快照的儲存區,稱為倉庫(Repository),通常意譯為「版本庫」。

學習Git的參考連結

以下是最近蒐集到的Git學習網站:

##

您可能也會有興趣的類似文章

The post Git的Staging Area的中文翻譯探討 appeared first on 簡睿隨筆.

線上學習網站lynda.com所有課程免費試用10天

$
0
0

這幾天在找資料時無意間搜尋到這個專注於線上教學的網站:lynda.com,震驚於它的課程豐富,實用性更是貼近需求,我隨便找了「Git」、「Scrum」等關鍵字就能找到一些課程;看來是我後知後覺了,lynda.com早已經「紅」到對岸都有出中文字幕了…

lynda.com的歷史故事可以參考這篇報導:國外夫婦辦智能教育網站Lynda.com年入7000萬美元。它最近有免費試用10天的活動,如果你剛好能找到想學的主題,英文又還可以的話,不妨試用看看。它除了能用瀏覽器觀看課程影片外,也有iOS與Android的App可以下載使用,算是滿方便的學習平台。觀看影片時若耳朵跟不上也沒關係,它會同步顯示英文在影片下方,瞄一下或許也能多理解一二分吧。

試用後若覺得好用,它的訂閱有好幾種,如每個月訂閱或每年訂閱等,能依需求自行選擇。

##

您可能也會有興趣的類似文章

The post 線上學習網站lynda.com所有課程免費試用10天 appeared first on 簡睿隨筆.

跨平台的Markdown編輯器:Smark

$
0
0

對岸的elerao.ao用C++與Qt寫了一個跨平台、開源的Markdown編輯器,Windows版有執行檔的版本可以下載,Linux則要自己編譯(我對Qt不熟,遇到編譯錯誤無法成功產生執行檔)。作者列出Smark的功能特點:

  1. Windows / Linux 等主流系统跨平台支持;
  2. 完美支持 LaTex 数学公式、脚注、尾注等,支持使用本地 MathJax 调用,不需要在线访问 MathJax CDN;
  3. 用户可配置的 Markdown 语法高亮显示,美观整洁;
  4. 多种格式文件导出支持,可将当前 Markdown 文件另存为 HTML、 Miscrosoft Word、OpenOffice / LibreOffice ODT Document、Latex、PDF、reStructured Text、Media Wiki markup、epub 以及 plain txt 等格式文件输出;
  5. 可通过用户指明 CSS 文件定义显示式样;
  6. 简洁友好的界面布局,尽可能地凸显正在编辑的内容;
  7. 系统、完备的各类快捷键,极大地提高了工作效率;


Smark範例

我試用了一下,發現了幾問題:

  1. 使用![]()語法的圖形無法顯示
  2. 編輯區在右方,預覽區在左方的呈現方式和慣用的相反,又沒有地方可調整
  3. 在編輯區輸入文字後,預覽區不會同步更新,必須手動按〔F5〕刷新或〔Ctrl+S〕存檔才能正確顯示

有使用Markdown的朋友們不妨一試。本文使用Smark撰寫。

Smark相關資訊

##

您可能也會有興趣的類似文章

The post 跨平台的Markdown編輯器:Smark appeared first on 簡睿隨筆.

兩款RSS閱讀網站:InoReader與FeedSpot,Feedly以外的選擇

$
0
0

自從Google Reader停止服務後,眾多依賴訂閱RSS以獲得訊息的網友們都在尋求替代網站,其中以Feedly因為較具知名度與起步較早,獲得不少青睞。其實還有不少提供此類閱讀RSS的網站,我最近便試用了InoRreaderFeedSpot,都各有特色,想換換口味或試試不同功能的朋友們可以嘗試看看。

匯出Feedly的RSS訂閱

Feedly的匯出OPML連結不是做得太明顯,只要在網址後面加上「#opml」就能進入匯出網頁,將目前的訂閱存成.opml的文字檔,之後就能在新的RSS服務網站上匯入。

鍵盤控的最愛:InoReader

如果你習慣使用鍵盤來操作的話,InoReader提供了相當多的快捷鍵,按下問號(?)就會顯示出來,例如移動到下則文章按〔n〕,向上移動按〔p〕,向下顯示內容按〔j〕,向上顯示內容按〔k〕等,以我的操作習慣我會持續按〔n〕找到有興趣的標題後搷〔b〕將文章開啟在背景新分頁,全部瀏覽一次後再仔細看各分頁裡的文章。
InoReader keyboard

InoReader按上方的眼睛圖示再選擇要呈現的樣式就能立即切換,目前有列表、擴展(每則皆展開並顯示摘要)、分欄(左方顯示文章標題,點擊後顯示摘要)與卡片(每則以圖片+標題+摘要的方塊顯示)等四種View。
InoReader layouts

InoReader的列表View樣式如下。它的營業策略和Feedly限制功能的作法不同,使用者擁有全功能,只在文章則數上有限制。
InoReader main view

第一年免費的FeedSpot

FeedSpot採取第一年免費的優惠來吸引會員,一樣要輸入信用卡資料(也可透過PayPal付費)來完成預約付費,在明年的當日才開始扣款。

FeedSpot由上方的Change View來選擇版面呈現樣式,並且能選擇不同的主題色。版面佈局則有列表、擴展與雜誌三大類型。
FeedSpot Layouts

網頁顯示的樣貌如下,透過主題色能有效顯示出未讀的標題。
FeedSpot main view

FeedSpot的快捷鍵也不少,但操作上比InoReader麻煩一些。
FeedSpot keyboard

FeedSpot會定時寄摘要信件給你,付費會員能對信件格式做更多控制。
FeedSpot mail

App的表現

除了在桌機瀏覽器上的表現,挑選適合自己的RSS服務網站也不能忽略了行動設備的應用程式,在這項評比上Feedly就大獲全勝了,它有第三方的App支援(如我使用的JustReader),而InoReader與FeedSpot則只有自家的App能使用,其中InoReader還能一用,FeedSpot的似乎是網頁版本的模式,不甚方便。

##

您可能也會有興趣的類似文章

The post 兩款RSS閱讀網站:InoReader與FeedSpot,Feedly以外的選擇 appeared first on 簡睿隨筆.


ReadingPack:社交版的閱讀清單服務

$
0
0

對我來說readingpack.com是個很難分類的網站服務,它像是稍後再讀服務的Instpaper(或者你慣用GetPocket)加上社交書籤(美味書籤或倒店了的推推王,嗯~還有人在用嗎?)再加上Zite的綜合體,又再帶些Twitter的Follow功能(只是追蹤的是別人分享的文章),總之,經常在網路衝浪的朋友們可以試看看它的分享閱讀清單(Reading List)服務。

readingpack.com

我們有在Follow的他人閱讀清單會出現在Feed裡,當你看到有興趣的文章時只要將游標移進去,再按【Save tp ‘My Pack’】就可以加到你的待讀箱,移到【My Pack】並點擊某篇文章後,文章會被嵌在readingpack.com的網頁裡,再按底部的【A Must Read】就能加到自己的Must Read裡而分享給其他人。

▼ ReadingPack的主要功能選單 !
readingpack.com functions

我個人感覺比較像是社交版的Instpaper或GetPocket。

##

您可能也會有興趣的類似文章

The post ReadingPack:社交版的閱讀清單服務 appeared first on 簡睿隨筆.

為何無法正確執行git reset --hard HEAD^

$
0
0

Git入門書裡都會提到放棄最後一次的commit而回復到再上一次commit的指令:

git reset --hard HEAD^

但是這個指令在Windows的命令提示字元cmd.exe裡卻無法執行,會出現錯誤:

D:\git-root\test>git reset --hard HEAD^
More?
More?
fatal: ambiguous argument 'HEAD
': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git  [...] -- [...]'

今天終於弄清楚了:^是cmd.exe的escape字元,屬於特殊字元,命令裡要用到文字 ^ 時必須用雙引號把它夾起來,因此只要如下就可以正確執行:

git reset --hard HEAD"^"

或者:

git reset --hard "HEAD^"

或許有人會覺得奇怪:為何不直接使用bash就好,因為幾乎所有的教學或書籍都是在bash環境裡展示的。最主要的原因是團隊成員程度參差不齊,為能有效推廣學習,還是先讓大家能在既有的環境裡把動作先做好,行有餘力者再自行去使用別的環境吧,畢竟要操作的是Git而不是再多去學另一個Shell。

##

您可能也會有興趣的類似文章

The post 為何無法正確執行git reset --hard HEAD^ appeared first on 簡睿隨筆.

[轉貼] 香港大專學界罷課誓言(全文)

$
0
0

由聯合早報網轉載,BJ4。

(聯合早報網訊)據香港明報報導,香港學聯今天發起大專罷課,在中大百萬大道宣讀誓言。

以下是大專學界罷課誓言全文:

【自主命運誓不認命 罷課重奏未來凱歌】

一個城市的死亡,從來都是因為大眾的冷漠。一個時代的離去,從來都是因為大眾的捨棄。而逆轉一地命運,從來都只能靠當地人絕地抗命。今天,看著香港我城被中方暴政壓碎,72萬個熱熾靈魂被一巴掌摑,繁榮與未來在中國政府與大財閥的貪欲下分崩離析,請問這是否就是香港的明天,我們未來將相伴數十年的家園?命運危機逼在眉睫,每一個香港人會否都撫心自問:除了我們自己,誰可否決我們這一代人的命運與未來?為什麼北京的170個欽點的人大代表可以代為決定香港人的命運?得票只得689的僭建特首梁振英嗎?為什麼不是我們700萬人香港人公決我們的前程?公義民主的政制若被否定,將如同宣告香港人未來30年必須繼續活在中國政府與大財團的殖民與玩弄下。

學生今天領頭罷課,展開不合作運動的第一波,就是要敲醒社會,我城的喪命鐘經已鳴奏!作為大專學生,繼續埋首課堂自樂於校園而漠視社會危機,絕對是罔顧社會的盼望,亦背棄香港公民社會責任。故此,學生亦必須暫且離開課堂,投入社會運動,逆轉香港厄運。罷課,就是拒絕冷眼旁觀;罷課,就是施壓反擊的第一步;罷課,就是重新凝聚群眾的啟點;罷課,就是推動港人反思自身命運的開始;罷課,就是年輕一代對上一代人群起抗爭的呼喚,我們絕不認命,只因為我們誓要重奪未來,自主命運!

人大不代表我 誓拒行政暴力

8月31日,中國政府的當權者以天朝自居,冒普選之名,行欽點之實,冒求強推極權國家式的選舉。170多名所謂各地人大代表施展行政暴力,否定香港近80萬人的公投結果!30年來港人首次如此清晰要求命運自主的決議,竟被橫蠻否定。中國政府期望未來特首選舉,繼續由1200個小圈子提委會成員把關,摒除大部分港人的意見,繼續專政統治。換言之,本地財閥與紅色資金壟斷的提委會未來將可要求特首繼續否定一切香港人於各議題上的呼喚!不合中方與財閥旨意者,無一可留!

如此下去,香港將繼續淪為世上貧富懸殊首屈一指的荒謬城市,過百萬小孩、青年、壯年、婦女、長者每日活在貧窮線之下屈辱度日,而全民退休保障、標準工時卻仍是遙遙無期;貪婪的港鐵公司繼續年年只加不減,坐擁其成;新界東北淪為本地及北方財閥的炒家樂園,而港人卻只能花半世紀的生命輪候公共房屋;香港電視將永遠被否決牌照,直到投資者完全卑躬屈膝俯首稱臣;洗腦國教科誓將重推以荼毒下一代;傳媒將繼續被蔑視,劉進圖被血斬六刀的慘劇將無日無之再度上演;23條捲土重來,以國家安全之名,閹割自由思潮為實;還有無節制的自由行充斥大街小巷、通漲不斷的柴米油鹽、停滯不前的薪資津貼……一旦專制式選舉通過,港府繼續聽命于中方與財閥,我們這代香港人還可以怎樣自主命運?放棄廢除立法會功能組別、同時保留提委會四大界別,中方及財閥底下的打算實在是昭然若揭。早在今年2月,學界公投的萬五名學生早已公決公民提名必可不少,提委會只能由票值均等的選舉產生,今天中方方案如此極端,我們更退無可退,必須守護香港!

回歸載體已死 重拾精神挽救未來

30年前,一群大專生早已提出民主政制必須確立,祭出「民主回歸」的旗幟。當日的民主回歸,祈望以民主制度,反資反殖改革中港社會,改革放任的官商壟斷資本主義共,同樣以根除港英殖民地餘毒為己任。惟八九六四屠城後,中方將《基本法》框架鎖死在保守方向,保留港英殖民地擁護大財閥的選舉制度,以黨官商狼狽為奸的方向,不容普羅大眾置喙,形同二次殖民香港。昔日提出民主回歸的先鋒,不但未有貫穿落實民主政制以在中港兩地反資反殖,更放棄介入中國議題,死守南方,至今政改雙方對壘,不知己不知彼的我方不堪局面。以「回歸」作為載體的爭民主運動已宣告落幕,但不代表我們不需要關注中國,而未來的民主運動必須立足本土,繼續推進,將反資反殖的精神貫徹於社會各個層面,重奪公民社會每個陣地,展開位置之爭,長遠介入中國議題,彙聚民主力量,以達知己知彼、百戰不殆。如此才能務使港人擺脫中共殖民者與大財閥的控制,真正命運自主,自決前程!

拉倒政改還是拉倒香港?

年輕人在此疾呼,港人必須否決不符合民主公義的偽民主方案,並力爭公義政制。否決,絕非原地踏步,而是不要「袋一世」的有毒方案,避免行差踏錯,鑄成大錯。決意否決,是我們重建未來的起點。一零年政改一役,經已顯示出所謂談判妥協,最終只會淪為中方的統戰工具。是次關鍵一役,我們不能重複歷史錯誤。我們必以否決政改方案,向中央明確宣告;香港人誓爭真普選,不再被中央牽著走!當中方單方面撕破一國兩制、港人治港、高度自治的承諾,意味香港將進入全面抵抗的年代,不合作運動就是為了拒絕坐紂為虐、坐擁香港被謀殺。這關乎這代人以至下一代人的未來,我們必須敬致上一代人:我們絕對不能失守這一仗,我們每一個人都誓要抗命到底,而非一戰則沉,認命移民,否則我們絕對是辜負了過往30年無數人的青春、生命與努力!政改前路,港人必須作出抉擇,拉倒有毒方案,抑或拉倒香港未來!

在此我們呼籲學生與社會大眾堅守原則,挽救我城未來,謹此申明有關當局必須:

一)確立公民提名權為2017年的行政長官選舉提名方法

二)展開立法會改革,廢除立法會所有功能組別議席

三)向港人鄭重道歉,並撤回就本港政改的不義決議

否則,

四)梁振英、林鄭月娥、袁國強及譚志源等主事政改的問責官員當應引咎辭職

希望在於人民,改變始於抗爭。我們香港人可以有夢,我們會扞衛自己的尊嚴與未來,為了下一代、給同代人、致我們的上一代。誰也沒有資格冷眼葬送整代人的未來,誰也不能,除了我們自己。抗命,就是香港人重奪未來的曙光。

香港專上學生聯會

HK Students

##

您可能也會有興趣的類似文章

The post [轉貼] 香港大專學界罷課誓言(全文) appeared first on 簡睿隨筆.

Subversion版本庫匯入Git的步驟與SVN整合步驟

$
0
0

最近開始將Subversion裡的專案複製到Git,在測試過程中記錄了以下於Windows cmd.exe環境裡的Git相關設定與SVN整合的一些注意事項。

Git安裝

Git for Windows由git-scm.org下載,我安裝到d:\util\git資料夾裡,安裝時唯一要注意的是使用cmd.exe而不使用Bash,安裝完畢後再手動把 d:\util\git\bin加到PATH環境變數,讓Git執行檔與部份的Linux命令都能在cmd.exe內執行。

以下範例都把專案放在d:\git-root資料夾裡。

環境設定

在開始操作Git命令之前先把執行時的選項設定好,先以下列指令建立Git的使用者帳號與電郵:

git config --global user.name USERNAME
git config --global user.email USERNAME@yourmail.com.tw

上列設定會存入C:\Users\USERNAME.gitconfig檔案裡,爾後共用的選項就可以直接編輯此檔案。

在執行git log時會出現下列警告訊息:

WARNING: terminal is not fully functional

只要增加TERM環境變數如下就不會再出現這個警告;其中msys是Minimal SYStem(最簡系統)的意思,表示我們使用的Git for Windows是簡化MinGW而來的Git環境:

set TERM=msys

rem # 永久生效:
setx TERM msys

修正git svn的問題

msysGit 1.9.4版的Git在執行git svn時會出現下列錯誤…perl.exe?沒錯,git svn的底層是Perl scripts:

d:\util\git\bin\perl.exe:  unable to remap d:\util\git\bin\libsvn_repos-1-0.dll to same address as parent -- 0x1E80000
      0 [main] perl 3448 sync_with_child: child 2024(0x230) died before initialization with status code 0x1

我們可以使用下列指令修正:

cd \util\git\bin
rebase -b 0x64000000 libsvn_repos-1-0.dll
rebase -b 0x64200000 libneon-25.dll

找出SVN裡需要的資訊

操作Git時需要作者和電郵,我們可以下載svn-migration-scripts.jar來讀取SVN版本庫而產生作者清單,使用命令如下,PATH環境變數需要能找到java.exe:

java -jar svn-migration-scripts.jar authors SVN_URL > authors.txt

svn-migration-scripts.jar除了能產生專案的作者清單外,也能幫我們檢查Git環境是否安裝正確:

d:\git-root>java -jar svn-migration-scripts.jar verify
svn-migration-scripts: using version 0.1.56bbc7f
Git: using version 1.9.4.msysgit.1
Subversion: using version 1.8.5-SlikSvn-1.8.5-X64
git-svn: using version 1.9.4.msysgit.1

You appear to be running on a case-insensitive file-system. This is unsupported, and can result in data loss.

如果你的SVN版本庫很龐大的話,在複製前最好先找出專案的第一個和最後一個版本號,以方便快速取出資料:

svn log -q SVN_URL

由SVN匯入Git

要將SVN的專案複製到Git的方法有好幾種,基本上都是以git svn指令或SubGit工具來完成,如果你的SVN專案資料夾是依照Subversion標準結構建立的(專案/trunk、專案/branches、專案/tags),那麼可以直接用最快速的SubGit來轉換,但若不是標準結構就必須使用git svn來逐版匯入了,但不管那一種方法都能完整的將SVN的歷史轉換到Git裡。

1. 使用git svn fetch

SVN複製最不容易出錯的步驟是:

  • 先用svn指令找出專案的第一個和最後一個版本:
svn log -q SVN_URL
  

螢幕上會列出所有的修訂版本,找出第一個與最後一個(或者用整個版本庫的最後版本HEAD)。

cd \git-root
    md proj1
    cd proj1
    git svn init SVN_URL
    rem # git svn fetch -r 第一個版本:最後版本或HEAD,例如:
    git svn fetch -r 946:8801

執行時間視專案版本庫的大小而有不同,螢幕上會看到各個Revision的檔案異動。

2. 使用SubGit

SubGit的方法是依指定的SVN網址產生一個空的專案Git資料夾,再透過複製這個空資料夾來匯入SVN的版本記錄,步驟有三:

  • 先用subgit configure產生空的Git專案資料夾,假設空的專案資料夾名稱是proj1.git:
cd \git-root
subgit configure  --minimal-revision 946 --svn-url SVN_URL proj1.git

To complete SubGit installation do the following:

1) Adjust Subversion to Git branches mapping if necessary:
    D:\git-root\les\subgit\config
2) Define at least one Subversion credentials in default SubGit passwd file at:
    D:\git-root\les\subgit\passwd
   OR configure SSH or SSL credentials in the [auth] section of:
    D:\git-root\les\subgit\config
3) Optionally, add custom authors mapping to the authors.txt file(s) at:
    D:\git-root\les\subgit\authors.txt
4) Run SubGit 'install' command:
    subgit install proj1
  • subgit install proj1由SVN_URL取出匯出資訊
  • 由proj1.git複製SVN檔案到proj資料夾,proj1資料夾是帶有工作目錄的Git目錄
git clone proj1.git proj1

用git repack壓縮空間

第一次fetch時會花比較多時間,但只要花一次工夫就能把專案完整的修改歷程都複製到本地,日後都能快速操作。取回完畢後可以再用git repack把版本庫整理、壓縮一下:

d:\git-root\proj1>git repack -d
Counting objects: 8922, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (8643/8643), done.
Writing objects: 100% (8922/8922), done.
Total 8922 (delta 4025), reused 0 (delta 0)
Removing duplicate objects: 100% (256/256), done.

壓縮前版本庫裡有20,572個檔案,佔用磁碟空間453MB,repack後變成11,654個檔案,佔用空間為439MB。

開始工作

利用Git操作來更新SVN的步驟有下列幾項:

1. 建立分支

為了方便追蹤與管理,程式的修改最好不要直接改在master上,而應建立分支並於分支上開發,開發完成並提交後再合併回master。建立分支並切換到分支的操作命令是:

git checkout -b NEW_FEATURE

上列指令會建立分支NEW_FEATURE(-b參數)並切換到NEW_FEATURE(checkout子命令)。剛由SVN轉換到Git時會覺得為何Git不提供如svn般的switch命令來切換分支呢?其實Git的checkout操作是把目前的分支(master)簽出(檔案複製)為NEW_FEATURE,底層處理是加一個名為NEW_FEATURE的指標指向master分支的HEAD,和switch有些微差異。

2. 添加到Staging area與提交

開發過程中新增或修改了的檔案必須用git add將之加入staging area:

git add /路徑/變動了的檔案

修改的被記錄檔案可以用-u快速加入staging area:

git add -u

NEW_FEATURE開發完成且測試完畢,將變動提交到版本庫:

git ci -m "變動說明"

3. 合併到master

NEW_FEATURE新加的功能提交到版本庫後,我們必須將這些變動合併回master分支:

rem # 簽回master分支
git checkout master

rem # 將NEW_FEATURE合併到master
git merge NEW_FEATURE

合併順利的話用git commit提交,本地端的處理就告一段落,但若有衝突發生則必須先解決衝突再提交回master。

4. 將變動推回SVN

最後要把最新的修改推回SVN。先做一次svn同步操作:

git svn rebase

再把異動提交回SVN版本庫(SVN是儲放差異,因此用dcommit:diff commit或delta commit):

git svn dcommit

相關連結

##

您可能也會有興趣的類似文章

The post Subversion版本庫匯入Git的步驟與SVN整合步驟 appeared first on 簡睿隨筆.

建立測試環境以git rebase -i變更Commit歷史

$
0
0

為了方便測試與簡化Git指令操作,我們可以用alias來建立各式縮寫與指令擴充,也可以用批次檔自動產生檔案來快速測試。本文主要是測試git rebase變更前面某個Commit內容的操作。

環境設定

編輯C:\Users\USERNAME.gitconfig或在cmd.exe執行下列指令;[core] editor是設定預設的編輯器,在此是使用GitExtensions的檔案編輯器。第一次接觸Windows Git,其實可以使用GitExtensions,透過它可以一併把msysGit和Kdiff3等必備工具都一次安裝起來,會比個別安裝簡便一些。

git config --global core.editor d:/util/GitExtensions/GitExtensions.exe fileeditor

再來設定命令的alias(代名),以節省輸入命令的時間。

git config --global alias.st status
git config --global alias.l "log --abbrev-commit --abbrev=4 --pretty=format:\"%C(yellow)%h %C(green)[%cn] %C(cyan)%ar %C(bold magenta)%d %C(reset)%s\" -10"

快速加入、提交測試檔案

以下用來建立git-test.bat,建立好後將之存入PATH環境變數裡的資料夾,爾後就能用git-test 檔名1 [檔名2]...[檔名n]來產生同名.html並加入與提交。

@echo off
set MSG=
for %%x in (%*) do call :CREATE %%x
set MSG=%MSG:~1%
git commit -m "%MSG%"
goto END

:CREATE
  echo %1 > %1.html
  git add %1.html
  set MSG=%MSG% %1
:END

另一個方法是使用Git的alias,直接編輯.gitconfig,加入下列alias到[alias]裡。此處的alias是Bash script,行末的反斜線是續行的連接符號。有些工具不認識反斜線,遇到出現錯誤時先將這些有反斜線的代名移除即可。

[alias]
  snapshot = "!snapshot() {\
    COMMENT=wip;\
    if [ \"$*\" ]; then\
        COMMENT=\"$*\";\
    fi;\
    git add -A;\
    git commit -m \"$COMMENT\";\
  }; snapshot"
  create-file = "!createFile() {\
    for name in \"$@\"; do \
      echo $name>$name.txt; \
    done; \
    }; createFile" 
  simple-commit = "!simpleCommit() {\
    for name in \"$@\"; do \
      git create-file \"$name\"; \
      git snapshot $name; \
    done; \
  }; simpleCommit"

開始建立測試工作區

1.先將d:\git-root\test資料夾啟始為Git的工作目錄。

d:\git-root\test>git init
Initialized empty Git repository in d:/git-root/test/.git/

2.加入與提交index.html、page1.html、page2.html。以下使用git-test.bat來執行,若使用Git代名的話,將git-test換成git simple-commit即可。

d:\git-root\test>git-test index page1 page2
[master (root-commit) 575f6ba] index page1 page2
 3 files changed, 3 insertions(+)
 create mode 100644 index.html
 create mode 100644 page1.html
 create mode 100644 page2.html

3.加入與提交menu1.html、menu2.html

d:\git-root\test>git-test menu1 menu2
[master 4944913] menu1 menu2
 2 files changed, 2 insertions(+)
 create mode 100644 menu1.html
 create mode 100644 menu2.html

4.加入與提交button1.html、button2.html、button3.html

d:\git-root\test>git-test button1 button2 button3
[master 5846174] button1 button2 button3
 3 files changed, 3 insertions(+)
 create mode 100644 button1.html
 create mode 100644 button2.html
 create mode 100644 button3.html

5.用git log查看一下最後的狀態

d:\git-root\test>git l
e393 [jerry] 2 seconds ago  (HEAD, master) button1 button2 button3
c07f [jerry] 13 seconds ago  menu1 menu2
8017 [jerry] 56 seconds ago  index page1 page2

接著要執行改寫歷史的動作了。有時候在提交後,發現漏了檔案要放在同一個Commit裡,若馬上就發覺漏檔,則可以用git commit --amend修正,但若過了好幾個Commit後才發覺要修正,此時只能用git rebase來改寫歷史的Commit了。

任務:把新建立的menu3.html加回前面第二個Commit裡([c07f])

6.建立menu3.html

d:\git-root\test>echo menu3 > menu3.html

7.用git rebase -i 改寫對象的前一個Commit ID操作
-i參數是指定使用交互式的介面來操作,Commit ID則是[c07f]的前一個,即[8017]:

d:\git-root\test>git rebase -i 8017

本例是變更第二個Commit,因此有前一個節點,但若要變更第一個節點時該如何指定「前一個Commit ID」呢?第一個節點是根節點([8017]),無法指定前一節點,此時使用git rebase -i --root就可以了。

上述git rebase -i 8017指令執行後會開啟設定好的編輯器,將[8017]之後的Commit都列出來,我們要變動的是[c07f]這個Commit,因此將其開頭的pick改成 edite

▼ 「pick」是要被挑選到版本庫的Commit
rebase pick

▼ 把要變更的[c07f]改為edit操作,存檔並關閉編輯器
rebase edit

跳出編輯器後,Git依剛才編輯器裡的指示開始處理

Stopped at c07fdf7175edc9f31312bdeb04802f9bbfcb1d5d... menu1 menu2
You can amend the commit now, with

        git commit --amend

Once you are satisfied with your changes, run

        git rebase --continue

8.用git status查看一下執行rebase後的狀態。會看到rebase處理中的訊息。

d:\git-root\test>git st
rebase in progress; onto 8017367
You are currently editing a commit while rebasing branch 'rebase1' on '8017367'.
  (use "git commit --amend" to amend the current commit)
  (use "git rebase --continue" once you are satisfied with your changes)

9.也用git log查看一下執行rebase後的工作區記錄,此時HEAD移回要變 更的[c07f]了。

d:\git-root\test>git l
c07f [jerry] 76 minutes ago  (HEAD) menu1 menu2
8017 [jerry] 77 minutes ago  index page1 page2

10.接著把新建檔案menu3.html加入staging area,再用git commit –amend -m把變更存入本地版本庫。

d:\git-root\test>git add menu3.html

d:\git-root\test>git commit --amend -m "menu1, menu2 and menu3"
[detached HEAD e424d6c] menu1, menu2 and menu3
 3 files changed, 3 insertions(+)
 create mode 100644 menu1.html
 create mode 100644 menu2.html
 create mode 100644 menu3.html

11.用git log看一下工作區記錄,[c07f]節點已經被新節點[e424]取代了。

d:\git-root\test>git l
e424 [emisjerry] 2 hours ago  (HEAD) menu1, menu2 and menu3
8017 [emisjerry] 2 hours ago  index page1 page2

12.用git status看一下狀態,rebase還沒結束,我們要以git rebase --continue繼續做rebase操作。

d:\git-root\test>git st
rebase in progress; onto 8017367
You are currently editing a commit while rebasing branch 'master' on '8017367'.
  (use "git commit --amend" to amend the current commit)
  (use "git rebase --continue" once you are satisfied with your changes)
  
d:\git-root\test>git rebase --continue
Rebasing (2/2)

在看到幾個Rebasing後,終於成功結束了。

d:\git-root\test>git rebase --continue
Successfully rebased and updated refs/heads/master.

13.用git log確認一下是否是預期中的結果。注意:示範button1 button2 button3這個Commit ID是[e393],也被新節點[4608]取代了。

d:\git-root\test>git l
4608 [jerry] 2 hours ago  (HEAD, master) button1 button2 button3
e424 [jerry] 2 hours ago  menu1, menu2 and menu3
8017 [jerry] 2 hours ago  index page1 page2

git rebase過程中若有發生狀況,可以用git rebase --abort放棄rebase操作。

Graph的變化

我們以Graph來看一下rebase的變化。

指令 執行後的圖形
尚未執行rebase前
執行git rebase -i 8017
執行git commit --amend -m
執行git rebase --continue

##

您可能也會有興趣的類似文章

The post 建立測試環境以git rebase -i變更Commit歷史 appeared first on 簡睿隨筆.

Google Chrome 37停用window.showModalDialog的暫時解法

$
0
0

自Google Chrome 37開始停用window.showModalDialog,Web系統的JavaScript有用到這個函數的全部異常。不幸中的大幸是還有方法能撐到明年(2015)4月底,以下即為延長使用期限的設定步驟。

首先由Google The Chromium Projects網站下載Zip file of ADM/ADMX templates and documentation

在cmd.exe裡執行gpedit.msc,依下列說明處理:
1. 【電腦設定】→【系統管理範本】→【傳統系統管理範本 (ADM)】→【Google】→【Google Chrome】
2. 於右側找到【Enable deprecated web platform features for limited time】
3. 雙擊或右鍵→編輯

1

4.按【已啟用】
5.按下方的【顯示…】
2

6.輸入「ShowModalDialog_EffectiveUntil20150430」後按確定。
3

7.驗證
在Chrome網址輸入「chrome://policy」再按【顯示政策值】,能看到【ShowModalDialog_EffectiveUntil20150430】就是OK了。
4

設定後重啟Chrome,即能繼續使用showModalDialog到2015年4月30日。

您可能也會有興趣的類似文章

The post Google Chrome 37停用window.showModalDialog的暫時解法 appeared first on 簡睿隨筆.

使用Evernote命令行工具ENScript.exe快速搜尋記事標題

$
0
0

最近一直在用Evernote記筆記,絕大部份都是開啟兩個以內的記事在用,每次都要開啟Evernote主視窗、找到記事(雖然用更新日期排序,但有時要用的記事還是不一定排在最上面)再雙擊或按〔Ctrl+Enter〕開啟記事為獨立視窗,再拖到另一個螢幕以方便參考或撰寫筆記,雖然只是幾個小步驟,但每天都要執行,還是覺得有點煩人,搜尋了一下看有沒有稍微方便些的方法,最後使用Evernote的ENScript.exe寫了批次檔和AutoHotkey腳本,簡化了一些搜尋記事的時間。

命令行工具ENScript.exe

ENScript.exe是Evernote的命令行工具,提供了下列功能:

執行參數 功能
enscript createNote 建立新記事
enscript importNotes 匯入記事
enscript showNotes 在主視窗顯示記事
enscript printNotes 列印記事
enscript exportNotes 匯出記事
enscript createNotebook 建立記事本
enscript listNotebooks 列出記事本
enscript syncDatabase 資料庫同步

只要在上述命令加上「/?」就能顯示命令的參數說明,我要用的搜尋記事是使用showNotes,其參數如下:

C:\Program Files (x86)\evernote>ENScript.exe shownotes /?

Usage: ENScript showNotes [options]

Options:

  /q query - query to filter the notes. If omitted, stdin is used to gather query specification.
  /u username - user name if not the same as database file name.
  /p password - user password to confirm Evernote service access.
  /d database - database file name if user name is not specified.

If both database file name and user name are not specified, last login name is used and
if there is none, USERNAME environment variable value is used as a user name.

/q 後面接的是搜尋字串,其格式的完整語法可以參考Search Grammar,我要用的是搜尋標題,寫成的 ev.bat 內容如下,用「intitle:」來搜尋標題,%*是傳遞給ev.bat的所有命令行參數:

echo tag:TAG, intitle:TITLE, created:day-5, updated:20141210
"C:\Program Files (x86)\evernote\ENScript.exe" showNotes /q "intitle:\"%*\""

使用範例:

d:\util>ev Windows
echo tag:TAG, intitle:TITLE, created:day-5, updated:20141210
"C:\Program Files (x86)\evernote\ENScript.exe" showNotes /q "intitle:\"Windows\""

AutoHotkey腳本

另外也寫了AutoHotkey腳本,以〔Alt+V〕執行:

!v::
  InputBox, SEARCH, Search, Please enter search text:`n`n tag:TAG / intitle:TITLE / created:day-5 / updated:20141210, , 550, 200
  _iLen := Strlen(SEARCH)
  ;;Msgbox %_iLen%
  if (_iLen = 0) {
    return
  }
  run "C:\Program Files (x86)\evernote\ENScript.exe" showNotes /q "%SEARCH%"
  return

需要搜尋記事時只要按下〔Alt+V〕就會彈出對話窗讓我輸入搜尋字串。
Alt+V

參考網址

##

您可能也會有興趣的類似文章

The post 使用Evernote命令行工具ENScript.exe快速搜尋記事標題 appeared first on 簡睿隨筆.


用Evernote匯入資料夾功能自動同步檔案

$
0
0

從這篇Create Watch Folders to Easily Store Files In Your Evernote Account看到了Evernote一個沒注意過的有趣功能,設定好匯入資料夾後,Evernote在做同步處理時就會自動把資料夾裡的檔案上傳到Evernote,存入的若是PDF檔,會在Evernote視窗裡顯示,.txt文字檔會直接變成記事內容,但我測試檔案編碼是UTF-8不帶BOM時發生匯入錯誤,變更為MS950編碼才成功,其他Evernte不支援的格式會以附件的方法匯入。

設定匯入資料夾

由功能表 【工具】→【匯入資料夾…】指定好要同步的本地資料夾,可以再設定子目錄,能指定記事本,也能設定在匯入後是保留或移除存入的檔案:
import folder

這個功能可以不開啟Evernote視窗就自動把記事匯入,應該能產生許多不同的應用。

##

您可能也會有興趣的類似文章

The post 用Evernote匯入資料夾功能自動同步檔案 appeared first on 簡睿隨筆.

攔截不請自來的廣告軟體防護者:Unchecky

$
0
0

有一些免費軟體除了會安裝病毒外,也會私自安裝你不想要的軟體(一般稱為廣告軟體,Adware),又或許它安裝的是不錯的軟體,但這未事先告知就自行安裝的舉動總是令人討厭,尤其事後要花一些時間移除,真是讓人不禁咒罵一句「可惡」。

Unchecky就是希望能免除這些不請自來的安裝程式的工具,當它發覺安裝程式準備偷渡別的軟體時,會彈出警告視窗讓我們決定是否真的要安裝它,把偷偷摸摸的安裝變成明確提示,這樣就可以減少誤裝的機會。Unchecky執行後會在背景檢查安裝程式的動作,當發覺有「偷裝」嫌疑時會發出警訊。
Unchecky

例如在安裝SUMo(Software Update Monitor)時就被Unchechy抓到偷裝別的軟體:
SUMo

Unchecky似乎需要通報Adware(回報網址:http://unchecky.userecho.com/)才會在新版本加入偵測,因此不要因為安裝了Unchecky就高枕無憂了,但只要自動更新功能不要關閉,至少常見的Adware都會被攔截到。Unchecky有簡體中文介面。

相關連結

##

您可能也會有興趣的類似文章

The post 攔截不請自來的廣告軟體防護者:Unchecky appeared first on 簡睿隨筆.

使用批次檔簡化比對檔案的檔名輸入

$
0
0

今天有個比對特定檔案內容的需求,兩個不同的資料夾、相同的目錄結構與檔名,要比對的檔案分別放在不同的資料夾裡,例如:

  • XML檔在 web\xml
  • JS 檔在 web\js
  • CSS檔在 web\css

使用WinMerge來比對,範例如下:

start "winmerge" "c:\Program files (x86)\Winmerge\winmergeu.exe" /f "Exclude Source Control" c:\proj1\web\xml\AA.xml c:\proj2\web\xml\AA.xml
start "winmerge" "c:\Program files (x86)\Winmerge\winmergeu.exe" /f "Exclude Source Control" c:\proj1\web\js\BB.js c:\proj2\web\js\BB.js
start "winmerge" "c:\Program files (x86)\Winmerge\winmergeu.exe" /f "Exclude Source Control" c:\proj1\web\css\CC.css c:\proj2\web\css\CC.css

為了節省輸入檔名的時間想建立批次檔來使用,只傳入要比對的檔名而能各自判斷檔案所在的資料夾,搜尋到的最簡單解法是用環境變數的字串操作來判斷(參考來源:Find out whether an environment variable contains a substring)。下列批次檔唯一的技巧是「~-4」字串操作,取環境變數最後4個子字串來比對,如果是".xml"則比對web\xml裡的檔案,以此類推:

▼ 比對用的批次檔,命令為cmpf.bat

rem FN存放傳入的第一個參數,即要比對的檔名
@echo off
set FN=%1
if "%FN:~-4%"==".xml" goto XML
if "%FN:~-4%"==".css" goto CSS
if "%FN:~-3%"==".js" goto JS
goto END

:XML
  set DIR=xml
  goto WINMERGE

:CSS
  set DIR=css
  goto WINMERGE

:JS
  set DIR=js
  goto WINMERGE

:WINMERGE
  set FN1=c:\proj1\%DIR%\%1
  set FN2=c:\proj2\%DIR%\%1
  rem echo TEST: %FN1% %FN2%
  start "winmerge" "C:\Program files (x86)\Winmerge\winmergeu.exe" /f "Exclude Source Control" %FN1% %FN2%
:END

▼ 執行範例

cmpf AA.xml
cmpf BB.js
cmpf CC.css

##

您可能也會有興趣的類似文章

The post 使用批次檔簡化比對檔案的檔名輸入 appeared first on 簡睿隨筆.

防堵垃圾留言的外掛:WordPress Zero Spam與自行安排外掛載入順序的外掛:Plugin Organizer

$
0
0

你的WordPress部落格網站也經常被許多垃圾留言(Spam Comments)搔擾嗎?為了避免這些令人深惡痛絕的垃圾出現在讀者眼前,我們一般會採取兩個步驟來防堵:1.所有留言都要通過審核,2.使用Akismet外掛來篩選出垃圾留言,但這些步驟仍會讓垃圾留言跑到後台由站長刪除,令身為站長的我不堪其擾。今天花了點時間找了更好的防堵外掛,希望還前台、後台一個乾淨清爽的空間。

▼ 留言都要審核,導致留言者無法立即看到剛剛輸入的留言 Comment verify

WordPress Zero Spam外掛

這次試用的是WordPress Zero Spam外掛,只要安裝並啟用就可以了,沒有設定選項。它的原理是讓網頁動態執行一個JavaScript函數,在留言表單裡加入一個Hidden元素,後台接收到留言時判斷是否有此Hidden元素存在,若沒有此元素就判斷為垃圾留言而將之阻隔住,原理簡單但效果似乎不錯(外掛作者是參考《How I Stopped WordPress Comment Spam》這篇的原理,有興趣請自行參考)。原本我每天會收到上千個垃圾留言,使用一天目前垃圾數仍然是零。

▼ 前台動態加入Hidden元素的函數

( function( $ ) {
    'use strict';

    var forms = "#commentform, #registerform";

    $( forms ).submit( function() {
        $( "" ).attr( "type", "hidden" )
            .attr( "name", "zero-spam" )
            .attr( "value", "1" )
            .appendTo( forms );

        return true;
    });

})( jQuery );

手動控制外掛執行順序

垃圾留言造成的另一個問題是影響到文章點擊數的正確性,垃圾留言總是會固定訪問先前到訪過的網頁,長期下來似乎會影響到文章熱門程度的統計,因此我想把統計點擊數的外掛放在最後執行或許有些幫助,最後使用的 Plugin Organizer外掛,它讓我們用拖拉的方式來決定外掛的載入順序,拖好位置後選【Save plugin load order】再按〔套用〕就可以了。

Plugin Organizer

不過這樣的處理似乎無法影響點擊數的誤增,看來是必須修改統計的外掛才行…再觀察一陣子看看吧。

##

您可能也會有興趣的類似文章

由桌面啟動IntelliJ IDEA 14 64-bit執行檔

$
0
0

IntelliJ IDEA 14.0剛剛釋出,下載測試看看多了那些新功能。安裝後點擊桌面上的圖示,沒想到是跑起來的是32-bit的idea.exe,而不是idea64.exe,修改圖示內容為idea64.exe後再點擊卻彈出No JVM Installed的訊息,搜尋後發現只要加IDEA_JDK_64環境變數就可以了,因此使用下列指令添加:

setx IDEA_JDK_64 d:\JDK7-64

加了變數後果然能成功啟動了。

##

您可能也會有興趣的類似文章

Viewing all 897 articles
Browse latest View live