Fork me on GitHub

Ubuntu 22 Remote Desktop Sharing Without Real Monitor 2024-02-20

xrdp solution

sudo apt-get install xserver-xorg-video-dummy
sudo apt-get install xserver-xorg-core

Download Microsoft Remote Desktop client

/usr/share/X11/xorg.conf.d/xorg.conf

Section "Device"
    Identifier "DummyDevice"
    Driver "dummy"
    VideoRam 256000
EndSection

Section "Screen"
    Identifier "DummyScreen"
    Device "DummyDevice"
    Monitor "DummyMonitor"
    DefaultDepth 24
    SubSection "Display"
        Depth 24
        Modes "1920x1080_60.0"
    EndSubSection
EndSection

Section "Monitor"
    Identifier "DummyMonitor"
    HorizSync 30-70
    VertRefresh 50-75
    ModeLine "1920x1080" 148.50 1920 2448 2492 2640 1080 1084 1089 1125 +Hsync +Vsync
EndSection

Use Rancher to manage k8s cluster 2022-08-16

必要的集群内部通讯端口要在防火墙上打开

2379, 2380, 80, 443, 22, 6443, 10250

清理干净 https://rancher.com/docs/rancher/v2.5/en/cluster-admin/cleaning-cluster-nodes/

docker rm -f $(docker ps -qa)
# docker rmi -f $(docker images -q)
docker volume rm $(docker volume ls -q)

for mount in $(mount | grep tmpfs | grep '/var/lib/kubelet' | awk '{ print $3 }') /var/lib/kubelet /var/lib/rancher; do sudo umount $mount; done

sudo rm -rf /etc/ceph \
       /etc/cni \
       /etc/kubernetes \
       /opt/cni \
       /opt/rke \
       /run/secrets/kubernetes.io \
       /run/calico \
       /run/flannel \
       /var/lib/calico \
       /var/lib/etcd \
       /var/lib/cni \
       /var/lib/kubelet \
       /var/lib/rancher/rke/log \
       /var/log/containers \
       /var/log/kube-audit \
       /var/log/pods \
       /var/run/calico


sudo ip link delete flannel.1

sudo reboot

sudo iptables -L -t nat
sudo iptables -L -t mangle
sudo iptables -L

Bash-Oneliner 2022-07-18

https://onceupon.github.io/Bash-Oneliner/#time

用Gitlab Runner来打包并上传Harbor 2022-05-16

https://docs.gitlab.com/ee/ci/docker/using_docker_build.html

docker-compose.yaml

version: '3.6'
services:
  gitlab-runner:
    image: 'gitlab/gitlab-runner:latest'
    restart: always
    volumes:
      - ./config:/etc/gitlab-runner
      - /data/gitlab-runner:/home/gitlab-runner

./config/config.toml

/root/.docker/config.json 里放docker hub的授权token

Google Analytics 4 简介 2022-03-10

Google Analytics 4 简介

Google Analytics(分析)可帮助您了解人们使用您的 Web、Apple 或 Android 应用的方式。SDK 会自动收集大量事件和用户属性,您也可以定义自定义事件,以便衡量对您的业务有特殊影响的因素。收集到数据后,可通过 Firebase 控制台到信息中心中查看。通过此信息中心,您可以深入、详细地了解您的数据,包括摘要数据(如活跃用户和受众特征)和更详细的数据(如识别您最畅销的商品)。

Analytics 还集成了 Firebase 的一些其他功能。例如,它自动记录与通过通知编辑器发送的通知消息相对应的事件,并就每个广告系列的影响提供报告。

Analytics 可帮助您了解用户的行为方式,以便您就如何推广您的应用制定明智的决策。您可以查看您的广告系列在自然渠道和付费渠道的效果,以了解哪些方法对于吸引高价值用户最为有效。如果您需要执行自定义分析或者将您的数据与其他源数据联接,您可以将自己的 Analytics 数据关联到 BigQuery,从而进行更复杂的分析,例如查询大型数据集以及联接多个数据源。

网站和App用户行为跟踪技术的演进

UA (Google Universal Analytics, GA3) -> GA4(Google Analytics 4) https://support.google.com/analytics/answer/10270783?hl=zh-Hans

GA4是UA(GA3)的一次全新的升级,测量模型从以传统的基于会话(Session)转变为事件(Event)驱动,GA3专注于在一次会话中收集和处理用户的各种行为数据(如页面展现,事件,交易),在GA4中,一次页面展现(Pageview)也被认为是一个事件,而页面的标题(Page Title)和路径(Page Path)则是事件的参数。

三种实现方案:analytics.js -> gtag.js -> GTM (Google Tag Manager)

analytics.js已不被推荐使用,GTM是目前的最佳实践。

在iPad上写Blog 2020-03-20

iPad的创作能力越来越强,直接修改Github上的文件就可以写Blog了,方法是在Github上建一个自动更新网站的Workflow

name: Blog of hugozhu.myalert.info

on:
  push:
    branches: [ master ]
jobs:
  checks:
    name: run
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
      with:
        token: $
    - name: Set up Go
      uses: actions/setup-go@v2
      with:
        go-version: 1.16
    - name: Install gor
      run: |
        go version
        go install github.com/hugozhu/gor/gor@latest
    - name: Clone blog
      run: |
        mkdir compiled
        git clone https://github.com/hugozhu/hugozhu.github.com compiled
    - name: Compile blog
      run: |
        gor compile
    - name: Publish blog
      run: |
        cd compiled
        git status
        git config --global user.name "Hugo Zhu"
        git config --global user.email "hugozhu@gmail.com"
        git remote set-url origin https://x-access-token:$@github.com/hugozhu/hugozhu.github.com        
        git add *
        git commit -m "Updated $" .
        git push origin

把树莓派4设置成路由器和热点 2020-02-17

树莓派4的性能非常好,内置千兆网卡和AC无线,非常合适做路由器和热点,加上USB 3.0的接口,做NAS也绰绰有余。

iptables

# Generated by xtables-save v1.8.2 on Mon Feb 17 14:33:31 2020
*mangle
:PREROUTING ACCEPT [274685:225391364]
:INPUT ACCEPT [228566:199191351]
:FORWARD ACCEPT [24215:22886563]
:OUTPUT ACCEPT [177353:197982323]
:POSTROUTING ACCEPT [223529:224189656]
:SS-UDP - [0:0]
-A FORWARD -i wlan0 -o eth0 -j ACCEPT
-A SS-UDP -d 0.0.0.0/8 -j RETURN
-A SS-UDP -d 127.0.0.0/8 -j RETURN
-A SS-UDP -d 10.0.0.0/8 -j RETURN
-A SS-UDP -d 169.254.0.0/16 -j RETURN
-A SS-UDP -d 172.16.0.0/12 -j RETURN
-A SS-UDP -d 224.0.0.0/4 -j RETURN
-A SS-UDP -d 240.0.0.0/4 -j RETURN
-A SS-UDP -d 116.251.211.71/32 -j RETURN
-A SS-UDP -d 116.251.211.137/32 -j RETURN
-A SS-UDP -d 118.140.65.222/32 -j RETURN
-A SS-UDP -d 120.25.56.28/32 -j RETURN
-A SS-UDP -m set --match-set chnip dst -j RETURN
-A SS-UDP -i wlan0 -p udp -j TPROXY --on-port 10080 --on-ip 127.0.0.1 --tproxy-mark 0x2333/0x2333
COMMIT
# Completed on Mon Feb 17 14:33:31 2020
# Generated by xtables-save v1.8.2 on Mon Feb 17 14:33:31 2020
*filter
:INPUT ACCEPT [228554:199190659]
:FORWARD ACCEPT [46087:26195207]
:OUTPUT ACCEPT [177353:197982323]
-A INPUT -s 125.22.54.211/32 -j DROP
COMMIT
# Completed on Mon Feb 17 14:33:31 2020
# Generated by xtables-save v1.8.2 on Mon Feb 17 14:33:31 2020
*nat
:PREROUTING ACCEPT [4388:446682]
:INPUT ACCEPT [4491:449514]
:POSTROUTING ACCEPT [5624:405297]
:OUTPUT ACCEPT [5620:405065]
:SS-TCP - [0:0]
-A PREROUTING -s 192.168.0.0/24 -p tcp -j SS-TCP
-A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
-A OUTPUT -p tcp -j SS-TCP
-A SS-TCP -d 0.0.0.0/8 -j RETURN
-A SS-TCP -d 127.0.0.0/8 -j RETURN
-A SS-TCP -d 10.0.0.0/8 -j RETURN
-A SS-TCP -d 192.168.0.0/16 -j RETURN
-A SS-TCP -d 224.0.0.0/4 -j RETURN
-A SS-TCP -d 240.0.0.0/4 -j RETURN
-A SS-TCP -d 120.25.56.28/32 -j RETURN
-A SS-TCP -d 116.251.211.71/32 -j RETURN
-A SS-TCP -d 116.251.211.137/32 -j RETURN
-A SS-TCP -d 118.140.65.222/32 -j RETURN
-A SS-TCP -d 120.25.56.2/32 -j RETURN
-A SS-TCP -m set --match-set chnip dst -j RETURN
-A SS-TCP -i wlan0 -p tcp -m tcp -j REDIRECT --to-ports 10080
COMMIT

用免费的Google云服务将Github项目Webhook事件通知到钉钉 2016-05-15

本教程使用Go语言来实现

image

+

image

准备开发环境

首先你需要下载Google AppEngine的SDK:https://cloud.google.com/appengine/downloads#Google_App_Engine_SDK_for_Go

安装好后执行goapp确认已安装好

4:30:40 Hugo-Mac-mini ~/Projects/hugozhu/godingtalk $ goapp env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/hugozhu/Projects/hugozhu/godingtalk"
GORACE=""
GOROOT="/Users/hugozhu/Projects/share/go_appengine/goroot"
GOTOOLDIR="/Users/hugozhu/Projects/share/go_appengine/goroot/pkg/tool/darwin_amd64"
GO15VENDOREXPERIMENT="1"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fno-common"
CXX="clang++"
CGO_ENABLED="1"

从树莓派上发消息到手机或桌面钉钉 2016-05-02

image

钉钉是阿里巴巴专为中小企业和团队打造的沟通、协同的多端平台,钉钉开放平台旨在为企业提供更为丰富的办公协同解决方案。通过钉钉开放平台,企业或第三方合作伙伴可以帮助企业快速、低成本的实现高质量的移动微应用,实现生产、管理、协作、运营的移动化。

访问钉钉开放平台的文档,请戳此

下面将介绍如何使用钉钉开放平台SDK在树莓派上发送消息到手机和桌面钉钉。

准备工作

首先,你需要在钉钉上创建一个组织,点这里开始

注册好后创建微应用

获取微应用的 agentid

用Grafana制作树莓派上的监控大盘 2016-04-24

Grafana是一个优秀的开源图表系统,支持多种数据源,其中包括 InfluxDBPrometheus

安装

export GOPATH=`pwd`
go get github.com/grafana/grafana
cd $GOPATH/src/github.com/grafana/grafana
go run build.go setup              # (only needed once to install godep)
$GOPATH/bin/godep restore          # (will pull down all golang lib dependencies in your current GOPATH)
go run build.go build              # (or 'go build .')

编译好后会在bin目录下生成grafana-servergrafana-cli