心流

心流 1975 年,心理学家米哈里·齐克森米哈里 (Mihaly Csikszentmihalyi) 正式将心流概念化并通过科学的方式来研究。 心流 (英语: Flow) ,也有别名以化境 (Zone) 表示,亦有人翻译为神驰状态,定义是一种将个人精神力完全投注在某种活动上的感觉;心流产生时同时会有高度的兴奋及充实感。 是一种奇妙而值得追求的境界,或者心理状态,也是知识工作者所一直追求的状态。在这样顺畅的状态下工作,不但个人会获得空前的满足感,而且团队从客观上来看,会更加的高效,成员会更加的团结,不论你将什么样的需求交给他们,他们总是会顺利的将其完成。 要进入理想的,忘我的心流状态,齐克森米哈里提到至少需要满足这三点: 有清晰的目标 有明确且事实的反馈 能力和挑战的平衡 (都处于比较高的状态) https://www.infoq.cn/article/k4TB7hZU4uM_8lhXEY9h?utm_source=rss&utm_medium=article http://icodeit.org/2018/01/feedback-saves-the-world/

2019-07-06 · 1 min · 20 words · -

raspberry GPIO 水泵

raspberry GPIO 水泵 https://github.com/stianeikeland/go-rpio https://zhuanlan.zhihu.com/p/40594358 GPIO (General Purpose Input/Output) https://www.cnblogs.com/vamei/p/6751992.html

2019-07-03 · 1 min · 10 words · -

nf_conntrack模块

nf_conntrack模块 nf_conntrack(在老版本的 Linux 内核中叫 ip_conntrack)是一个内核模块,用于跟踪一个连接的状态的。连接状态跟踪可以供其他模块使用,最常见的两个使用场景是 iptables 的 nat 的 state 模块。 iptables 的 nat 通过规则来修改目的/源地址,但光修改地址不行,我们还需要能让回来的包能路由到最初的来源主机。这就需要借助 nf_conntrack 来找到原来那个连接的记录才行。而 state 模块则是直接使用 nf_conntrack 里记录的连接的状态来匹配用户定义的相关规则。例如下面这条 INPUT 规则用于放行 80 端口上的状态为 NEW 的连接上的包。 iptables -A INPUT -p tcp -m state -state NEW -m tcp -dport 80 -j ACCEPT。 iptables中的状态检测功能是由state选项来实现iptable的。对这个选项,在iptables的手册页中有以下描述: state 这个模块能够跟踪分组的连接状态(即状态检测)。 格式: -state XXXXX 这里,state是一个用逗号分割的列表,表示要匹配的连接状态。 在iptables中有四种状态: NEW,ESTABLISHED,RELATED,INVALID。 NEW,表示这个分组需要发起一个连接,或者说,分组对应的连接在两个方向上都没有进行过分组传输。NEW说明 这个包是我们看到的第一个包。意思就是,这是conntrack模块看到的某个连接第一个包,它即将被匹配了。比如,我们看到一个SYN包,是我们所留意 的连接的第一个包,就要匹配它。第一个包也可能不是SYN包,但它仍会被认为是NEW状态。比如一个特意发出的探测包,可能只有RST位,但仍然是 NEW。 ESTABLISHED,表示分组对应的连接已经进行了双向的分组传输,也就是说连接已经建立,而且会继续匹配 这个连接的包。处于ESTABLISHED状态的连接是非常容易理解的。只要发送并接到应答,连接就是ESTABLISHED的了。一个连接要从NEW变 为ESTABLISHED,只需要接到应答包即可,不管这个包是发往防火墙的,还是要由防火墙转发的。ICMP的错误和重定向等信息包也被看作是 ESTABLISHED,只要它们是我们所发出的信息的应答。 RELATED,表示分组要发起一个新的连接,但是这个连接和一个现有的连接有关,例如: FTP的数据传输连接 和控制连接之间就是RELATED关系。RELATED是个比较麻烦的状态。当一个连接和某个已处于ESTABLISHED状态的连接有关系时,就被认为 是RELATED的了。换句话说,一个连接要想是RELATED的,首先要有一个ESTABLISHED的连接。这个ESTABLISHED连接再产生一 个主连接之外的连接,这个新的连接就是RELATED的了,当然前提是conntrack模块要能理解RELATED。ftp是个很好的例子,FTP- data连接就是和FTP-control有RELATED的。还有其他的例子, INVAILD,表示分组对应的连接是未知的,说明数据包不能被识别属于哪个连接或没有任何状态。有几个原因可以产生这种情况,比如,内存溢出,收到不知属于哪个连接的ICMP错误信息。一般地,我们DROP这个状态的任何东西。 https://clodfisher.github.io/2018/09/nf_conntrack/ 连接跟踪(conntrack) https://arthurchiao.art/blog/conntrack-design-and-implementation-zh/

2019-07-02 · 1 min · 69 words · -

MySQL collect

MySQL collect COLLATE是用来做什么的? 使用phpmyadmin的开发可能会非常眼熟,因为其中的中文表头已经给出了答案: phpmyadmin截图 所谓utf8_unicode_ci,其实是用来排序的规则。对于MySQL中那些字符类型的列,如VARCHAR,CHAR,TEXT类型的列,都需要有一个COLLATE类型来告知MySQL如何对该列进行排序和比较。简而言之,COLLATE会影响到ORDER BY语句的顺序,会影响到WHERE条件中大于小于号筛选出来的结果,会影响DISTINCT、GROUP BY、HAVING语句的查询结果。另外,MySQL建索引的时候,如果索引列是字符类型,也会影响索引创建,只不过这种影响我们感知不到。总之,凡是涉及到字符类型比较或排序的地方,都会和COLLATE有关。 各种COLLATE的区别 COLLATE通常是和数据编码 (CHARSET) 相关的,一般来说每种CHARSET都有多种它所支持的COLLATE,并且每种CHARSET都指定一种COLLATE为默认值。例如Latin1编码的默认COLLATE为latin1_swedish_ci,GBK编码的默认COLLATE为gbk_chinese_ci,utf8mb4编码的默认值为utf8mb4_general_ci。 这里顺便讲个题外话,MySQL中有utf8和utf8mb4两种编码,在MySQL中请大家忘记utf8,永远使用utf8mb4。这是MySQL的一个遗留问题,MySQL中的utf8最多只能支持3bytes长度的字符编码,对于一些需要占据4bytes的文字,MySQL的utf8就不支持了,要使用utf8mb4才行。 很多COLLATE都带有_ci字样,这是 Case Insensitive 的缩写,即大小写无关,也就是说"A"和"a"在排序和比较的时候是一视同仁的。selection * from table1 where field1=“a"同样可以把field1为"A"的值选出来。与此同时,对于那些_cs后缀的COLLATE,则是Case Sensitive,即大小写敏感的。 在MySQL中使用show collation指令可以查看到MySQL所支持的所有COLLATE 作者: 腾讯云加社区 链接: https://juejin.im/post/5bfe5cc36fb9a04a082161c2 来源: 掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 https://juejin.im/post/5bfe5cc36fb9a04a082161c2

2019-07-02 · 1 min · 33 words · -

MySQL大小写敏感配置, COLLATE

MySQL大小写敏感配置, COLLATE https://blog.csdn.net/fdipzone/article/details/73692929 show global variables like '%lower_case%'; lower_case_file_system 表示当前系统文件是否大小写敏感,只读参数,无法修改。 ON 大小写不敏感 OFF 大小写敏感 lower_case_table_names 表示表名是否大小写敏感,可以修改。 lower_case_table_names = 0时,MySQL会根据表名直接操作,大小写敏感。 lower_case_table_names = 1时,MySQL会先把表名转为小写,再执行操作。 设置lower_case_table_names的值 打开my.cnf文件,加入以下语句后重启。 lower_case_table_names = 0 或 lower_case_table_names = 1 解决MySQL查询不区分大小写 MySQL默认的字符检索策略: utf8_general_ci,表示不区分大小写;utf8_general_cs表示区分大小写,utf8_bin表示二进制比较,同样也区分大小写 。 (注意: 在MySQL5.6.10版本中,不支持utf8_genral_cs!!!!) 创建表时,直接设置表的collate属性为utf8_general_cs或者utf8_bin;如果已经创建表,则直接修改字段的Collation属性为utf8_general_cs或者utf8_bin。 -- 创建表: CREATE TABLE testt( id INT PRIMARY KEY, name VARCHAR(32) NOT NULL ) ENGINE = INNODB COLLATE =utf8_bin; -- 修改表结构的Collation属性 ALTER TABLE TABLENAME MODIFY COLUMN COLUMNNAME VARCHAR(50) BINARY CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL; COLLATE: 排序规则 ...

2019-07-02 · 1 min · 160 words · -

debug1,expecting SSH2_MSG_KEX_ECDH_REPLY

‘debug1,expecting SSH2_MSG_KEX_ECDH_REPLY’ debug1: expecting SSH2_MSG_KEX_ECDH_REPLY 设置网卡接口的MTU值,改成: 1200 sudo ip link set dev eth0 mtu 1200 /etc/systemd/network/en0s25.network [Match] Name=enp0s25 [Link] MTUBytes=9000 [Network] Address=192.168.1.101/24 Gateway=192.168.1.1/24 DNS=192.168.1.1 以太网的MTU是1500,而隧道的MTU值1400左右,比以太网的小,因此,以太网发出去的包就被拒绝了,最终导致无法建立SSH连接。 原理 MTU (Maximum Transmission Unit) : 最大传输单元,是指一种通信协议的某一层上面所能通过的最大数据包大小 (以字节为单位) 。最大传输单元这个参数通常与通信接口有关 (网络接口卡、串口等) .(摘自维基百科) 从维基百科种看到: 这里的MTU所指的是无需分段的情况下,可以传输的最大IP报文 (包含IP头部,但不包含协议栈更下层的头部) 。 下面是普通媒体的MTU表: 网络 MTU(Byte) 超通道 65535 16Mb/s令牌环 17914 4Mb/s令牌环 4464 FDDI 4352 以太网 1500 IEEE 802.3/802.2 1492 X.25 576 点对点 (低时延) 296 对于使用AUTOSSH建立隧道: 传输模式,MTU值最大是: 1440 隧道模式,MTU值最大是: 1420 所以,出现这个现象的原因也就清楚了: 本身以太网的MTU是1500,而隧道的MTU值1400左右,比以太网的小,因此,以太网发出去的包就被拒绝了,最终导致无法建立SSH连接。 ssh 密钥交换阶段一次发送的数据一般大于 1500 字节,因此至少填满了一个 MTU; ...

2019-06-22 · 1 min · 78 words · -

OpenStack 高可用 (HA)

OpenStack 高可用 (HA) 高可用性是指提供在本地系统单个组件故障情况下,能继续访问应用的能力,无论这个故障是业务流程、物理设施、IT软/硬件的故障。最好的可用性, 就是你的一台机器宕机了,但是使用你的服务的用户完全感觉不到。你的机器宕机了,在该机器上运行的服务肯定得做故障切换 (failover) ,切换有两个维度的成本: RTO (Recovery Time Objective) 和 RPO (Recovery Point Objective) 。RTO 是服务恢复的时间,最佳的情况是 0,这意味着服务立即恢复;最坏是无穷大意味着服务永远恢复不了;RPO 是切换时向前恢复的数据的时间长度,0 意味着使用同步的数据,大于 0 意味着有数据丢失,比如 " RPO = 1 天" 意味着恢复时使用一天前的数据,那么一天之内的数据就丢失了。因此,恢复的最佳结果是 RTO = RPO = 0 对 HA 来说,往往使用共享存储,这样的话,RPO =0 ;同时往往使用 Active/Active (双活集群) HA 模式来使得 RTO 几乎0,如果使用 Active/Passive 模式的 HA 的话,则需要将 RTO 减少到最小限度。HA 的计算公式是[ 1 - (宕机时间)/ (宕机时间 + 运行时间) ],我们常常用几个 9 表示可用性: 2 个9: 99% = 1% * 365 = 3.65 * 24 小时/年 = 87.6 小时/年的宕机时间 ...

2019-06-22 · 1 min · 117 words · -

chained invocation (链式调用) 或者Method chaining

chained invocation (链式调用) 或者Method chaining https://www.zhihu.com/question/22006988 这就是chained invocation (链式调用) 或者Method chaining,这种风格的API设计叫做fluent API或者Fluent interface。它常用在Builder pattern的实现上。

2019-06-21 · 1 min · 14 words · -

linux shell 查找文件位置,which, command -v, hash, type

linux shell 查找文件位置,which, command -v, hash, type command -v foo 避免使用which, 相对于hash、type、command等内置命令,which是一个没有明显的功能优势的外部命令。 使用which时会启动一个新的进程 很多linux发行版上的which执行完后甚至没有返回码,这就意味着在上面执行完"if which foo"就不会奏效,即使"foo"命令 不存在,系统也会报告存在,这样明显是适得其反。(部分POSIX风格的shell对hash命令也会有类似情况) 很多linux发行版上的which会做一些邪恶的事情,比如改变输出结果甚至会接入到包管理器中。 https://stackoverflow.com/questions/592620/how-to-check-if-a-program-exists-from-a-bash-script?page=1&tab=votes#tab-top https://blog.51cto.com/xoyabc/1902804

2019-06-21 · 1 min · 20 words · -

go module proxy, goproxy, athens

go module proxy, goproxy, athens goproxy.io export GOPROXY=https://goproxy.io,direct goproxy.cn export GO111MODULE=on export GOPROXY=https://goproxy.cn GO 版本大于 1.13,可以直接使用 go env -w 命令设置 GOPROXY go env -w GOPROXY=https://goproxy.io,direct # 清除 go env go env -u GOPROXY # 阿里云 export GOPROXY=https://mirrors.aliyun.com/goproxy/ # goproxy.io export GOPROXY=https://goproxy.io,direct # goproxy.cn export GOPROXY=https://goproxy.cn athens docker run -p '3000:3000' gomods/athens:latest https://goproxy.io/zh/ https://blog.wiloon.com/?p=15941 https://shockerli.net/post/go-get-golang-org-x-solution/ https://github.com/goproxy/goproxy.cn GOPRIVATE 环境变量 完成设置后,go 命令会从公共镜像 goproxy.io 上下载依赖包,并且会对下载的软件包和代码库进行安全校验,当你的代码库是公开的时候,这些功能都没什么问题。但是如果你的仓库是私有的怎么办呢? 环境变量 GOPRIVATE 用来控制 go 命令把哪些仓库看做是私有的仓库,这样的话,就可以跳过 proxy server 和校验检查,这个变量的值支持用逗号分隔,可以填写多个值,例如: GOPRIVATE=*.corp.example.com,rsc.io/private 这样 go 命令会把所有包含这个后缀的软件包,包括 git.corp.example.com/xyzzy , rsc.io/private, 和 rsc.io/private/quux 都以私有仓库来对待。 ...

2019-06-20 · 1 min · 120 words · -

go语言的模板,text/template包

go语言的模板,text/template包 go语言的模板,text/template包 ##定义 模板就是将一组文本嵌入另一组文本里 传入string-最简单的替换 package main import ( “os” “text/template” ) func main() { name := “waynehu” tmpl, err := template.New(“test”).Parse(“hello, {{.}}”) //建立一个模板,内容是"hello, {{.}}" if err != nil { panic(err) } err = tmpl.Execute(os.Stdout, name) //将string与模板合成,变量name的内容会替换掉{{.}} //合成结果放到os.Stdout里 if err != nil { panic(err) } } //输出 : hello, waynehu 因为"hello, {{.}}“也是一个字符串,所以可以单独拎出来,如下: //这句 tmpl, err := template.New(“test”).Parse(“hello, {{.}}”) //等于下面的两句 muban := “hello, {{.}}” tmpl, err := template.New(“test”).Parse(muban) //之后的例子都用两句的方式表达 传入struct 模板合成那句,第2个参数是interface{},所以可以传入任何类型,现在传入struct看看 要取得struct的值,只要使用成员名字即可,看代码吧: package main import ( “os” “text/template” ) type Inventory struct { ...

2019-06-14 · 3 min · 449 words · -

Go gc

Go gc gctrace GODEBUG='gctrace=1' go run main.go gc 15 @941.135s 0%: 0.058+91+0.002 ms clock, 0.058+0.35/26/61+0.002 ms cpu, 75->75->38 MB, 77 MB goal, 1 P gc # @#s #%: #+#+# ms clock, #+#/#/#+# ms cpu, #->#-># MB, # MB goal, # P where the fields are as follows: gc # the GC number, incremented at each GC @#s time in seconds since program start #% percentage of time spent in GC since program start #+…+# wall-clock/CPU times for the phases of the GC #->#-># MB heap size at GC start, at GC end, and live heap # MB goal goal heap size # P number of processors used The phases are stop-the-world (STW) sweep termination, concurrent mark and scan, and STW mark termination. The CPU times for mark/scan are broken down in to assist time (GC performed in line with allocation), background GC time, and idle GC time. If the line ends with “(forced)”, this GC was forced by a runtime.GC() call and all phases are STW. ...

2019-06-11 · 2 min · 392 words · -

内存, mem

内存, mem 内存对于缓存更新策略,要区分Write-Through和Write-Back两种策略。前者更新内容直接写内存并不同时更新Cache,但要置Cache失效,后者先更新Cache,随后异步更新内存。通常X86 CPU更新内存都使用Write-Back策略。 虚拟内存 虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续可用的内存 (一个连续完整的地址空间) ,而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。与没有使用虚拟内存技术的系统相比,使用这种技术的系统使得大型程序的编写变得更容易,对真正的物理内存 (例如RAM) 的使用也更有效率。 注意: 虚拟内存不只是「用磁盘空间来扩展物理内存」的意思——这只是扩充内存级别以使其包含硬盘驱动器而已。把内存扩展到磁盘只是使用虚拟内存技术的一个结果,它的作用也可以通过覆盖或者把处于不活动状态的程序以及它们的数据全部交换到磁盘上等方式来实现。对虚拟内存的定义是基于对地址空间的重定义的,即把地址空间定义为「连续的虚拟内存地址」,以借此「欺骗」程序,使它们以为自己正在使用一大块的「连续」地址。 为什么要使用虚拟内存 a. 产生的背景 (摘自书籍Rechnerarchitektur : Von der digitalen Logik zum Parallelrechner 作者Andrew S. Tanenbaum )早期的计算机内存容量非常小,通常只能存储几千个Wörter 1(即数据单元),但价格却是十分昂贵。(之后的Beispiele是指一些关于早期计算机的具体例子) 所造成的不便: a. 使用这些容量很小的内存,导致了程序运行的速度很慢,原因是在于存放相对高效的算法需要占用的内存空间相对较大,所以程序员们只能使用执行效率较低的,但是占用内存容量较小的算法。à对于这个问题的传统解决方案是,(物理上,或者说在硬件上)新增加一个(或多个)内存空间(例如,硬盘- Plattenspeicher)。b. 而同时还造成的一个不便之处,是在这种内存容量很小的情况下,程序员需要人为地将程序分解成为多个部分(Overlays), 然后分开来存储进内存中。在执行程序时,就首先执行第1个Overlay, 执行完毕后,继而调用第2个Overlay,以此类推。à进展:尽管这个方法在那个时代已经很广泛地普及化了,但是由于使用Overlay进行管理执行程序的办法需要大量的人力投入,这其中的成本仍是不容小觑的。于是在1961年,一位来自英国曼彻斯特的研究人员提议,不如将程序通过Overlays执行这个方法设计成自动化的模式,这样就无需程序员费劳管理程序的划分与安置的任务。这个新的方法所使用到的一个新的概念即是虚拟内存virtueller Speicher。b.使用虚拟内存的优势: (摘自https://blog.csdn.net/vernice/article/details/41783601) 1 程序员无需操心如何存储(数据,程序等等的)内容。2 通过分布在同一个物理内存空间的两个不同的区间,虚拟内存里的数据和程序可以彼此共享使用3 它使得应用程序在系统中可以更自如地在物理地址中被执行。虚拟内存的操作过程是怎么样的 假如说这台机器不适用虚拟内存这个概念,那么程序就会报错,例如"该指定的地址范围在内存中不存在",继而程序终止执行。而反过来若是这台机器是适用虚拟内存的,那么这个任务会按照如下步骤来执行: 1 寻找位于存储盘上,介于地址8192和12287之间的数据单元。2 将这段原来地址为8192~12287的数据单元加载到内存中。3 而这段数据对应到内存中的地址将被定义为0~4095。4 而程序将继续正常地执行下去。 人们将这项自动划分区间(Overlays)的技术命名为Paging (deuts. Seitenauslagerung),而这一段段从硬盘中读出来的程序区间即被命名为Page (deuts. Seiten)。 虚拟地址通过对虚拟地址空间到物理地址空间的一个动态映射来实现。而虚拟的地址空间也会相应地划分成Pages, 然后整个虚拟地址空间就相当于一张划分地址空间的表格,与实际的物理内存地址相互对应。 (只是这个图像的内存中没有包含多个4KB的内存空间,而是指设置了一个,所以这个具例中,我们只能一次对应一个4KB的空间。) 而这个对应的关系实际上也可以更为的复杂,这是完全可以做到的。我们一方面将存储程序的地址称为虚拟地址空间Adressraum (Virtual Address Space),另一方面将真正存在的,有线路控制的内存地址称作物理地址空间(Physical Address Space)。依据对应的物理地址空间规划虚拟地址空间上的内容区划。这里我们假设首先是有足够的空间来装得下虚拟的地址空间的。这样人们就会获得一种假象,这种假象会让人感到好像有十分充足的(物理)内存空间一样,但实际上这些都是因为虚拟内存这个概念的应用,而现实中物理内存的实际容量远远少于人们所需要的。 有了这个优势,程序就可以任意地将虚拟地址空间里的数据加载出来,或者将新的数据存储到虚拟的内存空间中去,而人们也完全无需去顾虑是否物理内存的容量是否够用。 (有的)程序员甚至可以完全不需要知道虚拟内存的存在。计算机于是看上去是有一个很大很大的内存的。 而实现虚拟内存的一个本质前提是要有一个可以存放整个程序和数据的硬盘。这一个硬盘可以是可以转动的那种硬盘,也可以是固态硬盘。在书中我们统一将"Platte"或者说"Festplatte" 理解为固态硬盘。(将存在硬盘里的程序作为原件,而将程序数据转运到内存中所要做的即是一个复制的功能)自然的,在执行操作后要保持对硬盘里的程序(即原件)的更新。当在内存中原数据的"副本"改变后,反过去就要对硬盘的程序进行改动。 内存管理单元,内存控制单元 (MMU) 什么是MMU MMU(Memory Management Unit)主要用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权、多任务多进程操作系统。 (来自百度百科,对其几个点不熟悉,因此可以只考虑加粗部分) ...

2019-06-11 · 6 min · 1192 words · -

angular pwa

angular pwa ng new project0 ng add @angular/pwa –project project0 ng build –prod cd project0 && http-server -p 8080 -c-1 dist/project0/ curl http://127.0.0.1:8080/ngsw/state chrome://serviceworker-internals/ ng new my-app --routing

2019-06-09 · 1 min · 28 words · -

rock 5b

rock 5b yay -S rkdeveloptool # 按住板子上的 Maskrom mode 键, 把 usb type a to c 插头插到电脑上, 放开 maskrom mode 键 lsusb # result: Bus 001 Device 112: ID 2207:350b Fuzhou Rockchip Electronics Company sudo rkdeveloptool ld 默认用户名密码 rock/rock https://wiki.radxa.com/Rock5/install/usb-install-emmc

2019-06-09 · 1 min · 40 words · -

cut command

cut command echo abc | cut -c 2- # bc echo abcdef | cut -c 1-3 # abc

2019-06-09 · 1 min · 18 words · -

angular material

angular material yarn add @angular/material @angular/cdk @angular/animations app.module.ts import { MatSliderModule } from '@angular/material/slider'; import 'hammerjs'; … @NgModule ({.... imports: [..., MatSliderModule, …] }) app.component.html styles.css @import ‘@angular/material/prebuilt-themes/deeppurple-amber.css’; https://material.angular.io/ https://material.angular.cn/guides https://github.com/stbui/angular-material-app/tree/master/src/app https://material.io/ https://material.angular.io/components/categories

2019-06-08 · 1 min · 33 words · -

nginx 部署静态页面

nginx plain html 部署静态页面 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> hello </body> </html> server{ listen 80; server_name hello.wiloon.dev; root /var/www; index hello.html; }

2019-06-08 · 1 min · 25 words · -

chrome 启动参数

chrome 启动参数 chromium \ --user-data-dir=/path/to/cache/dir \ --incognito \ --no-first-run \ --process-per-site \ --app='https://baidu.com'

2019-06-06 · 1 min · 13 words · -

Intel Compute Stick

Intel Compute Stick Intel® Compute Stick STCK1A32WFC Intel Atom® Processor Z3735F (2M Cache, up to 1.83 GHz) Intel® Compute Stick STK1A32SC Intel Atom® x5-Z8300 Processor (2M Cache, up to 1.84 GHz) 2GB DDR3L-1600 Intel® Compute Stick STK1AW32SC Intel Atom® x5-Z8300 Processor (2M Cache, up to 1.84 GHz) Intel® Compute Stick STK2m364CC Intel® Core™ m3-6Y30 Processor (4M Cache, up to 2.20 GHz) 安装 bios https://www.intel.cn/content/www/cn/zh/support/articles/000006039/mini-pcs/intel-compute-sticks.html

2019-06-06 · 1 min · 64 words · -