# Coder-nav 程序员导航 **Repository Path**: bosen-once/coder-nav ## Basic Information - **Project Name**: Coder-nav 程序员导航 - **Description**: Coder-nav 程序员导航 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: https://ip.bosen.ink - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-09-20 - **Last Updated**: 2026-04-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 1.导航主页 ![](src/main/resources/static/img/help/home1.png) > 注:导航主页内容可在“个人设置”自定义 ![](src/main/resources/static/img/help/home2.png) --- ## 2.登录页面 - 账号密码登录 ![](src/main/resources/static/img/help/login1.png) - 微信扫码登录 ![](src/main/resources/static/img/help/login2.png) > 注: 第一次登录时,需要通过微信扫码登录,通过扫码登录后,将自动注册账号,默认密码为“123456” ![](src/main/resources/static/img/help/login3.png) > 注: 登录成功后,可在“个人设置”中,修改账号昵称,与重置密码 ![](src/main/resources/static/img/help/login4.png) --- ## 3.记事本 ![](src/main/resources/static/img/help/memo1.png) ![](src/main/resources/static/img/help/memo2.png) - 渲染模式 - 即时渲染(ri) - 分屏预览(sv) - 快捷键 - 保存文本(Ctrl + S) - 切换渲染模式(Ctrl + /) > 注:记事本内容可自动保存,自动保存的频率可在“个人设置”中配置 ![](src/main/resources/static/img/help/memo3.png) --- ## 4.代码编辑器 ![](src/main/resources/static/img/help/ide1.png) --- - 在线运行代码原理 1. 用户在前端提交对应编程语言代码 2. 服务器接收用户提交的代码 3. 判断用户需要运行的编程语言 4. 选择对应编程语言的 Docker 镜像,并创建对应容器,运行用户提交的代码 --- - 特殊目录 - coder.nav - java - php - javascript > 注:在记事本的 coder.nav 目录下,可放置对应编程语言的工具类,如:在 coder.nav/java 目录下放置 NavHttpUtils.java 文件,在代码中可直接调用 NavHttpUtils 类,但调用的方法需要是静态方法 --- - Java(示例) ```java public class Main { public static void main(String[] args) { // Java 语言可直接调用记事本目录 coder.nav 下的 java 目录的工具类 // 如:目录 coder.nav 下的 java 目录存在 NavHttpUtils 文件 // 在代码中可以直接调用 NavHttpUtils 类,但调用的方法需要是静态方法 // String response = NavHttpUtils.getForm("https://www.baidu.com"); System.out.println("Hello World~!"); } } ``` --- - PHP(示例) ```php 注: 个人设置中,可自定义各语言的代码编辑器提示词 ![](src/main/resources/static/img/help/ide2.png) --- ## 4.记账本 ![](src/main/resources/static/img/help/cash1.png) ![](src/main/resources/static/img/help/cash2.png) --- - 记账日报(可在个人设置中配置) - 工作日 9:00 发送 - 非工作日 12:00 发送 --- > 注:个人设置可开启每日记账日报,项目还有 APK 版本,支持安卓手机的自动记账功能,项目地址:https://gitee.com/bosen-once/coder-nav-app --- ![](src/main/resources/static/img/help/cash3.png) --- ## 5.任务脚本 ![](src/main/resources/static/img/help/task1.png) --- - 消息推送 - 推送 Markdown 内容格式的文本 - 消息推送类型 - 邮件发送(可在个人设置中配置) - 微信公众号(需要扫码 https://monojson.com/s/Sk2CY 关注公众号获取 UID - **由于微信管控此类型已弃用**) --- - 执行脚本 1. Markdown: 推送的消息将是渲染 Md 后的 Html 文本 2. Java: 执行代码逻辑后使用 System.out.println 输出结果 3. PHP: 执行代码逻辑后使用 echo 输出结果 4. JavaScript: 执行代码后使用 console.log 输出结果 > 注1:每个脚本可设置执行时间,与下一次执行时间,可当作定时任务使用 > 注2:若执行脚本后,有结果返回,则将会把执行结果发送到“个人设置”中配置的邮箱中 ### AI-Chat-API - 一开始开发“任务脚本”功能的初衷其实是为了定时运行爬虫脚本,爬取拍立得相纸页面判断是否存在库存,如果存在则发送存在库存的消息到邮箱,但爬虫存在很多限制,所以最终的效果其实并不理想。 - 随着 AI 可以自己访问页面并解析页面,因此增加一个 “AI Chat API” 的选项,对接智谱的免费模型 GLM4,与 AI 沟通,让 AI 帮我完成爬虫操作,且不用再考虑反爬虫的限制 > 示例:

> 以下链接是拍立得相纸在京东官方旗舰店的商品链接,https://item.jd.com/100154886849.html, 我需要你访问该链接,选择广州地区,并判断该商品是否已经无货, 如果是,则只需要回复我一个空格字符,除此之外不需要回复其他内容; 否则,只需要以字符串的方式回复我以下内容: [拍立得 Mini90 白边相纸存在库存,点击跳转至下单页面~](https://item.jd.com/100154886849.html)

--- ## 6.自定义页 ![](src/main/resources/static/img/help/page1.png) > 注1:自定义页的实现原理,实际上还是上面的“任务脚本”功能,每次访问自定义页时,都会调用 PHP 的 Docker 镜像创建容器,最终输出 Html 页面内容 > 注2:由于 PHP 代码本身就是可以内嵌 Html 代码的,因此使用 PHP 脚本来实现自定义页时,既可以保证静态页面的功能,也可以调用 PHP 代码实现动态效果 > 注3:自定义页链接格式如下:https://{服务器域名}/page/{用户id}/{页面title},如:https://bosen.ink/page/1/cron ## 7.移动端预览(APK/H5) ![](src/main/resources/static/img/help/h5.png) > 注:APK 版本,支持安卓手机的自动记账功能,项目地址:https://gitee.com/bosen-once/coder-nav-app --- ## 8.系统部署 --- ### Docker 镜像 ```bash docker pull centos:latest docker pull mysql:latest docker pull redis:latest docker pull gcc:latest docker pull golang:latest docker pull openjdk:8-jdk-alpine docker pull php:7 docker pull python:3 ``` --- ### MySQL - 容器启动 ```bash docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD="123456" -v /home/mysql/conf/my.cnf:/etc/mysql/my.cnf mysql ``` --- ### Redis - 容器启动 ```bash docker run -d -p 3379:6379 --name redis -v redis_data:/data hub.c.163.com/library/redis --requirepass "123456" ``` --- ### Coder-nav - 文件权限 ```bash chmod 777 /opt/coder-run/temp ``` - 容器启动 ```bash docker run -d -p 8080:8080 --name coder-nav -v /opt/coder-run/temp:/opt/coder-run/temp -v /home/java/coder-nav.jar:/home/java/coder-nav.jar -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -v /lib64/libltdl.so.7:/lib64/libltdl.so.7 --privileged=true openjdk:8-jdk java -jar /home/java/coder-nav.jar ``` - 容器重启 ```bash docker restart coder-nav && docker logs coder-nav -f ``` ---