2022年12月1日
将 struct 中的string 字段进行 trim
func trimSpace(any interface{}) { ov := reflect.ValueOf(any) if ov.Kind() == reflect.Ptr && !ov.IsNil() { ov = ov.Elem() } ot := reflect.TypeOf(any) if ot.Kind() == reflect.Ptr { ot = ot.Elem() } for i := 0; i < ot.NumField(); i++ { field := ov.Field(i) if field.Kind() == reflect.Ptr { if field.Elem().Kind() == reflect.Struct { trimSpace(field.Interface()) continue } field = field.Elem() } if field.CanInterface() && field.IsValid() { if field.……
阅读全文
2022年11月25日
chrome 清理当前页面的缓存……
阅读全文
2022年11月18日
原因 字符集配置不匹配 mac 上是 UTF-8 解决方法 更新配置 vim ~/.zshrc 在最后加上 export LC_ALL=en_US.UTF-8 export LANG=en_US.UTF-8 配置生效 source ~/.zshrc ……
阅读全文
2022年11月6日
装好了docker,以及 ufw 然后禁用了 3000 端口, ufw deny 3000
并且启动了一个容器 启动命令是这样的 docker run -it -p 3000:3000 python 但之后发现一个问题, IP:3000 居然可以访问到
查询资料得知, 淦, 发现这是个陈年老问题了 查到一个好用的 repo, https://github.com/chaifeng/ufw-docker 并且按照他的教程进行了设置
但是紧接着发现了问题 这样设置完之后, 开放端口3000(ufw allow 3000), 居然不生效了 看了下 readme 显示 现在外部就已经无法访问 Docker 发布出来的任何端口了,但是容器内部以及私有网络地址上可以正常互相访问,而且容器也可以正常访问外部的网络。 显然这不是我想要的结果
最终在stackoverflow找到了符合我需求的解决方案
cat << EOF >> /etc/docker/daemon.json { "iptables": false } EOF echo "DOCKER_OPTS=\"--iptables=false\"" >> /etc/default/docker service docker restart -参考资料: https://stackoverflow.com/a/67641547……
阅读全文
2022年2月28日
支持不同格式之间的转换 支持图片像素的压缩以及拉长 package main import ( "bytes" "errors" "fmt" "image" "image/jpeg" "image/png" "io/ioutil" "os" "golang.org/x/image/draw" _ "golang.org/x/image/webp" // for RegisterFormat ) type imageHelper struct { img image.Image fileName string format string scale draw.Scaler } func NewImageHelper(fileName string, scale ...draw.Scaler) *imageHelper { var s draw.Scaler if scale == nil { s = draw.ApproxBiLinear } else { s = scale[0] } return &imageHelper{ fileName: fileName, scale: s, } } func (r *imageHelper) GuessFileFormat() (string, error) { if r.……
阅读全文
2021年12月15日
package main import ( "fmt" "github.com/coreos/pkg/progressutil" "io" "os" "path/filepath" "time" ) func combineMultipleFiles(outPutFile string, files ...string) { abs, err := filepath.Abs(outPutFile) if err != nil { panic("can not get outPutFile absolute path") } dir := filepath.Dir(abs) if _, err := os.Stat(dir); err != nil { if os.IsNotExist(err) { err := os.MkdirAll(dir, os.ModePerm) if err != nil { panic(fmt.Sprintf("can not mkdirs, path: %s, err: %s", dir, err)) } } } file, err := os.……
阅读全文
2021年12月9日
使用快排的思想 空间复杂度很垃圾, 只是为了更好的理解快排算法 TODO 修改成不需要额外空间的算法 def quicksort(data: list): if len(data) <= 1: return data less = [] more = [] pivot = data[0] for item in data: if item < pivot: less.append(item) elif item > pivot: more.append(item) return quicksort(less) + [pivot] + quicksort(more) data = [1, 4, 2, 6, 3, 10, 12, 11] print(quicksort(data)) ……
阅读全文
2021年12月8日
class Node: def __init__(self, val, left=None, right=None) -> None: self.val = val self.left = left self.right = right def create_tree(data: list): if not data: return None first_node = Node(data[0]) tmp_list = [first_node] tmp_count = 0 for item in data[1:]: node = tmp_list[0] new_node = Node(item) if item is not None else None if tmp_count == 0: node.left = new_node # add to tmp_list if item is not None: tmp_list.append(new_node) tmp_count += 1 continue if tmp_count == 1: node.……
阅读全文
2021年11月24日
from enum import Enum class Gender(Enum): male = 0 female = 1 print(Gender(0)) # Gender.male print(Gender(0).name) # female print(Gender(0).value) # 0 class EnumWithLabel(Enum): """ 允许带 label 的枚举类型, 参考: https://docs.python.org/zh-cn/3/library/enum.html#when-to-use-new-vs-init """ def __new__(cls, value, label): obj = object.__new__(cls) obj._value_ = value obj.label = label return obj class GenderWithLabel(EnumWithLabel): male = (0, "MAN") female = (1, "WOMAN") print(GenderWithLabel(0)) # GenderWithLabel.male print(GenderWithLabel(0).value) # 0 print(GenderWithLabel(0).label) # MAN class EnumWithDefault(Enum): """ 允许返回默认值的枚举类型, 不存在枚举值时不会报错 如果需要修改默认值则需要覆盖 new_default_obj 函数 """ @classmethod def _missing_(cls, value): new_member = cls.……
阅读全文
2021年11月19日
package main import ( "encoding/json" "fmt" "github.com/go-playground/locales/en" "github.com/go-playground/locales/zh" "github.com/go-playground/locales/zh_Hant_TW" ut "github.com/go-playground/universal-translator" "github.com/go-playground/validator/v10" entranslations "github.com/go-playground/validator/v10/translations/en" zhtranslations "github.com/go-playground/validator/v10/translations/zh" zhtwtranslations "github.com/go-playground/validator/v10/translations/zh_tw" "reflect" "strings" ) type InternalAccountTransferRequest struct { Name string `json:"name" binding:"required"` Age string `json:"age_test" binding:"required"` Class string `binding:"required"` } func main() { s := `{"name": "123"}` var requset InternalAccountTransferRequest json.Unmarshal([]byte(s), &requset) //requset.Class = "123" v := validator.New() var err error uni := ut.New(en.New(), en.New(), zh_Hant_TW.New(), zh.New()) zh_, _ := uni.GetTranslator("zh") zhtranslations.RegisterDefaultTranslations(v, zh_) tw_, _ := uni.……
阅读全文
-
上一页
-
1
-
2
-
3
-
4
-
下一页