wxmedit 正式启航 -欧洲杯足彩官网

`
jywhltj
  • 浏览: 42702 次
  • 性别:
博主相关
  • 博客
  • 微博
  • 相册
  • 收藏
  • 社区版块
    • ( 0)
    • ( 0)
    • ( 0)
    存档分类
    最新评论

    wxmedit 正式启航

    wxmedit

    是一个跨平台的文本编辑器,支持列编辑、十六进制编辑、语法高亮、自动换行、编码识别和转换、字数统计等功能。wxmedit 是 madedit 的后继,这些功能都是从 madedit 继承而来。

     

    madedit 本是一个我用过的非常不错的文本编辑器,尤其在十六进制编辑、编码识别和转换方面。可惜很久没人维护了,一直有接手它的想法。这些在之前写的中也提到了,还有之前这篇本来的标题和内容都是讲 madedit 的。我们需要感谢 madedit 作者提供了这么好用的编辑器,向原作者致敬。

     

    源起

    虽然早就有接手这个久未维护项目的打算,但没有想到会这么快。

     

    之所以做这个决定,是我自己在使用中发现了一个 bug。而这个 bug 不仅影响它擅长处理编码问题的美誉,还有可能造成数据损失——并且我发现的时候就是这样的情况,n 多 latin1 字母一不留神都被替换成了空格,好在及时撤消了。就是,我后来调试跟踪:这些字母在忽略大小写查找或替换过程中,会被转小写,madedit 转小写是通过调用 towlower() 实现的,而 windows crt 的这个函数在当前 locale 是简体中文或者繁体中文时就会把一堆 latin1 字母转换为空格。也许这个应该算是 windows crt 的 bug。

     

    这个 bug 的发现,让我开始了 madedit 的维护工作,开发环境的搭建比我预想中的顺利。定位 bug 不难,甚至为了修复这个 bug 引入 icu 也不麻烦。让我觉得比较有挑战的是维护起这个新项目,这也是我之前没想到这么快接手它的原因之一。具体实施上也确实是这样:花在了解 googe code、github 和在两个站点创建项目完善信息、导入版本历史这些事情的工作量不亚于目前 wxmedit 2.9.2 相对 madedit 改善的工作量。

     

    进展现状

    从发现上面提到的 bug 到如今,做了以下这些事情:

    1. 决定 fork 原有 madedit 项目,取名 wxmedit,m 取自 madedit,wx 取自所用跨平台框架 wxwidgets。
    2. 为它设计了个 svg 图标,目前 wxmedit 程序图标和 google code 项目头像用的都是它导出的位图。这个图标比较简陋不够美观,不过我想表达的含义都有了。三色块由 wxwidgets 图标简化而来,背景的记事本和笔为自绘,xm 两字母用的是 ubuntu-title 的字体。实际上这其中包含了我另外的设想和规划的含义,有机会以后再讲。
    3. 改善原有编译配置,使 vc express、mingw、linux 都能够编译。
    4. 从项目代码中移除了当年尚未集成到 wxwidgets 和 boost 的 wxaui 和 xpressive,它们其实不应该存在于版本库中。
    5. 从项目代码中移除图片转 xpm 的 gui 小工具,它是独立程序,也不应该存在于版本库中。并且制作 xpm 本可用 gimp/xnview/ifranview 等图片处理软件的。
    6. 改善简体中文翻译,原有翻译中用了很多台湾习惯的词汇,改动量还是不小的,参见。
    7. 修正上面提到的 bug,另外因为原有实现的大小写转换用的是 towlower(),所以在 windows 下不能支持 non-bmp 字符的大小写转换,实测也是如此。这两个问题都需要替换掉 towlower(),而在这方面做的比较好的是 icu,于是在 wxmedit 中引入了 icu,虽然有点大材小用,不过考虑到以后还可以用它取代既有的很多功能,这样做还是合适的。具体实施时发现原有的大小写转换还不能简单的替换,并且有些重复代码,于是还对原有代码做了重构,具体参见。
    8. 在 google code 创建了项目 wxmedit,并添加了简介、上传了相关下载。
    9. madedit 的版本库中有不少无关的提交纪录,比如 sqrat、jkbind、squirrel,也许当初为了完善 madedit 的插件机制为实现脚本语言接口做准备的,但都只是第三方库,跟 madedit 主体代码没有任何交互,它们与 wxaui、xpressive 类似不应该存在于版本库中。并且因为 madedit 程序代码从未用到它们,所以实际上可以不要这些版本纪录。导入 git 的时候忽略了这些版本,目前 github 的版本库中包含 madedit 的所有历史提交纪录除了这些忽略掉的,具体参见。
    10. 查看原 madedit 项目的 bug 纪录,其中 还能重现。解决的同时还发现,也将其修复了,至此 wxmedit 相对于 madedit 修正了三个严重 bug。
    11. 相关功能点和 bug 修复都在 github 上创建对应 issue,并在版本提交日志中引用对应 issue 编号,这样在 github 上能够相互引用。

    至此,wxmedit 可以算是正式启航了。

     

    规划展望

    • wxmedit 的 unicode 支持还可进一步改善,可以更好利用 icu。包括目前的全半角转换、unicode字符分类、编码转换。还可引入区域语言相关大小写转换及排序等。
    • 改善简繁转换,还可增加其他语言相关转换。
    • 修复更多原 madedit 项目中用户反馈的 bug。
    • 开发部分原 madedit 项目中用户提议的功能。
    • 改进项目构建系统,改用 bakefile。
    • 编译/打包更多平台的二进制。
    • 对原有代码进行重构。这在上述工作中可能用到,另外也可改善部分模块/结构。

    愿今后发展顺利!

    分享到:
    |
    评论

    相关推荐

      基于python的女式衬衫版样自动化生成技术

      51单片机

      微信小程序设计-宝可梦图鉴(游戏小程序).zip

      建筑行业

      matlab编程语言-水果识别(gui,hsv,圆性,面积)

      适合新手和初级人员练手使用,含所有源码

      matlab编程语言-基于dwt svd结合傅里叶变换的数字图像水印水印系统(嵌入 攻击 提取)

      csic_database.csv.zip

      开发一个基于b/s的小型汽车维修管理系统,数据库用华为的opengauss。 crud 函数文件夹 models 数据库类文件夹 routers api路径文件夹 schemas 响应模型文件夹 utils 工具函数文件夹 database 数据库连接 dependencies 依赖 main 运行 运行 py main.py jose pip install python-jose

      canoe.diva diagnostic使用手册

      chatgpt作为现象级产品受到广泛关注,本文从数据的数量、质量、驱动和保护4个方面,通过阐述chatgpt的数据特点,引发中医智能诊断研究中数据问题的思考。中医智能诊断研究需要建立数据共享模式和中医诊断的数据元标准,以解决中医智能诊...

      1、安装好ubuntu需要设置root账号密码 sudo passwd root 2、开启ssh服务 切换到root用户(su root) 编辑ssh配置文件,输入以下命令 nano /etc/ssh/sshd_config 进入文件后找到以下行将其改为:permitrootlogin yes (不能带#) #permitrootlogin prohibit-password ctrl x 退出保存 yes 回车 然后重启ssh服务 systemctl restart sshd

      gpt自然语言处理模型具体应用分析 gpt自然语言处理模型具体应用分析 gpt自然语言处理模型具体应用分析 gpt自然语言处理模型具体应用分析 gpt自然语言处理模型具体应用分析 gpt自然语言处理模型具体应用分析 gpt自然语言处理模型具体应用分析 gpt自然语言处理模型具体应用分析 gpt自然语言处理模型具体应用分析

      亮点: 1. 电容器按照二进制策略分组(容量比为1、1:2、1:2:4、1:2:4:8等组合,分组越多则投切策略更平滑,但相应的投切次数显著增高) 2. 可在电容器组总容量和容量比给定时,指定满足考虑最大日投切次数约束的电容器组补偿优化策略,该投切策略可使得当日绝对无功电量达到最小 3. 可在指定补偿优化策略后,得出电容器组的实时运行状态、电容器组内各电容器最大日投切次数、电容器组日内总状态数和状态变化、补偿前后绝对无功电量等信息 4. 可按照最小欠补偿(mode = 1,在不能出现过补偿的前提下使得当日绝对无功电量达到最小)和最小过补偿(mode = -1,在不能出现欠补偿的前提下使得当日绝对无功电量达到最小)两种模式指定补偿优化策略 数据说明: 1. 采样步长:5min 2. 采样时间跨度:1d 编程平台: matlab r2022b

      微信小程序设计-东航旅行.zip

      技术环境: pycharm django2.2 python3.7 mysql5.6 项目一个四个身份:管理员,经理,采购员和销售员。前台给普通用户查看超市的商品相关信息,比如最新上架了什么商品,哪个商品销量不错,用户可以按照分类和关键词搜索商品,超市有热线电话在凯发推荐首页,如果用户需要商品可以打电话预约送货!4个身份是登录后台用的,超级管理员拥有所有的权限,可以管理账号信息,可以查看员工的操作记录,按照各个超市统计销售情况,以图形显示最近7天销售分布图,发送系统通知等!采购员登录后负责商品信息的添加维护,还有商品库存查询,临过期商品查询,如果库存不足需要及时的补库存。销售员登录后选择超市然后负责商品的销售,登记要销售的商品id,自动查询商品的相关信息,所有商品登记完毕自动计算总价,输入客户付款金额自动计算找零等! 超级管理员: admin/admin 经理: manager/123456 采购员:buyer/123456 销售员:seller/123456

      攻击者溯源反制思维导图攻击者溯源反制思维导图攻击者溯源反制思维导图攻击者溯源反制思维导图攻击者溯源反制思维导图攻击者溯源反制思维导图攻击者溯源反制思维导图

      软件

      东上勾-集团人资管控体系和能力体系规划 g1220.pptx

    global site tag (gtag.js) - google analytics
    网站地图