分类 工作&技术 下的文章

xfce xrdp fcitx5,三个搭配起来还不错,再装上chrome,以及termius和vscode,感觉我的日常工作都可以在上面做了。
实测在netcup的rs1000(4c8g,vds)上可以非常流畅的跑,阿里199(2c4g)上有点小卡,而且内存紧张。其实Windows做得并不差,linux看起来流畅和省资源,只是因为没跑桌面。真要跑桌面,用起资源来,不比windows省油多少,甚至更费。
安装命令下面备忘一下,主要是fcitx5麻烦点,按照很多网上的文档装好后,在chrome等应用中是无法输入中文的。

apt install task-xfce-desktop
apt install xorgxrdp xrdp 
adduser xrdp ssl-cert
dpkg-reconfigure locales   选择en-us utf8和zh-ch utf8
adduser xxxx  建立自己的桌面用户,root不能直接运行chrome
apt-get install fonts-arphic-bsmi00lp fonts-arphic-gbsn00lp fonts-arphic-gkai00mp 
apt-get install fcitx5*
apt-get install fcitx5-frontend-qt5 fcitx5-frontend-gtk2 fcitx5-frontend-gtk3 fcitx5-pinyin fcitx5-chinese-addons fcitx5-chewing fcitx5-module-lua fcitx5-module-lua-common fcitx5-modules unicode-cldr-core
echo -e 'XIM=fcitx5\nXIM_PROGRAM=fcitx5\nGTK_IM_MODULE=fcitx5\nQT_IM_MODULE=fcitx5\nXMODIFIERS=@im=fcitx5\nSDL_IM_MODULE=fcitx5\nGLFW_IM_MODULE=fcitx5' > /etc/environment
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
apt install ./google-chrome-stable_current_amd64.deb

  • 解决了crash的问题。前一版的问题是在于用户隐私设置,如果禁止转发消息,则不会在forward信息中带有原始用户的user id,引起异常。 解决办法,就是在收到用户消息后,服务器保存消息id和chatid(user id),然后在回复转发消息时查表即可。(回复时带有reply id,即前面的消息id)。
  • 加入了webhook和pooling两种机制的支持,通过yaml配置即可。
  • yaml示例:

    account:
    mode: "pooling"  或者是 webhook
    token: "aaaaa"   @botfather建立bot时得到的token
    owner: 12345678   需要转发的目地user id
    endpoint: "https://www.foo.bar"   webook的接收消息地址。pooling时随便填。完整的endpoint是 https://www.foo.bar/{token}。 telegram的要求必须是https协议。
    port: 80              服务监听端口,pooling时随便填。代码使用的http,因为前端会用cloudflare等反代,没必要弄https,还要折腾证书,烦一个字。

bot.go
telegram.go

继续接着 上次的事 来弄
完美的做法当然是仔细的通过事务和数据锁等等来解决这个,但,大家都很忙,能有简单但有效的解决办法么?
当然。

  1. 路由处理函数随机延时,比如每次请求 sleep 0-100ms。人类感觉不大出来这个时间,人的神经线传输是0.3秒。但它就可以有效的把并发处理从时间上分散开。当然,我是指不是恶意的,只是因为不小心或者实在太凑巧了并发了。
  2. 路由函数加互斥锁,锁使用用户token或者userid等。其实绝大多数路由函数,特别是写的操作,简单的互斥锁就够了,咱们遇不到真正需要严格并发处理它的这种业务需求。
  3. 忽略掉逻辑上不可能的并发,比如,同一个用户一秒登录10次,那就只处理第一个请求,后面9个通通直接return。这一方面是解决并发,一方面也是防止cc。

有的时候,不想把自己的telegram号给别人,用个机器人来转发就很有必要了
@LivegramBot是实现同样功能的,不过,本着折腾精神,自己写一个。
原理就是,机器人会把收到的消息转发给自己的主号,主号回复的转发消息,提取出来文字/图片/视频后把它发给消息的原始发送者。
偶尔会crash掉,还有待继续debug,找到crash的地方。

**crash原因已发现,如果用户在隐藏模式下,就是禁止group转发时,无法获得原始的转发人id故而出错。明天发修正的源码。

逻辑: tgfwd.go

TG接口: telegram.go

配置文件: bot.yaml