在线文档用什么?DITA/reStructedText/Markdown对比
这儿是原文, 2016年写.
到最后, 看来还是用markdown+Jekyll. 另外有个kramdown, 是markdown的扩展, 被github所用. 详见这儿
这儿是原文, 2016年写.
到最后, 看来还是用markdown+Jekyll. 另外有个kramdown, 是markdown的扩展, 被github所用. 详见这儿
自己的核心产品是应该做的。可以扩大一点产品的的概念:产品除了我们常见的产生价值的有形物品外,把销售能力/服务能力等其他产生价值的虚拟能力也称之为产品。核心产品是公司依靠赚钱生活的产品,或者是在未来想象中依靠赚钱生活的产品。公司的客户建立在核心产品之上的印象凝聚成品牌印象。
一个产品背后都是一串供应链,那么自己的产品中,哪些又是应该自己做,哪些是供应链来做?
那么要看产品的竞争力和供应链的竞争力了。这两个有什么不同?产品竞争力是公司的客户、也就是我们的下游评估的,供应链的竞争力是供应链的客户(包括自己公司在内)评估的。
至少包括产品门槛和产品差异化优势。门槛决定能不能卖,差异化决定好不好卖。
在我来看,产品差异化优势是必须自己做的,不自己做也就没有所谓“差异化”可言。
而产品门槛是否自己做,其实可以看供应链的竞争力。
供应链的竞争力其实是供应链提供的产品的竞争力。就是看我们能不能从市场上(潜在供应商)那里选购到合适的产品作为我们产品的原料。原料可选择性多、很容易选购到,我们说供应链很成熟;很难选购到,我们说供应链不成熟。
那么怎么算成熟?
我对华为终端还算比较熟悉。华为很早之前尝试做过终端,一直不成功。包括电话、Modem、小灵通、手机。但终端一直没法成为像运营商产品那样的核心产品。更像是因为有了运营商渠道而搭配着卖的。也不重视品牌,很多都是运营商定制。所以,华为这个时期有很多终端都是外包做的。然而终端中的手机成为未来核心产品的时候,就必须找出差异化来亲力亲为了。
首先是外观。其次是系统。最早的智能手机可能只有外观是差异化,系统都是公版Android。然而自从小米等自制系统越来越受到欢迎后,系统也变成了差异化竞争力之一。再次是主板。这是由外观差异化决定的。
在后期的差异化方面又发生了变化,首先是CPU。高通、联发科CPU虽然符合要求、大量存在,然而供应商就这俩,然后提高下要求到高端的话,就只剩下高通了,CPU成本也不低,所以不能说是太成熟的,值得自己做。并且其中有可以差异化的点,如低功耗之类。虽然这个门槛很高,但作为华为仍然是有实力、或者有魄力去做的。
其次是拍摄效果。这完全是新定义的一个差异化点。摄像头没有能力做,好在供应商还有几个,算法还可以优化,数量还可以自定义。当然,最重要的摄像头不能做的话,导致其实差异化拉不开太大差异,小米努努力,也可以超越。
最后是
.s是汇编编写的.
从开头注释来看是Winner Micro原厂编写, 使用的汇编应该是ARM了.
; Vector Table Mapped to Address 0 at Reset
向量表里面IMPORT的是需要启用的功能.
配合后面的DCD也要打开, 这个功能才能启用.
可以看到大多是中断回调.这个就是很神奇的地方了. 中断回调函数名称实际上是在这儿定义的.这大概意味着你不能随便改名字啦.
但是, 按键中断却不在这儿定义,而是通过wm_gpio.c中的函数tls_gpio_isr_register()定义.
解决问题吗?No. 预测问题的能力最重要, 重要1000倍啊.
Keil编译设置里的“fromelf.exe --bin -o "$L@L.bin" "#L"到底什么意思?
官方解释:Key Sequence for Tool Parameters
% File name with extension (PROJECT1.UVPROJ)
# File name with extension and complete path specification (C:\MYPROJECT\PROJECT1.UVPROJ)
@ File name without extension or path specification (PROJECT1)
$ Path name of a file. Path names get extended with a backslash. For example, $P could generate C:\MYPROJECT\.
L Linker output file. Typically the executable file used for debugging (PROJECT1).
在乐鑫官网关于ESP-Touch的说明中, 主要文档在于资源-文档-用户指南
中.
但翻开用户指南的pdf文件, 发现其中说明似乎缺少了点什么:
smartconfig
了, 这个名字不是TI的吗?)唯独缺少了手机端如何组装和发送数据的说明.
通过阅读手机端的源码 (Android DatumCode.java和IOS DatumCode.m), 发现了其数据的构造过程在源码中注释如下
// Data = total len(1 byte) + apPwd len(1 byte) + SSID CRC(1 byte) +
// BSSID CRC(1 byte) + TOTAL XOR(1 byte)+ ipAddress(4 byte) + apPwd + apSsid apPwdLen <=
// 105 at the moment
在源码中,private static final int EXTRA_HEAD_LEN = 5;
正好是前面的长度/CRC/XOR共5个字节,总长度:char totalLen = (char) (EXTRA_HEAD_LEN + ipLen + apPwdLen + apSsidLen);
只是奇怪的是,在apSSid之后,又通过奇妙的方法去插入bssid:
// add bssid
int bssidInsertIndex = EXTRA_HEAD_LEN;
for (int i = 0; i < apBssid.length; i++) {
int index = totalLen + i;
char c = ByteUtil.convertByte2Uint8(apBssid[i]);
DataCode dc = new DataCode(c, index);
if (bssidInsertIndex >= mDataCodes.size()) {
mDataCodes.add(dc);
} else {
mDataCodes.add(bssidInsertIndex, dc);
}
bssidInsertIndex += 4;
}
看上述方法,似乎是从EXTRA_HEAD_LEN
开始,每隔4字节插入一字节的bssid直到插完为止(事实上应该是原数据上每隔3字节,因为每插入一个bssid后原数据剩余部分都往后挤出1个字节). 如果原数据插完不够长,就把剩下的bssid插在最后面...奇怪的做法啊.
而实际在传输中, 竟然会把1个字节数据拆成6个字节传输.
整个看起来挺复杂的,也升级了很多个版本, 没时间的话还是不建议自己再实现一遍了.
在这个网站下载
TortoiseSVN Password Decrypter , 命令行运行即可。
win10系统为例,
"控制面板"→“系统和安全”→点击“管理工具”栏目下的“查看事件日志”(当然老练的直接eventvwr命令,同样效果)
左侧栏展开“应用程序和服务日志”→展开“Microsoft”→展开"Windows",这下面有好多选项卡,鄙人是在“Dhcp-Client”选项卡下的“Microsoft-Windows-Dhcp-Client/Admin”这里面找到了我的历史ip(局域网的)
以供参考
看了会儿抖音直播,有如下发现:
VirtualPiano.net,神一样的站点哈哈
另一个虚拟钢琴
Top 10 Free Piano VST Plugins (Updated 2018)
VST 4 Free
VST: virtual studio technology虚拟工作室技术
上面这些只是插件,需要在支持VST的DAW上运行
Free music-production-software
6-best-free-music-production-software-for-beginners
电话键
KEYCODE_CALL 拨号键 5
KEYCODE_ENDCALL 挂机键 6
KEYCODE_HOME 按键Home 3
KEYCODE_MENU 菜单键 82
KEYCODE_BACK 返回键 4
KEYCODE_SEARCH 搜索键 84
KEYCODE_CAMERA 拍照键 27
KEYCODE_FOCUS 拍照对焦键 80
KEYCODE_POWER 电源键 26
KEYCODE_NOTIFICATION 通知键 83
KEYCODE_MUTE 话筒静音键 91
KEYCODE_VOLUME_MUTE 扬声器静音键 164
KEYCODE_VOLUME_UP 音量增加键 24
KEYCODE_VOLUME_DOWN 音量减小键 25
控制键
KEYCODE_ENTER 回车键 66
KEYCODE_ESCAPE ESC键 111
KEYCODE_DPAD_CENTER 导航键 确定键 23
KEYCODE_DPAD_UP 导航键 向上 19
KEYCODE_DPAD_DOWN 导航键 向下 20
KEYCODE_DPAD_LEFT 导航键 向左 21
KEYCODE_DPAD_RIGHT 导航键 向右 22
KEYCODE_MOVE_HOME 光标移动到开始键 122
KEYCODE_MOVE_END 光标移动到末尾键 123
KEYCODE_PAGE_UP 向上翻页键 92
KEYCODE_PAGE_DOWN 向下翻页键 93
KEYCODE_DEL 退格键 67
KEYCODE_FORWARD_DEL 删除键 112
KEYCODE_INSERT 插入键 124
KEYCODE_TAB Tab键 61
KEYCODE_NUM_LOCK 小键盘锁 143
KEYCODE_CAPS_LOCK 大写锁定键 115
KEYCODE_BREAK Break/Pause键 121
KEYCODE_SCROLL_LOCK 滚动锁定键 116
KEYCODE_ZOOM_IN 放大键 168
KEYCODE_ZOOM_OUT 缩小键 169
组合键
KEYCODE_ALT_LEFT Alt+Left
KEYCODE_ALT_RIGHT Alt+Right
KEYCODE_CTRL_LEFT Control+Left
KEYCODE_CTRL_RIGHT Control+Right
KEYCODE_SHIFT_LEFT Shift+Left
KEYCODE_SHIFT_RIGHT Shift+Right
基本
KEYCODE_0 按键'0' 7
KEYCODE_1 按键'1' 8
KEYCODE_2 按键'2' 9
KEYCODE_3 按键'3' 10
KEYCODE_4 按键'4' 11
KEYCODE_5 按键'5' 12
KEYCODE_6 按键'6' 13
KEYCODE_7 按键'7' 14
KEYCODE_8 按键'8' 15
KEYCODE_9 按键'9' 16
KEYCODE_A 按键'A' 29
KEYCODE_B 按键'B' 30
KEYCODE_C 按键'C' 31
KEYCODE_D 按键'D' 32
KEYCODE_E 按键'E' 33
KEYCODE_F 按键'F' 34
KEYCODE_G 按键'G' 35
KEYCODE_H 按键'H' 36
KEYCODE_I 按键'I' 37
KEYCODE_J 按键'J' 38
KEYCODE_K 按键'K' 39
KEYCODE_L 按键'L' 40
KEYCODE_M 按键'M' 41
KEYCODE_N 按键'N' 42
KEYCODE_O 按键'O' 43
KEYCODE_P 按键'P' 44
KEYCODE_Q 按键'Q' 45
KEYCODE_R 按键'R' 46
KEYCODE_S 按键'S' 47
KEYCODE_T 按键'T' 48
KEYCODE_U 按键'U' 49
KEYCODE_V 按键'V' 50
KEYCODE_W 按键'W' 51
KEYCODE_X 按键'X' 52
KEYCODE_Y 按键'Y' 53
KEYCODE_Z 按键'Z' 54
符号
KEYCODE_PLUS 按键'+'
KEYCODE_MINUS 按键'-'
KEYCODE_STAR 按键'*'
KEYCODE_SLASH 按键'/'
KEYCODE_EQUALS 按键'='
KEYCODE_AT 按键'@'
KEYCODE_POUND 按键'#'
KEYCODE_APOSTROPHE 按键''' (单引号)
KEYCODE_BACKSLASH 按键'\'
KEYCODE_COMMA 按键','
KEYCODE_PERIOD 按键'.'
KEYCODE_LEFT_BRACKET 按键'['
KEYCODE_RIGHT_BRACKET 按键']'
KEYCODE_SEMICOLON 按键';'
KEYCODE_GRAVE 按键'`'
KEYCODE_SPACE 空格键
小键盘
KEYCODE_NUMPAD_0 小键盘按键'0'
KEYCODE_NUMPAD_1 小键盘按键'1'
KEYCODE_NUMPAD_2 小键盘按键'2'
KEYCODE_NUMPAD_3 小键盘按键'3'
KEYCODE_NUMPAD_4 小键盘按键'4'
KEYCODE_NUMPAD_5 小键盘按键'5'
KEYCODE_NUMPAD_6 小键盘按键'6'
KEYCODE_NUMPAD_7 小键盘按键'7'
KEYCODE_NUMPAD_8 小键盘按键'8'
KEYCODE_NUMPAD_9 小键盘按键'9'
KEYCODE_NUMPAD_ADD 小键盘按键'+'
KEYCODE_NUMPAD_SUBTRACT 小键盘按键'-'
KEYCODE_NUMPAD_MULTIPLY 小键盘按键'*'
KEYCODE_NUMPAD_DIVIDE 小键盘按键'/'
KEYCODE_NUMPAD_EQUALS 小键盘按键'='
KEYCODE_NUMPAD_COMMA 小键盘按键','
KEYCODE_NUMPAD_DOT 小键盘按键'.'
KEYCODE_NUMPAD_LEFT_PAREN 小键盘按键'('
KEYCODE_NUMPAD_RIGHT_PAREN 小键盘按键')'
KEYCODE_NUMPAD_ENTER 小键盘按键回车
功能键
KEYCODE_F1 按键F1
KEYCODE_F2 按键F2
KEYCODE_F3 按键F3
KEYCODE_F4 按键F4
KEYCODE_F5 按键F5
KEYCODE_F6 按键F6
KEYCODE_F7 按键F7
KEYCODE_F8 按键F8
KEYCODE_F9 按键F9
KEYCODE_F10 按键F10
KEYCODE_F11 按键F11
KEYCODE_F12 按键F12
多媒体键
KEYCODE_MEDIA_PLAY 多媒体键 播放
KEYCODE_MEDIA_STOP 多媒体键 停止
KEYCODE_MEDIA_PAUSE 多媒体键 暂停
KEYCODE_MEDIA_PLAY_PAUSE 多媒体键 播放/暂停
KEYCODE_MEDIA_FAST_FORWARD 多媒体键 快进
KEYCODE_MEDIA_REWIND 多媒体键 快退
KEYCODE_MEDIA_NEXT 多媒体键 下一首
KEYCODE_MEDIA_PREVIOUS 多媒体键 上一首
KEYCODE_MEDIA_CLOSE 多媒体键 关闭
KEYCODE_MEDIA_EJECT 多媒体键 弹出
KEYCODE_MEDIA_RECORD 多媒体键 录音
手柄按键
KEYCODE_BUTTON_1 通用游戏手柄按钮#1
KEYCODE_BUTTON_2 通用游戏手柄按钮 #2
KEYCODE_BUTTON_3 通用游戏手柄按钮 #3
KEYCODE_BUTTON_4 通用游戏手柄按钮 #4
KEYCODE_BUTTON_5 通用游戏手柄按钮 #5
KEYCODE_BUTTON_6 通用游戏手柄按钮 #6
KEYCODE_BUTTON_7 通用游戏手柄按钮 #7
KEYCODE_BUTTON_8 通用游戏手柄按钮 #8
KEYCODE_BUTTON_9 通用游戏手柄按钮 #9
KEYCODE_BUTTON_10 通用游戏手柄按钮 #10
KEYCODE_BUTTON_11 通用游戏手柄按钮 #11
KEYCODE_BUTTON_12 通用游戏手柄按钮 #12
KEYCODE_BUTTON_13 通用游戏手柄按钮 #13
KEYCODE_BUTTON_14 通用游戏手柄按钮 #14
KEYCODE_BUTTON_15 通用游戏手柄按钮 #15
KEYCODE_BUTTON_16 通用游戏手柄按钮 #16
KEYCODE_BUTTON_A 游戏手柄按钮 A
KEYCODE_BUTTON_B 游戏手柄按钮 B
KEYCODE_BUTTON_C 游戏手柄按钮 C
KEYCODE_BUTTON_X 游戏手柄按钮 X
KEYCODE_BUTTON_Y 游戏手柄按钮 Y
KEYCODE_BUTTON_Z 游戏手柄按钮 Z
KEYCODE_BUTTON_L1 游戏手柄按钮 L1
KEYCODE_BUTTON_L2 游戏手柄按钮 L2
KEYCODE_BUTTON_R1 游戏手柄按钮 R1
KEYCODE_BUTTON_R2 游戏手柄按钮 R2
KEYCODE_BUTTON_MODE 游戏手柄按钮 Mode
KEYCODE_BUTTON_SELECT 游戏手柄按钮 Select
KEYCODE_BUTTON_START 游戏手柄按钮 Start
KEYCODE_BUTTON_THUMBL Left Thumb Button
KEYCODE_BUTTON_THUMBR Right Thumb Button
待查
KEYCODE_NUM 按键Number modifier
KEYCODE_INFO 按键Info
KEYCODE_APP_SWITCH 按键App switch
KEYCODE_BOOKMARK 按键Bookmark
KEYCODE_AVR_INPUT 按键A/V Receiver input
KEYCODE_AVR_POWER 按键A/V Receiver power
KEYCODE_CAPTIONS 按键Toggle captions
KEYCODE_CHANNEL_DOWN 按键Channel down
KEYCODE_CHANNEL_UP 按键Channel up
KEYCODE_CLEAR 按键Clear
KEYCODE_DVR 按键DVR
KEYCODE_ENVELOPE 按键Envelope special function
KEYCODE_EXPLORER 按键Explorer special function
KEYCODE_FORWARD 按键Forward
KEYCODE_FORWARD_DEL 按键Forward Delete
KEYCODE_FUNCTION 按键Function modifier
KEYCODE_GUIDE 按键Guide
KEYCODE_HEADSETHOOK 按键Headset Hook
KEYCODE_META_LEFT 按键Left Meta modifier
KEYCODE_META_RIGHT 按键Right Meta modifier
KEYCODE_PICTSYMBOLS 按键Picture Symbols modifier
KEYCODE_PROG_BLUE 按键Blue “programmable”
KEYCODE_PROG_GREEN 按键Green “programmable”
KEYCODE_PROG_RED 按键Red “programmable”
KEYCODE_PROG_YELLOW 按键Yellow “programmable”
KEYCODE_SETTINGS 按键Settings
KEYCODE_SOFT_LEFT 按键Soft Left
KEYCODE_SOFT_RIGHT 按键Soft Right
KEYCODE_STB_INPUT 按键Set-top-box input
KEYCODE_STB_POWER 按键Set-top-box power
KEYCODE_SWITCH_CHARSET 按键Switch Charset modifier
KEYCODE_SYM 按键Symbol modifier
KEYCODE_SYSRQ 按键System Request / Print Screen
KEYCODE_TV 按键TV
KEYCODE_TV_INPUT 按键TV input
KEYCODE_TV_POWER 按键TV power
KEYCODE_WINDOW 按键Window
KEYCODE_UNKNOWN 未知按键