0%

升级思路

  • 针对游戏数据引入多语言json, 以原 id 为索引,存储 namecategoryinstructions 翻译内容。

  • 在每个模板内创建 content.js存放特定词组的多语言数据,统一放common.js 同路径。

json放置路径(暂定不动)

1
2
3
4
5
6
util/
├── language/
│ ├── en.json # 默认en,仅参照用
│ ├── es.json # 西班牙语
│ ├── fr.json # 法语
│ └── de.json # 德语

自定义脚本

1
2
3
4
5
6
7
//示例
export const ct_recommend = {
en: `Recommend For You`,
fr: `Recommandé pour vous`,
de: `Empfohlen für dich`,
es: `Recomendado para ti`
};

更新操作

获取语言

通过util.getLanguage() 检索当前是否需要翻译,得到 enesdefr 四种语言之一,默认为en

1
const language = util.getLanguage();  // 获取到语言分4种: en, es, de, fr
阅读全文 »

MySQL安装配置

配置 MySQL 源

首先,需要添加 MySQL 的 Yum 源,确保安装的是最新版本的 MySQL。

1
2
sudo wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
sudo rpm -ivh mysql80-community-release-el7-3.noarch.rpm

安装 MySQL Server

安装 MySQL Server:

1
sudo yum install mysql-community-server

启动 MySQL 服务

1
2
3
4
sudo systemctl start mysqld

# 开机自启
sudo systemctl enable mysqld

初次登入

获取 MySQL 临时 root 密码

在 MySQL 安装过程中,会生成一个临时的 root 密码,查看日志文件来获取它:

1
sudo grep 'temporary password' /var/log/mysqld.log

这将输出类似如下的临时密码:

1
2025-03-05T09:40:27.489070Z 1 [Note] A temporary password is generated for root@localhost: abc123xyz

记下临时密码(例如 abc123xyz)。

阅读全文 »

问题描述:在编写系统程序中,出现bug导致系统CPU负载或者跑满了。导致客户端ssh无法链接上来。

解决办法:优化出问题的程序,设定CPU阔值,超过重启。

监控与重启:

创建监控脚本

1.创建脚本文件: 在根目录下创建一个新的脚本文件,例如 cpu_monitor.sh。

1
2
3
sudo nano /cpu_monitor.sh
# 或者
sudo vim /cpu_monitor.sh

2.编写以下脚本内容,THRESHOLD=9090代表CPU阔值上限为90%,超过就要重启。

1
2
3
4
5
6
7
8
#!/bin/bash
THRESHOLD=90
CPU_USAGE=$(mpstat 1 1 | awk '/Average/ {print 100 - $12}')

if (( $(echo "$CPU_USAGE > $THRESHOLD" | bc -l) )); then
echo "CPU usage is above $THRESHOLD%. Restarting server..."
sudo reboot
fi

3,保存退出后,执行授予权限:

1
sudo chmod +x /cpu_monitor.sh
1
sudo crontab -e

添加cron代码内容,每分钟检测一次:

1
* * * * * /cpu_monitor.sh

测试

安装 stress-ng

1
2
sudo yum install epel-release
sudo yum install stress-ng

查看服务器为几线程:

1
nproc

使用 stress-ng 设置 CPU 负载,如下第一个2代表两个线程,96代表是CPU负载接近96%,20s是定时器时长。

1
stress-ng --cpu 2 --cpu-load 96 --timeout 20s

等待一段时间 服务器重启就是成功了。

基础代码

{your-pixel-id-goes-here}替换为实际的pixelID,将以下代码放在网页的<head></head>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!-- Facebook Pixel Code -->
<script>
!function(f,b,e,v,n,t,s)
{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t,s)}(window, document,'script',
'https://connect.facebook.net/en_US/fbevents.js');
fbq('init', '{your-pixel-id-goes-here}');
fbq('track', 'PageView');
</script>
<noscript>
<img height="1" width="1" style="display:none"
src="https://www.facebook.com/tr?id={your-pixel-id-goes-here}&ev=PageView&noscript=1"/>
</noscript>
<!-- End Facebook Pixel Code -->

如果有其他事件上报,例如ViewContent,在基础代码的fbq('track', 'PageView');行后添加该事件上报:

1
2
fbq('track', 'PageView');
fbq('track', 'ViewContent'); // 新添加的事件

记录一个批量重命名文件bat代码。该脚本主要功能是遍历当前目录中的所有文件,并将符合特定模式的文件名进行重命名,将类似 ASMR Rainbow Jelly-720 X 1280-2024-07-04-930d17d3fe662399f0ca12104d604fa5 重命名为 ASMR Rainbow Jelly-720 X 1280,舍弃-2024-07-04-930d17d3fe662399f0ca12104d604fa5日期和bash部分。

完整脚本内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
@echo off
chcp 65001 > nul 2>&1
setlocal enabledelayedexpansion

REM 遍历当前目录中的所有文件
for %%f in (*.*) do (
set "filename=%%f"
set "extension=%%~xf"

REM 判断是否为批处理文件,跳过
if /i "!extension!"==".bat" (
echo 跳过批处理文件: !filename!
) else (
REM 分割文件名
for /f "tokens=1,2,3,4 delims=-" %%a in ("!filename!") do (
set "part1=%%a"
set "part2=%%b"
set "part3=%%c"
set "part4=%%d"

REM 检查日期部分是否在指定年份范围内
if "!part3!" neq "" (
if "!part3!" gtr "1900" if "!part3!" lss "2100" (
set "new_filename=!part1!-!part2!"
) else (
set "new_filename=!filename!"
)
) else (
set "new_filename=!filename!"
)

REM 如果新旧文件名相同,则输出无需重命名信息
if "!filename!"=="!new_filename!" (
echo !filename!:不需重命名
) else (
REM 尝试重命名文件
ren "!filename!" "!new_filename!" > nul 2>&1
if !errorlevel! equ 0 (
echo !filename! 更名为 !new_filename!
) else (
echo !filename!重命名失败
)
)
)
)
)

echo 批量更名完成,bat from CRF %TIME% !!
pause

脚本解析

初始化部分

1
2
3
@echo off
chcp 65001 > nul 2>&1
setlocal enabledelayedexpansion
  • @echo off:关闭命令回显。
  • chcp 65001 > nul 2>&1:将代码页设置为 UTF-8,防止出现乱码。
  • setlocal enabledelayedexpansion:启用延迟变量扩展,允许在 for 循环中使用 ! 来引用变量。
    阅读全文 »

ECS服务配置

服务器配置:
i-7xvatqiyl3pikzz7pz2t运行中(2核(vCPU) 2GiB) AliyunLinux

添加私钥

在本地电脑使用以下命令查看并公钥内容:

1
cat ~/.ssh/id_rsa.pub

执行以下1或2完成添加公钥操作。
1.打开ECS后台远程链接,编辑 authorized_keys 文件:

1
编辑 authorized_keys 文件。

按Esc建输入:wq保存退出。

附:如果你第一次使用没有正常关闭,执行一下操作

1
2
# 尝试使用 ps 命令查看正在运行的 Vim 进程
ps aux | grep vim

找到相关的 Vim 进程,并使用 kill 命令终止它们。

1
kill -9 <process_id>

2.登录ECS管理控制台。在左侧导航栏,网络与安全 > 密钥对 > 添加复制出来的公钥内容 命名为test

在左侧导航栏,选择实例与镜像 > 实例。

在操作列中,找到购买的ESC实例…> 实例属性 > 绑定密钥对,选择test, 确定重启。

阅读全文 »

在Node.js中,fs模块提供了对文件系统的访问功能,我们可以利用它来实现配置文件的读取和写入操作。正好用到,就记录一下。

准备工作

确保你的项目目录已经安装了做了npmpnpmyarn等node相关初始化,存在node_modules文件夹,这样就可以使用fs

1
const fs = require('fs');

接下来就是定义路径,我是用到年月来定义路径,并放在当前路径的storeConfigs下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
const path = require('path');
const date = getDate();

// 文件夹路径 ./storeConfigs/${date.year}/${date.month}
const folderPath = path.resolve(__dirname, 'storeConfigs', `${date.year}`, `${date.month}`);

// 用date.day来定义文件名 ./storeConfigs/${date.year}/${date.month}/${date.day}
const aFilePath = path.resolve(folderPath, `${date.day}`);


// 获取当前日期
function getDate() {
const currentDate = new Date();
const year = currentDate.getFullYear();
const month = currentDate.getMonth() + 1;
const day = currentDate.getDate();
return { year: year, month: month, day: day };
}
阅读全文 »