<?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom'><id>https://www.wellobserve.com/?rss</id><updated>2024-01-29T17:10:17+08:00</updated><title>坐井观天网</title><link href='https://www.wellobserve.com/index.php?rss=zh' rel='self'/><link href='https://www.wellobserve.com' /><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><entry><id>https://www.wellobserve.com/?post=20220821113845</id><title type='html'>LaGUI 开发日志</title><link rel='alternate' href='https://www.wellobserve.com/?post=20220821113845' /><published>2022-08-21T11:38:45+08:00</published><updated>2024-01-25T16:05:36+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;h1&gt;LaGUI 开发日志&lt;/h1&gt;
&lt;p&gt;慢慢制作中。。。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;参数改成为Widget了。&lt;/li&gt;
&lt;li&gt;支持了按键和中文输入。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;简化挂件类型带来的问题是没有办法指定默认 Flag。&lt;/p&gt;
&lt;p&gt;可能需要包装成 type{_type, flag} 形式。&lt;/p&gt;&lt;p&gt;enum挂件简化好了，接下来是字符串简化以及各个挂件的边框等。&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20220830180801.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20220830180801.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20220830180801.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;界面脚本看上去不能用lua，但是解析起来必须非常简单：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// 预定义

[c] &amp;lt;c&amp;gt;
[base] &amp;lt;b|e|p|pe|.extra&amp;gt;

//具体写

require &amp;lt;b,e&amp;gt; //创建时要求提供base/uie

- c 0.5 cl cr&amp;lt;(20)&amp;gt;;

i [c] [base|apple&amp;lt;.extra&amp;gt;]&amp;gt;path.what &amp;lt;(text: whatever string; flags: maybe|something; ...)&amp;gt; as [apple];

cond either(eq([stuff]&amp;gt;path.what, 123), not(something));

else;

endcond;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;之后的骨骼和什么的动画参考&lt;a href=&quot;https://learnopengl.com/Guest-Articles/2020/Skeletal-Animation&quot; target='_blank'&gt;这个&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;做。&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;删除了界面实时编辑器。&lt;/li&gt;
&lt;li&gt;新的更精简的主题系统。&lt;/li&gt;
&lt;li&gt;拆分了 &lt;code&gt;la_resources.c&lt;/code&gt; 为多个文件以方便修改。&lt;/li&gt;
&lt;li&gt;之后将颜色拾取器改成了符合srgb的样子。&lt;/li&gt;
&lt;/ul&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20220829181508.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20220829181508.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20220829181508.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;ui和从数据接口获得基本数值的应总是假定为阵列（对于int/float/&lt;del&gt;bool&lt;/del&gt;/enum）。&lt;/p&gt;
&lt;p&gt;udf区分了阵列和单值，后面再来改。&lt;/p&gt;&lt;p&gt;考虑了节点细节，暂定这样实现：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;面板显示为多列，每列为一个 Rack/Bank 并且允许分开刷新。画图时仍然画在面板自己的 FBO 上，清空时只清自己的区域。&lt;/li&gt;
&lt;li&gt;连线通过Overlay重新画在主缓冲区上就不会干扰子区域内容，需要个新的延后叠加函数。&lt;/li&gt;
&lt;li&gt;上下移动可能需要靠一个上下移动挂件在顶部和列表中间，其作用是将下面的挂件向下靠。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;主要的指导思想是：界面在使用时不需要将逻辑连接方式完全呈现在界面上，例如仪表台总是在背面接线。&lt;/p&gt;&lt;p&gt;暂定挂件模版的处理方式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;应使用专用简易界面脚本进行运行时修改和编辑并同样使用目前的界面模版保存。手动点击整理并运行模版而不在键入时自动操作。&lt;/li&gt;
&lt;li&gt;模版显示在面板上通过 &lt;code&gt;SubProp&lt;/code&gt; ，因此模版也可以嵌套小模版。&lt;code&gt;ui-&amp;gt;PP&lt;/code&gt; 只需一个提供给复合挂件，因为希望复合挂件自包含，若挂件需要其他可变配置则通过 &lt;code&gt;UiE&lt;/code&gt; 记录呈现（针对独立界面元素的显示等）。&lt;/li&gt;
&lt;li&gt;模版可以一键导出为适用于放置入 C 程序的初始化代码。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;节点和全局时间线可能需要删除，以实现一个统一的驱动系统。节点通过面板选择栏目并以 &lt;code&gt;SubProp&lt;/code&gt; 的方式即可显示，连线呈现为 VCV RACK 的类似覆盖样式。被驱动属性的挂件不显示连线，连线的节点是驱动系统节点需要显示的。&lt;/p&gt;
&lt;p&gt;这样基本能保证修改最少而且保存了灵活度。&lt;/p&gt;&lt;p&gt;好的新主题系统算是可以了。去掉了驱动和帧显示，这块要在精简挂件类型后重新设计状态。&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20220826114105.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20220826114105.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20220826114105.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;主题的精简原则上只保留少数几个主要颜色。若需要样式丰富的挂件则面板应有抗锯齿否则几何符号和圆角画起来困难（一些几何符号可以用unicode符号字代替）。应重新考虑主要挂件的样式。&lt;/p&gt;
&lt;p&gt;颜色选择框半边要有透明度。&lt;/p&gt;
&lt;p&gt;应精简数值挂件类型，去掉单数值挂件，使用长度为一的阵列作为单数值，数据后台是否能做类似修改尚不清楚，因为二者文件写法似乎不一样。原则上可以直接删掉单数值的接口，同时把现有单数值的接口都改了（可能现有的还很多）。&lt;/p&gt;&lt;p&gt;需要的布局和可指定在通用挂件上的特征：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;边框留白宽度（主题和覆盖）&lt;/li&gt;
&lt;li&gt;面板和区域不带滚动条&lt;/li&gt;
&lt;li&gt;文字对齐方向&lt;/li&gt;
&lt;li&gt;无边框视觉&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;可能可以在面板、列表和挂件上添加一个一般标志量来解决这个问题。&lt;/p&gt;&lt;p&gt;替换为直接使用Unicode符号图标，基本可以正常工作。&lt;/p&gt;
&lt;p&gt;原则上还需要再考虑是否要求显示字符直接以宽字符提供，但是目前来看 &lt;code&gt;ExtraInstructions&lt;/code&gt; 的解析尚未遇到中断，所以暂时先这样。&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20220824205457.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20220824205457.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20220824205457.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;图标和emoji基本上能解决了，需要分类生成个字符头文件表才好找，可能不需要子类型，但是至少需要block。&lt;/p&gt;
&lt;p&gt;另需要3个noto符号字体才能涵盖所需区域。&lt;/p&gt;&lt;p&gt;还需要：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;规范化 &lt;code&gt;ExtraInstructions&lt;/code&gt;。之后通过这个来指定挂件外观自定义参数。&lt;/li&gt;
&lt;li&gt;文件读写初步恢复。&lt;/li&gt;
&lt;li&gt;找图标字体并生成为定义。&lt;/li&gt;
&lt;li&gt;精简数值阵列的挂件。&lt;/li&gt;
&lt;li&gt;键盘事件和文本框/数字框的输入检查。&lt;/li&gt;
&lt;li&gt;应当检查关键帧图表绘图并检查动画系统的适用情况。&lt;/li&gt;
&lt;li&gt;行布局。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;节点也可以了，虽然暂时不知道有什么用……&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20220821223414.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20220821223414.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20220821223414.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;鼠标事件和操作等等正常了。&lt;/p&gt;
&lt;p&gt;还有些没对的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;文件那套还没迁移&lt;ul&gt;
&lt;li&gt;最后应该要做成先写内存然后一步写主文件，读也一样。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;边框位移&lt;/li&gt;
&lt;li&gt;刷新定时不对&lt;/li&gt;
&lt;li&gt;关键帧等各个系统精简&lt;/li&gt;
&lt;li&gt;面板尺寸调节&lt;/li&gt;
&lt;li&gt;面板最好可以手提浮动和固定&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;总得来说要把整个布局系统精简并且要求有横排和撑尺寸的能力。现在这个太丑了。&lt;/p&gt;

&lt;p&gt;之前有个&lt;a href=&quot;?post=20211212010220&quot; onclick='ShowWaitingBar()'&gt;老的截图&lt;/a&gt;&lt;/p&gt;
&lt;div class='p_row'&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20220821113842.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20220821113842.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20220821113842.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20220821154050.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20220821154050.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20220821154050.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;又全部改回了多字节字符串，改用自己的unicode/utf8转换。&lt;/p&gt;
&lt;p&gt;从属性验证的结果看，要求Hyper2下不能链接Hyper2也不太实际。可能要求存取时仅支持从首级Hyper2实例开始，但这仍然不能解决部分结构改变后重新读取时产生可能冲突的问题。这么来看，Hyper2似乎总是只能是资源并且在任何情况下都不能嵌套。&lt;/p&gt;&lt;p&gt;资源式的UDF索引表基本上可以了，也可以排除重复的。&lt;/p&gt;&lt;p&gt;需要为PropContainer指定删除回调，但是加载时应优先覆盖带有同样id的。非id式的应删掉。&lt;/p&gt;&lt;p&gt;基本上明确了DBInst和撤销的行为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;mem获得节点时直接将使用节点挂载到DBInst表上。&lt;/li&gt;
&lt;li&gt;读取UDF时获得的节点用先分配，之后通过读到的UID挂到DBInst表上。&lt;/li&gt;
&lt;li&gt;撤销栈用与文件类似（？）/相同的结构（由于线性写）。完整版总是保留最近的，而差分则向前指。&lt;/li&gt;
&lt;li&gt;不保留实际数据块指针，重做时用读文件的相同的方法进行指针重匹配（但是这个匹配关系需要维护为常在因为引用可以存在于多个撤销步）。&lt;ul&gt;
&lt;li&gt;PtrSync需要有起止范围，指定为撤销步数而不是引用以避免删除步数时检查。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;UDF读写单个实例的功能 &lt;del&gt;指针匹配有问题。&lt;/del&gt; 开头的问题是&lt;code&gt;memHead::nuid&lt;/code&gt;的旧写法导致了一些问题，&lt;del&gt;但是还没有完全解决。&lt;/del&gt; 还是，已经解决了。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;DBInst&lt;/code&gt;的运行方式对于目前计划的方案可能过于复杂且需要修改。&lt;/li&gt;
&lt;li&gt;现在可以追加数据块但不能按UID替换/修改已有（该行为目前仅适用于&lt;code&gt;UDFNoCreate&lt;/code&gt;对象），需要探讨行为（追加时改名/修改已有/追加已有子集？）。&lt;/li&gt;
&lt;li&gt;尚未做单列表多类节点支持。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;读取主题以及UID型引用、资源型引用匹配正确。&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20220928143859.mp4' target='_blank' onclick='event.preventDefault();'&gt;&lt;video controls data-imgsrc='20220928143859.mp4'&gt;&lt;source src='images/20220928143859.mp4' type='video/mp4'&gt;&lt;/video&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;全自动撤销也有些具体的问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;udf在内存中的布局可以直接作为撤销的一个差分。因为需要自动化则初始文件需要常在（此时每个差分可以做到比较小）。&lt;/li&gt;
&lt;li&gt;理论上所有已注册为PropContainer支持的实例都应该放在对应的PC下（实在数据和垃圾桶）。&lt;/li&gt;
&lt;li&gt;PointerRecord可以不删？并且建实例的时候自动加进去？&lt;/li&gt;
&lt;li&gt;理论上在丢到垃圾桶/撤销栈时就要调用&lt;code&gt;DataBlockNoLongerExists&lt;/code&gt;以清除引用，此时应手动推进去相关的状态，之后的新加入的状态不存在对这个玩意的引用，因此这个状态删掉的话，也不需要考虑再次清除潜在引用的事情。这些都基于地址而不是uid因为是运行时。&lt;/li&gt;
&lt;li&gt;实现起来比较麻烦的就是实例列表的diff，原理上也行的，因为实际用途中无非也就是几个列表，它们没有界面状态需要联合。&lt;/li&gt;
&lt;li&gt;然后再说了。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;udf储存行为？&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;基本行为：指定一个属性路径，写属性到文件。&lt;/li&gt;
&lt;li&gt;指定属性和部分实例？&lt;del&gt;是否需要指定文件具备强制的从属关系？开启从文件时读/不读主文件？&lt;/del&gt;&lt;ul&gt;
&lt;li&gt;一个关键的特点：若不允许分离保存，则所有的从属块只能保存在一个文件，而所有的可被分离共享引用的都存在于分离的文件，这使得情况简化：&lt;strong&gt;不需要制作带有父子关系的分离保存支持，分离保存的都没有重叠或包含的部分（但是指针引用可以是任意的）&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;这应该也允许仅引用共享资源块中某个子块的场景，若存在这种情况，仍然需要完全读入该子块的文件。&lt;/li&gt;
&lt;li&gt;这种情况下应该也允许局部追加（因此应当需要能载入部分实例，但是在自动读关联时是否这么做还待研究）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;暂时要求的udf行为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可设置uid用于在共有资源中统一引用（改名之后就不行了）。&lt;/li&gt;
&lt;li&gt;主资源在执行根目录往下的各个都行，结构可以随意改，通过资源文件夹/执行根目录中初始化的&lt;code&gt;.manifest.udf&lt;/code&gt;可以了解可访问到的所有资源。&lt;/li&gt;
&lt;li&gt;需要&lt;code&gt;manifest selector&lt;/code&gt;挂件以从列表中选择文件来加载并设为激活。&lt;/li&gt;
&lt;li&gt;manifest表放置在每个PropContainer下面即可。&lt;/li&gt;
&lt;li&gt;打开的工程文件的下属目录中也搜索udf并生成表，同名的覆盖掉初始的。&lt;/li&gt;
&lt;li&gt;读文件前先读文件夹下的manifest（这些可以限制只读一层或者提供邻近最大搜寻文件数限制，或者是文件夹名字），找完所有需要的udf之后一起将&lt;del&gt;所有文件整体&lt;/del&gt;引用到的块读进来。&lt;ul&gt;
&lt;li&gt;&lt;del&gt;这是否要求一个引用了许多文件的工程需要一次性把所有的全读了？&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;由于每个文件存在uid地址因此似乎可以选择性读取。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;应该_不能_只读局部或者只读单文件而不读关联。在“将局部储存为可复用的模块”时应在写入时自动删除其引用的外部uid。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;这里还有个问题是资源性引用的行为尚不明确。目前的UID方法不能直接适应部分共享块，例如另一个用户创建的飞行器模型引用了双方共有的翼型。&lt;/p&gt;
&lt;p&gt;将uid改为可自定的id可能是可行的，即使这样还是需要想好仅读取部分文件时的行为（因为要是全部读取那总是能够匹配的）&lt;/p&gt;&lt;p&gt;想了半天还是去掉数据块作者信息记录，只保留UID和时间。作者可以记录成一个非引用的短字符串，这样就兼容UDF读写的特性。检查了UID列表和数据记录的seek关系似乎没有问题，因此这样一来似乎不需要专门重写一个memfile，在现有的基础上优化即可。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;HyperData-&amp;gt;Linked&lt;/code&gt; 可能应改为指向链接进来的UDF这样理论上可以协同修改和选择性保存。UDF的根实例列表应该可以用来做这个事情。&lt;/p&gt;&lt;p&gt;单列表多类正确了（由于GetPropPath的限制，只允许通过模版访问多类）。&lt;/p&gt;
&lt;p&gt;需要：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;模版优先级。&lt;/li&gt;
&lt;li&gt;检查 &lt;code&gt;GetActiveInstanceStrict&lt;/code&gt; 的适用性，可能需要用另外的方式指定 sub prop&lt;/li&gt;
&lt;/ul&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20220923225103.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20220923225103.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20220923225103.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;应当将Users放到memhead里面，这样节点本身就不需要那么复杂。&lt;/p&gt;
&lt;p&gt;带hyper，不带，和假吧意思的分配要分开。&lt;/p&gt;
&lt;p&gt;基本上好了但是类似全局变量这些的用户引用不适用于现在这个方法，这种只有特殊放到container里面去（正常工作了）&lt;/p&gt;
&lt;p&gt;接下来需要做单列表多类，然后是新状况下的读写以及指针匹配。&lt;/p&gt;&lt;p&gt;界面现在可以调了，自动适应菜单面板的尺寸。&lt;/p&gt;
&lt;p&gt;面板标题长度没刷新&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20220921222335.mp4' target='_blank' onclick='event.preventDefault();'&gt;&lt;video controls data-imgsrc='20220921222335.mp4'&gt;&lt;source src='images/20220921222335.mp4' type='video/mp4'&gt;&lt;/video&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;新的精简的贴图系统基本上可以了，&lt;del&gt;偶尔有绑定贴图状态未刷新的情况，需要检查。&lt;/del&gt; 是绑定目标不匹配的问题。&lt;/p&gt;
&lt;p&gt;需要：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;动态增长的绘图命令与图元列表。&lt;/li&gt;
&lt;li&gt;字体贴图也做成自动增长的为好。&lt;/li&gt;
&lt;li&gt;几个读写的哈希也启动时分配为好。&lt;/li&gt;
&lt;/ul&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20220921123549.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20220921123549.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20220921123549.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;改成3.3以上的。。。好像的确需要一个VAO&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20220919141108.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20220919141108.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20220919141108.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;更加优化的主题、顶栏、面板分离属性&lt;/p&gt;
&lt;p&gt;面板分离属性在改成 &lt;code&gt;UsePropPack&lt;/code&gt; 之后好像出问题了……&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20220917210831.mp4' target='_blank' onclick='event.preventDefault();'&gt;&lt;video controls data-imgsrc='20220917210831.mp4'&gt;&lt;source src='images/20220917210831.mp4' type='video/mp4'&gt;&lt;/video&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;gamma 好像还是没搞对但是先将就咯&lt;/p&gt;&lt;p&gt;界面功能上主要就还差多行文字和行式布局（用begin/end方式，不嵌套新行）。行做了。&lt;/p&gt;
&lt;p&gt;这两个完成后再来做多列以及面板可选实例。&lt;/p&gt;&lt;p&gt;之前看过的一个带有有趣的可旋转控件的那个玩意是 &lt;a href=&quot;http://anttweakbar.sourceforge.net/doc/&quot; target='_blank'&gt;AntTweakBar&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt; :D&lt;/p&gt;
&lt;p&gt;啊 基本上这个阶段的修改的差不多了。&lt;/p&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20220913183542.mp4' target='_blank' onclick='event.preventDefault();'&gt;&lt;video controls data-imgsrc='20220913183542.mp4'&gt;&lt;source src='images/20220913183542.mp4' type='video/mp4'&gt;&lt;/video&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;感觉仅限于单个 &lt;code&gt;layout&lt;/code&gt; 的浮动面板没什么用，应当删掉。删了&lt;/p&gt;&lt;p&gt;为保证多类型节点显示简洁可行，需要有&lt;code&gt;gettype&lt;/code&gt;和&lt;code&gt;getui&lt;/code&gt;两种回调共同工作。（这使得文件读写在这块需要进一步修改）&lt;/p&gt;
&lt;p&gt;依靠节点实现的各种，属于程序内部自身的行为，就不使用数据接口来完成了。&lt;/p&gt;&lt;p&gt;需要：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;laSafeString&lt;/code&gt; 做成不限长度动态分配的。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;memAcquire&lt;/code&gt; 做成按尺寸和分配数量自动增加池总数的。&lt;/li&gt;
&lt;li&gt;字串属性做 &lt;code&gt;getlength&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;做模版上下文和 &lt;code&gt;gettemplate&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;还有个多列怎么做的问题，除了行方向排列，还有个问题就是如何方便地上下左右移动。拖动似乎很不好处理。 另外似乎这种分布式列表不是很好布置一个全局的横线分隔。&lt;/p&gt;
&lt;p&gt;（至于每列内部可以添加专门的高度分隔挂件，操纵起来稍微麻烦但是写起来简单，视觉上可以理解为填充未使用主板插槽的空白铝片。）&lt;/p&gt;&lt;p&gt;此外，“数据源选择框”可能可以隐藏，即只显示集合实例对象，数据源可能可以通过初始挂件选择，之后通过上下文菜单（和/或一个很小的浮动按钮）可以切换。&lt;/p&gt;
&lt;p&gt;这样一来通过属性树的自定义界面基本就可以不通过任何控件编辑器实现了。&lt;/p&gt;&lt;p&gt;目前还有的问题就是多面板实例选择查看。可能到最后仍然需要一个实例选择挂件放在最前面，但似乎没有发现这种设计有明显的用途。若仍然以飞行模拟器仪表的多切换为使用场景（即可以选择查看哪一个数据源），需要在不同面板同时显示同类不同数据源信息的情况仍然很少。&lt;/p&gt;
&lt;p&gt;之前的分析认为，控件动态布局似乎应由应用程序实现为rack并以集合的形式显示，但显然目前的集合控件不允许类型混排，这使得节点挂架本身的实现也变得复杂这时此前没有注意到的。提供一个实例类型回调似乎可以简化这种状况（此时列表中不同类型的实例可以调用不同类的模版或者挂件），这时不同面板可以在一开始选择目标实例动态显示控件组。&lt;/p&gt;
&lt;p&gt;这个“选择数据源”操作在界面上，但好像也一直需要。目前已有的实现还需要检查集合属性的刷新事件，其在何种情况下标记只重绘或者重计算尚没分清楚。&lt;/p&gt;
&lt;p&gt;如果要实现多类型集合属性，则又有如何指定挂件类型的新问题。&lt;/p&gt;
&lt;p&gt;理论的最小修改：父挂件提供一个上下文编号，集合属性提供一个获得实例模版的回调，带有上下文编号参数。这样允许在不同地方提供不同的挂件模版。&lt;/p&gt;&lt;p&gt;如果之后要有声音支持则可以考虑rayaudio或者&lt;a href=&quot;https://miniaud.io/index.html&quot; target='_blank'&gt;Miniaudio&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;。 另参见rfx和&lt;a href=&quot;http://www.drpetter.se/project_sfxr.html&quot; target='_blank'&gt;sfxr&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;的简易音效发生器实现。&lt;/p&gt;&lt;p&gt;问题：&lt;/p&gt;
&lt;p&gt;没有想好挂件布局自定义的自由度级别。由于存在条件判断挂件，完全可视化调节就不方便。带有标签页的面板停靠布局用作显示动态切换似乎足够表示相当多的需要换页的情况。&lt;/p&gt;
&lt;p&gt;目前初步认为，应不提供直接修改面板和单个挂件的接口，但允许修改面板和属性包的模版，同时在终端应用程序中只允许按照模版添加面板，同时也可以创建新的面板模版并以脚本方式编辑。这种情况下，原始的挂件对象创建接口似乎多余，但可以保留以更直接地制作更简单的应用程序，&lt;del&gt;内部转换为模版不一定可行，最好的方法是从模版开始创建，而&lt;/del&gt;启动时的指令用于生成原始布局，之后布局也可以从文件等读取。&lt;/p&gt;
&lt;p&gt;直接创建的函数可以用，应该设计为要求运行在直接模式下。若未要求则运行在模版模式，此时直接创建函数将放在面板模版里，初始化时只填充布局。（也可以方便起见在即时生成后自动以面板名字创建为模版以供之后添加）&lt;/p&gt;
&lt;p&gt;这种情况下界面储存和再加载是否通过UDF实现还不清楚。&lt;/p&gt;&lt;p&gt;似乎屏幕缓冲区不可以绑定为贴图……&lt;/p&gt;&lt;p&gt;基本上对的，字符编辑，不带选中的，上下左右换行退格都可以了。&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20220902205641.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20220902205641.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20220902205641.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;需要：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;移除 2dContainer，改为通用ui列表。&lt;/li&gt;
&lt;li&gt;提供 &lt;code&gt;GetStringLength&lt;/code&gt; 函数。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;G/S/R和全局轴限制基本上可以了&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20221031221535.mp4' target='_blank' onclick='event.preventDefault();'&gt;&lt;video controls data-imgsrc='20221031221535.mp4'&gt;&lt;source src='images/20221031221535.mp4' type='video/mp4'&gt;&lt;/video&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;框选可以了，稍改进批绘图命令。&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20221029171843.gif' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/20221029171843.gif&quot; alt=&quot;图片&quot;  data-imgsrc='20221029171843.gif'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;需要 &lt;code&gt;LA_UDF_RAW&lt;/code&gt; 形式的数据供保存和撤销。&lt;/p&gt;&lt;p&gt;现更有GL选择！&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20221028213836.gif' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/20221028213836.gif&quot; alt=&quot;图片&quot;  data-imgsrc='20221028213836.gif'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;节点支持的一系列基本上可以了，有点小问题慢慢改好&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20221026174914.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221026174914.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221026174914.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;多窗口也正常了。&lt;/p&gt;
&lt;p&gt;可以开始写文档了。&lt;/p&gt;
&lt;p&gt;改进的文字编辑，悬空提示和详细信息，文件管理，更好的全屏等。&lt;/p&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20221021213250.mp4' target='_blank' onclick='event.preventDefault();'&gt;&lt;video controls data-imgsrc='20221021213250.mp4'&gt;&lt;source src='images/20221021213250.mp4' type='video/mp4'&gt;&lt;/video&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;现在会阴影了。&lt;/p&gt;
&lt;p&gt;着色器和贴图等等一系列的东西要改的来更好用才行，需要避免几个贴图冲突。&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20221019152716.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221019152716.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221019152716.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;现在单片面的片段XY从视角到视线应该是正确的了。显示的是FOV圈。&lt;/p&gt;
&lt;p&gt;应计算为(0,0,-1)的变换，之后在ShaderToy找到个RayMarch的着色器，能够正确显示，经检查，尺寸正确匹配，因此可以继续用这个基础做合成渲染。&lt;/p&gt;
&lt;div class='p_row'&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20221018210017.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221018210017.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221018210017.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20221018220517.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221018220517.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221018220517.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20221018221351.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221018221351.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221018221351.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;现支持折叠标题、扩大单个区域，以及画布控件真全屏。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;扩大和全屏的时候应该删掉不用的FBO，再说咯。&lt;/li&gt;
&lt;/ul&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20221017174219.mp4' target='_blank' onclick='event.preventDefault();'&gt;&lt;video controls data-imgsrc='20221017174219.mp4'&gt;&lt;source src='images/20221017174219.mp4' type='video/mp4'&gt;&lt;/video&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;优化了储存逻辑和显示，重新整理了内部画布的流程等，并新增了个简单的贴图检查工具。&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20221016221537.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221016221537.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221016221537.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;分文件保存的逻辑可以了，自动检测需要保存的文件全部写入。&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20221015213833.mp4' target='_blank' onclick='event.preventDefault();'&gt;&lt;video controls data-imgsrc='20221015213833.mp4'&gt;&lt;source src='images/20221015213833.mp4' type='video/mp4'&gt;&lt;/video&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;储存管理的界面以及一个新的控制台，实现了等宽字符，字都改成动态分配的了，同时等宽尺寸按照汉字的一半。&lt;/p&gt;
&lt;div class='p_row'&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20221014231138.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221014231138.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221014231138.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20221014231156.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221014231156.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221014231156.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;基本上设计好了文件管理方式，另外现在Hyper2可以自动记录修改。需要读写覆盖的数据尽量用Hyper2，部分简单的只供追加而不共享引用的可以不用。&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20221013222715.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221013222715.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221013222715.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;底层基本上能够正确跑了，接下来的功能：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自动部分读资源文件&lt;/li&gt;
&lt;li&gt;读写的与新的列表结构兼容性检查。（读写还没有动态类型）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;界面的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可折叠的面板头部&lt;/li&gt;
&lt;li&gt;可撕下来的根面板&lt;/li&gt;
&lt;li&gt;按列的ui列表&lt;/li&gt;
&lt;li&gt;扩展尺寸的控件&lt;/li&gt;
&lt;li&gt;可全屏的面板&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;好了李论上撤销已经正常工作了，接下来只需要做那个中途开始做的清理即可。&lt;/p&gt;&lt;p&gt;subprop行为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;全0/给offset：指针&lt;/li&gt;
&lt;li&gt;给LOCAL：偏移（给别的都丢掉LOCAL）&lt;/li&gt;
&lt;li&gt;给SINGLE：指针创建&lt;/li&gt;
&lt;li&gt;只给list则视为表&lt;/li&gt;
&lt;li&gt;给Get则丢掉list (只有Get的视为SINGLE，有next的默认忽略撤销/储存）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样储存时也只需要表或者单一Get一个。自定义的Get表只适用于用户界面。&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;删除Append回调，并使用PostRead/PostReadIM/SelfFree来支持读取和撤销/重做。&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;
&lt;li&gt;仅为撤销记录 块+PC似乎可行，而不需要结构化。实例列表差分在 P 下面，而且只记录引用差别。&lt;/li&gt;
&lt;li&gt;应当删除对 &lt;code&gt;UseLinkItem&lt;/code&gt; 的支持以更好地兼容指针反引用的特点。&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;
&lt;li&gt;所有引用形式的指针需要反引用。在使用时统一用指针使用接口，在set时也在内部调用，这使得删除数据块时自动解除引用（在添加用户时提供回调，同时也在数据块删除处提供另一个），也可以满足撤销和重做的场景。记录时要记录删除回调之前之后的（因为用户可能不将指针置为0）。&lt;/li&gt;
&lt;li&gt;不允许Hyper2下挂Hyper2。&lt;/li&gt;
&lt;li&gt;Hyper2下加可读标识，UID不变。&lt;/li&gt;
&lt;li&gt;资源在读任意UDF时候追加资源目录下的，不删除。关联需要用户自己储存的时候注意。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;可以存取用户设置和输入映射了&lt;/p&gt;
&lt;p&gt;同时插座现在可以显示标签&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20221117215154.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221117215154.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221117215154.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;可以驱动物体了&lt;/p&gt;
&lt;div class='p_row'&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20221114204715.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221114204715.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221114204715.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20221114213721.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221114213721.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221114213721.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;DAG 应该也正常了，做了一个映射网。&lt;/p&gt;
&lt;div class='p_row'&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20221110223826.mp4' target='_blank' onclick='event.preventDefault();'&gt;&lt;video controls data-imgsrc='20221110223826.mp4'&gt;&lt;source src='images/20221110223826.mp4' type='video/mp4'&gt;&lt;/video&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20221110224324.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221110224324.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221110224324.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;基本操作都可以了，还差：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;局部变换&lt;/li&gt;
&lt;li&gt;光标&lt;/li&gt;
&lt;li&gt;环切&lt;/li&gt;
&lt;li&gt;导角&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但这些都可以后面再慢慢做。&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20221109212909.gif' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/20221109212909.gif&quot; alt=&quot;图片&quot;  data-imgsrc='20221109212909.gif'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;可以选择边了，因此可能可以做那个什么环切了。&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20221108173707.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221108173707.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221108173707.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;目前退出时候的问题应该主要是删除撤销时的状态与目前的状态不符。鉴于内存都使用mem建立，可以不要这一步。&lt;/p&gt;&lt;p&gt;更新了memLeave的行为，现在能在两次撤销之间添加并删除那些将不存在于前一个和后一个状态的内存节点了（只要都使用memLeave），此时可以兼容多步修改、手工和带有/不带撤销的修改。&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20221107225428.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221107225428.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221107225428.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;面板由于自动用户无法干净删除，使其在关闭后可能导致停机。（&lt;del&gt;好了修好了，现在删的特别干净23333&lt;/del&gt; 其实还是没有。。。应当用面板保留节点然后最后退出时统一删面板节点不然目前的PropPack更新行为意味着无法删除所有用户（行了就是这么修的就这样吧））&lt;/p&gt;&lt;p&gt;撤销又改改改改改然后最后还是要撤销系统保留所有指针不释放因为半途释放会有重复地址造成的模糊问题（并且此时仅使用指针生命期则无法判别）。&lt;/p&gt;
&lt;p&gt;另外支持了RAW撤销和重做。&lt;/p&gt;&lt;p&gt;去掉了Scene，直接用RootObject，基本上又恢复正常工作了。&lt;/p&gt;
&lt;p&gt;需要将键位处理成能够ThisCall的。&lt;/p&gt;&lt;p&gt;映射图挂件的撤销有问题&lt;/p&gt;&lt;p&gt;Win 的大多数功能基本上能跑了&lt;/p&gt;&lt;p&gt;Win下的窗口什么的可以了，还有输入设备和文件等等一堆小东西不行。&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230120000838.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230120000838.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230120000838.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;Win下支持了WinTab&lt;/p&gt;&lt;p&gt;修复了拆面的拓扑错误问题（应该没事了）&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230320210316.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230320210316.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230320210316.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;修复了合并网格物体的面引用问题。&lt;/p&gt;&lt;p&gt;目前有些问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;没有统一的物体复制功能&lt;ul&gt;
&lt;li&gt;节点没有复制（用Prop/UDF复制似乎很麻烦）（好了现在用节点自己复制了）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;删除驱动页功能（可以了）&lt;/li&gt;
&lt;li&gt;再加上启动时的模块注册参数，然后再做成引擎&lt;/li&gt;
&lt;li&gt;然后再是实例状态匹配树&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;（当然工具都是要有撤销的）&lt;/p&gt;&lt;p&gt;实例器做好了，包括固定分离实例等改变。&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230426205416.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230426205416.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230426205416.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;做了Holder和 &lt;code&gt;__actions__&lt;/code&gt; 列表还有 &lt;code&gt;verify&lt;/code&gt; 现在应该可以了 &lt;/p&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230422194843.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230422194843.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230422194843.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;动画数据的储存怎么操作还不清楚。目前的状况似乎要求每个Action挂在某个ID块下面，同时不允许储存别的ID块下面的属性。界面上怎么实现不清楚，因为它应该不能简单地就放在3d物体下。&lt;/p&gt;&lt;p&gt;基本上逻辑是通的了&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230417230519.mp4' target='_blank' onclick='event.preventDefault();'&gt;&lt;video controls data-imgsrc='20230417230519.mp4'&gt;&lt;source src='images/20230417230519.mp4' type='video/mp4'&gt;&lt;/video&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;新！非绝对帧的动画系统有一个基本的UI了。&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230416215222.mp4' target='_blank' onclick='event.preventDefault();'&gt;&lt;video controls data-imgsrc='20230416215222.mp4'&gt;&lt;source src='images/20230416215222.mp4' type='video/mp4'&gt;&lt;/video&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;简易合并也可以了。&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230415151534.mp4' target='_blank' onclick='event.preventDefault();'&gt;&lt;video controls data-imgsrc='20230415151534.mp4'&gt;&lt;source src='images/20230415151534.mp4' type='video/mp4'&gt;&lt;/video&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;透选也可以了&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230414213103.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230414213103.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230414213103.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;环切和链式/环式选择基本也可以了。&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230413215816.mp4' target='_blank' onclick='event.preventDefault();'&gt;&lt;video controls data-imgsrc='20230413215816.mp4'&gt;&lt;source src='images/20230413215816.mp4' type='video/mp4'&gt;&lt;/video&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;切割工具似乎可以了&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230413162538.mp4' target='_blank' onclick='event.preventDefault();'&gt;&lt;video controls data-imgsrc='20230413162538.mp4'&gt;&lt;source src='images/20230413162538.mp4' type='video/mp4'&gt;&lt;/video&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;优化了主题留白尺寸细节，以及行布局尺寸管理。&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230412160242.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230412160242.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230412160242.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;合并物体的撤销有问题（修了，用maxf作为参考长度，可能行了）&lt;/p&gt;&lt;p&gt;示波器&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230526182631.mp4' target='_blank' onclick='event.preventDefault();'&gt;&lt;video controls data-imgsrc='20230526182631.mp4'&gt;&lt;source src='images/20230526182631.mp4' type='video/mp4'&gt;&lt;/video&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;把小房子引擎的音频合成移动到了lagui这样可以统一管理&lt;/p&gt;&lt;p&gt;现已在 Linux 和 Windows 上支持wacom笔杆旋转！&lt;/p&gt;&lt;p&gt;Tab 最好要有竖置标签&lt;/p&gt;&lt;p&gt;整理了界面一些问题，修了 GL Context ，然后还要检查面板放置和尺寸确认时是否有重复工作，还有windows下GL调试不遵守过滤的问题。&lt;/p&gt;&lt;p&gt;此外使用 &lt;code&gt;glDebugMessageCallback&lt;/code&gt; 即可调试错误和性能信息。&lt;/p&gt;&lt;p&gt;从这里来看VAO和FBO似乎是不共享的，看来需要每个窗口绑定一次。&lt;/p&gt;
&lt;p&gt;这可以解释今天在NV卡上的闪烁行为。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://community.khronos.org/t/sharing-contexts/73563/2&quot; target='_blank'&gt;https://community.khronos.org/t/sharing-contexts/73563/2&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;音频设备选择&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230726203300.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230726203300.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230726203300.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;单实例在撤销丢弃时似乎是没有删掉的，好像没有针对这个的机制。需要检查。&lt;/p&gt;&lt;p&gt;大流程 然后完善了一些东西&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230829220329.mp4' target='_blank' onclick='event.preventDefault();'&gt;&lt;video controls data-imgsrc='20230829220329.mp4'&gt;&lt;source src='images/20230829220329.mp4' type='video/mp4'&gt;&lt;/video&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;原来glShaderSource可以指定多个连在一起。。。&lt;/p&gt;&lt;p&gt;程序纹，但是暂时还不能驱动，也没有运行复制。&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230828174358.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230828174358.jpg&quot; alt=&quot;Images&quot;  data-imgsrc='20230828174358.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;多个实例应该也正常了，只编译一次脚本&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230820165144.mp4' target='_blank' onclick='event.preventDefault();'&gt;&lt;video controls data-imgsrc='20230820165144.mp4'&gt;&lt;source src='images/20230820165144.mp4' type='video/mp4'&gt;&lt;/video&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;可以通过 &lt;code&gt;ffi.C&lt;/code&gt; 调内部函数跑物体了&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230819160911.mp4' target='_blank' onclick='event.preventDefault();'&gt;&lt;video controls data-imgsrc='20230819160911.mp4'&gt;&lt;source src='images/20230819160911.mp4' type='video/mp4'&gt;&lt;/video&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;跑起来了跑起来了&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230817115130.mp4' target='_blank' onclick='event.preventDefault();'&gt;&lt;video controls data-imgsrc='20230817115130.mp4'&gt;&lt;source src='images/20230817115130.mp4' type='video/mp4'&gt;&lt;/video&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;luajit 作为内置控制台可以用了&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230815180948.mp4' target='_blank' onclick='event.preventDefault();'&gt;&lt;video controls data-imgsrc='20230815180948.mp4'&gt;&lt;source src='images/20230815180948.mp4' type='video/mp4'&gt;&lt;/video&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;需要 Word wrap 而不是简单的超界换行&lt;/p&gt;&lt;p&gt;改把改把&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230802211608.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230802211608.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230802211608.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;DVD！
 &lt;/p&gt;&lt;div class='p_row'&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230919141807.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230919141807.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230919141807.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230919141847.mp4' target='_blank' onclick='event.preventDefault();'&gt;&lt;video controls data-imgsrc='20230919141847.mp4'&gt;&lt;source src='images/20230919141847.mp4' type='video/mp4'&gt;&lt;/video&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;evdev 读的操纵杆按键和绝对值轴编号不连续，需要做个映射: &lt;code&gt;u8bit  btns[127], axis[64];&lt;/code&gt; ，按键在这些范围，轴编号是连续的：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;BTN_MISC 0x100 ~ 0x151 BTN_GEAR_UP
BTN_DPAD_UP 0x220 ~ 0x223 BTN_DPAD_RIGHT
BTN_TRIGGER_HAPPY 0x2c0 ~ 0x2e7 BTN_TRIGGER_HAPPY40&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;做了&lt;/p&gt;&lt;p&gt;原则上 ModalOver 的做法并不合适，空了要重新检查退出&lt;/p&gt;&lt;p&gt;需要有字符截断功能然后做拖动背景式的滑块，然后再有更好的复合挂件。&lt;/p&gt;
&lt;p&gt;截断单独开个开关函数，不然现在的参数太多了，虽然实现差不太多（可以了）&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20240123134312.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20240123134312.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20240123134312.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;复合挂件&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20240122223341.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20240122223341.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20240122223341.jpg'&gt;&lt;/a&gt;&lt;/div&gt;2022/08/21 11:38:45 - 2024/01/25 16:05:36</content></entry><entry><id>https://www.wellobserve.com/?post=20240122134441</id><title type='html'>行了所有图都压缩了</title><link rel='alternate' href='https://www.wellobserve.com/?post=20240122134441' /><published>2024-01-22T13:44:41+08:00</published><updated>2024-01-22T13:44:41+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;行了所有图都压缩了&lt;/p&gt;2024/01/22 13:44:41 - 2024/01/22 13:44:41</content></entry><entry><id>https://www.wellobserve.com/?post=20210928175018</id><title type='html'>那么的维基日志</title><link rel='alternate' href='https://www.wellobserve.com/?post=20210928175018' /><published>2021-09-28T17:50:18+08:00</published><updated>2024-01-22T11:44:57+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;h1&gt;那么的维基日志&lt;/h1&gt;

&lt;p&gt;所以可以开始在新站点说话了，好评&lt;/p&gt;&lt;p&gt;翻译&lt;/p&gt;&lt;p&gt;还有草稿本地储存&lt;/p&gt;&lt;p&gt;移动端大图菜单再黑点&lt;/p&gt;&lt;p&gt;要有个自动重定向设置，名字匹配和跳转帖子即可，十分简单&lt;/p&gt;&lt;p&gt;最近回复目标点击链接应该是第一句而不是最后一句&lt;/p&gt;&lt;p&gt;另外把帖子内容放到页面标题上这样历史记录也好搜索&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;CSS不需要每次都覆盖&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;还没做关于页呢，这些再慢慢丰富咯……&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;顶栏也有问题了&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;
&lt;li&gt;打印样式也还没做&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;
&lt;li&gt;移动端脚注也有问题&lt;/li&gt;
&lt;li&gt;admin弄好&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;
&lt;li&gt;还有翻译以及针对导航栏等条目的翻译设置，把原来的cookie搬过来，之后还是弄个谷歌翻译按键&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;目前有的一些问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;相册移动端的文件夹切换没弄。&lt;/li&gt;
&lt;li&gt;没得删除。&lt;/li&gt;
&lt;li&gt;应该把特殊页面从最初时间线去掉（或许没有那么必要——）&lt;/li&gt;
&lt;li&gt;搜索还没做&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;?post=20211026161001&quot; onclick='ShowWaitingBar()'&gt;引用文章&lt;/a&gt;&lt;/p&gt;&lt;p&gt;可能需要加上个rss功能（加上了）&lt;/p&gt;&lt;p&gt;首页引用文链接超宽等问题&lt;/p&gt;&lt;p&gt;可能还需要个https带参数转发，不过再看了&lt;/p&gt;&lt;p&gt;现在可以一键发邮件询问感兴趣的图片&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20211022140333.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20211022140333.jpg&quot; alt=&quot;咨询按钮&quot;  data-imgsrc='20211022140333.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;因为缩进后字本身也变小所以在对话和引用中可以考虑做成箭头样子就不用盒子形式&lt;del&gt;（链接的保留为盒子？）&lt;/del&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;图片下载的名字要可识别&lt;/li&gt;
&lt;li&gt;另外图片移动端详细滚动加高&lt;/li&gt;
&lt;li&gt;延迟滚动到帖子&lt;/li&gt;
&lt;li&gt;移动端相册选择列表有问题&lt;/li&gt;
&lt;li&gt;当前文章做成带阴影或者别的识别的，不然字那么大好像也不好看&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;还有相册主要标记&lt;/p&gt;&lt;p&gt;要做主页相册，不然直接显示全部有点乱&lt;/p&gt;&lt;p&gt;长文应该在话题第一篇文开头标记 之后不用 显示时候不放大字体但是用一种方式指示目前的文章。&lt;/p&gt;&lt;p&gt;底下的网站标题不要弄链接要点错&lt;/p&gt;&lt;p&gt;如果目前这个站直接发超长文直接就刷屏了，所以还是有要改的地方。&lt;/p&gt;&lt;p&gt;还有外链整成个带小箭头的可能好看&lt;/p&gt;&lt;p&gt;可点击的回复可能要做个框什么的以示区别&lt;/p&gt;&lt;p&gt;链接要做成话题总的，不然翻起来麻烦因为每句话很短。移动端还要加个数字。（只是做成了引用计数）&lt;/p&gt;&lt;p&gt;可以在最近标题位置显示过去二十四小时更新的条目数量，之后还能弄个统计页&lt;/p&gt;&lt;p&gt;这个新建相册还会出现500问题&lt;/p&gt;&lt;p&gt;一段多图时候还是出现了空段落&lt;/p&gt;&lt;p&gt;需要私用笔记本&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;?post=20211123164557&quot; onclick='ShowWaitingBar()'&gt;笔记本&lt;/a&gt;&lt;/p&gt;&lt;p&gt;图片替换和改名也可以了&lt;/p&gt;&lt;p&gt;大图margin-bottom要改为初始&lt;/p&gt;&lt;p&gt;大图重复时候会循环：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;?post=20211106205308&quot; onclick='ShowWaitingBar()'&gt;引用&lt;/a&gt;&lt;/p&gt;&lt;p&gt;新做了基于imagemagick的图像后端，现在图像也不会出问题了。&lt;/p&gt;&lt;p&gt;图片通过CDN的也不能强制直接转HTTPS（但看上去请求是HTTPS的，按理说不会转）…… 这个可能要用户自己调了。&lt;/p&gt;&lt;p&gt;关联帖子：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;?post=20211005104204&quot; onclick='ShowWaitingBar()'&gt;引用文章&lt;/a&gt;&lt;/p&gt;&lt;p&gt;gif下载扩展不对（出于某种原因似乎又对了……）&lt;/p&gt;&lt;p&gt;画廊要变大才行&lt;/p&gt;&lt;p&gt;应该做一个按照语言标签显示对应段落的功能，不然随时去调翻译文件就非常蠢。（这么久之后终于做好勒）&lt;/p&gt;&lt;p&gt;加入了评论功能。&lt;/p&gt;
&lt;p&gt;但是还差ip限制和评论后台列表查看功能。&lt;/p&gt;&lt;p&gt;里站图示方式要改改……&lt;/p&gt;&lt;p&gt;翻译按钮，丢到顶上了。&lt;/p&gt;&lt;p&gt;关联文章排序应该反过来&lt;/p&gt;&lt;p&gt;打印的&lt;code&gt;p_row&lt;/code&gt;底部留白不正确&lt;/p&gt;
&lt;p&gt;第一个h的顶部留白不正确（可能不容易操作）&lt;/p&gt;
&lt;p&gt;这些东西其实都是因为将帖子分了div。应考虑不这么做时帖子访问按钮位置的设置，这样一来引用文等样式表也简单了。&lt;/p&gt;
&lt;p&gt;更新底部留白问题：单图片也要用div加一层，overflow不能hidden，具体为什么这样设置样式表需要调查，这些都该应可以简化。&lt;/p&gt;&lt;p&gt;打印样式还要仔细调&lt;/p&gt;&lt;p&gt;修复了改名导致全没的Bug&lt;/p&gt;&lt;p&gt;应该有一种任务列表形式的东西，或者索引工具，可以将帖子加进去。（这个做了）&lt;/p&gt;
&lt;p&gt;另外还有不定期回顾帖子功能等。&lt;/p&gt;&lt;p&gt;底栏等深度不对&lt;/p&gt;&lt;p&gt;理论上搜索并没有正确处理主题帖中多个带关键词帖子的情况。（现在处理了）&lt;/p&gt;&lt;p&gt;可能要移除评论功能然后做成邮件订阅，因为人们似乎不倾向于在无聊的地方留评论。&lt;/p&gt;&lt;p&gt;关于长文/维基式推特的设计：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;?post=20220214011442&quot; onclick='ShowWaitingBar()'&gt;长文&lt;/a&gt;&lt;/p&gt;&lt;p&gt;主页可以有自定义内容而不是乱七八糟的东西，那样会好看些；目录似乎应该直接移动到文章顶部而不是放侧面。&lt;/p&gt;&lt;p&gt;帖子标记的版本也要从版本中获得而不是直接来用最新（修好了，是重检查话题时没有清空已设置的标志位）。&lt;/p&gt;&lt;p&gt;以及将配置文件转换成以PHP格式储存以减少因攻击造成的泄漏。（可以了）&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;?post=20220307151507&quot; onclick='ShowWaitingBar()'&gt;制作IndieAuth&lt;/a&gt;以与其他兴趣自建网对接。（可以了）&lt;/p&gt;&lt;p&gt;有趣栏目表格内图片位置和尺寸不正确，应当里外加100%宽度和flex。（行了修好了）&lt;/p&gt;&lt;p&gt;另外未启用JS下的阅读/导航还没有完全保证，主要是针对图片。编辑和发新帖可以作为当前选择帖子的操作，就不需要菜单。（图片现在可以了，菜单什么的之后再看，因为浏览已经没有什么问题&lt;del&gt;，不过图片在非脚本情况下最好可以重定向到一个能显示关联帖子的页面&lt;/del&gt;，图片现在非js点击也会出现详细情况页面了）&lt;/p&gt;&lt;p&gt;或许需要一个输入相册口令查看隐藏相册的功能&lt;/p&gt;&lt;p&gt;实现了一键发送到长毛象的功能！&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;?post=20220415111143&quot; onclick='ShowWaitingBar()'&gt;像这样&lt;/a&gt;&lt;/p&gt;&lt;p&gt;在之后的某个时候应该会将脚本做成链接的文件以减轻页面加载负担。&lt;/p&gt;&lt;p&gt;为相册添加了小功能：指定了主图的图片会显示为窄条以节省屏幕空间并将视觉重点转向主图。（昨天弄好了）&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;回复的时候不能转直接引用这样太蠢了。。。（改了）&lt;/li&gt;
&lt;li&gt;引帖子和图片的时候第一次并没有加入引用，应检查是什么导致这个问题。（新帖子只赋值了&lt;code&gt;real_content&lt;/code&gt;而没有赋值&lt;code&gt;content&lt;/code&gt;导致&lt;code&gt;CachePostLinks&lt;/code&gt;时出错，重定向隐蔽了出错信息）&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;支持了“在这里”功能。&lt;/p&gt;&lt;p&gt;&lt;del&gt;需要将帖子列表改成真正的表格以允许点击链接&lt;/del&gt; 不行因为这样就不能有效地分栏了。&lt;/p&gt;&lt;p&gt;需要可以管理MP4和其他文件的功能。（加上去了）&lt;/p&gt;&lt;p&gt;“在这里”需要有直接查看相册的功能，或者目前的状况下做个汇总帖子。首页可能需要列举导航。&lt;/p&gt;&lt;p&gt;需要可以指定图片缩略图朝顶部对齐方法。（好了）&lt;/p&gt;&lt;p&gt;支持了图片式链接。但是需要可指定高度不然看起有点奇怪。（可以了，在图片alt里输入&lt;code&gt;4em&lt;/code&gt;即可）&lt;/p&gt;&lt;p&gt;需要短链接到相册。（做了，做成了&lt;code&gt;?&lt;/code&gt;之后任意字符串）&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;可以指定宽话题或者帖子打印。&lt;/li&gt;
&lt;li&gt;修复了独立图片页面的一些问题。&lt;/li&gt;
&lt;li&gt;改了下这里和实验网的显示。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;从目前的布局来看，“在这里”的底部不应该有导航栏。&lt;/p&gt;&lt;p&gt;应当将相册改为不显示时间而带有渐进加载的（提供按钮）样子，现在的样子不规整&lt;/p&gt;&lt;p&gt;应制作一个那个在别的网站上显示预览图的功能（做了）&lt;/p&gt;&lt;p&gt;更新了首页置顶帖子显示的方式，并且增加了相册描述功能&lt;/p&gt;&lt;p&gt;新的统计信息页面：&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230414172307.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230414172307.jpg&quot; alt=&quot;Images&quot;  data-imgsrc='20230414172307.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;幻灯菜单有问题&lt;/p&gt;
&lt;p&gt;并且需要跳过引用文章&lt;/p&gt;&lt;p&gt;制作了个简易幻灯片工具， 使用slides关键字切换成幻灯片。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;?post=20231008012624&quot; onclick='ShowWaitingBar()'&gt;就像这样&lt;/a&gt;&lt;/p&gt;&lt;p&gt;现在的导航和视觉逻辑不行，需要改为整体页面用表格来制作，所有生成的内容捕获并且填充到指定格子去。&lt;/p&gt;&lt;p&gt;引用的可以写成灰色&lt;/p&gt;&lt;p&gt;左侧用帖子编号作为超链接（这样就整齐并且按顺序了），+n作为话题指示，图片可能会用单行高的方块缩略图&lt;/p&gt;&lt;p&gt;考虑是否要重新设计lamdwiki的样式，做成一个尺寸的文字，类似打字机的样式，使得样式表更加简单，排列更整齐&lt;/p&gt;&lt;p&gt;优化了表格样式，同时做了不同语言页面入口，使用 en.php 可以访问英语网站，这样搜索引擎就能优化。&lt;/p&gt;2021/09/28 17:50:18 - 2024/01/22 11:44:57</content></entry><entry><id>https://www.wellobserve.com/?post=20240121234220</id><title type='html'>apache ssl 选不中 可能是因为 /etc/apache2/ports.conf 没加 NameVirtualHost *:443 明天检查下是不是</title><link rel='alternate' href='https://www.wellobserve.com/?post=20240121234220' /><published>2024-01-21T23:42:20+08:00</published><updated>2024-01-22T09:45:29+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;apache ssl 选不中 可能是因为 /etc/apache2/ports.conf 没加 NameVirtualHost *:443 明天检查下是不是&lt;/p&gt;&lt;p&gt;不是 是莫名其妙多了个 site conf&lt;/p&gt;2024/01/21 23:42:20 - 2024/01/22 09:45:29</content></entry><entry><id>https://www.wellobserve.com/?post=20240121215223</id><title type='html'>疑 v0.2a 版的好得涂打包有问题吗。。。</title><link rel='alternate' href='https://www.wellobserve.com/?post=20240121215223' /><published>2024-01-21T21:52:23+08:00</published><updated>2024-01-21T21:52:23+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;疑 v0.2a 版的好得涂打包有问题吗。。。&lt;/p&gt;2024/01/21 21:52:23 - 2024/01/21 21:52:23</content></entry><entry><id>https://www.wellobserve.com/?post=20230102172212</id><title type='html'>好得涂 版本日志</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230102172212' /><published>2023-01-02T17:22:12+08:00</published><updated>2024-01-19T12:56:30+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;h1&gt;好得涂 版本日志&lt;/h1&gt;

&lt;h2&gt;v0.1&lt;/h2&gt;
&lt;p&gt;文件最后更新于 2023/01/03 17:40&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;Files/OurPaint/Releases/OurPaint_v0.1_with_glew.tar.gz&quot;&gt;下载 AppImage （带有GLEW，&lt;strong&gt;推荐用这个&lt;/strong&gt;）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;Files/OurPaint/Releases/OurPaint_v0.1.tar.gz&quot;&gt;下载 AppImage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;Files/OurPaint/Releases/OurPaint_src_v0.1.tar.gz&quot;&gt;下载源代码&lt;/a&gt; | &lt;a href=&quot;http://www.wellobserve.com/repositories/chengdulittlea/OurPaint/src/v0.1&quot; target='_blank'&gt;Git 分支&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20221231230345.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221231230345.jpg&quot; alt=&quot;Images keep_inline&quot;  data-imgsrc='20221231230345.jpg'&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;封面作者：吴奕茗。&lt;/p&gt;
&lt;p&gt;发行的首个版本，完成了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;无限画布功能&lt;/li&gt;
&lt;li&gt;图层和基本混合&lt;/li&gt;
&lt;li&gt;基础笔刷&lt;/li&gt;
&lt;li&gt;界面语言切换&lt;/li&gt;
&lt;li&gt;色彩管理&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;等基础功能。&lt;/p&gt;
&lt;p&gt;您现在可以从我的&lt;a href=&quot;http://www.wellobserve.com/repositories/chengdulittlea/OurPaint&quot; target='_blank'&gt;代码仓库&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;获得好得涂源代码（推荐）。&lt;/p&gt;
&lt;h2&gt;v0.1a&lt;/h2&gt;
&lt;p&gt;文件最后更新于 2023/1/27 &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;Files/OurPaint/Releases/OurPaint_v0.1a_Win64.zip&quot;&gt;下载 Windows Zip &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;Files/OurPaint/Releases/OurPaint_v0.1a_Linux_x64.tar.gz&quot;&gt;下载 Linux AppImage &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.wellobserve.com/repositories/chengdulittlea/OurPaint/src/v0.1a&quot; target='_blank'&gt;Git 分支 &lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;说明 &lt;/h3&gt;
&lt;p&gt;该版本实验性支持 Windows 操作系统，若遇到软件故障，请&lt;a href=&quot;https://www.wellobserve.com/repositories/chengdulittlea/OurPaint/issues&quot; target='_blank'&gt;通过这里&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;汇报问题。该版本相较上个版本有如下变化：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;新增了钢笔、针管笔、铅笔和简易橡皮四种默认笔刷&lt;/li&gt;
&lt;li&gt;为橡皮和笔刷使用不同的锁定半径&lt;/li&gt;
&lt;li&gt;容忍错误压力事件&lt;/li&gt;
&lt;li&gt;修复涂抹闪烁&lt;/li&gt;
&lt;li&gt;修复丢失的透明图层&lt;/li&gt;
&lt;li&gt;修复合并图层时的意外崩溃&lt;/li&gt;
&lt;li&gt;光谱混合以及开关&lt;/li&gt;
&lt;li&gt;允许指定 OpenGL 版本用于调试&lt;/li&gt;
&lt;li&gt;LaGUI 的各种稳定性优化&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;v0.1b&lt;/h2&gt;
&lt;p&gt;文件最后更新于 2023/2/14 &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;Files/OurPaint/Releases/OurPaint_v0.1b_Win64.zip&quot;&gt;下载 Windows Zip &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;Files/OurPaint/Releases/OurPaint_v0.1b_Linux_x64.tar.gz&quot;&gt;下载 Linux AppImage &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.wellobserve.com/repositories/chengdulittlea/OurPaint/src/v0.1b&quot; target='_blank'&gt;Git 分支 &lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;说明 &lt;/h3&gt;
&lt;p&gt;该版本相较上个版本有如下变化：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;通过 WinTab 支持了 Windows 下的 Wacom 手写笔输入硬件（压力和倾斜），并且可选择使用 WinTab 或者 Windows Ink 驱动输入。&lt;/li&gt;
&lt;li&gt;增加了笔刷触点迭代功能，可以一次性触发多个触点，并可跳过特定触点。&lt;ul&gt;
&lt;li&gt;新增加了半调色笔刷，也作为笔刷触点迭代功能的演示。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;修复了合成半透明错误的问题。&lt;/li&gt;
&lt;li&gt;Intel 集成显卡稳定性增强（对于第7/8代 Intel 核心显卡，其 GPU 调频器在 Linux 中偶尔仍然会导致完全卡死）。&lt;/li&gt;
&lt;li&gt;其他已经提出问题的修复。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;v0.1c&lt;/h2&gt;
&lt;p&gt;文件最后更新于 2023/08/08 &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;Files/OurPaint/Releases/OurPaint_v0.1c_Win64.zip&quot;&gt;下载 Windows Zip &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;Files/OurPaint/Releases/OurPaint_v0.1c_Linux_x64.tar.gz&quot;&gt;下载 Linux AppImage &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.wellobserve.com/repositories/chengdulittlea/OurPaint/src/v0.1c&quot; target='_blank'&gt;Git 分支 &lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;说明 &lt;/h3&gt;
&lt;p&gt;该版本相较上个版本有如下变化：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;新增纸张尺寸边框预设，含有 ISO/DIN A/B 和中国正度纸张尺寸。&lt;/li&gt;
&lt;li&gt;新增界面阳光矫正功能和黑白条视觉感知矫正显示。&lt;/li&gt;
&lt;li&gt;改良了 LaGUI 的 OpenGL 上下文管理，应当比之前更加稳定 。&lt;/li&gt;
&lt;li&gt;优化了 LaGUI 文本缓存，防止花屏。&lt;/li&gt;
&lt;li&gt;LaGUI 的其余优化和稳定性提升。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;v0.2&lt;/h2&gt;
&lt;p&gt;文件最后更新于 2023/09/12 &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;Files/OurPaint/Releases/OurPaint_v0.2_Win64.zip&quot;&gt;下载 Windows Zip &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;Files/OurPaint/Releases/OurPaint_v0.2_Linux_x64.tar.gz&quot;&gt;下载 Linux AppImage &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.wellobserve.com/repositories/chengdulittlea/OurPaint/src/v0.2&quot; target='_blank'&gt;Git 分支 &lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230912143859.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230912143859.jpg&quot; alt=&quot;图片 keep_inline&quot;  data-imgsrc='20230912143859.jpg'&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h3&gt;较上版本变化&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;添加了画布纹理影响，现预设了帆布和纸张纹理，使用笔刷时可以通过笔尖压力调节擦刮力度。&lt;ul&gt;
&lt;li&gt;旧文件自动以无纹理方式兼容，仍可打开该功能。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;添加了颜料粘度调节功能，以配合画布纹理。&lt;/li&gt;
&lt;li&gt;新的笔刷选择面板，现可分类并节省空间显示。&lt;/li&gt;
&lt;li&gt;改进了显示屏阳光矫正功能，可通过窗口顶部的太阳标志打开。&lt;/li&gt;
&lt;li&gt;新增笔刷：&lt;ul&gt;
&lt;li&gt;水粉涂抹笔&lt;/li&gt;
&lt;li&gt;油画笔、浓油画笔、油画溶剂笔&lt;/li&gt;
&lt;li&gt;粉笔&lt;/li&gt;
&lt;li&gt;优化后的铅笔和粗铅笔&lt;/li&gt;
&lt;li&gt;马克笔&lt;/li&gt;
&lt;li&gt;涂抹纸笔&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;改进了现有笔刷，大多数已有笔刷获得了画布纹理功能，在关闭画布影响时仍保持原来的效果。&lt;/li&gt;
&lt;li&gt;优化了 LaGUI 的稳定性。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;v0.2a&lt;/h2&gt;
&lt;p&gt;文件最后更新于 2024/01/19 &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;Files/OurPaint/Releases/OurPaint_v0.2a_Linux_x64.tar.gz&quot;&gt;下载 Linux AppImage &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;Files/OurPaint/Releases/OurPaint_v0.2a_Winx64.tar.gz&quot;&gt;下载 Windows Zip &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.wellobserve.com/repositories/chengdulittlea/OurPaint/src/v0.2a&quot; target='_blank'&gt;Git 分支 &lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;较上版本变化&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;新增笔杆旋转输入功能，可控制笔触点角度。&lt;/li&gt;
&lt;li&gt;新增调色板功能。&lt;/li&gt;
&lt;li&gt;修复了参考亮度条闪烁问题。&lt;/li&gt;
&lt;li&gt;修复了 Windows 下笔画事件频率不够导致出现折线的问题。&lt;/li&gt;
&lt;li&gt;修复了 Windows 下 &lt;code&gt;[ ]&lt;/code&gt; 快捷键无效的问题。&lt;/li&gt;
&lt;/ul&gt;
2023/01/02 17:22:12 - 2024/01/19 12:56:30</content></entry><entry><id>https://www.wellobserve.com/?post=20240118144906</id><title type='html'>emm 变速器拉线比不一致</title><link rel='alternate' href='https://www.wellobserve.com/?post=20240118144906' /><published>2024-01-18T14:49:06+08:00</published><updated>2024-01-18T20:38:11+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;emm 变速器拉线比不一致&lt;/p&gt;&lt;p&gt;又把旧的修好了。。。（基本上）&lt;/p&gt;2024/01/18 14:49:06 - 2024/01/18 20:38:11</content></entry><entry><id>https://www.wellobserve.com/?post=20240117210905</id><title type='html'>肚子痛吃多了菜</title><link rel='alternate' href='https://www.wellobserve.com/?post=20240117210905' /><published>2024-01-17T21:09:05+08:00</published><updated>2024-01-17T21:09:05+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;肚子痛吃多了菜&lt;/p&gt;2024/01/17 21:09:05 - 2024/01/17 21:09:05</content></entry><entry><id>https://www.wellobserve.com/?post=20211021001236</id><title type='html'>Line Art</title><link rel='alternate' href='https://www.wellobserve.com/?post=20211021001236' /><published>2021-10-21T00:12:36+08:00</published><updated>2024-01-11T21:48:59+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;h1&gt;Line Art&lt;/h1&gt;
&lt;p&gt;Line Art 是我编写在Blender中的一个风格线绘制工具。它在几何层面计算并生成三维物体的特征线。&lt;/p&gt;
&lt;p&gt;这个话题包含了Line Art的工作记录，更详细的信息可以在&lt;a href=&quot;https://developer.blender.org/tag/line_art/&quot; target='_blank'&gt;Blender开发者网&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;上找到。&lt;/p&gt;

&lt;div class='imd'&gt;&lt;a href='?show_image=20211024170529.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20211024170529.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20211024170529.jpg' data-product='20211106210845'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;好吧我们先看&lt;a href=&quot;?post=20211028173327&quot; onclick='ShowWaitingBar()'&gt;Nurbs的什么鬼&lt;/a&gt;&lt;/p&gt;&lt;p&gt;到底可不可以流水线&lt;/p&gt;&lt;p&gt;报告说交线过滤不管用（针对拖拉机测试文件，单个修改器勾选交线之后只出现交线，&lt;del&gt;不清楚具体原因&lt;/del&gt;逻辑有小问题，已经修了）&lt;/p&gt;&lt;p&gt;线条超出视线盒子&lt;/p&gt;&lt;p&gt;12线程的机器报CPU占用100%&lt;/p&gt;&lt;p&gt;折边强度记录&lt;/p&gt;
&lt;p&gt;（想了想好像也可以做轮廓的，以及外轮廓）&lt;/p&gt;&lt;p&gt;edgehash本身可以能优化一些。&lt;/p&gt;&lt;p&gt;远期改：内存池分阶段。&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;做剩余小功能的补丁然后拿去审核。&lt;/li&gt;
&lt;li&gt;改评论里面的。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;远期改：交叉线的重复点先退出问题。&lt;/p&gt;&lt;p&gt;初步的修改丢在&lt;a href=&quot;https://developer.blender.org/D13143&quot; target='_blank'&gt;这里&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;了&lt;/p&gt;&lt;p&gt;也不对，其实是三角形配对标记没有分线程用。&lt;/p&gt;&lt;p&gt;&lt;del&gt;事实是多线交叉时只锁了分块，这样操作下三角形对有重复计算的可能。可以对每个三角形分配一个锁引用然后修改测试标记。&lt;/del&gt;&lt;/p&gt;&lt;p&gt;猴子文件那个交叉线&lt;del&gt;问题跟线程有关，导致多遮挡。&lt;/del&gt;误判，实际是调试问题，但总之计算还是有问题的。&lt;/p&gt;&lt;p&gt;大概是这么修的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;线线关系查询时多返回一个对齐指标，方便之后判断（但似乎实际产生拦截的情况出现得不多）。&lt;/li&gt;
&lt;li&gt;点线关系在ab垂直于bc时并正对X/Y方向时错误地返回了真，已修复（应检查是否有遗漏情况）。&lt;/li&gt;
&lt;li&gt;一点在三角边缘邻域，另一点在外部的情况根据前述指标处理更多情况。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;目前正确率非常高，错误的线段仅限于极短且与单个三角边缘平行度极高的场合，实际图像中已经小于一个像素，因此暂无需多虑。&lt;/p&gt;
&lt;p&gt;还有问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;重叠导致的交叉线似乎非常容易透过遮挡。&lt;/li&gt;
&lt;li&gt;猴子盒子文件中的一个方块角有缺失。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;其余遮挡错误情况不显著。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;近裁剪面切割仍然不正确，尚待查找原因，原则上不应使用近裁剪面作为看结构的工具。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;修了一些，似乎好得多了&lt;/p&gt;&lt;p&gt;报交线选择在有子集合的情况下不正确。（检查标记的逻辑不对）&lt;/p&gt;&lt;p&gt;报主干密集面崩溃，查是加速块线条数量超界，没有考虑保护因为3万条线集中在一点一般不可能，应加保护。（已经加了）&lt;/p&gt;
&lt;p&gt;另外由于主干的一些合并导致线条被添加了两次，现已修复。&lt;/p&gt;&lt;p&gt;2.93的照相机平移问题改好。&lt;/p&gt;&lt;p&gt;通过照相机投影到背景可以生成蒙特法平滑填充所需的内外侧颜色信息。未投影的为背景颜色，应该可以用透明通道，关键算法已经在阴影分支里现成了所以这个坐起来很容易，只需要搞清楚怎么&lt;a href=&quot;?post=20211209223036&quot; onclick='ShowWaitingBar()'&gt;蒙特那个着色&lt;/a&gt;即可。&lt;/p&gt;&lt;p&gt;报告有线条闪烁问题（裁剪所用相机方向问题←这里修的）&lt;/p&gt;&lt;p&gt;虚线修改器不能时移&lt;/p&gt;&lt;p&gt;阴影分界线&lt;/p&gt;&lt;p&gt;远处模型崩溃（分块一直细分的问题，一些视口坐标似乎不正确）&lt;/p&gt;
&lt;p&gt;裁剪所用相机方向问题。&lt;/p&gt;&lt;p&gt;报告交叉线筛选时有遗漏（不选择时正常）（之后似乎又不能复现）&lt;/p&gt;&lt;p&gt;GPU细分时lanpr只载入了基础模型。（&lt;a href=&quot;https://developer.blender.org/T95470&quot; target='_blank'&gt;T95470&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;）&lt;/p&gt;
&lt;p&gt;同样的问题也出现在&lt;a href=&quot;https://developer.blender.org/T94479&quot; target='_blank'&gt;T94479&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;。&lt;/p&gt;&lt;p&gt;转移顶点色的选项&lt;/p&gt;&lt;p&gt;噪声串联应该有个保留或者不保留细节的选项。&lt;/p&gt;&lt;p&gt;至于串联的问题：由于发生在同一个遮挡级别因此会跳动（例如可以忽略遮挡层级之间非常短的不同层/更深层小段）。&lt;/p&gt;&lt;p&gt;gp根据曲率和速度的权重。&lt;a href=&quot;https://textbin.xyz/?f57a59f7c8c8af82#6GqvBLeqrUuqEQCNtZ2wq5FFXZkeEsn1c9PNcHg9reNd&quot; target='_blank'&gt;kcanon提供了他自己写的脚本&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;。&lt;/p&gt;&lt;p&gt;要有针对相交线的权重传递 &lt;a href=&quot;https://developer.blender.org/T94033&quot; target='_blank'&gt;T94033&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt; 这需要在求交的时候记录到六点的距离作为权重？&lt;/p&gt;&lt;p&gt;修改器要带有压扁功能&lt;/p&gt;&lt;p&gt;接下来的首要研究内容是&lt;a href=&quot;?post=20220115170104&quot; onclick='ShowWaitingBar()'&gt;完全通过BVH&lt;/a&gt;，利用照相机出发的假三角形做遮挡查询。&lt;/p&gt;
&lt;p&gt;利用embree的&lt;code&gt;rtcCollide()&lt;/code&gt;可以求自相交（例子中即是这样使用的）。注意回调&lt;a href=&quot;https://community.intel.com/t5/Intel-Embree-Ray-Tracing-Kernels/comparison-two-methods-for-collision-detection/td-p/1251989&quot; target='_blank'&gt;应当多线程友好&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;无限制拆分Tile的这个得修好了不然就很麻烦。（先看embree的实现到底快不快）&lt;/p&gt;&lt;p&gt;修复了折边逻辑&lt;/p&gt;&lt;p&gt;正交视角又又又又又坏了&lt;/p&gt;
&lt;p&gt;为什么&lt;/p&gt;
&lt;p&gt;是因为每次合并就这样了吗（昨天修了，平移不一致问题）&lt;/p&gt;&lt;p&gt;背面剔除选项没有删掉线。&lt;/p&gt;&lt;p&gt;GP带循环的情况的采样和点划线没有考虑到。&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://developer.blender.org/T94888&quot; target='_blank'&gt;三角化不一致问题&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt; 解决了&lt;/p&gt;&lt;p&gt;可能的优化：接受最平的三角形对作为加载进去的几何，这样可以兼容例如阵列&lt;a href=&quot;https://developer.blender.org/T96846&quot; target='_blank'&gt;合并之后内部剩余的面&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;。（其实不对，考虑一个九十度相交场景）&lt;/p&gt;&lt;p&gt;&lt;code&gt;lineart-shadow&lt;/code&gt;的交叉线不串联就出不来了emmmmm（过滤开关未写进逻辑，修了）&lt;/p&gt;&lt;p&gt;剩下的主要工作：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;?post=20220115170104&quot; onclick='ShowWaitingBar()'&gt;embree实验&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;多线程加载（和Sebastian）。&lt;/li&gt;
&lt;li&gt;平滑轮廓线修改器。&lt;/li&gt;
&lt;li&gt;投影支持更新到最新。&lt;ul&gt;
&lt;li&gt;以及通过投影的轮廓代码取得正向轮廓。&lt;/li&gt;
&lt;li&gt;考虑如何记录阴影和照明片段以实现通过这个筛选被照或者在阴影中的内容。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;照相机多段变形。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;（需要有上下文地将剩余工作整理成完整的说明放在&lt;a href=&quot;https://developer.blender.org/T87739&quot; target='_blank'&gt;DBO话题&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;上。）&lt;/p&gt;&lt;p&gt;轮廓基本上可以了，&lt;del&gt;但是单边多切以及分段组编号尚未处理好。&lt;/del&gt; 目前&lt;a href=&quot;?post=20220428131534&quot; onclick='ShowWaitingBar()'&gt;样子不错&lt;/a&gt;，只有点小逻辑问题。&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20220428112756.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20220428112756.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20220428112756.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;可以cas记录元素而不需复制&lt;/p&gt;&lt;p&gt;&lt;del&gt;塞满是不行的……&lt;/del&gt;&lt;/p&gt;
&lt;p&gt;似乎从头锁到尾了所以这样反而慢，试下只锁最深层看有没有改善。&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20220422150247.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20220422150247.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20220422150247.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;根据Sebastian的提议现尝试使用CAS（比较和更换指令，&lt;code&gt;CMPXCHG&lt;/code&gt;）来避免使用锁。&lt;/p&gt;
&lt;p&gt;目前：倒好不坏的，不算慢也不算快，并且内存怎么删都有问题……&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20220415215239.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20220415215239.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20220415215239.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;还要检查阴影区域投影所用特征线的投射遮挡逻辑，是否有重在面上的那些。&lt;/p&gt;&lt;p&gt;理论上由于在计算阴影的情况下基本上都需要投影两次，那么是否可以将全局位置什么的做到一个数据结构里？这样省空间。。。。？&lt;/p&gt;&lt;p&gt;带光轮廓反投的正确解算已经可以了，另有&lt;a href=&quot;?post=20220412162224&quot; onclick='ShowWaitingBar()'&gt;加州阳光&lt;/a&gt;。&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20220412154613.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20220412154613.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20220412154613.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;哈哈哈封闭阴影形状实现了&lt;/p&gt;
&lt;p&gt;小问题是光轮廓没有再投影所以正方形那里还不完全对，但是已经不错了。&lt;/p&gt;
&lt;p&gt;&lt;del&gt;（直接再投似乎也不起作用，不知道为什么）&lt;/del&gt; 修了，边对应以及来自三角形边的问题。&lt;/p&gt;
&lt;div class='p_row'&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20220411223834.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20220411223834.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20220411223834.jpg' data-parent='20220412154613'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20220411223835.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20220411223835.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20220411223835.jpg' data-parent='20220412154613'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20220411224904.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20220411224904.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20220411224904.jpg' data-parent='20220412154613'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;emmm&lt;/p&gt;
&lt;div class='p_row'&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20220411115206.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20220411115206.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20220411115206.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20220411115420.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20220411115420.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20220411115420.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;理论上可以支持聚光灯，添加加一个虚拟圆孔遮罩即可。&lt;/p&gt;&lt;p&gt;新物体加载没得删除重叠点（决定不再包括这个功能）。&lt;/p&gt;&lt;p&gt;既是光投影轮廓又是摄像机轮廓的线似乎应当不作为光投影轮廓处理（其实它实际应该作为第三次投影查询时的输入）。&lt;/p&gt;
&lt;p&gt;第三次投影的原理就是显示暗在明上和隐藏明在明上的轮廓和光投影轮廓线。&lt;/p&gt;&lt;p&gt;阴影大概就是这个样子。&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;20220408232011.gif&quot; alt=&quot;图片&quot;  data-imgsrc='20220408232011.gif'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;目前是这个效果，但是交线的标识数格式不一样，暂未支持，需要在交线计算完成之后再完成一次匹配才行，这可能明显降低性能，主要由于交线未按物体区分。&lt;/p&gt;
&lt;div class='p_row'&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20220408215019.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20220408215019.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20220408215019.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20220408215012.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20220408215012.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20220408215012.jpg' data-parent='20220408215019'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;做两阶段读取索引匹配以筛选被照亮的线。（逻辑正确了）&lt;/p&gt;&lt;p&gt;应删除&lt;code&gt;e-&amp;gt;v1_obindex&lt;/code&gt;，不知道为什么用的是这个，因为最后看重叠点时用的是顶点索引。（似乎可以了，以后需要多深度拼接的时候不对再来改）&lt;/p&gt;&lt;p&gt;阴影分支：应当分开投影线和明暗交界线。（可以了，只是还要删掉多于的明暗线区分那里）&lt;/p&gt;&lt;p&gt;改好了新物体加载的面标记筛选&lt;/p&gt;&lt;p&gt;多线程加载检查是否能获得自动平滑信息。（其实是对的，只是稍微改下逻辑等等……）&lt;/p&gt;&lt;p&gt;应检查经典方法中是否需要锁那么长的时间……&lt;/p&gt;
&lt;p&gt;问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;del&gt;遮挡查询目前在列表中遍历，理想情况下应该为在Array中遍历以提升速度。&lt;/del&gt; 的确快了。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;可能需要再看将&lt;code&gt;duplilist&lt;/code&gt;做到&lt;code&gt;add_relation&lt;/code&gt;里头。（做了，访问不到粒子和子实例）&lt;/p&gt;&lt;p&gt;视口三角化用于几何计算的效果还是不理想。&lt;/p&gt;&lt;p&gt;Hans和Sebastian提议的&lt;a href=&quot;https://stackoverflow.com/questions/41946007/efficient-and-well-explained-implementation-of-a-quadtree-for-2d-collision-det/48355534#48355534&quot; target='_blank'&gt;二维碰撞查找&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;windows的&lt;code&gt;atomic_load&lt;/code&gt;大约只有&lt;a href=&quot;https://github.com/FFmpeg/FFmpeg/blob/master/compat/atomics/win32/stdatomic.h&quot; target='_blank'&gt;这么搞&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;。&lt;/p&gt;&lt;p&gt;Sergey说在计算时获得已计算内容用&lt;a href=&quot;https://developer.blender.org/rBa99dcab148ed209409f3b2479ada12d869ae84b6&quot; target='_blank'&gt;这样的写法&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;才行，研究研究……（物体和集合实例已经可以了但是粒子和面实例不行）&lt;/p&gt;&lt;h2&gt;LineArt 线条类型速查表&lt;/h2&gt;
&lt;p&gt;{read_more}&lt;/p&gt;
&lt;style&gt;.la_red{color:#E2545F;}.la_blue{color:#6984E0;}&lt;/style&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;外观&lt;/th&gt;
&lt;th&gt;特征线&lt;/th&gt;
&lt;th&gt;区域&lt;/th&gt;
&lt;th&gt;封闭形状&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20220624132014.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20220624132014.jpg&quot; alt=&quot;keep_inline&quot;  data-imgsrc='20220624132014.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td&gt;轮廓 + &lt;span class='la_red'&gt;折边&lt;/span&gt; + &lt;span class='la_blue'&gt;交叉&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20220624132015.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20220624132015.jpg&quot; alt=&quot;keep_inline&quot;  data-imgsrc='20220624132015.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td&gt;轮廓 + 折边 + 交叉&lt;/td&gt;
&lt;td&gt;照亮区 / &lt;span class='la_blue'&gt;阴影区&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20220624132016.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20220624132016.jpg&quot; alt=&quot;keep_inline&quot;  data-imgsrc='20220624132016.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td&gt;轮廓 + &lt;span class='la_blue'&gt;光轮廓&lt;/span&gt; + &lt;span class='la_red'&gt;投影&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20220624132017.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20220624132017.jpg&quot; alt=&quot;keep_inline&quot;  data-imgsrc='20220624132017.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td&gt;轮廓 + 光轮廓 + 投影&lt;/td&gt;
&lt;td&gt;照亮区&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20220624132018.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20220624132018.jpg&quot; alt=&quot;keep_inline&quot;  data-imgsrc='20220624132018.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td&gt;轮廓 + 光轮廓 + 投影&lt;/td&gt;
&lt;td&gt;照亮区&lt;/td&gt;
&lt;td&gt;封闭形状&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20220624132020.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20220624132020.jpg&quot; alt=&quot;keep_inline&quot;  data-imgsrc='20220624132020.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td&gt;轮廓 + 光轮廓 + 投影 + &lt;span class='la_blue'&gt;标记边&lt;/la_blue&gt;&lt;/td&gt;
&lt;td&gt;照亮区&lt;/td&gt;
&lt;td&gt;封闭形状&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20220624132019.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20220624132019.jpg&quot; alt=&quot;keep_inline&quot;  data-imgsrc='20220624132019.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td&gt;&lt;span class='la_blue'&gt;剪影组 1&lt;/span&gt; + &lt;span class='la_red'&gt;组 2&lt;/span&gt; + 非剪影&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;p&gt;轮廓和光照轮廓的明暗要根据摄像机可视面的对光与否判断，目前的方法从背后看形状封闭得不正确。&lt;/p&gt;&lt;p&gt;这个可以，但是似乎曲线的封闭形状选项不起作用，需要检查。&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20220806133431.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20220806133431.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20220806133431.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;新！通过GPU有偏地算线画也已经可行。与之前的dpix情况相比，由于lineart目前计算好了前后裁剪，因此只需要比深度即可求显隐。&lt;/p&gt;
&lt;p&gt;由于lineart也已经计算阴影，阴影线也可以同时丢进去。阴影线计算本身可能也可以丢进去，取决于精度（因为如果跟踪精度不够的话有的地方会飞）&lt;/p&gt;&lt;p&gt;基于GN的解决方案需要通过attribute来过滤而不是通过内部记录和输出源信息。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.google.com/document/d/15r8BMEc1rfjfRA5MKP-RUHSz3KuMCA4PbTU-oyTzsHo/edit#&quot; target='_blank'&gt;谷歌文档&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Line Art 正在迁移到 Grease Pencil 3.0&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20240111214821.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20240111214821.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20240111214821.jpg'&gt;&lt;/a&gt;&lt;/div&gt;2021/10/21 00:12:36 - 2024/01/11 21:48:59</content></entry><entry><id>https://www.wellobserve.com/?post=20231229200329</id><title type='html'>GPv3 and Curves API Familiarization Notes</title><link rel='alternate' href='https://www.wellobserve.com/?post=20231229200329' /><published>2023-12-29T20:03:29+08:00</published><updated>2024-01-08T23:40:02+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;h1&gt;GPv3 and Curves API Familiarization Notes&lt;/h1&gt;
&lt;p&gt;{read_more}&lt;/p&gt;&lt;p&gt;So you want to do some operations to the GP3/Curves data, here's a typical function that a
GP3 operator would call:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;static int grease_pencil_do_whatever(bContext *C, wmOperator * /*op*/)
{
  const Scene *scene = CTX_data_scene(C);
  Object *object = CTX_data_active_object(C);
  GreasePencil &amp;amp;grease_pencil = *static_cast&amp;lt;GreasePencil *&amp;gt;(object-&amp;gt;data);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;How to get &quot;drawings&quot; for us to edit under GPv3 and iterate over each &quot;drawing&quot;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  const Array&amp;lt;MutableDrawingInfo&amp;gt; drawings = retrieve_editable_drawings(*scene, grease_pencil);

  threading::parallel_for_each(drawings, [&amp;amp;](const MutableDrawingInfo &amp;amp;info) {
    IndexMaskMemory memory;
    const IndexMask strokes = ed::greasepencil::retrieve_editable_and_selected_strokes(
        *object, info.drawing, memory);
    if (strokes.is_empty()) {
      return;
    }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Get a curves container to work on inside this drawing... By using &lt;code&gt;&amp;amp;curves&lt;/code&gt; it allows us to later just directly assign a new one. So this way we could create new curves easier.&lt;/p&gt;
&lt;p&gt;Essentially we don't &quot;edit&quot; the curve, but creates a new one, and there are utility functions in &lt;code&gt;Curves&lt;/code&gt; to allow easy transferring of old data.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    bke::CurvesGeometry &amp;amp;curves = info.drawing.strokes_for_write();
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And choose to work with &quot;Select Domain&quot;... (Like whether you select strokes or points)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    const bke::AttrDomain selection_domain = ED_grease_pencil_selection_domain_get(
      scene-&amp;gt;toolsettings);

    if (selection_domain == bke::AttrDomain::Curve) {
      curves.remove_curves(elements, {});
    }
    else if (selection_domain == bke::AttrDomain::Point) {
      curves = remove_points_and_split(curves, elements);
    }


    // Curves etc...

    Array&amp;lt;bool&amp;gt; points_to_delete(curves.points_num()); // 1d array
    const int total_points = points_to_delete.as_span().count(false);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This is how we iterate over curves...&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    for (const int curve_i : curves.curves_range()) {
      const IndexRange points = points_by_curve[curve_i];
      const Span&amp;lt;bool&amp;gt; curve_points_to_delete = points_to_delete.as_span().slice(points);
      const bool curve_cyclic = src_cyclic[curve_i];
      //...
    }

  }); // End parallel iteration over stroke.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Create a new curves &quot;container&quot;, this is where we actually create new stuff and then we put in data... If we have counts for individual curves, counts can be accumulated into new offsets with convenience functions.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  bke::CurvesGeometry dst_curves(total_points, total_curves);

  MutableSpan&amp;lt;int&amp;gt; new_curve_offsets = dst_curves.offsets_for_write();
  array_utils::copy(dst_curve_counts.as_span(), new_curve_offsets.drop_back(1));
  offset_indices::accumulate_counts_to_offsets(new_curve_offsets);

  bke::MutableAttributeAccessor dst_attributes = dst_curves.attributes_for_write();
  const bke::AttributeAccessor src_attributes = curves.attributes();
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Copy from dst-src matching pairs if data is modified from previous curves.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  /* Transfer curve attributes. */
  gather_attributes(
      src_attributes, bke::AttrDomain::Curve, {}, {&quot;cyclic&quot;}, dst_to_src_curve, dst_attributes);
  array_utils::copy(dst_cyclic.as_span(), dst_curves.cyclic_for_write());
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Other points&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Individual elements delivered by &lt;code&gt;Span&lt;/code&gt; and &lt;code&gt;Array&lt;/code&gt; etc can all be accessed with []. So &lt;code&gt;MutableSpan some=other; some[index]=thing;&lt;/code&gt; is (should be?) valid.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;info.drawings.radii&lt;/code&gt; is different from &lt;code&gt;radius&lt;/code&gt; attribute under &lt;code&gt;Curves&lt;/code&gt;. GP3 uses &lt;code&gt;radii&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;Need Clarification&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;del&gt;How is GP3 modifier gonna be integrated, where to start? Will it be put alongside a generic modifier for easier management and code path?&lt;/del&gt;&lt;ul&gt;
&lt;li&gt;Answer: Will be included into the main modifier folder, will have special flags indicating modifier being available to GP3.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;del&gt;In the case of subdiv, should this become a generic curve function or just for GP3?&lt;/del&gt; (there is now, but doesn't support selected portion)&lt;ul&gt;
&lt;li&gt;&lt;del&gt;Which parts currently are safe to touch/add/modify?&lt;/del&gt; Doesn't seem to be anything there needs to be modified.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Why there's &lt;code&gt;blender::bke::greasepencil::Layer&lt;/code&gt; and &lt;code&gt;::GreasePencilFrame&lt;/code&gt;?&lt;/li&gt;
&lt;li&gt;Should we keep old DNA &lt;em&gt;and&lt;/em&gt; RNA in place?&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;&lt;code&gt;Array&lt;/code&gt; to &lt;code&gt;VArray&lt;/code&gt; conversion&lt;/h2&gt;
&lt;p&gt;Use&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    Array&amp;lt;int&amp;gt; cuts_array(curves.curve_num,cuts);
    VArray&amp;lt;int&amp;gt; vcuts=VArray&amp;lt;int&amp;gt;::ForContainer(std::move(cuts_array));&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Or&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    VArray&amp;lt;int&amp;gt;::ForSpan(cuts_array.as_span())&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;Missing GPencil 3.0 API&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;BKE_gpencil_frame_active_set&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;Some notes&lt;/h2&gt;
&lt;p&gt;GP3 Draw while sculpting?&lt;/p&gt;2023/12/29 20:03:29 - 2024/01/08 23:40:02</content></entry><entry><id>https://www.wellobserve.com/?post=20240107104750</id><title type='html'>How to Travel by Cargo Ship Around the World</title><link rel='alternate' href='https://www.wellobserve.com/?post=20240107104750' /><published>2024-01-07T10:47:50+08:00</published><updated>2024-01-07T10:47:50+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;How to Travel by Cargo Ship Around the World&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.transitionsabroad.com/listings/travel/articles/travel-by-cargo-ship-around-the-world.shtml&quot; target='_blank'&gt;https://www.transitionsabroad.com/listings/travel/articles/travel-by-cargo-ship-around-the-world.shtml&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.cargoshipvoyages.com/ViewAllVoyages/&quot; target='_blank'&gt;https://www.cargoshipvoyages.com/ViewAllVoyages/&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
2024/01/07 10:47:50 - 2024/01/07 10:47:50</content></entry><entry><id>https://www.wellobserve.com/?post=20231227221353</id><title type='html'>将网站的帖子区域更换为表格形式了。</title><link rel='alternate' href='https://www.wellobserve.com/?post=20231227221353' /><published>2023-12-27T22:13:53+08:00</published><updated>2024-01-06T21:46:50+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;将网站的帖子区域更换为表格形式了。&lt;/p&gt;&lt;p&gt;这个css可以说是有那么一点扯淡了&lt;/p&gt;&lt;p&gt;好麻烦&lt;/p&gt;&lt;p&gt;基本可以了，还差打印机样式没修好&lt;/p&gt;2023/12/27 22:13:53 - 2024/01/06 21:46:50</content></entry><entry><id>https://www.wellobserve.com/?post=20240106214228</id><title type='html'>Dabbling in the Cryptographic World--A Story</title><link rel='alternate' href='https://www.wellobserve.com/?post=20240106214228' /><published>2024-01-06T21:42:28+08:00</published><updated>2024-01-06T21:42:28+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;Dabbling in the Cryptographic World--A Story&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.bell-labs.com/usr/dmr/www/crypt.html&quot; target='_blank'&gt;https://www.bell-labs.com/usr/dmr/www/crypt.html&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
2024/01/06 21:42:28 - 2024/01/06 21:42:28</content></entry><entry><id>https://www.wellobserve.com/?post=20240104125451</id><title type='html'>有一个空闲的 Arduino 和 ESP32 , 是不是可以拿来做一个车灯喇叭速度表。。。</title><link rel='alternate' href='https://www.wellobserve.com/?post=20240104125451' /><published>2024-01-04T12:54:51+08:00</published><updated>2024-01-06T11:22:51+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;有一个空闲的 Arduino 和 ESP32 , 是不是可以拿来做一个车灯喇叭速度表。。。&lt;/p&gt;&lt;p&gt;可以用那种1.5g的舵机做指针或纸带显示。&lt;/p&gt;&lt;p&gt;原理上可以在碟刹片上安装一种附加的驱动装置以发电供车灯使用而无需修改车轮结构&lt;/p&gt;2024/01/04 12:54:51 - 2024/01/06 11:22:51</content></entry><entry><id>https://www.wellobserve.com/?post=20240104221143</id><title type='html'>删除 xserver-xorg-video-intel 以停用 intel 核显。</title><link rel='alternate' href='https://www.wellobserve.com/?post=20240104221143' /><published>2024-01-04T22:11:43+08:00</published><updated>2024-01-04T22:11:43+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;删除 xserver-xorg-video-intel 以停用 intel 核显。&lt;/p&gt;2024/01/04 22:11:43 - 2024/01/04 22:11:43</content></entry><entry><id>https://www.wellobserve.com/?post=20211213142049</id><title type='html'>~~GPU画图工具实验~~ 现在是好得涂日志 </title><link rel='alternate' href='https://www.wellobserve.com/?post=20211213142049' /><published>2021-12-13T14:20:49+08:00</published><updated>2024-01-02T16:04:31+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;h1&gt;&lt;del&gt;GPU画图工具实验&lt;/del&gt; 现在是好得涂日志 &lt;/h1&gt;
&lt;p&gt;研究了使用GPU的无限画布像素模式画图工具的可行性，简要记录在此，细节参阅160本。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;?post=20211212002943&quot; onclick='ShowWaitingBar()'&gt;从对MyPaint研究引出&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;其他局限&lt;/h2&gt;
&lt;p&gt;笔刷的序列混合不好实现，由于是并行提交，没有办法直接访问已工作的方块，所以可能只能以不透明和上次笔触完成后的FBO复制用以采样的方式工作。&lt;/p&gt;
&lt;p&gt;检查了之前的GUI截图，序列透明覆盖似乎是正确的，那么非半透明的覆盖应该也是顺序正常的，并且可以使用深度。但由于界面有浮动面板，这里实际不清楚能否去掉那些的FBO因为是二次叠上去的，不同面板不一定同时都刷新。&lt;/p&gt;&lt;h3&gt;额外贴图&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;主图&lt;/strong&gt;，超尺寸的用多张Tile，显存无法分配完全的则只分配以屏幕为中心的大于屏幕的尺寸，做笔刷整合时则需要多次切换并从内存中调入完整图（以每图而不是每笔刷为循环基准）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;缩小贴图&lt;/strong&gt;，用于缩小时查看，为每个主图块的小图，尚不知如何生成最好，（可能需要从CPU端生成？这样每应用一笔都需要读回来）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;视口FBO&lt;/strong&gt;，复用GUI的面板FBO，则无需新建，但注意像素格式，可能需要16位。&lt;/li&gt;
&lt;li&gt;&lt;del&gt;视口FBO复制，因为需要一并混合到应用好的主图上&lt;/del&gt;。似乎可以直接采样底图并画到视口FBO，可以节省一个FBO。&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;主要操作细节&lt;/h2&gt;
&lt;p&gt;贴图步进尺寸似乎可以设置为128，这也可以作为初始最小贴图的尺寸（但根据初始引用笔刷直接调节至下一个合理尺寸），每次步进就复制到新的上面，同时检查再建立同样大小伪贴图的可行性，不行则表明不能再请求这么多的显存用于贴图复制，此时启用局部高清贴图模式，丢掉未显示的那些（从内存中再读）。&lt;/p&gt;
&lt;p&gt;涂抹和取色器采样似乎都只能从两层画完之后的视口FBO采，这样也能采到笔刷自身痕迹？（是期望的行为吗？）&lt;/p&gt;
&lt;p&gt;保存就贴图分块读回来存。&lt;/p&gt;
&lt;p&gt;时间原始时间每1/60秒更新一次笔刷显示列表，每提笔更新显示列表并应用最后一个撤销栈的笔画到光栅，对于不完整主图，需要重复调用内存里的那个图。&lt;/p&gt;&lt;h2&gt;该工具特点&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;无限画布（最终取决于客户机内存）&lt;/li&gt;
&lt;li&gt;有限撤销步数。（达到撤销步数的笔触合成到最终光栅上，未达到的为GL图元）&lt;/li&gt;
&lt;li&gt;基于像素而非矢量显示。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;主要局限&lt;/h2&gt;
&lt;p&gt;一些低功耗硬件可能不具备足够显存和内存以运行大图。SurfacePro6的&lt;code&gt;glxinfo&lt;/code&gt;报GL最大贴图尺寸为16384×8192，显存报3058MB共享，因此目前的大图应该能合理工作，更大的效率就比较低了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;无法混合和快速在原地累积，因此半透明刷子可能是很大的问题。&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;更新：了解到&lt;a href=&quot;https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_barrier.txt&quot; target='_blank'&gt;GL_NV_texture_barrier&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;可能可以允许同时读写同一张贴图，应该可以实现方便的点点点叠加，应该也容易实现笔划（但没有具体看，好像稍微麻烦些，主要是笔画的情况下如何定义自身叠加和非叠加，使用二级图应当能旁路这个问题，不过在不清楚笔画尺寸的情况下需要画多个块拼接）&lt;/p&gt;&lt;p&gt;通过XInput2可以获得Wacom的压力和倾斜等参数&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20221130215119.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221130215119.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221130215119.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;可以画上去了哈哈哈&lt;/p&gt;
&lt;div class='p_row'&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20221130152443.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221130152443.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221130152443.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20221130152908.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221130152908.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221130152908.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;好了至少能跑起来计算着色器了&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20221127142207.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221127142207.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221127142207.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;由于MyPaint储存为8位sRGB，因此再次打开时出现精度丢失，这是不期望的。&lt;/p&gt;
&lt;p&gt;研究发现可以使用计算着色器进行混合。可根据这个原理继续制作画图工具。&lt;/p&gt;
&lt;p&gt;此外，如果只是简单混合而没有涂抹，则可以考虑使用&lt;a href=&quot;https://registry.khronos.org/OpenGL/extensions/EXT/EXT_shader_framebuffer_fetch.txt&quot; target='_blank'&gt;GL_EXT_shader_framebuffer_fetch&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;0.1版 完成！&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20221231225645.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221231225645.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221231225645.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;汉化和各种可用性优化&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20221229211521.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221229211521.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221229211521.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;通过 &lt;a href=&quot;http://www.gballard.net/photoshop/pdi_download/index.html#downloads&quot; target='_blank'&gt;这里&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt; 可以下载一个测试icc以检查icc配置是否正常工作。若正常，则会显示错误颜色&lt;/p&gt;&lt;p&gt;不错&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20221216230013.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221216230013.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221216230013.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;可以做笔刷了&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20221215215041.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221215215041.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221215215041.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;要复现目前使用的MyPaint笔刷形式，还需要：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;椭圆比例（或者sdf实现，用以更方便地获得方形）&lt;/li&gt;
&lt;li&gt;跟踪速度输入&lt;/li&gt;
&lt;li&gt;跟踪方向输入（以及平滑，如何实现）&lt;/li&gt;
&lt;li&gt;平滑位置（如何实现）&lt;/li&gt;
&lt;li&gt;随机/噪声&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;映射挂件的撤销有问题，暂时还没管那么多，但需要修。&lt;/p&gt;
&lt;p&gt;空了来&lt;/p&gt;&lt;p&gt;新的映射挂件&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20221212213136.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221212213136.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221212213136.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;节点笔刷初步&lt;/p&gt;
&lt;div class='p_row'&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20221212143028.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221212143028.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221212143028.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20221212165735.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221212165735.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221212165735.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;可以撤销了&lt;/p&gt;
&lt;p&gt;这样一来所有基本功能已经全部完成了。&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20221211224456.mp4' target='_blank' onclick='event.preventDefault();'&gt;&lt;video controls data-imgsrc='20221211224456.mp4'&gt;&lt;source src='images/20221211224456.mp4' type='video/mp4'&gt;&lt;/video&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;储存单实例属性需要修改接口，做了个简化的假列表来支持单实例的指定文件保存。&lt;/p&gt;
&lt;p&gt;其他的似乎都正常工作，还差导出的合成颜色。&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20221209202452.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221209202452.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221209202452.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;总的来说，还有这些需要实现了才能共享该程序的初步版本：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自定义的撤销命令。&lt;/li&gt;
&lt;li&gt;工程文件打包。&lt;/li&gt;
&lt;li&gt;切割文件导出。&lt;/li&gt;
&lt;li&gt;导入导出的选项。&lt;/li&gt;
&lt;li&gt;文件管理器的文件名以及过滤选项等优化。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;可以文件了&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20221208214258.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221208214258.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221208214258.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;涂抹正确了&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20221206214418.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221206214418.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221206214418.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&quot;http://scottburns.us/subtractive-color-mixture-5/&quot; target='_blank'&gt;http://scottburns.us/subtractive-color-mixture-5/&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;混色看这里&lt;/p&gt;
&lt;p&gt;以及这个是mypaint的https://github.com/mypaint/mypaint/blob/master/doc/spectral/spectral.md&lt;/p&gt;&lt;p&gt;行了，涂抹的逻辑也可以了，虽然涂抹的效果不好，但是可用。&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20221204215655.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221204215655.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20221204215655.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;v0.1a，测试Windows版本&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230127121047.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230127121047.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230127121047.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;win大多数功能能用了&lt;/p&gt;&lt;p&gt;Windows原生基本上可以了&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;?post=20230120000903&quot; onclick='ShowWaitingBar()'&gt;这里&lt;/a&gt;&lt;/p&gt;&lt;p&gt;现在可以通过WSL运行（但是似乎很慢）&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230119123642.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230119123642.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230119123642.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&quot;?post=20230114104626&quot; onclick='ShowWaitingBar()'&gt;修了个问题&lt;/a&gt;&lt;/p&gt;&lt;p&gt;还是mypaint的光谱混合 但是在gpu了&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230106164842.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230106164842.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230106164842.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;新笔刷！&lt;/p&gt;
&lt;div class='p_row'&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230215152512.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230215152512.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230215152512.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230215152449.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230215152449.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230215152449.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230215152440.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230215152440.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230215152440.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;需要在软件菜单里加个版本日志按钮昂。。。&lt;/p&gt;&lt;p&gt;实现了迭代控制，因此能方便地制作半色调笔刷了。&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230208181848.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230208181848.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230208181848.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;涂抹混合有问题，已修复&lt;/p&gt;&lt;p&gt;导出时图块外背景未转换为对数式，已修复&lt;/p&gt;&lt;p&gt;好得涂可以实现一种多种颜色笔刷。&lt;/p&gt;
&lt;p&gt;一个小的抹颜色区域，或者就在画布上按住某个键给笔刷侧面上色（主要是实现起来方便一些），就可以实现花色笔刷。&lt;/p&gt;&lt;p&gt;程序纹画布！&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230907190813.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230907190813.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230907190813.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;可以利用下层特殊图层作为高度，这样采样不花额外性能，并且可以实现手工打底效果。&lt;/p&gt;&lt;p&gt;现已修复 windows 下 wacom 事件频率导致画笔折线的问题&lt;/p&gt;&lt;p&gt;以 &lt;code&gt;PER_MONITOR_DPI_AWARE&lt;/code&gt; 的方式修好了 Wacom 数位板在Windows下映射的问题。&lt;/p&gt;2021/12/13 14:20:49 - 2024/01/02 16:04:31</content></entry><entry><id>https://www.wellobserve.com/?post=20211020225213</id><title type='html'>网上邻居</title><link rel='alternate' href='https://www.wellobserve.com/?post=20211020225213' /><published>2021-10-20T22:52:13+08:00</published><updated>2023-12-30T21:50:23+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;h1&gt;网上邻居&lt;/h1&gt;

&lt;p&gt;链接到互联网上其他有趣的角落。&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://stumbled.to/&quot; target='_blank'&gt;https://stumbled.to/&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;随机去网站&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://rmkit.dev/blog&quot; target='_blank'&gt;https://rmkit.dev/blog&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;reMarkable app制作博客&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://humanoidhistory.tumblr.com/archive&quot; target='_blank'&gt;Humanoid History&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://e05.code.blog/&quot; target='_blank'&gt;https://e05.code.blog/&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;宇航美术博客&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://webring.xxiivv.com/&quot; target='_blank'&gt;https://webring.xxiivv.com/&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://ninfex.com/&quot; target='_blank'&gt;https://ninfex.com/&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;人工索引的搜索引擎&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.bikeexif.com/&quot; target='_blank'&gt;https://www.bikeexif.com/&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;摩托车&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://tinytexashouses.com/&quot; target='_blank'&gt;https://tinytexashouses.com/&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://skyvector.com/&quot; target='_blank'&gt;https://skyvector.com/&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://opengeofiction.net&quot; target='_blank'&gt;https://opengeofiction.net&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;虚构地图&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://stargazer2006.online.fr/index.htm&quot; target='_blank'&gt;http://stargazer2006.online.fr/index.htm&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.aerospaceprojectsreview.com/&quot; target='_blank'&gt;https://www.aerospaceprojectsreview.com/&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://e05.code.blog/&quot; target='_blank'&gt;https://e05.code.blog/&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://subconscious.substack.com/&quot; target='_blank'&gt;https://subconscious.substack.com/&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.logobook.com&quot; target='_blank'&gt;http://www.logobook.com&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://lieu.cblgh.org/&quot; target='_blank'&gt;https://lieu.cblgh.org/&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;搜索xxiivv电话本&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.quintbuchholz.de/&quot; target='_blank'&gt;https://www.quintbuchholz.de/&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Quint Buchholz&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.tomaswatson.com/art&quot; target='_blank'&gt;https://www.tomaswatson.com/art&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Tomas Watson&lt;/p&gt;&lt;p&gt;Edward Loxton Knight&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.a320.at&quot; target='_blank'&gt;http://www.a320.at&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://wakrec.blogspot.com/&quot; target='_blank'&gt;http://wakrec.blogspot.com/&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;arduino风琴等&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.jaredpike.art/&quot; target='_blank'&gt;https://www.jaredpike.art/&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.foldnfly.com&quot; target='_blank'&gt;FoldnFly&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.michieldb.nl/&quot; target='_blank'&gt;http://www.michieldb.nl/&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Posy&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://narf.pl/&quot; target='_blank'&gt;http://narf.pl/&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://nicolemclaughlin.com&quot; target='_blank'&gt;https://nicolemclaughlin.com&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.640by480.com/&quot; target='_blank'&gt;https://www.640by480.com/&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://uer.ca/&quot; target='_blank'&gt;https://uer.ca/&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Urban Exploration Resource&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://maps.nls.uk/geo/explore/&quot; target='_blank'&gt;https://maps.nls.uk/geo/explore/&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;比对历史地图&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://docs.google.com/spreadsheets/d/1KWIzznlFNs_rQCEzW5ub6ehwaLcwR80xbuOokXwRa_Y/edit#gid=0&quot; target='_blank'&gt;The Big Artist Opportunities Directory&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://skipperpress.com&quot; target='_blank'&gt;https://skipperpress.com&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;军事主题涂&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://donatoarts.com/&quot; target='_blank'&gt;https://donatoarts.com/&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;古典科幻涂&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://robertwattsconceptsketches.com/blog/&quot; target='_blank'&gt;https://robertwattsconceptsketches.com/blog/&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.lukejerram.com/artworks/&quot; target='_blank'&gt;https://www.lukejerram.com/artworks/&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;做垂直光那个&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.artnet.com/artists/robert-r-bliss&quot; target='_blank'&gt;https://www.artnet.com/artists/robert-r-bliss&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://thenewriver.us/&quot; target='_blank'&gt;https://thenewriver.us/&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.zack-art.com/&quot; target='_blank'&gt;https://www.zack-art.com/&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Pierre Joubert&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://blog.dazhu1988.com/&quot; target='_blank'&gt;https://blog.dazhu1988.com/&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.macin.org/&quot; target='_blank'&gt;https://www.macin.org/&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.iyuxiyang.com&quot; target='_blank'&gt;https://www.iyuxiyang.com&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://99gifshop.neocities.org&quot; target='_blank'&gt;https://99gifshop.neocities.org&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;gif商店&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.sweethome3d.com&quot; target='_blank'&gt;http://www.sweethome3d.com&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://shhhitsfine.tumblr.com/archive&quot; target='_blank'&gt;https://shhhitsfine.tumblr.com/archive&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;2021/10/20 22:52:13 - 2023/12/30 21:50:23</content></entry><entry><id>https://www.wellobserve.com/?post=20231226162404</id><title type='html'>未命名</title><link rel='alternate' href='https://www.wellobserve.com/?post=20231226162404' /><published>2023-12-26T16:24:04+08:00</published><updated>2023-12-26T16:24:39+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;未命名&lt;/p&gt;

&lt;p&gt;在wacom上看还可以 实际饱和度可能高一点更好看。&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20231226155713.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20231226155713.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20231226155713.jpg'&gt;&lt;/a&gt;&lt;/div&gt;2023/12/26 16:24:04 - 2023/12/26 16:24:39</content></entry><entry><id>https://www.wellobserve.com/?post=20231225114614</id><title type='html'>fcitx5 没有候选框和一些程序 XOpenIM 找不到，应安装 fcitx5-module-xorg libxcb-imdkit1 ，这样就可以了</title><link rel='alternate' href='https://www.wellobserve.com/?post=20231225114614' /><published>2023-12-25T11:46:14+08:00</published><updated>2023-12-25T11:46:14+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;&lt;code&gt;fcitx5&lt;/code&gt; 没有候选框和一些程序 &lt;code&gt;XOpenIM&lt;/code&gt; 找不到，应安装 &lt;code&gt;fcitx5-module-xorg libxcb-imdkit1&lt;/code&gt; ，这样就可以了&lt;/p&gt;2023/12/25 11:46:14 - 2023/12/25 11:46:14</content></entry><entry><id>https://www.wellobserve.com/?post=20231221222604</id><title type='html'>未命名</title><link rel='alternate' href='https://www.wellobserve.com/?post=20231221222604' /><published>2023-12-21T22:26:04+08:00</published><updated>2023-12-21T22:26:04+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;未命名&lt;/p&gt;

&lt;div class='imd'&gt;&lt;a href='?show_image=20231221222303.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20231221222303.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20231221222303.jpg'&gt;&lt;/a&gt;&lt;/div&gt;2023/12/21 22:26:04 - 2023/12/21 22:26:04</content></entry><entry><id>https://www.wellobserve.com/?post=20231220112326</id><title type='html'>原来用 certbot 就可以自动给apache上的网站配好ssl。。。</title><link rel='alternate' href='https://www.wellobserve.com/?post=20231220112326' /><published>2023-12-20T11:23:26+08:00</published><updated>2023-12-20T11:23:26+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;原来用 certbot 就可以自动给apache上的网站配好ssl。。。&lt;/p&gt;2023/12/20 11:23:26 - 2023/12/20 11:23:26</content></entry><entry><id>https://www.wellobserve.com/?post=20231212002348</id><title type='html'>原则上讲 不基于方块的地图规划游戏应该很少 特别是应用在例如模拟器中</title><link rel='alternate' href='https://www.wellobserve.com/?post=20231212002348' /><published>2023-12-12T00:23:48+08:00</published><updated>2023-12-12T00:25:10+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;原则上讲 不基于方块的地图规划游戏应该很少 特别是应用在例如模拟器中&lt;/p&gt;&lt;p&gt;用经纬点定位，动态推挤，几何相交方式制作和共享地图应该比基于方块和高度图的方法更加灵活&lt;/p&gt;2023/12/12 00:23:48 - 2023/12/12 00:25:10</content></entry><entry><id>https://www.wellobserve.com/?post=20231122000353</id><title type='html'>不仅可以做直升机桨头 还可以做自制35mm电影机</title><link rel='alternate' href='https://www.wellobserve.com/?post=20231122000353' /><published>2023-11-22T00:03:53+08:00</published><updated>2023-11-22T00:03:53+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;不仅可以做直升机桨头 还可以做自制35mm电影机&lt;/p&gt;2023/11/22 00:03:53 - 2023/11/22 00:03:53</content></entry><entry><id>https://www.wellobserve.com/?post=20231031181356</id><title type='html'>又到总部来了</title><link rel='alternate' href='https://www.wellobserve.com/?post=20231031181356' /><published>2023-10-31T18:13:56+08:00</published><updated>2023-10-31T18:13:56+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;又到总部来了&lt;/p&gt;
&lt;div class='p_row'&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20231031180640.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20231031180640.jpg&quot; alt=&quot;Images&quot;  data-imgsrc='20231031180640.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20231031180637.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20231031180637.jpg&quot; alt=&quot;Images&quot;  data-imgsrc='20231031180637.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20231031180635.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20231031180635.jpg&quot; alt=&quot;Images&quot;  data-imgsrc='20231031180635.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20231031180632.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20231031180632.jpg&quot; alt=&quot;Images&quot;  data-imgsrc='20231031180632.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20231031180628.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20231031180628.jpg&quot; alt=&quot;Images&quot;  data-imgsrc='20231031180628.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20231031180641.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20231031180641.jpg&quot; alt=&quot;Images&quot;  data-imgsrc='20231031180641.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20231031180642.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20231031180642.jpg&quot; alt=&quot;Images&quot;  data-imgsrc='20231031180642.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'&gt;&lt;/div&gt;&lt;/div&gt;2023/10/31 18:13:56 - 2023/10/31 18:13:56</content></entry><entry><id>https://www.wellobserve.com/?post=20231031165237</id><title type='html'>emm今天要不要去航空博物馆</title><link rel='alternate' href='https://www.wellobserve.com/?post=20231031165237' /><published>2023-10-31T16:52:37+08:00</published><updated>2023-10-31T16:52:37+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;emm今天要不要去航空博物馆&lt;/p&gt;2023/10/31 16:52:37 - 2023/10/31 16:52:37</content></entry><entry><id>https://www.wellobserve.com/?post=20231027154632</id><title type='html'>忘记传照片了不过emmm</title><link rel='alternate' href='https://www.wellobserve.com/?post=20231027154632' /><published>2023-10-27T15:46:32+08:00</published><updated>2023-10-27T15:46:32+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;忘记传照片了不过emmm&lt;/p&gt;2023/10/27 15:46:32 - 2023/10/27 15:46:32</content></entry><entry><id>https://www.wellobserve.com/?post=20231021222003</id><title type='html'>需不需要一个成都纪念品 emmmm</title><link rel='alternate' href='https://www.wellobserve.com/?post=20231021222003' /><published>2023-10-21T22:20:03+08:00</published><updated>2023-10-21T22:20:03+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;需不需要一个成都纪念品 emmmm&lt;/p&gt;2023/10/21 22:20:03 - 2023/10/21 22:20:03</content></entry><entry><id>https://www.wellobserve.com/?post=20231017214253</id><title type='html'>做个 GN 的铝型材模板</title><link rel='alternate' href='https://www.wellobserve.com/?post=20231017214253' /><published>2023-10-17T21:42:53+08:00</published><updated>2023-10-17T21:42:53+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;做个 GN 的铝型材模板&lt;/p&gt;2023/10/17 21:42:53 - 2023/10/17 21:42:53</content></entry><entry><id>https://www.wellobserve.com/?post=20230905185331</id><title type='html'>去荷兰应该去哪里呢</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230905185331' /><published>2023-09-05T18:53:31+08:00</published><updated>2023-10-14T22:02:30+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;去荷兰应该去哪里呢&lt;/p&gt;&lt;p&gt;额&lt;/p&gt;&lt;p&gt;SILODAM&lt;/p&gt;&lt;p&gt;&lt;del&gt;Ypenburg, The Hague&lt;/del&gt; 重了&lt;/p&gt;&lt;p&gt;Pampus Harbour (Almere)&lt;/p&gt;&lt;p&gt;Open Air School&lt;/p&gt;&lt;p&gt;Schröder House (Utrecht) &lt;a href=&quot;https://www.rietveldschroderhuis.nl/nl&quot; target='_blank'&gt;https://www.rietveldschroderhuis.nl/nl&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The Mondriaan House (Amersfoort) &lt;a href=&quot;https://www.mondriaanhuis.nl/en/&quot; target='_blank'&gt;https://www.mondriaanhuis.nl/en/&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Museum Het Rembrandthuis &lt;a href=&quot;https://www.rembrandthuis.nl/nl/&quot; target='_blank'&gt;https://www.rembrandthuis.nl/nl/&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;NEST (Hague) &lt;a href=&quot;https://www.nestruimte.nl&quot; target='_blank'&gt;https://www.nestruimte.nl&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Van Gogh Museum&lt;/p&gt;&lt;p&gt;Rijksmuseum Amsterdam &lt;a href=&quot;https://www.rijksmuseum.nl/nl&quot; target='_blank'&gt;https://www.rijksmuseum.nl/nl&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Luchtvaartmuseum Aviodrome &lt;a href=&quot;https://www.aviodrome.nl/&quot; target='_blank'&gt;https://www.aviodrome.nl/&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Bijlmermeer / De Boom Die Alles Zag &lt;a href=&quot;https://en.m.wikipedia.org/wiki/De_Boom_Die_Alles_Zag&quot; target='_blank'&gt;https://en.m.wikipedia.org/wiki/De_Boom_Die_Alles_Zag&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Waterlooplein Market&lt;/p&gt;&lt;p&gt;Julius Taminiau Architects B.V. IJsbaanpad 66e&lt;/p&gt;&lt;p&gt;Figee crane 2868 Surinamekade 34, 1019 BH&lt;/p&gt;&lt;p&gt;Kubuswoningen (Rotterdam) &lt;a href=&quot;https://www.kubuswoning.nl/en/visit.html&quot; target='_blank'&gt;https://www.kubuswoning.nl/en/visit.html&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;找一些二手市场 Kringloopwinkel&lt;/p&gt;
&lt;p&gt;Ij-Hallen &lt;a href=&quot;https://ijhallen.nl/en/index.php&quot; target='_blank'&gt;https://ijhallen.nl/en/index.php&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Museum Speelklok (Utrecht) &lt;a href=&quot;https://www.museumspeelklok.nl/lang/ch/&quot; target='_blank'&gt;https://www.museumspeelklok.nl/lang/ch/&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Hagen Island (Hague) &lt;a href=&quot;https://www.mvrdv.com/projects/155/hagen-island&quot; target='_blank'&gt;https://www.mvrdv.com/projects/155/hagen-island&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;WATERLOOPLEIN MARKET&lt;/p&gt;2023/09/05 18:53:31 - 2023/10/14 22:02:30</content></entry><entry><id>https://www.wellobserve.com/?post=20231008012624</id><title type='html'> 那么的维基 简易幻灯片</title><link rel='alternate' href='https://www.wellobserve.com/?post=20231008012624' /><published>2023-10-08T01:26:24+08:00</published><updated>2023-10-08T12:47:10+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;h1&gt; 那么的维基 简易幻灯片&lt;/h1&gt;
&lt;p&gt;示例幻灯片 &lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;gray smaller&quot;&gt;点击鼠标或者使用右下角的控制按钮。 &lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;这是新的一页 &lt;/h2&gt;
&lt;p&gt;正常编写 markdown 内容即可。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;这是一个列表&lt;/li&gt;
&lt;li&gt;看上去还行&lt;/li&gt;
&lt;/ul&gt;&lt;div class='imd imd_float'&gt;&lt;a href='?show_image=20230503211123.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/20230503211123.jpg&quot; alt=&quot;图片 float&quot;  data-imgsrc='20230503211123.jpg' class='original_img'&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h2&gt;也可以添加图片 &lt;/h2&gt;
&lt;p&gt;就像这样…… &lt;/p&gt;&lt;h1&gt;感谢使用那么的维基幻灯片 &lt;/h1&gt;
&lt;p&gt;按下 &lt;code&gt;ESC&lt;/code&gt; 或者使用右下角 &lt;code&gt;X&lt;/code&gt;按钮退出放映。&lt;/p&gt;
&lt;p&gt;立刻下载 &lt;a href=&quot;?post=20211107011347&quot; onclick='ShowWaitingBar()'&gt;那么的维基&lt;/a&gt; ！&lt;/p&gt;
2023/10/08 01:26:24 - 2023/10/08 12:47:10</content></entry><entry><id>https://www.wellobserve.com/?post=20231004122302</id><title type='html'>前天</title><link rel='alternate' href='https://www.wellobserve.com/?post=20231004122302' /><published>2023-10-04T12:23:02+08:00</published><updated>2023-10-04T12:23:02+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;前天&lt;/p&gt;

&lt;div class='p_row'&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20231004122227.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20231004122227.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20231004122227.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20231004122231.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20231004122231.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20231004122231.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20231004122226.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20231004122226.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20231004122226.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'&gt;&lt;/div&gt;&lt;/div&gt;2023/10/04 12:23:02 - 2023/10/04 12:23:02</content></entry><entry><id>https://www.wellobserve.com/?post=20231004093738</id><title type='html'>银行又在搞啥子</title><link rel='alternate' href='https://www.wellobserve.com/?post=20231004093738' /><published>2023-10-04T09:37:38+08:00</published><updated>2023-10-04T09:37:38+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;银行又在搞啥子&lt;/p&gt;2023/10/04 09:37:38 - 2023/10/04 09:37:38</content></entry><entry><id>https://www.wellobserve.com/?post=20230928161337</id><title type='html'>文字处理程序应当只存在一个排列属性，就是书写方向的起始点，这个起点必须连续可调，同时两侧止点、行间距等也必须这样视觉上连续可调，用手拖动的方式直接调。</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230928161337' /><published>2023-09-28T16:13:37+08:00</published><updated>2023-09-28T16:13:37+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;文字处理程序应当只存在一个排列属性，就是书写方向的起始点，这个起点必须连续可调，同时两侧止点、行间距等也必须这样视觉上连续可调，用手拖动的方式直接调。&lt;/p&gt;2023/09/28 16:13:37 - 2023/09/28 16:13:37</content></entry><entry><id>https://www.wellobserve.com/?post=20230912143941</id><title type='html'>747</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230912143941' /><published>2023-09-12T14:39:41+08:00</published><updated>2023-09-19T16:05:47+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;h2&gt;747&lt;/h2&gt;

&lt;p&gt;（使用好得涂 v0.2）&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230912143859.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/20230912143859.jpg&quot; alt=&quot;keep_inline original&quot;  data-imgsrc='20230912143859.jpg' class='original_img'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;怪事 为啥这张有点红&lt;/p&gt;2023/09/12 14:39:41 - 2023/09/19 16:05:47</content></entry><entry><id>https://www.wellobserve.com/?post=20220606132019</id><title type='html'>偶尔发点中间图</title><link rel='alternate' href='https://www.wellobserve.com/?post=20220606132019' /><published>2022-06-06T13:20:19+08:00</published><updated>2023-09-10T22:27:51+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;h1&gt;偶尔发点中间图&lt;/h1&gt;
&lt;p&gt;...&lt;/p&gt;&lt;p&gt;NSZ&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20220606131934.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20220606131934.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20220606131934.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;又不会画了&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230113141225.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230113141225.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230113141225.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;测试 好得涂 0.2 的笔&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230910222257.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230910222257.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230910222257.jpg' data-parent='20230912143859'&gt;&lt;/a&gt;&lt;/div&gt;2022/06/06 13:20:19 - 2023/09/10 22:27:51</content></entry><entry><id>https://www.wellobserve.com/?post=20230909223326</id><title type='html'>emmm 没有试验新好得涂</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230909223326' /><published>2023-09-09T22:33:26+08:00</published><updated>2023-09-09T22:33:41+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;emmm 没有试验新好得涂&lt;/p&gt;&lt;p&gt;应该把版本改成0.2了&lt;/p&gt;2023/09/09 22:33:26 - 2023/09/09 22:33:41</content></entry><entry><id>https://www.wellobserve.com/?post=20230908183558</id><title type='html'>试了下CHDK上的脚本，居然可以</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230908183558' /><published>2023-09-08T18:35:58+08:00</published><updated>2023-09-09T16:33:44+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;试了下CHDK上的脚本，居然可以&lt;/p&gt;
&lt;p&gt;导出了G3X内核&lt;/p&gt;&lt;p&gt;安装arm工具链&lt;/p&gt;&lt;p&gt;反汇编一个&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230908190243.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230908190243.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230908190243.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;g3x ROM初始地址是 &lt;code&gt;0xfc000000&lt;/code&gt;&lt;/p&gt;&lt;p&gt;没闪成功 哈哈哈哈哈&lt;/p&gt;&lt;p&gt;可以闪了就是还不能启动&lt;/p&gt;
&lt;p&gt;能运行到 boot()&lt;/p&gt;2023/09/08 18:35:58 - 2023/09/09 16:33:44</content></entry><entry><id>https://www.wellobserve.com/?post=20230903132620</id><title type='html'>拿到证了哈</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230903132620' /><published>2023-09-03T13:26:20+08:00</published><updated>2023-09-03T13:26:20+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;拿到证了哈&lt;/p&gt;2023/09/03 13:26:20 - 2023/09/03 13:26:20</content></entry><entry><id>https://www.wellobserve.com/?post=20230812215853</id><title type='html'>模拟水</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230812215853' /><published>2023-08-12T21:58:53+08:00</published><updated>2023-08-12T21:58:53+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;模拟水&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://oimo.io/works/water/&quot; target='_blank'&gt;https://oimo.io/works/water/&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;2023/08/12 21:58:53 - 2023/08/12 21:58:53</content></entry><entry><id>https://www.wellobserve.com/?post=20221222165617</id><title type='html'>“好得涂”软件使用说明书 </title><link rel='alternate' href='https://www.wellobserve.com/?post=20221222165617' /><published>2022-12-22T16:56:17+08:00</published><updated>2023-08-08T17:21:50+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;h1&gt;“好得涂”软件使用说明书 &lt;/h1&gt;&lt;h2&gt;初次使用&lt;/h2&gt;
&lt;p&gt;好得涂会在程序根目录下储存用户设置。您可以将整个目录一起拷贝到别的地方去，设置将会保留。&lt;/p&gt;
&lt;p&gt;点击左上角的圆圈“🞆”按钮可以随时调出可用的面板，您可以通过拖动面板将布局调整为您需要的样子。要停靠浮动面板，点击“🗖”按钮，然后移动鼠标选择希望停靠的位置，然后点击鼠标左键确认。要将停靠的面板撕下来，按住面板标题、拖动鼠标到区域中央位置并松开。您可以拖动浮动面板的右下角调节面板大小。点击画布底部中央的“🡹”按钮可将画布扩展为整个窗口。&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20221229174034.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221229174034.jpg&quot; alt=&quot;图片 keep_inline&quot;  data-imgsrc='20221229174034.jpg'&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;您也可以通过窗口顶部的“🗗”新窗口按钮创建多个窗口，这允许将面板停靠在别的显示屏。&lt;/p&gt;
&lt;p&gt;如果您下载或者创建了笔刷文件，可以将它们放置在好得涂软件根目录或者 &lt;code&gt;UDFResource&lt;/code&gt; 目录，程序启动时将自动读取它们。您也可以手动读取在别的地方的资源。&lt;/p&gt;
&lt;h2&gt;开始画图&lt;/h2&gt;
&lt;p&gt;直接在画布上按住并拖动鼠标就能画图。好得涂支持 Wacom 和 Surface ipts 压感笔输入（包含倾斜值）。如果你不小心关闭了画布面板，再练习前述界面操作，重新打开一个即可。&lt;/p&gt;
&lt;p&gt;请注意检查工具面板是否选择为“绘画”模式，并且已经选择笔刷和图层（如果没有手动删除，默认情况下都能直接绘画）。&lt;/p&gt;
&lt;p&gt;拖动拾色器的“◿”标志以调节拾色器大小。&lt;/p&gt;
&lt;p&gt;按住鼠标中键可以移动画布，按住 Ctrl+鼠标中键可以缩放画布，鼠标右键或者 Ctrl+鼠标左键可以吸取画布颜色。&lt;/p&gt;
&lt;p&gt;其他快捷键：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;操作&lt;/th&gt;
&lt;th&gt;快捷键&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;笔刷缩小/放大&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[&lt;/code&gt; / &lt;code&gt;]&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;撤销/重做&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Ctrl+Z&lt;/code&gt; / &lt;code&gt;Ctrl+Shift+Z&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;撤销/重做&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Ctrl+]&lt;/code&gt; / &lt;code&gt;Ctrl+[&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;画布缩小/放大&lt;/td&gt;
&lt;td&gt;&lt;code&gt;,&lt;/code&gt; / &lt;code&gt;.&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;快速切换笔刷（见下文）&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0&lt;/code&gt; ~ &lt;code&gt;9&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;将工具切换为“裁剪”可以调节画布的最终裁剪区域。默认情况下画布未启用边界，点击“显示边界”可以切换。边界区域可以拖动。将鼠标放置在区域外部拖动则可以从不同方向调节区域大小。&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20221229174232.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221229174232.jpg&quot; alt=&quot;图片 keep_inline&quot;  data-imgsrc='20221229174232.jpg'&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;好得涂的所有图像内容完全储存在显存上，如果您需要画特别特别大的图或者带有相当多图层的图，请注意显存开销。针对核心显卡，目前典型的英特尔核心显卡至多能够访问客户机内存一半的空间作为显存，一些计算机允许在BIOS中调节集成显卡内存访问限制。好得涂的画布为16位深、1024像素宽高纹理的拼合，因此一张一千像素见方的图大约占据8MB～32MB的显存，可以此估算您绘画所需的显存空间。&lt;/p&gt;
&lt;h3&gt;图层&lt;/h3&gt;
&lt;p&gt;好得涂带有简单的图层。你可以增加、删除图层，也可以调节图层混合和透明度。目前版本的图层不可移动，并且只支持“正常”和“相加”两种混合模式。拖动图层名称左边的“☰”标志可以调节图层顺序。点击“🠳”可将当前图层合并到它下面的那个图层。&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20221229174323.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221229174323.jpg&quot; alt=&quot;图片 keep_inline&quot;  data-imgsrc='20221229174323.jpg'&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;可以调节背景颜色。在开始绘画后，背景颜色会锁定以防止意外更改，要再次调节，点击“锁定”按钮，背景颜色即解锁。&lt;/p&gt;
&lt;p&gt;可以在图层面板中设置整个画布的色彩空间。一般建议始终使用sRGB。&lt;/p&gt;
&lt;h3&gt;储存画布&lt;/h3&gt;
&lt;p&gt;要储存画布，使用 文件→保存。若未指定文件，则会弹出保存对话框。点击主画布条目的右侧的下拉菜单选择“&amp;lt; 储存为新文件 &amp;gt;”，并在弹出的对话框中指定一个文件。好得涂支持三种扩展名用于保存数据：“udf”、“ourpaint”和“ourbrush”。您可以使用任何一种，不过视觉上为了区分画布，建议使用“ourpaint”表示画布数据。选择好文件后，点击对话框右下角的“保存已修改的所有”以保存。&lt;/p&gt;
&lt;p&gt;使用 文件→读取 以读取任何数据文件。&lt;/p&gt;
&lt;p&gt;未保存的数据块名称的左侧会显示一个“🌑”符号。在任何内容未储存/未指定的情况下，关闭好得涂都会弹出保存窗口。&lt;/p&gt;
&lt;p&gt;您也可以将笔刷指定到与画布相同的文件保存，此时若打开该画布文件，对应的笔刷也会同时加载。&lt;/p&gt;
&lt;h2&gt;导入和导出图像&lt;/h2&gt;
&lt;p&gt;好得涂支持导入和导出 PNG 格式的图像。不支持带交错的PNG文件，若您发现某些文件导不进来，请用别的图像处理程序另存为不带交错的PNG文件。&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20221229174441.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221229174441.jpg&quot; alt=&quot;图片 keep_inline&quot;  data-imgsrc='20221229174441.jpg'&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;通过 文件→导入图层 可以导入 PNG 文件为新图层。此时会出现对话框提示如何处理该文件的色彩，一般情况下保持默认即可，除非这个文件的记录方式特殊，需要以不同于文件默认方法解释像素的含义。&lt;/p&gt;
&lt;p&gt;通过 文件→导出图层 或 导出图像 可以将画布导出为 PNG 图像。若启用了画布边框，则导出整体图像时使用该边框指定的范围。导出时也可以指定色彩空间选项，建议保持默认。&lt;/p&gt;
&lt;h2&gt;设置笔刷&lt;/h2&gt;
&lt;p&gt;好得涂目前的版本使用圆形/椭圆形笔触点。可以在“工具”面板的笔刷模式下调节笔刷的各个属性。启用“默认为橡皮擦”将笔刷设置为默认擦除模式，在从别的笔刷选择为该笔刷时将自动启用橡皮擦模式。你也可以手动点击“擦除”按钮将任何笔刷作为橡皮擦使用。&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20221229174606.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221229174606.jpg&quot; alt=&quot;图片 keep_inline&quot;  data-imgsrc='20221229174606.jpg'&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;部分笔刷属性支持压感动态。点击“P”按钮即可启用对应属性的压力控制。&lt;/p&gt;
&lt;p&gt;点击笔刷名称右侧的“☰”按钮，可在下方设置该笔刷绑定的数字快捷键。设置为0~9的任意一个，然后通过键盘就能快速切换笔刷。&lt;/p&gt;
&lt;h3&gt;可编程笔刷&lt;/h3&gt;
&lt;p&gt;启用笔刷的“使用节点”选项即可启用可编程笔刷。点击“编辑”将弹出该笔刷的程序编辑面板，你也可以手工打开“笔刷节点”面板然后在右上角下拉菜单选择您要编辑的笔刷。&lt;/p&gt;
&lt;p&gt;默认状况下笔刷程序为空，需要手工编辑节点。点击“新挂架”添加一个挂架，然后点击“新节点”添加笔刷节点。“好得涂”类型下的“笔刷设备”和“笔刷设置”提供了你所需要的各种输入，“驱动”类型下的“笔刷输出”则用于控制笔刷最终的输出样式。至于如何从各种输入计算出笔刷的最终样式，则取决于您的创意。&lt;/p&gt;
&lt;p&gt;在任何节点上点击右键，弹出菜单可供左右移动和删除节点。要上下移动节点，拖动“☰”符号。要在挂架内给节点重新排序，用右键拖动该符号或者点击该符号成为“🡙”，之后用左键上下拖动。&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20221229174819.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221229174819.jpg&quot; alt=&quot;图片 keep_inline&quot;  data-imgsrc='20221229174819.jpg'&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;在这里阅读关于&lt;a href=&quot;?post=20230217162231&quot; onclick='ShowWaitingBar()'&gt;好得涂笔刷节点的参数说明&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;您可以参考学习好得涂自带笔刷以了解可编程笔刷的工作方式。&lt;/p&gt;
&lt;p&gt;一些注意事项：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不建议输出变化范围很大的位移值，这将使得撤销等操作变慢，因为笔触会占用更宽的矩形包围尺寸。&lt;/li&gt;
&lt;li&gt;输入的“角度”是笔刷拖动的方向，典型范围为 [-pi,pi] ，由于平滑插值需要，有的时候该值会+-2pi，但不应影响直接对该值求三角函数。&lt;/li&gt;
&lt;li&gt;笔刷的输出“角度”是椭圆笔刷触点的压扁方向，显然只在“扁度”不为零时有可见的效果。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;储存和分享笔刷&lt;/h3&gt;
&lt;p&gt;使用 文件→另存为 储存笔刷。使用与画布相同的方法指定笔刷储存文件。在文件选择菜单左侧有一串数据块标识符，若想要好得涂在启动时自动加载该笔刷，则将其命名为包含 &lt;code&gt;OURBRUSH&lt;/code&gt; 字样的名字，同时应保持其与别的笔刷标识不重名（在好得涂软件根目录和已配置的资源文件夹下的任何一个都不能重名）。若出现重名笔刷，那么好得涂只会加载其中一个（不确定具体哪一个）。&lt;/p&gt;
&lt;p&gt;储存完笔刷后，就可以直接分享该文件。将笔刷文件放置在好得涂软件根目录或者您配置的任意资源文件夹下均可（见后文设置）。&lt;/p&gt;
&lt;h2&gt;色彩管理&lt;/h2&gt;
&lt;p&gt;好得涂带有一个很基础的色彩管理功能。对于Linux用户，若需要该功能正常运行，由于操作系统局限，您需要确保您的显示输出未经过全屏幕icc映射。好得涂假设输出始终为sRGB原色，即使是在宽色域显示器上也是如此（显示器将始终显示完全色彩范围）。建议始终在好得涂中使用 sRGB 显示 和 sRGB 画布。若您的显示屏基本完全覆盖 AdobeRGB色域，则可以将二者设置为 Clay 色彩空间（该配置完全兼容 AdobeRGB 1998）。此时在导出时需要注意是否继续使用 Clay 色彩空间或转换为 sRGB，目前仍然有许多程序没有正确支持PNG文件的内置icc信息。好得涂在导入、导出图像时会弹出对话框方便您选择色彩管理的行为。绝大多数情况下，建议仅使用 sRGB。&lt;/p&gt;
&lt;p&gt;点击标题栏的“🟩”图标可以切换显示溢出的颜色。当您的画布设置为 Clay 色彩空间时，将显示切换为 sRGB 色彩空间可以检查超过 sRGB 色彩空间范围的颜色。&lt;/p&gt;
&lt;h2&gt;设置&lt;/h2&gt;
&lt;p&gt;通过 选项→显示用户设置 调出用户设置面板。在“好得涂”一页可以调节撤销步数，至多可以调节到256步。读取任何数据文件之后，撤销历史将清空。&lt;/p&gt;
&lt;p&gt;&lt;span class='text_highlight'&gt; 如何将“好得涂”设置为汉语界面： &lt;/span&gt; Options→Show User Preferences→Display 滚动到最底部→Enable Translations: 点击启用界面翻译，并确认下方语言选择为“zh-CN”。&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20221229174912.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20221229174912.jpg&quot; alt=&quot;图片 keep_inline&quot;  data-imgsrc='20221229174912.jpg'&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;在“资源”一页可以设置资源目录。你可以添加你喜欢的目录，Our Paint 在启动时会加载这些目录下带有 &lt;code&gt;OURBRUSH&lt;/code&gt; 标识的笔刷。&lt;/p&gt;
&lt;h2&gt;在 Windows 上的特殊注意事项&lt;/h2&gt;
&lt;p&gt;目前好得涂在 Windows 上的功能不全，如果遇到问题，请在代码仓库报告。&lt;/p&gt;
&lt;p&gt;如果遇到手写笔下笔延迟（笔画稍等才开始跟随笔尖），请在 Windows 笔设置中&lt;strong&gt;&lt;em&gt;关闭&lt;/em&gt;&lt;/strong&gt; “允许我将手写笔用作鼠标（如果可用）”选项。&lt;/p&gt;
&lt;p&gt;好得涂可选通过 Windows Ink （各种平板电脑的触控笔）或者 Wintab （Wacom 数位板） 获得压感信息，您的手写笔输入装置可能暂时不受支持。&lt;/p&gt;
&lt;h2&gt;启动参数参考&lt;/h2&gt;
&lt;p&gt;从好得涂 v0.1c 起，可使用启动参数调试程序和给出对开发者有用的信息。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--gl-version=4.3&lt;/code&gt; 强制以指定版本 OpenGL 启动。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--gl-debug&lt;/code&gt; 强制输出 OpenGL 调试和性能信息。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--log&lt;/code&gt; 将 LaGUI 工作信息输出至标准输出。&lt;/li&gt;
&lt;/ul&gt;
2022/12/22 16:56:17 - 2023/08/08 17:21:50</content></entry><entry><id>https://www.wellobserve.com/?post=20230805221039</id><title type='html'>额</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230805221039' /><published>2023-08-05T22:10:39+08:00</published><updated>2023-08-05T22:10:39+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;额&lt;/p&gt;2023/08/05 22:10:39 - 2023/08/05 22:10:39</content></entry><entry><id>https://www.wellobserve.com/?post=20230728191116</id><title type='html'>车车晚点</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230728191116' /><published>2023-07-28T19:11:16+08:00</published><updated>2023-07-28T19:11:16+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;车车晚点&lt;/p&gt;2023/07/28 19:11:16 - 2023/07/28 19:11:16</content></entry><entry><id>https://www.wellobserve.com/?post=20230727233117</id><title type='html'>Emergency escape by Chen Wenling</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230727233117' /><published>2023-07-27T23:31:17+08:00</published><updated>2023-07-27T23:31:17+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;Emergency escape by Chen Wenling&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://inspirationist.net/emergency-escape-by-chen-wenling/&quot; target='_blank'&gt;http://inspirationist.net/emergency-escape-by-chen-wenling/&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;2023/07/27 23:31:17 - 2023/07/27 23:31:17</content></entry><entry><id>https://www.wellobserve.com/?post=20230727084701</id><title type='html'>啊啊啊啊啊啊下雨</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230727084701' /><published>2023-07-27T08:47:01+08:00</published><updated>2023-07-27T18:07:17+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;啊啊啊啊啊啊下雨&lt;/p&gt;&lt;p&gt;啊啊啊啊啊为什么又不下了&lt;/p&gt;2023/07/27 08:47:01 - 2023/07/27 18:07:17</content></entry><entry><id>https://www.wellobserve.com/?post=20230726210333</id><title type='html'>早点睡早点睡</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230726210333' /><published>2023-07-26T21:03:33+08:00</published><updated>2023-07-26T21:03:33+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;早点睡早点睡&lt;/p&gt;2023/07/26 21:03:33 - 2023/07/26 21:03:33</content></entry><entry><id>https://www.wellobserve.com/?post=20230712215414</id><title type='html'>去北京</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230712215414' /><published>2023-07-12T21:54:14+08:00</published><updated>2023-07-24T17:43:10+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;去北京&lt;/p&gt;

&lt;div class='imd'&gt;&lt;a href='?show_image=20230712215342.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230712215342.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230712215342.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;坐A350&lt;/p&gt;
&lt;div class='p_row'&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230712215346.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230712215346.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230712215346.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230712215347.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230712215347.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230712215347.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230712215340.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230712215340.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230712215340.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230712215341.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230712215341.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230712215341.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230712215344.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230712215344.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230712215344.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230712215345.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230712215345.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230712215345.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230712215348.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230712215348.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230712215348.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=202307122153450.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/202307122153450.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='202307122153450.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230712215349.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230712215349.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230712215349.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;飞机上&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230722111811.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722111811.jpg&quot; alt=&quot;图片 keep_inline&quot;  data-imgsrc='20230722111811.jpg'&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class='p_row'&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722111748.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722111748.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722111748.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722111749.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722111749.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722111749.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722111754.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722111754.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722111754.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722111755.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722111755.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722111755.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722111756.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722111756.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722111756.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722111757.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722111757.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722111757.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722111800.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722111800.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722111800.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722111801.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722111801.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722111801.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722111808.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722111808.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722111808.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722111809.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722111809.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722111809.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722111736.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722111736.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722111736.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722111805.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722111805.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722111805.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722112424.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722112424.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722112424.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;房山&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230722112335.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722112335.jpg&quot; alt=&quot;图片 keep_inline&quot;  data-imgsrc='20230722112335.jpg'&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class='p_row'&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722112430.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722112430.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722112430.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722112333.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722112333.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722112333.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722112314.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722112314.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722112314.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;好得涂&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230722112425.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722112425.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722112425.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;博物馆 1&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230722112311.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722112311.jpg&quot; alt=&quot;图片 keep_inline&quot;  data-imgsrc='20230722112311.jpg'&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class='p_row'&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722112431.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722112431.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722112431.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=202307221124110.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/202307221124110.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='202307221124110.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722112416.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722112416.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722112416.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722112414.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722112414.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722112414.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722112349.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722112349.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722112349.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722112321.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722112321.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722112321.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722112312.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722112312.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722112312.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722112320.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722112320.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722112320.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722112347.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722112347.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722112347.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722112303.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722112303.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722112303.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;博物馆 2&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230722112259.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722112259.jpg&quot; alt=&quot;图片 keep_inline&quot;  data-imgsrc='20230722112259.jpg'&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class='p_row'&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722112411.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722112411.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722112411.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722112420.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722112420.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722112420.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722112855.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722112855.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722112855.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722112913.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722112913.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722112913.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722112918.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722112918.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722112918.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722112919.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722112919.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722112919.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722112922.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722112922.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722112922.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722112948.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722112948.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722112948.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722112956.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722112956.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722112956.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722113019.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722113019.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722113019.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722113307.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722113307.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722113307.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722113310.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722113310.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722113310.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722113317.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722113317.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722113317.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722113318.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722113318.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722113318.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;博物馆 3&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230722113014.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722113014.jpg&quot; alt=&quot;图片 keep_inline&quot;  data-imgsrc='20230722113014.jpg'&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class='p_row'&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722113454.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722113454.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722113454.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722113006.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722113006.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722113006.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722112925.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722112925.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722112925.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722112946.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722112946.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722112946.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722112856.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722112856.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722112856.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722113028.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722113028.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722113028.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722113031.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722113031.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722113031.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722113257.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722113257.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722113257.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722113009.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722113009.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722113009.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722113007.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722113007.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722113007.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722113303.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722113303.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722113303.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722113306.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722113306.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722113306.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722113322.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722113322.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722113322.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;博物馆 4&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230722113421.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722113421.jpg&quot; alt=&quot;图片 keep_inline&quot;  data-imgsrc='20230722113421.jpg'&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class='p_row'&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722113401.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722113401.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722113401.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722113408.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722113408.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722113408.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722113441.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722113441.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722113441.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722113444.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722113444.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722113444.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722113449.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722113449.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722113449.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722113327.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722113327.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722113327.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722113337.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722113337.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722113337.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722113358.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722113358.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722113358.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722113359.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722113359.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722113359.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=202307221134080.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/202307221134080.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='202307221134080.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722113440.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722113440.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722113440.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722113443.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722113443.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722113443.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722113442.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722113442.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722113442.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722114947.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722114947.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722114947.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;回来&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230722114853.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722114853.jpg&quot; alt=&quot;图片 keep_inline&quot;  data-imgsrc='20230722114853.jpg'&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class='p_row'&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722114859.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722114859.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722114859.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722114911.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722114911.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722114911.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722114913.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722114913.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722114913.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722114927.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722114927.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722114927.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722114906.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722114906.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722114906.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722114903.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722114903.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722114903.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722114857.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722114857.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722114857.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722114909.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722114909.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722114909.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;飞机上&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230722114928.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722114928.jpg&quot; alt=&quot;图片 keep_inline&quot;  data-imgsrc='20230722114928.jpg'&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class='p_row'&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722114904.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722114904.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722114904.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722114931.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722114931.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722114931.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722114930.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722114930.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722114930.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722114924.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722114924.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722114924.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230722114935.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230722114935.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230722114935.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;没得了&lt;/p&gt;2023/07/12 21:54:14 - 2023/07/24 17:43:10</content></entry><entry><id>https://www.wellobserve.com/?post=20230723112325</id><title type='html'>昨天</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230723112325' /><published>2023-07-23T11:23:25+08:00</published><updated>2023-07-23T11:23:25+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;昨天&lt;/p&gt;

&lt;div class='imd'&gt;&lt;a href='?show_image=20230723112220.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230723112220.jpg&quot; alt=&quot;图片 keep_inline&quot;  data-imgsrc='20230723112220.jpg'&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class='p_row'&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230723112230.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230723112230.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230723112230.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230723112232.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230723112232.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230723112232.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230723112233.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230723112233.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230723112233.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'&gt;&lt;/div&gt;&lt;/div&gt;2023/07/23 11:23:25 - 2023/07/23 11:23:25</content></entry><entry><id>https://www.wellobserve.com/?post=20230722120743</id><title type='html'>图传多了预览一页张数不够找不到emmm</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230722120743' /><published>2023-07-22T12:07:43+08:00</published><updated>2023-07-22T12:07:43+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;图传多了预览一页张数不够找不到emmm&lt;/p&gt;2023/07/22 12:07:43 - 2023/07/22 12:07:43</content></entry><entry><id>https://www.wellobserve.com/?post=20230423202824</id><title type='html'>LuaJIT 好用</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230423202824' /><published>2023-04-23T20:28:24+08:00</published><updated>2023-07-21T23:06:30+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;LuaJIT 好用&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230423202809.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230423202809.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230423202809.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;按道理一个 LuaState 的状态都是共享的，因此分享变量什么的也没有问题，而且这样一来比用节点get/set还方便因为不需要 laGUI 来管理和与lua同步（虽然要这么做也没什么大问题）。&lt;/p&gt;&lt;p&gt;&lt;code&gt;luaL_loadstring()&lt;/code&gt; 会将载入的字符串作为一个函数推到栈上，然后理论上可以通过 &lt;code&gt;lua_setglobal()&lt;/code&gt; 弹出并设置一个全局名字，之后要调用的时候获得对应的全局对象，压回去然后 &lt;code&gt;lua_pcall()&lt;/code&gt; 应该就可以了。&lt;/p&gt;&lt;p&gt;返回一个表就可以用点引用的方式调里面的函数。&lt;/p&gt;&lt;p&gt;用 &lt;code&gt;dlsym&lt;/code&gt; 可以从符号表里找函数入口地址。&lt;/p&gt;&lt;p&gt;可以用单个 &lt;code&gt;lua_State&lt;/code&gt; ，提供主要内建变量，如 &lt;code&gt;object&lt;/code&gt; 等用于每个实例的访问，同时带有一个实例列表以实际储存每个实例的表，用唯一索引访问，删除后原索引保留因此这样做没有问题。&lt;/p&gt;
&lt;p&gt;要读出到节点来访问，则读当前实例的表，应该可行。这样还有个好处是可能不需要再做一套属性系统了。&lt;/p&gt;2023/04/23 20:28:24 - 2023/07/21 23:06:30</content></entry><entry><id>https://www.wellobserve.com/?post=20230718230326</id><title type='html'>搞忘把剩下的照片传上来了</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230718230326' /><published>2023-07-18T23:03:26+08:00</published><updated>2023-07-18T23:03:26+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;搞忘把剩下的照片传上来了&lt;/p&gt;2023/07/18 23:03:26 - 2023/07/18 23:03:26</content></entry><entry><id>https://www.wellobserve.com/?post=20230629220208</id><title type='html'>咦怎么还没到</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230629220208' /><published>2023-06-29T22:02:08+08:00</published><updated>2023-07-11T21:42:52+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;咦怎么还没到&lt;/p&gt;&lt;p&gt;怪嘞&lt;/p&gt;&lt;p&gt;Emmmmm&lt;/p&gt;&lt;p&gt;峨峨峨峨峨峨峨&lt;/p&gt;&lt;p&gt;是因为没有外汇账户&lt;/p&gt;2023/06/29 22:02:08 - 2023/07/11 21:42:52</content></entry><entry><id>https://www.wellobserve.com/?post=20230708113523</id><title type='html'>Nasa 的旋转爆炸引擎试车</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230708113523' /><published>2023-07-08T11:35:23+08:00</published><updated>2023-07-08T11:35:23+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;Nasa 的旋转爆炸引擎试车&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://twitter.com/NASA_Marshall/status/1619379785234259969?t=jyrdRrOd_pWZXqEIvCf8qg&amp;amp;s=19&quot; target='_blank'&gt;https://twitter.com/NASA_Marshall/status/1619379785234259969?t=jyrdRrOd_pWZXqEIvCf8qg&amp;amp;s=19&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;2023/07/08 11:35:23 - 2023/07/08 11:35:23</content></entry><entry><id>https://www.wellobserve.com/?post=20230702171702</id><title type='html'>今天</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230702171702' /><published>2023-07-02T17:17:02+08:00</published><updated>2023-07-02T22:47:22+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;今天&lt;/p&gt;

&lt;div class='p_row'&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230702171646.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230702171646.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230702171646.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230702171648.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230702171648.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230702171648.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;花花遭鱼吃完了&lt;/p&gt;2023/07/02 17:17:02 - 2023/07/02 22:47:22</content></entry><entry><id>https://www.wellobserve.com/?post=20230702103728</id><title type='html'>前几天</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230702103728' /><published>2023-07-02T10:37:28+08:00</published><updated>2023-07-02T10:37:28+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;前几天&lt;/p&gt;

&lt;div class='p_row'&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230702103711.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230702103711.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230702103711.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230702103712.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230702103712.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230702103712.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'&gt;&lt;/div&gt;&lt;/div&gt;2023/07/02 10:37:28 - 2023/07/02 10:37:28</content></entry><entry><id>https://www.wellobserve.com/?post=20230628211839</id><title type='html'>@到了</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230628211839' /><published>2023-06-28T21:18:39+08:00</published><updated>2023-06-28T21:18:39+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>
&lt;p&gt;FPGA游戏机 &lt;a href=&quot;https://www.analogue.co/pocket&quot; target='_blank'&gt;https://www.analogue.co/pocket&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;2023/06/28 21:18:39 - 2023/06/28 21:18:39</content></entry><entry><id>https://www.wellobserve.com/?post=20230627221857</id><title type='html'>(X^{2}) 这是什么格式</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230627221857' /><published>2023-06-27T22:18:57+08:00</published><updated>2023-06-27T22:21:14+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;(X^{2}) 这是什么格式&lt;/p&gt;&lt;p&gt;好像是LaTeX 这个这里不支持……&lt;/p&gt;2023/06/27 22:18:57 - 2023/06/27 22:21:14</content></entry><entry><id>https://www.wellobserve.com/?post=20230627160327</id><title type='html'>emmmm</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230627160327' /><published>2023-06-27T16:03:27+08:00</published><updated>2023-06-27T16:03:27+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;emmmm&lt;/p&gt;2023/06/27 16:03:27 - 2023/06/27 16:03:27</content></entry><entry><id>https://www.wellobserve.com/?post=20230620121839</id><title type='html'>驱动又坏了 算了</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230620121839' /><published>2023-06-20T12:18:39+08:00</published><updated>2023-06-20T12:18:39+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;驱动又坏了 算了&lt;/p&gt;2023/06/20 12:18:39 - 2023/06/20 12:18:39</content></entry><entry><id>https://www.wellobserve.com/?post=20230617182708</id><title type='html'>?</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230617182708' /><published>2023-06-17T18:27:08+08:00</published><updated>2023-06-17T18:27:08+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;?&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230617182656.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230617182656.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230617182656.jpg'&gt;&lt;/a&gt;&lt;/div&gt;2023/06/17 18:27:08 - 2023/06/17 18:27:08</content></entry><entry><id>https://www.wellobserve.com/?post=20230613232310</id><title type='html'>草 网站的rss会不会有问题</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230613232310' /><published>2023-06-13T23:23:10+08:00</published><updated>2023-06-13T23:24:32+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;草 网站的rss会不会有问题&lt;/p&gt;&lt;p&gt;暂时认为没有233&lt;/p&gt;2023/06/13 23:23:10 - 2023/06/13 23:24:32</content></entry><entry><id>https://www.wellobserve.com/?post=20230606142823</id><title type='html'>局部关闭的39号公路</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230606142823' /><published>2023-06-06T14:28:23+08:00</published><updated>2023-06-06T14:28:23+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;局部关闭的39号公路&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/California_State_Route_39&quot; target='_blank'&gt;https://en.wikipedia.org/wiki/California_State_Route_39&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;2023/06/06 14:28:23 - 2023/06/06 14:28:23</content></entry><entry><id>https://www.wellobserve.com/?post=20230605161617</id><title type='html'>额</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230605161617' /><published>2023-06-05T16:16:17+08:00</published><updated>2023-06-05T16:16:17+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;额&lt;/p&gt;2023/06/05 16:16:17 - 2023/06/05 16:16:17</content></entry><entry><id>https://www.wellobserve.com/?post=20230525152504</id><title type='html'>好像没有同步tinyshed的代码到卡上</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230525152504' /><published>2023-05-25T15:25:04+08:00</published><updated>2023-05-25T15:25:04+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;好像没有同步tinyshed的代码到卡上&lt;/p&gt;2023/05/25 15:25:04 - 2023/05/25 15:25:04</content></entry><entry><id>https://www.wellobserve.com/?post=20230518203159</id><title type='html'>把新帝拆下来</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230518203159' /><published>2023-05-18T20:31:59+08:00</published><updated>2023-05-18T20:31:59+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;把新帝拆下来&lt;/p&gt;2023/05/18 20:31:59 - 2023/05/18 20:31:59</content></entry><entry><id>https://www.wellobserve.com/?post=20230513220349</id><title type='html'>未命名</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230513220349' /><published>2023-05-13T22:03:49+08:00</published><updated>2023-05-13T22:03:49+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;未命名&lt;/p&gt;

&lt;div class='imd'&gt;&lt;a href='?show_image=20230513220325.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230513220325.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230513220325.jpg'&gt;&lt;/a&gt;&lt;/div&gt;2023/05/13 22:03:49 - 2023/05/13 22:03:49</content></entry><entry><id>https://www.wellobserve.com/?post=20230508212011</id><title type='html'>未命名</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230508212011' /><published>2023-05-08T21:20:11+08:00</published><updated>2023-05-08T21:24:52+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;未命名&lt;/p&gt;
&lt;p&gt;DS50000 的绿色。。。&lt;/p&gt;
&lt;p&gt;好像条的有点灰&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230508211950.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230508211950.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230508211950.jpg'&gt;&lt;/a&gt;&lt;/div&gt;2023/05/08 21:20:11 - 2023/05/08 21:24:52</content></entry><entry><id>https://www.wellobserve.com/?post=20230507204750</id><title type='html'>参数化雨声音</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230507204750' /><published>2023-05-07T20:47:50+08:00</published><updated>2023-05-07T20:47:50+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;参数化雨声音&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://ldjam.com/events/ludum-dare/53/rain-on-their-parade/synthesized-rain-patch-for-rain-on-their-parade&quot; target='_blank'&gt;https://ldjam.com/events/ludum-dare/53/rain-on-their-parade/synthesized-rain-patch-for-rain-on-their-parade&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;2023/05/07 20:47:50 - 2023/05/07 20:47:50</content></entry><entry><id>https://www.wellobserve.com/?post=20230507142845</id><title type='html'>今天</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230507142845' /><published>2023-05-07T14:28:45+08:00</published><updated>2023-05-07T14:28:45+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;今天&lt;/p&gt;

&lt;div class='imd'&gt;&lt;a href='?show_image=20230507142817.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230507142817.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230507142817.jpg'&gt;&lt;/a&gt;&lt;/div&gt;2023/05/07 14:28:45 - 2023/05/07 14:28:45</content></entry><entry><id>https://www.wellobserve.com/?post=20230505191607</id><title type='html'>未命名</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230505191607' /><published>2023-05-05T19:16:07+08:00</published><updated>2023-05-05T19:16:07+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;未命名&lt;/p&gt;

&lt;div class='imd'&gt;&lt;a href='?show_image=20230505191516.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230505191516.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230505191516.jpg'&gt;&lt;/a&gt;&lt;/div&gt;2023/05/05 19:16:07 - 2023/05/05 19:16:07</content></entry><entry><id>https://www.wellobserve.com/?post=20230505110927</id><title type='html'>未命名</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230505110927' /><published>2023-05-05T11:09:27+08:00</published><updated>2023-05-05T11:09:27+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;未命名&lt;/p&gt;

&lt;div class='imd'&gt;&lt;a href='?show_image=20230505110906.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230505110906.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230505110906.jpg'&gt;&lt;/a&gt;&lt;/div&gt;2023/05/05 11:09:27 - 2023/05/05 11:09:27</content></entry><entry><id>https://www.wellobserve.com/?post=20230504231517</id><title type='html'>笔坏了 emmm</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230504231517' /><published>2023-05-04T23:15:17+08:00</published><updated>2023-05-04T23:15:17+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;笔坏了 emmm&lt;/p&gt;2023/05/04 23:15:17 - 2023/05/04 23:15:17</content></entry><entry><id>https://www.wellobserve.com/?post=20230504211139</id><title type='html'>未命名</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230504211139' /><published>2023-05-04T21:11:39+08:00</published><updated>2023-05-04T21:11:39+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;未命名&lt;/p&gt;

&lt;div class='imd'&gt;&lt;a href='?show_image=20230504210903.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230504210903.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230504210903.jpg'&gt;&lt;/a&gt;&lt;/div&gt;2023/05/04 21:11:39 - 2023/05/04 21:11:39</content></entry><entry><id>https://www.wellobserve.com/?post=20230504153232</id><title type='html'>折纸飞机网</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230504153232' /><published>2023-05-04T15:32:32+08:00</published><updated>2023-05-04T15:32:32+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;折纸飞机网&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://papieravion.org&quot; target='_blank'&gt;https://papieravion.org&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;2023/05/04 15:32:32 - 2023/05/04 15:32:32</content></entry><entry><id>https://www.wellobserve.com/?post=20230503211254</id><title type='html'>Continental</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230503211254' /><published>2023-05-03T21:12:54+08:00</published><updated>2023-05-03T21:12:54+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;h2&gt;Continental&lt;/h2&gt;

&lt;div class='imd'&gt;&lt;a href='?show_image=20230503211123.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230503211123.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230503211123.jpg'&gt;&lt;/a&gt;&lt;/div&gt;2023/05/03 21:12:54 - 2023/05/03 21:12:54</content></entry><entry><id>https://www.wellobserve.com/?post=20230420192141</id><title type='html'>@到了</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230420192141' /><published>2023-04-20T19:21:41+08:00</published><updated>2023-04-20T19:21:41+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>
&lt;p&gt;音乐DSP大全&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.musicdsp.org&quot; target='_blank'&gt;https://www.musicdsp.org&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;2023/04/20 19:21:41 - 2023/04/20 19:21:41</content></entry><entry><id>https://www.wellobserve.com/?post=20230418114654</id><title type='html'>基于DAG的流控要放在每个分支的最后面，这可能看起来比较奇怪</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230418114654' /><published>2023-04-18T11:46:54+08:00</published><updated>2023-04-18T11:46:54+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;基于DAG的流控要放在每个分支的最后面，这可能看起来比较奇怪&lt;/p&gt;2023/04/18 11:46:54 - 2023/04/18 11:46:54</content></entry><entry><id>https://www.wellobserve.com/?post=20230417234044</id><title type='html'>@到了</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230417234044' /><published>2023-04-17T23:40:44+08:00</published><updated>2023-04-18T11:47:09+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>
&lt;p&gt;自己写超简单游戏 系列视频&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/playlist?list=PLrOv9FMX8xJE8NgepZR1etrsU63fDDGxO&quot; target='_blank'&gt;https://www.youtube.com/playlist?list=PLrOv9FMX8xJE8NgepZR1etrsU63fDDGxO&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;2023/04/17 23:40:44 - 2023/04/18 11:47:09</content></entry><entry><id>https://www.wellobserve.com/?post=20230406192651</id><title type='html'>今天</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230406192651' /><published>2023-04-06T19:26:51+08:00</published><updated>2023-04-11T23:13:28+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;今天&lt;/p&gt;

&lt;div class='imd'&gt;&lt;a href='?show_image=20230406192615.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230406192615.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230406192615.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;7号&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230410120357.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230410120357.jpg&quot; alt=&quot;图片 keep_inline&quot;  data-imgsrc='20230410120357.jpg'&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class='p_row'&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230410120320.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230410120320.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230410120320.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230410120315.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230410120315.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230410120315.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230410120313.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230410120313.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230410120313.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230410120332.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230410120332.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230410120332.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230410120351.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230410120351.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230410120351.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230410120345.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230410120345.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230410120345.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;8号&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230411160330.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411160330.jpg&quot; alt=&quot;图片 keep_inline&quot;  data-imgsrc='20230411160330.jpg'&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class='p_row'&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411160301.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411160301.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411160301.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411160306.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411160306.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411160306.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411160331.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411160331.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411160331.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411160233.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411160233.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411160233.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411160327.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411160327.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411160327.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411160323.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411160323.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411160323.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411160223.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411160223.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411160223.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411160325.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411160325.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411160325.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411160328.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411160328.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411160328.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411160322.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411160322.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411160322.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411160223.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411160223.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411160223.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411160216.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411160216.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411160216.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411160209.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411160209.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411160209.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411160215.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411160215.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411160215.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411160204.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411160204.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411160204.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411160207.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411160207.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411160207.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;9号&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230411160823.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411160823.jpg&quot; alt=&quot;图片 keep_inline&quot;  data-imgsrc='20230411160823.jpg'&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class='p_row'&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411160224.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411160224.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411160224.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411160928.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411160928.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411160928.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411160943.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411160943.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411160943.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411160839.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411160839.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411160839.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411161010.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411161010.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411161010.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411160927.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411160927.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411160927.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411160915.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411160915.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411160915.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411160937.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411160937.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411160937.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411160817.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411160817.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411160817.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411160953.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411160953.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411160953.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;10号&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230411161305.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411161305.jpg&quot; alt=&quot;图片 keep_inline&quot;  data-imgsrc='20230411161305.jpg'&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class='p_row'&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411160838.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411160838.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411160838.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411160825.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411160825.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411160825.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=202304111610090.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/202304111610090.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='202304111610090.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411160820.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411160820.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411160820.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411160831.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411160831.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411160831.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411160859.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411160859.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411160859.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411160903.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411160903.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411160903.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411160940.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411160940.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411160940.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411161006.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411161006.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411161006.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411161003.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411161003.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411161003.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411160941.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411160941.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411160941.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411161009.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411161009.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411161009.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411161316.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411161316.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411161316.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411160958.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411160958.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411160958.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411161410.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411161410.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411161410.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411161419.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411161419.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411161419.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411161420.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411161420.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411161420.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411161423.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411161423.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411161423.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411161424.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411161424.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411161424.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411161433.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411161433.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411161433.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411161439.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411161439.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411161439.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411161447.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411161447.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411161447.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411161446.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411161446.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411161446.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411161440.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411161440.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411161440.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411160934.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411160934.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411160934.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411161445.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411161445.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411161445.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411161355.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411161355.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411161355.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411161323.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411161323.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411161323.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411161347.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411161347.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411161347.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;今天&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230411161314.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411161314.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411161314.jpg'&gt;&lt;/a&gt;&lt;/div&gt;2023/04/06 19:26:51 - 2023/04/11 23:13:28</content></entry><entry><id>https://www.wellobserve.com/?post=20230316192815</id><title type='html'>LOMO 手摇机器和工业相机高拍可以作为一种低成本的胶片录像制作手段</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230316192815' /><published>2023-03-16T19:28:15+08:00</published><updated>2023-04-11T21:18:42+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;LOMO 手摇机器和工业相机高拍可以作为一种低成本的胶片录像制作手段&lt;/p&gt;&lt;p&gt;似乎可以通过软轴驱动 Lomokino ，这时不需要在机器右侧做一个大盒子，而电机可以做成手柄式的结构，好处是不需要为多个 Lomokino 分别制作一套驱动。&lt;/p&gt;&lt;p&gt;算了下市场价，好像杂个都不便宜&lt;/p&gt;2023/03/16 19:28:15 - 2023/04/11 21:18:42</content></entry><entry><id>https://www.wellobserve.com/?post=20230411154548</id><title type='html'>目前选择了 NanoVG ，用起来非常方便并且似乎性能不错。</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230411154548' /><published>2023-04-11T15:45:48+08:00</published><updated>2023-04-11T15:45:48+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;目前选择了 NanoVG ，用起来非常方便并且似乎性能不错。&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;?post=20230327105800&quot; onclick='ShowWaitingBar()'&gt;GPU画矢量&lt;/a&gt;&lt;/p&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230411154542.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230411154542.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230411154542.jpg'&gt;&lt;/a&gt;&lt;/div&gt;2023/04/11 15:45:48 - 2023/04/11 15:45:48</content></entry><entry><id>https://www.wellobserve.com/?post=20230327105800</id><title type='html'>https://github.com/raphlinus/piet-gpu</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230327105800' /><published>2023-03-27T10:58:00+08:00</published><updated>2023-03-27T11:47:01+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;&lt;a href=&quot;https://github.com/raphlinus/piet-gpu&quot; target='_blank'&gt;https://github.com/raphlinus/piet-gpu&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/linebender/vello&quot; target='_blank'&gt;https://github.com/linebender/vello&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这个东西可能适合制作一个在GPU上运行的矢量游戏引擎&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://w3.impa.br/~diego/projects/GanEtAl14/&quot; target='_blank'&gt;https://w3.impa.br/~diego/projects/GanEtAl14/&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://bevyengine.org/&quot; target='_blank'&gt;https://bevyengine.org/&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/servo/pathfinder&quot; target='_blank'&gt;https://github.com/servo/pathfinder&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;   ← 这个有简单的C绑定，似乎可以直接用在当前上下文中。&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://fuchsia.googlesource.com/fuchsia/+/refs/heads/master/src/graphics/lib/compute/spinel/&quot; target='_blank'&gt;https://fuchsia.googlesource.com/fuchsia/+/refs/heads/master/src/graphics/lib/compute/spinel/&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这个是 Vulkan 的&lt;/p&gt;2023/03/27 10:58:00 - 2023/03/27 11:47:01</content></entry><entry><id>https://www.wellobserve.com/?post=20230324133016</id><title type='html'>Powdered Gold</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230324133016' /><published>2023-03-24T13:30:16+08:00</published><updated>2023-03-24T13:30:55+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;h1&gt;Powdered Gold&lt;/h1&gt;

&lt;div class='imd'&gt;&lt;a href='?show_image=20230324125640.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/20230324125640.jpg&quot; alt=&quot;图片 keep_inline original&quot;  data-imgsrc='20230324125640.jpg' class='original_img'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;局部&lt;/p&gt;
&lt;div class='p_row'&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230324125407.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230324125407.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230324125407.jpg' data-parent='20230324125640'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230324125409.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230324125409.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230324125409.jpg' data-parent='20230324125640'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230324125406.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230324125406.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230324125406.jpg' data-parent='20230324125640'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'&gt;&lt;/div&gt;&lt;/div&gt;2023/03/24 13:30:16 - 2023/03/24 13:30:55</content></entry><entry><id>https://www.wellobserve.com/?post=20230318174623</id><title type='html'>Dahon 那个新的26寸的折叠车 架子好看</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230318174623' /><published>2023-03-18T17:46:23+08:00</published><updated>2023-03-18T17:46:23+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;Dahon 那个新的26寸的折叠车 架子好看&lt;/p&gt;2023/03/18 17:46:23 - 2023/03/18 17:46:23</content></entry><entry><id>https://www.wellobserve.com/?post=20230312225512</id><title type='html'>那个带坝坝的房子好安逸啊</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230312225512' /><published>2023-03-12T22:55:12+08:00</published><updated>2023-03-12T22:55:12+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;那个带坝坝的房子好安逸啊&lt;/p&gt;2023/03/12 22:55:12 - 2023/03/12 22:55:12</content></entry><entry><id>https://www.wellobserve.com/?post=20230312225444</id><title type='html'>今天</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230312225444' /><published>2023-03-12T22:54:44+08:00</published><updated>2023-03-12T22:54:44+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;今天&lt;/p&gt;

&lt;div class='p_row'&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230312225416.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230312225416.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230312225416.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230312225424.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230312225424.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230312225424.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230312225425.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230312225425.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230312225425.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'&gt;&lt;/div&gt;&lt;/div&gt;2023/03/12 22:54:44 - 2023/03/12 22:54:44</content></entry><entry><id>https://www.wellobserve.com/?post=20230307171657</id><title type='html'>Valley #2</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230307171657' /><published>2023-03-07T17:16:57+08:00</published><updated>2023-03-07T17:20:04+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;h1&gt;Valley #2&lt;/h1&gt;

&lt;div class='imd'&gt;&lt;a href='?show_image=20230307171439.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/20230307171439.jpg&quot; alt=&quot;图片 original keep_inline&quot;  data-imgsrc='20230307171439.jpg' class='original_img'&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;局部&lt;/p&gt;
&lt;div class='p_row'&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230307171428.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230307171428.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230307171428.jpg' data-parent='20230307171439'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230307171427.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230307171427.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230307171427.jpg' data-parent='20230307171439'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'&gt;&lt;/div&gt;&lt;/div&gt;2023/03/07 17:16:57 - 2023/03/07 17:20:04</content></entry><entry><id>https://www.wellobserve.com/?post=20230304143032</id><title type='html'>今天</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230304143032' /><published>2023-03-04T14:30:32+08:00</published><updated>2023-03-04T14:30:32+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;今天&lt;/p&gt;

&lt;div class='imd'&gt;&lt;a href='?show_image=20230304143015.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230304143015.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230304143015.jpg'&gt;&lt;/a&gt;&lt;/div&gt;2023/03/04 14:30:32 - 2023/03/04 14:30:32</content></entry><entry><id>https://www.wellobserve.com/?post=20230301153851</id><title type='html'>额 必须要在当月文件占个坑不然改名后导致文件空白就不会删掉那个记录。。。</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230301153851' /><published>2023-03-01T15:38:51+08:00</published><updated>2023-03-01T16:21:19+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;额 必须要在当月文件占个坑不然改名后导致文件空白就不会删掉那个记录。。。&lt;/p&gt;2023/03/01 15:38:51 - 2023/03/01 16:21:19</content></entry><entry><id>https://www.wellobserve.com/?post=20230228234731</id><title type='html'>你看这些房子 简直可贵可贵可贵的了</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230228234731' /><published>2023-02-28T23:47:31+08:00</published><updated>2023-02-28T23:47:31+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;你看这些房子 简直可贵可贵可贵的了&lt;/p&gt;2023/02/28 23:47:31 - 2023/02/28 23:47:31</content></entry><entry><id>https://www.wellobserve.com/?post=20230227001335</id><title type='html'>一种使用黄铜制做的上发条气风琴，盒子一样，可以用手按来响</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230227001335' /><published>2023-02-27T00:13:35+08:00</published><updated>2023-02-27T00:13:35+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;一种使用黄铜制做的上发条气风琴，盒子一样，可以用手按来响&lt;/p&gt;2023/02/27 00:13:35 - 2023/02/27 00:13:35</content></entry><entry><id>https://www.wellobserve.com/?post=20230223175809</id><title type='html'>世界的卓越</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230223175809' /><published>2023-02-23T17:58:09+08:00</published><updated>2023-02-24T11:11:40+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;世界的卓越&lt;/p&gt;&lt;p&gt;晴天 得到矿泉水瓶&lt;/p&gt;&lt;p&gt;textbox1 点 value 等于&lt;/p&gt;&lt;p&gt;tu134的窗户看世界&lt;/p&gt;2023/02/23 17:58:09 - 2023/02/24 11:11:40</content></entry><entry><id>https://www.wellobserve.com/?post=20221022163547</id><title type='html'>LaGUI 编程教程</title><link rel='alternate' href='https://www.wellobserve.com/?post=20221022163547' /><published>2022-10-22T16:35:47+08:00</published><updated>2023-02-22T20:42:33+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;h1&gt;LaGUI 编程教程&lt;/h1&gt;
&lt;p&gt;{read_more}&lt;/p&gt;

&lt;p class=&quot;hidden_on_print smaller&quot;&gt;&lt;span class=&quot;text_highlight&quot;&gt; 本文档打印出来容易阅读。点击 浏览器菜单→打印 或者使用 `Ctrl+P` 快捷键。 &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;欢迎使用 &lt;a href=&quot;?post=20221022165137&quot; onclick='ShowWaitingBar()'&gt;LaGUI&lt;/a&gt; 制作图形应用程序。&lt;/p&gt;&lt;p&gt;这个教程将展示使用 LaGUI 创建应用程序的一般原理。&lt;/p&gt;&lt;h2&gt;制作第一个 LaGUI 应用程序&lt;/h2&gt;
&lt;p&gt;制作最简单的 LaGUI 应用程序只需创建一个窗口。菜单栏、内部按钮、以及默认的数据系统会自动生成以支持程序运行。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#include &quot;la_5.h&quot;

int main(int argc, char *argv[]){
    laGetReady();
    laWindow* w = laDesignWindow(-1,-1,600,600);
    laStartWindow(w);
    laMainLoop();
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在使用其他 LaGUI 调用之前应始终使用 &lt;code&gt;laGetReady();&lt;/code&gt;。之后通过 &lt;code&gt;laDesignWindow()&lt;/code&gt; 创建窗口。将位置设置为负数则交由操作系统决定窗口放置的位置。&lt;/p&gt;
&lt;p&gt;可通过菜单栏访问 LaGUI 程序的面板和布局。点击 &lt;code&gt;🞆&lt;/code&gt; 按钮可以打开新的面板，点击 &lt;code&gt;🗖&lt;/code&gt; 则可以将面板固定在布局中间。多个面板可以停靠在同一个布局，在停靠时，拖动面板标题可以重新布局或者将面板从停靠的位置撕下来。&lt;/p&gt;
&lt;h3&gt;保存和加载用户设置&lt;/h3&gt;
&lt;p&gt;LaGUI 应用程序的设置和用户界面布局可以自动保存和加载以在程序再次启动时保持期望的状态。在 &lt;code&gt;laGetReady()&lt;/code&gt; 之后使用 &lt;code&gt;laEnsureUserPreferences();&lt;/code&gt; 即可。LaGUI 会在程序运行目录下保存 &lt;code&gt;preferences.udf&lt;/code&gt;，此后启动时该函数会尝试读取该文件。由于 LaGUI 会恢复窗口，因此在用户设置成功读取之后就不需要再手动创建窗口了，因此可将程序修改为如下的样式：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#include &quot;la_5.h&quot;
extern LA MAIN;

int main(int argc, char *argv[]){
    laGetReady();
    laEnsureUserPreferences();
    if(!MAIN.Windows.pFirst){
        laWindow* w = laDesignWindow(-1,-1,600,600);
        laStartWindow(w);
    }
    laMainLoop();
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;您还可以在该用户设置文件中保存您应用程序的其他设置，之后会解释如何实现。&lt;/p&gt;&lt;h2&gt;自定义面板并添加界面元素&lt;/h2&gt;
&lt;p&gt;LaGUI 界面对象结构是这样的：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;窗口 [laWindow]
    -&amp;gt; 浮动面板 [laPanel]
    -&amp;gt; 布局 [laLayout]
        -&amp;gt; 面板组 [laBlock]
            -&amp;gt; 面板 [laPanel]
                -&amp;gt; 控件 [laUiList-&amp;gt;laUiItem]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;要显示面板并在面板中添加界面元素，需要将自定义的界面列表函数注册为一个面板类。界面列表函数的形式是这样的：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;void MyPanel(laUiList *uil, laPropPack *This, laPropPack *DetachedProps, laColumn *EXTRA_UNUSED, int context){
    laColumn* c=laFirstColumn(uil);
    laShowLabel(uil,c,&quot;Hello world!&quot;,0,0);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在这个最简单例子中，我们只需要用到第一个参数 &lt;code&gt;laUiList *uil&lt;/code&gt; ，别的暂时不需要。利用 &lt;code&gt;laFirstColumn(uil)&lt;/code&gt; 获得挂件列表的第一列，然后在其中添加一个叫做“Hello world!”的标签。&lt;/p&gt;
&lt;p&gt;在启动任何窗口之前，我们调用 &lt;code&gt;laRegisterUiTemplate()&lt;/code&gt; 将上述函数注册为一个面板类：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;laRegisterUiTemplate(&quot;my_panel&quot;,&quot;My Panel&quot;, MyPanel,0,0,&quot;Demonstration&quot;, 0,0,0);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这个面板类将显示在程序左上角的“🞆”菜单中供随时调用。要想在程序启动时默认显示这个面板，我们要将它固定在窗口中，此时需要创建一个布局，面板将固定在布局中，像下面这样：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;laWindow* w = laDesignWindow(-1,-1,600,600);
laLayout* l = laDesignLayout(w,&quot;My Layout&quot;);
laCreatePanel(l-&amp;gt;FirstBlock,&quot;my_panel&quot;);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样我们就创建了一个占满默认布局的自定义面板。总结起来，这个程序的完整代码如下所示：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#include &quot;la_5.h&quot;
extern LA MAIN;

void MyPanel(laUiList *uil, laPropPack *This, laPropPack *DetachedProps, laColumn *UNUSED, int context){
    laColumn* c=laFirstColumn(uil);
    laShowLabel(uil,c,&quot;Hello world!&quot;,0,0);
}

int main(int argc, char *argv[]){
    laGetReady();

    laRegisterUiTemplate(&quot;my_panel&quot;,&quot;My Panel&quot;, MyPanel,0,0,&quot;Demonstration&quot;, 0,0,0);

    laEnsureUserPreferences();

    if(!MAIN.Windows.pFirst){
        laWindow* w = laDesignWindow(-1,-1,600,600);
        laLayout* l = laDesignLayout(w,&quot;My Layout&quot;);
        laCreatePanel(l-&amp;gt;FirstBlock,&quot;my_panel&quot;);
        laStartWindow(w);
    }

    laMainLoop();
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;请注意，由于读取用户设置后将创建窗口，因此各种界面资源的注册（比如这里的面板）需要在读取用户设置之前进行。&lt;/p&gt;&lt;h2&gt;添加按钮&lt;/h2&gt;
&lt;p&gt;按钮在 LaGUI 中用来调用其他工具，要通过 LaGUI 运行业务程序，那么您需要将这些业务程序注册为工具。&lt;/p&gt;
&lt;p&gt;一个最简单的工具只包含 &lt;code&gt;Invoke()&lt;/code&gt; 回调，只在调用时触发一次，它的格式是这样的：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;int INV_MyOperator(laOperator* a, laEvent* e){
    printf(&quot;Something happened in stdout!\n&quot;);
    logPrint(&quot;Something happened in LaGUI terminal!\n&quot;);
    return LA_FINISHED;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;该回调需要返回 &lt;code&gt;LA_FINISHED&lt;/code&gt; 示意工具执行完成。在程序初始化时，通过 &lt;code&gt;laCreateOperatorType&lt;/code&gt; 注册该工具：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;laCreateOperatorType(&quot;MY_invoke_test&quot;, &quot;Something!&quot;, &quot;Print some strings.&quot;,0,0,0,INV_MyOperator,0,L'🗨',0);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最后，在面板中显示该按钮：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;void MyPanel(laUiList *uil, laPropPack *This, laPropPack *DetachedProps, laColumn *UNUSED, int context){
    laColumn* c=laFirstColumn(uil);
    laShowLabel(uil,c,&quot;Hello world!&quot;,0,0);
    laShowItem(uil,c,0,&quot;MY_invoke_test&quot;);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;运行程序，一个叫做“Something!”的按钮会出现在之前添加的标签下方，点击它就会执行该工具，并且您在标准输出和 LaGUI 终端中都能看见打印的字符串。&lt;/p&gt;
&lt;h3&gt;工具调用方式&lt;/h3&gt;
&lt;p&gt;LaGUI 中的所有输入事件均经过工具处理，窗口和控件自身的事件处理也是通过工具实现的。工具可以独占输入或者将输入传递到其他正在运行的工具。特别地，对于按钮控件，它可以调用用户自定义的工具以实现业务功能。每个窗口下都有一个工具栈，典型情况下呈现这样的结构：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Event/事件
    |    [__CUSTOM__] &amp;lt;--其他被调用的工具
    |    [__WIDGET__] &amp;lt;--控件工具
    |    [LA_panel_operator] &amp;lt;--面板工具（服务于鼠标下方的面板）
    |    [LA_window_operator] &amp;lt;--窗口总工具（仅在程序退出时结束）
    V&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;工具可以包含几个不同的回调函数，它们调用流程可以描述成这样：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;调用工具 &quot;My Operation&quot;:

    --&amp;gt; Check();   --+-- false ---------&amp;gt; Exit();
                     +-- true ----------&amp;gt; Init();

    --&amp;gt; Init(); ------------------------&amp;gt; Invoke();

    --&amp;gt; Invoke();  --+-- FINISHED ------&amp;gt; Exit();
                     +-- RUNNING -------&amp;gt; Modal();
                     +-- RUNNING_PASS --&amp;gt; Modal(); PASS

    --&amp;gt; Modal();   --+-- FINISHED ------&amp;gt; Exit();
                     +-- RUNNING -------&amp;gt; Modal();
                     +-- RUNNING_PASS --&amp;gt; Modal(); PASS

    --&amp;gt; Exit();&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;标有 PASS 的路径意味着，输入事件将被传递到到窗口工具栈的下一个工具，否则当前工具将独占该输入事件。因此，我们可以注册一种工具，使得它在运行时暂时控制全部输入，直到工具退出，这样的好处是，如果你的工具需要点击或者许多其他操作，或者你通过独占工具再次调用了另一个独占工具，你的输入只会对最后调用的工具起作用而不会影响用户界面，前几个工具必须等独占的工具退出才能继续接收事件。&lt;/p&gt;
&lt;h3&gt;独占式工具例子&lt;/h3&gt;
&lt;p&gt;只需要在 &lt;code&gt;Invoke()&lt;/code&gt; 或者 &lt;code&gt;Modal()&lt;/code&gt; 回调中返回 &lt;code&gt;LA_RUNNING&lt;/code&gt; 或者 &lt;code&gt;LA_RUNNING_PASS&lt;/code&gt; 即可启动工具独占。在前述例子上进行改进，工具的两个回调类似这样：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;int INV_MyModalOperator(laOperator* a, laEvent* e){
    printf(&quot;Modal opeator!\n&quot;);
    logPrint(&quot;Modal opeator!\n&quot;);
    return LA_RUNNING;
}
int MOD_MyModalOperator(laOperator* a, laEvent* e){
    printf(&quot;%d,%d\n&quot;,e-&amp;gt;x,e-&amp;gt;y);
    logPrint(&quot;%d,%d\n&quot;,e-&amp;gt;x,e-&amp;gt;y);
    if(e-&amp;gt;Type==LA_R_MOUSE_DOWN){
        printf(&quot;Modal opeator finished!\n&quot;);
        logPrint(&quot;Modal opeator finished!\n&quot;);
        return LA_FINISHED;
    }
    return LA_RUNNING;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后注册:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;laCreateOperatorType(&quot;MY_modal_test&quot;, &quot;Modal!&quot;, &quot;Print mouse positions.&quot;,0,0,0,INV_MyModalOperator,MOD_MyModalOperator,L'🏃',0);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;将 &lt;code&gt;MY_modal_test&lt;/code&gt; 也加入面板，之后运行程序，点击“Modal!”按钮，之后移动鼠标，标准输出和 LaGUI 终端将输出鼠标位置，此时在界面上点击鼠标左键不会触发任何操作，点击鼠标右键后该工具停止。&lt;/p&gt;
&lt;p&gt;若将 &lt;code&gt;MOD_MyModalOperator()&lt;/code&gt; 中的 &lt;code&gt;LA_RUNNING&lt;/code&gt; 改为 &lt;code&gt;LA_RUNNING_PASS&lt;/code&gt;，则工具运行时您仍然可以操作界面（当然，如果你再点击“Modal!”按钮，就会有两个工具同时运行）。&lt;/p&gt;
&lt;p&gt;整个程序的代码应当类似于下面这样：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#include &quot;la_5.h&quot;
extern LA MAIN;

int INV_MyOperator(laOperator* a, laEvent* e){
    printf(&quot;Something happened in stdout!\n&quot;);
    logPrint(&quot;Something happened in LaGUI terminal!\n&quot;);
    return LA_FINISHED;
}

int INV_MyModalOperator(laOperator* a, laEvent* e){
    printf(&quot;Modal opeator!\n&quot;);
    logPrint(&quot;Modal opeator!\n&quot;);
    return LA_RUNNING;
}
int MOD_MyModalOperator(laOperator* a, laEvent* e){
    printf(&quot;%d,%d\n&quot;,e-&amp;gt;x,e-&amp;gt;y);
    logPrint(&quot;%d,%d\n&quot;,e-&amp;gt;x,e-&amp;gt;y);
    if(e-&amp;gt;Type==LA_R_MOUSE_DOWN){
        printf(&quot;Modal opeator finished!\n&quot;);
        logPrint(&quot;Modal opeator finished!\n&quot;);
        return LA_FINISHED;
    }
    return LA_RUNNING;
}

void MyPanel(laUiList *uil, laPropPack *This, laPropPack *DetachedProps, laColumn *UNUSED, int context){
    laColumn* c=laFirstColumn(uil);
    laShowLabel(uil,c,&quot;Hello world!&quot;,0,0);
    laShowItem(uil,c,0,&quot;MY_invoke_test&quot;);
    laShowItem(uil,c,0,&quot;MY_modal_test&quot;);
}

int main(int argc, char *argv[]){
    laGetReady();

    laCreateOperatorType(&quot;MY_invoke_test&quot;, &quot;Something!&quot;, &quot;Print some strings.&quot;,0,0,0,INV_MyOperator,0,L'🗨',0);
    laCreateOperatorType(&quot;MY_modal_test&quot;, &quot;Modal!&quot;, &quot;Print mouse positions.&quot;,0,0,0,INV_MyModalOperator,MOD_MyModalOperator,L'🏃',0);

    laRegisterUiTemplate(&quot;my_panel&quot;,&quot;My Panel&quot;, MyPanel,0,0,&quot;Demonstration&quot;, 0,0,0);

    // Uncomment this to load preferences.
    // laEnsureUserPreferences();

    if(!MAIN.Windows.pFirst){
        laWindow* w = laDesignWindow(-1,-1,600,600);
        laLayout* l = laDesignLayout(w,&quot;My Layout&quot;);
        laCreatePanel(l-&amp;gt;FirstBlock,&quot;my_panel&quot;);
        laStartWindow(w);
    }
    laMainLoop();
}&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;显示数值控件&lt;/h2&gt;
&lt;p&gt;LaGUI 的所有数值控件均需要数据源才能显示。因此我们需要为您应用程序的业务数据注册数据的访问方式，这个“访问方式”在 LaGUI 中定义成一条条的属性。&lt;/p&gt;
&lt;p&gt;通过您定义的属性，LaGUI 还自动管理数据的撤销和重做，也包括资源文件的读写。交由 LaGUI 撤销系统、修改记录系统和共享资源系统来管理的数据必须使用 LaGUI 的内存调用来分配。在接下来的例子中，我们只需要用到界面显示，因此涉及不到这些复杂用法。&lt;/p&gt;
&lt;h3&gt;最简单的属性定义例子&lt;/h3&gt;
&lt;p&gt;例如我们有这样一个全局的 C 定义：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;typedef struct My{
    int           _pad;
    laSafeString* Name;
    int           Age;
    int           Gender;
    real          Height;
} My;

My Stats;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在 LaGUI 中，C Struct 相当于 &lt;code&gt;laPropContainer&lt;/code&gt; 。我们首先创建一个适用于 &lt;code&gt;My&lt;/code&gt; 类型的 &lt;code&gt;laPropContainer&lt;/code&gt; ：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;laPropContainer* my=laAddPropertyContainer(&quot;my&quot;, &quot;My&quot;, &quot;Struct My&quot;,0,0,0,0,0,LA_PROP_OTHER_ALLOC);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;由于所有 &lt;code&gt;My&lt;/code&gt; 实例（在这里只有一个 &lt;code&gt;My Stats;&lt;/code&gt;）的内存都不由 LaGUI 分配，因此在最后一个参数必须设置 &lt;code&gt;LA_PROP_OTHER_ALLOC&lt;/code&gt; 以告知 LaGUI ，同时由于在这个例子中我们不需要 LaGUI 创建或者删除 &lt;code&gt;My&lt;/code&gt; 实例，也不需要赋值 &lt;code&gt;NodeSize&lt;/code&gt; 参数。&lt;/p&gt;
&lt;p&gt;接下来我们就可以向 &lt;code&gt;my&lt;/code&gt; 这个 &lt;code&gt;laPropContainer&lt;/code&gt; 中添加各个属性，使用对应的 &lt;code&gt;laAddxxxxProperty()&lt;/code&gt; 函数。这个例子足够简单，我们不需要 &lt;code&gt;get/set&lt;/code&gt; 回调，因此只需提供成员相对于 &lt;code&gt;My&lt;/code&gt; 的首地址偏移量。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;laAddStringProperty(my, &quot;name&quot;, &quot;Name&quot;, &quot;My name&quot;,0,0,0,0,1,offsetof(My,Name),0,0,0,0,0);
laAddIntProperty(my, &quot;age&quot;, &quot;Age&quot;, &quot;My age&quot;,0,0,&quot;years old&quot;,100,0,1,25,0,offsetof(My,Age),0,0,0,0,0,0,0,0,0,0,0);
laAddFloatProperty(my, &quot;height&quot;, &quot;Height&quot;, &quot;My height&quot;,0,0,&quot;cm&quot;,2,0.3,0.01,1.76,0,offsetof(My,Height),0,0,0,0,0,0,0,0,0,0,0);
laProp* ep=laAddEnumProperty(my, &quot;gender&quot;,&quot;Gender&quot;,&quot;My gender&quot;,0,0,0,0,0,offsetof(My,Gender),0,0,0,0,0,0,0,0,0,0);
laAddEnumItemAs(ep,&quot;MALE&quot;,&quot;Male&quot;,&quot;Gender being male&quot;,0,L'♂');
laAddEnumItemAs(ep,&quot;FEMALE&quot;,&quot;female&quot;,&quot;Gender being female&quot;,1,L'♀');&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;注意到 &lt;code&gt;laSafeString* Name;&lt;/code&gt; 不是 &lt;code&gt;char[]&lt;/code&gt; ，LaGUI 提供了 &lt;code&gt;laSafeString&lt;/code&gt; 的便利功能，只需在注册属性时将 &lt;code&gt;IsSafeString&lt;/code&gt; 参数置为非0。&lt;/p&gt;
&lt;p&gt;此外，我们要告诉 LaGUI 我们业务数据的根，这样 LaGUI 才能找到第一个 &lt;code&gt;my&lt;/code&gt; 的实例（在这个例子中只有一个）。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;laPropContainer* root=laDefineRoot();
laAddSubGroup(root,&quot;me&quot;,&quot;Me&quot;,&quot;Me root&quot;, &quot;my&quot;, 0,0,0,0,myget_Stats,0,0,0,0,0,0,0);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;属性到这里就注册完成了，现在可以在界面上显示刚才注册的这些属性：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;void MyProperties(laUiList *uil, laPropPack *This, laPropPack *DetachedProps, laColumn *UNUSED, int context){
    laColumn* c=laFirstColumn(uil);
    laShowLabel(uil,c,&quot;Hello world!&quot;,0,0);
    laShowItem(uil,c,0,&quot;me.name&quot;);
    laShowItem(uil,c,0,&quot;me.age&quot;);
    laShowItem(uil,c,0,&quot;me.height&quot;);
    laShowItem(uil,c,0,&quot;me.gender&quot;);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;属性注册与面板注册的先后顺序无所谓。之后，对 &lt;code&gt;My Stats;&lt;/code&gt; 的值初始化之后，就能够运行程序了。你可以通过控件修改这些属性的值，如果通过“🞆”菜单调出一个新的“Properties”面板，你可以观察到两个面板上的属性同步刷新。&lt;/p&gt;
&lt;p&gt;属性简易示例程序的代码应该类似于这样：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#include &quot;la_5.h&quot;
extern LA MAIN;

typedef struct My{
    int           _pad;
    laSafeString* Name;
    int           Age;
    int           Gender;
    real          Height;
} My;

My Stats;

void* myget_Stats(void* unused, void* unused1){
    return &amp;amp;Stats;
}

void MyProperties(laUiList *uil, laPropPack *This, laPropPack *DetachedProps, laColumn *UNUSED, int context){
    laColumn* c=laFirstColumn(uil);
    laShowLabel(uil,c,&quot;Hello world!&quot;,0,0);
    laShowItem(uil,c,0,&quot;me.name&quot;);
    laShowItem(uil,c,0,&quot;me.age&quot;);
    laShowItem(uil,c,0,&quot;me.height&quot;);
    laShowItem(uil,c,0,&quot;me.gender&quot;);
}

int main(int argc, char *argv[]){
    laGetReady();

    Stats.Age=25;
    Stats.Gender=0;
    Stats.Height=1.76;
    strSafeSet(&amp;amp;Stats.Name,&quot;ChengduLittleA&quot;);

    laPropContainer* root=laDefineRoot();
    laAddSubGroup(root,&quot;me&quot;,&quot;Me&quot;,&quot;Me root&quot;, &quot;my&quot;, 0,0,0,0,myget_Stats,0,0,0,0,0,0,0);

    laPropContainer* my=laAddPropertyContainer(&quot;my&quot;, &quot;My&quot;, &quot;Struct My&quot;,0,0,0,0,0,LA_PROP_OTHER_ALLOC);
    laAddStringProperty(my, &quot;name&quot;, &quot;Name&quot;, &quot;My name&quot;,0,0,0,0,1,offsetof(My,Name),0,0,0,0,0);
    laAddIntProperty(my, &quot;age&quot;, &quot;Age&quot;, &quot;My age&quot;,0,0,&quot;years old&quot;,100,0,1,25,0,offsetof(My,Age),0,0,0,0,0,0,0,0,0,0,0);
    laAddFloatProperty(my, &quot;height&quot;, &quot;Height&quot;, &quot;My height&quot;,0,0,&quot;cm&quot;,2,0.3,0.01,1.76,0,offsetof(My,Height),0,0,0,0,0,0,0,0,0,0,0);
    laProp* ep=laAddEnumProperty(my, &quot;gender&quot;,&quot;Gender&quot;,&quot;My gender&quot;,0,0,0,0,0,offsetof(My,Gender),0,0,0,0,0,0,0,0,0,0);
    laAddEnumItemAs(ep,&quot;MALE&quot;,&quot;Male&quot;,&quot;Gender being male&quot;,0,L'♂');
    laAddEnumItemAs(ep,&quot;FEMALE&quot;,&quot;female&quot;,&quot;Gender being female&quot;,1,L'♀');

    laRegisterUiTemplate(&quot;my_properties&quot;,&quot;Properties&quot;, MyProperties,0,0,&quot;Demonstration&quot;, 0,0,0);

    // Uncomment this to load preferences.
    // laEnsureUserPreferences();

    if(!MAIN.Windows.pFirst){
        laWindow* w = laDesignWindow(-1,-1,600,600);
        laLayout* l = laDesignLayout(w,&quot;My Layout&quot;);
        laCreatePanel(l-&amp;gt;FirstBlock,&quot;my_properties&quot;);
        laStartWindow(w);
    }
    laMainLoop();
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;属性定义参考&lt;/h3&gt;
&lt;p&gt;LaGUI 支持的属性类型如下表所示：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;属性类型&lt;/th&gt;
&lt;th&gt;对应 C 类型&lt;/th&gt;
&lt;th&gt;LaGUI 控制的操作&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;LA_PROP_INT&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;32位整数&lt;/td&gt;
&lt;td&gt;读、写、数组、显示&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;LA_PROP_FLOAT&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;64位&lt;/strong&gt;浮点数&lt;/td&gt;
&lt;td&gt;读、写、数组、显示&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;LA_PROP_ENUM&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;8/16/32位整数&lt;/td&gt;
&lt;td&gt;读、写、数组、显示&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;LA_PROP_STRING&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;8位整数数组或 &lt;code&gt;laSafeString*&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;读、写、显示&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;LA_PROP_SUB&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;64位地址或 &lt;code&gt;laListHandle&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;写指针、读指针和偏移、读写列表、显示列表和成员&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;LA_PROP_RAW&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;64位地址&lt;/td&gt;
&lt;td&gt;（仅通过回调在文件读写时访问）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;LA_PROP_OPERATOR&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;通过 This 的工具调用&lt;sup&gt;1&lt;/sup&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=&quot;smaller gray&quot;&gt;1: 目前属性路径必须仅包含工具属性标识符，否则不工作。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;LA_PROP_SUB&lt;/code&gt; 属性可递归包含，因此可以以树状方式描述整个应用程序的数据结构。下面这个对照示意解释了一种简易文件树结构的可能注册方式。建议通过各个 LaGUI 示例程序以及“&lt;a href=&quot;?post=20221222155743&quot; onclick='ShowWaitingBar()'&gt;好得涂&lt;/a&gt;”软件的源代码更详细地了解向 LaGUI 描述您业务数据结构的方法。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;        数据结构                 |         属性注册样式
                                |
struct Folder{                  |
    laListItem Item;            |    SUB &quot;folder&quot; 
    char Name[128];             |        STRING &quot;name&quot; 
    int Privileges;             |        INT &quot;privileges&quot;
    laListHandle SubFolders;    |        SUB_PROP LIST &quot;folders&quot; of &quot;folder&quot;
    laListHandle Files;         |        SUB_PROP LIST &quot;files&quot; of &quot;file&quot;
};                              |    
                                |    
struct File{                    |    
    laListItem Item;            |    SUB &quot;file&quot; 
    char Name[128];             |        STRING &quot;name&quot;
    int Size;                   |        INT &quot;size&quot;
    void* Data;                 |        RAW &quot;data&quot;
};                              |
                                |
struct FileBrowser{             |    SUB &quot;application&quot;
    int SomeOtherStuff;         |         SUB_PROP LIST &quot;folders&quot; of &quot;folder&quot;
    laListHandle SubFolders;    |
};                              |
                                |    SUB &quot;(__LAGUI_ROOT__)&quot; 
                                |        SUB_PROP &quot;my_application&quot; of &quot;application&quot;&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;在执行工具时获得数据块引用&lt;/h2&gt;
&lt;p&gt;许多时候，我们想要针对某个数据块执行操作，就像类的成员函数一样操作其自身。在 LaGUI 中，这通过将工具注册为属性容器下的“工具属性”来实现，就像下表中类比的一样：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;C&lt;/th&gt;
&lt;th&gt;C++&lt;/th&gt;
&lt;th&gt;LaGUI&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;func(object);&lt;/td&gt;
&lt;td&gt;object→func();&lt;/td&gt;
&lt;td&gt;object_prop_container::&quot;tool_func&quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果要操作上述程序的 &lt;code&gt;My Stats&lt;/code&gt; ，就需要将工具注册为 &lt;code&gt;laPropContainer &quot;my&quot;&lt;/code&gt; 下的一个工具属性，这时 LaGUI 在以属性方式调用该工具时就能传递正确的 &lt;code&gt;This&lt;/code&gt; 指针。从工具回调中取 &lt;code&gt;This-&amp;gt;EndInstance&lt;/code&gt; ，即可获得原始的 &lt;code&gt;&amp;amp;Stats&lt;/code&gt; 地址。这里我们继续在刚才的程序上改进：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;int INV_ShowMyStats(laOperator* a, laEvent* e){
    My* stats=a-&amp;gt;This?a-&amp;gt;This-&amp;gt;EndInstance:0;
    if(!stats){
        printf(&quot;Operator not invoked from property.\n&quot;);
        return LA_FINISHED;
    }
    char* name=(stats-&amp;gt;Name&amp;amp;&amp;amp;stats-&amp;gt;Name-&amp;gt;Ptr)?stats-&amp;gt;Name-&amp;gt;Ptr:&quot;&quot;;
    printf(&quot;Hi! My name is %s and I'm %d years old :D\n&quot;,name,stats-&amp;gt;Age);
    logPrint(&quot;Hi! My name is %s and I'm %d years old :D\n&quot;,name,stats-&amp;gt;Age);
    return LA_FINISHED;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这个工具执行时先通过 &lt;code&gt;a-&amp;gt;This-&amp;gt;EndInstance&lt;/code&gt; 获得实例指针，如果发生任何问题（例如未通过属性调用）则不工作。你也可以设计为在两种情况下都工作（例如在 &lt;code&gt;fruits&lt;/code&gt; 示例程序），具体实现取决于程序的业务逻辑。&lt;/p&gt;
&lt;p&gt;注册工具时，要指定该工具在 &lt;code&gt;laPropContainer &quot;my&quot;&lt;/code&gt; 容器中的标识符以及替代界面名称、描述等：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;laCreateOperatorType(&quot;MY_show_my_stats&quot;, &quot;Show Stats!&quot;, &quot;Shoy my stats!&quot;,0,0,0,INV_ShowMyStats,0,0,0);

laPropContainer* my=laAddPropertyContainer(&quot;my&quot;, &quot;My&quot;, &quot;Struct My&quot;,0,0,0,0,0,LA_PROP_OTHER_ALLOC);
// ...
laAddOperatorProperty(my, &quot;show&quot;, &quot;Show Stats with *This&quot;,&quot;Show stats called from \&quot;my\&quot; container&quot;,&quot;MY_show_my_stats&quot;,0,0);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在显示按钮时，原则上只需输入 &lt;code&gt;&quot;my.show&quot;&lt;/code&gt; 作为属性路径，但由于 LaGUI 的限制，工具属性只能作为属性路径字符串的起点，也就是说只能输入 &lt;code&gt;&quot;show&quot;&lt;/code&gt; 。此时需要设置 &lt;code&gt;&quot;my&quot;&lt;/code&gt; 作为其 &lt;code&gt;This&lt;/code&gt; 父级，由于我们没有单独的 &lt;code&gt;&quot;my&quot;&lt;/code&gt; 作为控件（或者从模板中访问），所以暂时只能设置为一个我们额外创建的 &lt;code&gt;&quot;my&quot;&lt;/code&gt; 控件（它将以 LaGUI 的默认模板显示为一个属性的集合）。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;laShowItem(uil,c,0,&quot;me.name&quot;);
// ...
laUiItem* collection=laShowItem(uil,c,0,&quot;me&quot;);
laShowItem(uil,c,&amp;amp;collection-&amp;gt;PP,&quot;show&quot;);
laShowItem(uil,c,0,&quot;MY_show_my_stats&quot;);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在这个例子中显示了两个按钮，第一个按钮通过 &lt;code&gt;This&lt;/code&gt; 指针调用，第二个直接调用，运行程序以观察二者区别。&lt;/p&gt;&lt;h2&gt;更进一步&lt;/h2&gt;
&lt;p&gt;初步入门教程到这里就结束了，要了解 LaGUI 的更进一步用法，请参阅附带的 LaGUI 示例程序包，以及其他的用 LaGUI 制作而成的应用程序，例如“&lt;a href=&quot;?post=20221222155743&quot; onclick='ShowWaitingBar()'&gt;好得涂&lt;/a&gt;”。您也可以在代码仓库提出工单以确认更多未在教程中明确解释的操作。&lt;/p&gt;2022/10/22 16:35:47 - 2023/02/22 20:42:33</content></entry><entry><id>https://www.wellobserve.com/?post=20230220170904</id><title type='html'>语言</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230220170904' /><published>2023-02-20T17:09:04+08:00</published><updated>2023-02-20T17:13:31+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;h1&gt;语言&lt;/h1&gt;
&lt;p&gt;“&lt;a href=&quot;?post=20211009215507&quot; onclick='ShowWaitingBar()'&gt;基于声音的写作练习&lt;/a&gt;”并没有准确指代我所想要的状况。通过长时间的无意识过渡到今天，发现线性语言的结构似乎十分稳定，不会造成图像联系弱的情况，而且赋予其过程和韵律。&lt;/p&gt;&lt;p&gt;在这个叙事框架下，至少有三个并行的层：发生、发生之前、关联&lt;/p&gt;2023/02/20 17:09:04 - 2023/02/20 17:13:31</content></entry><entry><id>https://www.wellobserve.com/?post=20230218211223</id><title type='html'>读了一下2021年的大河边缘，某种意义上并不感觉很差</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230218211223' /><published>2023-02-18T21:12:23+08:00</published><updated>2023-02-18T21:12:23+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;读了一下2021年的大河边缘，某种意义上并不感觉很差&lt;/p&gt;2023/02/18 21:12:23 - 2023/02/18 21:12:23</content></entry><entry><id>https://www.wellobserve.com/?post=20230218134944</id><title type='html'>告了一哈油漆桶</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230218134944' /><published>2023-02-18T13:49:44+08:00</published><updated>2023-02-18T13:49:44+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;告了一哈油漆桶&lt;/p&gt;
&lt;p&gt;以及各种奇怪的混合方式&lt;/p&gt;

&lt;div class='p_row'&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230218134711.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230218134711.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230218134711.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230218134710.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230218134710.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230218134710.jpg' data-parent='20230218134711'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230218134712.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230218134712.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230218134712.jpg' data-parent='20230218134711'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230218134713.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230218134713.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230218134713.jpg' data-parent='20230218134711'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'&gt;&lt;/div&gt;&lt;/div&gt;2023/02/18 13:49:44 - 2023/02/18 13:49:44</content></entry><entry><id>https://www.wellobserve.com/?post=20230217162231</id><title type='html'>“好得涂”笔刷节点文档</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230217162231' /><published>2023-02-17T16:22:31+08:00</published><updated>2023-02-17T16:46:22+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;h1&gt;“好得涂”笔刷节点文档&lt;/h1&gt;
&lt;p&gt;该文档解释了如何使用“好得涂”的自定义节点笔刷。&lt;/p&gt;&lt;h2&gt;基本操作&lt;/h2&gt;
&lt;p&gt;要在“好得涂”中使用自定义节点笔刷，首先新建笔刷，然后在工具面板中启用“使用节点”选项。之后点击右侧出现的“编辑”按钮，即弹出笔刷节点编辑面板，您可以将面板拖放到需要的地方。&lt;/p&gt;
&lt;p&gt;好得涂笔刷节点都整齐地放置在一列一列的挂架上。点击“新增挂架”以创建一个挂架，之后可以点击“添加节点”以放置不同的节点。&lt;/p&gt;
&lt;p&gt;在任何节点内部的空白位置右键，通过弹出菜单可以将节点在挂架间左右移动，也可以删除节点。要左右移动挂架，在挂架顶部的标题左右点击带有箭头的移动按钮即可。&lt;/p&gt;&lt;h2&gt;笔刷输入输出&lt;/h2&gt;
&lt;h3&gt;好得涂→笔刷设备&lt;/h3&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230217163147.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230217163147.jpg&quot; alt=&quot;图片 keep_inline&quot;  data-imgsrc='20230217163147.jpg'&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;该节点提供笔刷的硬件输入以及笔画参数。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;POS：绝对位置&lt;/li&gt;
&lt;li&gt;SPD：划线速度&lt;/li&gt;
&lt;li&gt;ANGLE：划线方向（-pi~pi）&lt;/li&gt;
&lt;li&gt;PRESSURE：笔尖压力（0~1，在使用鼠标时恒定为0.5）&lt;/li&gt;
&lt;li&gt;TILT：笔倾斜（[x,y]）&lt;/li&gt;
&lt;li&gt;ERASER：笔配置为橡皮擦（0或1）&lt;/li&gt;
&lt;li&gt;ACUM：累计笔画长度&lt;/li&gt;
&lt;li&gt;LENGTH：本次落笔绘画长度&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;好得涂→笔刷设置&lt;/h3&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230217163639.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230217163639.jpg&quot; alt=&quot;图片 keep_inline&quot;  data-imgsrc='20230217163639.jpg'&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;该节点提供笔刷在工具面板里的各种设置参数以及画布参数。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SIZE：笔尖半径&lt;/li&gt;
&lt;li&gt;TRANSP：笔透明度&lt;/li&gt;
&lt;li&gt;HARD：笔硬度&lt;/li&gt;
&lt;li&gt;SLENDER：笔扁度&lt;/li&gt;
&lt;li&gt;ANGLE：笔压扁方向（-pi~pi）&lt;/li&gt;
&lt;li&gt;COLOR：笔颜色（[r,g,b]）&lt;/li&gt;
&lt;li&gt;LEN：笔涂抹长度&lt;/li&gt;
&lt;li&gt;SMUDGE：笔涂抹力度&lt;/li&gt;
&lt;li&gt;画布缩放：画布当前视觉缩放比例&lt;/li&gt;
&lt;li&gt;每半径的笔触点数：光标每移动达输入笔尖半径时应绘制的笔触点数&lt;/li&gt;
&lt;li&gt;ITER：笔刷迭代序号&lt;/li&gt;
&lt;li&gt;CUSTOM 1/2：自定义输入值&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;驱动→笔刷输出&lt;/h3&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230217164229.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230217164229.jpg&quot; alt=&quot;图片 keep_inline&quot;  data-imgsrc='20230217164229.jpg'&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;笔刷输出节点负责告知好得涂如何在画布上绘制该触点。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OFFSET：触点相对于光标的偏移量（[x,y]）&lt;/li&gt;
&lt;li&gt;SIZE：实际触点大小&lt;/li&gt;
&lt;li&gt;TRANSP：实际触点透明度&lt;/li&gt;
&lt;li&gt;SLENDER：实际触点扁度&lt;/li&gt;
&lt;li&gt;ANGLE：触点实际压扁方向（-pi~pi）&lt;/li&gt;
&lt;li&gt;COLOR：触点实际颜色（[r,g,b]）&lt;/li&gt;
&lt;li&gt;SMUDGE：实际涂抹强度&lt;/li&gt;
&lt;li&gt;LENGTH：实际涂抹长度&lt;/li&gt;
&lt;li&gt;每半径的笔触点数：光标每移动达实际触点半径时应绘制的笔触点数&lt;/li&gt;
&lt;li&gt;REPEATS：触点迭代次数（仅取触点的第一个输出）&lt;/li&gt;
&lt;li&gt;DISCARD：丢弃这个触点&lt;/li&gt;
&lt;/ul&gt;2023/02/17 16:22:31 - 2023/02/17 16:46:22</content></entry><entry><id>https://www.wellobserve.com/?post=20230214195854</id><title type='html'>现在要改个css这么麻烦又是less又是这些什么奇怪的东西</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230214195854' /><published>2023-02-14T19:58:54+08:00</published><updated>2023-02-14T21:56:35+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;现在要改个css这么麻烦又是less又是这些什么奇怪的东西&lt;/p&gt;&lt;p&gt;使用这个就好啦，将scss转换成css&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.cssportal.com/scss-to-css/&quot; target='_blank'&gt;https://www.cssportal.com/scss-to-css/&lt;sup&gt;↗&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;把gogs的主题也做了&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230214215622.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230214215622.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230214215622.jpg'&gt;&lt;/a&gt;&lt;/div&gt;2023/02/14 19:58:54 - 2023/02/14 21:56:35</content></entry><entry><id>https://www.wellobserve.com/?post=20230209181835</id><title type='html'>下载了个Pixelorama，可以做gif</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230209181835' /><published>2023-02-09T18:18:35+08:00</published><updated>2023-02-09T18:18:35+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;下载了个Pixelorama，可以做gif&lt;/p&gt;
&lt;p&gt;不过键盘和笔似乎不方便，必须要鼠标才好切换，不知道可以怎么设置。&lt;/p&gt;
&lt;div class='imd'&gt;&lt;a href='?show_image=20230209181737.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/20230209181737.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230209181737.jpg'&gt;&lt;/a&gt;&lt;/div&gt;2023/02/09 18:18:35 - 2023/02/09 18:18:35</content></entry><entry><id>https://www.wellobserve.com/?post=20230209170507</id><title type='html'>昨天</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230209170507' /><published>2023-02-09T17:05:07+08:00</published><updated>2023-02-09T17:05:07+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;昨天&lt;/p&gt;

&lt;div class='imd'&gt;&lt;a href='?show_image=20230209170452.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230209170452.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230209170452.jpg'&gt;&lt;/a&gt;&lt;/div&gt;2023/02/09 17:05:07 - 2023/02/09 17:05:07</content></entry><entry><id>https://www.wellobserve.com/?post=20230206125653</id><title type='html'>今天</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230206125653' /><published>2023-02-06T12:56:53+08:00</published><updated>2023-02-06T12:56:53+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;今天&lt;/p&gt;

&lt;div class='imd'&gt;&lt;a href='?show_image=20230206125631.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230206125631.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230206125631.jpg'&gt;&lt;/a&gt;&lt;/div&gt;2023/02/06 12:56:53 - 2023/02/06 12:56:53</content></entry><entry><id>https://www.wellobserve.com/?post=20230131132420</id><title type='html'>前几天</title><link rel='alternate' href='https://www.wellobserve.com/?post=20230131132420' /><published>2023-01-31T13:24:20+08:00</published><updated>2023-01-31T13:24:20+08:00</updated><author><name>吴奕茗</name><email>chengdulittlea@outlook.com</email><uri>https://www.wellobserve.com</uri></author><content type='html'>&lt;p&gt;前几天&lt;/p&gt;

&lt;div class='p_row'&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230131125700.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230131125700.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230131125700.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230131125703.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230131125703.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230131125703.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230131125658.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230131125658.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230131125658.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb'&gt;&lt;div class='imd'&gt;&lt;a href='?show_image=20230131125702.jpg' target='_blank' onclick='event.preventDefault();'&gt;&lt;img src=&quot;images/thumb/20230131125702.jpg&quot; alt=&quot;图片&quot;  data-imgsrc='20230131125702.jpg'&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'&gt;&lt;/div&gt;&lt;/div&gt;2023/01/31 13:24:20 - 2023/01/31 13:24:20</content></entry></feed>