搭建为知笔记Docker版,以及注意事项

好久没有关注为知笔记了,最近考虑迁移笔记的时候,看了一下各大笔记应用,开源笔记要么不支持全平台,要么客户端完善度或者同步问题不行。突然发现为知笔记支持docker版,可以自己部署,客户端还是使用官方客户端。 安装docker docker version > /dev/null || curl -fsSL get.docker.com | bash service docker restart 启动为知笔记docker 创建文件夹,跟官方保持一致,我们也在主目录创建文件 cd ~ mkdir wizdata 启动,如果你打算使用nginx,或者配置ssl,则需要把端口调整一下。比如我的6789 docker run --name wiz --restart=always -it -d -v ~/wizdata:/wiz/storage -v /etc/localtime:/etc/localtime -p 80:80 -p 9269:9269/udp wiznote/wizserver 接下来会自动下载并运行,喝杯咖啡,等一下就可以了。 或者,可以在这个时候配置Nginx 配置Nginx 开启SSL ssl_certificate XXX/fullchain.pem; #你的证书地址 ssl_certificate_key XXX/privkey.pem; #你的证书地址 ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5:!EXP; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; error_page 497 https://$host$request_uri; OK 配置完成之后,打开你的域名,或者你的IP:端口,比如 http://127.0.0.1:6789 ,默认管理员账号:admin@wiz.cn,密码:123456 配置云存储 默认笔记是保存在本地的,你可以使用本地+云同步的方式,或者像我一样直接使用云储存, 配置阿里OSS...

三月 13, 2020 · 1 分钟 · LengYue

android 10 [API 29]适配指南

Android 11[API 30]已经发布正式版,来看看全新的 android 11 [api 30] 适配指南 非SDK接口 google 针对非SDK接口的限制 非SDK接口检测工具 官方给出了一个检测工具,下载地址:veridex veridex使用方法: appcompat.sh --dex-file=apk.apk blacklist、greylist、greylist-max-o、greylist-max-p含义 以上截图中,blacklist、greylist、greylist-max-o、greylist-max-p含义如下: blacklist 黑名单:禁止使用的非SDK接口,运行时直接Crash(因此必须解决) greylist 灰名单:即当前版本仍能使用的非SDK接口,但在下一版本中可能变成被限制的非SDK接口 greylist-max-o: 在targetSDK<=O中能使用,但是在targetSDK>=P中被禁止使用的非SDK接口 greylist-max-p: 在targetSDK<=P中能使用,但是在targetSDK>=Q中被禁止使用的非SDK接口 设备ID 从Android 10开始已经无法完全标识一个设备,曾经用mac地址、IMEI等设备信息标识设备的方法,从Android 10开始统统失效。而且无论你的APP是否是配过Android 10。 IMEI等设备信息 从Android10开始普通应用不再允许请求权限android.permission.READ_PHONE_STATE。而且,无论你的App是否适配过Android Q(既targetSdkVersion是否大于等于29),均无法再获取到设备IMEI等设备信息。 受影响的API Build.getSerial(); TelephonyManager.getImei(); TelephonyManager.getMeid(); TelephonyManager.getDeviceId(); TelephonyManager.getSubscriberId(); TelephonyManager.getSimSerialNumber(); targetSdkVersion<29 的应用,其在获取设备ID时,会直接返回null targetSdkVersion>=29 的应用,其在获取设备ID时,会直接跑出异常SecurityException 如果您的App希望在Android 10以下的设备中仍然获取设备IMEI等信息,可按以下方式进行适配: <uses-permission android:name="android.permission.READ_PHONE_STATE" android:maxSdkVersion="28" /> Mac地址随机分配 从Android10开始,默认情况下,在搭载 Android 10 或更高版本的设备上,系统会传输随机分配的 MAC 地址。(既从Android 10开始,普通应用已经无法获取设备的真正mac地址,标识设备已经无法使用mac地址) 唯一ID的替代 Google给出的解决方案是:如果您的应用有 追踪非登录用户重装 的需求,可用ANDROID_ID来标识设备。 ANDROID_ID的生成规则为:签名+设备信息+设备用户 ANDROID_ID重置规则:设备恢复出厂设置时,ANDROID_ID将被重置 String androidId = Settings....

十二月 9, 2019 · 1 分钟 · LengYue

怎么评价三毛和她的书

台湾作家白先勇说,他是当年第一个发现三毛文学天赋的人。所谓当年,指的是1961年,那时他主编文学刊物《现代文学》,有个朋友给他带了篇三毛的文章《惑》。他看故事生动,文字漂亮,稍做改动后发在《现代文学》上。 《惑》发表后,三毛抱着一本《现代文学》一路狂奔回家,躲在屋里激动地泪流满面。这年她正十八,以此为分水岭,写作生涯正式开始。 客观来说,三毛有一定的文学天赋,也算纸落云烟,落落才女。但就像历代民窑的瓷器,虽然也还出彩,但毕竟还没到稀世的地步,比起白先勇这样的文学大家,还差着0.8个张爱玲。 很多年以后,张颐武说:三毛的主要成就不在文学,而在生活方式。 这也解释了为什么三毛在文学成就上平淡无奇,但仍然成为中国人气最高的女作家之一。 三毛卖得最好的书是《撒哈拉的故事》,这本书畅销三十余年,每年在中国的销量,大于或等于全国文青的数量。在亚马逊的销量榜,它始终霸占着前五十名,压得白先勇的《台北人》和张爱玲的《金锁记》永世不得翻身。 在这本书还没诞生的时候,中国民间四大爱情故事,分别是牛郎织女、孟姜女哭长城、白蛇传、梁山伯与祝英台。但自从有了《撒哈拉的故事》,这种阵列就变成了牛郎织女、白蛇传、梁山伯与祝英台,以及三毛和荷西。 1973年,三毛和荷西在非洲沙漠小镇阿尤恩结婚,并生活了三年。 阿尤恩并不是一个旅游城市,除了沙漠,既没有自然风光,也没有人文古迹。愿意买一万多的机票飞到这里,并逗留超过20小时的中国游客,绝对都是冲着三毛来的。 在定房网站上,阿尤恩有五家酒店可供选择,只有一家是四星级,叫帕拉多尔酒店。它的价格尽管比其他酒店翻几倍,但三毛的粉丝一定会冒着未来整个月吃土的风险,毫不犹豫地下单。就因为这家酒店的前身,是三毛在《撒哈拉的故事》中屡次提到的“西班牙国家旅馆”。 四十多年过去,这里的餐厅布置,还是三毛文章中描写的模样。角落仍放着一架法国RAMEAU三角钢琴,黑色漆面,老旧如冰裂纹。酒店外不远处就是沙漠,几十米高的无垠沙带,在暗夜如成群巨象夜奔。即便你有勇气奔向三毛以前骑骆驼的地方,路口持枪军人铁青的脸,也会立马击碎你一触即溃的流浪情怀。 在阿尤恩以西距西海岸线130公里处,加纳利群岛有着人类能想到的一切美景。那里四季如春,沙丘洁白,海水澄亮。尽管它只是距离西班牙本土1100公里,位于大西洋深处的一群小岛,但每年游客达到1500万,占到西班牙外国游客总数的三分之一。 这1500万人里的中国游客,也基本都是被三毛和荷西的故事忽悠来的。 加纳利群岛中的拉帕尔玛岛,以空气质量闻名世界,天空干净到一尘不染,吸引着世界各地的天文学家都来这里观测星空。 三毛挚爱的荷西,就长眠于此,存年28岁。 在圣克鲁兹市的市政府,荷西的一生言简意赅:出生时间1951年10月9号,已婚。死亡时间1979年9月30日,原因,潜水。 照这个资料算,三毛比荷西大8岁,而在她自己的叙述里,她只大了荷西6岁。果然作家都是天生的谎言家,即便是写日记,都不可能完全忠于事实。 1978年,35岁的三毛接到台湾音乐人李泰祥的邀请,赶写一些歌词。三毛一晚连写九首,李泰祥最中意的,是其中一首《小毛驴》。这首歌词来自于三毛十年前的记忆,那时候她流浪到西班牙,见到许多小毛驴在原野上奔跑,阳光如金粉敷在它们的背上,一切如童话般烂漫。 她在歌词里写道: 为什么流浪/流浪远方 为了了小⽑驴 为了西班⽛的姑娘 为了西班牙的大眼睛 而后,三毛将这首词以五百块的价格卖断。在制作中,李泰祥觉得歌名《小毛驴》太像儿歌,就改成了《橄榄树》,并将写到小毛驴的几句歌词改成了: 为什么流浪/流浪远方 为了天空飞翔的⼩⻦ 为了山间清流的⼩溪 为了宽阔的草原 这个版本,最终呈现在齐豫的专辑《橄榄树》里。三毛听到后,怨冲冲地说了句:如果流浪只是为了看天空飞翔的小鸟和大草原,那就不必去流浪也罢。 心理学的书上讲:当人碰到极大冲击的时候,会把自己的一生从头算起。 三毛一生最大的打击,发生到荷西死去的1979年。那一年她36岁,人生由此从头算起,某种意义上,也像是生命的倒计时。 作家陈若曦曾写过一篇《乔琪》,讲述一个画画的少女最终自杀。他曾偷偷跟白先勇说,我写的其实就是三毛。 三十年后,三毛真的自杀了。 小时候,三毛有一次骑脚踏车掉进一口废井里,双膝跌得能看见骨头,她也不喊疼也不叫救命,就说了句:咦,烂肉裹的一层油原来就是脂肪,好看好看! 中国民间有某种预言的智慧,三岁看大,七岁看老,一个人的命运皆因性格使然。在三毛年轻的时候,就已经有前辈隐约猜到了她的结局。 三毛的一生,基本就在干两件事,受伤,疗伤。她像一只飞鸟,一生喜欢自由翱翔。鸟类里,有一种鸟叫天堂鸟,羽毛极其美丽,它们为了自己的羽毛不被吹乱,都喜欢逆风飞行。三毛就像是这种鸟,为了生命的灿艳,可以不惜逆风的代价。 在传说里,这种鸟只会落地一次,就是它死亡的时候。 荷西喜欢潜水,也死于潜水,像是在完成关于鱼的隐喻。如果要说得寓言一点,三毛和荷西之间,是关于飞鸟和鱼的相爱,诚然传奇,但注定短暂。荷西等了三毛6年,两人在一起也是6年,从相识到分离,仅一个轮回而已。 只是拉帕尔马岛政府的人,从没读懂过三毛和荷西。在巴洛文托海岸,也就是荷西意外死去的地点,他们竖了一块有史以来最难看的纪念碑来纪念三毛。纪念碑由三根钢铁塑成的头发组成,以此象征“三毛”。他们哪怕肯动一点脑子,也该知道对于中国人而言,三毛绝不是拿着三根头发就能象征的作家。 他们还在三根头发下布置了八块大鹅卵石,因为他们听说八在中国是个好数字。但他们没有花点心思去了解,八在中国用得最多的是“八八发”,那只是一个庸俗的求财愿望。这个设计跟三毛连一毛钱关系都没有,他们如此敷衍,只是想利用三毛的故事敛财罢了。 荷西死后,三毛还谈过几场恋爱,大家最熟知的是她和王洛宾的恋情。三毛遇见王洛宾时,王洛宾已经77岁。马尔克斯说,心灵的爱情在腰部以上,肉体的爱情在腰部往下。三毛和王洛宾相差30岁,很明显属于心灵式的爱情,这其实比肉体式的爱情更难。 被爱情冲昏头脑的三毛或许未曾细想,王洛宾尽管才气纵横,但就像是一只隐忍、负重的骆驼。他因政治原因两次入狱,有18年的光阴是在牢狱中度过,待平反时已经是68岁。她的一生是流浪的一生,而王洛宾的一生是禁锢的一生。 在牢狱里,一个从小就被带进监狱的小姑娘,监狱看守给她的一颗蚕豆,她视若珍宝,把它转赠给王洛宾说:这是世界上最好吃的东西。王洛宾的就为了这颗蚕豆泪流不止,那是他在牢狱里仅有的温暖。 这就是王洛宾,他一生的看过的风景、背负的伤痕,与如飞鸟的三毛不同,也与如鱼的荷西不同。他已经老了,没有时间,也没有能量,更没有必要还用余生去赌一场风花雪月。 三毛与王洛宾之间,好像除了他们最喜欢的歌词都被人篡改过,两人再找不到任何相同的地方。 1997年,齐豫发行专辑《骆驼·飞鸟·鱼》,这个名字,像是隐喻了三毛与她人生中最重要的两个男人。 时间退到1991年。三毛离开王洛宾,从新疆回到台北,就像是一条被沥水的毛巾,荷西的永逝抓着这头,王洛宾的疏离抓着那头,两头一起使劲地绞,终于把她的情感绞得一滴不剩。剩下的日子,生亦何欢,死亦何惧。 这年1月4日,三毛身穿白底红花睡衣,用尼龙丝袜上吊而死,现场没有任何遗书。 王洛宾听闻噩耗,大悲大醉,写下一首《等待》: 你曾在橄榄树下等待再等待 我却在遥远的地方徘徊再徘徊 人生本是一场迷藏的梦/且莫对我责怪 为把遗憾赎回来/我也去等待 每当月圆时/对着那橄榄树独自膜拜 三毛的生命,永远定格在了48岁。从此,在那遥远的地方,再没有她这样的姑娘。五年后,王洛宾病逝,享年83岁。 回顾三毛的一生,她13岁开始谈恋爱,一直谈到生命尽头。她不是那种一棵树上吊死的人,即便是荷西死后,她还在马不停蹄地寻找新的爱情。只是一生中可以爱很多人,但心疼的只有一个荷西。 她并不算漂亮,无非性格洒脱一点。她也不是高雅脱俗的女艺术家,每次写稿也十分计较稿费多少,也偶尔小自恋一把,放话说,在台湾,只有三个女人能驾驭波西米亚风的打扮,潘越云、齐豫,还有我。这些其实都没什么特别,三毛之所以是三毛,只是因为她比其他女人活得更热烈,热烈得像六月的太阳,你要靠近她,都会被烘得面皮发烫。 如七堇年说,一般人的感情就像杯酒,来人碰洒了一半,就把杯子扶起,用水兑满,留给第二个人。第二个人又碰洒了,继续扶起,用水兑满,留给第三个人,越往后感情是越淡的。 而我在三毛身上读出的是另一种玩法,三毛的酒,若来人碰洒了一半,她留给第二个人的酒,则以心血重酿,绝不兑水。第二杯再洒了,第三杯酒仍旧重酿,如此往复。她可以忍受伤害,但无法忍受淡薄,她要活就一定活得浓烈到化不开,要么爱,要么死。 如她所说:我自倾杯,君且随意。 据三毛的母亲缪进兰回忆,三毛在医院自杀前对她说:医院里有很多小孩在我床边跳来跳去,有的已长出翅膀来。 她只好哄三毛:也许小天使来守护你了。 三毛当时笑了一声。那一声,缪进兰事后想起来,觉得无比凄凉。 人的一生没有必要做一个绝对的无神论者,我有时也相信宗教里说的,生命的归属处有地狱天堂,命运里有不可抗拒的力量在引领人的灵魂去另一个国度修行。三毛走的时候,应该是上帝派了天使来接她。 在《雨季不再来》中,三毛写道:我今日担着如此的重担,下辈子一样希望拥抱一个血肉模糊的人生。 这像是她提前写好的遗书,鸟儿落地了,该歇息了。 转载自公众号:在下行之 本文采用:BY-NC 协议进行授权,如转载请尊重版权。

十月 29, 2019 · 1 分钟 · LengYue

Glide加载ImageView显示不全的问题(fitxy/centerCrop)

简单记录下,用了一个圆角处理,圆角里面了是centerCrop,设置ImageView控件的fitxy属性,也还是几率性的显示不全! 代码是这样的: GlideApp.with(imageView.getContext()) .load(imgUrl) .apply(new RequestOptions().transform(new CircleCrop()).placeholder(placeHolder).error(placeHolder)) .into(imageView); 然后我又网上查了下,发现有网友这样说: 由于位图尺寸导致问题: 如果Imageview中默认的占位图片大小没有填满Imageview,比如lmageview10080, 但是给Imageview设置占位图片后图片没有占满控件,例如控件被填了8080,那么Glide加载图片的时候,会出现加载图片也是填满8080的情况过一会才恢复正常100*80。 占位的问题?我看了下我自己的占位图片,确实尺寸跟代码设置的控件的尺寸不一样。然后就针对这个情况进行了填充设置 fitCenter GlideApp.with(imageView.getContext()) .setDefaultRequestOptions(new RequestOptions() .centerCrop() .placeholder(placeHolder).error(placeHolder) .fitCenter() ) .load(imgUrl) .apply(new RequestOptions().circleCrop()) .into(imageView);

八月 27, 2019 · 1 分钟 · LengYue

flutter 日常采坑

记录一下用flutter开发过程中遇到的问题,随缘更新~ DropdownButton 去掉分割线 DropdownButton的默认分割线,在自身是没办法取消的。在我怀疑Google硬编码的时候,发现了DropdownButtonHideUnderline,DropdownButton的分割线就是通过DropdownButtonHideUnderline实现的,灵机一动用DropdownButtonHideUnderline包裹DropdownButton同时取消了颜色属性,果然DropdownButton的分割线没有了。 DropdownButtonHideUnderline( child: DropdownButton( iconSize: 0, items: itemList, hint: hit, isExpanded: true, onChanged: change, ), )

四月 30, 2019 · 1 分钟 · LengYue

解决 golang IDEA中不能debug问题

IDEA是2018-01版本,Golang是go-1.12.1,IDEA在Plugins中安裝的Go插件,我在运行go程序時是正常的,但是提示could not launch process: decoding dwarf section info at offset 0x0: too short 解決方案: 1:在终端运行 go get -u github.com/derekparker/delve/cmd/dlv。 2:运行上面的命令之后运行环境中就有dlv了。替换IDEA go 插件中的dlv macOS中的插件地址是:/Users/用户名 /Library/Application Support/IntelliJIdea2018.1/intellij-go/lib/dlv/mac 替换之后就正常了。

三月 26, 2019 · 1 分钟 · LengYue

Flutter ListView嵌套不显示布局解决方案

在Flutter中 如果使用 listview 嵌套 listview(gridView) 的方式(其实不是很推荐这么写)直接写 会发现布局不显示。 搜索一下基本上解决方法都是给内部的 listview 设置一个高度,但是针对高度不固定的listview这种方式基本无效,而且设置固定高度后 listview 的性能会有额外开销(因为不可见的item不能被回收了) 解决方法 其实查找一下源码,就可以发现官方已经给出了解决方法,在注释里: /// Here are two brief snippets showing a [ListView] and its equivalent using /// [CustomScrollView]: /// /// ```dart /// ListView( /// shrinkWrap: true, /// padding: const EdgeInsets.all(20.0), /// children: <Widget>[ /// const Text('I\'m dedicating every day to you'), /// const Text('Domestic life was never quite my style'), /// const Text('When you smile, you knock me out, I fall apart'), /// const Text('And I thought I was so smart'), /// ], /// ) /// ``` 所以比较简单了,直接在子listview中加上shrinkWrap: true属性:...

三月 19, 2019 · 1 分钟 · LengYue

在非主module中引用aar的问题

引用aar的方法 把aar文件放到 libs 目录下面,并且在对应的 module 项目下面 build.gralde 中添加如下配置: repositories { flatDir { dirs 'libs' } dependencies { // 其中aar-file-name不用文件后缀名 compile(name: 'aar-file-name', ext: 'aar') } 编译提示: Error:Unable to resolve dependency for ':app@debug/compileClasspath': Could not find :XXXX:. 解决: 在主(一般就是app)module下同样配置aar的目录 /**子模块含有aar*/ repositories { flatDir { dirs 'libs','../yourmodule/libs' //aar所在的路径 } } 同样 在其他module下如果需要使用这个aar,同样需要配置路径 这种方式最方便,但是在使用和查阅起来也不是很清晰。 将aar作为module使用。 具体做法,打开Project Structure(CMD+; 或者 ctrl+;)选择添加新的module然后选择import aar/jar 然后在需要的module这种引入即可。在主module中不需要在申明路径...

二月 18, 2019 · 1 分钟 · LengYue