0%

記錄一下如何在 iPhone 匯出、並在 Windows 10 上瀏覽 HEIC 檔案。

Export Photo from iPhone

從 iPhone 匯出相片/影片的方式主要有以下幾種:

  • 將 iPhone 以 USB 連接至電腦後,直接將檔案拉出來、或使用 Windows 10 相片應用程式匯出至指定目錄。
  • 通過第三方軟體(e.g. Send Anywhere、iTools)傳輸。
  • 由手機上傳至雲端空間(e.g. Google Photo、Microsoft OneDrive)。

以 iPhone 7 實測以上三種作法(相片 4GB、影片 6GB):

  • 第一種方式容易在傳輸過程中中斷,導致操作必須重來
  • 第二種方式則是嘗試使用 Send Anywhere 以區網的方式傳輸,但軟體在執行過程中時常會發生閃退導致操作失敗。
  • 最後通過 Microsoft 365 (Office 365) 提供的 1TB OneDrive 空間,將所有檔案上載後完成匯出。
    • OneDrive 可以選擇上載的影像為原始格式(HEIC)或轉換格式(JPG)。
      1. 安裝 OneDrive 開啟 Settings。
        onedrve-settings
      2. 開啟 Camera Upload。
        onedrive-camera-upload
      3. 開啟 Reupload From Original Formats。
        onedrive-upload-format-1
      4. 勾選 Reupload Still Photos as Live Photos。
        onedrive-upload-format-2

View HEIC Files on Windows 10

Convert Photo from HEIC to JPG/PNG

轉檔則是使用 FonePaw HEIC Converter 進行轉換,軟體在個人使用下是免費授權。

Introduction

雖然 LINE 官方有提供備份訊息的功能,但功能實在做得不盡人意,除了在備份的過程中時常會碰到失敗外,更為人詬病的便是在發展已經超過 10 年居然不支援跨系統間的同步。因此若是使用者有想更換不同的系統裝置,便需要背負丟失歷史訊息的條件。

而付費軟體 iTransor for LINE 提供了在不同裝置上進行 LINE 訊息的備份、還原與轉移的功能,並且在過程中會跳出圖文提示給使用者,讓使用者之現在該做什麼、以及該怎麼做,大幅降低了在跨裝置訊息轉移的難度。

iTransor for LINE

根據 iTransor for LINE 官方網站的介紹,這套軟體提供了以下幾種功能:

  • 從 Android/iPhone 備份 LINE 訊息到電腦 Backup LINE data from Android/iPhone to computer.
  • 在 Android/iPhone 系統中轉換 LINE 訊息
  • 預覽並匯出指定 LINE 訊息
  • 從 LINE 備份中還原至 Android/iPhone
  • 匯出 LINE 訊息為 HTML, PDF, CSV / XLS 格式

在免費版中軟體是提供備份 LINE 訊息至電腦、以及預覽 LINE 訊息的功能,因此若是需要在不同裝置間轉換 LINE 訊息則需要購買授權,授權提供三種版本:單月授權、單年授權以及永久授權,其中最大差異當然是來自於價格,若只是單次使用建議購買單月授權即可。

Get the License

首先先建立帳戶,並選擇需要購買的授權版本後進行信用卡刷卡付款。完成付款後 iMyFone 會寄送訂單資訊到 Email 中,之後就可以在軟體中登入帳號開始進行 LINE 訊息轉移的操作。

license-page

需要注意的是如果是購買單月授權或單年授權的版本,沒有要續訂的話記得要在進入帳戶資訊裡面關閉自動續訂功能。關閉方式為進入 iMyFone 會員中心 > 我的產品 > iMyFone iTransor for LINE 中關閉自動續費。

rights-and-interests

Functions in iTransor for LINE

開啟 iTransor for LINE 後,可以看到軟體左側有四個標籤頁,其功能分別為:

  • Transfer LINE data between Android and iOS devices
  • Backup LINE data from Android and iOS devices
  • Restore LINE data from iTransor backup to iOS/Android devices
  • Read and expot LINE data from iTransor backup

iTransor-for-LINE

在軟體上方有個帳號的按鈕,點擊後輸入帳號密碼即可登入並開始使用在前一步驟中購買的功能。

Backup LINE Message

iTransor for LINE 在不同系統間轉換 LINE 訊息的方式,是先將輸入裝置的訊息備份至電腦後,再還原至指定的裝置上。而如果是想從 iOS 轉換至 Android,由於 iPhone 限制了傳輸的速度,因此在備份上會花費比較多的時間。

首先先開啟 iTransor for LINE 並到第二個標籤頁中,先選擇要備份到電腦上的路徑,之後按下 Start 開始備份。過程中可能會需要相關的權限,例如 iOS 會要求信任電腦與傳輸,Android 則會要求開啟開發人員模式以及 USB 偵錯模式,這些在軟體執行的過程中都會提示使用者並有開啟教學。

backup-LINE-data

在備份完成後,可以到第三或第四個標籤頁中

Restore LINE Message

在備份完成後,進入 iTransor for LINE 第三個標籤頁中,選擇要進行還原的備份後,按下 Restore 開始進行還原。

restore-from-backup

在開始還原前軟體會問否要先進行訊息預覽的動作,如果只是要進行還原的話可以跳過這一步驟,因為在進行預覽的過程中軟體會進行資料分析與處理的動作,處理時間則視資料量而定。以本篇文章 28.89GB 的資料量來說,大概會花費一小時左右的時間。

preview-backup

在還原的過程中,iTransor for LINE 會對使用者做出指示,如開啟對應的權限等。在還原完畢後,iTransor for LINE 會提示使用者使用相同的帳號密碼在新裝置上登入 LINE,並且在過程中選擇不要由備份還原紀錄,之後進入 LINE 會發現先前在舊裝置上的訊息已經成功地被轉移至新裝置上。

References

Migrate ASP.NET Core Razor Project

In this paragraph, we will update the ASP.NET Core project from 3.1 to 6.

The following table shows that current LTS version status:

LTS Version Release Date EOS
.NET Core 2.1 2018-05-30 2021-08-21
.NET Core 3.1 2019-12-03 2020-12-13
.NET 6 2021-11-08 2024-11-12
.NET 8 2023-11 (projected) 2026-12 (projected)

Modify .csproj

The main topics in this step are:

  1. Change the target framework from .NET Core 3.1 to .NET 6.0.
  2. Update the NuGet packages (Microsoft.AspNetCore.*, Microsoft.EntityFrameworkCore.*, Microsoft.Extensions.*, and System.Net.Http.Json).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<PropertyGroup>
- <TargetFramework>netcoreapp3.1</TargetFramework>
+ <TargetFramework>net6.0</TargetFramework>
+ <Nullable>enable</Nullable>
+ <ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>

<ItemGroup>
- <PackageReference Include="Microsoft.AspNetCore.JsonPatch" Version="3.1.6" />
- <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.6" />
- <PackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="3.1.6" />
- <PackageReference Include="System.Net.Http.Json" Version="3.2.1" />
+ <PackageReference Include="Microsoft.AspNetCore.JsonPatch" Version="6.0.0" />
+ <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.0" />
+ <PackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="6.0.0" />
+ <PackageReference Include="System.Net.Http.Json" Version="6.0.0" />
</ItemGroup>

Modify Program.cs

In this step, we need to merge Startup.cs into Program.cs, the common rules as following table:

.NET Core 3.1 .NET 6
configuration builder.Configuration
services builder.Services
env app.Environment

A basic example of Program.cs:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
var builder = WebApplication.CreateBuilder(args);

builder.Services.AddRouting(options => options.LowercaseUrls = true);
builder.Services.AddRazorPages()
.AddRazorRuntimeCompilation();

builder.WebHost.ConfigureKestrel(options =>
{
// To listen for incoming http connection on port 5000
options.ListenAnyIP(5000);
// To listen for incoming https connection on port 5001
//options.ListenAnyIP(5001, configure => configure.UseHttps());
});


var app = builder.Build();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}

app.UseStaticFiles();
app.UseRouting();
app.UseEndpoints(endpoints => endpoints.MapRazorPages());

app.Run();

/* Global Variable if needed */
#pragma warning disable IDE0040
partial class Program
{
public static List<string> GlobalStrings = new List<string>();
}
#pragma warning restore IDE0040

After merged, we can remove the Startup.cs from current project.

Migrate Ubuntu Runtime

Steps

Check the dotnet runtime

1
2
3
4
5
# If is SDK
$ dotnet --list-sdk

# If is runtime
$ dotnet --list-runtimes

(Optional) Remove .NET Core Previous Versions

  • Remove all version

    1
    2
    $ sudo apt -y remove dotnet-host
    $ sudo apt -y autoremove
  • Remove specific SDK version

    1
    $ sudo apt -y remove dotnet-sdk-3.1
  • Remove specific runtime version

    1
    2
    $ sudo apt -y remove dotnet-runtime-3.1
    $ sudo apt -y remove aspnetcore-runtime-3.1

Install .NET 6

  • The .NET SDK allows you to develop apps with .NET. If you install the .NET SDK, you don’t need to install the corresponding runtime.

    1
    2
    $ sudo apt update
    $ sudo apt -y install dotnet6
  • The ASP.NET Core Runtime allows you to run apps that were made with .NET that didn’t provide the runtime.

    1
    2
    $ sudo apt update
    $ sudo apt -y install aspnetcore-runtime-6.0
  • As an alternative to the ASP.NET Core Runtime, you can install the .NET Runtime, which doesn’t include ASP.NET Core support.

    1
    2
    $ sudo apt update
    $ sudo apt -y install dotnet-runtime-6.0

References

Introduction

雖然在 Python 中可以通過 openpyxl 套件來很好的操作 Excel 讀寫,但當想要在檔案中插入 VBA macro 時便沒有辦法依靠 openpyxl。不過我們仍然可以透過 pywin32 套件來操作 Windows API,達到在 Excel 檔案中插入 VBA macro 的需求。

在本篇文章中將會提到:

  1. 透過 pywin32 對 XLSM 檔案插入 VBA macro。
  2. 解決在過程中會出現的「檔案信任」的問題。
  3. 將程式碼包裝為類(class)以方便使用,以及其使用範例。
  4. 如何透過 openpyxl 建立可插入 VBA macro 的 XLSM 檔案。
Read more »

Introduction

日前在偶然地瀏覽自己網站找資源的時候,發現 Cloudflare 顯示 Error 526 Invalid SSL certificate(如下圖所示),當下的第一反應是憑證過期,但在開始查找後發現案情並不單純。

error-526-invalid-ssl-certificate

Read more »

Introducion

目前存在許多密碼管理器,較為知名的包括 1Password、Bitwarden、LastPass 等。原先 LastPass 免費版支援跨平台與裝置使用,然而 LastPass 官方於 2021-20-16 變更免費版政策,自 2021-03-16 後,免費版用戶將只能選擇於單一類型的裝置使用:桌面裝置或行動裝置,此外,免費版將不提供電子郵件支援。

LastPass 此舉目的在於鼓勵免費版用戶升級至 Premium,目前訂閱價格為每月 $3,在限時內從免費版升級至 Premium 官方提供每月 $2.25 的優惠價格。

Read more »

Introduction

由於更換了硬碟,因此重新安裝了英文美國(en-US)的 Windows 10。原本預想一切順利,但在進入硬碟查看部分以中文命名的資料夾時,發現顯示的中文會有不統一、忽大忽小的情況。

然而這樣的情況將不會發生在先安裝繁體中文(zh-TW)的 Windows 10 後再將顯示語系切換為英文美國,加上非繁體中文使用者所預設使用的 Windows 10 鮮少會有繁體中文資料夾的情況,這導致了在網路上相關問題的資源並不多,因此本篇文章將記錄如何解決這樣的問題。

Read more »

youtube-dl is an open-source software project that downloads video and audio primarily from YouTube, but also supports other websites. It uses the Unlicense software license.
As of October 2020 the project was one of the most starred projects on GitHub, with over 72,000 stars. The project also had 84 dependent packages and 1.43k dependent repositories according to libraries.io.

Wikipedia ── youtube-dl

Introduction

在七月份的時候,我們介紹了一款開源與命令行介面的程式碼專案 youtube-dl,但就在 2020 年 10 月 23 日,這項開源程式碼專案被 RIAA 根據 DMCI 請求 GitHub 下架,其中包括 youtube-dl 以及其分支,在請求書中,RIAA 引用了 DMCA-1201,聲稱用戶會使用該儲存庫來下載對社會不公平的影片,並侵犯了版權。

Read more »

Introduction

Flask 是一個使用 Python 編寫的輕量級 Web 應用框架,由於其輕量特性,也被稱為 micro-framework。雖然我們在完成一個 Flask 應用程式後可以通過 python3 api.py 來啟動伺服器,但這只適合用於測試環境中,正式發佈的服務需要一個穩定而持續的伺服器,例如 Apache、Nginx 等。其中 Nginx 是一款面向效能設計的 HTTP 伺服器,相較於 Apache、lighttpd 具有占有記憶體少,穩定性高等優勢,此外,Nginx 的優點還包括:高度模組化的設計,模組編寫簡單,以及設定檔簡潔。

因此在本篇文章,我們將結合先前的 PyTorch 實戰 - 高鐵驗證碼辨識,實作一個辨識驗證碼的 Flask API──通過傳入圖片在辨識完成後回傳驗證碼──,並部署於 CentOS 7 上,

architecture

Read more »