duangsuse::Echo
🐴 类个 🍺, #Kotlin 这 typealias 也太蠢萌了吧,和预处理有什么区别?
error: type mismatch: inferred type is Dijkstra.Node<String> but DijN<T> /* = Dijkstra.Node<T> */ was expected🌚👍 请问 Kotlin 大大:这个
T 是什么玩意;真是连预处理模板都不如typealias RouteSelectB<T> = MutableMap<DijN<T>, WNode<T> > // Node : Edge-Node我用的有错吗?为啥
open class Dijkstra<T: Any>
fun backtrace(rs: RouteSelectB<T>) = fun(end: DijN<T>, start: DijN<T>): List<DijN<T>>
T 就成了 T?难道真的是直接强行标识符名字填进去不加解析?我还以为是不能递归展开重写了一遍也没用 infer 失败一堆不好看🤔 Typealias ❌ file-level only & no type variable resolution
🤔 Type argument +
(* -> *) Kinds (Type argument for type variables) ❌ not supported, <GraphB : Map<DijN<T>, Set< WNode<T> >>> not compatible with Map<DijN<T>, Set< WNode<T> >>
🤔 (inner)Subclass ❌ Cannot inherit from Pair<A, B>: it's final....
🤪 Expand typealiases by hand and remove the use of type extraction ✅
error: type inference failed. Expected type mismatch: inferred type is Dijkstra.WNode<String> but Dijkstra.WNode<T> was expected瞬间服气
well done.
Dijkstra.kt
4.7 KB
男人看了流泪,女人看了沉默... 😭 #Kotlin
duangsuse::Echo
#Moha #Haha 照例膜 🐸 一下 GraphRoot -> 中南海 中南海 ->(666) 倒车 中南海 ->(1) 记者会 记者会 ->(2) 批判 批判 ->(3) TooYoung 批判 ->(4) TooSimple TooYoung ->(2) Naive TooSimple -> Naive Naive ->(1) IAmAngry! Naive ->(2) 我一句话也不说! IAmAngry! -> 是最好的 是最好的 -> 国务院 批判 ->(4) 识得唔识得啦? 识得唔识得啦?…
This media is not supported in your browser
VIEW IN TELEGRAM
🤔 duangsuse 为了保证比较好的手感,经常喜欢默写用于初始化项目的模板。
现在,duangsuse 想默写一些模板看看:
+ Docker 的 java Dockerfile (container image) 模板
+ Travis.ci 的 docker 部署模板
+ Maven POM 模板
+ HTML 模板
+ JavaEE JMS 的 Message Queue Activation
+ JavaEE JPA 的 ORM 关系: @OneToMany
+ Kotlin 里不使用大括号调用
—
—
蠢 duangsuse 被自己的畸形惊艳到了,.,,,(迫真
现在,duangsuse 想默写一些模板看看:
+ Docker 的 java Dockerfile (container image) 模板
+ Travis.ci 的 docker 部署模板
+ Maven POM 模板
+ HTML 模板
+ JavaEE JMS 的 Message Queue Activation
+ JavaEE JPA 的 ORM 关系: @OneToMany
+ Kotlin 里不使用大括号调用
git rev-list --count HEAD
1. DockerFROM openjdk:alpine3.9-jdk8u171 AS builder
ADD . /app
WORKDIR /app
RUN chmod +x gradlew && ./gradlew test
RUN cp build/artifict/*.jar dist.jar
FROM openjdk:alpine3.9-jre8u171 AS runner
COPY --from=builder dist.jar .
ENTRYPOINT ["java","--jar", "dist.jar"] —
openjdk:alpine3.9-jdk8u171 -> openjdk:8u171-jdk-alpine3.6 亦可 8u181, alpine3.8build/artifict/*.jar -> build/libs/*.jar AS runner 后缺少 WORKDIR /app
2. Travis.cilangauge: minial
services:
- docker
before_install:
- VERSION=$(git rev-parse --verify HEAD | head -c7)
- DOCKER_IMGID = $DOCKER_REGION//$DOCKER_USER
- echo $DOCKER_PASS >dockerpass
install: docker login $DOCKER_REGION -u $DOCKER_USER --password-stdin <dockerpass
script: docker build . -t $DOCKER_IMGID
depoly:
--
origin: script
branch: master
script: docker push $DOCKER_IMGID
on: [tags: true] —
minial -> minimal [typo]services -> service DOCKER_IMGID = "$DOCKER_REGION/$DOCKER_IMGNAME:$VERSION"🤔 都忘了.... 但对比一下
depoly:
- provider: script
script: docker push $DOCKER_IMGID
on: [tags: true]
#life 出去转了一圈,打算接下来说说三个问题
+ 打算给 TeaMeow Editor 用的 Keybinding 辅助加更多键位的支持
+ 再加个 Markdown render
+ 说说 Dijkstra.kt 对图的文本表示的
+ 给 NBMAK 画个徽标吧...
+ 打算给 TeaMeow Editor 用的 Keybinding 辅助加更多键位的支持
+ 再加个 Markdown render
+ 说说 Dijkstra.kt 对图的文本表示的
-> notation 如何变成 infix 的问题+ 给 NBMAK 画个徽标吧...
#Machl #DIP https://github.com/zhiying8710/geetest_crack
发现了好东西。
= Geetest 是一种「验证不是机器人」(I'm not a robot, captcha)(验证码) 系统,基于「挑战」式检验
基于「生成歪七扭八的数据很容易,让机器恢复它们很难」的「事实?」设计
G2 是移动滑块的验证,用简单卷积识别应该可做
G3 第一部分是纯逻辑(不含「非精确的计算」)验证,直接可做
也可能是 G2 的滑块,通过率都是 99% (OpenCV) #CV
G4 是找七扭八扭又歪的汉字,需要 YOLO3 定位、CNN 识别汉字、CRNN 校验识别正确性
G5 也是一样,加个字典按照「语序」单词顺序就可以了
发现了好东西。
= Geetest 是一种「验证不是机器人」(I'm not a robot, captcha)(验证码) 系统,基于「挑战」式检验
基于「生成歪七扭八的数据很容易,让机器恢复它们很难」的「事实?」设计
G2 是移动滑块的验证,用简单卷积识别应该可做
G3 第一部分是纯逻辑(不含「非精确的计算」)验证,直接可做
也可能是 G2 的滑块,通过率都是 99% (OpenCV) #CV
G4 是找七扭八扭又歪的汉字,需要 YOLO3 定位、CNN 识别汉字、CRNN 校验识别正确性
G5 也是一样,加个字典按照「语序」单词顺序就可以了
GitHub
GitHub - zhiying8710/geetest_crack: geetest极验二代滑动、三代滑动和汉字点选破解
geetest极验二代滑动、三代滑动和汉字点选破解. Contribute to zhiying8710/geetest_crack development by creating an account on GitHub.
Forwarded from LetITFly News (LetITFly 让技术飞)
华为曾经说过「我们为了避免用户刷机出现问题,将在60天后永久关闭解锁码申请服务」-> 「我就是死外边,从这里跳下去,也不会再开放 Bootloader 解锁」
不能预装 Google 服务导致对海外的销售有影响了,然后考虑允许 Mate 30 用户解锁 bootloader -> 「真香?」
but,频道主仍然基于个人原因不建议各位买华为的智能手机。
不能预装 Google 服务导致对海外的销售有影响了,然后考虑允许 Mate 30 用户解锁 bootloader -> 「真香?」
but,频道主仍然基于个人原因不建议各位买华为的智能手机。
curry (f :: * -> *) = f
curry (\_ -> curry g) = \x -> g x🤔 这周的主要问题是完成部分的 BinaryStreamIO,虽然只有一个晚上。本来,BinaryStreamIO 设计的有 struct 和 nat 包,不得不暂时不写
struct 包依赖 org.duangsuse.condel,是一门独立的嵌入式编程语言,可能不能立刻写
此外,列表的部分如下
1. 谈谈区块链技术的应用方向、实际能力和「巴菲特午餐」
2. Dijkstra:WDAG 的文本表示方法
5元 ->(a) 有 N 个集合被称为前驱集合,存在前驱栈里
10元 ->
20元 ->
整数币 ->
现金 ->
人民币 ->
货币
(b) 在扫描过程中,视前部(初始 MAX_VALUE)空格(缩进)的个数,如果它大于上行则前驱集合所有元素转移为当前行
如果等于则当前行后继元添加到前驱集合
如果小于,则开启新前驱集合
3. 新的强制类型转换 + 泛型类方式封装使用 typealias 的 Dijkstra 算法实现(
object Solver + class Dijkstra<T>),同时提供 JavaScript 和 Python 的弱类型版本4. 迫真猜测 Bellman-Ford — 两种支持负权重的方法:反向平均/重新传递
5. 关于 NBMAK (名字 Arkita_ADNKBot) 的基本交互 —
/approve 引入方式和群聊专有的 flags, /lex
6. BinaryStreamIO7. 🤔??? 这里有一个项目,可是 duangsuse 不想写出
8. 分享三篇文章《预支奖金》《火车盒饭难吃的背后》《知识晒成咸鱼干》
9. 分享一些书(如果没有)《时间深渊》《云养汉》《天贼》
10. #FP Agda:终于基本理解了 rev.rev = id 的归纳法
11. KotlinCN:
inline fun <reified T> isz(vararg xs: Any) = xs.all { it is T } 以上是我靠着一个 counted memo 记忆了一个一个星期的东西,可能有遗漏,不过遗漏恰恰说明它不是最重要的东西 🤔
duangsuse::Echo
🤔 这周的主要问题是完成部分的 BinaryStreamIO,虽然只有一个晚上。 本来,BinaryStreamIO 设计的有 struct 和 nat 包,不得不暂时不写 struct 包依赖 org.duangsuse.condel,是一门独立的嵌入式编程语言,可能不能立刻写 此外,列表的部分如下 1. 谈谈区块链技术的应用方向、实际能力和「巴菲特午餐」 2. Dijkstra:WDAG 的文本表示方法 5元 -> 10元 -> 20元 -> 整数币 -> 现金 -> 人民币 -> 货币…
显而易见地(因为它们很费事),BinaryStreamIO 最好的特性 StructIO 是不能完成了,不过还是打算
1. 除了 StructIO 和 Nat numbers 的部分完成
2. 写 CondEL 的 Parser
1. 除了 StructIO 和 Nat numbers 的部分完成
2. 写 CondEL 的 Parser
Forwarded from duangsuse Throws
#school 本苏国庆放假,没啥计划,就是几个 lib 加上一个数据统计的,本苏写应用最辣鸡了(连 DOM 可调节大小位置的悬浮窗都要想半天,得出
应用上,我对状态机熟悉一点了,同时也稍微考虑了一下应用常做的动画应该是怎么样子用
当然这个函数也可以写得更像状态机一样。
一般应用的话,如果用 Kotlin 的 Coroutine + await/async 自然是最好的,因为非常直观,不需要老设置 callback,只是为了维护一个链条
我是这么想的,当然是空想,可是……
说起来,这个人的水平啊,我感觉还真的是越来越难用『代码行数』这种不讲理的东西决定了,反而是最厉害的大佬会去写最傻瓜式的代码,不是因为他们不知道,真的是因为他们已经经历过了、看透了。
傻瓜式的代码真的是一种奇妙的东西啊,只有突破思维定式才能写出简单又优雅的代码,和原来的那种机械重复感觉完全不是一个档次的东西。
i.width += (pos.x - i.x) / 2 都莫名兴奋)应用上,我对状态机熟悉一点了,同时也稍微考虑了一下应用常做的动画应该是怎么样子用
// 告诉你们什么叫真正的『形式化设计』这里有一点可以注意:每次状态转移不会粘滞,也就是
fun trimMarks(input: CharSequence, beg: Char = '<', end: Char = '>'): String {
val trimstr = StringBuilder()
var isInTag = false
for (char in input) {
// (0) => initial
// initial <- c = trimstr.append(c)
// initial <- beg => inTag
// inTag <- _ = {}
// inTag <- end => initial
if (!isInTag) {
if (char == beg) { isInTag = true }
else { trimstr.append(char) }
} else {
if (char == end) { isInTag = false }
else {}
}
}
return trimstr.toString()
}
initial <- beg => inTag 直接转移到了 inTag 状态,而不触发 initial <- c。我使用了一个 if (…) {} else {} 完成这个分支,保证了状态转移的 case 不会和其他 case 碰撞,当然也应该有更好的方法。当然这个函数也可以写得更像状态机一样。
object TrimMarks {
const val defaBeg = '<'
const val defaEnd = '>'
enum class State { INITIAL, IN_TAG }
fun process(input: CharSequence, beg: Char = defaBeg, end: Char = defaEnd): String {
val trimmed = StringBuilder()
var state = State.INITIAL
for (char in input) { when (state) {
State.INITIAL -> if (char == beg) { state = State.IN_TAG } else { trimmed.append(char) }
State.IN_TAG -> if (char == end) { state = State.INITIAL } else { }
}}
return trimmed.toString()
}
}
当然,这里 defa* 常量其实可以不写,因为这么抽提无必要一般应用的话,如果用 Kotlin 的 Coroutine + await/async 自然是最好的,因为非常直观,不需要老设置 callback,只是为了维护一个链条
我是这么想的,当然是空想,可是……
fun showInputAnimated(): Unit {
val line = CubicBezierLine(0.3, 0.2, 0.5)
val fadeout = ObjectPropertyAnimation(btnStart, "alpha", line, Pair(1, 0), 2000 /* aka. (2 as kotlin.Int).sec */)
fadeout.setOnAnimationEndListener { // boilerplates
val fadein = ObjectPropertyAnimation(btnStart, "alpha", line, Pair(0, 1), 1000)
fadein.animate()
}
fadeout.animate()
}
Kotlin 的 infix fun 和 tailrec fun 也比较有用啊,还有 inline val,data class : *…说起来,这个人的水平啊,我感觉还真的是越来越难用『代码行数』这种不讲理的东西决定了,反而是最厉害的大佬会去写最傻瓜式的代码,不是因为他们不知道,真的是因为他们已经经历过了、看透了。
傻瓜式的代码真的是一种奇妙的东西啊,只有突破思维定式才能写出简单又优雅的代码,和原来的那种机械重复感觉完全不是一个档次的东西。