你好,下丘脑

人的大脑中有个器官,叫做下丘脑。下丘脑有控制体温控制的功能。刚出生的婴儿,下丘脑发育不完全,无法调节自己的体温。所以一般都把小宝宝包被子里,而她只能通过哭闹反应自己的不适。 随着身体的发育,下丘脑逐渐掌握体温控制的功能。 白天越来越长,从电脑屏幕上抬起头,发现已经有人收拾桌面,准备好要下班了。 不知不觉,已经六点多了。 夕阳西下,晚霞似火,凉风习习。 漕河泾的腾讯大楼,影子被拉到地下停车场的入口,彷佛是情人间的法式舌吻。 园区里行人匆匆,车辆缓缓~ 掐指算起,毕业已四年。时间如白驹过隙,指间流沙。 恍然间,三十将至,尚未而立。 小孩子爱憎分明,喜欢与不喜欢就直接说,不懂得拐弯抹角。 成年人放下爱憎,只有生存 无论如何,你应当体谅别人的世界与你的不同。 对你来说,很容易理解的问题。可能对别人来说,是难以理解的。 不要将自己当作干柴,稍微一点,就成烈火。 当你知道你将要说的话会让别人难堪时,请咽下去吧。 不要轻易否定一个人的工作价值,每个人都希望自己得到肯定。 无论是对待陌生人、同事、或者是朋友。 我们不是刚出生的婴儿,我们有完全发育的下丘脑。 控制你的体温,同时也控制你的脾气,你说话的方式。 每个人都值得温柔以待,即使是你不喜欢的人。 你好,下丘脑~

2020-05-12 22:44:49 · 1 min · Eddie Wang

尿酸简史

从细胞说起 人体由细胞组成。人体的细胞中大约有40-60万亿个。细胞无时无刻不再新老更替、新陈代谢。 微观世界的细胞变化,反应在人体生产,就是一个人从成长到衰老的过程。 细胞中有一种重要的物质,核酸。核酸是脱氧核糖核酸(DNA)和核糖核酸(RNA)的总称。 核酸由无数的核苷酸组成,核苷酸里有一种物质叫做嘌呤。而嘌呤和人体的尿酸有着密不可分的关系。 除了作为遗传物质的一部分,嘌呤中的腺嘌呤也是腺苷三磷酸(ATP)的重要组成部分。APT是人体直接的能量来源。 在剧烈运动时,APT会进一步分解成腺嘌呤。 总之:尿酸和嘌呤的关系非常密切。人体细胞的遗传物质以及作为能量来源的APT都会产生嘌呤。 尿酸来源分类 内源性尿酸: 来自人体自身细胞衰亡,残留的嘌呤经过酶的作用产生尿酸 外源性尿酸: 大多来自食物中的嘌呤类化合物、核酸、核蛋白等物质、经过酶的作用下产生尿酸。 我们身体中的尿酸2/3来自自身的生命活动, 1/3来自食物。 尿酸的合成与排泄 大部分的嘌呤在肝脏中经过氧化代谢、变成尿酸。在词过程中,有两类酶扮演着重要作用。 抑制尿酸合成的酶 促进尿酸合成的酶 2/3的尿酸通过肾脏排出。肾脏只有也有能够促进或者抑制尿酸重吸收的酶。 1/3的尿酸通过肠道排出 所以尿酸较高的患者,医生会让你抽血查肝功能和肾功能,如果肝脏中的某些指标异常,也会进一步通过B超去做进一步的判断。 很多人误以为尿酸是查尿液,实际上这是被尿酸的名字误解了,尿酸是抽血检测的。 人体中酶在声明活动中扮演着重要的角色。酶就好像是太极中的阴与阳一样,相互制衡达到平衡之时,身体才会健康。否则阴阳失衡,必然会存在身体病变。 另外一些降低尿酸的药品,例如苯溴马隆片,其药理也是通过降低肾脏对尿酸的重吸收,来促进尿酸的排泄的。 食物中的尿酸对人体影响有多大? 具体哪些不能吃,哪些能吃,网上都有很多资料了。总之,大鱼大肉是要尽量避免的。食物主要要以清淡为主,吃饭不要吃撑,尽量迟到7分饱,或者迟到不饿为佳。 高尿酸的危害 有溶解度相关知识的同学都会知道,溶质在溶液中都是由溶解度的,超过溶解度之后,物质就会析出。尿酸也是如此,过饱和的尿酸会析出称为尿酸结晶。 这些结晶会沉积在关节和各种软组织,就可能造成这些部位的损害。 当尿酸结晶附着在关节软骨表面上的滑膜上时,血液中的白细胞会把它当做敌人,释放各种酶去进攻。这些酶在进攻敌人的同时,对自身的关节软骨的溶解和自身软组织的损伤。 对痛风患者而言,感受到的就是苦不堪言的痛风性关节炎 另外,大量的尿酸最终是通过肾脏排泄的,如果尿酸在肾脏上析出。对肾脏也会造成难以修复的损害,甚至患上尿毒症。光听这个尿毒症的名字,你就应该这道,这个病有多厉害。当你管不住自己嘴的时候,想想尿毒症吧。 不要等到失去任劳任怨的肾脏之后,再后悔莫及。 参考 https://baike.baidu.com/item/%E4%BA%BA%E4%BD%93%E7%BB%86%E8%83%9E

2020-05-12 15:47:14 · 1 min · Eddie Wang

kaldi安装

为了省去安装的麻烦,我直接使用的是容器版本的kaldi https://hub.docker.com/r/kaldiasr/kaldi docker pull kaldiasr/kaldi This is the official Docker Hub of the Kaldi project: http://kaldi-asr.org Kaldi offers two sets of images: CPU-based images and GPU-based images. Daily builds of the latest version of the master branch (both CPU and GPU images) are pushed to DockerHub. Sample usage of the CPU based images: docker run -it kaldiasr/kaldi:latest Sample usage of the GPU based images: Note: use nvidia-docker to run the GPU images. docker run -it --runtime=nvidia kaldiasr/kaldi:gpu-latest Please refer to Kaldi's GitHub repository for more details. kaldiasr/kaldi这个镜像是基于linuxkit构建的,如果缺少什么包,可以使用apt命令在容器中安装 ...

2020-05-12 15:40:02 · 1 min · Eddie Wang

Type 'Timeout' is not assignable to type 'number'

let timer:NodeJS.Timer; timer = global.setTimeout(myFunction, 1000); 参考http://evanshortiss.com/development/nodejs/typescript/2016/11/16/timers-in-typescript.html

2020-05-12 15:35:54 · 1 min · Eddie Wang

macbook 清空DNS缓存

sudo killall -HUP mDNSResponder

2020-05-11 17:40:48 · 1 min · Eddie Wang

xmpp学习

2020-05-08 11:09:53 · 0 min · Eddie Wang

从pcap文件提取转wav语音文件

wireshark具有这个功能,但是并不适合做批量执行。 下面的方案比较适合批量执行。 # 1. 安装依赖 yum install gcc libpcap-devel libnet-devel sox -y # 2. 克隆源码 git clone https://github.com/wangduanduan/rtpsplit.git # 3. 切换目录 cd rtpsplit # 4. 编译可执行文件 make # 5. 将可执行文件复制到/usr/local/bin目录下 cp src/rtpbreak /usr/local/bin # 6. 切换到录音文件的目录,假如当前目录只有一个文件 rtpbreak -r krk9hprvin1u1laqe14g-8beffe8aaeb9bf99.pcap -g -m -d ./ audio git:(edge) ✗ rtpbreak -r krk9hprvin1u1laqe14g-8beffe8aaeb9bf99.pcap -g -m -d ./ + rtpbreak v1.3a running here! + pid: 1885, date/time: 01/05/2020#09:49:05 + Configuration + INPUT Packet source: rxfile 'krk9hprvin1u1laqe14g-8beffe8aaeb9bf99.pcap' Force datalink header length: disabled + OUTPUT Output directory: './' RTP raw dumps: enabled RTP pcap dumps: enabled Fill gaps: enabled Dump noise: disabled Logfile: './/rtp.0.txt' Logging to stdout: enabled Logging to syslog: disabled Be verbose: disabled + SELECT Sniff packets in promisc mode: enabled Add pcap filter: disabled Expecting even destination UDP port: disabled Expecting unprivileged source/destination UDP ports: disabled Expecting RTP payload type: any Expecting RTP payload length: any Packet timeout: 10.00 seconds Pattern timeout: 0.25 seconds Pattern packets: 5 + EXECUTION Running as user/group: root/root Running daemonized: disabled * You can dump stats sending me a SIGUSR2 signal * Reading packets... open di .//rtp.0.0.txt ! [rtp0] detected: pt=0(g711U) 192.168.40.192:26396 => 192.168.60.229:20000 open di .//rtp.0.1.txt ! [rtp1] detected: pt=0(g711U) 10.197.169.10:49265 => 192.168.60.229:20012 * eof reached. -- Caught SIGTERM signal (15), cleaning up... -- * [rtp1] closed: packets inbuffer=0 flushed=285 lost=0(0.00%), call_length=0m12s * [rtp0] closed: packets inbuffer=0 flushed=586 lost=0(0.00%), call_length=0m12s + Status Alive RTP Sessions: 0 Closed RTP Sessions: 2 Detected RTP Sessions: 2 Flushed RTP packets: 871 Lost RTP packets: 0 (0.00%) Noise (false positive) packets: 8 + No active RTP streams # 7. 查看输出文件 -rw-r--r--. 1 root root 185K May 1 09:22 krk9hprvin1u1laqe14g-8beffe8aaeb9bf99.pcap -rw-r--r--. 1 root root 132K May 1 09:49 rtp.0.0.pcap -rw-r--r--. 1 root root 92K May 1 09:49 rtp.0.0.raw -rw-r--r--. 1 root root 412 May 1 09:49 rtp.0.0.txt -rw-r--r--. 1 root root 52K May 1 09:49 rtp.0.1.pcap -rw-r--r--. 1 root root 33K May 1 09:49 rtp.0.1.raw -rw-r--r--. 1 root root 435 May 1 09:49 rtp.0.1.txt -rw-r--r--. 1 root root 1.7K May 1 09:49 rtp.0.txt # 8. 使用sox 转码以及合成wav文件 sox -r8000 -c1 -t ul rtp.0.0.raw -t wav 0.wav sox -r8000 -c1 -t ul rtp.0.1.raw -t wav 1.wav sox -m 0.wav 1.wav call.wav # 最终合成的 call.wav文件,就是可以放到浏览器中播放的双声道语音文件 参考 rtpbreak帮助文档 Copyright (c) 2007-2008 Dallachiesa Michele <micheleDOTdallachiesaATposteDOTit> rtpbreak v1.3a is free software, covered by the GNU General Public License. USAGE: rtpbreak (-r|-i) <source> [options] INPUT -r <str> Read packets from pcap file <str> -i <str> Read packets from network interface <str> -L <int> Force datalink header length == <int> bytes OUTPUT -d <str> Set output directory to <str> (def:.) -w Disable RTP raw dumps -W Disable RTP pcap dumps -g Fill gaps in RTP raw dumps (caused by lost packets) -n Dump noise packets -f Disable stdout logging -F Enable syslog logging -v Be verbose SELECT -m Sniff packets in promisc mode -p <str> Add pcap filter <str> -e Expect even destination UDP port -u Expect unprivileged source/destination UDP ports (>1024) -y <int> Expect RTP payload type == <int> -l <int> Expect RTP payload length == <int> bytes -t <float> Set packet timeout to <float> seconds (def:10.00) -T <float> Set pattern timeout to <float> seconds (def:0.25) -P <int> Set pattern packets count to <int> (def:5) EXECUTION -Z <str> Run as user <str> -D Run in background (option -f implicit) MISC -k List known RTP payload types -h This

2020-05-01 09:36:26 · 3 min · Eddie Wang

娱乐智障

娱乐至死,娱乐也能让人变得智障。 贪图于精神愉悦,在永无休止的欢悦中难以自拔。 道德经上写道:五色令人目盲,五音令人耳聋,五味令人口爽,驰骋田猎令人心发狂。 现代人尤其如此。买分辨率最高的显示器,刷新频率最高的手机,买最贵的耳机,吃口味最为劲爆的火锅。 感觉人都已经被五官所控制,变成了一个行尸走肉的躯壳。 但是话又说回来,人为什么要这要麻痹自己呢? 或许变成一个智障,才能稍微从现实的夹缝中稍微缓口气。 冷风如刀,以大地为砧板,视众生皆为鱼肉。

2020-04-28 21:56:52 · 1 min · Eddie Wang

自动IP拦截工具fail2ban使用教程

简介 如果你的主机在公网上有端口暴露出去,那么总会有一些不怀好意的家伙,会尝试通过各种方式攻击你的机器。常见的服务例如ssh, nginx都会有类似的威胁。 手工将某个ip加入黑名单,这种操作太麻烦,而且效率低。而fail2ban就是一种自动化的解决方案。 fail2ban工作原理 fail2ban的工作原理是监控某个日志文件,然后根据某些关键词,提取出攻击方的IP地址,然后将其加入到黑名单。 fail2ban安装 yum install fail2ban -y # 如果找不到fail2ban包,就执行下面的命令 yum install epel-release # 安装fail2ban 完成后 systemctl enable fail2ban # 设置fail2ban开机启动 systemctl start fail2ban # 启动fail2ban systemctl status fail2ban # 查看fail2ban的运行状态 用fail2ban保护ssh fail2ban的配置文件位于/etc/fail2ban目录下。 在该目录下建立一个文件 jail.local, 内容如下 bantime 持续禁止多久 maxretry 最大多少次尝试 banaction 拦截后的操作 findtime 查找时间 看下下面的操作的意思是:监控sshd服务的最近10分钟的日志,如果某个ip在10分钟之内,有2次登录失败,就把这个ip加入黑名单, 24小时之后,这个ip才会被从黑名单中移除。 [DEFAULT] bantime = 24h banaction = iptables-multiport maxretry = 2 findtime = 10m [sshd] enabled = true 然后重启fail2ban, systemctl restart fail2ban fail2ban提供管理工具fail2ban-client **fail2ban-client status **显示fail2ban的状态 **fail2ban-client status sshd **显示某个监狱的配置。从下文的输出来看可以看出来fail2ban已经拦截了一些IP地址了 > fail2ban-client status Status |- Number of jail: 1 `- Jail list: sshd > fail2ban-client status sshd Status for the jail: sshd |- Filter | |- Currently failed: 2 | |- Total failed: 23289 | `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd `- Actions |- Currently banned: 9 |- Total banned: 1270 `- Banned IP list: 93.174.93.10 165.22.238.92 23.231.25.234 134.255.219.207 77.202.192.113 120.224.47.86 144.91.70.139 90.3.194.84 217.182.89.87 fail2ban保护sshd的原理 fail2ban的配置文件目录下有个filter.d目录,该目录下有个sshd.conf的文件,这个文件就是对于sshd日志的过滤规则,里面有些正常时用来提取出恶意家伙的IP地址。 ...

2020-04-28 08:48:11 · 9 min · Eddie Wang

Linux进程和线程

思考题:当你用ssh登录到一个linux机器,并且执行了某个hello.sh之后,有哪些进程参与了该过程? linux系统架构 kernel mode user mode 内核态和用户态的区别 什么是进程 进程是运行的程序 process 是对 processor 虚拟化,通过时间片 进程都有uid nginx访问某个目录,Permission denied 进程都有pid $$ 进程都有父进程 准确来说,除了pid为0的进程之外,其他进程都有父进程 有时候,你用kill命令杀死了一个进程,但是立马你就发现这个进程又起来了。你就要看看,这个进程是不是有个非init进程的父进程。一般这个进程负责监控子进程,一旦子进程挂掉,就会去重新创建一个进程。所以你需要找到这个父进程的Id,先把父进程kill掉,然后在kill子进程。 进程是一棵树 #!/bin/bash echo "pid is $$" times=0 while true do sleep 2s; let times++; echo $times hello; done ➜ ~ pstree 24601 sshd─┬─3*[sshd───zsh] ├─sshd───zsh───pstree └─sshd───zsh───world.sh───sleep 进程都有生命周期 创建 销毁 进程都有状态 runing 进程占用CPU, 正在执行指令 ready 进程所有需要的资源都已经就绪,等待进入CPU执行 blocked 进程被某些事件阻断,例如IO。 进程的状态转移图 ...

2020-04-25 20:30:18 · 7 min · Eddie Wang