借助iphone的屏幕朗读功能练习英语听力
iphone有个很实用的功能那就是屏幕朗读,简单来说就是使用屏幕朗读之后,iphone会把整个屏幕的文字朗读给你听。这个功能可以很好的帮助我们练习各种国家语言的听力
首先怎么快速方便使用这个功能?
当然是把屏幕朗读加入到屏幕的那个小圆圈里面。
具体步骤如下:
设置->通用->辅助功能->辅助触控->自定义顶层菜单
……技术探索与开发实践:AI、云原生、全栈开发之路
iphone有个很实用的功能那就是屏幕朗读,简单来说就是使用屏幕朗读之后,iphone会把整个屏幕的文字朗读给你听。这个功能可以很好的帮助我们练习各种国家语言的听力
首先怎么快速方便使用这个功能?
当然是把屏幕朗读加入到屏幕的那个小圆圈里面。
具体步骤如下:
设置->通用->辅助功能->辅助触控->自定义顶层菜单
……本篇文章主要介绍使用golang实现一个代理扫描工具,目前主流常用的代理有http代理,和socks5代理两种模式,当然还有什么vpn,ss这种代理,不在本文讨论范畴,因为这些是加密的。
扫描出来可以被我们使用的代理,当然是不需要密码,免费的代理了。
首先是httpProxy的实现:新建一个go文件httpproxy.go
……今天这篇文章主要讲微信和支付宝的离线付款码的一种实现思路。 付款码就是我们出示给商家扫码的一种码,这种码在首次初始化之后,不用联网也可以动态生成。
本文仅代表个人的一种实现原理的探索,仅供参考,不代表实际支付宝的付款码实现方案,也许支付宝的付款码实现方案算法更加完美,更加好。
如果有更好的算法和想法,欢迎评论和我探讨。
……网易将军令是一种动态的密码保护器,还有赛门铁克的vipAccess也是一种动态密码保护器。
它们的特点是可以离线动态生成,同时每过一分钟或者半分钟之后,密码都会变化一次,是一个六位数的密码。 这个密码的用途是在你输入你的账号加上固定密码之后,还需要额外输入一个动态密码。这个就是上面说的动态密码。其中网易将军令是用在网易游戏上的,赛门铁客的vipAccess是用在企业登录的二次验证的。
……有时候看别人的go代码,发现他们有的在代码里面用了指针,有的不使用。
假设有个结构体类型叫做Person,
发现有些方法会用func methodA (*person Person)作为参数,
或者使用 func *(person Person) methodA()作为结构体自己的方法,也就是person这个结构体 可以直接调用methodA,但是用的是指针。
或者在map结构里面看到var personMap map[string]*Person 的用法
……差不多一个星期没更新这个系列了,今天难得有点时间,然后就开始写了点代码,上一章节讲了数据模型的定义和数据发送。这些都是一些准备,但是实际上距离真正实现tcp内网穿透代理还有些距离。
所以今天的章节是快速写一个例子,来测试一下tcp内网穿透代理。然后再规范代码,因为快速的demo测试,可以立马看到效果,当然我们的一些设计还是有用的。
……今天心血来潮,突然想起tomcat,jetty等servlet容器,有一个设计模式,很有意思的,那就是filter, 简单回顾一下filter,当我们把filter注册在web.xml里面的话,同时按照一定的顺序,假设我们有三个filter 那么就会先调用A->B->C,然后再从C回到A
……使用golang手把手实现一个tcp内网穿透代理工具。
描述一下应用场景,假设内网也就是我们的局域网,我们的电脑,pc运行了一个tomcat服务器,或者nginx服务器,又或者jdbc数据库,又或者python的服务器。
正常来说,我们是无法通过互联网达到访问局域网的电脑,pc的。
然后我们有一台外网主机,需要实现在外网主机端口支持访问我们内网的服务,这样的好处和目的是什么呢?
……上一篇文章明确了我们需要做的东西,接下来就是实现具体功能
首先是协议的定义,服务端和客户端需要一套协议来交互
协议的内容包括了,livecheck,以及发起tcp连接建立的请求,和响应的对象
假设内网里面需要暴露到外网的端口是5050,那么客户端需要请求服务端在外网建立一个端口,同时服务端需要知道内网被代理的端口是多少。
……ngrok支持tcp tunnel和http以及https,但是ngrok的tcp代理似乎优化不够好,当一段时间闲置tcp连接的话,再连接会出现连接不上的问题。
首先来看看ngrok的tcp tunnel的原理: 假设ngrok的client端配置文件如下
#填写服务器域名和连接端口
server_addr: ngrok.domain.com:4444
trust_host_root_certs: false
tunnels:
adb:
#这里的remote_port是指从ngrok.domain.com:5555->被代理端的5555端口
remote_port: 5555
proto:
#使用tcp协议
tcp: 5555
sequenceDiagram
被代理端-->ngrok client: \n
ngrok client->>ngrok server: 连接请求tls
ngrok server->>ngrok client: 鉴定确认连接请求tls
ngrok client->>被代理端: 建立tcp连接
ngrok client->>ngrok server: 请求监听5555端口
ngrok server->>ngrok client: 已经监听5555端口
用户端->>ngrok server: 建立和ngrok server的5555端口的tcp连接
ngrok server->>ngrok client: 请求ngrok client建立连接
ngrok client->>ngrok server: 建立专门用于5555的tcp连接
ngrok client->>被代理端: 传输来自sever 5555 tcp连接的流量到被代理端
可以发现一共三条tcp连接,一条是被代理端到ngrok client的和ngrok client到ngrok server端的
……