1. 本地微信公众号开发
2. runtime的addShutdownHook钩子不执行
参考:Linux kill & Java shutdownhook
最后用的kill-15 pid停止进程,或许有更好的方式,比如System.exit();
读文件好说,项目启动时编译就会读
(def file-url "/opt/xhlive-training/pkg/activity/db.edn")
(def messages (atom (clojure.edn/read-string (slurp file-url))))
增加hook
(defn -main [& args]
(start!)
(.addShutdownHook (Runtime/getRuntime)
(new Thread (fn[]
(prn "I am going down....")
(when (not (empty? @messages))
(spit file-url @messages)))))
(println "启动ws...."))
3. 项目启动时读文件,项目结束时写文件
类似在服务结束时增加一些销毁现场的能力。Java中使用shutdownHook的一些注意事项
上博主的介绍相对来说能够帮助addShutdownHook的场景了。
本文介绍clojure版实践。
slurp 读函数
读取一个文本文件的全部内容
clojure.core/slurp
读取一个文件的全部内容,并以字符串形式返回
(comment
(slurp "files/file-test.txt" :encoding "UTF-8")
;; => "a txt file line1\na txt file line2\n这是中文字符"
)
spit 写函数
clojure.core/spit [file-path content & options]
file-path:为文件路径;
content:为要写入文件的内容,所有的内容都会被转为String类型写入。
options:一些设置参数,常见的有:
:append true/false;当为true是,内容会从文件后面写入,如果要换行写入,需要在内容后面加入\n换行符,当为false时,会擦掉文件原有的内容。
:encoding “UTF-8”或”GBK”等。 默认是UTF-8.
spit函数会先打开文件,再将内容写入,再关闭文件。
spit都是以字符串形式写入。
(comment
(spit "files/file-test.txt" "新增文件内容\n" :append false :encoding "GBK")
(slurp "files/file-test.txt" :encoding "GBK")
;; => "新增文件内容\n"
(slurp "files/file-test.txt" :encoding "UTF-8")
;; => "�����ļ�����\n"
(spit "files/file-test.txt" "新增文件内容\n" :append false)
(slurp "files/file-test.txt" :encoding "GBK")
;; => "鏂板鏂囦欢鍐呭\n"
(slurp "files/file-test.txt" :encoding "UTF-8")
;; => "新增文件内容\n"
;; 逐行写大量数据到文件时,用spit会降低效率,因为它每写一次都会执行打开、关闭文件。
;; 此时可以用java.io.writer.
(with-open [w (cio/writer "files/file-test.txt")]
(doseq [l ["第一行" "第二行" "第三行"]]
(.write w l)
;; 新起一行
(.newLine w)))
)
websocket
clojure使用两个库,不附源码。
https://github.com/ptaoussanis/sente
https://github.com/ptaoussanis/timbre
mac上使用OBS做直播
我们的方案是把腾讯会议的会议内容做一定的背景、头像的裁剪处理后用OBS studio软件把流推出去,然后在客户端用m3u8的格式拉取播放。
简单方案
为什么单独提一下这个,因为mac上能把麦克风的声音播出去,但是桌面的声音拨不出去。换句话说,你用网易云音乐,想只把这个软件的声音用OBS播出去,是不可以的,于是借助soundFlower这款软件可以实现,在腾讯会议上选择soundflower (64ch)这个通道。
image.png
OBS里设置也选择soundflower (64ch)
image.png
可以只将腾讯会议的声音播出去。
然而,这样有产生个新问题,腾讯会议的声音都被OBS拨出去了,自己的电脑端却听不见了,于是参考
在MacOS上利用OBS+Soundflower内录声音与直播这个教程配置了聚合输入和混合输出,相当于将一个声音进行了扩展,这样才妥当了。
最优方案
2020-10-20
好吧,b站上的视频居然也打不开?,真是没有一个靠谱的,这个电脑没配过,凭记忆录个视频吧。
- 前提
- 安装soundflower
- 安装了OBS studio
-
设置混合输出扬声器
找到Mac上的MIDI设置
image.png
-
设置聚焦设备
image.png -
OBS里设置也选择soundflower (64ch)
可以看到obs里多了一个桌面音频的输入源。
完成配置。这样声音能内录到OBS,本地也能听见。
网友评论