html basic

html basic button <button name="button0">button0</button> HTML Formatting Elements <b> - Bold text <strong> - Important text <i> - Italic text <em> - Emphasized text <mark> - Marked text <small> - Smaller text <del> - Deleted text <ins> - Inserted text <sub> - Subscript text <sup> - Superscript text - line break node type ELEMENT_NODE (元素节点):值为 1 ATTRIBUTE_NODE (属性节点):值为 2 TEXT_NODE (文本节点):值为 3 CDATA_SECTION_NODE (CDATA区段节点):值为 4 ENTITY_REFERENCE_NODE (实体引用节点):值为 5 (在HTML中不常见) ENTITY_NODE (实体节点):值为 6 (在HTML中不常见) PROCESSING_INSTRUCTION_NODE (处理指令节点):值为 7 COMMENT_NODE (注释节点):值为 8 DOCUMENT_NODE (文档节点):值为 9 DOCUMENT_TYPE_NODE (文档类型节点):值为 10 DOCUMENT_FRAGMENT_NODE (文档片段节点):值为 11 NOTATION_NODE (符号节点):值为 12 (在HTML中不常见)

2020-09-29 · 1 min · 92 words · -

promise

“promise” ECMAscript 6 原生提供了 Promise 对象。 Promise 对象代表了未来将要发生的事件,用来传递异步操作的消息。 Promise 对象有以下两个特点: 对象的状态不受外界影响。Promise 对象代表一个异步操作,有三种状态: pending: 初始状态,不是成功或失败状态。 fulfilled: 意味着操作成功完成。 rejected: 意味着操作失败。 只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。这也是 Promise 这个名字的由来,它的英语意思就是「承诺」,表示其他手段无法改变。 一旦状态改变,就不会再变,任何时候都可以得到这个结果。Promise 对象的状态改变,只有两种可能: 从 Pending 变为 Resolved 和从 Pending 变为 Rejected。只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果。就算改变已经发生了,你再对 Promise 对象添加回调函数,也会立即得到这个结果。这与事件 (Event) 完全不同,事件的特点是,如果你错过了它,再去监听,是得不到结果的。 Promise 优缺点 有了 Promise 对象,就可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。此外,Promise 对象提供统一的接口,使得控制异步操作更加容易。 Promise 也有一些缺点。首先,无法取消 Promise,一旦新建它就会立即执行,无法中途取消。其次,如果不设置回调函数,Promise 内部抛出的错误,不会反应到外部。第三,当处于 Pending 状态时,无法得知目前进展到哪一个阶段 (刚刚开始还是即将完成) 。 https://www.liaoxuefeng.com/wiki/1022910821149312/1023024413276544 https://www.runoob.com/w3cnote/javascript-promise-object.html <!DOCTYPE html> <html> <head> <script type="text/javascript"> console.log('javascript0') function resolve(str) { console.log('resolve.' + str) } function reject(str) { console.log('reject.' + str) } function fun0() { console.log('fun0 start') //test(resolve, reject) new Promise(test).then(function (result) { console.log('成功: ' + result); }, function (result) { console.log('成功1: ' + result); }).catch(function (reason) { console.log('失败: ' + reason); }); } function log(str) { console.log(str) } function callback() { console.log('Done'); } function test(resolveParams, rejectParams) { var timeOut = Math.random() * 2; log('set timeout to: ' + timeOut + ' seconds.'); setTimeout(function () { if (timeOut < 1) { log('call resolve()...'); resolveParams('200 OK'); } else { log('call reject()...'); rejectParams('timeout in ' + timeOut + ' seconds.'); } }, timeOut * 1000); } </script> </head> <body> body0 <button name="btn0" onclick="fun0()">button0</button> </body> </html> https://www.cnkirito.moe/future-and-promise/

2020-09-29 · 1 min · 174 words · -

Service Worker

“Service Worker” Service Worker 是浏览器在后台独立于网页运行的脚本 Service workers 本质上充当 Web 应用程序、浏览器与网络 (可用时) 之间的代理服务器。这个 API 旨在创建有效的离线体验,它会拦截网络请求并根据网络是否可用采取来适当的动作、更新来自服务器的的资源。它还提供入口以推送通知和访问后台同步 API。 推送消息,背景后台同步geofencing (地理围栏定位) 它是一种 JavaScript Worker,无法直接访问 DOM。 Service Worker 通过响应 postMessage 接口发送的消息来与其控制的页面通信,页面可在必要时对 DOM 执行操作。 Service Worker 是一种可编程网络代理,让您能够控制页面所发送网络请求的处理方式。 Service Worker 在不用时会被中止,并在下次有需要时重启,因此,您不能依赖 Service Worker onfetch 和 onmessage 处理程序中的全局状态。 如果存在您需要持续保存并在重启后加以重用的信息,Service Worker 可以访问 IndexedDB API。 Service Worker 广泛地利用了 promise,因此如果您不熟悉 promise,则应停下阅读此内容,看一看 Promise 简介。 Service Worker 是一个浏览器中的进程而不是浏览器内核下的线程,因此它在被注册安装之后,能够被在多个页面中使用,也不会因为页面的关闭而被销毁。因此,Service Worker 很适合被用与多个页面需要使用的复杂数据的计算 chrome # 检查是否已经启用service workers chrome://inspect/#service-workers chrome://serviceworker-internals https://juejin.im/post/6844903613270081543

2020-09-29 · 1 min · 64 words · -

n1 coreelec

“n1 coreelec” 从官网下载最新版本的coreelec, CoreELEC-Amlogic.arm-9.2.4.2-Generic.img.gz https://coreelec.org/ 用7z 解压 CoreELEC-Amlogic.arm-9.2.4.2-Generic.img.gz, 得到 CoreELEC-Amlogic.arm-9.2.4.2-Generic.img 用Win32DiskImager.exe将CoreELEC-Amlogic.arm-9.2.4.2-Generic.img写入U盘 替换文件 运行N1降级工具,选择3 进入线刷模式 在提示插入usb线时,插入u盘 , 进入 U盘上的 coreelec系统, 开启ssh支持 ssh 登录 coreelec, 执行以下命令将coreelec写入emmc /flash/installtoemmc

2020-09-11 · 1 min · 25 words · -

windows install

“windows install” WoeUSB, linux 制作 windows 安装盘 WoeUSB 是一款主要用于在 Linux 下制作 Windows 启动 U 盘的开源软件 run woeusb gui woeusbgui wsl2 https://docs.microsoft.com/en-us/windows/wsl/install-win10 https://docs.microsoft.com/zh-cn/windows/wsl/wsl2-kernel hyper v https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

2020-09-07 · 1 min · 30 words · -

bt, pt

“bt, pt” PT(PrivateTracker)下载其实也是BT下载的 一种,和BT下载有两个最明显的不同,即私密范围下载和流量统计。BT下载时,BT客户端首先解析.torrent种子文件得到Tracker地址,然后 连接Tracker服务器,Tracker服务器回应下载者的请求,提供其他下载者 (包括发布者) 的IP,下载者再连接其他下载者。根据.torrent文件,两者分别向对方告知自己已经有的块 (数据) ,然后交换对方没有的数据,此时不需要其他服务器参与,分散了单个线路上的数据流量,因此减轻了服务器负担。Tracker是BT下载的一个重要组成部分,用于记录上下载用户的互联信息,而PT下载和BT下载的区别是PT下载的Tracker是私有的,BT下载的Tracker则是公开的。BT种子即是一种信息文件,把一个大文件分成若干个4M小文件进行传输,这样用户可以方便的交换文件的各个部分,也可以同时通过多个IP/TCP连接进行多线路的高速下载。 PT下载是一种小范围的BT下载,通过禁用DHT有要求地选择并控制用户数量。这样,在有限的范围内,下载的用户基本上都可以达到自己带宽的上线。PT下载还通过论坛制度的约束机制将BT的设计理念现实化,真正让用户做到下载的过程中努力上传。因此,PT下载的速度很快,能够让用户带宽得到最大程度的使用,而且种子时效更长。当然,这取决于种子的数量和质量,而种子的数量和质量BT和PT是没有区别的。 有些人会说,PT既然是小范围内的活动,如何做到的呢?首先,划分范围最好的方式就是论坛,新会员必须通过前期的会员邀请才可以加入,邀请注册机制有效的控制了下载人数,其次是通过passkey,登陆论坛后,系统会给该帐户用户分配一个固定的passkey,用户下载的种子中,会包passkey的信息,若没有passkey的认证通过,即便其他用户得到了种子,也不能进行下载。第三,PT下载软件使用的是可以计算下载上传流量的BT下载软件,例如Azureus,uTorrent,Transmission等,这类软件下载前,首先要检测用户的passkey,通过后再和种子的passkey进行对比,然后才可以下载。第四,通过流量统计控制,PT下载的约束机制就是流量统计,必须保证一定的上传量才能下载,如果界定流量,会不会泄露个人信息呢?流量统计实际是通过软件访问Tracker服务器发送自己的passkey和上传下载信息,并通过PT网站的种子追踪器,最后来判断用户的流量。界定用户流量仅仅是通过uTorrent等软件中的专用PHP程序,所以并不会泄露用户的其他隐私信息,完整的PT下载是通过passkey+Tracker服务器两种手段实现,两者缺一不可。 PT通过对做种时间和流量的要求在一定程度上避免了BT中存在的下完不做种的现象,因此在网络上,尤其是需要大文件 (如高清) 资源交换的时候广受欢迎, 在PT站里,“水管"代表上传带宽的大小,大水管可以通过快速的上传获得积分和流量,PT站点也会采取措施 (比如做种时间,优惠等) 使上传较慢的小水管能够参与贡献和共享资源。

2020-09-06 · 1 min · 17 words · -

Mailpit

Mailpit Mailpit - email testing for developers sudo bash < <(curl -sL https://raw.githubusercontent.com/axllent/mailpit/develop/install.sh) # 启动 mailpit, -h for help ./mailpit. mailpit -h docker docker run -d \ --restart unless-stopped \ --name=mailpit \ -p 8025:8025 \ -p 1025:1025 \ axllent/mailpit:v1.13 mailpit sendmail 准备一个文本文件 Date: Mon, 23 Jun 2015 11:40:36 -0400 From: user0 <user0@wiloon.com> To: user1 <user1@wiloon.com> Subject: subject0 body0 发送邮件 mailpit sendmail < foo.txt 在浏览器里查看邮件 http://localhost:8025

2020-09-01 · 1 min · 65 words · -

brctl

“brctl” brctl brctl is deprecated use bridge command from iproute2 insted https://wiki.archlinux.org/index.php/Network_bridge 查询网桥信息 brctl show pacman -S bridge-utils apt-get install bridge-utils # 查看网桥 brctl show

2020-08-09 · 1 min · 25 words · -

软路由, docker

“软路由, docker” docker network create -d macvlan \ --subnet=192.168.50.0/24 --gateway=192.168.50.1 \ -o parent=enp1s0 \ -o macvlan_mode=bridge \ macvlan docker network create -d macvlan \ --subnet=192.168.254.0/24 --gateway=192.168.254.1 \ --ipv6 --subnet=fe81::/16 --gateway=fe81::1 \ -o parent=enp1s0 \ -o macvlan_mode=bridge \ dMACvWAN 导入镜像 docker import openwrt-19.07.2-x86-64-generic-rootfs.tar.gz openwrt:17.07.2 docker run docker run -d \ --network macvlan \ --privileged \ --name openwrt \ openwrt:17.07.2 \ /sbin/init

2020-08-03 · 1 min · 60 words · -

vlan

“vlan” vlan范围: 0~4095 0,4095 保留 仅限系统使用 用户不能查看和使用这些VLAN 1 默认 VLAN 用户能够使用该 VLAN,但不能删除它 2-1001 正常 用于以太网的 VLAN 用户可以创建、使用和删除这些VLAN 1002-1005 正常 用于 FDDI 和令牌环的, VLAN 用户不能删除这些 VLAN 1006-1024 保留 仅限系统使用 用户不能查看和使用这些VLAN 1025-4094 扩展 仅用于以太网VLAN Tagged 数据帧 Tagged数据帧 Untagged数据帧 Untagged数据帧 in out in out Tagged端口 原样接收 原样发送 按端口PVID打TAG标记 按照PVID打TAG标记 Untagged端口 丢弃 去掉TAG标记 按端口PVID打TAG标记 原样发送 2 、所谓的Untagged Port和tagged Port不是讲述物理端口的状态,而是将是物理端口所拥有的某一个VID的状态,所以一个物理端口可以在某一个VID上是Untagged Port,在另一个VID上是tagged Port; 3 、一个物理端口只能拥有一个PVID,当一个物理端口拥有了一个PVID的时候,必定会拥有和PVID的TAG等同的VID,而且在这个VID上,这个物理端口必定是Untagged Port; 4. PVID的作用只是在交换机从外部接受到可以接受Untagged 数据帧的时候给数据帧添加TAG标记用的,在交换机内部转发数据的时候PVID不起任何作用; 5. 拥有和TAG标记一致的VID的物理端口,不论是否在这个VID上是Untagged Port或者tagged Port,都可以接受来自交换机内部的标记了这个TAG标记的tagged 数据帧; 6. 拥有和TAG标记一致的VID的物理端口,只有在这个VID上是tagged Port,才可以接受来自交换机外部的标记了这个TAG标记的tagged 数据帧; ...

2020-08-02 · 1 min · 73 words · -

pppoe

“pppoe” PPP: Point-to-Point Protocol,链路层协议。用户实现点对点的通讯。 PPPoE的工作过程分成两个阶段,即发现阶段(Discorvery)和PPP会话阶段。 发现阶段(Discovery Stage)的具体过程如下: 用户主机用广播的方式发出PADI (PPPOE Active Discovery Initiatio) 包,准备去获得所有可连接的接入设备 (获得其MAC地址) ; 接入设备收到PADI包后,返回PADO (PPPOE Active Discovery Offer) 作为回应; 用户主机从收到的多个PADO包中,根据其名称类型名或者服务名,选择一个合适的接入设备,然后发送PADR (PPPOE Active Discovery Request) 包,另外如果一个用户主机在发出PADI后在规定时间内没有收到PADO,则会重发PADI; 接入设备收到PADR包后,返回PAS (PPPOE Active Discovery Session-confirmation) 包,其中包含了一个唯一session ID,双方进入PPP会话阶段。 PPP会话阶段,即在session建立后的通讯阶段。 另外,无论是用户主机还是接入设备可随时发起PADT包,中止通讯。 与PPPoE相对应的获得地址和认证的是DHCP,但普通家庭用户很少直接使用DHCP方式接入互联网 (这里说的DHCP不是自家路由器上的DHCP,而是互联网运营商的DHCP) 。PPPoE和DHCP的区别是: 前者需要身份验证才能上网,后者什么都不需要,直接接上网线即可。当然了,具体获得IP地址的方式还有很多。 PPP协议介绍 PPP 点对点协议(Point to Point Protocol)属于二层协议,隧道协议的一种。为在点对点连接上传输多协议数据包提供了一个标准方法。PPP 最初设计是为两个对等节点之间的 IP 流量传输提供一种封装协议。在 TCP/IP中它是一种用来同步调制连接的数据链路层协议 (OSI 模式中的第二层) ,替代了原来非标准的第二层协议,即 SLIP。除了 IP 以外 PPP 还可以携带其它协议,包括 DECnet 和 Novell 的 Internet 网包交换 (IPX) 。 为在同等单元之间传输数据包这样的简单链路设计的链路层协议。这种链路提供全双工操作,并按照顺序传递数据包。设计目的主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案。 PPP协议主要包括三部分: LCP (Link Control Protocol) 链路控制协议、NCP (Network Control Protocol) 网络控制协议和PPP的扩展协议 (如Multilink Protocol) ,比如认证协议,最常用的包括口令验证协议PAP (Password Authentication Protocol) 和挑战握手验证协议CHAP (Challenge-Handshake Authentication Protocol) 。 ...

2020-08-02 · 2 min · 294 words · -

RESTful api

“RESTful api” http://www.ruanyifeng.com/blog/2014/05/restful_api.html 路径 (Endpoint) 路径又称"终点" (endpoint) ,表示API的具体网址。 在RESTful架构中,每个网址代表一种资源 (resource) ,所以网址中不能有动词,只能有名词,而且所用的名词往往与数据库的表格名对应。一般来说,数据库中的表都是同种记录的"集合" (collection) ,所以API中的名词也应该使用复数。 举例来说,有一个API提供动物园 (zoo) 的信息,还包括各种动物和雇员的信息,则它的路径应该设计成下面这样。 https://api.example.com/v1/zoos https://api.example.com/v1/animals https://api.example.com/v1/employees HTTP动词 对于资源的具体操作类型,由HTTP动词表示。 常用的HTTP动词有下面五个 (括号里是对应的SQL命令) 。 GET (SELECT) : 从服务器取出资源 (一项或多项) 。 POST (CREATE) : 在服务器新建一个资源。 PUT (UPDATE) : 在服务器更新资源 (客户端提供改变后的完整资源) 。 PATCH (UPDATE) : 在服务器更新资源 (客户端提供改变的属性) 。 DELETE (DELETE) : 从服务器删除资源。 还有两个不常用的HTTP动词。 HEAD: 获取资源的元数据。 OPTIONS: 获取信息,关于资源的哪些属性是客户端可以改变的。 参数命名规范 query parameter可以采用驼峰命名法,也可以采用下划线命名的方式,推荐采用下划线命名的方式,据说后者比前者的识别度要高,其中,做前端开发基本都后后者,而做服务器接口开发基本用前者。 http://example.com/api/users/today_login 获取今天登陆的用户 http://example.com/api/users/today_login&sort=login_desc 获取今天登陆的用户、登陆时间降序排列 REST API规范 编写REST API,实际上就是编写处理HTTP请求的async函数,不过,REST请求和普通的HTTP请求有几个特殊的地方: REST请求仍然是标准的HTTP请求,但是,除了GET请求外,POST、PUT等请求的body是JSON数据格式,请求的Content-Type为application/json; REST响应返回的结果是JSON数据格式,因此,响应的Content-Type也是application/json。 REST规范定义了资源的通用访问格式,虽然它不是一个强制要求,但遵守该规范可以让人易于理解。 https://www.liaoxuefeng.com/wiki/1022910821149312/1105003357927328 https://www.ruanyifeng.com/blog/2018/10/restful-api-best-practices.html

2020-07-22 · 1 min · 71 words · -

摄影

“摄影” 曝光三要素 对于新人来说,最基本的知识就是曝光三要素: 光圈、快门、感光度。这是最重要的三个元素,利用这三个元素的不同组合,控制正常的曝光。 光圈, Aperture 光圈越大,通光量就越多,光圈越小,通光量就越少。 光圈值 光圈值用字母F 或f表示,常见的光圈有F1.4,F2.0,F2.8,F4.0,F5.6,F8.0,F11,F16,F22,F32,F36. 数值越小表示光圈越大。 光圈是用来控制镜头孔径大小的部件, 我们可以把光圈比作水龙头,水龙头开的越大,水流的就越多。光圈也是如此,光圈开的越大,进光量就越多。拍出的照片就会更加明亮。光圈通常用字母"F"来表示,F越大,光圈越小。例如: F1.8>F11。 光圈对背景虚化的影响 光圈是控制景深的重要因素,那些喜欢拍背景虚化的照片可要注意了。光圈越大,景深越浅,背景虚化越明显。光圈越小,景深越深,背景虚化程度越小。 光圈对画面亮度的影响 其它曝光值不变 (快门,ISO) 的情况下,光圈越大,画面越明亮,光圈越小,画面越暗,甚至看不清东西。当然平时拍摄很少故意把画面调到非常亮或者非常暗这么极端,这样测试可以更好的理解光圈对曝光的影响。 小光圈的作用 大光圈固然有很多好处,但并非越大越好。在拍摄大场景的风光时,使用F8,F11等较小的光圈能表现出更优秀画质和更好的画面细节。使用F16或者更小的光圈,拍摄光源 (如太阳) 会呈现出星芒效果,非常漂亮。星芒的形状取决于镜头光圈的叶片数量和形状。 快门 它是控制相机进光量的快慢,在同样的光圈和感光度下,快门速度的时间越长,那么进光量就越多,照片就越亮。我们还可以把它比作水龙头,当水龙头开的时间越长,那么流出的水越多,也就是说进光量越多。在此提醒一下大家,照片的快门速度越慢,手持相机不稳,容易抖动,造成照片模糊。 快门值 以秒为单位,入门微单一般1/4000s到30s之间。已经可以满足绝大部分拍摄题材。在快门优先和手动曝光拍摄模式下可以手动调节快门。 安全快门 简单来说,是指在手持相机情况下拍摄不容易出现照片模糊的快门时间,低于这个时间则可能容易模糊。通常全画幅相机的安全快门值为1/焦距,APS-C为1/(1.5X焦距)。 例如: 使用50mm的镜头焦距APS-C的 a6000安全快门时间为 1/75s,全画幅的a7系列为1/50s。 平常拍摄并不一定要按快门时间来,现在的很多相机或者镜头都有防抖功能,大大降低了安全快门的时间,手持相机带来的抖动也因人而异,平常多练习也可以降低安全快门的时间。 高速快门与慢快门的作用 快门记录拍摄对象的瞬间,慢门记录拍摄对象的过程。相对而言,慢门的玩法更多,比如流云,光绘,平滑效果等。 感光度 (ISO) 感光度是控制照片明暗的,它与光圈和快门的原理不同,快门和光圈都是控制进光量的,而感光度是提升相机感光元件灵敏度的。简单来说: 感光度越低,照片越暗;感光度越高,照片越亮。随着感光度的提升,照片的噪点也会越多,画质就会有所下降。在白天阳光好的时候拍摄照片,感光度100-200就够用,黑暗的条件下,为了得到正确的曝光,提升感光度也是可以的,唯一的缺点就是会损失一定的画质 Av档 光圈优先档,在此模式下,调节光圈的大小,在拍摄时,快门时间根据现场环境自动调节,保证拍出曝光正常的照片。这种模式有什么好处呢?通过控制光圈大小来控制景深,在拍摄的时候不需要考虑快门速度了,相机会根据现场的情况自动设定好快门速度,从而得到正确的曝光。尤其是在弱光条件下拍摄,使用低快门会导致画面的抖动而模糊,这时候保证光圈的大小不变,调整好感光度,从而提高快门速度。 Tv档 快门优先模式,在此模式下,调节快门速度的快慢,拍摄时,光圈大小根据现场环境自动调节,以保证拍出曝光正常的照片。Tv档比较适合拍摄运动的物体,尤其是快速奔跑的物体,快门速度如果过慢,就容易导致画面模糊,高速快门则可以让画面更清晰。同时,快门优先模式还可以拍摄夜间的车流,利用较慢的快门速度,拍出轨迹。 M档 手动模式,在这种模式下,光圈、快门、感光度都需要自己根据现场情况手动调节。手动模式对于新手很难操作,新手不仅要对现场的环境光线情况作出合理的判断,还要合理的调节好各项参数。相对新手而言,要不断的练习,慢慢的积累,才能熟练运用M档。 测光 首先解释一下什么是测光。测光是检测相机进光量的多少,物体反射的光进入到相机中,相机会根据光线的明暗情况,对物体进行曝光。我们的人眼可以对物体的明暗程度进行判断,从而调节进光量,但相机却不能,所以相机在拍摄物体时需要测光。 测光分为: 平均测光、 点测光、 中央重点测光、 局部测光。 平均测光 它是将取景画面分成不同的几块、分别对各部分进行测光,最后取平均值,相机根据这个平均值来进行曝光。 点测光 它是只对取景画面中的一小部分进行测光,相机会根据这一小块区域的亮度进行对照片进行曝光。点测光比较适用于光线明暗对比大的场景,比如日出、日落。 中央重点测光 它是对取景画面的中央60%,四周40%进行测光,这种测光模式可以保证你拍出的照片不会过亮或是过暗。 局部测光 它是以取景画面某一局部进行测光,主要是以取景框中心的一个圆圈中的光线来进行测光。利用局部测光你可以更好的掌握照片的明暗。 白平衡 白平衡是相机中用来平衡光线色彩偏移的功能,能够帮助相机在不同的光线或者色温下,还原被拍摄物体最真实的颜色,也就是矫正色差。想正确的调节白平衡,我们还要知道与白平衡对应的色温,色温是指光线色调的指标,它的单位是K。色温越高,光的颜色越蓝;色温越低,光的颜色越黄;白平衡值越高,对蓝光的平衡能力越强,画面会变得越黄。我们可以根据这个原来来调节白平衡的数值。相机上也自带了很多种白平衡模式: 自动、白炽灯、荧光灯等等。这些模式可以满足大部分拍摄需求 曝光补偿曝光补偿可以控制照片的明暗,在拍摄照片的时候总会遇到过曝或者欠曝的时候,这时候就可以利用曝光补偿来进行修正。曝光补偿向左调,照片会变暗,向右调,照片会变亮。在拍摄雪景的时候,曝光补偿就经常被用到,对于白色的雪,相机测光的时候仅仅接收18%的光线,所以我们拍摄的照片并不是纯白的,而是灰色的,这时候就要增加一点曝光补偿,让雪的颜色看起来更白。 在B站学摄影 左手plus Sony A6000 入门 http://www.sonystyle.com.cn/products/nex/ilce_6000.htm ...

2020-07-19 · 1 min · 135 words · -

debian ubuntu ca

“debian ubuntu ca” https://www.jianshu.com/p/abcee3270e9a mkdir /usr/share/ca-certificates/extra cp /tmp/$1.crt /usr/share/ca-certificates/extra/$1.crt update-ca-certificates 直白的说,运行这个工具,它最终会更新 /etc/ssl/certs/ca-certificates.crt 文件。这下你应该明白了,有了这个文件,不管是 Curl 还是 openssl 在发送 HTTPS 请求的时候,都可以校验 HTTPS 网站的真实身份了。 具体执行步骤如下: 读取 /etc/ca-certificates.conf 文件,包含的内容就是所有 /usr/share/ca-certificates/mozilla/ 目录下的证书文件名。 将 /etc/ca-certificates.conf 文件对应的所有证书合并到 /etc/ssl/certs/ca-certificates.crt 文件中。 作者: 虞大胆的叽叽喳喳 链接: https://www.jianshu.com/p/abcee3270e9a 来源: 简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2020-07-08 · 1 min · 39 words · -

golang 生成二维码

“golang 生成二维码” import "github.com/skip2/go-qrcode" func main() { qrcode.WriteFile("http://www.wiloon.com/",qrcode.Medium,256,"./blog_qrcode.png") }

2020-07-08 · 1 min · 9 words · w1100n

novnc

novnc https://github.com/novnc/noVNC https://novnc.com/info.html podman run \ -e REMOTE_HOST=192.168.50.114 \ -e REMOTE_PORT=5900 \ -p 8082:8081 \ -d \ --name novnc-dell \ dougw/novnc nginx config server { listen 80; server_name vnc.wiloon.com; location / { proxy_pass http://192.168.50.114:8082; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_set_header X-Real-IP $remote_addr; proxy_connect_timeout 1d; proxy_send_timeout 1d; proxy_read_timeout 1d; } }

2020-06-28 · 1 min · 53 words · -

chrome basic

“chrome basic” # dns lookup chrome://net-internals/#dns 不使用页面缓存进行刷新 Shift+F5 清除dns缓存 chrome://net-internals/#dns chrome://flags chrome 导出 netlogs chrome://net-export/ 分析 netlogs https://netlog-viewer.appspot.com/ Chrome 清除某个特定网站下的缓存 https://www.cnblogs.com/Chesky/p/chrome_disabling_cache.html 打开开发者工具 (F12), 选择 Network——Disable cache 即可。需要清除某网站缓存时 F12 打开开发者工具就会自动清除这个网站的缓存,而不必清除所有网站的缓存了。 huge CPU usage of gnome-keyring-daemon when starting Google Chrome google-chrome –password-store:basic How to prevent the huge CPU usage of gnome-keyring-daemon when starting Google Chrome https://www.andreafortuna.org/technology/linux/how-to-prevent-the-huge-cpu-usage-of-gnome-keyring-daemon-when-starting-google-chrome/embed/#?secret=NSkQcrRM22 chrome 参数 修改默认用户目录, todo merge chrome.exe --user-data-dir=D:\chrome --no-default-browser-check extensions Language Reactor, youture 中英文字幕 /etc/hosts https://stackoverflow.com/questions/42636711/google-chrome-ignoring-hosts-file

2020-06-27 · 1 min · 69 words · -

dns config

“dns config” 主机记录 www : 将域名解析为www.example.com,填写www; @ : 将域名解析为example.com (不带www) ,填写@或者不填写; mail : 将域名解析为mail.example.com,通常用于解析邮箱服务器; *: 泛解析,所有子域名均被解析到统一地址 (除单独设置的子域名解析) ; 解析线路 为加速访问域名,可设置与用户相同的网络类型,但用户的网络类型多种多样,所以解析线路设置为默认,这样DNS服务商一般会智能使用解析线路,当判断访问者来源为联通用户,就将域名解析到联通的服务器IP上;当判断访问者来源为电信用户,就将域名解析到到电信的服务器IP上。 作者: 大猫黄 链接: https://www.jianshu.com/p/d1840c71a57c 来源: 简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2020-06-26 · 1 min · 27 words · -

nginx config, tls

“nginx config, tls” ssl_certificate: 服务器的 SSL 证书文件的路径。该证书用于证明服务器的身份,并与客户端建立安全连接。通常,这个文件包含服务器的公钥信息。 ssl_certificate_key: 服务器证书匹配的私钥文件路径。私钥用于解密客户端传来的信息,因此必须保密并妥善保护。 ssl_trusted_certificate: 一个或多个被信任的证书颁发机构(CA)的证书文件路径。它用于验证客户端证书的真实性,尤其在启用客户端证书验证时。在大多数情况下,使用 Let’s Encrypt 证书时不需要单独指定这个文件,因为 fullchain.pem 已经包含了必要的中间证书链,通常足以满足大多数应用的验证需求。 TLS, nginx config include cat > /etc/nginx/tls.conf << EOF ssl_certificate /etc/letsencrypt/fullchain.pem; ssl_certificate_key /etc/letsencrypt/privkey.pem; ssl_protocols TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; EOF vim /etc/nginx/conf.d/default.conf # server config server { listen 443 ssl; server_name foo.wiloon.com; include /etc/nginx/tls.conf; location / { # ... } } stream pacman -Sy nginx-mainline-mod-stream 代理远程桌面 3389 的 tcp 连接 stream { upstream mstsc { server 1.2.3.4:3389; } server { listen 1082; proxy_pass mstsc; } } tls server { #ssl参数 listen 443 ssl; # 多域名配置 server_name foo.wiloon.com bar.wiloon.com; #证书文件 ssl_certificate example.com.crt; #私钥文件 ssl_certificate_key example.com.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; #... } 静态网站 server { listen 80; server_name localhost; #charset koi8-r; access_log /var/log/nginx/host.access.log main; error_log /var/log/nginx/error.log error; location / { root /usr/share/nginx/html; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } https://aotu.io/notes/2016/08/16/nginx-https/index.html ...

2020-06-26 · 1 min · 213 words · -

AMD, CMD

“AMD, CMD” https://juejin.im/post/5a422b036fb9a045211ef789 在JavaScript发展初期就是为了实现简单的页面交互逻辑,寥寥数语即可;如今CPU、浏览器性能得到了极大的提升,很多页面逻辑迁移到了客户端 (表单验证等) , 随着web2.0时代的到来,Ajax技术得到广泛应用,jQuery等前端库层出不穷,前端代码日益膨胀 这时候JavaScript作为嵌入式的脚本语言的定位动摇了,JavaScript却没有为组织代码提供任何明显帮助,甚至没有类的概念, 更不用说模块 (module) 了,JavaScript极其简单的代码组织规范不足以驾驭如此庞大规模的代码 模块 既然JavaScript不能handle如此大规模的代码,我们可以借鉴一下其它语言是怎么处理大规模程序设计的,在Java中有一个重要带概念——package,逻辑上相关的代码组织到同一个包内,包内是一个相对独立的王国,不用担心命名冲突什么的,那么外部如果使用呢?直接import对应的package即可 import java.util.ArrayList; 遗憾的是JavaScript在设计时定位原因,没有提供类似的功能,开发者需要模拟出类似的功能,来隔离、组织复杂的JavaScript代码,我们称为模块化。 一个模块就是实现特定功能的文件,有了模块,我们就可以更方便地使用别人的代码,想要什么功能,就加载什么模块。模块开发需要遵循一定的规范,各行其是就都乱套了 规范形成的过程是痛苦的,前端的先驱在刀耕火种、茹毛饮血的阶段开始,发展到现在初具规模,简单了解一下这段不凡的历程 函数封装 我们在讲函数的时候提到,函数一个功能就是实现特定逻辑的一组语句打包,而且JavaScript的作用域就是基于函数的,所以把函数作为模块化的第一步是很自然的事情,在一个文件里面编写几个相关函数就是最开始的模块了 function fn1(){ statement } function fn2(){ statement }1234567复制代码 这样在需要的以后夹在函数所在文件,调用函数就可以了 这种做法的缺点很明显: 污染了全局变量,无法保证不与其他模块发生变量名冲突,而且模块成员之间没什么关系。 对象 为了解决上面问题,对象的写法应运而生,可以把所有的模块成员封装在一个对象中 var myModule = { var1: 1, var2: 2, fn1: function(){ }, fn2: function(){ } }12345678910111213复制代码 这样我们在希望调用模块的时候引用对应文件,然后 myModule.fn2(); 这样避免了变量污染,只要保证模块名唯一即可,同时同一模块内的成员也有了关系 看似不错的解决方案,但是也有缺陷,外部可以随意修改内部成员 myModel.var1 = 100; 这样就会产生意外的安全问题 立即执行函数 可以通过立即执行函数,来达到隐藏细节的目的 var myModule = (function(){ var var1 = 1; var var2 = 2; function fn1(){ } function fn2(){ } return { fn1: fn1, fn2: fn2 }; })();1234567891011121314151617复制代码 这样在模块外部无法修改我们没有暴露出来的变量、函数 ...

2020-06-23 · 2 min · 256 words · -