duangsuse::Echo
非常的难受,但这居然还比 Gradle、CMake 要简单一点?(可能不是
看了一下 IDEA 的 #Java 语言版本提示,我默写一下:
1.3: Plain Old Java (2000)
1.4:
5: Autoboxing,
6:
7: ARM, Diamond, multi-catch (2011)
8: Lambda and Type annotations (2013)
9: Modules,
10: Local variable inference (2018)
11: Local variable syntax for lambda parameters (2018)
没有成功,但是也快了,只是 Java 7 的默写错了,别的有漏的。
啊,提起 Java,这门『垃圾』语言(和 CSharp、Kotlin、Rust 等相比就是垃圾了,差一点没 Julia、R、Fortran 之类的厉害?'跑,,,,),也未必是被大部分人完全理解的呢。
那么我们今天来完全理解一下,自 1995 年从 Oak 更名,1997 年的 Java 1.1 开始,之间提到 2004 年语法糖飞跃的 Java 5,再到最近 2018 年的 Java 11 结束,我们会看到所有的 Java 语法。(其实语法上的已经足够浅层次了,但是即使这样,很多人都能注意到自己没见过的 Java 语法)
当然,定义什么的冗长(好歹 James 老头子也是博士学位啊!)所以得感谢 ANTLR
🤔 #Learn #PL #OOP
1.3: Plain Old Java (2000)
1.4:
assert keyword (2002)5: Autoboxing,
enum, generics (2004)6:
@Override in interfaces (2006)7: ARM, Diamond, multi-catch (2011)
8: Lambda and Type annotations (2013)
9: Modules,
private fields in interfaces (2017)10: Local variable inference (2018)
11: Local variable syntax for lambda parameters (2018)
没有成功,但是也快了,只是 Java 7 的默写错了,别的有漏的。
啊,提起 Java,这门『垃圾』语言(和 CSharp、Kotlin、Rust 等相比就是垃圾了,差一点没 Julia、R、Fortran 之类的厉害?'跑,,,,),也未必是被大部分人完全理解的呢。
那么我们今天来完全理解一下,自 1995 年从 Oak 更名,1997 年的 Java 1.1 开始,之间提到 2004 年语法糖飞跃的 Java 5,再到最近 2018 年的 Java 11 结束,我们会看到所有的 Java 语法。(其实语法上的已经足够浅层次了,但是即使这样,很多人都能注意到自己没见过的 Java 语法)
当然,定义什么的冗长(好歹 James 老头子也是博士学位啊!)所以得感谢 ANTLR
🤔 #Learn #PL #OOP
GitHub
sdklite/aapt
Android Asset Packaging Tool. Contribute to sdklite/aapt development by creating an account on GitHub.
duangsuse::Echo
看了一下 IDEA 的 #Java 语言版本提示,我默写一下: 1.3: Plain Old Java (2000) 1.4: assert keyword (2002) 5: Autoboxing, enum, generics (2004) 6: @Override in interfaces (2006) 7: ARM, Diamond, multi-catch (2011) 8: Lambda and Type annotations (2013) 9: Modules, private fields…
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Forwarded from 羽毛的小白板
不是一个人(这个真的是极品!)。不是一个人,实际上很多工程师都这么做... 讲道理,我觉得他们应该去学学 parser combinator style parsers...
再说,就是 Java 也提供了 XML 解析库啊(Simple Api for Xml)... HTML 的也不难找,至于写爬虫什么的也可以说是必须品,除了一些情况有些人会利用 regex 之外,正规的做法是 dom parser + XPath / CSS Selector. 基本都是这样的,Ruby 的话,创建 HTML 可以用 Builder,解析可以用 Nokogiri.
再说,就是 Java 也提供了 XML 解析库啊(Simple Api for Xml)... HTML 的也不难找,至于写爬虫什么的也可以说是必须品,除了一些情况有些人会利用 regex 之外,正规的做法是 dom parser + XPath / CSS Selector. 基本都是这样的,Ruby 的话,创建 HTML 可以用 Builder,解析可以用 Nokogiri.
GitHub
bangarharshit/Gradle-Layout-Formatter
Gradle plugin for formatting android layout files. Contribute to bangarharshit/Gradle-Layout-Formatter development by creating an account on GitHub.
This media is not supported in your browser
VIEW IN TELEGRAM
我思量着他们写出那么多看起来高大上的代码为什么会不会写解析器.... 很困难么?
大概是应用层的东西做多了,我看到
看看复杂的控制结构,结果发现其实是不良实践... 我觉得我就是想分析得太深了,不需要测试数据就根据程序乱猜?
大概是应用层的东西做多了,我看到
++n、Integer.MAX_VALUE 这种代码和一些 Provider 模式都开始觉得高大上...看看复杂的控制结构,结果发现其实是不良实践... 我觉得我就是想分析得太深了,不需要测试数据就根据程序乱猜?
https://github.com/by-syk/SP
🤔 现在想起来,其实如果能进行快速的工程的话,就可以写出很多这种封装库。
可惜只有下周了,这周还有 BinaryStreamIO 和 SimpleCat
🤔 现在想起来,其实如果能进行快速的工程的话,就可以写出很多这种封装库。
可惜只有下周了,这周还有 BinaryStreamIO 和 SimpleCat
SharedPreferences sharedPreferences = context.getSharedPreferences(context这是 Android 的 SharePreference 裸 API
.getPackageName(), Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("user", "By_syk");
editor.apply();
SP sp = new SP(context);如果使用 SharedPreferenceProxy,你可以在 Android 上用面向接口编程,节省自己的时间:
// Create and Update
sp.save("user", "By_syk");
sp.put("num", 5)
.put("valid", true)
.save();
// Read
String user = sp.getString("user");
// Delete
sp.delete("user");
sp.remove("num")
.remove("valid")
.save();
@AndroidPreference(private = true, name = USE_PACKAGE_NAME, naming = NamingStrategy.SNACK_CASED)
interface ApplicationPreference {
String getUser();
void setUser(String value);
PreferenceTransactionBuilder user(String newValue);
}
然后PreferenceProxy cfg = new PreferenceProxy(ApplicationPreference.class);
接着就可以:// Create (map like)
cfg.put("name", "value object");
cfg
.make("name1", "value1")
.commit();
cfg
.update("name1", "value2")
.commit();
// Update
cfg.setUser("duangsuse");
// Read
cfg.getUser(); //=> "duangsuse"
cfg.get("user"); //=> "duangsuse"
// Delete
cfg.delete("user");
cfg
.purge("user")
.commit();GitHub
by-syk/SP
Using android.content.SharedPreferences simply. Contribute to by-syk/SP development by creating an account on GitHub.
duangsuse::Echo
https://github.com/by-syk/SP 🤔 现在想起来,其实如果能进行快速的工程的话,就可以写出很多这种封装库。 可惜只有下周了,这周还有 BinaryStreamIO 和 SimpleCat SharedPreferences sharedPreferences = context.getSharedPreferences(context .getPackageName(), Context.MODE_PRIVATE); SharedPreferences.Editor editor…
GitHub
duangsuse-valid-projects/telegramscanner
Telegram Message stream scanner java library. Contribute to duangsuse-valid-projects/telegramscanner development by creating an account on GitHub.
duangsuse::Echo
https://github.com/by-syk/SP 🤔 现在想起来,其实如果能进行快速的工程的话,就可以写出很多这种封装库。 可惜只有下周了,这周还有 BinaryStreamIO 和 SimpleCat SharedPreferences sharedPreferences = context.getSharedPreferences(context .getPackageName(), Context.MODE_PRIVATE); SharedPreferences.Editor editor…
总的来说,PreferencePrxoy 要有以下方法(类似,因为要有特殊类型的重载):
== Read
不打算提供其他的函数式接口,存储方式可能是 Java serializable
== Read
PreferencePrxoy#get(String):Any== Create
PreferencePrxoy#contains(String):Boolean
PreferenceTransactionBuilder#make(String, Any):PreferenceTransactionBuilder== Update
PreferenceTransactionBuilder#ensure(String, Any):PreferenceTransactionBuilder
PreferenceProxy#set(String, Any):Unit== Delete
PreferenceTransactionBuilder#update(String, Any):PreferenceTransactionBuilder
PreferenceProxy#put(String, Any):PreferenceProxy
PreferenceTransactionBuilder#purge(String):Unit
PreferenceProxy#delete(String):Any
PreferenceProxy#remove(String):PreferenceProxy
PreferenceProxy#destroy():Unit
最后,它要识别 interface 里的 Getter、Setter、Transaction interface,并且检查附属的 annotation(对于整个 Preference,要指定名称和可见性以及属性命名方式,对于字段可能要指定自己的属性名、存储方式)不打算提供其他的函数式接口,存储方式可能是 Java serializable
ObjectOutputStream + Base64 或者 JSON
为了使得库接口更加可移植,使用的 Preference 必须只是一个接口(能完成提供 API 的),实际实现使用 Delegate,这样可以兼容更多的底层存储系统Forwarded from Rachel 碎碎念 (Rachel Miracle.)
Telegram
IT 那点事
It seems like the system server breaks down...