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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
duangsuse::Echo
上等讨论是交流观点,中等讨论是谈论事件,低等讨论是评判个人。 ——浅谈价值表达
第三次,我居然一句话没说(叮~counter+1),麻木了吗?还是我本来就不应该考虑那些事情?
我……真的不能写应用? 🤔
刚才我看到了 https://azul.rs/ 的 button counter 示例程序,默写下? #code

//use ...

struct Counter {
count: i32
}
impl Layout for Counter {
fn layout(self: Counter, _info: &LayoutInfo) -> Dom {
let label = Label::new(format!("{}", self.count)).dom();
let button = Button::new("+1")
.clicked(Callback(onIncClicked));
Dom::div()
.add(label).add(button)
}
fun onIncClicked(self: Counter) -> ScreenUpdate {
self.count += 1
Redraw
}
}


第二次
extern create azul;
use azul::{ prelude::*, label::Label, button::Button }

struct AppState {
counter: usize
}
impl Layout for AppState {
fun layout(&self, _info: LayoutInfo<Self>) -> Dom<Self> {
let label = Label::new(format!("{}", self.counter));
let btn_inc = Button::new("+1").handle("click", Callback(onIncClicked));
Dom::new().with_child(label).with_child(btn_inc);
}
fun onIncClicked(&mut self) -> ScreenUpdate {
self.counter += 1
Redraw
}
}
extern create azul;
use azul::{ prelude::*, widget::{ label::Label, button::Button } };

struct DataModel {
counter: usize
}
impl Layout for DataModel {
fn layout(&self, _info: LayoutInfo<DataModel>): Dom<DataModel> {
let label = Label::new(format!("{}", self.counter));
let btn_inc = Button::with_label("+1").add_action(On::MouseUp, Callback(onIncClicked));
Dom::div().with_child(label).with_child(btn_inc)
}
fn onIncClicked(info: EventInfo<DataModel>) -> ScreenUpdate {
info.state.data.counter += 1
Redraw
}
}
duangsuse::Echo
extern create azul; use azul::{ prelude::*, widget::{ label::Label, button::Button } }; struct DataModel { counter: usize } impl Layout for DataModel { fn layout(&self, _info: LayoutInfo<DataModel>): Dom<DataModel> { let label = Label::new(format!("{}"…
extern crate azul;

use azul::{prelude::*, widgets::{label::Label, button::Button}};

struct DataModel {
counter: usize,
}

impl Layout for DataModel {
fn layout(&self, _info: LayoutInfo<Self>) -> Dom<Self> {
let label = Label::new(format!("{}", self.counter)).dom();
let button = Button::with_label("Update counter").dom()
.with_callback(On::MouseUp, Callback(update_counter));

Dom::div()
.with_child(label)
.with_child(button)
}
}

fn update_counter(event: CallbackInfo<DataModel>) -> UpdateScreen {
event.state.data.counter += 1;
Redraw
}

fn main() {
let mut app = App::new(DataModel { counter: 0 }, AppConfig::default()).unwrap();
let window = app.create_window(WindowCreateOptions::default(), css::native()).unwrap();
app.run(window).unwrap();
}

这是真实代码

fun main() {
let mut app = App::create(DataModel { counter = 0 }).unwrap();
let win_main = Window::create(WindowOptions::default(), css:native).unwrap();
app.run(win_main).unwrap()
}


fun main() {
let mut app = App::new(DataModel { counter = 0 }, AppOptions::default()).unwrap();
let win_main = app.create_window(WindowOptions::default(), css::native).unwrap();
app.run(win_main).unwrap();
}

unwrap()
几乎写到手软,记得当初信 Rust 教的时候,对这个名词相当困扰,不知道它是 Option<T> 上的一个操作……
Forwarded from dnaugsuz
啊,很老很老的 Intel x86 架构手册,一般只有编译器后端的工程师才会看的那种
Forwarded from dnaugsuz
对我来说,如果一个人有学姐的名号,就是要向请教的晚辈主动提供些信息的
现在不少的大佬,带着权威的性格,却一个字也不会给提问的人透露
Forwarded from SCP-079-LOGGING (SCP-079-WARN)
项目编号:WARN
用户 ID:302913115
操作等级:封禁用户
规则:群管自行操作
用户昵称:duangsuse
我想引用学姐的话杜撰一下:
在不知道对面的权利范围的时候跟对方说,你那个怎么样 简直就是在找封 #China #Telegram #Low #freedom
你是我的学姐,我就是你的学弟,长辈帮助晚辈,在自己的领域里天经地义。

上等讨论是交流观点,中等讨论是谈论事件,低等讨论是评判个人。
——浅谈价值表达

领英对行家的定义是,在自己的领域中,根据自身经验和知识,为他人答疑解惑,分享行业洞察,提供经验干货。简单来说,所谓的行家,就是善于思考,乐于发声的人。
——浅谈价值表达

我还记得,在肖战事件中,有位娱乐圈大腕曾经发话:
“某天一位当红流量明星来找我,希望我推荐他上欧美大音乐节和颁奖礼,我帮他推荐了,他问“我能帮你做什么?”我说“没有”。他说“那你为什么帮我?”我说我是江湖老腕儿,帮年轻人是分内之事,不需市恩市义。他问“腕儿和明星有啥区别?为啥腕儿能当那么久而明星三五年就过气了?”我说明星心里大约只想着自己和粉丝那一亩三分地,粉丝也觉得全行业都欠TA家明星的;腕儿心里爱江湖,希望大家都好,愿意为行业付出。他想了想说“好像是的”。我说希望你有一天能成为一个腕儿,心里不光有自己,也有行业和大家。你心里有江湖,江湖心里就会有你。不然流量明星就只能简称“流星”了。”

我当然知道那只是个称呼,但我从没感觉到大佬们对“菜鸡”有过一点关爱,哪怕是发个链接都太珍贵了。

有的时候突然从某处蹦出一个不常发言的大佬,指着我说:你太恶心了、你根本不尊重学术、你就是个分裂民科。
那你们的心里,又是否为自己的领域留下一个名叫热爱的位置呢?
小白的数目,实际上是由大佬的实际行动决定的。
如果你们不愿意改变,也请对他们不要那么反感。
#statement
duangsuse::Echo
小白的数目,实际上是由大佬的实际行动决定的。 如果你们不愿意改变,也请对他们不要那么反感。 #statement
当然,这里断言的有点过分
不过这句话其实也不无道理,因为每个人都有自己可做的——譬如在博文里多加几个 footnote、在日常讨论中对不懂名词/缩写的人多包容一下、在教学文章里先给个解法提纲和问题本身出现的缘由
duangsuse::Echo
你是我的学姐,我就是你的学弟,长辈帮助晚辈,在自己的领域里天经地义。 上等讨论是交流观点,中等讨论是谈论事件,低等讨论是评判个人。 ——浅谈价值表达 领英对行家的定义是,在自己的领域中,根据自身经验和知识,为他人答疑解惑,分享行业洞察,提供经验干货。简单来说,所谓的行家,就是善于思考,乐于发声的人。 ——浅谈价值表达 我还记得,在肖战事件中,有位娱乐圈大腕曾经发话: “某天一位当红流量明星来找我,希望我推荐他上欧美大音乐节和颁奖礼,我帮他推荐了,他问“我能帮你做什么?”我说“没有”。他说“那你为什么…
在与部分群友(我就不想说是什么群了,再次强调,总是有人不能接受你,你也要容忍这种不能接受)的交流过程中

经常有人说我『对线』(低一级的互骂)

人和人之间的关系是相互的。
没有人给我扣帽子,我也不无端给别人扣帽子。
没有人首先不尊重我和我对某件事的评议,我也不无端和别人“对线”。

遇到什么争执,我一般都会先道歉。(到了另一边的嘴里,是否又会变成拼命洗白自己?)

你们能和人“对线”那么久依然保持相对客观、针对问题本身的言辞?
你们眼里的我到底是 duangsuse,还是镜子里的自己?

你们把一个人『不懂Python』当成梗来玩,是否考虑过在群里写代码、回答问题、分享解决方案的我的感受?
你们是否像这篇
C# 开发者写的文章里一样,是纯 Python 玩家?不能接受其他任何『语言』?
连一点消极观点都无法接受,如果不利用权限的话会怎么样?(或许,我又会被另一边代表所有群友,说是浪费别人的时间,有理有据、义正辞严)

群规里写得明明白白,“依法”到底还是依权限,我无所谓,Telegram 又不是你们开的。
少了一个人回复群成员的问题,是你们的损失,尽管一些人会一笑置之,哈。
duangsuse::Echo
在与部分群友(我就不想说是什么群了,再次强调,总是有人不能接受你,你也要容忍这种不能接受)的交流过程中 经常有人说我『对线』(低一级的互骂) 人和人之间的关系是相互的。 没有人给我扣帽子,我也不无端给别人扣帽子。 没有人首先不尊重我和我对某件事的评议,我也不无端和别人“对线”。 遇到什么争执,我一般都会先道歉。(到了另一边的嘴里,是否又会变成拼命洗白自己?) 你们能和人“对线”那么久依然保持相对客观、针对问题本身的言辞? 你们眼里的我到底是 duangsuse,还是镜子里的自己? 你们把一个人『…
真是在给自己招黑……
1. 截至现在,我已经被至少 4 人屏蔽了,加上 drakeet 有 5 人
幸好,这 4 人都不是我觉得很有能量的大佬(得罪地说,要不然也不会因为因为小摩擦屏蔽我啊x
2. 之前一些伪·朋友 就会因这些非议更加疏离了,毕竟只要有负面评价,肯定或多或少产生怀疑
3. 自己变得奇怪了,就更容易遭致其他人的排斥,虽然看起来不是这样
4. 许多人的性格都是维护大体,所以他们眼里的我在那几个人的负面评价下是有明显过错的,比如“说话太‘冲’了”
5. 我希望拥有一些同道网友,可是我也不愿看见私下也委曲求全的言论
和我一样性格的人太少了,不知道会不会被委曲求全系朋友讨厌呢
This media is not supported in your browser
VIEW IN TELEGRAM
多干实事,少生是非。
我们最后玩一会 #Python Pillow 吧。好久没涉足应用编程了。
结果我还觉得我太菜了,都不会了呢……

我们要生成一个 600x600 的 square,由两个子 square 构成: (left-top)s
1. (0, 0) (w/2, h)
2. (w/2, 0) - (w, h)

from PIL import Image, ImageDraw

def square(size, fill_a, fill_b, mode="RGB") -> Image:
sq = Image.new(mode, size)
draw = ImageDraw.Draw(sq)
(w, h) = size
for (i, xy) in enumerate([ [(0,0), (w//2, h)], [(w//2, 0), (w, h)] ]):
draw.rectangle(xy, fill = fill_a if i == 0 else fill_b)
return sq

不过 ImageDraw.rectangle 的 width 参数有点奇怪,以为有配套 height 参数呢,没想到只是 line width 🤔
感觉其实 thickness 和 line_width 都是好名字

magic_comb = square((600,600), "#66ccff", "#ee0000")
magic_comb.show() #先看一看再存
magic_comb.save("magic_comb.png")


最后,这只是用 Python 的一个示例,Java 也可以用 javap java.awt.image.BufferedImage 的 set/get RGB 和 java.awt.Graphics 做的
magic_comb.png
2.3 KB
太瞎眼我就不 send as photo 了
所以问题弄久了终究还是抽象问题 🤔
我不擅长 #parallelism ,但既有一般的编程实践和文档查找能力,对抽象的掌控也是还行的