avatar
Rei
《黑神话:悟空》个人测评
我的综合评价是:9分。(作为参考,荒野之息10分,法环9分,仁王9分,巫师三8分,FF7重制版5分) https://www.youtube.com/watch?v=bzyMLoSwYvk 游戏故事设定在西游取经之后,读过西游原著的话会对故事理解有很大帮助。如果没读过的话可以通过游戏内的人物图鉴内的小故事辅助理解。 作为一款动作角色扮演游戏,黑神话的难度略低于魂类游戏,但对于没有动作游戏基础的玩家会有点难,一个 Boss 卡…
avatar
Rei
Importmap 还是 jsbundling?我全都要
从 Rails 7 开始,Importmap 成为处理 JavaScript 加载的默认机制。它可以充分利用 HTTP/2 的并行下载和缓存机制,避免打一个大包每次改动都需要下载所有代码。 对于 js 依赖,Importmap 提供了一个 pin 功能,例如运行: ./bin/importmap pin local-time Importmap 就会从 CDN 下载 local-time 的 js 文件放到 vendor/javascript 目录,自动添加 config/importmap.rb 配置,随后就可以在 js 文件里面导入: import LocalTime from "local-time" LocalTime.start() 但某些 js 库预设开发者会使用打包工具,没有将源码打包…
avatar
Rei
Rails 开发者应该拥抱 Web Component
Rails 8 将会继续将 Hotwire 作为默认,我觉得这很好。Hotwire 是以服务端渲染为核心的前端方案,由于服务端是数据的根源,大部分应用可以通过服务端渲染解决问题而不用考虑数据同步。 不过能做不表示最优,还是有一些问题需要在客户端处理,这通常是涉及客户端状态和前端渲染。举个例子,多选输入框。当前 Geeknote 的标签输入使用了 hotwire_combobox 这个库,它充分利用了 hotwire 服务端渲染的特性,用一种聪明的方式实现了多选输入框…
avatar
yuan
Android 笔记:Activity
Activity 是 Android 应用的 UI 界面,使用 XML 来管理界面结构和布局(相当于 HTML),Activity 类本身放置交互相关的代码(相当于 JavaScript)。 View Activity 上放置着许多 View(视图),显示在屏幕上的一切都是 View(android.view.View 的子类)。 Activity 通常建议使用 AppCompatActivity 作为父类,可以为旧版的系统提供最新的组件和主题以及 API 的支持。 ViewGroup 另外还有一个 ViewGroup,通常用于布局,当作容器来使用(类似 HTML 的 div)。例如 ConstraintLayout 就是一个 ViewGroup(android.view.ViewGroup 的子类)。 布局文件 布局文件…
avatar
yuan
ArchLinux@ThinkPad X220 控制风扇转速
安装 thinkfan 和 lm_sensors。 编辑 /etc/modprobe.d/thinkfan.conf 文件: options thinkpad_acpi fan_control=1 experimental=1 执行 modprobe thinkpad_acpi 编辑 /etc/thinkfan.conf 文件: sensors: - hwmon: /sys/devices/virtual/thermal/thermal_zone0/temp # indices: [0] fans: - tpacpi: /proc/acpi/ibm/fan levels: - [0, 0, 41] - [1, 38, 51] - [4, 45, 56] - [7, 51, 78] #- [7, 55, 64] #- [7, 60, 66] #- [7, 63, 72] #- [7, 65, 74] - [127, 75, 32767] 试试 thinkfan -n 看是否能够正常执行。如果运行正常,启动 thinkfan 服务:systemctl enable thinkfan --now 链接: https://wiki.archlinux.org/title/Fan_speed_control https…
avatar
ae86
请推荐 Rails docker 部署方案
最近才将Rails应用通过Docker的方式进行改造 改造前: 服务器10台 用mina部署unicorn 改造后,需要在10台机器上面 通过 docker pull images的方式,再通过 docker-compose up app启动,或docker-compose restart app的方式进行重启。 请问,怎么在10台服务器上面,选择相对较优的部署方案呢? 感谢大家
avatar
steve lee
Concurrency in Ruby: Thread and Fiber
Fibers and Threads Example: HTTP request Example: HTTP server Fiber Scheduler Concluding The content of this article is my last tech sharing with my team at https://pixta.vn/. Fibers and Threads Thread thread = Thread.new do #... end thread.join Fiber fiber = Fiber.new do #... end fiber.resume # transfer / Fiber.schedule As you can see, they have quite similar syntax, so what are the differences between them? The level: Threads are created 1:1 with threads on OS. Fibers are implemented at the programming language level, multiple fibers can run inside a thread. Scheduling mechanism: Threads are run…
avatar
mcx
测试
测试
avatar
yuan
Android 笔记:Intent
Intent 用于组件与系统间传递消息。Android 组件除了 Activity 之外,还有 Service,Broadcast Receiver 和 Content Provider。 启动应用内的 Activity 在 Android 中,启动一个 Activity 并非像其它常见的前端开发中所做的那样,直接调用另一个 Activity 的构造方法来创建新的 Activity。而是调用当前 Activity 的 startActivity(Intent) 方法,通过系统的 ActivityManager 来创建 Activity 实例,并调用该实例的 onCreate(Bundle?) 方法。 class MainActivity : AppCompatActivity { override fun onCreate(savedInstanceState: Bundle?) { binding.cheatButton.setOnClickListener { val intent = Intent(this, CheatActivity::class.java) startActivity(intent) } } } 这里…
avatar
yuan
Android 笔记:Fragment
Fragment 是一个类似 Activity 的 UI 界面,但它只是界面的一部分。 要显示 Fragment 的内容,必须将其放置在一个 Activity 里。Fragment 无法直接在界面上显示。一个 Activity 里可以放置许多个 Fragment。 Fragment 可以嵌套。 Fragment 有自己的生命周期,它的生命周期同时也受它所在的容器(Activity 或另一个 Fragment)的生命周期影响。 生命周期 Fragment 与 Activity 有着类似的生命周期。不同的是,Fragment 的生命周期回调方法是 public 的,而 Activity 的生命周期回调方法是 protected 的。这是因为 Fragment 的…
avatar
yuan
Android 笔记:RecyclerView
RecyclerView 很适合用于数据集合的展示,包括以列表形式、网格形式等。它的特点是:只会维持当前界面上能够显示的数量的视图实例。例如一个屏幕只显示得下 10 条数据,那么它就只会在内存中保留稍多于 10 个的视图实例。当界面滚动时,部分数据的界面被隐藏,相应的视图实例会被回收重用于新数据的显示,这也就是它名字的由来:Recycler。这可以极大地节省系统资源。 引入 RecyclerView # lib.versions…
avatar
mcx
2024.12
已经回去了
avatar
电子芥末
五柳速记(Wuliu-STN)约100行代码的快速笔记程序
约 100 行 Java 代码,只使用 Java 标准库,完全没有第三方代码。 开发时也不使用 Maven, Gradle 之类,只使用 javac 有一个简单的 GUI 窗口。 代码极致简单,不可能更简单了。 主要功能 开源仓库 https://github.com/ahui2016/Wuliu-STN 下载项目源码后,在终端执行命令 newnote 即可打开窗口,输入文本内容,点击 OK 完成一次记录。 笔记内容是一个个 txt 文件,每天一个,例如 2025-01-01.txt 主要用来记录 零散 的信息,没有条理的、混乱的短句等 两个优点 极低心智负担…
avatar
yuan
Kotlin 笔记
变量 & 常量 var experiencePoints: Int = 5 var 关键字用于声明变量,experiencePoints 是变量名,后面跟 : 及变量的数据类型 Int,然后是赋值。 var 声音的变量是普通变量,val 则是用于声明只读变量,用 val 声明的变量不能重新赋值,类似 Java 当中的 final。多数情况下,建议首选 val。 类型推断 上面的例子可以简写作:var experiencePoints = 5,由于 5 是一个已知类型的值,因此编译器会自动推断 experiencePoints 为整数类型。通常情况下,建议尽量依靠类型推断,相对省事。除非因为…
avatar
busylog
NAT64 with tayga in netns
inspired by https://openwrt.org/docs/guide-user/network/ipv6/nat64 iface jool inet manual address 10.64.64.1 address fe80::6464 netmask 255.255.255.0 pre-up ip link add $IFACE type veth peer ${IFACE}_ ||: pre-up ip netns add jool ||: pre-up ip link set dev ${IFACE}_ netns jool post-up ip netns exec jool /sbin/ip link set ${IFACE}_ up post-up ip netns exec jool /sbin/ip addr add dev ${IFACE}_ 10.64.64.2/24 post-up ip netns exec jool /sbin/ip addr add dev $…
avatar
数字支付
2024 年中国移动支付数据摘录 China Payment Data Excerpt
English Version: 2024 China Payment Data Excerpt 支付宝和微信支付的交易数据由每年一月份公布的投诉处理情况数据计算得出。数据来源:支付宝 | 微信支付 网联清算平台的数据来源:央行支付报告 | Payment System Reports 目前,支付宝和微信支付七成左右的交易由网联(NetsUnion)清算平台处理,另有两成以上交易由银联清算系统处理(CUPS),剩余交易则只涉及备付金内部流转(即钱包余额向个人收款码支付)。 支付宝年交易总数(笔交易):2890 亿,日均…
avatar
数字支付
数字支付和实时支付
English Version:Digital payment and real-time payment 偶然在 X 网站上,看到一位印度人声称“印度的数字支付/在线交易占全世界的 46%”,经过搜索,发现有不少印度媒体也这么说。虽然知道他们是在胡说八道,不过我更感兴趣的是他们为什么这么说。以下是探究过程。 第一步,寻找数据来源,搜索引擎帮我找到了一篇 2023 年的文章:India tops world ranking in digital payments, beats China by huge margin: Report 其中提到印度第一,巴西排名第二,2920 万笔交易,其次是中国的1760 万笔…
avatar
yuan
StateFlow 在 Android 中的应用
使用 Flow 自动更新数据 在 UI 中使用 DAO 获取数据后,如果有人或线程更新了数据库的内容,相应的 UI 不会自动更新。当然你可以编写代码来协调应用程序特定部分的更新,但更好的方式是使用 Flow 来自动监视数据库并自动更新 UI。 首先,需要修改 DAO,Room 的查询支持返回 Flow(注释部分是原来的代码): @Dao interface CrimeDao { @Query("SELECT * FROM crime") // suspend fun getCrimes(): List<Crime> fun getCrimes(): Flow<List<Crime>> } 然后把调用该函数的地方都跟着一起…
avatar
busylog
OpenWrt snapshot in systemd-container
(apt install systemd-container) first boot, need to edit inittab to enable console: sudo machinectl pull-tar url/to/openwrt-armsr-armv8-rootfs.tar.gz openwrt --verify=no # or use machinectl copy-from / copy-to? or use nsenter -a -t PID /bin/sh #echo "console::askfirst:/usr/libexec/login.sh" | sudo tee -a /var/lib/machines/openwrt/etc/inittab sudo systemd-nspawn --boot -D /var/lib/machines/openwrt --network-veth the created veth will be called host0 in the container. see also openwrt as client. # in the openwrt container uci set network.host0=interface uci set network.host0.device=host0 uci set…
avatar
Rei
用 HTTP + JSON 直接访问 GraphQL API
有一天我需要访问 Fly 的 API 以支持自动签发 SSL 证书,Fly API 基于 GraphQL。我一向不太喜欢 GraphQL,精神洁癖让我不想增加一个 GraphQL Client 依赖。我想到 GraphQL 底层基于 HTTP 和 JSON,为何不直接访问接口?以下就是用 Ruby 实现过程。 Fly 前开发者认为“GraphQL 拖慢了所有人、所有事物的速度。” —— https://fly.io/blog/the-exit-interview-jp/ 首先 Graph QL API 需要提供一个 endpoint,对于 Fly API 来说是 https://api.fly.io/graphql: ENDPOINT = "https://api.fly.io/graphql" 可以…