Home Assistant 开源的智能家居平台

开源地址:https://github.com/home-assistant

官网:https://www.home-assistant.io/

Homeassistant是一个基于python3语言的开源家庭自动化平台,它可以监控你家里的所有设备,并实现自动化控制;它尤其适合运行在开源硬件平台树莓派上。

18位身份证号码数字代表的信息

我国现在使用的18位身份证号码标准在国家质量技术监督局于1999年7月1日实施的GB11643-1999《公民身份号码》中做了明确的规定,其编排规则如下:

(1)前1、2位数字表示:所在省份的代码;

(2)前3、4位数字表示:所在城市的代码;

(3)前5、6位数字表示:所在区县的代码;

(4)前7-14位数字表示:出生年月日;

(5)前15-16位数字表示:所在地派出所代码;

(6)第17位数字表示性别:奇数表示男性,偶数表示女性;

(7)第18位数字是校验码:检验码可以是0-9的数字,有时也用X表示。

其中第18位数字是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的。

JTBC5中字段注释的说明

字段注释是一个JSON字符串并含有以下信息:

参数名 作用 参数值
mode 模式 normal(默认)
auto
manual
required 是否必填 true(默认)
false
format 字段格式 int 整型
email 电子邮件
date 日期
datetime 日期时间
idcard 身份证(中国大陆)
name 名字
mobile 手机号(中国大陆)
json JSON
intSeries 整数序列(半角逗号相隔的数字)
natural 常规字符(字母数字及中下划线)
url 网址
ip IP地址
ipv4 IP地址(v4)
ipv6 IP地址(v6)
chinese 纯中文
slug 小段网址(小写字母数字及中划线)
dateRange 日期区间
datetimeRange 日期时间区间

 

上述表格中的mode参数,当值为auto时,表示为自动字段(如自增字段),任何校验和设置值均无效,当值为manual时,表示为手动字段

来源:https://help.jtbc.cn/php/5.0/#model/automatic.xml

JTBC5链接数据库的几种方式

use Jtbc\Model\TinyModel;

再实例化TinyModel类

$model = new TinyModel();//缺省设置下默认为当前模块对应的数据库表//
// $model = new TinyModel('news');//直接指定一个名叫news的数据库表//
// $model = new TinyModel(new Module('universal/link'));//指定一个模块,再通过模块获取对应的数据库表//
// $model = new TinyModel(new Module('universal/tag'), 'map');//指定一个模块,再通过指定第2个子表名称来获取对应的数据库表//
// $model = new TinyModel(DBLink: 'default', genre: 'news');//通过具名参数的设置来获取对应的数据库表//

 

参考:https://help.jtbc.cn/php/5.0/#model/concept.xml

JTBC5支持多选分类的尝试

后记:

JTBC5.0后台云端市场已出多分类模块,有需要的可以前云安装使用,本文不再提供修改方法。

 

分类字段注释修改

{"type":"transfer","locked":true}

后台代码修改

/Public/news/common/diplomat/manage.php

$item -> category_title = $category -> getTitleById($item -> category);

修改成

$item -> category_title = $category -> getTitleById(json_decode($item -> category,true)[0]);

 

另后台分类筛选也要修改

if ($this -> guard -> role -> isSuper !== true)
{
if (!empty($myCurrentCategory))
{
$model -> where -> category -> in($myCurrentCategory);
}
else if (!empty($myCategory))
{
$model -> where -> category -> in($myCategory);
}
}

目前尚未修改,后续需要时再调整

另前台需同步修改代码

 

原生JS实现拖拽功能

来源:https://www.jb51.net/article/202249.htm

本文实例为大家分享了JS实现拖拽功能的具体代码,供大家参考,具体内容如下

拖拽的原理:三个事件 onmousedown、onmousemove、onmousemove

1、鼠标按下,触发onmousedown,获取鼠标坐标x,y,获取元素坐标x,y

通过event.clientX、event.clientY获取鼠标位置的坐标

let x = e.clientX - box.offsetLeft; //鼠标点击坐标距离盒子左边缘的距离
let y = e.clientY - box.offsetTop; //鼠标点击坐标距离盒子上边缘的距离

2、设置元素left、top值,(元素要设置position:absolute)

box.style.left = ev.clientX - x + 'px';
box.style.top = ev.clientY - y + 'px';

3、放开鼠标取消dom事件

下面是详细代码:我只开了横向移动

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title>Document</title>
 <style>
 #box {
 width: 100px;
 height: 100px;
 background: red;
 position: absolute
 }
 </style>
</head>
 
<body style="position: relative;overflow: hidden;">
 <div id="box">
 </div>
 <script>
 window.onload = function () {
 let box = document.getElementById('box')
 box.onmousedown = function (ev) {
 let e = ev || event;
 let x = e.clientX - box.offsetLeft; //鼠标点击坐标距离盒子左边缘的距离
 let y = e.clientY - box.offsetTop; //鼠标点击坐标距离盒子上边缘的距离
 document.onmousemove = function (ev) {
  let e = ev || event;
  box.style.left = ev.clientX - x + 'px';
  box.style.top = ev.clientY - y + 'px';
  let bodyScreenX = ev.screenX
  let bodyClientWidth = document.body.clientWidth
  document.onmouseup = function (ev) {
  if (ev.clientX - x < 0) {
  box.style.left = 0
  } else if (bodyScreenX > bodyClientWidth) {
  box.style.right = 0
  box.style.left = bodyClientWidth - 100 + 'px'
  }
  document.onmousemove = null;
  document.onmouseup = null;
  }
 }
 }
 }
 </script>
</body>
</html>

 

AI制作SVG图标注意事项

背景:新手小白制作svg图标的经验。高手请绕行,感谢。

1.AI新建文档

配置文件web

宽度和高度建议相同,图标我们来创建正方形的。

2.在画板中制作图标

图形:建立复合路径

文字:创建轮廓

3.保存为svg格式

勾选使用画板,全部

4.设置输出参数

配置文件:svg 1.1

文字:svg

子集化:仅使用的字形

图像位置:嵌入

更多选项:

CSS属性:演示文稿属性

输出较少<tspan>元素

5.编辑保存的svg文件源码

<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="160px" height="160px" viewBox="0 0 160 160" enable-background="new 0 0 160 160" xml:space="preserve">

修改为

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 160 160">

 

6.浏览器打开图标查看效果

 

 

至此结束。

JTBC5.0同个文件无法二次上传的问题

JTBC5.0中,上传图片功能,在已经上传过图片后,再次重新传当前文件时,无法继续上传,需要刷新页面后才能重新上传当前文件.

官方回复说是:

那是你选了一样的文件
上传监测的是onchange
是上传1个文件,又选一样的文件就是没有change

记录以作后续参考.

Proxifier3.42汉化版

来源:汉化新世纪

网盘下载:(访问密码:wdja)

http://share.menglei.net/f/16922972-555672630-aa23bb

Proxifier 是一款功能非常强大的socks5客户端,可以让不支持通过代理服务器工作的网络程序能通过HTTPS或SOCKS代理或代理链。支持64位系统,支持Xp,Vista,Win7,支持socks4,socks5,http代理协议,支持TCP,UDP协议,可以指定端口,指定IP,指定程序等运行模式,兼容性非常好。
有许多网络应用程序不支持通过代理服务器工作,因此不能用于局域网或防火墙后面。这些会损害公司的隐私和导致很多限制。Proxifier 解决了这些问题和所有限制,让您有机会不受任何限制使用你喜爱的软件。此外,它让你获得了额外的网络安全控制,创建代理隧道,并添加使用更多网络功能的权力。

Proxifier 使您可以:

1、通过代理服务器运行任何网络应用程序。对于软件不需要有什么特殊配置;整个过程是完全透明的。
2、通过代理服务器网关访问受限制的网络。
3、绕过防火墙的限制。
4、“隧道”整个系统 (强制所有网络连接,包括系统工作都通过代理服务器连接)。
5、通过代理服务器解析 DNS 名称。
6、灵活的代理规则,对于主机名和应用程序名称可使用通配符。
7、通过隐藏您的 IP 地址的获得安全隐私。
8、通过代理服务器链来工作,可使用不同的协议。
9、查看当前网络活动的实时信息(连接,主机,时间,带宽使用等)。
10、维护日志文件和流量转储。
11、获得详细的网络错误报告。

汉化使用说明:

1、此为汉化注册版,直接安装后即可使用。
2、因程序原因,少许英文不能汉化,否则会与原英文软件生成的配置文件不兼容。
3、此软件包含大量的 Unicode 资源,汉化超累,其中有好多是日志文件的信息内容,等汉化完成测试时才发现,日志文件的内容不能汉化,否则另外保存的日志文件内容不正常,不能保存中文。但在主程序中看的日志是完全正常的,因此还是将日志汉化了,毕竟最终找文件看日志的人不多。
4、此汉化无捆绑。