Giter Site home page Giter Site logo

blog's Introduction

Hi, I'm Ambor, A Full Stack Developer 🚀 from China.

Twitter Linkedin wakatime

 

GitHub Streak

Talking about Personal Stuffs:

Github

  • 🤘 GPG KeyID: A6D9859C3FE0DCBE
  • 🌱 I’m currently learning Rust/Kubernetes/Serverless
  • 💬 Ask me about anything related to Go/Rust/CloudNative
  • 📫 How to reach me: @saltbo
  • ⚡ Fun fact: I ❤️ 🐱s

📊 This week I spent my time on

YAML                   9 hrs 56 mins   ███████████░░░░░░░░░░░░░░   44.19 %
Go                     9 hrs 18 mins   ██████████▒░░░░░░░░░░░░░░   41.34 %
TypeScript             1 hr 9 mins     █▒░░░░░░░░░░░░░░░░░░░░░░░   05.12 %
Bash                   29 mins         ▓░░░░░░░░░░░░░░░░░░░░░░░░   02.16 %
Other                  28 mins         ▓░░░░░░░░░░░░░░░░░░░░░░░░   02.13 %

blog's People

Contributors

dependabot[bot] avatar github-actions[bot] avatar saltbo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

blog's Issues

一个markdown编辑器(桌面版)

专为markdown类博客服务的编辑器

  • 支持将文章推送到github
  • 支持截图粘贴图片到文章
  • 支持将内容推送到简书,知乎,v2ex等平台

如何通过命令修改IP地址

问题描述

经常需要切换两个本地ip,每次都是打开网络设置改太麻烦了,想要写个脚本一键切换。

核心命令

 networksetup -setmanual "Ethernet" 192.168.128.54 255.255.255.0 192.168.128.1

切换脚本

#!/bin/bash

ips=("192.168.130.167" "192.168.143.242")
gate="192.168.143.254"

next_ip=${ips[0]}
current_ip=(`ipconfig getifaddr en0`)

if [ "${current_ip}" == ${next_ip} ]; then next_ip=${ips[1]}; fi

networksetup -setmanual "Wi-Fi" ${next_ip} 255.255.255.0 ${gate}
echo "${current_ip} => ${next_ip}"

仓库地址:https://github.com/saltbo/devenv/blob/master/shell/ipsw.sh

参考内容

在Docker里应用监听不到Signal怎么办?

问题描述

最近程序在docker里运行时,signal.Notify(sigChannel, syscall.SIGINT, syscall.SIGTERM)收不到信号了,导致发版时程序不能优雅关闭。

调查发现最忌的改动是把Dockerfile里的CMD由原先的bin文件改为了shell脚本。如下图:
image

问题原因

经过搜索了解到,Docker stop的signal只会发给1号进程,CMD启动的就是1号进程。在本次案例中,本来CMD直接启动Bin文件,所以是可以直接收到Signal的。而改为Shell脚本后,Shell脚本是1号进程,由Shell脚本启动的Bin变成了x号进程。所以我们需要让Shell脚本收到的Signal转发给x号进程。

解决方案

#!/bin/bash

prep_term()
{
    unset term_child_pid
    unset term_kill_needed
    trap 'handle_term' TERM INT
}

handle_term()
{
    if [ "${term_child_pid}" ]; then
        kill -TERM "${term_child_pid}" 2>/dev/null
    else
        term_kill_needed="yes"
    fi
}

wait_term()
{
    term_child_pid=$!
    if [ "${term_kill_needed}" ]; then
        kill -TERM "${term_child_pid}" 2>/dev/null
    fi
    wait ${term_child_pid}
    trap - TERM INT
    wait ${term_child_pid}
}

run() {
  ./bin/server -mode cluster &
}

run_with_ddns() {
  ./launcher -name zt-ddgw-internal -port 8088 ./bin/server -mode cluster &
}

prep_term
if [ $RUN_WITH_DDNS ]; then
  run_with_ddns
else
  run
fi
wait_term

参考内容

text/javascript vs application/javascript

问题描述

阿里云OSS针对js文件的gzip只对mime-type是application/javascript才有效。

在uptoc中使用了Golang的mime包,在本地测试时发现js对应的是application/javascript没有问题,但是在GitHubAction中却是text/javascript

问题排查

经过排查发现,在Golang 1.14版本中已经将application/javascript替换成了text/javascript,具体详见golang/go@99df76f#diff-bbab6cb33189f1aa348f52c5ad910da8

排查过程中受到一个回答的误导,见https://cloud.tencent.com/developer/ask/52563

里面有人说text/javascript 已过时,但实际情况是按照最新的HTML标准,即将废弃的是application/javascript,以后都应该使用text/javascript

结论

  • application/javascript是被废弃的
  • text/javascript是最新标准承认的

rustgo - 使用rust实现golang的标准库

仅实现rust标准库没有的。
rust标准库已有,但是和golang用法不一致的情况,原则上不再重复实现,仅做备注提示。

  • bufio
  • bytes
  • crypto
  • encoding
  • hash
  • math
  • path
  • sort
  • strconv
  • strings
  • time

一个完整的统一登录服务

Feature

  • 支持登录注册
  • 支持密码修改、找回
  • 支持自定义前端页面
  • 支持Oauth(Wechat、GitHub、Google...)

鉴权支持

  • 算法验证中间件
  • 请求验证中间件
  • Caddy插件
  • K8s Agent

一个帮助我提升单词量Chrome插件

把日常查询翻译过的单词收集起来。

基于这个单词收集库,开发一个浏览器插件,每日随机时间弹出要求回答单词的含义(类似多邻国的答题)

Golang如何阻止signal传递给os/exec执行的命令

自身需求

一个启动器(通过os.exec来启动另一个进程)收到signal后需要进行一个处理逻辑再结束掉子进程,但是默认情况下父子进程同时收到了信号。

解决方案

cmd.SysProcAttr = &syscall.SysProcAttr{
    Setpgid: true,
}

*nix环境中, 由exec.command开启的子进程的进程组ID默认为为父进程ID,需设置子进程的进程组ID为子进程自身ID

参考资料

EOS智能合约自动部署

监听GitHub,有更新则自动打包,打包结束自动部署到目标网络

授权

  • 创建setcode权限
  • 授权setcode权限给系统账号
cleos set account permission contract.eos setcode '{"threshold":1,"keys":[],"accounts":[{"permission":{"actor":"autoset.eos","permission":"eosio.code"},"weight":1}]}'
cleos set action permission contract.eos eosio setcode setcode

合约账号:contract.eos
部署账号:autoset.eos

cmd+c输出çççç怎么办?

问题描述

莫名其妙突然不能使用快捷键复制粘贴了,cmd+c输出çççç,cmd+v输出√√√√

问题原因

cmd和alt键的功能发生了互换导致。互换的原因可能有很多,我遇到的是因为我按了fn+f12,这个组合键在我的机械键盘上的就是将cmd和alt的功能互换。

test

静态资源统筹中心

起因

初创企业野蛮生长,未来死了也无所谓,一旦成长起来,初期的混乱将为以后带来极大的麻烦。

功能

  • 域名统一管理
  • 云存储统一管理
  • CDN统一管理
  • 支持多家云平台

小程序云开发CMS

微信云开发的控制台是数据库类的,实际使用中还是需要自行开发一个cms后台。

采用headless-cms的思路开发一款为小程序云开发使用的headless-cms。

一个基于rust开发的FQ软件

目标

  • 支持多协议且兼容Vmess的代理工具
  • 部署方便,配置简单,支持自动申请HTTPS证书

计划

1.0版本使用Vmess协议实现,保留接口后续有必要的话可以自行设计一套新的协议。

数据层协议支持

  • tcp
  • websocket+tls
  • http2+tls

一个可定制的私人云系统

能否设计一个完全插件化的私人云系统,类似梅林的软件中心。

目的

解决程序员们总想开发个什么东西,但每次都得从头开始的问题

功能

  • 开发者可以自行依据自己的功能需求开发自己的插件

后端能力

  • Router
  • DB CURD
  • Crontab

前端能力

  • HTTPClient

一个开源的数字识别系统

起因

需要一个识别纯印刷数字的功能,找了一圈没找到开源的,只有阿里云市场上有卖,价格不低。

目标

  • 只做纯数字识别
  • 学习图像识别方面知识

[Security] Workflow main.yml is using vulnerable action actions/checkout

The workflow main.yml is referencing action actions/checkout using references v1. However this reference is missing the commit a6747255bd19d7a757dbdda8c654a9f84db19839 which may contain fix to the some vulnerability.
The vulnerability fix that is missing by actions version could be related to:
(1) CVE fix
(2) upgrade of vulnerable dependency
(3) fix to secret leak and others.
Please consider to update the reference to the action.

Git提交使用GPG后总需要输入密码的怎么解

使用GPG签名后每天提交总有几次需要输入密码,神烦。

解决方案1

为什么并不是每次提交都需要密码呢,实际上他有个默认的缓存时间,但是很短,所以我们可以把它改长。

# gpg-agent.conf
max-cache-ttl 60480000
default-cache-ttl 60480000

解决方案2

修改pinentry-program,mac下的pinentry-mac支持保存密码

# gpg-agent.conf
pinentry-program /usr/local/bin/pinentry-mac

pinentry-mac可能需要单独安装

解决方案3?

可能也可以通过预设密码来解决,但是我试的时候总是报不支持,放弃
https://wiki.archlinux.org/index.php/GnuPG#Configuration

参考链接

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.