image frame

Klus Futuredark's Blog

宜言饮酒,与子偕老。琴瑟在御,莫不静好。

Bash笔记

export命令和直接赋值区别

  • export 的变量可被子进程继承;
  • 直接赋值bash环境变量不能被子进程继承;

64位机器编写32位汇编

  • 源码开头加上 .code32
  • as 加上 --32 选项
  • ld 加上 -m elf_i386 选项

ssh 长连接问题解决

服务器/路由器/客户端防火墙会关闭超时空闲链接

  • 客户端配置
    1
    2
    3
    4
    5
    6
    # 配置长链接参数
    TCPKeepAlive=yes
    # Client每隔 60 秒发送一次请求给 Server,然后 Server响应,从而保持连接
    ServerAliveInterval 60
    # Client发出请求后,服务器端没有响应得次数达到3,就自动断开连接,正常情况下,Server 不会不响应
    ServerAliveCountMax 3
  • 服务端配置
    1
    2
    3
    4
    # Server 每隔 60 秒发送一次请求给 Client,然后 Client响应,从而保持连接
    ClientAliveInterval 60
    # Server发出请求后,客户端没有响应得次数达到 10,就自动断开连接,正常情况下,Client不会不响应
    ClientAliveCountMax 10

git status/commit/log 中文乱码问题

1
2
3
4
5
6
7
8
# 配置~/.gitconfig

[core]
quotepath=false # 解决status

[i18n]
commitencoding=utf-8 # 解决commit
logoutputencoding=utf-8 # 解决log

实现一个Rust Unix Domain程序

背景

最近在用php写脚本时,对Unix Domain这种IPC进行了一些学习和使用。

我之后是打算利用Rust来实现一个存储服务,所以这次会对针对Rust的Unix Domain使用进行了解,同时也会使用Rust来解一个二进制数据包。

阅读更多...

WSL2的pbcopy和pbpaste

背景

自从换了mac以后,爱上了 pbcopypbpaste 命令。

Linux下也有实现方案:《如何在 Linux 上使用 pbcopy 和 pbpaste 命令》

pc-linux我已经弃坑多年,在家常用 wsl2 环境办公,但是少了这两个命令就一直感觉不得劲儿。然后在网上查了一通资料,最终捣鼓了小半天,算是“曲线救国”。

此方案依赖于项目:https://github.com/Konfekt/xclip-xsel-WSL

阅读更多...

PHP踩坑笔记

JSON小坑

PHP的 json_encode()json_decode() 是特别好用的两个函数。

一般来说,复杂数据结构类型才需要转化为json字符串来传输。此时,比较容易忽略的是,当你把一个正常字符串传入 json_encode(),会返回什么呢???报错?还是不变?

1
2
3
4
5
6
7
$rawStr = "hello world";

$encodeStr = json_encode($rawStr);

echo $encodeStr . PHP_EOL; // "hello world"

// !!! 请注意,是 `"hello world"`,而不是 `hello world`

是的,你没看错,给一个字符串json_encode,它会给这个字符串开头和结尾加上双引号。

PHP花里胡哨

类方法/属性动态调用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class A
{
public $two_closure = NULL;

public function __construct()
{
$this->two_closure = function ($name) {
echo "this is closure, and the name is {$name}" . PHP_EOL;
};
}

public function one_step()
{
echo "this is one" . PHP_EOL;
}
}

// 动态调用常规方法
$num = 'one';
$methodName = "{$num}_step";
(new A())->$methodName(); // this is one


// 动态调用属性(当属性是闭包时)
$num = 'two';
$propName = "{$num}_closure";
((new A())->$propName)('haha'); // this is closure, and the name is haha

socket编程随笔

创建一个文件描述符

  1. 指定协议族: AF_UNIX、AF_INET、AF_INET6…
  2. 连接类型: SOCK_STREAM、SOCK_DGRAM、SOCK_RAW…
  3. 协议: IPPROTO_TCP、IPPROTO_UDP…
  • Copyrights © 2019-2024 Klusfq
  • Visitors: | Views: