这个程序自动集成在微软的Windows SDK中,安装vs时自动附带。单独下载地址:https://github.com/blackrosezy/gui-inspect-tool
Python pywin32获取当前所有打开窗口title
import ctypes EnumWindows = ctypes.windll.user32.EnumWindows EnumWindowsProc = ctypes.WINFUNCTYPE(ctypes.c_bool, ctypes.POINTER(ctypes.c_int), ctypes.POINTER(ctypes.c_int)) GetWindowText = ctypes.windll.user32.GetWindowTextW GetWindowTextLength = ctypes.windll.user32.GetWindowTextLengthW IsWindowVisible = ctypes.windll.user32.IsWindowVisible titles = [] def foreach_window(hwnd, lParam): if IsWindowVisible(hwnd): length = GetWindowTextLength(hwnd) buff = ctypes.create_unicode_buffer(length + 1) GetWindowText(hwnd, buff, length + 1) titles.append(buff.value) return True EnumWindows(EnumWindowsProc(foreach_window), 0) print(titles)
同理访问所有内部窗口
def foreach_window(hwnd, param): if IsWindowVisible(hwnd): length = GetWindowTextLength(hwnd) buff = create_unicode_buffer(length + 1) GetWindowText(hwnd, buff, length + 1) titles.append(buff.value) return True win32gui.EnumChildWindows(mainwnd, foreach_window, None) print(titles)
开始以为是app的问题,排查后发现是新版pycharm 有问题。退回2017.3
问题环境是:Flask latest版本,docker-compose运行在远端。flask在pycharm开启debug运行后会卡在第二次reloader中。
其它运行等都没有影响
如果是普通的flask页面profile建议使用WSGI Application Profiler
它会自动分析每一个页面,并profile,内部也是cprofile实现。
针对初始化过程只能手动使用cProfile:
python -m cProfile -o profiling run_web.py
等到初始化完毕再进入python ide:
>>> import pstats
>>> stats = pstats.Stats(‘profiling’)
>>> stats.sort_stats(‘time’).print_stats(10)
这个如果是在debug模式下出现一般是跟reloader特性有关系,WERKZEUG提供的这个特性主要是方便实时监测到开发中修改的文件,比重启app要快很多。但是有的时候我们希望app或者部分代码指启动一遍,可以用下面的环境变量来监测是否是第二次reload中的初始化。
if not app.debug or os.environ.get(“WERKZEUG_RUN_MAIN”) == “true”
组件初始化我们也希望初始化一遍,flask对此有一个专门的事件:
@app.before_first_request
def initialize():
print “Called only once, when the first request comes in”
docker-compose的启动会默认创建一个bridge类型的网络,当然它跟默认的bridge是继承关系。最近升级ide和docker后发现服务之间出现了个现象,服务能ping的通但是别名就不可以。而更改的地方就是网络模式network_mode 设置为了bridge。
原来当使用default bridge network的情况下,docker container使用宿主机的resolv.conf,当然不会解析服务名了。从1.10开始docker对自建的网络默认启用embedded dns,这个dns会自动更新新分配的服务。
docker network create mynet //不指定网络模式时默认是bridge
用mynet替换原先的bridge即可。如果在一个网络内可以用服务名来访问比如ping service_name,如果不是可以通过ping service_name.devnet
docker通常修改 -v /etc/localtime:/etc/localtime就可以修改系统时间,但是mysql日志输出时间还是没变,因为它的时间默认是UTC时间,修改需要更改mysql的配置。增加启动参数:–log_timestamps=SYSTEM
完整示例:
docker run -e MYSQL_ROOT_PASSWORD=root -v /etc/localtime:/etc/localtime:ro -d mysql:5.7 –log_timestamps=SYSTEM
wordpress的升级非常方便,就是不适合国情,之前多试几次总会成功的,最近老是失败,删除了几次lock后发飙了。
对了如果没有安装SSH SFTP Updater Support的话,请先装好他,wp原生的太弱,还不加密,咱升级的重要原因不就是因为漏洞太多么,还没侵入性,因为ssh肯定有啊。win OS请走开,xx空间请走开。
然后就是主角WP-CLI了,这个东西太好了,有了它就算上面的升级失败也有终极方法了,命令行终究是万能的,甩UI几条街。安装请移步:WP-CLI
wp plugin install 插件名
wp core update #wordpress升级
wp language core update #wordpress语言包升级
奇怪的就是这种升级非常快,如果下载慢重来一次,如果实在下载不了可以拷贝下载链接用迅雷下载后直接安装。wp plugin update --all #wordpress 插件升级
wp media regenerate --yes #重新生成wordpress多媒体文件
wp theme update --all #更新所有皮肤文件
#带–allow-root
wp core update --allow-root
wp language core update --allow-root
wp plugin update --all --allow-root #wordpress 插件升级
wp media regenerate --yes --allow-root #重新生成wordpress多媒体文件
wp theme update --all --allow-root #更新所有皮肤文件
PHP7安装mcrypt失败。
最近更新docker镜像发现这个问题,搜索半天居然没有解决,原来从7.1开始mcrypt就被放弃了。因为它的依赖10年前就停止更新了。好吧放弃需要他的组件即可。
此攻略完全原创,没看过他人的攻略,全凭自己的推测和经验。精力有限玩了大概二十局不到一般都进前十,照着攻略走前十没问题,越靠前的规则越重要。前十的攻略较为重要,前五要养成习惯。十条以后就是经验了。