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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
Forwarded from 每日消费电子观察 (Dave Lin)
《绝地求生:刺激战场》今日改名为《和平精英》正式上线
http://www.vgtime.com/topic/1054077.jhtml
在免费测试近一年之后,《绝地求生:刺激战场》官方微博在今天正式宣布停止测试,同时宣布另一款游戏《和平精英》在今天开启公测。

毕竟为了版号,什么都做得出来

至于对游戏评论
欢迎各位移步下文

为了过审,和平精英(前刺激战场)的做法把我看笑了
https://www.huxiu.com/article/298234.html

个人感觉可以和之前的清理"苏联政治笑话生成器"一样,成为当代魔幻主义的一部分了
#github #windows 顺便提一下,RAII 是 Resource-Acquiring-Is-Initializing
Forwarded from YSC 的频道
另外才发现微软开源了 wil。逆向 Windows 中 C++ 编写的程序经常能看到一些封装传统 Win32 API 的 wil class。有了这个可以用 modern C++ 的方式来写 Win32 应用,避开很多 C 语言的坑。
https://github.com/Microsoft/wil/wiki/RAII-resource-wrappers
RAII 好耶!
#Font #CG 这项功能被称为 Ligature, 连字, HarfBuzz 文字造型系统里有支持, FreeType 里已经没有这种 OpenType "Layout Font" 扩展了...
Forwarded from YSC 的频道
https://t.me/programmer_humor/15553
这里大概是为了展示一些字体的功能,输入 <= 会显示成 ≤。
上面的链接提到了是 Fira Code 字体的功能。
Forwarded from 羽毛的小白板
弄扁 Rx 操作
C++ 语言特性的确比较多的... 手写起来恐怕还是比较难啊... 也要看后端的问题,你是打算弄优化编译,后面的汇编器、Linker 什么的是不是也要自己写,stl stdcxx 是不是也自己实现?

如果 stl 的 map 是 hashmap 的话,恐怕你也要学点数据结构和算法了,其他的我不清楚
This media is not supported in your browser
VIEW IN TELEGRAM
说起来活命也不容易,前端没时间入,后端水太深,这还没扯到某些信息学、数学、计算机科学的内容呢。

就是做什么都很困难啊!

比如说,安全离不开的密码学、关系代数和关系数据库、信号处理、计算机图形学、信号处理、无线电、Hardware、机器学习、软件工程理论....
duangsuse::Echo
说起来活命也不容易,前端没时间入,后端水太深,这还没扯到某些信息学、数学、计算机科学的内容呢。 就是做什么都很困难啊! 比如说,安全离不开的密码学、关系代数和关系数据库、信号处理、计算机图形学、信号处理、无线电、Hardware、机器学习、软件工程理论....
说起来今天我本来打算做这些的,可后来没啥时间了...(料到假使我把时间都拿来实现也不可能完成...)

我对 Maven, Gradle, CMake, Make 也稍微熟悉了一点,不至于卡项目创建

+ NotiMemo

类似 YuutaW 的 DoNotForget, 可能是要我尝试写一下 ListView 的 Adapter,使用 Android Notification 模型,Intents 以及基本的 Persistence, Activities
当然还有点动效的.... (L 上有 Ripple 就不必了)

想来是:

activity.Main()
activity.NotisEdit()
activity.NotiView(title)

Main 直接发一个 Keep alive 的 Notification 完事,然后这个 Notifiaction 留着,或者不管怎么样让 NotiEdit 能访问到,要更新其中的状态行
Notification 不需要其他的(比如,按钮),只要一个 text span 完事

NotiEdit 就是使用对话框风格的 Activity 了,它访问使用 SharedPreference 持久化的存储层,
Memo,就是一个记录,有一个 Title 和一个 Body,都是 Spannable,可以 Create-Read-Delete

作用是:
查看列表,可以使用『All/Finished/Working』状态过滤,Finished 列表项,使用半透明显示
删除 Memo,通过长按列表项
新建 Memo,通过 "+" 按钮
改变 Memo 的完成状态,通过点击 Memo 来完成
查看 Memo 的细节,通过双击 Memo 来完成(好像有点 dirty... 或许应该通过 Horizontal 滑动的...)

每次更新(插入、变态、删除)的时候再去更新应用启动的时候缓存的集合(而不是通过 MemoDataAccess 获取的持久化状态),刷新状态栏 Notification 状态

Persistence 是一个 interface

interface MemoDataAccess {
List<Memo> getAllMemo();
List<Memo> getWorkingMemo();
List<Memo> getFinishedMemo();

void addMemo(final Memo nt);
void deleteMemo(final String title);
void changeMemoState(final Memo nt, boolean active);
void flush() throws IOException;
}

然后就使用普通的 Adapter 模型,List Model 吧(而不是 Item Model/ViewHolder)
直接让 list view 去 draw 当前的 memo list 然后再直接 f(x)=x 映射索引添加行为就可以了(

+ Todo

也是一个类似的 App,不过是比较大的,使用普通的『Activity』+Fab 界面风格的,不过是测试 Kotlin Anko、Realm、RealmRecyclerView 用的
这时候就使用 ViewHolder 了,说白了就是抄 《Kotlin 极简教程》的


+ 完成之前学校里没写完的 HTML 一二三等奖名单评奖器

+ BinaryStreamIO....

关于,我又想了一个方式抽提 ByteOrder 读取写入逻辑,使用了 Higher-order-function 和变长位运算、位长度计算

可以直接

<T> readNBits<T>(T selector, T value)
readByte<T> = readNBits<T>(0xFF)

但其实我最终想要的还是

selectByteAt(32)(0xFF_EE_DD_CC)(0) //=> FF
moveByte(32)(0xFF_EE_DD_CC)(0)(2) // 0x00_FF_00_00

其中 select 的逻辑大概就是

fun <T: Int> selectByteOf(bs: T, sz: T) = fun (n : T) = bs.and(0xFF shl sz -n*8 -8)
val f=selectByteOf<Int>(0x0FEEDDCC, 32)
>>> f
(T) -> kotlin.Int
>>> f(0)
251658240
>>> f(0).toString(16)
f000000
>>> f(1).toString(16)
ee0000
>>> f(2).toString(16)
dd00
>>> f(3).toString(16)
cc


+ Spannable Builder

为什么我写完了 Python 的 XMLBuilder 却不会写 Spannable Builder 呢?
duangsuse::Echo
展示性地介绍一下这个插件,目前例子还没做完....
我决定现在做完了(
VisualGimp 要火(求
This media is not supported in your browser
VIEW IN TELEGRAM
做完了,很累... 火?... 可能不是用来做这个的
duangsuse::Echo
我决定现在做完了( VisualGimp 要火(求
This media is not supported in your browser
VIEW IN TELEGRAM
其实我不火的(如果好像不应该火的话

下面我要做一个『鸡你太美』(篮球 rap 系)

java annotation Processor,它有如下功能:

把所有类中叫 jntm 的方法都改名为 “鸡你太美”
把所有方法中叫 chick 的局部变量都改名为 “鸡”
把所有 @chick 注释的 class/instance field 都改名为 『鸡』

算是一个 Java Annotation Processor 的 "Hello World",毕竟我以后可能要利用 Java Annotation 扩展 Java 语言的(比如加入 Kotlin 的 in out 泛型语法,加入 val 语法)
说到 resources,

Android 平时容易用到这些 resources:

一般放在 sourceSet dir 的 res/ 下
java 的却是默认放在 resource/ 下,一般除了 properties 就没有别的了

res 由 AAPT 处理,在打包的时候打包进 apk 里

drawable mipmap ninepatch vector
menu layout anim
style theme
string dimen color id
attr

... emmm 忘了还有什么了(
https://github.com/Trumeet/EncoderBot/blob/master/src/main/kotlin/moe/yuuta/encoderbot/EncoderBot.kt
正准备使用 Scala 重写这个具有 Inline Keyboard/Callback Query 和 Inline Article 功能的 bot...

就是三种接口方式:

回复 Telegram

Message 普通消息
CallbackQuery 键盘回调
InlineQuery 内联机器人回调
第一次使用 #Java 的 Resources