after dusk, before dawn
最近好像沒啥能期待的MMO....
Sunday, September 7, 2025
OBS self hosted IRL server setup guide
作者: Died |
Friday, July 25, 2025
How to enable uBlock Origin in Chrome v139 ?
作者: Died |

In Chrome version 139, it forced uBlock Origin disable and recommend user remove it.
- Open
chrome://flags/
in chrome browser URL. - Enable
Temporarily unexpire M137 flags
andTemporarily unexpire M138 flags
, then relaunch browser. - Enable
Allow legacy extension manifest versions
. - Disable following 3 options, then relaunch browser.
Extension Manifest V2 Deprecation Warning Stage
Extension Manifest V2 Deprecation Disabled Stage
Extension Manifest V2 Deprecation Unsupported Stage
Sunday, November 19, 2023
ExpressVPN STEAL my credit card info to renew subscription
作者: Died |
Yes, it is ExpressVPN, one of top VPN in the world.
And it ExpressVPN steal my card info to renew subscription, let's see how it happen.
In short:
1. 2022/8/18, I purchased 1 year + 3 months plan($99.95) with credit card, Subscription ID 948*
2. The credit card expired in 2023.
3. 2023/11/17, my ExpressVPN plan expired.
4. It's Black Friday time, I compared few VPNs, give ExpressVPN another try, use new credit card to purchase 1 year + 3 months plan($99.95) again, Subscription ID 1039*
5. 2023/11/18, ExpressVPN use my new credit card info to renewing Subscription ID 948*, charged US$116.95.
I have to say, it was STEAL, ExpressVPN steal my credit card info that for new subscription to renew another subscription without asking.
Ok let's see the detail.
You can see, my first plan purchased at 2022/8/18, Subscription ID 948*.
And my credit card used for Subscription ID 948* was expired, ExpressVPN sent a email notice me, but I didn't renew card info because ExpressVPN increased the price.
Wednesday, January 11, 2023
台灣想要的是和平,不是戰爭
作者: Died |
Wednesday, June 22, 2022
[.NET 6] Custom Converter for System.Text.Json
作者: Died |
He want user get the specific format from DateTimeOffset (not DateTime)
DateTimeOffset.UtcNow.ToString("yyyy-MM-dd HH:mm:ss.fffzzz");
//"2022-06-22 06:28:55.207+00:00"
If using default converter, the result will follow ISO 8601 format
return DateTimeOffset.UtcNow;
//"2022-06-22T05:55:57.4313761+00:00"
And the don't want to use ToString() to achieve it everytime, so the best way is add the custom converter to JsonOptions
Monday, January 3, 2022
WSL2 - Temporary failure in name resolution
作者: Died |
If you are first time install WSL2 and reboot or something like it, it may become no internet connectivity and show error
Temporary failure in name resolution
To fix it, please follow this gitgub issue, JohnnyQuest1983's reply.
The steps can be simple like this
- set generateResolvConf=false in /etc/wsl.conf
- set dns in /etc/resolv.conf
then use exit or wsl --shutdown, reboot wsl, and it worked, the internet back.
Thursday, October 14, 2021
[.NET 6] Implement custom LogProvider with RabbitMQ into ILogger
作者: Died |
In .NET 6, ILogger is very easy to use, but on modern project, we will write log to somewhere else and use log viewer to read it. For example: sent log to RabbitMQ and read on Kibana
Here is a demo to show how to lmplement a custom logging provider with RabbitMQ into ILogger in .NET 6 RC1, basically same as this article but with some modify.
Step 0 : Before Start
In this demo we choose RabbitMQ.Client to communite with RabbitMQ, you can choose other client if you want, just install it from nuget, easy.
Another thing is RabbitMQ server, if you don't have one, you can use docker to create one.
docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.9-management
Tuesday, September 28, 2021
[.NET 6] System.StackOverflowException after upgrade VS2022 to Preview 4.1 from 3.1
作者: Died |
System.StackOverflowException
HResult=0x800703E9
Message=Exception of type 'System.StackOverflowException' was thrown.
Stack overflow.
Repeat 2291 times:
--------------------------------
at Microsoft.Extensions.Primitives.ChangeToken+ChangeTokenRegistration`1[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].OnChangeTokenFired()
at Microsoft.Extensions.Primitives.ChangeToken+ChangeTokenRegistration`1+<>c[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].<RegisterChangeTokenCallback>b__7_0(System.Object)
at System.Threading.CancellationTokenSource.Invoke(System.Delegate, System.Object, System.Threading.CancellationTokenSource)
at System.Threading.CancellationTokenSource.Register(System.Delegate, System.Object, System.Threading.SynchronizationContext, System.Threading.ExecutionContext)
at System.Threading.CancellationToken.Register(System.Delegate, System.Object, Boolean, Boolean)
at System.Threading.CancellationToken.Register(System.Action`1<System.Object>, System.Object)
at Microsoft.Extensions.Configuration.ConfigurationReloadToken.RegisterChangeCallback(System.Action`1<System.Object>, System.Object)
at Microsoft.Extensions.Primitives.ChangeToken+ChangeTokenRegistration`1[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].RegisterChangeTokenCallback(Microsoft.Extensions.Primitives.IChangeToken)
--------------------------------
at Microsoft.Extensions.Primitives.ChangeToken+ChangeTokenRegistration`1[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].OnChangeTokenFired()
at Microsoft.Extensions.Primitives.ChangeToken+ChangeTokenRegistration`1+<>c[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].<RegisterChangeTokenCallback>b__7_0(System.Object)
at System.Threading.CancellationTokenSource.Invoke(System.Delegate, System.Object, System.Threading.CancellationTokenSource)
at System.Threading.CancellationTokenSource+CallbackNode+<>c.<ExecuteCallback>b__9_0(System.Object)
at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
at System.Threading.CancellationTokenSource+CallbackNode.ExecuteCallback()
at System.Threading.CancellationTokenSource.ExecuteCallbackHandlers(Boolean)
at System.Threading.CancellationTokenSource.NotifyCancellation(Boolean)
at System.Threading.CancellationTokenSource.Cancel()
at Microsoft.Extensions.Configuration.ConfigurationManager.RaiseChanged()
at Microsoft.Extensions.Configuration.ConfigurationManager.AddSource(Microsoft.Extensions.Configuration.IConfigurationSource)
at Microsoft.Extensions.Configuration.ConfigurationManager.Microsoft.Extensions.Configuration.IConfigurationBuilder.Add(Microsoft.Extensions.Configuration.IConfigurationSource)
at Microsoft.Extensions.Configuration.ChainedBuilderExtensions.AddConfiguration(Microsoft.Extensions.Configuration.IConfigurationBuilder, Microsoft.Extensions.Configuration.IConfiguration, Boolean)
at Microsoft.Extensions.Configuration.ChainedBuilderExtensions.AddConfiguration(Microsoft.Extensions.Configuration.IConfigurationBuilder, Microsoft.Extensions.Configuration.IConfiguration)
at Microsoft.AspNetCore.Builder.WebApplicationBuilder.Build()
at Program.<Main>$(System.String[])
builder.Services.AddSingleton<IConfiguration>(builder.Configuration);
Solution
services.AddSingleton<IConfiguration>(configuration);
Wednesday, September 22, 2021
[JAVA] HMAC SHA384 example code
作者: Died |
import java.security.NoSuchAlgorithmException;
import javax.crypto.spec.SecretKeySpec;
import javax.crypto.Mac;
public class SecureUtils {
private static String bytesToHex(final byte[] hash) {
final StringBuffer hexString = new StringBuffer();
for (int i = 0; i < hash.length; i++) {
final String hex = Integer.toHexString(0xff & hash[i]);
if (hex.length() == 1) {
hexString.append('0');
}
hexString.append(hex);
}
return hexString.toString();
}
public static void main(String[] args) throws NoSuchAlgorithmException {
final String nonce = "test"; //your key
final String message = "Password"; //your plain txt
SecretKeySpec signingKey = new SecretKeySpec(nonce.getBytes(),"HmacSHA384");
final Mac mac = Mac.getInstance("HmacSHA384");
try{
mac.init(signingKey);
System.out.println(bytesToHex(mac.doFinal(message.getBytes())));
}
catch(Exception ex){ }
}
}
Sunday, January 31, 2021
[敗家] Alienware m17 R3
作者: Died |
Alienware m17 R3
上一台筆電是2013年買的Alienware M14x R2,拿來寫code已經有點慢了,最近終於找了機會買了新筆電,17吋螢幕真的比較適用啊。
不能免俗地附上配備表。
順帶一提,這次順便買了外星人背包,裝17吋筆電剛好,還有些空間可以裝我需要的東西,相當不錯。
這是2020/12月底買的,沒想到一忙就忘記貼文,直到現在。