duangsuse::Echo
719 subscribers
4.28K photos
130 videos
583 files
6.5K links
import this:
美而不丑、明而不暗、短而不凡、长而不乱,扁平不宽,读而后码,行之天下,勿托地上天国。
异常勿吞,难过勿过,叹一真理。效率是很重要,盲目最是低效。
简明是可靠的先验,不是可靠的祭品。
知其变,守其恒,为天下式;穷其变,知不穷,得地上势。知变守恒却穷变知新,我认真理,我不认真。

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
Forwarded from Rachel 碎碎念 (IFTTT)
从这个角度就很容易理解了 pic.twitter.com/SrGUeEemlE
— 清凌渡 (@ijse) April 28, 2019
def trimMarks(m):
output = str()
waitClose = False
if len(m) == 0: return output
for i in range(0, len(m)):
char = m[i]
if char == '<': waitClose = True
if waitClose:
if char == '>': waitClose = False
else: output += char
return output

... 我只好手写了,手生... 居然还写了一段时间...
duangsuse::Echo
规范大概是这样: Code 是一个文本图层,包含程式码,目前仅仅创建 VFS 不需要关心其内容 Trace 是一个文本图层,包含变量的追踪 要提供一个 GUI,展示变量列表 List(Label, Textfield) 『同步』操作:利用正则表达式解析所有键值对 (k = v) /(\w+)\s*=\s*(.+)$/ 更新列表 『更新』操作:替换原文本为更新值后的文本 Visual 是可视化图层组,包含所有需要可视化的图层 这些图层的名字做固定处理即可得到相应数据指针的名字 Vals 是不变…
要提供这样的插件接口适配器:

class GimpAccess:
def init(self, gimp = gimp, pdb = gimp.pdb):
def message(self, text):
def layer_root(self):
def layer_is_group(self, layer):
def layer_get_children(self, layer):
def layer_hide(self, layer):
def layer_show(self, layer):
def get_text_layer_marks(self, layer):
def set_text_layer_marks(self, layer):

class VisualGimpAbstraction (GimpAccess):
def layer_get_by_name(name): # private
def layer_get_by_path(path):
def check_layers(): # private
def codeLayer():
def traceLayer():
def visualLayers():
def codePointerLayer():
def pointerLayerOf(layer):
def valLayerOf(name):

class VisualHelper (VisualGimpAbstraction):
def traceMap():

class Helpers: pass
def _trimMarks(m):
Helpers.trimMarkups = _trimMarkUps
依然在编写中...
GimpApi.py
8.2 KB
#Python 程序现在使用的 GimpApi 辅助库可以使用了。除了往常的功能外,还提供了 join stream(generator)、Xml Builder 的功能。如果需要,以后还会写 Xml Parser
真香
GimpApi.py
9.5 KB
更新的 GIMP 脚本编写辅助库
对 GIMP 目前不完善的 text markup 支持添加了 wrokaround,另外支持使用 layer path 访问图层树
duangsuse::Echo
GimpApi.py
下一步可能是支持 GIMP 的导入导出和画布操作功能
可以让 Python 用 GIMP 画画,这样就有更多可能
duangsuse::Echo
规范大概是这样: Code 是一个文本图层,包含程式码,目前仅仅创建 VFS 不需要关心其内容 Trace 是一个文本图层,包含变量的追踪 要提供一个 GUI,展示变量列表 List(Label, Textfield) 『同步』操作:利用正则表达式解析所有键值对 (k = v) /(\w+)\s*=\s*(.+)$/ 更新列表 『更新』操作:替换原文本为更新值后的文本 Visual 是可视化图层组,包含所有需要可视化的图层 这些图层的名字做固定处理即可得到相应数据指针的名字 Vals 是不变…
现在大概差:

GUI 的一个 Listbox(Label, Text) 组件正在使用 Listbox 实现

这个列表的功能大概就是『做一帧程序步骤的时候,把变更的变量修改一下,然后就点一下更新就可以同步到程序视图』

Trace 的更新和同步按钮已经加上了,解析和 dump 也已经完成

Trace 驱动所有的 Visual 箭头指向

Vals 是不变量的图层组,其中每个图层都对照了一个 Visual 里的图层,映射方式是 ("v" + x)
每个 Pointers 项目都对照到了 Visual 里的图层或 Code,映射方式是 ("p" + x.lower() + "s")

更新箭头在加

提供一个『更新箭头』操作,根据指定的『Trace 层』变量名自动显示 Trace 层变量指向(数组下标,从 0 起始)并且隐藏前一个箭头的显示(上次设置的箭头)

上移下移/重置 Code 指针也在进行中
duangsuse::Echo
https://github.com/duangsuse/GimpVisual #GitHub #Python #project
https://github.com/duangsuse/GimpVisual/blob/master/Markup.py

从中抽提出来了 MarkupBuilder,还比较好玩,现在已经支持写带缩进的文档了:

from Markup import MarkupBuilder

def test():
m = MarkupBuilder(2)
m > 'html'
m > 'head'
m > 'title'
m < 'Hello World'
m <= 2
m > 'body'
m > 'text'
with m.tag("b"):
m < 'String'
m >= ['a', {'id': 'str'}]
m < '|sg.'
m <= 4
return m

mark = test()
print(mark.make())
<html>
<head>
<title>Hello World</title>
</head>
<body>
<text>
<b>String</b>
<a id="str">|sg.</a>
</text>
</body>
</html>

不使用缩进也可以

<html><head><title>Hello World</title></head><body><text><b>String</b><a id="str">|sg.</a></text></body></html>

Util.py 里没有二进制处理的函数或者 Maybe, Either, Ap, Functor 什么的,不是很好.... 希望早点写完
duangsuse::Echo
https://github.com/duangsuse/GimpVisual/blob/master/Markup.py 从中抽提出来了 MarkupBuilder,还比较好玩,现在已经支持写带缩进的文档了: from Markup import MarkupBuilder def test(): m = MarkupBuilder(2) m > 'html' m > 'head' m > 'title' m < 'Hello World' m <=…
#CG 虽然我觉得能做出好看的东西才是最好的,比如 CG(
比如《你的名字》的图形混成和特效、3D 建模什么的(

复用的魔力... 居然只是一些画也可以自动做扭曲特效吗?
duangsuse::Echo
https://github.com/duangsuse/GimpVisual/blob/master/Markup.py 从中抽提出来了 MarkupBuilder,还比较好玩,现在已经支持写带缩进的文档了: from Markup import MarkupBuilder def test(): m = MarkupBuilder(2) m > 'html' m > 'head' m > 'title' m < 'Hello World' m <=…
Python 和 Lua 一样,都太灵活了,连类定义方法分派都是那么的... 动态
而且奇怪....
不过习惯了
duangsuse::Echo
https://github.com/duangsuse/GimpVisual/blob/master/Markup.py 从中抽提出来了 MarkupBuilder,还比较好玩,现在已经支持写带缩进的文档了: from Markup import MarkupBuilder def test(): m = MarkupBuilder(2) m > 'html' m > 'head' m > 'title' m < 'Hello World' m <=…
使用 GIMP 的 Python REPL 开发插件在多线程上好像有很严重的问题,不可能直接这么做了

之前一直把开发用的 Tcl/Tk 主事件循环放在 main 上

然而,回来发现这么做导致 gimp 不能即使更新后面的图片显示....

我又单独给 gui 开个线程放事件循环,可是据观察发现那个线程的性能已经低到了可怕的程度... 一个 Tk 按钮要花费 5 秒以上才能被初始化...
duangsuse::Echo
最终导致,一但新增限制,就会造成麻烦。
#Python 嗯,也可以去用 Cython
我也就觉得 CPython 好点的就是强化了 Lua 的元方法设计、FFI、面向对象系统、模块化系统、2D 文法、有 Fiber、Async function
其他的... 我觉得不怎么样
Tcl/Tk 简直有毒... 刚才我才记得 tkinter 创建消息的方法是 event_generate