
弹出式窗口和重定向
开启或关闭弹出式窗口
在计算机上打开 Chrome。
在右上角,依次点击“更多”图标 展开 接着点按 设置。
在“隐私设置和安全性”下,点击网站设置。
点击弹出式窗口和重定向。
在顶部,将相应设置设为允许或已阻止。
新版:
chrome://settings/content/popups
旧版:chrome//settings/contentExceptions#popups
在chrome地址栏输入“chrome://settings/contentExceptions#popups”回车。
开启或关闭弹出式窗口
在计算机上打开 Chrome。
在右上角,依次点击“更多”图标 展开 接着点按 设置。
在“隐私设置和安全性”下,点击网站设置。
点击弹出式窗口和重定向。
在顶部,将相应设置设为允许或已阻止。
新版:
chrome://settings/content/popups
旧版:chrome//settings/contentExceptions#popups
在chrome地址栏输入“chrome://settings/contentExceptions#popups”回车。
测试不分语言,大都用Java搞,PHP也有mock如phpunit啥的:
不管是手动发送 HTTP 请求或是使用 Swagger 客户端,相关的测试用例都需要由测试人员来编写。当应用的业务逻辑比较复杂时,测试人员可能需要了解很多的业务知识,才能编写出正确的测试用例。以保险业务为例,一个理赔申请能否被批准,背后有复杂的业务逻辑来确定。这样的测试用例,如果由测试人员来编写,则可能的结果是测试用例所验证的情况,从业务逻辑上来说是错误的,起不到测试的效果。
更好的做法是由业务人员来编写测试用例,这样可以保证应用的实际行为,满足真实业务的期望。但是业务人员并不懂得编写代码。为了解决这个问题, 我们需要让业务人员以他们所能理解的方式来描述对不同行为的期望,这就是行为驱动开发(Behaviour Driven Development,BDD)的思想。
BDD 的出发点是提供了一种自然语言的方式来描述应用的行为,对行为的描述由 3 个部分组成,分别是前置条件、动作和期望结果,也就是 Given-When-Then 结构,该结构表达的是当对象处于某个状态中时,如果执行该对象的某个动作,所应该产生的结果是什么。比如,对于一个数据结构中常用的栈对象来说,在栈为空的前提下,如果执行栈的弹出动作,那么应该抛出异常;在栈不为空的前提下,如果执行栈的弹出动作,那么返回值应该是栈顶的元素。这样的行为描述,可以很容易转换成测试用例,来验证对象的实际行为。
BDD 一般使用自然语言来描述行为,业务人员使用自然语言来描述行为,形成 BDD 文档,这个文档是业务知识的具体化。我们只需要把这个文档转换成可执行的测试用例,就可以验证代码实现是否满足业务的需求。这个转换的过程需要工具的支持,本课时介绍的工具是 Cucumber。
Cucumber 使用名为 Gherkin 的语言来描述行为,Gherkin 语言使用半结构化的形式。下表给出了 Gherkin 语言中的常用结构。
清单表格:

不管是手动发送 HTTP 请求或是使用 Swagger 客户端,相关的测试用例都需要由测试人员来编写。当应用的业务逻辑比较复杂时,测试人员可能需要了解很多的业务知识,才能编写出正确的测试用例。以保险业务为例,一个理赔申请能否被批准,背后有复杂的业务逻辑来确定。这样的测试用例,如果由测试人员来编写,则可能的结果是测试用例所验证的情况,从业务逻辑上来说是错误的,起不到测试的效果。
更好的做法是由业务人员来编写测试用例,这样可以保证应用的实际行为,满足真实业务的期望。但是业务人员并不懂得编写代码。为了解决这个问题, 我们需要让业务人员以他们所能理解的方式来描述对不同行为的期望,这就是行为驱动开发(Behaviour Driven Development,BDD)的思想。
BDD 的出发点是提供了一种自然语言的方式来描述应用的行为,对行为的描述由 3 个部分组成,分别是前置条件、动作和期望结果,也就是 Given-When-Then 结构,该结构表达的是当对象处于某个状态中时,如果执行该对象的某个动作,所应该产生的结果是什么。比如,对于一个数据结构中常用的栈对象来说,在栈为空的前提下,如果执行栈的弹出动作,那么应该抛出异常;在栈不为空的前提下,如果执行栈的弹出动作,那么返回值应该是栈顶的元素。这样的行为描述,可以很容易转换成测试用例,来验证对象的实际行为。
BDD 一般使用自然语言来描述行为,业务人员使用自然语言来描述行为,形成 BDD 文档,这个文档是业务知识的具体化。我们只需要把这个文档转换成可执行的测试用例,就可以验证代码实现是否满足业务的需求。这个转换的过程需要工具的支持,本课时介绍的工具是 Cucumber。
Cucumber 使用名为 Gherkin 的语言来描述行为,Gherkin 语言使用半结构化的形式。下表给出了 Gherkin 语言中的常用结构。
清单表格:
大牛微信群札记,Mark下,应该有点干货,作下简单记录,那么年轻就被封神,
所以,出名还得趁早,可能和国外的计算机文化水平有关,有的娃估计三岁就学计算机,所以,我们还是要学先进啊,搞不定就靠下一代奋起直追吧,以下是顾问觉得有点意义的摘选:
之前rango兄弟做swoole开源项目 7-8年,现在也干不过年轻人了。
据说新一代的程序员,写出来的代码更有艺术气息。
像rango这样的大牛写的代码,都被年轻的开发者鄙视了,被吐槽多了,逐渐不写了。
下面这位是大神,年轻的大神:
php parser(https://github.com/nikic/PHP-Parser)原来就是这个年轻人搞的啊 厉害
这个得编译原理扎实才行,LLVM 作者,PHP7 作者,不像我们将就德国小伙,很严谨的。
现在都用 php -S 了,比 node 、golang 的 httpserver 要更易用。生产环境用 php-fpm + nginx ,现在 PHP7 很稳定。
以前 php 5.3 还有 coredump,php72 之后基本上没遇见。现在年轻人更进一步,全用 docker 了,不是docker替代fpm
docker pull 下载 php nginx fpm 还有一大堆扩展,然后 docker run 直接运行,零配置
像lvs 20年前老古董了,现在都不用这个。有更先进的 slb 软件,时光真TM快,真老了,不服不行,隔几年只扶墙了。
当前,可选的技术 太多了。php 的优势没那么明显,劣势又凸显出来。
Java 里面 spring boot, spring cloud 开发效率大大提升,以前 EJB、XML 那时代,Java 用起来很麻烦。现在又多了 Node.js、Golang 有异步 IO 、协程的特色功能。PHP 没什么亮点,缺点还挺多
有兄弟在富途推swoole:在富途推swoole,各种被老板们挑战,觉得出了问题,大部分人搞不定,所以迟迟推不动。
一阵讨论,还得把这个革新PHP的重任给年轻的大神,充满期待:
虽然能搞个 swoole 的扩展,但是也没有能力去改造 php ,这得依赖 Nikic 这样的计算机大神了。
rango兄弟的视界:
PHP 需要改造 VM 、标准库,第一 必须加入 JIT ,否则偏运算或者逻辑重的服务,性能不行。当然 VM 如果能内置 协程、多线程、异步 IO 会比较好。 第二 标准库太随意了,得好好设计一下,标准库根本没有 namespace ,太乱了。 Java、C++、Go、Node.js 标准库很规范的。PHP 语言不改变,可能逐渐就被时代抛弃了。
去年尝试了基于k8s / istio / grpc来做架构和业务
对比以前写PHP,真的太舒服了
下半年带我们团队转型golang了--2020/3/10 14:06
Go会不会是另一个强有力的挑战者?
golang 现在有点难用,没泛型。等 Golang 2 吧
年轻大神文章,学习下英语之用:https://nikic.github.io/2020/05/10/Make-LLVM-fast-again.html
About Me
Hi! My name is Nikita Popov, but you’ll mostly meet me as nikic on the internet. I’m working as a software developer at JetBrains on the PhpStorm team. Before that, I studied computer science and physics at the Technical University of Berlin. I contribute to the PHP and LLVM projects and maintain a number of open-source PHP libraries.
Feel free to contact me via nikic@php.net. Alternatively you can usually find me in the PHP chatroom on StackOverflow.
Projects
My most popular open-source projects, sorted by stars:
PHP-Parser – A PHP parser written in PHP
FastRoute – Fast request router for PHP
scalar_objects – Extension that adds support for method calls on primitive types in PHP
iter – Iteration primitives using generators
php-ast – Extension exposing PHP 7 abstract syntax tree
PHP-Fuzzer – A fuzzer for PHP libraries
Accepted PHP proposals
PHP 8.0:
自我介绍:https://nikic.github.io/aboutMe.html
所以,出名还得趁早,可能和国外的计算机文化水平有关,有的娃估计三岁就学计算机,所以,我们还是要学先进啊,搞不定就靠下一代奋起直追吧,以下是顾问觉得有点意义的摘选:
之前rango兄弟做swoole开源项目 7-8年,现在也干不过年轻人了。
据说新一代的程序员,写出来的代码更有艺术气息。
像rango这样的大牛写的代码,都被年轻的开发者鄙视了,被吐槽多了,逐渐不写了。
下面这位是大神,年轻的大神:
php parser(https://github.com/nikic/PHP-Parser)原来就是这个年轻人搞的啊 厉害
这个得编译原理扎实才行,LLVM 作者,PHP7 作者,不像我们将就德国小伙,很严谨的。
现在都用 php -S 了,比 node 、golang 的 httpserver 要更易用。生产环境用 php-fpm + nginx ,现在 PHP7 很稳定。
以前 php 5.3 还有 coredump,php72 之后基本上没遇见。现在年轻人更进一步,全用 docker 了,不是docker替代fpm
docker pull 下载 php nginx fpm 还有一大堆扩展,然后 docker run 直接运行,零配置
像lvs 20年前老古董了,现在都不用这个。有更先进的 slb 软件,时光真TM快,真老了,不服不行,隔几年只扶墙了。
当前,可选的技术 太多了。php 的优势没那么明显,劣势又凸显出来。
Java 里面 spring boot, spring cloud 开发效率大大提升,以前 EJB、XML 那时代,Java 用起来很麻烦。现在又多了 Node.js、Golang 有异步 IO 、协程的特色功能。PHP 没什么亮点,缺点还挺多
有兄弟在富途推swoole:在富途推swoole,各种被老板们挑战,觉得出了问题,大部分人搞不定,所以迟迟推不动。
一阵讨论,还得把这个革新PHP的重任给年轻的大神,充满期待:
虽然能搞个 swoole 的扩展,但是也没有能力去改造 php ,这得依赖 Nikic 这样的计算机大神了。
rango兄弟的视界:
PHP 需要改造 VM 、标准库,第一 必须加入 JIT ,否则偏运算或者逻辑重的服务,性能不行。当然 VM 如果能内置 协程、多线程、异步 IO 会比较好。 第二 标准库太随意了,得好好设计一下,标准库根本没有 namespace ,太乱了。 Java、C++、Go、Node.js 标准库很规范的。PHP 语言不改变,可能逐渐就被时代抛弃了。
去年尝试了基于k8s / istio / grpc来做架构和业务
对比以前写PHP,真的太舒服了
下半年带我们团队转型golang了--2020/3/10 14:06
Go会不会是另一个强有力的挑战者?
golang 现在有点难用,没泛型。等 Golang 2 吧
年轻大神文章,学习下英语之用:https://nikic.github.io/2020/05/10/Make-LLVM-fast-again.html
About Me
Hi! My name is Nikita Popov, but you’ll mostly meet me as nikic on the internet. I’m working as a software developer at JetBrains on the PhpStorm team. Before that, I studied computer science and physics at the Technical University of Berlin. I contribute to the PHP and LLVM projects and maintain a number of open-source PHP libraries.
Feel free to contact me via nikic@php.net. Alternatively you can usually find me in the PHP chatroom on StackOverflow.
Projects
My most popular open-source projects, sorted by stars:
PHP-Parser – A PHP parser written in PHP
FastRoute – Fast request router for PHP
scalar_objects – Extension that adds support for method calls on primitive types in PHP
iter – Iteration primitives using generators
php-ast – Extension exposing PHP 7 abstract syntax tree
PHP-Fuzzer – A fuzzer for PHP libraries
Accepted PHP proposals
PHP 8.0:
自我介绍:https://nikic.github.io/aboutMe.html
curl "http://111.206.176.86/style/home.css" -H "Host:ishow.cctv.com" -H "Range:bytes=0-18446744073709551615"
wget "http://ishow.cctv.com/style/home.css" -S --limit-rate=1M --debug --header="Range: bytes=0-18446744073709551615"
未编译调试支持,忽略 --debug。
--2020-05-05 19:32:50-- http://ishow.cctv.com/style/home.css
正在解析主机 ishow.cctv.com (ishow.cctv.com)... 111.206.176.86
正在连接 ishow.cctv.com (ishow.cctv.com)|111.206.176.86|:80... 已连接。
已发出 HTTP 请求,正在等待回应...
HTTP/1.1 200 OK
Date: Tue, 05 May 2020 11:32:50 GMT
Content-Type: text/css
Content-Length: 3500
Connection: keep-alive
Expires: Tue, 05 May 2020 12:32:50 GMT
Server: nginx
Last-Modified: Thu, 23 Apr 2020 04:44:15 GMT
ETag: "5ea11d1f-dac"
Cache-Control: max-age=3600
ip_network: 32.33
Accept-Ranges: bytes
X-Via: 1.1 dwt194:13 (Cdn Cache Server V2.0), 1.1 PS-PEK-01mW4204:7 (Cdn Cache Server V2.0)
X-Ws-Request-Id: 5eb14ee2_t205_53295-12877
长度:3500 (3.4K) [text/css]
正在保存至: “home.css.1”
home.css.1 100%[============================================================================================>] 3.42K --.-KB/s 用时 0s
2020-05-05 19:32:50 (159 MB/s) - 已保存 “home.css.1” [3500/3500])
若IIS服务器返回“Requested Range Not Satisfiable”,则是存在漏洞,否则如果返回”The request has an invalid header name“,则说明漏洞已经修补。
阅读全文
wget "http://ishow.cctv.com/style/home.css" -S --limit-rate=1M --debug --header="Range: bytes=0-18446744073709551615"
未编译调试支持,忽略 --debug。
--2020-05-05 19:32:50-- http://ishow.cctv.com/style/home.css
正在解析主机 ishow.cctv.com (ishow.cctv.com)... 111.206.176.86
正在连接 ishow.cctv.com (ishow.cctv.com)|111.206.176.86|:80... 已连接。
已发出 HTTP 请求,正在等待回应...
HTTP/1.1 200 OK
Date: Tue, 05 May 2020 11:32:50 GMT
Content-Type: text/css
Content-Length: 3500
Connection: keep-alive
Expires: Tue, 05 May 2020 12:32:50 GMT
Server: nginx
Last-Modified: Thu, 23 Apr 2020 04:44:15 GMT
ETag: "5ea11d1f-dac"
Cache-Control: max-age=3600
ip_network: 32.33
Accept-Ranges: bytes
X-Via: 1.1 dwt194:13 (Cdn Cache Server V2.0), 1.1 PS-PEK-01mW4204:7 (Cdn Cache Server V2.0)
X-Ws-Request-Id: 5eb14ee2_t205_53295-12877
长度:3500 (3.4K) [text/css]
正在保存至: “home.css.1”
home.css.1 100%[============================================================================================>] 3.42K --.-KB/s 用时 0s
2020-05-05 19:32:50 (159 MB/s) - 已保存 “home.css.1” [3500/3500])
若IIS服务器返回“Requested Range Not Satisfiable”,则是存在漏洞,否则如果返回”The request has an invalid header name“,则说明漏洞已经修补。

ansible role 角色加上when,在组的情况下无法写成一行,得分多行写。
Php/Js/Shell/Go jackxiang 2020-4-28 16:52
官网:https://www.kancloud.cn/willseecloud/ansible/1458190
有group 写成一行YAML对方括号报错,如下:
写成多行也就Ok了,如下:
asp bc_web.yml -C -D
有group 写成一行YAML对方括号报错,如下:
写成多行也就Ok了,如下:
asp bc_web.yml -C -D
“Wi-Fi”有自分配的 IP 地址“169.254.67.68”,将无法接入互联网。这是为什么?之前还是好的,突然无法上网,怎么办?
一)是不是服务有问题,于是按如下操作,还是不行:
步骤如下: 1、打开【运行】(Win+R组合键),输入services.msc 点击确定打开服务界面。
2、在服务界面中却确保【wired auto config】和【WLan
autoconfig】两个服务正常运行,如果未运行,首先将“启动类型”修改为“自动”,点击【应用】—【启动】—【确定】即可。
3、在开始菜单上单击鼠标右键,在弹出的菜单中点击“网络连接”。
4、将以太网单击右键,选择“禁用”,然后重新启用。
5、在开始菜单上单击鼠标右键,在弹出的菜单中点击“命令提示符(管理员)”。
6、在命令提示符框中输入:netsh winsock reset 按下回车键,会提示:成功地重置 Winsock
目录;(电脑中安装了杀毒软件的可能会弹出组织窗口,我们选择允许操作即可)。
7、重启后一般可以解决问题。
二)自己固定IP地址,发现10.10.0.64没有申请到,得到169.254.244.37(首选):
以太网适配器 Npcap Loopback Adapter:
连接特定的 DNS 后缀 . . . . . . . :
描述. . . . . . . . . . . . . . . : Npcap Loopback Adapter
物理地址. . . . . . . . . . . . . : 02-00-4C-4F-4F-50
DHCP 已启用 . . . . . . . . . . . : 是
自动配置已启用. . . . . . . . . . : 是
自动配置 IPv4 地址 . . . . . . . : 169.254.244.37(首选)
子网掩码 . . . . . . . . . . . . : 255.255.0.0
三)于是查到这个IP有个虚拟机给用了,如下:
[root@10_10_0_64:~]
#ifconfig |grep 08:00:27:86:d1:06
ether 08:00:27:86:d1:06 txqueuelen 1000 (Ethernet)
果然是IP冲突引起的:
出现自动配置IPv4地址169.254.x.x首选地址,IP地址冲突造成
问题症状:由于ip冲突后,IP地址的现实,用命令ipconfig /all 会出现ipv4地址,首选地址,之后计算机出去就会用这个首选地址,造成网络不通。(一般XP会间歇性的提示IP冲突,win7 在开始设置的时候一般也会提示,如果不提示,问题应该是因为IP地址冲突造成这样出现ipv4首选地址)
查看方法:1、运行-〉cmd-〉ipconfig /all
解决方法:如果是重要IP,通过解析地址,找到使用IP的计算机与其更换IP。或者给出问题的计算机更换IP。
最后,直接在路由器里绑定IP到一个较高位的地址,解决了问题。
一)是不是服务有问题,于是按如下操作,还是不行:
步骤如下: 1、打开【运行】(Win+R组合键),输入services.msc 点击确定打开服务界面。
2、在服务界面中却确保【wired auto config】和【WLan
autoconfig】两个服务正常运行,如果未运行,首先将“启动类型”修改为“自动”,点击【应用】—【启动】—【确定】即可。
3、在开始菜单上单击鼠标右键,在弹出的菜单中点击“网络连接”。
4、将以太网单击右键,选择“禁用”,然后重新启用。
5、在开始菜单上单击鼠标右键,在弹出的菜单中点击“命令提示符(管理员)”。
6、在命令提示符框中输入:netsh winsock reset 按下回车键,会提示:成功地重置 Winsock
目录;(电脑中安装了杀毒软件的可能会弹出组织窗口,我们选择允许操作即可)。
7、重启后一般可以解决问题。
二)自己固定IP地址,发现10.10.0.64没有申请到,得到169.254.244.37(首选):
以太网适配器 Npcap Loopback Adapter:
连接特定的 DNS 后缀 . . . . . . . :
描述. . . . . . . . . . . . . . . : Npcap Loopback Adapter
物理地址. . . . . . . . . . . . . : 02-00-4C-4F-4F-50
DHCP 已启用 . . . . . . . . . . . : 是
自动配置已启用. . . . . . . . . . : 是
自动配置 IPv4 地址 . . . . . . . : 169.254.244.37(首选)
子网掩码 . . . . . . . . . . . . : 255.255.0.0
三)于是查到这个IP有个虚拟机给用了,如下:
[root@10_10_0_64:~]
#ifconfig |grep 08:00:27:86:d1:06
ether 08:00:27:86:d1:06 txqueuelen 1000 (Ethernet)
果然是IP冲突引起的:
出现自动配置IPv4地址169.254.x.x首选地址,IP地址冲突造成
问题症状:由于ip冲突后,IP地址的现实,用命令ipconfig /all 会出现ipv4地址,首选地址,之后计算机出去就会用这个首选地址,造成网络不通。(一般XP会间歇性的提示IP冲突,win7 在开始设置的时候一般也会提示,如果不提示,问题应该是因为IP地址冲突造成这样出现ipv4首选地址)
查看方法:1、运行-〉cmd-〉ipconfig /all
解决方法:如果是重要IP,通过解析地址,找到使用IP的计算机与其更换IP。或者给出问题的计算机更换IP。
最后,直接在路由器里绑定IP到一个较高位的地址,解决了问题。
[实践OK]Linux中查看日志文件的正确姿势,求你别tail走天下了!
Unix/LinuxC技术 jackxiang 2020-3-20 10:58
摘录作为一个后端开发工程师,在Linux中查看查看文件内容是基本操作了。尤其是通常要分析日志文件排查问题,那么我们应该如何正确打开日志文件呢?对于笔者这种小菜鸡来说,第一反应就是 cat,tail,vi(或vim)了,是的,我曾经用过好多次vim编辑器来查看日志文件(可耻)。
千万不要使用vi命令来查看大文件内容, 尤其对于那些几十G的大文件。因为vi仅仅是一个编辑器(可以理解为windows中的记事本),使用vi命令后则会把文件所有内容加载到内存中,如果内存不够大的话,则可能会导致服务器瘫痪。
cat test.txt
第1行
第2行
第3行
第4行
第5行
第6行
第7行
第8行
第9行
第10行
不按脚本,直接每一行都有行号:
cat test.txt
第1行
第2行
第3行
第4行
第5行
第6行
第7行
第8行
第9行
第10行
第11行
第12行
第13行
第14行
第15行
第16行
第17行
第18行
第19行
第20行
第21行
less
less命令比more更加有弹性,可以前后翻页,不止可以向上查找,也可以向下查找。
按键/命令
[pagedown] :向下翻页
[pageup] :向上翻页
/字符串:在当前显示的内容(翻页进度位置),向下查找这个字符串关键字
?字符串:向上查找字符串
n :重复前一个查找,与/或?有关, 比如前一个命令是?表示向上查找,此时n会向上查找
N: 反向的重复前一个查找
g :跳转到当前文件数据的第一行
G :跳转到当前文件数据的最后一行
q :退出当前文件的浏览
范例演示
数据截取
head
head命令用来提取文件的前n行,一般配合使用-n选项。当指定的行数为负数-x时,则会打印出除了后面x行的其他所有数据。
范例1:查看前10行数据
head -n 10 test.txt
head -n 10 test.txt
cat test.txt
第1行
第2行
第3行
第4行
第5行
第6行
第7行
第8行
第9行
第10行
范例2(一共10000行,没有空行):head -n -9989 test.txt
tail
从文件尾部截取数据。tail也是工作中最常用的命令,因为可以利用-f选项,一直刷新获取文件尾部最新数据。
选项与参数
-n : 查看后n行数据,注意当n后面值带“+”号表示从第x行开始, 如 tail -n +1000 test.txt
-f : 展示文件后面
范例1:查看尾部5行数据【tail -n 5 test.txt】
范例2:查看文件尾部数据,并实时刷新数据
tail -f test.txt
范例3:查看文件尾部5行数据,并实时刷新数据
tail -n 5 -f test.txt
通用命令
管道:Shell 还有一种功能,就是可以将两个或者多个命令(程序或者进程)连接到一起,把一个命令的输出作为下一个命令的输入,以这种方式连接的两个或者多个命令就形成了管道(pipe),管道命令用"|"来表示。
范例:查看ll命令输出的前10行
ll | head -n 3
ll | head -n 10
grep :命令用于查找文件里符合条件的字符串,这两个命令也是linux中最常用的的,而在查看日志文件也通常会结合这两个命令一起使用。
范例:查看文件文件中那些行包含‘999’
cat -n test.txt | grep '999'
>> : 文件追加重定向命令,可以往文件末尾追加数据,正如上文 echo "第$i行" >> test.txt。
范例:将一个文件的最后10行复制到helloworld.txt中
tail -n 10 >> helloworld.txt
wc:文件字节数,字数,行数查看wc [-clw] [文件...],
-c或--bytes或--chars 只显示Bytes数。
-l或--lines 只显示行数。
-w或--words 只显示字数。
范例:查看文件行数
wc -l
案例实战
案例1:打印日志文件中第11到20行。
思路:首先获取前20行,然后在获取20行的后10行即可,需要使用管道命令。
head -n 20 text.txt | tail -n 10 #head和tail都是-n ,head -n 是头n行,tail -n是从第n+1行到行尾
cat -n test.txt | head -n 20 | tail -n 10(如果需要显示行号)
分解:
head -n 20 text.txt
cat test.txt
第1行
第2行
第3行
第4行
第5行
第6行
第7行
第8行
第9行
第10行
第11行
第12行
第13行
第14行
第15行
第16行
第17行
第18行
第19行
第20行
第二步,将上在输出通过管道从11行到最后:
head -n 20 test.txt |tail -n 10
第11行
第12行
第13行
第14行
第15行
第16行
第17行
第18行
第19行
第20行
来自:https://mp.weixin.qq.com/s/Q-NfY2sr4n2XiJwy8SsXDA
千万不要使用vi命令来查看大文件内容, 尤其对于那些几十G的大文件。因为vi仅仅是一个编辑器(可以理解为windows中的记事本),使用vi命令后则会把文件所有内容加载到内存中,如果内存不够大的话,则可能会导致服务器瘫痪。
cat test.txt
第1行
第2行
第3行
第4行
第5行
第6行
第7行
第8行
第9行
第10行
不按脚本,直接每一行都有行号:
cat test.txt
第1行
第2行
第3行
第4行
第5行
第6行
第7行
第8行
第9行
第10行
第11行
第12行
第13行
第14行
第15行
第16行
第17行
第18行
第19行
第20行
第21行
less
less命令比more更加有弹性,可以前后翻页,不止可以向上查找,也可以向下查找。
按键/命令
[pagedown] :向下翻页
[pageup] :向上翻页
/字符串:在当前显示的内容(翻页进度位置),向下查找这个字符串关键字
?字符串:向上查找字符串
n :重复前一个查找,与/或?有关, 比如前一个命令是?表示向上查找,此时n会向上查找
N: 反向的重复前一个查找
g :跳转到当前文件数据的第一行
G :跳转到当前文件数据的最后一行
q :退出当前文件的浏览
范例演示
数据截取
head
head命令用来提取文件的前n行,一般配合使用-n选项。当指定的行数为负数-x时,则会打印出除了后面x行的其他所有数据。
范例1:查看前10行数据
head -n 10 test.txt
head -n 10 test.txt
cat test.txt
第1行
第2行
第3行
第4行
第5行
第6行
第7行
第8行
第9行
第10行
范例2(一共10000行,没有空行):head -n -9989 test.txt
tail
从文件尾部截取数据。tail也是工作中最常用的命令,因为可以利用-f选项,一直刷新获取文件尾部最新数据。
选项与参数
-n : 查看后n行数据,注意当n后面值带“+”号表示从第x行开始, 如 tail -n +1000 test.txt
-f : 展示文件后面
范例1:查看尾部5行数据【tail -n 5 test.txt】
范例2:查看文件尾部数据,并实时刷新数据
tail -f test.txt
范例3:查看文件尾部5行数据,并实时刷新数据
tail -n 5 -f test.txt
通用命令
管道:Shell 还有一种功能,就是可以将两个或者多个命令(程序或者进程)连接到一起,把一个命令的输出作为下一个命令的输入,以这种方式连接的两个或者多个命令就形成了管道(pipe),管道命令用"|"来表示。
范例:查看ll命令输出的前10行
ll | head -n 3
ll | head -n 10
grep :命令用于查找文件里符合条件的字符串,这两个命令也是linux中最常用的的,而在查看日志文件也通常会结合这两个命令一起使用。
范例:查看文件文件中那些行包含‘999’
cat -n test.txt | grep '999'
>> : 文件追加重定向命令,可以往文件末尾追加数据,正如上文 echo "第$i行" >> test.txt。
范例:将一个文件的最后10行复制到helloworld.txt中
tail -n 10 >> helloworld.txt
wc:文件字节数,字数,行数查看wc [-clw] [文件...],
-c或--bytes或--chars 只显示Bytes数。
-l或--lines 只显示行数。
-w或--words 只显示字数。
范例:查看文件行数
wc -l
案例实战
案例1:打印日志文件中第11到20行。
思路:首先获取前20行,然后在获取20行的后10行即可,需要使用管道命令。
head -n 20 text.txt | tail -n 10 #head和tail都是-n ,head -n 是头n行,tail -n是从第n+1行到行尾
cat -n test.txt | head -n 20 | tail -n 10(如果需要显示行号)
分解:
head -n 20 text.txt
cat test.txt
第1行
第2行
第3行
第4行
第5行
第6行
第7行
第8行
第9行
第10行
第11行
第12行
第13行
第14行
第15行
第16行
第17行
第18行
第19行
第20行
第二步,将上在输出通过管道从11行到最后:
head -n 20 test.txt |tail -n 10
第11行
第12行
第13行
第14行
第15行
第16行
第17行
第18行
第19行
第20行
来自:https://mp.weixin.qq.com/s/Q-NfY2sr4n2XiJwy8SsXDA
[实践OK]Mac 下安装使用tac命令
Unix/LinuxC技术 jackxiang 2020-3-20 10:18
Mac 下安装使用tac命令:
1. 安装coreutils软件包:
brew install coreutils
ln -s /usr/local/bin/gtac /usr/local/bin/tac
2. 在MAC 上使用tail命令代替:
tail -r filename
Error: Cannot install coreutils because conflicting formulae are installed.
md5sha1sum: because both install `md5sum` and `sha1sum` binaries
Please `brew unlink md5sha1sum` before continuing.
来自:https://blog.csdn.net/dongwuming/article/details/50836723?utm_source=blogxgwz6
1. 安装coreutils软件包:
brew install coreutils
ln -s /usr/local/bin/gtac /usr/local/bin/tac
2. 在MAC 上使用tail命令代替:
tail -r filename
Error: Cannot install coreutils because conflicting formulae are installed.
md5sha1sum: because both install `md5sum` and `sha1sum` binaries
Please `brew unlink md5sha1sum` before continuing.
来自:https://blog.csdn.net/dongwuming/article/details/50836723?utm_source=blogxgwz6
WebSocket 在线调试工具:
http://www.easyswoole.com/wstool.html
这个链接地址歇菜了,顾问微信问了下easyswoole框架作者张一丰也没个回应,
一个不错的调试工具,为方便Websocket调试,顾问给搭建了一个,地址如下:
http://wstool.jackxiang.com/
EOF
http://www.easyswoole.com/wstool.html
这个链接地址歇菜了,顾问微信问了下easyswoole框架作者张一丰也没个回应,
一个不错的调试工具,为方便Websocket调试,顾问给搭建了一个,地址如下:
http://wstool.jackxiang.com/
EOF
[实践OK]Linux下tar命令implausibly old time stamp错误的解决方法
Unix/LinuxC技术 jackxiang 2020-3-10 22:06
背景:打包yum的仓库文件到外网机器解压时发现的,这个问题可以忽略,一般来讲,不影响正常使用。
今天头一次见到tar zxf files.tar.gz 会出现包内文件报错, implausibly old time stamp的问题,
由于压缩包是自己打包的, 单独访问的时候文件都是正常的. 后面搜索测试了一下问题解决了. 在此记录一下:. B$ r/ i7 W) z, U9 o k( ^3 n
先把原文件(打包前的文件) 执行一下命令:: B3 A6 k# w* e- {* h
touch *
同步一下文件时间. 再重新打包, 然后再测试解包, ok 问题解决了.7 v0 Y9 p9 Q5 }' l& s5 @2 t6 s
0 ~/ D( S1 z0 T: Z
扩展:
文件时间大于你的系统时间,也就是说文件是早于当前时间创建/修改的,这个问题可以忽略,一般来讲,不影响正常使用。" {# L/ H8 ~1 _" g- B5 i
你也可以在展开文件后,用命令 “touch * ” 同步文件时间。( {+ H5 b V+ d% @5 ?
参考:http://forum.ubuntu.org.cn/viewtopic.php?p=2059005
今天头一次见到tar zxf files.tar.gz 会出现包内文件报错, implausibly old time stamp的问题,
由于压缩包是自己打包的, 单独访问的时候文件都是正常的. 后面搜索测试了一下问题解决了. 在此记录一下:. B$ r/ i7 W) z, U9 o k( ^3 n
先把原文件(打包前的文件) 执行一下命令:: B3 A6 k# w* e- {* h
touch *
同步一下文件时间. 再重新打包, 然后再测试解包, ok 问题解决了.7 v0 Y9 p9 Q5 }' l& s5 @2 t6 s
0 ~/ D( S1 z0 T: Z
扩展:
文件时间大于你的系统时间,也就是说文件是早于当前时间创建/修改的,这个问题可以忽略,一般来讲,不影响正常使用。" {# L/ H8 ~1 _" g- B5 i
你也可以在展开文件后,用命令 “touch * ” 同步文件时间。( {+ H5 b V+ d% @5 ?
参考:http://forum.ubuntu.org.cn/viewtopic.php?p=2059005
[实践OK]FreeBSD中安装pkg,pkg_add已经改用pkg了,怎样查询一个文件属于哪个ports包,类似CentOS里面的rpm -qf file反查在哪你上rpm包里面一样的命令是pkg which /usr/local/lib/libicuio.so.58
Unix/LinuxC技术 jackxiang 2020-2-27 00:33
root@freebsd-unmp-10-10-0-237:~ # pkg_add -r wget
pkg_add: Command not found.
root@freebsd-unmp-10-10-0-237:~ # pkg install wget
The package management tool is not yet installed on your system.
Do you want to fetch and install it now? [y/N]: y
Bootstrapping pkg from pkg+http://pkg.FreeBSD.org/FreeBSD:13:amd64/quarterly, please wait...
Verifying signature with trusted certificate pkg.freebsd.org.2013102301... done
Installing pkg-1.16.3...
Extracting pkg-1.16.3: 100%
Updating FreeBSD repository catalogue...
Fetching meta.conf: 100% 163 B 0.2kB/s 00:01
Fetching packagesite.txz: 100% 6 MiB 407.3kB/s 00:16
Processing entries: 100%
FreeBSD repository update completed. 30360 packages processed.
All repositories are up to date.
Updating database digests format: 100%
The following 5 package(s) will be affected (of 0 checked):
New packages to be INSTALLED:
gettext-runtime: 0.21
indexinfo: 0.3.1
libidn2: 2.3.0_1
libunistring: 0.9.10_1
wget: 1.21
Number of packages to be installed: 5
The process will require 7 MiB more space.
1 MiB to be downloaded.
Proceed with this action? [y/N]:
摘自:http://www.ittang.com/2008/0309/4832.html
kg install pkg and let it bootstrap / upgrade itself. Then use pkg install foo, etc. pkg_add does not exist anymore, as you've found out.
man pkg
which Query the database for package(s) that installed a specific file.
pkg which /usr/local/lib/libicuio.so.58
/usr/local/lib/libicuio.so.58 was installed by package icu-58.2_2,1
#pkg which /usr/local/bin/openssl
/usr/local/bin/openssl was installed by package openssl-1.0.2l,1
来自:https://www.howtoing.com/pkg-command-examples-to-manage-packages-in-freebsd
附:从Ports存储库本地下载软件包
为了从Ports存储库本地下载软件包,而不在系统上安装软件包,请使用fetch开关运行pkg命令 。
下载的软件包二进制文件是压缩的.txz文件,可以在/ var / cache / pkg / system路径中找到。
# pkg fetch package_name
pkg_add: Command not found.
root@freebsd-unmp-10-10-0-237:~ # pkg install wget
The package management tool is not yet installed on your system.
Do you want to fetch and install it now? [y/N]: y
Bootstrapping pkg from pkg+http://pkg.FreeBSD.org/FreeBSD:13:amd64/quarterly, please wait...
Verifying signature with trusted certificate pkg.freebsd.org.2013102301... done
Installing pkg-1.16.3...
Extracting pkg-1.16.3: 100%
Updating FreeBSD repository catalogue...
Fetching meta.conf: 100% 163 B 0.2kB/s 00:01
Fetching packagesite.txz: 100% 6 MiB 407.3kB/s 00:16
Processing entries: 100%
FreeBSD repository update completed. 30360 packages processed.
All repositories are up to date.
Updating database digests format: 100%
The following 5 package(s) will be affected (of 0 checked):
New packages to be INSTALLED:
gettext-runtime: 0.21
indexinfo: 0.3.1
libidn2: 2.3.0_1
libunistring: 0.9.10_1
wget: 1.21
Number of packages to be installed: 5
The process will require 7 MiB more space.
1 MiB to be downloaded.
Proceed with this action? [y/N]:
摘自:http://www.ittang.com/2008/0309/4832.html
kg install pkg and let it bootstrap / upgrade itself. Then use pkg install foo, etc. pkg_add does not exist anymore, as you've found out.
man pkg
which Query the database for package(s) that installed a specific file.
pkg which /usr/local/lib/libicuio.so.58
/usr/local/lib/libicuio.so.58 was installed by package icu-58.2_2,1
#pkg which /usr/local/bin/openssl
/usr/local/bin/openssl was installed by package openssl-1.0.2l,1
来自:https://www.howtoing.com/pkg-command-examples-to-manage-packages-in-freebsd
附:从Ports存储库本地下载软件包
为了从Ports存储库本地下载软件包,而不在系统上安装软件包,请使用fetch开关运行pkg命令 。
下载的软件包二进制文件是压缩的.txz文件,可以在/ var / cache / pkg / system路径中找到。
# pkg fetch package_name
[实践OK]FreeBSD下类似Linux的ldconfig -P的动态链接库的使用方法。freebsd添加lib搜索路径的方法,FreeBSD修改可执行文件路径和库文件路径。
Unix/LinuxC技术 jackxiang 2020-2-26 21:40
freebsd添加lib搜索路径的方法:
(1) 添加到LD_LIBRARY_PATH,这个多数人都知道了,坏处是传递的时候容易被砍掉,如apache
(2) ld.so.conf,设置了完全没用,不要试这个。。。
(3) ldconfig -m PATH,一次加载一次有效
(4) 修改/usr/local/libdata/ldconfig/,例如mysql,可以建一个文件/usr/local/libdata/ldconfig/mysql
内容是(假设装到了/usr/local/mysql):
/usr/local/mysql/lib/mysql
然后/etc/rc.d/ldconfig restart就行了
FreeBSD修改可执行文件路径和库文件路径
1、库文件路径修改:
FreeBSD和linux不是一样的。
在/etc/下加入ld-elf.so.conf里面写上你的目录,比如/usr/local/samba/lib,没有的话创建一个。
然后
sudo /etc/rc.d/ldconfig restart
or
/etc/rc.d/ldconfig forcerestart
好了,查看库文件路径
# ldconfig -r
# ldconfig -r | less
或者/etc/rc.conf里加ldconfig_path="",这是系统起来的时候再设置的。
2、可执行文件路径修改:
在用户目录下面,比如/root或者/home/ztz0223下面,打开.cshrc文件,修改set path部分:
# $FreeBSD: release/9.1.0/share/skel/dot.cshrc 242850 2012-11-10 06:05:04Z eadler $
#
# .cshrc - csh resource script, read at beginning of execution by each shell
#
# see also csh(1), environ(7).
# more examples available at /usr/share/examples/csh/
#
alias h history 25
alias j jobs -l
alias la ls -aF
alias lf ls -FA
alias ll ls -lAF
# A righteous umask
umask 22
set path =
(/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin $HOME/bin)
修改上面set path比如:
set path =
(/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin
/usr/local/samba/bin $HOME/bin)
来自:https://www.xuebuyuan.com/1082615.html
https://www.cyberciti.biz/faq/freebsd-ldconfig-v-lost-dynamic-linker-configuration/
(1) 添加到LD_LIBRARY_PATH,这个多数人都知道了,坏处是传递的时候容易被砍掉,如apache
(2) ld.so.conf,设置了完全没用,不要试这个。。。
(3) ldconfig -m PATH,一次加载一次有效
(4) 修改/usr/local/libdata/ldconfig/,例如mysql,可以建一个文件/usr/local/libdata/ldconfig/mysql
内容是(假设装到了/usr/local/mysql):
/usr/local/mysql/lib/mysql
然后/etc/rc.d/ldconfig restart就行了
FreeBSD修改可执行文件路径和库文件路径
1、库文件路径修改:
FreeBSD和linux不是一样的。
在/etc/下加入ld-elf.so.conf里面写上你的目录,比如/usr/local/samba/lib,没有的话创建一个。
然后
sudo /etc/rc.d/ldconfig restart
or
/etc/rc.d/ldconfig forcerestart
好了,查看库文件路径
# ldconfig -r
# ldconfig -r | less
或者/etc/rc.conf里加ldconfig_path="",这是系统起来的时候再设置的。
2、可执行文件路径修改:
在用户目录下面,比如/root或者/home/ztz0223下面,打开.cshrc文件,修改set path部分:
# $FreeBSD: release/9.1.0/share/skel/dot.cshrc 242850 2012-11-10 06:05:04Z eadler $
#
# .cshrc - csh resource script, read at beginning of execution by each shell
#
# see also csh(1), environ(7).
# more examples available at /usr/share/examples/csh/
#
alias h history 25
alias j jobs -l
alias la ls -aF
alias lf ls -FA
alias ll ls -lAF
# A righteous umask
umask 22
set path =
(/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin $HOME/bin)
修改上面set path比如:
set path =
(/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin
/usr/local/samba/bin $HOME/bin)
来自:https://www.xuebuyuan.com/1082615.html
https://www.cyberciti.biz/faq/freebsd-ldconfig-v-lost-dynamic-linker-configuration/
[实践OK]Beyond Compare在Mac OS系统下永久试用,比较word用文本比较。
Unix/LinuxC技术 jackxiang 2020-2-26 18:27
Microsoft Word .doc和Adobe .pdf文件的文本内容也可以进行比较但不能编辑。
https://www.bilibili.com/read/mobile?id=14506059
一、原理
Beyond Compare每次启动后会先检查注册信息,试用期到期后就不能继续使用。解决方法是在启动前,先删除注册信息,然后再启动,这样就可以永久免费试用了。
二、下载
首先下载Beyond Compare最新版本,链接如下:https://www.scootersoftware.com/download.php
三、安装
下载完成后,直接安装。
四、创建BCompare文件
1.进入Mac应用程序目录下,找到刚刚安装好的Beyond Compare,路径如下/Applications/Beyond Compare 2.app/Contents/MacOS。
2.修改启动程序文件BCompare为BCompare.real。
3.在当前目录下新建一个文件BCompare,文件内容如下:
/Applications/Beyond Compare 2.app/Contents/MacOS/BCompare
#!/bin/bash
rm "/Users/$(whoami)/Library/Application Support/Beyond Compare/registry.dat"
"`dirname "$0"`"/BCompare.real $@
4.保存BCompare文件。
5.修改文件的权限:
chmod a+x /Applications/Beyond Compare 2.app/Contents/MacOS/BCompare
以上步骤完成后,再次打开Beyond Compare就可以正常使用了,enjoy it。
转自:https://blog.csdn.net/wu__di/article/details/82390196
https://www.bilibili.com/read/mobile?id=14506059
一、原理
Beyond Compare每次启动后会先检查注册信息,试用期到期后就不能继续使用。解决方法是在启动前,先删除注册信息,然后再启动,这样就可以永久免费试用了。
二、下载
首先下载Beyond Compare最新版本,链接如下:https://www.scootersoftware.com/download.php
三、安装
下载完成后,直接安装。
四、创建BCompare文件
1.进入Mac应用程序目录下,找到刚刚安装好的Beyond Compare,路径如下/Applications/Beyond Compare 2.app/Contents/MacOS。
2.修改启动程序文件BCompare为BCompare.real。
3.在当前目录下新建一个文件BCompare,文件内容如下:
/Applications/Beyond Compare 2.app/Contents/MacOS/BCompare
#!/bin/bash
rm "/Users/$(whoami)/Library/Application Support/Beyond Compare/registry.dat"
"`dirname "$0"`"/BCompare.real $@
4.保存BCompare文件。
5.修改文件的权限:
chmod a+x /Applications/Beyond Compare 2.app/Contents/MacOS/BCompare
以上步骤完成后,再次打开Beyond Compare就可以正常使用了,enjoy it。
转自:https://blog.csdn.net/wu__di/article/details/82390196
PHP框架的目的
Php/Js/Shell/Go jackxiang 2020-2-25 17:46
PHP框架的目的: 区割代码 管理逻辑 降低成本 达成共识 片段冶理 防冶腐败 降低耦合 协同开发 默契达成 抵御安全
[实践OK]mac查看当前调用tcp的进程并关闭指定进程
Unix/LinuxC技术 jackxiang 2020-2-10 13:55
mac查看当前调用tcp的进程并关闭指定进程:
一)查看本机macbook打开的端口:
lsof -iTCP -sTCP:LISTEN
MotionPro 2766 jackXiang 16u IPv4 0xc8299b5de6c3cc43 0t0 TCP localhost:60012 (LISTEN)
Adobe\x20 2858 jackXiang 13u IPv4 0xc8299b5dea54da73 0t0 TCP localhost:15292 (LISTEN)
com.docke 2890 jackXiang 8u IPv4 0xc8299b5dea125b5b 0t0 TCP localhost:56199 (LISTEN)
phpstorm 2918 jackXiang 186u IPv4 0xc8299b5dea91527b 0t0 TCP localhost:6942 (LISTEN)
phpstorm 2918 jackXiang 362u IPv4 0xc8299b5deaa2a8b3 0t0 TCP localhost:63342 (LISTEN)
二)查看连接远程端口:
lsof -iTCP -dTCP:LISTEN
lsof -iTCP -dTCP:LISTEN|grep Google #查看google浏览器连接的端口
safara进程:
/System/Library/Frameworks/WebKit.framework/Versions/A/XPCServices/com.apple.WebKit.WebContent.xpc/Contents/MacOS/com.apple.WebKit.WebContent
502 57037 1 0 11:42上午 ?? 0:06.24 /System/Library/Frameworks/WebKit.framework/Versions/A/XPCServices/com.apple.WebKit.WebContent.xpc/Contents/MacOS/com.apple.WebKit.WebContent
一)查看本机macbook打开的端口:
lsof -iTCP -sTCP:LISTEN
MotionPro 2766 jackXiang 16u IPv4 0xc8299b5de6c3cc43 0t0 TCP localhost:60012 (LISTEN)
Adobe\x20 2858 jackXiang 13u IPv4 0xc8299b5dea54da73 0t0 TCP localhost:15292 (LISTEN)
com.docke 2890 jackXiang 8u IPv4 0xc8299b5dea125b5b 0t0 TCP localhost:56199 (LISTEN)
phpstorm 2918 jackXiang 186u IPv4 0xc8299b5dea91527b 0t0 TCP localhost:6942 (LISTEN)
phpstorm 2918 jackXiang 362u IPv4 0xc8299b5deaa2a8b3 0t0 TCP localhost:63342 (LISTEN)
二)查看连接远程端口:
lsof -iTCP -dTCP:LISTEN
lsof -iTCP -dTCP:LISTEN|grep Google #查看google浏览器连接的端口
safara进程:
/System/Library/Frameworks/WebKit.framework/Versions/A/XPCServices/com.apple.WebKit.WebContent.xpc/Contents/MacOS/com.apple.WebKit.WebContent
502 57037 1 0 11:42上午 ?? 0:06.24 /System/Library/Frameworks/WebKit.framework/Versions/A/XPCServices/com.apple.WebKit.WebContent.xpc/Contents/MacOS/com.apple.WebKit.WebContent
safari浏览器怎么打开控制台开发者工具?使用Safari或者Chrome远程调试IOS Safari中的页面:
一、Iphone手机上:
设置-> 下拉找到safari浏览器->高级(在拉到最底部)->网页检查器 > 启用。
二、MacBOOK上面:
(一)左上角safari浏览器-->偏好设置-->弹出点tab里的高级-->勾选[V]在菜单栏中显示“开发”菜单。
(二)在页面上右键,下拉菜单中点选,检查元素。即可呼唤出类似chrome的F12(option+command+I)开发者选项。
三、用数据线将iphone手机和mac连接起来,在电脑的safari中按照流程执行:【开发】->【手机名称】->【正在调试的网站】
手机端打开页面,macbook上面找到打开的网站,会弹出像F12调出的开发模式一样。
参考来自window下的safari: https://jingyan.baidu.com/album/2d5afd69c4a6a685a2e28e9f.html?picindex=5
https://cloud.tencent.com/developer/article/1680133
一、Iphone手机上:
设置-> 下拉找到safari浏览器->高级(在拉到最底部)->网页检查器 > 启用。
二、MacBOOK上面:
(一)左上角safari浏览器-->偏好设置-->弹出点tab里的高级-->勾选[V]在菜单栏中显示“开发”菜单。
(二)在页面上右键,下拉菜单中点选,检查元素。即可呼唤出类似chrome的F12(option+command+I)开发者选项。
三、用数据线将iphone手机和mac连接起来,在电脑的safari中按照流程执行:【开发】->【手机名称】->【正在调试的网站】
手机端打开页面,macbook上面找到打开的网站,会弹出像F12调出的开发模式一样。
参考来自window下的safari: https://jingyan.baidu.com/album/2d5afd69c4a6a685a2e28e9f.html?picindex=5
https://cloud.tencent.com/developer/article/1680133