统一入口Makefile

Makefile ---src |___Makefile |___main.c 如何编写顶层的Makefiel, 使其进入到src中,执行src中的Makefile? run: $(MAKE) -C src target a=1 b=2

2020-08-22 11:41:32 · 1 min · Eddie Wang

tmux深度教学

tmux使用场景 远程ssh连接到服务器,最难受的是随时有可能ssh掉线,然后一切都需要花额外的时间重新恢复,也有可能一些工作只能重新开始。 在接续介绍tmux之前,先说说mosh。 【mosh架构图】 我曾使用过mosh, 据说mosh永远不会掉线。实际上有可能的确如此,但是mosh实际上安装比较麻烦。mosh需要在服务端安装server, 然后要在你本地的电脑上安装client, 然后通过这个client去连接mosh服务端的守护进程。mosh需要安装在客户端服务端都安装软件,然后可能还要设置一下网络策略,才能真正使用。 mosh需要改变很多,这在生产环境是不可能的。另外即使是自己的开发环境,这样搞起来也是比较麻烦的。 下图是tmux的架构图。实际上我们只需要在服务端安装tmux, 剩下的ssh的连接都可以用标准的功能。 【tmux架构图】 tmux概念:sesssion, window, panes 概念不清楚,往往是觉得tmux难用的关键点。 session之间是相互隔离的,tmux可以启动多个session 一个session可以有多个window 一个window可以有多个panes 在tmux中按ctrl-b w, 可以在sesion,window和panel之间跳转。 注意:默认情况下,一个sesion默认会打开一个window, 一个window会默认打开一个pane。 session操作 创建新的sesssion: tmux new -s some_name 脱离session: ctrl-b +d 注意即使脱离session, session中的内容还是在继续工作的 进入某个session: tmux attach -t some_name 查看sesion列表: tmux ls kill某个session: tmux kill-session -t some_name kill所有session: tmux kill-server 重命名session: ctrl-b $ 选择session: ctrl-b s window操作 新建: ctrl-b c 查看列表: ctrl-b w 关闭当前window: ctrl-b & 重命名当前window: ctrl-b , 切换到上一个window: ctrl-b p 切换到下一个window: ctrl-b n 按序号切换到制定的window: ctrl-b 数字 数字可以用0-9 panes操作 pane相当于分屏,所有pane都是在一个窗口里都显示出来的。这点和window不同,一个window显示出来,则意味着其他window是隐藏的。...

2020-08-22 08:00:03 · 1 min · Eddie Wang

打造高可扩展性的微服务

关键技术 Docker: 容器 kuberneter:架构与部署 HELM: 打包和部署 Prometheus: 监控 Open TRACING + ZIPKIN : 分布式追踪 关键性能指标 I/O 性能: 启动耗时: 当服务出现故障,需要重启时,启动的速度越快,对客户的影响越小。 内存使用:

2020-08-15 21:14:13 · 1 min · Eddie Wang

vim ctags安装及使用

安装 # ubuntu or debian apt-get install ctags # centos yum install ctags # centos # macOSX brew install ctags 注意,如果在macOS 上输入ctags -R, 可能会有报错 /Library/Developer/CommandLineTools/usr/bin/ctags: illegal option -- R usage: ctags [-BFadtuwvx] [-f tagsfile] file ... 那么你可以输入which ctags: /usr/bin/ctags # 如果输出是这个,那么路径就是错的。正确的目录应该是/usr/local/bin/ctags 那么你可以在你的.zshrc或者其他配置文件中,增加一个alias alias ctags="/usr/local/bin/ctags" 使用 进入到项目跟目录 ctags -R # 当前目录及其子目录生成ctags文件 进入vim vim main.c # :set tags=$PWD/tags #让vim读区当前文件下的ctags文件 # 在多个文件的场景下,最好用绝对路径设置tags文件的位置 # 否则有可能会报错neovim E433: No tags file 快捷键 Ctrl+] 跳转到标签定义的地方 Ctrl+o 跳到之前的地方 ctrl+t 回到跳转之前的标签处 :ptag some_key 打开新的面板预览some_key的定义 下一个定义处 上一个定义处 gd 当前函数内查找当前标识符的定义处 gD 当前文件查找标识符的第一次定义处

2020-08-10 09:29:24 · 1 min · Eddie Wang

iTerm2 使用触摸版向下滚动命令输出

以前有个iTerm2有个很贴心的功能,鼠标向下滚动时,相关命令的输出也会自动向下。 但是不知道最近是升级系统还是升级iTerm2的原因,这个功能实现不了。😭😭😭😭😭😭😭 例如用vim打开一个大文件,或者使用man去查看一个命令的介绍文档时。如果要想向下滚动命令的输出内容。只能按j或者按空格或者回车。然而按键虽然精确,却没有用触摸板滚动来的爽。 为了让vim能够接受鼠标向下滚动功能,我也曾设置了 set mouse=a 这个设置虽然可以用触摸板来向下滚屏了,但是也出现了意想不到的问题。 然后我就去研究iTerm2的配置,发现关于鼠标的配置中,有一个 Scroll wheel send arrow keys when in alternat screen mode , 把这个指设置为Yes。那么无论Vim, 还是man命令,都可以用触摸板去滚动屏幕了。

2020-07-23 14:26:54 · 1 min · Eddie Wang

mac上netstat命令

Mac上的netstat和Linux上的有不少的不同之处。 在Liunx上常使用 Linux Mac netstat -nulp netstat -nva -p udp netsat -ntlp netsat -nva -p tcp 注意,在Mac上netstat的-n和linux上的含义相同

2020-07-23 14:16:35 · 1 min · Eddie Wang

获取本机外部公网IP

curl ip.sb curl cip.cc

2020-07-14 11:14:14 · 1 min · Eddie Wang

exec user process caused no such file or diectory

exec user process caused "no such file or diectory" 解决方案: 将镜像构建的 Dockerfile ENTRYPOINT ["/run.sh"] 改为下面的 ENTRYPOINT ["sh","/run.sh"] 其实就是加了个sh

2020-07-08 00:00:00 · 1 min · Eddie Wang

使用image标签上传日志

function report(msg:string){ var msg = new Image() msg.src = `/report?log=${msg}` } report

2020-07-06 14:55:12 · 1 min · Eddie Wang

ModuleNotFoundError: No module named 'SocketServer'

python Flask框架报错。刚开始我只关注了这个报错,没有看到这个报错上上面还有一个报错 ModuleNotFoundError: No module named 'http.client'; 'http' is not a package 实际上问题的关键其实是 'http' is not a package , 为什么会有这个报错呢? 其实因为我自己在项目目录里新建一个叫做http.py的文件,这个文件名和python的标准库重名了,就导致了后续的一系列的问题。 问题总结 文件名一定不要和某些标准库的文件名相同 排查问题的时候,一定要首先排查最先出现问题的点

2020-07-02 15:54:42 · 1 min · Eddie Wang