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
??? #Github 最开始我的那个 x86 NASM 汇编的 CoolTok 就没多少人 star,PinkD 的 Java/Python CoolApkTokenGenerator 也没有多少星星,看来还是包装的力量强大... 🙈
duangsuse::Echo
??? #Github 最开始我的那个 x86 NASM 汇编的 CoolTok 就没多少人 star,PinkD 的 Java/Python CoolApkTokenGenerator 也没有多少星星,看来还是包装的力量强大... 🙈
这是动苏目前星星最多的项目了,还不得不谢谢 CoolApk 的某位小哥呢,怎么就 Debug Build 了 CoolLibrary,Cool! #CoolApk #reveng
改天可以做一个 CoolApk 的 HTML 客户端...
duangsuse 也该去学学前端了 #web #frontend
#Microsoft #Office https://github.com/duangsuse/Share/blob/master/Word0.vb

为了帮老师输入作文比赛的作文单子写了个 Word VisualBasic 宏,对 Basic 的怀旧肃然起敬....

https://github.com/duangsuse/Share/blob/master/Word0.vb#L41

我专门弄了个 Lexer-like 扫描算法扫描自己的文本字符串输入...

其中有一个循环,我后来发现是自己错了 #fix #Basic #Algorithm

本来因为我不知道 Basic 滋不资磁 continue; 所以就弄了个 Dim doNext As Boolean

后来如你们所见,doNext 是个死变量,没有被读取

是因为我在使用的时候发现它(跳过空白行和注释行的时候)会导致跳完所有空白注释之后直接结束处理,调试结果居然让我的木头脑袋百思不得其姐(跑


后来我发现是因为我没有重置这个变量(这样一次 skipThis, 后面全都 skip 掉了.... 实际上只是 skip 掉 "This" loop 而已).... 记下教训,这种丢脸的事情... 😭
希望以后不要发生了....

Open "foo.txt" For Input As #1

Dim line As String
Dim skipThis As Boolean
skipThis = False

While Not Eof(1)
skipThis = False '!!!! Add this
Line Input #1, line
If IsBlankOrComment(line) Then
skipThis = True
End If

If Not skipThis Then
...
'' Or (好像跳两下了...)
'Else
' skipThis = False
End If
Wend

Close #1
因为 #Basic 没有内建 Regex 支持,我只好自己用 VBA.Strings 写的低效辣鸡满是 Shadow Copy (而不是 Zero Copy... 老是传 ByValue,我怀疑它是不是真的要复制一份字符串... 那多伤感情...)的扫描程序,虽然我其实可以用 Windows 的 COM Object 的.... 而且这是 #dotnet #CSharp VisualBasic for Applications 而不是 VisualBasic.NET 所以连 Of Generics 都没有,数组都得是 Variant(无类型检查),辣鸡死了... 话说 VB.NET 还有 Class、Interface、Type、Namespace 什么的?///
#net excited!
Forwarded from Deleted Account
最近知道了一个免服务器发布静态配置的方法,DNS TXT 记录…
可以用来做应用内检查更新
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 呢?