Compare commits
13 Commits
1b0ca773a7
...
b1e28e0e63
Author | SHA1 | Date |
---|---|---|
zcy | b1e28e0e63 | |
zcy | 29a044c914 | |
zcy | ce1fb5dbea | |
zcy | 341b1e8be3 | |
zcy | 5fdf5f7407 | |
zcy | 067214be94 | |
zcy | 849c5b40d2 | |
zcy | dc5772d6f6 | |
zcy | 3963f7f283 | |
zcy | 8faa67975e | |
zcy | 7e95784323 | |
zcy | a5f5360017 | |
zcy | e1b158e086 |
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
|
@ -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";
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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 = $docModel->docTree((int)$this->params[0]);
|
||||
$doc = array_merge($doc,$child_docs);
|
||||
$top5 = $docModel->top5Doc();
|
||||
$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);
|
||||
}
|
||||
}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,
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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){
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
@ -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>
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
@ -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 %}
|
||||
|
|
|
@ -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 %}
|
|
@ -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>
|
|
@ -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;
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
{% block article %}
|
||||
<div id="container" >
|
||||
|
||||
</div>
|
||||
{% endblock %}
|
|
@ -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>
|
||||
|
|
|
@ -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 {
|
||||
|
|
154648
background.sql
154648
background.sql
File diff suppressed because one or more lines are too long
|
@ -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"
|
||||
}
|
||||
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -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
|
||||
|
||||
|
|
|
@ -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){
|
||||
|
|
Loading…
Reference in New Issue