Compare commits

...

13 Commits

Author SHA1 Message Date
zcy b1e28e0e63 mathjax 添加inline支持 2023-10-08 00:48:06 +08:00
zcy 29a044c914 添加modbus工具页 2023-10-04 00:33:43 +08:00
zcy ce1fb5dbea no message 2023-08-02 00:30:49 +08:00
zcy 341b1e8be3 no message 2023-08-02 00:29:02 +08:00
zcy 5fdf5f7407 no message 2023-08-02 00:27:55 +08:00
zcy 067214be94 no message 2023-07-29 17:55:53 +08:00
zcy 849c5b40d2 服务器地址修改 2023-07-29 17:55:53 +08:00
zcy dc5772d6f6 修复错误依赖 toc 使用 benjaminhoegh/parsedown-toc 2023-07-27 11:24:30 +08:00
zcy 3963f7f283 手动merge 2023-07-25 00:35:31 +08:00
zcy 8faa67975e Merge branch 'doctree' of https://gitee.com/290198252/api into doctree
# Conflicts:
#	App/Views/blog/template/work.html
2023-05-05 23:55:14 +08:00
zcy 7e95784323 no message 2023-01-10 17:40:20 +08:00
zcy a5f5360017 no message 2023-01-08 12:23:30 +08:00
zcy e1b158e086 主耶实现版本功能的展示 2023-01-08 01:02:04 +08:00
21 changed files with 155098 additions and 1651 deletions

View File

@ -1,40 +0,0 @@
server {
listen 80 default_server;
server_name localhost ;
root "C:/laragon/www/";
index index.html index.htm index.php;
# Access Restrictions
allow 127.0.0.1;
deny all;
include "C:/laragon/etc/nginx/alias/*.conf";
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass php_upstream;
#fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
location ~ ^/api/public/(.*)$ {
root /var/www/html;
fastcgi_pass php_upstream;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
try_files $uri $uri/ =500;
rewrite ^/api/public/(.*)$ /api/public/index.php?$1;
}
charset utf-8;
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
location ~ /\.ht {
deny all;
}
}

View File

@ -12,7 +12,7 @@ class Config
* Database host
* @var string
*/
const DB_HOST = '117.50.176.114';
const DB_HOST = '117.50.187.222';
/**
* Database name
* @var string
@ -29,7 +29,7 @@ class Config
* Database password
* @var string
*/
const DB_PASSWORD = '12345678';
const DB_PASSWORD = 'zhengcaiyu123';
/**
* Show or hide error messages on screen
* @var boolean
@ -76,7 +76,7 @@ class Config
}
static public function RedisServer() {
if("localhost" == $_SERVER['SERVER_NAME']){
return "192.168.0.200";
return "127.0.0.1";
}
if ( "0.0.0.0" == $_SERVER['SERVER_NAME']){
return "192.168.0.200";
@ -84,6 +84,7 @@ class Config
if("testingcloud.club" == $_SERVER['SERVER_NAME']){
return "127.0.0.1";
}
return "127.0.0.1";
}
}

View File

@ -108,6 +108,9 @@ class ArticleTree extends Controller
$redis->connect(\App\Config::RedisServer(), 6379);
//查看服务是否运行
$commentModel = new Models\DocComment();
if(sizeof($this->params) > 1)
$vertime = urldecode((string)$this->params[1]);
$doccoment = $commentModel->DocComments((int)$this->params[0]);
if(sizeof($this->params) > 0){
@ -118,15 +121,29 @@ class ArticleTree extends Controller
$firstpagedocs = [];
$child_docs = $docModel->getChildrenDocs($this->params[0]);
$doc = [];
if(sizeof($this->params) > 1){
if(\strstr($vertime,"20") == 0){
$doc = $docModel->docHistoryTree((int)$this->params[0],$vertime);
$doc = array_merge($doc,$child_docs);
}else{
$doc = $docModel->docTree((int)$this->params[0]);
$doc = array_merge($doc,$child_docs);
$top5 = $docModel->top5Doc();
}
}else{
$doc = $docModel->docTree((int)$this->params[0]);
$doc = array_merge($doc,$child_docs);
}
$doc_history = $docModel->doc_history((int)$this->params[0]);
$top5 = $docModel->top5Doc();
$markdowntoc = new \ParsedownToC();
$doc[0]['content'] = $markdowntoc->body($doc[0]['content']);
$doc[0]['toc'] = $markdowntoc->contentsList();
// $doc_history = $docModel->doc_history((int)$this->params[0]);
$markdown = new Parsedown;
foreach ($doc as $key => $value) {
@ -152,7 +169,7 @@ class ArticleTree extends Controller
"docs"=>$doc,
"comments" => $doccoment,
"comment_count" => count($doccoment),
"doc_type"=>$doc[0]["type"],
// "doc_type"=>$doc[0]["type"],
"openapi"=>\App\Config::OpenApiUrl(),
"treedoc"=>$doc_all,
"topdoc"=>$top5,

View File

@ -11,7 +11,6 @@ class NewUi extends Controller
{
function indexAction() {
$redis = new \Redis();
print_r(\App\Config::RedisServer());
$redis->connect(\App\Config::RedisServer(), 6379);
$docModel = new Models\Doc();

View File

@ -125,7 +125,16 @@ class Doc extends Model
return $recv;
}
}
public function docHistoryTree($id,$time){
if(is_integer($id)){
$db = static::getDB();
$stmt = $db->query('select * from
doc_history where doc_id = '.$id . '
and edit_time = '.'\''. $time.'\'');
$recv = $stmt->fetchAll();
return $recv;
}
}
public function titleDoc($title){
$db = static::getDB();
$stmt = $db->query('select * from doc_copy1 where title = \''.$title.'\'');
@ -162,6 +171,7 @@ class Doc extends Model
$result = $stmt->fetchAll();
return $result;
}
public function getAllTypeDocs(){
$typedocs = [];
$doctypes = $this->getTypes();
@ -191,7 +201,7 @@ class Doc extends Model
'name' => $value['title'],
'id' =>$value['id'],
'isParent'=> false,
'url' => \App\Config::Url() . "ArticleTree/article/" . $value['id']."/".$value['title'],
'url' => \App\Config::Url() . "ArticleTree/article/" . $value['id'],
'father' => (int)$value['father'],
'level' => $value['level']
);
@ -201,7 +211,7 @@ class Doc extends Model
'name' => $value['title'],
'id' =>$value['id'],
'isParent'=> false,
'url' => \App\Config::Url() . "ArticleTree/article/" . $value['id']."/".$value['title'],
'url' => \App\Config::Url() . "ArticleTree/article/" . $value['id'],
'father' => (int)$value['father'],
'level' => $value['level'],
'open' => true
@ -210,7 +220,6 @@ class Doc extends Model
if($opendocid == $value['father'])
$tmp['open'] = true;
$mapforbuildtree[$value['id']] = $tmp;
}
for($i = $max_level;$i >= 0;$i --){
foreach ($doc_all as $key => $value){

View File

@ -2,6 +2,16 @@
<html>
<head>
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
<script>
MathJax = {
tex: {
inlineMath: [['$', '$'], ['\\(', '\\)']]
},
svg: {
fontCache: 'global'
}
};
</script>
<script type="text/javascript" id="MathJax-script" async
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js"></script>
<meta charset="UTF-8">

View File

@ -7,6 +7,16 @@
<script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script type="text/javascript" src="/api/App/Views/blog/js/comment.js"></script>
<script>
MathJax = {
tex: {
inlineMath: [['$', '$'], ['\\(', '\\)']]
},
svg: {
fontCache: 'global'
}
};
</script>
<script type="text/javascript" id="MathJax-script" async
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js"></script>
<script src="https://cdn.jsdelivr.net/npm/chart.js@2.8.0"></script>
@ -82,7 +92,7 @@
最新文章
</a>
{% for doc in topdoc %}
<a href="{{ url }}ArticleTree/article/{{ doc.id }}/{{ doc.title }}" class="list-group-item">{{doc.title}}</a>
<a href="{{ url }}ArticleTree/article/{{ doc.id }}" class="list-group-item">{{doc.title}}</a>
{% endfor %}
</div>
@ -214,10 +224,12 @@ function expandNode(e) {
<div class="panel panel-default" id="doc_id_{{ doc.id }}" style="letter-spacing: 0.4px;">
<div class="panel-heading" style="font-size: 20px ; background: #1d5987;color: white">
{{ doc.title }} 历史版本:
<select NAME="TEMP" οnchange="" style="font-size: 20px ; background: #1d5987;color: white;margin-left: 15px; ">
<select NAME="TEMP" onchange="location = this.value;" style="font-size: 20px ; background: #1d5987;color: white;margin-left: 15px; ">
<option value></option>
{% for vertime in vestimes %}
<option value="AAAAAA">{{vertime.edit_time}}</option>
<option value="{{ url }}ArticleTree/article/{{ doc.id }}/{{vertime.edit_time}}" >
{{vertime.edit_time}}
</option>
{% endfor %}
</select>
<div style="float: right; margin-right: 30px;">
@ -470,7 +482,7 @@ function expandNode(e) {
let i = (result.Data.length)
if(i > 0){
while((i--) > 0){
insertContent(JSON.stringify(result.Data[i].highlight[0]),baseUrl + "NewUi/article/" + result.Data[i].id + "/2" ,result.Data[i].title)
insertContent(JSON.stringify(result.Data[i].highlight[0]),baseUrl + "ArticleTree/article/" + result.Data[i].id ,result.Data[i].title)
}
}
},

229
App/Views/blog/basic.html Normal file
View File

@ -0,0 +1,229 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>crystal blue</title>
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<link href="/api/App/Views/blog/css/left.css" rel="stylesheet" type="text/css">
<link href="/api/App/Views/blog/css/comment.css" rel="stylesheet" type="text/css">
<link href="/api/App/Views/blog/css/bootstrap-treeview.min.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="/api/App/Views/blog/js/left.js"></script>
<script type="text/javascript" src="/api/App/Views/blog/js/scripts.js"></script>
<script type="text/javascript" src="/api/App/Views/blog/js/comment.js"></script>
<script>
MathJax = {
tex: {
inlineMath: [['$', '$'], ['\\(', '\\)']]
},
svg: {
fontCache: 'global'
}
};
</script>
<script type="text/javascript" id="MathJax-script" async
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js"></script>
<script src="https://cdn.jsdelivr.net/npm/chart.js@2.8.0"></script>
<script src="/api/App/Views/blog/js//jquery-editable-select.min.js"></script>
<script src="/api/App/Views/blog/js//bootstrap-treeview.min.js"></script>
<link href="/api/App/Views/blog/css/jquery-editable-select.min.css" rel="stylesheet">
</head>
<style>
.container {
width: 800px;
height: 600px;
overflow: hidden;
display: block;
margin: 0 auto;
}
#top {
font-family: "Source Code Pro";
color: #FFFDFF;
font: 13px white;
position: absolute;
margin: 0 auto;
top: 0px;
bottom: auto;
left: 0px;
right: 0px;
width: 100%;
height: 80px;
z-index: 0;
padding: 24px 0px 0px 0px;
background: #20375f;
border: 1px solid rgb(187, 187, 187);
overflow: auto;
display: block;
visibility: visible;
overflow: hidden;
}
#top li {
display: inline-block;
margin: 3px 10px;
padding: 0;
cursor: pointer;
border: #0a0a0a 1px ;
background: #1d5987;
}
#sidebar {
margin-top: 1px;
padding-left: 0px;
display: inline-block;
bottom: 0px;
}
#container{
display: block;
position:absolute;
left:50%;
margin-left: -50%;
top:104px;
width:100%;
height:auto!important;
min-height:600px;
}
#container #left{
display: inline-block;
text-align: center;
margin: 0 auto;
width: 14%;
height: auto;
background: #d9d6cb;
}
#container #right{
vertical-align:top;
top: 0px;
display: inline-block;
width: 85%;
height: auto;
min-height: 800px;
float: top;
margin: -6px;
}
#content table{
display: table;
white-space: normal;
line-height: normal;
font-weight: normal;
font-size: medium;
font-style: normal;
text-align: start;
border-spacing: 2px;
font-variant: normal;
border: #0a0a0a 1px;
color: -internal-quirk-inherit;
border-collapse:collapse;
}
td{
display: table-cell;
vertical-align: inherit;
border-color: inherit;
border:1px solid;
}
tr{
display: table-row;
vertical-align: inherit;
border-color: inherit;
border:1px solid;
}
ul li a{
color: white;
}
#page{
bottom: 0px;
background: #eee;
height: 30px;
margin-top: 20px;
text-align: center;
}
#page ul {
padding:0; /* 将默认的内边距去掉 */
margin:auto; /* 将默认的外边距去掉 */
width: 10%;
height: 30px;
margin-bottom: 10px;
overflow: hidden;
}
#page ul li{
list-style:none; /* 将默认的列表符号去掉 */
padding:0; /* 将默认的内边距去掉 */
margin:0; /* 将默认的外边距去掉 */
float: left; /* 往左浮动 */
display: block;
width: 20px;
font-size: 25px;
text-decoration: none;
background: #20375f;
text-align: left;
}
</style>
<body style="background: #eee">
<div id="top">
<div style="display: inline;float: right;"></div>
<div id="sidebar">
<ul style="padding-left: 0px">
<li><a href="{{ url }}index" style="font-size: 25px;text-decoration: none; background: #20375f;">文章</a></li>
<li><a href="{{ url }}project" style="font-size: 25px;text-decoration: none; background: #20375f;">memo</a></li>
<li style="font-size: 25px;text-decoration: none; background: #20375f;">众筹需求</li>
<li><a href="{{ url }}data" style="font-size: 25px;text-decoration: none; background: #20375f;">数据聚合</a></li>
<li><a href="{{ url }}donate" style="font-size: 25px;text-decoration: none; background: #20375f;">赞助</a></li>
<li><a href="{{ url }}guide" style="font-size: 25px;text-decoration: none; background: #20375f;">本博客说明</a></li>
<li style="margin-left: 200px;font-size: 25px;text-decoration: none;background: #20375f;">文章搜索</li>
<li style="margin-left: 0px;font-size: 25px;">
<form style="background: #0b3e6f;">
<select id="editable-select" style="width: 300px; height: 30px;margin-top: -10px;color: white; " >
{% for title in alltitle %}
<option>{{ title.title }}</option>
{% endfor %}
</select>
</form>
</li>
</ul>
</div>
</div>
<?php echo {{ route }} ?>
{{ (route) }}
{% if route == "article" %}
{% include '/blog/template/article.html' %}
{% endif %}
{% if route == "donate" %}
{% include '/blog/template/donate.html' %}
{% endif %}
{% if route == "project" %}
{% include '/blog/template/project.html' %}
{% endif %}
{% if route == "data" %}
{% include '/blog/template/data.html' %}
{% endif %}
{% if route == "guide" %}
{% include '/blog/template/guide.html' %}
{% endif %}
<script type="text/javascript" async>
firstinit = false;
setTimeout( function(){
if (!firstinit){
delegateApi({{docid}});
updateMenu();
firstinit = true;
}else{
}
$("#doc_type_{{type}}").addClass("active");
$("#doc_type_{{type}}").find('ul.subMenu').slideDown();
},1000);
$('#editable-select').editableSelect({
effects: 'slide',
appendTo: 'body',
duration: 200,
}
).on('select.editable-select',function (e,li) {
window.location.replace("{{ url }}NewUi/search?title=" + li.text() + "&type=0");
});
</script>
</body>

View File

@ -249,7 +249,7 @@
let i = (result.Data.length)
if(i > 0){
while((i--) > 0){
insertContent(JSON.stringify(result.Data[i].highlight[0]),baseUrl + "NewUi/article/" + result.Data[i].id + "/2" ,result.Data[i].title)
insertContent(JSON.stringify(result.Data[i].highlight[0]),baseUrl + "ArticleTree/article/" + result.Data[i].id ,result.Data[i].title)
}
}
},

View File

@ -95,7 +95,7 @@ function expandNode(e) {
最新文章
</a>
{% for doc in topdoc %}
<a href="{{ url }}ArticleTree/article/{{ doc.id }}/{{ doc.title }}" class="list-group-item">{{doc.title}}</a>
<a href="{{ url }}ArticleTree/article/{{ doc.id }}" class="list-group-item">{{doc.title}}</a>
{% endfor %}
</div>
{% endblock %}

View File

@ -0,0 +1,32 @@
{% block article %}
<div id="container" >
<div id="left">
<!--包裹层-->
<div class="navMenuBox" >
<!--一级菜单-->
<ul class="navMenu" id="navMenu">
{% for key,docs in typedocs %}
<li id="doc_type_{{ docs.key }}">
<a href="#" id="arrow' + '">{{ key }}</a>
<ul class="subMenu" style="display: none;font-size: 25px;text-align: center;" >
{% for doc in docs.arr %}
<li><a href="https://www.testingcloud.club/wapi/Blog/article?title={{doc.title}}&type={{ docs.key }}"> {{ doc.title }}</a></li>
{% endfor %}
</ul>
</li>
{% endfor %}
<!--菜单项-->
</ul>
</div>
</div>
<div id="right" >
<img src="/api/App/Views/blog/res/pic/ali.jpg"
style="width: 300px;height: 420px;margin-left: 35%;margin-top: 50px">
</div>
<div id="footer">
<p style="font-size: 5px;margin: auto;width: 250px;text-align: center">个人网站,备案号: 闽ICP备19002644号-1</p>
<p style="font-size: 5px;margin: auto;width: 150px;text-align: center">testingcloud.club</p>
<p style="font-size: 5px;margin: auto;width: 150px;text-align: center">联系方式290198252@qq.com</p>
</div>
</div>
{% endblock %}

View File

@ -0,0 +1,10 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Title</title>
</head>
<body>
</body>
</html>

View File

@ -10,10 +10,16 @@
<head>
<title>{{ title }}</title>
<link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
<script>
MathJax = {
tex: {
inlineMath: [['$', '$'], ['\\(', '\\)']]
}
}
</script>
<script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script type="text/javascript" id="MathJax-script" async
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js"></script>
<script src="https://cdn.jsdelivr.net/npm/chart.js@2.8.0"></script>
<script src="/api/App/Views/blog/js//jquery-editable-select.min.js"></script>
<script src="/api/App/Views/blog/js//bootstrap-treeview.min.js"></script>
@ -25,6 +31,13 @@
color: black;
}
</script>
<script>
MathJax = {
tex: {
inlineMath: [['$', '$'], ['\\(', '\\)']]
}
}
</script>
<style>
.mouseOver{
background-color: #708090;

View File

@ -0,0 +1,5 @@
{% block article %}
<div id="container" >
</div>
{% endblock %}

View File

@ -24,10 +24,14 @@
<ul class="nav nav-tabs" style="font-size: 12px;">
<li> <a href="#duilib111" data-toggle="tab">万能协议调试器</a></li>
<li> <a href="#webrtc" data-toggle="tab">webrtc native demo</a></li>
<li> <a href="#ui2css" data-toggle="tab">数据采集器(软硬件)</a></li>
<li> <a href="#capture" data-toggle="tab">数据采集器(软硬件)</a></li>
<li> <a href="#wireless_open" data-toggle="tab">无线开关</a></li>
<li> <a href="#learning_tool" data-toggle="tab">深度学习模型验证工具</a></li>
<li> <a href="#vtk_tool" data-toggle="tab">vtk点云编辑工具</a></li>
<li> <a href="#superdog" data-toggle="tab">进程守护工具</a></li>
<li> <a href="#flasher" data-toggle="tab">openblt 下载工具</a></li>
<li> <a href="#opencv_tool" data-toggle="tab">opencv 验证工具</a></li>
<li> <a href="#modbus" data-toggle="tab">又一个modbus 调试工具</a></li>
</ul>
</div>
<div class="col-md-8 tab-content">
@ -127,18 +131,147 @@
<p style="display: block;font-size: 25px ; text-align: left;">
vtk+pcl 点云编辑工具
</p>
<img src="https://www.testingcloud.club/sapi/api/image_download/eb749834-e3fc-11ec-827c-525400986ccb.png">
<img src="https://www.testingcloud.club/sapi/api/image_download/b0b75462-eca4-11ed-9dd3-525400986ccb.png">
<p style="display: block;font-size: 15px ; text-align: left;">
实现功能:
</p>
<p style="display: block;font-size: 15px ; text-align: left;">
通过wifi/蓝牙实现远程开关电器或者其他电子设备
1. 点云文件加载显示(.pcd obj stl)
</p>
<p style="display: block;font-size: 15px ; text-align: left;">
电路原理图:
2. 点云重建
</p>
<p style="display: block;font-size: 15px ; text-align: left;">
3. 点云三角化
</p>
<p style="display: block;font-size: 15px ; text-align: left;">
4. 点云缩放
</p>
<p style="display: block;font-size: 15px ; text-align: left;">
下载地址:
</p>
<a href="https://gitee.com/290198252/pcl_vtk"> 源码</a>
<a href="https://gitee.com/290198252/pcl_vtk/releases/tag/v1.0"> 二进制包</a>
</div>
<div class="tab-pane fade in active" id="capture">
<p style="display: block;font-size: 25px ; text-align: left;">
虚拟示波器
</p>
<p style="display: block;font-size: 20px ; text-align: left;">
硬件实物图:
</p>
<img src="https://www.testingcloud.club/sapi/api/image_download/0e10df17-8d97-11ed-837a-525400986ccb.jpeg">
<p style="display: block;font-size: 20px ; text-align: left;">
实现原理
</p>
<img src="https://www.testingcloud.club/sapi/api/image_download/a9818cce-8d98-11ed-837a-525400986ccb.png">
<p style="display: block;font-size: 20px ; text-align: left;">
基本性能
</p>
<p style="display: block;font-size: 20px ; text-align: left;">
采集频率: 取决于外部adc模块和ebaz4205矿板的以太网接口速率,最高可以达到100M/8 约为12.5MPS
</p>
<p style="display: block;font-size: 20px ; text-align: left;">
上位机实现功能: 采集,显示波形,存储wave文件。
</p>
<p style="display: block;font-size: 20px ; text-align: left;">
参数可运行时配置
</p>
<p style="display: block;font-size: 20px ; text-align: left;">
上位机:
</p>
<img src="https://www.testingcloud.club/sapi/api/image_download/ee7421f4-8da0-11ed-837a-525400986ccb.png">
<p style="display: block;font-size: 16px ; text-align: left;">
显示缓冲区大小可调
</p>
<p style="display: block;font-size: 16px ; text-align: left;">
刷新率可调节
</p>
<p style="display: block;font-size: 16px ; text-align: left;">
触发显示刷新可调节
</p>
</div>
<div class="tab-pane fade in active" id="superdog">
<p style="display: block;font-size: 25px ; text-align: left;">
进程守护工具
</p>
<img src="https://www.testingcloud.club/sapi/api/image_download/8fa27c4a-18e7-11ee-8b4f-525400986ccb.png">
<p style="display: block;font-size: 16px ; text-align: left;">
基本功能:
</p>
<p style="display: block;font-size: 16px ; text-align: left;">
1. 守护进程,被守护程序崩溃后自动重启。
</p>
<p style="display: block;font-size: 16px ; text-align: left;">
2. 进程输出获取,显示在编辑框中。
</p>
<p style="display: block;font-size: 16px ; text-align: left;">
<a href="https://gitee.com/290198252/rolekeeper/releases/download/1.0/rolekeeper.zip"> 二进制包</a>
</p>
</div>
<div class="tab-pane fade in active" id="flasher">
<p style="display: block;font-size: 25px ; text-align: left;">
openblt 烧录工具
</p>
<img src="https://www.testingcloud.club/sapi/api/image_download/8c0b48c5-13e1-11ee-9dd3-525400986ccb.png">
<p style="display: block;font-size: 16px ; text-align: left;">
基本功能:
</p>
<p style="display: block;font-size: 16px ; text-align: left;">
1. 加载openblt 文件,下载到具有openblt bootloader 运行的单片机中。
</p>
<p style="display: block;font-size: 16px ; text-align: left;">
<a href="https://gitee.com/290198252/openblt_flahser"> 二进制包</a>
</p>
</div>
<div class="tab-pane fade in active" id="opencv_tool">
<p style="display: block;font-size: 25px ; text-align: left;">
opencv 功能验证工具(开源项目二次开发)
</p>
<img src="https://www.testingcloud.club/sapi/api/image_download/1641faed-3088-11ee-8ba6-525400797f57.png">
<p style="display: block;font-size: 16px ; text-align: left;">
基本功能:
</p>
<p style="display: block;font-size: 16px ; text-align: left;">
1. 插件化图像处理流程,支持自定义图像处理流程。
2. 完善的日志和权限管理
</p>
<p style="display: block;font-size: 16px ; text-align: left;">
<a href=""> 二进制包</a>
</p>
</div>
<div class="tab-pane fade in active" id="modbus">
<p style="display: block;font-size: 25px ; text-align: left;">
又一个modbus调试工具
</p>
<img src="https://www.testingcloud.club/sapi/api/image_download/71dc0313-620a-11ee-8ba6-525400797f57.png">
<p style="display: block;font-size: 16px ; text-align: left;">
最近混迹物联网企业,发现目前缺少一个简易可用的modbus调试工具,本软件旨在为开发者提供一个简单modbus测试工具。</br>
主打一个代码简单易修改。</br>
特点:</br>
</p>
<p style="display: block;font-size: 16px ; text-align: left;">
1. 基于QT5
</p>
<p style="display: block;font-size: 16px ; text-align: left;">
2. 基于libmodbus
</p>
<p style="display: block;font-size: 16px ; text-align: left;">
3. 三方库完全跨平台,linux/windows。
</p>
<p style="display: block;font-size: 16px ; text-align: left;">
<a href="https://gitee.com/290198252/modbus_rtu_test"> 二进制包</a>
</p>
</div>
</div>
</div>

View File

@ -57,7 +57,7 @@ abstract class Model
if ($db === null) {
$dsn = "";
if($_SERVER['HTTP_HOST'] == '127.0.0.1')
$dsn = 'mysql:host=117.50.176.114' . ';dbname=' . Config::DB_NAME . ';charset=utf8';
$dsn = 'mysql:host=117.50.187.222' . ';dbname=' . Config::DB_NAME . ';charset=utf8';
else
$dsn = 'mysql:host=127.0.0.1' . ';dbname=' . Config::DB_NAME . ';charset=utf8';
try {

File diff suppressed because one or more lines are too long

View File

@ -1,9 +1,9 @@
{
"require": {
"twig/twig": "~2.0",
"twig/twig": "~3.0",
"propel/propel": "~2.0@dev",
"erusev/parsedown": "^1.7",
"hoegh/parsedown-toc": "^1.3"
"benjaminhoegh/parsedown-toc": "^1.4"
},
"repositories": {
"packagist": {
@ -23,6 +23,6 @@
]
},
"require-dev": {
"contributte/nextras-orm-generator": "^0.2.0"
}
}

1524
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,7 @@
rm ../code.tar.gz
del ../code.tar.gz
tar.exe -czf ../code.tar.gz ./*
scp -i ./id_rsa ../code.tar.gz ubuntu@117.50.176.114:/home/ubuntu/
ssh -t -i ./id_rsa ubuntu@117.50.176.114 sudo tar -zxvf /home/ubuntu/code.tar.gz -C /var/www/html/api/
ssh -t -i ./id_rsa ubuntu@117.50.176.114 sudo rm /home/ubuntu/code.tar.gz
scp -i ./id_rsa_s ../code.tar.gz ubuntu@117.50.187.222:/home/ubuntu/
ssh -t -i ./id_rsa_s ubuntu@117.50.187.222 sudo tar -zxvf /home/ubuntu/code.tar.gz -C /var/www/html/api/
ssh -t -i ./id_rsa_s ubuntu@117.50.187.222 sudo rm /home/ubuntu/code.tar.gz

View File

@ -49,7 +49,6 @@ if($_SERVER['HTTP_HOST'] == '117.50.176.114'){
}
try{
//for prefight request
if($_SERVER['REQUEST_METHOD'] == 'OPTIONS'){
@ -60,7 +59,6 @@ try{
//print "";
return;
}else{
//print_r($_SERVER['REQUEST_URI'],\App\Config::ROUTE_PREFIX_DEV);
$router->dispatch($_SERVER['REQUEST_URI']);
}
}catch (Exception $exception){