Press "Enter" to skip to content

作者: bear

一个句号

怎么说呢,今天是我在国内某知名互联网公司的last day。总算是要解脱了。

一大早起来还担心自己交接的工作不够详细,怕接手的同事处理不了,于是在公司内网的文档平台更新了一篇关于调用ES的api文档,结果不到2小时,自己的内网帐号被完全注销了,苦笑了一下。还想着再发个远程会议交待几句工作呢,看来没有必要了。

像我之前呆过的互联网公司一样,这里虽有大牛,却一样的内卷。虽然平时累的像dog一样,却一样有着关系很好和舍不得离开的好友同事。过去这2年多的经历像电影一样闪过,很想写点什么来记录一下,却不知道从哪里开始写。

在我入职这家公司的第2个月,就通过某蓝色社交app加上了某位同事的微信,他叫墨墨。一个又高又壮浓眉大眼的山东男孩。他性格很好,人见人爱,还自诩有个硕大的屁股。后面总能在微信上看到,谁谁谁拍了拍墨墨的大屁股。以至于后来,大家都拿大屁股开玩笑了。

那年9月,我在单位健身房workout的时候,突然一个小哥走过来,低声问了句:小哥哥,你是彩虹吗?

我当然听懂了,是的,这位小哥后来成了我的健身搭子,我们都叫他silence。我和silence无数次在健身房挥汗如雨,一起成长。还经常评头论足健身房里哪位同事好看,哪位同事身材好,那真是一段开心的岁月。

再后来,认识了新来的实习生诺一。他应该是有社交牛逼症,在短短一年多的时间里,把公司里外的好看的男神们都加了一个遍(当然,也包括我),甚至加了好多外地的男神。我一度在想,这货要是登上了曼谷沷水节的红地毯,那还得了,可能就是当代邓文迪了。

离开北京的那天晚上,他们3个都来送我。像往常一样,我们各点了一杯蜜雪冰城,一边闲聊一边溜街,再次体验了一次这轻松惬意的感觉。

分开的时候,我告诉他们,我只能陪你们走一段路,后面的路,要大家自己走了。江湖很小,我们有缘还会再见的。

跟他们3个人相处的时候,是我在这家互联网公司最开心的时光。有了他们3个的陪伴,让我的这段灰暗的路程上增添了一些色彩。我总说,他们3个,是我在这家公司里最宝贵的资产。

到了今天,我在这家公司的经历,算是完整了划上了一个句号。

在京工作了整整十年,大大小小的公司也算是经历过了。稍候应该会写一下,我呆过的那些大大小小的帝都公司的感受吧。

2 Comments

调用Elasticsearch API查询数据, 并将数据导出为csv格式

1, 调用Elasticsearch API查询数据

下面的命令是一条标准的查询语句

curl -XGET http://127.0.0.1:9200/my_index-*/_search -H 'Content-Type: application/json' -d'
{
  "size": 10000,
  "query": {
    "bool": {
      "filter": [
        { "match_all": {} },
        { "match_phrase": { "id": 20202162488675 } },
        { "match_phrase": { "my_site": "www.zhukun.net" } },
        { "match_phrase": { "log_level": "error" } },
        { "range": { "@timestamp": { "gte": "2022-06-09T00:00:00.000+08:00", "lte": "2022-06-09T23:59:59.999+08:00" } } }
      ]
    }
  }
}'

2, 将查询到的数据导出为csv格式

首先, 我们将上面的命令查询的结果重定向到a.json文件中, 然后使用jq命令将json中的数据导出为csv

jq '[ .hits.hits[]._source ] | map(del(.message)) | (map(keys) | add | unique) as $cols | map(. as $row | $cols | map($row[.])) as $rows | $cols, $rows[] | @csv' a.json > a.csv

3, 一些注意事项

3.1 查询命令里的”size”: 10000表示查询结果的最大显示数量, 受到ES的index.max_result_window的限制(默认限制是10000条), 如果要修改此限制可使用如下命令:

curl -XPUT http://127.0.0.1:9200/my_index-*/_settings -H 'Content-Type: application/json' -d'
{
  "index": { "max_result_window": 50000 }
}'

3.2 关于jq命令的用法

  • [ .hits.hits[]._source ]表示将所有结果放在一个list里
  • map(del(.message))表示删除结果里的message这个k-v
  • map(keys) | add | unique表示提取所有的key
Leave a Comment

Ubuntu 20.04上查看HEIC格式的图片/显示缩略图

Ubuntu 20.04上查看HEIC格式的图片, 仅需要安装一个 heif-gdk-pixbuf 的package, 然后就可以使用 Image Viewer 查看了. 如果还需要在文件管理器中显示缩略图, 那么还需要安装其它2个包

sudo apt update
sudo apt install heif-gdk-pixbuf
sudo apt install heif-thumbnailer
sudo apt install libheif1:amd64

参考这篇文章. 如果需要把heic格式的图片转换成jpg, 可以参考这篇文章(未验证).

Leave a Comment

Python农历转换

在Python中进行公历转换农历, 是一件很简单的事儿.

>>> import datetime
>>> from zhdate import ZhDate

# 农历转公历
>>> date = ZhDate(2022,4,5)
>>> print(date)
农历2022年4月5日

>>> date.to_datetime().date().year
2022
>>> date.to_datetime().date().month
5
>>> date.to_datetime().date().day
5
Leave a Comment

内网穿透: 使用ssh tunnel将内网主机映射到公网

如果希望将一台内网中的主机发布到公网(使用阿里云/腾讯云中转的方式), 使得该内网主机可以在全球任意地点被访问, 仅需要用到ssh即可. 用到的原理就是ssh的remote port forwarding特性, 具体可参考本博客之前写的简单解释 ssh 中的 local port forwarding 和 remote port forwarding.

假设我们已经有了一台阿里云/腾讯云的主机, 其公网IP是1.1.1.1, 需要在ssh配置里启用GatewayPorts(否则ssh tunnel建立以后只会监听127.0.0.1)

在我们的内网主机上写入一个systemd服务

sudo vim /etc/systemd/system/[email protected]    # 写入如下内容
[Unit]
Description=Persistent SSH Tunnel to from port 127.0.0.1:%i on this server to port 3389 on external server(1.1.1.1:3389)
After=network.target
 
[Service]
Environment="LOCAL_PORT=%i"
ExecStart=/usr/bin/ssh -NTC -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes -R 3389:0.0.0.0:${LOCAL_PORT} [email protected]
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

参数解释:
T: 禁止分配伪终端
N: 不执行远程指令
C: 请求压缩所有数据

然后启用服务

sudo systemctl daemon-reload
sudo systemctl enable [email protected] --now

然后就可以通过1.1.1.1:3389来访问这台内网主机的22端口了.

参考文档: README-setup-tunnel-as-systemd-service.md

Leave a Comment

简单评价surface laptop go

是的, 买了个surface laptop go, 来自微软官方商城的翻新产品, 十代i5, 8+128的配置, 2799的价格拿下.

外观图片我就不放了, 网上一大堆, 性能啥的也不再多说, 处理器的性能网上都是可查的. 这里简单写一下我认为的这个本子的优缺点吧.

advantages

  • 田牌LOGO, 拿出去装X的时候逼格满满
  • 做工不错, 哪怕是塑料机身, 也能看出来这不是一般的塑料, 不是外面的野鸡本
  • 全帖合镜面屏幕, 不用担心落灰了, 这点对于有强迫症的我来说简直不要太好
  • 微软键盘比较好用.
  • 12.4寸的触屏, 加上1.1kg的体积, 真是又轻又薄, 满足对轻薄本的所有要求.
  • 可能是所有surface笔记本/平板里面最薄的边框了

disadvantages

  • 电池. 这一点真是最大败笔. 我进行了多次测试, 在将电池模式设置为倒数第二档(推荐模式)+80%的亮度时, 在youtube上观看了大约20分钟的视频, 下降了约8%的电量. 也就是说, 这台surface laptop go在满电的情况下, 最大只能坚持4小时. 在我后来的测试中, 如果大量浏览网页的话, 掉电会更快一些. 所以结论是, surface laptop go的实际续航在2-4小时之间. 这是将系统/固件更新到2022年1月25日的情况下得出的结论.
  • 屏幕亮度低. 据称最高只有320尼特. 我的直观感受告诉我80%的亮度是能接受的最低亮度了. 事实上在一些比较明亮的场合, 可能需要将亮度调整到100%
  • 分辩率低. 是的, 用惯了高分屏的人, 再用回颗粒感的屏幕, 会觉得有些不太舒服.

Conclusion

一直都觉得手上应该有个高逼格的本, 可以偶尔拿出去装X. 一直在surface系列和macbook air系列之间犹豫不决. 当然最重要的还是考虑到价格因素, 一直没有入手.

之前在顺电卖场摸过一些常见本. 对surface laptop go的外观一见倾心. 只论外观的话, 它是所有的surface产品里最符合我审美的一款产品. 只不过, 在顺电的时候, 没法详细的体验这款产品, 直到看到2799的官翻价, 才终于入手了.

一周的体验下来, 基本上也是对这个本有了一些了解. 如同网上说的那样, 这个本的优点和缺点都是非常明显的. 最令我震惊的还是电池的续航问题, 之前我经历过DELL/联想的多款笔记本, 都没有这么弱鸡的续航. 考虑到这一点, 我曾经在犹豫是不是要退掉这个surface laptop go, 后来朋友提醒了我, 看在它是一个2799的田牌产品, 不要想太多了.

一句话总结: 如果你只在意逼格+轻薄, 那它确实是一台相当不错的本. 但凡你对续航有一点要求的话, 那么它就不适合你.

这篇文章是在这台surface laptop go上面完成的.

Leave a Comment

OpenVZ vps 使用 snapd 部署 certbot

在 OpenVZ 的 vps 上使用 snapd 时, 会出现如下提示

error: system does not fully support snapd: cannot mount squashfs image using "squashfs": mount:
       /tmp/sanity-mountpoint-404380626: mount failed: Operation not permitted.
error: system does not fully support snapd: cannot mount squashfs image using "squashfs": mount:
       /tmp/sanity-mountpoint-404380626: mount failed: Operation not permitted.

下面介绍解决办法:

sudo apt install fuse squashfuse snapd
sudo mknod -m 666 /dev/fuse c 10 229
sudo snap install core; sudo snap refresh core
sudo apt-get remove certbot
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

参考文档.

Leave a Comment