文章

通过RSS订阅我的博客

  • 预告 Learn-Project 4.0 版

    不知道大家听没听说过 Google Chrome 有个插件,叫做 Learn Project ,是一个网络学堂的改良前端。不过,随着网络学堂的不断更(xia)新(gao),它已经不再适用于现在的版本。于是,哈利橙(@Harry_Chen)决定利用寒假时间,在今天(2.17)之前完成 Learn Project 4.0 的开发。为什么叫 4.0 呢,因为哈利橙课程的 GPA 众数是 4.0 。这个版本采用先进的 React 框架编写(Vue 塞高),使用了 Material Ui 作为界面框架(这我觉得可以),目前的一个参考图(图源哈利橙): 看那满眼的高分数,希望 Learn Project 4.0 能在 flag 倒下之前完成。
  • 每周分享第 11 期

    对不起迟到了( Google 的 fuzzing 家族又来了个新成员 太喜欢造轮子了 https://github.com/google/clusterfuzz 有趣的文本生成工具 https://github.com/TheBerkin/rant 又一个 side channel attack https://www.nccgroup.trust/us/about-us/newsroom-and-events/blog/2019/february/downgrade-attack-on-tls-1.3-and-vulnerabilities-in-major-tls-libraries/ 来自 Prof Fan 的一个 cf dns 权限限制分发的工具 https://github.com/ProfFan/cloudflare-proxy-rs 部署到了我的博客的小工具 大家体会到了吗 https://instant.page/ 教育性质的 C on web https://vasyop.github.io/miniC-hosting/ 激活清华教育版 win10?...
  • 近来做 Stanford CS140e 的一些进展和思考(9)

    距离上一篇 CS140e 系列文章已经过去了很久,距离第一篇文章过了一年零几天。在后来这一段时间内,CS140e 结束了课程,又开始了新一年的 winter 2019 课程,迎来的却是 C 版本的 CS140e ,不禁让人感到失望。还好,Sergio Benitez 放出了原来的 CS140e 的镜像,如果大家仍然想回去查看原版优质的 CS140e ,可以点进去参考。 后来因为机缘巧合参与到了清华的 Rust OS 课程,又想到回来把原来的 CS140e 进行更新,于是顺带把跑在 QEMU 下的一些需要的工作给做了,另外把 Rust nightly 版本更新了(一年前的 nightly 还能叫 nightly ?),才发现标准库变化还是蛮大的,由于...
  • 每周分享第 10 期

    新年快乐! Haskell to WASM compiler https://github.com/tweag/asterius A ssh tarpit that sends endless banner https://github.com/skeeto/endlessh Use rust to write UEFI app https://github.com/rust-osdev/uefi-rs 神奇的小游戏 https://yeahpython.github.io/game/game.html 又一个后端 rust web 框架 https://github.com/seanmonstar/warp 挺酷的一个网站 https://github.com/pomber/github-history ws 调试工具...
  • 每周分享第 9 期

    IDA Loader plugin for some Nintendo rom https://github.com/w4kfu/IDA_loader websocket daemon http://websocketd.com/ 实时的游戏开发器 https://script-8.github.io/ 硬核逆向 Leica 相机的固件 https://alexhude.github.io/2019/01/24/hacking-leica-m240.html 做 CTF 时遇到的整数溢出的 CVE https://www.anquanke.com/post/id/104182 发现一个 speedtest 的轮子 https://github.com/adolfintel/speedtest 西数的 RISCV 核实现 https://github.com/westerndigitalcorporation/swerv_eh1 iOS 12.2...
  • 使用 Rust 实现 VirtIO 驱动

    背景 最近在给 rCore 添加驱动层的支持。一开始是想做网卡驱动,后来发现, qemu-system-riscv32 只支持如下的驱动: # qemu-system-riscv32 -device help Storage devices: name "scsi-cd", bus SCSI, desc "virtual SCSI CD-ROM" name "scsi-disk", bus SCSI, desc "virtual SCSI disk or CD-ROM (legacy)" name...
  • THUWC 2019 小记

    前段时间,以工作人员的身份参加了在广州二中举办的 THUWC 2019 。作为一只菜鸡 OI 选手,我没想到过我会以另一种身份参与一个我本来没能参与的活动,就好像以暑校辅导员的身份参与清华暑校一样。 提早来到了赛场,布置场地,然后把机考的各个流程都过一遍,记住各个细节,各方面都有条不紊地进行,看着第一场前同学们特别激动地冲入考场,到最后一场同学们考完后的释放,在同学们身上看到了很多不成熟的样子,看到了兴奋想要和同伴分享的喜悦,也看到了不甘的眼泪。 希望各位强大的选手们可以来到九字班、零字班乃至一字班,享受课改的乐趣吧嘿嘿嘿
  • 每周分享第 8 期

    这周更加忙了,所以内容不多。 Rust 1.32.0 is out 其中 dbg macro 挺有意思 https://blog.rust-lang.org/2019/01/17/Rust-1.32.0.html 在线的 hex packet decoder https://hpd.gasmi.net/ Rust Cheatsheet https://www.breakdown-notes.com/make/load/rust_cs_canvas/true Rust tcp/ip stack https://github.com/m-labs/smoltcp 逆向 CAJ 的转换器 https://github.com/JeziL/caj2pdf
  • 每周分享第 7 期

    这周比较忙,所以内容不多。 在嵌入式系统里跑 Lisp 可以在串口开个 repl 在线调试 http://www.ulisp.com/show?3J Pattern matching for C++ https://github.com/solodon4/Mach7 一个商业版的类似 ASan 的产品 不知道效果如何 https://stensal.com/ 用 Python 写 Cocoa 界面还行 https://dawes.wordpress.com/2017/08/17/python-with-a-cocoa-gui-on-macos/ Rust 实现的权威搜索引擎 https://github.com/toshi-search/Toshi Rust Embedonomicon 讲述 Rust 在 bare...
  • 实现 VSCodeVim 中支持中文分词的单词移动

    最近用 VS Code 写中文 LaTeX 比较多,但是编辑起来总是比较麻烦,不能用各种带 w 的 motion ,不然整行都没了。于是 @xalanq 提出能不能拿一个 JS 的分词库,魔改一下 VSCode Vim 来得到同样效果?答案是可以的。 最后代码在 jiegec/VSCodeVimChinese 里,还没有合并到上游的打算。不定期根据上游发版本同步更新,在 Github Release 里发布 vsix 文件,目前版本为 v1.0.1。在 VS Code 里 Extensions: Install from...
  • Grafana 中可视化 Ping 时把 Timeout 显示为指定值

    刚遇到一个需求,就是用 Telegraf 收集 ping 信息,然后在 Grafana 里可视化当前的延迟,如果超时了,就显示一个指定值,如 999 ,这样就可以放到一个 Gauge 里面可视化了。但是,问题在于,Telegraf 的 ping input 在超时的时候只会在 result_code 里写一个 2 ,其他项都是空的,因而如果直接用 GROUP BY time(interval) fill(999) 会导致最新的一个数据经常得到 999 。这意味着需要根据 “result_code” 来进行区分 Timeout 的情况。最后捣腾了很久,得到了这个方案: select "average_response_ms"...
  • 每周分享第 6 期

    今天刚迁移了域名到 jiege.ch ,原来的 jiegec.me 会自动跳转过来,链接什么的都不用变。 Rust 的 cfg! 宏只是返回 bool 而不会影响内部是否被编译 如果需要 if constexpr 的效果需要用 cfg-if 基于 HTML5 canvas 的图表库 Chart.js Endianness MATTERS! – Harry Chen 各数据库的带补全的 CLI https://www.dbcli.com/ 边开发边测试 k8s 部署...
  • 域名已经迁移到 jiege.ch

    从买新域名到迁移大概用了一个多小时,现在已经恢复访问。原有的地址也会直接 301 到新的域名上来。 仍然 Host 在 Github Pages 上。还会继续更新,不会跑路的(逃
  • 调整 Alacritty 的 Powerline 字体显示偏移

    今天体验了一下 Alacritty ,以前一直在用 iTerm2 ,但是它的高级功能我都没用到。于是现在用了下 Alacritty ,把 Solarized Dark 配置了,发现 Inconsolata for Powerline 字体显示有点偏差,于是调整了一下: # Font configuration (changes require restart) font: # Normal (roman) font face normal: family: Inconsolata for Powerline #...
  • Grafana Variable 的 regex 过滤方式

    用 InfluxDB 收集到 Mountpoint 数据的时候,经常会掺杂一些不关心的,如 TimeMachine ,KSInstallAction 和 AppTranslocation 等等。所以,为了在 Variables 里过滤掉他们,需要用 Regex 进行处理。网上有人提供了方案,就是通过 Negative Lookahead 实现: /^(?!.*TimeMachine)(?!.*KSInstallAction)(?!.*\/private)/ 这样就可以把不想看到的这些 mountpoint 隐藏,节省页面空间了。当然了,这里其实也可以用白名单的方法进行处理,直接写 regex 就可以了。
  • Rust 获取 Linker Script 中的地址

    在 Linker Script 中可以记录下一个地址到一个变量中,大概这样: .text: { PROVIDE(__text_start = .); *(.text .text.* .gnu.linkonce.t*) PROVIDE(__text_end = .); } 这里的 PROVIDE() 是可选的。这样,代码里就可以获取到 .text 段的地址了。在 C 中,直接 extern 一个同名的变量就可以了,但在 Rust 中,需要这样获取: extern "C" { fn __text_start();...
  • 每周分享第 5 期

    2019 年第一篇博文,祝大家新年快乐。最近忙于期末,没怎么搞事情,所以暂时没有关于别的内容的博文。 发现一个很好看的 http web server index 就是不再更新了 h5ai 录制 DOM 变化并且重放 rrweb C++ 中的 Lazy Sequence 实现 lazyCode 来自 Berrysoft 的 Windows UWP 校园网认证解决方案 TsinghuaNetUWP 中科大老运维的笔记 ITTS Go 源码研究电子书 目测还在编写,不过读来挺有收获的 go-under-the-hood...
  • 每周分享第 4 期

    咕了更长的时间。 Header only JIT assembler https://github.com/herumi/xbyak 想找个时间玩玩 JIT Rust 实现的 Babel 转译 https://github.com/swc-project/swc 又一个瀑布流实现 https://github.com/e-oj/Magic-Grid 马上可以体验 HTTP/3 的库 https://github.com/djc/quinn Logitech Spotlight Presentation 挺好用的 配套软件的安装过程和使用都挺好的 Server side canvas https://github.com/Automattic/node-canvas 边看 youtube tutorial 边写代码...
  • 《加速奔向2019》小程序编写和运营回顾

    前言 关注清华的同学可能知道,昨天,“清华大学”公众号发了一篇名为《2018,我们共芳华丨@THUers 致相伴一年的你,请查收这份心意》的推送,内容大概就是,有那么100个新年台历礼品要送出去,大家如果想要的话,就扫描小程序。小程序模仿了火车抢票的病毒式营销的模式,要求大家分享到群聊或者朋友圈,让别人给自己加速,加速到 2019 的前 100 名即可填写信息领取奖品。 然后大家就在推送里看到了我。就酱。 开始 这件事情据说策划了有一段时间了,只是因为各种原因一直没有做,最后这个锅就路由到了我的头上。一开始说就是个加速小程序,逻辑很简单,但后来逐渐发现需求越来越多,主要是界面上的,动画上的,还有一些非技术因素的功能,嗯。这其实算是一个不大好的软件工程案例。 过程 线上的问题与解决方案 然后就是上线了。大概是昨天(2018-12-27)中午的时候推送发出去,很快流量就开始来了。很快,在朋友圈看到有同学在转发了,也有人反映说,网络有点卡,加载资源有点多。我去机器上用 iftop 看了下,流量大概是 250Mb/s ,没打到千兆。我一开始看了下,CPU 和内存占用都良好,以为是网络出口限制的问题,就想着没办法了,就这样吧,扛过去再说。不过,忽然有了转机。 TUNA 技术群里,忽然有人在讨论 SOMAXCONN 的问题,我想到,会不会是有些参数没开够大,导致了性能瓶颈,又受到啊荣的点拨,立马调整了这些变量: net.core.somaxconn fs.file-max net.core.netdev_max_backlog net.ipv4.tcp_max_syn_backlog nginx: worker_rlimit_nofile nginx: event.worker_connections 很快带宽从 200Mb/s...
  • 每周分享第 3 期

    因为 DDL ,咕了一小会。 被 Windows 保存为 Unicode 文件坑了 BOM 配上 UTF-16 太难受了 Github 最近添加了很多 Issue 方面的更新,如 Pin 和 Delete Grafana 真的很好看很好用 推荐大家自己配一套监控系统 Microsoft Remote Desktop Beta 新增了 AVC Codec 有意思 不知道啥时候上 HEVC...