Willkommen 👏

Here’s my blog.

使用 Clangd Server 來改善 VS Code 下的 C++ 開發體驗

引子 一切都還要從微軟這款 C/C++ 擴展說起。 雖然說這款擴展幾乎是開發 C/C++ 不可或缺的,但它存在一個嚴重問題:代碼分析速度慢。有時候我打完一行代碼好幾秒了,它還在我的代碼下面打紅波浪線: 說我語句後面沒有打分號或者是左大括號,然後突然消失,留下我一個人在原地發呆。 改變 IntelliSense 模式沒有效果,我又不太想去切換到 GNU Global 這類分析器,經過在擴展市場的一番搜索,我發現了這款擴展: Clangd 及其安裝方法 clangd understands your C++ code and adds smart features to your editor: code completion, compile errors, go-to-definition and more. clangd is a language server that can work with many editors via a plugin. clangd 能爲編輯器提供諸多功能,例如代碼補全、錯誤提示等等。總之看起來不錯。 在 VS Code 中下載安裝該擴展,同時可以卸載原有的擴展了。右下角會提示下載 clangd-server,按提示下載即可。 可以試試寫幾行代碼,提示速度比微軟官方插件好太多。 不過卸載官方插件,我們就無法方便地調試代碼了。這時候我們需要另外的調試器。 配置 LLDB 調試器 在擴展市場裏搜索: CodeLLDB (macOS、Linux 推薦,因爲支持度較好,同時安裝方便。Windows下支持稍差,而且需要編譯安裝) 或者 Native Debugger 之後在工作文件夾下配置調試器:...

November 17, 2020 Â· 1 min

評論規則

這是本站的評論規則。 我們使用 Disqus 來爲本站啓用評論功能。 如果您希望在本站內發表您的意見,請確認您在發出評論前檢查過評論內容是否合適: 友善並尊重他人 不涉及隱私 不要發表引戰話題 ...

November 12, 2020 Â· 1 min

利用Fontconfig與蘋果字體實現類似macos的網頁字體體驗

衆所周知,由於不同的操作系統預裝有不同的字體,並且各類網頁會在其層疊樣式表中採用 “Web Safe Fonts”,因此網頁字體在不同的操作系統中一般顯示不同。我們知道,macOS 下面的瀏覽器網頁字體相當不錯,而蘋果也將 iOS 和 macOS 系統中的界面字體開放出來供設計UI等用途使用。這使我想到,能否使用 fontconfig 爲 CSS 中的 -apple-system 和 BlinkMacSystemFont 添加 alias 進而得到類似於 macOS 字體顯示的效果? 答案顯然是肯定的。 首先需要安裝蘋果提供的字體: Arch Linux 可以直接經由 AUR 安裝:aur/otf-san-francisco-pro、aur/otf-san-francisco-mono(該等寬字體可能會帶來問題,因此我在配置中將其用 Hack 字體進行替換。) 或者手動下載安裝: 瀏覽器打開 https://developer.apple.com/fonts/ 下載 SF Pro、SF Mono 等字體。 安裝軟件包 p7zip 從 dmg 文件中解壓出字體文件:在 dmg 文件的所在目錄執行: 7z x ./SF-Font-Pro.dmg && 7z x ./SanFranciscoPro/San\ Francisco\ Pro.pkg && 7z x ./Payload\~ && rm -rf ./SanFranciscoPro && cp ....

November 12, 2020 Â· 1 min

C++ 中的指針常量、常量指針和指向常量的指針常量

在學習 C++ 的指針時,被 const 修飾指針的情形給難住了。指針作為一種特殊類型的變量,一方面它存儲著內存地址,另一方面又可以解引用獲得數據。 指針的定義:儲存內存地址的一種變量。 聲明指針: pointer_type* pointer_var_name = nullptr;` const 關鍵字的含義:被它修飾的對象或者變量無法被修改。 const 和指針可以產生三類搭配: 指針常量 int* const p_var = &var; const 關鍵字修飾變量 p_var,這個變量便不能再被修改了。此時指針存儲的內存地址不可更改,但引用的變量的值是可以變動的。 常量指針 const int* p_var = &var; 這時,int* 直接修飾 p_var,並非不可變,因此指針對變量的引用地址可以改變,但是引用變量的值不可變更。(也就是指向常量的指針) 指向常量的指針常量 const int* const p_var = &var; 這種最容易理解,不但指針對變量的引用地址不能變,引用的變量的值也不可變。 小結:只需觀察 const 關鍵字所處的位置,他在變量名旁邊說明引用地址不能改變变,而在類型前面則說明引用的值不能變。...

May 21, 2020 Â· 1 min

設置終端代理後 yay 無法查找 AUR 軟件包的解決方案

設置代理: export http_proxy="socks://127.0.0.1:10808" export https_proxy="socks://127.0.0.1:10808" 然後執行 AUR 軟件包搜索: $ yay zip ... 3 core/minizip 1:1.2.11-4 (26.2 KiB 85.6 KiB) (Installed) Mini zip and unzip based on zlib 2 core/gzip 1.10-3 (77.8 KiB 156.9 KiB) base-devel GNU compression utility 1 core/bzip2 1.0.8-3 (53.4 KiB 144.0 KiB) (Installed) A high-quality data compression program Error during AUR search: Get "https://aur.archlinux.org/rpc.php?arg=zip&by=name-desc&type=search&v=5": proxyconnect tcp: dial tcp: lookup socks: no such host Showing repo packages only ==> Packages to install (eg: 1 2 3, 1-3 or ^4) ==> 出現了這個錯誤。Google 了一下发现有关的issue,找到了解决方案:...

May 14, 2020 Â· 1 min

使用英雄聯盟國服客戶端ob外服對局

前言 此前一直以爲只有外服客戶端才能進行OB,不過這樣似乎不是很合理,難道國服服客戶端就不是 LoL 客戶端?誠然,國服客戶端裏面塞了不少騰訊家的辣雞組件,和拳頭官方版的客戶端差別還是有的,直接去 op.gg 下載到的 OB 啓動腳本是無法直接啓動國服客戶端進行 OB 的。 問題分析 腳本總覽 rem OP.GG Spectate SETLOCAL enableextensions enabledelayedexpansion @echo off echo ----------------------- echo Spectate by op.gg echo ----------------------- set RADS_PATH="C:\Riot Games\League of Legends" if exist "%RADS_PATH%\Game" ( cd /d "!RADS_PATH!\Config" for /F "delims=" %%a in ('find " locale: " LeagueClientSettings.yaml') do set "locale=%%a" for /F "tokens=2 delims=: " %%a in ("!locale!") do set "locale=%%a" SET RADS_PATH="!RADS_PATH!\Game" @cd /d !RADS_PATH! if exist "League of Legends....

April 20, 2020 Â· 3 min

重裝系統後導入 SSH 和 PGP 密鑰

導入 SSH 密鑰 準備好將要導入的 SSH 私鑰,確認其權限足夠安全(mode 600),之後在私鑰所在目錄下執行: $ ssh-add ./id_rsa 此時可能會返回這樣的錯誤: $ ssh-add ~/.id_rsa Could not open a connection to your authentication agent. 這時需要先開啓 SSH Agent 才能繼續導入。 $ eval `ssh-agent` # should also works on Windows Agent pid 7111 $ ssh-add ~/.id_rsa Identity added: /path/to/key/file (Email) 如果出現的是這個錯誤: $ ssh-add id_rsa Error loading key "id_rsa": invalid format 一般來說這是因爲密鑰文件存在問題或者是格式不符合要求。執行這些檢查: 密鑰文件編碼是否是 UTF-8 without BOM,換行符是否是 LF,文件結尾是否有一行空白行。 如果在 Windows 平臺上遇到這個錯誤,請下載一個 PuTTYGen,然後在 PuTTYGen 裏打開私鑰文件,選擇菜單欄的 “Conversion”,然後選擇 “Export OpenSSH key (force new format)”,導出另一種格式的 key 之後再手動導入即可。附參考圖片: 導入 PGP 密鑰對 建議將密鑰文件的權限設置爲 mode 600...

April 5, 2020 Â· 1 min

macOS Catalina 使用舊式字體渲染命令后的補救措施

macOS Catalina 中似乎完全移除了 subpixel 字體平滑模式,然而免不了還是有用戶嘗試用 macOS Mojave 裏面的指令,結果適得其反(舉例,mac QQ 的字體反而還不如不去動字體平滑模式)。 爲了還原 Catalina 本身的字體渲染效果,還需要重新打開設置裏的“使用LCD平滑字體”。在打開設置項後,再在終端執行如下命令: $ defaults delete -g CGFontRenderingFontSmoothingDisabled 重啓 macos 即可生效。...

March 20, 2020 Â· 1 min