C++ 语言特性的确比较多的... 手写起来恐怕还是比较难啊... 也要看后端的问题,你是打算弄优化编译,后面的汇编器、Linker 什么的是不是也要自己写,stl stdcxx 是不是也自己实现?
如果 stl 的 map 是 hashmap 的话,恐怕你也要学点数据结构和算法了,其他的我不清楚
如果 stl 的 map 是 hashmap 的话,恐怕你也要学点数据结构和算法了,其他的我不清楚
This media is not supported in your browser
VIEW IN TELEGRAM
说起来活命也不容易,前端没时间入,后端水太深,这还没扯到某些信息学、数学、计算机科学的内容呢。
就是做什么都很困难啊!
比如说,安全离不开的密码学、关系代数和关系数据库、信号处理、计算机图形学、信号处理、无线电、Hardware、机器学习、软件工程理论....
就是做什么都很困难啊!
比如说,安全离不开的密码学、关系代数和关系数据库、信号处理、计算机图形学、信号处理、无线电、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 滑动的...)
每次更新(插入、变态、删除)的时候再去更新应用启动的时候缓存的集合(而不是通过
Persistence 是一个 interface
直接让 list view 去 draw 当前的 memo list 然后再直接
+ 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 的逻辑大概就是
(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 呢?
我对 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)>>> f
val f=selectByteOf<Int>(0x0FEEDDCC, 32)
(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 要火(求
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 语法)
下面我要做一个『鸡你太美』(篮球 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 忘了还有什么了(
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 内联机器人回调
正准备使用 Scala 重写这个具有 Inline Keyboard/Callback Query 和 Inline Article 功能的 bot...
就是三种接口方式:
回复 Telegram
Message 普通消息
CallbackQuery 键盘回调
InlineQuery 内联机器人回调
GitHub
Trumeet/EncoderBot
A Telegram bot that allows you to encode your text in different ways - Trumeet/EncoderBot
第一次使用 #Scala sbt(死变态 emmm...
第一次使用 #Scala 的 experimental language feature: macros
duangsuse::Echo
虽然最后我还是放弃了继续写这些... 即便除了 bot 逻辑外的都写完了
This media is not supported in your browser
VIEW IN TELEGRAM
虽然 Scala 再去继承一下 TelegramBots 的 Api Class,使用 postfix operators 和 implicit conversation 和比 Kotlin 搞基的 Pattern matching 应该可以实现更优秀的可读性,而且这应用逻辑本身就不是多复杂...