早在之前的Spectre Variant的补丁安装之后,就出现用不了VTune,那个时候还能注册表绕一下,这次换固态重装系统,直接用了2019 LTSC,没办法改注册了表了,但是可以有取巧的办法,把Win10用的cpu微代码(mcupdate_GenuineIntel.dll)换回以前的,这样能解决问题,但是也会变得不安全,绕远了...

因为这个dll,网上找也不放心,那就google下,发现了这篇

因为要使用VTune的advanced hotspot,这是hardware event based sampling collection, 所以可以分析的更加准确一点,之前用得2016得版本,无法使用这个功能,可能还不支持win10或者是broadwall-e处理器,所以换了2018试试,但是刚用,就BSOD了,google了好久,最后是猜测因为对meltdown和spectre漏洞得修复,禁止了一些指令,导致这个没法使用,

为了用上https,然后chrome上显示是Secure的图标,需要折腾一下ssl证书,用了下letsencrypt。
过程大概就是安装一个certbot,然后执行申请,这个网上搜一下到处都是,然后我的服务器是放在家里的,也就是在NAT后面,那就意味着80端口,443端口都是没办法从公网访问的,所以证书申请基本上就GG了,因为Letencrypt连不到你的服务器。
好在,支持DNS认证:

certbot certonly --manual -d xxxx.example.com --preferred-challenges dns

最近用markdown写东西的时候,编辑的时候,总是在原始内容的开头多了一个换行,但是数据从数据库拿出来还是正常的,但是ajax接受到之后就多了一个换行,服务端后端也查过echo "";也是没问题的,google之后,发现还真有这样的问题,php require一个文件之后,在下次echo会增加一个换行...,有点神奇...

参考

半年时间,断断续续,过了一遍LL1语法分析,给json做了一个LL1 Parser。平时json用得挺多,也是可以随手撸一个差不多可以用的解释器,只不过想从语法层面构造一个更快的解释器,显然这个别人都是做过了,自己也想撸个,那么得复习下语法分析咯。

LL1是一个从左向右扫描,自上而下的预测分析算法,但是要使用LL1进行语法分析,需要先对Grammar进行分析,判断是不是能够使用LL1。使用LL1,需要构造预测分析表,构造预测分析表需要计算Grammar的FirstSet和FollowSet,而在计算这两个集合之前,需要对Grammar消除左递归和提取公共左因子。

FirstSet的定义如下:

上周末,宅了两天,用php把markdown撸了一遍,可以用markdown愉快的写文章了。
还是接着分析下markdown的流程,看几个核心函数。

  • _RunBlockGamut
  • _RunSpanGamut
  • _HashHTMLBlocks
  • _FormParagraphs

在markdown的主函数里面,处理完tab符号之后,就调用了_HashHTMLBlocks,这个函数先处理了嵌套的html元素,类似:

# First, look for ne

    碎碎念:

    1. 为什么其他源码不看,看markdown源码?

    因为,要用使自己的博客支持markdown。

    2. 为什么不用已有的markdown php插件?

    因为,码农的劣根性是造轮子。

    3. 为什么不直接用perl?

    因

bb8,嗯就是星战那个球形机器人,爆照:

其实已经有得买,但是有点贵,国外有好多大神自己制作了,制作方式有好多种,暂时没想好头部怎么做,身体大概这样设计下:

一开始用的CS骨骼,其实也挺好的,但是一些问题:

1. 脊椎旋转,手臂的朝向是相对地面不变的

2. 手臂肩骨不能绕X轴旋转

1. CMake版本控制

cmake_minimum_required(VERSION major.minor)


2. 加个project,嗯,一个Solution

project(xxxx CXX)


3. 加个子项目,subproject,对应以前用的SUBDIRS

add_subdirectory(xxxxx)


4. 加入includ

从自己工作所用的引擎参考,适用于手游,意义不大,而且我自己的玩具主要是玩的,考虑下面几个方面:

1. 需不需要支持多technique

2. technique的多pass共享technique的一份参数,还是pass自己的参数独立

TGA文件格式:

https://en.wikipedia.org/wiki/Truevision_TGA#cite_note-3

http://www.dca.fee.unicamp.br/~martino/disciplinas/ea978/tgaffs.pdf

大部分是没有疑问,但有一个,TGA的header里面有两个short制定x origin和y origin,这两个short是用来指定图片在屏幕上显示时,图片左下角在屏幕的位置,因为有些时候,一张TGA图片会被拆成好几个块,然后显卡分别显示,这个时候就需要指定每个块在屏幕上的坐标,最后拼成一整张图片。

工作一年,没有再碰过基本算法,国庆刷下ac,发现,顺手写的一个快排,是错的。。。。。错的。。。。

template <typename T>

void qsort(T* ptr, int size, bool(*CMP_FUNC)(T* a, T* b))

{

分解了一下需求,在一定限制下,大概就这四种:

/2016/09/page-1

/2016/09/dsad-231mdsk-3123mds-321

/dsae321cds9-321dfs-321/231mds-321mds123-312ds

/das123-312-321dsa-213/page-1

/dada-dasda-dasdadas-dasdas1231-3213

分别对应了一下正则:

\/([0-9]{4})\/([0-9]{2})\/(page-[0-9]{1,3}) 应该匹配3个group

\/([0-9]{4})\/(

2016/08/07:

经过半个月的加班加点,唔唔,功能差不多了,核心代码大概3000行的样纸,包括DNS解析,加密解密,事件循环,线程池几个部分,数据基本能准确传输,但是还有一些问题。

1.  多线程的效率低

2.  不知道是不是数据加解密有问题,导致客户端的shadowsock总是会先关闭连接,但是有部分内容还是传回来了。

       上班又开始忙了,先搁置吧,要开始搞渲染了。

1.材料准备:

双N沟道MOS场效应管 2N7002DW sot-363 sc70-6 x1

LDO 3.3稳压芯片 MIC5205 KB33 sot23-5 x1

mpu6050 x1

hmc5883l x1

bmp180 x1


2.原理图准备

a) 5v - 3.3v兼容原理图参照MIC5205手册: