TGINSIGHT CHAT
Hypercube's Channel
@SmartHypercube_channel
科技@SmartHypercube 随便发最近关注的东西 欢迎找我私聊讨论 可以使用 Telegram 的转发功能转发消息
最近帖子
第 13/21 页 · 共 244 条
发布 10月28日
第十届 Hackergame( hack.lug.ustc.edu.cn )开始啦,欢迎大家来玩。 今年有一个新接口,访问 /data/core.json 可以获取到所有选手的分数变化记录,从中可以算出各种信息,例如历史上任何时间点的排行榜、提交时间分布、每道题的前几个做出的选手等。最初是计划用来方便前端开发各种新功能的,但结果只实现了计划的功能中很小一部分。 不知道会不会有人基于它做一些好玩的可视化工具,我还挺想看到 https://youtu.be/_IKrJJYMZqc 这种形式的排行榜变化视频的,以及特定选手的排名变化曲线(配图是我的😂)。
发布 10月21日
第十届 Hackergame( hack.lug.ustc.edu.cn )下周六就要开始了,这也是我参与组织的第 7 年。这些年里我从这个项目中学到了很多有趣的经验,最初更多是技术上的,因为我重构了 3 次比赛平台的代码,亲身体验了不同编程范式之间的优劣。后来直接参与的不多了,观察每年别人是怎么组织的,学到了更多管理方面的经验。当然由于大家只能在人手不足的情况下用爱发电,以及社团每年换届导致难以传承,一些结论很难类比到更正式的团队中。但我觉得这两点经验还是很重要: 1. 需要有一套方便好用的文档管理方案。可能类似某种 wiki,或者 Notion,或者 Confluence。它需要能树状管理很多“页面”,可以方便地创建和移动页面。页面里面要支持上传文件或插入比较好用的表格。需要共享、长期存档的文档是很多很杂的,例如 Hackergame 有这些需求:策划案、宣传材料、出题进度表、联系方式表、平台部署方法、题目质量标准、纪念衫设计稿、赛后问卷结果、logo 的 SVG 文件等等。在没有统一的工具的情况下,大家容易每次随意选择一种方案,有时候把文件发在聊天里,有时候创建一个 Google Docs,有时候写成 Markdown 放在一个 Git 仓库里,这三者都难以管理很多零散的内容,结果就会很乱,大家会不知道很多文档存在。应该一开始就让大家习惯,想保存任何东西都在 wiki 里面创建一个新页面。 2. 需要有一个完全做协调、联络、进度追踪等工作的人。有的团队中这样的角色叫 PM。这个人可以不懂技术细节,也可以没有管理权,只需要随时知道团队里目前总共有几项工作需要做、之间有什么依赖关系、分别都是谁正在做、预计哪天能做好、主要时间节点能否按计划达到。这个人需要经常私聊问大家进度怎么样、现在卡在什么问题上,并且回答大家“我这里在等的那个事情目前什么情况”“某某改动已经改了还是还没改”“等宣传日期定下来后,告诉我一声”之类的问题。@hejiyan 提到他所在的团队中这样的角色还负责管理大家的日程、帮大家安排会议时间和会议室、如果需要在吃饭时开会的话帮大家订餐并送到会议室。我觉得都是很有价值的,能让每个人做自己的工作时尽量少分心和打断。
发布 10月16日
https://youtu.be/HQvuIq6fXEw 我之前也想过几个方案,尝试只用 4 段 LED 来显示 10 个数字。当时我感觉很多尝试都没考虑到不同段可以有平行紧挨着的部分,或者可以在中间断开。但即使考虑到这些选择,仍然效果不好。 视频中这个设计确实是我见过最棒的,并且超过我对于 4 段能做到的质量的预期。
发布 10月15日
真希望聊天软件能集成一个大家都可以编辑的文本片段的功能。可以做成只要有人编辑了,就有一条“某某编辑了文本”的消息(这个消息如果连续出现,自动折叠起来,显示为“某某编辑了 4 次文本”这样)。鼠标悬浮在这个消息上时,侧边就显示出这次编辑的 diff。这样的提示消息和正常聊天消息穿插起来,让人很容易知道每个编辑是在什么上下文下发生的。一个人编辑后可以立刻解释一下自己是怎么想的。鼠标没悬浮在这些消息上时,侧边显示最新版本,并且点一下就能开始编辑。我觉得会让编辑小段文本方便非常多,例如,我草拟了一封发给论文 shepherd 的邮件,让其他几个作者看一下。他们经常会有一两处想修改的,但给我描述,然后我再改,再重发一遍改了后的版本,他们再说是否满意,来来回回就很折腾。或者有时别人草拟一条公告,我看到里面有一些表述不符合中文语言习惯的地方,但描述每一处该怎么改挺费事的,也不想麻烦对方一遍遍改了重发问“这样还有人有意见吗?”要是能直接编辑一下就好了。
发布 10月12日
Python 的 max 和 Rust 的 f64::max 遇到 +0.0 和 -0.0 时不管符号,会返回第一个遇到的值,min 同理。 JS 的 Math.max 和 Go 的 max 和 math.Max 把 +0.0 视为大于 -0.0,min 同理。 C 的 fmax 取决于实现,min 同理。 Haskell 的 max 在相等时返回第二个参数,min 在相等时返回第一个参数。 所以 Python 中 max(0.0, x) 可以保证返回一个符号位是 0 的浮点数(甚至即使 x 是 inf 或 nan),但 max(x, 0.0) 没有这种保证。
发布 9月30日
新手常犯的一个错误是以为 TCP 可以用于传输多个小字节串,以及它们之间的边界,类似这样: [字节, 字节, 消息边界, 字节, 字节, 字节, 字节, 消息边界] 以为整个序列要么完整传输到另一端,要么某个前缀加上 RST 会被传输到另一端。实际上,TCP 没有消息边界的概念,发送方先发送 2 字节,再发送 4 字节,接收方完全有可能先看到前 3 个字节,再看到后 3 个字节(只保证总共 6 个字节连起来是按顺序正确传输的)。 但是,很多人可能都不太了解的另一种错误是,以为 TCP 可以用于传输任意长的连续字节串,加上 FIN 作为结束标志: [字节, 字节, 字节, 字节, FIN] 以为整个序列要么完整传输到另一端,要么某个前缀加上 RST 会被传输到另一端。于是不设计发送消息长度或结束标志的机制,而是发送方一直发载荷,发完了就 shutdown,以此表示载荷结束了。接收方一直收,直到看到 EOF。 按我的理解,只考虑 TCP 的语义时,这个想法其实是没问题的,然而操作系统会打破这个假设。如果发送方的进程被信号杀死,操作系统会自作主张地给这个进程的所有 TCP 流发一个 FIN(而不是 RST)。上面说的错误的设计会导致当发送方进程被杀死时,接收方收到不完整的载荷,却以为是完整的。一个很坑的例子是 @zzh1996 提到 HTTP 协议规定服务器可以不返回 Content-Length 也不用 chunked,这种情况下以 FIN 作为载荷结束的信号,可能导致客户端只下载到半个文件就以为下载成功了。 所以结论是,如果用 TCP 传输一串字节,实际上可能在传输了任何一个前缀后,突然传输一个 FIN 或 RST。没有手段可以可靠地分辨收到的是完整内容还是某个前缀,FIN 和 RST 在这一点上是没区别的,在我看来这是操作系统设计的一个错误。
发布 9月11日
Azure 做了两个我没见过其他云服务商做的事: 1. 创建虚拟机时,一个不显眼的位置有一个每天定时自动关机的选项,而且每次创建新虚拟机时这个选项默认都是启用的。 2. 没有提前通知,Azure Patch Management 突然就把机器立即重启了。 只能说他们可能觉得把云服务器关机了没什么大不了的吧。
发布 8月28日
Chrome(以及 Edge 和 Chromium)在 Windows 上居然把所有它能打开的文件类型都注册成“Chrome HTML document”??? 我能接受它用一种模糊的称呼,例如“Chrome document”,但把不是 HTML 的文件说是 HTML 太离谱了吧。 结合上 Windows 默认不显示扩展名的这个设计,感觉能坑害无数新手。我看到网上有很多人问自己的 PDF 怎么突然变成 Chrome HTML document 了,还很难搞清楚该去哪个软件那边问(Windows/文件管理器/Chrome)。
#生活观察 搞了一个电动自行车。
Hashtags
发布 7月28日
很多平台最近统一将“帐号”改成了“账号”,虽然我一直不太确定哪个更正确,尤其是考虑到“帐本”等说法看起来还蛮正确的。但总之现在有一个可以遵循的标准了,是好事。我日常在文案中还会注意的其他几个词: - “其他”(“其它”永远不是正确的) - “登录”(除非在讨论“登陆”一个岛) - “账号”、“账目”、“账本”,全部统一用“账”字而非“帐”字 - “发帖”、“帖子”(除非在讨论百度“贴吧”和上面的“贴子”) - “请稍候”(除非在说“稍后”将会发生某事)
发布 5月17日
之前重装 Windows 时把一些游戏的存档搞丢了,这次特别仔细检查了一遍所有 Steam 游戏的存档情况。大部分游戏好好地在用云同步,但有相当不少游戏没有在用,或者(更糟)看起来在用云同步但其实并不云同步所有数据。各个游戏保存数据的位置真是五花八门: - 多数游戏保存在家目录下面的 AppData 或者 Documents 等目录中,备份家目录就能覆盖,还行。很多支持保存和读取无限数量个存档,或者存档文件比较大的游戏,都并不把存档文件云同步,只同步一些比较小的非存档数据,要当心。 - 有游戏保存在游戏本身的安装目录下,这种感觉很容易丢,因为不了解的玩家很可能会以为 steam 安装游戏的目录没有备份的必要,重装系统或硬盘空间紧张时可以随意删掉,反正能再下载。 - 有游戏保存在 C:\ProgramData 目录下。 - 大多数游戏都会在注册表中存储一些信息,注册表是完全不支持云同步的。居然有游戏把存档也保存在注册表中,不在文件系统存储任何信息,给备份带来了特别的麻烦。
发布 5月14日
在买了 Undertale 5 年半之后终于玩了,真是不错。角色和剧情设计我非常喜欢,战斗的难度也是恰到好处。 游戏过程: - 因为反正不用打就能解决战斗,所以一开始就走的是和平路线。 - 遇到 Napstablook 时发现不打就走不了,只好杀了。 - 和 Toriel 战斗时发现不打也能通过,意识到任何 NPC 应该都不用打,于是 reset。 - reset 之后一路到底,发现 Asgore 必须 fight?! - spare Asgore,fight Flowey - 我没进 true pacifist route?我没和 Papyrus hangout??我去他家里了啊!还把所有东西都查看了一遍。哦,原来是没在他的房间和他对话,只在客厅和他对话了。这也太不明显了吧。 - 补 3 个朋友任务,打最终 boss,回去找所有人说话,看结局。 - 狗狗,嘿嘿嘿,长脖子狗狗,嘿嘿嘿。 拖了这么久才玩主要是因为我知道玩它会花比较多时间和精力,而它应该是个很棒的游戏,所以我希望专门找出较大的整块时间来认真玩。没想到一等就是 5 年半,唉。