MacOS 随航功能链接ipad超时
首先去官网查看一下,macos的系统版本和硬件以及ipad的版本是否支持随航。这是前提条件。 macos 和 ipad 需要登录同一个AppleID macos和iPad需要在同一个Wi-Fi下 遇到报错提示链接超时时: MacOS 退出apple账号,然后重新登录,登录完了之后重启电脑 再次尝试连接,就可以连接成功了。
首先去官网查看一下,macos的系统版本和硬件以及ipad的版本是否支持随航。这是前提条件。 macos 和 ipad 需要登录同一个AppleID macos和iPad需要在同一个Wi-Fi下 遇到报错提示链接超时时: MacOS 退出apple账号,然后重新登录,登录完了之后重启电脑 再次尝试连接,就可以连接成功了。
macos 升级后,发现git等命令都不可用了。 第一次使用xcode-select –install, 有报错。于是就用brew 安装了git。 xcode-select --install 后续使用其他命令是,发现gcc命令也不可用。于是第二天又用 xcode-select --install 执行了一遍,忽然又可以正常安装开发软件了。 所以又把brew 安装的git给卸载了。
最近遇到一个问题,WebSocket总是会在下午出现比较大的断开的量。 首先怀疑的是客户端的网络到服务端的网络出现抖动或者断开,要么就是入口的nginx有异常,或者是内部的服务出现异常。 排查下来,发现nginx的最大打开文件个数是1024 nginx master进程 nginx work进程 当进程打开文件数超过限制时,会发生什么? 当进程超过最大打开文件限制时,会收到SIGXFSZ信号。这个信号会默认行为会杀死一个进程。进程内部也可以捕获这个信号。 我试着向nginx wrok进程发送SIGXFSZ信号, work进程会退出,然后master监听了这个事件后,会重新启动一个work进程。 kill -XFSZ work_pid 在nginx的error.log文件中,可以看到类似的日志输出。 这里的25就是XFSZ信号的整数表示。 ... [alert] ...#.: work process ... exited on signal 25 _ 参考 https://www.monitis.com/blog/6-best-practices-for-optimizing-your-nginx-performance/ https://www.cnblogs.com/shansongxian/p/9989631.html https://www.cnblogs.com/jpfss/p/9755706.html https://man7.org/linux/man-pages/man2/getrlimit.2.html https://man7.org/linux/man-pages/man5/proc.5.html
调研目的 在异常情况下,网络断开对WebSocket的影响 测试代码 测试代码没有心跳机制 心跳机制并不包含在WebSocket协议内部 var ws = new WebSocket('wss://echo.websocket.org/') ws.onopen =function(e){ console.log('onopen') } ws.onerror = function (e) { console.log('onerror: ' + e.code) console.log(e) } ws.onclose = function (e) { console.log('onclose: ' + e.code) console.log(e) } 场景1: 断网后,是否会立即触发onerror, 或者onclose事件? 答案:不会立即触发 测试代码中没有心跳机制,断网后,并不会立即触发onerror或者onclose的回调函数。 个人测试的情况 及其 测试场景 Macbook pro chrome 83.0.4103.106 每隔10秒发送一次消息的情况下,40秒后出发onclose事件 Macbook pro chrome 83.0.4103.106 一直不发送消息,一直就不回出发onclose事件 Macbook pro chrome 83.0.4103.106 发出一个消息后? 场景2: 断网后,使用send()发送数据,回触发事件吗? 为什么无法准确拿到断开原因? WebSocket关闭事件中有三个属性 code 断开原因码 reason 具体原因 wasClean 是否是正常断开 官方文档上,code字段有很多个值。但是大多数情况下,要么拿到的值是undefined, 要么是1006,基本上没有其他情况。 ...
新建一个文件 ip.list.cfg, 包含所有的带测试的ip地址。 192.168.40.20 192.168.40.21 执行命令: nohup fping -D -u -l -p 2000 -f ip.list.cfg & -D 显示时间戳 -u 显示不可达的目标 -l 持续的ping -p 每隔多少毫秒执行一次 -f 指定ip列表文件 在nohup.out中,回持续的显示到各个ip的网络状况。 [1592643928.961414] 192.168.40.20 : [0], 84 bytes, 3.22 ms (3.22 avg, 0% loss) [1592643928.969987] 192.168.40.21 : [0], 84 bytes, 1.22 ms (1.22 avg, 0% loss) [1592643930.965753] 192.168.40.20 : [1], 84 bytes, 5.25 ms (4.23 avg, 0% loss) [1592643930.972833] 192.168.40.21 : [1], 84 bytes, 1.14 ms (1.18 avg, 0% loss) [1592643932.965636] 192.168.40.20 : [2], 84 bytes, 3.45 ms (3.97 avg, 0% loss) [1592643932.978245] 192.168.40.21 : [2], 84 bytes, 4.39 ms (2.25 avg, 0% loss) [1592643934.991354] 192.168.40.20 : [3], 84 bytes, 27.9 ms (9.96 avg, 0% loss) [1592643934.991621] 192.168.40.21 : [3], 84 bytes, 14.9 ms (5.42 avg, 0% loss) [1592643936.978135] 192.168.40.20 : [4], 84 bytes, 11.3 ms (10.2 avg, 0% loss) [1592643936.979620] 192.168.40.21 : [4], 84 bytes, 1.37 ms (4.61 avg, 0% loss)
.zshrc配置 vim ~/.zshrc plugins=(git tmux) # 加入tmux, 然后保存退出 source ~/.zshrc tmux 快捷键 Alias Command Description ta tmux attach -t Attach new tmux session to already running named session tad tmux attach -d -t Detach named tmux session ts tmux new-session -s Create a new named tmux session tl tmux list-sessions Displays a list of running tmux sessions tksv tmux kill-server Terminate all running tmux sessions tkss tmux kill-session -t Terminate named running tmux session tmux _zsh_tmux_plugin_run Start a new tmux session
从各种层次排查了问题,包括 docker版本不一样 脚本不一样 镜像的问题 … 从各种角度排查过后,却发现,问题在是拼写错误。环境变量没有设置对,导致进程无法前台运行。 能不拼写就不要拼写!!直接复制。 大文件在传输图中可能会文件损坏,最好使用md5sum计算文件校验和,然后做对比。
webrtc的各种demo https://webrtc.github.io/samples/ 在线音频处理 https://audiomass.co/ 值得深入阅读,关于如何demo的思考 https://kitsonkelly.com/posts/deno-is-a-browser-for-code/ 不错的介绍demo的博客 https://kitsonkelly.com/posts js如何获取音频视频 https://www.webdevdrops.com/en/how-to-access-device-cameras-with-javascript/ bats可以用来测试shell脚本 https://github.com/bats-core/bats-core 手绘风格的流程图 https://excalidraw.com/
1. 理发店分类 类别 店面大小 并发理发人数 业务范围 消费者画像 定价 A(单一理发类) 较小 4-6 理发、染发、烫发 学生、普通工人 较低 B(综合服务类) 较大 12-20 理发、染发、烫发、美容、减肥、刮痧、按摩、脱毛等等 白领、老板等有一定经济能力者 中上 2. 如何吸引顾客上门? 优惠卡:在理发店营业之前,往往可以以极低的价格,派发理发卡。例如办理20元理发5次这样的理发卡。这样在理发店营业之初,就会有足够的客户上门理发。 认知偏差:很多理发店会门口挂个横幅: x+x+x 仅需5元。全场套餐仅需1折。其实这些都是吸引顾客的钩子,而真正的前提条件,往往是要办理xxxx元的会员卡。 3. 如何吸引客户更多的消费? 对于B类理发店来说,一般情况下顾客进店之后,并不会对其立即理发。而需要一位服务员进行理发前的准备,例如头部按摩、颈部刮痧、肩部按摩的放松准备。也可能会上一些茶水,糖果瓜子之类的食品。 进入理发店,除了有理发的消费之外,还可能纯在其他的消费机会。而消费机会的前提在于**服务人员和顾客之间的沟通。所以以为能够察言寡色的服务员则显得尤为重要。如果顾客一句话也不说,那也是无法让其更多的消费的。常见的沟通手法如下: 发现顾客身上的小瑕疵,进而咨询顾客是否需要专业的人员帮您看看。(注意这一步一定不要立即推荐套餐服务,这样会立即引起顾客的反感情绪。) 经过专业人员的查看之后,一般会向客户推荐比较优惠的体验一次的项目。因为体验一次往往是话费比较小的。如果上来给客户推荐一两千的套餐,客户一般会拒绝。 简单的套餐体验过后,可以向顾客推荐套餐,以及如果使用套餐,单次理疗会更加优惠。 总得理念就是:循序渐诱,不可操之过急 4. 如何留住顾客? 理发店顾客粘性一般比较小,周围四五家理发店,顾客凭什么再次光顾你这家呢? 答案就是:会员卡