發表文章

Firefox 網址列搜尋 Location Bar search

http://kb.mozillazine.org/Location_Bar_Search 習慣上會開很多Tab放著,在切換時會很難記得也不方便切換過去 發現可以用搜尋的 ex: 在位址列打入 % youtube 就可以找到開啟的youtube tab (%後面要空一格) 其他更詳細的搜尋方法在來源網址有寫

Asus ZenFone 5Z (ZS620KL)手機使用經驗,問題一堆的旗艦機

2020/3/16 更新 如果有人還想買他們家的手機,先看一下我維修經驗 https://craftwarblog.blogspot.com/2019/09/asusrma.html 印象中不到一個月就玩出一堆bug,太久了不記得詳細,只列比較重要的 詳細災情可以去google,國外也有人遇到 出了兩年好像一些最早就有的bug還是沒修好 usb-c接頭? 有問題,插著充電會一直跳掉,重複插上/拔除 (一直震動) 打遊戲會隔一段時間就lag爆音一下,後來發現關掉OptiFlex有稍微改善 進階功能->智慧功能->OptiFlex關掉,症狀發生頻率降低了一點,還是有 我玩的是音game,這是致命問題,完全無法忍受 插耳機不放任何音樂就有雜音,放音樂還是有雜音 輸入正確的SIM卡密碼,無法解鎖導致被鎖卡 畫出正確的圖形鎖卻無法解鎖 其他還有桌面變慢或畫面卡住 系統自動重整關掉全部app 內建的遊戲實況功能根本不能用,開著會自己說記憶體不夠關掉 旗艦機可以做到這麼爛,是否除了asus沒有了? 除非他們下一隻可以root不破保,我也許會考慮 但是要用google pay不能root,所以算了吧? 題外話,root不破保的只有中國手機 但這次武漢肺炎,讓我感到中國太可怕了 我不敢相信產品沒有資安上的問題

關於craftwar (簡單的自我介紹)

performance paranoid 主要是 C/C++ programmer,目前對Windows比較熟悉 OBS contributor 幫官方打雜修過一些小東西和bug 也寫了一些自己和朋友想用的OBS擴充功能 個人作品多數有開源,可在github上找到 https://github.com/craftwar Hobby: 合約橋牌 日本麻將

Visual Studio debug child process

https://devblogs.microsoft.com/devops/introducing-the-child-process-debugging-power-tool/ https://blogs.msdn.microsoft.com/greggm/2005/02/21/inside-image-file-execution-options-debugging/

if (a == true) 和 if (a) 是不同的,不要寫 if (a == true)

在Apple webkit的coding style裡就有一條說不要這樣寫 if (a == true) 和 if (a) 是不同的 (測試過C/C++, java script) 乍看之下,似乎只是多寫了 == true,有人認為這樣邏輯上比較清楚 (我不這麼認為) 實際上true會被轉換成1再比較,意義上不是a的boolean是否為true 如果你真的要跟1比較,請寫成 == 1 如果a是int的情況下,又是負數,例如 -1 if (a == true) 實際上是 if (-1 == 1), 不會進branch if (a) a不是0,會進去branch C/C++的慣例 boolean true定義為1,false定義為0 表示error code時成功用0,失敗用非零 (可能是正或負數,看API定義) 以語言的設計或定義,我覺得不寫 == true 才是比較好的寫法 一方面字數比較少,閱讀邏輯上也沒有比較差 我也沒看過哪個open source軟體寫== true (js似乎會寫 === true,不熟) 順便一提,我還看過 isXXX() ? true : false 的,這個語意上應該沒有差 直接寫isXXX() 不就好了? 理由一樣,養成好的習慣吧 一個簡單的C++驗證程式 #include <iostream> int main(int argc, char *argv[]) {         int a = -1;         if (a == true)                 std::cout << "a == true\n";         else            ...

OBS AMD 硬體壓縮維護者 Xaymar 退出團隊, hardware encoder

來源: https://github.com/obsproject/obs-studio/issues/2346 以後OBS AMD硬體壓縮品質會更糟糕,不知道多久後才會有新的開發者接手,國外OBS開發者都滿有錢的,AMD沒啥人買。接手的人能不能像以前一樣? 真的要很有愛,因為AMD driver有時無預警改動造成第三方程式壞掉,也需要一些hack 來workaround 據我所知OBS AMD encoder只有Xaymar維護,ffmpeg內的AMD hw encoder好像也是他 因為客戶指定用AMD還是真的很有愛? 他說Radeon Vega還VII 新品送修三次才能用 我只送過nvenc的pr,AMD? 沒研究,沒用過有AMD hw encoder的GPU 以下只和開發者相關 (使用者可以不看) 關於Xaymar所說的事,只有clang-format綁在cmake執行我不贊同 要用就讓開發者自己在ide或其他方式執行 OBS的開發和他講的一樣,就是某些人說的算,都直接commit進去了,沒大問題就算Jim不喜歡也不會revert吧 類似的事其他人提pr會被拒絕,沒有明確的規則 別人都花時間寫完了,才說謝謝你blah blah reject 就像Xaymar說的,你一開始就講好到底哪些會被接受,不要浪費大家時間 開發者的experience也很重要阿

修改程式顯示語言, change program locale language

基本只列無法從使用者介面修改語言的 如果沒有明確說明,就是改成英文 看英文比較方便,不會有誤解,資料也比較好查 通常就兩種方法 增加參數指定語言 (command line, registry) 刪除語系檔,讓程式fallback回英文 Nvidia control panel 來源 https://www.nvidia.com/en-us/geforce/forums/discover/198479/any-ways-to-change-nvidia-control-panel-language-/#4661040 安裝檔 https://github.com/craftwar/Settings/blob/master/Windows/Nvidia control panel.reg Visual Studio Installer "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vs_installer.exe" --locale=english

School Days HQ win10執行問題, 遊戲卡住無回應,強制單核心執行

正常啟動的話,很容易就無回應卡住 經過測試,只要按熱鍵或是切換速度太快就會出問題 猜測可能是multithread有問題 實驗後,限制讓遊戲只使用一個logical CPU就不會出問題 start "" /D "G:\Overflow\SCHOOLDAYS HQ" /affinity 1 "SCHOOLDAYS HQ.exe" 請自行修改成遊戲路徑,存成.bat 或 .cmd檔後,點兩下來啟動 其實按太快還是會出問題啦,Ctrl+F 連按就會跳過選項 一定是會社名問題 (X)

開機時主機板錯誤聲音, bios beep code

每家的bios設定不同,只查看bios種類上網查到的不一定正確 要查詢主機板製造商給的設定 ASUS  只給英文的,沒有中文的,用中文的FAQ還找不到,ASUS真爛 https://www.asus.com/us/support/FAQ/1029959/

My OBS TODO list

官方OBS的許願池在這裡,有好的想法可以去提 https://ideas.obsproject.com/ 這是我的OBS版本的預定 TODO Never Do list obs-text browser <-> OBS IPC for song name (小星說要寫,大概有機會?) 做出來就不用限制active tab detect player/program close updater unicode support 太習慣用英文就忘記了,寫完才想到,沒人pr就不改 以上接受pr Direct2D rewrite as a new plugin Installer相關的 (應該我都沒興趣沒時間弄,看有沒有人要做) VC++ runtime check, download from M$

ASUS品質+RMA維修經驗

1. 某主機板 (會這樣寫是因為不在手邊無法查) 舊主機板送修後,ASUS無通知擅自降級更換成其他無法使用的型號 維修單我明明有寫Win7,給我一塊網卡驅動沒有Win7的板子,害我要再跑一次 2. ASUS 5Z https://www.asus.com/tw/Phone/ZenFone-5Z-ZS620KL 使用不到1個月,因合約關係更換的全新Sim卡用不到三天,手機就抓不到 該Sim卡換到別的手機去也無法使用,被5z搞壞了? 全新Sim卡應該很難壞掉吧,用三天而已 發生問題時,手機躺在桌上無使用無充電,一個月內手機無摔過或劇烈碰撞 Sim卡問題經搜尋後發現不是個案,還有人出任務多次還修不好的 帶去ASUS皇家維修,服務太差 客服小姐要求我交出密碼,理由為維修需要進入系統 為了保護隱私,我詢問如何備份系統,打算清除資料 客服回應是沒有辦法,他們不負責,連怎麼備份也不教我,要我自己想辦法 手機送進房間後等了1hr以上,到快關門,才有人來問我 給的原因是排線鬆掉,WTF,你們的手機只要自己震動就會鬆掉線嗎,有點OP 肯定是真正原因不敢講 (大概是cost down到出問題吧) ASUS也有發佈系統更新後又撤掉的紀錄 ,這表示更新有重大問題 為何會一再發生,已經更新的人怎麼辦?

Java OpenJDK + OpenJ9 加快啟動時間 speed up java startup time

OpenJ9是另一種JVM implementation 據說效能比HotSpot好 確定的是memory用量較低,CPU效能似乎看跑的程式 (平均HotSpot好像比較好) 啟動速度較快,可以用 -Xshareclasses 打開cache功能 (AOT+JIT),下次Java就不用重新compile class (第一次會比較慢) 我用的是AdoptOpenJDK,最新版本JDK (左邊版本選最下面的,右邊選OpenJ9) https://adoptopenjdk.net/releases.html?jvmVariant=openj9 一般人使用選擇後面沒寫LargeHeap的版本就夠了,那個是給需要大記憶體的程式用 因為電腦加記憶體到16G了,使用上充足就想提高效能 同樣程式編譯成64bit會比32bit記憶體用量多,效能較高,比較HotSpot 32/64bit用量,印象中Chatty多了30%以上 HotSpot 32bit 換到 OpenJ9 64bit,記憶體用量差不多 ,就知道OpenJ9很會省了 啟動Chatty大概4秒吧,以前HotSpot要幾秒不知道,久到我其他程式都開完還沒起來 command line option https://www.eclipse.org/openj9/docs/cmdline_specifying/ 目前我用的參數 (非開發/debug用,只是拿來跑程式,把所有看到會提高效能都開了) -Dcom.ibm.tools.attach.enable=no -Xaggressive -Xnolinenumbers -Xshareclasses -XX:SharedCacheHardLimit1G 加參數的方法可參考 https://craftwarblog.blogspot.com/2017/10/windows-jarjvm-run-jar-file-with-jvm.html https://www.eclipse.org/openj9/docs/xshareclasses/ -Xshareclasses:cacheDir=<directory> C:\Documents and Settings\<username>\Local Setti...

記憶體超頻知識整理, memory overclock

超頻可以提高效能,缺點增加耗電和熱量,減少元件壽命,較不穩定 超頻需要看記憶體,主機板,記憶體控制器 (現在都整合在CPU內) 原生記憶體是指設計時就以JEDEC的標準來做,如果主機板或CPU沒有原生支援該頻率,還是算超頻使用 (不支援的部分算超頻) JEDEC standard DDR4 module 超頻記憶體指的是memory chip非設計給該頻率使用 透過某些方法讓,記憶體以更高頻率運作,應該是透過挑選記憶體顆粒和PCB設計吧,所以穩定性較低,為了提高穩定性通常會提高電壓 同製程技術下,頻率越高產生越多熱量,電壓越低熱量越少 (不同家的無法直接比較) 同時脈CL數低的延遲比較低,速度比較快 耗電量可以參考這個說明 http://www.tpuser.idv.tw/wp/?p=1859 記憶體single rank和dual rank和是不是雙面無關,一般dual rank都做成雙面? ex: 8G的記憶體可能會標示成 1RxN, 2RxN 2R就是dual rank,N我忘記是什麼了,可能是幾個顆粒? 或是bit width? 如果想知道rank是什麼,可以看 https://en.wikipedia.org/wiki/Memory_rank single rank基本上比dual rank好 (除了可能和主機板不相容,大容量可能抓不到) 少一個控制器,速度稍快,耗電量較低,訊號比較不會干擾,超頻空間比較大 主機板也有限制支援的最大rank數 (不是看插幾條記憶體) 目前除了伺服器用DDR4 3200 16G單條都是 2R,應該是成本考量密度沒做上去

防止LavFilter被遊戲使用, blacklist specified application

LavFilter是知名解碼包K-Lite Codec Pack的核心元件 有些遊戲會因為使用到LavFilter來解碼,導致遊戲運作不正常 可能症狀: 無畫面/聲音或異常,遊戲卡住/當掉 解法: 在LavFilter的設定中禁止某個程式使用 資料來源 (K-Lite Codec Pack的FAQ) https://www.codecguide.com/faq_troubleshooting.htm#item8 執行(Win+R) regedit 根據要設定blacklist的元件,先切換到指定位置 (在路徑那條複製貼上按Enter) 選取Blacklist後,按右鍵新增DWORD,名字用程式的執行檔名 (xxx.exe) 加完後點兩下把數值改成1 LAV Video Decoder HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\LAV\ Video \Blacklist LAV Audio Decoder HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\LAV\ Audio \Blacklist LAV Splitter HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\LAV\ Splitter \Blacklist

雀魂顯卡用量過高, Majsoul GPU high load

目前確認是顯卡VRam不夠用,750太舊了只有1G 可以開其他非瀏覽器的程式,逼瀏覽器放出VRam後關掉程式再開 ex: 打開雀魂遊戲前,先開mpc-hc 放影片再關掉來釋放 遊戲內已改成省電模式還是有問題的可以嘗試下面的方法 Windows+Ctrl+Shift+B 重啟顯卡驅動後,瀏覽器重開可以解決 這個熱鍵好像是Win10限定 ? 重啟後,雀魂沒重開瀏覽器前會顯示WebGL錯誤,可以推測出遊戲是用WebGL 可能是遊戲沒寫好,或是顯卡驅動有問題,導致資源無法被釋放 檢驗方式,task manager或是用GPU-Z中GPU用量 以我目前用Nvidia 750,firefox中 GPU會用4x或100%,正常情況下是少於10% 重啟顯卡驅動後就可以看到顯卡VRam和 GPU load降低了 遊戲要重開機才能跑得順的,可以試試看這個方法

Windows API Sets

https://docs.microsoft.com/en-us/windows/desktop/apiindex/windows-apisets An API Set is a strong name for a list of Win32 APIs. The convention for assigning a strong name to an API Set is to use what appears to be a dll name. But the purpose of an API Set is to provide architectural separation between the API Set's name and its associated host DLL implementation for improved portability of your app, so you should think of an API Set's name as just a unique character string, and not as a dll name. For delay load, you use the name of the API Set. 基本上就是一堆長得像 api-ms-win- 的dll Win7好像沒有? (2020就不支援了,不用管?)

關掉Windows10內建防毒, disable windows defender antivirus

關防毒 https://www.windowscentral.com/how-permanently-disable-windows-defender-windows-10 關smartscreen (掃描下載檔案, 可疑網站黑名單) 如果你有另外裝防毒軟體 + 不用IE或Edge 基本上可以關掉省資源 https://www.digitalcitizen.life/how-disable-or-enable-smartscreen-filter-internet-explorer-or-windows-8 內建防毒滿難用的,可設定的參數太少,建議裝一套免費的 如果有裝其他防毒,通常不需要手動關掉內建防毒 https://craftwarblog.blogspot.com/2018/07/personal-free-antivirus.html 不關防毒的情況下,建議設定例外清單的項目,避免影響效能 ex: virtual machine的image和程式 (含android模擬器)

Firefox 設定調整 about:config

http://kb.mozillazine.org/Category:Preferences 讓 Firefox 連線數變多 (然後加快速度) ( from gslin blog) network.http.max-persistent-connections-per-server   改成10 (和Chrome一樣) browser.urlbar.decodeURLsOnCopy 讓網址複製後可以保留文字,不用% escape 其他調過的東西忘了...

程式設定/遊戲紀錄可能位置, program setting/game save folder

不在程式同目錄的話,可能的位置 (可能會有公司名前置) 系統變數參考 https://ss64.com/nt/syntax-variables.html %USERPROFILE% %USERPROFILE%\Documents %USERPROFILE%\AppData 下三個目錄內 %appdata% (就是 %USERPROFILE%\AppData\Roaming) %LOCALAPPDATA%  (就是 %USERPROFILE%\AppData\LocalLow) %LocalAppData%\VirtualStore (少見,通常是安裝在系統目錄的舊程式,不支援UAC的) 也有可能不以檔案形式保存,使用 registry Win + R -> regedit HKEY_CURRENT_USER\Software HKEY_LOCAL_MACHINE\SOFTWARE (通常是不分使用者帳號共用的,整台機器的設定才會在這)

電腦配備選擇CPU, 顯卡GPU, RAM

更新 2019/11/16 只以主流產品和遊戲使用分析,由於產品名稱和代號會改變只提供一般性原則 (懶得隨產品更新),一般所說CP值較好的主流產品約在該系列/該代中間區段,可根據預算做上下修正,或想 玩遊戲/使用程式 的需求調整。 CPU/GPU溫度過高時會自動降低頻率(效能會下降)或關閉部分功能,以減少熱量產生來降溫保護元件,好的散熱可以讓元件在高負載下維持性能。選購時,要注意耗電較高的一般溫度也較高。一般只標示 TDP ,雖然不是使用的電量,一般TDP高的耗電也比較高。 比較產品優劣時,除了最常看的效能排名外,也可以看能源效率,通常標記為每瓦(Watt)效能 CPU Intel CPU和主機板都比較貴,而且腳位常更換,升級或損壞更換比較困難 AMD 都比較便宜,CPU腳位比較不常更換,新舊CPU/主機板間相容性較高 同等效能AMD較便宜,耗電量也不像顯卡品牌差異那麼大 CPU效能排名可用 CPU tier去google tomshardware的排名 https://www.tomshardware.com/reviews/cpu-hierarchy,4312.html 筆電下 mobile CPU tier https://www.notebookcheck.net/Mobile-Processors-Benchmark-List.2436.0.html 下面選項建議調整 Show only notebook CPUs Process(nm) 顯示卡 (GPU是顯示卡核心晶片) 同樣晶片的卡,在用料上有差異造成價差 (散熱,還有板子上的其他元件) 選擇上除了遊戲fps及跑分數字以外,還要看其他功能,例如: 硬體加速(解碼)能用更有效率播放高壓縮的影片檔,如果不支援就得用CPU做軟體解碼 Nvidia 價錢較貴,耗電較低溫度低穩定性較高,硬體壓縮Nvenc比AMD好太多,要實況只推薦Nvidia AMD 比較便宜耗電高溫度高,穩定性和壽命相對較低。考慮電費 + 必需使用更大功率的電源供應器,不推薦,除非有促銷才值得考慮。 遊戲用: Nvidia整體花費可能差不多,使用體驗比較好 應用程式上的表現,AMD跑分比較優秀 (同等級顯卡) 實際的選擇還是要看用途去找評測決定 顯卡效能排名可用 GPU tier去g...