SyntaxHighlighter

ラベル software の投稿を表示しています。 すべての投稿を表示
ラベル software の投稿を表示しています。 すべての投稿を表示

2018-09-26

SSA, ASS 字幕特效參數

ref url
https://www.douban.com/note/284573295/
字幕软件Aegisub ASS代码使用指南
https://blog.xuite.net/allenyin/blog/63417097-SSA%E3%80%81ASS+%E5%8F%83%E6%95%B8-%E6%94%BB%E7%95%A5
SSA、ASS 參數-攻略
https://github.com/weizhenye/ASS/wiki/ASS-%E5%AD%97%E5%B9%95%E6%A0%BC%E5%BC%8F%E8%A7%84%E8%8C%83
ASS 字幕格式规范
https://arctime.org/subtitle-special-effect.html
Arctime 特殊字幕效果的制作

SSA、ASS 參數-攻略


說明:
<參數>
[可選項]
<../..>任選其中一項

[Script Info]部分

PlayResX
屏幕的寬度。
影響到字幕中的距離單位,最好和視頻文件的高寬相等
PlayResY
屏幕的高度

[v4+ Styles]部分

Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColor, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Name
字體名稱
Fontname
所使用的字型
Fontsize
字體大小
PrimaryColour
主體顏色
顏色格式為AABBGGRR,十六進制,00-FF,alpha藍綠紅,和SSA不同
SecondaryColour
次要顏色
卡拉OK中使用
OutlineColor
邊框顏色
就是SSA的 TertiaryColour
BackColour
陰影顏色
Bold
粗體
0關閉,-1開啟。Italic,Underline,Strikeout相同
Italic
斜體
Underline
下劃線
Strikeout
刪除線
ScaleX
橫向縮放
單位是%,默認為100,即正常大小
ScaleY
縱向縮放
Spacing
字間距
Angle
旋轉
BorderStyle
邊框樣式
Outline
邊框寬度
Shadow
陰影距離
Alignment
對齊方式
ASS
左中右
上789
中456
下123
SSA
左中右
上567
中91011
下123
MarginL
字幕距左邊的距離,右對齊時無效
MarginR
字幕距右邊的距離,左對齊時無效
MarginV
字幕高度
下對齊時表示到底部的距離
上對齊時表示到頂部的距離
中對齊時無效
Encoding
編碼
AlphaLevel
透明度
SSA 中用 AlphaLevel 來控制透明度。在ASS中被取消。

[Events]部分

Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Layer
字幕層次
字幕重疊時數值大的顯示在上層
Start
開始時間
格式0:00:00.00
最小單位1/100秒
End
結束時間
Style
字體名稱
Name
名字,相當於注釋
MarginL
同[v4+ Styles]
MarginR
同[v4+ Styles]
MarginV
同[v4+ Styles]
Effect 特效
Scroll up;<y1>;<y2>;<delay>[;<fadeawayheight>]
字幕從下向上捲動
Scroll down;<y1>;<y2>;<delay>[;<fadeawayheight>]
字幕從上向下捲動
y1,y2
上下範圍
delay
速度
表示移動一像素所用的時間,單位為1/1000秒
delay=5表示一秒移動200的距離
fadeawayheight
上下的淡出淡入範圍
Banner;<delay>[;<lefttoright>[;<fadeawaywidth>]]
跑馬燈效果
lefttoright <0/1>
0從右向左移動,1從左向右移動

fadeawaywidth
左右的淡出淡入範圍
Karaoke
卡拉OK,在字幕正文中使用代碼{\k}
Text
字幕正文
字幕正文中可以添加代碼來實現各種特效

ASS 正文特效代碼

所有代碼加{}表示,\n,\N,\h除外
所有代碼由\開頭
\n空格,寬度超出範圍後自動換行
\N硬回車
\h硬空格
\b<0/1>粗體
0關閉,1開啟
\i<0/1>斜體
\u<0/1>下劃線
\s<0/1>刪除線
\bord<width>邊框寬度
\shad<depth>陰影距離
\fn<font name>改變字型
\fs<font size>改變字號
\fsc<x/y><percent>字符縮放
正常大小為100%
\fsp<pixels>調整字間距
\fr[<x/y/z>]<degrees>旋轉
\frz= \fr,和[v4+Styles]中的Angle效果相同
旋轉所圍繞的中心由\a或\an決定
\fe<charset>改變編碼
\c&H<bbggrr>&改變顏色
十六進制00-ff,藍綠紅
\c = \1c
\1c&H<bbggrr>&改變主體顏色
\2c&H<bbggrr>&改變次要顏色
\3c&H<bbggrr>&改變邊框顏色
\4c&H<bbggrr>&改變陰影顏色
\alpha&H<aa>&改變透明度
\alpha是同時改變字幕所有部分的透明度
\1a&H<aa>&
改變主體透明度
\2a&H<aa>&
改變次要透明度
\3a&H<aa>&
改變邊框透明度
\4a&H<aa>&
改變陰影透明度
\r[<style>]\r恢復成最初的字體
\r <style>可以改變成其它的字體
\a<alignment>設置對齊方式
和SSA相同
左 中 右
上 5 6 7
中 9 10 11
下 1 2 3
一般正文用\a2,特效用\a10
\an<alignment> 設置對齊方式
和ASS相同
左 中 右
上 7 8 9
中 4 5 6
下 1 2 3
一般正文用\an2,特效用\an5
\a和\an對整個字幕有效,不論放在何處.調整對齊方式非常重要,它決定了字幕旋轉,縮放,移動時的參照點。
對齊方式是針對字幕的整體有效,字幕中的每個字符都是向下方對齊的。
如果要使用不同大小的字符,應該將一段字幕分為多段時間軸相同的字幕
\k<duration>卡拉OK
\k 無平滑效果
\K或\kf 有平滑效果
\ko有邊框的卡拉OK效果。時間單位是1/100秒
{\K50}aaaa表示用0.5秒來顯示歌詞aaaa----------後面沒有字符表示停頓一段時間
\t([<t1>, <t2>, ] [<accel>,] <style modifiers> )動態效果
t1,t2分別是動態效果開始和結束時間,省略後以時間軸的開始結束時間為准
accel控制動態效果的運動速度 1 正常速度
0<accel<1 速度從快到慢減速運動
1<accel 速度從慢到快加速運動
計算公式為 t時的動作完成量 = pow((t-t1)/(t2-t1), accel)
style modifiers可以使用的效果 \c,\<1/2/3/4>c,\alpha,\<1/2/3/4>a,\fs,\fr[<x/y/z>],\fsc<x/y>,\fsp,\bord,\shad
可同時使用多個效果
\move(<x1>, <y1>, <x2>, <y2>[, <t1>, <t2>])x1,y1為移動開始的位置
x2,y2為移動結束的位置
屏幕的確左上角是0,0,右下角由[Script Info]中的PlayResX:和PlayResY:決定
t1,t2是移動開始和結束時間,省略後以時間軸的開始結束時間為准,只能使用一次。
\pos(<x>, <y> )改變位置。只能使用一次。
使用\move或\pos後MarginL,MarginR,MarginV無效
\fade(<a1>, <a2>, <a3>, <t1>, <t2>, <t3>, <t4> )淡出淡入效果
a1是顯示開始時的透明度,t1,t2表示顯示的開始和結束時間
a2是顯示結束到消失開始時的透明度
a3是消失結束時的透明度,t3,t4表示消失的開始和結束時間
此處透明度必須使用十進制來表示,範圍0-255
\fad(<t1>, <t2> )淡出淡入效果
t1表示顯示使用的時間
t2表示消失使用的時間
\p<0/1/2...>繪圖,參數1/2...表示繪圖比例,0表示繪圖結束
\p<1/2...><繪圖命令>
\p0 繪制圖形,繪制出的圖形作為一個字符來處理,可以近行旋轉,縮放等
繪圖命令
m <x> <y>移動到x,y並開始繪制
繪圖開始時必須使用一次
n <x> <y>移動到x,y並開始繪制,但不關閉上一個繪圖
l <x> <y>畫直線到x,y
可以用l <x1> <y2> <x2> <y2> ... <xn> <yn>的方式畫連續直線
b <x1> <y1> <x2> <y2> <x3> <y3>畫曲線
s <x1> <y1> <x2> <y2> <x3> <y3> ... <xn> <yn>畫封閉曲線
p <x> <y>延伸封閉曲線
c關閉封閉曲線
繪制的圖形是實心的,在前面添加\1a&Hff&可以得到空心的圖形

2018-09-22

Homebrew 系統升級後設定

這次的問題發生在MacOS 10.13以後的版本上。主要由於MacOS本身升級後改掉了一些目錄的設定,導致Homebrew抓不到自己的設定。還好Homebrew自己的設定還滿容易升級的。

錯誤訊息發生於執行brew update時,brew會告訴你/usr/local這個目錄的使用者權限有問題,叫你用下面的指令進行修復後繼續


sudo chown -R $(whoami):admin /usr/local


但是執行了指令之後並沒有多大作用。還是一樣跳一大堆錯誤之後停下來。

找了找網路的解法,看起來是要重新install過brew。執行下面指令(建議先自己跑過Xcode把CommandLine Tool更新一下)


/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

以上,解決。暫時完成brew更新的問題。

參考資料:
High SierraにアップデートされたMacでHomebrewがうまく動かない時https://qiita.com/takustaqu/items/65aa67286345baac363e

2018-07-23

代替小畫家的免費繪圖軟體

小畫家殺手...有點言過於實了,畢竟小畫家太弱XD
Windows馴染みのペイントの代わりですが、私がよく使っている方をお紹介します。

1. GIMP https://www.gimp.org/
最強殺手,以前是號稱推倒Photoshop...
昔からフリーウェアなので使っていますが、「オープンソース界のPhotoshop」と言われるほど有名だと思います。

2.Krita https://krita.org/zh/
開源版的 illustrators,向量圖就靠它了。
新たに紹介された「オープンソース界のillustrators」です。ベクター画像の編集にはこっちのほうが向いています。
3.Inkscape https://inkscape.org/zh-hant/
其實講到開源的向量圖軟體,在下對這個軟體比較耳熟能詳。網路上的比較也比Krita好得多,只能說可能是因為針對中文用戶的支援太少,導致其在華文世界的評價不是很高。
正直こっちのほうが僕にとってのオープンソース界のillustratorsですが、なぜか他のサイトでは上のKritaが紹介された。まぁ、アジア系のサポートが悪いのかな?

4. Paint .NET https://www.getpaint.net/
操作上最接近原來的小畫家。缺點是只能在Windows上用。
画面と操作にはWindowsのペイントに一番近いですが、残念ながらWindowsしか使えません(.NET Frameworkを使うので)。

2015-05-14

JDownloader 2 關閉廣告

從下面網址獲得消息及作法
http://d.hatena.ne.jp/koutas0121/20150127/1422383531

JDownloader 2是個不錯的YouTube處理器
但是有時候還蠻煩的(笑)

如果覺得看到那些廣告或是捐獻欄很煩,可以關掉或是調整下列的選項。

第一個,關掉GET PREMIUM!的標示/按鈕

開啟「選項」裡面的「進階選項」,從過濾器裡面鍵入關鍵字「ulbanner」
[GraphicalUserInterfaceSettings: ULBanner] 選項會跳出來。關掉右側的勾選。
2017/12/25 update:
最新版的設定是在[GraphicalUserInterfaceSettings: Banner]


第二個,關掉[Contribute]頁籤

關鍵字「donate」
[GraphicalUserInterfaceSettings: Donate Button State] 選項會跳出來。將他的值改成「Hidden(Automode)」。


額外選項,關掉Captchas(只是讓他不顯示,如果有問題的話記得改回來)
[GraphicalUserInterfaceSettings: Hate Captchas Text In Captcha Dialog Visible] 選項。將值的打勾

關掉各種Premium警告 [GraphicalUserInterfaceSettings: Premium Alert ??? Column]
??? = ETA, Speed, Task等等


請從下面網址取得原廠的JDownloader 2 (beta)
http://jdownloader.org/download/offline

2015-03-05

十個PostgreSQL比SQL Server好的理由

Ten Reasons PostgreSQL is better than SQL Server


原文出處: Ten Reasons PostgreSQL is Better Than SQL Server
原文作者: Jeremiah Peschka
原文發布時間: Dec. 06, 2011

為什麼會有人想要用PostgreSQL取代SQL Server?當你在選擇如何儲存你的資料之時會有很多因素需要考慮。有時候你需要看一些比標準選擇更深層一些的部分,並考慮一些新的事情。如果你是要開始一個新的專案,你應該將你的資料儲存在哪裡?以下列出十個理由,告訴你為什麼也許應該要考慮用PostgreSQL而不是SQL Server。


每年版本發布 Release Every Year

讓我們面對問題吧,等某個產品的三到五年的更新週期去加入新的功能是件痛苦的事。我不想不斷地學習新功能,但是另一方面,我又不想為了解決業務上的重大問題而自己寫黑客解決方案,因為我知道某些東西終究會沿著管線下來,但是在我自己實踐他之前我又不能等上個好幾年。迅捷發布週期保證PostgreSQL的開發團隊可以快速地將用戶需求的功能交出來,並且持續的改進。

從9.0版開始,PostgreSQL的發布週期已經切換為年度週期。在那之前,PostgreSQL總是在新功能完成時發布釋出。縱觀維基百科上的主要版本的發布時間,我們可以看到每18個月會推出新的主要版本。對軟體產品來說,18個月的發布週期並不差,比起一個資料庫之類的重大任務來說已經是短得多了。

真.序列化 True Serialization

快照隔離(snapshot isolation)保證同一次的交易處理中的所有的讀取動作都會對應到一致的資料快照內容。另外,一次的交易處理應當只在當次的快照之後的資料變更沒有起衝突的時候進行提交。但不幸的是,快照允許異常狀況存在。那可能會發生一種狀況,兩筆有效的交易發生,讓資料庫留在一個不一致的狀態上 — 資料庫不會符合它自己的資料完整性規則。

序列化快照隔離(serializable snapshot isolation)在9.1版中被加進了PostgreSQL中。SSI模擬了嚴格的序列化執行動作 - 交易行為會以一個接著一個的方式被執行。如果中間有衝突發生,甚至是一個潛在的衝突,資料庫引擎會將一個錯誤丟回給呼叫者(呼叫者將留下如何處理下一步的指示)。

序列化快照隔離聽起來很痛。但厲害的是它提供讓資料庫去擁有更高等級的一致性控制方案。應用程式可以在假設資料修改會失敗的前提下進行開發,隨後重試失敗的交易。真正的好處是寫得好的城市可以預防資料不一致,並且維持所有的操作都應該是符合期望的形象。

理智的預設值,荒謬的調校 Sane Defaults, Ridiculous Tuning

好吧,讓我們保持公平,PostgreSQL附帶了一些荒謬的保守性共享記憶體設定。其他大部分的PostgreSQL設定都是保守的,但是一般來說足以滿足大多數普通的工作負載。大多數人在佈署PostgreSQL的時候將不需對PostgreSQL做太多變更(也許只是在開始時將shared_buffers增加到整體記憶體的25%)。

一旦PostgreSQL安裝完成開始運行,有一些設定還是可以變更。最好的部分是,雖然,是在伺服器,資料庫,用戶,或甚至是單獨查詢級別中可以對其大部分的設定進行變更。擁有混合工作負載的伺服器是十分常見的 - 大部分在該伺服器上的活動都是在基本的CRUD上執行,但是活動中的百分之幾的小部份,用來做報告的那些,需要調整為高一些的優先度。與其將獨立報告移到分離的區域(不管是分離的伺服器,資料庫,還是相同資料庫中的分離資源池)去執行,我們可以藉由使用適當的參數簡單地調校小部分的查詢,包括分配要用來做排序(sort)與聯結(join)的記憶體分配。

無紀錄資料表 Unlogged Tables

你是否對試著取得批量插入作業的少量記錄感到不快?我也是。與其嘗試各種不同的方法去讓某些資料表的紀錄少量化,PostgreSQL讓我們選擇可以創建一個無紀錄資料表 - 只要在創建資料表create table語句中簡單地直接加上UNLOGGED字句,一切就都準備好了。

無紀錄資料表會繞過寫入起始紀錄;他們沒有崩潰防護,但是他們就是可以執行的飛快。無紀錄資料表中的資料將會在伺服器崩潰或是不明關機後被截斷,不然他們就是一直在那裏。他們也會被排除在備用伺服器的備份以外。這讓無紀錄資料表成為ETL或是其他資料操作程序的理想選項,那會讓他們易於重複使用原資料。

地理位置的KNN...以及更多 KNN for Geospatial… and More

對,我有聽過這消息,關於SQL Server將會很快地擁有這個功能,但是PostgreSQL已經擁有了。如果K最近鄰居(K Nearest Neighbor)搜尋對你的業務來說非常重要,你已經走過一些痛苦的過去,為了要讓他在你的RDBMS裡面起作用。或者你已經放棄並且在其他地方實作解決方案。我不會怪你 - 地理位置查詢是好,但是沒有KNN功能會讓人想死。

PostgreSQL的KNN查詢在特定索引(index)類型上動作(在PostgreSQL中有許多種索引類型)。你不只可以使用KNN查詢去找到前五個離你最近的Dairy Queen(*連鎖冰品店),你還可以使用KNN搜尋去找其他的資料類型。你完全有可能藉由執行KNN搜尋去找到10個最接近"冰淇淋"的語句。

KNN搜尋能力使得PostgreSQL在任何尋找地理位置查詢功能的人眼中是個有力的競爭者。而追加的柔軟性讓PostgreSQL在其他同種搜尋導向的應用程式中處於領導地位。

交易管理同步複製 Transcation-Controlled Synchronous Replication

要保持你的資料庫的另一個備份的最簡單的方法之一,就是用某種資料庫複製(database replication)。SQL Server DBA將主要使用交易紀錄性的複製(transactional replication) - 一個專門的代理程序會讀取SQL Server的紀錄,蒐集重要的指令,然後將其傳送給應用他們的訂戶。

PostgreSQL的內建複製,比起SQL Server的複製來說,更接近SQL Server的鏡像(PostgreSQL的複製是個可讀性的待機)。紀錄活動將會固定在主要機上,然後被傳輸給二號機。那個動作可以是同步也可以是非同步的。直到PostgreSQL 9.1為止,複製是一個全友或是全無的動作 - 每一筆交易不是同步就是非同步的。開發者可以藉由單次交易的synchronous_replication設定值去設定一個特定的交易。這很重要,因為它讓我們在除錯時可以寫入大量的複製資料進紀錄資料表而不會受到同步提交在寫入紀錄資料表的效能影響。

每當我們在開發應用程式時有更多的選項時,我都很快樂。

可寫的CTE Writeable CTEs

CTE對讀取來說很好,但是如果我需要用他們來做一些更複雜的動作,那會發生一些其他的問題。一個例子會讓他更簡單一些。比方說我想刪除過時的資料,但是我想要將它儲存在一個封存資料表中。要在SQL Server上這麼做,最簡單的方法(從開發的觀點上)就是提升我的隔離級別(isolation level)到至少快照的等級,如果不是序列化(serializable)的,並且使用隔離等級去保證資料不會被變更。我也可以讀取將要被刪除的註解的PK值,將它放在一個暫存資料表中,並多次參照它。

兩種方法都可行,但是兩種方法都有問題。第一種方法需要程式碼在特定隔離等級上執行。這讓目前的特定設定會失效。程式碼也可以從特定程序中被複製出來,並在SSMS中運行,會導致潛在的異常,會有少數的幾行被刪除且不存在於封存之中。對垃圾留言來說不是個大問題,但是在其他的狀況中這可能會是大問題。第二種方法並不是十分差勁,而且他也沒有錯,只是它涉及額外的程式碼噪音。暫存資料表對解決我們的問題來說不是必要的,而且它是在處理不同隔離級別時產生的副產品。

PostgreSQL有不同的方法來解決這個問題:可寫式的CTE。CTE是用T-SQL中被打造的同樣方式來打造。不同的是,當我們使用PostgreSQL,資料可以在CTE之中被更改。然後輸出資料可以就像其他CTE輸出一樣被再度利用:
CREATE TABLE old_text_data (text_data text); 

WITH deleted_comments AS ( 
  DELETE FROM comments 
  WHERE comment_text LIKE '%spam%' 
  RETURNING comment_id, email_address, created_at, comment_text 
) 
INSERT INTO spam_comments 
SELECT * 
FROM deleted_comments 

這可以結合預設值(default value),觸發器(trigger),或是任何其他資料修改方式去打造非常豐富的ETL鏈。在表面之下它可能就像我們在SQL Server上做的事一樣,但是好處是它簡潔。

擴充 Extensions

有曾想過要在SQL Server上增加一些功能嗎?要如何保持這些功能是最新版的?這也許對DBA來說是個大問題。當你在橫跨生產環境中執行管理用腳本時要跳過一台伺服器是十分簡單的事。更進一步,你怎麼知道你已經安裝的是哪個版本?

PostgreSQL擴充功能網路(PostgreSQL Extension Network, PGXN)是一個外部功能的集中發放點。它是開源PostgreSQL書庫的一個可信賴的來源 - 不會包含任何可疑的二進位程式。再加上,在PGXN上的任何東西都有版本編號。當更新時,PGXN會有效地提供,擴充功能將會為你關注更新途徑 - 它知道如何確認自己是最新的。

有一些關於排名的擴充功能像是 K均值叢類(K-Means clustering)、甲骨文兼容功能(Oracle compatibility functions)、Amazon S3遠端查詢(remote queries to Amazon S3)。

將這些功能推出並放進擴充功能中,讓開發者與DBA易於打造客製化封包,讓它看起來且動作就像是PostgreSQL的核心功能,但卻不需試著在PostgreSQL發布程序中取得這些包裝。這些包裝可以之後再獨立開發,進而提升他們自己的效率,並提供那些無法符合PostgreSQL核心團隊的發布計畫的複雜功能。簡單地說,這有一個環繞PostgreSQL的健全生態系統。

豐富的時間資料類別Rich Temporal Data Types

我最喜歡的PostgreSQL的功能之一就是它的時間資料類別的豐富支援。當然,SQL Server 2008最終為SQL Server帶來了一些成熟的時間資料支援,但是那還是塊十分貧脊的土地。對時間資料的強力支援在很多工業中是關鍵議題,而且不幸地是,在SQL Server中還有許多工作在繼續進行,為了解決要SQL Server對時間資料支援上的限制。

PostgreSQL引進了時區智能處理。加上了對ISO 8601標準(1999-01-08 04:05:06 -8:00)的支援,PostgreSQL支持用縮寫(PST)或是指定位置識別子(America/Tijuana)來識別時區。縮寫會對應到從UTC的固定偏移量,而位置識別子會加上夏令時間的規則支援。

在時區柔軟性之上,PostgreSQL有個interval資料類別。interval資料類別能夠在14位精度上儲存最大178,000,000年的間隔。interval可以量測時間,以一年的間隔內測出比微秒還要小的精細度。

排除約束 Exclustion Constraints

你是否有嘗試過用SQL Server寫任何一種排程功能?如果你有,你將會知道當你有業務上的需求像是"兩個人不能在同一時間占用同一間會議室",你就會知道這很難執行程式碼,而且通常會需要資料庫中的額外動作。有很多方法可以完全透過在應用程式層別程式碼來實現這個功能,但沒有一個會讓用戶與開發者開心。

PostgreSQL 9.0引進了排除約束在欄位之中。換句話說,我們定義資料表並加上追加的約束,那包括一些檢查(check),且至少要有一項檢查是假(false)。排除約束藉由索引的罩門下受支援,所以這些動作可以像是在我們的磁碟以及我們所設計的索引一樣快。你可以在時空間結合資料上使用排除約束,確定在同一個時間點不同的人不能預約同一間會議室或是區塊不會重疊。

在2010 PGCon大會中有一份發表資料是關於排除約束的細節部分。雖然沒有視頻,但是幻燈片已經足以讓他們展示足夠的案例與解釋幫助你開始。

加分功能 - 原價 Bonus Feature - Cost

它是免費的。所有的功能都是。PostgreSQL沒有版本分類(edition) - 功能總是存在資料庫中。一些公司會提供商業支援,他們之中有些甚至會提供追加的閉源功能,但是核心的PostgreSQL資料庫一直都是可用的,一直都是免費的,一直都擁有相同的功能。

讓我們開始吧 Getting Started

想要開始用PostgreSQL嗎?跳到下載頁面並下載你選擇的平台的副本。如果你想要更多細節,文件都已經準備好了而且良好撰寫,或是你可以查看維基上的教程。

2014-06-15

Autodesk Products Trial Download Agent

There is the official line for all Autodesk products by the official trial agent

Link:
https://ava.autodesk.com/

(update:2018/10/30)

2014-05-19

Autodesk Product Activation error 0015.111

最近遇到的新問題

當安裝Autodesk產品的時候,如果在安裝過程之中導入SP
會導致後來的啟用被阻止...

想也知道,因為啟用的內容被Autodesk擋掉了咩...
網路上有破解法跳出來了。這也解決了每次裝新產品就要全部移除乾淨的問題

安裝完之後,在以下的共用資料夾中的adlmact.dll與adlmact_libFNP.dll這兩個檔案會被更新為最新的狀態
C:\Program Files\Common Files\Autodesk Shared\AdLM\R7

解決之道就是去把安裝資料夾中原本的這兩個檔案找出來貼上去覆蓋掉新檔,那麼原本的Crack也就又重新可以用了。

Jesus! 這真是太神奇了。

來源出處:http://forum.cgpersia.com/f19/autodesk-activation-error-015-111-anywhere-solution-xforce-keygen-82930/#ixzz2sIF6Qh4Q

2012-08-17

Doxygen

ソースコード分析用ソフト
大学の時に一度世話になりましたが、最近になってまた必要になってましたね…

一応リンクを張っておきます。使用方法は後ほど補完します。

http://www.stack.nl/~dimitri/doxygen/

2011-09-12

Screen Ruler

Screen Ruler

何回も同じものを探すのは面倒臭いから、ここにノートします。

keyword: screen, ruler, pixel, 距離

2010-09-16

深入淺出MFC 2e 學習筆記: 第一章Generic

以下是自己在Windows 7中的Visual Studio 2008下編譯Generic所遇到的問題與解決方案

Generic.mak:
這個檔案年代已經久遠,當中所使用之某些編譯工具在現在最新的vs2008已經不再提供(如rc),所以放棄不用...



Generic.h(書中code)。有稍加修改
BOOL InitApplication(HINSTANCE);
BOOL InitInstance(HINSTANCE, int);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK About(HWND, UINT, WPARAM, LPARAM);




Generic.cpp(書中為.c)

#include <windows.h>
#include "resource.h"
#include "generic.h"

HINSTANCE _hInst;
HWND _hWnd;

char _szAppName[] = "Generic";
char _szTitle[] = "Generic Sample Application";


int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
       MSG msg;

       UNREFERENCED_PARAMETER(lpCmdLine);

       if(!hPrevInstance)
               if(!InitApplication(hInstance))
                       return (FALSE);

       if(!InitInstance(hInstance, nCmdShow))
               return (FALSE);

       while(GetMessage(&msg, NULL, 0, 0)) {
               TranslateMessage(&msg);
               DispatchMessage(&msg);
       }

       return (msg.wParam);
}

BOOL InitApplication(HINSTANCE hInstance)
{
       WNDCLASS wc;

       wc.style = CS_HREDRAW | CS_VREDRAW;
       wc.lpfnWndProc = (WNDPROC)WndProc;
       wc.cbClsExtra = 0;
       wc.cbWndExtra = 0;
       wc.hInstance = hInstance;
       wc.hIcon = NULL;
       wc.hCursor = LoadCursor(NULL, IDC_ARROW);
       wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
       wc.lpszMenuName = "GenericMenu";
       wc.lpszClassName = _szAppName;

       return (RegisterClass(&wc));
}

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
       _hInst = hInstance;

       _hWnd = CreateWindow(
               _szAppName,
               _szTitle,
               WS_OVERLAPPEDWINDOW,
               CW_USEDEFAULT,
               CW_USEDEFAULT,
               CW_USEDEFAULT,
               CW_USEDEFAULT,
               NULL,
               NULL,
               hInstance,
               NULL
               );

       if(!_hWnd) return (FALSE);

       ShowWindow(_hWnd, nCmdShow);
       UpdateWindow(_hWnd);
       return (TRUE);
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
       int wmId, wmEvent;

       switch(message){
               case WM_COMMAND:
                       wmId = LOWORD(wParam);
                       wmEvent = HIWORD(wParam);

                       switch(wmId){
                               case IDM_ABOUT:
                                       DialogBox(_hInst, "AboutBox", hWnd, (DLGPROC)About);
                                       break;
                               case IDM_EXIT:
                                       DestroyWindow(hWnd);
                                       break;
                               default:
                                       return (DefWindowProc(hWnd, message, wParam, lParam));
                       }
                       break;

               case WM_DESTROY:
                       PostQuitMessage(0);
                       break;

               default:
                       return (DefWindowProc(hWnd, message, wParam, lParam));
       }
       return (0);
}

LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
       UNREFERENCED_PARAMETER(lParam);

       switch(message){
               case WM_INITDIALOG:
                       return (TRUE);
               case WM_COMMAND:
                       if(LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) {
                               EndDialog(hDlg, TRUE);
                               return (TRUE);
                       }
                       break;
       }
       return (FALSE);
}





Generic.rc(書中code)。以VS產生之原始檔,最後加入書中code
// Microsoft Visual C++ で生成されたリソース スクリプトです。
//
#include "windows.h" // 增加這行
#include "resource.h"

#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE 2 リソースから生成されました。
//
#include "afxres.h"

/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
// 英語 (米国) リソース

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN)
LANGUAGE 17, 1
#pragma code_page(932)

#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//

1 TEXTINCLUDE
BEGIN
   "resource.h\0"
END

2 TEXTINCLUDE
BEGIN
   "#include ""afxres.h""\r\n"
   "\0"
END

3 TEXTINCLUDE
BEGIN
   "\r\n"
   "\0"
END

#endif    // APSTUDIO_INVOKED

#endif    // 英語 (米国) リソース
/////////////////////////////////////////////////////////////////////////////



#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE 3 リソースから生成されました。
//


/////////////////////////////////////////////////////////////////////////////
#endif    // APSTUDIO_INVOKED でない場合


// 以下為自己加入
GenericMenu MENU DISCARDABLE
BEGIN
       POPUP "&File"
       BEGIN
               MENUITEM "&New",        IDM_NEW, GRAYED
               MENUITEM "&Open...", IDM_OPEN, GRAYED
               MENUITEM "&Save",       IDM_SAVE, GRAYED
               MENUITEM "Save &As...", IDM_SAVEAS, GRAYED
               MENUITEM SEPARATOR
               MENUITEM "&Print...", IDM_PRINT, GRAYED
               MENUITEM "P&rint Setup...", IDM_PRINTSETUP, GRAYED
               MENUITEM SEPARATOR
               MENUITEM "E&xit",       IDM_EXIT
       END
       POPUP "&Edit"
       BEGIN
               MENUITEM "&Undo\tCtrl+Z", IDM_UNDO, GRAYED
               MENUITEM SEPARATOR
               MENUITEM "Cu&t\tCtrl+X", IDM_CUT, GRAYED
               MENUITEM "&Copy\tCtrl+C", IDM_COPY, GRAYED
               MENUITEM "&Paste\tCtrl+V", IDM_PASTE, GRAYED
               MENUITEM "Paste &Link", IDM_LINK, GRAYED
               MENUITEM SEPARATOR
               MENUITEM "Lin&ks...", IDM_LINKS, GRAYED
       END
       POPUP "&Help"
       BEGIN
               MENUITEM "&Contents", IDM_HELPCONTENTS, GRAYED
               MENUITEM "&Search for Help on...", IDM_HELPSEARCH, GRAYED
               MENUITEM "&How to Use Help", IDM_HELPHELP, GRAYED
               MENUITEM SEPARATOR
               MENUITEM "&About Generic...", IDM_ABOUT
       END
END

AboutBox DIALOG DISCARDABLE 22, 17, 144, 75
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "About Generic"
BEGIN
       CTEXT           "Windows 95", -1, 0, 5, 144, 8
       CTEXT           "Generic Application", -1, 0, 14, 144, 8
       CTEXT           "Version 1.0", -1, 0, 34, 144, 8
       DEFPUSHBUTTON "OK", IDOK, 53, 59, 32, 14, WS_GROUP
END





resource.h 原本應該是rc根據generic.rc生成。但是VS笨笨的,所以還是自己修改吧
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by generic.rc

// 自己加入部分START
#define IDM_NEW                                 201
#define IDM_OPEN                                202
#define IDM_SAVE                                203
#define IDM_SAVEAS                              204
#define IDM_PRINT                               205
#define IDM_PRINTSETUP                  206
#define IDM_EXIT                                207
#define IDM_UNDO                                208
#define IDM_CUT                                 209
#define IDM_COPY                                210
#define IDM_PASTE                               211
#define IDM_LINK                                212
#define IDM_LINKS                               213
#define IDM_HELPCONTENTS                214
#define IDM_HELPSEARCH                  215
#define IDM_HELPHELP                    216
#define IDM_ABOUT                               217
//#define IDOK                                  300
//#define IDCANCEL                              301
// 自己加入部分END

// 新しいオブジェクトの次の既定値
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        101
#define _APS_NEXT_COMMAND_VALUE         40001
#define _APS_NEXT_CONTROL_VALUE         1001
#define _APS_NEXT_SYMED_VALUE           101
#endif
#endif




VS2008,打開一個新的win32程式用新專案,內容用空白
自己把上面這幾個檔案加入/修改之後就能編譯了
理論上,加入generic.rc的時候,resource.h檔案就會被自動生成,可是內容就點點點了

如果編譯出現囉嗦的字眼之類的,應該是編碼問題
把專案的編碼從UNICODE(預設)改成用多字元編碼就沒事了

2009-04-26

The arrow keys setting for vi

Sometimes your vim won't acted currently when u press the arraw keys.

There are 2 ways for it.

(1)
Edit .vimrc and add the texts below:
set t_ku=^[OA
set t_kd=^[OB
set t_kr=^[OC
set t_kl=^[OD

The "^[" is the ESC key. And we can key in "^[OA" with press "Ctrl+v" + UP key.
So as the others.

(2)
Edit .vimrc and add the texts below:
set nocompatible




By the way,
if the BACKSPACE key didn't work, add the texts below into .vimrc
set backspace=2

2008-02-06

在Firefox Portable裡手動加入Flash Plugin的方法

1.從Adobe網站下載FlashPlayerInstaller
(檔名install_flash_player.exe)

2.用解壓縮程式(像是7zip之類的)打開檔案
理論上會看到一個檔案夾跟三個檔案

3.把NPSWF32.dll(Flash Player Plugin)解到Firefox程式主目錄下的Plugins下

4.重啟Firefox後在網址列打入about:plugins
檢查有沒有Shockwave Flash這項,有就ok啦

有關連結:dora2002 的紙箱: 手動安裝Flash Player Plugin(外掛)

人気の投稿