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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
https://play.kotlinlang.org/hands-on/The%20State%20of%20Kotlin%20JS/04_Using_APIs

with (canvasCtx) {
beginPath();
fillStyle(randomColor.sample())
rect(randAxis(), randAxis(), 20.0, 20.0); fill();
closePath();
}

fun randAxis() = Random.nextDouble(0, 20.0)


我们可以那么画许多方块,这个其实也可以提出绘制逻辑的。
只是 Kotlin 的例子,所以没抽提。
My answer.
duangsuse::Echo
在更新自家 Fedora OS installation 的时候顺便说一下。 之前的模型是一个 Literate 对 N 个 language-kotlin 的代码块,然后显示代码的时候拼起来创建 <code> tag 交给 KotlinPlayground 做后续工作。 现在可以一个 Literate 对 N 个靠“可配置”的 Map<LanguageId, [ElementConfig, Consumer<Element>]> 来(之前那个 ElementConfg 是 DOM ElementAttribute…
我最后没有用 function hist<K, V>(iter: Iterable<V>, key: (V) => K): Map<K, V> {
let histogram = new Map();
for (let item of iter) {
let k = key(item);
if (!histogram.has(k)) histogram.set(k, []);
histogram.get(k).add(item);
}
return histogram;
}

fun <K, V> histogram(iter: Iterable<V>, key: (V) -> K): Make<K, List<V>> {
val histogram: MutableMap<K, MutableList<V>> = mutableMapOf()
for (item in iter) { histogram.getOrPut(key(item), ::mutableListOf).add(item) }
return histogram
}
fun <K, V> histogram(iter: Iterable<V>, key: (V) -> K): Make<K, List<V>> {
val histogram: MutableMap<K, MutableList<V>> = mutableMapOf()
for (item in iter) {
val k = key(item)
val self = if (k in histogram) histogram[k] else { histogram[k] = mutableListOf(); histogram[k] }
self.add(item)
}
return histogram
}
就是在 filterCode 的流程中,加一个 language: string 的依赖
代码质量提升警告:开始使用 extension function 抽提逻辑
#Ruby 实在是太过分了……
只能富贵险中求,勉强 push 上去了,对自己的代码要有自信啊!
Ruby gem 下载速度好慢……
dnf system-upgread 完了 ruby 也要 gem update,真麻烦
何须长富贵,安乐是神仙。
Works pretty. 🐔
enableCodeFilter 给加了个 [ElementConfig, Consumer<Element>] 数据依赖,filterCode 加了个 language 可配置项默认 kotlin。

逻辑和修改缘由、作用范围、数据关系修改很清晰,可是也无法特别详细地在 changelog 里写出来
……一门没 tuple 的语言真是…… 算,其实是我自己的锅啊!为什么不先 find 一下 reference…… 这么明显的错误……
let dependencyCodes = dependencyDivs.map(eDep => { let [_0, cs, _1] = filterCode(eDep); return cs }); //ok:resolve-dependencies

算了,不让有机会再出错。
This media is not supported in your browser
VIEW IN TELEGRAM
安逸得很。
#Telegram #sysadmin 为了保证 plasma desktop 能够正常升级(额外 repository 的 Telegram package 用的 Qt 旧版本不兼容) 不得不牺牲了基于 rpm 的 Telegram 安装……
duangsuse::Echo
https://gist.github.com/Himself65/45b82f824f6185b29555a6da516b7337 #GitHub #zhihu 👍
const ZHIHU_URL = "https
function main() {
Http.GET(ZHIHU_URL).then(res => sendCheckStatusGist(res.time, res.statusCode == 200));
}
const ACCESS_TOKEN = process.environ["GITHUB_ACCESS"];
function sendCheckStatusGist(time, is_alive) {
GitHub.auth(ACCESS_TOKEN);
GitHub.Gist.send("Is Zhihu Died?", "知乎今天死了吗?", format(time, is_alive)).done();
}
function format(time, is_alive) {
let exim = is_alive? "还没死啊!" : "终于死了!";
return exim + time.format("yyyy-MM-dd hh:mm:ss");
}


其实最好是用 await/sync 协程写,更甜一些,好像 Haskell 的 do notation 啊。
Forwarded from duangsuse Throws
#life #linux #sysadmin GNOME Pomodoro 的 execute command "systemctl suspend" 加上 wake-on keyboard 看起来非常棒,我无法再强行无视休息计划继续玩电脑了 🤪
之前的顾虑完全不存在,没什么工作是 suspend 保存不了的,如果有,下机记下来,记忆力和洞察力会更好。