Datascience

在HN上看到了一本书: Data science at the commandline,讲命令行下处理数据的方法,这个页面列出了书中用到的命令行工具。 这里面提到了一些工具,可以作为参考: Linux下的基础工具 awk sed grep sort uniq cut paste join wc head tail tr 需要安装的一些工具 jupyter, 这个就是传统的python数据分析工具了,可以做数据可视化。 csvkit,这个csv处理的工具包里包含了很多命令行工具,可以用来处理csv文件,比如csvstat、csvlook、csvcut等等。 ripgrep, 可以替代grep,速度很快。 jq,这个工具可以用来处理json文件,比如可以用jq '.[] | select(.age > 30)' file.json来过滤出年龄大于30的数据。 clickhouse-local,这个工具可以用来处理clickhouse的数据,比如可以用clickhouse-local --query="SELECT toHour(time) h, count(*) t, bar(t, 0, 100, 25) as c FROM file(hackernews.csv, CSVWithNames) GROUP BY h ORDER BY h"来查询数据。这篇blog:https://clickhouse.com/blog/extracting-converting-querying-local-files-with-sql-clickhouse-local 介绍了如何用clickhouse-local来处理数据。 duckdb,这个工具可以用来处理parquet文件,比如可以用duckdb file.parquet来查询数据。 结论 如果你需要快速分析一些数据,可以考虑命令行工具的组合,但是假如你要做的分析需要写复杂的脚本,那么不要犹豫,直接用python吧,快速的写一个python脚本比你折腾awk要省事的多。 ...

May 6, 2024 · notsobad

Clickhouse MV

《Everything you should know about materialized views.》 阅读笔记 原理 materialized views(以下简称MV)在insert的时候触发,并不会读源表,往一个表insert后,MV会从insert的数据中进行创建。 因此,源表甚至可以是个NULL Engine,即实际不写入数据,仅用来在inser时触发MV的动作。 ...

January 4, 2024 · notsobad

vscode Tips

不同步某些配置项 参考:https://code.visualstudio.com/docs/editor/settings-sync#_configuring-synced-data 可以设置settingsSync.ignoredSettings, 或者直接在gui上,将“同步此配置”的勾选去掉。比如我可能希望在不同的设备上有不同的主题,就可以配置为 ...

November 20, 2023 · notsobad

Gitlab Ci Tips

调试ci 参考这篇文章: https://www.lullabot.com/articles/debugging-jobs-gitlab-ci 本地配置gitlab runner环境 在本地代码中操作,修改ci脚本使其在适当的位置sleep 本地提交改动过的代码,注意ci只会执行在git仓库中的代码 运行runner docker exec进入运行中的容器 本地运行runner,注意增加超时时间,避免被杀掉 ...

October 8, 2023 · notsobad

Clickhouse Tips

投影projection 官方文档https://clickhouse.com/docs/en/sql-reference/statements/alter/projection 创建这个特性时的讨论:https://github.com/ClickHouse/ClickHouse/issues/14730 ...

September 14, 2023 · notsobad

ffmpeg Tips

安装 brew install ffmpeg --with-libvpx --with-libvorbis --with-ffplay ffmpeg -codecs ffmpeg -f avfoundation -list_devices true -i "" 查看文件信息 ffmpeg -i screen.mp4 录屏 ffmpeg -r 30 -f avfoundation -i 1 -vcodec vp8 -quality realtime screen2.webm ffmpeg -r 30 -f avfoundation -i 1 -vcodec h264 screen.mp4 视频转换为gif ffmpeg -ss 2 -t 4 -i screen.mp4 -s 240x180 screen.gif 视频转为图片 ffmpeg -i video.mp4 image%d.jpg 视频文件的前十秒,每一秒生成一张图片 ffmpeg -i Downloads/硅谷第5季第一集.mp4 -r 1 -frames 10 -f image2 xx-%3d.jpeg 直播 docker run -it --rm -p 9080:80 -p 1935:1935 -v ~/tmp:/usr/local/nginx/html chakkritte/docker-nginx-rtmp ffmpeg -y -loglevel warning -f avfoundation -i 1 -r 30 -s 480x320 -threads 2 -vcodec libx264 -f flv rtmp://test-serv:1935/live/test ffmpeg -y -loglevel warning -f avfoundation -i 0 -s 480x320 -threads 2 -vcodec libx264 -f flv rtmp://test-serv:1935/live/test ffmpeg -f avfoundation -framerate 30 -i "2:0" -f avfoundation -framerate 30 -video_size 640x480 -i "0" -c:v libx264 -preset ultrafast -filter_complex 'overlay=main_w-overlay_w-10:main_h-overlay_h-10' -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://test-serv:1935/live/test 摄像头录制 ffmpeg -f avfoundation -framerate 30 -i "0" -target pal-vcd ./test.mpg 提取文件长度 ffprobe -i $i -show_entries format=duration -v quiet -of csv="p=0" ffmpeg -i ~/新录音\ 9.m4a random.wav 拆分文件 ffmpeg -i random.wav -f segment -segment_time 9 -c copy random-%03d.wav 局域网内多播 https://news.ycombinator.com/item?id=34912300 ...

August 31, 2023 · notsobad

Golang Tips

快速的单个文件测试 # run without build go run main.go # 如果 main.go依赖test.go, 那就需要指定好依赖文件,或者用go build go run main.go test.go # or build it go build -o xxx main.go ./xxx godoc 文档: go install golang.org/x/tools/cmd/godoc@latest godoc -http :6060 # visit http://localhost:6060/ 使用protobuf,需要安装protoc-gen-go, 同时~/go/bin要在 PATH 里 ...

August 21, 2023 · notsobad

Docker Tips

docker 基础使用 docker build时会把Dockerfile目录下的所有东西发往docker daemon, 可以增加一个’.dockerignore’文件来排除某些目录或文件。 docker run -d -p 80:80 --name webserver nginx docker stop webserver docker start webserver docker rm -f webserver docker run ubuntu /bin/echo 'Hello world' docker run -it ubuntu /bin/bash docker run -it --rm --entrypoint bash --rm openresty/openresty:xenial images docker images docker rmi nginx # rm image logs docker logs -f b572ef09601c inspect docker inspect b572ef09601c commit docker commit -m 'add ruby' a2086b366560 notsobad/sinatra:v2 docker build -t notsobad/sinatra2 . create tag docker tag 0ec894288b89 notsobad/sinatra2:test data volumn 使用data valumn ...

July 20, 2023 · notsobad

Timeout Issue

之前分析一个服务问题的记录 现象:一个python进程卡死 分析:strace看,是在recvfrom(3这里,fd为3,lsof看这个fd对应的是到work.notsobad.work:8086的一个已经建立的连接。但是work服务器上并没有这个连接 ...

July 20, 2023 · notsobad

Tcpdump Tips

基础使用 tcpdump -i eth0 -A host 10.0.0.1 and tcp port 80 tcpdump -i eth1 -A port 80 -w x.cap -c 1000 tcpdump -qns 0 -A -r x.cap 过滤ARP查询 tcpdump -i eth1 'arp and host 210.1.1.1' 过滤dns查询 tcpdump -n -K -i eth1 'dst port 53' ssh到某一台主机上,执行tcpdump,然后管道传给本机的wireshark ssh some-host tcpdump -w - 'tcp dst port 80' | wireshark -k -i - # 复杂一点 ssh some-host "tcpdump -U -n -i any -w - 'port 9527 or port 444 or port 80 or port 443'" | wireshark -k -i - 过滤到443端口的syn包 ...

July 20, 2023 · notsobad