#archlinux #linux #sysadmin https://github.com/Trumeet/GPartArch
其实我不会 sed,不太会写 bash 脚本(当然如果我要重写,这里不需要我会写任何东西,因为都是 mkarchiso 项目提供的可能
我也没有用过 mkarchiso
我也不是很了解 Linux 的 isolinux, syslinux 引导加载机制,也不清楚 ramfs 和 initcpio 那些东西...
pacman 我用过,我曾经是 Archlinux 的用户,不过说到完全理解也未必,但基本的依赖关系、AUR、Package Group、Signature、Repository、Mirrors 什么的和 native 层动态链接什么的也都还清楚,不清楚也可以看 ArchWiki
不过说到定制版 LiveCD,我的确做过一个,并且在学校使用过,那时候是在一个老 x86 台式机上 Linux Mint + Remastersys 做的,当时加了不少软件,可惜当时我啥都不懂...
不过也很好用就是了
其实我不会 sed,不太会写 bash 脚本(当然如果我要重写,这里不需要我会写任何东西,因为都是 mkarchiso 项目提供的可能
我也没有用过 mkarchiso
我也不是很了解 Linux 的 isolinux, syslinux 引导加载机制,也不清楚 ramfs 和 initcpio 那些东西...
pacman 我用过,我曾经是 Archlinux 的用户,不过说到完全理解也未必,但基本的依赖关系、AUR、Package Group、Signature、Repository、Mirrors 什么的和 native 层动态链接什么的也都还清楚,不清楚也可以看 ArchWiki
不过说到定制版 LiveCD,我的确做过一个,并且在学校使用过,那时候是在一个老 x86 台式机上 Linux Mint + Remastersys 做的,当时加了不少软件,可惜当时我啥都不懂...
不过也很好用就是了
GitHub
Trumeet/GPartArch
An custom arch iso with GParted + Xorg to help you manage disk easily - Trumeet/GPartArch
duangsuse::Echo
#archlinux #linux #sysadmin https://github.com/Trumeet/GPartArch 其实我不会 sed,不太会写 bash 脚本(当然如果我要重写,这里不需要我会写任何东西,因为都是 mkarchiso 项目提供的可能 我也没有用过 mkarchiso 我也不是很了解 Linux 的 isolinux, syslinux 引导加载机制,也不清楚 ramfs 和 initcpio 那些东西... pacman 我用过,我曾经是 Archlinux 的用户…
不管怎么样,看起来,对于一个 Unix 系系统管理员来说,维护自己的发行版可能是最大佬的程度了...
还得自己再去写类似 Pacman, Portage 这种工具... 还要管理自己的根目录架构和软件包结构... 还有系统的定制化,systemd、引导加载、发布 LiveCD iso...
还得自己再去写类似 Pacman, Portage 这种工具... 还要管理自己的根目录架构和软件包结构... 还有系统的定制化,systemd、引导加载、发布 LiveCD iso...
duangsuse::Echo
#archlinux #linux #sysadmin https://github.com/Trumeet/GPartArch 其实我不会 sed,不太会写 bash 脚本(当然如果我要重写,这里不需要我会写任何东西,因为都是 mkarchiso 项目提供的可能 我也没有用过 mkarchiso 我也不是很了解 Linux 的 isolinux, syslinux 引导加载机制,也不清楚 ramfs 和 initcpio 那些东西... pacman 我用过,我曾经是 Archlinux 的用户…
#sysadmin 🤔 那我先默写下 这个
说起来,我写的第一个真正意义上的程序其实就是 Bash 写的...
说起来,我写的第一个真正意义上的程序其实就是 Bash 写的...
do_install() { printf "Installing... \t"; apt install -y imagemagisk bc schedtools ccache }
check_do_install() {
printf "Docker tag: " $DOCKER_TAG
if [ $DOCKER_TAG = "extra-latest" ]
then; do_install
else; printf "Skipping...\n"; fi
}
main() {
if [ $1 = "auto" ]
then; check_do_install
else; do_install
fi
}
main $*GitHub
Trumeet/AOSP-Build-Environment-Docker
A docker image to provide a systemless AOSP build environment - Trumeet/AOSP-Build-Environment-Docker
#Android 希望入门了解 Android 的服务接口什么的架构呢,以后有希望的话,我要重写这些:
+ https://github.com/Trumeet/WorkMode
+ https://github.com/Trumeet/SysUIController/tree/master/app/src/main/java/moe/yuuta/sysuicontroller
虽然我平时作为后端也是会涉及到二进制流处理的... 但是看起来 AIDL 和 Paracelabel 也是值得学的,可是我之前是 Intents 都不是特别了解,现在知道了.,..
+ https://github.com/Trumeet/WorkMode
+ https://github.com/Trumeet/SysUIController/tree/master/app/src/main/java/moe/yuuta/sysuicontroller
虽然我平时作为后端也是会涉及到二进制流处理的... 但是看起来 AIDL 和 Paracelabel 也是值得学的,可是我之前是 Intents 都不是特别了解,现在知道了.,..
GitHub
Trumeet/WorkMode
[ROOT needed] Enjoy your work and disable disturbing apps - Trumeet/WorkMode
Forwarded from METO 的涂鸦板
⛰ 具有自主知识产权的 .meto 域名上线
目前还在筹集 (piàn) 资金 (qián),开放了一个 demo 页以便公众进行体验(疯狂狗头
https://tld.i-meto.com/help.html
https://t.me/metooooo/1727
目前还在筹集 (piàn) 资金 (qián),开放了一个 demo 页以便公众进行体验(疯狂狗头
https://tld.i-meto.com/help.html
https://t.me/metooooo/1727
METO 的涂鸦板
⛰ 具有自主知识产权的 .meto 域名上线 目前还在筹集 (piàn) 资金 (qián),开放了一个 demo 页以便公众进行体验(疯狂狗头 https://tld.i-meto.com/help.html https://t.me/metooooo/1727
#html #frontend duangsuse 想顺便学习一下 HTML/CSS 🤔
然后 CSS:
selector {, selector} '{' { rules } '}'
其中使用了 .class CSS 类 selector 和 tagName selector, 以及 nesting selector
Rules 就是 rule 们
key: value ['!' important];
value 可能是 string 或者 enum 或者 array 或者 int 或者 percentage 或者 color 或者 dimen
使用了这些 CSS property:
然后是 align
<html>刚才居然连 charset 都忘记指定了...
<head>
<meta charset="utf8" />
<title>Title</title>
<link rel="stylesheet" href="main.css" />
<style src=""></style>
</head>
<body>
<div class="container">
<h1>Title 1</h1>
<h1><pre>Code</pre></h1>
<h2 class="green" onclick="document.location=....">» Enter «</h1>
<a style="color: green" href="...">» Enter «</a>
</div>
</body>
</html>
然后 CSS:
selector {, selector} '{' { rules } '}'
其中使用了 .class CSS 类 selector 和 tagName selector, 以及 nesting selector
Rules 就是 rule 们
key: value ['!' important];
value 可能是 string 或者 enum 或者 array 或者 int 或者 percentage 或者 color 或者 dimen
使用了这些 CSS property:
width: percentage这是盒模型布局基础,padding 和 margin 也可以加 '-' start | end | top | bottom
height: percentage
padding: dimen
margin: dimen
display: enum在 body {...} 里取值 table,这是盒模型渲染模式
color: color然后是 font 调整
font-weight: intfont-family 是正序排列可选的 fallback font name array
font-size: dimen
font-family: array
然后是 align
text-align: enum对齐
vertical-align: enum
text-decoration: enumborder
white-space: enum
border-radius: dimen看几个有意义的 rule
background: drawable
pre, code {
border-radius: 15px;
background: rgba(0,0,0, 0.05);
color: #FFFFFFAF;
padding: 15px;
white-space: pre-wrap;
}
.content a { text-decoration: none; }
body { display: table; }
.container { display: table-cell; vertical-align: center; text-align: center; }
.content { display: inline-block; text-align: center; font-size: 18px; }
padding 就是 content 和 border 之间的距离,是 dimen。MDN Web Docs
display - CSS | MDN
The display CSS property sets whether an element is treated as a block or inline box and the layout used for its children, such as flow layout, grid or flex.
duangsuse::Echo
#Android 希望入门了解 Android 的服务接口什么的架构呢,以后有希望的话,我要重写这些: + https://github.com/Trumeet/WorkMode + https://github.com/Trumeet/SysUIController/tree/master/app/src/main/java/moe/yuuta/sysuicontroller 虽然我平时作为后端也是会涉及到二进制流处理的... 但是看起来 AIDL 和 Paracelabel 也是值得学的,可是我之前是…
不会用 AIDL 和 Paracelabel,不是很了解 Service、Provider、Intents、Permission 的说,不会 Android 的新 API 也没有用 Android 的 AsyncTask 抽象... 我得先重写了 moe.yuuta.workmode.async 压压惊...
https://github.com/Trumeet/WorkMode/blob/master/app/proguard-rules.pro#L6
这里让 Proguard 删掉了所有
... 不过也未必,要看情况吧... 虽然 Kotlin 自己就有 Any Any? 的空值类型系统,不清楚是不是真的有些内部的空值断言删掉这些或许会出问题,不过这样就等于把 Kotlin 打包成 Java 了
https://github.com/Trumeet/WorkMode/blob/master/app/proguard-rules.pro#L6
这里让 Proguard 删掉了所有
checkXXXXIsNotNull 检查,我多少有点疑惑是不是真的没问题... 但想想如果不暴露 API 给 Java(比如 internal 的东西),其实纯 Kotlin + Android 的话本来就应该考虑到移除内部检查的?... 不过也未必,要看情况吧... 虽然 Kotlin 自己就有 Any Any? 的空值类型系统,不清楚是不是真的有些内部的空值断言删掉这些或许会出问题,不过这样就等于把 Kotlin 打包成 Java 了
GitHub
Trumeet/WorkMode
[ROOT needed] Enjoy your work and disable disturbing apps - Trumeet/WorkMode
https://github.com/Trumeet/WorkMode/blob/master/app/build.gradle#L39
Android 的 Gradle 插件我基本会用的,可是 Signing Config 我却不是很清楚...
一个签名 config 是这样的
Java 的 Keystore 就是这样的 (jks)
一个 keyStore 里有很多 Key,store 本身要 pass 才能打开,每个 Key 又有自己的 password 才能用来签名什么的
Android 的 Gradle 插件我基本会用的,可是 Signing Config 我却不是很清楚...
一个签名 config 是这样的
signingConfigs {
name {
storeFile file
storePassword pass
keyAlias alias
keyPassword pk
v2SigningEnabled enabled
}
}
想想也就是这样... 之前一直记不住的说,v2 Signing 的意思是之前 Android 的 v1 包 signature 有漏洞,后来更新了Java 的 Keystore 就是这样的 (jks)
一个 keyStore 里有很多 Key,store 本身要 pass 才能打开,每个 Key 又有自己的 password 才能用来签名什么的
GitHub
Trumeet/WorkMode
[ROOT needed] Enjoy your work and disable disturbing apps - Trumeet/WorkMode
duangsuse::Echo
不会用 AIDL 和 Paracelabel,不是很了解 Service、Provider、Intents、Permission 的说,不会 Android 的新 API 也没有用 Android 的 AsyncTask 抽象... 我得先重写了 moe.yuuta.workmode.async 压压惊... https://github.com/Trumeet/WorkMode/blob/master/app/proguard-rules.pro#L6 这里让 Proguard 删掉了所有 checkXXXXIsNotNull…
之前已经知道了 Android config 里面的 packageId (其实是 applicationId...), versionCode, versionName, minSdkVersion, targetSdkVersion, androidTestInstrumentationRunner, compileSdkVersion 什么的了,现在见到了 buildConfigField 也会用了,所以好多了...
之前不是很清楚 Java 的 Properties,然后看过了用法后清楚了(无论是 Loader 还是 ResourceBundle)...
然后 IO Stream 本来就是我之前学过的东西
Android lint 和 Gradle sourceSets 我之前都知道,compileOptions 是 Java 项目也会有的,有时候我显式指定
proguard 显然不是什么使用起来很困难的东西... 记住所谓的 pro 文件是 Proguard resp 自动响应命令行文件就好啦,然后 -ccasedoption C Cased options 指定一些 DSL 规则
关于混淆的就是 (methodId) -obfuscationdictionary (package) -packageobfuscationdictionary (class) -classobfuscationdictionary
之前不是很清楚 Java 的 Properties,然后看过了用法后清楚了(无论是 Loader 还是 ResourceBundle)...
然后 IO Stream 本来就是我之前学过的东西
Android lint 和 Gradle sourceSets 我之前都知道,compileOptions 是 Java 项目也会有的,有时候我显式指定
proguard 显然不是什么使用起来很困难的东西... 记住所谓的 pro 文件是 Proguard resp 自动响应命令行文件就好啦,然后 -ccasedoption C Cased options 指定一些 DSL 规则
关于混淆的就是 (methodId) -obfuscationdictionary (package) -packageobfuscationdictionary (class) -classobfuscationdictionary
duangsuse::Echo
之前已经知道了 Android config 里面的 packageId (其实是 applicationId...), versionCode, versionName, minSdkVersion, targetSdkVersion, androidTestInstrumentationRunner, compileSdkVersion 什么的了,现在见到了 buildConfigField 也会用了,所以好多了... 之前不是很清楚 Java 的 Properties,然后看过了用法后清楚了(无论是…
This media is not supported in your browser
VIEW IN TELEGRAM
直到有一天,无论是所谓的简单还是复杂对我来说都再也不能花费我的大量精力来学习...
无论是所谓的后端还是前端工作都无法难住我了就好了呢。
异步、IPC、服务、数据库、用户界面、用户界面动画、计算机图形学、应用程序资源算什么....
好的程序员要有能力既做皇帝又做农民呢。
既要有能力彻底理解别人的抽象,又要能下到实地实现自己的算法,看起来才像是正常人呢。
无论是所谓的后端还是前端工作都无法难住我了就好了呢。
异步、IPC、服务、数据库、用户界面、用户界面动画、计算机图形学、应用程序资源算什么....
好的程序员要有能力既做皇帝又做农民呢。
既要有能力彻底理解别人的抽象,又要能下到实地实现自己的算法,看起来才像是正常人呢。
duangsuse::Echo
之前已经知道了 Android config 里面的 packageId (其实是 applicationId...), versionCode, versionName, minSdkVersion, targetSdkVersion, androidTestInstrumentationRunner, compileSdkVersion 什么的了,现在见到了 buildConfigField 也会用了,所以好多了... 之前不是很清楚 Java 的 Properties,然后看过了用法后清楚了(无论是…
刚才看了一下 android resource
复习了一下类型:
color
drawable
mipmap
menu
layout
values
string
dimen
style
colors
attr
xml
🤔...
复习了一下类型:
color
drawable
mipmap
menu
layout
values
string
dimen
style
colors
attr
xml
🤔...
duangsuse::Echo
#Haskell duangsuse 日常 Haskell.... 🤔...
只要 duangsuse 开始写应用们,应用层的东西就不应该可以阻挡 duangsuse 学习,成为『技术难关』
越复杂越容易堆砌,即便是使用了大量的 API 也一样,我要记住他们... 总有一天我要以非堆砌的方法,深刻明白自己在写什么的状态以快的速度完成更多应用程序
对于 duangsuse 来说,我要记住所有操作... 看到数据流们通过后发生了什么,有着怎样的变化,通过小段程序看到抽象和直觉... 这样才最好...
越复杂越容易堆砌,即便是使用了大量的 API 也一样,我要记住他们... 总有一天我要以非堆砌的方法,深刻明白自己在写什么的状态以快的速度完成更多应用程序
对于 duangsuse 来说,我要记住所有操作... 看到数据流们通过后发生了什么,有着怎样的变化,通过小段程序看到抽象和直觉... 这样才最好...
duangsuse::Echo
之前已经知道了 Android config 里面的 packageId (其实是 applicationId...), versionCode, versionName, minSdkVersion, targetSdkVersion, androidTestInstrumentationRunner, compileSdkVersion 什么的了,现在见到了 buildConfigField 也会用了,所以好多了... 之前不是很清楚 Java 的 Properties,然后看过了用法后清楚了(无论是…
刚才看了一下 Paracel 的操作,目前对 Paracel 的直觉就是 Shared memory stream,或者说 SharedArrayBuffer?
Paracel android.os.Paracel.obtain()
然后有
Paracel android.os.Paracel.obtain()
然后有
void setDataPosition(Int)
void writeT(T)
T readT()
unmarshall(T, position: Int, size: Int)
marshall()
void recycle()https://github.com/Trumeet/WorkMode/tree/master/app/src/main/java/moe/yuuta/workmode
最后总结一下我要开始默写那个包了...
UI 和相关操作逻辑:
suspend: 状态栏 suspend Tile
root package: 应用程序活动
widget: 辅助 UI 控件
update: 自动更新提示
抽象:
access: Android 系统包启用禁用 API 的访问封装,Service
async: AsyncTask 封装
辅助:
utils
最后总结一下我要开始默写那个包了...
UI 和相关操作逻辑:
suspend: 状态栏 suspend Tile
root package: 应用程序活动
widget: 辅助 UI 控件
update: 自动更新提示
抽象:
access: Android 系统包启用禁用 API 的访问封装,Service
async: AsyncTask 封装
辅助:
utils
GitHub
Trumeet/WorkMode
[ROOT needed] Enjoy your work and disable disturbing apps - Trumeet/WorkMode
duangsuse::Echo
https://github.com/Trumeet/WorkMode/tree/master/app/src/main/java/moe/yuuta/workmode 最后总结一下我要开始默写那个包了... UI 和相关操作逻辑: suspend: 状态栏 suspend Tile root package: 应用程序活动 widget: 辅助 UI 控件 update: 自动更新提示 抽象: access: Android 系统包启用禁用 API 的访问封装,Service async: AsyncTask…
这个包包含:
可以随时 cancel 也可以类似 Promise 地在完成后添加逻辑处理异步结果
当然也可以理解为一个只有 Callback (TaskResult) 的 Promise,没有 resolve 和 reject,只有 then 没有 catch,反正就是类似 Promise 的东西
object Async {
fun <T> beginTask(runnable: Runnable<T>, callback: Callback<T>): Stoppable
}
interface Runnable<T> {
fun run(): T?
}
data class TaskResult<T>(
val successful: Boolean,
val result: T?,
val e: Throwable?
)
interface Callback<T> {
fun onStart() {}
fun onStop(success: Boolean, result: T?, e: Throwable?) {}
}
interface Stoppable {
fun stop()
fun isStopped(): Boolean
}
class StoppableGroup : Stoppable {
override fun stop()
override fun isStopped(): Boolean
fun add(Stoppable)
fun remove(Stoppable)
}
其实 C# FCL 里也有类似的东西,就是一个 Cancelable and Thenable Task可以随时 cancel 也可以类似 Promise 地在完成后添加逻辑处理异步结果
当然也可以理解为一个只有 Callback (TaskResult) 的 Promise,没有 resolve 和 reject,只有 then 没有 catch,反正就是类似 Promise 的东西