Forwarded from YSC 的频道
https://www.cnbeta.com/articles/tech/896779.htm
一看这个 Description 很明显是给 Windows 上 Java 调用 WinRT API 的项目。
一看这个 Description 很明显是给 Windows 上 Java 调用 WinRT API 的项目。
cnBeta
JavaWinRT项目现身Github 微软或考虑为Android移植UWP运行时
很多人说过,如果微软不将UWP移植到Android,那开发者就燃不起多大的热情。但到目前为止,微软的工作迹象都不明显。有趣的是,近日有人在Github上发现了一个“JavaWinRT”存储库,暗示微软可能正在考虑到WinRT移植过去(Android也使用JavaAPI)。
#FP 虽然我也不清楚 Strict 到底是怎么样的求值模式,我只认 Call-By-Name(lazy), Call-By-Value, Call-By-Need,不过 foldr 显然比 foldl 更适合 lazy 吧…… 考虑一下 foldl 可以 tco 而 foldr 必须保留栈
Forwarded from dnaugsuz
Forwarded from dnaugsuz
其实人少也没什么,向钱看的国内速成班、专科班学员真的一堆一堆出,不稀罕了(而且我也觉得没什么可稀罕的,因为这么做有点不利于平均的应用设计水准……
如果坐不下冷板凳,是不能当好程序员的,不少可称得上优秀的人在 GitHub 上不也没有多少 fo(编译原理的,R*RS 标准跟随者之一 Chez Scheme 的作者 fo 还没有五百个、讲过计算机网络的编程随想也没有一些网红培训班火),技术很高的博主关注者也往往很少,曲高和寡,虽然很酸但是也蛮正常
如果觉得人少了…… 可以试试先自己找/整点东西看看,比如计算机图形学和信号处理、机器学习
可以自己试着去维护点小框架什么的
优质而且志同道合的地方真的是很难得的…… 而且找到了也未必是你能待的地方…… 这和钱无关,心疼
如果坐不下冷板凳,是不能当好程序员的,不少可称得上优秀的人在 GitHub 上不也没有多少 fo(编译原理的,R*RS 标准跟随者之一 Chez Scheme 的作者 fo 还没有五百个、讲过计算机网络的编程随想也没有一些网红培训班火),技术很高的博主关注者也往往很少,曲高和寡,虽然很酸但是也蛮正常
如果觉得人少了…… 可以试试先自己找/整点东西看看,比如计算机图形学和信号处理、机器学习
可以自己试着去维护点小框架什么的
优质而且志同道合的地方真的是很难得的…… 而且找到了也未必是你能待的地方…… 这和钱无关,心疼
Forwarded from dnaugsuz
好牛啊这…… 简直比
之前我没见过为了优化代码风格而做的局部
fun <T>(…) … when { true is T … } 这还……之前我没见过为了优化代码风格而做的局部
operator funForwarded from dnaugsuz
在 suspend fun 里引用啊(迫真
其实 suspend 的 closure 也可以,runBlocking 什么的……
协程不熟悉…… 我真的该多看书
其实 suspend 的 closure 也可以,runBlocking 什么的……
协程不熟悉…… 我真的该多看书
Forwarded from dnaugsuz
怎么感觉你是想用
operator … unaryPlus() 来 +MHE.ping…… 如果是局部的话应该就不能引用吧……Forwarded from dnaugsuz
强烈推荐陈光剑的《Kotlin 极简教程》
对 Coroutine 讲得也很细
对 Coroutine 讲得也很细
Forwarded from dnaugsuz
是指
参数化多态再加上 bound 什么的看起来有点混乱,其实有时候感觉还是蛮有用的,毕竟可能最大限度泛化代码,而不止是 subtyping
>
(2) 没看出来
扩展函数定义类似
+(::susFunc as /*suspend*/T.() -> Unit) 这样的,receiver 是为了调用 () -> Unit 的 operator unaryPlus 参数化多态再加上 bound 什么的看起来有点混乱,其实有时候感觉还是蛮有用的,毕竟可能最大限度泛化代码,而不止是 subtyping
>
一般带 receiver 的 lambda 是作为参数指定类型的吧,然后一般扩展函数的 receiver 用匿名类型,使用起来也会很别扭吧
(1) 的确是用来指定 receiver 的类型,虽然我相信很多人第一眼看到 init: A.() -> Unit … { (x as A).init() } 都会觉得很扎眼:咦? init 为什么跑到中间来了?(2) 没看出来
MHE 是类型变量…… 泛化的话应该是可以用吧……扩展函数定义类似
fun List<T>.sum() where T: … 这样的会很有用Forwarded from dnaugsuz
好像只要 main thread 死了 JVM 也会 exit?之前在周志明《JVM 最佳实践》上好像看过似乎是 main thread 一死就全瓜瓜了
duangsuse::Echo
10_12
想今天先做 (2) 和 (3) 的一部分、(10) 🤔 我还是很想完成 Doku 库的,毕竟是一血前耻
a2i2a.cpp
1.3 KB
浪费了我很多时间,教会了我,其实有些东西不一定是你开始想的那样,然后是要懂得接受失败, 🙃 #CXX #Algorithm, 这个算法还是要写,不过明天要先纠正下理论的错误
duangsuse::Echo
a2i2a.cpp
咳咳,理论上呢…… 我昨天晚上洗澡的时候想到了,其实在我看到之前的设想失败时一言以蔽之,就是我重新(当然是独立地)发明了取余进制换算……
开始我的思路是利用除法去取 (base**) n 位的数字 k (= rest / ones),比如给 100 的时候,我取 10**1 位 (100 / 10) = 10 也就是说第二位是 "10",我当时居然还觉得很正常,全然不顾它不在 (0, 10] 区间内了 🤪
直到不断 segfault 我才开始思考,于是就这样乱改代码(我也不会用 GDB,连 segv 的时候是哪一行我都问不出来,where 没用、info 太多、tstack 没用、show,list 的不是……)
我一直以为错在 CString 构造失败(存在末尾 \0 的问题),我怀疑是我把索引计算错了,所以就一直在 lstr-1, lstr-2 之间徘徊……(当然子程序只是要你给 nstr, 字符串长度……)
因为之前的这种智障想法,我甚至以为 XXXXX(eo {N+}) / base(=10) 就可以得到它的十进制长度…… 其实只是因为我举例子的时候全举的是 (10**n) 这种特例,然后我居然信了…… 😂
现在改成了浮点数(其实也可以用 !=0; /base 循环,不过还是开对数 lg 好)
round(log10(n))+1 或者 ceil(log(n, base)) (肯定要 ceil,因为是开幂啊,只要有零头就是 1002 这类)为了『修正』这个实际上是算法的问题,我祖传(其实真的不想用的,我不想面向 REPL 编程,很脑残)的
cout « 就开始了…… 结果当然是无功而返,碰了一鼻子灰,而且我甚至连 radare2 pd 都用上了,segv 的时候它在 movzx eax, byte [rax], 我不知道是在干什么(大概是在解引用 char* 吧)所以我看到
1024 / 10 (/=2; =102) 的时候,绝对是崩溃的 😭不过还好我立刻想到了:如果我用 1024 mod 10,就可以拿到第一位的 4 了,即便差了一位效果一样(于此同时我还想了被我否决的 (rest/base)-(rest%base) 等一大堆脑残思路)
于是,我可以写这个 #Haskell 程序
module Atoitoa(atoi, itoa) where我调试了半天,想了很久,但还是有问题
import Data.Char (digitToInt)
radix_K16 = "0123456789ABCDEF"
radix_K10 = take 10 radix_K16
radix_K2 = take 2 radix_K16
-- F**king GHC won't accept (itoa'' rx k0 k 0) branch
itoa'' rx k0 k n
|n == 0 = []
|otherwise = let d = (n `mod` k) in
(rx !! dIdx d) : itoa'' rx k0 (k * k) (n - d)
where
lastk = k `div` k0 -- k=1000, lastk=100
dIdx d = (d `div` lastk)
itoa' radix base = reverse . (itoa'' radix base base)
itoa = itoa' radix_K10 10
itoa_2 = itoa' radix_K2 2
itoa_16 = itoa' radix_K16 16
atoi base = foldl (\ac -> (ac*base +) . digitToInt) 0
3 = 0b11
4 = 0b100
可为什么 itoa_2 = "000"
[DuangSUSE@duangsuse]~/Projects/Share/Others% ./a.out
而不是
后来我是这种思路:
可是事与愿违,我也不知道为什么就不行。
还好我有 bitwise ops 的『数值分割』式觉悟,立刻换成了 /base | %base 这样的高效方法 (滑稽)
123456789🤔 虽然我花了很多时间而且并不干净利落,但总感觉还是有所收获……
5
10086
char show[nstr+1] = {'\0'};
我知道了,这样分配的话字符串的最后索引就是 nstr-1, 不算 NUL char 的长度而不是
char show[nstr_pnul] = {'\0'};
write_to_str(show, nstr_pnul-1/*NUL*/);
实现了 itoa :: Int -> String
开始我天真地以为 123 / 100 == 2…… 于是就很简单 后来终于明白了,不是 🤪后来我是这种思路:
units = 10**1, 10**2, 10**3…看起来
ds = n mod units[0], n-ds[0] mod units[1], …
n = 123 的时候,ds 就是ds == [3, (123-3) mod 100 (= 20), (120-20) mod 1000 (= 100)]实现的时候我写错了(或许),好吧
lastks = 10**0 ++ units这样我再去
(/ lastk) 就可以得到ds' == [3, 2, 1] 可是事与愿违,我也不知道为什么就不行。
还好我有 bitwise ops 的『数值分割』式觉悟,立刻换成了 /base | %base 这样的高效方法 (滑稽)
import Test.QuickCheck (quickCheck)🤔
import Data.Char (intToDigit)
itoa'' :: Int -> (Int -> String)
itoa'' b n
|n == 0 = []
|otherwise = intToDigit (n `mod` b) : itoa'' b (n `div` b)
itoa' base = reverse . (itoa'' base)
itoa = itoa' 10
prop_itoaEquiv i = if i>0 then
(itoa i) == (show i) else True
where _ = i :: Int
*Main> quickCheck prop_itoaEquiv
+++ OK, passed 100 tests.import Test.QuickCheck (quickCheck)
import Data.Char (intToDigit)
itoa'' :: Int -> (Int -> String)
itoa'' b n
|n == 0 = []
|otherwise = intToDigit (n `mod` b) : itoa'' b (n `div` b)
itoa' _ 0 = "0"
itoa' base n = let f = reverse . (itoa'' base) . abs in (f n)
fneg toa n = let s = toa n in
if n < 0 then '-' : s else s
itoa = fneg (itoa' 10)
prop_itoaEquiv i = (itoa i) == (show i)
where _ = i :: Int
考虑一下 123(10),如何换算为 16 进制呢?
就是不断 (rec div) + digit mod…
(123/16)%16 (=7) + 123%16 (=11)
最终得
d 7 + d 11 == "7b" 说白了就是 10 进制的 bitwise shr, and,当然这个 itoa 在 base=2 的时候也有效
二进制的『位运算优化』之所以
n << (k) == n / (log2 k) (比如 10/4 == 10 >> 2,当然反过来也一样,而且反对称的 << 也能套)<< 运算符是有可累积性的(a << (b+c) = a << b << c)0b011 <- shr 移动一位,任何的 2**n 就变成了 2**(n+1);这里 0b1 变成了 0b10 (10-1 = 1)、0b10 也变为 0b100 (100-10 = 2)所以说整个都变成 2 的 (log2 k) 次方
90 & 0b1010(10) 二进制的时候是特例,不需要 mod 都可以计算,但是十进制不行,我也不知道为什么
duangsuse::Echo
a2i2a.cpp
那么这件事就告一段落啦 #Algorithm #Haskell #Math #CXX 🤔
module Atoitoa (atoi', itoa') where
import Data.Char (digitToInt)
type Radix = [Char]
type Base = Int
atoi' :: Base -> (String -> Int)
atoi' b = foldl (\ac -> (ac*b +) . digitToInt) 0
itoa' :: Radix -> Base -> (Int -> String)
itoa' rx b = reverse . (itoa'' rx b)
where
itoa'' _ _ 0 = []
itoa'' rx b n = let c = rx !! (n `mod` b) in
c : itoa'' rx b (n `div` b)Forwarded from duangsuse Throws
https://www.eet-china.com/news/201907231509.html #Huawei 🤔
#life #China #recommended
在《第一时间》杂志上看到一个无线通讯的天才少年,推荐过来
申怡飞 (文)
当然,其实关于这个『天才』是不是一定要『少年』呢…… 其实一般个人会有个人的看法
国家之前特别弄过『少年班』的,可是发现这样出产低,而且会浪费一些不是极端优秀但很不错的人,出产的天才少年也未必比其他天才好很多
这个人是独立弄的,所以的确是从小就天才。
当然,现在揠苗助长的事情实际上还有一些,比如那个考上大专(通过高考)的十岁女孩……
按照这位父亲的看法,中国的教育肯定辱没了很多『天才少年』
可是刻意要生造出那么多天才少年干什么呢……
我个人非常想当一个天才,因为天才意味着…… 我不仅有很强大的计算和抽象、组织能力,而且还很快…… 不会错…… 可是终究不是天才,我要花很多时间来完成简单的事情,太可惜了(虽然一般来说天才是极少的)
而且这样的话我就可以更快地开始学信号处理和机器学习了,这两者对数学能力有要求,所以还不是很熟悉。
#life #China #recommended
在《第一时间》杂志上看到一个无线通讯的天才少年,推荐过来
申怡飞 (文)
当然,其实关于这个『天才』是不是一定要『少年』呢…… 其实一般个人会有个人的看法
国家之前特别弄过『少年班』的,可是发现这样出产低,而且会浪费一些不是极端优秀但很不错的人,出产的天才少年也未必比其他天才好很多
这个人是独立弄的,所以的确是从小就天才。
当然,现在揠苗助长的事情实际上还有一些,比如那个考上大专(通过高考)的十岁女孩……
按照这位父亲的看法,中国的教育肯定辱没了很多『天才少年』
可是刻意要生造出那么多天才少年干什么呢……
我个人非常想当一个天才,因为天才意味着…… 我不仅有很强大的计算和抽象、组织能力,而且还很快…… 不会错…… 可是终究不是天才,我要花很多时间来完成简单的事情,太可惜了(虽然一般来说天才是极少的)
而且这样的话我就可以更快地开始学信号处理和机器学习了,这两者对数学能力有要求,所以还不是很熟悉。
Eet-China
华为百万年薪的天才少年们,都是何方神圣?-电子工程专辑
7月23日,华为公布了8名天才少年的年薪方案,全部为2019届应届顶尖学生,学历均为博士,年薪最低限89.6万元,最高限201万元。此举被业内认为是华为校招开始前的热身,以及针对近期风波的PR行为。其中一位博士生的导师直言:“像(华为)这样,有点太高了,我们都感到很惊奇。”这8位“天才少年”究竟是何方神圣?让我们来挖一挖……
Forwarded from duangsuse Throws
#statement #Qzone
新的 bio !(应该就在 suse 的空间里,下一条)
原 bio 是 「Technical unfamiliar is the root of all evil 菜是万恶之源」
这句话是从《爱丽丝梦游仙境》的对话里提取出来的理念
没头脑的拼死拼活、无目标的吃苦。为何而活?相信至少都是为不想死而活,可是活着要干什么呢?
为了获得别人的称赞、小小的优越感?为了搬家到大城市?
我想先为自己而活,为了别人对我的看法,我活得太累。群众的眼睛也未必是雪亮的,更多是无知和盲从。
偶尔在调试程序的时候,即便连调试器都不会用,想着因为有 bug 而 debug、面向 REPL 编程,越来越觉得我不该死脑筋了
王垠会批判部分 Haskell 程序猿「从不调试程序,因为根本不写 bug」的论调,可我觉得这话就莫名正确,如果不知道自己干了什么,不如退出去好好想想,再做决定,而不是无意义地歇斯底里,最终一事无成。
人们对待失败的做法不同,所以才会存在一败涂地和反败为胜的区别;脑子是好东西,可不是所有人所有时候都能尽可能好地利用它。
有些程序员经常把「不知道自己在干什么」挂在嘴边批评别人,想想也真是句有意思的话吧……
新的 bio !(应该就在 suse 的空间里,下一条)
原 bio 是 「Technical unfamiliar is the root of all evil 菜是万恶之源」
这句话是从《爱丽丝梦游仙境》的对话里提取出来的理念
没头脑的拼死拼活、无目标的吃苦。为何而活?相信至少都是为不想死而活,可是活着要干什么呢?
为了获得别人的称赞、小小的优越感?为了搬家到大城市?
我想先为自己而活,为了别人对我的看法,我活得太累。群众的眼睛也未必是雪亮的,更多是无知和盲从。
偶尔在调试程序的时候,即便连调试器都不会用,想着因为有 bug 而 debug、面向 REPL 编程,越来越觉得我不该死脑筋了
王垠会批判部分 Haskell 程序猿「从不调试程序,因为根本不写 bug」的论调,可我觉得这话就莫名正确,如果不知道自己干了什么,不如退出去好好想想,再做决定,而不是无意义地歇斯底里,最终一事无成。
人们对待失败的做法不同,所以才会存在一败涂地和反败为胜的区别;脑子是好东西,可不是所有人所有时候都能尽可能好地利用它。
有些程序员经常把「不知道自己在干什么」挂在嘴边批评别人,想想也真是句有意思的话吧……