admin-tempate

https://adminlte.io/

https://gitee.com/durcframework/fs-admin
https://github.com/fast-crud/fs-admin-naive-ui

https://gitee.com/go-admin-team/go-admin

https://gitee.com/Tanking-Hao/tk-admin-framework-vue

https://gitee.com/yhm_my/iris_admin
该仓库已停止维护,最新仓库请查看:
低代码动态表单:https://gitee.com/yhm_my/godata

cordys-crm

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/1panel/cordys-crm:v1.7.2
docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/1panel/cordys-crm:v1.7.2 docker.io/1panel/cordys-crm:v1.7.2

docker run -d --name cordys-crm --restart unless-stopped -p 9081:8081 -p 9082:8082 -v /home/.code/cordys:/opt/cordys 1panel/cordys-crm:v1.7.2

https://cordys.cn/docs/installation/win/#22
安装成功后即可通过浏览器访问地址 http://IP 地址:8081 (本机可用 127.0.0.1),并使用默认的管理员用户和密码登录 Cordys CRM。
用户名:admin
默认密码:CordysCRM

admin
CordysCRM

docker 镜像 搜索
https://docker.aityp.com/s/docker.io

https://xuanyuan.cloud/

android-linux-编译项目

https://download.visualstudio.microsoft.com/download/pr/8fdc33a5-2cf8-4e3a-82a8-abe718da0aea/3b5bfd6f361adec250a8f6693820736b/microsoft-jdk-17.0.19-windows-x64.exe

set HTTP_PROXY=socks5://127.0.0.1:2080
set HTTPS_PROXY=socks5://127.0.0.1:2080
Windows:
gradlew.bat assembleDebug
gradlew.bat assembleRelease

# Linux
#
wget https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip -O cmdline-tools.zip
mkdir -p ~/Android/Sdk/cmdline-tools
unzip cmdline-tools.zip -d ~/Android/Sdk/cmdline-tools
mv ~/Android/Sdk/cmdline-tools/cmdline-tools ~/Android/Sdk/cmdline-tools/latest
# nano ~/.bashrc
export ANDROID_HOME=~/Android/Sdk
export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin
export PATH=$PATH:$ANDROID_HOME/platform-tools
# source ~/.bashrc
sdkmanager “platform-tools” “build-tools;34.0.0” “platforms;android-34”
sdkmanager –list
adb –version

# keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-key-alias
# app/build.gradle
#
# android {
# signingConfigs {
# create(“release”) {
# storeFile = file(“./my-release-key.jks”) // 确保文件路径正确
# storePassword = “your_store_password”
# keyPassword = “your_key_password”
# keyAlias = “my-key-alias”
# }
# }
# }

./gradlew assembleDebug
./gradlew assembleRelease

export ANDROID_KEY_ALIAS=my-key-alias
export ANDROID_KEY_PASSWORD=123456
export ANDROID_STORE_PASSWORD=123456
export ANDROID_KEYFILE=./my-key-alias.jks

~/Android/Sdk/build-tools/34.0.0/apksigner
apksigner sign \
–ks 你的密钥文件.jks \
–ks-key-alias 别名 \
–ks-pass pass:密钥库密码 \
–key-pass pass:密钥密码 \
–out 输出签名包.apk \
app-release-unsigned.apk

~/Android/Sdk/build-tools/34.0.0/apksigner sign –ks ./my-key-alias.jks –ks-key-alias my-key-alias –ks-pass pass:123456 –key-pass pass:123456 –out app-release-signed.apk app-release-unsigned.apk

erp-next


## 快速创建erp-next 服务
## quick-start-erp-next

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mariadb:11.8
docker tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mariadb:11.8  docker.io/mariadb:11.8

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/library/redis:6.2-alpine
docker tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/library/redis:6.2-alpine  docker.io/library/redis:6.2-alpine

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/frappe/erpnext:v16.25.0
docker tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/frappe/erpnext:v16.25.0  docker.io/frappe/erpnext:v16.25.0

## git clone https://github.com/frappe/frappe_docker.git
git clone https://gitee.com/apnode/frappe_docker.git

cd frappe_docker

docker compose -f pwd.yml up -d

ip addr | grep 'inet '

# open 8080 , with user :  administrator  , admin  

# docker compose -f pwd.yml down
# docker volume ls
# docker volume ls -f dangling=true
# docker volume prune
# docker volume rm frappe_docker_sites
# docker volume rm   frappe_docker_db-data frappe_docker_logs   frappe_docker_redis-queue-data  frappe_docker_sites

docker  exec -it frappe_docker-backend-1 bash
bench get-app https://gitee.com/yuzelin/erpnext_chinese.git
bench install-app erpnext_chinese

拆分大日志文件

碰到日志文件太大,咋整


#!/bin/bash
#
# 按段拆分大文件,不暴增磁盘占用
#
set -e

src="file.log"
prefix="file"
ext=".log"
chunk=$((  1024 * 1024 * 1024 * 1))   # 1G

size=$(stat -c%s "$src")
if [ "$size" -le 0 ]; then
    echo "empty file"
    exit 1
fi

# 向上取整,算总片数
total=$(( (size + chunk - 1) / chunk ))

for ((idx=total; idx>=1; idx--)); do
    size=$(stat -c%s "$src")
    part=$(printf "%s-%03d%s" "$prefix" "$idx" "$ext")

    if [ "$size" -le "$chunk" ]; then
        mv "$src" "$part"
        echo "created $part (last part)"
        break
    fi

    tail -c "$chunk" "$src" > "$part"
    truncate -s $((size - chunk)) "$src"
    echo "created $part"
done