统一入口Makefile
Makefile ---src |___Makefile |___main.c 如何编写顶层的Makefiel, 使其进入到src中,执行src中的Makefile? run: $(MAKE) -C src target a=1 b=2
Makefile ---src |___Makefile |___main.c 如何编写顶层的Makefiel, 使其进入到src中,执行src中的Makefile? run: $(MAKE) -C src target a=1 b=2
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是隐藏的。...
关键技术 Docker: 容器 kuberneter:架构与部署 HELM: 打包和部署 Prometheus: 监控 Open TRACING + ZIPKIN : 分布式追踪 关键性能指标 I/O 性能: 启动耗时: 当服务出现故障,需要重启时,启动的速度越快,对客户的影响越小。 内存使用:
安装 # 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 当前文件查找标识符的第一次定义处
以前有个iTerm2有个很贴心的功能,鼠标向下滚动时,相关命令的输出也会自动向下。 但是不知道最近是升级系统还是升级iTerm2的原因,这个功能实现不了。😭😭😭😭😭😭😭 例如用vim打开一个大文件,或者使用man去查看一个命令的介绍文档时。如果要想向下滚动命令的输出内容。只能按j或者按空格或者回车。然而按键虽然精确,却没有用触摸板滚动来的爽。 为了让vim能够接受鼠标向下滚动功能,我也曾设置了 set mouse=a 这个设置虽然可以用触摸板来向下滚屏了,但是也出现了意想不到的问题。 然后我就去研究iTerm2的配置,发现关于鼠标的配置中,有一个 Scroll wheel send arrow keys when in alternat screen mode , 把这个指设置为Yes。那么无论Vim, 还是man命令,都可以用触摸板去滚动屏幕了。
Mac上的netstat和Linux上的有不少的不同之处。 在Liunx上常使用 Linux Mac netstat -nulp netstat -nva -p udp netsat -ntlp netsat -nva -p tcp 注意,在Mac上netstat的-n和linux上的含义相同
curl ip.sb curl cip.cc
exec user process caused "no such file or diectory" 解决方案: 将镜像构建的 Dockerfile ENTRYPOINT ["/run.sh"] 改为下面的 ENTRYPOINT ["sh","/run.sh"] 其实就是加了个sh
function report(msg:string){ var msg = new Image() msg.src = `/report?log=${msg}` } report
python Flask框架报错。刚开始我只关注了这个报错,没有看到这个报错上上面还有一个报错 ModuleNotFoundError: No module named 'http.client'; 'http' is not a package 实际上问题的关键其实是 'http' is not a package , 为什么会有这个报错呢? 其实因为我自己在项目目录里新建一个叫做http.py的文件,这个文件名和python的标准库重名了,就导致了后续的一系列的问题。 问题总结 文件名一定不要和某些标准库的文件名相同 排查问题的时候,一定要首先排查最先出现问题的点