电子与Qt为新的开源项目吗? 寻找建议。

2021-06-13 00:42:31

有一段时间,我一直在尝试解决组织计算机文件的问题。我研究了许多选项和技术,但没有任何东西真正点击过我。所以,我终于决定制作自己的系统!以下是我想要构建的系统的描述。在文章的末尾,我提出了一些尚未解决的问题和疑虑。如果你是读者,想帮助这个项目,伸出HN!我真的很感激!

我为各种项目生成很多文件。我的一些项目是专业的软件和硬件开发项目,或营销和设计项目,用于持续或一次性客户。其他人是个人视频,焊接,制造,建筑等项目。很多东西和#39; s的东西要做组织!

为了维护理智,我会保留我生成的所有东西以及任何长期参考资料,并基本上对我的任何重要文件都在我的计算机上的单个根目录中,目前在〜/ files /。

在我的文件中我努力保持整洁的层次结构。但是,可检索性仍然是一个问题。允许我用一个例子来说明。让' s说我模糊地记得2年前在2年前进行一个项目,使用ESP32(带有BLE和WiFi的微控制器)和OLED屏幕。我想找到该项目参考,但我不记得它的名字或它的名字。我的专业项目是在一个/客户/项目层次结构中组织的,在这种情况下对我没有任何帮助。我需要的是一种搜索具有以下标准的项目的方法:

可悲的是,在纯粹的分层结构中,这些关系不可能在没有链接或标签的情况下表示。项目文件夹只能与目录层次结构有一个关系,它可以具有父文件夹。

标签或链接将有所帮助,但两者都在主要OSS上支持,旧文件系统并不是很好的支持,并且根本不受云存储提供商的支持。

我们需要的是跨平台,交叉UI(GUI和CLI接口)和跨文件系统解决方案。它必须使用exfat文件系统使用拇指驱动器。即使复制到Dropbox或Google驱动器,也必须保留元数据。而且,它必须支持Windows,Mac和Linux。

经过多次研究,我最终会晒干。所以它'是做自己的系统。这是我想到的。

binfinder是一个桌面文件组织工具。它将文件组织成垃圾箱,将以下3个主要文件组织范例组合成一个系统:

Bin树 - 文件箱可以组织成分层树结构,就像在任何普通文件系统中一样。

箱指针 - 指针居住在树的一部分中,并指向树的另一部分中的垃圾箱。就像麦克斯上的别名,Windows上的快捷方式,或在Linux上的软链接,但跨平台并自动自动更新!如果移动目标垃圾箱,指针将找到您移动它的位置并更新本身!

Bin标签 - 箱子可以用标签标记,用于额外的可排序元数据。标签可以可选地存储值,并且可以逻辑地组织成标签捆绑包的值。标签是跨平台,并与任何文件系统一起工作。

Bin Finder中的基本文件组织单元是文件箱。箱子只是一个文件夹中的一个文件夹,其中文件夹中的bin描述文件(文件.bfb扩展名。 .bfb文件是一个文本文件,用于以JSON格式存储有关原子的所有元数据。元数据包括:

UID - 一个唯一的256位数。如果移动,习惯于找到垃圾箱。

名称 - 垃圾箱的名称。最多250个字符,通常设置为包含文件夹的名称。

标签 - 一组标记存储键中的信息:值模式,其中键是标签的名称,值是与该标记关联的值。

由于文件箱只是一种特殊类型的文件夹,因此它可以包含它内部的任意数量的文件和子文件夹,包括其他垃圾箱的其他垃圾箱!

如果需要标记或指向单个文件,则可以在箱中单独包裹。由于任何物质的大多数人努力产生多个文件,因此这种用例相对罕见。

箱子被组织成箱树。基本上一棵宾树只是一个带有一堆其他垃圾箱,子文件夹和文件的垃圾箱。基本上只是一个正常的分层文件系统。

您可以将多个箱树添加到Binfinder并在所有这些中搜索和过滤。例如,您可以在笔记本电脑上播放活动项目箱,并将它们移动到"存档"在完成后,在外部USB驱动器上留下宾树。移动箱的任何指针都将使用箱的新位置更新。

指针只是一个花哨的快捷/别名/垃圾箱链接。即使它已被移动或重命名,指针特殊是有能力找到它们指向的垃圾箱。

让&#39想象一下你有一个在你的项目箱子"活跃"在你的笔记本电脑上的树。完成该项目后,释放空间,将项目从&#34移动;活跃"树到"存档"树。 "存档"树生活在外部USB硬盘上。

当您单击指向刚刚移动的项目箱子的指针时,系统将首先检查它在哪里看到垃圾箱。如果系统可以' t找到该位置的垃圾箱,它将迅速重新扫描所有树木。如果在另一个位置中找到垃圾箱,系统将更新指针并打开垃圾箱。如果找不到垃圾箱,系统将通过类似于:&#34的消息来通知您; CAN' t找到bin x!它是最后一次看到的'存档'树,目前无法使用。"这是一个有用的提醒你,也许你需要插入你的USB SSD。

在实践中,指针只不过是JSON编码的文本文件.BFP扩展名。它包含以下信息:

rootuid - 垃圾箱的UID,下一个目标垃圾箱最后居住。

rootname - 目标垃圾箱最后居住的根仓的名称。

同步文件名 - true或false。如果目标箱的文件名更改,则true表示更新指针文件名。假手段保持原始指针名称。如果您希望指针从目标BIN具有不同的名称,这将是有用的。默认为真。

Binfinder将标签视为基本上附加关于垃圾箱的元数据。例如,您可以用以下方式标记一个垃圾箱:

在你上面的列表中,你会注意到前3个标签用'客户'这些标签会自动组织到'客户'标签捆绑,并为方便起见在UI中分组。

最后一个标签完成,没有价值。要更准确,它没有指定值,因此自动分配默认值True。缺少给定标签等同于具有该标签的假值。

把它全部带到一起让&#39想象一下我们用作&#39中用作图示的项目的垃圾箱;问题'部分上面。箱子住在〜/ files /客户/ x corp / super ble。在bin路径内部有一个info.bfb文件。那个文件将一个简单的旧目录变成花式垃圾箱!这是它的样子:

要使将来更容易找到这个项目,我也可能在其他地方丢弃到垃圾箱的一些指针:

双击其中一个.bfp文件时,它们会使用binfinder自动打开。 Binfinder查找垃圾箱并在默认文件管理器中打开它。在实践中,整个过程应该像点击快捷方式一样函数。

我有大多数UI和工作流程在我的头脑中效果很好,但我发现自己在A"通过分析瘫痪"情况。以下是我目前在脑海中努力的问题。随意评论HN并给我一些想法:

GUI与CLI - 我想支持两者。但它应该是一个CLI第一个应用程序,然后用GUI包裹?或者也许它更好地将其作为GUI的第一个应用程序建立它,并添加CLI界面?或者只是有一个核心库,并在独立的CLI和GUI工具中使用它?我从来没有写过一个跨平台工具,所以我不确定什么'是最好的方法。

语言/ UI库选择 - 此处选项似乎是具有JS与Qt的电子与Python,C ++或Go。 我喜欢在开发的速度和执行速度之间进行良好的平衡。 Python可能没问题,但鉴于应用程序的性质,电子感觉有点太重,特别是对于一个应用程序,您可能每天30秒开放30秒。 如果您在这里有任何指导,或者可能知道我忽略了更好的替代方案,请告诉我在评论中。 在做这个侧面项目的同时,我希望在做一些新技术,所以任何事情都可以,只要它'一个好主意:) 用例 - 我仍然通过我自己的用例来实现这一目标。 但我是1.你能给我一些关于你如何使用这个工具的想法吗? 你想在它中看到什么? 最后,如果您想帮助这个项目,那将真的很酷! 如果您认为它,请随时伸出援手,并在一个好主意中,让'在一起建造它!