利用 Python 的 CGIHTTPServer 测试 CGI 脚本程序

Python 3

步骤:

  1. 新建HttpServer目录

    1
    2
    mkdir HttpServer
    cd HttpServer
  2. 在HttpServer目录下新建cgi-bin目录

    1
    2
    mkdir cgi-bin
    cd cgi-bin
  3. 在cgi-bin目录下新建helloworld.sh文件,内容如下:

1
vim helloworld.sh
1
2
3
4
5
#!/bin/bash
echo "Content-Type:text/html"
echo ""

echo "hello world!"
  1. 在cgi-bin目录下打开命令行,执行
1
chmod +x helloworld.sh

赋予helloworld.sh可执行的权限

  1. 在HttpServer目录下打开命令行,执行命令
1
python -m http.server --cgi --bind 0.0.0.0 8088

就会把HttpServer目录以后台服务的方式作为CGIHTTPServer启动,运行log可在当前目录的nohup.out文件中查看。

  1. 打开浏览器,地址栏出入:

http://localhost:8088/cgi-bin/helloworld.sh

即可看到输出的Hello World!

Python 2

步骤:

  1. 新建HttpServer目录

  2. 在HttpServer目录下新建cgi-bin目录

  3. 在cgi-bin目录下新建helloworld.sh文件,内容如下:

1
2
3
4
5
#!/bin/bash
echo "Content-Type:text/html"
echo ""

echo "hello world!"
  1. 在cgi-bin目录下打开命令行,执行
1
chmod +x helloworld.sh

赋予helloworld.sh可执行的权限

  1. 在HttpServer目录下打开命令行,执行命令
1
nohup python -m CGIHTTPServer 8088 &

就会把HttpServer目录以后台服务的方式作为CGIHTTPServer启动,运行log可在当前目录的nohup.out文件中查看。

  1. 打开浏览器,地址栏出入:

http://localhost:8088/cgi-bin/helloworld.sh

即可看到输出的Hello World!

参考

利用Python的CGIHTTPServer测试CGI脚本程序

JForum 配置

启动 MySQL

1
docker pull mariadb:10.3.9
1
docker run -p 3306:3306 -v ~/docker/mariadb:/var/lib/mysql -e TIMEZONE=Asis/Shanghai -e MYSQL_ROOT_PASSWORD=root -e SERVER_ID=1 --name mariadb-10.3.9 -d mariadb:10.3.9

连接数据库

1
mysql -h 127.0.0.1 -P 3306 -uroot -p

新建 jforum 数据库

1
CREATE DATABASE jforum DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

启动 Tomcat

1
docker pull tomcat:8.5.39-alpine
1
docker run -d --name jforum_tomcat -p 8080:8080  -v ~/docker/tomcat/webapps:/usr/local/tomcat/webapps tomcat:8.5.39-alpine

下载 JForum 并复制 JForum 文件到 ~/docker/tomcat/webapps 目录下

1
cp -r jforum ~/docker/tomcat/webapps

修改 jforum 连接 mysql 的用户名和密码

1
jforum/WEB-INF/config/database/mysql/mysql.properties

修改数据库引擎,查找所有的 “TYPE=InnoDB” 修改为 “ENGINE=InnoDB”。

1
jforum\WEB-INF\config\database\mysql\mysql_db_struct.sql
1
docker build -t jforum:2.1.9 .

保存镜像

1
docker save jforum:2.1.9 -o jforum:2.1.9.tar

加载镜像

可以在任何装 docker 的地方加载 刚保存的镜像了。

1
docker load -i jforum:2.1.9.tar

启动 jforum

1
docker run -d --name jforum-2.1.9 -p 8080:8080 --link mariadb-10.3.9:mysql jforum:2.1.9

配置 jforum ,浏览器访问

http://localhost:8080/jforum/install.jsp

参考

JForum论坛安装以及部署

群晖 NAS 使用

群晖 synology NAS 忘记 google authenticator 二次验证密码

登录22端口, 删除google_authenticator文件

开启了SSH,则登录22端口, 删除google_authenticator文件

首先通过SSH登录NAS

1
ssh user@ip

查找google Authenticator 参数文件。

1
sudo find /usr -name google_authenticator

将会搜索到以下路径的google_authenticator文件。

1
/usr/syno/etc/preference/用户名/google_authenticator

删除这个文件

1
rm /usr/syno/etc/preference/用户名/google_authenticator

群晖synology NAS ds 1815+忘记google authenticator二次验证密码

Wireshark 使用

Wireshark

Wireshark网络分析就这么简单-书籍

抓包

只抓必要的包:

第一种:打开 Wireshark,在主界面上->Capture->using this filter(输入 host www.baidu.com

第二种

Capture->Options, Capture Filter(新建 Filter,使用IP 或者域名)

CaptureFilters - The Wireshark Wiki

tcpdump

1
tcpdump -i eth0 host www.baidu.com -w ~/tmp/tcpdump.cap

每步操作打上标记:

macOS

1
2
3
4
# -c 次数,-s 包大小
ping www.baidu.com -c 1 -s 1
ping www.baidu.com -c 1 -s 2
ping www.baidu.com -c 1 -s 3

Windows

1
2
3
4
# -n 次数,-l 包大小
ping www.baidu.com -n 1 -l 1
ping www.baidu.com -n 1 -l 2
ping www.baidu.com -n 1 -l 3

个性化设置

日志时间格式

View->Time Display Format->Date and Time of Day(快捷键:command+option+1)

不同类型的网络包可以自定义颜色

View->Coloring Rules

颜色配置可以导入/导出方便其他主机上的 Wireshark 使用。

更多的设置细节

例如:配置 TCP 协议相关的细节。

Preferences(快捷键:command+,)->Protocols->TCP

抓包服务器时区不同

如果你在其他时区的服务器上抓包,然后下载到自己的电脑上分析,最好把自己电脑的时区设成跟抓包的服务器一样。这样,Wireshark显示的时间才能匹配服务器上日志的时间。否则就得先换算时间。

过滤

很多时候,解决问题的过程就是层层过滤,直至找到关键包。前面已经介绍过抓包时的Capture Filter功能了。其实在包抓下来之后,还可以进一步过滤,而且这一层的过滤功能更加强大。

Wireshark · Display Filter Reference: Index

已知协议

如果已知某个协议发生问题,可以用协议名称过滤一下,那么就在 Filter 框输入 http 为关键字过滤。

协议之间依赖关系

用协议过滤时务必考虑到协议间的依赖性。比如NFS共享挂载失败,问题可能发生在挂载时所用的mount协议,也可能发生在mount之前的portmap协议。这种情况下就需要用 portmap || mount来过滤了。

IP 地址加 port 号

Wireshark是按照什么过滤出一个TCP/UDP Stream的?答案就是:两端的IP加port。单击Wireshark的Statistics–>Conversations,再单击TCP或者UDP标签就可以看到所有的Stream

手工输入

1
2
3
4
5
ip.addr==10.8.7.214
ip.addr eq 10.8.7.214

tcp.port==443
tcp.port eq 443

自动追踪 (Follow TCP/UDP Stream)

鼠标右键要追踪的包->Follow->TCP Stream(快捷键:option+shift+command+T )

用鼠标帮助过滤

我们有时因为Wireshark而苦恼,并不是因为它功能不够,而是强大到难以驾驭。比如在过滤时,有成千上万的条件可供选择,但怎么写才是合乎语法的?

  • 右键单击Wireshark上感兴趣的内容,然后选择Prepare a Filter–>Selected,就会在Filter框中自动生成过滤表达式。在有复杂需求的时候,还可以选择And、Or等选项来生成一个组合的过滤表达式。

  • 假如右键单击之后选择的不是Prepare a Filter,而是Apply as Filter–>Selected,则该过滤表达式生成之后还会自动执行。图12显示了在一个SMB包的SMB Command: Read AndX上右键单击,并选择Selected之后,所有的Read包都会被过滤出来。

过滤后得到的网络包存到一个新的文件

我们可以把过滤后得到的网络包存在一个新的文件里,因为小文件更方便操作。单击Wireshark的 File–>Export Specified Packets,得到的新文件就是过滤后的部分。

让Wireshark自动分析

Export Information

单击Wireshark的Analyze–>Expert Infomation,就可以在不同标签下看到不同级别的提示信息。比如重传的统计、连接的建立和重置统计,等等。在分析网络性能和连接问题时,我们经常需要借助这个功能。

Service Response Time

单击Statistics–>Service Response Time->再选定协议名称,可以得到响应时间的统计表。我们在衡量服务器性能时经常需要此统计结果。

支持 AFP,LDAP,SCSI,SMB,SMB 协议。其他的协议没有见过。

TCP Stream Graph

单击Statistics–>TCP Stream Graph,可以生成几类统计图。

为什么Wireshark要把这个图称为“Stevens”呢?我猜是为了向《TCP/IP Illustrated》的作者Richard Stevens致敬。这也是我非常喜欢的一套书,在此推荐给所有读者。

I/O Graph

单击Statistics->I/O Graph,可以看到一些统计信息,比如平均流量等,这有助于我们推测负载状况。

搜索功能

与很多软件一样,Wireshark也可以通过 “Ctrl+F”(command+F)搜索关键字。假如我们怀疑包里含有“error”一词,就可以按下 “Ctrl+F” 之后选中 String 单选按钮,然后在 Filter 中输入 error 进行搜索很多应用层的错误都可以靠这个方法锁定问题包。

一篇文章不可能涵盖所有技巧,本文就到此为止。最后要分享的,是我认为最“笨”但也是最重要的一个技巧——勤加练习。只要练到这些技巧都变成习惯,就可以算登堂入室了。

2011年Wireshark在SecTools排行第一,2012年被Insecure.org评为“No. 1 Packet Sniffers”。美国的技术作家们开始为它著书立说,中国的出版社也在引进(比如人民邮电出版社引进出版的《Wireshark数据包分析实战(第2版)》)。值得一提的是,CACE后来被Riverbed收购了,Riverbed成了Wireshark项目的赞助商。很多中国工程师可能觉得Riverbed名不见经传,但说到Linux里常用的tcpdump命令就不会陌生。tcpdump的开发者之一Steve McCanne就是Riverbed的CTO。而WinPcap的开发者Loris Degioanni也在Riverbed工作。似乎冥冥之中自有天意,Riverbed把网络探测界的先锋们聚到了一起。我们要向Riverbed致敬,多亏了这些伟大的工具,我们才得以窥探网络的秘密。

庖丁解牛

NFS 协议的解析

Filter:portmap || mount || nfs

NFS对客户端的访问控制是通过IP地址实现的。创建共享目录时可以指定哪些IP允许读写,哪些IP只允许读,还有哪些IP连挂载都不允许。虽然配置不难,但这方面出的问题往往很“诡异”,没有Wireshark是几乎无法排查的。比如,我碰到过一台客户端的IP明明已经加到允许读写的列表里,结果却只能读。这个问题难住了很多工程师,因为在客户端和服务器上都找不到原因。后来我们在服务器上抓了个包,才知道在收到的包里,客户端的IP已经被NAT设备转换成别的了。

HTTP 协议

HTTPS 协议解密

通过浏览器保存的TLS 会话中使用的对称密钥来进行数据解密。

Wireshark 的抓包原理是直接读取并分析网卡数据,要想让它解密 HTTPS 流量,有两个办法:

1)如果拥有 HTTPS 网站的加密私钥,可以用来解密这个网站的加密流量;

2)某些浏览器支持将 TLS 会话中使用的对称加密密钥保存在外部文件中,可供 Wireshark 解密之用。

TLS/SSL抓包常见方法(一)

HTTP/2 流量调试

Wireshark解密HTTPS数据流

macOS

1
2
3
4
5
6
7
touch ~/tmp/sslkeylog.log

# 设置环境变量
export SSLKEYLOGFILE=~/tmp/sslkeylog.log

# 查看变量是否生效
echo $SSLKEYLOGFILE

Preferences->Protocols->SSL

SSL debug file: cat ~/tmp/ssl.log

(Pre)-Master-Secret log filename: ~/tmp/sslkeylog.log

启动 Wireshark: filterhost pan.baidu.com and tcp port 443

启动 Chromeopen /Applications/Google\ Chrome.app

1
2
cat ~/tmp/sslkeylog.log
cat ~/tmp/ssl.log

Life is tough, but Wireshark makes it easy.

SACK

tshark

macOS 下安装 Wireshark的时候,默认会附带 tshark、capinfos 和 editcap 等工具。

tshark - The Wireshark Network Analyzer 3.0.0

1
tshark -n -r <tcpdump name> -z 'proto, colinfo, frame.time_relative, frame.time_relative' -z 'proto, colinfo, tcp.ack && (tcp.srcport == <source port> && tcp.dstport == <destination _port>),tcp.ack' -z 'proto, colinfo, tcp.window_size && (tcp.srcport == <source_ port> && tcp.dstport == <destination port>), tcp.window_size'|awk -f <script>

tshark输出的分析文本大多可以直接写入分析报告中,而 Wireshark生成不了这样的报告。比如说,我想统计每一秒钟里CIFS操作的 Service Response Time,那只要执行以下命令就可以了。

1
tshark -n -q -r tcpdump.cap -z "io, stat, 1.00, AVG(smb.time)smb.time"

和其他软件一样,命令行往往比图形界面快得多。比如现在有一个很大的包需要用IP192.168.1.134过滤,用 Wireshark操作的话先得打开包,再用ip.adr=192.168.1.134过滤,最后保存结果。这三个步骤都很费时,但是tshark用下面一条命令就可以完成了。

1
tshark -r tcpdump log -R "ip.addr==192.168.1.134 -w tcpdump.log.filtered

重传状况要用到 tcp.analysis.retransmission 命令,包括了超时重传和快速重传两种情况。

1
tshark -n -a -r retran.cap -z "io, stat, 0, tcp.analysis.retransmission"

乱序状况则只要把“ retransmission”改成” out_of_order”

如何统计一个包里的所有对话? conv,xxx 就可以做到,其中xxx可以是tcp、udp、eth或者ip。

1
tshark -n -q -r retran.cap -z "conv, tcp"

如果一个包大得连 tshark都无法打开,有没有办法切分成多个? 有办法,可以使用 editar命令来做到。

1
2
3
4
5
6
# 每8秒为间隔切分了这个包
editcap <input file> <output file> -i <seconds per file>
editcap retran.cap output.cap -i 8

#
editcap < input file> <output file> -c <packets per file>

除了这里介绍的这些, tshark下的网络分析技巧还有很多。利用管道( Pipeline) 还可以结合awk、sed等命令实现更为强大的功能,值得每位工程师长期学习。如果学习过程中遇到任何问题,建议查询 Wireshark的官方说明,地址为 tshark - The Wireshark Network Analyzer 3.0.0 。就算我这样的老用户还经常能从中学到新知识呢。

一个技术男的自白

​ 当我在台灯下写到这一篇时,不由得想到几个月后,另一束灯光下的读者正翻到这一页,跨越时空的交流真是奇妙。我要感谢你购买本书并坚持读到这里。作为小众图书的作者,我最珍视的是读者对本书内容的喜爱,也希望你在阅读中有所收获。最后一篇,就让我们忘记那些乏味的术语,谈些有趣一点的话题吧。

​ 关于技术,当下的热点是 Full Stack Engineer,翻译过来就是全栈工程师。我的理解就是从前端到后端,从软件到硬件都懂的通才。其实在全栈的概念出现之前,关于技术广度和深度的讨论就从来没有停止过。在时间有限的情况下,究竟是应该扩展广度,各种技术都去涉猎,还是把所有精力都投入在一门技术上呢? 我个人更倾向于后者,因为当某项技术学到了较深的程度后,眼界就不一样了, 再学其他的技术也容易达到类似境界。以本书提到的协议为例,如果你已经精通CIFS,那很可能稍加点拨就能完全理解NFS;同样如果你理解了网络的分层和流控,再学习存储的层次和缓存也比较容易。但假如一个人连最擅长的技术都浅尝辄止,那学习其他技术也会停留在表面上。我有位技术出色的朋友用过一个生动的比喻来说明这个问题;技术深度和广度的关系,就像登山时的高度和视野。假如你爬到半山腰就停下来眺望,就只能看到一半的视野;但如果埋头爬到山顶, 抬头便是无边的风景。

​ 关于薪水,是很多工程师自怨自艾的口水话题。不知道从何时开始,大家似平都觉得自己被亏待了。微博上流传各种自嘲的段子,比如“今天你编程时流的汗,就是当初填志愿时脑子进的水”;我也曾经开玩笑说自己的英文名是“Low Payman”;我有位年薪40多万的同事,MSN签名是“少壮不努力,老大干I”还有一种流行的说法,认为在中国不适合走技术路线,否则为什么在国外才有白发苍苍的老工程师?看过太多类似段子之后,我觉得这种群体心态已经有点矫情了。无论在什么国家,工程师都排不上收入最高的群体。相比国外,中国工程地位已经算高了,比如美国工程师的收入就完全比不上律师和医生等职业,但在中国就未必是这样。中国也不是没有老工程师的发展空间,而是因为第一批工程师还没有变老。热爱自嘲的人其实也心知肚明一一他们的薪水完全足以维持体面的生活,比如那位“少壮不努力”的同学,一直在上海这个大染缸过着纸醉金迷的日子。而真正徒伤悲的职业,恐怕根本没有心情自我编排……我认为自明是种难得的幽默,但是当一个群体的自嘲都专注在薪水上,听上去就有点无聊。

​ 关于办公室政治,那真不是属于我们的战场。孟子的“劳心者治人,劳力者治于人”对中国影响太过深远,我不止一位朋友从技术路线改走管理路线的时候, 以这句话作为座右铭。而在我看来,自从人类进化到可以坐在办公室里“劳力”之后,“劳心”就缺乏吸引力了。人类比电脑狡诈太多,还是管电脑省心。我们就把办公室政治这样劳心的活儿留给走管理路线的同事吧,只要不站队不说是非, 用技术帮助所有人,自然会成为单位里最受尊敬的人。

​ 关于创业,我想没有哪个行业比IT界更热衷于此了。或许是因为这一行有过太多轻易成功的故事,所以工程师们蠢蠢欲动,仿佛每个人都在想,连一个毫无技术含量的导航网站都能被高价收购,满腹才华的我能干出怎样惊天动地的事业?于是有志者开始对职业不满,觉得无论如何应该出去闯闯,寻找自己被封印的灵魂,他们振臂一挥,豪气万丈地说“走,创业去!”其实我个人是非常羡慕这样充满激情的人生的,无奈看过太多失败的例子,总觉得创业的成功率被高估。有位朋友到福建承包一片山林之后,很快发现这东西并没有想象中那么赚钱。终于在花光所有积蓄之后,萌发了“不如归去”的念头。虽然听上去颇有禅意,其实心里还是很懊悔的,最后不仅回到原来公司,还坐到原来的位子上。当然成功者也是有的,不要妒嫉他们,因为这是冒着风险得到的。
​ 关于跳槽,除了印度之外,我还没有见过比中国工程师更爱跳槽的群体。由于每跳槽一次基本能加薪30%,的确让人难以淡定地呆在一个岗位上。不过在我看来,频繁跳槽所付出的代价恐怕高于这点收益,因为很快就会发现无处可跳了。而且更大的副作用是,多次换工作导致了各种技术都只学到皮毛,等醒悟过来已经晚了。如果某个新职位吸引你的亮点只是加薪,我建议三思而行。

​ 关于理科生的骄做,在工程师群体中,有小部分年轻人至今还保持着源自高中理科班的自豪感。比如看到一本精彩的科幻小说,便觉得文科生不可能懂:如果新来的领导不是理工科出身,就感叹所处的并非技术驱动型公司:最让我吃惊的一次,是一位DBA质疑不懂技术的销售人员为什么地位那么高。这种错误的认知显然源于交际圈子的狭隘,对非技术人员的能力缺乏了解。其实你在调试代码时,他们同样在推敲文案;你在餐桌上只管品菜海侃,他们却要左右逢源,让所有宾客感到满意;你结交朋友只看心情喜好,他们在朋友圈里只说“正确”的话,永水远如沐春风地倾听;你在内部会议上发言都显拘谨,他们面对突如其来的话筒也能侃侃而谈……毫无疑问,非技术工作的“技术含量”一点都不低。幸好随着阅历的增长,大多数理科生都能改掉这个毛病。

​ 关于生活,IT男们已经被打上了太多标签:宅、木讷、生活简单。这当然是种偏见,至少我身边的朋友就不是这样。不过比起国外的工程师群体,我们的业余生活似乎是单调了些。比如与我合作多年的国外同事中,有组乐队的、当冰球教练的、玩帆船的、DIY花园的……有些朋友对此羡慕不已,以为发达国家才玩得起多样化的娱乐,对此我不敢苟同。比如中国学习乐器的人数早就全球第一,在我屈指可数的女同事中,至少有三位在小时候考过钢琴十级。我所住的小区楼都配有朝南的大院子,园艺条件极佳,只是户户都铺砖硬化了…所以细想起来,经济上并不是主因,只是不够热情罢了。工程师本来就是最擅长DIY的群体, 只要行动起来,完全可以让业余生活更加丰富,成为一个更加有趣的人。

萧秋水:学会知识管理,优秀到不能被忽视

萧秋水:学会知识管理,优秀到不能被忽视

我们为什么要学习知识管理?

很多人看起来每天都在加班,往往只是因为他的工作效率低下。我们要学会的是聪明地工作,而不是原地踏步。

我们无效的学习是因为我们也不知道我们适合什么样的学习方法;没有为自己设立一个可行的目标;即使听了那么多道理,却没有去实践、利用。

我们每天都花大量时间刷微博刷朋友圈刷各种软件,看似学到了很多知识,可是实际上能对我们有什么帮助?我们应该如何整理这些碎片化的知识?

移动互联时代,知识管理帮你决胜未来。在这里,萧秋水教主带你学习知识管理,每周只需要半小时,从更通俗、更实用的角度开始学习,建立起自己系统的知识体系,没有高深枯燥,不是课堂说教,娓娓道来,简单易懂还实用,让你不知不觉间,接受知识管理的熏陶,让知识管理在你的工作、学习、生活中真正派上用场,在碎片化时代,如鱼得水!

001

002

003

知识需要整理。

比的是谁转换知识的能力强。

004

为了什么而学习?

为了自己而学习,让自己成为优秀的人,渴望更好的生活。

005

李忠秋-结构化思考

随时随地的锻炼身体,碎片时间。

006

多渠道的收入,怎么让自己优秀起来

007

你的体验非常重要。

摄影

学习方法

  • 最有效的学习方式是从工作中学习
  • 生活技能(多注意掌握常识,)(锻炼自己的生活能力)

  • 结果导向,注重输出,注重对实际问题的解决(不要做键盘侠)

  • 演习,实时观察,复盘,改进。

  • 强化记忆,随手记录,定期总结。(按月总结,有几个重要的维度:读书、写作、看电影、活动、旅行等等。)

行动、行动、行动。

生活技能

平常好好工作,休息了可以去旅游,不要等退休了再去做。

结果导向

做了一大堆读书笔记,怎么去应用呢?

到一个地方,只拍照,不去了解当地信息吗?深入了解当地的情况,收入水平、房价之类的。

008

成就感、

应用不够、只输入,不输出,不会结合自己的情况去思考。

结果导向,要树立目标。

生活技能(生活能力)

  • 作饭
  • 洗衣服
  • 各种常识

演习

培养安全意识,去场所要注意安全通道。

自己专业范围内的知识要记得滚瓜烂熟

复习之前的知识

009

热爱学习,很会学习

  1. 急功近利,少耐心

  2. 前路迷茫,少目标(大学以后,要学会自我教育。喜好不明,对自我了解不够。)

  3. 只重输入,少输出(精神追求高,现实呢?多学一点实际技能,)

  4. 一味焦虑,不行动(深入研究优秀的人,花时间在焦虑,不如花费实际在行动上)

  5. 三心二意,不专注(不坚持就是白费力气)

  6. 心猿意马,不坚持(番茄工作法-书籍)

010

学习要动脑,也要动手。

加德纳,九大智能。

011

012

没有知识转化能力

不要只看枝叶,要看到地下的根系。

013

014

要靠技能养活自己。

015

学习地图,筛选形成摄影笔记。

道,会学习的人会找别人的总结,学习别人的思维模式。

学习一个人的精神,不要一味的照搬。

016

017

波斯细密画,波斯现在改名叫伊朗。

《我的名字叫红》是土耳其作家奥尔罕·帕穆克的长篇小说。

018

六点对付海量信息的方法

  1. 要舍得:(我们真的需要这么多信息吗?)活动一段时间,应该会知道哪些有些是有用处的。拿出点魄力来,大刀阔斧的砍吧。(信息要分层级,特别关注。)

  2. 做人要有原则(不要存到有道云笔记,要么当时就看。)

舒尔特表(Schulte Grid)通过动态的练习锻炼视神经末梢。心理学上用此表来研究和发展心理感知的速度,其中包括视觉定向搜索运动的速度。

用来培养注意力集中、分配、控制能力;拓展视幅;加快视频;提高视觉的稳定性、辨别力、定向搜索能力。练习的时间越长,看表所需的时间会越短。随着练习的深入,眼球的末梢视觉能力提高,不仅初学者可以有效地拓展视幅,加快阅读节奏,锻炼眼睛快速认读;而且对于进入提高阶段之后,同时拓展纵横视幅,达到一目十行、一目一页非常有效。

019

学习方法,学习的途径:读书,写作,看电视,听电台,培训,旅行,线下活动,打游戏,逛街,饭局。

越狱-电视剧

电影看了三遍:

  1. 没有重点,就看全貌
  2. 剧情发展,角色塑造
  3. 镜头剪辑、配色、配乐

叶景天-赤壁-电影

云图-电影(作者写了两篇影评)

阿甘正传-电影

肖申可的救赎-电影

能力需要实践。

游戏是实时反馈的,学习是需要很久才有成果。怎么提高学习的即使反馈?

020

结合自己的情况做思考。

021

林清旋

贝蒂-爱德华,5天学会绘画

022

没有音频

023

人生规划,不断的反馈,及时调整。

024

知识吸收的办法

026

自我认知,他人眼中的自我差异?

  • 科学测评
  • 自我反思
  • 向外调研

027

自我反思之身体认知

科学测评方法:

不管是生活还是职场需要尽量发挥自己的优势。

国王的演讲-电影

现在发现自己的优势-书籍

人格测评

10:16 职业转型,买了很多专栏教程,学习 对工作的帮助,当下要解决的问题?学的时候没有考虑当下是否需要,学习过程也没有自己研究方法,老师说一她就只做一,不思考怎样更好的跟实际情况连接,导致没有多少效果,她最想解决的问题是工作。但是做了这么多对于工作本身还是毫无头绪和方向。

028

我不是潘金莲-电影

liuzhenyun原著小说-“林雪莲告状”-小说

我们想要过的人生,活着的意义?

寻找人生的意义?

生活、经济、精神独立三个方面。

主动学习

生涯规划师-马华兴 治愈马的世界的微博_微博

【自省】-37项基本生存能力自我盘点 - 简书

人生基本能力37项

生涯规划是马华兴老师在阅读了国外的一个基本列表以后根据中国国情进行了改造,总结了八个类别,三十七项人生基本能力。

第一类,基础生存能力,

  • 一,如何保证自我安全;
  • 二,基础急救;
  • 三,锻炼如何生存;
  • 四,如何使用地图以及如何使用自然地图;

第二类,基础工作能力,

  • 五,制作个人简历;
  • 六,时间管理,如何使用日历和计划清单;
  • 七,如何基础写作;
  • 八,公众讲话;
  • 九,有效沟通;
  • 十,基础电脑操作技术;
  • 十一,如何做基本的媒体管理和文档管理;
  • 十二,office的应用能力;
  • 十三,如何做研究探索。

第三类,家务能力;

  • 十四,如何打扫卫生;
  • 十五,基础烹饪能力,如何把东西弄熟;
  • 十六,基础家装修理;
  • 十七,如何弄通下水道和水池管道;
  • 十八,如何使用厨具。

第四类是财务管理能力。

  • 十九,制定家庭预算;
  • 二十,如何进行家庭大件采购;
  • 二十一,如何做家庭账本;
  • 二十二,家庭资产投资;
  • 二十三,跟对方进行交易谈判。

第五类,自我认知能力。

  • 二十四,搞清楚自己的使命,方向或人生目标;
  • 二十五,如何做出优先级排序;
  • 二十六,探索并清晰自己的价值观系统;
  • 二十七,管理自己的情绪。

第六类,人际沟通能力。

  • 二十八,基本的礼节常识;
  • 二十九,如何让自己有幽默感;
  • 三十,亲密关系的沟通和爱的能力;
  • 三十一,如何表达赞赏;
  • 三十二,如何接纳赞赏和批评。

第七类,思维认知能力。

  • 三十三,批判性思维;
  • 三十四,整合思维能力;
  • 三十五,问题解决和计划。

第八类,身体管理能力。

  • 三十六,规律的生活作息;
  • 三十七,养生的能力。

030

没有目标的时候怎么办?

自由职业,反推需要哪几个步骤?

目标太多怎么办?因为人的精力有限。挑选重要目标做减法。

先顾及无趣但钱多,后期稳定了做有趣的事情。

长期目标5年就够了。5年一个周期。

032

数据分析,数据对比(历史数据和现在数据对比)

威力巨大的顺口溜。数据积累、数据挖掘、我们每天和数据打交道,但是数据的价值呢?

数据积累、挖掘、分析、归纳、整理,是现代生活中需要掌握的基本技能。

数据分析的简单流程:

  1. 明确目的
  2. 获取数据
  3. 数据探索(维度分类汇总)
  4. 数据分析(时间、空间维度)
  5. 提交报告(制定策略)

找工作,分析流程。

数据小兵是搞数据分析的,他从专业角度来看。原则上来说你应该有自己的看法。你能举一个自己得意的数据分析案例呢。

033

我的时间精力也不够用,也要分析一下。看看哪个地方存在问题。

凡事要讲证据。

数据不说谎,但数据可能误读。

  • 差不多先生传(讽刺做事不认真)差之毫厘,谬之千里。准确的数据。

到哪里去收集数据?体检数据,历年体检数据对比,数据收集要有周期。

  • 国家统计局

  • 中国统计年鉴

  • 联合国数据库
  • 美联储数据库

写作技巧,经过数据分析。不断完善改善。

034

知识和信息的区别?

数据是数据,信息是信息,知识是知识,智慧是智慧。

DIKW 模型

D 数据,I 信息, K 知识, W 智慧。

数据:

信息:某种方式处理数据

知识:

智慧:做正确判断的能力

萨利机长-电影

035

注意力有限,信息过载!

学以致用,效率的体现。

信息排序,规律话,变成知识。

收集信息的框架,信息分类、排序的工具思维导图。思维导图的好处是发散性。

PersonalBrain (TheBrain)和思维导图。

不要问别人明白了吗?问了也没有,可以让他复述一遍。

知识储备多。

知识炼金术。

036

刷新信息和知识,信息和知识都有时效性。

  • 微信公众号
  • 微信
  • 博客
  • 简书
  • 今日头条

勇于抛弃某些知识,志同道合。

信息经过加工才能变成知识。

探索,

  • 一类询问专业人士

  • 一类按照目录查找

领域内的一本书。未知变成已知。

搜索关键词

我想要了解一件事情,纳入到自己的框架中,在进行分析。

我的独到思路。

菌种,种蘑菇。

037

阳江-海陵岛

沙滩音乐节

幸福感爆棚

  1. 朋友圈要精简(面对这些内容会焦虑)(没有焦虑感)
  2. 善用搜索(朋友圈,微信群,使用关键词搜索;用事件做关键词可以从不同维度看事情。)

  3. 善用收藏(信息太大量,收藏就是最好用了,每次都是阅读后收藏的。先阅读再收藏。)

对于信息的处理能力,需要知识,把信息纳入我们的知识结构中。

038

知识的定义:

知识可以是显性的,也可以是隐性的。可以是组织知识,也可以是个人知识。

所有知识都可以分为:事实知识,原理知识,技能知识,人际知识

学习知识类比一头猪,像庖丁解牛一样解构知识。

什么是豆腐:

事实知识(豆腐,豆子做的食物)Know what。

技能知识(怎么做冻豆腐)Know how。

企业招聘员工,怎么掌握更多的 Know how。

原理知识(豆腐干)Know Why。(不断问为什么?就更容易接近事情。)

人际知识(麻婆豆腐)Know who。(人际知识都每个人都很重要,如果有问题了,你该问谁呢?)

对自我了解:

Know Who:你是谁,想认识谁?

Know what:你的个人信息

Know how: 你的工作

Know why: 你为什么活着

什么是知识管理,为什么要知识管理?怎么套用知识分类到生活中?成果也会很好

任何领域都有基本功,不懂 Know Why 就没有办法进入专业领域的深层。

Master-书籍-童牧晨玄

讲基本功打扎实,才能考虑

英语学习就是一轮 Know how.

作业

  1. 什么是干货?

  2. 学习了很多干货的你,现在取得了什么样的成就?

鄂的美术立场,黑格尔,旦托。

039

你为什么而学习?如果是被迫的也可以应用技术。

培养能力?目标越明确越好!

要找到知识全景图

阅读->训练。

知识->技能。

理解,实践是最好的。

书山有路勤为径,学海无涯苦做舟。

055

喜欢打游戏

小小的成就,立刻就反馈给你。

完成一个项目,年底才发红包。

自己去设置即使反馈,小任务完成了,吃个巧克力,大任务完成了,去泰国旅游。

056

想看的书太多,怎么选择?

豆瓣,豆列。

书成为知识地图。

Python 学习笔记 第三版学习笔记

Python 3.6.1

软件

MessagePack

简单来讲,它的数据格式与json类似,但是在存储时对数字、多字节字符、数组等都做了很多优化,减少了无用的字符,二进制格式,也保证不用字符化带来额外的存储空间的增加。

1
pip install msgpack

MessagePack: It’s like JSON. but fast and small.

psutil

psutil = process and system utilities,它不仅可以通过一两行代码实现系统监控,还可以跨平台使用,支持Linux/UNIX/OSX/Windows等,是系统管理员和运维小伙伴不可或缺的必备模块。

1
pip install psutil

psutil - 廖雪峰的官方网站

giampaolo/psutil: Cross-platform lib for process and system monitoring in Python

性能测试

Pympler

pympler 则被⽤来统计对象实例的内存使⽤。

1
pip install pympler

调试器

iPDB ⽀持语法⾼亮,且输出更加友好。

1
pip install ipdb

使用 ipdb 调试 Python - 小沐枫 - 博客园

MITx 6.00.1x 2019 学习笔记

MITx: 6.00.1x Introduction to Computer Science and Programming Using Python

运行环境

设置 Spyder

启动 Spyder:打开 Anaconda Navigator->Home->spyder->Launch

运行前清除:Preferences->Run->Clear all variables before execution

测试 Matplotlib 和 Numpy

1
2
import numpy
import matplotlib

Resources to Help you Succeed

You do not have to read through these at the start of the course. Come back to these resources as the course progresses!

Add your own at the end of the list, by clicking “Show related resources”, and rate ones you found useful!

If you’re having trouble with a particular concept or simply want to have access to more information, try one of the following links.

Documentation

  • Official Python 3 Documentation - “official”/technical explanation of what a particular function/operator does, examples of correct syntax, what the various libraries are, etc.

Textbooks/Tutorials

Debugging

  • Python Tutor - an excellent way to actually visualize how the interpreter actually reads and executes your code
  • DiffChecker - compares two sets of text and shows you which lines are different
  • Debugging in Python - steps you can take to try to debug your program

Software

Other Q&A

  • Stack Overflow - a large Q&A forum for programming concepts (not just Python). Try searching here before you post on the edX forum, and you may find that someone has already answered your question.

More practice problems

  • Python Challenge - a series of puzzles you can try to test your Python abilities
  • Project Euler - additional programming challenges you can try once your Python knowledge becomes stronger; problems are sorted by increasing difficulty
  • Coding Bat - problems you can solve within an online interpreter
  • Codewars - improve your skills by training on real code challenges

课程

Types

Definitions

  • int
  • float
  • bool
  • NoneType
  • can use type()to see the type of an object

TYPE CONVERSIONS

  • float to int: int(3.9)

  • int to float: float(3)

OPERATIONS

  • ** power
  • *
  • / division
  • +
  • -

Variables

YAML 学习笔记

Python 使用 YAML

安装 PyYAML

1
pip install pyyaml==3.13

语法

  • # 表示注释,从这个字符一直到行尾,都会被解析器忽略。

  • key: value 对象的一组键值对。

  • - list1 数组,key: [value1, value2]行内表示法。
  • 纯量
    • 字符串
    • 布尔值
    • 整数
    • 浮点数
    • Null
    • 时间
    • 日期
  • !! str 123(整数123转换为字符串)YAML 允许使用两个感叹号,强制转换数据类型。

  • 多行字符串可以使用|保留换行符,也可以使用>折叠换行。

  • 锚点&和别名*,可以用来引用;&用来建立锚点,<<表示合并到当前数据,*用来引用锚点。(类似于变量)
  • 函数和正则表达式的转换

参考

The Official YAML Web Site

YAML 语言教程 - 阮一峰的网络日志

PyYAML

https://pyyaml.org

PyYAML Documentation 查找关键字 syntaxYAML tags and Python types

,