前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Bug周刊】Vol.2

【Bug周刊】Vol.2

作者头像
客怎眠qvq
发布2024-03-15 09:26:42
1070
发布2024-03-15 09:26:42
举报
文章被收录于专栏:某菜鸟の小屋

前言

最近开发中遇到很多相同的问题,下意识去翻自己的历史记录,但又没能快速定位。我的trilium一直用来记录自己的周报和相关教程,对于常见的bug和修复方案也找不到合适的地方,只能穿插在日报的历史中,随时间沉没。无意间翻到子舒的奇趣周刊,Bug周刊也由此而生。

github展示代码统计(WakaTime)

问题描述

我想要在github主页上添加 WakaTime 的代码统计,在配置了api的secret后,github action报错如下:

代码语言:javascript
复制
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

代码语言:javascript
复制
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是否有读写的权限

配置完毕后将会显示

代码语言:javascript
复制
[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 数据同步

问题描述

在获得wakatime的统计数据后,发现非会员用户只能获得14天的数据,我希望能够获取全部的数据,同时能够渲染成仪表盘。

解决方案

一台有docker环境的服务器,以 docker-compose 的方式部署wakatime-sync服务,我自己用的是宝塔,步骤如下: 1、在数据库中新建wakatime数据库,导入项目sql目录下的文件创建对应的数据表。

2、在宝塔中,按照 docker -> compose模版 -> 添加的步骤,将yml复制进去,修改对应的 WAKATIME_APP_KEYFTQQ_KEY(需要去sever酱官网>注册获取),配置数据库的公网地址、端口号、账号和密码后,点击确定后保存。

代码语言:javascript
复制
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直接成功🎉🎉🎉

代码语言:javascript
复制
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.

github主页美化使用css

问题描述

我在我的主页上画了一个盒子,但是提交后盒子的代码以文本显示,没有渲染出来。

解决方案

1、将盒子的style转换成svg,以引入图片的方式解决渲染问题

代码语言:javascript
复制
<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)

代码语言:javascript
复制
<div>
  <img src="./header.svg" width="800" />
</div>

2、将盒子中的图片链接替换为base64,解决无法加载的问题

代码语言:javascript
复制
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

合并CI中的shell命令

书接上回,gitlab自动构建后,配置镜像对应的启动参数,补充对应的算法、垃圾回收日志、agent探针和对应debug模式参数配置

代码语言:javascript
复制
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"]
代码语言:javascript
复制
#!/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}

Syntax error:end of file unexpected(expecting “then”)

编写dockerfilestartup.sh文件时windows和linux下换行符冲突的问题;构建镜像时ENV配置错误

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-03-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • github展示代码统计(WakaTime)
    • 问题描述
      • 解决方案
      • wakatime 数据同步
        • 问题描述
          • 解决方案
          • github主页美化使用css
            • 问题描述
              • 解决方案
              • 合并CI中的shell命令
              • Syntax error:end of file unexpected(expecting “then”)
              相关产品与服务
              数据库
              云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档