SDK可以帮助我们维护mac下的程序包,比如想安装jdk1.8、又想安装jdk11,比如想安装maven等等,它都可以通过指令进行安装和管理。下面是一些常用的指令:
1 | 安装 |
和有趣的人做尽有趣的事
SDK可以帮助我们维护mac下的程序包,比如想安装jdk1.8、又想安装jdk11,比如想安装maven等等,它都可以通过指令进行安装和管理。下面是一些常用的指令:
1 | # 安装 |
前段时间618新入手了几块硬盘,买回来组一个NAS,下面是家里的网络拓扑逻辑图
在其中完成了以下内容:
得到的好处:
CUAdmin32216618
自己手里有很多私有服务,并且域名还都不一样,例如下面这些:
应用 | ip |
---|---|
NAS | 192.168.30.5:5000 |
Jellyfin | 192.168.30.5:8096 |
私人笔记 | hoey94.github.io |
私人网盘 | 192.168.30.5:9000 |
chatgpt | chat.github.io |
… | … |
这些应用管理起来十分不方便,于是就想将这些网站整合在一起,并且对外提供统一域名访问方式。我自身是有一个免费的顶级域名的hoey.tk,那现在的需求就很明确了,其实就是想得到下面这样的效果:
应用 | ip |
---|---|
NAS | nas.hoey.tk |
Jellyfin | jellyfin.hoey.tk |
私人笔记 | notes.hoey.tk |
私人网盘 | pan.hoey.tk |
chatgpt | chat.hoey.tk |
… | … |
最近找到了一款挺不错的软件Nginx Project Manager,并且还能提供免费的SSL,虽然3个月到期以后还要手动续期,不过白嫖的东西还要什么自行车。它的页面像这样:
配置完以后,访问的时候只需要使用二级域名访问即可,十分方便,维护起来也十分傻瓜。
下面这个是结合自己家庭网络拓扑图和已有的一些服务的网络拓扑图,用这个实现二级域名访问+SSL。
从最右边开始一层一层解释所做的事情:
首先联系联通宽带,给到公网IP,将自己内网服务,在软路由内部通过端口映射的方式开放到外网。如果没有公网IP,也可以用frp等工具实现内网穿透。
接下来要解决公网IP变动的问题(联通给的公网IP是动态的,每隔一段时间就会变)。DNS服务商我选择的是Cloudflare,实现DDNS这块是参考开源项目,改写了一个脚本,其主要功能是:以轮训的方式,动态监测公网IP变更,将A记录通过API的方式更新到Cloudflare以实现DNS解析,具体脚本参考cloudflare-api-dns,当然网上也有很多类似以封装好的工具实现DDNS,比如ddns-go
在自己的VPS上搭建好Nginx Project Manager(后面我们简称NPM),用来整合自己所有的服务,并添加SSL认证。
在Cloudflare创建记录将tk域名映射到VPS上,反向代理接受到请求,转发到4块钱买的域名(hoey.asia)上,哈哈哈。
1 | # docker |
1 | mkdir -p /data/docker_data/npm |
1 | cd /root/data/docker_data/npm |
1 | cd /root/data/docker_data/npm |
NPM默认账号密码: admin@example.com/changeme,登录后修改
登录Cloudflare,到自己的域名中添加A记录,指向VPS服务器(我的VPS是110.123.11.1,域名是hoey.tk)
在NPM中添加对应的反向代理配置,并打开SSL,(下图是以nas这条记录为例,描述NPM的配置)
之后开启SSL认证
点击保存即可。
配置完成以后,就可以使用nas.hoey.tk访问nas服务了,当用户访问nas.hoey.tk时,在网络中它的链路应该如下图所示:
以上
最近使用Jellyfin搭建家庭影音出现中文乱码问题,下面是我搜到的一些方案,我用的是扩展中文字体库
下面是一些指令,针对小白用的,大佬无视
1 | # 远程登录到NAS并切换最高权限 |
链接:https://share.weiyun.com/5Wg55FF5 密码:nhqe76
视频已经传到B站,欢迎观看Jellyfin中文字幕乱码解决_哔哩哔哩_bilibili
环境
官方提供文档Deploy Docker cluster
但部署完以后发现集群无法识别BE节点,查看日志发现是因为没有设置vm.max_map_count
参数
避坑1: 需要设置sysctl -w vm.max_map_count=2000000
避坑2: 在启动容器时需要添加privileged: true
官方提供了文档Flink Doris Connector
这里选用的是RowData的方式写入到Doris,提前到Doris中创建表代码如下:
1 | CREATE DATABASE dwd; |
然后是使用Java代码:
1 | public static void main(String[] args) throws Exception { |
运行时发现网络不通问题,无法成功写入Dois,具体错误如图下图所示:
分析宿主节点和docker集群的关系
由架构图得知,是因为sink写入的时候通过外网地址的fe取到be地址是内网地址。
解决思路:
程序上传到FE运行,但是我属于本地开发环境,这种方式不适合
配置Docker network,使得在宿主节点能够访问容器 BE的IP。这块我也尝试搜索了很多资料,最终以失败告终。
修改源代码: 找到涉及到“第二步:将BE内网IP返回给主程序”代码,并修改
其中我是用第三种方法,成功在本地开发环境摄入数据到Doris,在这里简单介绍一下快速修改源码的方法。
第一步: 先找到涉及到代码的相关方法,在该场景中对应的是org.apache.doris.flink.rest.RestService
类的randomBackend()
。
1 | @VisibleForTesting |
第二步:现在希望返回值并非BE的内网IP,因此我们需要将return
的内容写死return "localhost:8040";
第三步:在代码中我们创建与类相同的包,并将源码原封不动粘贴进去,如果报错,可以修改。紧接着修改return "localhost:8040";
即可
总结:
我这里是本地开发环境遇到的问题,并非生产环境;如果生产环境部署基于Doris的应用程序,则需要注意下下面几点:
目前需要对Kafka Topic中的数据进行分析,查询了一下KSQLDB挺不错,它是一个流处理引擎,主要用于处理实时数据流,并支持 SQL 查询和流处理操作。KSQLDB 可以运行在 Apache Kafka 平台之上,它不需要额外的基础设施,因此可以方便地与 Kafka 进行集成。KSQLDB 可以实现流数据的可视化、数据的清洗和去重、流式计算等。KSQLDB 的主要特点包括易于使用、接近实时的处理速度、强大的 SQL 查询功能以及灵活的流处理操作。
环境准备
下面代码用于部署Standalone
1 | --- |
启动KsqlDB服务:
1 | docker-compose up |
使用Docker链接到Cli中
1 | docker exec -it ksqldb-cli |
链接到cli中后,在终端运行命令链接:
1 | [ksqldb-cli] docker exec -it ksqldb-cli ksql http://ksqldb-server:8088 |
可以运行命令查看topic
1 | show topics; |
如果你想链接远端Kafka集群,将
1 | --- |
后面的操作和上面都一样了,启动的时候注意修改名称
展示有多少Topic:
1 | show topics; |
在cli链接后,我们创建一个riderLocations流,如果locations这个topic在kafka中不存在,则会对应创建。
1 | CREATE STREAM riderLocations ( |
然后往topic中插入一批数据
1 | kafka-console-producer --broker-list localhost:9092 --topic locations |
就可以愉快的查询它了
1 | SET 'auto.offset.reset'='earliest'; |
更多的详细用法可以参考网站ksqldb
环境准备
1.克隆项目到本地
1 | git clone https://github.com/apache/dolphinscheduler.git |
2.导入项目到IDEA,并切换分支到3.1.0
1 | git checkout 3.1.0-release |
3.编译项目
spotless是一种代码格式化工具,使用 spotless:apply 表示格式化module代码
mvnw同mvn的功能是一样的,mvnw做了项目适配
1 | ./mvnw spotless:apply |
4.在mysql创建database数据库
1 | CREATE SCHEMA dolphinschedulertest; |
找到脚本dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_mysql.sql并运行
5.修改项目配置文件
全局搜索application.yaml
,将文件中涉及postgresql的替换为mysql
1 | # driver-class-name: org.postgresql.Driver |
6.修改dolphinscheduler-bom下pom.xml
1 | <dependency> |
7.修改logback-spring.xml
全局搜索logback-spring.xml,将下面内容添加到其中
1 | <root level="INFO"> |
8.配置启动项
分别配置MasterServer, WorkerServer, ApiApplicationServer
main
in the class org.apache.dolphinscheduler.server.master.MasterServer
by Intellij IDEA, with the configuration VM Options -Dlogging.config=classpath:logback-spring.xml -Ddruid.mysql.usePingMethod=false -Dspring.profiles.active=mysql
main
in the class org.apache.dolphinscheduler.server.worker.WorkerServer
by Intellij IDEA, with the configuration VM Options -Dlogging.config=classpath:logback-spring.xml -Ddruid.mysql.usePingMethod=false -Dspring.profiles.active=mysql
main
in the class org.apache.dolphinscheduler.api.ApiApplicationServer
by Intellij IDEA, with the configuration VM Options -Dlogging.config=classpath:logback-spring.xml -Dspring.profiles.active=api,mysql
. After it started, you could find Open API documentation in http://localhost:12345/dolphinscheduler/swagger-ui/index.html9.配置zookeeper
参考以前的博客zookeeper部署
10.启动前端
1 | pnpm install |
11.启动后端
分别在IDEA中运行MasterServer, WorkerServer, ApiApplicationServer
登陆账号密码 admin/dolphinscheduler123
参考文档:https://www.bookstack.cn/read/dolphinscheduler-3.1.0-en/af18cd17a04eb31f.md
编译错误1:
1 | [ERROR] Failed to execute goal com.github.eirslett:frontend-maven-plugin:1.12.1:pnpm (pnpm install) on project dolphinscheduler-ui: Failed to run task: 'pnpm install' failed. org.apache.commons.exec.ExecuteException: Process exited with an error: 9 (Exit value: 9) -> [Help 1] |
解决办法:
修改dolphinscheduler-ui模块下的pom.xml,修改后记得重新执行./mvnw spotless:apply
格式化代码
1 | <!-- <plugins>--> |
创建start.py,代码如下:
1 | #!/usr/bin/env python |
运行start.py,端口为8000
1 | python start.py 8000 |
在站点根目录下执行
1 | cnpm install hexo-hide-posts --save |
在站点目录下的_config.yml
中如下配置:
1 | # hexo-hide-posts |
在文章的属性中定义 hidden: true
即可隐藏文章。
1 | --- |
虽然首页上被隐藏了,但你仍然可以通过 https://hexo.test/lorem-ipsum/
链接访问它。
你可以在命令行运行 hexo hidden:list
来获取当前所有的已隐藏文章列表。
参考blog:https://www.cnblogs.com/yangstar/articles/16690342.html