duangsuse::Echo
722 subscribers
4.29K photos
130 videos
583 files
6.51K links
import this:
美而不丑、明而不暗、短而不凡、长而不乱,扁平不宽,读而后码,行之天下,勿托地上天国。
异常勿吞,难过勿过,叹一真理。效率是很重要,盲目最是低效。
简明是可靠的先验,不是可靠的祭品。
知其变,守其恒,为天下式;穷其变,知不穷,得地上势。知变守恒却穷变知新,我认真理,我不认真。

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
// main.rs
#![feature(lang_items)]
#![feature(no_core)]

#![feature(libc)]
#![no_core]

extern crate libc;
extern crate core;

use libc::printf;
use core::panic::PanicInfo;

#[no_mangle]
pub unsafe extern "C" fn _main(argc: i32, argv: *const *const u8) -> i32 {
printf("Hello, world!\n\00".as_ptr() as *const i8);
return 0;
}

#[lang = "eh_personality"]
#[no_mangle]
pub extern "C" fn eh_personality() {}

#[panic_handler]
#[no_mangle]
pub extern "C" fn panic_handler(p: &PanicInfo) -> ! {
loop {} // never return
}


// main.c
int _main(int _, char **__);

int main(int argc, char **argv) { return _main(argc, argv); }


# Makefile
RUSTC := rustc # rust compiler
RUSTDOC := rustdoc # rust doc generator

# compiler flags
RUSTCFLAGS := -O --color auto
RUSTDOCFLAGS := -v

# default target
RUSTTARGET := x86_64-unknown-linux-gnu
RUSTCFLAGS := $(RUSTCFLAGS) --target $(RUSTTARGET)

ifeq ($(DEBUG), 1) # use debug info
RUSTCFLAGS := $(RUSTCFLAGS) -g -v
endif

snappy: main.c libsnappy.a
$(CC) $(CFLAGS) $? -o $@
libsnappy.a: main.rs
$(RUSTC) $(RUSTCFLAGS) $? --crate-type staticlib --crate-name snappy


最后目标文件大小 8.7K,我赢了,duangsuse 想(
duangsuse::Echo
// main.rs #![feature(lang_items)] #![feature(no_core)] #![feature(libc)] #![no_core] extern crate libc; extern crate core; use libc::printf; use core::panic::PanicInfo; #[no_mangle] pub unsafe extern "C" fn _main(argc: i32, argv: *const *const u8) ->…
因为今天实在是太晚了... 暂时决定功能如此(因为 snappy 自己目前居然没有一个前端可用):

snappy [files]

将 每个 file 压缩为 file.snappy,- 被当作 stdin

unsnappy [file] [output]

将 file 解压缩,默认标准输出
(写不下去了(毕竟熬夜太久伤身体啊
#learn 学会了什么? 👾

0. 知道自己对 f*() 系列文件操作函数、mmap() 和 Rust FFI 还不熟(准确的说对 Rust 整个都不熟,更别提 #![no_std] 了)
1. 写了第一行这么长又简单易懂的 GNU Makefile...
2. 机制地利用 C 给不使用 std 的 Rust 函数导出弄了个 _start 不至于每天 segfault
3. 复习了 Rust,会在不使用外部 crate 和 cargo 和 IDE 的情况下工作
4. 留下了明天不睡到中午就不能平复的倦意...(悲)
duangsuse::Echo
(写不下去了(毕竟熬夜太久伤身体啊
突然想到某些 JVM、Ruby 程序员可能会说 "300 多行都写了 3 个小时,真慢啊"
... 拿 #![no_std] 的 Rust 写这玩意可不止比你们那全自动高端大气上档次 GC 折腾,比完全拿 C 写还折腾...

还好现在是写 C 版本的 Rust,生命周期什么的考虑得少一些,不然思路绝对要迫真崩坏,惹不起啊
算法要设计半天实现起来也得画啥生命周期图分析...

Crystal 虽然比 Ruby 底层但还是有个 Slice 啊,还是有标准的 OO 类型系统啊,这个 Rust 如果不熟想的话真是要死人啊,不信你们写啊...
写了三个小时真是感觉无法形容 😶...
#PL #dev
#![no_std] 的 Rust、C 还是 C++ 这是个问题...
还好 Ada、Fortran 等语言没人维护性能不好可以早点排除... 是多么美好的事情...
Forwarded from Programmer Jokes
Forwarded from Programmer Jokes
Forwarded from Programmer Jokes
duangsuse::Echo
#recommended #kotlin #dev out 等关键字:可以说是写得很好的文档了,易懂 https://www.kotlincn.net/docs/reference/keyword-reference.html
#CSharp *注意,在 C# 里 out 的语义是完全不同的,基本是 ref 引用传参无需初始化的版本,有一篇博文解释了它
有一点我无法理解的,Kotlin 文档里提出这是从 C# 里抄过来的语义,那么就是说 C# 支持在参数列表和泛型约束里使用这个关键字,或许
(我指的是 BMP 图片读写的意思
太懒,所以重构不计效率的就花了一个小时(现在总算结束了?
学会了什么? #learn #kotlin

1. java.imageiojava.awt 包部分功能的使用
2. Java URL 类使用
3. RGB Color
4. Kotlin vararg
5. 知道了自己现在还是不知道 Array<out String> 啥意思
6. 知道了可能别人也不知道,就是从 Kotlin 编译器推导的类型抄抄罢了
7. stepuntil 语法
8. 之前把图片打印倒了的说,一改循环 xy 到 yx 立刻修好
8.5. 我下面说的算法分析能力几乎没有就是指不知道为啥会打印倒 180 度,BufferedImage get 是怎么处理的,怎么就倒悬了 (绝望)
9. 累死了
总之就是算法分析模拟和理论理解能力还不够强,虽然比以前看着 MapGen 一脸蒙蔽好多了,依然有很大的提升空间,看来天才还是不存在的... 不相信天才... 即使我已经高二了