0%

  • 什么是跨域?
    • 就是当前域访问了非本域的资源。对于http来说,url代表资源,也就是访问了非本域的url。
      阅读全文 »

一些公用的 Linux 服务器,处于维护以及安全考虑,一般只会提供普通权限用户给使用者。
普通用户的权限满足日常使用是够了,但是难以配置自己的开发环境,安装一些自己需要的包。

如果都从源码编译安装软件,依赖的维护过于复杂,初始编译工具链的版本可能也不满足需求,如 gcc 版本过低。
如果申请 sudo 权限或者请求更新系统或安装 docker,后期责任难以界定,运维和管理员一般也不会同意。

所以,最优方案还是有需求的用户在个人目录维护自己的工具链和环境。下文方案为围绕 HomeBrew 构建。

阅读全文 »

macOS 系统的自带词典应用非常强大,与其他应用整合很好,快捷取词很方便(command+control+d)。
但是美中不足的是缺少生词本功能,查了单词又很容易忘记,对语言学习者来说就有些不便了。

经过本强迫症的探索,终于找到基于 Karabiner-Elements + Automator + Logseq 的完美生词本方案。
最后的效果是,快捷键取词的同时记录单词卡片到Logseq对应的笔记。

阅读全文 »

我们在测试代码时,由于需要经常重启服务,经常会发现服务端口被占用。
一般kill掉后台进程就ok了,但是如果服务有启动一些常驻的后台程序,可能也会导致端口不能释放。

在类UNIX系统中,一切被打开的文件、端口被抽象为文件描述符(file descriptor)
从python3.4开始,文件描述符默认是non-inheritable,也就是子进程不会共享文件描述符。

阅读全文 »

在使用 docker 时,常常会碰到进程退出时资源清理的问题,比如保证当前请求处理完成,再退出程序。

当执行 docker stop xxx 时,docker会向主进程(pid=1)发送 SIGTERM 信号
如果在一定时间(默认为10s)内进程没有退出,会进一步发送 SIGKILL 直接杀死程序,该信号既不能被捕捉也不能被忽略。

一般的web框架或者rpc框架都集成了 SIGTERM 信号处理程序, 一般不用担心优雅退出的问题。
但是如果你的容器内有多个程序(称为胖容器,一般不推荐),那么就需要做一些操作保证所有程序优雅退出。

阅读全文 »

bash 语法作为程序员好像都了解一些,但又缺少体系化学习,需要使用到某些功能时又经常手忙脚乱地查。
本文主要参考阮一峰的bash教程,对bash的知识点进行了梳理。
本文目的是作为bash的语法备忘录、语法速查表。

阅读全文 »

最近的一些文章是整理以前的笔记
MySQL 是最常用的数据,有时希望将数据库文件存放在自定义路径,或者在系统中启动多个 MySQL服务。

阅读全文 »

在使用 Hexo 的站内搜索时,发现搜索的内容不全。单步调试发现xml解析不完整,有部分内容被截断了。

在浏览器中打开/search.xml发现以下错误。显然xml中有非法字符,xml解析产生了错误。

阅读全文 »

对程序员来说,macOS 就是一个桌面支持比较好的 Linux/Unix,给日常开发带来了许多便利

本文记录一些日常使用中的小技巧。

阅读全文 »

使用MySQL数据库时,当表的数据条数比较大时(1000w以上),数据查询会很慢,索引的效果也不好。

这时我们可以把表的数据分区存储,安装数据值的前缀或者时间字段来分区。

阅读全文 »

要在不暴露 client 的情况下共享网络,一般就只能使用 nat(Network Address Translation), linux 下可以使用 iptables 很轻松地搞定。
nat 包含 DNAT 和 SNAT, 要想双向互通,必须两者都实现。

windows下的网络共享只有SNAT那一部分,比如各自免费wifi软件。少了DNAT,外部网络就无法访问内部。

还好windows下可以配置端口转发,实现等效的DNAT

阅读全文 »

最近在搞 torch 的工程化,基于 brpc 和 libtorch,将两者编译在一起的过程也是坑深,容下次再表。

为了简化部署,brpc 服务在 Docker 容器中运行。本地测试时功能一切正常,上到预发布环境时请求全部超时。

由于业务代码,brpc,docker环境,机房都是新的,在排查问题的过程中简直一头雾水。(当然根本原因还是水平不足)

阅读全文 »

Tmux 是一个终端复用器(terminal multiplexer),非常有用,属于常用的开发工具。

一个典型的例子就是,SSH 登录远程计算机,打开一个远程窗口执行命令。这时,网络突然断线,再次登录的时候,是找不回上一次执行的命令的。因为上一次 SSH 会话已经终止了,里面的进程也随之消失了。

Tmux 可以维持和管理我们的远程终端会话,和服务断线重连后也不会丢失工作状态, 同时可以在一个终端连接中开启多个窗口(window)和窗格(pane)。

阅读全文 »