Visual Studio 2022 17.1

微軟在去年十一月推出了第一款原生 64bit 的 Visual Studio 2022(17.0)後過了三個月,昨天也發布了他第一次的次版號更新。

這次更新後的版本是 17.1,官方的公告是《Visual Studio 2022 17.1 is now available!》,不過很多東西可能要回頭看《Visual Studio 17.1 Preview 2 is now available!》

這次更新的幾個比較大的變化,包括了:

閱讀更多»

透過 using enum 簡化 enum class 的寫法

C++ 在 C++11 的時候,引進了「Scoped and strongly typed enums」的概念、使用強型別、有 scope 的 enum class 來取代傳統的 enum介紹)。

雖然和傳統的列舉型別相比,某些層面他變得比較難用(例如要做 bitwise 運算要另外處理),但是基本上他還是算是更安全的寫法。

一個和傳統的列舉型別相比,比較麻煩的部分,就是每次要使用的時候,都得加上列舉型別的名稱:

閱讀更多»

C++20 的三向比較(Three-way comparison)

三向比較(three-way comparison、參考)是 C++20 新增的一項新的運算子,他的形式是「<=>」;據說是由於外型的關係,所以也被稱為「Spaceship Operator」。

而它的特色呢,則是可以針對兩個變數進行比較,並透過一個回傳值讓使用者可以判斷到底是大於、小於、還是等於;基本上是:

  • a < b 的話:(a <=> b) < 0
  • a > b 的話:(a <=> b) > 0
  • a 和 b 相等或等價的話:(a <=> b) == 0

閱讀更多»

透過 counting_iterator 讓 std::for_each_n 用索引值來操作

C++ 的標準函式庫雖然一直以來都有提供 <algorithm> 這個函式庫(參考),可以來做某些處理;而裡面其實也有像是 std::for_each()參考)或 std::for_each_n()參考)這類的函式、可以用來掃完整個陣列。

但是由於這些演算法大多是針對 iterator 來進行操作,在很多需要使用索引值(index)來存取周圍的資料時,會變得相對麻煩;也因此,其實 Heresy 這邊大多會使用傳統的 for 迴圈、或是 C++11 的 range-base for-loop 來寫,而很少會去用 std::for_each()

也因此,當 C++17 開始正式針對部分也算法提供平行化的能力的時候(參考),雖然高興了一陣子,但是卻也發現有點難以使用…

閱讀更多»

使用 rsync 備份透過 Docker 架設的 WordPress

這篇勉強算是之前《自行透過 Docker 建立 WordPress 網站》的後續,不過主要應該還是在記錄自己這邊稍微玩一下 rsync 這個 Linux 下的備份工具(維基百科)的紀錄了。

首先,Heresy 這邊是要在跑 WordPress 的機器(以下簡稱 WP)上,另外跑一個 rsync daemon 來讓另一台備份用的電腦(以下簡稱 Backupper)連進來、把資料備份到 Backupper上。

閱讀更多»

自行透過 Docker 建立 WordPress 網站

Heresy 自己使用 wordpress.com 提供的 WordPress 系統已經超過十年了,用的還算滿習慣的;但是由於都是使用別人架好的系統,所以其實對於要怎麼架設,並沒有很認真地研究過。

而這篇則是紀錄一下,Heresy 在工作的地方,自己在 Ubuntu Server 上,透過 Docker 架設 WordPress 的紀錄。

首先,這邊參考的是《使用 Docker Compose 架設 WordPress 環境》這篇文章,他的專案放在 GitHub 上(連結)、可以直接使用。

在他的架構下,實際上是透過三個 docker 的容器來建立一個 WordPress 的服務:

  • db:資料庫、使用 mysql:8.0.20
  • wordpress:PHP FPM 服務、使用 wordpress:php7.4-fpm-alpine
  • webserver:網頁伺服器、使用 nginx:latest

閱讀更多»

Visual Studio 2022 Lambda + OpenMP 的問題

這篇算是紀錄一下,Heresy 這邊在想把開發環境從 Visual Studio 2019 升級到 Visual Studio 2022 時,踩到的新版編譯器在 lambda expression 這邊的地雷,算是稍微紀錄一下了。

Heresy 這邊踩到的地雷,是 lambda expression + OpenMP 的相容性問題;下面就是一個會出問題的簡單程式碼:

#include <iostream>
 
int main()
{
  auto f = []()
  {
    #pragma omp parallel for //Error
    for (int i = 0; i < 10; ++i)
    {
    }
  };
 
  return 0;
}

閱讀更多»

原生 64 位元的 Visual Studio 2022 正式推出

今年四月,微軟就有公布新的 Visual Studio 2022 會是第一款原生 64 位元的 Windows 整合式開發環境了~而從六月開始,微軟也不停地釋出新的預覽版,讓眾多的開發者幫忙找問題。

現在,Visual Studio 2022 終於推出正式版了!他的官方網站是 https://aka.ms/vs2022,官方的公告則是《Visual Studio 2022 now available》;下面則是官方的介紹影片:

閱讀更多»

關掉 PowerShell 的下載進度條換回下載速度

微軟的 Windows PowerShell 提供了許多的 Cmdlet、以及額外的模組,讓他的功能比傳統的命令提示字元(cmd)來的強大不少。

像是透過「Invoke-Webrequest」(官方文件),就可以直接透下載網路上的檔案,在很多情境下都是很實用的;他的基本使用方法大致上如下:

Invoke-Webrequest -Uri https://github.com/boostorg/boost/archive/refs/tags/boost-1.77.0.zip -OutFile c:\temp\boost.zip

但是如果有用這個指令來下載大型檔案的話,應該都會發現:他下載的速度真是有夠慢…

閱讀更多»