Varia是我在抱怨了一段时间FDM以及PDM不好用的情况下,一拍脑袋决定自己写一个下载器的产物,大概是第一个真正符合咱博客副标题的东西吧嘿嘿。目前的想法是用Qt套壳aria2,本身aria2作为下载器足够优秀(自己又懒得学造轮子),加上自己常用的平台又不止Mac OS,学校的辣鸡课设上也接触过Qt,就这么定下来了。
这篇博文主要是看了圈圈的Everyday有所启发(结果他也摸了),觉得可以用这样的方式记录一下每天自己到底有没有在这个东西上花时间,以免自己又和以前一样,三分钟热度做着做着就弃坑了。我准备以静态页面的形式暂时保存下来,等到一个阶段结束后再把它真正发布出来,算是一个惊喜吧~【又没人看】

2018-05-15 星期一

  • “想写一个下载器”这样的想法在脑袋里酝酿了大半个月,晚课也结束了,终于想起来打开电脑付诸行动了。对着Qt创建项目的界面发了半天呆,实在是纠结不知道该起什么名字,最初想学IDM/PDM/FDM用Vanka Download Manager,蠢爆了Orz。作为一个起名废苦思冥想终于想到了一个简单又不那么蠢的名字——Vaira。

2018-05-22 星期二

  • 周二的晚课终于结课了,回到寝室照着以前写的课设,又去网上找了几个矢量图把主界面磕磕绊绊地写了大半。然后又在“把界面涂黑改成深色调”这件事上浪费了大量时间。

2018-05-23 星期三

  • 上午起床后依旧纠结在“把界面涂黑改成深色调”这件事上,恍然间意识到这种事情的优先级极低,自己本末倒置了,于是停止了这件蠢事【谢天谢地你终于发现了】。稍稍试着整理了下思路,之后放弃了……要做的事情似乎太多而自己的思路太过混乱导致不清楚到底该在什么阶段干什么,趁机翘了一节体育课【一天无课达成】。在网上找aria2套壳的时候发现了这个:Maria开发记录 II,看到了套壳的希望,于是决定照着它先把aria2的部分解决。在按照GitHub:aria2下的方式获取libaria2的静态库后,兴冲冲地加入到Qt工程里,然后被388个warning和2个error泼了一盆冷水。花了一整天时间也没有解决问题,心态炸了。

2018-05-24 星期四

  • 静态库问题依旧没有解决,兜兜转转又回到了Maria开发记录 II这里,发现在make之前并没有启用静态库的参数,终于知道为什么自己获得的是libaria2.a而他获得的是libaria2.dylib,在重新编译后取得了libaria2.dylib,导入Qt中,aria2初始化的编译运行成功,虽然暂时还不知道有什么用,但是总觉得距离目标更近了一步。

2018-05-25 星期五

  • 看了一上午libaria2的手册,终于在回家之前发现自己之前没能理解的“为什么初始化函数要放在main外面运行”是因为不熟悉GNU编程风格而看岔了域。由于根本没有完成度可言,Varia我并没有上传GitHub,导致了回家才发现自己没拷到U盘里……

2018-05-26 星期六

  • 对于“想记录varia开发过程”这件事付诸行动,打开博客记录下了这一周关于自己到底有多蠢的收获。摸鱼期间还是在arch上编译了aria2,拿到了libaria2.so,libaria2.so.0和libaria2.so.0.0.0三个文件,但是测试的时候并没有成功,非常神秘。Qt内成功初始化了而命令行却没有,之后发现是由于动态库搜寻路径并不包括当前文件夹,默认路径里我又没塞导致即使可执行文件和其所需的so文件在同一文件夹,也出现了找不到so的问题【大概出门吃了顿烧烤吃傻了】。另外发现一个小细节,Qt在导入动态库/静态库的时候总是默认Win/Mac/Linux三个平台都选上的,不知道是不是意味着我可以直接拖着mac上导入的.dylib上另两个平台运行?先给自己悄悄留个小坑吧。

2018-05-27 星期日

  • 今天才发现日期全部写错了,已改正。晚上到学校后不知从哪里入手,然后又双叒叕开始修改界面了,在创建任务界面弃用了之前水平约束和垂直约束的俄罗斯套娃约束模式,全局约束更新成了网格约束(QGridLayout)。然后试着将Libaria2给的例子修改后塞进去,在Debug界面输出信息,磕磕绊绊地总算成功调用了Aria2并下载文件,老子今天无比机智【极度膨胀】。接下来就要逐条理解示例中每一条代码到底起什么作用了。同时产生了一个新的疑问:由于我现在无论窗口布局还是后台调用代码都写在了同一个cpp文件中,我认为是需要分成至少前后台两个文件,那么到底要怎么去拆分就是我下一步需要思考的了。

2018-05-28 星期一

  • 今天看libaira2的api看着看着睡着了……睡眠不足加上天气闷热让我没办法集中精神做事。今天主要解决了aria2配置的读取,可以说是非常坎坷了。libaria2的api给出的解释简直不知所云,除了告诉我 void *SessionConfig::userData 是一个指针其它什么都没说,原文:Pointer to user defined data. libaria2 treats this as opaque pointer and will not free it. The default value is NULL,好家伙,除了知道它是个指针我什么都不知道【还是个void指针】,在map和pair甚至单纯的vector中纠结了好一会儿,觉得可以从其它地方入手。在 Session *sessionNew(const KeyVals &options, const SessionConfig &config)int addUri(Session *session, A2Gid *gid, const std::vector<std::string> &uris, const KeyVals &options, int position = -1) 中出现的KeyVals成了我的突破点,到aria2.h里看到这个类型的定义是:【原谅我using namespace std】vector<pair<string,string>>,按照这个格式把设置文件读取了出来,但是看起来没有什么时间去测试了,只能先期望我的想法没有错吧……【又双给自己挖了个坑的感觉】 这个思路是对的!!!【兴奋不已】 另外决定把所有的后台代码都转移到VariaCore里去。

2018-05-29 星期二

  • 这两天总会是需要很久才进入状态,这样下去也不是办法,要寻思着解决了orz。今天主要是对昨天挖下的坑进行进一步的求证,但是载入配置之后下载永远报错,在经过我“仔细排查两小时”后终于发现dir的参数指向了一个没有创建权限的文件夹【/Users写成/User还能说的看起来这么像一回事的咯?】。比起配置的判定,我觉得界面做好应该是更重要的一件事,于是开始照着文档捣鼓数据库,又要保存下载信息又要表格显示我只想到了数据库,就是不知道经不经得起下载时的数据更新,明天早上第一节没有课我觉得可以再稍微努力一下,但是怕自己忘记记录就先记下啦~

2018-05-30 星期三

  • 在进行了大量【几乎没什么意义的】尝试之后,终于确定了整个libaria2给的示例中几乎每一条代码的运行作用了,然后又接着昨天做的捣鼓数据库了……在数据库基本操作建立完之后写了个类用以存放各种下载状态的记录方便数据库的存取,然后就是摸了好久好久的鱼,不能再这样了orz。写着写着发现自己思路开始混乱了,大概是沉浸在没有大碳的悲伤之中的原因?今天只能先这样了,希望明天有个好状态吧!

2018-05-31 星期四

  • 今天总算把XD75Re下定决心下单了,找了半天也没能凑齐一套大碳,找了一套DSA的dolch全1U,算是了了一件心事,作业效率明显提高了。整个和aria2有直接关系的函数已经写完了,但是在刷新界面信息的时候发现直接在main window里执行刷新函数的话会巨卡无比,fuck it.考虑了一下应该是要新建另一个线程了,又是一道坑呢。

2018-06-01 星期五

  • 我要过儿童节!摸了!

2018-06-02 星期六

  • 如果说昨天摸了是我个人的意愿的话,今天摸了是不可抗力……把Varia整个塞到ArchLinux里的QT Creator后,准备着手解决线程问题但是发现用gcc构建不通过,遂换成clang通过后发现虽然程序能看起来正常的运行,但是所有的qDebug信息都没有显示,找了一下午原因无果,怀疑是Linux上的社区版QT Creator自身支持库的问题(毕竟连文档都没法在界面内访问),加上翘首盼望的XD75Re因为快递原因明天才能到心态崩了去玩游戏,结果又是一波连跪(摸都不开心)……可能之后要做好把MBP周末带回家的准备了。

2018-06-03 星期日

  • XD75Re在我要去学校的前两个小时内到了,开心。今天没有摸鱼了,但是感觉成果和摸鱼差不多……首先是解决了一下中途出现的数据库完全不更新的情况,而多线程依旧没有解决。取而代之的是发现了一个有趣的事实:使程序未响应的是对于数据库和视图的更新,而不是计时。这可能意味着我对于显示下载状态的思路整个都是错的,或许需要先去啃一啃GitHub上用RPC套壳的代码了(毕竟用libaria2的不是没有就是没有完成度)。这么一个周末什么事都没解决,有点失落。

2018-06-04 星期一

  • 昨天睡觉之前随便找了几套代码,瞟了一眼发现了QMap这个东西,似乎符合我最初对数据存储的设想,无奈今天满课,再加上作业很多,到现在(21:13)我都没有空闲时间,看着还有一大半的作业我觉得今天可能鸽定了……

2018-06-05 星期二

  • .net这门课的课设接近deadline了,今天大部分时间花在了这个上面,临近期末,估计修改的幅度也会慢慢减小了。看了一下QMap的属性,感觉还是很适合用在Varia上的,之前每次更新视图都是以两层for循环嵌套,遍历vector之后逐一对比SQL查询再更新的,感觉非常慢,不知道能不能减轻这样的情况。多线程现在依旧是一个坑,今天实际上也就是把整个downloadStatus从vector改成了QMap,其它的都没有增改,感觉自己脑袋里还是没有一个比较清晰的思路,接下来两天大概会整理一下整个程序的逻辑和流程吧。

2018-06-06 星期三

  • 我可能是个弱智 ,今天发现无论怎么样都要遍历查询,QMap还不方便循环,又硬生生改回来了。对着libaira2给的栗子反反复复看了几遍,还是老老实实去搞线程了,所幸今天有所收获,把刷新视图的任务成功的转到了另外的线程上,不过又双叒叕出现了新的问题:刷新事件执行起来特别慢,目前没有查明原因,又双叒叕是一个坑【叹。

2018-06-07 星期四

  • 今天早上尝试了一下优化另一个线程刷新视图速度慢的问题,可惜没解决。原本想晚上继续找原因结果因为图形学实验报告到现在(22:55)才刚刚能喘口气。看着下周就要结题的C#课设感觉这两天Varia可能很难有大的进展了……

2018-06-08 -- 2018-07-20

  • 由于期末原因,开发搁置。

2018-07-21 星期六

  • 好不容易考完试家里又出了点情况延误了几天时间,然而今天看了一天自己之前写的代码,几乎完·全·不·能·理·解。估计代码重构要提前了。

2019-03-06 星期三

  • Varia全部删除。IDM真香.jpg