微信小程序的一些坑

es6 转 es5, 如果遇到不小心重复 export 的情况

export {
    foo,
    bar,
    foo
}

转译过程不会报错, 但是最终生成的 js 似乎是变成了一个空文件, Network 请求正常, 没有 404, 但是控制台会报错 Uncaught Error: module "utils/API.js" is not defined

引入template

如果引入模板文件时书写的路径有误, 控制台编译过程中并不会有任何报错提示, 也不会解析和显示, 就好像这行引入语句不存在一样~

对于"腾讯内部的 KPI 项目"已经无力吐槽 🙂

2017/7/17 posted in  tech

macOS 下 Charles 设置移动端代理遇到的坑 - shadowsocks

Charles 设置移动端抓包没有那么困难, 大部分的问题基本都搜得到, 不过最近遇到了一个比较奇怪的问题, 对于手机常开 shadowsocks 之类科学上网 App 的小伙伴可以注意一下, 因为被这个坑了1个多小时, 所以在这里记一下备忘.

按正常的情况: 如果手机配置正确, 在配置好代理的时候, Charles 是会弹窗提示 "有新设备连接, 是否允许" 的.

Charles 所有的配置都是之前已经配好而且一直在用的所以电脑端配置有问题的可能性极小, 但这次在自己手机端配置好代理之后, Charles 却一直没有任何新设备连接提示. 是的, 没有任何提示... 于是就踏上了没有任何调试信息调试工具辅助的 debug 之路

大概的 debug 过程: 同事的手机连接他自己的 Charles 没问题, 同事的这部手机连接我的 Charles 也没问题, 我的手机连接同事的 Charles 依然有问题, 所以基本可以确定是我自己手机的问题了. 因为我的手机(MIUI)之前 Root 并装了 Google 框架, 所以刚开始以为是 Google 框架的问题, 但是当我把 Google 所有服务全部卸载重启之后发现依然连不上的时候, 我发现问题并没有那么简单...

总结出来就是一句话:

使用 Charles 设置移动端抓包的时候, 手机记得一定要关闭 shadowsocks 之类的代理 App, 就算是规则代理也不行.

之前一直以为 shadowsocks 的规则代理只会对规则内列表起作用, 所以这次设置 Charles 就没有考虑到这方面...

所以基于这样的实际情况, 推测 ss 开启的情况下, 就算是开启基于规则的代理策略, 也会默认监听匹配所有 socket 请求, 如果匹配上就会转到代理服务器, 如果匹配不上则会以自己的身份直接转发给对应的地址(从Android系统设置里的耗电和网络流量排行中也可以看得出来), 估计就是因为 shadowsocks 对所有请求的代理导致 Charles 无法识别移动端的吧

2017/6/22 posted in  macOS

Mac下终端常用命令

  • 在 Finder 窗口顶部显示当前完整路径
    终端输入:defaults write com.apple.finder _FXShowPosixPathInTitle -bool YES

  • Mac App Store 下载失败
    终端输入:defaults write com.apple.appstore ShowDebugMenu -bool true

  • 显示和隐藏文件
    显示:defaults write com.apple.finder AppleShowAllFiles -bool true
    隐藏:defaults write com.apple.finder AppleShowAllFiles -bool false
    重新启动Finder

  • 路由表的输出信息
    终端输入:netstat -nr

  • 配置环境变量
    Mac 环境变量有两种,一种是全局的,公用的,针对系统所有用户;另一种是用户级的,只对当前用户有效。

    /etc/profile 全局配置文件,所有用户登录时读取此文件,一般不修改。
    使用时需使用 sudo 以Root权限运行(慎用)

    /etc/bashrc 全局配置文件,运行bash shell时读取此文件,一般在这里修改系统级环境变量。

    ~/.bash_profile 用户级配置文件,用户登录时,该文件仅执行一次。一般在这里修改用户级环境变量。
    可使用 vi 命令进行编辑。

    • 进入输入模式的方法如下: 增加(append) 按 “a” 键 从光标所在位置后面新增内容。 按 “A” 键 从光标所在行最后面新增内容。 插入(insert) 按 “i” 键 在光标所在位置前面插入内容,光标后面内容随之后退。 按 “I” 键 在光标所在行第一个非空白字符前插入内容。 开始(open) 按 “o” 键 在光标所在行下面新建一行 按 “O” 键 在光标所在行上面新建一行
    • 退出vi编辑器(冒号在前) :x 退出并保存。 :wq 退出并保存。 :w 仅保存。 :w filename 保存为指定的文件,可用于另存为。 :q 仅退出,有修改内容时会提示要保存。 :q! 强制不保存退出。
  • 网络设置

    1. 列出网卡
      终端输入:networksetup -listallnetworkservices

    2. 关闭 ipv6
      终端输入:networksetup -setv6off "网卡名称"
      比如关闭以太网的IPV6: networksetup -setv6off Ethernet
      关闭 Thunder Bolt 以太网的 IPV6: networksetup -setv6on "Thunderbolt Ethernet"

    3. 设置IP地址
      终端输入:networksetup -setmanual "网卡名称" 192.168.31.2 255.255.255.0 192.168.1.1

  • 设置Dock仅显示当前打开的应用图标
    终端输入:defaults write com.apple.dock static-only -boolean true; killall Dock
    恢复:defaults delete com.apple.dock static-only; killall Dock

  • 清除 dns 缓存
    终端中刷新DNS的discovoryutil命令在macOS 10.10.4中被移除,在macOS 10.12之后刷新DNS缓存的命令为:

    sudo dscacheutil -flushcache;sudo killall -HUP mDNSResponder;say flushed

2017/6/5 posted in  macOS

Mac 关闭 IPV6

公司的内网调试, 需要设置一个固定的 IPV4 地址, 设置完保存的时候, 提示: "无效的服务器地址BasicIPv6ValidationError", 这边稍微搜了下, 没有什么太直接的解决方法, 所以在这里记录一下备忘.

先关闭IPv6,然后设置IPv4,再重新开启IPv6

networksetup -setv6off "Ethernet"

这里的 Ethernet 是你要关闭 IPV6 的网卡服务名称, 也就是你在 Mac 设置 -> 网络面板左侧的连接方式名称. 在命令行中输入时一定要使用英文的形式, 比如 "Thunderbolt 以太网" 在命令行中就需要输入

networksetup -setv6off "Thunderbolt Ethernet"

执行成功之后再次查看就会发现 IPV6 已经自动关闭了.

2017/6/5 posted in  macOS

使用 yeoman angular-generator 作为脚手架时, 遇到的一些坑和 tricks

在命令行中执行 npm install 时下载 Phantomjs 依赖包失败的问题

shadowsocks 已经开了, 但是这个文件通过命令行依然无法访问, 可以在命令行里试着跑一下这个:

wget https://github.com/Medium/phantomjs/releases/download/v2.1.1//phantomjs-2.1.1-macosx.zip

如果提示操作超时(类似下面的提示), 就可以证明是这个问题了.

Connecting to github-cloud.s3.amazonaws.com|54.231.49.96|:443... failed: Operation timed out.

由于 shadowsocks 是基于 socket 的协议, 无法代理更底层的 TCP/IP, 所以需要一个工具可以让 TCP/IP 也走 socket5.

之前一直用的是 proxychains, 但是每次执行都需要在单个命令前加前缀, 虽然可以 alias 成更短的 ps, 但 npm install 安装依赖的话还是非常不方便.

后来找到了这个 Proxifier

这个工具也有 Windows 版

神秘代码我神马都布吉岛(雾 P427L-9Y552-5433E-8DSR3-58Z68

个人感觉还是非常好用的, 推荐使用 Windows 和 Mac 的同学试一下~

打开后配置好本地 IP 127.0.0.1 和本地端口 1080 type 为 socks5, 就可以使用了.

优点:

  • 自定义每个应用设置是否proxy
  • 自定义host是否proxy
  • 不影响浏览器是否全局
  • 查看当前连接

另外, 使用 linux 的同学可以尝试下 redproxy .

来源: http://sxiaojian.com/2016/07/04/terminal-shadowsocks/

Ruby 推荐安装方式

  1. 安装 Ruby(rvm)
  2. 然后安装 sass compass - gem install sass compass

Node 安装方式

  1. node(nvm)
  2. 然后升级 node 自带的 npm 到最新版本 npm install --global npm@latest

Yeoman 相关配置

* npm install grunt-cli gulp-cli Yeoman -g

Written with StackEdit.

2017/4/11 posted in  tech