Frossky 发布的文章

纹饰 图案 寓意
缠枝纹 俗称“缠枝花”,又名“万寿藤”。因其结构连绵不断,故又具“生生不息”之意,寓意吉庆。
莲瓣纹 莲瓣纹是佛教推崇的纹饰,莲花代表普度众生。抽象起来像是花括号
云纹 云纹是最为常见的传统纹样,象征着高升和如意,依据形态特征可分为单岐云、双岐云、三岐云、勾云纹、朵云纹、云头纹、云水纹、流云纹、三叉云等
云雷纹 商周时期,云纹多与雷纹共同被提起,被视为是云纹早期形态
回纹 是由陶器和青铜器上的雷纹衍化而来的几何纹样。回纹图案寓意吉祥富贵,所以民间称连续的回纹为“富贵不断头”
弦纹 弦纹是古代器物上最简单的传统装饰纹样,在青铜器上呈现为凸起的横线条。细弦纹像一条细长的带子平缚于陶器之上,细长、凸起;粗弦纹较宽,纹中间呈凹槽状,很像板瓦,因此又被称为“瓦纹”。另有作人字形的弦纹,称为“人字纹”或“人字弦纹”。
席纹 《中国陶瓷史》对其成因有解释说,它是制作陶坯时坯下所垫席类器物留下的印痕。
连珠纹 连珠纹又称“联珠纹”、“连珠”、“圈带纹”、“花蕊纹”,由一串彼此相连的圆圈或椭圆组成
漩涡纹 主流是认为起源于自然界的水涡,或者是源于对蛇形图腾的崇拜。象征自然和谐。寓意着太阳起落,四季划分
乳钉纹 最早出现在祭祀女性先人的祭器之上,感怀生命起源,表示对母亲的敬仰和怀念。而且钉谐音“丁”,故而也有祈求子孙满堂、人丁兴旺的寓意。战汉玉璧最常装饰乳钉纹,因为玉璧是“天”的象征,所以玉璧上的乳钉纹通常代表天上的星星。
条纹 又称“条形纹”、“线纹”,是一种最简单、最实用的传统装饰纹样。
曲折纹 又称“曲尺纹”、“波折纹”、“三角折线纹”,如同水波纹,猜测也可能是山的象形。规律的排布还给人一种生动活泼、刚强有力的秩序美。

其他参考文献
传统窗格图案几何纹饰及其艺术特征

根据企查查2021-8-18

Floor 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 总计 计数
4-7 1 1 1
8 1 2 2 1 1 1 1 1 10 8
10 1 1 1 1 1 1 1 2 2 7 2 20 11
12 1 1 1 1 1 1 4 2 12 8
14 2 1 2 1 1 7 5
16 2 1 1 2 2 1 1 10 7
18 1 2 2 7 1 1 1 15 7
20 1 2 2 5 3
22 2 2 1 1 2 3 11 6
26 2 1 3 1 1 8 5
28 1 8 1 3 3 1 1 18 7
30 1 2 3 2
总计 3 5 16 1 3 2 1 3 4 12 14 12 6 10 17 11 120
计数 3 4 6 1 2 2 1 2 2 8 7 7 5 6 7 7

知乎上的回答
tensorflow官方认证地址
考取google Tensorflow认证的流程
另一个老外的TensorFlow考试经历

Tensorflow考试准备

官方考试手册
配置考试环境
官方教程

学习教程

吴恩达课程学习笔记

AI技术文章

容量、过拟合和欠拟合
深度学习中过拟合、欠拟合问题及解决方案
熵,交叉熵,二分类交叉熵/Entropy, crossentropy, binary crossentropy
正则化
正则化消除过拟合

AI前沿思考

陈德旺对Deepmind的成功的探讨

笔记本电脑上训练

PS: 可以通过Nvidia的显卡加速, 不过在i7-8550U+MX150上测试, MX150似乎比CPU还慢.

使用MX150:

2021-08-23 11:01:05.658828: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cufft64_10.dll
2021-08-23 11:01:05.661719: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library curand64_10.dll
2021-08-23 11:01:05.667080: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cusolver64_11.dll
2021-08-23 11:01:05.672298: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cusparse64_11.dll
2021-08-23 11:01:05.681747: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cudnn64_8.dll
2021-08-23 11:01:05.681986: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1871] Adding visible gpu devices: 0
2021-08-23 11:01:05.682349: I tensorflow/core/platform/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX AVX2
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
2021-08-23 11:01:05.683329: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1733] Found device 0 with properties: 
pciBusID: 0000:01:00.0 name: NVIDIA GeForce MX150 computeCapability: 6.1
coreClock: 1.341GHz coreCount: 3 deviceMemorySize: 2.00GiB deviceMemoryBandwidth: 37.33GiB/s
2021-08-23 11:01:05.683674: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1871] Adding visible gpu devices: 0
2021-08-23 11:01:06.781669: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1258] Device interconnect StreamExecutor with strength 1 edge matrix:
2021-08-23 11:01:06.781862: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1264]      0 
2021-08-23 11:01:06.781974: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1277] 0:   N 
2021-08-23 11:01:06.784405: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1418] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 1332 MB memory) -> physical GPU (device: 0, name: NVIDIA GeForce MX150, pci bus id: 0000:01:00.0, compute capability: 6.1)
2021-08-23 11:01:07.432975: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:176] None of the MLIR Optimization Passes are enabled (registered 2)
Epoch 1/5
2021-08-23 11:01:07.782500: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cublas64_11.dll
2021-08-23 11:01:08.920483: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cublasLt64_11.dll
1875/1875 [==============================] - 6s 2ms/step - loss: 0.2974 - accuracy: 0.9155
Epoch 2/5
1875/1875 [==============================] - 5s 2ms/step - loss: 0.1430 - accuracy: 0.9569
Epoch 3/5
1875/1875 [==============================] - 5s 2ms/step - loss: 0.1057 - accuracy: 0.9685
Epoch 4/5
1875/1875 [==============================] - 5s 2ms/step - loss: 0.0867 - accuracy: 0.9742
Epoch 5/5
1875/1875 [==============================] - 5s 3ms/step - loss: 0.0741 - accuracy: 0.9764
313/313 - 1s - loss: 0.0704 - accuracy: 0.9784

Process finished with exit code 0

上面MX150的Epoch每一项在5~6秒, 而使用CPU只需要1~2秒:


D:\r\pyproj\TFproj1\venv\Scripts\python.exe D:/r/pyproj/TFproj1/main.py
2021-08-23 11:04:35.810645: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cudart64_110.dll
2.5.0
2021-08-23 11:04:39.140247: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library nvcuda.dll
2021-08-23 11:04:39.791839: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1733] Found device 0 with properties: 
pciBusID: 0000:01:00.0 name: NVIDIA GeForce MX150 computeCapability: 6.1
coreClock: 1.341GHz coreCount: 3 deviceMemorySize: 2.00GiB deviceMemoryBandwidth: 37.33GiB/s
2021-08-23 11:04:39.792157: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cudart64_110.dll
2021-08-23 11:04:39.808505: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cublas64_11.dll
2021-08-23 11:04:39.808676: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cublasLt64_11.dll
2021-08-23 11:04:39.813804: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cufft64_10.dll
2021-08-23 11:04:39.816603: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library curand64_10.dll
2021-08-23 11:04:39.822109: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cusolver64_11.dll
2021-08-23 11:04:39.827115: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cusparse64_11.dll
2021-08-23 11:04:39.832314: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'cudnn64_8.dll'; dlerror: cudnn64_8.dll not found
2021-08-23 11:04:39.832637: W tensorflow/core/common_runtime/gpu/gpu_device.cc:1766] Cannot dlopen some GPU libraries. Please make sure the missing libraries mentioned above are installed properly if you would like to use GPU. Follow the guide at https://www.tensorflow.org/install/gpu for how to download and setup the required libraries for your platform.
Skipping registering GPU devices...
2021-08-23 11:04:39.833777: I tensorflow/core/platform/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX AVX2
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
2021-08-23 11:04:39.834660: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1258] Device interconnect StreamExecutor with strength 1 edge matrix:
2021-08-23 11:04:39.834922: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1264]      
2021-08-23 11:04:40.297728: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:176] None of the MLIR Optimization Passes are enabled (registered 2)
Epoch 1/5
1875/1875 [==============================] - 2s 840us/step - loss: 0.2934 - accuracy: 0.9141
Epoch 2/5
1875/1875 [==============================] - 1s 764us/step - loss: 0.1421 - accuracy: 0.9578
Epoch 3/5
1875/1875 [==============================] - 2s 853us/step - loss: 0.1091 - accuracy: 0.9674
Epoch 4/5
1875/1875 [==============================] - 2s 1ms/step - loss: 0.0881 - accuracy: 0.9730
Epoch 5/5
1875/1875 [==============================] - 2s 1ms/step - loss: 0.0763 - accuracy: 0.9759
313/313 - 0s - loss: 0.0729 - accuracy: 0.9780

Process finished with exit code 0

以前认为至少两条:
1、预测准;
2、对人好;
现在得加第三条:
3、执行力强;
要强成信仰一样。

原文连接
启用方式是以管理员运行下面的bat文件:

@echo off
pushd "%~dp0"
dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >List.txt
dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientTools-Package~3*.mum >>List.txt
for /f %%i in ('findstr /i . List.txt 2^>nul') do dism /online /norestart /add-package:"C:\Windows\servicing\Packages\%%i"
pause

原文来自微软官方

系统文件检查器是 Windows 10 中的一个实用工具,用于检查计算机中文件的问题。若要运行它,请按照下列步骤进行操作:

确保已安装 Windows 10 的最新更新,然后重启计算机。若要了解详细信息,请阅读更新 Windows 10。

在任务栏上的搜索框中,键入“命令提示符”,然后长按或右键单击结果列表内的“命令提示符”(桌面应用)。选择“以管理员身份运行”,然后选择“是”。

键入 DISM.exe /Online /Cleanup-image /Restorehealth(注意每个 "/" 前的空格),然后按“Enter”键。(注意:此步骤可能需要几分钟才会启动,最多可能需要 30 分钟才能完成。)

在看到显示“操作已成功完成”的消息后,键入sfc /scannow(注意“sfc”和“/”之间的空格),然后按下“Enter”。

在看到一条显示“验证 100% 完成”的消息后,键入“退出”。

这么洁身自好竟然中病毒了? 上周五下午去小米换电池, 难道是小米维修?

症状:

  1. CPU占用率极高, 一晚上没有关机电脑很烫.
  2. 不能打开任务管理器, 提示被管理员禁用.
  3. 不能打开组策略管理器 GPEDIT.msc.

腾讯电脑管家居然不报.

C盘 AutoRun.inf

我只能转为图片上传, 因为有的杀毒软件会检测这些病毒内容,并且自动断开与网站的链接.
1.png

D 盘 AutoRun.inf

2.png

jbqgma.exe

100 KB (103,140 字节)

ulvx.pif

https://r.virscan.org/ 上扫描, 结果如下:
文件名称 :ulvx.pif (本站不提供任何文件的下载服务)
文件大小 :103140 byte
文件类型 :PE32 executable (GUI) Intel 80386
MD5:b7ff0959b1568d9530a4c69661dbebc7
SHA1:1b3b4f74fd93e1786c2c195125c28aaae5d8f57b
SHA256:9e9d4b2eaf3c20b3c4397c205989970d2064a7d1a8ced715e62c955d3f8922e5
SSDEEP:1536:5ww2cwmgypHD4U4EYtBnp9LFT8RkTWvaYGTQ2fACZWoWafNRyX2QCSQeAxkR5DlY:5zDJD4CYzxLCig2aoWPmQCSQlkR5m

软件名称 引擎版本 病毒库版本 病毒库时间 扫描结果 扫描耗时
AVAST! 18.4.3895.0 18.4.3895.0 44391 Win32:Sality 11
AVG 10.0.1405 10.0.1405 44391 Win32:Sality 7
Alyac 17.7.13.1 17.7.13.1 44391 Worm.Sality.3.Gen 5
Arcabit 1 1 44391 W32.Sality.BH.Dropper2 8
Authentium 4.6.5 5.3.14 44391 没有发现病毒 1
Avira 1.9.2.0 1.9.159.0 44391 W32/Sality.AT 9
Baidu Antivirus 2.0.1.0 4.1.3.52192 44391 Virus.Win32.Sality.$Emu 1
Bitdefender 7.141118 7.141118 44391 没有发现病毒 21
ClamAV 26230 0.100.2 44390 Win.Virus.Sality-1067 1
Comodo 6.5.0.819 6.5.0.819 44329 Virus.Win32.Sality.gen@1egj5j 2
Cyren 6.0.0.4 6.0.0 44391 W32/Sality.AN.gen!Eldorado 2
Defenx 11.193.37706 15.2.0.53 44390 Trojan ( 001e7bc71 ) 1
Dr.Web 11.0.10.1810231600 11.0.10.1810231600 44391 Win32.Sector.31 12
F-PROT 4.6.2.117 6.5.1.5418 42405 没有发现病毒 1
F-Secure 2015-08-01-02 9.13 44391 Malware.W32/Sality.AT 6
Fortinet 1.000, 71.889, 71.844, 71.868 5.4.247 43773 W32/LPECrypt.A!tr 1
GData 25.29645 25.29645 44331 Win32.Sality.3 12
GridinSoft 1.0.27.118 1.0.27.118 44232 没有发现病毒 4
Hunter 1.0.1.300 1.0.1.300 44391 没有发现病毒 1
IKARUS 5.06.02 V5.05.01 44390 Virus.Win32.Sality 5
K7 11.193.37706 15.2.0.53 44390 Trojan ( 001e7bc71 ) 1
NOD32 9846 4.5.15 44391 没有发现病毒 1
Nano 1.0.134.90567 1.0.134.90567 44391 Virus.Win32.Sality.beygb 4
QQ手机 2.0.0.0 2.0.0.0 44391 没有发现病毒 1
Quickheal 14 14 44391 W32.Sality.U 3
SOPHOS 5.32 3.65.2 44391 没有发现病毒 1
Sunbelt 3.9.2671.2 3.9.2671.2 44391 Virus.Win32.Sality.at 18
Systweak 1 1 44391 没有发现病毒 1
TheHacker 6.8.0.5 6.8.0.5 44391 W32/Sality.gen 3
Vba32 5.0.0 5.0.0 44390 Virus.Win32.Sality.bakb 5
ViRobot 2.73 2.73 42034 没有发现病毒 1
VirusBuster 15.0.985.0 5.5.2.13 44391 没有发现病毒 5
Xvirus 2.0.0 2.0.0 44391 没有发现病毒 1
emsisoft 9.0.0.4799 9.0.0.4799 44391 没有发现病毒 0
nProtect 9.9.9 9.9.9 44391 Trojan.SalityStub.A 35
卡巴斯基(kavfs) 8.0.4.312 8.0.4.312 43490 Virus.Win32.Sality.gen 2
卡巴斯基(klms) 5.5.33 5.5.33 44391 Virus.Win32.Sality.gen 2
奇虎360 1.0.1 1.0.1 44391 Trojan.Win32.SalityStub.A 4
安博士V3 9.9.9 9.9.9 44391 Win32/Kashu.E 8
安天 AVL SDK 3.0 AVL SDK 3.0 44391 Virus/Win32.Sality.gen 1
新华三 1.0.114 1.0.114 44385 没有发现病毒 11
江民杀毒 16.0.100 1.0.0.0 44391 Win32/HLLP.Kuku.poly2 42
深信服 2.20200403 2.20200403 44391 Malware 3
熊猫卫士 9.05.01 9.05.01 44391 W32/Sality.AK.drp 19
瑞星 5380 5380 44391 Malware.Heuristic 1
百度杀毒 1 1 44391 没有发现病毒 1
费尔 17.47.17308 1.0.2.2108 44332 Suspicious:Trojan.Quk.a.eobw.mg 2
赛门铁克 20151230.005 1.3.0.24 42368 没有发现病毒 1
趋势科技 13.302.06 9.500-1005 44391 PE_SALITY.RL-O 1
迈克菲 8254 5400.1158 44358 W32/Sality.gen.z 5
金山毒霸 2.1 2.1 43497 Win32.Heur.KVMH004.a 8

■Heuristic/Suspicious ■Exact
注意: 就算报告发现病毒,也可能是杀软误报,请根据查毒结果自行判断

分析

应该是在最近中的病毒. 一着急没去看病毒文件的创建日期就给删掉了. 看起来似乎是U盘病毒. 除了在小米换电池, 还有就是上周去出差电脑拿出来做演示, 是不是有病毒文件通过别人的U盘传入? 就不知道了.

杀毒

使用Avast全盘杀毒, 查出来3660个病毒, 大多是Win32: SaliCode[Inf]病毒,还有一些是Wrm病毒, 感染的主要是Exe文件. 我使用everything搜索所有Exe文件并对修改时间排序, 除了Avast正在查杀修改的Exe以外, 竟然找不到其他大批量修改Exe的时间段?!

诗三首
二零二一年八月三日 晨

一曦烟雨,几处青阳,花残处人生片片,夜不寐,神不现。
黄花想再,急雨拒应,人欲歇噪马不许,当举时后不得举。

三万里路一浮尘,静卧千年错沾轮。长路不止停不去,疲敝待日葬晖春。

本是大千一粒沙,错付危楼建浮华。碌碌云尽钢泥散,万里湖岸还护花。

太极创客对28BYJ-48单极性步进电机的介绍很详细, 型号源于名称: 外径28毫米四相八拍式永磁减速型步进电机.B是步进,Y是永磁, J是减速,哈哈很明显是我国的电机标准.
太极创客对这个步进电机的原理的介绍讲转子有6齿而定子有8齿, 最后算下来每一步是11.25度, 很有道理但很可惜, 是错的. 按转子6齿, BCDA每次循环完毕, 转子只会转45/3×4=60度, 每一步只有45/3=15度. 但11.25度这个结论却是对的. 是因为其实转子和定子都是8齿!
这个老外的博客对28BYJ-48这个国产型号电机进行了详细的拆解分析, 反而是正确的.
定子是4个8齿的齿板组成, 分上下两组. 每组两个齿板两两相对. 每个齿板上, 齿角是360/8=45度. 从上到下四个齿板角度依次为0度, (45/4)×2度, (45/4)×1度, (45/4)×3度. 转子是8个方向的永磁铁组成. 每一步可以走45/4=11.25度. 走完一圈是360/11.25=32步. 减速比1/64, 故最外层走完一圈是32×64=2048步. 然而上下两组齿板同时通磁,可以形成半步, 这样可以做到2048×2=4096个不同角度.

原文链接: ESP8266 NodeMCU – Controling Stepper Motor with ULN2003 Driver

最主要是2个:

  1. 使用了AccelStepper库,而不是常见的Stepper库.
  2. 电机要单独供电. 文章使用9V+LM7805稳压到5V, 我就直接用直流电源了. 5.3V下电流大约0.17A.

程序如下:

#include <AccelStepper.h>           // Load the AccelStepper library

#define motorPin1  5                // IN1 pin on the ULN2003A driver to pin D1 on NodeMCU board
#define motorPin2  4                // IN2 pin on the ULN2003A driver to pin D2 on NodeMCU board
#define motorPin3  0                // IN3 pin on the ULN2003A driver to pin D3 on NodeMCU board
#define motorPin4  2                // IN4 pin on the ULN2003A driver to pin D4 on NodeMCU board

int stepsPerRevolution = 64;        // steps per revolution
int degreePerRevolution = 5.625;    // degree per revolution

/*
 * AccelStepper::FULL2WIRE (2) means: 2 wire stepper (2 pins needed). 
 * AccelStepper::FULL3WIRE (3) means: 3 wire stepper, like a harddisk motor (3 pins needed). 
 * AccelStepper::FULL4WIRE (4) means: 4 wire stepper (4 pins needed). 
 * AccelStepper::HALF3WIRE (6) means: 3 wire half stepper, like a harddisk motor (3 pins needed) 
 * AccelStepper::HALF4WIRE (8) means: 4 wire half stepper (4 pins needed) 
 *
 * AccelStepper uses AccelStepper::FULL4WIRE (4 pins needed) by default.
 */
AccelStepper stepper(AccelStepper::HALF4WIRE, motorPin1, motorPin3, motorPin2, motorPin4);

void setup() {
  Serial.begin(9600);               // initialise the serial monitor

  stepper.setMaxSpeed(1000.0);      // set the max motor speed
  stepper.setAcceleration(100.0);   // set the acceleration
  stepper.setSpeed(200);            // set the current speed

}

// Degrees of the momevement. So first to 90 degrees, then to -90 graden then to 180 degrees etc.
int steps[] = { 90, -90, 180, -180, 0 };

// The total entries in steps[]
int stepsCount = 5;

// Keeps track of the position in steps[] we are about to run
int stepsIndex = 0;

void loop() {

  // If the stepper isn't moving and doesn't have to go any distance
  if (!stepper.isRunning() && stepper.distanceToGo() == 0) {

    // Move the stepper to the degrees on the position of stepIndex in steps[]
    stepper.moveTo(degToSteps(steps[stepsIndex]));

    // Increase the index when each movement has finished
    stepsIndex++;

    // If we have executed all positions of steps[]
    if (stepsIndex > stepsCount) {

      // Set the index to 0 to restart the process
      stepsIndex = 0;
    }
  }

  stepper.run();

}

/*
 * Converts degrees to steps
 * 
 * 28BYJ-48 motor has 5.625 degrees per step
 * 360 degrees / 5.625 = 64 steps per revolution
 * 
 * Example with degToSteps(45):
 * (64 / 5.625) * 45 = 512 steps
 */
float degToSteps(float deg) {
  return (stepsPerRevolution / degreePerRevolution) * deg;
}

这个程序有个问题是, 断电后重新上电, 是以当前位置为0位的, 不能记忆上次断电的位置.

空调中的导风口使用的也是步进电机, 这儿有一篇维修文章

参考文章:
AccelStepper官方文档
28BYJ-48 Stepper Motor with ULN2003 Driver and Arduino Tutorial
ULN2003-Datasheet.pdf
ULN2003-Stepper-Motor-Driver-PCB.pdf
28byj48-Stepper-Motor-Datasheet.pdf

网易云音乐上的翻译完全失去了原词的性感, 这儿我对比重新翻译一下。

作词 : Adam Levine/Shellback/Savan Kotecha/Max Martin
作曲 : Adam Levine/Shellback/Savan Kotecha/Max Martin

我的重译 英文原词 网易云音乐翻译
你和我,关系恶化 You and I go hard, 我们的关系不断僵化
彼此看来,就快干架 at each other like we're going to war 在彼此看来都是紧张到一触即发
你和我,日益暴躁 You and I go rough, 生活变得艰难
东西互砸,把门摔爆 we keep throwing things and slamming the doors 我们唯一的交流变成了摔打东西和大力的关门隔绝彼此
你和我,两人有病 You and I get sore, 我们变得易怒、歇斯底里
功能失调,整天较劲 then dysfunctional we stuck keeping score 以互踩痛处而相互较量
你和我,已经烦透 You and I get sick, 我们的所作所为编的越来越超出常规
谁都知道,我们不能在这样! they all know that we can't do this no more 连旁人都看不下去了
但是宝贝,你又要走 But baby there you go again, 但是亲爱的你
你又要走,又让我爱上你啦 there you go again making me love you 又再一次让我爱上了你
我,不用大脑 Yeah I stopped using my head, 是的,我已经停止思考
不用大脑,一切放手 using my head let it all go 思考该怎么放手
你,贴我身上 Got you stuck on my body, 你紧紧贴着我的身体
贴我身上,像个刺青 on my body like a tattoo 就像一枚带着疼痛的印记
我,像个傻逼 And now i'm feeling stupid, 现在的我感觉自己很愚蠢
像个傻逼,爬到你背后 feeling stupid crawling back to you 悄悄溜回你身边的决定是如此的失策
所以,我胸前画个十字,不如死了算了 So I cross my heart, and I hope to die, 所以我以我的生命起誓
只要让我陪你再多一夜 that i'll only stay with you one more night 我只会跟你再待最后一晚
我知道我说过千百万次 And I know i've said it a million times 我知道我已经说了千万遍
但我真的只要陪你再多一夜 But i'll only stay with you one more night 但这真的是我们相处的最后一夜
想和你说不 Trying to tell you no, 我试图拒绝你
但我的身体却一直说好 but my body keeps on telling you yes 可我的身体却自行接受
想和你说停 Trying to tell you stop, 我试图停下
但你的口红让我喘不过气 but your lipstick got me so out of breath 但你口红的颜色都快让我无法呼吸
我明早醒来 I'd be waking up, 我必将在清晨醒来时
大概会厌恶自己 in the morning probably hating myself 无比厌恶这样的自己
我明早醒来 And i'd be waking up, 我必将在清晨醒来时
无比满足却又负罪如坠地狱 feeling satisfied but guilty as hell 心中满是满足和如临地狱般的罪恶感
但是宝贝,你又要走 But baby there you go again, 但是亲爱的
你又要走,又让我爱上你啦 there you go again making me love you 你又再一次让我爱上了你
我,不用大脑 Yeah I stopped using my head, 是的,我已经放弃了思考权衡,
不用大脑,一切放手 using my head let it all go 我不会再放手
你,贴我身上 Got you stuck on my body, 让你紧紧的缠绕着我的身体
贴我身上,像个刺青 on my body like a tattoo 就像枚带着疼痛的印记
我,像个傻逼 And now i'm feeling stupid, 我现在感觉自己如此愚蠢
像个傻逼,爬到你背后 feeling stupid crawling back to you 我真后悔悄悄溜回你的身旁
所以,我胸前画个十字,不如死了算了 So I cross my heart, and I hope to die, 所以我以死起誓
只要让我陪你再多一夜 that i'll only stay with you one more night 只再和你共度一晚
我知道我说过千百万次 And I know i've said it a million times 我知道我已经说了千万遍
但我真的只要陪你再多一夜 But i'll only stay with you one more night 但这真的是最后一晚
耶宝贝再给我一夜 Yeah baby give me one more night 亲爱的再让我和你多待一晚
耶宝贝再给我一夜 Yeah baby give me one more night 再给我一夜回忆
耶宝贝再给我一夜 Yeah baby give me one more night 最后一夜
但是宝贝,你又要走 But baby there you go again, 但亲爱的你
你又要走,又让我爱上你啦 there you go again making me love you 又让我再次的爱上了你
我,不用大脑 Yeah I stopped using my head, 我已经不能再维持理性
不用大脑,一切放手 using my head let it all go 不能再对你放手
你,贴我身上 Got you stuck on my body, 想让你始终呆在我的身旁
贴我身上,像个刺青 on my body like a tattoo 就像枚滴血的刺青
耶耶耶耶 Yeah, yeah, yeah, yeah 耶~
所以,我胸前画个十字 So I cross my heart, 我双手交叉
死了算了 and I hope to die, 以我的生命起誓
只要让我陪你再多一夜 that i'll only stay with you one more night 这将会是你我共处的最后一夜
我知道我说过千百万次 And I know i've said it a million times 我知道这句话我已经说了千万遍
但我真的只要陪你再多一夜 But i'll only stay with you one more night 但我只想与你多待这最后一夜
耶宝贝再给我一夜 (yeah baby give me one more night) 最后一夜
所以,我胸前画个十字,不如死了算了 So I cross my heart, and I hope to die, 所以我用我的生命起誓
只要让我陪你再多一夜 that i'll only stay with you one more night 这真的将是最后一夜
我知道我说过千百万次 And I know i've said it a million times 我知道这句话我已经说了千万遍
但我真的只要陪你再多一夜 But i'll only stay with you one more night 但我此刻只想与你共度今夜时光

官方的说明上不去了 http://docs.typecho.org/develop/acl, 这儿转载官方说明如下:

在Typecho中分别设置了5个等级的权限供多个用户共用一个博客。他们的权限从高到低分别是:管理员(administrator), 编辑(editor), 贡献者(contributor), 关注者(subscriber), 访问者(visitor).其权限设置与wordpress有一些相同之处,但是扩展方法不尽相同。

权限名称 管理员 编辑 贡献者 关注者 访问者
代号 administrator editor contributor subscriber visitor
等级1) 0 1 2 3 4
阅读
进入控制台 ×
修改自己的档案信息 ×
撰写文章 √2) × ×
管理文章 √3) × ×
撰写页面 × × ×
管理页面 × × ×
上传文件 √4) × ×
管理文件 √5) × ×
管理评论 × × ×
管理分类和标签 × × ×
管理链接 × × × ×
管理用户 × × × ×
管理插件 × × × ×
调整外观 × × × ×
基本设置 × × × ×
评论设置 × × × ×
阅读设置 × × × ×
撰写习惯设置 × ×

开发人员接口

对用户的权限操作以及用户信息获取,我们都封装在了Widget_User组件中。开发人员可以通过调用此组件获取相关信息。

方法名称 描述 参数
login 登录用户 * $uid(int) - 用户ID
  1. 数字越小权限越高
  2. 审核后发布
  3. , 5) 仅限于自己
  4. 受限