分类 编程 下的文章

electron主进程与渲染进程通信,webview与其加载页间的通信

1:进程间通信

进程间通信使用 ipcMain与ipcRenderer模块,参考:https://www.w3cschool.cn/electronmanual/electronmanual-ipc-main.html ;      https://www.w3cschool.cn/electronmanual/electronmanual-ipc-renderer.html

在主进程使用ipcMain

渲染进程ipcRenderer

在主进程也可以使用以下方式发送消息:mainWindow.webContents.send('saveMessage','delect',index,innerIndex)

webContents从主进程向渲染进程发送消息,查看更多 https://www.w3cschool.cn/electronmanual/electronmanual-web-contents.html .

以下为webContents的send()官方使用介绍

webContents.send(channel\[, arg1\]\[, arg2\]\[, ...\])

channel String

arg (可选)

通过 channel 发送异步消息给渲染进程,你也可发送任意的参数.参数应该在 JSON 内部序列化,并且此后没有函数或原形链被包括了.

渲染进程可以通过使用 ipcRenderer 监听 channel 来处理消息.

例子,从主进程向渲染进程发送消息 :

主进程:

在渲染进程:

2:使用webview控件加载页面时,webview所在页面与被加载页面间的通信

阅读全文

APK无源码调试

这年头,apk全都是加密啊,加壳啊,反调试啊,小伙伴们表示已经不能愉快的玩耍了。静态分析越来越不靠谱了,apktool、ApkIDE、jd GUI、dex2jar等等等等已经无法满足大家的需求了。那么问题就来了,小伙伴们真正需要的是什么?好的,大家一起呐喊出你内心的欲望吧,我们的目标是——“debug apk step by step”。

先来说说那些不靠谱的工具,就是今天吭了我小半天的各种工具,看官上坐,待我细细道来。

阅读全文

requests操作cookies

通过requests读取cookies的使用,我们知道在cookies中我们一般只使用name和value,像domain、path等值都是不需要使用的,而且上面传入cookies字典的例子我们知道,只要保存了cookies中的name和value,无论你以什么样的方式保存,文件、或者数据库等,最后读取出来只要生成对应的字典格式就行了。

下面我们看到requests.utils.dict_from_cookiejar方法,这是requests库提供的一个方法,把上面的RequestsCookieJar对象转换为一个字典(字典里只有name和value),这就是我上面说的,requests库只使用name和value值,而我们selenium中保存的cookies中包含domain、path等信息。

另外还有一个方法requests.utils.cookiejar_from_dict(cookie_dict, cookiejar=None, overwrite=True)这个方法,根据字典生成一个RequestsCookieJar对象,为什么需要这样一个方法呢,可能在上面的应用中有些人会有疑问,我们的cookies是通过get/post方法的参数传进去的,那么在访问其他网页的时候都要去传递这样一个参数吗?这样很不方便而且容易遗忘。看上图的s.cookies变量,它是requests.session对象中的变量,而且是一个RequestsCookieJar类型的对象,那么我们就可以使用这个函数把读取的字典信息转换为RequestsCookieJar对象,然后把值直接设置给s.cookies,就像上面代码里的headers一样,这样就方便很多了吧。

这样cookie即可保持一直有效。

阅读全文

Libgdx重构

解决方案是将字符列表转换为字形列表,然后渲染字形。BitmapFontData,BitmapFont和BitmapFontCache类已被重构以支持这样做。这是它的工作原理:

以下是可能会影响您的更改:

很抱歉,如果您最终需要稍微更改代码,但这样可以使我们在将来拥有适当的字体渲染。HarfBuzz和FreeType可以让我们以任何语言呈现文本,这是一件很大的事情!

但等等,还有更多!许多语言不需要字形整形 - 它们可以使用字符到字形的一对一映射 - 但是它们有一个不同的问题:它们的形式太多,比我们希望适合纹理。这里只有几个解决方案,您需要快速渲染。

将整个句子渲染到图集而不是单个字形是一种方法,但这对于文本输入或文本变化不是很大。像遇到的一样,渲染字形可能是我们能做的最好的。如果字形图集被填满,我们可以添加地图页面(不好用于绘图调用)或清空地图集纹理并重新开始(如果屏幕中包含的字形数超过单个页面,则失败)。

在飞行中渲染字形意味着使用FreeType。我们已经有FreeTypeFontGenerator来使用FreeType生成BitmapFont,但现在可以让它生成一个“增量”字体。当查询尚未呈现的字形的字体时,会将其呈现为字形图集。

顶部的红色框是字形图集页(有目的地做出很小的测试),下面的文本是使用这些字形渲染的。将来可以实现更好的打包(例如,天际线变体),现在它像以前一样使用PixmapPacker。

看看这是否有助于libgdx在中国得到更好的应用,目前cocos2d-x被广泛使用将是有趣的。有趣的是,cocos2d-x似乎对字体渲染使用“标签”方法,其中整个句子呈现给后缀纹理而不是单个字形。

阅读全文

Python脚本开机自启动(Linux)

Python脚本开机自动运行;本帖适用于使用systemd的Linux系统,现在流行的Linux发行版都使用systemd。

后台服务程序是随系统自启动的,我们只要把Python脚本配置为服务就行了。需要注意的一点是你Python脚本的启动时机,它依赖不依赖其他服务(网络连接、一些分区的挂载等等)。

一个你要自启动的Python脚本,我使用 /home/snail/autorun.py为例。

写入如下内容:

上面定义了一个叫 Test Service 的服务,它在multi-user环境起来之后运行;ExecStart参数指定我们要运行的程序;idle确保脚本在其他东西加载完成之后运行,它的默认值是simple。

注意使用绝对路径。

为了获得脚本的输出信息,我们可以重定向到文件:

更改配置文件的权限:

阅读全文