最近开发中遇到很多相同的问题,下意识去翻自己的历史记录,但又没能快速定位。我的trilium
一直用来记录自己的周报和相关教程,对于常见的bug和修复方案也找不到合适的地方,只能穿插在日报的历史中,随时间沉没。无意间翻到子舒的奇趣周刊,Bug周刊也由此而生。
我想要在github
主页上添加 WakaTime
的代码统计,在配置了api的secret后,github action报错如下:
Run athul/waka-readme@master
[2024-03-08 01:31:58] ln. 478 DEBUG WakaReadme stats has changed
[2024-03-08 01:31:58] ln. 522 CRITICAL 403 {"message": "Resource not accessible by integration", "documentation_url": "https://docs.github.com/rest/repos/contents#create-or-update-file-contents"}
1、检查 waka-time.yml
是否有误(WAKATIME_API_KEY
)
name: Waka Readme
on:
# for manual workflow trigger
workflow_dispatch:
schedule:
# runs at 12 AM UTC (5:30 AM IST)
- cron: "0 0 * * *"
jobs:
update-readme:
name: WakaReadme DevMetrics
runs-on: ubuntu-latest
steps:
- uses: athul/waka-readme@master # this action name
with:
WAKATIME_API_KEY: ${{ secrets.WAKATIME_API_KEY }}
2、检查仓库的action是否有读写的权限
配置完毕后将会显示
[2024-03-11 08:04:18] ln. 300 DEBUG The API data seems to be empty, please wait for a day
只需要在你本地的编辑器(vscode、idea等)安装wakatime的插件,配置好key,继续你的日常coding,等一天就有数据产生了。
在获得wakatime的统计数据后,发现非会员用户只能获得14天的数据,我希望能够获取全部的数据,同时能够渲染成仪表盘。
一台有docker环境的服务器,以 docker-compose
的方式部署wakatime-sync
服务,我自己用的是宝塔,步骤如下:
1、在数据库中新建wakatime
数据库,导入项目sql
目录下的文件创建对应的数据表。
2、在宝塔中,按照 docker -> compose模版 -> 添加
的步骤,将yml复制进去,修改对应的 WAKATIME_APP_KEY
和 FTQQ_KEY
(需要去sever酱官网>注册获取),配置数据库的公网地址、端口号、账号和密码后,点击确定后保存。
version: "3"
services:
wakatime-sync:
image: wf2311/wakatime-sync:1.0
container_name: wakatime-sync
environment:
- JAVA_OPTS=-Xmx256m -Xms64m -Xss256k
- SERVER_PORT=3040
- WAKATIME_APP_KEY=<WAKATIME_APP_KEY>
- WAKATIME_PROXY_URL=false
- WAKATIME_FTQQ_KEY=<WAKATIME_FTQQ_KEY>
- WAKATIME_DINGDING_KEY=<WAKATIME_DINGDING_KEY>
- START_DAY=2016-02-01
- MYSQL_URL=jdbc:mysql://<ip:port>/wakatime?characterEncoding=utf8&useUnicode=true&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=PRC
- MYSQL_USERNAME=wakatime
- MYSQL_PASSWORD=123456
volumes:
- ~/Share/logs/wakatime-sync/:/application/logs
ports:
- "3040:3040"
3、点击 compose -> 添加compose项目
,选择对应模版后点击添加,再查看容器列表,确定镜像是否启动,正常情况下,每天早上9点就会推送昨天的wakatime数据。
建议使用docker-compose
的方式
个人使用docker run
的命令一直报错,手动建文件夹给777都没用,使用docker-compose.yml
直接成功🎉🎉🎉
docker: Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error mounting "/root/logs/wakatime-sync" to rootfs at "/application/logs": open o_path procfd: open /var/lib/docker/overlay2/c249cef5b49bbe5e8395baf3618bd7dcdc995741016f2da57cc055734002d6be/merged/application/logs: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type.
我在我的主页上画了一个盒子,但是提交后盒子的代码以文本显示,没有渲染出来。
1、将盒子的style
转换成svg
,以引入图片的方式解决渲染问题
<svg fill="none" viewBox="0 0 800 200" width="100vw" height="180" xmlns="http://www.w3.org/2000/svg">
<foreignObject width="100%" height="100%">
<div xmlns="http://www.w3.org/1999/xhtml">
<style>
<!-- 粘贴你的样式 -->
</style>
<div>
<!-- 粘贴你的盒子 -->
</div>
</div>
</foreignObject>
</svg>
在readme文件中插入这个svg
图片(header.svg
)
<div>
<img src="./header.svg" width="800" />
</div>
2、将盒子中的图片链接替换为base64
,解决无法加载的问题
Refused to load the image because it violates the following Content Security Policy directive: "default-src 'none'"
Blocked script execution in because the document's frame is sandboxed - Angular application
书接上回,gitlab自动构建后,配置镜像对应的启动参数,补充对应的算法、垃圾回收日志、agent探针和对应debug模式参数配置
FROM openjdk:8-jdk
ENV BASE_DIR="/app"
WORKDIR $BASE_DIR
ENV JAVA_HOME="/usr/local/openjdk-8/" \
JAVA="/usr/local/openjdk-8/bin/java" \
JVM_XMS="8g" \
JVM_XMX="8g" \
JVM_XMN="3g" \
JVM_MS="128m" \
JVM_MMS="320m" \
HUSSAR_DEBUG="n" \
SW_AGENT="y" \
SW_AGENT_PATH="/home/skywalking/agent/" \
TZ="Asia/Shanghai"
RUN rm -f /etc/localtime \
&& ln -sv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone
#install linux command tool
RUN apt-get update \
&& apt-get install -y vim \
&& apt-get install -y sudo \
&& apt-get install -y nicstat \
&& apt-get install -y sysstat \
&& apt-get install -y inetutils-ping \
&& apt-get install -y net-tools \
&& apt-get install -y telnet
# 只复制一次 减少构建层数
COPY ./target/test-application.jar ./startup.sh $BASE_DIR/
EXPOSE 7778
RUN chmod +x startup.sh
#RUN mkdir -p $SW_AGENT_PATH
#COPY agent $SW_AGENT_PATH
ENTRYPOINT ["sh","startup.sh"]
#!/bin/sh
#===========================================================================================
# JVM Configuration
#===========================================================================================
# 内存分配参数
JAVA_OPT="${JAVA_OPT} -server -Xms${JVM_XMS} -Xmx${JVM_XMX} -Xmn${JVM_XMN} -XX:MetaspaceSize=${JVM_MS} -XX:MaxMetaspaceSize=${JVM_MMS}"
# debug 模式下参数配置(传输、端口号、调试服务器、不在 JVM 启动时暂停,而是等待调试器连接后再开始执行。)
if [ "${HUSSAR_DEBUG}" = "y" ]; then
JAVA_OPT="${JAVA_OPT} -Xdebug -Xrunjdwp:transport=dt_socket,address=12345,server=y,suspend=n"
fi
# 异常处理机制 及 禁用大页面
JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${BASE_DIR}/logs/java_heapdump.hprof"
JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages"
#===========================================================================================
# Setting skywalking-agent properties
# agent 探针
#===========================================================================================
#if [ "${SW_AGENT}" = "y" ]; then
# JAVA_OPT="${JAVA_OPT} -javaagent:${SW_AGENT_PATH}/skywalking-agent.jar -DSW_AGENT_NAME=${SW_AGENT_NAME} -DSW_AGENT_COLLECTOR_BACKEND_SERVICES=${SW_AGENT_COLLECTOR_BACKEND_SERVICES}"
#fi
# 垃圾回收 日志 轮换文件大小限制
mkdir -p "${BASE_DIR}/logs" && touch "${BASE_DIR}/logs/gc.log"
JAVA_OPT="${JAVA_OPT} -Xloggc:${BASE_DIR}/logs/gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M"
# 配置文件编码 Redis等ip和密码 启动jar包
JAVA_OPT="${JAVA_OPT} -Dfile.encoding=utf-8"
JAVA_OPT="${JAVA_OPT} -jar ${BASE_DIR}/test-application.jar"
echo "This server is starting, you can docker logs your container"
#if [ ! -n "$WAIT_HOSTS" ]; then
# echo "WAIT_HOSTS is not set!"
#else
# ./wait
#fi
echo ${JAVA_OPT}
exec $JAVA ${JAVA_OPT}
编写dockerfile
和startup.sh
文件时windows和linux下换行符冲突的问题;构建镜像时ENV
配置错误