When I woke up in the morning, I looked at my iPad, she sent me some messages answering the last question I asked last night. I tried to examine the environment to see if I was in a dream, because I thought she would no longer send me any message. Soon, I fell asleep again. And then I did the same thing again. I woke up and saw her messages again. That time I thought that was real. But unfortunately I ended up waking up without any message, and right now, I am writing this article and this is the reality. I think I was thinking too much while I was sleeping.
!
Finally, I decided to send her a message. But I didn’t handle that well. I totally screwed it up. She thinks I am a strange man now. And I probably won’t talk to her in the near future as I am becoming annoying. ☹
We just met 5 days. And she gone away. From now, it’s been 2 months. I was preparing for what to say for days. I was afraid of losing her – as a friend or whatever. Well, to ask her out is the thing I wanted most, but she said she’s not here. I was thinking about her for weeks and now I failed, I think I can’t sleep tonight. FUCK!!!
Every time I am telling myself is OK somebody does not like you. I admit, I was thinking too much about her, too much beautiful things. And I don’t know if I should let these thoughts go away. I was also preparing to tell her all my thoughts. But I was so afraid of losing her that I didn’t say anything.
I wish some one could tell me what to do.
流量矿石hosts
最近流量矿石速度不行,曾经尝试修改hosts,不过作用不大。要知道矿石软件用到了那些域名进行通信,可以:
strings Miner.exe > strings
for domain in $(grep -Eo '[a-z0-9-]+(\.[a-z0-9-]+)*\.(com|net|org|cn)' strings | sort -u); do
IPv4=$(dig +short $domain | grep -Eo '[0-9\.]{7,15}' | head -1)
printf "${IPv4} %*s ${domain}\n" $((15 - ${#IPv4}))
done
这样,将得出的结果复制到C:\WINDOWS\system32\drivers\etc\hosts,当然你也可以用BAT文件一键生成添加。
60.55.32.68 agent.daddymami.net 61.130.9.245 agent.vlogin4.yunfan.com 121.201.99.4 client.jiaoyi.yunfan.com 222.186.3.147 cloud.daddymami.net 60.55.34.215 cloudcfg.daddymami.net 23.5.5.163 crl.thawte.com 23.5.5.163 crl.verisign.com 23.5.5.163 csc3-2010-aia.verisign.com 23.5.5.163 csc3-2010-crl.verisign.com 23.5.5.163 logo.verisign.com 183.60.41.76 mtracker.yunfan.com 23.5.11.27 ocsp.thawte.com 23.5.11.27 ocsp.verisign.com 65.52.103.126 schemas.xmlsoap.org 175.6.0.42 statis.daddymami.net 110.34.226.140 stun.daddymami.net 110.34.226.140 stun1.daddymami.net 222.186.3.165 track.qvod.com 23.5.5.163 ts-aia.ws.symantec.com 23.5.5.163 ts-crl.ws.symantec.com 23.5.11.27 ts-ocsp.ws.symantec.com 222.186.3.156 tspeed.yunfan.com 222.186.3.154 update.daddymami.net 60.55.34.183 upload.tfs.kbimg.cn 183.60.41.199 vlogin4.yunfan.com 175.6.0.106 www.qvod.com 69.58.181.89 www.verisign.com
大规模服务器和流量矿石软件监控
这段时间在和人合作挖矿,很多人会认为流量矿石前景黯淡或者是徒劳,但我至少系这个项目上学会了XenServer,和监控这些一百几十台服务器的技术。
监测每部VM的网卡速度比较容易,因为XenServer是Linux,读取 /proc/net/dev 就可以了。我也参照了部分官方的代码,自己用C编写了监控读数的软件。
因为最初没有设计太多,没有安装很多软件,通常我是只利用一台服务器用来编译软件,然后打包这些软件,放到其他服务器直接使用,其他服务器就无需安装任何软件即可使用,这个就会比较方便,唯一的缺点就是开发C会比较耗费时间,但是可靠性、方便性和运行速度上会有保证。当然也可以选择 Python 或者 Node.JS 。
Windows下的流量矿石软件比较“不寻常”,我利用各种获取窗口文字的软件,尝试获取矿石软件的流量读数,但是没有结果。
之后我尝试用监控每个进程的网络流量进行记录,之后汇总。不过我发现矿石连接数很多,处理起上来可能十分无效率,而且有部分可能是无用的。
最终还是用图像识别的方法,截图,然后识别文字。这里要用到 Capture2Text 。唯一缺点是要处理很多情况,因为读出来的读数不是 100% 正确,要进行各种测试。
循环每隔几秒,利用 XenStore 储存读取读数,然后主机读取,然后主机集中发送到网站上,网站推送数据给用户浏览器,即时看到速度。
不过这个方法也有一个缺陷——就是关掉远程后或者远程窗口最小化后,屏幕变成黑色,所以截图也是黑色,无法读取数值。
最小化的问题可以通过利用注册表解决。但是关掉远程这个问题,网上有很多人提出不同的解决方法,但是都无用。
我最后找到了解决方法,就是当用户退出远程后,通知主机通过 VNC 登录 Windows ,当然这一步要输入密码,你可以通过 vncdotool 等工具,利用命令,模拟输入用户名和密码的过程,不过这里也有很多不确定的情况。只要主机登录到 Windows,读数就会继续。当然你不能设置任何屏保或者覆盖矿石软件读数的东西。当然,如果你设置了透明度,背景也是会影响读数的。
当然你要使用和了解 Windows 2003 下的 Session 0 ,否则会给你很多问题。
大致就是这样的过程。
因为是 Linux ,你可以做很多东西,比如截图,也可以将全部 VM 的截图合并,也可以在图片加入文字,另外可以利用 nginx ,这样截图就可以在浏览器定期刷新而获取最新的截图。
Year Contributions
Ubuntu 无法登录的解决办法
如果你某次重启后发现怎样登录自己的账户都无法启动自己的桌面,即使密码正确,而登入其他账户如root就正常,这是因为Ubuntu执行自己的.bashrc或.profile等文件时出错,可能是因为权限或者不存在的原因,这次我安装了nvm,nvm在.profile插了一段,重启后发现登录不到,删了后正常登录,将该段命令转到了.bashrc。
你可以在登录界面按ctrl-alt-f1进入命令行界面,或者用root账户登录图形界面。
WINDOWS下的终端(Terminal)
如果迫不得已要在Windows下开发软件,使用类似终端的东西,而又觉得Windows的命令行工具很渣,可以考虑:
1. 安装包含git bash的msysgit。
因为msysgit用的是Windows的命令行工具,所以要下载个比较好看的终端:
2. 下载mintty的msys版。
3. 把mintty.exe移到msysgit的安装目录,如C:\Program Files\Git\bin。
4. 创建mintty.exe的快捷方式,放到桌面或者你想要的地方,然后右击编辑属性,目标一栏填写:
"C:\Program Files\Git\bin\mintty.exe" -c "C:\.minttyrc" "C:\Program Files\Git\bin\sh.exe" --login
其中C:\.minttyrc是配置文件存放位置,如果是Windows 7,因为权限问题,可以存放在自己的用户目录下,或者其他磁盘。如果不指定这个,诸如界面编码等设置都不会被保存。
后面的"C:\Program Files\Git\bin\sh.exe" --login其实跟Git Bash自己的快捷方式类似,启动带Git的Bash。
安装完软件后记得要往环境变量的Path添加exe或者库的所在路径。
PyQt Retina
前几天买了MBP Retina,发现用PyQt4编出来的Mac app不是Retina,Widget和窗口的左上角的三个按钮都是模糊的,一查发现Qt5开始支持Retina,于是就去装了。
PyQt4贪方便,用了Homebrew安装,于是继续安装PyQt5,发现除了个问题,就是Mac OS X 10.9就把libstdc++改成了libc++,导致PyQt5不能安装,上到Homebrew的Github Issues找答案,有可能需要重新安装大部分软件。
于是还是不能偷懒,去把Qt5和PyQt5的源码下载,自己从源代码build。
第一次Build分别用了Python2.7和Python3.3,都成功,Python3.3可以用,但Python2.7不能用,会出现Symbol not found的错误。
为什么特别要用Python2.7呢?因为PyInstaller目前支持到Python2.7,而另外一个Package软件Pyside又不支持Qt5。所以如果PyQt5不能在Python2.7使用,基本上要Python写的Qt程序不能用Retina。
后来发现PyInstaller需要一个叫SIP的软件,由于学这个时间只有几天,不知道是什么,最后还是把那个也用Python2.7装了,最终可以在Python2.7使用PyQt5,OK。我估计原因是之前的SIP是Homebrew用Python3安装的。
Qt4迁移到Qt5也是一个问题,因为网络上几乎没有任何Qt5的教程,如果现在入手PyQt5,无奈地要看PyQt4的教程,然后安装迁移提示升级。
Qt5安装:
官网上有Mac的安装软件,可以安装到家目录下:~/Qt5.2.0
SIP安装:
cd sip-4.15.3
python2.7 ./configure.py
make
sudo make install
PyQt5安装,–qmake的路径根据Qt5的目录,里面肯定有个叫qmake的程序,–sip和–sip-incdir根据之前SIP安装的输出结果,sudo make install时会列出sip和sip.h这两个文件的路径,分别填入目录和文件路径即可:
cd PyQt-gpl-5.1.1
python2.7 ./configure.py –qmake /Users/caiguanhao/Qt5.2.0/5.2.0/clang_64/bin/qmake –sip-incdir /usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/include/python2.7/ –sip /usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/bin/sip
make
sudo make install
现在应该可以用PyQt5生成app了。但还不是Retina的。
当然还有一步,根据这里,在生成的app文件下找到Info.plist,加入:
<key>NSHighResolutionCapable</key> <string>True</string>
当然这不能通过填写spec文件自动修改,因为PyInstaller生成的Info.plist是固定的,你要更改PyInstaller/build.py大约1500行的位置。
用以下命令直达该目录:
cd $(python2.7 -c "import site; print site.getsitepackages()[0]")/PyInstaller
Ruby in Mavericks
如果你升级到了 OS X Mavericks,会发现以前跟Ruby有关的软件出现问题,使用brew重新安装ruby,虽然Ruby可以用,但是用gem安装某些软件时会出错:can’t find header files for ruby ruby.h。
因为系统比较乱,建议还是删除 /System/Library/Frameworks/Ruby.framework 和 /Library/Ruby 目录,删除/usr/bin目录下的erb, gem, irb, rdoc, ri, ruby, testrb, bundler 等等。然后用rbenv安装最新版的Ruby 2.0。
为了使用最新软件,删除你的Ruby项目中的Gemfile.lock和更新各Gem的版本号,使用旧版本软件也可能出现安装编译时出错。
极路由:SSH
家里路由器开始出现问题,于是去找了。搜索翻墙路由时无意发现一个叫极路由的东西最近发布,而且还要邀请码,于是进入了他们的QQ群索取了一个,花了270多元买了。
今天路由器到了,设置好了之后,固件要更新,否则是不能连接添加app的功能。
原本我以为SSH这些app是下载到路由器,然后在路由器设置。但不是,你至少需要在路由器的官网上 https://app.hiwifi.com/ 输入你的SSH用户密码!另外他们目前的SSH只能通过密码方式使用(不能使用密钥),你要重新启用SSH的密码验证功能才可以用。
这个动作太危险了。先不说极路由的人在路由器中或是官网上收不收集用户名密码,这些明文保存的用户名密码对服务器危害极大。
另外我开启了密码功能测试连接速度。智能判断模式不能判断 twitter 等网站。我试过只能在全局模式下,在终端用curl下载twitter.com首页,发现使用了接近30秒的时间才完成,超级慢!算了,我不用这个app了。
除了这些外,包装是好的。如果翻墙功能做得这么差,这个路由器根本没有什么出众的地方,和其他100多元的路由器差不多,有些被人搵笨的感觉。
QQ群上尽是那些“趋炎附势”的人,一群不接受批评的人,于是我退出了那个QQ群。
或者他们会在之后更新中补救,但是他们对于安全考虑如此不周到,真让人心寒。(还是不要过多期望路由器级别的翻墙)

