Trump elected to be next president

做为一个中国人没什么太多资格去讨论一个外国元首,但是他作为一个影响全球的世界元首,对其他国家或多或少还是有影响的,从最近汇市和股市的尿性就可以看出来了,就这还没有上任呢。 至于Trump为啥能被选上呢?鬼知道,现在来看大家都归结于社交媒体的胜利。不无道理,以我之见,很多人选Trump的主要原因是想看到一些改变,而不是希拉里作为一个成熟政客的4年表演,她的表演和观海同志一样,who want repeat 4 years again? 而Trump能不能做到他说的make American great again, 未必吧,潜台词是American is not great anymore,但是即便是如此大家也愿意看到一些不太确定的变化吧,更何况Trump说的一些事情也是很多人想做的,比如限制非法移民和废除Obama~~Don’t~~Care之类的。 至于现在的民族主义、孤立主义抬头,全世界的新潮流吧,从英国脱欧开始到现在的美国有可能转向保守主义等等,都有表明这个世界正在起变化。全球化进程是不是就此开始衰退,我倒没有太担心,从发达国家已经流出的工作岗位是不会再流回的,他们只是很有可能被另外一种更新的技术来取代。 今天这是卖白菜的操了卖白粉的心,多虑了,洗洗睡觉!

selenium wait 和 iframe

还是从朋友那个小事儿做的时候弄出来的问题 selenium 如何切换driver到一个ID设置为中文iframe? 遇到alert了怎么处理? 检查某个元素是不是出现了? 不要问我为啥id会用中文,说多了都是泪,总之这是一个一言难尽的问题,一句话,国有企业你懂的。 切换到特定的iframe/frame driver.switch_to_frame(driver.find_element_by_id(‘some_id’)) 这样就可以在这个frame/iframe里做相应的find element操作了,但是要记住操作完了要切换回来 driver.switch_to_default_content() 多层嵌套的iframe也没有问题,只要一步一步的切换进去就好了 接受alert 一个简单的方法就是预计有alert的地方,写上接受就好了 driver.switch_to.alert.accept() 这样很粗暴,但是也很有效,精细一些的做法看文档,比如: 确认或者取消 from selenium.webdriver.common.alert import Alert Alert(driver).accept() Alert(driver).dismiss() 读取alert的文字内容 Alert(driver).text 认证的用户名和密码 driver.switch_to.alert.authenticate(username,password) 输入内容 name_prompt = Alert(driver) name_prompt.send_keys(“Willian Shakesphere”) name_prompt.accept() 检查某个元素是否出现 以前的一个很粗暴的做法是time.sleep(N),但是这种情况下非常粗旷,selenium 提供了更精细的一些控制方法 等待某个元素出现以后获取这个元素 from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC wait = WebDriverWait(driver, …

macOS 的ssh-add -K

macOS 10.12 开始ssh-add并不是默认将你的ssh-key添加进去了,所以需要额外配置一下 打开自己的ssh配置文件~/.ssh/config,加入如下内容 Host * UserKnownHostsFile /dev/null #这一句还好吧 StrictHostKeyChecking no #这一句非常危险,结合上一句再加上dns劫持的话,再加上密码认证就很有泄漏密码的可能性 ForwardAgent yes TCPKeepAlive yes IdentityFile ~/.ssh/id_rsa AddKeysToAgent yes

再说 vendor 目录进不进版本控制

先说结论:不进 官方的指导是不进,如果非要进有如下四个方法 尽可能使用已经发布的包,这样可以使用tarball的方式来更新。 在composer.json中指定preferred-install为dist或者更新的时候带上–prefer-dist参数 在提交git/svn之前,删除掉所有.git目录 在项目的.gitignore中加上/vendor/**/.git 为什么我又来发这个了呢,因为我踩到坑了啊,由于使用了private package在composer.json中加了repositories,结果vendor下这些内容都成了submodule,但是远端的并不会更新,所以这是一个很严重的问题。 至于以后的部署问题,我还要再梳理一下。

Selenium 连接一个已有的连接

帮朋友弄个东西,需要先登录,有一个不复杂的验证码,但是上OCR也太重,所以就先起一个driver,然后手工登录之后再连过来进行操作. 先启动一个Driver和Session,并且打印出连接的URL和Session url = driver.command_executor._url #”http://127.0.0.1:60622/hub” session_id = driver.session_id #’4e167f26-dc1d-4f51-a207-f761eaf73c31′ 然后再连接过去 driver = webdriver.Remote(command_executor=url,desired_capabilities={}) driver.session_id = session_id REF: Stackoverflow: Connect to an already running instance of chrome using selenium in python

对新的 Macbook Pro 有点失望

新的 Macbook Pro 发布已经有一小段时间了,接口都统一成了USB-C的样式,新增了一个Touch Bar的功能,外形上基本没有变化。 我现在使用的是Macbook Pro的2012年中版,平时的情况基本满足需求,对我来说目前就是内存和SSD硬盘都有一些吃紧,Touch Bar什么的其实我并不Care,所以要我升级来说主要就是升级内存和SSD,如果说外观上能有一个升级的话,这是加分项。 But,这一次的升级除了Touch Bar之外乏善可陈(Touch Bar其实最有用的是TouchID),而且Touch Bar还去掉了ESC,这对于一个程序员来说是个悲剧,就更不要提那个蝴蝶结构的键盘了。其次就是那个令人诟病的接口了,机身只有4个USB-C,充电、数据传输、外接显示器都得靠这4个全新的接口,所以买回来的第一件事应该是买USB-C相关的各种转接头,这简直就是个悲剧,更悲剧的是Apple这次涨价了。 这样以来对于我来说今年要想更新Macbook Pro就不是一件明智的事情了,要么让我的老Macbook Pro挺一年,要不就是买一个2015款的16/32G内存的版本。我有点希望一个本子有ThinkPad的键盘+Macbook Pro的触摸板和ThinkPad的丰富的接口的机器,起码我不用带一堆配件或者辫子。 记Apple一次失望的Macbook Pro更新,而且饭盒和垃圾桶都没有更新了。我有点离不开的是macOS,虽然它越来越烂了,也需要重启才能解决kernel_task占用过多内存的问题之类的,但是依然是目前能用到的最好的操作系统了。

还是不要全局 .gitignore 了

昨天踩了一个小坑,使用bower安装了一堆的组件进来,我这里是好的,但是同事去构建的时候就不对了。 发现我git commit的时候,jQuery包里的dist目录没有添加进去,进而发现实际是我在很久以前在~/.gitignore里添加了一个dist导致彻底忽略了。 索性就把这个家目录下的.gitignore给删除了,反正都是跟着项目走的,新建git repo的之后添加一个.gitignore就好了。

在Mac上设置一套好用的PHP开发环境

在Mac上工作多年,近1年多写PHP比较多,所以也总结了一点在Mac安装一套好用的PHP开发环境的套路。写出来丢在了Github上,更新了几次,这次给team更换开发环境到Mac的时候也是让大家照这一套来做的,自觉用起来非常顺手,主要的特点是: 全部使用了Homebrew和Homebrew Services来管理软件和服务 环境是 Nginx + PHP-FPM + MySQL,如果有用到Redis和Memcached的地方使用brew install就好了。 新增项目无需修改nginx配置文件 尤其适合Laravel框架 详见Setup Mac Development Envrionment。

我的 Macbook Pro 可能要挂了

新的Macbook Pro发布了,看着一堆的TB3和配件,我觉的我的Macbook Pro还能挺一年。 但是最近我的MBP的耳机插口坏了,这就尴尬了。 于是我把音频输出走了TB到了Dell的显示器上,但是更尴尬的是显示器没有音量控制。 于是我又接了一个功放在显示器上,好惨!

解 git submodule 无映射路径的问题

我们在使用Git submodule 的过程中我遇到的一个问题是执行git submodule update之后会出一个错误 fatal: no submodule mapping found in .gitmodules for path ‘vendor/predis/predis’ 这个问题就是你发现有一个不在.gitmodule文件中的submodule在更新,解决办法就是 git ls-files –stage | grep 160000 这可以看到你所有的Submodule文件,然后 git rm –cached PATH Problem solved. REF: No submodule mapping found in .gitmodule for a path that’s not a submodule