20200223

The upload size in bytes # - 512 bytes for the VHD footer (# in this case) must be a multiple of MiB.

$ wc -c os_disk.vhdx
5272240128 os_disk.vhdx

The vhd file size needs to be a number divisible by 1024.

5272240128 / 1025 / 1024 / 1024 = 4.91015625

4.91015625 is not divisible by 1024. We are going to round the number to 5.

5 * 1024 * 1024 * 1024 = 5368709120

And add 512 bytes for the VHD footer.

5368709120 + 512 = 5368709632

Reference: Reddit

20191221

Azure Terraform Role Definition

For security purpose, we tend to create service principal that can performs Terraform operations only within a specific resource group without able modify resource outside the resource group within the same subscription.

Reality is we still need to allow the service principal to run few actions within the scope of the subscription.

Therefore here is the role definition with actions required that Terraform operations need to execute successfully.

{
    "Name": "Terraform",
    "Description": "Role definition has actions required that Terraform operations need",
    "Actions": [
        "*/read",
        "Microsoft.Sql/register/action",
        "Microsoft.CognitiveServices/register/action",
        "microsoft.insights/register/action"
    ],
    "AssignableScopes": ["/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"]
}

With this as json content, we may run the following command to create the role and assign it to the subscription.

az role definition create --role-definition terraform-role-definition.json


Reference

Schedule Dark Mode













To schedule dark mode at 7 PM:

schtasks /CREATE /SC DAILY /TN "Enable Dark Mode" /TR "C:\Windows\System32\reg.exe add HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize /v AppsUseLightTheme /t REG_DWORD /d 0 /f" /ST 19:00

To schedule light mode at 7 AM:

schtasks /CREATE /SC DAILY /TN "Disable Dark Mode" /TR "C:\Windows\System32\reg.exe add HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize /v AppsUseLightTheme /t REG_DWORD /d 1 /f" /ST 7:00

Execute these commands in Command Prompt or PowerShell. There are additional steps you need to do to ensure it is enabled even if you turn on your laptop after the scheduled time.

  1. Launch Task Scheduler.
  2. Open the Properties dialog of the tasks we created.
  3. Go to Settings and check the box "Run task as soon as possible after a scheduled start is missed."


Reference

  1. How to Auto-Toggle Windows 10 Dark Mode at Night
  2. Schtasks.exe /Create

20191213

Generate self-signed certificate

openssl genrsa -out www.example.com.key 2048
openssl req -new -x509 -key www.example.com.key -out www.example.com.cert -days 3650 -subj /CN=www.example.com

20170627

apt-add-repository: invalid HTTP proxy, unsupported URI

Had this error on a Ubuntu which runs behind a proxy. Your $http_proxy environment variable must contain "http://"

root@ubuntu:~# echo $http_proxy
http://proxy.company.net:8080

20141220

handy script to quickly backup a file

#!/bin/bash
# backup a file (somefile to somefile.yyyy-mm-dd.tar.gz)

FILE="$@"

#debug
echo $FILE

if [ -f $(which tar) ]
then
        tar zcPf "${FILE}".$(date +%s).tar.gz "${FILE}"
else
        echo "sorry, do you have 'tar' installed?"
fi

20141020

find files that contain string

# grep -Hirn "mystring" /path/to/dir
find . -print0 | xargs -0 -n1 -P8 grep -Hirn 

thanks to sifu enshu

20141019

error: Diskfilter writes are not supported

# cp -p /etc/grub.d/10_linux /etc/grub.d/10_linux.`date +%Y%m%d.%H%M`
# sed -i 's/quick_boot="1"/quick_boot="0"/' /etc/grub.d/10_linux
# update-grub
# reboot

share internet connection in linux via terminal


On access point side
  1. disable firewall
  2. enable packet forwarding
    # echo 1 > /proc/sys/net/ipv4/ip_forward
  3. set iptables rule for port forwarding
    # iptables -t nat -A POSTROUTING -o -j MASQUERADE
on client side:
  1. configure network interface so you can reach the access point
  2. set the access point as default gateway
    # route add default gw
  3. set dns resolution
    # echo nameserver 8.8.8.8 >> /etc/resolv.conf