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...
Forwarded from 芝士和培根
Gityuan
Gityuan博客 | 袁辉辉的技术博客
袁辉辉, Gityuan, Android博客, Android源码, Flutter博客,Flutter源码
Forwarded from Rachel 碎碎念 (Rachel Miracle.)
Telegram
IT 那点事
It seems like the system server breaks down...