├── .github └── workflows │ └── deploy.yml ├── .gitignore ├── .gitmodules ├── deploy.sh ├── docs ├── CNAME ├── about.md ├── benchmark │ ├── data-harmonyos │ │ ├── .gitignore │ │ ├── fp2017_rate1 │ │ │ ├── Huawei_Kirin_9010_E-Core_Full_O3-flto_001.txt │ │ │ ├── Huawei_Kirin_9010_P-Core_Best_O3-flto_001.txt │ │ │ ├── Huawei_Kirin_9010_P-Core_Full_O3-flto_001.txt │ │ │ ├── Huawei_Kirin_X90_E-Core_O3-flto_001.txt │ │ │ └── Huawei_Kirin_X90_P-Core_O3-flto_001.txt │ │ └── int2017_rate1 │ │ │ ├── Huawei_Kirin_9010_E-Core_Full_O3-flto_001.txt │ │ │ ├── Huawei_Kirin_9010_P-Core_Best_O3-flto_001.txt │ │ │ ├── Huawei_Kirin_9010_P-Core_Full_O3-flto_001.txt │ │ │ ├── Huawei_Kirin_X90_E-Core_O3-flto_001.txt │ │ │ └── Huawei_Kirin_X90_P-Core_O3-flto_001.txt │ ├── data-trixie │ │ ├── .gitignore │ │ ├── fp2017_rate1 │ │ │ ├── AMD_EPYC_7551_O3-march=native_001.txt │ │ │ ├── AMD_EPYC_7551_O3_001.txt │ │ │ ├── AMD_Ryzen_7_5700X_O3-march=native_001.txt │ │ │ ├── AMD_Ryzen_7_5700X_O3_001.txt │ │ │ ├── Apple_M1_E-Core_O3-march=native_001.txt │ │ │ ├── Apple_M1_E-Core_O3_001.txt │ │ │ ├── Apple_M1_P-Core_O3-march=native_001.txt │ │ │ ├── Apple_M1_P-Core_O3_001.txt │ │ │ ├── Intel_Core_i9-10980XE_O3-march=native_001.txt │ │ │ ├── Intel_Core_i9-10980XE_O3_001.txt │ │ │ ├── Intel_Core_i9-14900K_E-Core_O3-march=native_001.txt │ │ │ ├── Intel_Core_i9-14900K_E-Core_O3_001.txt │ │ │ ├── Intel_Core_i9-14900K_P-Core_O3-march=native_001.txt │ │ │ ├── Intel_Core_i9-14900K_P-Core_O3_001.txt │ │ │ ├── Intel_Xeon_w9-3595X_O3-march=native_001.txt │ │ │ ├── Intel_Xeon_w9-3595X_O3_001.txt │ │ │ ├── Kunpeng_920_O3-march=native_001.txt │ │ │ ├── Kunpeng_920_O3_001.txt │ │ │ ├── Loongson_3A6000_O3-march=native_001.txt │ │ │ ├── Loongson_3A6000_O3_001.txt │ │ │ ├── Loongson_3C5000_O3-march=native_001.txt │ │ │ ├── Loongson_3C5000_O3_001.txt │ │ │ ├── Loongson_3C6000_O3-march=native_001.txt │ │ │ ├── Loongson_3C6000_O3_001.txt │ │ │ ├── Loongson_3C6000_O3_002.txt │ │ │ └── Loongson_3C6000_O3_003.txt │ │ └── int2017_rate1 │ │ │ ├── AMD_EPYC_7551_O3-flto-ljemalloc_001.txt │ │ │ ├── AMD_EPYC_7551_O3-flto_001.txt │ │ │ ├── AMD_EPYC_7551_O3_001.txt │ │ │ ├── AMD_Ryzen_7_5700X_O3-flto-ljemalloc_001.txt │ │ │ ├── AMD_Ryzen_7_5700X_O3-flto_001.txt │ │ │ ├── AMD_Ryzen_7_5700X_O3_001.txt │ │ │ ├── Apple_M1_E-Core_O3-flto-ljemalloc_001.txt │ │ │ ├── Apple_M1_E-Core_O3-flto_001.txt │ │ │ ├── Apple_M1_E-Core_O3_001.txt │ │ │ ├── Apple_M1_P-Core_O3-flto-ljemalloc_001.txt │ │ │ ├── Apple_M1_P-Core_O3-flto_001.txt │ │ │ ├── Apple_M1_P-Core_O3_001.txt │ │ │ ├── Intel_Core_i9-10980XE_O3-flto-ljemalloc_001.txt │ │ │ ├── Intel_Core_i9-10980XE_O3-flto_001.txt │ │ │ ├── Intel_Core_i9-10980XE_O3_001.txt │ │ │ ├── Intel_Core_i9-14900K_E-Core_O3-flto-ljemalloc_001.txt │ │ │ ├── Intel_Core_i9-14900K_E-Core_O3-flto_001.txt │ │ │ ├── Intel_Core_i9-14900K_E-Core_O3_001.txt │ │ │ ├── Intel_Core_i9-14900K_P-Core_O3-flto-ljemalloc_001.txt │ │ │ ├── Intel_Core_i9-14900K_P-Core_O3-flto_001.txt │ │ │ ├── Intel_Core_i9-14900K_P-Core_O3_001.txt │ │ │ ├── Intel_Xeon_w9-3595X_O3-flto-ljemalloc_001.txt │ │ │ ├── Intel_Xeon_w9-3595X_O3-flto_001.txt │ │ │ ├── Intel_Xeon_w9-3595X_O3_001.txt │ │ │ ├── Kunpeng_920_O3-flto-ljemalloc_001.txt │ │ │ ├── Kunpeng_920_O3-flto_001.txt │ │ │ ├── Kunpeng_920_O3_001.txt │ │ │ ├── Loongson_3A6000_O3-flto-ljemalloc_001.txt │ │ │ ├── Loongson_3A6000_O3-flto_001.txt │ │ │ ├── Loongson_3A6000_O3_001.txt │ │ │ ├── Loongson_3A6000_O3_002.txt │ │ │ ├── Loongson_3C5000_O3_001.txt │ │ │ ├── Loongson_3C6000_O3-flto-ljemalloc_001.txt │ │ │ ├── Loongson_3C6000_O3-flto_001.txt │ │ │ ├── Loongson_3C6000_O3-flto_002.txt │ │ │ ├── Loongson_3C6000_O3_001.txt │ │ │ └── Loongson_3C6000_O3_002.txt │ ├── data │ │ ├── .gitignore │ │ ├── fp2017_rate1 │ │ │ ├── AMD_EPYC_7551_O3_001.txt │ │ │ ├── AMD_EPYC_7742_O3_001.txt │ │ │ ├── AMD_EPYC_7H12_O3_001.txt │ │ │ ├── AMD_EPYC_7K83_O3_001.txt │ │ │ ├── AMD_EPYC_9754_O3-march=native_001.txt │ │ │ ├── AMD_EPYC_9754_O3_001.txt │ │ │ ├── AMD_EPYC_9755_O3-march=native_001.txt │ │ │ ├── AMD_EPYC_9755_O3_001.txt │ │ │ ├── AMD_EPYC_9K65_O3-march=native_001.txt │ │ │ ├── AMD_EPYC_9K65_O3_001.txt │ │ │ ├── AMD_EPYC_9K85_O3-march=native_001.txt │ │ │ ├── AMD_EPYC_9K85_O3_001.txt │ │ │ ├── AMD_EPYC_9R14_O3-march=native_001.txt │ │ │ ├── AMD_EPYC_9R14_O3_001.txt │ │ │ ├── AMD_EPYC_9T24_O3-march=native_001.txt │ │ │ ├── AMD_EPYC_9T24_O3_001.txt │ │ │ ├── AMD_Ryzen_5_7500F_O3_001.txt │ │ │ ├── AMD_Ryzen_7_5700X_O3-march=native_001.txt │ │ │ ├── AMD_Ryzen_7_5700X_O3_001.txt │ │ │ ├── AMD_Ryzen_9_9950X_O3-march=native_001.txt │ │ │ ├── AMD_Ryzen_9_9950X_O3_001.txt │ │ │ ├── AMD_Ryzen_9_9950X_O3_002.txt │ │ │ ├── AWS_Graviton_3E_O3_001.txt │ │ │ ├── AWS_Graviton_3_O3-march=native_001.txt │ │ │ ├── AWS_Graviton_3_O3_001.txt │ │ │ ├── AWS_Graviton_4_O3-march=native_001.txt │ │ │ ├── AWS_Graviton_4_O3-march=native_002.txt │ │ │ ├── AWS_Graviton_4_O3_001.txt │ │ │ ├── AWS_Graviton_4_O3_002.txt │ │ │ ├── Ampere_Altra_O3_001.txt │ │ │ ├── Apple_M1_E-Core_O3-march=native_001.txt │ │ │ ├── Apple_M1_E-Core_O3_001.txt │ │ │ ├── Apple_M1_P-Core_O3-march=native_001.txt │ │ │ ├── Apple_M1_P-Core_O3_001.txt │ │ │ ├── Hygon_C86_7390_O3_001.txt │ │ │ ├── IBM_POWER8NVL_O3_001.txt │ │ │ ├── Intel_Core_i9-10980XE_O3-march=native_001.txt │ │ │ ├── Intel_Core_i9-10980XE_O3_001.txt │ │ │ ├── Intel_Core_i9-12900KS_E-Core_O3_001.txt │ │ │ ├── Intel_Core_i9-12900KS_P-Core_O3_001.txt │ │ │ ├── Intel_Core_i9-14900K_E-Core_O3_001.txt │ │ │ ├── Intel_Core_i9-14900K_P-Core_O3-march=native_001.txt │ │ │ ├── Intel_Core_i9-14900K_P-Core_O3_001.txt │ │ │ ├── Intel_Xeon_6981E_O3-march=native_001.txt │ │ │ ├── Intel_Xeon_6981E_O3_001.txt │ │ │ ├── Intel_Xeon_6982P-C_O3-march=native_001.txt │ │ │ ├── Intel_Xeon_6982P-C_O3_001.txt │ │ │ ├── Intel_Xeon_D-2146NT_O3-march=native_001.txt │ │ │ ├── Intel_Xeon_D-2146NT_O3_001.txt │ │ │ ├── Intel_Xeon_E5-2603_v4_O3_001.txt │ │ │ ├── Intel_Xeon_E5-2680_v3_O3_001.txt │ │ │ ├── Intel_Xeon_E5-2680_v4_O3_001.txt │ │ │ ├── Intel_Xeon_E5-4610_v2_O3_001.txt │ │ │ ├── Intel_Xeon_Platinum_8358P_O3-march=native_001.txt │ │ │ ├── Intel_Xeon_Platinum_8358P_O3_001.txt │ │ │ ├── Intel_Xeon_Platinum_8576C_O3_001.txt │ │ │ ├── Intel_Xeon_Platinum_8581C_O3-march=native_001.txt │ │ │ ├── Intel_Xeon_Platinum_8581C_O3_001.txt │ │ │ ├── Intel_Xeon_w9-3595X_O3-march=native_001.txt │ │ │ ├── Intel_Xeon_w9-3595X_O3_001.txt │ │ │ ├── Kunpeng_920_HuaweiCloud_kc2_O3-march=native_001.txt │ │ │ ├── Kunpeng_920_HuaweiCloud_kc2_O3_001.txt │ │ │ ├── Kunpeng_920_O3-march=native_001.txt │ │ │ ├── Kunpeng_920_O3_001.txt │ │ │ ├── Qualcomm_8cx_Gen3_E-Core_O3_001.txt │ │ │ ├── Qualcomm_8cx_Gen3_P-Core_O3_001.txt │ │ │ ├── Qualcomm_X1E80100_O3-march=native_001.txt │ │ │ ├── Qualcomm_X1E80100_O3_001.txt │ │ │ └── T-Head_Yitian_710_O3_001.txt │ │ ├── fp2017_speed │ │ │ ├── AMD_EPYC_7742_O3_001.txt │ │ │ ├── Intel_Core_i9-10980XE_O3_001.txt │ │ │ ├── Intel_Core_i9-12900KS_O3_001.txt │ │ │ ├── Intel_Core_i9-14900K_O3_001.txt │ │ │ └── Kunpeng_920_O3_001.txt │ │ ├── int2006_speed │ │ │ ├── Intel_Core_i9-14900K_O2_001.txt │ │ │ └── Intel_Core_i9-14900K_O3_001.txt │ │ ├── int2017_rate1 │ │ │ ├── AMD_EPYC_7551_O3-flto_001.txt │ │ │ ├── AMD_EPYC_7551_O3_001.txt │ │ │ ├── AMD_EPYC_7742_O3-flto-ljemalloc_001.txt │ │ │ ├── AMD_EPYC_7742_O3-flto_001.txt │ │ │ ├── AMD_EPYC_7742_O3_001.txt │ │ │ ├── AMD_EPYC_7H12_O3_001.txt │ │ │ ├── AMD_EPYC_7K83_O3_001.txt │ │ │ ├── AMD_EPYC_9754_O3-flto-ljemalloc_001.txt │ │ │ ├── AMD_EPYC_9754_O3-flto_001.txt │ │ │ ├── AMD_EPYC_9754_O3_001.txt │ │ │ ├── AMD_EPYC_9755_O3-flto-ljemalloc_001.txt │ │ │ ├── AMD_EPYC_9755_O3-flto_001.txt │ │ │ ├── AMD_EPYC_9755_O3_001.txt │ │ │ ├── AMD_EPYC_9K65_O3-flto-ljemalloc_001.txt │ │ │ ├── AMD_EPYC_9K65_O3-flto_001.txt │ │ │ ├── AMD_EPYC_9K65_O3_001.txt │ │ │ ├── AMD_EPYC_9K85_O3-flto-ljemalloc_001.txt │ │ │ ├── AMD_EPYC_9K85_O3-flto_001.txt │ │ │ ├── AMD_EPYC_9K85_O3_001.txt │ │ │ ├── AMD_EPYC_9R14_O3-flto-ljemalloc_001.txt │ │ │ ├── AMD_EPYC_9R14_O3-flto_001.txt │ │ │ ├── AMD_EPYC_9R14_O3_001.txt │ │ │ ├── AMD_EPYC_9R14_O3_002.txt │ │ │ ├── AMD_EPYC_9T24_O3-flto-ljemalloc_001.txt │ │ │ ├── AMD_EPYC_9T24_O3-flto_001.txt │ │ │ ├── AMD_EPYC_9T24_O3_001.txt │ │ │ ├── AMD_Ryzen_5_7500F_O3_001.txt │ │ │ ├── AMD_Ryzen_7_5700X_O3-flto-ljemalloc_001.txt │ │ │ ├── AMD_Ryzen_7_5700X_O3-flto_001.txt │ │ │ ├── AMD_Ryzen_7_5700X_O3_001.txt │ │ │ ├── AMD_Ryzen_9_9950X_O3-flto-ljemalloc_001.txt │ │ │ ├── AMD_Ryzen_9_9950X_O3-flto_001.txt │ │ │ ├── AMD_Ryzen_9_9950X_O3_001.txt │ │ │ ├── AMD_Ryzen_9_9950X_O3_002.txt │ │ │ ├── AWS_Graviton_3E_O3-flto-ljemalloc_001.txt │ │ │ ├── AWS_Graviton_3E_O3_001.txt │ │ │ ├── AWS_Graviton_3_O3-flto-ljemalloc_001.txt │ │ │ ├── AWS_Graviton_3_O3-flto_001.txt │ │ │ ├── AWS_Graviton_3_O3_001.txt │ │ │ ├── AWS_Graviton_4_O3-flto-ljemalloc_001.txt │ │ │ ├── AWS_Graviton_4_O3-flto-ljemalloc_002.txt │ │ │ ├── AWS_Graviton_4_O3-flto_001.txt │ │ │ ├── AWS_Graviton_4_O3-flto_002.txt │ │ │ ├── AWS_Graviton_4_O3-flto_003.txt │ │ │ ├── AWS_Graviton_4_O3_001.txt │ │ │ ├── AWS_Graviton_4_O3_002.txt │ │ │ ├── Ampere_Altra_O3_001.txt │ │ │ ├── Apple_M1_E-Core_O3-flto-ljemalloc_001.txt │ │ │ ├── Apple_M1_E-Core_O3-flto_001.txt │ │ │ ├── Apple_M1_E-Core_O3_001.txt │ │ │ ├── Apple_M1_P-Core_O3-flto-ljemalloc_001.txt │ │ │ ├── Apple_M1_P-Core_O3-flto_001.txt │ │ │ ├── Apple_M1_P-Core_O3_001.txt │ │ │ ├── Huawei_Kirin_X90_VM_P-Core_O3_001.txt │ │ │ ├── Hygon_C86_7390_O3-flto-ljemalloc_001.txt │ │ │ ├── Hygon_C86_7390_O3-flto_001.txt │ │ │ ├── Hygon_C86_7390_O3_001.txt │ │ │ ├── IBM_POWER8NVL_O3-flto-ljemalloc_001.txt │ │ │ ├── IBM_POWER8NVL_O3_001.txt │ │ │ ├── Intel_Core_i9-10980XE_O3-flto-ljemalloc_001.txt │ │ │ ├── Intel_Core_i9-10980XE_O3-flto_001.txt │ │ │ ├── Intel_Core_i9-10980XE_O3_001.txt │ │ │ ├── Intel_Core_i9-12900KS_E-Core_O3_001.txt │ │ │ ├── Intel_Core_i9-12900KS_P-Core_O3-flto-ljemalloc_001.txt │ │ │ ├── Intel_Core_i9-12900KS_P-Core_O3-flto_001.txt │ │ │ ├── Intel_Core_i9-12900KS_P-Core_O3_001.txt │ │ │ ├── Intel_Core_i9-14900K_E-Core_O3_001.txt │ │ │ ├── Intel_Core_i9-14900K_P-Core_O3-flto-ljemalloc_001.txt │ │ │ ├── Intel_Core_i9-14900K_P-Core_O3-flto_001.txt │ │ │ ├── Intel_Core_i9-14900K_P-Core_O3-flto_002.txt │ │ │ ├── Intel_Core_i9-14900K_P-Core_O3_001.txt │ │ │ ├── Intel_Xeon_6981E_O3-flto-ljemalloc_001.txt │ │ │ ├── Intel_Xeon_6981E_O3-flto_001.txt │ │ │ ├── Intel_Xeon_6981E_O3_001.txt │ │ │ ├── Intel_Xeon_6982P-C_O3-flto-ljemalloc_001.txt │ │ │ ├── Intel_Xeon_6982P-C_O3-flto_001.txt │ │ │ ├── Intel_Xeon_6982P-C_O3_001.txt │ │ │ ├── Intel_Xeon_D-2146NT_O3_001.txt │ │ │ ├── Intel_Xeon_E5-2603_v4_O3_001.txt │ │ │ ├── Intel_Xeon_E5-2680_v3_O3_001.txt │ │ │ ├── Intel_Xeon_E5-2680_v4_O3_001.txt │ │ │ ├── Intel_Xeon_E5-4610_v2_O3_001.txt │ │ │ ├── Intel_Xeon_Platinum_8358P_O3_001.txt │ │ │ ├── Intel_Xeon_Platinum_8576C_O3_001.txt │ │ │ ├── Intel_Xeon_Platinum_8581C_O3-flto-ljemalloc_001.txt │ │ │ ├── Intel_Xeon_Platinum_8581C_O3-flto_001.txt │ │ │ ├── Intel_Xeon_Platinum_8581C_O3_001.txt │ │ │ ├── Intel_Xeon_w9-3595X_O3-flto-ljemalloc_001.txt │ │ │ ├── Intel_Xeon_w9-3595X_O3-flto_001.txt │ │ │ ├── Intel_Xeon_w9-3595X_O3_001.txt │ │ │ ├── Kunpeng_920_HuaweiCloud_kc2_O3-flto-ljemalloc_001.txt │ │ │ ├── Kunpeng_920_HuaweiCloud_kc2_O3-flto_001.txt │ │ │ ├── Kunpeng_920_HuaweiCloud_kc2_O3_001.txt │ │ │ ├── Kunpeng_920_O3-flto-ljemalloc_001.txt │ │ │ ├── Kunpeng_920_O3-flto_001.txt │ │ │ ├── Kunpeng_920_O3_001.txt │ │ │ ├── Qualcomm_8cx_Gen3_E-Core_O3_001.txt │ │ │ ├── Qualcomm_8cx_Gen3_P-Core_O3_001.txt │ │ │ ├── Qualcomm_X1E80100_O3-flto-ljemalloc_001.txt │ │ │ ├── Qualcomm_X1E80100_O3-flto_001.txt │ │ │ ├── Qualcomm_X1E80100_O3_001.txt │ │ │ └── T-Head_Yitian_710_O3_001.txt │ │ ├── int2017_speed │ │ │ ├── AMD_EPYC_7742_O3_001.txt │ │ │ ├── Intel_Core_i9-10980XE_O3_001.txt │ │ │ ├── Intel_Core_i9-12900KS_O3_001.txt │ │ │ ├── Intel_Core_i9-12900KS_O3_002.txt │ │ │ ├── Intel_Core_i9-14900K_O3_001.txt │ │ │ ├── Kunpeng_920_O3_001.txt │ │ │ ├── Kunpeng_920_O3_002.txt │ │ │ └── Qualcomm_X1E80100_O3_001.txt │ │ └── others │ │ │ ├── SPEC_FP_2017_Intel_i9-14900K_O3_GCC_12.txt │ │ │ ├── SPEC_FP_2017_Intel_i9-14900K_O3_LLVM_18.txt │ │ │ ├── SPEC_FP_2017_Intel_i9-14900K_O3_LLVM_19.txt │ │ │ ├── SPEC_FP_2017_Intel_i9-14900K_O3_LLVM_20.txt │ │ │ ├── SPEC_INT_2017_Intel_i9-14900K_O3_GCC_11.txt │ │ │ ├── SPEC_INT_2017_Intel_i9-14900K_O3_GCC_12.txt │ │ │ ├── SPEC_INT_2017_Intel_i9-14900K_O3_GCC_13.txt │ │ │ ├── SPEC_INT_2017_Intel_i9-14900K_O3_GCC_14.txt │ │ │ ├── SPEC_INT_2017_Intel_i9-14900K_O3_GCC_15.txt │ │ │ ├── SPEC_INT_2017_Intel_i9-14900K_O3_LLVM_17.txt │ │ │ ├── SPEC_INT_2017_Intel_i9-14900K_O3_LLVM_18.txt │ │ │ ├── SPEC_INT_2017_Intel_i9-14900K_O3_LLVM_19.txt │ │ │ ├── SPEC_INT_2017_Intel_i9-14900K_O3_LLVM_20.txt │ │ │ ├── SPEC_INT_2017_Intel_i9-14900K_O3_LLVM_20_fwrapv.txt │ │ │ ├── SPEC_INT_2017_Loongson_3C6000_O3_GCC_15_O3-flto-ljemalloc.txt │ │ │ ├── SPEC_INT_2017_Loongson_3C6000_O3_GCC_15_O3-flto.txt │ │ │ ├── SPEC_INT_2017_Loongson_3C6000_O3_GCC_15_O3-march=la464.txt │ │ │ ├── SPEC_INT_2017_Loongson_3C6000_O3_GCC_15_O3-march=la664.txt │ │ │ ├── SPEC_INT_2017_Loongson_3C6000_O3_GCC_15_O3-march=native-flto-ljemalloc.txt │ │ │ ├── SPEC_INT_2017_Loongson_3C6000_O3_GCC_15_O3-msimd=lasx-flto-ljemalloc.txt │ │ │ └── SPEC_INT_2017_Loongson_3C6000_O3_GCC_15_O3.txt │ ├── index.md │ ├── scripts │ │ ├── anomaly.py │ │ └── plot.py │ ├── spec-fp-2017-speed.md │ ├── spec-int-2006-rate.md │ ├── spec-int-2006-speed.md │ └── spec-int-2017-speed.md ├── blog │ └── posts │ │ ├── crypto │ │ ├── ecc-curves.md │ │ ├── ecdsa.md │ │ └── montgomery-mul-mod.md │ │ ├── csdn │ │ ├── 20140426171926125.png │ │ ├── 20140426172223984.png │ │ ├── 20140426172417015.png │ │ ├── 20140426172607765.png │ │ ├── 20140706162823328.png │ │ ├── android-studio-manual-update.md │ │ ├── include-relationship.md │ │ ├── intellij-idea-manual-update.md │ │ ├── linux-on-android.md │ │ ├── math.md │ │ └── weixin-sdk-bug.md │ │ ├── ctf │ │ └── 2018-10-04-thuctf-2018-and-teaser-dragon-ctf-2018.md │ │ ├── devops │ │ ├── alpine-rpi-pxe.md │ │ ├── buildroot-rpi-pxe.md │ │ ├── ceph-cookbook.md │ │ ├── ceph-k8s-to-external.md │ │ ├── ceph-on-k8s.md │ │ ├── certbot-route53-letsencrypt-iam.md │ │ ├── configure-telegraf-for-cisco-wlc.md │ │ ├── deploy-esxi-vcsa-7.md │ │ ├── deploy-vcsa-under-esxi.md │ │ ├── gentoo-prefix-m1.md │ │ ├── gitlab-ci-k8s-integration.md │ │ ├── htpdate-for-time-sync.md │ │ ├── installing-debian-in-lemote-yeeloong.md │ │ ├── k3s-deploy.md │ │ ├── k3s-traefik-client-ip.md │ │ ├── k8s-code-server.md │ │ ├── k8s-deploy-with-hpa.md │ │ ├── k8s-drone-ci.md │ │ ├── k8s-fluentd-log-collect.md │ │ ├── k8s-gitlab-runner.md │ │ ├── k8s-networking.md │ │ ├── k8s-nginx-cert-manager-le.md │ │ ├── k8s-prometheus.md │ │ ├── new-clean-env-on-old-os.md │ │ ├── nginx-proxy-subpath.md │ │ ├── nginx-ssl-upstream.md │ │ ├── run-command-in-container-directly.md │ │ ├── setup-k8s-tencentcloud.md │ │ ├── switch-config.md │ │ ├── tke-nginx-ingress-without-lb.md │ │ ├── try-gentoo-prefix-on-macOS.md │ │ ├── upgrade-centos-aarch64-7-to-8.md │ │ ├── use-jailkit-for-scp-only-user.md │ │ ├── use-mussh-to-upgrade-multiple-machines.md │ │ ├── vmware-esxi-lacp.md │ │ ├── vmware-esxi-notes.md │ │ └── vmware-esxi-perccli.md │ │ ├── hardware │ │ ├── 1000baset.png │ │ ├── 1000basex.png │ │ ├── 16qam.png │ │ ├── 3c6000.png │ │ ├── 4qam.png │ │ ├── ace.md │ │ ├── acpi-notes-power.png │ │ ├── acpi-notes.md │ │ ├── amd-cpu.md │ │ ├── amd-zen-1-btb-128b.png │ │ ├── amd-zen-1-btb-16b.png │ │ ├── amd-zen-1-btb-32b.png │ │ ├── amd-zen-1-btb-4b.png │ │ ├── amd-zen-1-btb-64b.png │ │ ├── amd-zen-1-btb-8b.png │ │ ├── amd-zen-1-btb.md │ │ ├── amd-zen-2-btb-128b.png │ │ ├── amd-zen-2-btb-16b.png │ │ ├── amd-zen-2-btb-32b.png │ │ ├── amd-zen-2-btb-4b.png │ │ ├── amd-zen-2-btb-64b.png │ │ ├── amd-zen-2-btb-8b.png │ │ ├── amd-zen-2-btb.md │ │ ├── amd-zen-3-btb-128b.png │ │ ├── amd-zen-3-btb-16b.png │ │ ├── amd-zen-3-btb-32b.png │ │ ├── amd-zen-3-btb-4b.png │ │ ├── amd-zen-3-btb-64b.png │ │ ├── amd-zen-3-btb-8b.png │ │ ├── amd-zen-3-btb.md │ │ ├── amd-zen5-itlb.png │ │ ├── amd-zen5-l1dc.png │ │ ├── amd-zen5-l1dtlb.png │ │ ├── amd-zen5-l2itlb.png │ │ ├── amd-zen5-ras.png │ │ ├── amd-zen5-rf.png │ │ ├── amd-zen5-rob.png │ │ ├── amd-zen5.md │ │ ├── apple-m1-firestorm-btb-4b.png │ │ ├── apple-m1-firestorm-btb-8b.png │ │ ├── apple-m1-firestorm-fetch-bandwidth.png │ │ ├── apple-m1-firestorm-if-width.png │ │ ├── apple-m1-firestorm-itlb.png │ │ ├── apple-m1-firestorm-l1dc.png │ │ ├── apple-m1-firestorm-l1dtlb.png │ │ ├── apple-m1-firestorm-l2tlb.png │ │ ├── apple-m1-firestorm-memory-dependency-predictor.png │ │ ├── apple-m1-firestorm-prf.png │ │ ├── apple-m1-firestorm-rs.png │ │ ├── apple-m1-icestorm-btb-16b.png │ │ ├── apple-m1-icestorm-btb-32b.png │ │ ├── apple-m1-icestorm-btb-4b.png │ │ ├── apple-m1-icestorm-btb-64b.png │ │ ├── apple-m1-icestorm-btb-8b.png │ │ ├── apple-m1-icestorm-fetch-bandwidth.png │ │ ├── apple-m1-icestorm-if-width.png │ │ ├── apple-m1-icestorm-itlb.png │ │ ├── apple-m1-icestorm-l1dc.png │ │ ├── apple-m1-icestorm-l1dtlb.png │ │ ├── apple-m1-icestorm-l2tlb.png │ │ ├── apple-m1-icestorm-memory-dependency-predictor.png │ │ ├── apple-m1-icestorm-prf.png │ │ ├── apple-m1-icestorm-rob.png │ │ ├── apple-m1-icestorm-rs.png │ │ ├── apple-m1.md │ │ ├── apple-m4-e-core-btb-16b.png │ │ ├── apple-m4-e-core-btb-4b.png │ │ ├── apple-m4-e-core-btb-8b.png │ │ ├── apple-m4-e-core-fetch-bandwidth.png │ │ ├── apple-m4-e-core-if-width.png │ │ ├── apple-m4-e-core-itlb.png │ │ ├── apple-m4-e-core-l1dc-2.png │ │ ├── apple-m4-e-core-l1dc.png │ │ ├── apple-m4-e-core-l1dtlb.png │ │ ├── apple-m4-e-core-l2tlb.png │ │ ├── apple-m4-e-core-memory-dependency-predictor.png │ │ ├── apple-m4-e-core-rob-load.png │ │ ├── apple-m4-e-core-rob.png │ │ ├── apple-m4-e-core-rs.png │ │ ├── apple-m4-neoverse-v2-2-taken.png │ │ ├── apple-m4-p-core-btb-16b.png │ │ ├── apple-m4-p-core-btb-32b.png │ │ ├── apple-m4-p-core-btb-4b.png │ │ ├── apple-m4-p-core-btb-64b.png │ │ ├── apple-m4-p-core-btb-8b.png │ │ ├── apple-m4-p-core-fetch-bandwidth.png │ │ ├── apple-m4-p-core-if-width.png │ │ ├── apple-m4-p-core-itlb.png │ │ ├── apple-m4-p-core-l1dc.png │ │ ├── apple-m4-p-core-l1dtlb.png │ │ ├── apple-m4-p-core-l2tlb.png │ │ ├── apple-m4-p-core-memory-dependency-predictor.png │ │ ├── apple-m4-p-core-prf.png │ │ ├── apple-m4-p-core-rob-load.png │ │ ├── apple-m4-p-core-rob.png │ │ ├── apple-m4-p-core-rs.png │ │ ├── apple-m4.md │ │ ├── apple-silicon.md │ │ ├── archlinuxarm-on-sfpi.md │ │ ├── arm-core-development.md │ │ ├── arm-m1-macbookair-1.png │ │ ├── arm-m1-macbookair-2.png │ │ ├── arm-m1-macbookair.md │ │ ├── arm-neoverse-n1-btb-128b-model.png │ │ ├── arm-neoverse-n1-btb-128b.png │ │ ├── arm-neoverse-n1-btb-16b-model.png │ │ ├── arm-neoverse-n1-btb-16b.png │ │ ├── arm-neoverse-n1-btb-256b.png │ │ ├── arm-neoverse-n1-btb-32b-model.png │ │ ├── arm-neoverse-n1-btb-32b.png │ │ ├── arm-neoverse-n1-btb-4b-model.png │ │ ├── arm-neoverse-n1-btb-4b.png │ │ ├── arm-neoverse-n1-btb-64b-model.png │ │ ├── arm-neoverse-n1-btb-64b.png │ │ ├── arm-neoverse-n1-btb-8b-model.png │ │ ├── arm-neoverse-n1-btb-8b.png │ │ ├── arm-neoverse-n1-btb.md │ │ ├── arm-neoverse-v1-btb-16b-cond.png │ │ ├── arm-neoverse-v1-btb-16b-uncond.png │ │ ├── arm-neoverse-v1-btb-32b-cond.png │ │ ├── arm-neoverse-v1-btb-32b-uncond.png │ │ ├── arm-neoverse-v1-btb-4b-cond.png │ │ ├── arm-neoverse-v1-btb-4b-uncond.png │ │ ├── arm-neoverse-v1-btb-64b-cond.png │ │ ├── arm-neoverse-v1-btb-64b-uncond.png │ │ ├── arm-neoverse-v1-btb-8b-cond.png │ │ ├── arm-neoverse-v1-btb-8b-uncond.png │ │ ├── arm-neoverse-v1-btb.md │ │ ├── arm-neoverse-v2-fetch-bandwidth.png │ │ ├── arm-neoverse-v2-itlb-l2.png │ │ ├── arm-neoverse-v2-itlb.png │ │ ├── arm-neoverse-v2-l1dc.png │ │ ├── arm-neoverse-v2-l1dtlb.png │ │ ├── arm-neoverse-v2-memory-dependency-predictor.png │ │ ├── arm-neoverse-v2-mop-cache.png │ │ ├── arm-neoverse-v2-return-stack.png │ │ ├── arm-neoverse-v2.md │ │ ├── ask.png │ │ ├── async-sram-timing.md │ │ ├── bfsk.png │ │ ├── bpsk.png │ │ ├── branch-prediction-2-taken-2-ahead.md │ │ ├── brief-into-ooo-2-amd-way-prediction.png │ │ ├── brief-into-ooo-2-apple-lsu.png │ │ ├── brief-into-ooo-2-way-prediction.png │ │ ├── brief-into-ooo-2.md │ │ ├── brief-into-ooo-3-fdip.png │ │ ├── brief-into-ooo-3-ftb.png │ │ ├── brief-into-ooo-3-intel.png │ │ ├── brief-into-ooo-3-sfb.png │ │ ├── brief-into-ooo-3.md │ │ ├── brief-into-ooo.md │ │ ├── cache-coherency-protocol.md │ │ ├── ch32v307.png │ │ ├── chi-notes.md │ │ ├── chisel3-cookbook.md │ │ ├── core-cosim.md │ │ ├── cpu-uarch-reverse-engineering-methodology.md │ │ ├── cxl-notes.md │ │ ├── ddr-clam-shell.png │ │ ├── ddr-fly-by.png │ │ ├── ddr-mirror.png │ │ ├── ddr-rank.png │ │ ├── ddr4-waveform.png │ │ ├── debian-linux-on-surface-laptop-7.md │ │ ├── design-compiler-synthesis.md │ │ ├── digital-modulation.md │ │ ├── diplomacy-concat.svg │ │ ├── diplomacy-multi-adder.svg │ │ ├── diplomacy-network.svg │ │ ├── diplomacy.md │ │ ├── disk.md │ │ ├── diy-ls3a6000-machine.md │ │ ├── dram-fpga-vref-problem.md │ │ ├── dram-hbm-stack.png │ │ ├── dram-topology-training.md │ │ ├── dram.md │ │ ├── ethernet-physical-interfaces.md │ │ ├── fido-u2f-fido2-ctap.md │ │ ├── firtool.md │ │ ├── gcd-gds.png │ │ ├── gnuradio-fm-radio.md │ │ ├── huawei-matebook-pro-cpuinfo.txt │ │ ├── huawei-matebook-pro.md │ │ ├── huawei-portable-wifi.md │ │ ├── i2c.md │ │ ├── ib-am.png │ │ ├── ib-comparison.png │ │ ├── ib-qp.png │ │ ├── iba.png │ │ ├── ibex-gds.png │ │ ├── ibm-z15-branch-predictor.md │ │ ├── infiniband-notes.md │ │ ├── intel-cpu.md │ │ ├── intel-golden-cove-dtlb.png │ │ ├── intel-golden-cove-fetch-bandwidth.png │ │ ├── intel-golden-cove-itlb.png │ │ ├── intel-golden-cove-l1dc.png │ │ ├── intel-golden-cove-l2c.png │ │ ├── intel-golden-cove-l2tlb.png │ │ ├── intel-golden-cove-prefetcher-1.png │ │ ├── intel-golden-cove-prefetcher-13.png │ │ ├── intel-golden-cove-prefetcher-5.png │ │ ├── intel-golden-cove-prefetcher-64b-stride-disable-prefetcher.png │ │ ├── intel-golden-cove-prefetcher-64b-stride.png │ │ ├── intel-golden-cove-prefetcher-gracemont-comparison.png │ │ ├── intel-golden-cove-rob.png │ │ ├── intel-golden-cove-rs.png │ │ ├── intel-golden-cove.md │ │ ├── intel-gracemont-dtlb-size.png │ │ ├── intel-gracemont-fetch-bandwidth.png │ │ ├── intel-gracemont-itlb-size.png │ │ ├── intel-gracemont-l2-dtlb-size.png │ │ ├── intel-gracemont-rob-size.png │ │ ├── intel-gracemont-rs-size-1.png │ │ ├── intel-gracemont-rs-size-2.png │ │ ├── intel-gracemont-rs-size-golden-cove.png │ │ ├── intel-gracemont.md │ │ ├── intel-redwood-cove-dtlb-size.png │ │ ├── intel-redwood-cove-fetch-bandwidth.png │ │ ├── intel-redwood-cove-itlb-size.png │ │ ├── intel-redwood-cove-rob-size.png │ │ ├── intel-redwood-cove.md │ │ ├── ipmi-kcs.png │ │ ├── jlink-spi-nor-flash.md │ │ ├── linksys-e8450-openwrt.md │ │ ├── litex-digilent-arty-a7.md │ │ ├── litex-uart-over-jtag.md │ │ ├── loongarch-cpu-2k3000.png │ │ ├── loongarch-cpu-3a6000.png │ │ ├── loongarch-cpu.md │ │ ├── loongarchlinux.png │ │ ├── ls3a6000-memory-latency.png │ │ ├── manycore.md │ │ ├── memory-authentication.md │ │ ├── memory-integrity.png │ │ ├── memory-model-and-memory-ordering-order.png │ │ ├── memory-model-and-memory-ordering-sc.png │ │ ├── memory-model-and-memory-ordering-weak-2.png │ │ ├── memory-model-and-memory-ordering-weak.png │ │ ├── memory-model-and-memory-ordering-x86-tso.png │ │ ├── memory-model-and-memory-ordering.md │ │ ├── mifare-classic-ndef.md │ │ ├── mountable-merkle-tree.png │ │ ├── my-first-fpga-experience-on-lichee-tang.md │ │ ├── netgear-a6210-linux-wifi-dongle.md │ │ ├── ofdm-circuit.png │ │ ├── pcb-notes-coplanar-wave-guide-ground-plane.png │ │ ├── pcb-notes-coplanar-wave-guide.png │ │ ├── pcb-notes-couple-microstrip-line.png │ │ ├── pcb-notes-microstrip-line.png │ │ ├── pcb-notes.md │ │ ├── pcie-ats.png │ │ ├── pcie-bifurcation.md │ │ ├── pcie-bifurcation.png │ │ ├── pcie-bridge.png │ │ ├── pcie-ecam.png │ │ ├── pcie-enum.png │ │ ├── pcie-layer.png │ │ ├── pcie-notes.md │ │ ├── pcie-system.png │ │ ├── pcie-tlp-link.png │ │ ├── pcie-tlp.png │ │ ├── pcie-type1.png │ │ ├── pl241-async-read.svg │ │ ├── pl241-async-write.svg │ │ ├── port-system-to-rocket-chip-on-vcu128.md │ │ ├── program-artix7-on-macos.md │ │ ├── pulseview-dslogic.md │ │ ├── pulseview.png │ │ ├── qualcomm-oryon-btb-4b.png │ │ ├── qualcomm-oryon-btb-8b.png │ │ ├── qualcomm-oryon-dtlb-7.png │ │ ├── qualcomm-oryon-dtlb.png │ │ ├── qualcomm-oryon-fetch-bandwidth.png │ │ ├── qualcomm-oryon-if-width.png │ │ ├── qualcomm-oryon-itlb.png │ │ ├── qualcomm-oryon-l1dc.png │ │ ├── qualcomm-oryon-l2.png │ │ ├── qualcomm-oryon-l2tlb.png │ │ ├── qualcomm-oryon-memory-dependency-predictor.png │ │ ├── qualcomm-oryon-prefetcher.png │ │ ├── qualcomm-oryon-prf.png │ │ ├── qualcomm-oryon-rob.png │ │ ├── qualcomm-oryon-rs.png │ │ ├── qualcomm-oryon-tlb.png │ │ ├── qualcomm-oryon.md │ │ ├── ram-read-write-collision.md │ │ ├── reading-smart-info-of-external-drives-under-macOS.md │ │ ├── riscv-debug.md │ │ ├── rocket-chip-bscan-analysis.md │ │ ├── rocket-chip-bscan-debug.md │ │ ├── rocket-chip-custom-debug.md │ │ ├── rocket-chip-diplomacy.md │ │ ├── rocket-chip-diplomacy.svg │ │ ├── rocket-chip-jtag-debug.md │ │ ├── rocket-chip-tlram-load.md │ │ ├── router-on-fpga-2.md │ │ ├── router-on-fpga-3.md │ │ ├── router-on-fpga.md │ │ ├── router-tcp.jpg │ │ ├── router-udp.jpg │ │ ├── rtl8201f-phyad.png │ │ ├── rtl8211-phyad-0.png │ │ ├── rtlsdr-analyze-waterfall-fm974.png │ │ ├── rtlsdr-analyze-waterfall.png │ │ ├── rtlsdr-analyze.png │ │ ├── rtlsdr-fm.png │ │ ├── salted-fish-pi.md │ │ ├── samsung-exynos-cpu-frontend-1.png │ │ ├── samsung-exynos-cpu-mbtb.png │ │ ├── samsung-exynos-cpu-uop.png │ │ ├── samsung-exynos-cpu.md │ │ ├── scv2000.png │ │ ├── sff8087.png │ │ ├── sff8088.png │ │ ├── sff8482.png │ │ ├── sff8611.png │ │ ├── sff8614.png │ │ ├── sff8639.png │ │ ├── simulate-chisel3-on-vivado.md │ │ ├── skid-buffer.md │ │ ├── spi.md │ │ ├── sram-read-diagram.drawio │ │ ├── sram-read-diagram.drawio.png │ │ ├── sram-read-param.png │ │ ├── sram-read.png │ │ ├── sram-write-timing.png │ │ ├── sram-write.png │ │ ├── sram.png │ │ ├── sunway.md │ │ ├── sv2v-fpnew.md │ │ ├── tilelink.md │ │ ├── tiny-rocket-gds.png │ │ ├── try-loongarch.md │ │ ├── try-openroad-flow.md │ │ ├── upgrade-mlnx-firmware.md │ │ ├── vipt-l1-cache-page-size.md │ │ ├── vivado-program-bitstream-svf.md │ │ ├── vivado-simulation-command.md │ │ ├── wch-ch32v307-eval.md │ │ ├── wireless-network-80211-channels.png │ │ ├── wireless-network-80211-frame-control.png │ │ ├── wireless-network-80211-mac.png │ │ ├── wireless-network.md │ │ ├── wishbone.md │ │ ├── xilinx-axi-quad-spi-timing.md │ │ └── xilinx-pcs-pma.png │ │ ├── meta │ │ ├── 2018-11-17 07.52.06.jpg │ │ ├── blog-host-migration.md │ │ ├── migrate-from-disqus-to-giscus.md │ │ ├── migrate-from-hugo-to-mkdocs.md │ │ ├── migrate-from-jekyll-to-hugo.md │ │ ├── more-than-100-posts.md │ │ └── the-beginning-of-my-blog.md │ │ ├── misc │ │ ├── deprecating-jiege-ch.md │ │ ├── education.md │ │ ├── intel-intrinsics-guide.md │ │ ├── jiegec-xyz-down.md │ │ ├── learn-project-preview.md │ │ ├── learn-project.png │ │ ├── sigs.md │ │ ├── thuwc-2019.md │ │ ├── unicode-en-dash-mistake.md │ │ ├── using-fcitx-fbterm.md │ │ ├── weekly-sharing-10.md │ │ ├── weekly-sharing-11.md │ │ ├── weekly-sharing-12.md │ │ ├── weekly-sharing-13.md │ │ ├── weekly-sharing-14.md │ │ ├── weekly-sharing-15.md │ │ ├── weekly-sharing-16.md │ │ ├── weekly-sharing-17.md │ │ ├── weekly-sharing-18.md │ │ ├── weekly-sharing-19.md │ │ ├── weekly-sharing-2.md │ │ ├── weekly-sharing-20.md │ │ ├── weekly-sharing-21.md │ │ ├── weekly-sharing-22.md │ │ ├── weekly-sharing-23.md │ │ ├── weekly-sharing-24.md │ │ ├── weekly-sharing-25.md │ │ ├── weekly-sharing-26.md │ │ ├── weekly-sharing-27.md │ │ ├── weekly-sharing-28.md │ │ ├── weekly-sharing-29.md │ │ ├── weekly-sharing-3.md │ │ ├── weekly-sharing-30.md │ │ ├── weekly-sharing-31.md │ │ ├── weekly-sharing-32.md │ │ ├── weekly-sharing-33.md │ │ ├── weekly-sharing-34.md │ │ ├── weekly-sharing-35.md │ │ ├── weekly-sharing-36.md │ │ ├── weekly-sharing-37.md │ │ ├── weekly-sharing-38.md │ │ ├── weekly-sharing-39.md │ │ ├── weekly-sharing-4.md │ │ ├── weekly-sharing-40.md │ │ ├── weekly-sharing-41.md │ │ ├── weekly-sharing-42.md │ │ ├── weekly-sharing-43.md │ │ ├── weekly-sharing-44.md │ │ ├── weekly-sharing-45.md │ │ ├── weekly-sharing-46.md │ │ ├── weekly-sharing-47.md │ │ ├── weekly-sharing-48.md │ │ ├── weekly-sharing-49.md │ │ ├── weekly-sharing-5.md │ │ ├── weekly-sharing-50.md │ │ ├── weekly-sharing-51.md │ │ ├── weekly-sharing-52.md │ │ ├── weekly-sharing-53.md │ │ ├── weekly-sharing-54.md │ │ ├── weekly-sharing-55.md │ │ ├── weekly-sharing-56.md │ │ ├── weekly-sharing-6.md │ │ ├── weekly-sharing-7.md │ │ ├── weekly-sharing-8.md │ │ ├── weekly-sharing-9.md │ │ └── weekly-sharing.md │ │ ├── networking │ │ ├── baidu-dns.jpg │ │ ├── baidu-nat64.jpg │ │ ├── ddns-openwrt-router.md │ │ ├── enable-ipv6-autoconfiguration-on-tap-interfaces-in-macos.md │ │ ├── enable-lte-ipv6-on-android.md │ │ ├── enable-wpad-on-lede.md │ │ ├── esxi-network-config.md │ │ ├── etc-wireless-network.md │ │ ├── first-trail-of-NAT64.md │ │ ├── flashing-lenovo-y1s-and-bridge-ipv6.md │ │ ├── ftp-behind-nat.md │ │ ├── hardware-queue-interface-82599.png │ │ ├── hardware-queue-interface.md │ │ ├── implementing-gretap-in-macos.md │ │ ├── implementing-rfc8367-as-iptables-extension.md │ │ ├── ip-and-udp-checksum-incremental-update.md │ │ ├── mosh-behind-nat-with-upnp.md │ │ ├── nat-forwarding-with-src-address.md │ │ ├── nginx-proxy-vmware-esxi.md │ │ ├── spanning-tree-protocol.md │ │ ├── tinc-between-macos-and-linux.md │ │ ├── transport-layer-interface.md │ │ ├── upgrade-e8450-openwrt-ubi.md │ │ ├── use-babel-in-overlay-network-with-wireguard.md │ │ ├── use-iptables-to-serve-different-services-on-one-port.md │ │ ├── use-multicast-address-to-find-neighbours.md │ │ ├── use-veth-for-ipv6-brouter.md │ │ ├── vpc.png │ │ ├── wifi-with-cisco-ac-and-ap.md │ │ └── wireguard-tunnel.md │ │ ├── os │ │ ├── axi-uart-interrupt-opensbi-uart.jpg │ │ ├── axi-uart-interrupt.md │ │ ├── build-custom-initramfs.md │ │ ├── changing-screen-brightness-key.md │ │ ├── flashing-lineageos-in-nexus6p.md │ │ ├── linux-boot-protocol.md │ │ ├── opening-tty-terminal-in-wsl.md │ │ ├── trying-fedora-on-riscv.md │ │ ├── virtualbox-booting-from-usb-on-mac.md │ │ ├── windows-on-arm-on-m1.md │ │ └── wsl2-internals.md │ │ ├── others │ │ ├── a-funny-wiki-of-splay-tree.md │ │ ├── alternative-to-pulse-secure.md │ │ ├── bb84-explained.md │ │ ├── busy-these-days.md │ │ ├── college-admission.md │ │ ├── dengshiyuan.md │ │ ├── encountering-wu-wenhu.md │ │ ├── listen-and-write-subtitles-cameron.md │ │ ├── lk99.md │ │ ├── review-on-yesterdays-jiujing-adi-contest.md │ │ ├── start-next-term-tomorrow.md │ │ ├── the-end-of-senior-two.md │ │ └── use-cpuid-to-get-machine-cpu.md │ │ ├── programming │ │ ├── a-good-way-to-show-git-diff-for-compressed-files.md │ │ ├── aarch64-rust-analyzer.md │ │ ├── adb-over-ssh-tunnel.md │ │ ├── analysis-on-a-primality-test.md │ │ ├── arping.png │ │ ├── breaking-c-weak-access-control.md │ │ ├── building-emacs-git-version-with-xwidgets-and-modules-in-archlinux.md │ │ ├── building-lineageos-in-archlinux.md │ │ ├── counting-arguments.md │ │ ├── cpp-11-abi-problem.md │ │ ├── downgrade-gdb.md │ │ ├── ebpf-with-hyperloglog.md │ │ ├── exciting-new-software-updates.md │ │ ├── finding-x11-display-and-xauthority.md │ │ ├── good-software-engineering-rules.md │ │ ├── gowin-fpga.md │ │ ├── http.jpg │ │ ├── implement-network-syscalls.md │ │ ├── interesting-java-formatting-problem.md │ │ ├── interesting-links.md │ │ ├── ip-prefix-unexpected-undefined-behavior.md │ │ ├── lsp-and-cpp.md │ │ ├── mandelbrot.jpg │ │ ├── mandelbrot2.jpg │ │ ├── more-on-scanf-and-scanf-s.md │ │ ├── network-driver-again.md │ │ ├── news.md │ │ ├── nginx-php-upload-size-limit.md │ │ ├── nginx.jpg │ │ ├── nodejs-experiences.md │ │ ├── on-nginx-memory-pool.md │ │ ├── on-scanf-and-scanf-s.md │ │ ├── parse-upload-csv-frontend.md │ │ ├── ping.jpg │ │ ├── portable-script-across-bash-zsh-fish.md │ │ ├── qrencode.png │ │ ├── run-cpp-in-jupyter-notebook.md │ │ ├── running-nginx-on-rcore.md │ │ ├── rust-access-linker-script-address.md │ │ ├── rust-decaf-lsp.md │ │ ├── rust-proc-macro-gll.md │ │ ├── some-interesting-links.md │ │ ├── thoughts-on-stanford-cs140e-2.md │ │ ├── thoughts-on-stanford-cs140e-3.md │ │ ├── thoughts-on-stanford-cs140e-4.md │ │ ├── thoughts-on-stanford-cs140e-5.md │ │ ├── thoughts-on-stanford-cs140e-6.md │ │ ├── thoughts-on-stanford-cs140e-7.md │ │ ├── thoughts-on-stanford-cs140e-8.md │ │ ├── thoughts-on-stanford-cs140e-9.md │ │ ├── thoughts-on-stanford-cs140e.md │ │ ├── tips-on-git-shallow-clone.md │ │ ├── two-patches-of-Emacs-I-am-using.md │ │ ├── uniform-int-distribution-performance.md │ │ ├── unix-nice.md │ │ ├── upgrade-mongodb-to-4.0.md │ │ ├── using-chinese-pyim.md │ │ ├── verilog-first-try.md │ │ ├── virtio-drivers-implementation-arp-packet.jpg │ │ ├── virtio-drivers-implementation.md │ │ ├── workaround-rust-on-m1.md │ │ ├── writing-code-cn.md │ │ └── xwidget-webkit.png │ │ ├── software │ │ ├── 010-editor-flv-parsing.md │ │ ├── 2018-12-27-20-33-10.png │ │ ├── 2018-12-27-20-35-21.png │ │ ├── 2018-12-27-20-38-07.png │ │ ├── 2018-12-27-20-48-48.png │ │ ├── 2018-12-27-20-49-00.png │ │ ├── aarch64-debian-in-qemu-m1.md │ │ ├── admin-mongo-docker.md │ │ ├── alacritty-powerline-font-offset.md │ │ ├── android-runtime-interpreter.md │ │ ├── apple-silicon-linux-rosetta.md │ │ ├── archive-common-linking.md │ │ ├── big-sur-m1-latex-kaiti-fonts.md │ │ ├── buildroot-fakeroot-incompat.md │ │ ├── bypass-gpgmail-activation.md │ │ ├── cbp-experiments-simpoint-2.png │ │ ├── cbp-experiments-simpoint-omnetpp.png │ │ ├── cbp-experiments-simpoint-perlbench-diffmail.png │ │ ├── cbp-experiments-simpoint-xz-input.png │ │ ├── cbp-experiments-simpoint.png │ │ ├── cbp-experiments.md │ │ ├── chromium-build-port.md │ │ ├── clang-cuda-support.md │ │ ├── common-symbols-linking.md │ │ ├── connectx-4-switch-to-ethernet.md │ │ ├── create-esp-partition-macos.md │ │ ├── cross-compiling-nginx-to-riscv.md │ │ ├── docker-rootless.md │ │ ├── enable-dark-mode-google-chrome.md │ │ ├── enable-vim-mode-in-xcode-9.md │ │ ├── farewell-flash.md │ │ ├── feishu-dump-calendar.md │ │ ├── framebuffer-capture.md │ │ ├── from-tex-to-pdf.md │ │ ├── get-resolvers-in-c.md │ │ ├── glibc-allocator.md │ │ ├── gnome-fractional-scaling.md │ │ ├── grafana-influxdb-telegraf-miio.md │ │ ├── grafana-influxdb-visualize-ping.md │ │ ├── grafana-variable-regex-exclusion.md │ │ ├── grafana-visualize-vote18.md │ │ ├── homebridge-mi-aqara-telegraf.md │ │ ├── homebridge-rm-mini-3.md │ │ ├── install-nvidia-cuda.md │ │ ├── invalid-date-timezone.md │ │ ├── jielabs.md │ │ ├── libvirtd-migrate-proxmox-ve.md │ │ ├── linker.md │ │ ├── linux-core-scheduling-cppc-1.png │ │ ├── linux-core-scheduling-cppc-2.png │ │ ├── linux-core-scheduling.md │ │ ├── linux-perf-pmu-intel-bts.png │ │ ├── linux-perf-pmu-intel-pt-dump.png │ │ ├── linux-perf-pmu-intel-tnt.png │ │ ├── linux-perf-pmu.md │ │ ├── linux-regression-vivado-en.md │ │ ├── linux-regression-vivado.md │ │ ├── linux-vm-on-harmonyos-computer.md │ │ ├── linux-vm-on-harmonyos-computer.png │ │ ├── locale.md │ │ ├── logo-is-a-lisp-dialect.md │ │ ├── loongarch64-toolchain.md │ │ ├── macos-mmap-exec.md │ │ ├── mi-air-purifier-homekit.md │ │ ├── migrate-mongodb-on-ubuntu.md │ │ ├── mkdocs-material-instant-navigation.md │ │ ├── nginx-post-internal-server-error.md │ │ ├── nix-cookbook.md │ │ ├── nix-on-ppc64le.md │ │ ├── nvidia-cuda.md │ │ ├── openldap-in-docker.md │ │ ├── packaging-cookbook.md │ │ ├── qemu-rv64-in-libvirt.md │ │ ├── rcore-soft-router-topo.png │ │ ├── rcore-soft-router.md │ │ ├── read-edid-decode-macos.md │ │ ├── reverse-proxy-partial-transfer.md │ │ ├── rsyslog-remote.md │ │ ├── rust-nix.md │ │ ├── rvv-1.0-toolchain.md │ │ ├── sbt-fork-parallel-test.md │ │ ├── secoder-platform-sucks.md │ │ ├── spack-openmpi-slurm-external.md │ │ ├── spec-cpu-2006.md │ │ ├── sssd-ldap.md │ │ ├── static-building-sqlite.md │ │ ├── tar-format.md │ │ ├── terminal-emulator-text-rendering-font.png │ │ ├── terminal-emulator-text-rendering.md │ │ ├── tips-in-os-x.md │ │ ├── tls-internals-ds.png │ │ ├── tls-internals.md │ │ ├── usb-ip-simulation.md │ │ ├── usb-ip.md │ │ ├── use-nginx-as-rtmp-server.md │ │ ├── using-fortran-on-harmonyos-5.md │ │ ├── v8-ignition-internals.md │ │ ├── vfio.md │ │ ├── vote18-speed.png │ │ ├── vote18.png │ │ ├── vscode-server-on-freebsd.md │ │ ├── vscode-vim-chinese-word-motion.md │ │ ├── write-a-linker-1.md │ │ ├── write-a-linker-2.md │ │ ├── write-a-linker-3.md │ │ ├── write-a-linker-4.md │ │ ├── wxapp-recap.md │ │ ├── xrdp-nvidia.md │ │ └── zfs-on-macos-and-linux.md │ │ └── system │ │ ├── aix.md │ │ ├── archer-t4u-v3-driver.md │ │ ├── bsd-cookbook.md │ │ ├── distributed-systems-6824.md │ │ ├── idrac-versions.md │ │ ├── igpu-passthrough.png │ │ ├── ilo-nic-selection-ipmitool.md │ │ ├── installing-arch-experience.md │ │ ├── macbookpro-linux-wifi.md │ │ ├── macos-sierra-karabiner-finally-support-complex-modifications.md │ │ ├── nuc11-igpu-passthrough.md │ │ ├── openbmc-qemu.md │ │ ├── openbsd-xonly.md │ │ ├── replication.png │ │ ├── rhel6-upgrade-centos7.md │ │ ├── sco5.md │ │ ├── sco6.md │ │ ├── solaris.md │ │ ├── static-ipmitool.md │ │ ├── unixware7.md │ │ ├── upgrade-power8-bmc.md │ │ └── windows-ad-linux-pam.md ├── g9.html ├── index.md ├── javascripts │ └── mathjax.js ├── keybase.txt ├── open-source-contributions.md ├── series.md ├── tags.md └── tools.md ├── mkdocs.yml ├── overrides └── partials │ ├── comments.html │ └── integrations │ └── analytics │ └── custom.html ├── poetry.lock ├── pyproject.toml └── rotate-svg.py /.gitignore: -------------------------------------------------------------------------------- 1 | .hugo_build.lock 2 | *.bkp 3 | 4 | /.quarto/ 5 | /site/ 6 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "docs/projects"] 2 | path = docs/projects 3 | url = https://github.com/jiegec/Projects.git 4 | -------------------------------------------------------------------------------- /deploy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # remember to update .github/workflows/deploy.yml if you change this 3 | cd docs/data && poetry run python3 plot.py && cd ../../ 4 | DEPLOY=true poetry run mkdocs build 5 | rm -rf ../jiegec.github.io/* 6 | cp -r site/* ../jiegec.github.io/ 7 | cd ../jiegec.github.io/ 8 | ln -s feed_rss_updated.xml feed.xml -------------------------------------------------------------------------------- /docs/CNAME: -------------------------------------------------------------------------------- 1 | jia.je 2 | -------------------------------------------------------------------------------- /docs/about.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: page 3 | date: 1970-01-01 4 | permalink: /about/ 5 | --- 6 | 7 | # 关于 8 | 9 | 我是清华大学计算机系的一名在读博士生。 10 | 11 | 我的邮件是 c at jia.je。 12 | 13 | 我的 GitHub 用户名是 [@jiegec](https://github.com/jiegec)。 14 | 15 | 我的 B 站主页是 。 16 | 17 | 我的知乎主页是 。 18 | -------------------------------------------------------------------------------- /docs/benchmark/data-harmonyos/.gitignore: -------------------------------------------------------------------------------- 1 | *.png 2 | *.svg 3 | -------------------------------------------------------------------------------- /docs/benchmark/data-trixie/.gitignore: -------------------------------------------------------------------------------- 1 | *.png 2 | *.svg 3 | -------------------------------------------------------------------------------- /docs/benchmark/data/.gitignore: -------------------------------------------------------------------------------- 1 | *.png 2 | *.svg 3 | -------------------------------------------------------------------------------- /docs/benchmark/scripts/anomaly.py: -------------------------------------------------------------------------------- 1 | import glob 2 | 3 | for flavor in ["int", "fp"]: 4 | for f in glob.glob(f"{flavor}2017_rate1/*.txt"): 5 | # parse 6 | found_delim = False 7 | times = [] 8 | for line in open(f, "r", encoding="utf-8"): 9 | line = line.strip() 10 | if line.startswith("---------------"): 11 | found_delim = True 12 | if line.startswith("==============="): 13 | break 14 | parts = line.strip().split(" ") 15 | parts = list(filter(lambda s: len(s) > 0, parts)) 16 | if found_delim and parts[1] == '1': 17 | times.append(float(parts[2])) 18 | 19 | if len(times) == 3: 20 | times = sorted(times) 21 | if times[1] / times[0] > 1.1: 22 | print(f"Anomaly found in {f}: {times} {line}") 23 | times = [] 24 | 25 | ratio = float(parts[3]) 26 | if ratio < 1.0: 27 | print(f"Anomaly found in {f}: {ratio} {line}") 28 | 29 | -------------------------------------------------------------------------------- /docs/benchmark/spec-fp-2017-speed.md: -------------------------------------------------------------------------------- 1 | # SPEC FP 2017 Speed 2 | 3 | 下面贴出自己测的数据(SPECfp2017,Estimated,speed,base,单线程),不保证满足 SPEC 的要求,仅供参考。 4 | 5 | 运行时间基本和分数成反比,乘积按 5e5 估算。 6 | 7 | - Intel Core i9-14900K Raptor Cove(`-O3`): [12.8](./data/fp2017_speed/Intel_Core_i9-14900K_O3_001.txt) 8 | - Intel Core i9-12900KS Golden Cove(`-O3`): [13.1](./data/fp2017_speed/Intel_Core_i9-12900KS_O3_001.txt) 9 | - AMD EPYC 7742 Zen 2(`-O3`): [6.99](./data/fp2017_speed/AMD_EPYC_7742_O3_001.txt) 10 | - Intel Core i9-10980XE Cascade Lake(`-O3`): [6.20](./data/fp2017_speed/Intel_Core_i9-10980XE_O3_001.txt) 11 | - Kunpeng 920 TaiShan V110(`-O3`): [2.57](./data/fp2017_speed/Kunpeng_920_O3_001.txt) 12 | 13 | 注:SPEC FP 2017 单线程 OpenMP 下 speed 测试不等价为 rate-1,因为跑的测试不同。 14 | 15 | -------------------------------------------------------------------------------- /docs/benchmark/spec-int-2006-rate.md: -------------------------------------------------------------------------------- 1 | # SPEC INT 2006 Rate 2 | 3 | 不打算跑 4 | 5 | ### 网上的数据 6 | 7 | [Kunpeng 920 官方数据](https://www.hisilicon.com/en/products/Kunpeng/Huawei-Kunpeng/Huawei-Kunpeng-920): 8 | 9 | - Kunpeng 920 TSV110 64 Cores: >930 10 | 11 | [夏晶的数据](https://www.zhihu.com/question/308299017/answer/592860614): 12 | 13 | - AMD Zen 2 64 Cores: ~1200 14 | - Intel Skylake 8180 v5 28 Cores: ~750 15 | - Cavium TX2 32 Cores: ~750 16 | - AMD EPYC 7601 Zen 1 32 Cores: ~700 17 | - Qualcomm 2400 48 Cores: ~650 18 | - Phytium FT2000 64 Cores: ~600 19 | - Intel 6148 Skylake 20 Cores: ~550 20 | 21 | [龙芯 3A6000 新闻](https://www.ithome.com/0/709/460.htm): 22 | 23 | - Loongson 3A6000 LA664 4C 8T: 155 24 | 25 | [龙芯、海光、飞腾、兆芯同桌对比性能力求公平](https://zhuanlan.zhihu.com/p/627627813): 26 | 27 | - Intel Core i9-10850K Comet Lake 10C 20T: 328 349 28 | - AMD Ryzen 5600G 6C 12T: 192 232 235 278 29 | - AMD Ryzen 2600 6C 12T: 166 179 192 199 30 | - Hygon C86 3250 8C 16T: 173 197 31 | - Intel Core i5-6500 Skylake 4C: 113 32 | - Phytium D2000 8C: 90.2 33 | - Zhaoxin KX-U6780A 8C: 82.9 34 | - Loongson 3A5000HV 4C: 81.2 35 | -------------------------------------------------------------------------------- /docs/benchmark/spec-int-2017-speed.md: -------------------------------------------------------------------------------- 1 | # SPEC INT 2017 Speed 2 | 3 | 下面贴出自己测的数据(SPECint2017,Estimated,speed,base,单线程),不保证满足 SPEC 的要求,仅供参考。 4 | 5 | 运行时间基本和分数成反比,乘积按 1e5 估算。 6 | 7 | - Intel Core i9-14900K Raptor Cove(`-O3`): [12.1](./data/int2017_speed/Intel_Core_i9-14900K_O3_001.txt) 8 | - Intel Core i9-12900KS Golden Cove(`-O3`): [10.5](./data/int2017_speed/Intel_Core_i9-12900KS_O3_001.txt) [10.9](./data/int2017_speed/Intel_Core_i9-12900KS_O3_002.txt) 9 | - Qualcomm X1E80100 X Elite(`-O3`): [7.99](./data/int2017_speed/Qualcomm_X1E80100_O3_001.txt) 10 | - Intel Core i9-10980XE Cascade Lake(`-O3`): [7.18](./data/int2017_speed/Intel_Core_i9-10980XE_O3_001.txt) 11 | - AMD EPYC 7742 Zen 2(`-O3`): [5.55](./data/int2017_speed/AMD_EPYC_7742_O3_001.txt) 12 | - Kunpeng 920 TaiShan V110(`-O3`): [3.65](./data/int2017_speed/Kunpeng_920_O3_001.txt) [3.62](./data/int2017_speed/Kunpeng_920_O3_002.txt) 13 | 14 | 注:SPEC INT 2017 单线程 OpenMP 下 speed 测试按理说约等于 rate-1,前者虽然启用了 OpenMP,但仅允许单线程。不过实测下来还是不太一样。 15 | 16 | -------------------------------------------------------------------------------- /docs/blog/posts/csdn/20140426171926125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/csdn/20140426171926125.png -------------------------------------------------------------------------------- /docs/blog/posts/csdn/20140426172223984.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/csdn/20140426172223984.png -------------------------------------------------------------------------------- /docs/blog/posts/csdn/20140426172417015.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/csdn/20140426172417015.png -------------------------------------------------------------------------------- /docs/blog/posts/csdn/20140426172607765.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/csdn/20140426172607765.png -------------------------------------------------------------------------------- /docs/blog/posts/csdn/20140706162823328.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/csdn/20140706162823328.png -------------------------------------------------------------------------------- /docs/blog/posts/csdn/include-relationship.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2014-07-06 4 | tags: [java,android,libgdx,box2d] 5 | categories: 6 | - csdn 7 | --- 8 | 9 | # 写了一个程序,分析各个源文件之间的 include 关系。 10 | 11 | 迁移自本人在 CSDN 上的博客:https://blog.csdn.net/build7601/article/details/37343993 12 | 13 | ![](./20140706162823328.png) 14 | 15 | 最左边是 expat,上面 zlib,左下角 mxml,中间最恶心的是 lua,右边的是 jpeg。 16 | 17 | 讲讲大概思路: 18 | 19 | 1.扫描源文件,这里判断最简单的#include,然后建立关系。 20 | 21 | 2.把这些作为一个个 body 加到 box2d 的世界里,让物理解决这一切!! 22 | 23 | 3.然后把有 include 关系的用一个 distancejoint 连接起来~你会发现他们就能保持一定距离了。但是!没有被连接的全都聚在一起,怎么办! 24 | 25 | 4.把距离近的,不和自己相连的(来个 dfs)给个反方向的力! 26 | 27 | 5.好吧,这就是最终结果,有什么更好的方法?希望大家交流。 28 | 29 | 6.我不想开源,毕竟这还只是个半成品。。。。。做好了自然会开源的 30 | 31 | 7.像那个恶心的 lua 怎么解开?文件之间的依赖太多了,成环了。 32 | 33 | 8.使用 java+libgdx+box2d 写成,也就是说 android 也支持。 34 | 35 | 9.没啥了。。。。 -------------------------------------------------------------------------------- /docs/blog/posts/csdn/math.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2014-09-20 4 | tags: [math,wolframalpha] 5 | categories: 6 | - csdn 7 | --- 8 | 9 | # 用数学方法 + 数学软件去做一个物理题~ 10 | 11 | 迁移自本人在 CSDN 上的博客:https://blog.csdn.net/build7601/article/details/39433177 12 | 13 | 经过测试,发现微信客户端登录 SDK 有一个 BUG。注:目前只在 iOS 上测试过,可以重现。 14 | 15 | 原题: 16 | 17 | 跳伞运动员在下落过程中,假定伞所受空气阻力大小跟下落速度的平方成正比,即 F= kv2,比例系数 k=20N·s2/m2,跳伞运动员与伞的总质量为 72 kg,起跳高度足够高,则:(g 取 10 m/s2) 18 | 19 | 1. 跳伞运动员在空中做什么运动?收尾速度多大? 20 | 2. 当速度达到 4 m/s 时,下落加速度是多大? 21 | 22 | 做法: 23 | 24 | 我拿出我的数学大杀器,直接受力分析 + 牛顿第二定律得出 a=g-k/m*v*v. 25 | 我一看,这转化成数学不就是 f''(t)=10-5/18*f'(t)^2, f(0)=0, f'(0)=0,喜闻乐见的微分方程啊哈哈! 26 | 27 | 直接丢到各种数学软件,我用了[Wolfram|Alpha](http://www.wolframalpha.com/input/?i=f%27%27%28t%29%3D10-5%2F18*f%27%28t%29%5E2%2C+f%280%29%3D0%2C+f%27%280%29%3D0) 28 | 29 | 瞬间得到答案: 30 | f(t) = -6/5 (5 t-3 log(e^(10 t/3)+1)+log(8)) 31 | yeah~ 32 | 33 | 看看上面那个网址里面下面的函数图像,表示第一题可以秒杀~ 34 | 35 | 好的,至于第二题,因为速度为 4,则可以写出:f'(t)=4 的方程,输入 d(-6/5 (5 t-3 log(e^(10 t/3)+1)+log(8)))/dt=4 36 | 解出 37 | t = (3 log(5))/10 38 | 带入 f''(t),输入 diff(diff(-6/5 (5 t-3 log(e^(10 t/3)+1)+log(8)),t),t),t=(3 log(5))/10, 39 | 得 a=5.5556. 40 | 41 | 大功造成~ -------------------------------------------------------------------------------- /docs/blog/posts/csdn/weixin-sdk-bug.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2014-10-06 4 | tags: [java,intellijidea,android,androidstudio] 5 | categories: 6 | - csdn 7 | --- 8 | 9 | # "@微信 SDK 开发者,发现一个 BUG~" 10 | 11 | 迁移自本人在 CSDN 上的博客:https://blog.csdn.net/build7601/article/details/39826065 12 | 13 | 经过测试,发现微信客户端登录 SDK 有一个 BUG。注:目前只在 iOS 上测试过,可以重现。 14 | 15 | BUG 重现 16 | 17 | 1.做一个可以用微信登陆的软件,先安装到设备。 18 | 2.更改 project 的 Bundle Identifier,只更改大小写,重新安装到设备。P.S.实际情况是包名大小写修改过引发这个问题。 19 | 3.打开第二个安装的 APP,选择微信登陆,跳转到微信。 20 | 4.点击微信登陆,则会跳转到第一个 APP 中,而不会跳转到第二个 APP。 21 | 22 | 我的 BUG 分析 23 | 24 | 这可能是因为,微信 sdk 传到微信的是一个 bundle identifier + 回调函数地址,回调时找到另一个 APP 再执行回调。 25 | 可能在某处进程的名称不分大小写,按照顺序找到了第一个去了。一旦两个 APP 版本不一致,可能执行到空的地址甚至发生不可预测的行为。 26 | 经过测试,发现同一样的版本的 APP 也发生了崩溃。 -------------------------------------------------------------------------------- /docs/blog/posts/ctf/2018-10-04-thuctf-2018-and-teaser-dragon-ctf-2018.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2018-10-04 4 | tags: [ctf,thuctf] 5 | categories: 6 | - ctf 7 | --- 8 | 9 | # THUCTF 2018 和 Teaser Dragon CTF 2018 小记 10 | 11 | 终于可以公开 [writeup](https://github.com/jiegec/ctf-writeups/tree/master/2018-09-28-thuctf2018) 了,大家也可以去看 twd2 写的 [writeup](https://twd2.me/archives/11097) 。这次是我第一次打 CTF,发现题目还挺有意思的,虽然也有一些题目做不出来,有拿钱还是美滋滋。 12 | 13 | 这次也认识了好些会打 CTF 的人吧,如 0x00, user1, igoodvegetable 等队伍的同学。一开始被蛤力橙叫来打比赛,我觉得心里挺没底的,然后花了很多时间做题目,一点一点还是做出了不少题目来。最精彩的还是结束以后,当知晓没做出来的题目的做法时候,会不自觉感叹题目的巧妙。也学到了一些梗: 14 | 15 | ```cpp 16 | #define 1000000007 twd2 17 | ``` 18 | 19 | 接着就参与了一下 Teaser Dragon CTF 2018,是个在线赛,许多人一起做题,只有 24 小时。看了下题目,除了签到题,其它题都比 THUCTF 2018 难多了,我只能围观他们做题。最后看到别人写的 writeup,真是太巧妙了,一环接一环,真的想不到。不过也有很麻烦的题目,特别是有的逆向的题目,太考验人的耐心了。 20 | 21 | 接下来就等待官方的 writeup 和别人的 writeup,学习一下别人的做法吧。 22 | -------------------------------------------------------------------------------- /docs/blog/posts/devops/certbot-route53-letsencrypt-iam.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2020-08-12 4 | tags: [certbot,route53,aws,letsencrypt,iam] 5 | categories: 6 | - devops 7 | --- 8 | 9 | # 用 certbot 申请 route53 上的域名的 LetsEncrypt 证书并上传到 IAM 10 | 11 | 最近遇到了 AWS Certificate Manager 的一些限制,所以只能用 IAM 证书。于是上网找到了通过 certbot 申请 LE 证书,通过 route53 API 验证的方法。 12 | 13 | 首先配置 aws 的 credential。然后,按照 certbot: 14 | 15 | ```shell 16 | pip3 install -U certbot certbot_dns_route53 17 | ``` 18 | 19 | 然后,就可以申请证书了: 20 | 21 | ```shell 22 | certbot certonly --dns-route53 --config-dir "./letsencrypt" --work-dir "./letsencrypt" --logs-dir "./letsencrypt" -d example.com --email a@b.com --agree-tos 23 | ``` 24 | 25 | 如果申请成功,在当前目录下可以找到证书。然后上传到 IAM: 26 | 27 | ```shell 28 | aws iam upload-server-certificate --server-certificate-name NameHere \ 29 | --certificate-body file://letsencrypt/live/example.com/cert.pem \ 30 | --private-key file://letsencrypt/live/example.com/privkey.pem \ 31 | --certificate-chain file://letsencrypt/live/example.com/chain.pem \ 32 | --path /cloudfront/ 33 | ``` 34 | 35 | 如果要用于 cloudfront,才需要最后的路径参数;否则可以去掉。这样就完成了 IAM 证书的上传。 -------------------------------------------------------------------------------- /docs/blog/posts/devops/configure-telegraf-for-cisco-wlc.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-10-19 4 | tags: [telegraf,cisco,wlc,snmp,mib] 5 | categories: 6 | - devops 7 | --- 8 | 9 | # 为 Cisco WLC 配置 Telegraf 10 | 11 | 最近想到可以给 Cisco WLC 也配置一下监控,查了一下,果然有一些方法。大概研究了一下,找到了方法: 12 | 13 | 把 https://github.com/haad/net-snmp/tree/master/mibs 和 https://github.com/zampat/neteye4/tree/master/monitoring/monitoring-plugins/wireless/cisco/mibs 目录下的所有 .txt 文件放到 /usr/share/snmp/mibs 目录下。 14 | 15 | 然后把 https://github.com/zampat/neteye4/blob/master/monitoring/monitoring-plugins/wireless/cisco/telegraf.conf 下面 snmp 的配置复制到 telegraf 配置中,然后修改一下 IP 地址。 16 | 17 | 确保 Cisco WLC 的 SNMP 的 Public Community 已经配置好,然后就可以拿到数据了。 18 | 19 | 目前可以拿到 WLC 自身的一些运行˙状态信息、AP 的信息、SSID 的信息和 Client 的信息,基本满足了我们的需求。 20 | 21 | 参考:https://www.neteye-blog.com/2019/08/monitoring-a-cisco-wireless-controller/ 22 | -------------------------------------------------------------------------------- /docs/blog/posts/devops/deploy-vcsa-under-esxi.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2018-05-20 4 | tags: [vmware,vcsa,esxi] 5 | categories: 6 | - devops 7 | --- 8 | 9 | # 在 VMware ESXi 上部署 vCSA 实践 10 | 11 | 首先获取 vCSA 的 ISO 镜像,挂载到 Linux 下(如 /mnt),然后找到 /mnt/vcsa-cli-installer/templates/install 下的 embedded_vCSA_on_ESXi.json,复制到其它目录并且修改必要的字段,第一个 `password` 为 ESXi 的登录密码,一会在安装的过程中再输入。下面有个 deployment_option,根据你的集群大小来选择,我则是用的 small。下面配置这台机器的 IP 地址,用内网地址即可。下面的 system_name 如果要写 fqdn,记得要让这个域名可以解析到正确的地址,不然会安装失败,我因此重装了一次。下面的密码都可以留空,在命令行中输入即可。SSO 为 vSphere Client 登录时用的密码和域名,默认用户名为 Administrator@domain_name (默认的话,则是 Administrator@vsphere.local) 这个用户名在安装结束的时候也会提示。下面的 CEIP 我选择关闭,设置为 false。 12 | 13 | 接下来进行安装。 14 | 15 | ```bash 16 | $ /mnt/vcsa-cli-installer/lin64/vcsa-deploy install /path/to/embedded_vCSA_on_ESXi.json --accept-eula 17 | ``` 18 | 19 | 一路输入密码,等待安装完毕即可。然后通过 443 端口进入 vSphere Client, 通过 5480 端口访问 vCSA 的管理页面。两个的密码可以不一样。 20 | 21 | 22 | 2018-05-21 Update: 想要设置 VMKernel 的 IPv6 网关的话,ESXi 中没找到配置的地方,但是在 vSphere Client 中可以进行相关配置。 23 | -------------------------------------------------------------------------------- /docs/blog/posts/devops/htpdate-for-time-sync.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-05-25 4 | tags: [ntp,ntpdate,http,httpdate] 5 | categories: 6 | - devops 7 | --- 8 | 9 | # 用 htpdate 替代 ntpdate 实现时间同步 10 | 11 | 最近用 ntpdate 的时候遇到了一些麻烦,时间同步总是遇到各种问题。后来搜了搜,发现了一个解决方案:htpdate,它通过 HTTP 头里的 Date 字段获取时间,虽然没有 ntp 那么精确,但是大多时候都够用。 12 | 13 | 用法见 [htpdate(8)](https://linux.die.net/man/8/htpdate) 。 14 | 15 | -------------------------------------------------------------------------------- /docs/blog/posts/devops/k3s-traefik-client-ip.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2022-02-22 4 | tags: [k8s,k3s,kubernetes,traefik,proxy] 5 | categories: 6 | - devops 7 | --- 8 | 9 | # 解决 k3s 中 traefik 不会转发 X-Forwarded-For 等头部的问题 10 | 11 | ## 背景 12 | 13 | 把应用迁移到 k3s 中,然后用了 traefik 作为 Ingress Controller,发现无法获得真实的用户 IP 地址,而是 cni 内部的地址。搜索了一番,找到了靠谱的解决方案: 14 | 15 | [Traefik Kubernetes Ingress and X-Forwarded-Headers](https://medium.com/@_jonas/traefik-kubernetes-ingresse-x-forwarded-headers-82194d319b0e) 16 | 17 | 具体来说,需要给 traefik 传额外的参数,方法是在 k3s 的配置目录下,添加一个 HelmChartConfig: 18 | 19 | ```shell 20 | # edit /var/lib/rancher/k3s/server/manifests/traefik-config.yaml 21 | # content: 22 | apiVersion: helm.cattle.io/v1 23 | kind: HelmChartConfig 24 | metadata: 25 | name: traefik 26 | namespace: kube-system 27 | spec: 28 | valuesContent: |- 29 | additionalArguments: 30 | - "--entryPoints.web.proxyProtocol.insecure" 31 | - "--entryPoints.web.forwardedHeaders.insecure" 32 | ``` 33 | 34 | 这样相当于让 traefik 信任前一级代理传过来的这些头部。更精细的话,还可以设置信任的 IP 地址范围,不过如果 traefik 不会直接暴露出去,就不用考虑这个问题了。 -------------------------------------------------------------------------------- /docs/blog/posts/devops/k8s-gitlab-runner.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2020-03-14 4 | tags: [k8s,kubernetes,gitlab,gitlab-runner] 5 | categories: 6 | - devops 7 | --- 8 | 9 | # 在 Kubernetes 集群上部署 gitlab—runner 10 | 11 | 按照 GitLab 上的教程试着把 gitlab-runner 部署到 k8s 集群上,发现异常地简单,所以简单做个笔记: 12 | 13 | 编辑 `values.yaml` 14 | 15 | ```yml 16 | gitlabUrl: GITLAB_URL 17 | runnerRegistrationToken: "REDACTED" 18 | rbac: 19 | create: true 20 | ``` 21 | 22 | 此处的信息按照 "Set up a specific Runner manually" 下面的提示填写。然后用 Helm 进行安装: 23 | 24 | ```bash 25 | $ helm repo add gitlab https://charts.gitlab.io 26 | $ kubectl create namespace gitlab-runner 27 | $ helm install --namespace gitlab-runner gitlab-runner -f values.yaml gitlab/gitlab-runner 28 | ``` 29 | 30 | 然后去 Kubernetes Dashboard 就可以看到部署的情况,回到 GitLab 也可以看到出现了“Runners activated for this project” ,表示配置成功。 31 | 32 | 参考配置:https://docs.gitlab.com/runner/install/kubernetes.html -------------------------------------------------------------------------------- /docs/blog/posts/devops/new-clean-env-on-old-os.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-03-21 4 | tags: [centos,alpine,slurm,redhat] 5 | categories: 6 | - devops 7 | --- 8 | 9 | # 在古老的 OS 上运行一个干净的新的环境 10 | 11 | 由于某些课程的原因,需要在一个 CentOS 7 上跑一些编译和运行代码。看到这么古老的软件,我心想不行,肯定要找新一些的软件来用。首先想到的是 tmux,于是按照[网上的脚本](https://gist.github.com/ryin/3106801) 很快装了一个 tmux 2.8 版本,果然好了很多。但是常用的很多软件依然是个问题。试了一下最近比较新的 code-server,因为 ABI 问题跑不起来。 12 | 13 | 于是开始想玩骚操作。首先想到的是 Gentoo Prefix,不过既然是别人的机器,还是算了。又找了 fakeroot 配合 alpine rootfs 的方案,但编译不过,估计是内核版本问题。又试了一下 fakechroot,但它需要配合 fakeroot 使用,这就凉了。 14 | 15 | 然后又找了一些替代方案。一是 uchroot,但由于 CMake 版本太老也编译不过。最后发现了 [PRoot]() ,直接提供 prebuilt 然后很容易就可以跑起来: 16 | 17 | ```bash 18 | $ ./proot -b /proc -b /dev -r $CHROOT /bin/busybox sh 19 | ``` 20 | 21 | 于是就进到了 alpine 的 rootfs 中,[下载地址](http://dl-cdn.alpinelinux.org/alpine/v3.9/releases/x86_64/alpine-minirootfs-3.9.2-x86_64.tar.gz)。进去以后发现没有编辑器,于是出来把 apk 的源改了,加了 resolv.conf,就成功地安装了很多很新的软件了。 -------------------------------------------------------------------------------- /docs/blog/posts/devops/run-command-in-container-directly.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2018-07-06 4 | tags: [container,lxc,systemd-nspawn,systemd-run] 5 | categories: 6 | - devops 7 | --- 8 | 9 | # 通过 systemd-run 直接在容器中执行命令 10 | 11 | 之前使用 `systemd-nspawn` 开了容器,然后通过 `machinectl shell` 进去,想要起一个服务然后丢到后台继续执行,但是发现离开这个 session 后这个进程总是会被杀掉,于是找了 `systemd-run` 的方案,即: 12 | 13 | ```shell 14 | systemd-run --machine machine_name_here absolute_path_to_executable args_here 15 | ``` 16 | 17 | 这样可以直接在容器中跑服务,而且用这个命令输出的临时 server 名称,还可以看到日志: 18 | 19 | ```shell 20 | journalctl --machine machine_name_here -u unit_name_above 21 | ``` 22 | -------------------------------------------------------------------------------- /docs/blog/posts/devops/use-jailkit-for-scp-only-user.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2020-03-09 4 | tags: [jailkit,chroot,scp] 5 | categories: 6 | - devops 7 | --- 8 | 9 | # 用 jailkit 限制用户仅 scp 10 | 11 | 最近需要用 scp 部署到生产机器,但又不想出现安全问题,所以用了 jailkit 的方法。首先是创建单独的用户,然后生成 ssh key 来认证,不再赘述。此时是可以 scp 了,但用户依然可以获得 shell,不够安全。 12 | 13 | 然后找到了下面参考链接,大概摘录一下所需要的命令和配置: 14 | 15 | ```shell 16 | mkdir /path/to/jail 17 | chown root:root /path/to/jail 18 | chmod 701 /path/to/jail 19 | jk_init -j /path/to/jail scp sftp jk_lsh 20 | jk_jailuser -m -j /path/to/jail jailed_user 21 | vim /path/to/jail/etc/jailkit/jk_lsh.ini 22 | # Add following lines 23 | [jailed_user] 24 | paths = /usr/bin, /usr/lib 25 | exectuables = /usr/bin/scp 26 | ``` 27 | 28 | 之后可以发现该用户的 shell 已经更改 jk_chrootsh,并且只能用 scp。 29 | 30 | 参考:https://blog.tinned-software.net/restrict-linux-user-to-scp-to-his-home-directory/ -------------------------------------------------------------------------------- /docs/blog/posts/devops/use-mussh-to-upgrade-multiple-machines.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2018-07-15 4 | tags: [debian,stretch,mussh] 5 | categories: 6 | - devops 7 | --- 8 | 9 | # 用 MuSSH 快速对多台机器进行软件包升级 10 | 11 | Debian Stretch 9.5 刚刚更新,自己手上有不少 stretch 的机器,于是顺手把他们都升级了。不过,这个过程比较繁琐,于是我采用了 MuSSH 的方法,让这个效率可以提高,即自动同时 SSH 到多台机器上进行更新。 12 | 13 | 首先编写 hostlist 文件,一行一个地址,分别对应每台机器。 14 | 15 | 然后采用 MuSSH 对每台机器执行同样的命令 16 | 17 | ```shell 18 | $ mussh -H hostlist -c 'apt update && apt upgrade -y' 19 | ``` 20 | 21 | 此时要求,ssh 上去以后有相应的权限。这个有许多方法,不再赘述。然后就可以看到一台台机器升级,打上安全补丁,爽啊。 22 | -------------------------------------------------------------------------------- /docs/blog/posts/hardware/1000baset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/1000baset.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/1000basex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/1000basex.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/16qam.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/16qam.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/3c6000.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/3c6000.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/4qam.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/4qam.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/acpi-notes-power.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/acpi-notes-power.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/amd-zen-1-btb-128b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/amd-zen-1-btb-128b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/amd-zen-1-btb-16b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/amd-zen-1-btb-16b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/amd-zen-1-btb-32b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/amd-zen-1-btb-32b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/amd-zen-1-btb-4b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/amd-zen-1-btb-4b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/amd-zen-1-btb-64b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/amd-zen-1-btb-64b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/amd-zen-1-btb-8b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/amd-zen-1-btb-8b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/amd-zen-2-btb-128b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/amd-zen-2-btb-128b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/amd-zen-2-btb-16b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/amd-zen-2-btb-16b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/amd-zen-2-btb-32b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/amd-zen-2-btb-32b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/amd-zen-2-btb-4b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/amd-zen-2-btb-4b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/amd-zen-2-btb-64b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/amd-zen-2-btb-64b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/amd-zen-2-btb-8b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/amd-zen-2-btb-8b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/amd-zen-3-btb-128b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/amd-zen-3-btb-128b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/amd-zen-3-btb-16b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/amd-zen-3-btb-16b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/amd-zen-3-btb-32b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/amd-zen-3-btb-32b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/amd-zen-3-btb-4b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/amd-zen-3-btb-4b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/amd-zen-3-btb-64b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/amd-zen-3-btb-64b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/amd-zen-3-btb-8b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/amd-zen-3-btb-8b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/amd-zen5-itlb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/amd-zen5-itlb.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/amd-zen5-l1dc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/amd-zen5-l1dc.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/amd-zen5-l1dtlb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/amd-zen5-l1dtlb.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/amd-zen5-l2itlb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/amd-zen5-l2itlb.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/amd-zen5-ras.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/amd-zen5-ras.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/amd-zen5-rf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/amd-zen5-rf.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/amd-zen5-rob.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/amd-zen5-rob.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m1-firestorm-btb-4b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m1-firestorm-btb-4b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m1-firestorm-btb-8b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m1-firestorm-btb-8b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m1-firestorm-fetch-bandwidth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m1-firestorm-fetch-bandwidth.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m1-firestorm-if-width.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m1-firestorm-if-width.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m1-firestorm-itlb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m1-firestorm-itlb.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m1-firestorm-l1dc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m1-firestorm-l1dc.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m1-firestorm-l1dtlb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m1-firestorm-l1dtlb.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m1-firestorm-l2tlb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m1-firestorm-l2tlb.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m1-firestorm-memory-dependency-predictor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m1-firestorm-memory-dependency-predictor.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m1-firestorm-prf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m1-firestorm-prf.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m1-firestorm-rs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m1-firestorm-rs.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m1-icestorm-btb-16b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m1-icestorm-btb-16b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m1-icestorm-btb-32b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m1-icestorm-btb-32b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m1-icestorm-btb-4b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m1-icestorm-btb-4b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m1-icestorm-btb-64b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m1-icestorm-btb-64b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m1-icestorm-btb-8b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m1-icestorm-btb-8b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m1-icestorm-fetch-bandwidth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m1-icestorm-fetch-bandwidth.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m1-icestorm-if-width.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m1-icestorm-if-width.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m1-icestorm-itlb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m1-icestorm-itlb.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m1-icestorm-l1dc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m1-icestorm-l1dc.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m1-icestorm-l1dtlb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m1-icestorm-l1dtlb.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m1-icestorm-l2tlb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m1-icestorm-l2tlb.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m1-icestorm-memory-dependency-predictor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m1-icestorm-memory-dependency-predictor.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m1-icestorm-prf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m1-icestorm-prf.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m1-icestorm-rob.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m1-icestorm-rob.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m1-icestorm-rs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m1-icestorm-rs.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m4-e-core-btb-16b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m4-e-core-btb-16b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m4-e-core-btb-4b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m4-e-core-btb-4b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m4-e-core-btb-8b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m4-e-core-btb-8b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m4-e-core-fetch-bandwidth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m4-e-core-fetch-bandwidth.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m4-e-core-if-width.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m4-e-core-if-width.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m4-e-core-itlb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m4-e-core-itlb.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m4-e-core-l1dc-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m4-e-core-l1dc-2.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m4-e-core-l1dc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m4-e-core-l1dc.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m4-e-core-l1dtlb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m4-e-core-l1dtlb.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m4-e-core-l2tlb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m4-e-core-l2tlb.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m4-e-core-memory-dependency-predictor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m4-e-core-memory-dependency-predictor.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m4-e-core-rob-load.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m4-e-core-rob-load.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m4-e-core-rob.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m4-e-core-rob.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m4-e-core-rs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m4-e-core-rs.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m4-neoverse-v2-2-taken.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m4-neoverse-v2-2-taken.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m4-p-core-btb-16b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m4-p-core-btb-16b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m4-p-core-btb-32b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m4-p-core-btb-32b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m4-p-core-btb-4b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m4-p-core-btb-4b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m4-p-core-btb-64b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m4-p-core-btb-64b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m4-p-core-btb-8b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m4-p-core-btb-8b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m4-p-core-fetch-bandwidth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m4-p-core-fetch-bandwidth.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m4-p-core-if-width.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m4-p-core-if-width.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m4-p-core-itlb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m4-p-core-itlb.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m4-p-core-l1dc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m4-p-core-l1dc.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m4-p-core-l1dtlb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m4-p-core-l1dtlb.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m4-p-core-l2tlb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m4-p-core-l2tlb.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m4-p-core-memory-dependency-predictor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m4-p-core-memory-dependency-predictor.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m4-p-core-prf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m4-p-core-prf.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m4-p-core-rob-load.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m4-p-core-rob-load.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m4-p-core-rob.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m4-p-core-rob.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/apple-m4-p-core-rs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/apple-m4-p-core-rs.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/arm-m1-macbookair-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/arm-m1-macbookair-1.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/arm-m1-macbookair-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/arm-m1-macbookair-2.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/arm-neoverse-n1-btb-128b-model.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/arm-neoverse-n1-btb-128b-model.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/arm-neoverse-n1-btb-128b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/arm-neoverse-n1-btb-128b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/arm-neoverse-n1-btb-16b-model.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/arm-neoverse-n1-btb-16b-model.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/arm-neoverse-n1-btb-16b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/arm-neoverse-n1-btb-16b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/arm-neoverse-n1-btb-256b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/arm-neoverse-n1-btb-256b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/arm-neoverse-n1-btb-32b-model.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/arm-neoverse-n1-btb-32b-model.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/arm-neoverse-n1-btb-32b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/arm-neoverse-n1-btb-32b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/arm-neoverse-n1-btb-4b-model.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/arm-neoverse-n1-btb-4b-model.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/arm-neoverse-n1-btb-4b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/arm-neoverse-n1-btb-4b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/arm-neoverse-n1-btb-64b-model.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/arm-neoverse-n1-btb-64b-model.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/arm-neoverse-n1-btb-64b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/arm-neoverse-n1-btb-64b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/arm-neoverse-n1-btb-8b-model.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/arm-neoverse-n1-btb-8b-model.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/arm-neoverse-n1-btb-8b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/arm-neoverse-n1-btb-8b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/arm-neoverse-v1-btb-16b-cond.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/arm-neoverse-v1-btb-16b-cond.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/arm-neoverse-v1-btb-16b-uncond.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/arm-neoverse-v1-btb-16b-uncond.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/arm-neoverse-v1-btb-32b-cond.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/arm-neoverse-v1-btb-32b-cond.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/arm-neoverse-v1-btb-32b-uncond.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/arm-neoverse-v1-btb-32b-uncond.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/arm-neoverse-v1-btb-4b-cond.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/arm-neoverse-v1-btb-4b-cond.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/arm-neoverse-v1-btb-4b-uncond.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/arm-neoverse-v1-btb-4b-uncond.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/arm-neoverse-v1-btb-64b-cond.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/arm-neoverse-v1-btb-64b-cond.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/arm-neoverse-v1-btb-64b-uncond.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/arm-neoverse-v1-btb-64b-uncond.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/arm-neoverse-v1-btb-8b-cond.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/arm-neoverse-v1-btb-8b-cond.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/arm-neoverse-v1-btb-8b-uncond.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/arm-neoverse-v1-btb-8b-uncond.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/arm-neoverse-v2-fetch-bandwidth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/arm-neoverse-v2-fetch-bandwidth.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/arm-neoverse-v2-itlb-l2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/arm-neoverse-v2-itlb-l2.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/arm-neoverse-v2-itlb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/arm-neoverse-v2-itlb.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/arm-neoverse-v2-l1dc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/arm-neoverse-v2-l1dc.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/arm-neoverse-v2-l1dtlb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/arm-neoverse-v2-l1dtlb.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/arm-neoverse-v2-memory-dependency-predictor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/arm-neoverse-v2-memory-dependency-predictor.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/arm-neoverse-v2-mop-cache.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/arm-neoverse-v2-mop-cache.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/arm-neoverse-v2-return-stack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/arm-neoverse-v2-return-stack.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/ask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/ask.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/bfsk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/bfsk.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/bpsk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/bpsk.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/brief-into-ooo-2-amd-way-prediction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/brief-into-ooo-2-amd-way-prediction.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/brief-into-ooo-2-apple-lsu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/brief-into-ooo-2-apple-lsu.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/brief-into-ooo-2-way-prediction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/brief-into-ooo-2-way-prediction.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/brief-into-ooo-3-fdip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/brief-into-ooo-3-fdip.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/brief-into-ooo-3-ftb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/brief-into-ooo-3-ftb.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/brief-into-ooo-3-intel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/brief-into-ooo-3-intel.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/brief-into-ooo-3-sfb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/brief-into-ooo-3-sfb.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/ch32v307.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/ch32v307.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/ddr-clam-shell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/ddr-clam-shell.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/ddr-fly-by.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/ddr-fly-by.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/ddr-mirror.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/ddr-mirror.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/ddr-rank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/ddr-rank.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/ddr4-waveform.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/ddr4-waveform.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/digital-modulation.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2023-03-19 4 | tags: [modulation,digital] 5 | categories: 6 | - hardware 7 | --- 8 | 9 | # 数字调制 10 | 11 | ## 背景 12 | 13 | 最近在学习 802.11,需要学习很多数字调制相关的知识,因此自学了一下通信原理。 14 | 15 | 16 | 17 | ## ASK 18 | 19 | Amplitude-Shift Keying 调整载波信号的幅度 20 | 21 | ![](./ask.png) 22 | 23 | ## FSK 24 | 25 | Frequency-Shift Keying 调整载波信号的频率 26 | 27 | ![](./bfsk.png) 28 | 29 | ## PSK 30 | 31 | Phase-Shift Keying 调整载波信号的相位 32 | 33 | ![](./bpsk.png) 34 | 35 | DPSK(Differential Phase-Shift Keying) 是在 PSK 的基础上,把相位的绝对值变成相位的差。例如 BPSK 传输 0 对应 0 度相位,传输 1 对应 180 度相位,那么 DBPSK 传输 0 时保持相位和上一个 symbol 一样,传输 1 时相位相对上一个 symbol 增加 180 度。 36 | 37 | ## QAM 38 | 39 | Quadrature Amplitude Modulation 两个正交载波信号之和,调整两个信号的相位和幅度 40 | 41 | ### 4-QAM 42 | 43 | 4-QAM 也等价于 4-PSK(Phase-Shift Keying),相当于调整一个载波信号的相位。 44 | 45 | ![](./4qam.png) 46 | 47 | ### 16-QAM 48 | 49 | ![](./16qam.png) -------------------------------------------------------------------------------- /docs/blog/posts/hardware/dram-hbm-stack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/dram-hbm-stack.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/gcd-gds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/gcd-gds.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/huawei-portable-wifi.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2017-08-08 4 | tags: [huawei,wifi] 5 | categories: 6 | - hardware 7 | --- 8 | 9 | # 华为随行 WiFi 2 mini 开箱 10 | 11 | 前段时间,我办了 4G 升级,移动送了一张副卡,有不少免费的流量,由于我的手机是 iPhone 不支持双卡,老爸就借了我他的 GlocalMe 当成 MiFi 来用,不过呢 GlocalMe 放在这里当然是大材小用了,所以我就网购了华为随行 WiFi 2 mini,把我的副卡装上一个壳放进去就可以了!把这个 MiFi 插入电脑,会弹出一个目录,里面有 Win/Mac 的驱动安装文件,打开后在网络设置里就有 HUAWEI_MOBILE 的连接了,并自动打开网络配置界面。设置一下 SSID 和密码,就能正常使用了,手机连上也很正常,手机上可以下载 HUAWEI HiLink 来配置 MiFi,挺爽的。随赠的有联通的上网卡,不过我准备在北京买个上网卡放 MiFi 里面用。 12 | -------------------------------------------------------------------------------- /docs/blog/posts/hardware/ib-am.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/ib-am.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/ib-comparison.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/ib-comparison.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/ib-qp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/ib-qp.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/iba.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/iba.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/ibex-gds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/ibex-gds.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/intel-golden-cove-dtlb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/intel-golden-cove-dtlb.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/intel-golden-cove-fetch-bandwidth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/intel-golden-cove-fetch-bandwidth.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/intel-golden-cove-itlb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/intel-golden-cove-itlb.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/intel-golden-cove-l1dc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/intel-golden-cove-l1dc.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/intel-golden-cove-l2c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/intel-golden-cove-l2c.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/intel-golden-cove-l2tlb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/intel-golden-cove-l2tlb.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/intel-golden-cove-prefetcher-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/intel-golden-cove-prefetcher-1.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/intel-golden-cove-prefetcher-13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/intel-golden-cove-prefetcher-13.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/intel-golden-cove-prefetcher-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/intel-golden-cove-prefetcher-5.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/intel-golden-cove-prefetcher-64b-stride-disable-prefetcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/intel-golden-cove-prefetcher-64b-stride-disable-prefetcher.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/intel-golden-cove-prefetcher-64b-stride.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/intel-golden-cove-prefetcher-64b-stride.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/intel-golden-cove-prefetcher-gracemont-comparison.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/intel-golden-cove-prefetcher-gracemont-comparison.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/intel-golden-cove-rob.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/intel-golden-cove-rob.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/intel-golden-cove-rs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/intel-golden-cove-rs.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/intel-gracemont-dtlb-size.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/intel-gracemont-dtlb-size.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/intel-gracemont-fetch-bandwidth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/intel-gracemont-fetch-bandwidth.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/intel-gracemont-itlb-size.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/intel-gracemont-itlb-size.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/intel-gracemont-l2-dtlb-size.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/intel-gracemont-l2-dtlb-size.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/intel-gracemont-rob-size.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/intel-gracemont-rob-size.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/intel-gracemont-rs-size-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/intel-gracemont-rs-size-1.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/intel-gracemont-rs-size-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/intel-gracemont-rs-size-2.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/intel-gracemont-rs-size-golden-cove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/intel-gracemont-rs-size-golden-cove.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/intel-redwood-cove-dtlb-size.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/intel-redwood-cove-dtlb-size.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/intel-redwood-cove-fetch-bandwidth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/intel-redwood-cove-fetch-bandwidth.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/intel-redwood-cove-itlb-size.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/intel-redwood-cove-itlb-size.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/intel-redwood-cove-rob-size.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/intel-redwood-cove-rob-size.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/ipmi-kcs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/ipmi-kcs.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/loongarch-cpu-2k3000.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/loongarch-cpu-2k3000.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/loongarch-cpu-3a6000.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/loongarch-cpu-3a6000.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/loongarchlinux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/loongarchlinux.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/ls3a6000-memory-latency.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/ls3a6000-memory-latency.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/memory-integrity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/memory-integrity.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/memory-model-and-memory-ordering-order.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/memory-model-and-memory-ordering-order.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/memory-model-and-memory-ordering-sc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/memory-model-and-memory-ordering-sc.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/memory-model-and-memory-ordering-weak-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/memory-model-and-memory-ordering-weak-2.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/memory-model-and-memory-ordering-weak.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/memory-model-and-memory-ordering-weak.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/memory-model-and-memory-ordering-x86-tso.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/memory-model-and-memory-ordering-x86-tso.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/mountable-merkle-tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/mountable-merkle-tree.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/my-first-fpga-experience-on-lichee-tang.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2018-10-07 4 | tags: [verilog,licheetang,fpga,uart] 5 | categories: 6 | - hardware 7 | --- 8 | 9 | # 在荔枝糖(Lichee Tang)上初次体验 FPGA 10 | 11 | 今天从张宇翔学长那拿到了 [荔枝糖(Lichee Tang)](http://tang.lichee.pro/) 的 FPGA 板子,于是立即开始把前段时间学到的 Verilog 应用上来。不过想到现在我手上没有多少外设,然后又必须远程到 Windows 电脑上去操作,于是先实现了一下 UART 通信。 12 | 13 | 在网上找到了 [ben-marshall/uart](https://github.com/ben-marshall/uart) 一个简易的实现,很快做到了一直在串口上打印 `A` 字符。接着我开始尝试实现一个简单的串口回显。一开始,我直接把 UART 读到的数据直接输出,果然可以了,但是一旦传输速率跟不上了,就会丢失数据。于是我添加了 FIFO IP 核,然后把读入的数据存入 FIFO,又从 FIFO 中读取数据写入到 UART 中去。不过发现了一个小 BUG:每次打印的是倒数第二次输入的字符,即丢失了第一个字符。在张宇翔学长的帮助下找到了问题:当 FIFO 的读使能信号为高时,其数据在下一个时钟周期才来,于是解决方案就是等到数据来的时候再向 UART 中写数据: 14 | 15 | ```verilog 16 | always @ (posedge clk_in) begin 17 | uart_tx_en <= uart_fifo_re; 18 | end 19 | ``` 20 | 21 | 这样就解决了这个问题。完整代码在 [jiegec/learn_licheetang](https://github.com/jiegec/learn_licheetang) 中。 22 | -------------------------------------------------------------------------------- /docs/blog/posts/hardware/ofdm-circuit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/ofdm-circuit.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/pcb-notes-coplanar-wave-guide-ground-plane.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/pcb-notes-coplanar-wave-guide-ground-plane.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/pcb-notes-coplanar-wave-guide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/pcb-notes-coplanar-wave-guide.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/pcb-notes-couple-microstrip-line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/pcb-notes-couple-microstrip-line.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/pcb-notes-microstrip-line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/pcb-notes-microstrip-line.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/pcie-ats.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/pcie-ats.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/pcie-bifurcation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/pcie-bifurcation.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/pcie-bridge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/pcie-bridge.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/pcie-ecam.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/pcie-ecam.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/pcie-enum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/pcie-enum.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/pcie-layer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/pcie-layer.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/pcie-system.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/pcie-system.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/pcie-tlp-link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/pcie-tlp-link.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/pcie-tlp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/pcie-tlp.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/pcie-type1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/pcie-type1.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/pulseview-dslogic.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-08-02 4 | tags: [la,logicanalyzer,sigrok,pulseview] 5 | categories: 6 | - hardware 7 | --- 8 | 9 | # 用 PulseView 配合 DSLogic 调试 SPI Flash 10 | 11 | 最近需要用到逻辑分析仪来调试 SPI Flash,设备是 DreamSourceLab 的 DSLogic,最开始用的是官方的 DSView,确实能够抓到 SPI 的信号,也可以解析出一些 SPI Flash 的数据,但是很多是不完整的。 12 | 13 | 后来把源码下载下来,发现是基于 sigrok 和 PulseView 做的一个魔改版,然后 sigrok 官网上最新的版本已经支持了 DSLogic,于是就用 PulseView 替代 DSView。一开始遇到的问题是没有 firmware,一番搜索找到了[解决方案](https://sigrok.org/wiki/DreamSourceLab_DSLogic),按照脚本下载好文件即可。 14 | 15 | 进到 PulseView 以后,把 SPI 的四路信号接上,然后抓了一段信号,解析: 16 | 17 | ![](./pulseview.png) 18 | 19 | 可以看到它正确地解析出来了 Fast Read 命令。由于 DSView 它 fork 自一个比较老的版本,所以它并不能正确解析出来。 20 | 21 | P.S. Linux 下它界面显示比 macOS 下好看一些,估计是没有适配好。 22 | -------------------------------------------------------------------------------- /docs/blog/posts/hardware/pulseview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/pulseview.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/qualcomm-oryon-btb-4b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/qualcomm-oryon-btb-4b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/qualcomm-oryon-btb-8b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/qualcomm-oryon-btb-8b.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/qualcomm-oryon-dtlb-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/qualcomm-oryon-dtlb-7.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/qualcomm-oryon-dtlb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/qualcomm-oryon-dtlb.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/qualcomm-oryon-fetch-bandwidth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/qualcomm-oryon-fetch-bandwidth.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/qualcomm-oryon-if-width.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/qualcomm-oryon-if-width.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/qualcomm-oryon-itlb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/qualcomm-oryon-itlb.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/qualcomm-oryon-l1dc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/qualcomm-oryon-l1dc.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/qualcomm-oryon-l2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/qualcomm-oryon-l2.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/qualcomm-oryon-l2tlb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/qualcomm-oryon-l2tlb.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/qualcomm-oryon-memory-dependency-predictor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/qualcomm-oryon-memory-dependency-predictor.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/qualcomm-oryon-prefetcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/qualcomm-oryon-prefetcher.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/qualcomm-oryon-prf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/qualcomm-oryon-prf.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/qualcomm-oryon-rob.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/qualcomm-oryon-rob.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/qualcomm-oryon-rs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/qualcomm-oryon-rs.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/qualcomm-oryon-tlb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/qualcomm-oryon-tlb.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/router-on-fpga-3.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-06-02 4 | tags: [router,fpga,router-on-fpga] 5 | categories: 6 | - hardware 7 | --- 8 | 9 | # 在 FPGA 上实现路由器(3) 10 | 11 | ## 前言 12 | 13 | 又半个月过去了,在写了上篇系列[博文](router-on-fpga-2.md)之后也是做了很多新的更改。上次做的主要是关于性能方面的提升,怎么提高频率,从而达到比较大的流量,而这段时间做的则是功能,做实现 RIP 协议和转发表的动态更新。 14 | 15 | ## 软件部分 16 | 17 | 软件部分目前是用 C 代码写的,用 Xilinx SDK 提供的各个 AXI 外设的驱动和 PS 自己的驱动,实现了所需要的,RIP 协议的处理,转发表的更新和统计信息的读取。 18 | 19 | 实际上做的时候比较粗暴,主要是通过三种 AXI 外设与硬件部分进行交互:AXI Stream FIFO,AXI GPIO 和 AXI BRAM Controller。其中 AXI Stream FIFO 是用来接收和发送需要 CPU 处理的以太网帧的,AXI GPIO 则是用来读取统计的信息,AXI BRAM Controller 是用来读写转发表的。最后在顶层设计中把这些外设连接起来。 20 | 21 | ## 硬件部分 22 | 23 | 硬件部分还是继续之前的部分往下写,添加了统计信息,直接暴露出去,让 CPU 走 AXI GPIO 读,因为不需要很高的精确度;转发表本身,一开始想的是自己写一些接口转换,后来发现,直接用 True Dual Port RAM 然后把一个 port 暴露给 AXI BRAM Controller 即可,免去了各种麻烦,PS 可以直接进行修改,不需要额外的工作。 24 | 25 | ## 最终效果 26 | 27 | 为了测试这套东西是否正常工作,就开了两个 Arch Linux 的虚拟机,分别 Bridge 到两个千兆的 USB 网卡上,都连到 FPGA 上。然后在两边都配上了 BIRD,配置 RIP 和一些路由,确实能更新硬件的转发表,并两边的 RIP 可以学习到对方的路由。 28 | 29 | -------------------------------------------------------------------------------- /docs/blog/posts/hardware/router-tcp.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/router-tcp.jpg -------------------------------------------------------------------------------- /docs/blog/posts/hardware/router-udp.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/router-udp.jpg -------------------------------------------------------------------------------- /docs/blog/posts/hardware/rtl8201f-phyad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/rtl8201f-phyad.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/rtl8211-phyad-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/rtl8211-phyad-0.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/rtlsdr-analyze-waterfall-fm974.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/rtlsdr-analyze-waterfall-fm974.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/rtlsdr-analyze-waterfall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/rtlsdr-analyze-waterfall.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/rtlsdr-analyze.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/rtlsdr-analyze.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/rtlsdr-fm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/rtlsdr-fm.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/samsung-exynos-cpu-frontend-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/samsung-exynos-cpu-frontend-1.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/samsung-exynos-cpu-mbtb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/samsung-exynos-cpu-mbtb.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/samsung-exynos-cpu-uop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/samsung-exynos-cpu-uop.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/scv2000.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/scv2000.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/sff8087.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/sff8087.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/sff8088.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/sff8088.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/sff8482.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/sff8482.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/sff8611.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/sff8611.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/sff8614.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/sff8614.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/sff8639.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/sff8639.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/simulate-chisel3-on-vivado.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2020-02-10 4 | tags: [vivado,chisel,verilog] 5 | categories: 6 | - hardware 7 | --- 8 | 9 | # 在 Vivado 中对 chisel3 产生的 verilog 代码仿真 10 | 11 | 默认情况下,chisel3 生成的 verilog 代码在 Vivado 中仿真会出现很多信号大面积变成 X。解决方法在一个不起眼的 Wiki 页面:[Randomization flags](https://github.com/freechipsproject/chisel3/wiki/Randomization-flags): 12 | 13 | ```verilog 14 | `define RANDOMIZE_REG_INIT 15 | `define RANDOMIZE_MEM_INIT 16 | `define RANDOMIZE_GARBAGE_ASSIGN 17 | `define RANDOMIZE_INVALID_ASSIGN 18 | ``` 19 | 20 | 在生成的 verilog 前面加上这四句,就可以正常仿真了。 -------------------------------------------------------------------------------- /docs/blog/posts/hardware/sram-read-diagram.drawio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/sram-read-diagram.drawio.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/sram-read-param.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/sram-read-param.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/sram-read.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/sram-read.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/sram-write-timing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/sram-write-timing.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/sram-write.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/sram-write.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/sram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/sram.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/tiny-rocket-gds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/tiny-rocket-gds.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/wireless-network-80211-channels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/wireless-network-80211-channels.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/wireless-network-80211-frame-control.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/wireless-network-80211-frame-control.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/wireless-network-80211-mac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/wireless-network-80211-mac.png -------------------------------------------------------------------------------- /docs/blog/posts/hardware/xilinx-pcs-pma.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/hardware/xilinx-pcs-pma.png -------------------------------------------------------------------------------- /docs/blog/posts/meta/2018-11-17 07.52.06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/meta/2018-11-17 07.52.06.jpg -------------------------------------------------------------------------------- /docs/blog/posts/meta/blog-host-migration.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-01-11 4 | tags: [site] 5 | categories: 6 | - meta 7 | --- 8 | 9 | # 域名已经迁移到 jiege.ch 10 | 11 | 从买新域名到迁移大概用了一个多小时,现在已经恢复访问。原有的地址也会直接 301 到新的域名上来。 12 | 13 | 仍然 Host 在 Github Pages 上。还会继续更新,不会跑路的(逃 -------------------------------------------------------------------------------- /docs/blog/posts/meta/migrate-from-disqus-to-giscus.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2024-11-10 4 | tags: [site] 5 | categories: 6 | - meta 7 | --- 8 | 9 | # 把评论系统从 Disqus 迁移到 Giscus 10 | 11 | Disqus 要加广告了,于是本博客的评论系统迁移到了 Giscus。 -------------------------------------------------------------------------------- /docs/blog/posts/meta/migrate-from-jekyll-to-hugo.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-05-02 4 | tags: [site] 5 | categories: 6 | - meta 7 | --- 8 | 9 | # 把博客生成器从 Jekyll 迁移到 Hugo 10 | 11 | Jekyll 生成一次实在太慢,忍受不了,于是换成了 Hugo。为了保持链接不变,花了不少的时间在重命名上,不过目前似乎都完成了,希望没有导致 404 的问题。 12 | 13 | 新的主题还是好看很多的。Enjoy! -------------------------------------------------------------------------------- /docs/blog/posts/meta/more-than-100-posts.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2018-11-17 4 | tags: [blog] 5 | categories: 6 | - meta 7 | --- 8 | 9 | # 超过 100 篇博文了! 10 | 11 | 今天看了下,发现算上这一篇,这个博客已经有 103 篇文章了,这个数量还是蛮多的,特此庆祝一下。我也顺带做了一下简单的数据处理,得到这么一张图: 12 | 13 | ![graph](./2018-11-17 07.52.06.jpg) 14 | 15 | 目测数量与干活的频率相关性很高啊。 -------------------------------------------------------------------------------- /docs/blog/posts/meta/the-beginning-of-my-blog.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2016-02-12 4 | tags: [meta] 5 | categories: 6 | - meta 7 | --- 8 | This is the first blog here. 9 | 10 | I am talkative deep inside, but i do not have enough opportunities to express myself. Most of the listeners can't understand me. So i would like to write something on my blog. Kinda outdated media, though. Whatever, the first step is always the hardest. 11 | 12 | That's all. Thanks Emacs, Github Pages, Jekyll and Ruby to support this blog. -------------------------------------------------------------------------------- /docs/blog/posts/misc/deprecating-jiege-ch.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2022-01-12 4 | tags: [website] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # jiege.ch 停用 10 | 11 | jiege.ch 域名不再续费,之后一直继续用 jia.je 这个域名。 -------------------------------------------------------------------------------- /docs/blog/posts/misc/jiegec-xyz-down.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-04-22 4 | tags: [jiegecxyz,domain] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # jiegec.xyz 域名即将停用 10 | 11 | 最早买域名的时候,买的是 jiegec.xyz,后来发现了更好的域名,于是这个老域名一直就是一个简单的网页转址。很快,它就要过期了,我也不打算续费了,大家继续用我的新域名吧。 12 | 13 | P.S. 忽然发现我之前配的 acme.sh 没有配自动 `nginx -s reload` ,所以之前 ssl 证书时间凉了。 14 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/learn-project-preview.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-02-17 4 | tags: [learnproject,preview] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 预告 Learn-Project 4.0 版 10 | 11 | 不知道大家听没听说过 Google Chrome 有个插件,叫做 Learn Project,是一个网络学堂的改良前端。不过,随着网络学堂的不断更(xia)新(gao),它已经不再适用于现在的版本。于是,哈利橙([@Harry-Chen](https://github.com/Harry-Chen))决定利用寒假时间,在今天(2.17)之前完成 Learn Project 4.0 的开发。为什么叫 4.0 呢,因为哈利橙课程的 GPA 众数是 4.0。这个版本采用先进的 React 框架编写(Vue 塞高),使用了 Material Ui 作为界面框架(这我觉得可以),目前的一个参考图(图源哈利橙): 12 | 13 | ![](./learn-project.png) 14 | 15 | 看那满眼的高分数,希望 Learn Project 4.0 能在 flag 倒下之前完成。 16 | 17 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/learn-project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/misc/learn-project.png -------------------------------------------------------------------------------- /docs/blog/posts/misc/sigs.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2021-07-19 4 | tags: [sigs,tsinghua,email] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 轶事一则 10 | 11 | 7.17 号周六的时候,一位朋友 [@elenacliu](https://github.com/elenacliu) 发现[深研院网站](https://www.sigs.tsinghua.edu.cn/2020/0923/c118a21164/page.htm)的一个[文档链接](https://www.sigs.tsinghua.edu.cn/_upload/article/files/81/7c/a5c0421f4e418de32ef13701da95/448b40b3-87e2-4026-832e-28b113a01f4a.pdf),文档中标题写的是 2021,但是网页的标题显示的是 2006 年。于是我发邮件给深研院的招生办,抄送本部的研招办,提交了这个 issue。 12 | 13 | 7.19 号周一上午的时候,本部的研招办回复了一封邮件,没有理解我想表达的意思,可能以为我是要报考的学生,让我关注明年发布的文档。 14 | 15 | 7.19 号周一下午的时候,深研院招生办回复了邮件,说“谢谢你的反馈”,不过没有提到是否进行了修复。我晚上再查看页面的时候,发现[新的文档链接](https://www.sigs.tsinghua.edu.cn/_upload/article/files/81/7c/a5c0421f4e418de32ef13701da95/7917dd50-ad49-4664-a275-821fab3bfd87.pdf)已经修复了问题。 -------------------------------------------------------------------------------- /docs/blog/posts/misc/thuwc-2019.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-01-25 4 | tags: [thuwc,oi,wc] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # THUWC 2019 小记 10 | 11 | 前段时间,以工作人员的身份参加了在广州二中举办的 THUWC 2019。作为一只菜鸡 OI 选手,我没想到过我会以另一种身份参与一个我本来没能参与的活动,就好像以暑校辅导员的身份参与清华暑校一样。 12 | 13 | 提早来到了赛场,布置场地,然后把机考的各个流程都过一遍,记住各个细节,各方面都有条不紊地进行,看着第一场前同学们特别激动地冲入考场,到最后一场同学们考完后的释放,在同学们身上看到了很多不成熟的样子,看到了兴奋想要和同伴分享的喜悦,也看到了不甘的眼泪。 14 | 15 | 希望各位强大的选手们可以来到九字班、零字班乃至一字班,享受课改的乐趣吧嘿嘿嘿 -------------------------------------------------------------------------------- /docs/blog/posts/misc/unicode-en-dash-mistake.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2018-10-13 4 | tags: [unicode,pdf] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # Unicode En Dash 小坑 10 | 11 | 今天有同学问到我这个问题: 12 | 13 | ``` 14 | $ gcc -o ph ph.c –lpthread 15 | ``` 16 | 17 | 为啥不工作。我怎么看都觉得没啥问题,一开始以为是找不到 pthread,但马上又排除了。想了下会不会是有隐藏的字符,于是让同学 `pbpaste | xxd` 一下,果然发现这里的 `–` 是 `\xe2\x80\x93` ,查了下是 Unicode 里的 En Dash。由于这是从 PDF 里直接拷贝出来的,所以凉了。改成正常的短横杠即可。 -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-10.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-02-08 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 10 期 10 | 11 | 新年快乐! 12 | 13 | 1. Haskell to WASM compiler https://github.com/tweag/asterius 14 | 2. A ssh tarpit that sends endless banner https://github.com/skeeto/endlessh 15 | 3. Use rust to write UEFI app https://github.com/rust-osdev/uefi-rs 16 | 4. 神奇的小游戏 https://yeahpython.github.io/game/game.html 17 | 5. 又一个后端 rust web 框架 https://github.com/seanmonstar/warp 18 | 6. 挺酷的一个网站 https://github.com/pomber/github-history 19 | 7. ws 调试工具 https://github.com/vi/websocat 20 | 8. React Hooks 进入正式版 https://reactjs.org/blog/2019/02/06/react-v16.8.0.html 21 | 9. 又一个关于硬件的 wiki https://wikidevi.com/wiki/Main_Page 22 | 10. virtio-fs 项目 旨在替代 virtio-9p https://virtio-fs.gitlab.io/ 23 | 11. SergioBenitez 镜像了一份去年的 CS140e https://cs140e.sergio.bz/ 24 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-11.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-02-16 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 11 期 10 | 11 | 对不起迟到了( 12 | 13 | 1. Google 的 fuzzing 家族又来了个新成员 太喜欢造轮子了 https://github.com/google/clusterfuzz 14 | 2. 有趣的文本生成工具 https://github.com/TheBerkin/rant 15 | 3. 又一个 side channel attack https://www.nccgroup.trust/us/about-us/newsroom-and-events/blog/2019/february/downgrade-attack-on-tls-1.3-and-vulnerabilities-in-major-tls-libraries/ 16 | 4. 来自 Prof Fan 的一个 cf dns 权限限制分发的工具 https://github.com/ProfFan/cloudflare-proxy-rs 17 | 5. 部署到了我的博客的小工具 大家体会到了吗 https://instant.page/ 18 | 6. 教育性质的 C on web https://vasyop.github.io/miniC-hosting/ 19 | 7. 激活清华教育版 win10? --> dig +short TXT win10.harrychen.xyz 20 | 8. windows95 v2.0 发布(误 https://github.com/felixrieseberg/windows95/releases/tag/v2.0.0 21 | 9. 已经部署到 tuna 的 rustup-mirror crate https://github.com/jiegec/rustup-mirror 22 | 10. Forth 也能有 http 服务端框架 http://www.1-9-9-1.com/ 23 | 11. bartender 的开源替代 实测可用 https://github.com/Mortennn/Dozer 24 | 12. 给不支持 pac 的客户端在 http proxy 上套一层 https://github.com/williambailey/pacproxy 25 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-14.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-03-08 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 14 期 10 | 11 | 最近沉迷写 OS,没怎么搜罗新的东西( 12 | 13 | 1. 用 Docker 做交叉编译 https://github.com/dockcross/dockcross#dockcross 14 | 2. tar inplace extraction 有意思的思路 https://gitlab.com/antonok/taro 15 | 3. los 16.0 发布 基于 Android Pie https://lineageos.org/Changelog-22/ 16 | 4. Rust 1.33.0 Pin 进入 stable https://blog.rust-lang.org/2019/02/28/Rust-1.33.0.html 17 | 5. Rust 用于编写 cli 软件的工具库 https://rust-lang-nursery.github.io/cli-wg/index.html 18 | 6. 自动使用 CI 发布二进制 prebuilt 的模板 https://github.com/japaric/trust 19 | 7. 转换 gif 到 xlsx 很神奇 https://github.com/pugwonk/gif2xlsx/blob/master/README.md 20 | 8. Go REPL https://github.com/cosmos72/gomacro 21 | 9. 基于区块链的论坛海星 其实是区块链数据库 https://github.com/CovenantSQL/CovenantForum 22 | 10. Rime emoji 嵌入输入法 https://github.com/rime/rime-emoji 23 | 11. 一个神奇的数据库 https://github.com/mit-pdos/noria 24 | 12. 一个讲内核的 gitbook https://richardweiyang.gitbooks.io/kernel-exploring/ 25 | 13. 用 React 写桌面控件 http://tracesof.net/uebersicht/ 26 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-15.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-03-16 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 15 期 10 | 11 | 继续沉迷写 OS 12 | 13 | 1. 嵌入 graphics for rust 可以绘制 bmp 了 https://wapl.es/rust/2019/03/04/embedded-graphics-0.4.7-bmp-support.html 14 | 2. rustup component history 方便 nightly 日期选择 https://rust-lang.github.io/rustup-components-history/index.html 15 | 3. grpcurl 用于 grpc 调试 https://github.com/fullstorydev/grpcurl 16 | 4. grafana 6.0 is out http://docs.grafana.org/guides/whats-new-in-v6-0/ 17 | 5. 康哥推荐的写论文工具:https://github.com/stsewd/ieee-pandoc-template 18 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-17.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-03-31 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 17 期 10 | 11 | 对不起咕咕了两天。。 12 | 13 | 1. 关于 rel="noopener" 的一些细节 https://mathiasbynens.github.io/rel-noopener 14 | 2. Microsft Defender 推出 macOS 版 https://arstechnica.com/gadgets/2019/03/microsoft-ships-anti-virus-for-macos-as-windows-defender-becomes-microsoft-defender/ 15 | 3. 基于 Docker 的快速启动在线 Linux box https://github.com/instantbox/instantbox 16 | 4. rust 在窗口中显示 fb 的库 https://github.com/emoon/rust_minifb 17 | 5. Vue 列表空间,为大量数据设计 https://github.com/tangbc/vue-virtual-scroll-list 18 | 6. musl 各平台的交叉编译工具链 https://musl.cc/ 19 | 7. 在线的 markdown 转 pdf https://md2pdf.netlify.com/ 20 | 8. 一本关于 C64 的书 http://10print.org/ 21 | 9. 转自 dram "haskutil tql,自动更新 import,自动 {-# LANGUAGE #-} ,自动填 hole" https://github.com/EduardSergeev/vscode-haskutil 22 | 10. ZFS on Linux 加入 TRIM 支持 http://www.phoronix.com/scan.php?page=news_item&px=ZFS-On-Linux-TRIM-Lands 23 | 11. 又一个体现 JS 玄学之处的网站 https://getify.github.io/coercions-grid/ 24 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-18.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-04-05 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 18 期 10 | 11 | 不咕不咕 12 | 13 | 1. Alfred pwgen workflow https://github.com/deanishe/alfred-pwgen 14 | 2. 魔改主板,在老主板上放 16GB 内存 https://readhacker.news/s/3Zty4 15 | 3. Mesalink TLS 库的 Rust 实现 https://github.com/mesalock-linux/mesalink 16 | 4. 实测可用 Rust 写的 STM32 应用 https://github.com/lupyuen/stm32-blue-pill-rust 17 | 5. 开源 PCIe 核 https://github.com/enjoy-digital/litepcie 18 | 19 | 欢迎投稿。 20 | 21 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-19.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-04-15 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 19 期 10 | 11 | 忽然想起来忘了这件事情两天。。 12 | 13 | 1. Pock 在 Touchbar 中显示并控制 Dock 14 | 2. MacBook touchbar+keyboard+touchpad Linux 驱动 https://github.com/roadrunner2/macbook12-spi-driver 15 | 3. Kendryte K210 上的 GBA 模拟器 https://github.com/44670/mgba-k210 16 | 4. Rust 生成 PDF 文件的库 https://github.com/J-F-Liu/lopdf 17 | 5. 中科大用 Rust 编写 FreeRTOS 的实验 https://github.com/OSH-2019/x-rust-freertos 18 | 6. Google 发布 Cloud Code 插件,直接在 k8s 上调试运行 https://cloud.google.com/blog/products/devops-sre/announcing-cloud-code-accelerating-cloud-native-application-development 19 | 7. 通过 libusb 跨平台的 usbip server https://github.com/jwise/pyusbip 20 | 8. Linux 下 BCM43602 Firmware 问题的不完美解决方法 https://bugzilla.kernel.org/show_bug.cgi?id=193121 21 | 9. 给树莓派上电的新方法 https://youtu.be/X2vF9KAEJx8 22 | 10. Docker 里跑 Deepin Wechat 的镜像 https://github.com/bestwu/docker-wechat.git 23 | 11. NS Switch 的包管理器 https://switchbrew.org/wiki/Main_Page 24 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-20.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-04-20 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 20 期 10 | 11 | 写到了第 20 期了!最近几期总是在咕咕。 12 | 13 | 1. Rust 的科学计算库 https://github.com/rust-ndarray/ndarray https://github.com/jturner314/ndarray-stats 14 | 2. Rust Crate 生态可视化 https://rfdonnelly.github.io/crate-galaxy/ 15 | 3. 在地址栏里做动画 http://matthewrayfield.com/articles/animating-urls-with-javascript-and-emojis/#%F0%9F%8C%92 16 | 4. Ruby 3 也要加类型了 https://twitter.com/darkdimius/status/1119115657776209920 17 | 5. verilog 的 MAC + 简易网络栈 https://github.com/alexforencich/verilog-ethernet 18 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-21.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-04-27 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 21 期 10 | 11 | 来了来了 12 | 13 | 1. Rust stackful generator 库 https://github.com/Xudong-Huang/generator-rs 14 | 2. wireshark tui https://termshark.io/ 15 | 3. Pythonm 加 annotation 的调试 https://github.com/cool-RR/PySnooper 16 | 4. Haskell 又一个教程 https://github.com/alpacaaa/zero-bullshit-haskell 17 | 5. 直接在 Rust 中写 Python https://docs.rs/inline-python/0.2.0/inline_python/ 18 | 6. 直接把 regex 捕捉到的 group 丢到 struct 里 https://crates.io/crates/recap 19 | 7. XDP 层的抓包 https://github.com/cloudflare/xdpcap 20 | 8. AWS 开始提供香港的云服务 https://www.allthingsdistributed.com/2019/04/aws-region-asia-pacific-hong-kong.html 21 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-22.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-05-03 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 22 期 10 | 11 | 1. AXI-Stream Components https://github.com/alexforencich/verilog-axis 12 | 2. go self update 库 https://github.com/rhysd/go-github-selfupdate 13 | 3. Atomic Pi https://www.cnx-software.com/2019/04/26/buy-atomic-pi-cherry-trail-sbc/ 14 | 4. 静态网站生成器 Hugo https://github.com/gohugoio/hugo 15 | 5. C++ enum 的反射 https://github.com/Neargye/magic_enum 16 | 6. 又一个开源的反编译器 https://github.com/BoomerangDecompiler/boomerang 17 | 18 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-23.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-05-11 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 23 期 10 | 11 | 1. VS Code Remote https://code.visualstudio.com/blogs/2019/05/02/remote-development 12 | 2. Rust 命令行看图片 https://github.com/atanunq/viu 13 | 3. GCC 9.1 发布 https://readhacker.news/s/42Ruk 14 | 4. Rust 的 Unikernel https://github.com/hermitcore/libhermit-rs 15 | 5. Rust 的 QRCode 库 https://www.reddit.com/r/rust/comments/bk7z2x/announcing_bardecoder_a_qr_detector_and_decoder/ 16 | 6. 鲁迅说过搜索引擎 http://cx.luxunmuseum.com.cn/ 17 | 7. JIT 的 golang REPL https://github.com/gijit/gi 18 | 8. Github 私有 Package Repo https://github.com/features/package-registry 19 | 20 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-24.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-05-17 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 24 期 10 | 11 | 1. 在线波形绘制 https://wavedrom.com/editor.html 12 | 2. Python 波形绘制 https://github.com/wallento/wavedrompy 13 | 3. GDB 8.3 发布 http://www.phoronix.com/scan.php?page=news_item&px=GDB-8.3-Debugger-Released 14 | 4. 命令行自动搜索 StackOverflow https://github.com/WindSoilder/hors 15 | 5. 从 C 到 Rust 的翻译 https://github.com/immunant/c2rust 16 | 6. SHA-1 碰撞攻击新进展 https://www.zdnet.com/article/sha-1-collision-attacks-are-now-actually-practical-and-a-looming-danger/ 17 | 7. macOS 配置 AD 管理员组 https://derflounder.wordpress.com/2011/02/17/adding-groups-from-your-directory-service-to-your-macs-admin-group/ 18 | 8. ssh 后自动安装并打开 code-server 同步配置 https://github.com/cdr/sshcode 19 | 9. HTTP Sunset 头 https://tools.ietf.org/html/rfc8594 20 | 21 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-25.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-05-24 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 25 期 10 | 11 | 1. 关掉各种 Intel BUG 的 mitigation https://t.me/one_real_world/1517 12 | 2. GCC 10 支持用 MMX 模拟 SSE http://www.phoronix.com/scan.php?page=news_item&px=GCC-10-Emulating-MMX-With-SSE 13 | 3. Minecraft Earth 发布 https://www.minecraft.net/en-us/article/new-game--minecraft-earth# 14 | 4. Python 官方 format 工具 https://github.com/python/black 15 | 5. JS Binary AST Proposal https://github.com/tc39/proposal-binary-ast 16 | 6. 用 Rust 实现的 ld https://github.com/aep/elfkit 17 | 7. Verilog -> Minecraft https://github.com/itsFrank/MinecraftHDL 18 | 8. Rust 实现的 光栅化输出 https://github.com/ecumene/rust-sloth/ 19 | 9. Nokia 的 Rust 内存 profiler https://github.com/nokia/memory-profiler 20 | 10. Linux 5.2 更新的 Logitech Wireless Device 驱动 正好能用上 http://www.phoronix.com/scan.php?page=news_item&px=Better-Logitech-Linux-5.2 21 | 22 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-26.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-05-31 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 26 期 10 | 11 | 1. Grafana 6.2 发布 https://grafana.com/blog/2019/05/22/grafana-v6.2-released/ 12 | 2. Program Synthesis Talk by Paul Zhu https://paulz.me/talk/program-synthesis/ 13 | 3. VSCode 摸鱼插件 https://github.com/cteams/Thief-Book 14 | 4. 编译期 C++ 计算器 https://www.zhihu.com/question/28582706/answer/691444859 15 | 5. 一个在线的 tomasulo 算法实现 https://tomasulo.harrychen.xyz/ 16 | 6. Safari Technology Preview 83 发布,含 WebAuthN 支持 https://webkit.org/blog/8967/release-notes-for-safari-technology-preview-83/ 17 | 7. Markdown -> 微信 https://github.com/lyricat/wechat-format 18 | 8. Rust 的 Code Coverage 库 https://github.com/xd009642/tarpaulin 19 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-27.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-06-07 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 27 期 10 | 11 | 高考加油! 12 | 13 | 1. Fallout 漏洞 https://arxiv.org/abs/1905.12701 14 | 2. PageRank 专利到期 https://patents.google.com/patent/US6285999B1/en 15 | 3. 终端电量可视化 https://github.com/svartalf/rust-battop 16 | 4. 查找 DB 的 DB https://dbdb.io 17 | 5. 在 Rust 里写 GPU 程序 https://github.com/calebwin/emu 18 | 6. WWDC 2019 挺不错的 19 | 7. Alfred 4 发布 https://www.alfredapp.com/blog/announcements/alfred-4-is-here/ 20 | 8. Mac Pro AR https://www.apple.com/105/media/us/mac-pro/2019/36178e80-30fd-441c-9a5b-349c6365bb36/quick-look/case-on.usdz 21 | 9. VSCode 稳定版也可以 Remote 了 https://code.visualstudio.com/docs/remote/ssh 22 | 10. 2019 高考语文作文 https://mp.weixin.qq.com/s/2NwkbbMlAUJpOKKuln1T4g 23 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-28.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-06-15 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 28 期 10 | 11 | 10. Rust Sec https://github.com/RustSec/advisory-db 12 | 2. opendrop 开源的 AirDrop 实现 https://github.com/seemoo-lab/opendrop 13 | 3. 代码内嵌图片 https://javl.github.io/image2cpp/ 14 | 4. RAMBleed 攻击 https://readhacker.news/s/44MHD 15 | 5. WSL2 可以体验了 https://devblogs.microsoft.com/commandline/wsl-2-is-now-available-in-windows-insiders/ 16 | 6. Rust 2019 生态报告 https://www.jetbrains.com/lp/devecosystem-2019/rust/ 17 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-29.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-06-21 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 29 期 10 | 11 | 1. ZFS on Linux 发布 0.8.1 https://github.com/zfsonlinux/zfs/releases/tag/zfs-0.8.1 12 | 2. slim: Dockerfile to VM image https://github.com/ottomatica/slim 13 | 3. Rust 重写的 du 替代物 确实很快 https://github.com/Byron/dua-cli 14 | 4. iOS 13/macOS Catalina beta 2 出了 并且可以 OTA 相关信息 https://9to5mac.com/2019/06/17/ios-13-beta-2-features/ https://developer.apple.com/documentation/macos_release_notes/macos_catalina_10_15_beta_2_release_notes https://mp.weixin.qq.com/s/Ae1SIcK9ho4Mh0g_UsbAyA 15 | 5. Steam 已经解决了 Catalina 上 32 位程序不能运行的问题 https://www.reddit.com/r/MacOS/comments/c17lh8/steam_and_macos_catalina 16 | 6. 在一些老的 Mac 上 Sidecar 是默认关闭的,但是可以开启 https://github.com/pookjw/SidecarPatcher/blob/master/README.md 虽然效果不会很好 17 | 18 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-30.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-06-28 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 30 期 10 | 11 | 1. 一个可参考的防止 side channel attack 的方法 https://www.undeadly.org/cgi?action=article;sid=20190621081455 12 | 13 | 2. 物理上镜像百兆的方法 实测可用 https://greatscottgadgets.com/throwingstar/ 14 | 15 | 3. 微软员工写的 malloc https://github.com/microsoft/mimalloc 16 | 17 | 4. 超标量乱序执行的 x86 软核 https://tspace.library.utoronto.ca/bitstream/1807/80713/1/Wong_Henry_T_201711_PhD_thesis.pdf 18 | 19 | 5. Rust 的 wireshark 替代 https://github.com/kpcyrd/sniffglue 20 | 21 | 6. Rpi 4 发布 https://readhacker.news/s/45nK9 22 | 23 | 7. iOS/macOS Catalina PB1 发布(= DB2) 24 | 25 | 8. dbg! 移植到了 C++ https://github.com/sharkdp/dbg-macro 26 | 27 | 9. 类似于 Elm 的 Rust 前端框架 https://github.com/David-OConnor/seed 28 | 29 | 10. 访问 VMware 虚拟机串口的方法 https://thewayeye.net/2009/december/4/connecting-virtual-machines-serial-console-os-x-and-vmware-fusion/ 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-31.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-07-05 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 31 期 10 | 11 | 1. 一个 Docker 的 TUI https://github.com/jesseduffield/lazydocker 12 | 2. 在线 Git cheatsheet http://ndpsoftware.com/git-cheatsheet.html 13 | 3. 带历史合并两个 Git 仓库 https://stackoverflow.com/a/10548919 14 | 4. iOS 13 Dev Beta 3 https://mp.weixin.qq.com/s/6cxLXOYgeP6QkDpa9kdoug 15 | 5. iOS 13 FaceTime Attention Correction https://readhacker.news/s/45QX2 16 | 17 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-32.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-07-12 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 32 期 10 | 11 | 1. Rpi4 的 Type-C 设计有问题 https://readhacker.news/s/45WYc 12 | 2. Debian buster released 13 | 3. USB Type-C Serial adapter with WCH/FTDI https://github.com/z4yx/USB-C-Serial 14 | 4. Linux 5.2 Kernel released http://www.phoronix.com/scan.php?page=news_item&px=Linux-5.2-Released 15 | 5. iOS/iPadOS PB2 发布,与 DB3 差了一个小版本号 16 | 6. Pacman in 512 bytes of x86 boot sector machine code https://readhacker.news/s/466Zm 17 | 7. clang 的 use after move checker 使用 https://awesomekling.github.io/Catching-use-after-move-bugs-with-Clang-consumed-annotations/ 18 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-33.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-07-19 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 33 期 10 | 11 | 1. 一个讲 Rust 比较硬核的博客 http://system.joekain.com/ 12 | 2. 利用 fzf 实现 shell 的 REPL https://github.com/pawelduda/fzf-live-repl 13 | 3. 类似 Vue 的前端 Go 框架 https://www.vugu.org/doc/start 14 | 4. iOS 13 beta 4 发布 14A5534f 15 | 5. 针对 T2 NVMe 的 patch http://www.phoronix.com/scan.php?page=news_item&px=NVMe-Patches-LKML-Apple-Mac 16 | 6. 一个前端非对称加密的问卷网站 https://blog.fugoes.xyz/crypto-q/ 17 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-34.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-07-27 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 34 期 10 | 11 | 1. macOS Mojave 10.14.6 iOS 12.4 正式版更新发布,还有老版本的更新 https://www.macrumors.com/2019/07/22/apple-releases-gps-bug-fix-older-iphones-ipads/ 12 | 2. CLion 2019.2 添加了 GDB Server 的调试支持,可以用 OpenOCD。 13 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-35.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-08-02 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 35 期 10 | 11 | 1. Apple Touch Bar 的 Windows 第三方支持 https://github.com/imbushuo/DFRDisplayKm 12 | 2. WSL2 新的进展 http://www.phoronix.com/scan.php?page=news_item&px=Windows-WSL2-Localhost-Plus 13 | 3. Lightning 转接头里面居然跑 iBoot 和 Darwin https://readhacker.news/s/46Zde 14 | 4. iOS 13 beta 5 发布 15 | 5. ES2019 前瞻 https://blog.tildeloop.com/posts/javascript-what%E2%80%99s-new-in-es2019 16 | 6. Rust 可持久化数据结构 https://github.com/orium/rpds 17 | 7. Rust 不可变数据结构 https://github.com/bodil/im-rs 18 | 8. macOS Catalina 10.15 beta 5 发布 19 | 9. Algebraic Effect https://overreacted.io/algebraic-effects-for-the-rest-of-us/ 20 | 10. Donald Knuth 对于 Sensitivity Proof 证明的简化 https://readhacker.news/s/47fsA 真是老当益壮 21 | 11. TLS1.3 标准的简化版 https://readhacker.news/s/47eG9 22 | 12. iTerm 3.3 发布 https://iterm2.com/downloads/stable/iTerm2-3_3_0.changelog 23 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-36.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-08-10 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 36 期 10 | 11 | 1. QuickJS + libuv https://github.com/saghul/qjsuv 12 | 2. Rust 实现的 Ruby https://github.com/artichoke/artichoke 13 | 3. 类似 JSON 的数据格式 https://cbor.io/ 14 | 4. rls 二代目 https://github.com/rust-analyzer/rust-analyzer 15 | 5. 给 MacBook 添加触屏支持 https://github.com/bijection/sistine 16 | 6. 用于 MBP with T2 的 Linux patch https://github.com/aunali1/linux-mbp-arch 17 | 7. 在 tmux 中使用 Touch ID 认证 sudo https://blog.birkhoff.me/make-sudo-authenticate-with-touch-id-in-a-tmux/ 18 | 8. iOS 13 beta 6 发布 19 | 9. Linux Journal 结束了它的使命 20 | 10. ssh 8.0 Add support for ECDSA keys in PKCS#11 tokens 21 | 22 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-37.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-08-16 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 37 期 10 | 11 | 1. Rust netlink 库 https://github.com/jbaublitz/neli 12 | 2. Rust 处理 signal 进行配置的 reload https://vorner.github.io/2019/08/11/runtime-configuration-reloading.html 13 | 3. macOS 添加了 VirtIO 驱动支持 https://passthroughpo.st/mac-os-adds-early-support-for-virtio-qemu/ 14 | 4. 一个 GNU readline 替代品 https://github.com/AmokHuginnsson/replxx 15 | 5. Rust 1.37.0 发布 https://blog.rust-lang.org/2019/08/15/Rust-1.37.0.html 16 | 6. iOS 13 DB7 (17A5565b) 发布 17 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-39.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-08-30 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 39 期 10 | 11 | 1. 另一个 Pattern Matching in C++ 库 https://github.com/mpark/patterns 12 | 2. Rust 编写的一个 shell http://www.jonathanturner.org/2019/08/introducing-nushell.html 13 | 3. Vim 的游戏教程 https://readhacker.news/s/48nbJ 14 | 4. 在 throw 的时候同时抓取 SO 信息 https://github.com/shobrook/rebound/ 15 | 5. 颜色生成工具 https://github.com/sharkdp/pastel 16 | 6. 转换 Escape Code 到 HTML https://github.com/theZiz/aha 17 | 7. iOS 13.1 beta 发布 18 | 8. 苹果特别活动定于 9.11 日 19 | 9. exFAT 规范发布 http://www.phoronix.com/scan.php?page=news_item&px=Microsoft-exFAT-Specification 20 | 10. 可视化的 5 阶段流水线 RISC-V 模拟器 https://github.com/mortbopet/Ripes 21 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-41.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-09-14 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 41 期 10 | 11 | 1. Wget2 1.99.2 beta 发布 https://lists.gnu.org/archive/html/info-gnu/2019-09/msg00001.html 12 | 2. 独立的 printf 实现 https://github.com/mpaland/printf 13 | 3. Unicode 字符串长度统计 https://hsivonen.fi/string-length/ 14 | 4. C 类型推断 https://github.com/ltcmelo/psychec#generic-programming 15 | 5. Clang 9.0 支持 Linux 内核编译 [The New Features Of LLVM 9.0 & Clang 9.0 - Includes Building The Linux x86_64 Kernel](http://www.phoronix.com/scan.php?page=news_item&px=LLVM-9.0-Clang-9.0-Features) 16 | 6. 可控制的 USB 设备 https://github.com/usb-tools/Facedancer 17 | 7. USB 监听器 https://github.com/openvizsla/ov_ftdi 18 | 8. 修复一个截断的视频 https://github.com/ponchio/untrunc 19 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-44.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-10-04 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 44 期 10 | 11 | 1. Modern Script Loading https://jasonformat.com/modern-script-loading/ 12 | 13 | 2. 如何实现 closure http://craftinginterpreters.com/closures.html 14 | 15 | 3. 加速 uniform_int_distribution 实现 https://lemire.me/blog/2019/09/28/doubling-the-speed-of-stduniform_int_distribution-in-the-gnu-c-library/ 16 | 17 | 4. 在 FPGA 上运行 Rocket Chip 教程 https://github.com/cnrv/fpga-rocket-chip 18 | 19 | 5. Xilinx Bitstream 逆向 https://prjxray.readthedocs.io/en/latest/ 20 | 21 | 6. JVM 利用 SIGSEGV 进行 null 检测 https://jcdav.is/2015/10/06/SIGSEGV-as-control-flow/ 22 | 23 | 7. Async/Await 进入 Rust Beta https://blog.rust-lang.org/2019/09/30/Async-await-hits-beta.html 24 | 25 | 8. 在 Rust 里实现 Plugin http://adventures.michaelfbryan.com/posts/plugins-in-rust/ 26 | 27 | 28 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-45.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-10-11 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 45 期 10 | 11 | 1. Android ARM32/64 环境模拟 https://github.com/zhkl0228/unidbg 12 | 2. Calibre 4.0 https://readhacker.news/s/4aukk 13 | 3. Rust 的 gRPC 实现 https://github.com/hyperium/tonic 14 | 4. JAVA API 历史 https://github.com/marchof/java-almanac 15 | 5. Elm 开发 dev server https://github.com/wking-io/elm-live 16 | 6. 另一个静态网站生成器 https://github.com/getzola/zola 17 | 7. Catalina 发布 18 | 8. Notarization 的相关情况 https://eclecticlight.co/2019/06/07/notarization-in-mojave-and-catalina/ https://eclecticlight.co/2019/05/31/can-you-tell-whether-code-has-been-notarized/ 19 | 9. 椭圆曲线加密算法 https://fangpenlin.com/posts/2019/10/07/elliptic-curve-cryptography-explained/ 20 | 10. Travis CI 添加 ARM 支持 https://blog.travis-ci.com/2019-10-07-multi-cpu-architecture-support 21 | 11. CD 上的结构 https://readhacker.news/s/4aDHB 22 | 12. 在线 TAC 的虚拟机 https://jia.je/online_tac_vm/ 23 | 13. 在线 Decaf 编译和运行 https://jia.je/online_decaf/ 24 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-46.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-10-19 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 46 期 10 | 11 | 1. LibC++ 正式支持 WASI https://releases.llvm.org/9.0.0/projects/libcxx/docs/ReleaseNotes.html 12 | 2. 从文本反推 regex https://github.com/pemistahl/grex 13 | 3. KDE 5.17 发布 https://www.omgubuntu.co.uk/2019/10/kde-plasma-5-17-features 14 | 4. IDA 7.4 发布 支持 Py3 https://www.hex-rays.com/products/ida/7.4/index.shtml 15 | 5. 新的 CPU Bug https://www.phoronix.com/scan.php?page=news_item&px=Chrome-Geminilake-Bug 16 | 6. WAST -> WASM in Rust https://docs.rs/wast/ 17 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-47.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-10-26 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 47 期 10 | 11 | 1. CLion 完善了 Rust 调试支持 https://blog.jetbrains.com/clion/2019/10/debugging-rust-code-in-clion/ 12 | 2. Nginx HTTP3 的 docker 镜像 https://github.com/RanadeepPolavarapu/docker-nginx-http3 13 | 3. 手算 Ed25519 https://dang.fan/zh-Hans/posts/25519 14 | 4. Rust 的 QuickCheck https://github.com/BurntSushi/quickcheck 15 | 5. Rust 另一个类似 QuickCheck 的测试框架 https://github.com/AltSysrq/proptest 16 | 6. Cookie 策略要改了 https://readhacker.news/s/4bvGG 17 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-48.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-11-03 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 48 期 10 | 11 | 1. 一个特殊的用于显示数字的字体 https://blog.janestreet.com/commas-in-big-numbers-everywhere/ 12 | 2. Intel 的 SPMD 编译器 https://ispc.github.io/ 13 | 3. 基于 Scala 的 notebook https://polynote.org/ 14 | 4. 解析登机牌信息 https://github.com/georgesmith46/bcbp 15 | 5. 常用的 React Hooks 库 https://github.com/streamich/react-use 16 | 6. jwt 工具 https://github.com/mike-engel/jwt-cli 17 | 7. 用过程宏实现的 delegation in Rust https://github.com/chancancode/rust-delegate 18 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-49.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-11-11 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 49 期 10 | 11 | 1. libuv wrapper in C++ https://github.com/skypjack/uvw 12 | 13 | 2. Visual Studio Online https://visualstudio.microsoft.com/zh-hans/services/visual-studio-online/ 14 | 15 | 3. OpenSSH 的 U2F 支持 https://readhacker.news/s/4carE 16 | 17 | 4. Rust 1.39 [Rust 1.39 Released With Async-Await Support, Attributes On Function Parameters](http://www.phoronix.com/scan.php?page=news_item&px=Rust-1.39-Released) 18 | 19 | 5. Windows 也在用 Rust https://msrc-blog.microsoft.com/2019/11/07/using-rust-in-windows/ 20 | 21 | 6. 用 Chrome Dev Tools 调试 Rust https://twitter.com/ChromeDevTools/status/1192803818024710145 22 | 23 | 7. C++20 的新 Thread 类型 https://medium.com/@vgasparyan1995/a-new-thread-in-c-20-jthread-ebd121ae8906 24 | 25 | 26 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-50.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-11-17 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 50 期 10 | 11 | 时间过得真快,忽然就 50 期了。。 12 | 13 | 1. CLion 的 C++20 Concept 支持 https://blog.jetbrains.com/clion/2019/11/cpp20-concepts-in-clion/ 14 | 2. TypeScript 一些工具 https://github.com/pirix-gh/ts-toolbelt 15 | 3. Rust 编写的 SystemVerilog Parser https://github.com/dalance/sv-parser 16 | 4. MacBookPro 16 英寸 发布 17 | 5. 用 Rust 写 eBPF 程序 https://blog.redsift.com/labs/putting-rust-in-the-kernel-with-ebpf/ 18 | 6. 终端里玩蜘蛛纸牌 https://github.com/chrisbouchard/klondike-rs 19 | 7. Rust 的 coverage 工具 https://github.com/mozilla/grcov 20 | 8. 在 Menu Bar 或者 Touch Bar 控制 AirPods Pro 模式 https://github.com/insidegui/NoiseBuddy 21 | 9. Demangle Rust 符号的工具 https://github.com/luser/rustfilt 22 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-51.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-11-24 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 51 期 10 | 11 | 1. 一个 LaTeX 的 LSP https://github.com/latex-lsp/texlab 12 | 13 | 2. Rope 数据结构 https://github.com/cessen/ropey 14 | 15 | 3. 一个把 Vivado 工程放 git 中管理的方法 https://github.com/jhallen/vivado_setup 16 | 17 | 4. https://github.com/athre0z/color-backtrace 18 | 19 | 5. 拿 Arch 当路由器 https://github.com/archwrt 20 | 21 | 6. Sourcetrail 开源了 https://www.sourcetrail.com/blog/open_source/ 22 | 23 | 7. NodeJS 正式支持 ES Module https://medium.com/@nodejs/announcing-core-node-js-support-for-ecmascript-modules-c5d6dc29b663 24 | 25 | 8. Rust 的错误处理 https://blog.yoshuawuyts.com/error-handling-survey/ 26 | 27 | 28 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-52.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-12-01 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 52 期 10 | 11 | 1. 传递 Rust 闭包到 C https://readhacker.news/s/4dbWL 12 | 13 | 2. SystemVerilog Online http://sv-lang.com/ 14 | 15 | 3. Java 14 新特性 https://www.javaworld.com/article/3437797/work-begins-on-java-14.html 16 | 17 | 4. 在线 or1k 的模拟器 https://readhacker.news/s/4dfqc 18 | 19 | 5. 在 macOS 上运行 virt-manager https://github.com/jeffreywildman/homebrew-virt-manager 20 | 21 | 6. 关于 SystemVerilog 的博客 http://systemverilog.io/ 22 | 23 | 7. 结合 VSCode 和 Docker 的开发环境 https://github.com/cdr/sail 24 | 25 | 26 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-53.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-12-08 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 53 期 10 | 11 | 1. GDB Enhanced Features https://github.com/hugsy/gef 12 | 2. Lisp on Lua https://fennel-lang.org/ 13 | 3. Django 3.0 https://docs.djangoproject.com/en/3.0/releases/3.0/ 14 | 4. Rust Constant Propagation https://blog.rust-lang.org/inside-rust/2019/12/02/const-prop-on-by-default.html 15 | 5. ES2019 features https://javascript.christmas/2019/7 16 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-54.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-12-27 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 54 期 10 | 11 | 咕了两周 12 | 13 | 1. ES2019 https://javascript.christmas/2019/7 14 | 2. CSS 技巧 https://github.com/chokcoco/iCSS 15 | 3. Rust 编译器加速 https://blog.mozilla.org/nnethercote/2019/12/11/how-to-speed-up-the-rust-compiler-one-last-time-in-2019/ 16 | 4. OSXFuse 不开源 https://colatkinson.site/macos/fuse/2019/09/29/osxfuse/ 17 | 5. 嵌入式 Rust 的 fmt 优化 https://jamesmunns.com/blog/fmt-unreasonably-expensive/ 18 | 6. Docker base image 更新工具 https://github.com/containrrr/watchtower 19 | 7. 运行 Linux 的名片 https://www.thirtythreeforty.net/posts/2019/12/my-business-card-runs-linux/ -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-55.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2020-01-31 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 55 期 10 | 11 | 一个月后终于复更 12 | 13 | 1. 退出 vim 教程 https://github.com/hakluke/how-to-exit-vim 14 | 2. SHA-1 攻击新进展 https://sha-mbles.github.io/ 15 | 3. gmane 近况 https://lars.ingebrigtsen.no/2020/01/06/whatever-happened-to-news-gmane-org/ 16 | 4. 浏览器能做的事情 https://github.com/luruke/browser-2020 17 | 5. 一个 ext2 和 FAT 为一体的 fs https://github.com/NieDzejkob/cursedfs 18 | 6. iptables 规则调试工具 https://github.com/x-way/iptables-tracer 19 | 7. Qt 2020 的变化 https://www.qt.io/blog/qt-offering-changes-2020 20 | 8. 后缀自动机可视化 https://yeah.moe/p/a8e74947/ 21 | -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-56.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2020-02-28 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 56 期 10 | 11 | 咕咕咕 12 | 13 | 1. SystemVerilog linter https://github.com/dalance/svlint 14 | 2. 东北方言编程语言 https://github.com/zhanyong-wan/dongbei 15 | 3. JS LaTeX 渲染到 HTML https://github.com/michael-brade/LaTeX.js 16 | 4. 一种对语音助手的攻击 https://surfingattack.github.io/ 17 | 5. 在线打铃网站 http://thulpwan.net/timer/ 18 | 6. 网络学堂 PC 端 App https://github.com/jiegec/learn_tsinghua_app/releases 19 | 7. Rust 2020 roadmap https://github.com/rust-lang/rfcs/pull/2857/files -------------------------------------------------------------------------------- /docs/blog/posts/misc/weekly-sharing-8.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-01-25 4 | tags: [weeklysharing] 5 | categories: 6 | - misc 7 | --- 8 | 9 | # 每周分享第 8 期 10 | 11 | 这周更加忙了,所以内容不多。 12 | 13 | 1. Rust 1.32.0 is out 其中 dbg macro 挺有意思 https://blog.rust-lang.org/2019/01/17/Rust-1.32.0.html 14 | 2. 在线的 hex packet decoder https://hpd.gasmi.net/ 15 | 3. Rust Cheatsheet https://www.breakdown-notes.com/make/load/rust_cs_canvas/true 16 | 4. Rust tcp/ip stack https://github.com/m-labs/smoltcp 17 | 5. 逆向 CAJ 的转换器 https://github.com/JeziL/caj2pdf 18 | 19 | -------------------------------------------------------------------------------- /docs/blog/posts/networking/baidu-dns.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/networking/baidu-dns.jpg -------------------------------------------------------------------------------- /docs/blog/posts/networking/baidu-nat64.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/networking/baidu-nat64.jpg -------------------------------------------------------------------------------- /docs/blog/posts/networking/ddns-openwrt-router.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2018-10-22 4 | tags: [ddns,gandi,openwrt,cron] 5 | categories: 6 | - networking 7 | --- 8 | 9 | # OpenWRT 上配置 Gandi DDNS 10 | 11 | 一直想给自己的 OpenWRT 路由器添加 DDNS 功能,但 Gandi 不在官方的 ddns-scripts 列表中,自己在网上找了一些脚本,发现是 Python 写的,尝试把 Python 安装到路由器上又发现空间不够,虽然可以安装到 USB 上,但总归是麻烦。 12 | 13 | 最后找到了官方的一个[脚本](https://github.com/Gandi/api-examples/blob/master/bash/livedns/mywanip.sh),非常适合我的需求。简单修改一下,然后安装一下支持 HTTPS 的 cURL: 14 | 15 | ``` 16 | $ opkg update 17 | $ opkg install ca-bundle 18 | $ opkg install curl 19 | ``` 20 | 21 | 然后把脚本添加到 crontab 即可。 22 | -------------------------------------------------------------------------------- /docs/blog/posts/networking/enable-ipv6-autoconfiguration-on-tap-interfaces-in-macos.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2018-08-25 4 | tags: [slacc,ipv6,tuntaposx,tap] 5 | categories: 6 | - networking 7 | --- 8 | 9 | # 在 macOS 上 TAP Interface 上启用 IPv6 自动配置 10 | 11 | 由于 macOS 对 TAP Interface 不会自动出现一个设置中对应的服务,所以需要手动进行配置。一番测试后,发现可以通过: 12 | 13 | ``` 14 | $ sudo ipconfig set [tap_if] automatic-v6 15 | $ sudo ipconfig set [tap_if] dhcp 16 | ``` 17 | 18 | 启用系统自带的 dhcp 和 ra 功能。也许有方法可以把这些 tap 搬到系统的设置中去。 19 | 20 | UPDATE: 21 | 22 | 可以把 TAP Interface 加到系统的设置中去。方法参考[Virtual network interface in Mac OS X](https://stackoverflow.com/a/6375307)。完成以后可以直接通过系统设置界面进行配置。 23 | -------------------------------------------------------------------------------- /docs/blog/posts/networking/enable-lte-ipv6-on-android.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2018-10-04 4 | tags: [android,apn,ipv6] 5 | categories: 6 | - networking 7 | --- 8 | 9 | # 在 Android 上打开 LTE 的 IPv6 10 | 11 | 听闻北京移动给 LTE 配置了 SLAAC,但现在需要手动打开,方法如下: 12 | 13 | Settings -> Network & Internet -> Mobile Network -> Advanced -> Access Point Names -> 中国移动 GPRS (China Mobile) -> 把 APN procotol 和 APN roaming protocol 两项都改成 IPv4/IPv6 14 | 15 | 然后在 [test-ipv6.com](https://test-ipv6.com) 上可以看到确实分配了 IPv6 地址,不过目前评分只有 1/10。也就是说可用性还不佳。 16 | 17 | 而在 iOS 上,通过 HE 的 Network Tools 能看到,确实拿到了 IPv6 的地址,但是出不去,怀疑是运营商没有下发相关配置,所以还不能使用,只能继续等。 18 | 19 | 2018-11-06 更新:现在 iOS 用户也有 LTE 的 v6 了。评分是 9/10。目前可用性已经可以了,就是国内互联还不大好。 20 | -------------------------------------------------------------------------------- /docs/blog/posts/networking/enable-wpad-on-lede.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2018-09-11 4 | tags: [lede,openwrt,wpad,pac] 5 | categories: 6 | - networking 7 | --- 8 | 9 | # 在 LEDE(OpenWrt)上启用 wpad 10 | 11 | WPAD(Web Proxy Auto-Discovery Protocol)是一个可以利用 dhcp 分发 pac 配置的协议。方法如下: 12 | 13 | ```shell 14 | $ # ssh to router first 15 | $ vim /etc/dnsmasq.conf 16 | dhcp-option=252,"http://router_ip/wpad.dat" 17 | $ vim /www/wpad.dat # put pac here 18 | $ service dnsmasq restart 19 | $ # ensure proxy is available to lan 20 | $ # enable wpad on devices 21 | ``` 22 | 23 | 参考文档: 24 | 25 | 1. [Web Proxy Auto-Discovery Protocol](https://en.wikipedia.org/wiki/Web_Proxy_Auto-Discovery_Protocol) 26 | 2. [Automatic Proxy Configuration with WPAD](https://www.davidpashley.com/articles/automatic-proxy-configuration-with-wpad/) 27 | 3. [Deployment Options](https://findproxyforurl.com/deployment-options/) 28 | 4. [Example PAC File](http://findproxyforurl.com/example-pac-file/) -------------------------------------------------------------------------------- /docs/blog/posts/networking/esxi-network-config.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2021-03-27 4 | tags: [esxi,esxcli,ipv6] 5 | categories: 6 | - networking 7 | --- 8 | 9 | # ESXi 网络配置 10 | 11 | 用过 ESXi 的大家都知道,它网页版对网络的配置功能有限,特别是 IPv6 的部分,有的事情无法实现。更好的办法是 SSH 到 ESXi 上直接用命令行进行配置。 12 | 13 | 可能会用到的一些命令: 14 | 15 | 1. esxcfg-vmknic: 用来给 vmkernel 配置地址 16 | 2. esxcfg-route: 设置系统路由表 17 | 3. esxcli: 大杂烩,很多功能都在里面 18 | 4. tcpdump-uw:魔改版 tcpdump 19 | 20 | 一些例子: 21 | 22 | 设置 IPv6 默认路由: 23 | 24 | ```shell 25 | [root@esxi:~]esxcfg-route -f V6 -a default $IPV6 26 | ``` 27 | 28 | 删除 vmkernel 的 IPv6 地址: 29 | 30 | ```shell 31 | [root@esxi:~]esxcli network ip interface ipv6 address remove -i $VMKERNEL -I $IPV6/$PREFIX 32 | ``` 33 | 34 | 35 | 参考:https://kb.vmware.com/s/article/1002662 -------------------------------------------------------------------------------- /docs/blog/posts/networking/etc-wireless-network.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2018-10-20 4 | tags: [etc,janestreet,cisco,wifi,flukenetworks] 5 | categories: 6 | - networking 7 | --- 8 | 9 | # ETC 比赛无线网络搭建小记 10 | 11 | 正好上着李贺武老师的《无线移动网络技术》课,然后今天又给 ETC 比赛搭建无线网络,于是周二的时候找老师咨询了一下意见。我们大概给老师讲了一下场地的样子和尺寸(当时估计的大了),然后老师给我们提供了一个可以供参考的部署方案,包括几个 AP 分别放在哪,这些 AP 的 2.4GHz 都用哪个 channel,然后都用多少功率。并且很友善地在周五的时候让助教来场地帮我们 survey 一下无线网络的状况。我们用 Fluke Networks 的 AirCheck Wi-Fi Tester 看了一下场地的各个频道的 AP 数量和信号强度,发现虽然 AP 挺多的,但是它们的信号都比我们的小不少,而且我们也都开到了 50mW,所以干扰不大。 12 | 13 | 然后昨天下午一点半钟来到场地,用板车把设备都运到计算机开放实验室,然后开始部署无线网络。我们提前来踩过几次点,这边的网络是没有 DHCP 服务器的,通过一个指定的网关出去。我们发现可以利用已有的这些交换机从地下连到各个电脑上的网线,来连接我们的 AP 和交换机,这样我们就免去了走线的麻烦。于是我们先定下放 AP 的位置,然后用寻线器找到网线插到了交换机的哪一个端口上,标记好后换成连接到我们自己的交换机的网线上,从而可以通过 PoE 把我们的 AP 给启动起来。然后用我自己的路由器,把 LAN 口插到交换机上,给 AP 分发 DHCP 地址,然后把下发的默认网关配置为真实的网关(DHCP Option 3) ,没做但是也可以顺带做的是把 WLC 的地址分发下去(DHCP Option 43 Type 241)。 14 | 15 | 当然,这个过程也遇到了一点小坑,就是交换机还保留了之前的配置,所以这次把新的几个端口划到了一个 VLAN 下,命令自然是记不住的要现查。然后起来以后还挺稳定的,也没出现什么问题,网络带宽也足够用,离千兆还有蛮多距离,一天也才跑了接近俩 TB 的流量。 -------------------------------------------------------------------------------- /docs/blog/posts/networking/hardware-queue-interface-82599.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/networking/hardware-queue-interface-82599.png -------------------------------------------------------------------------------- /docs/blog/posts/networking/implementing-gretap-in-macos.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2018-08-21 4 | tags: [tuntaposx,tap,gre,gretap] 5 | categories: 6 | - networking 7 | --- 8 | 9 | # 在 macOS 下实现 GRETAP 10 | 11 | 由于没有找到 macOS 下现成的 GRETAP 实现,我就想到自己实现一个。由于[tuntaposx](http://tuntaposx.sourceforge.net/)提供了一个和 Linux 下基本一样的 TAP Interface,于是自己利用 raw socket 和 TAP Interface 实现了一下,主要方法: 12 | 13 | 14 | 1. 打开 raw socket,读取收到的 proto 47 的包,判断是否为 GRETAP 包,是,则写入内层包到打开的 TAP Interface 中。 15 | 2. 从 TAP Interface 中读入包,自己加上 GRE 头和 IP 头,然后发送。 16 | 17 | 主要的难度是在 raw socket 部分,macOS 继承了 BSD,与 Linux 不大一样。于是参考了[SOCK_RAW Demystified](https://sock-raw.org/papers/sock_raw),成功地实现了这个功能。 18 | 19 | 代码放在[jiegec/gretapmac](https://github.com/jiegec/gretapmac)。写得并不高效,仅仅可用,用了一百多行。 20 | 21 | UPDATE: 之后又随手实现了一个类似的协议,L2TPv3 over UDP。代码在[jiegc/l2tpv3udptap](https://github.com/jiegec/l2tpv3udptap)。 22 | -------------------------------------------------------------------------------- /docs/blog/posts/networking/implementing-rfc8367-as-iptables-extension.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2018-08-31 4 | tags: [rfc,rfc8367,aprilfool,iptables,kernel,mod,xtables] 5 | categories: 6 | - networking 7 | --- 8 | 9 | # 通过 Ipfilter Extension 实现 RFC8367 10 | 11 | 前几天无聊闲逛看到了一个很有趣的 [RFC8367 - Wrongful Termination of Internet Protocol (IP) Packets](https://tools.ietf.org/html/rfc8367) ,看到日期大家应该都懂了,这是个粥客,不过里面还是反映了一些事情,咳。 12 | 13 | 之前看到闪客实现了 [shankerwangmiao/xt_PROTO](https://github.com/shankerwangmiao/xt_PROTO) ,想到自己也可以做一个 iptables 扩展,于是就写了 [jiegec/xt_EQUALIZE](https://github.com/jiegec/xt_EQUALIZE) 。它是这样使用的: 14 | 15 | ```shell 16 | $ git clone git@github.com:jiegec/xt_EQUALIZE.git 17 | $ make 18 | $ sudo make install 19 | $ sudo iptables -t filter -A INPUT -j EQUALIZE 20 | $ sudo dmesg -w & 21 | $ # Make some random network requests to see the effect! 22 | $ ping 1.1.1.1 23 | $ ping 8.8.8.8 24 | $ ping ::1 25 | ``` 26 | 27 | 目前还没有把参数都变成可以配置的。如果真的有人需要这个模块的话,我再改吧(逃 28 | -------------------------------------------------------------------------------- /docs/blog/posts/networking/use-iptables-to-serve-different-services-on-one-port.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2018-07-06 4 | tags: [iptables,ip] 5 | categories: 6 | - networking 7 | --- 8 | 9 | # 通过 iptables 在同一个端口根据源地址解复用(demux) 10 | 11 | 现在遇到一个场景,原来的一个服务只给一个客户端用,但现在增加了一个客户端,由于客户端配置相同,但是服务端需要区别对待两个客户端的服务端配置,所以利用 iptables 根据源地址做了一个端口转发,实现了 demux。 12 | 13 | 假设:服务器在 192.168.0.1,客户端分别在 192.168.0.2 和 192.168.0.3。客户端配置的服务端地址是 192.168.0.1:8000。之前,在服务器上只跑了一个服务,监听着 8000 端口。 14 | 15 | 现在,在服务器上再跑一个服务,监听 8001 端口,同时根据需求进行相应的配置。然后,加上如下 iptables 规则: 16 | 17 | ```shell 18 | $ sudo iptables -t nat -A PREROUTING -s 192.168.0.3 -d 192.168.0.1 -p tcp -m tcp --dport 8000 -j REDIRECT --to-ports 8001 19 | ``` 20 | 21 | 这样,在不需要更改客户端的情况下,完成了需要的效果。 22 | -------------------------------------------------------------------------------- /docs/blog/posts/networking/use-multicast-address-to-find-neighbours.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2018-07-15 4 | tags: [icmp,ping,multicast] 5 | categories: 6 | - networking 7 | --- 8 | 9 | # 用 multicast 地址找到同一网段的主机 10 | 11 | IPv4 : 12 | 13 | ```shell 14 | $ ping -t1 224.0.0.1 15 | ``` 16 | 17 | IPv6: 18 | 19 | ```shell 20 | $ ping -t1 ff02::1%iface 21 | ``` 22 | -------------------------------------------------------------------------------- /docs/blog/posts/networking/use-veth-for-ipv6-brouter.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2018-10-07 4 | tags: [brouter,ebtables,ipv6] 5 | categories: 6 | - networking 7 | --- 8 | 9 | # 使用 veth 实现 IPv6-only 的 Brouter 功能 10 | 11 | 最近从 @shankerwangmiao 学到了一个方法:通过 veth 把两个 bridge 的 IPv6 桥接起来。方法如下: 12 | 13 | 14 | ``` 15 | $ ip link add veth-v6-in type veth peer name veth-v6-out 16 | $ brctl addif br-in veth-v6-in 17 | $ brctl addif br-out veth-v6-out 18 | $ ebtables -t filter -A FORWARD -p ! IPv6 -o veth-v6-in -j DROP 19 | $ ebtables -t filter -A FORWARD -p ! IPv6 -o veth-v6-out -j DROP 20 | ``` 21 | 22 | 这样就可以看到 veth 上仅有 IPv6 的流量了。 -------------------------------------------------------------------------------- /docs/blog/posts/networking/vpc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/networking/vpc.png -------------------------------------------------------------------------------- /docs/blog/posts/os/axi-uart-interrupt-opensbi-uart.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/os/axi-uart-interrupt-opensbi-uart.jpg -------------------------------------------------------------------------------- /docs/blog/posts/os/changing-screen-brightness-key.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2018-08-05 4 | tags: [keyboard] 5 | categories: 6 | - os 7 | --- 8 | 9 | # 更改 macOS 屏幕亮度的按键 10 | 11 | 由于我打开了「Invert Fn」功能,所以需要调亮度的时候,是采用 Fn+F1/F2 的方法。但是,我的机械键盘则是,不按 Fn 时为 1-9,按着 Fn 时为对应的 F1-F9,但是就无法调整亮度和声音了。 12 | 13 | 然后捣腾了一下,发现可以用 ScLk 和 Pa/Br(名称在各个键盘上不大一样)调整亮度。不过,还没发现如何更改音量。。。 14 | -------------------------------------------------------------------------------- /docs/blog/posts/os/opening-tty-terminal-in-wsl.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2018-05-25 4 | tags: [windows,wsl,getty,agetty,terminal,cu] 5 | categories: 6 | - os 7 | --- 8 | 9 | # 在 WSL 上开启一个 getty 到串口的方法 10 | 11 | 为了测试一个硬件的 terminal,想在 Windows 上向串口开一个 tty,跑各种软件来测试。这件事情在 Linux 上和 macOS 上都有实践,但一直不知道 Windows 上怎么搞。经过了一番搜索,找到了 https://blogs.msdn.microsoft.com/wsl/2017/04/14/serial-support-on-the-windows-subsystem-for-linux/ 和 https://unix.stackexchange.com/a/123559 的方案。 12 | 13 | 14 | 以 COM5 为例: 15 | 16 | ```shell 17 | $ sudo chmod 666 /dev/ttyS5 18 | $ sudo agetty -s 115200 ttyS5 linux 19 | ``` 20 | 21 | 这样就可以看到一个登录的界面了。 22 | 23 | 在 macOS 上 (https://superuser.com/questions/1059744/serial-console-login-on-osx): 24 | 25 | ```shell 26 | $ screen /dev/tty.SLAB_USBtoUART 115200 27 | # type C-b : exec ::: /usr/libexec/getty std.115200 28 | ``` 29 | -------------------------------------------------------------------------------- /docs/blog/posts/others/a-funny-wiki-of-splay-tree.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2017-10-16 4 | tags: [algorithm,wiki] 5 | categories: 6 | - others 7 | --- 8 | 9 | # 一个搞笑的伸展树的 Wiki 10 | 11 | 光哲同学在群里发了这个链接,特别搞笑,特此分享: 12 | [伸展树 - 百度百科](https://baike.baidu.com/history/%E4%BC%B8%E5%B1%95%E6%A0%91/105576656) 13 | 14 | 15 | > 伸展树(Spaly Tree,事实上在国内 IO 界常常被称作 Tajarn 发明的 Spaly Tree,与此同理的还有 Terap),也叫分裂树,是一种二叉排序树,它能在 O(n log n) 内完成插入、查找和删除操作。它由 Daniel Sleator 和 Robert Tajarn 发现,后者对其进行了改造。它的优势可以不断伸展枝干(一个月 2~3 次),从而使树冠散开,提高光合作用效率。木材坚硬,是重要的经济类乔木。与其他植物不同的是,伸展树可以进行出芽生殖,繁殖速度极快。 16 | -------------------------------------------------------------------------------- /docs/blog/posts/others/alternative-to-pulse-secure.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2017-10-26 4 | tags: [tsinghua,networking,sslvpn] 5 | categories: 6 | - others 7 | --- 8 | 9 | # 一个代替 Pulse Secure 客户端的工具 10 | 11 | [清华的校外 VPN 服务](http://sslvpn.tsinghua.edu.cn)使用的是 Pulse Secure,所以在外网我们需要在客户端上安装 Pulse Secure 才能使用内网的 info 和网络学堂等网站。但是 Pulse Secure 一是非自由软件二界面难看,所以我找到了一个代替它的工具:[OpenConnect](http://www.infradead.org/openconnect/). 12 | 13 | 安装后,输入以下命令: 14 | 15 | ```shell 16 | sudo openconnect --user 你的学号 sslvpn.tsinghua.edu.cn --juniper --reconnect-timeout 60 --servercert sha256:398c6bccf414f7d71b6dc8d59b8e3b16f6d410f305aed7e30ce911c3a4064b31 17 | ``` 18 | 19 | 然后输入你的 info 密码即可。 20 | -------------------------------------------------------------------------------- /docs/blog/posts/others/busy-these-days.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2018-03-26 4 | tags: [] 5 | categories: 6 | - others 7 | --- 8 | 9 | # 最近比较忙 10 | 11 | 最近一直没有更新我的 CS140e 系列文章,是因为最近一直忙于各种事情。等有空了再更新吧。 12 | -------------------------------------------------------------------------------- /docs/blog/posts/others/encountering-wu-wenhu.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2018-03-08 4 | tags: [wuwenhu] 5 | categories: 6 | - others 7 | --- 8 | 9 | # 偶遇清华吴文虎教授 10 | 11 | 今天百团大战,正准备收摊的时候,天空工场那边来了一位长者,在和他们聊着什么。我很感兴趣,就上去听。老人大概已有八十高龄(后来查,是 1936 年生),但依然精神矍铄,首先和我们讲,作为工科的学生,一定在理解原理的基础上,多多去实践。他举了他自己的例子,他首先在电机系学习,后来,计算机系成立(当时还是自动控制系),他转到了计算机系,重新学起了计算机,说计算机编程学起来并没有什么难的。当年,苹果公司送过来了中国第一台 Apple-2,他们就把电脑拆了下来研究原理,又装上去继续工作。后来,他就在计算机系任教,教的正是《程序设计基础》这门课程。他十分重视实践,在第一年开课的时候就说,最关键的就是实践,安排了一些编程实验课,期中期末就是大作业。一开始有一些同学不重视实践,结果期末就挂科了。后来同学们就明白了实践的重要性,实践起来发现并没有那么难,最后就说,“吴老师,你说得对”。他又谈到了他的体育,他当年是北京长跑代表队的集训队选手,擅长一千五百米项目,他三千米只需要九分钟就能跑完。我们都感到自愧不如。我们说,现在的《程序设计基础》是徐明星老师在教,他说徐明星是他的博士生,邬晓钧也是他的博士生,他另外还有一个高徒我记不清楚了。他还是 IOI 中国队的前教练,听到我们有过一些 OI 基础,表示了赞许和鼓励。还有一些细节记不清楚了,记起来了再补充吧。 12 | 13 | -------------------------------------------------------------------------------- /docs/blog/posts/others/start-next-term-tomorrow.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2016-02-21 4 | tags: [school,gdkoi,homework] 5 | categories: 6 | - others 7 | --- 8 | 9 | My term starts tomorrow. Sad. Homework haven't finished. I went to Guangzhou for GDKOI thie weekend, and i haven't known the result. It should be bad. I have no confidence at all. I may write less when this term starts. The second term of Senior 2 should a hard time for me. That's all. Sorry for the laziness. 10 | -------------------------------------------------------------------------------- /docs/blog/posts/others/the-end-of-senior-two.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2016-07-07 4 | tags: [coding, study] 5 | categories: 6 | - others 7 | --- 8 | 9 | # The end of senior two 10 | 11 | Finally the end of Senior 2 arrives. I'm on the way to Senior 3. 12 | The summer vacation is rather short which is really common 13 | in China. These days I have been diving into Emacs by subscribing 14 | both emacs and emacs-devel mailing list. It contributes to my 15 | English as well. I can learn a lot of new words and expression 16 | thanks to the nice and convenient feature of looking up a word 17 | in iOS. 18 | -------------------------------------------------------------------------------- /docs/blog/posts/programming/aarch64-rust-analyzer.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2020-09-13 4 | tags: [rust,rust-analyzer,arm,arm64,aarch64] 5 | categories: 6 | - programming 7 | --- 8 | 9 | # 在 arm64 上使用 rust-analyzer 10 | 11 | 远程到 arm64 的机器上进行开发,发现没有 rust-analyzer 的支持。研究了一下,发现在 rustup 里面可以找到,不过要配置一下: 12 | 13 | ```bash 14 | > rustup toolchain add nightly 15 | > rustup component add --toolchain nightly rust-analyzer-preview 16 | ``` 17 | 18 | 这个时候,应该可以找到 `~/.rustup/toolchains/nightly-aarch64-unknown-linux-gnu/bin/rust-analyzer` 文件,接下来,配置 VSCode 插件即可: 19 | 20 | ```json 21 | { 22 | "rust-analyzer.serverPath": "~/.rustup/toolchains/nightly-aarch64-unknown-linux-gnu/bin/rust-analyzer" 23 | } 24 | ``` 25 | 26 | 路径在 `~/.vscode-server/data/Machine/settings.json`。 27 | 28 | 29 | 30 | 参考:https://github.com/rust-analyzer/rust-analyzer/issues/5256 -------------------------------------------------------------------------------- /docs/blog/posts/programming/adb-over-ssh-tunnel.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2018-09-13 4 | tags: [ssh,adb,forwarding] 5 | categories: 6 | - programming 7 | --- 8 | 9 | # 通过 SSH 隧道连接 ADB 和 Android 设备 10 | 11 | 由于本机算力不足,想要在远程[编译 LineageOS](building-lineageos-in-archlinux.md) ,其中有一步需要连接到已有的设备,于是突发奇想: 12 | 13 | 1. adb 可以通过 网络连接 14 | 2. ssh 可以进行端口转发,这里是把 remote 的端口转发到 Android 设备上的端口。 15 | 16 | 方法如下: 17 | 18 | ```shell 19 | $ adb shell ip -f inet addr show wlan0 20 | $ # remember the ip address here 21 | $ adb tcpip PORT1 22 | $ ssh -R PORT2:ANDROID_IP:PORT1 REMOTE 23 | (remote)$ adb connect localhost:PORT2 # trust this device on Android 24 | ``` 25 | 26 | 参考文档: 27 | 28 | 1. [How can I connect to Android with ADB over TCP?](https://stackoverflow.com/a/3623727) 29 | 2. [SSH PORT FORWARDING EXAMPLE](https://www.ssh.com/ssh/tunneling/example) -------------------------------------------------------------------------------- /docs/blog/posts/programming/arping.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/programming/arping.png -------------------------------------------------------------------------------- /docs/blog/posts/programming/building-emacs-git-version-with-xwidgets-and-modules-in-archlinux.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2016-02-18 4 | tags: [emacs,git,archlinux,xwidgets] 5 | categories: 6 | - programming 7 | --- 8 | 9 | First you need to install these packages: 10 | 11 | sudo pacman -S git autoconf automake gtk3 webkitgtk 12 | git clone --depth 1 https://github.com/emacs-mirror/emacs.git (or git protocol if you like) 13 | cd emacs 14 | ./autogen.sh all 15 | ./configure --with-xwidgets --with-x --with-x-toolkit=gtk3 --with-modules 16 | make 17 | cd lisp 18 | make autoloads 19 | make 20 | make 21 | make 22 | 23 | Until you got everything ok. 24 | 25 | Then you can just: 26 | 27 | cd src 28 | ./emacs 29 | 30 | And then, M-x webkit-browse-url RET: 31 | ![xwidget-webkit](./xwidget-webkit.png) 32 | 33 | Also, test the modules feature using [syohex/emacs-qrencode](https://github.com/syohex/emacs-qrencode): 34 | ![qrencode](./qrencode.png) 35 | 36 | I'm using ssh and X11 Forward to show Emacs in Mac OS X! Cool! -------------------------------------------------------------------------------- /docs/blog/posts/programming/exciting-new-software-updates.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2016-05-22 4 | tags: [haskell, ghc, emacs, ghc] 5 | categories: 6 | - programming 7 | --- 8 | 9 | # Exciting new software updates 10 | 11 | Just got a piece of great news: GHC 8.0.1 is out! See the announcement [here][http://article.gmane.org/gmane.comp.lang.haskell.ghc.devel/11928]. 12 | 13 | So excited! And Emacs 25 release will be out soon. Using Emacs 25.0.94 now. Many new features available. See [this][http://puntoblogspot.blogspot.com/2016/05/emacs-251-news.html] for more information. 14 | 15 | Recently I have finally started to use mu4e and gnus. What makes it truly great is that they integrate org, bbdb and so on. 16 | -------------------------------------------------------------------------------- /docs/blog/posts/programming/good-software-engineering-rules.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2016-02-15 4 | tags: [coding, share, memo] 5 | categories: 6 | - programming 7 | --- 8 | 9 | I saw a great saying: 10 | 11 | No code runs faster than no code. 12 | 13 | No code has fewer bugs than no code. 14 | 15 | No code uses less memory than no code. 16 | 17 | No code is easier to understand than no code. 18 | 19 | It comes from [here](http://www.mikeperham.com/2016/02/09/kill-your-dependencies/). 20 | 21 | And i strongly recommends [this article](https://medium.com/@yelouafi/from-callback-to-future-functor-monad-6c86d9c16cb5) for a better understanding of monads. -------------------------------------------------------------------------------- /docs/blog/posts/programming/http.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/programming/http.jpg -------------------------------------------------------------------------------- /docs/blog/posts/programming/implement-network-syscalls.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-03-04 4 | tags: [rcore,rust,os,e1000,syscall,msi,pci,interrupt] 5 | categories: 6 | - programming 7 | --- 8 | 9 | # 实现网络的 syscall 10 | 11 | 有了网卡驱动,接下来要做的就做网络的 syscall 了。为了测试,首先在 busybox 里找可以用来测试的 applet,由于没有实现 poll,所以 nc telnet 啥的都用不了。最后选择到了 ping 和 pscan 上。 12 | 13 | ping 大家都很了解,pscan 就是一个扫端口的,对一个 ip 连续的若干个端口发起 tcp 请求。这就要求我提供 raw socket 和 tcp socket 状态的支持。由于网络栈本身是异步的,但 read connect 这些函数在不调 setsockopt 的前提下又是同步的,然而现在又没有 signal 可以用,要是 block 了就再也出不来了。于是就采用了 Condvar 的办法,拿一个全局的条件变量,当 poll 不到内容的时候,先把线程拿掉,等到网络栈更新了,再恢复。这样至少不会把 cpu 也 block 住。 14 | 15 | 然后就是把 socket 部分改了又改吧,数据结构的设计改了几次,为了解决 ownership 问题上锁啊也有点多,但是也更细了,虽然实际上可能没有必要,因为上面还有大的锁。不过性能还不是现在考虑的重点,关键还要先把 send recv accept bind listen 啥的写得差不多了,然后还有把 poll/select 实现了,这个很关键。 16 | 17 | 中间遇到的最大的坑就是,接收 pci interrupt 的时候总是啥也没有,然后靠万能的 qemu trace 发现,原来是 mask 掉了,所以啥也收不了,然后最后的解决方案就是用 MSI Interrupt #55 搞定了这个问题。至于为啥是 55 呢,因为 23 + 32 = 55 啊(误 18 | 19 | 总之是修好了。终于可以继续写其它的 syscall 了。还没想好 poll 要怎么写,orz。 20 | -------------------------------------------------------------------------------- /docs/blog/posts/programming/interesting-java-formatting-problem.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2017-12-31 4 | tags: [java,datetime formatting] 5 | categories: 6 | - programming 7 | --- 8 | 9 | # 有趣的 Java 日期格式化问题 10 | 11 | 今天在群里看到有人说,Java 的日期格式化有问题,如果用 `YYYY-MM-dd` ,今天的日期就会显示 `2018-12-31` 。我立马在本地用 Java REPL (aka Groovy) 跑了一下,果然如此: 12 | 13 | ```groovy 14 | $ date = new Date() 15 | ===> Sun Dec 31 10:51:26 CST 2017 16 | $ import java.text.SimpleDateFormat 17 | ===> java.text.SimpleDateFormat 18 | $ new SimpleDateFormat("YYYY-MM-dd").format(date) 19 | ===> 2018-12-31 20 | ``` 21 | 22 | 解决方案是,把格式换为 `yyyy-MM-dd` ,确实就可以了。于是我就去研究了一下文档: [Class SimpleDateFormat](https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html) ,发现了问题: 23 | 24 | `y` 代表 `year` ,而 `Y` 代表 `week year` 。根据 [week year](https://docs.oracle.com/javase/7/docs/api/java/util/GregorianCalendar.html#week_year) ,因为今年最后的一个星期在明年的部分更多,于是这个星期被归在了明年,所以这一周属于 2018,这就可以解释之前的那个输出问题了。 25 | -------------------------------------------------------------------------------- /docs/blog/posts/programming/interesting-links.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2016-04-09 4 | tags: [links,share] 5 | categories: 6 | - programming 7 | --- 8 | 9 | # Interesting links 10 | 11 | Having a bad cold. Really annoying. 12 | 13 | Okay, here comes the interesting links: 14 | 15 | https://glyph.twistedmatrix.com/2015/11/editor-malware.html 16 | 17 | http://kitchingroup.cheme.cmu.edu/blog/2016/04/07/Writing-hy-code-from-hy-code/ 18 | 19 | https://github.com/holomorph/transmission 20 | 21 | https://github.com/bergey/org-babel-diagrams 22 | 23 | http://ess.r-project.org/ 24 | 25 | http://projects.haskell.org/diagrams/ 26 | -------------------------------------------------------------------------------- /docs/blog/posts/programming/mandelbrot.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/programming/mandelbrot.jpg -------------------------------------------------------------------------------- /docs/blog/posts/programming/mandelbrot2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/programming/mandelbrot2.jpg -------------------------------------------------------------------------------- /docs/blog/posts/programming/more-on-scanf-and-scanf-s.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2018-01-30 4 | tags: [vs,c,cs,c++] 5 | categories: 6 | - programming 7 | --- 8 | 9 | # 再次吐槽 VS 关于 scanf 和 scanf_s 的问题 10 | 11 | 继[上次的吐槽](on-scanf-and-scanf-s.md)后,今天再次遇到同学因为 `scanf` 在 VS 下的 `deprecation error` 感到十分迷茫,在知乎上求助又因为拍照的原因被说,我就在此再次吐槽一下 VS 这对初学者很不友善很不友善的两点。 12 | 13 | 一点就是上面提到的这个,另一点就是程序结束后任意键以退出这一功能要做得更加醒目一点。前者由于大多数新手在学习 `C/C++` 的时候都会跟着书上或者网上的代码敲一遍输入输出的代码,很容易就会撞到这个问题。后者则会让新手习惯性地以为程序闪退了,没有出结果,而不知道其实是程序执行结束后关闭而已。 14 | -------------------------------------------------------------------------------- /docs/blog/posts/programming/news.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2016-02-16 4 | tags: [security, ca, twitter, tips, vim] 5 | categories: 6 | - programming 7 | --- 8 | 9 | Oh StartSSL places its PKI in 360's server. You know, i hate 360. SO please beware if the website is using StartSSL. 10 | Here is the [link](https://pierrekim.github.io/blog/2016-02-16-why-i-stopped-using-startssl-because-of-qihoo-360.html). 11 | 12 | And here comes the vim-tips: 13 | ``` 14 | You probably know that 'u' is undo. Do you know that Ctrl-R is redo? 15 | ``` 16 | It comes from [here](https://twitter.com/vimtips/status/699277152399835136). 17 | 18 | -------------------------------------------------------------------------------- /docs/blog/posts/programming/nginx-php-upload-size-limit.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2018-06-10 4 | tags: [nginx,php,mediawiki] 5 | categories: 6 | - programming 7 | --- 8 | 9 | # 调整 Nginx 和 PHP 的上传文件大小限制 10 | 11 | 之前迁移的 MediaWiki,有人提出说无法上传一个 1.4M 的文件。我去看了一下网站,上面写的是限制在 2M,但是一上传就说 Entity Too Large,无法上传。后来经过研究,是 Nginx 对 POST 的大小进行了限制,同时 PHP 也有限制。 12 | 13 | Nginx 的话,可以在 nginx.conf 的 http 中添加,也可以在 server 或者 location 中加入这么一行: 14 | 15 | ``` 16 | client_max_body_size 100m; 17 | ``` 18 | 19 | 我的建议是,尽量缩小范围到需要的地方,即 location > server > http。 20 | 21 | 在 PHP 中,则修改 /etc/php/7.0/fpm/php.ini: 22 | 23 | ``` 24 | post_max_size = 100M 25 | ``` 26 | 27 | 回到 MediaWiki 的上传页面,可以看到显示的大小限制自动变成了 100M,这个是从 PHP 的配置中直接获得的。 28 | -------------------------------------------------------------------------------- /docs/blog/posts/programming/nginx.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/programming/nginx.jpg -------------------------------------------------------------------------------- /docs/blog/posts/programming/nodejs-experiences.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2018-06-08 4 | tags: [nodejs,mongodb,mongoose,session] 5 | categories: 6 | - programming 7 | --- 8 | 9 | # 最近写 Node.js 遇到的若干坑 10 | 11 | 最近在做前后端分离,前端在用 Vue.js 逐步重写,后端则变为 api 的形式。同时,我尝试了用 autocannon 和 clinic 工具测试自己的 api endpoint 的性能,一开始发现有几个延迟会特别高,即使是一个很简单的 api 也有不正常的高延迟。 12 | 13 | 于是,我用 clinic 生成了 flamegraph,发现了一些问题: 14 | 15 | 1. 我在 session 里保存了一些缓存的信息,这部分内容比较大,express-session 在保存到数据库前会先 JSON.stringify 再 crc 判断是否有改变,如果有改变则保存下来。但是由于我的这个对象嵌套层数多,所以时间花得很多。我调整了这个对象的结构,缩小了很多以后,果然这部分快了很多 16 | 2. 有一个 API 需要大量的数据库查询,原本是 O(结点总数)次查询,我考虑到我们数据的结构,改成了 O(深度),果然快了许多 17 | 3. 之前遇到一个小问题,就是即使我没有登录,服务器也会记录 session 并且返回一个 cookie。检查以后发现,是 connect-flash 即使在没有使用的时候,也会往 cookie 中写入一个空的对象,这就导致 express-session 认为需要保存,所以出现了问题。解决方案就是,换成了它的一个 fork:connect-flash-plus,它解决了这个问题 18 | 19 | -------------------------------------------------------------------------------- /docs/blog/posts/programming/parse-upload-csv-frontend.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-07-17 4 | tags: [js,frontend,iconv,encoding,gbk] 5 | categories: 6 | - programming 7 | --- 8 | 9 | # 前端解析上传的 CSV 10 | 11 | 之前做过一个在前端解析上传的 CSV 的功能,但是只能支持部分的 encoding,遇到 gbk 就傻眼了。一番研究以后,找到了比较科学的方案: 12 | 13 | ```javascript 14 | import * as Chardet from 'chardet'; 15 | import * as Iconv from 'iconv-lite'; 16 | 17 | const reader = new FileReader(); 18 | reader.onload = (e) => { 19 | const data = e.target.result; 20 | const view = Buffer.from(data); 21 | // detect encoding and convert 22 | const encoding = Chardet.detect(view); 23 | const result = Iconv.decode(view, encoding); 24 | const csvData = Papa.parse(result).data; 25 | // do anything with it 26 | }; 27 | 28 | reader.readAsArrayBuffer(blob_here); 29 | ``` 30 | 31 | 依赖了两个库:`chardet` 和 `iconv-lite` ,测试了一下,解析 UTF-8 GBK UTF-16BE 都没问题。 32 | 33 | P.S. 在生成 csv 的时候,也会出现 Excel 打开后乱码的问题,一开始我以为需要转 UTF-16 然后再添加 BOM Mark,后来发现只要在最前面加上 0xEF 0xBB 0xFB(UTF-8 编码下的 BOM Mark)即可。 34 | -------------------------------------------------------------------------------- /docs/blog/posts/programming/ping.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/programming/ping.jpg -------------------------------------------------------------------------------- /docs/blog/posts/programming/qrencode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/programming/qrencode.png -------------------------------------------------------------------------------- /docs/blog/posts/programming/rust-access-linker-script-address.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-01-07 4 | tags: [rust,ld,linker,ffi] 5 | categories: 6 | - programming 7 | --- 8 | 9 | # Rust 获取 Linker Script 中的地址 10 | 11 | 在 Linker Script 中可以记录下一个地址到一个变量中,大概这样: 12 | 13 | ```text 14 | .text: { 15 | PROVIDE(__text_start = .); 16 | *(.text .text.* .gnu.linkonce.t*) 17 | PROVIDE(__text_end = .); 18 | } 19 | ``` 20 | 21 | 这里的 `PROVIDE()` 是可选的。这样,代码里就可以获取到 .text 段的地址了。在 C 中,直接 extern 一个同名的变量就可以了,但在 Rust 中,需要这样获取: 22 | 23 | ```rust 24 | extern "C" { 25 | fn __text_start(); 26 | fn __text_end(); 27 | } 28 | 29 | // __text_start as usize 30 | // __text_end as usize 31 | ``` 32 | 33 | 这样就可以拿到地址了。 -------------------------------------------------------------------------------- /docs/blog/posts/programming/some-interesting-links.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2016-03-09 4 | tags: [twitter,vim,share] 5 | categories: 6 | - programming 7 | --- 8 | 9 | # Some interesting links 10 | 11 | I'm here to share some interesting links. I do not have much time writing the blog now. 12 | 13 | Recently I have been working on CodeFalling/MacGesture on Github. If you are interested in it, go and have a look. 14 | 15 | Here are the links to share: 16 | https://twitter.com/PoolpOrg/status/694593152670437376 17 | https://github.com/wellle/targets.vim 18 | http://thecodelesscode.com/case/225 19 | https://twitter.com/zhangyuze320602/status/706457155763712000 20 | 21 | I have done reading the biography of Steve Jobs. Great book. -------------------------------------------------------------------------------- /docs/blog/posts/programming/thoughts-on-stanford-cs140e-6.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2018-03-05 4 | tags: [rust,os,stanford,cs140e,fat32,fuzz test] 5 | categories: 6 | - programming 7 | --- 8 | 9 | # 近来做 Stanford CS140e 的一些进展和思考(6) 10 | 11 | 在[上一篇文章](thoughts-on-stanford-cs140e-5.md)之后,作者终于更新了测试的用例,我的程序终于可以成功跑过所有测试,也成功在树莓派跑起来。不过,我的代码中很多地方的错误处理比较偷懒,往往直接 `panic` ,显然并不友好。同时,我想到了使用 [cargo-fuzz](https://github.com/rust-fuzz/cargo-fuzz) 来进行自动化测试,果然,使用这个很快就修复了不少我没想到的会出错的地方,比如乘法溢出,目录项没有正确结束等等。目前还发现一个 `timeout` 的问题,研究发现大概是文件的 `cluster chain` 中出现了环,导致一直读取文件而没有停止。要解决这个问题,我目前想到的是 `Floyd` 的判圈算法,但还没上实现。等过几天,新的 `Assignment 3` 出了以后,再继续更新。希望作者少点跳票,多点勤奋,哈哈哈哈哈 12 | 13 | 更新:[下一篇在这里](thoughts-on-stanford-cs140e-7.md)。 -------------------------------------------------------------------------------- /docs/blog/posts/programming/thoughts-on-stanford-cs140e-8.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2018-04-10 4 | tags: [rust,os,stanford,cs140e,rpi3,aarch64] 5 | categories: 6 | - programming 7 | --- 8 | 9 | # 近来做 Stanford CS140e 的一些进展和思考(8) 10 | 11 | 在[上一篇文章](thoughts-on-stanford-cs140e-7.md)之后,我其实还是很忙,但是一直心理惦记着这件事,毕竟只剩最后的一点点就可以做完了,不做完总是觉得心痒。 12 | 13 | 今天做的部分是调度。我们目前只在 EL0 运行了一个 shell,每当触发 exception 时回到 kernel 进行处理,再回到原来的地方。但现在,我要实现一个 preemtive round-robin scheduler,就需要管理当前的所有进程,并且维护当前的进程状态,当时钟中断到来的时候,决定下一个 time slice 要执行的进程,再切换过去。这个过程当然会遇到不少的坑。 14 | 15 | 首先,我们需要判断一个进程是否可以执行了。考虑到阻塞的 IO,作者提供了一个优雅的方法:如果这个进程阻塞在 IO 上,那么,提供一个函数,在 scheduler 中调用,判断所需要的数据是否到达。这样,我们就可以一个循环把下一个 time slice 要执行的线程找到。如果找不到,就等待 interrupt 再尝试。 16 | 17 | 困难的地方在于,在启动的时候,切换到一个起始线程。并且在上下文切换的时候,在 process 1 -> kernel -> process 2 这两步过程中,有许多寄存器都需要仔细考虑如何实现。并且在这个过程中,我也发现了之前写的代码中的问题,最终修复了(目前来看是 working 了)。 18 | 19 | 我的代码实现在 [这里](https://github.com/jiegec/cs140e/commit/977f179a9b28e88e85f4ba9577a0682bf2b6c57b) 。下一步就要写 syscall 了。希望能在期中前抽时间赶紧把这个做完。 20 | 21 | 18:54 PM Update: 刚实现完了 sleep 的 syscall。比预想中要简单。果然找到了自己实现的调度器的 BUG。此系列大概是完结了。 22 | 23 | 2019-02-12 Update: [下一篇文章](thoughts-on-stanford-cs140e-9.md)。 24 | -------------------------------------------------------------------------------- /docs/blog/posts/programming/thoughts-on-stanford-cs140e-9.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-02-12 4 | tags: [rust,os,stanford,cs140e,kernel] 5 | categories: 6 | - programming 7 | --- 8 | 9 | # 近来做 Stanford CS140e 的一些进展和思考(9) 10 | 11 | 距离[上一篇 CS140e 系列文章](thoughts-on-stanford-cs140e-8.md)已经过去了很久,距离第一篇文章过了一年零几天。在后来这一段时间内,CS140e 结束了课程,又开始了新一年的 winter 2019 课程,迎来的却是 C 版本的 CS140e,不禁让人感到失望。还好,Sergio Benitez 放出了原来的 CS140e 的[镜像](https://cs140e.sergio.bz),如果大家仍然想回去查看原版优质的 CS140e,可以点进去参考。 12 | 13 | 后来因为机缘巧合参与到了清华的 Rust OS 课程,又想到回来把原来的 CS140e 进行更新,于是顺带把跑在 QEMU 下的一些需要的工作给做了,另外把 Rust nightly 版本更新了(一年前的 nightly 还能叫 nightly?),才发现标准库变化还是蛮大的,由于 nightly 版本变了,而且原来是内嵌了一个阉割过的 std,所以主要是从新的 std 里抄代码到内嵌的 std 中。另外,原来的 xargo 也不再维护了,转而使用 rust-xbuild 进行交叉编译。 14 | 15 | 然后又顺手实现了 backtrace 和从 backtrace 中配合 dward symbols 找函数名的功能,不过实践证明,这些东西还是 addr2line 做得更好,所以也就没有做下去,在 relocation 上也是遇到了各种问题。这个经验也是应用到了 rCore 那边。 16 | 17 | 再之后也就是寒假写驱动了,见之前的一个博文,我就没有在 CS140e 上去实现它了。有时间有兴趣的时候再考虑做一下 Raspberry Pi 的网卡驱动吧。 18 | 19 | 写于迪拜雨天。 -------------------------------------------------------------------------------- /docs/blog/posts/programming/tips-on-git-shallow-clone.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2016-04-03 4 | tags: [git,clone,tips] 5 | categories: 6 | - programming 7 | --- 8 | 9 | # Tips on git shallow clone 10 | 11 | Just learned a new tip on git shallow clone. As you know, some repository are really really large, such as emacs and linux. Cloning is slow and unstable. And there is no way to pause and resume a git clone. So I use shallow clone to clone them. But what if I want to clone other branches? 12 | 13 | 14 | From here: http://stackoverflow.com/a/27393574/2148614 15 | 16 | ``` 17 | git remote set-branches origin '*' 18 | ``` -------------------------------------------------------------------------------- /docs/blog/posts/programming/unix-nice.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2016-02-24 4 | tags: [unix,nice,process,twitter] 5 | categories: 6 | - programming 7 | --- 8 | 9 | I just saw this interesting tweet: 10 | ``` 11 | Unix系统的每个进程,都有一个nice值。这个值越大,优先级越低。然后,还有一个nice命令,每运行一次,指定进程的nice值+10。它的意思就是做人要nice,把更多的CPU时间留给别人。nice值越高,你留给自己的份额就越少。 12 | ``` 13 | 14 | From [here](https://twitter.com/ruanyf/status/702382281990791172)by [@ruanyf](https://twitter.com/ruanyf). 15 | 16 | And i didn't known that until now. Cool! The name 'nice' is nice, too. 17 | 18 | Don't worry if you can't read Chinese. See also [here](http://www.thegeekstuff.com/2013/08/nice-renice-command-examples/) and [here](https://en.wikipedia.org/wiki/Nice_(Unix)). -------------------------------------------------------------------------------- /docs/blog/posts/programming/upgrade-mongodb-to-4.0.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2018-07-04 4 | tags: [mongodb,transaction] 5 | categories: 6 | - programming 7 | --- 8 | 9 | # 升级 MongoDB 到 4.0 10 | 11 | MongoDB 4.0 刚刚发布,加入了我很想要的 Transaction 功能。不过,我一更新就发现 MongoDB 起不来了。研究了一下日志,发现由于我创建数据库时,MongoDB 版本是 3.4,虽然后来升级到了 3.6,但还是用着 3.4 的兼容模式。这个可以这样来检测: 12 | 13 | ```shell 14 | $ mongo 15 | > db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } ) 16 | ``` 17 | 18 | 如果不是 3.6,升级到 4.0 之前,需要先执行如下操作: 19 | 20 | ```shell 21 | $ # MongoDB version 3.6 22 | $ mongo 23 | > db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } ) 24 | ``` 25 | 26 | 然后再升级到 MongoDB 4.0,才能正常地启动 MongoDB 4.0。之后可以考虑尝试使用 MongoDB 4.0 的 Transaction 了。不知道什么时候进入 Debian 的 stretch-backports 源中。 27 | 28 | 为了使用 MongoDB 4.0 的新特性,输入以下命令: 29 | 30 | ```shell 31 | $ mongo 32 | > db.adminCommand( { setFeatureCompatibilityVersion: "4.0" } ) 33 | ``` 34 | 35 | 之后会尝试一下 MongoDB 4.0 的 Transaction 功能。 36 | -------------------------------------------------------------------------------- /docs/blog/posts/programming/using-chinese-pyim.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2016-02-28 4 | tags: [emacs,chinese,pyim,pinyin] 5 | categories: 6 | - programming 7 | --- 8 | 9 | Recently i have been using tumashu's chinese-pyim. It's great to write Chinese right in Emacs. But as the personal dict is empty, this must be a hard time for me to build it. And i have found several bugs, too. After all, this project is great. I have donated some money to it. -------------------------------------------------------------------------------- /docs/blog/posts/programming/verilog-first-try.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2018-06-21 4 | tags: [fpga,verilog,verilator,cpu] 5 | categories: 6 | - programming 7 | --- 8 | 9 | # Verilog 初体验 10 | 11 | 自己以前一直对硬件方面没有接触,但是大二大三很快就要接触相关知识,所以自己就先预习一下 Verilog HDL,以便以后造计算机。听学长们推荐了一本书叫《自己动手写 CPU》,由于自己手中只有很老的 Spartan-3 板子,手上没有可以用来试验的 FPGA,所以选择用 Verilog + Verilator 进行模拟。既然是模拟,自然是会有一定的问题,不过这个以后再说。 12 | 13 | 然后就是模仿着这本书的例子,写了指令的获取和指令的解码两部分很少很少的代码,只能解码 ori (or with immidiate) 这一个指令。然后,通过 verilator 跑模拟,输出 vcd 文件,再用 gtkwave 显示波形,终于能够看到我想要的结果了。能够看到,前一个时钟周期获取指令,下一个时钟周期进行解码,出现了流水线的结果。这让我十分开心。 14 | 15 | 接下来就是实现一些基本的算术指令,然后讲计算的结果写入到相应的寄存器中。这样做完之后,就可以做一个基于 verilator 的简易 A+B 程序了。 16 | 17 | 我的代码发布在[jiegec/learn_verilog](https://github.com/jiegec/learn_verilog)中。最近马上到考试周,可能到暑假会更频繁地更新吧。 18 | -------------------------------------------------------------------------------- /docs/blog/posts/programming/virtio-drivers-implementation-arp-packet.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/programming/virtio-drivers-implementation-arp-packet.jpg -------------------------------------------------------------------------------- /docs/blog/posts/programming/xwidget-webkit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/programming/xwidget-webkit.png -------------------------------------------------------------------------------- /docs/blog/posts/software/010-editor-flv-parsing.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2018-12-06 4 | tags: [010editor,macos,parser,binary,hex,flv,h264,avc] 5 | categories: 6 | - software 7 | --- 8 | 9 | # 编写 010 Editor 的 FLV Template 10 | 11 | 最近在做 FLV 和 H264 方面的研究,研究了很多标准和文档,然后用 010 Editor 对着文件进行分析。这个软件真的很好用,对研究二进制结构用处特别大。不过它自带的 FLV.bt 功能不是很好,我对它加上了 H264(AVC) 的部分支持,放在了 [myFLV.bt](https://github.com/jiegec/tools/blob/master/myFLV.bt) 里。我也写了 H264 的解析,不过效率不高,大文件要卡好一会。 12 | 13 | 除此之外,很多格式,010 editor 都有支持,特别好用,它的解析器语法也很好写。 -------------------------------------------------------------------------------- /docs/blog/posts/software/2018-12-27-20-33-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/software/2018-12-27-20-33-10.png -------------------------------------------------------------------------------- /docs/blog/posts/software/2018-12-27-20-35-21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/software/2018-12-27-20-35-21.png -------------------------------------------------------------------------------- /docs/blog/posts/software/2018-12-27-20-38-07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/software/2018-12-27-20-38-07.png -------------------------------------------------------------------------------- /docs/blog/posts/software/2018-12-27-20-48-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/software/2018-12-27-20-48-48.png -------------------------------------------------------------------------------- /docs/blog/posts/software/2018-12-27-20-49-00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/software/2018-12-27-20-49-00.png -------------------------------------------------------------------------------- /docs/blog/posts/software/admin-mongo-docker.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2018-10-23 4 | tags: [docker,secoder,mongodb] 5 | categories: 6 | - software 7 | --- 8 | 9 | # 部署 adminMongo 的 Docker 镜像 10 | 11 | 之前在软工的平台上部署了一个 MongoDB,但是自然是仅内网访问,想要浏览内容只能通过网页上的 Console 进去看,体验特别不好。所以想着能不能找一个在线的 MongoDB 浏览器。由于软工平台只能部署 Docker 镜像,所以我找到了[mongo-express](https://hub.docker.com/_/mongo-express/)和[adicom/admin-mongo](https://hub.docker.com/r/adicom/admin-mongo/)。但软工平台现在还没实现环境变量的配置,所以我选了后者。 12 | 13 | 首先本地创建一个 app.json,让它监听 0.0.0.0:80,通过 deployer 传到平台上的配置,然后再把配置 mount 到 /app/config 路径上。现在就可以成功地在网页上浏览 MongoDB 了。 14 | -------------------------------------------------------------------------------- /docs/blog/posts/software/cbp-experiments-simpoint-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/software/cbp-experiments-simpoint-2.png -------------------------------------------------------------------------------- /docs/blog/posts/software/cbp-experiments-simpoint-omnetpp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/software/cbp-experiments-simpoint-omnetpp.png -------------------------------------------------------------------------------- /docs/blog/posts/software/cbp-experiments-simpoint-perlbench-diffmail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/software/cbp-experiments-simpoint-perlbench-diffmail.png -------------------------------------------------------------------------------- /docs/blog/posts/software/cbp-experiments-simpoint-xz-input.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/software/cbp-experiments-simpoint-xz-input.png -------------------------------------------------------------------------------- /docs/blog/posts/software/cbp-experiments-simpoint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/software/cbp-experiments-simpoint.png -------------------------------------------------------------------------------- /docs/blog/posts/software/create-esp-partition-macos.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-09-14 4 | tags: [linux,efi,esp,macos,vmware] 5 | categories: 6 | - software 7 | --- 8 | 9 | # 在 macOS 上创建 ESP 镜像文件 10 | 11 | 最近 rCore 添加了 UEFI 支持,在 QEMU 里跑自然是没有问题,然后尝试放到 VMWare 虚拟机里跑,这时候问题就来了:需要一个带有 ESP 盘的 vmdk 虚拟盘。搜索了一下网络,找到了解决方案: 12 | 13 | ```shell 14 | hdiutil create -fs fat32 -ov -size 60m -volname ESP -format UDTO -srcfolder esp uefi.cdr 15 | ``` 16 | 17 | 其中 `60m ` `esp` 和 `uefi.cdr` 都可以按照实际情况修改。它会把 esp 目录下的文件放到 ESP 分区中,然后得到一个镜像文件: 18 | 19 | ``` 20 | uefi.cdr: DOS/MBR boot sector; partition 1 : ID=0xb, start-CHS (0x3ff,254,63), end-CHS (0x3ff,254,63), startsector 1, 122879 sectors, extended partition table (last) 21 | ``` 22 | 23 | 接着转换为 vmdk: 24 | 25 | ```shell 26 | qemu-img convert -O vmdk uefi.cdr uefi.vmdk 27 | ``` 28 | 29 | 这样就可以了。 -------------------------------------------------------------------------------- /docs/blog/posts/software/enable-dark-mode-google-chrome.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2018-11-27 4 | tags: [macos,darkmode,googlechrome] 5 | categories: 6 | - software 7 | --- 8 | 9 | # 强制启用 Google Chrome 原生的 Dark Mode 10 | 11 | Mojave 的 Dark Mode 真香,但是 Google Chrome 并不会随着系统的 Dark Mode 设置变化,所以 NightOwl 只能让部分软件按照时间变更 Dark/Light Mode。一番搜索,发现其实 Google Chrome 其实已经[支持了 Dark Mode](https://chromium-review.googlesource.com/c/chromium/src/+/1238796),但只能设置,不能按照系统的状态自动切换,命令如下: 12 | 13 | ``` 14 | $ open -a Google\ Chrome --args --force-dark-mode 15 | ``` 16 | 17 | 然后就可以看到 Google Chrome 已经是 Dark Mode 了。但可惜并不能自动切换。 18 | 19 | -------------------------------------------------------------------------------- /docs/blog/posts/software/enable-vim-mode-in-xcode-9.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2018-09-08 4 | tags: [xcode,vim,xvim] 5 | categories: 6 | - software 7 | --- 8 | 9 | # 在 Xcode 9 上启用 Vim 模拟(XVim 2) 10 | 11 | 作为一个不用 vim 编辑会死星人,用 Xcode 总是止不住自己想 Escape 的心。于是找到了 [XVimProject/XVim2](https://github.com/XVimProject/XVim) 进行配置。 12 | 13 | 大致方法如下: 14 | 15 | 1. 按照 [Signing Xcode](https://github.com/XVimProject/XVim2/blob/master/SIGNING_Xcode.md) 对 Xcode 进行重签名。套路和对 GDB 进行签名一样。不过这次,签名完成的时间可长多了,毕竟 Xcode 这么大。 16 | 2. 接着按照项目的 README,首先 `git clone` 然后 `make` ,第一次打开 Xcode 的时候选择 `Load Bundle` 即可。 17 | 18 | 终于可以满足我 Escape Xcode 的欲望了。 -------------------------------------------------------------------------------- /docs/blog/posts/software/farewell-flash.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2017-07-26 4 | tags: [flash,adobe] 5 | categories: 6 | - software 7 | --- 8 | 9 | # Farewell, Flash 10 | 11 | It's time to say goodbye to Flash. 12 | [HN #1](https://news.ycombinator.com/item?id=14848786) 13 | [HN #2](https://news.ycombinator.com/item?id=14854618) 14 | -------------------------------------------------------------------------------- /docs/blog/posts/software/get-resolvers-in-c.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-04-30 4 | tags: [libc,linux,c,dns] 5 | categories: 6 | - software 7 | --- 8 | 9 | # 在 Linux 中用 C 代码获取 DNS 服务器列表 10 | 11 | 最近在做一个作业的时候,发现里面有个步骤是获取 Linux 系统中的 DNS 服务器列表,它的方法很粗暴,直接 cat grep cut 再处理。我就在想有没有完全代码的实现,然后搜了一下,果然有: 12 | 13 | ```c++ 14 | #include 15 | // ... 16 | res_init(); 17 | // _res.nsaddr_list is an array of resolvers 18 | ``` 19 | 20 | 用到了全局变量 `_res` ,虽然很 hacky,但是至少是工作的,不清楚兼容性几何。 -------------------------------------------------------------------------------- /docs/blog/posts/software/grafana-influxdb-telegraf-miio.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2018-11-27 4 | tags: [macos,grafana,influxdb,telegraf,miio] 5 | categories: 6 | - software 7 | --- 8 | 9 | # 配置 Grafana+InfluxDB+Telegraf 并添加 MIIO 数据来源 10 | 11 | 之前一直想配一个监控系统,现在有机会了,就简单配了一下。发现真的特别简单,用 Homebrew 安装这三个软件并且都跑起来,然后稍微动一下配置,就可以得到可观的效果了。 12 | 13 | 然后想利用 miio 配置一下,把宿舍的空气净化器各项参数拿到,以 Telegraf 的插件形式定时上报,然后通过 Grafana 进行可视化。插件放在了 [jiegec/tools](https://github.com/jiegec/tools/blob/master/telegraf/miio.py) 下,就是一个简单的 Python 脚本。配置方法如下: 14 | 15 | 编辑 `/usr/local/etc/telegraf.d/miio.conf`: 16 | 17 | ```ini 18 | [[inputs.exec]] 19 | commands = ["/usr/local/bin/python3 /Volumes/Data/tools/telegraf/miio.py MIID_HERE"] 20 | timeout = "5s" 21 | data_format = "influx" 22 | ``` 23 | 24 | 默认了 miio 路径为 `/usr/local/bin/miio` 。 -------------------------------------------------------------------------------- /docs/blog/posts/software/grafana-influxdb-visualize-ping.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-01-13 4 | tags: [grafana,influxdb,telegraf] 5 | categories: 6 | - software 7 | --- 8 | 9 | # Grafana 中可视化 Ping 时把 Timeout 显示为指定值 10 | 11 | 刚遇到一个需求,就是用 Telegraf 收集 ping 信息,然后在 Grafana 里可视化当前的延迟,如果超时了,就显示一个指定值,如 999,这样就可以放到一个 Gauge 里面可视化了。但是,问题在于,Telegraf 的 ping input 在超时的时候只会在 result_code 里写一个 [2](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/ping) ,其他项都是空的,因而如果直接用 GROUP BY time(interval) fill(999) 会导致最新的一个数据经常得到 999。这意味着需要根据 "result_code" 来进行区分 Timeout 的情况。最后捣腾了很久,得到了这个方案: 12 | 13 | ``` 14 | select "average_response_ms" * (2 - "result_code") / 2 + "result_code" / 2 * 999 from (select "average_response_ms", "result_code" from ping where $timeFilter fill(0)) 15 | ``` 16 | 17 | 最后的方法很粗糙:当 "result_code" 是 0 也就是成功的时候,得到延迟,而当 "result_code" 是 2 也就是超时的时候,直接得到 999。这样就解决了这个问题。 -------------------------------------------------------------------------------- /docs/blog/posts/software/grafana-variable-regex-exclusion.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-01-10 4 | tags: [grafana,regex] 5 | categories: 6 | - software 7 | --- 8 | 9 | # Grafana Variable 的 regex 过滤方式 10 | 11 | 用 InfluxDB 收集到 Mountpoint 数据的时候,经常会掺杂一些不关心的,如 TimeMachine,KSInstallAction 和 AppTranslocation 等等。所以,为了在 Variables 里过滤掉他们,需要用 Regex 进行处理。[网上](https://community.grafana.com/t/templating-regex-exclude-not-working/1077/4)有人提供了方案,就是通过 Negative Lookahead 实现: 12 | 13 | ```regexp 14 | /^(?!.*TimeMachine)(?!.*KSInstallAction)(?!.*\/private)/ 15 | ``` 16 | 17 | 这样就可以把不想看到的这些 mountpoint 隐藏,节省页面空间了。当然了,这里其实也可以用白名单的方法进行处理,直接写 regex 就可以了。 -------------------------------------------------------------------------------- /docs/blog/posts/software/grafana-visualize-vote18.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2018-12-07 4 | tags: [grafana,influxdb,telegraf,nodejs,scraper] 5 | categories: 6 | - software 7 | --- 8 | 9 | # Grafana 可视化实践:清华大学 2018 年度人物评选 10 | 11 | 最近这段时间,清华内部正在投票选出今年的年度人物,想到最近刚好在学习使用 Grafana+InfluxDB+Telegraf 全家桶,于是想着能不能写个爬虫把数据都拿下来,然后用 Grafana 画出来,就可以得到一个投票随时间变化的趋势。爬虫很简单,就是登录,获取页面信息,然后按照 InfluxDB 的输入格式进行输出即可。代码放在了 [jiegec/student-tsinghua-vote18](https://github.com/jiegec/student-tsinghua-vote18) 下。 12 | 13 | 接着就是用 Grafana 进行可视化,大概得到了这样一个曲线: 14 | 15 | ![](vote18.png) 16 | 17 | 为保护隐私,把名字隐去了。实际上的投票时间是从 12-3 号开始到 12-7 号结束,但由于宿舍停电的原因所以采样的点在半夜的时候都没有,所以看起来有点奇怪,但还是能够反应总体的趋势的。比如可以看到前两名很早就一马当先,而后一直遥遥领先,下面的选手则排名变动很大,特别是截止前最后一段时间,大家都在拼命拉票,可见大家都是 DDL 选手啊。如果对上面这个图求个导,看看变化率的话: 18 | 19 | ![](vote18-speed.png) 20 | 21 | 这显现出了很有意思的一个趋势,就是每天十二点左右都有一个高峰期,然后在零点前大概熄灯附近的时间也是一个高峰期,另外就是截止前最后的抢票阶段,大家都在疯狂拉票,从中午拉到最后时刻。由于停电的原因,在零点附近的数据都比较的鬼畜,不过影响不大,趋势一目了然。 22 | 23 | Grafana 真香!期望可以学到更多高端的查询语法和可视化的骚操作,现在有很多东西不知道该怎么可视化,比较苦恼,不知道大家有没有什么经验可以分享。 -------------------------------------------------------------------------------- /docs/blog/posts/software/linux-core-scheduling-cppc-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/software/linux-core-scheduling-cppc-1.png -------------------------------------------------------------------------------- /docs/blog/posts/software/linux-core-scheduling-cppc-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/software/linux-core-scheduling-cppc-2.png -------------------------------------------------------------------------------- /docs/blog/posts/software/linux-perf-pmu-intel-bts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/software/linux-perf-pmu-intel-bts.png -------------------------------------------------------------------------------- /docs/blog/posts/software/linux-perf-pmu-intel-pt-dump.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/software/linux-perf-pmu-intel-pt-dump.png -------------------------------------------------------------------------------- /docs/blog/posts/software/linux-perf-pmu-intel-tnt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/software/linux-perf-pmu-intel-tnt.png -------------------------------------------------------------------------------- /docs/blog/posts/software/linux-vm-on-harmonyos-computer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/software/linux-vm-on-harmonyos-computer.png -------------------------------------------------------------------------------- /docs/blog/posts/software/locale.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2021-09-02 4 | tags: [locale,sort] 5 | categories: 6 | - software 7 | --- 8 | 9 | # Locale 影响排序的特殊副作用 10 | 11 | ## 背景 12 | 13 | 最近在答疑的时候,发现同一条命令在不同系统上行为不同,一开始以为是 bash 版本问题,排查后最后发现是 locale 的问题。一个例子如下: 14 | 15 | ```shell 16 | $ cat poc.txt | tr '\\n' ' ' 17 | 1 + - * / \ a b A B 一 二 测 试 α 18 | $ LANG="" sort poc.txt | tr '\\n' ' ' 19 | * + - / 1 A B \ a b α 一 二 测 试 20 | $ LANG="zh_CN.UTF-8" sort poc.txt | tr '\\n' ' ' 21 | * + - / \ 1 测 二 试 一 a A b B α 22 | $ LANG="en_US.UTF-8" sort poc.txt | tr '\\n' ' ' 23 | * + - / \ 1 a A b B α 一 二 测 试 24 | ``` 25 | 26 | 注意 \ 1 a A 的顺序,在不同的 locale 下结果不同。 27 | 28 | 网上也有关于这个问题的讨论: 29 | 30 | 1. https://unix.stackexchange.com/questions/75341/specify-the-sort-order-with-lc-collate-so-lowercase-is-before-uppercase 31 | 2. https://stackoverflow.com/questions/43448655/weird-behavior-of-bash-glob-regex-ranges -------------------------------------------------------------------------------- /docs/blog/posts/software/logo-is-a-lisp-dialect.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2016-03-13 4 | tags: [lisp,logo] 5 | categories: 6 | - software 7 | --- 8 | 9 | # Logo is a lisp dialect 10 | 11 | Most of us have learnt how to use PCLogo to draw some graphics. Logo is a dialect of Lisp in fact, so most of us used a Lisp dialect at a early time! For some people, it is earlier than C++. Cool. -------------------------------------------------------------------------------- /docs/blog/posts/software/mi-air-purifier-homekit.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2018-11-04 4 | tags: [homebridge,xiaomi,airpurifier,homekit] 5 | categories: 6 | - software 7 | --- 8 | 9 | # 使用 HomeBridge 把小米空气净化器加入到 HomeKit 中 10 | 11 | 受 @NSBlink 安利,自己部署了一下 [HomeBridge](https://github.com/nfarina/homebridge) ,然后在 iOS 的家庭上就可以看到它。然后,通过 [homebrdige-mi-airpurifier](https://www.npmjs.com/package/homebridge-mi-airpurifier) 和 [miio](https://github.com/aholstenson/miio) 按照教程进行配置。然后就可以在家庭里看到小米空气净化器,包括空气质量,湿度,睡眠模式,温度,打开状态。然后我就可以做一些配置,如离开宿舍的时候自动关闭空气净化器,回来的时候自动打开。不过由于自己没有一个一直放在宿舍的 iPad、Apple TV 或者 HomePod,失去了中枢,这个功能可能会打折扣。 12 | 13 | 后续想买一些智能的灯啊,然后就可以用 Siri 进行打开 / 关闭了。 14 | 15 | 此外,我又试了下,可以用 [homebridge-camera-ffmpeg](https://github.com/KhaosT/homebridge-camera-ffmpeg) 把摄像头配置到 HomeKit 中。这样,就可以远程查看视频流了。 -------------------------------------------------------------------------------- /docs/blog/posts/software/rcore-soft-router-topo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/software/rcore-soft-router-topo.png -------------------------------------------------------------------------------- /docs/blog/posts/software/rcore-soft-router.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-04-07 4 | tags: [rcore,router,ixgbe,os] 5 | categories: 6 | - software 7 | --- 8 | 9 | # rCore 软路由实现 10 | 11 | 最近在研究软路由在 rCore 上的实现,但限于硬件限制,目前先在虚拟机里测试。软路由大概要做这些东西: 12 | 13 | 1. 抓包,解析包里的内容 14 | 2. 查路由表,找到下一跳在哪 15 | 3. 查 ARP,知道下一跳的 MAC 地址 16 | 4. 减少 TTL,更新 IP Checksum 17 | 5. 把包发出去 18 | 19 | 第一步直接拿 smoltcp 的 Raw Socket 即可,但是目前只能抓指定 IP Protocol 的包,我用的是 ICMP,但其他的就还抓不了,需要继续改 Smoltcp 源代码。 20 | 21 | 第二步用的是之前刚修好的 treebitmap 库,它提供了路由表的查询功能,目前路由表还是写死的,之后会用已经部分实现好的 Netlink 接口读取出来。 22 | 23 | 第三步则是 ioctl 发请求,然后从 smoltcp 内部的 ARP cache 里读取。 24 | 25 | 第四步很简单,不用多说。 26 | 27 | 第五步则需要指定出端口,用了一个 index,放在一个特定的 sockaddr 中。 28 | 29 | 最后的效果就是,能双向转发 ping 通。 30 | 31 | 网络拓扑: 32 | 33 | ![](rcore-soft-router-topo.png) 34 | 35 | 可以,这很玄学。 36 | 37 | 后续在想在真机上实验,但是还缺一个网卡驱动,不然就可以用神奇的办法来做这个实验了。 -------------------------------------------------------------------------------- /docs/blog/posts/software/read-edid-decode-macos.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-08-14 4 | tags: [macos,edid] 5 | categories: 6 | - software 7 | --- 8 | 9 | # macOS 下读取并解析 EDID 10 | 11 | 之前听说了 EDID 的存在,但是一直没有细究里面的格式和内容。今天了解了一下,发现其实非常简单,下面是方法: 12 | 13 | 首先获取所有显示器输出的 EDID: 14 | 15 | ```bash 16 | ioreg -lw0 | grep IODisplayEDID 17 | ``` 18 | 19 | 输出里会出现 "IODisplayEDID" = <00ffxxxxxxxxxxxxx> 的内容,尖括号内的就是 EDID 的内容。接着,我们采用 [edid-decode](https://git.linuxtv.org/edid-decode.git/) 进行解析: 20 | 21 | ```bash 22 | git clone git://linuxtv.org/edid-decode.git 23 | cd edid-decode 24 | make 25 | ./edid-decode 26 | 27 | ``` 28 | 29 | 就可以看到很详细的 EDID 数据解析了。 30 | 31 | ref: https://gist.github.com/OneSadCookie/641549 https://www.avsforum.com/forum/115-htpc-mac-chat/1466910-ability-dump-display-s-edid-mac.html -------------------------------------------------------------------------------- /docs/blog/posts/software/sbt-fork-parallel-test.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2020-04-13 4 | tags: [sbt,scala,testing] 5 | categories: 6 | - software 7 | --- 8 | 9 | # 在 sbt 中 fork 并且并行运行测试 10 | 11 | ## 问题 12 | 13 | 最近在 sbt 使用遇到一个问题,有两个测试,分别用 testOnly 测试的时候没有问题,如果同时测试就会出问题,应该是全局的状态上出现了冲突。一个自然的解决思路是 fork,但是 sbt 默认 fork 之后 test 是顺序执行的,这会很慢。所以搜索了一下,找到了 fork 并且并行测试的方法。 14 | 15 | ## 解决方法 16 | 17 | 解决方法在 sbt 文档中其实就有([原文](https://www.scala-sbt.org/release/docs/Testing.html#Forking+testsl))。简单来说就是:把每个 test 放到单独的 TestGroup 中,每个 TestGroup 分别用一个 forked JVM 去运行;然后让 sbt 的并行限制设高一些: 18 | 19 | ```scala 20 | // move each test into a group and fork them to avoid race condition 21 | import Tests._ 22 | def singleTests(tests: Seq[TestDefinition]) = 23 | tests map { test => 24 | new Group( 25 | name = test.name, 26 | tests = Seq(test), 27 | SubProcess(ForkOptions())) 28 | } 29 | 30 | Test / testGrouping := singleTests( (Test / definedTests).value ) 31 | // allow multiple concurrent tests 32 | concurrentRestrictions in Global := Seq(Tags.limitAll(4)) 33 | ``` 34 | 35 | 这样就可以了。 36 | 37 | -------------------------------------------------------------------------------- /docs/blog/posts/software/secoder-platform-sucks.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2018-10-12 4 | tags: [secoder,softwarengineering,cd,ci,gitlab] 5 | categories: 6 | - software 7 | --- 8 | 9 | # 软工平台踩坑记 10 | 11 | 老师要求我们搞 CI/CD,CI 自然是很快就搞好了,不过 CD 还得配一下。今天研究了一下它的 Deployer 架构,发现了若干易用性问题: 12 | 13 | 1. 缺乏文档 14 | 2. 只有[样例配置](https://gitlab.secoder.net/SECoder-Examples/python-example/blob/master/.gitlab-ci.yml)没有讲解 15 | 3. [已有的文档](https://docs.secoder.net/service/deployer/) 语焉不详 16 | 4. 官方对此回复:功能太多,还没忙过来写文档 17 | 18 | 于是只好经常戳助教然后尝试理解这个东西。。然后遇到了很多的 BUG: 19 | 20 | 1. 容器没有重启功能。。。 21 | 2. 容器死了还是活着看一个图的颜色。。。毫无说明 22 | 3. 容器虽然有 Console,但是输入过长后直接回到行首没有换行。。。 23 | 4. 容器对外的域名里有下划线。。。Django 上来就一句 `Invalid HTTP_HOST header: 'xxxx_xxx.app.secoder.net'. The domain name provided is not valid according to RFC 1034/1035.` Express 直接就 `Invalid Host header` 放弃治疗。。。 24 | 5. 助教对上一条的回复是,等我忙完 DDL 有空再做吧。。。也就是说现在要做只能自己再开一个 Nginx 容器然后自己在 `proxy_set_header` 上做手脚。。。 25 | 26 | -------------------------------------------------------------------------------- /docs/blog/posts/software/static-building-sqlite.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-03-24 4 | tags: [rcore,x86,x86_64,static,musl,sqlite] 5 | categories: 6 | - software 7 | --- 8 | 9 | # 静态编译 sqlite3 10 | 11 | 最近 rCore 支持了动态链接库,于是想着在测试 sqlite 的时候直接用动态的,不过出现了玄学的问题,它会访问一个不存在的地址,看代码也没看出个所以然来。所以研究了一下 sqlite 的静态编译。首先在 `configure` 的时候尝试了一下: 12 | 13 | ```bash 14 | $ ./configure CC=x86_64-linux-musl-gcc --disable-shared --enabled-static 15 | ``` 16 | 17 | 发现 `libsqlite` 确实是静态了,但是 `sqlite3` 并不是。一番研究以后,发现是 `libtool` 的原因,只要这样编译: 18 | 19 | ```bash 20 | $ make LTLINK_EXTRAS=-all-static 21 | ``` 22 | 23 | 就可以编译出静态的 `sqlite3` : 24 | 25 | ```bash 26 | sqlite3: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, with debug_info, not stripped 27 | ``` 28 | 29 | -------------------------------------------------------------------------------- /docs/blog/posts/software/terminal-emulator-text-rendering-font.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/software/terminal-emulator-text-rendering-font.png -------------------------------------------------------------------------------- /docs/blog/posts/software/tips-in-os-x.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2016-02-17 4 | tags: [tips, osx, macos] 5 | title: Screen Capturing Tips in macOS 6 | categories: 7 | - software 8 | --- 9 | 10 | I'm sure many people have already known this. But i haven't memorize it yet. 11 | 12 | How to screen capture: 13 | 14 | Shift+Command+3: Capture fullscreen. 15 | Shift+Command+4: Capture region. 16 | : Press space to capture window. 17 | : Hold option and drag, then 18 | : you will capture a region with its center in where you started dragging 19 | : and one of its corners under your cursor. 20 | Ctrl+OneOfTheTwoAbove: Capture to clipboard. 21 | defaults write com.apple.screencapture location: Change the default location storing the images. 22 | 23 | Apps enhancing the snapshots: [Snappy](http://go-snappy.com/) and [Mapture](http://anatoo.jp/mapture/). 24 | 25 | See more detailed [here](https://sspai.com/post/25978). 26 | -------------------------------------------------------------------------------- /docs/blog/posts/software/tls-internals-ds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/software/tls-internals-ds.png -------------------------------------------------------------------------------- /docs/blog/posts/software/vote18-speed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/software/vote18-speed.png -------------------------------------------------------------------------------- /docs/blog/posts/software/vote18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/software/vote18.png -------------------------------------------------------------------------------- /docs/blog/posts/software/vscode-vim-chinese-word-motion.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2019-01-16 4 | tags: [vscode,vim,vscodevim,chinese] 5 | categories: 6 | - software 7 | --- 8 | 9 | # 实现 VSCodeVim 中支持中文分词的单词移动 10 | 11 | 最近用 VS Code 写中文 LaTeX 比较多,但是编辑起来总是比较麻烦,不能用各种带 w 的 motion,不然整行都没了。于是 @xalanq 提出能不能拿一个 JS 的分词库,魔改一下 VSCode Vim 来得到同样效果?答案是可以的。 12 | 13 | 最后代码在 [jiegec/VSCodeVimChinese](https://github.com/jiegec/VSCodeVimChinese) 里,还没有合并到上游的打算。不定期根据上游发版本同步更新,在 Github Release 里发布 vsix 文件,目前版本为 v1.0.1。在 VS Code 里 `Extensions: Install from VSIX...` 即可安装。 14 | 15 | 经过对代码的研究,发现对 motion w 的处理都是通过 `getWordLeft` `getWordRight` 和 `getCurrentWordEnd` 完成的。于是我修改了这三个函数,根据原来的返回值把字符串喂给分词器,再返回的新的位置。一开始用的是 `nodejieba` ,但是因为需要用到 `node-gyp` 遇到了 Node 版本不兼容的问题,于是换了一个纯 Node 的实现 `node-segment` ,就完成了这个功能。 16 | 17 | -------------------------------------------------------------------------------- /docs/blog/posts/software/xrdp-nvidia.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2021-12-29 4 | tags: [linux,nvidia,xrdp,rdp] 5 | categories: 6 | - software 7 | --- 8 | 9 | # XRDP 和 NVIDIA 显卡兼容性问题 10 | 11 | ## 背景 12 | 13 | 最近在尝试配置 XRDP,发现它在有 NVIDIA 的机器上启动远程桌面后会黑屏,查看错误信息可以看到: 14 | 15 | ``` 16 | xf86OpenConsole: Cannot open virtual console 1 (Permission denied) 17 | ``` 18 | 19 | 2024 年注:一些比较新的发行版上携带的 xrdp 已经没有这个问题,此外不要忘记安装 xorgxrdp。 20 | 21 | ## 解决方法 22 | 23 | XRDP 作者在 [issue #2010](https://github.com/neutrinolabs/xrdp/issues/2010#issuecomment-942561105) 中提到了解决方法: 24 | 25 | 修改 /etc/xrdp/sesman.ini,在 `[Xorg]` 部分里加上下面的配置: 26 | 27 | ``` 28 | param=-configdir 29 | param=/ 30 | ``` 31 | 32 | 实际上就是不让 Xorg 加载 nvidia xorg 驱动,这样就绕过了问题。 -------------------------------------------------------------------------------- /docs/blog/posts/system/archer-t4u-v3-driver.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2020-01-05 4 | tags: [linux,wifi,tplink,rtl8822bu,dkms] 5 | categories: 6 | - system 7 | --- 8 | 9 | # TP-Link Archer T4U V3 Linux 驱动安装 10 | 11 | 之前因为 MacBookPro 内置的 Wi-Fi 总是有问题,就找了个 USB 的无线网卡:TP-Link Archer T4U V3(VID:2357,PID:0115),这个网卡也没有主线的驱动,在网上找到了现成的驱动:[cilynx/rtl88x2bu](https://github.com/cilynx/rtl88x2bu),按照 README 用 DKMS 安装即可,实测可用。 12 | 13 | Update: Linux 6.2+ 已经支持,见 -------------------------------------------------------------------------------- /docs/blog/posts/system/igpu-passthrough.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/system/igpu-passthrough.png -------------------------------------------------------------------------------- /docs/blog/posts/system/macbookpro-linux-wifi.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2020-01-05 4 | tags: [linux,wifi,broadcom,bcm43602,brcmfmac,macbookpro] 5 | categories: 6 | - system 7 | --- 8 | 9 | # MacBookPro 14,3 Wi-Fi 驱动问题解决方案 10 | 11 | 之前在 MacBookPro 14,3 安装 Linux 后,很多东西的驱动都有了解决方法,[参考 1](https://gist.github.com/TRPB/437f663b545d23cc8a2073253c774be3),[参考 2](https://github.com/roadrunner2/macbook12-spi-driver),触摸板和键盘等等都可以正常使用,触摸板的使用效果比我意料要好一些,虽然还是没有 macOS 原生那么好。但 Wi-Fi 一直有能扫到信号但连不上的问题,最近终于有了比较完善的解决方案,[地址](https://bugzilla.kernel.org/show_bug.cgi?id=193121#c52),也是两个月前才出来的方案,我测试了一下,确实可以很好的解决网络问题,网卡型号是 BCM43602,驱动用的是 brcmfmac。 12 | 13 | 另一方面,带 T2 的 MacBook 似乎也有了支持,见 [aunali1/linux-mbp-arch](https://github.com/aunali1/linux-mbp-arch),有一些尚未 upstream 的 patch,但我没有设备,就没有测试了。需要吐槽的是 ArchWiki 不怎么更新新 Model 的 MacBook 的教程,都是到处找散落的 github repo 和 gist 找别人的方案。 14 | 15 | P.S. 可以正常工作的有:Wi-Fi,键盘,触摸板,Touchbar,内置摄像头,键盘背光,蓝牙 16 | P.P.S MacBookPro11,2 的网卡是 BCM4360,直接用 broadcom-wl 驱动就可以。 17 | -------------------------------------------------------------------------------- /docs/blog/posts/system/replication.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiegec/blog-source/4220dbcff7215b1d461760a5e537aea453433e33/docs/blog/posts/system/replication.png -------------------------------------------------------------------------------- /docs/blog/posts/system/sco6.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2023-04-10 4 | tags: [sco,unixware,unix] 5 | categories: 6 | - system 7 | --- 8 | 9 | # SCO OpenServer 6.0.0 虚拟机安装 10 | 11 | ## 安装过程 12 | 13 | 首先从 下载 SCO OpenServer 的安装 ISO。尝试过用 QEMU 启动,但是会卡在无法读取硬盘的错误上。 14 | 15 | 最后使用 VirtualBox 7.0.6 成功启动,注意创建虚拟机的时候不要给太多内存,例如 4GB 就起不来,2GB 可以。硬盘我也只给了 4GB 的空间。 16 | 17 | 18 | 19 | 安装过程中会询问 License number 和 License code,可以选择使用 Evaluation License,或者使用下面参考文档中提供的 License。按照流程一直走就可以了。如果重启出现无法 mount root 的问题,就 poweroff 再开机。 20 | 21 | ## 参考文档 22 | 23 | 本博客参考了以下文档中的命令: 24 | 25 | - 26 | -------------------------------------------------------------------------------- /docs/blog/posts/system/static-ipmitool.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2021-03-29 4 | tags: [ipmitool,static] 5 | categories: 6 | - system 7 | --- 8 | 9 | # 静态编译 ipmitool 10 | 11 | 为了在 ESXi 上运行 ipmitool,需要静态编译 ipmitool。网上已经有一些解决方案: 12 | 13 | https://github.com/ryanbarrie/ESXI-ipmitool 14 | https://github.com/hobbsh/static-ipmitool 15 | https://github.com/ewenmcneill/docker-build-static-ipmitool 16 | 17 | 我稍微修改了一下,用来编译最新 ipmitool: 18 | 19 | ```bash 20 | #!/bin/bash 21 | set -x 22 | export VERSION=1.8.19 23 | rm -rf ipmitool_$VERSION 24 | curl -L -o ipmitool_$VERSION.tar.gz http://deb.debian.org/debian/pool/main/i/ipmitool/ipmitool_$VERSION.orig.tar.gz 25 | tar xvf ipmitool_$VERSION.tar.gz 26 | cd ipmitool-IPMITOOL_${VERSION//./_} 27 | ./bootstrap 28 | CC=gcc CFLAGS=-m64 LDFLAGS=-static ./configure --disable-ipmishell 29 | make -j24 30 | cd src 31 | ../libtool --silent --tag=CC --mode=link gcc -m64 -fno-strict-aliasing -Wreturn-type -all-static -o ipmitool.static ipmitool.o ipmishell.o ../lib/libipmitool.la plugins/libintf.la 32 | file $PWD/ipmitool.static 33 | ``` 34 | 35 | 复制下来,编译完成后 scp 到 esxi 中即可使用。 36 | -------------------------------------------------------------------------------- /docs/blog/posts/system/unixware7.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | date: 2023-04-10 4 | tags: [unixware,unix] 5 | categories: 6 | - system 7 | --- 8 | 9 | # UnixWare 7.1.4 虚拟机安装 10 | 11 | ## 安装过程 12 | 13 | 在 可以看到 UnixWare 7.1.4 的相关下载,其中首先要下载 UnixWare 的安装 ISO:,尝试过用 QEMU 启动,会遇到找不到 CD-ROM 的问题,虽然通过设置 `ATAPI_DMA_DISABLE=YES` 解决了,但是又遇到了找不到硬盘的问题。 14 | 15 | 最后换成了 VirtualBox 7.0.6。用 VirtualBox 创建虚拟机的时候,不要给太多内存,4GB 就会无法启动,2GB 可以,硬盘也不要给太多,4GB 就足够。 16 | 17 | 18 | 19 | 剩下就是按照安装界面一路默认即可,License 可以选择 Defer,使用 Evaluation License。 20 | 21 | 关机以后,修改启动顺序,把硬盘放到 CD 前,然后启动,就可以进入系统了。如果重启出现无法 mount root 的问题,就 poweroff 再开机。 22 | 23 | ## 参考文档 24 | 25 | 本博客参考了以下文档中的命令: 26 | 27 | - 28 | -------------------------------------------------------------------------------- /docs/index.md: -------------------------------------------------------------------------------- 1 | # 博客 -------------------------------------------------------------------------------- /docs/javascripts/mathjax.js: -------------------------------------------------------------------------------- 1 | window.MathJax = { 2 | tex: { 3 | inlineMath: [["\\(", "\\)"]], 4 | displayMath: [["\\[", "\\]"]], 5 | processEscapes: true, 6 | processEnvironments: true 7 | }, 8 | options: { 9 | ignoreHtmlClass: ".*|", 10 | processHtmlClass: "arithmatex" 11 | } 12 | }; 13 | 14 | document$.subscribe(() => { 15 | MathJax.typesetPromise() 16 | }) 17 | -------------------------------------------------------------------------------- /docs/series.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: page 3 | date: 1970-01-01 4 | permalink: /series/ 5 | --- 6 | 7 | # 系列 8 | 9 | 下面列举了我的博客里的一些系列文章。 10 | 11 | ## BTB 结构分析 12 | 13 | [#btb](/tags/#tag:btb) 14 | 15 | ## 微架构评测 16 | 17 | [#uarch-review](/tags/#tag:uarch-review) 18 | 19 | ## 开发一个链接器 20 | 21 | [#write-a-linker](/tags/#tag:write-a-linker) 22 | 23 | ## 教学系列 24 | 25 | [#teaching](/tags/#tag:teaching) 26 | 27 | ## 近来做 Stanford CS140e 的一些进展和思考 28 | 29 | [#cs140e](/tags/#tag:cs140e) 30 | 31 | ## 每周分享 32 | 33 | [#weeklysharing](/tags/#tag:weeklysharing) 34 | 35 | ## 在 FPGA 上实现路由器 36 | 37 | [#router-on-fpga](/tags/#tag:router-on-fpga) 38 | 39 | ## 浅谈乱序执行 CPU 40 | 41 | [#brief-into-ooo](/tags/#tag:brief-into-ooo) 42 | 43 | ## 缓存一致性协议分析 44 | 45 | [#coherence](/tags/#tag:coherence) 46 | -------------------------------------------------------------------------------- /docs/tags.md: -------------------------------------------------------------------------------- 1 | # 标签 2 | 3 | -------------------------------------------------------------------------------- /overrides/partials/comments.html: -------------------------------------------------------------------------------- 1 |

{{ lang.t("meta.comments") }}

2 | 3 | 19 | -------------------------------------------------------------------------------- /overrides/partials/integrations/analytics/custom.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | 11 | 16 | -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "blog-source" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Jiajie Chen "] 6 | package-mode = false 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.10" 10 | mkdocs = "^1.5.2" 11 | mkdocs-material = {extras = ["imaging"], version = "^9.6.15"} 12 | mkdocs-rss-plugin = "^1.8.0" 13 | mkdocs-git-revision-date-localized-plugin = "^1.2.0" 14 | mkdocs-wavedrom-plugin = {git = "https://github.com/jiegec/mkdocs-wavedrom-plugin.git"} 15 | matplotlib = "^3.10.0" 16 | lxml = "^5.4.0" 17 | 18 | [build-system] 19 | requires = ["poetry-core"] 20 | build-backend = "poetry.core.masonry.api" 21 | -------------------------------------------------------------------------------- /rotate-svg.py: -------------------------------------------------------------------------------- 1 | # Rotate svg by 90 degree, for yEd generated diagrams 2 | from bs4 import BeautifulSoup 3 | import sys 4 | 5 | bs = BeautifulSoup(sys.stdin, "xml") 6 | height = bs.svg.attrs["height"] 7 | width = bs.svg.attrs["width"] 8 | 9 | bs = BeautifulSoup(f""" 10 | 11 | 12 | {bs.svg} 13 | 14 | 15 | """, "xml") 16 | print(bs) --------------------------------------------------------------------------------