DuckSoft's Blog Ex nihilo ad astra.

解决 Sid Meier's Civilization V 在 Manjaro Linux 上无法运行的问题

症状 在 Steam 里直接启动 Sid Meier’s Civilization V,一个黑窗口一闪而过。 溯源 定位到游戏目录,尝试直接运行游戏: $ ./Civ5XP GUID Assets\dlc\dlc_01\mongol.civ5pkg 7a036b7fb9a80e8dea7b73fb58c5a288 GUID Assets\dlc\shared\upgrade1.civ5pkg e818fa28902977b42ee5e3426f5112e6 [S_API FAIL] SteamAPI_Init() failed; no appID found. Either launch the game from Steam, or put the file steam_appi... Read more

在 Arch Linux 下配置 Rust 开发环境

0x00: 写在前面 作者有点懒,先放在这里占个位置。 0x01: Rust 编译器的安装器 受益于 Arch Linux 伟大的包管理系统(当然我并没有在赞美安全性掉渣的 pacman 以及 yaourt,我们这里使用 yay),我们仅需一条命令就能搞定 Rust 的安装。 在 Arch Linux 的官方仓库中,Rust 以两种形式存在: 一为 Rust 的“安装器”——rustup; 一为现成的 Rust 编译器套件 rust。 并且这两个包互相冲突。 惨痛的教训告诉我们,使用 rustup 的安装方式要远远好于后者的安装方式。最重要的是,接下来我们要配置的宇宙最强无敌 IDE —— JetBrains CLion 的 Rust 插件对 rustup 有强依赖... Read more

记一次 Docker 网桥 172.17 网段与宿主机网络环境的冲突

开端:从迁移到折腾 最近所维护的两台服务器搬迁到了新的网络环境(HP ProLiant DL580 Gen9 × 2,下文称 200 服务器、202 服务器),需要手动对服务器上运行的生产环境作出一定的调整。同时由于原 200 服务器主机上的操作系统和软件版本均偏低,查杀过的木马病毒疯狂重生,正好趁这次机会对原有环境做一次大洗牌。 在重做系统之前,我们需要对原有生产程序做备份。由于原 200 服务器上存在 DDoS 木马,一旦木马重生时服务器处于网络连接状态,整个机房的网络全部都会处于拥塞状态,这决定了我们不能通过网络备份的方法备份 200 服务器的数据,不过 202 服务器并没有这个问题。 于是 202 服务器由小伙伴使用机房内一台空闲的服务器做存储机器,直接使用 scp 命令... Read more

Linux 服务器上一次 DDoS 病毒的杀毒纪实

文/DuckSoft @ Wed, 12 Dec 2018 21:24:45 +0800 起因 前段时间用户反映称 90 服务器上的网页访问响应速度出现明显异常,远程调试时未发现 90 服务器有任何异常。后在一次无关的远程调试中发现 90 服务器的 SSH 链接出现了异常中断,多次重试连接无果,试图从 80 服务器走内网跳板无果,因此决定进行实地调试。 在实地调试的过程中,发现 80 服务器与 90 服务器之间的互 ping 操作出现非常高的丢包率,机房同时有一队运维人员想向机架上安装新的服务器,却发现新服务器虽然启用了透明 IP,但外网环境下仍然无法访问。 使用排错法将网线逐根拔除,发现将 80 服务器的网线移除后,网络立即恢复正常;重新连接 80 服务器后,网络环境... Read more

记 gevent 的文件描述符泄漏问题

开端 最近用 Docker 向服务器上部署了一批使用 Flask + gevent 的 Web 应用程序,经过不同的时间、不同的访问量后,这些应用程序总会变得对网络请求无应答,显然这些程序因为某种原因已经 down 掉了。 使用 docker logs 命令查看容器日志,一排排的正常请求记录映入眼帘,不断滚动;随后则是满屏幕滚动的 Traceback。没有动态视力技能,加之日志实在太长,懒癌发作的笔者直接敲了 Ctrl+C 停掉了日志回显,改用 docker logs --tail=50 命令查看最后 50 行日志,自然是看到了之前滚动的 Traceback。这些 Traceback 的最后一行都是相同的内容: OSError: [Errno 24] Too many open ... Read more