·

弦圈APP已开发完成,准备发布

Published at 2025-02-28 01:17:37Viewed 132 times
Common article
Please reprint with source link

经过两个月的漫长艰难开发,大家期待已久的弦圈APP终于开发完成,目前正在准备发布的工作。马上弦圈APP的第一个版本就要跟大家见面了,暂时先推出安卓版,之后测试完苹果手机再推出IOS版。

目前弦圈APP的核心功能已经基本开发完毕,包括:写文章、发帖子、回答问题、创建圈子、看文章、看书、看帖子、看词条、圈子、看问题和回答、发布评论与回复、点赞与踩、收藏夹、关注用户、搜索、用户中心、个人主页、设置、消息中心等等。但是仍然有一些未完成的功能,这些功能计划之后慢慢更新吧,它们包括:创建词条、写书、提问、任务中心、商店、赞赏、钱包与充值、交易中心、签到等等。

上面提到的都是大的功能模块,下面我就提及一下APP一些细节的问题,这些问题虽然小,但也同样重要。

  • 与网页端弦圈不同,手机端弦圈APP使用markdown编辑器,用于文本格式、图片、链接等输入。关于markdown语法可自行百度,事实上markdown语法写起来比富文本要方便。至于为啥使用markdown编辑器,原因如下:

首先APP跟网页端(Web端)有很大的不同,这使得想要跟Web端一样用富文本编辑器会变得困难。绝大多数现有的富文本编辑器都是基于WebView的,而且设置繁琐,且自定义困难,加之WebView也被诟病影响性能,所以使用基于TextInput的编辑器是最好的。

然而事实上,TextInput的富文本编辑器没几个好的,如果说移动端富文本编辑器生态很差,那么TextInput编辑器可以说是尤甚于此。native的富文本编辑器也是没找到适合的,最后选择了使用native的markdown编辑器。原以为事情就这样结束了,结果react-native-live-markdown的编辑器有bug,修复不了,因此我决定自己开发一个简单的markdown编辑器,在编辑器里写的都是纯文本,想要看发布结果则可以点击预览(见下图)。

  • 弦圈APP中的HTML全部使用native渲染,不使用WebView。这不仅提高了性能,同时页面也更丝滑。这个也是APP的一大难点,也是我遇到的第一个难点。

在Web端中,想要渲染富文本编辑器产生的HTML字符串,在Vue中直接使用v-html(在React中直接使用dangerouslysetinnerhtml)就能得到渲染好的内容了。 而HTML天生与手机APP不兼容,APP不同于浏览器,除非使用WebView,否则无法直接渲染任何HTML。

使用WebView是最简单的在APP渲染HTML的方法,但是弊端也很明显,WebView卡不说,页面布局也不正常、不协调,我刚开始尝试一直没能调好,然后果断放弃。接着我又尝试了expo的'use dom'方法,似乎不能直接使用dangerouslysetinnerhtml,也放弃。而RN唯一的一个HTML渲染库react-native-render-html,这个库能将HTML转换成native组件进行渲染(即native渲染),看着蛮不错的,可惜报错了,然后库的维护也出了问题。

于是我就自己动手写了一个HTML转换Native的一个组件,效果还可以,很多情况都可以正常渲染,但某些情况还是有问题。就这样兜兜转转,我最后还是选择了react-native-render-html,我安装了一个版本所幸没有报错,接着再二次包装一遍,一切都如预期的一样。

  • 弦圈APP直接高亮代码块,且直接复制代码。非WebView方法实现。这个算是APP的一个小难点吧...

在Web端想要高亮代码块,我们有PrismJS和highlightJS可以使用(见Vue或Nuxt中如何渲染数学公式?)。然而在APP端,一切又不同了,我们无法直接使用这个JS库,所幸高亮代码块这方面的生态还算可以,我费了点劲找到了一个合适的库,最后成功实现。值得一提的是,知乎APP居然不支持高亮代码块,它就一个框把代码框起来,然后允许你复制代码。可见相比于Web端,APP的限制有多大,不过或许这也算是个无关紧要的功能吧...

  • 然后跟弦圈网页端一样,弦圈APP支持渲染数学公式,在手机你可以跟在网页端一样看到美妙的数学符号。这个可以说是APP最大的难点之一了。

这个实现起来也是十分艰难,网络上搜到的方法基本不行,都有着这样或那样的问题。渲染数学公式这个东西,在Web端的生态就一般,在移动端更是惨不忍睹,无论是RN的,还是安卓的都没一个库是还在维护的,也很少有人分享实现的方法,估计没几个人关心吧。事实上,latex的生态就只局限于它本身,搜索latex相关的东西,除了关于latex本身的问题,像什么python中转换latex、Vue或React渲染latex,有用的信息瞬间减少了。

说回RN中渲染数学公式,其中有几个库是用WebView来实现的,由于弦圈APP中的HTML是native渲染的,不是基于WebView的,如果用它们,可能就会在页面上同时渲染多个WebView,这会严重影响性能问题。RN能native实现就native实现,真用WebView我觉得还不如直接拿Tauri来写APP,这样所有Web端的东西都能用在APP了。我刚开始也是用Tauri来写弦圈APP,可是最后它的stronghold插件出了问题修复不了,就放弃了。

RN用native实现渲染数学公式的库也有,不过都是已经没在维护的了。我侥幸找到一个用mathjax渲染,且能用的库react-native-mathjax-html-to-svg,将latex代码转换成svg来渲染数学公式。要知道在Web端想要渲染数学公式,有mathjax和katex可以选(见Vue或Nuxt中如何渲染数学公式?),其中mathjax是最好的、katex是最快的。因此,发现这个库的那一刻我很激动,居然能在APP使用最好的mathjax。

将该库与react-native-render-html整合,就能渲染数学公式了。然而事实上,这个过程比我想象中的要复杂困难得多,在网上仅有的几个方法中,我尝试过很多遍,最后都没能实现我想要的效果。然后我又尝试通过后端python来渲染latex公式,将其转换为svg或者干脆转换成Unicode。这些方法实现是能实现,但是都有不少瑕疵,都比不了Web端的效果不说,有些低级问题也没能解决。能将latex转换成Unicode的pylatexenc库,就不能将$^2$转换成²。

原本我打算妥协了,放弃渲染数学公式这个功能,然而今天我突然“开窍”,彻底解决了这个难题,也算是意外之喜。这个方法算是我原创的吧,仍然是将react-native-mathjax-html-to-svg与react-native-render-html整合,但是效果完全符合预期,也没有网上一些人提到的问题。在这个过程中,还遇到个小插曲,该版本的mathjax识别不了小于号$<$,得换成HTML记号。

关于弦圈APP的其他一些开发细节,因为时间比较晚了,我就不展开说了。目前我正在准备弦圈APP的发布,这包括编译apk,以及在弦圈网页端添加APP的下载方式,尽情期待😇!之后我还会修复一些网页端的来不及修复的bug。

目前弦圈APP的代码规模为21249,还行吧一个人写的。最后不得不吐槽一句,这个apk编译是真的慢......晚安( ̄o ̄) . z Z

0 人喜欢

Comments

There is no comment, let's add the first one.

弦圈热门内容

如何激怒一位数学爱好者?

知乎提问:如何激怒一位数学爱好者?我的回答:我初三乃至高中想要自学高等数学的时候,像“学数学有什么用?”、“纯数学有什么实际应用吗?”、“你一个做数学的连这么简单的计算都不会?”这些话及其变式,确实有可能让我非常不爽。到了高三乃至本科这个阶段,像“名词党”、“你知道什么相关的例子吗?”、“你需要知道更多具体的数学”、“你问的问题太trivial”、“你看这个内容需要要看这么久?”、“你不是做数学的”等等这些话及其变式,都会让我觉得非常不爽。当然这是之前会感到不爽,直到我开始独立做研究、写论文,真正开始做数学后,才发现这些话要么都是单纯的p话、要么是正确的废话,总是如今是完全不在意。说这些话的人,本身水平如何也要画个大大的问号,有些人连学术产出都没有就喜欢到处指点江山、误人子弟。这时到了做数学阶段,记忆中曾经让我不爽的话,包括“你的论文好像notes啊”,然后就是投稿时审稿人的冷淡回应,如“你的论文不适合本期刊”、“你的论文in general non sense”。直到后来我的论文也得到某些人认可后,我也明白在纯数学什么东西是对的、什么理论是重要的有时候是一件非常主观的事情。最近能让我 ...

世界婴儿危机,我们要被婴儿淹没了吗?(故事线)

我打算补全一下之前写的 世界婴儿危机,我们要被婴儿淹没了吗?的故事线,这个故事的灵感源于一次在微信上跟朋友聊天,我突发奇想下说出来的。当时记得是在讨论泡菜国的一则新闻,水里检测出伟哥的成分超标😅。然后我直接展开想象,原本我很想把故事像小说那样一章一章的全写出来,但奈何我的文笔真的有限,我语文一向不太好,每写一点就像挤牙膏一样特别难受。不过这么有趣的故事就这么荒废在那了,我觉得很是心疼,即便自己文采不行,不能把细节刻画好,还是把故事线理一理吧。第一章 危机开始泡菜国H市,有一条河名为“生命之河”,它原本清澈见底,但如今因为泛滥的伟哥成分,而变得“浑浊”,晚上河面上散发着“诡异”的光芒。这本是一个平常的晚上,但是泡菜国的年轻人像打了鸡血一样,免疫了伟哥的副作用开始以一天七次的频率疯狂造娃。由于每次都一发入魂,泡菜国的新生人口直接开始暴增,出生率轻松超过了人类历史最高记录。很快这也引起了政府的注意,然而政府不仅对此十分冷淡,直接打算坐视不管,他们认为这次婴儿潮危机会很快过去,泡菜国总统还忙着处理他的弹劾案件呢。泡菜国也因为这次史无前例的婴儿潮事件,沦为全世界的笑柄,其他国家的人纷纷落井下石, ...

在下22岁打算毕生献身于攻克黎曼猜想,可以给我一句忠告吗?

知乎提问:在下22岁打算毕生献身于攻克黎曼猜想,可以给我一句忠告吗?我的回答:在我看来数学研究者执着于攻克某个猜想、某个问题,除了名利外,毫无意义。比起关注某个著名的open question,还不如多些关注数学本身,解决问题也罢、构建理论也罢,所有这一切不过是为了数学的发展罢了。即便你对黎曼猜想真的很感兴趣,也没必要毕生都花费在这上面,得在合适的时机干合适的事情。怀尔斯很小的时候就被费马大定理所吸引,但他最后也是在代数几何领域有了突破性进展后,觉得是时候了才选择攻克费马大定理。有句话叫“站在巨人的肩膀上”,个人是渺小的,很多时候你总是夸大了个人的作用。想要攻克黎曼猜想这种级别的问题,需要好多代数学家们的努力。因此,与其执着于这个虚无缥缈的猜想,还不如着眼于当下,先解决当下的数学问题,发展当下的数学理论。只有这个做好了,你才有资格挑战黎曼猜想。

AI写小说:陈默重生(版本一+版本二)

这篇短文出于今年6月份,故事线是自己写的,内容是AI输出的,可以发现质量并不怎么好,AI总是get不到我的点,老是差么点,达不到我的要求和期望。经过几个月的改进,现在的AI应该好些了吧。版本一陈默坐在高三的课堂上,心中却是翻涌着前世的记忆。他曾是鸿蒙神,统领亿万星域,仅差半步就能踏入传说中的灭神境。然而,在突破的关键时刻,他意外陨落,重生回到了这个看似平凡的高三时期。这个世界与他前世的修仙界截然不同,这是一个属于职业者的世界。人们通过转职仪式来觉醒自己的职业天赋,从而决定未来的道路。陈默深知,他即将面临的转职仪式,对他来说不仅是一次重新选择的机会,更可能是他重拾前世力量,再次踏上巅峰的起点。随着校长慷慨激昂的演讲落幕,转职仪式正式开始。同学们怀着紧张与期待的心情,一个个走上转职阵法,去迎接他们命运的转折。然而,对于大多数人来说,转职结果都是普通的职业,虽然让他们有些失望,但也只能接受现实。终于轮到了陈默。他站起身,深吸一口气,稳步走向转职阵法。当他将手放在觉醒石上的那一刻,他感受到了一股前所未有的能量波动。紧接着,天地间突发异象,黑云笼罩了方圆数十万公里,仿佛要将整个世界都吞噬进去。老 ...

Serge Lang经典代数教材:Algebra Revised Third Edition

这是GTM211,Serge Lang写的代数经典教材Algebra。关于Serge Lang的教材,虽然在知乎上褒贬不一,但我自己以前在数学圈中,倒是没听过这些负面评价,倒是听说过有人推荐Serge Lang的这本Algebra,遇到代数方面不懂的可以直接查Algebra。我自己基本没读过Serge Lang的教材,这本Algebra除了,记得当初也是看了一些的。这本书作为入门教材,因为篇幅过长,对于不懂得跳着读书的人来说要耗费很多时间,因此不适合。但是翻看目录就可以发现,这本书应该是迄今为止代数方面最完备的教材之一了,前面我分享的GTM242 Grillet抽象代数经典教材:Abstract Algebra 2nd,也是非常完备的代数教材,跟Serge Lang的这本Algebra结合起来正好,因此我之前查抽象代数方面的知识,就是拿GTM242和GTM211这两本作为参考文献,当然还有Stack Project。然后在知乎上我发现(这也是我为啥讨厌知乎)有人会说某教材不好,原因是肤浅或者说书中有不少小错。我觉得还是少拿这种言论来误人子弟,真的知乎什么人都能随便评价数学😅。在我看来, ...

弦圈APP先开发到这里......

这段时间心血来潮,打算开发一下弦圈的手机端APP,这样网站和APP都齐全了。就像数学那种完美无缺的感觉一样,我一直都把弦圈当作做数学那样去做它。之前我在评论区也说过,一直以来都是我自己一个人搞,个人精力有限,因此很多事情进展会比较缓慢。这个APP也是真的难写,手机的环境和网站完全不同,我原先写的代码肯定也是用不上的了,因此也是重新写一套APP的代码。图五为弦圈APP的部分代码,用的是React native写的。我之前写弦圈用的是Vue+Nuxt写的,从零开始自学写的花了六个月时间。现在写这个APP估计也至少需要一个月的时间。写这代码比我当初敲LaTeX写论文还累,这种累主要是身体体力上的累(写代码真的是苦力活),而写论文更多是脑子比较累,因为烧脑,但是我更擅长应对脑力疲劳。毕竟十几岁开始高强度学数学,烧脑对我来说习以为常,真的没什么。除了写代码,我还得运营。这段时间一直专心写代码也没怎么运营网站和社媒了,现在得先放一放APP开发了,不然网站的人气都散了😅。

弦圈在各大搜索引擎处于隐身状态,基本搜不到

小众网站弦圈,在各大搜索引擎基本上就是处于隐身状态,可以看看我分享的几张图片。其中图四、图五为谷歌搜索的后台数据,可以看到弦圈在谷歌也基本上是消失了,那个绿色的收录逐渐清零。因此,弦圈搜是搜不到的,之前有粉丝问我找不到网站,怎么搜不到,这就是原因[哭惹R]。如今这个时代,像这种小众小平台,在搜索引擎基本上不会有任何曝光,就相当于不存在。弦圈的网址不会变:manitori.xyz,因此不用担心找不到网站,有任何变化我都会在社媒账号上说明。既然搜索引擎不给我流量,我计划以后也会ban掉所有的搜索引擎,因为现在大家训练AI都在爬别人的数据,网站暴露在搜索引擎其实也相当于给别人免费提供数据。我也不希望用户辛苦写的东西变成烂大街的东西。最后感谢大家的支持以及你们对弦圈的认可,虽然如今弦圈仍有这样那样的问题,但我相信在大家的共同努力下,弦圈会变得更好[派对R]!

频率派和贝叶斯派到底在争论什么?

看了几本教材上对概率的定义,发现都一样啊,难道用相同的定义可以建立不同的概率理论吗?

计划开发弦圈的桌面端版和APP版

由于如今是后移动互联网时代,很多人在碎片化时间基本上都是用手机,手机用户群体庞大。加上弦圈本身也有不少手机端的访客,占比有时略高于电脑端,有时略低于。而弦圈目前只兼容了移动端浏览器,并没有一个真正给手机用的APP。因此,补上弦圈APP能在一定程度上弥补手机端体验的缺失。而桌面端,只是顺带的事情。其实我一直以来都计划开发弦圈桌面端+APP,只不过原计划是在网站运营好了以后再做打算,之前在小红书也有人说想我弄个APP,我当时就说人手不够弄不了。为什么现在突然决定弄呢?其实是因为我感兴趣😂,并且这段时间也闲来无事,网站运营先放一放了,前面高强度宣传引流+更新内容,属实吃不消,而且效果也不太满意。其实当时开发弦圈网站,确实只是为了应付毕设,不过后来我逐渐对网站开发感兴趣,因此就把它做得更好了。网站的名字刚开始也不叫弦圈,而是叫诗词工作室,后来又改成兵水行,总之名字记得改过好几次。网址刚开始是poemstudio.fun,后来还买了chordspace.cn,现在才改成这个。其实刚开始我是打算做APP的(做安卓APP),不过后来忘记是啥原因了,还是觉得做网站比较合适。现在为啥又说对写APP感兴趣 ...

学基础数学可以相信“勤能补拙”吗?

知乎提问:题主是某985数学系大二,学基础方向,做基础的研究是存在很长时间的追求,很有兴趣。但是大学前期贪玩,在学业上花费时间比较少,除了上课和写作业就基本没花时间在数学上了。所以虽然专业课成绩还好看,但考试成绩没法说明学习水平,我自己明显感觉知识储备非常匮乏。在知乎上看同样学基础的同学们,大一大二甚至高中就学了这样那样的课程,而我大二快毕业了甚至还没系统修过抽象代数,前两年只是在按学校安排的课程按部就班地学。现在想专心学习不要荒废学业,突然就比较焦虑。我高中时没有条件搞竞赛训练,自学考过两次高联,高一40分,高二连市上的预赛都没过。考大学生数学竞赛(专业a)也只能拿30分,数分计算经常算不明白,高代学完很少用,现在基本上忘完。拓扑实变这种课,正常难度的课后习题不看答案自己做得至少三十分钟才能搞定一道,一两个小时是常态,更多的还是不会做。花时间少是一方面,但也感觉自己不是有天赋的人。但我偏偏又走到了今天这条路上。现在很迷茫,当初高考选数学专业是因为一脑子热血,想着人这辈子就应该要向着自己的热爱而奋斗。但现在离本科毕业越来越近,我不得不思考未来的出路。我不知道我这样资质平平的人学基础数学 ...

弦圈更新日志之提问新功能:标记疑惑、提出子问题

今天我熬夜肝出了提问的新功能,分别是标记疑惑和提出子问题。示例可见测试问题:center h1 in the middle of screen和Vertically aligning CSS :before and :after content。我就长话短说简单介绍一下。所谓的子问题,意思是你可以根据原有的一个问题,提出一个更加具体、更加细致的子问题。因为有时候一些问题和回答往往比较宽泛,不是很具体,这时子问题就发挥作用了!而标记疑惑则是你可以标记回答中某个不懂的地方。你可以通过选定回答中的某个语句,然后向答主提出你的疑惑点,答主看到后可以回复你的疑惑。目前标记疑惑还有进一步优化的空间,并且之后计划应用在文章和书上,不仅仅是回答。对了,我还顺带美化了一下提问页面的布局和样式,让它看起来更加舒服顺眼一些。晚安😇

喜欢数学但是不擅长数学竞赛怎么办?非数学竞赛生如何在数学专业生存?

知乎提问:初中根本没有学习,中考以极差的分数去了某末流重点高中(中考分数还没jumping高),高中连数学竞赛名额都没有,高三自学过物理竞赛,因为实验和学习时间短没拿省一,高中基本上没有学过数学竞赛,高考620+考上某985数院,发现周围数学竞赛生非常多,说的东西我根本没有听过,大学数学能学会,别人甚至做了竞赛数论几千道题,我甚至一点都不懂。我的回答:我就从未参加过任何所谓的数学竞赛,我自己也对应试和竞赛本身深恶痛绝,反正是一丁点提不起兴趣。我本身也不是那种应试能力强的人,但这也没影响我的数学水平、科研能力。在纯粹的数学面前,所有学生无论擅长竞赛与非,都一视同仁。会就是会,不会就是不会,有些人参加竞赛比你学得好,可能是别人天赋比较就好,或者就是别人学得比你多,付出的努力比你多,那凭啥不能比你懂。所以答案也显而易见了,题主的这种情况,只能勤能补拙。天赋不如别人好,或者自己比别人学得少、学得慢,但是还是好想学数学,怎么办?其实这都是初学者常常遇见的问题。在我看来,最好的办法就是要学会调整自己的心态,明悟心性,把注意力放回到自己身上,放回到数学本身身上,不要老跟别人比较。说实话像什么别人比我 ...

图灵奖得主写的深度学习入门教材:Deep Learning

这本书是两位图灵奖得主Ian Goodfellow和Yoshua Bengio,以及深度学习专家Aaron Courville写的入门教材。相比于更基础的Aurélien Géron人工智能入门教材:Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow,这本书所需要的基础要多一些,包括数分、线代、概率论,还有一些机器学习基础。由于我并非人工智能领域的专家,这本书也并没有怎么读,所以直接引用这本书的官方介绍。《深度学习》由全球知名的三位专家Ian Goodfellow、Yoshua Bengio 和Aaron Courville撰写,是深度学习领域奠基性的经典教材。全书的内容包括3个部分:第1部分介绍基本的数学工具和机器学习的概念,它们是深度学习的预备知识;第2部分系统深入地讲解现今已成熟的深度学习方法和技术;第3部分讨论某些具有前瞻性的方向和想法,它们被公认为是深度学习未来的研究重点。《深度学习》适合各类读者阅读,包括相关专业的大学生或研究生,以及不具有机器学习或统计背景、但是想要快速补充深度学习知识,以便 ...