發表文章

目前顯示的是 2018的文章

修正youtube 被重導去行動版, fix youtube is redirected to mobile site

原本會網址會變成 m.youtube.com (mobile版) 點這個連結後就會修正回desktop版了 https://www.youtube.com/?app=desktop&persist_app=1 原因大概是有點到別人手機的網址吧,忘了

遊戲翻譯機 VNR (visual novel reader) 常見問題, FAQ

圖片
VNR是日文遊戲用的翻譯程式 (其他語言也可以用,效果沒有日文好) 對想用遊戲來學日文的很有幫助 對於沒玩過日文遊戲的,請先看怎麼正常啟動/執行遊戲 日本/日文程式(遊戲)需要修改的語系設定 一個症狀可能有多種原因,解法不固定 Q: 除錯模式 (debug mode) 怎麼用? A: 用Visual Novel Reader\Scripts\Visual Novel Reader (Debug).cmd啟動VNR,在發生錯誤後,把視窗的輸出都複製進文字檔 (按標題選全選->複製),貼進檔案再檢查錯誤原因 Q: 啟動跳錯誤 A: 用純英文路徑 (ex: 目錄/資料夾不可有中文),使用者帳號也要純英文。或是VNR檔案損壞,請重裝,重裝還有問題就關掉VNR清設定檔重開 locale設定不能開UTF-8 Q: 清除設定 A: Visual Novel Reader\Scripts\下 (關掉VNR後執行) Remove VNR Profiles.cmd Remove VNR Settings.reg Q: 抓不到本文可能解法 A: 改遊戲設定 (字型,文字速度調最快) 需要特別碼h-code(hook code)才能抓到,VNR支援引擎是內建規則找出hook,兩者底層原理都一樣 (手動和VNR自動幫你加) 遊戲要手動啟動,等文字出現後再讓VNR連接上 更新遊戲 (可能VNR支援的是新版本的遊戲引擎),不同遊戲版本使用的h-code可能不同,不同發行商也可能改變(ex: steam版和非steam版) patch遊戲讓VNR能抓到(rpgmaker mv, 還有一個我忘記名字了,Ren'Py?) ocr 直接掃描畫面成文字,好像需要安裝微軟office的某個元件,沒用過的功能 用管理者權限執行 (如果遊戲用管理者,VNR也需要) 遊戲不要用相容模式執行 (VNR會抓不到,大概是hook address會改變或有保護無法inject)  VNR只支援32bit遊戲,有些遊戲有分32/64bit的執行檔,用32bit的 (通常執行檔名字後面有64/x64的是64bit版本,32bit版本後面會有32/x86) 軟體衝突,有其...

啟動程式在指定位置和大小,run program in specified position and size

適合想把程式視窗位置和大小或其他屬性都固定的人 有些程式不會記錄最後視窗位置和大小,寫了個程式來處理 也可以移除title bar, menu (不是所有程式都有效) 下載 https://github.com/craftwar/Runin/releases/tag/git 使用說明 https://github.com/craftwar/Runin/blob/master/Runin/ReadME.txt 如果你想管理已建立的視窗,可以用Stefan Didak做的 Windows Layout Manager (WiLMa) . 基於目標程式的架構,有些目標很難處理 啟動過程不只一個process,process會做出多個window,很難判斷要對哪個做處理

優化網路設定,TCP Optimizer

SG TCP Optimizer https://www.speedguide.net/downloads.php 執行時要用系統管理者 因為乙太網路mtu是1500,PPPoE會消耗掉8byte,實際能用來傳送資料的只有1492 設太大上是無法傳送的,會錯誤或幫你切割重組封包減少mtu重送,造成效能降低,非固定制需要PPPoE 打帳號密碼的 mtu要改1492 (透過modem硬體撥號的也一樣) 把PPPoE的選項打勾即可 電腦直接PPPoE的,Windows預設mtu是1480,應該可以調高到1492 上面有一條網路速度的,可以根據你的網速調整 其他設定懶得看的應該直接選Optimal就好了 (怕出問題的就只改上面兩個就好) 如果你想自己調,可看Optimal和Default值比較,再看說明了解差異 有些選項會減少latency,也減少throughput (希望遊戲低延遲可以開,否則不建議) 改完後按Apply changes會提示重開機,重開後生效 更新網路驅動後需要重新修改 Linux下修改mtu (看你用哪個介面) Android也是類似 (需要root) 下面是暫時的修改法,永久修改需要去改設定檔,因系統而異 ifconfig wlan0 mtu 1492 ifconfig eth0 mtu 1492 部分應用程式也可以指定mtu VLC

vector instrunctions

vector instrunctions 單位時間內比較耗電,產生較多熱量 Intel CPU workaround是把使用到的core降頻,減少熱量產生 是否會因為過熱降頻反而減少效能,需要實測才知道 AVX512的部分可以參考 https://lemire.me/blog/2018/09/07/avx-512-when-and-how-to-use-these-new-instructions/ 目前似乎不太推薦使用AVX512 AVX2也有類似的情況 舊型CPU降比較多,新的才會降比較少 AMD沒有這個問題,至少我的R5是這樣 因為Zen是用兩個cycle 128bit來做AVX2 (256bit),產生的熱沒那麼多 也許有降頻,沒有降到Intel那樣 還有一個問題,混用SSE2和AVX指令下會降低效能 (比只用SSE2還慢) 原因是CPU的狀態必須重置,會花費更多時間 (詳細的說明請自己去google) 不是說不能用SSE2指令,必須用AVX版本的SSE2指令 (叫做AVX-128?) compile成SSE2的和AVX的link起來,就無法避免這種情況發生 用設定強制支援AVX的用SSE2跑,或是重新compile成同樣版本指令集 https://software.intel.com/en-us/articles/avoiding-avx-sse-transition-penalties 看起來應該是同一個thread的程式內混用才有影響

Initialize handle

https://github.com/obsproject/obs-studio/pull/1519 有些function錯誤是return NULL不是INVALID_HANDLE_VALUE? 或是全部,我好像沒用INVALID_HANDLE_VALUE來initialize過

regular exrpression (regex)

sed 內有個陷阱 沒指定-r 參數下使用的是POSIX Basic Regular Expression (BRE) 會把()當成plain text,不是grouping,需要\( 才有特殊意義 不是一般熟悉的RE,所以用regex tester會發現結果和跑出來不一樣 https://www.regular-expressions.info/posix.html

JAVA 11後的免費 JDK/JRE

Java11後Oracle只有JDK,沒有獨立的JRE (和JDK包在一起) 你要執行Java程式只能下載JDK (應該也會被收錢吧? 沒仔細看) 由於Oracle的JDK要錢,只好轉換到使用 OpenJDK 某幾家製作的OpenJDK有提供installer,可能不需要自己設定,詳細自己測試 我是用AdoptOpenJDK安裝版 Azul JDK (Zulu® tested, certified builds of OpenJDK, M$ azure pipeline上使用的) https://www.azul.com/downloads/zulu/ AdoptOpenJDK 有提供32bit,可選擇JVM (HotSpot, OpenJ9) 沒有提供OpenJ9 32bit的版本,否則會更省記憶體 https://adoptopenjdk.net/releases.html Oracle OpenJDK (JDK11後有提供?) https://jdk.java.net/11/ 從下面的Builds 下載 OpenJDK安裝法 (zip版本) 如果是從Oracle JDK轉換過來,記得刪除JDK移除沒被清掉的部分 C:\ProgramData\Oracle C:\ProgramData\Oracle\Java\javapath (可能是這個,已經砍掉了不確定) 沒清掉就會跳registry error 你可以在cmd下用where java確認一下執行的是正確的路徑 和商業版的差別,對於一般使用者沒有內建更新檢查,你必須用其他方法檢查 設定方法參照我以前寫的 OpenJDK 32bit設定 jar檔執行 非debug下,我目前使用的Java執行參數 (For HotSpot) -Xbatch -XX:+DisableAttachMechanism OpenJFX (JavaFX) https://openjfx.io/ 以前改換回Oracle Java的原因是我找不到JavaFX免費版,軟體無法使用

我安裝的 Firefox extensions

多數在其他瀏覽器應該也有 (因為webextension容易移植) 裝越多會消耗越多資源,不常使用的可以安裝後關掉 (disable) uBlock Origin 有名的擋廣告,優點是記憶體用量比較小 必備,安裝後可減少Firefox使用的資源量,加快網頁載入 Update Scanner 檢查網頁有無更新 Rotate and Zoom Image 旋轉,放大圖片 Video DownloadHelper 下載影片用,youtube等各平台 Open Multiple URLs 想一次開多個網頁? ex: 文字檔紀錄遊戲相關網頁一次全開 Country Flag + 看網站是在哪個國家 Tab Reloader ClearURLs 強化隱私,清除網址追蹤 (ex: google...etc) Search by Image 找圖片來源,可設定用多個網站 修正google search的連結 https://addons.mozilla.org/firefox/addon/google-search-link-fix YouTube High Definition YouTube背景播放 (Android限定) 死掉的extension ,還沒等到新版 Tab Mix 我寫的extension Youtube audio_only youtube只收聲音/只播放聲音 https://craftwarblog.blogspot.com/2017/11/firefoxchrome-extension-youtube.html Android也支援(建議安裝背景播放,85還不給裝,要等firefox開放安裝,不想等就用nightly版) Last Used Tab 回到上一個使用的tab https://craftwarblog.blogspot.com/2020/10/firefox-return-to-the-last-used-tab.html

改成 Message Signaled Interrupts(MSI) 減少latency 提高顯卡效能

圖片
說明/介紹 https://en.wikipedia.org/wiki/Message_Signaled_Interrupts https://forums.guru3d.com/threads/windows-line-based-vs-message-signaled-based-interrupts.378044/ https://www.reddit.com/r/GlobalOffensive/comments/3q0d3u/a_little_help_for_performance_issues_on_cs_go/ MSI工具程式 https://github.com/CHEF-KOCH/MSI-utility 原來源好像死了備份連結 https://mega.nz/#!U9cChaYa!QnqyHutZFvkFHiZ1gDELcvqz_efDdGFYSXI2uTFtRbE 好像是新的Interrupt方式,Nvidia的卡driver預設沒有打開,AMD的聽說有 舊的是 line-based interrupts 打開後會稍微降低延遲,提高效能 使用方式用管理者執行,把要開的裝置MSI打勾就行了,設定完按Apply重開機 如果裝置不支援,有可能無法開機,請先備份系統或是先確認裝置有支援 好像開不了機可以按F8選上次的設定開進來 ? 建議測試確認開啟前後的差異,再決定要不要使用 有些裝備開了反而效能會降低 (因為不支援?) IRQ顯示為負值的就是已經用MSI mode運作中了 我只把顯卡打開,其他都是預設值 重裝過driver,可能需要再打開一次

Windows上播放器的硬體解碼設定 Lavfilter/VLC, D3D11/DXVA, hardware decoder

圖片
參考資料 http://lysandria1985.blogspot.com/2013/01/2-lav-filters.html 硬體解碼的效能一般會比較好,因為有特製化解碼用晶片 品質和軟解沒有差別,除非你有使用後續處理 (post processing) 缺點是根據硬體解碼的能力會有差別,不是所有影片都能解 顯卡太老舊的情況下,用CPU軟解會比較好 h264都只支援8bit,nvidia10系列後才有其他格式(比h264新的格式)非8bit的支援 https://www.tomshardware.com/reviews/video-transcoding-amd-app-nvidia-cuda-intel-quicksync,2839-5.html tomshardware的說法: 只有顏色上有差異,肉眼很難分辨出來 (2011年資料) 現在技術改進應該差異更小 Nvidia的硬解能力 (看下面的NVDEC Support Matrix) 或是用 DXVAChecker 檢查 (各廠牌顯卡通用,只檢查DX硬體加速) Lav filter內可選用 顯卡特有解碼 (不用GPU運算) Nvidia Cuvid IntelⓇ QuickSync AMD? 不熟,沒看到選項 顯卡通用的硬體解碼 (要用GPU運算) DXVA(2) D3D11 DXVA和D3D11的選擇 Win8以後系統建議使用 D3D11 Video Acceration (DXVA2加強版) 舊的系統沒有DirectX 11.1 (Win7或更早) DXVA2 (沒有D3D11 Video Acceration可以用 ) 有兩種模式 native和copy-back https://en.wikipedia.org/wiki/DirectX_Video_Acceleration#DXVA2_implementations:_native_and_copy-back copy-back會在顯卡解碼完後把資料從顯卡VRam copy回CPU的memory 要做後續處理的才需要,否則用native解碼完直接輸出會比較快 設定範例 Lavfilter (mpc-hc有內建) 不支援的情況下會自動變軟解 (勾了不支援的...

C/C++ 的差異

基本上C++是C的強化版,C能用的C++都可以 (有少數例外) C static function是指function只能在檔案的scope存在 C/C++ const convention https://en.wikipedia.org/wiki/Const_(computer_programming) C++變數可以要用再宣告,可以省記憶體 (也許程式沒執行到那邊),但降低可讀性 data和使用的地方接近也可增加效率 C要宣告在最前面 C才有VLA (Variable-length array) Names at file scope that are const and not extern have external linkage in C (as the default for all file-scope declarations), but internal linkage in C++. boolean C Bool, 4 bytes C++ bool, 1 byte

C++ smart pointer

std::unique_ptr比起自己管理在memory和speed上會有可忽略的overhead destructor會check pointer是不是nullptr (某些內建釋放的function原本會檢查就變兩次) 如果在scope內自己管理,可能要寫好幾個delete 會增加code size,有可能讓CPU cache miss減低效能 主要優點是程式碼會簡潔多了,也比較不容易出錯 array type要注意用 [],否則deleter是沒有[]的,應該會有memory leak https://github.com/obsproject/obs-studio/commit/f775070c809b296333dfa1e07643b6fc31938644 改用std::make_shared, std::make_unique 避免使用new是好習慣 用在C或其他的deleter std::unique_ptr<char, decltype(&std::free)> str(std::malloc(20), &std::free); GCC extension cleanup attribute (可以給C用) CLANG好像也有 https://gcc.gnu.org/onlinedocs/gcc/Common-Variable-Attributes.html https://echorand.me/site/notes/articles/c_cleanup/cleanup_attribute_c.html MSVC輸出asm的方法,可以比較不同寫法產生的結果 https://docs.microsoft.com/en-us/cpp/build/reference/fa-fa-listing-file asm的 npad    5  = repeat nop   參考資料 https://herbsutter.com/2013/05/29/gotw-89-solution-smart-pointers/

When MSDN says NULL, is it okay to use nullptr?

https://blogs.msdn.microsoft.com/oldnewthing/20180307-00/?p=98175 結論上來看,如果是需要pointer的地方可以用nullptr 但是NULL有另一個意義,可能是 integral constant zero,這時候nullptr就會出錯

C/C++ malloc 只要失敗會crash就不用鳥,反正程式會自爆?

圖片
https://github.com/obsproject/obs-studio/blob/797b3dc1211c674ccf6cd8b162b144bb615bd233/libobs/util/darray.h#L398 static inline void darray_move_item(const size_t element_size, struct darray *dst, const size_t from, const size_t to) temp = malloc(element_size); temp會被拿去給memcpy用 總之OBS那邊的回應應該是不必處理就是了,教材一般不是這樣教的 想想是有幾分道理,也不是全部情況都適用 只要失敗的情況不會讓程式在不確定下運作就可以考慮忽略 不值得寫回復/重試機制的就讓它爆炸? performance critical部分就省略,否則會影響效能 畢竟失敗的情況下是少數,和影響效能相比哪個比較重要很清楚了

Android/PC 共用/分享 網路/顯示畫面,share network and display

Android使用PC的網路 https://github.com/Genymobile/gnirehtet PC使用Android的網路 Android打開網路分享就可以了,建議用usb連線會比較省電 分享Android畫面 (不限定到PC上) 有些軟體不分享聲音,要另外接線輸出到電腦line in (輸入) Android 7~9因安全性規定,無法錄內部聲音(internal audio) 除了某些廠牌有修改開放,軟體只能透過Mic錄音,或靠破解 (root/magisk之類的) 似乎Android 10有重新開放? 待查證 scrcpy, 沒有傳聲音 https://github.com/Genymobile/scrcpy This application provides display and control of Android devices connected on USB (or over TCP/IP). It does not require any root access. It works on GNU/Linux, Windows and MacOS. asus 5z測試過用wifi連線,畫面經常性小lag ApowerMirror Mobizen LetsView 似乎把手機影音打到另一個螢幕/電腦的功能還沒有統一標準? Miracast,似乎要有無線網卡才可以? laptop似乎有內建 由於是wifi網卡的功能,iphone應該也可以用 https://support.microsoft.com/zh-tw/help/15053/windows-8-project-wireless-screen-miracast Chromcast 要有支援chromecast的裝置才可以 MHL https://en.wikipedia.org/wiki/Mobile_High-Definition_Link 錄音Internal audio https://appuals.com/how-to-record-internal-audio-on-android/ 實況 https://forum.xda-developers.com/android/genera...

CI/CD

https://azure.microsoft.com/en-us/blog/announcing-azure-pipelines-with-unlimited-ci-cd-minutes-for-open-source/ http://appveyor.com/ job build time都是30min M$的好處是可以同時執行多個job 更新頻率大約都是一個月?

C99 VLA (variable-length array)

https://github.com/obsproject/obs-studio/pull/1465 OBS pr看到的,效能會比較差 (可簡化程式) C99必要,C11又改成非必要的功能 VLA長這樣 size_t dev_len = strlen(name) - 8; char device[dev_len];

Windows 更新 不支援的硬體 解法,Unsupported Hardware

某些Windows 更新擋,會加入硬體檢查 應該是 KB4012218 和 KB4012219 (對應Win7和Win8.1) 太新的CPU會不讓你更新,強迫你升級Win10 (太舊的CPU據說也有被影響) 建議還是升級的新的系統,才能利用到CPU完整的功能,否則效能會比較差 Win7微軟已不繼續支援,建議更新到Win10,才不會有安全性上或其他問題 安裝這個破解就能繼續更新了 https://github.com/zeffy/wufuc 原理 這個檢查是用 wuaueng.dll 提供的function,破解會修改成永遠回報ok,就能更新 由於是開放原始碼的,安全上應該無虞

更新驅動程式 bios, driver

圖片
Windows不一定會幫你更新,建議自己更新 Windows版本更新(ex: 1709->1803)好像是新安裝系統,會把驅動都換回內建的,要重裝 驅動程式/bios更新通常會解決問題 (提高效能/安全性,修正錯誤,提高穩定性) 我會建議先觀望幾天,不要剛釋出就更新來使用,等別人試過沒有大問題 更新完建議重開機比較保險,才能確保系統正常運作 驅動程式比較需要更新的有顯示卡,主機板晶片組(chip set) 看晶片是哪一牌的就找哪一家 (AMD, Nvidia, Intel ...etc) bios需要更新的有顯示卡,主機板 找硬體製造商 (ASUS, Giga-byte, MSI ...etc) 更新主機板bios可能會連帶更新到CPU microcode (修正CPU運作問題,效能或bug) 據說realtek的音效卡驅動有可能造成系統卡住,建議更新吧 不會找的人可以用程式來幫忙,google "driver updater" http://lmgtfy.com/?q=driver+updater 我自己沒在用,無法推薦哪套好用 Chipset影響主機板上chip的穩定性和效能,通常也建議更新,效能影響沒有顯卡driver大 AMD的顯卡和chipset驅動都能在這下載 https://www.amd.com/en/support 裝完B350 chipset後,電源多一個設置 (AMD Ryzen特化的電力/效能平衡設定) Nvidia的顯卡驅動 https://www.nvidia.com.tw/Download/index.aspx 一般是選Game Ready Driver,如果你要拿來做影像/3D創作就可以用Studio Driver,兩個優化方向不一樣 在某一版win10後,建議使用DCH driver (Nvidia說法是效能一樣) Nvidia的安全性相關公告 (看得懂的人就不會都不更新driver) https://www.nvidia.com/security/ 論壇,會有hotfix driver (先修正一些重大錯誤,不像正常driver測試那麼完善) https://www.nvidia.com/en-us/geforce...

cmake

https://cmake.org/cmake/help/v3.12/variable/CMAKE_BUILD_TYPE.html CMAKE_C_FLAGS_<CONFIG>, specified as uppercase: CMAKE_C_FLAGS_[DEBUG|RELEASE|RELWITHDEBINFO|MINSIZEREL|...] 設定linker參數 https://cmake.org/cmake/help/latest/variable/CMAKE_EXE_LINKER_FLAGS.html   MSVC似乎不吃 LDFLAGS,要設定下面的 改_INIT似乎比較安全 OBS是都設定才沒顯示訊息 command line要用 -D CMAKE_EXE_LINKER_FLAGS_INIT=/LTCG CMAKE_EXE_LINKER_FLAGS CMAKE_MODULE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS CMAKE_STATIC_LINKER_FLAGS  gui內使用vcpkg要在這邊指定 C:/vcpkg/scripts/buildsystems/vcpkg.cmake https://stackoverflow.com/questions/29982505/setting-a-cross-compiler-file-using-the-cmake-gui -DCMAKE_SYSTEM_VERSION=10.0 指定target system version

顯卡降頻, graphic card down-clock

沒在玩3D fps遊戲,就把顯卡降頻省電 舊卡AMD Radeon HD 6850可以直接改bios強制燒進去,不需要開軟體修改時脈 壞掉後,去網拍買了二手GeForce GTX 750 嘗試燒入修改的bios都被擋掉 (大概是驅動擋掉,可能要移除才行,懶) 就用了 MSI afterburner 軟體修改 (非MSI卡好像也能用) https://www.msi.com/page/afterburner 其他家的卡好像也會出自己的修改軟體 新的CPU都有省電自動調節功能,一般不需要自己修改 新的顯卡其實也有,只是顯卡的調節功能沒那麼強大,要自己修改才能比較省電

Win10 調整, 關掉,移除系統功能/app, tweak

cortana https://www.howtogeek.com/265027/how-to-disable-cortana-in-windows-10/ 關掉preloading edge (win10 1809) https://www.ghacks.net/2018/08/13/block-windows-10-from-preloading-microsoft-edge-on-start/ 關掉自動修改資料夾類型 https://winaero.com/blog/disable-folder-type-discovery-windows-10/ 移除/關掉app 開adm權限的powershell (先在執行打powershell 或pwsh,ctrl+alt+左鍵叫出adm的) your phone Get-AppxPackage Microsoft.YourPhone -AllUsers | Remove-AppxPackage Xbox app https://win10faq.com/how-to-remove-the-xbox-app-from-windows-10/ Get-AppxPackage *xbox* -AllUsers | Remove-AppxPackage OneDrive Get-AppxPackage microsoft.microsoftskydrive -AllUsers | Remove-AppxPackage Edge預先載入 https://www.ghacks.net/2018/08/13/block-windows-10-from-preloading-microsoft-edge-on-start/ 安裝檔 https://github.com/craftwar/Settings/blob/master/Windows/edge-disable-preload.reg system service類別 phone service    manual->stopped Touch Keyboard and handwriting    manual->stopped 付款與 NFC...

Qt, QPointer vs QScopedPointer

QScopedPointer 當scope失效,自動delete物件 http://doc.qt.io/qt-5/qscopedpointer.html QPointer 只是個weak pointer,讓你檢查別人擁有的物件是否還有效 http://doc.qt.io/qt-5/qpointer.html OBS誤用了 QPointer,其實應該用QScopedPointer,所以造成一些memory leak

個人免費防毒的選擇, personal free antivirus

有人還在付錢買防毒嗎 ,一般使用者用免費防毒就足夠了 不知道怎麼選的話,我推薦 Avast, AVG, Avira三套選一個,近幾年這三套表現都不錯  用google去搜尋 free antivirus comparison 2018 (改成年分),可以看到評測 或是到AV test去看 (其中一個評測網站) https://www.av-test.org/en/ 2018年免費防毒 avast是排在avira小紅傘前面,因為包了比較多功能 (全部我不想用的) 正常使用習慣,有防毒就好了,哪一套都差不多 比較不用去設定處理的,對一般人會比較方便   avast誤判率比較高,出問題紀錄比較多 (如果你不會處理,建議換一套) 我用avira的原因是介面上我不喜歡avast的介面,習慣後就一直用了 真的都不裝,用windows內建的也沒有多大問題 (win8以後才有) 千萬不要不裝防毒,真有萬一的時候很麻煩,防毒不會拖慢電腦多少 如果看到可疑的檔案,可以丟線上掃描,幫你用各家防毒掃描,可以更精確判斷 https://www.virustotal.com/

實況工具區, streaming resources

暫時沒需要,多數沒用過,先整理,有問題不要問我 SpeechChat,用語音讀出聊天室文字 https://obsproject.com/forum/resources/speechchat-for-twitch-youtube-mixer-etc.372/ Transparent Twitch Chat Overlay 把Twitch聊天室文字顯示在自己螢幕上 (我猜應該要用display capture才能抓到) 遊戲開全螢幕又想看聊天室時可以用 http://baffler.tv/Home/TwitchChatOverlay sandboxie 原本是用作沙盒(sandbox),效能會稍微損失 但是程式會被開成另一個 (在工具列分開) 如果需要多開程式也許可以使用 相關文 https://craftwarblog.blogspot.com/2017/10/twitch-extension.html https://craftwarblog.blogspot.com/2017/09/chatty-streamlinkvlc-twitch.html

Windows 安全使用,執行不確定程式時

在 sandboxie 內執行 http://sandboxie.com/ 另創一個帳號 (非admin) shift+right click 用另一個帳號執行 只要系統沒有exploit可以拿到 admin,就算有問題都會被隔離開 不會影響到系統 第一個方法應該比較安全 第二個方法在權限沒設好時,可能會影響到非系統的其他檔案

C++ compiler standard support

各種compiler https://en.cppreference.com/w/cpp/compiler_support Visual C++ Language Conformance https://docs.microsoft.com/en-us/cpp/visual-cpp-language-conformance MSVC的 C++ 支援狀況 比較重要的是 C++17 std:byte 和 Windows SDK中byte 打架的解法 把_HAS_STD_BYTE定義成0 command line的話加上 -D_HAS_STD_BYTE=0 不要std::boolean的話 -D_HAS_STD_BOOLEAN =0 https://docs.microsoft.com/en-us/cpp/build/reference/utf-8-set-source-and-executable-character-sets-to-utf-8 /source-charset:utf-8 VS2017, VS2019效能比較 https://devblogs.microsoft.com/cppblog/game-performance-and-compilation-time-improvements-in-visual-studio-2019/

有效回報錯誤的方法, How to Report Bugs Effectively

How to Report Bugs Effectively (有中文翻譯版本) https://www.chiark.greenend.org.uk/~sgtatham/bugs.html 螢幕抓圖的方法 (有時候需要畫面才能知道狀況) https://www.take-a-screenshot.org/ 回報問題時使用公開的方法,讓其他人遇到同問題能解決 不要用寄信或PM (我的習慣是會無視) 只說不能用,真的一點用也沒用 文件看不懂,只說看不懂也沒用 想獲得幫助就要提供更多資訊 文件就該說哪裡怎樣看不懂 寫文件的時候因為知識不同,很容易省略或用太簡單的寫法 有時候是為了節省篇幅,部分知識不會提供,需要自己去查詢 回報給我的問題,請提供log檔案或螢幕screenshot,會比較容易發現原因 放到軟體專案所使用的平台,或是我的Discord blogger不適合做為交談/處理bug的平台

CMD script 是執行一行後讀下一行的

不是整個讀完parse的,前陣子在改obs的updater發現的 因為M$會lock執行中的檔案,只有自己可以對自己做更動 (rename, remove) 如果把script改名或砍掉,CMD會自動結束 因為讀不到下一行了 造成我要寫self updater的困難,就把更新updater的部分移到script最後面 這樣下次執行就會用到更新後的updater,接近原本想要的效果

優化實況(一) OBS設定 streaming settings

圖片
本文適用我做的開發版本 (可能含官方正式版還未加入的新功能) 非新手教學,解釋OBS機制/設定,讓使用者選擇適合的設定 (減少資源消耗...等) 目標 記錄 所有能優化的部分, 新手閱讀可能會感到挫折, 看懂多少用多少吧 偏筆記的寫法 資料來源: OBS開發者間的交談內容, OBS程式碼及其他相關來源 要用哪一個OBS和系統? 實況配備需求 調整Win10 畫面相關的優化 (scene, source..etc) 編碼器encoder 其他 要用哪一個OBS和系統? 不維護的OBS Classic不要用, 聽說有安全性問題,攻擊者可在你電腦隨意執行程式 換OBS Studio比較好 (畫質,效能, 功能上都贏),以下都直接稱作OBS,不打全名 新版本有匯入功能,可以從舊的Classic和其他實況軟體轉換過來 Streamlabs OBS(SLOBS),OBS的衍生版之一,功能較多設定較容易,消耗較多資源 有人問我閒置時(未實況)資源消耗過多,我就推薦去試用OBS,應該是個案,沒用不熟 64bit目錄內有64bit版本,能跑就用,設定和32bit通用 (效能較好,官方版標題會寫64bit,我的版本只提供64bit就不寫了) 官方OBS v22後有把32/64bit版本分離,缺空間可以移除重裝 (節省接近一半) Win7無法發揮OBS全部功能,效能較差 (微軟2020/1/14停止支援Win7,建議升級) OBS在Windows上效能和功能最好 (開發者人數Windows > Linux> Mac) 我改的OBS (效能/功能強化,可直接轉換或獨立安裝) https://craftwarblog.blogspot.com/2017/09/obs-studioby-craftwar.html 實況配備需求 ...

優化實況(二) OBS需要的流量 streaming bandwidth requirement

最後更新 2020/3/05 以OBS Studio (以下只稱OBS)為標準編寫,其他實況軟體(Xsplit ...etc)設定可能不同 平台可能會有最大上傳限制,超過就會被斷線 Youtube 似乎全部都會transcode,被再壓縮過最高畫質會降低(比實況主送出的低),延遲應該會增加,實際影響有多大,我沒興趣實測不清楚 實況主的上傳需求沒有改變,觀眾的流量會減少(youtube轉過的影片應該會變小) Twitch上的latency設定 (不影響到OBS),新版改成由觀眾自己選擇 Normal latency: 預設 Low latency: 減低延遲,強化即時互動,副作用觀眾的網路用量增加,畫質變差 (Twitch的說法,詳細機制我沒研究) 沒看到詳細的說明,實況主的上傳需求應該沒有改變 更低延遲可用支援FTL協定的平台 (因為FTL是M$的技術,除了自家 Mixer 應該都不給用) 上傳量會比傳統使用rtmp的多 本質上實況主和觀眾的畫面有延遲是無可避免的,通常實況主上傳設越大延遲越高 Q: 延遲是怎麼來的? A: 實況主送出: 壓縮影片和網路傳送的延遲 觀眾接收: 網路傳送,影片需要累積到足量才能開始播放 (需要足夠資訊才能解碼,實況主上傳越高延遲越高) 兩個加起來才是實際的延遲 Twitch官方上傳建議 (品質接近本機需要的最大上傳量,或邊際效應太低不值得更高) https://stream.twitch.tv/encoding/ 實際上依配備和想給觀眾的體驗決定,不照官方建議還是可以實況(某些平台可能會限制) 懶人設定 720p FPS 30 cbr 上傳3000,多數遊戲都有不錯的表現,動態遊戲需要 60 要測試Twitch上傳可以在streamkey後加上 ?bandwidthtest=true 可以測試上傳穩定性,系統負載,如果按了實況卻看不到開台可能是忘了拿掉測試模式  實際需要的上傳量根據使用的encoder改變 (好的encoder可用較低上傳達到同畫質) encoder比較可看 優化實況(一) OBS上傳量的單位是Kbps,設1500的情況下 (簡單計算不考慮protocol overhead) 1500Kbps = 1.5 Mbps,2018/01/07 h...

7-zip "Use large memory pages"

large memory page是什麼? 參考 https://docs.microsoft.com/en-us/windows/desktop/Memory/large-page-support 這個功能應該是向系統要一塊連續不會被swap的記憶體,所以在讀寫上效能會比較好 MSDN建議用在server application內 這個選項需要管理者權限才能開 7-zip打開這個選項,會在壓縮和解壓縮上的效能提升 參考 https://sourceforge.net/p/sevenzip/discussion/45797/thread/e730c709/ Windows 10 up to revision 1709 (16299) 都不該使用,1803才有修正 因為win10系統有bug,會導致系統出問題 7-zip 18.05做了預防措施,會自動幫你檢查系統版本擋掉

Visual Studio MSVC compiler/linker options (optimization and etc)

紀錄冷門參數 有些功能看起來compiler/linker都有,因為compile和link可能不是同時做 同樣的功能兩邊都有 https://blogs.msdn.microsoft.com/vcblog/2013/09/11/introducing-gw-compiler-switch/   Compiler /Gw 消除重複或沒用到的global data https://docs.microsoft.com/en-us/cpp/build/reference/gw-optimize-global-data /Gy 消除重複或沒用到的function https://docs.microsoft.com/en-us/cpp/build/reference/gy-enable-function-level-linking /GL 可能會導致compile失敗 ex: ffmpeg 對整個程式做最佳化,要順便指定link /LTCG,才不會偵測到後再重跑增加效率 開了,/LTCG可以加開PGO(profile guided optimization),好像是自動產生數據去測試,未必是好的結果,建議測試過才決定要不要開 /GS- (Buffer Security Check) 關掉可以提高效能 ex: 很多執行時間短的function calls,檢查就會相對占用較多時間 https://docs.microsoft.com/en-us/cpp/build/reference/gs-buffer-security-check /GUARD:NO (Enable Guard Checks) 目前預設是關的,可以不用下 https://docs.microsoft.com/en-us/cpp/build/reference/guard-enable-guard-checks /favor (Optimize for Architecture Specifics) https://docs.microsoft.com/en-us/cpp/build/reference/favor-optimize-for-architecture-specifics 除了提高效能外,目前使用發現binary有變小 /O...

configure build, host, target

http://jingfenghanmax.blogspot.com/2010/09/configure-with-host-target-and-build.html https://gcc.gnu.org/onlinedocs/gccint/Configure-Terms.html

Game capture: 遊戲擷取 限制擷取速率, Limit capture framerate

圖片
懶人包 遊戲要限制FPS,否則會無意義消耗較多資源 ,遊戲和實況品質都可能被影響 Limit capture framerate哪時候該開? 遊戲FPS是OBS內設定FPS的兩倍,建議打開 想讓OBS使用較少資源 詳細的解說和做法在下面,如果你已經知道要怎麼做或沒興趣可以不用看 有些太技術細節沒看懂也沒關係,不用完全懂就能選擇適合的設定 遊戲FPS太高 對螢幕和硬體的影響以前寫過了 https://craftwarblog.blogspot.com/2019/01/fpsrefresh-rate-vsync-g-sync-freesync.html 應該比較省資源的game capture會比其他方式消耗資源 遊戲FPS是120,obs每秒就會更新畫面120 frames obs輸出FPS是60時(實況或錄影),會有 120 - 60  = 60 的frames被obs丟掉沒有使用 其他擷取方式應該是依照obs FPS抓畫面,沒有這個問題 game source(hook)的機制是在遊戲更新畫面時,遊戲複製一份給OBS的game source game source預設會用兩倍的速度去讀取拿到的frame (理由上面圖片Jim講了) 沒限制遊戲FPS,上面兩個動作的次數都會增加,提高系統負擔 OBS合成畫面時是根據Settings->Video的FPS (總共有三個不同的FPS) OBS有打算修改game source相關FPS機制,不知道哪時候會開工就是了 因為這個問題不會造成非常嚴重的結果,有迴避方法在 沒限制遊戲FPS,算是使用者自己的問題 === 目前 21.1.2 game capture 擷取畫面的頻率是依照遊戲的FPS 不是依照obs內的FPS設定 沒開選項是遊戲兩倍 好像是討論到144Hz display, OBS FPS60的情況 (Discord討論出現的內容) 我下面寫的是否該開啟選項的原則沒有改變 資料來源 https://obsproject.com/mantis/view.php?id=1241 Limit capture framerate選項的功能,並不是類似V-sync把擷取頻率限制為obs內的FPS 是把更新的頻率減半 ...

Android 權限/隱私調整 permission/privacy management

Android 6.0 Marshmallow系統內建可調整開放的權限 (在應用程式資訊內) 只開放權限類別,很多細項無法調整 想要調整只能root後安裝第三方軟體 xposed module (need install xposed framework first) privacy   XPrivacy XPrivacyLua (6.0以後可用,successor of XPrivacy) 和隱私無關的功能沒有 ex: 震動 作者說基本上比XPrivacy好,兩者不能共存會衝突 XPrivacy某些隱私權限擋掉後會讓app crash,Lua有修正 permission AppOpsXposed 最新版在我的手機無法運作,我是用舊一點的版本 想要關掉充電時的震動 關掉系統UI的viberation就行了 (可能會連其他情況的震動也關掉) 建議關掉瀏覽器的震動,有些網站會濫用 + 訊息騙你系統有安全問題

OBS 無擷取卡實況遊戲 PS4, PS Vita

Q: 為何不用主機內建的實況功能? A: 畫質較好,可以對實況畫面更多調整 可透過網路傳送遊戲畫面到PC,不一定需要有擷取卡 畫面送到PC後就能直接給OBS 使用了 缺點是會增加主機負擔及延遲 (額外的網路使用) 想要最佳效果還是得透過擷取卡 (正常遊戲方式無差別,訊號改接到擷取卡) PS4  官方軟體 Remote Play https://remoteplay.dl.playstation.net/remoteplay/ PSVita VITA2PC (要破解) http://vitadb.rinnegatamante.it/#/info/305 或在PC上用模擬器,讓OBS擷取

Notepad++ Win10 1803 文字顯示錯誤

https://notepad-plus-plus.org/community/topic/15758/some-characters-are-not-displayed-unicode 原本字形Courier New,要改成別的字型就可以 看起來應該是Win10字型機制的部分有修改到,細節還不清楚 可是notpad就顯示正常 ? M$又偷改東西沒通知自己偷用了嗎?

Windows 10 更新停止方法,stop/disable Windows update

圖片
更新1803時查到的方法,新版本應該還適用 1803問題滿多的,建議暫時不要裝,先觀望 我不想裝1803 就是延後多少天安裝 調這樣後就按更新就不會找到了 這文字好像會讓人誤解,我只是想要有安裝的自主權 不一定是想延後幾天才裝,如果沒看到災情,我會馬上裝 可是這設定,天數沒到按更新不會顯示 如果已經在更新中,也有辦法強制停掉 ↑在執行打services.msc,去service把windows update關掉後,可以強制停止進行中的更新 停掉更新把上面天數調整完,記得再打開,否則收不到安全性更新 主要版本的更新建議觀察一陣子沒災情就可以更新了,都不更新會有問題的

AppVeyor 要開始砍Arifact了

圖片
6/11 設定deploy到github後已解決問題,除了忘記更新的應該都沒問題 6/xx 目前AppVeyor是決定6個月了,OBS Studio再觀望 到時候有問題就再找個可直連的空間 我也算是其中一個濫用者吧,有空該想想檔案該怎麼處理了 OBS Studio應該不會被影響,以目前的更新頻率3個月沒動應該不可能 擁有的專案以後就改上傳到github,不能偷懶了 (目前也只有一個 suspend ) 其他非我個人的就不理了 (Chatty及 OBS Classical)

OBS 實況顯示VNR翻譯的遊戲文字, display VNR (visual novel reader) translation

圖片
需要使用修改過的VNR (主要由 kyob1010 完成) 及OBS (修改過的obs-text.dll) 不想安裝新的可以只換掉關鍵檔案 (版本太舊會出問題,建議用已整合完的版本) 詳細安裝方法請看VNR, OBS各別文件 限制: 不能有多個不同名的obs-text同時使用vnr mode (因為我懶得處理,應該很少用到) 2019/6/26 提高效能,需要更新後才能用或都不更新 (VNR和OBS必須是同一機制) 2019/1/9 提高效能,需要更新後才能用 (或是都不更新留在舊版) VNR (visual novel reader) 不放在github的原因是檔案太大 limit會超過,就選了gitlab https://gitlab.com/craftwar/VNR_OBS kyob1010寫的說明文件 https://gitlab.com/craftwar/VNR_OBS/blob/master/README%20for%20VNR_OBS.txt 有問題要問 kyob1010,py我不熟,我只修改windows api的部分 回報問題前先閱讀 https://craftwarblog.blogspot.com/2018/07/how-to-report-bugs-effectively.html 除錯時,依文件說明使用debug mode檢查視窗全部輸出 (不是輸出停止的最尾端畫面而已) 建議複製到文字檔內再看,非常長,通常會寫錯誤原因 VNR常見問題 https://craftwarblog.blogspot.com/2018/12/vnr-visual-novel-reader-faq.html 一般使用者下載這個就好 (沒有多餘的修改,只加上OBS輸出功能) 如果VNR版本太舊,手動patch可能會錯誤,可下載包好的 Jichi版本 + OBS 輸出patch https://mega.nz/#!l0tHzI6Z!ZMjs_cE46atvjoQIGyV4zCXnDI_FSdZ8NjrHV-3Af7Y (我包的) 原先使用的VNR內的Cache目錄複製進去,避免缺少字典檔或其他檔案,導致問題 或用mklink建立連結,不用複製Cache目錄 (空間只需要一份) https://docs....

C++ Lambda

在改obs-text的時候,想到C++11有lambda,想用到Windows callback 語法上應該這樣改 ::EnumWindows([](HWND hwnd, LPARAM lParam) -> BOOL {     TextSource* _TextSource = reinterpret_cast<TextSource *>(lParam);     return !_TextSource->get_song_name(hwnd); } , reinterpret_cast<LPARAM>(this)); 實際上會錯誤,去查了 http://en.cppreference.com/w/cpp/language/lambda 才知道lambda實際上是透過一個隱藏的class來實作的,所以會有一些限制 call convention會因為內容改變,用到class method就不行啦 不能轉成windows sdk要的 stdcall

Windows SDK 筆記

Global\ Local\ 差別在session,service或Remote Desktop在session 0,要用global才能溝通 其他一般application可以用local SetClipboardData 似乎要檢查return看有沒有成功,沒成功要globalfree (from NotePad++ commit) 否則會有memleak 基本上現在除了OS功能,很少人用這個寫UI了,通常用Qt

don't name git branch as 'tag'

$ git push fatal: The current branch tag has no upstream branch. To push the current branch and set the remote as upstream, use     git push --set-upstream origin tag $ git push --set-upstream origin tag fatal: tag shorthand without <tag> use this command instead git push --set-upstream origin tag:tag

C++ index loop vs range-based for

以OBS Studio的code為範例 VS2017 15.7.1 release with pdb build 這邊我把兩種方式都寫進去,是為了方便比較asm,實際上只會選一種來用 (2)會轉成iterator的方式 http://en.cppreference.com/w/cpp/language/range-for (2)產生的asm會比(1)快 OBS是用(1),我在修其他bug時看到,就順手改成(2)丟給官方了 稍微想一下就知道index會比較慢了,每個loop都要算 volumes + i*n (array element大小) (2) 每個loop只要 vol += n 這邊我沒想到Jim會連這個也要求要照coding style,就直接寫auto& i了 想說是trivial的東西,因為每個範例都這樣寫 被要求改成 auto &vol void OBSBasic::ClearVolumeControls() {     //(1)     VolControl *control;     for (size_t i = 0; i < volumes.size(); i++) {         control = volumes[i];         delete control;     }     //(2)     for (auto &vol : volumes)         delete vol;     volumes.clear(); } asm code https://hastebin.com/jasikeqada.pl void OBSBasic::ClearVolumeControls() { 00007FF61D43C0B0 mov q...

OBS ndi 把影像傳到另一台電腦做壓縮, transfer video to another computer for encoding

NewTek's NDI® 是透用IP來傳送影音的技術 安裝這個plugin後,OBS就能使用NDI接收和傳送,正常是把ip camera拿來用 這個plugin會用到Qt,要自己build的必需和OBS所用Qt同版本,OBS更新可能就要更新 https://github.com/Palakis/obs-ndi 遊戲機把影像和丟出去,不做h264壓縮 (x264或硬體,交給另一台電腦來處理),降低系統使用資源 NDI在傳送時還是會壓縮 (比h264運算量少,資料比較大,會吃更多網路頻寬) 完全不影響遊戲機要用擷取卡/盒,讓另一台電腦擷取畫面實況,NDI只是省錢的替代方案 兩台電腦整體消耗資源會增加,如果電腦直接壓縮沒問題就不推薦 目前多數是高品質實況會影響遊戲體驗,用兩台高等級電腦來實況? 新版改善硬體壓縮後,對遊戲影響變小,也許不太需要了? (v23後新增功能) https://obsproject.com/mantis/view.php?id=610

講個我爸hinet 網路升速的笑話

因為hinet一直打電話來,我爸覺得太煩了,就答應升速了 20->35M 結果測速的數值 17,xxM,這樣根本差太多了吧,35M怎麼樣也該跑到2x 18M不到,根本用原本的20M就差不多跑這個數字了 他平常的使用習慣,只用手機,也不太看影片 就算35M能跑到,也沒有升級的價值 hinet的人來把p874換成p880就能跑到35M了 我爸最後有聽我的話,把網路退掉不升速, 換到一台p880

Qt style note

暫存區,還會修改 QWidget. setStyle() 不會拿ownership,要用setParent()才會一起清掉 我修正OBS一個memory leak ? QString styleName = slider->style()->objectName(); QStyle *style; style = QStyleFactory::create(styleName); if (!style) {     style = new SliderAbsoluteSetStyle(); } else {     style = new SliderAbsoluteSetStyle(style); } style->setParent(slider); slider->setStyle(style);

Use findstr on Windows to find text in files and command outputs

https://www.ghacks.net/2018/05/04/use-findstr-on-windows-to-find-text-in-files-and-elsewhere/ 1709似乎沒有這個指令,等更新後?

Windows win hotkey, 熱鍵

 win + https://www.techrepublic.com/blog/windows-and-office/the-complete-list-of-windows-logo-keyboard-shortcuts/ Windows+Ctrl+Shift+B 重啟顯卡驅動,可暫時解決win10 1803,chrome卡住的問題 reset graphic card driver 解決一些遊戲lag,或是記憶體無法釋放問題 Ctrl+Windows logo key +B     Switch to the program that displayed a message in the notification area.

Android VLC 中文字幕無法顯示/亂碼,display Chinese subtitle incorrectly

測試環境 Android 6.01, VLC player 3.05 字幕會變成方塊/亂碼,無法正常顯示,原因為VLC找不到字型或編碼有錯 這可能非最佳解法,對Android沒那麼熟 首先要先確認字幕檔編碼和VLC設定一樣 (自動偵測錯誤時,改utf-8通常能解決) 如果編碼沒錯,下一步是修正缺少的字型 下載google提供的NotoSansCJK-Regular.ttc字型 https://github.com/googlei18n/noto-cjk/blob/master/NotoSansCJK-Regular.ttc 或 https://www.google.com/get/noto/help/cjk/ 把 NotoSansCJK-Regular.ttc 複製到 /system/fonts/就可以了 (需要root或adb) 如果要讓其他app使用這個字型,應該還要修改/system/etc/fonts.xml 詳細改法,有興趣的人可以google看看,我沒有處理 這個修正法背後的原理,VLC寫死使用的字型 實際上,不是每隻手機都有預裝這字型 (google的原生系統有,其他家沒放?) http://git.videolan.org/gitweb.cgi/vlc.git/?p=vlc.git;a=blobdiff;f=modules/codec/libass.c;h=8004feb138ecad850106f015cb12fe38c0611e94;hp=8a73497422aa17c8d3f032e795a37cc67b2cd131;hb=8a15910d9f8e7d860f29d0e9803c756970d8cf74;hpb=4b898d321d77436204b573d066c61261d037f275 正確的方法,應該Android VLC要提供設定字幕字型 (desktop版就有這設定) MX Player字幕顯示就沒有問題,個人感覺效能上MX Player也比VLC好 VLC強在整體功能比較多 (也比較肥大)

vnr 雜記

ith vnrhook.dll vnrhost.dll embedded vnragent.dll 要compile dll,要有Qt4的example source (Jichi直接使用,還設定path成C:\....) 應該要copy進來吧,dll都compile不能 某些遊戲用embedded mode會讓文字顯示出問題,不改應該是用ith mode比較好? vnr還在用qt4, pyhton2 熱鍵bug應該跟這個有關 更新PySide有機會解決,pip可以安裝,試過發生DLL找不到的問題 pyrich.pyd 要自己重build? Visual Novel Reader\Library\Frameworks\Sakura\py\apps\reader\managers\hkman.py pyhk是安裝在 Visual Novel Reader\Library\Frameworks\Python\Lib\site-packages Dependencies pyhook, pywin32 結論熱鍵的問題可能和pyhk有關,只要按Ctrl就可以馬上觸發,讓熱鍵失效 換一套後Ctrl不會玩壞,但還是會觸發,應該VNR還有其他bug在? /Library/Frameworks/Sakura/py/apps/reader/managers/trman.py 用RE過濾本文似乎無效? 也許是用其他方式傳送的 翻譯引擎 baidu Visual Novel Reader\Library\Frameworks\Sakura\py\libs\baidu

VC++ install, vcpkg

圖片
English installer "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vs_installer.exe" --locale=english https://github.com/Microsoft/vcpkg 更新 vcpkg remove --outdated vcpkg install <list of libraries you want available by default> See .\vcpkg help triplet for all supported targets. 只build release,可在triplet內加入 set(VCPKG_BUILD_TYPE release) 加compiler flag build lib時 VCPKG_C_FLAGS VCPKG_CXX_FLAGS https://github.com/Microsoft/vcpkg/issues/3106 安裝可加參數 cmake -E env CFLAGS="-MP -Oi -arch:AVX2"  CXXFLAGS="-MP -Oi -arch:AVX2" cmake 使用lib方法 https://github.com/Microsoft/vcpkg/blob/master/docs/users/integration.md cmake .. -DCMAKE_TOOLCHAIN_FILE=.../vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x86-windows-static https://github.com/kvirc/KVIrc/issues/2400#issuecomment-421496054 https://blogs.msdn.microsoft.com/vcblog/2016/11/01/vcpkg-updates-static-linking-is-now-available/ triplet的customization https://github.com/Microsoft/vcpk...

Windows 系統/程式相關

圖片
 MAX_PATH 260字的限制可以解除 https://docs.python.org/3.6/using/windows.html#max-path

Android 的影片硬體解碼支援, hardware decoder

來源 http://www.droidviews.com/enjoy-hevc-h-265-video-playback-on-android/ https://play.google.com/store/apps/details?id=net.tyniw.mediacodecinfo.application 使用這套app可以看到系統內的encoder/decoder OMX. 後面就是提供者的id,要看你手機的晶片是哪家的 On the Codec List Tab of Media Codec Info App, check for the following:     OMX.qualcomm.hevc.decoder on Qualcomm chipsets     OMX.MEDIATEK.HEVC.DECODER on Mediatek chip-sets     OMX.Exynos.hevc.dec on Exynos chip-sets

ghacks 文章記錄

https://www.ghacks.net/2018/02/08/find-out-why-you-cant-access-a-website-or-service-on-the-internet/

osu! 設定 畫面不順 FPS低,實況無畫面, compatibility mode, obs crash

圖片
最根本的原因是螢幕刷新速度不夠,買個144的螢幕吧 如果螢幕沒問題,該注意設定 測試新設定,把FPS上限調成螢幕兩倍(120)中,不用VSync 改120 FPS好像有比vsync好打(畫面更新較快,比較多時間可以反應),雖然tearing會出現 osu!似乎有個bug? 也許是我顯卡driver的問題? 開VSync下,沒開compatibility mode (會用opengl跑) FPS會只跑30/60,怪不得我玩的時候都覺得畫面不順 總之打開FPS顯示確認一下右下角寫多少吧 解法是打開 compatibility mode 或是FPS限制不要用VSync 如果FPS夠,還是不順(感覺畫面不連續) 可以把 Reduce dropped frames 打開看看 上面各選項組合測試出最適合自己的設定吧 我視窗下遊戲的設定是 1600X900,fullscreen mode沒開 V-sync +  Reduce dropped frames  (測試結果比 60FPS + Reduce dropped frames好) 改設定檔 osu!.[username].cfg 設定FPS,就會多一個選項60FPS可以選 username是你系統使用者帳號的名字 CustomFrameLimit = 60 如果你的螢幕更好,可以改到更高 (最大調到螢幕限制),60打osu是稍微不夠用的 為啥不提供在遊戲中輸入FPS的介面呢? compatibility mode沒開是用opengl跑 (opengl和obs相容性可能有問題) 打開會切換成DirectX OBS會當掉的也可以考慮嘗試切換DirectX看看 換成 compatibility mode 後,FPS數值可跑到60/60 實際體驗也有比較順,有問題的人可以調整一下 有人些會搞不清楚osu!到底是用哪種模式運行 建議使用game capture時,視窗和全螢幕的選項都試試看 我會打開這個選項 (我多數是日文ACG的圖,可以換日文顯示)

github delete remote branch/tag

https://help.github.com/articles/pushing-to-a-remote/ delete remote branch git push <REMOTENAME> : <BRANCHNAME>   However, here, you're telling Git to push nothing into BRANCHNAME on REMOTENAME . Because of this, git push deletes the branch on the remote repository.        delete remote tag https://stackoverflow.com/questions/5480258/how-to-delete-a-git-remote-tag github的tag一定是 create time,無法push過去的tag

github co-authors

https://help.github.com/articles/creating-a-commit-with-multiple-authors/ commit message中空兩行 Co-authored-by: Joel Califa <602352+califa@users.noreply.github.com> Co-authored-by: Matt Clark <44023+mclark@users.noreply.github.com>

無失真數位音樂比實體DVD光碟還要好, loseless digital music is better than DVD audio disk

蘿莉控丹談到他買了很多DVD音樂,好奇之下我去查詢DVD音樂的格式,才發現這件事 DVD上保存的音樂格式是 CDDA(CD-DA) https://en.wikipedia.org/wiki/Compact_Disc_Digital_Audio 這是以前CD音樂時用的格式 (1980發明,現行版本1992年的) The audio contained in a CD-DA consists of two-channel signed 16- bit Linear PCM sampled at 44,100 Hz . 對現在的設備過時了,可以使用更好的音質 大概又是商業因素,搞不定標準吧 (曾經出現過的規格都消失了),就一直沿用了 如果沒對實體片子有堅持的話,建議買無失真數位音樂格式 (FLAC, ALAC...etc) 保存上方便,不用單子片子損壞,品質又比較高 隨便google的某個音樂使用 96kHz/24bit Sample Rate 96k/44.1k = 2.17687074829932 倍 24bit表示聲音的精準度會比16bit高 如果把片子轉成數位檔,要注意不要把音質設定條超過CDDA規格,只是浪費空間而已 也許程式比較聰明會自動判斷來源品質,根本不用操心? 在意音質的話,可轉無失真格式 (品質和從光碟聽相同),和轉成wav檔同音質但容量較小

OBS使用案例 聽自己的歌+開放點歌, don't output audio to stream

某蘿莉控丹問我的問題 想要某些聲音不被OBS抓到,必須要有至少兩個聲音輸出裝置 (OBS和其他程式用不同的) 如果沒有實體裝置的情況下,可以用軟體虛擬 比較有名的是 Virtual Audio Cable (要錢) 可以用 Virtual Audio Cable alternative 去google找其他方案 (有免費的) 如果程式無法指定輸出裝置的情況,可以用其他程式把輸出重新導向 Audio Router https://github.com/audiorouterdev/audio-router 資料來源 https://superuser.com/a/1183002/861086 不想裝軟體,在程式啟動前就調整預設輸出裝置再啟動程式 如果程式只會抓一次輸出裝置的情況下 藉此可達到不同程式不同輸出也是有可能辦到的 (很麻煩,不一定有效) 如果是只想放給觀眾,可以在系統音量把程式的聲音關掉 (不是軟體內) 這樣做OBS還是會抓到聲音 (可以看OBS音量條確認)

Qt debug

CDE install from windows sdk (no option in visualstudio2017 installer, 2018/1/23) https://developercommunity.visualstudio.com/content/problem/127056/cdb-in-visual-studio-build-tools.html https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/ Qt defines QT_NO_DEBUG for release builds. Otherwise QT_DEBUG is defined.

How to get Twitter gif source?

圖片
Someone asks me how to get Twitter gif source. Take this for example https://twitter.com/paint002/status/916984184035360768 I use Firefox, press F12 to open tools below web page. 1. click there to start picking an element 2. click on gif to pick it 3. find source in src attribute (It is a .mp4 video in this example) Another method install this userscript, you can open original pictures (not embedded in web page) https://greasyfork.org/en/scripts/15271-extract-images-for-twitter

瀏覽器的選擇 Firefox or Chrome?

圖片
My preference: Firefox > Edge > Chrome Chrome is faster but consumes more memory. (1+ process per tab) Firefox concerns your privacy, Chrome wants your privacy for advertising. https://www.mozilla.org/en-US/firefox/all/#product-desktop-release Firefox is a bit slower than chrome but less memory usage. Chrome creates one process for every tab. Every extension uses more memory in Chrome than Firefox. https://craftwarblog.blogspot.com/2017/11/firefoxchrome-extension-youtube.html uses 23xxK in Chrome, 4xxK in Firefox. Firefox Quantum (Firefox 57 later) is getting faster and better responsive. Firefox is closing the gap to Chrome speed. You should try it if you don't have enough memory. You should use Firefox if you are lolicon.