工作16年

今天又再翻之前的blog,修改一些格式,然后看到了这篇《工作5年》,写于2012年7月16号,然后又翻出计算器算了下,今年应该是工作16年了,可以再写一篇后续了。 2023.7月,我已经工作16年了。11年前我写下那篇blog,我完全不知道以后会是什么样子,现在也完全不知道。 我依然在2010年加入的那家公司,目前应该是所在分公司最老的员工了吧,工龄和年龄都差不多。 ...

July 19, 2023 · notsobad

This Year Old

Status update: 小孩2岁了,大部分时间很乖,看着小孩从刚出生到现在的照片,就会很感慨,带大一个小孩真的是不容易。 个人业余时间都耗在孩子那里了,基本没有时间搞别的东西。孩子确实是会对人生有很大的改变,时间、精力、经济各方面。 昨天IC问我最近有搞什么有意思的事情吗?我很恍惚,想起来之前很有热情的做东西还是十几年前了,那时还在北京,年轻和穷,确实做了些有趣的东西。 ...

July 17, 2023 · notsobad

bcc Tips

注意如果想使用bcc追踪python相关程序,python需要在编译的时候,启用dtrace。 参考这篇文章1 进程追踪 查看nginx的打开文件 opensnoop -u `id -u www-data` See what files docker daemon opens systemctl restart docker # in another terminal opensnoop -T -u 0 -n dockerd 查看到nginx的新建连接 tcpaccept -P 80 查看nginx往外发出的tcp连接 ...

July 14, 2023 · notsobad

bpftrace Tips

bpftrace可以用来追踪系统调用,在分析问题的时候会用到。 可以参考jvns的这篇文章1 安装 参考安装说明2, 使用手册3 sudo snap install --devmode bpftrace sudo snap connect bpftrace:system-trace sudo apt install linux-headers-$(uname -r) export BPFTRACE_KERNEL_SOURCE=/usr/src/linux-headers-$(uname -r) 使用 执行的命令 bpftrace -e 'tracepoint:syscalls:sys_enter_execve {printf("%s -> %s\n", comm, str(args->filename))}' 新创建的进程 bpftrace -e 'tracepoint:syscalls:sys_enter_execve {join(args->argv)}' 新打开的文件 bpftrace -e 'tracepoint:syscalls:sys_enter_openat {printf("%s %s\n", comm, str(args->filename))}' 统计系统调用 ...

July 14, 2023 · notsobad

TLS Tips

现在HTTPS已经在大量使用,测试HTTPS用到的主要工具就是curl、openssl、wireshark等,这里总结了一些常见的场景,如怎么样指定IP、指定SNI域名、指定TLS版本号、发送原始HTTP头、验证证书等。 使用curl curl --resolve www.notsobad.work:443:1.1.1.2 https://www.notsobad.work -vv -o /dev/null # 指定TLS版本,UA curl --resolve notsobad.work:443:1.1.1.1 'https://notsobad.work/' -H 'User-Agent: Mozilla/5.0 ' --tlsv1.3 -vv -o /dev/null 使用openssl 参考1 ...

July 14, 2023 · notsobad

Git使用笔记

此处记录了一些git使用的笔记 显示本地未push的commits git log origin.. git log origin/master..HEAD 恢复到某一个commits git reset d6e63190 git reset --soft HEAD@{1} git commit -m 'reset to xxxx' #Update working copy to reflect the new commit git reset --hard update a branch without checkout it git checkout dev; # now in dev branch git fetch origin master:master; remove any old, conflicting branches git remote prune origin diff of local branch and remote branch git fetch origin git diff dev origin/dev git show history git log --oneline --decorate --graph --all git log --name-status git log --stat git log --stat --pretty=short --graph # 显示详细的改动信息 git log -p # 用patch的形式显示最后一次commit git log -p HEAD^..HEAD delete tag git push origin :tagname git push --delete origin tagname git tag --delete tagname bundle git bundle create ../my-db.bundle d7e11e3bd..HEAD git bundle create ../my-db.bundle --since=10.days master move back to where the origin is git reset --hard origin/develop reset to previous version git reset --hard 56e05fced git reset --soft HEAD@{1} git diff --cached git commit show git version git describe git describe --tags git deploy #https://grimoire.ca/git/stop-using-git-pull-to-deploy git fetch --all git checkout --force origin/master git checkout --force 63d0a6c git checkout --force v5.2 set local branch track to upstream git branch --set-upstream ssl-test origin/ssl-test show git commit hash git rev-parse --short HEAD archive git archive master | tar -x -C /somewhere/else git archive --format zip --output /full/path/to/zipfile.zip master git archive master | gzip > latest.tgz diff, current head to some branch git diff HEAD master reset local branch to origin branch # https://gist.github.com/Chaser324/ce0505fbed06b947d962 git fetch origin git reset --hard origin/master git clean -f grep in history git grep TODO $(git rev-list --all) # 显示涉及到这个关键字的提交 git log -G TODO # 显示涉及到这个关键字的提交,并显示diff git log -p -G TODO set master to a branch. # https://stackoverflow.com/questions/2862590/how-to-replace-master-branch-in-git-entirely-from-another-branch git checkout seotweaks git merge -s ours master git checkout master git merge seotweaks abort a merge git merge --abort checkout remote branch git checkout -t origin/ipv6 设置alias git config --global --add alias.lg "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative" git lg rebase git fetch upstream git checkout master git rebase upstream/master git push -f origin master 显示被忽略的文件 git status --ignored 列出文件的最后一次提交时间 git ls-tree -r --name-only HEAD | while read filename; do echo "$(git log -1 --format="%ai" -- $filename) $filename" done submodule git submodule init git submodule update --rebase --remote 个人仓库开发 git clone [email protected]:abc/xyz.git xyz git remote add upstream XXXXX git fetch upstream git checkout -b fix-xxx upstream/master git commit -a -m 'change ...‘ git push origin fix-xxx 恢复master git fetch upstream git checkout master git rebase upstream/master git push -f origin master 克隆大仓库 可以先设置depth=1 ...

June 27, 2023 · notsobad

Using Gdb

参考beej的gdb教程1 gdb core dump 先生成coredump2,ubuntu 22.04的coredump在/var/lib/apport/coredump目录 gdb attach gdb 21896 (gdb) file objs/nginx gdb objs/nginx gdb objs/nginx (gdb) break ngx_log.c:ngx_log_error_core (gdb) set args -p ./ -g 'daemon off;' (gdb) r https://www.recurse.com/blog/5-learning-c-with-gdb https://blogs.oracle.com/linux/post/the-ksplice-pointer-challenge https://interrupt.memfault.com/blog/advanced-gdb https://beej.us/guide/bggdb/ ↩︎ https://www.cse.unsw.edu.au/~learn/debugging/modules/gdb_coredumps/ ↩︎

June 26, 2023 · notsobad

Nginx开发

代码编译 wget http://nginx.org/download/nginx-1.13.8.tar.gz wget https://www.openssl.org/source/openssl-1.1.1h.tar.gz tar xzvf nginx-1.13.8.tar.gz tar xzvf openssl-1.1.1h.tar.gz pushd nginx-1.13.8 # 启用debug,关闭编译器优化 ./configure --with-debug --with-cc-opt='-O0 -g' --with-http_stub_status_module --with-http_ssl_module --with-openssl=../openssl-1.1.1h --add-module=`pwd`/nginx-hello-world-module vi conf/test.conf make -j 24 && ./objs/nginx -p `pwd` -c conf/test.conf 测试用配置文件,关闭master-worker模式,仅一个进程,方便调试1 # conf/test.conf daemon off; master_process off; events { debug_connection 127.0.0.1; } http { server { listen 8085; location /status { stub_status on; } location /hello { hello_world; } } } vs code 调试配置2,需要先安装gdb { "version": "0.2.0", "configurations": [ { "name": "(gdb) 启动", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/objs/nginx", "args": [ "-p", "${workspaceFolder}", "-c", "conf/test.conf" ], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "setupCommands": [ { "description": "为 gdb 启用整齐打印", "text": "-enable-pretty-printing", "ignoreFailures": true }, { "description": "将反汇编风格设置为 Intel", "text": "-gdb-set disassembly-flavor intel", "ignoreFailures": true } ] } ] } https://docs.nginx.com/nginx/admin-guide/monitoring/debugging/ ↩︎ ...

June 25, 2023 · notsobad

摩托车

去年七月份的时候买了摩托车,本田CM300,到现在已经快一年了,目前骑行1千公里,非常少,刚刚做了首次保养,自己更换了机油。 我是先买摩托车,然后考的驾照,考的是三轮车,拿到驾照之后自己在没人的地方练习,才学会的骑摩托车。在骑行到600公里的时候,才有了些感觉,悟出了一些骑行的逻辑,开始没那么紧张了。 ...

June 9, 2023 · notsobad

2022碎语

2022年12月份的的时候手机上的一些胡思乱想的记录,备份一下 2022 12.22 尝试每天写500字,就用苹果的备忘录吧,使用方便,各种设备上都可以用。 写作练习时个长期的事,如果不做经常性的训练,就会发现不知道写什么,有想法了也写不出来。 如果能不工作,你想做什么呢? 工作的目的是让你有一份收入,为公司提供产品,公司大了之后,个人能做的事情越来越少,能够影响的东西很少,一个组织像一艘大船一样,有很大的惯性,即便什么都不做,它也会前进,但方向也可能是错的,如果在一艘不知道航行到哪里的船上,你觉得最终会有什么结果呢? ...

June 9, 2023 · notsobad