当前位置: 首页 > news >正文

树莓派4B arm64 搭建 docker+drone+gitea

树莓派4B arm64 搭建 docker+drone+gitea

记录时间: 2023年02月10日

树莓派烧录

如何用树莓派搭建一台永久运行的个人服务器?

https://mp.weixin.qq.com/s?__biz=MzI5NjA0ODkwNA==&mid=2651847658&idx=1&sn=267a1257b43d4a76f2a081ed157b77f9&chksm=f7b11b8dc0c6929b768fb1314c9dbcb75a5079ac24080294102dc72b349944750d8b32916f42&scene=27

树莓派安装官方系统,无桌面版本,最后发现自己是小丑!!!-哔哩哔哩

https://b23.tv/6xC0kiQ

  1. 树莓派官网:https://www.raspberrypi.com/
  2. 下载安装烧录工具:Raspberry Pi OS
    • https://downloads.raspberrypi.org/imager/imager_latest.exe
  3. 下载Pi OS64位精简镜像:Raspberry Pi OS (64-bit) Raspberry Pi OS Lite
    • https://downloads.raspberrypi.org/raspios_lite_arm64/images/raspios_lite_arm64-2022-09-26/2022-09-22-raspios-bullseye-arm64-lite.img.xz
  4. 烧录完成后在boot分区加入文件
    • ssh
      • 空白文件
    • userconf.txt
      • 使用openSSL(openssl passwd -6)生成密码(raspberry)
    • wpa_supplicant.conf
      • 不能是windows的换行符
  5. 插入内存卡启动, 使用Xshell连接树莓派
    • 地址:raspberrypi
      户名:pi
      密码:raspberry

更换国内镜像站

清华大学开源软件镜像站

https://mirrors.tuna.tsinghua.edu.cn/help/raspbian/

# aarch64 用户:编辑 `/etc/apt/sources.list` 文件,用以下内容取代:
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free# 编辑 `/etc/apt/sources.list.d/raspi.list` 文件,删除原文件所有内容,用以下内容取代:
deb https://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ bullseye main

更新软件源列表

sudo apt-get update

(可选)更新升级以安装软件包,这个过程耗时较长

sudo apt-get upgrade

启用树莓派FTP传输协议

#FTP Server安装
sudo apt-get install vsftpd
#使用指令启动FTP服务:
sudo service vsftpd start
#允许树莓派写入权限:
sudo nano /etc/vsftpd.conf
#找到 write_enable=YES 的,将前面的 # 号删除即可
#删除注释符号后,按 Ctrl + X 保存,输入 Y 确认

修改时区

sudo dpkg-reconfigure tzdata
#找到亚洲 Asia,然后选择 shanghai 就可以了。

开机自启 ssh

sudo raspi-config
#进入选择找到 interfacing option 选择,然后找到 ssh,按回车使能 enable 就可以了。

docker相关软件安装

https://www.bilibili.com/read/cv17137378

安装docker

#可以直接使用脚本安装:
sudo curl -sSL https://get.docker.com | sh
#也可以使用国内 daocloud 一键安装命令:
sudo curl -sSL https://get.daocloud.io/docker | sh
#把 pi 用户添加到 docker 用户组,这样在执行 docker 命令时就不需要每次都带 sudo
sudo groupadd docker
sudo gpasswd -a $USER docker
newgrp docker#安装完毕后可以使用如下命令检查是否安装成功:
docker -v 
#设置开机自启动:
sudo systemctl enable docker

配置阿里云镜像加速

Docker必备六大国内镜像

https://www.cnblogs.com/boonya/p/15954368.html

#配置阿里云镜像加速
#创建文件
sudo mkdir -p /etc/docker
#写入配置
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://lz2nib3q.mirror.aliyuncs.com"]
}
EOF
#docker重启
sudo systemctl daemon-reload
sudo systemctl restart docker
#检测docker配置查看是否配置成功
sudo docker info#我的阿里加速链接
#https://ma4s1a5t.mirror.aliyuncs.com

常用命令

#查看 Docker 版本
sudo docker -v
sudo docker pull 仓库/镜像:版本(留空的话默认为 latest)
sudo docker run 加参数,用来创建容器
#查看运行容器
sudo docker ps
#查看所有下载的镜像
sudo docker images 
#docker重启
sudo systemctl daemon-reload
sudo systemctl restart docker
#检测docker配置
sudo docker info
#关闭docker服务
systemctl stop docker.socket
systemctl stop docker

安装 portainer - docker 管理图形化

官方文档

https://docs.portainer.io/v/ce-2.9/start/install/server/docker/linux

#下载 Docker 图形化界面 portainer 的镜像
sudo docker pull portainer/portainer-ce
#创建 portainer 数据卷
sudo docker volume create portainer_data
#运行 portainer
sudo docker run -d -p 9000:9000 \
--name portainer \
--restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce

docker-compose安装

sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-linux-aarch64" -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-composedocker-compose -v

其他

数据卷

两个容器通过数据卷来数据共享

#创建数据卷
docker volume create my-vol
#数据卷列表
docker volume ls
#查看数据卷具体信息
docker volume inspect my-vol
#删除数据卷
docker volume rm my-vol
#清除无主的数据卷
docker volume prune#启动一个容器并挂载一个数据卷到容器的/webapp目录(两种方式:)
docker run -d -P --name nginx -v my-vol:/webapp nginx
docker run -d -P --name nginx --mount source=my-vol,target=/webapp nginx
#如果本地数据卷或者本地目录尚未创建,-v命令则会自动创建,--mount则会报错
#如果是容器里的目录不存在,两者都会自动创建

gitea自部署Git库

小小树莓派干大事-自部署Git库(一)

https://defloop.com/xiao-xiao-shu-mei-pai-gan-da-shi-zi-bu-shu-gitku-er/

docker部署gitea

https://zhuanlan.zhihu.com/p/563413410

# 然后拉取镜像
sudo docker pull gitea/gitea:latest
# 运行容器
sudo docker run -itd \
--privileged=true \
--restart=always \
--name=gitea \
-p 3022:22 \
-p 3000:3000 \
-v /home/docker/gitea/data:/data \
gitea/gitea:latest

访问地址: http://192.168.1.6:3000/

安装界面修改参数

#服务器域名
192.168.1.6:3000
#SSH服务端口
3022
#http服务端口
3000

Drone(基于Gitea)

如何在 Raspberry Pi 上设置 Drone CI(以及为什么不应该)

https://devpress.csdn.net/cloudnative/62fb70c9c6770329308000a4.html#devmenu3

轻量级CI/CD自动构建平台Gitea+Drone保姆级实践教程

https://huaweicloud.csdn.net/63311ad4d3efff3090b522e6.html

【Tools】Drone + Gitee:以SpringBoot项目为例,实现自动化软件构建和测试,CI/CD 持续集成/持续部署

https://blog.csdn.net/weixin_42029283/article/details/128658518

在gitea中创建OAuth应用

  • 重定向URI填写: http://192.168.1.6:20080/login
  • 记下CLIENT_ID与CLIENT_SECRET

安装drone-server

# 下载Drone-server镜像
sudo docker pull drone/drone:latest
# 开启debug
# --env=DRONE_LOGS_DEBUG=true \
# 运行Drone-server
sudo docker run --privileged=true \--volume=/home/docker/drone-server/data:/data \--env=DRONE_GITEA_SERVER=http://192.168.1.6:3000 \--env=DRONE_GITEA_CLIENT_ID=ec2a1045-4b88-4a4e-a290-f061bc4e2356 \--env=DRONE_GITEA_CLIENT_SECRET=7WAfS57DtEW2NmdVwIk1rfkns02LxQKZWp4F5StFZaJB \--env=DRONE_RPC_SECRET=dc3f3edea46c3e486621f375251aea58 \--env=DRONE_SERVER_HOST=192.168.1.6:20080 \--env=DRONE_SERVER_PROTO=http \--env=DRONE_USER_CREATE=username:bxuits,admin:true \--publish=20080:80 \--publish=20443:443 \--restart=always \--detach=true \--env=TZ=Asia/Shanghai \--name=drone-server \drone/drone:latest

安装drone-runner-docker

# 下载Drone-runner-docker镜像
sudo docker pull drone/drone-runner-docker:latest
# 运行drone-runner-docker
sudo docker run --detach --privileged=true \--volume=/var/run/docker.sock:/var/run/docker.sock \--env=DRONE_RPC_PROTO=http \--env=DRONE_RPC_HOST=192.168.1.6:20080 \--env=DRONE_RPC_SECRET=dc3f3edea46c3e486621f375251aea58\--env=DRONE_RUNNER_CAPACITY=1 \--env=DRONE_RUNNER_NAME=drone-runner-docker \--env=DRONE_UI_USERNAME=root \--env=DRONE_UI_PASSWORD=root \--publish=23000:3000 \--restart=always \--name=drone-runner-docker \--env=TZ=Asia/Shanghai \drone/drone-runner-docker:latest

nginx安装

https://blog.csdn.net/weixin_46244732/article/details/114315708

#拉取镜像
sudo docker pull nginx:latest
#先启动
sudo docker run --name nginx -d \
-p 80:80 \
nginx:latest
#复制容器配置文件
sudo mkdir /home/docker/nginx
sudo docker cp nginx:/etc/nginx/nginx.conf /home/docker/nginx/nginx.conf
sudo docker cp nginx:/etc/nginx/conf.d /home/docker/nginx/conf.d
sudo docker cp nginx:/usr/share/nginx/html /home/docker/nginx/html
停止并移除容器
sudo docker stop nginx
sudo docker rm nginx
再次启动容器并作目录挂载
sudo docker run --name nginx -d --privileged=true \
-v /home/docker/common-data:/home/docker/common-data \
-v /home/docker/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /home/docker/nginx/conf.d:/etc/nginx/conf.d \
-v /home/docker/nginx/html:/usr/share/nginx/html \
-v /etc/localtime:/etc/localtime \
-e TZ="Asia/Shanghai" \
-p 80:80 \
--restart=always \
nginx:latest

nginx 读取文件配置

#打开
sudo nano /home/docker/nginx/conf.d/default.conf
#添加location /release {root   /home/docker/common-data;autoindex on;}
#重启后访问
http://192.168.1.6/release/

.drone.yml配置

【Tools】Drone + Gitee:以SpringBoot项目为例,实现自动化软件构建和测试,CI/CD 持续集成/持续部署

https://blog.csdn.net/weixin_42029283/article/details/128658518

kind: pipeline  # kind 属性定义了对象的种类。此示例定义了一个管道对象。
type: docker    # type 属性定义管道的类型。此示例定义了一个 Docker 管道,其中每个管道步骤都在 Docker 容器内执行。
name: HBuilderXSsq   # name 属性定义了管道的名称。您可以为您的项目定义一个或多个管道
platform:os: linuxarch: arm64steps: # 步骤部分定义了一系列串行执行的管道步骤。如果管道中的任何步骤失败,管道将立即退出- name: start # name 属性定义管道步骤的名称image: alpine:latest # image 属性定义了一个执行 shell 命令的 Docker 镜像。您可以使用来自任何 DockerHub 中的任何 Docker镜像。volumes: # 将容器内目录挂载到宿主机,仓库需要开启Trusted设置- name: common-datapath: /home/docker/common-data # 将应用打包好的Jar和执行脚本挂载出来commands: # commands 属性将在 Docker 容器内执行的 shell 命令列表定义为容器入口点。如果任何命令返回非零退出代码,则管道步骤将失败。- ls /home/docker/common-data- echo 删除release目录- rm -rf /home/docker/common-data/release- echo 创建release目录- mkdir -p /home/docker/common-data/release- echo 复制release目录- cp -r ssq/unpackage/release/* /home/docker/common-data/release/
volumes: # 定义流水线挂载目录,用于共享数据- name: common-datahost:path: /home/docker/common-data # 从宿主机中挂载的目录

相关文章:

树莓派4B arm64 搭建 docker+drone+gitea

树莓派4B arm64 搭建 dockerdronegitea 记录时间: 2023年02月10日 树莓派烧录 如何用树莓派搭建一台永久运行的个人服务器&#xff1f; https://mp.weixin.qq.com/s?__bizMzI5NjA0ODkwNA&mid2651847658&idx1&sn267a1257b43d4a76f2a081ed157b77f9&chksmf7b11…...

Java的JDBC编程

目录 1. 打开IDEA&#xff0c;新建Project 2. 引入依赖 &#xff08;1&#xff09;下载驱动包 &#xff08;2&#xff09;将驱动包导入Project 3. 编写代码 &#xff08;1&#xff09;创建数据源 &#xff08;2&#xff09;让代码和数据库服务器建立联系 &#xff08;3&…...

CSS:块格式化上下文(BFC)

块格式化上下文是块级盒子的布局过程发生的区域&#xff0c;也是浮动元素与其他元素交互的区域。 块格式化上下文(BFC)的创建 满足以下条件将创建块格式化上下文&#xff1a; 根元素&#xff08;&#xff09;浮动元素&#xff08;float 值不为 none&#xff09;绝对定位元素…...

paddle表情识别部署

表情识别模块1.环境部署1.1同样采用fastDeploy库1.2相关模型2.封装成静态库2.1参考[百度Paddle中PP-Mattingv2的部署并将之封装并调用一个C静态库](https://blog.csdn.net/weixin_43564060/article/details/128882099)2.2项目依赖添加2.3生成成功3.test3.1创建emotion_test项目…...

Python-第五天 Python函数

Python-第五天 Python函数一、函数介绍1. 什么事函数二、函数的定义1.函数的定义&#xff1a;2.案例三、函数的参数1.函数的传入参数2.案例升级四、函数的返回值1.什么是返回值2.返回值的语法3.None类型4.None类型的应用场景五、函数说明文档1.函数的说明文档2.在PyCharm中查看…...

【Python学习笔记】28.Python3 错误和异常

前言 作为 Python 初学者&#xff0c;在刚学习 Python 编程时&#xff0c;经常会看到一些报错信息&#xff0c;在前面我们没有提及&#xff0c;这章节我们会专门介绍。 Python3 错误和异常 Python 有两种错误很容易辨认&#xff1a;语法错误和异常。 Python assert&#xf…...

SQLServer 迁移到 MySQL 工具对比

我之所以会写这篇对比文章&#xff0c;是因为公司新产品研发真实经历过这个痛苦过程&#xff08;传统基于 SQL Server开发的C/S 产品转为 MySQL云产品&#xff09;。首次需要数据转换是测试环节&#xff0c;当时为了快速验证新研发云产品性能与结果准确性&#xff08;算法类&am…...

分析finebi5.x仪表板组件获取数据过程(数据是数据集或者sql的)

首先仪表板的公共连接类似:http://localhost:37799/webroot/decision/link/Bo6B 当我们访问这个连接时,会来到FineLinkAction的getShareReport方法。 public String getShareReport(HttpServletRequest req, HttpServletResponse res, @FinePathVariable("linkId"…...

设计模式--适配器模式 Adapter Pattern

设计模式--适配器模式 Adapter Pattern适配器模式 Adapter Pattern1.1 基本介绍1.2 工作原理类适配器模式对象适配器模式接口适配器模式小结适配器模式 Adapter Pattern 1.1 基本介绍 &#xff08;1&#xff09;适配器模式将某个类的接口转换成为客户端期望的另一个接口表示&…...

PVE虚拟机篇-rest api

rest api官方介绍 Proxmox VE API rest api文档 rest api文档 rest api token 调用pve rest api ,有两种认证方式 Ticket Cookie Ticket Cookie的方式是最为推荐的&#xff0c;获取的方式为&#xff0c;通过post请求&#xff0c;发送用户名和密码到pve的server端获取tok…...

2022-2025学年面向中小学生的白名单全国性竞赛活动清单及官网地址链接

**资料来源:爬虫爬取。** 教育部办公厅 工业和信息化部办公厅关于公布 首批特色化示范性软件学院名单的通知 教育部办公厅 工业和信息化部办公厅关于公布首批特色化示范性软件学院名单的通知 - 中华人民共和国教育部政府门户网站 教育部办公厅关于2022-2025学年面向中小学生…...

Python 高级编程之生成器与协程进阶(五)

文章目录一、概述二、生成器1&#xff09;生成器和迭代器的区别2&#xff09;生成器创建方式1、通过生成器函数创建2、通过生成器表达式创建3&#xff09;生成器表达式4&#xff09;yield关键字5&#xff09;生成器函数6&#xff09;return 和 yield 异同7&#xff09;yield的使…...

Django框架之视图和URL

视图和URL 站点管理页面做好了, 接下来就要做公共访问的页面了.对于Django的设计框架MVT. 用户在URL中请求的是视图.视图接收请求后进行处理.并将处理的结果返回给请求者.使用视图时需要进行两步操作 1.定义视图2.配置URLconf 1. 定义视图 视图就是一个Python函数&#xff0c…...

Python 的Tkinter包系列之七:好例子补充2

Python 的Tkinter包系列之七&#xff1a;好例子补充2 英汉字典&#xff08;使用文本文件记录英语单词和解释&#xff09;、简单的通信录&#xff08;使用SQLite数据库记录人员信息&#xff09; 一、tkinter编写英汉字典 先看效果图&#xff1a; 词典文件是一个文本文件&…...

每日一练-等差数列

等差数列&#x1f340;题目描述&#x1f33f;解题思路&#x1f338;Python源码&#x1f4e7;Summary&#x1f4c6;Date: 2023年2月10日 &#x1f3ac;Author: 小 y 同 学 &#x1f4c3;Classify: 蓝桥杯每日一练 &#x1f516;Language: Python &#x1f340;题目描述 题意   …...

使用动态参数构建CUDA图

文章目录使用动态参数构建CUDA图使用显式 API 调用构建 CUDA 图使用流捕获构建 CUDA 图组合方法执行结果总结使用动态参数构建CUDA图 自从在 CUDA 10 以来&#xff0c;CUDA Graphs 已被用于各种应用程序。 上图将一组 CUDA 内核和其他 CUDA 操作组合在一起&#xff0c;并使用指…...

在Fortran中调用Python教程

前言Python是机器学习领域不断增长的通用语言。拥有一些非常棒的工具包&#xff0c;比如scikit-learn&#xff0c;tensorflow和pytorch。气候模式通常是使用Fortran实现的。那么我们应该将基于Python的机器学习迁移到Fortran模型中吗&#xff1f;数据科学领域可能会利用HTTP AP…...

04-PS人像磨皮方法

1.高斯模糊磨皮 这种方法的原理就是建立一个将原图高斯模糊后图层, 然后用蒙版加画笔或者历史画笔工具将需要磨皮的地方涂抹出来, 通过图层透明度, 画笔流量等参数来控制磨皮程度 1.新建图层(命名为了高斯模糊磨皮), 混合模式设置为正常, 然后选择高斯模糊, 模糊数值设置到看…...

nginx反向代理+负载均衡上传webshell重难点+apache漏洞

nginx反向代理 nginx 负载均衡 负载均衡的策略 1、轮询&#xff1a;nginx默认就是轮询其权重都默认为1&#xff0c;服务器处理请求的顺序&#xff1a;ABABABABAB… upstream mysvr { server 192.168.137.131; server 192.168.137.136; }2、weight&#xff1a;跟据配置…...

transition组件的使用

<template><button click"flag !flag">切换</button><transition name"fade"><div v-if"flag" class"box"></div></transition> </template><script setup lang"ts"&g…...

AC6966B开发板开发准备-环境搭建:Windows下JL杰理AC696N开发环境配置

引言做蓝牙音频、音箱或IoT产品的开发&#xff0c;最怕的不是写代码&#xff0c;而是环境配半天跑不起来。JL杰理AC696N这颗芯片在耳机、音箱方案里很常见&#xff0c;性价比高&#xff0c;外设也全&#xff0c;但第一次接触杰理方案时&#xff0c;环境配置往往要先踩几个坑。尤…...

从物流仓库到游戏背包:三维装箱问题(3D-BPP)如何影响你的日常生活?

从物流仓库到游戏背包&#xff1a;三维装箱问题如何塑造我们的数字生活 清晨打开手机里的策略游戏&#xff0c;你发现背包格子又不够用了——那些珍贵的装备和药水总是无法完美摆放&#xff1b;周末搬家时&#xff0c;面对满屋的家具和纸箱&#xff0c;你突然意识到小货车可能装…...

Cherry Studio快速上手:从零部署到实战避坑指南

Cherry Studio快速上手&#xff1a;从零部署到实战避坑指南 【免费下载链接】cherry-studio &#x1f352; Cherry Studio is a desktop client that supports for multiple LLM providers. Support deepseek-r1 项目地址: https://gitcode.com/GitHub_Trending/ch/cherry-st…...

移动UI自动化测试架构选型:Maestro微内核架构与性能基准方法论

移动UI自动化测试架构选型&#xff1a;Maestro微内核架构与性能基准方法论 【免费下载链接】maestro Painless Mobile UI Automation 项目地址: https://gitcode.com/GitHub_Trending/ma/maestro 在当今快速迭代的移动应用开发环境中&#xff0c;UI自动化测试已成为保障…...

前端工程化实战:用changeset的预发布模式管理Beta版本(含Monorepo示例)

前端工程化实战&#xff1a;用Changeset的预发布模式管理Beta版本&#xff08;含Monorepo示例&#xff09; 在Monorepo架构下管理多个npm包的版本发布&#xff0c;一直是前端开发者面临的挑战之一。特别是当项目进入频繁迭代阶段&#xff0c;如何在保证稳定性的同时&#xff0c…...

突破设备壁垒:用swyh-rs构建零成本家庭音频网络的新方案

突破设备壁垒&#xff1a;用swyh-rs构建零成本家庭音频网络的新方案 【免费下载链接】swyh-rs Stream What You Hear written in rust, inspired by SWYH. 项目地址: https://gitcode.com/gh_mirrors/sw/swyh-rs 在智能家居普及的今天&#xff0c;音频设备却常常陷入&qu…...

Kalidokit:3D动作捕捉与虚拟角色驱动的开源解决方案

Kalidokit&#xff1a;3D动作捕捉与虚拟角色驱动的开源解决方案 【免费下载链接】kalidokit Blendshape and kinematics calculator for Mediapipe/Tensorflow.js Face, Eyes, Pose, and Finger tracking models. 项目地址: https://gitcode.com/gh_mirrors/ka/kalidokit …...

LWNN:面向8位单片机的零堆内存轻量神经网络C++库

1. 项目概述LightweightNeuralNetwork&#xff08;LWNN&#xff09;是一个专为资源极度受限嵌入式平台设计的轻量级全连接神经网络C库。其核心设计哲学是“零动态内存分配”——所有权重、偏置、中间激活值均在编译期通过模板元编程确定尺寸&#xff0c;并静态分配于栈空间或全…...

skimage计算彩色图像SSIM报错?别慌,手把手教你排查‘win_size exceeds image extent’的坑

彩色图像SSIM计算报错全解析&#xff1a;从源码到实战的深度排坑指南 当你满怀信心地调用skimage.metrics.structural_similarity计算彩色图像的SSIM指标时&#xff0c;突然遭遇"win_size exceeds image extent"的报错——即使已经设置了multichannelTrue参数。这种看…...

vjhhvdjvshfsfd

汽车零件分装报警系统项目描述&#xff1a; 针对汽车机油滤芯零件生产过程中标签错贴、漏贴导致的质量问题&#xff0c;开发一套基于机器视觉的标签识别与报警系统&#xff0c;实现零件标签的实时检测与异常报警。主要职责&#xff1a;使用海康威视工业相机&#xff08;30fps&a…...