Keep going, keep learning
2025年7月20日 星期日
Install your development environment with WSL in windows 11
### Read it before install WSL
- Install your windows terminal & recommended system Fonts
- https://github.com/doggy8088/best-wsl-ubuntu-setup
### Install from PowerShell
- List all the distros of WSL
```
wsl --list --online
```
- support distros (2025/07/20)
```
NAME FRIENDLY NAME
AlmaLinux-8 AlmaLinux OS 8
AlmaLinux-9 AlmaLinux OS 9
AlmaLinux-Kitten-10 AlmaLinux OS Kitten 10
AlmaLinux-10 AlmaLinux OS 10
Debian Debian GNU/Linux
FedoraLinux-42 Fedora Linux 42
SUSE-Linux-Enterprise-15-SP6 SUSE Linux Enterprise 15 SP6
SUSE-Linux-Enterprise-15-SP7 SUSE Linux Enterprise 15 SP7
Ubuntu Ubuntu
Ubuntu-24.04 Ubuntu 24.04 LTS
archlinux Arch Linux
kali-linux Kali Linux Rolling
openSUSE-Tumbleweed openSUSE Tumbleweed
openSUSE-Leap-15.6 openSUSE Leap 15.6
Ubuntu-18.04 Ubuntu 18.04 LTS
Ubuntu-20.04 Ubuntu 20.04 LTS
Ubuntu-22.04 Ubuntu 22.04 LTS
OracleLinux_7_9 Oracle Linux 7.9
OracleLinux_8_10 Oracle Linux 8.10
OracleLinux_9_5 Oracle Linux 9.5
```
- Install ubuntu 24.04
```
wsl.exe --install Ubuntu-24.04
```
- Move the installed WSL to another driver
```
wsl --shutdown
wsl --manage Ubuntu-24.04 --move D:\WSL\
```
- Install docker, NOT docker desktop
- https://blog.miniasp.com/post/2025/06/14/How-to-remove-Docker-Desktop-and-install-Docker-Engine-on-Windows-with-WSL-2
```
# download installation script
# https://docs.docker.com/engine/install/ubuntu/#install-using-the-convenience-script
curl -fsSL https://get.docker.com -o get-docker.sh
# in this step, the system will show a tips to let you install docker desktop.
# Do not press any key, just waitting it to install docker-engine
sudo sh get-docker.sh
# Add your account to docker group
# Manage Docker as a non-root user
# https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user
sudo usermod -aG docker $USER
# check the installed version
docker --version
docker compose version
```
- Install vs code
- install vs code in your Windows environment
- install extension WSL
- install extension RemoteExplorer
- install extension Remote - Tunnels
- install extension Remote - SSH
- install extension Remote - SSH: Editing Configuration Files
- install extension Remote Development
- In your windows terminal open code-insiders
```
code-insiders .
```
- In your windows terminal open vs code stable
```
code .
```
### For aws development
- Install go-lang
```
sudo apt install golang-go -y
```
- Set go environment path
- https://go.dev/wiki/SettingGOPATH
```
export GOPATH=$HOME/go
export GOBIN=$HOME/go/bin
export PATH=$GOBIN:$PATH
```
- Install assume-role
- https://github.com/remind101/assume-role
```
go install github.com/remind101/assume-role@latest
```
- for bash
```
function assume-role { eval $( $(which assume-role) $@); }
```
- for zsh
```
alias assume-role='function(){eval $(command assume-role $@);}'
```
2025年6月15日 星期日
Setting Up Your Environment for Vibetest-Use
This guide will walk you through the process of setting up your environment to use `vibetest-use`, a tool that appears to be designed for website testing using AI agents. We'll cover everything from cloning the repository to configuring the necessary components.
### Step 1: Get the Code
First, you need to get the source code. You can do this by cloning the repository directly, or by forking it to your own GitHub account and then cloning your fork.
- **Clone the repository:**
``` bash
git clone git@github.com:browser-use/vibetest-use.git
```
- **Or, fork the project** on GitHub and then clone your forked repository.
### Step 2: Python Environment Setup
`vibetest-use` requires Python 3.12 or newer. Here's how to set it up on a Debian-based Linux distribution:
1. **Add the `deadsnakes` PPA to your system's software sources:**
``` bash
sudo add-apt-repository ppa:deadsnakes/ppa
```
2. **Update your package list and install Python 3.12:**
``` bash
sudo apt update
sudo apt install python3.12 python3.12-venv -y
```
3. **Create and activate a virtual environment:**
``` bash
mkdir venv
python3.12 -m venv venv
source venv/bin/activate
```
### Step 3: Install Vibetest-Use
With your virtual environment activated, you can now install `vibetest-use` and its dependencies.
1. **Upgrade pip:**
``` bash
pip install --upgrade pip
```
2. **Install `uv` (a fast Python package installer):**
``` bash
pip install uv
```
3. **Install `vibetest-use` in editable mode:**
``` bash
uv pip install -e .
```
### Step 4: Setup the MCP Server in Roo Code
A key part of the setup is configuring the Model Context Protocol (MCP) server. MCP allows AI models to access external tools and data, extending their capabilities. This video provides a detailed tutorial on how to set up an MCP server in Roo Code:
You'll need to configure the MCP server in your Roo Code settings. Make sure to check the command path carefully. If your virtual environment is in a folder named `venv`, the path in the configuration should reflect that.
``` json
{
"mcpServers": {
"vibetest": {
"command": "/full/path/to/vibetest-use/venv/bin/vibetest-mcp",
"env": {
"GOOGLE_API_KEY": "your_api_key"
}
}
}
}
```
### What is MCP?
For a deeper dive into what MCP is and how it works, you can refer to this article: [post/3k2Nrx](https://codelove.tw/@tony/post/3k2Nrx)
### Running the MCP Server
The following is a sequence of commands that might be run during the process of setting up and running the `vibetest-mcp` server. This gives you an idea of the workflow:
``` bash
(venv) ➜ vibetest-use python -m vibetest.mcp_server
(venv) ➜ vibetest-use git:(main) pip install .
(venv) ➜ vibetest-use git:(main) python -m vibetest.mcp_server
(venv) ➜ vibetest-use git:(main) vibetest-mcp
(venv) ➜ vibetest-use git:(main) playwright install
(venv) ➜ vibetest-use git:(main) playwright install-deps
(venv) ➜ vibetest-use git:(main) sudo apt-get install libnss3 libnspr4
(venv) ➜ vibetest-use git:(main) vibetest-mcp
```
### Example Prompt
Once everything is set up, you can start using `vibetest-use` with prompts like this:
### Reference
- VibeTest
- https://github.com/browser-use/vibetest-use
- Configuring MCP Servers in RooCode
- https://docs.roocode.com/features/mcp/using-mcp-in-roo/
- https://youtu.be/QDy3dm1xJ6Y
- MCP
- https://www.anthropic.com/news/model-context-protocol
- https://modelcontextprotocol.io/introduction
- https://codelove.tw/@tony/post/3k2Nrx
- https://ikala.ai/zh-tw/blog/ikala-ai-insight/what-is-model-context-protocol-mcp/
- https://github.com/modelcontextprotocol/servers/tree/main
2020年9月30日 星期三
Install & Setup SoftEther VPN Server on ubuntu LTS 20.04
markdown
# SoftEther VPN
## Installation
### install on ubuntu
- install openssl(1.1.1g)
```
~$ wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz
~$ tar xzvf openssl-1.1.1g.tar.gz
~$ cd openssl-1.1.1g
~$ ./config
~$ make
~$ sudo make install
~$ sudo ldconfig
~$ openssl version -a
```
- install build essential(gcc)
```
~$ sudo apt-get update
~$ sudo apt-get install build-essential
```
- download & install softether vpn server(v4.35)
```
~$ wget https://www.softether-download.com/files/softether/v4.34-9745-rtm-2020.04.05-tree/Linux/SoftEther_VPN_Server/64bit_-_Intel_x64_or_AMD64/softether-vpnserver-v4.34-9745-rtm-2020.04.05-linux-x64-64bit.tar.gz
~$ tar xzf softether-vpnserver-v4.35********.tar.gz
~$ cd vpnserver
~$ make
```
```
~$ cd ..
~$ mv vpnserver /usr/local/
~$ cd /usr/local/vpnserver/
~$ chmod 600 *
~$ chmod 700 vpnserver
~$ chmod 700 vpncmd
```
### install vpnserver as a service
- create a service file as following
```
[Unit]
Description=SoftEther VPN Server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/vpnserver/vpnserver start
ExecStop=/usr/local/vpnserver/vpnserver stop
ExecStartPost=/bin/sleep 0.1
Restart=always
RestartSec=30
KillSignal=SIGQUIT
StandardError=journal
NotifyAccess=all
KillMode=mixed
[Install]
WantedBy=multi-user.target
```
- move to /etc/systemd/system/vpnserver.service
- Enable the service so that it starts automatically when the system boots.
```
~$ sudo systemctl daemon-reload
~$ sudo systemctl enable vpnserver
~$ sudo reboot
```
## Configure SoftEther VPN Server
### **SoftEther VPN Server configure concept**
- Two level admin privilege
- Entire VPN Server admin
- Create VPN Server password
- **ServerPasswordSet**
- view server info
- **ServerInfoGet**
- create virtual hub
- **HubCreate ${hub_name} [/PASSWORD:${password}]**
- Virtual HUB admin
- configure hub password
- **SetHubPassword**
- list existing user & create VPN user account/password
- **UserList**
- **UserCreate ${account}**
- **UserPasswordSet ${account}**
- enable IPSec **(L2TP VPN required)**
- **Server admin privilege is required**
- **IPSecEnable**
- enable DHCP **(L2TP VPN required)**
- **DHCPEnable**
- enable secure NAT **(L2TP VPN required)**
- **SecureNatEnable**
- view connected client info
- **IPTable**
- get session info
- **SessionGet**
### configure with cli
```
~$ sudo /usr/local/vpnserver/vpncmd
```
- configure step 1
- **select 1**
```
vpncmd command - SoftEther VPN Command Line Management Utility
SoftEther VPN Command Line Management Utility (vpncmd command)
Version 4.34 Build 9745 (English)
Compiled 2020/04/05 23:39:56 by buildsan at crosswin
Copyright (c) SoftEther VPN Project. All Rights Reserved.
By using vpncmd program, the following can be achieved.
1. Management of VPN Server or VPN Bridge
2. Management of VPN Client
3. Use of VPN Tools (certificate creation and Network Traffic Speed Test Tool)
Select 1, 2 or 3:
```
- configure step 2
- press **Enter** - Don't need to key-in anything.
```
Specify the host name or IP address of the computer that the destination VPN Server or VPN Bridge is operating on.
By specifying according to the format 'host name:port number', you can also specify the port number.
(When the port number is unspecified, 443 is used.)
If nothing is input and the Enter key is pressed, the connection will be made to the port number 8888 of localhost (this computer).
Hostname of IP Address of Destination:
```
- configure step 3
- **Entering server admin**
- press **Enter** - Don't need to key-in anything.
- **Entering virtual HUB admin**
- key-in the HUB name, and press Enter
```
Connection has been established with VPN Server "localhost" (port 443).
You have administrator privileges for the entire VPN Server.
VPN Server>
```
```
If connecting to the server by Virtual Hub Admin Mode, please input the Virtual Hub name.
If connecting by server admin mode, please press Enter without inputting anything.
Specify Virtual Hub Name:
```
- configure step 4
- In server manage mode, your can enter the Virtual HUB with following command
- HUB ${hub_name}
```
VPN Server>hub vpn
Hub command - Select Virtual Hub to Manage
The Virtual Hub "VPN" has been selected.
The command completed successfully.
VPN Server/VPN>
```
## references:
- [SoftEther VPN 架設記錄](https://noter.tw/4524/softether-vpn-%E6%9E%B6%E8%A8%AD%E8%A8%98%E9%8C%84/)
- [CLI document](https://www.softether.org/4-docs/1-manual/6._Command_Line_Management_Utility_Manual)
2020年4月3日 星期五
Customize your own Django authentication decouple with the models.py
For many systems, authentication mechanisms may already exist, especially for systems that are authenticated by an OAuth server.
In this article, I want to customize Django authentication without creating any user model...
In this article, I want to customize Django authentication without creating any user model...
2018年9月16日 星期日
[Android] Stored your customized data object in Spinner with Kotlin
If you want to make the list of your customized data objects be stored in Spinner.
Try this...
Step:
- 1. write your own data class
- 2. override the toString() method of your data class
- 3. add it to mutable list
- 4. write on onItemSelected listener
- 5. get selected item, and retrieval the object of your data class
訂閱:
文章 (Atom)