Skip to content

Instantly share code, notes, and snippets.

View Hanaasagi's full-sized avatar
🌸
はる

Hanaasagi

🌸
はる
View GitHub Profile
#[derive(PartialEq, Eq, Clone, Debug)]
pub struct ListNode {
pub val: i32,
pub next: Option<Box<ListNode>>,
}
impl ListNode {
#[inline]
fn new(val: i32) -> Self {
ListNode { next: None, val }

TLP 1.4 Test: Battery Care for Lenovo Laptops (non-ThinkPad series)

Read the overview document first.

Supported Features

Lenovo laptop series using the ideapad_laptop driver have a feature called 'battery conservation mode', basically a fixed stop charge threshold at 60%. The hardware behaviour is:

  1. Connected to the charger, charging stops when the charge level reaches the stop threshold
@Hanaasagi
Hanaasagi / init.sh
Created December 8, 2021 14:30
initramfs-linux.img
#!/usr/bin/ash
udevd_running=0
mount_handler=default_mount_handler
init=/sbin/init
rd_logmask=0
. /init_functions
mount_setup
if "hello" == "hello":
print("correct")
else:
print("incorrect")
Rust 36 hrs 26 mins ████████████████▋░░░░ 79.5%
YAML 3 hrs 33 mins █▋░░░░░░░░░░░░░░░░░░░ 7.8%
TOML 1 hr 55 mins ▉░░░░░░░░░░░░░░░░░░░░ 4.2%
Markdown 1 hr 15 mins ▌░░░░░░░░░░░░░░░░░░░░ 2.8%
JSON 51 mins ▍░░░░░░░░░░░░░░░░░░░░ 1.9%
@Hanaasagi
Hanaasagi / is_big_endian.c
Created June 30, 2019 23:43
判断字节序,返回 true 为 Little-Endian 否则为 Big-Endian
int is_little_endian(void) {
union t
{
int a;
char b;
} c;
c.a = 1;
return c.b == 1;
}
// 如果为 big endian,存储为下(Hex表示,int 占 32 bit,char 占 8 bit)
@Hanaasagi
Hanaasagi / type-apply.py
Created April 8, 2019 02:19
一种通过 MonkeyType + Pytest 来自动注解的方法(准确率不高,仍需要人工修改)
```
python type-apply.py
```
import os
import subprocess
DIR = ""
for root, dirs, files in os.walk(DIR, topdown=False):
@Hanaasagi
Hanaasagi / git-clean-reflog.sh
Created March 25, 2019 09:56
清理 reflog
#!/usr/bin/bash
git reflog expire --expire-unreachable=now --all
git gc --prune=now

Keybase proof

I hereby claim:

  • I am Hanaasagi on github.
  • I am hanaasagi (https://keybase.io/hanaasagi) on keybase.
  • I have a public key whose fingerprint is BF53 8DF8 E365 57CC 516D 9A8B A524 26A3 B59F F8EC

To claim this, I am signing this object:

fn my_sqrt(x: i32) -> i32 {
let mut n = x as f64;
let half = 0.5 * n;
let mut i = unsafe {
std::mem::transmute::<f64, i64>(n)
};
i = 0x5fe6ec85e7de30da - (i>>1);
n = unsafe{
std::mem::transmute::<i64, f64>(i)
};