WRITING LOG · 03
技术博客
记录技术实践、问题排查和持续成长,把每一次解决问题的过程留下来。
WORKSPACE
文章阅读
android开发学习日志(其二)
2024-09-23
学了几天安卓开发基础感觉很好,于是基于webview开发了个简易的音乐播放器。这里记录下一些我认为的要点:1、webview可以挂载线上网站页面也可以挂本地html,只要在项目根路径创建assets目录下,再把网页相关的资源放进去就可以访问,例如:webview.loadUrl("file:///android_asset/你的网页.html")。2、网页要支持js需要设置webview.settings.javaScriptEnabled=true。3、安卓webview使用的谷歌内核,遵循同源策略(不允许跨域请求),发普通http(非https)请求需要在AndroidManifest.xml配置 android:usesCleartextTraffic="true"。4、文件上传采用input type="file"标签的话需要在webChromeClient中复写onShowFileChooser方法并处理文件activity回调。5、安卓13开始读取MP3这类媒体文件除了在AndroidManifest.xml中申请android.permission.READ_EXTERNAL_STORAGE外部存储读取权限还需要申请android.permission.READ_MEDIA_AUDIO权限,并且弹窗提醒用户去设置里允许媒体读写权限否则只能读到公共文件夹读不到里面的文件列表。6、webview的audio标签src可以直接使用/storage/emulated/0/Download/这种路径读取本地文件,前提是满足了第五步的权限申请处理。7、使用webview.addJavascriptInterface配合@JavascriptInterface注解可以暴露安卓内部的方法给webview的js直接调用,实现js桥。以上。
android开发学习日志(其一)
2024-09-20
2015的时候安卓开发很火爆,我也看了一些书籍和视频。当时的工具链并没有现在那么完善,而且因为一些众所周知的原因下载谷歌的开发工具非常缓慢,我记得当时装安卓SDK和ADT相关的东西开着电脑跑了一天一夜。开发工具主要用的eclipse,开发语言是Java。最后因为找不到志同道合的伙伴加上自己是是鸽子附体学了个半途而废,学网站开发和php也是后话了。从业以来立志做全栈程序员,学了html、js、css网页开发这套,加上jq和Vue这里工具库和框架写了几个网站算是半个前端了,然后学了几门脚本语言写了几年接口算入门了个后端。自觉离目标还很远,有必要学一学app和桌面端,最近又重拾安卓开发。最近看下文档和入门视频发现其实安卓开发已经非常成熟和友好了,android studio非常好用,官方主推的kotlin语言也比Java好上手。学了几天下来总结下新手入门的坑:1、安卓的好多功能都依赖上下文关系(context)比如弹个toast弹窗,发起个网络请求,获取个安卓ID等等。这个上下文关系要从activity中拿,这给我这种习惯封装工具类的人带来了不少麻烦,因为调用封装的函数必须传上下文关系。2、多线程编程。写php脚本习惯了对多线程只有一些概念,实际用起来需要考虑主线程和子线程的调配。比如发起网络请求的时候主线程activity中不允许任何等待和阻塞行为,post同步请求这类当然不被允许。3、权限相关。以前看低版本安卓这些问题并没有很规范,自由度很高。现在要列出个公共音乐文件夹还需要单独在XML配置文件里面声明要哪些权限,然后需要弹窗让用户同意否则无法调用。4、各个版本兼容(碎片化)。需要一些功能的时候就去查资料,但是写出来以后就发现方法被ban了,各个类和库之间直接调用得判断安卓版本再找对应的库和方法。以上是最近几天的心得,待续。
sentry日志服务器硬盘100%
2024-09-11
公司的游戏因为要分析客户端日志搞了台服务器跑sentry,4+8的配置,120G的硬盘,结果今天硬盘100%了。不得不说docker和sentry的组合太吃配置了,比游戏服务器用的资源还多却经常捉襟见肘,硬盘100%了CPU马上也满载了不得不删除一些数据腾出空间。
#这里直接清除了超过15天的数据docker exec -it sentry-self-hosted-worker-1 /.venv/bin/sentry cleanup --days 15#因为项目根目录是/home/onpremise,docker compose要在项目根目录下运行cd /home/onpremise && docker compose run --rm -T web cleanup --days 15 -m nodestore -l debug顺带解决了下管理后台登录的时候报CSRF的问题:在sentry项目根目录下找到配置文件sentry.conf.py修改配置项system.url-prefix: https://你实际的管理后台域名.com修改完后重启下sentry的docker容器,我这边是简单粗暴直接重启了服务器重新执行了docker compose up -d