duangsuse::Echo
#Ruby Dir.glob('.*').let { |fs| fs.zip(fs.map { |name| name.gsub(//){$1} }).each { |c| o,n=c; File.rename(o, n) } }
def bulkRename(re_src = /.*/, re_ext, fmt_dst)
src = Dir.glob(re_src)
new_names = src.map { |name| name.gsub(re_dst, fmt_dst) }
for old, new in src.zip(new_names)
File.rename(old, new)
end
end#bulk.rb
def bulkRename(re_src, pat_dst, fmt_dst)
re_dst = Regexp.new(pat_dst)
selected = Dir.glob(re_src)
for name in selected
newnam = name.gsub(re_dst, fmt_dst)
puts("mv #{name} #{newnam}")
File.rename(name, newnam)
end
end
case ARGV.size # Just br size is OK
when 0 then warn("Usage: #{$0} [select] re_dst fmt_dst")
when 1 then puts(Dir.glob($*[0]))
when 2 then bulkRename('*', $*[0], $*[1])
when 3 then bulkRename($*[0], $*[1], $*[2])
end
#move_back.rb
for ln in $<.each_line do
next unless ln.start_with?('mv')
_mv, src, dst = ln.split
puts("mv #{dst} #{src}")
end
duangsuse::Echo
#bulk.rb def bulkRename(re_src, pat_dst, fmt_dst) re_dst = Regexp.new(pat_dst) selected = Dir.glob(re_src) for name in selected newnam = name.gsub(re_dst, fmt_dst) puts("mv #{name} #{newnam}") File.rename(name, newnam) end end case…
用例:重命名所有 .py 文件为 .txt 文件$ ruby bulk.rb '*.py' '^(.*).py$' '\1.txt'
mv a.py a.txt重命名所有非
.rb 文件的文件为 .txt 文件好像写不出这个后行否断言……
ruby s.rb '(.*)?!\.rb' '\1.txt'而且,说不定是 re 不能自动设置某项的结束字符,我也没办法
用例:利用记录反向移动
$ ruby move_back.rb
mv a.py a.txt
mv a.txt a.py是的,最近我们学校也在举行高考报名,需要身份证、户口簿(首页,包含学生的那一页)的原件、复印件和 300 多块人民币 #school
Forwarded from Rachel 碎碎念 (IFTTT)
高考报名太精彩了
有小学读了六年不记得班主任的
有「初级中学」写成「初级中」的
有高中班主任名字三个字打错俩的
还有「职务」一栏填成「教师」的…— Rachel Mirai. (@tangrui003) November 14, 2019
有小学读了六年不记得班主任的
有「初级中学」写成「初级中」的
有高中班主任名字三个字打错俩的
还有「职务」一栏填成「教师」的…— Rachel Mirai. (@tangrui003) November 14, 2019
Twitter
Rachel Mirai.
高考报名太精彩了 有小学读了六年不记得班主任的 有「初级中学」写成「初级中」的 有高中班主任名字三个字打错俩的 还有「职务」一栏填成「教师」的…
This media is not supported in your browser
VIEW IN TELEGRAM
duangsuse::Echo
😊 Sticker
duangsuse::Echo
慢慢来吧,先写 RangeMap 算…… 🤔
辣鸡 Java 的
我 TM 都看不清哪些是我该 override 的了
default in interfaces (mixin) 真是辣鸡,辣眼睛。我 TM 都看不清哪些是我该 override 的了
辣鸡 Java 的 stdlib 实在是太愚蠢了,尽写一些无关紧要的接口定义,本来可以划分的它偏放在一起
duangsuse::Echo
而且,居然是 unchecked!真不知道是不是没提供新的,基于 Parametrized types 的版本
因为 Java 没有真实泛型,都是基于泛型擦除的 compile-time only 实现,害得我都不得不 unchecked cast 了,气死我了
比方说它非得弄个 get(Object) 的 API,虽然擦除后 get(K), get(Object) 都是 get(Object),我 TM…… 还得被,而且,我拿不到 reified 的类 Class<T>,不可能自然也不应该运行时检查类型
Java 辣鸡!!!
比方说它非得弄个 get(Object) 的 API,虽然擦除后 get(K), get(Object) 都是 get(Object),我 TM…… 还得被,而且,我拿不到 reified 的类 Class<T>,不可能自然也不应该运行时检查类型
Java 辣鸡!!!
我们怎么能这样批评 Java 呢,Java 君活得那么努力,努力到写了 90% 都是 boilerplate,我还以为我在做什么不得了的事情,以至于花了很长时间。
其实都是 🌬!emmmm
其实都是 🌬!emmmm
我还以为我 100+ 行写了什么不得了的东西,其实他们要测试,你知道为什么要测试吗?因为一大堆全都是无聊的代码!
为什么一些无聊的东西还需要测试?因为人的精力是有限的,无聊的东西看多了,有用的东西就容易写错!!!
为什么一些无聊的东西还需要测试?因为人的精力是有限的,无聊的东西看多了,有用的东西就容易写错!!!
但是不管写多长都 1.2K 的体积很令我满意,当然我知道,缩减体积不是程序员该做的事情,可是我就是讨厌 Kotlin 过了一遍 Proguard 还是 50K+ 的类文件大小……
反正 Java 还可以翻译到 Kotlin 的
反正 Java 还可以翻译到 Kotlin 的
同样的代码,Haskell 里就是
Kotlin 里也不困难
可是 Java 里要写十几行,我 (TMD) 快写疯了!
{-# LANGUAGE GADTs #-}
data Ray t a = (Ord t) => Shadow t a | (Ord t) => White t Kotlin 里也不困难
sealed class Ray<out T: Comparable<T>, out V> {
data class White<T>(val c: T): Ray<T, *>
data class Shadow<T, V>(val c: T, val x: V): Ray<T, V>
} 可是 Java 里要写十几行,我 (TMD) 快写疯了!
写了半天这类无聊的东西,那个至关重要的二分查找我都快忘记了 💭
而且因为他们很多,还得写不少测试
我终于明白为什么 Java 都是『大项目』了
而且因为他们很多,还得写不少测试
我终于明白为什么 Java 都是『大项目』了