着手开始基于微信小程序的APP开发

虽然我对《又大又杂的APP》充满了厌恶,但既然已经答应了朋友,无论如何也只好硬着头皮开始了这个微信小程序的开发。才开始两天,就发现真的是太痛苦了。整个项目杂乱、庞大,而且连基本的规则都是混乱的。 它期望利用微信小程序完成一个SNS社交平台类应用的构建,这几乎就可以看作是痴人说梦,甚至可以说是“梦中梦中梦”。 微信其实就已经是“梦中梦”了,原本微信只应是一个IM工具,而诸如社交、分享、朋友圈的功能,应该是分散在手机系统的各个APP中,然而微信却将这所有的功能整合到了一个应用中,好像在手机系统中嵌入了一个子系统,加之微信提供的公众号、服务号、小程序等扩展能力,它真的可以完成“梦中梦”的实现。 然而我那个朋友想做的APP,是一款宠物兴趣人群的SNS应用,但他却只想在微信的小程序中实现,他的理由很简单:小程序开发成本低、推广起来用户基础好。 但是他想做的本身也是一个平台级应用,例如:这个应用是具有SNS属性的、拥有SNS属性就意味着有好友关系、好友之间能够进行短信短消息的交换…… 如此一来,相当于你打开手机之后想分享一个照片,不需要使用手机中的、成熟的SNS社区,只要进入微信那个“子系统”就可以操作了。 而当你想将自己的猫咪日常生活分享给你的“猫咪好友”时,这个好友其实即不再某个SNS平台中、也不再微信中、而是在微信的小程序的某个小程序服务商列表中,于是你就要:打开手机、进入微信、启动小程序,使用这个小程序APP分享照片。这不就是“梦中梦中梦”么? 我自己的电脑性能差、手机性能也很差,所以平日中我使用微信都比较费劲、卡顿的,有些时候去商场买东西必须使用店家的小程序时我总会皱眉——几乎可以肯定很难快速启动他们的小程序,几乎可以肯定大概率会加载慢、崩溃。而那些商家的小程序其实功能还算简单、页面也不复杂呢。 我现在都可以想象出朋友那个宠物SNS小程序,果真实现出来之后将会何其缓慢、问题重重。 事实上,它很可能实现不出来,因为是我在开发这个APP呀,我的电脑老旧得甚至连开发者工具都运行不起来。只一个非常简单的页面组件的开发,都会崩溃好几次。所以两天下来,连一个页面都没有完成。如此缓慢的进度,想实现出来?又是有点儿“痴人说梦”了。 开发过程的技术细节我觉得到没什么太多可以记录的,至少现在还没有遇到值得记录的内容。毕竟现在刚刚开始,只是做了一些基本的页面,而这些页面也就只是html代码和css样式的编写,其中不存在什么高新技术。 如果往后的日子里,这个项目能够持续开发,并且真能向着最终目标一点点的前行,那我就将开发过程中遇到的问题、值得写上几笔的地方,当作日记记录在这里,也方便自己今后回顾这段“痛苦不堪”的帮忙经历吧。

《普林斯顿微积分》第8章学习备忘

这一章很简短,只有2个话题:如何进行隐函数求导、隐函数求导能够完成相关变化率的求解。这两个话题看的我是“一头雾水”,全都能够看懂、给出的例题也都会做,但其中的细节是没有一点儿能搞清楚的,总结就是这一章看的是“似懂非懂”。 一、隐函数求导: 1、什么是隐函数?这就是摆在我面前的第一个困惑,《普》几乎是很快就引入了隐函数求导的方法,而没有说明什么是“隐函数”,它是否是个更基础的、无需多说的知识呢?不得而知; 2、隐函数求导的具体过程。这一点对应着书中的§8.1,不费力气就看明白了。我在阅读这个章节的时候,对“链式求导法则”有了更豁然的理解,这个“豁然”要趁着现在还没有忘记、尽快花时间详细记录一下。否则一旦过段时间,很可能又会忘记掉; 3、具体的隐函数求导例题。没有什么难度,书中给出的例题都能跟着做出来。但诚如上面提到的,因为我不知道什么是“隐函数”,所以例题能做出来是没有意义的,原因在于:如果放在陌生的问题中,我可能很难一眼看出“这是一个隐函数”、“这里应该用隐函数求导去解决问题”; 4、隐函数求二阶导。同样的也可以将例题做出来,但是这里也存在着一个问题:我不理解二阶导的微分符号中,它的“分子”和“分母”中的上标位置区别的具体含义,或者说二阶导的上标符号具体是什么含义我不清楚。虽然能够隐约感觉到答案,但并不明确,所以这里也要再额外花时间推敲一下,形如下面的二阶导微分公式中,上标“2”的位置和具体含义: 二、相关变化率 1、§8.2章节是《相关变化率》的现实应用,以及利用隐函数求导方法求解。能知道说的是什么事情、能完成书中的例题的求解。 2、但是这些例题我自己却不会构建。不会自己构建例题说明自己完全不理解什么是“相关变化率”,不会自己构建例题意味着现实中即便遇到了“相关变化率”的问题或现象,也很难认识他们,知道他们,看得清他们,联想到使用隐函数求导的方式去解决他们; 3、相关变化率的具体概念要再花时间了解、学习。直到自己能够构建出例题、不费力气的就能信口举出例子、自己能够构建出应用场景和应用例题,才算是了解了这个话题。我现在能想到的比较感性的生活场景是人的吃饭、排泄,以及与体重的关系。这样一个生动的例子,如果能够随心所欲的构建出各类例子,并通过隐函数求导解决,应该就算是了解了。 三、小结 1、如上,就是这一章节的学习心得。可见这一章当前只是囫囵吞枣地阅读了、了解了,并不理解; 2、接下来将继续阅读第九章:指数函数和对数函数。

辗转相除法计算两个数的最大公约数

本来想做一个在线的一元二次方程求解小工具,但是真的上手操作才发现,想法很简单、实现起来很麻烦。所以我只好不断的简化需求,经过几次简化现在只能先完成对分数的化简操作,也就是在给定一个分数之后,对这个分数进行约分得到最简分数。 其中用到了一个求两数最大公约数的方法——辗转相除法。 实际上想计算两个数的最大公约数,有几种不同的方法,其中辗转相除法是相对容易理解、也比较容易通过程序实现的。 这里是最终完成的效果演示: https://www.m3we.com/mathtools/gcd.php?numerator=3334&denominator=12 即便是这个简单的功能,现在的演示也仍然不够完善、不够完美,还有很多需要进一步完善的地方。所以对于求解一元二次方程,短期内是难以实现的,只有一步步的先将这些基础环节做好,之后再做打算了。 update 2024.07.13 自己试了几个,发现还是存在bug的,例如下面这个计算过程,就是不正确的,原因还没有推敲,估计还要几天才能解决。 https://www.m3we.com/mathtools/gcd.php?numerator=333143543545.12&denominator=124.32 update 2024.07.14 18:51 已经找到了上面bug产生的原因,并且初步解决了。这里欠着一篇关于这个bug的记录,额外的又发现了一些新的问题,例如对于如下的分数,最后的表现也不尽人意,所以这个小工具还是有很多要改进的地方: 1、如果分子或分母中有符号,则在最终的结果中,应该将符号提取到整个分数的外面: https://www.m3we.com/mathtools/gcd.php?numerator=-333&denominator=33 2、如果分子和分母中同时有符号,虽然最后的结果是正确的,但是这只是计算的结果,与思维的过程实际上是不同的。正确的思维过程应该是先完成(增加一步预处理)变号操作: https://www.m3we.com/mathtools/gcd.php?numerator=-333&denominator=-33

我对又大又杂的APP一点兴趣也没有

朋友拜托我做一个新的网络应用,是要基于小程序进行开发。但是我看了一下原型设计,又大又杂。本来只是一个很小的网络服务,非要做的好像一个门户、好像一个社区一样,臃肿无比,这是令我反感且毫无兴趣的。 如果不是因为抹不开面子,我是一定不会做这样的门户级应用的。原因在于:你做的像个门户,却没有足够多的内容支撑其内容,有没有足够的技术支撑其底层,最后就一定会烂尾。即便有足够的内容和技术将它强行的承托起来,但这样的门户感给人的感觉就是专业和庞大,这种“装”出来的庞大,如果没有真实的用户基础,依然会在运营过程中渐渐的枯萎、最终无疾而终。 所以这样的项目基本上是三岁看老,一眼就能看到头的。 我更喜欢小巧的、纯粹的、单一的服务,一个事情就是一个功能,一个功能就是一个应用。但这样形态的产品现在好像不吃香,至少在我生活的地方不吃香,大家都更喜欢大而全。 花里胡哨的华丽,是他们更喜欢的,在他们看来这才叫“应用”。这样的应用我曾经不知道做过多少,但这么多年下来,一个活着都没有,导致我在自己的“成功案例”里面完全是空白的。有的时候甲方会问我为什么没有成功案例,我怎么回答呢?全都死掉了?如果这样回答,甲方一定会觉得我做的不行、或者我骗人其实从来没有做过,所以最终谈项目的时候会荒掉。 如此陷入的就是恶性循环,累死累活不说,还总也没有拿得出手的东西,没有成功的作品。但事实就是这样。 这次朋友找到我,我就和他说的十分明白,一定要小而精,一定要纯粹。他答应的好好的,结果今天原型图出来给到我,我头就大了。这那里是小而精了? 产品原型规划中,仅仅APP端的业务页面就有173个,还不计后台、接口层,只是单纯的前端数据展现页面,不是那种可以复用的、而是彼此毫无无用关系的,每个页面都是独立功能的,整整173个不同的数据类型和相关的展现页面!!! 除了慢慢的一屏幕的SNS味道,还有无数的通栏广告位,还有各种点赞与收藏的机制,还有分享,还有开屏广告……这不是小程序,这活生生的又是一个巨大的门户网站啊! 没有办法,只能硬着头皮答应朋友做。2个月之后交工。这个工期其实也十分的扯,因为我们约定的是个“小程序”,所以2个月其实时间上都比较长了。但实际上他最终要的东西是个门户,我内心估计至少需要4-6个月才能有个模样。可是当我说出需要3个月的时候(这还是我咬着牙说出来的),朋友已经瞠目结舌,问为什么一个“小程序”需要那么长的时间? 这种尴尬的时刻,再多的解释其实都没有意义,解释的多了反而徒增烦恼,所以我就垂头丧气的告诉他那就加加班、2个月做出来吧。其实看得出来,当他听到“2个月”时,还是觉得太久了,但朋友终究没有再压缩时间,只是说尽量赶。我心想:这样赶出来的,能是什么狗熊样子呢? 翻翻自己曾经做过的项目,拿一个差不多的出来给他改吧,反正这个项目我也不看好。如果真的能够(几乎不可能)做出一些客户和流量来,我再对细节进行返工就是了。但我现在的估计是——指不定又是那个天使倒霉蛋儿,要亏钱了。

一道有趣的几何题

从网上看到的,试着做了做,没有做出来。所以记录在这里,等以后有时间了再重新尝试。 这道题我用绘图工具重新绘制了一遍题目,用的绘图工具是一个web工具,地址如下: https://www.geogebra.org

《普林斯顿微积分读本》阅读备忘(2)

一、前六章学习小结 已经将第六章看完了,现在开始阅读第7章的内容。前六章的内容实际上讲解的非常缓慢,都是在介绍什么是极限、什么是导数、什么是微分。我阅读、理解的更慢,断断续续好几个月才看完。却至今还是没有十分明白。 什么是极限? 极限是指某一个函数如,当自变量趋近于某一个定点时,这个函数的结果、也就是因变量将会趋近于的结果。极限是一个明确的结果、是一个明确的数值、是一个明确的“结果数值”。 什么是导数? 导数和上面的极限不同,相对于“极限”而言,导数并不是一个明确的结果数值,而是因变量的变化量与自变量的变化量的比值,也就是当在某一个明确的点(如)上时,的比值。所以它是“比值”、而非“数值”。 什么是微分? 微分是我仍然不理解的概念,上学时不理解、如今重学微分课程还是不理解。微分似乎既不像是上面的数值、也不像是上面的比值,微分什么都不是,微分只是一个“求导的过程”、“求导的方法”、“求导的思想”。微分是一种“细分思想”,利用这种“细分思想”或“微分思想”完成求导的思维方式。 同时,微分还是一个“符号”,使用“导数符号”表示的是比值结果,使用微分符号表现的是求出”比值“之前的”心路历程“。而且使用微分符号因为能够更多的展现出”求导的心路历程和动机目的“,所以在更复杂的求导过程中,利用微分符号可以更明确的将计算细节展现出来,进而使用各种”微分技巧“进行化简、转换、运算,以完成最终的求导、得到想要得出的比值来。 大概就是上面这个印象。也许还要再多花一些时间继续学习,才能有更透彻的理解。 二、额外的与模电联想 在模电中也经常会提到“微分电路”和“积分电路”,这里的两个名词具体含义也整理一下,也许过几天会用到。 微分电路:电路的输出信号与输入信号的导数成正比。换言之,微分电路输出的是输入信号的变化率。 积分电路:输出信号与输入信号的积分成正比。换言之,积分电路输出的是输入信号的累计值。 三、开始学习第七章的内容 接下来的第7章还是进一步对极限、导数、微分进行更多的例题讲解。只不过其中的例题都不再是多项式函数,而是三角函数。 大概翻看了一下后面的章节目录,后面的不同章节中,仍然是对极限、导数、微分进行更多的例题讲解,和第7章的大概方向是一样的,唯有不同的是,后面章节分别再对指数函数、对数函数、双曲函数……等进行求导、微分。 之所以简单的“极限、导数、微分”要如此一轮又一轮的重复,我猜也许是有如下2个原因: 1、不同的函数类型,微分思想虽然都是一样的,但用到的技巧各不相同,所以要区分讲解,从而不断地引入各种新的微分技巧或定理; 2、不同的工科应用领域中,用到的函数不同,例如在计算机行业中,也许就会经常用到三角函数、但很少用到双曲函数,所以不同专业的人可以有取舍的仅对自己行业频繁用到的函数类型进行微分思想练习。 如上是当前的学习小结。

《普林斯顿微积分读本》阅读备忘(1)

数学很差、差到高中数学都已经忘光、总要借助网络或计算器才能得到答案。最近读《普林斯顿微积分读本》,想提升一下自己的基础数学水平,并争取从头到尾将这本书读完。 断断续续看了两个多月,才刚看到§6.6。接下来将继续阅读§6.7-直接画出导函数的图像。 这篇文章目的是做一个之前阅读的备忘,否则过不了几天,也许又是狗熊掰棒子——把前面已经阅读过的内容忘记了。 一、前面章节主要讲的是什么? 主要讲的应该都是高中的数学知识,属于从高中的代数、向着高等数学微积分入门课程的过渡,这个承上启下的“衔接部分”,主要讲了极限、导数的概念,并且通过一些例题解释了如何计算极限和导数。 在介绍导数的基本概念时,大概讲了讲导数的本质——在图像上某一点的导数,就是这一点上的斜线斜率,换言之就是这一点上的最佳线性逼近。 二、我现在还不理解的事情有哪些? 主要是今天在阅读的时候,在“速度和加速度”章节上的“加速度为负数”例题上,有一个知识点不会:求解,或者说对于形如的方程如何求解。 书中只说用“因式分解”可以得到两个实根,并且其中一个是负数在例题的环境下应该舍弃。并没有具体的推导过程,显然是因为一元二次方程求解属于高中数学知识,显然便不展开了。但我已经忘光了,所以不会求解。只好用最笨的方法——观察法,找到了它的解。(幸好这个方程可以通过观察找出解来)。 update 2024.07.04:经过重温一元二次方程求解方法,大概知道了配方法和韦达定理,并且已经用配方法和它推导出的最终直接求根公式,完成了这部分的例题。 三、接下去要继续学习 以上就是最近的读书笔记,接下去,继续看:§6.7-直接画出导函数的图像。

Electron.js中的警告错误2则

最近在使用electron.js进行一个客户端APP的开发,虽然electron.js的开发可以实现一端开发、跨平台实现。但实际上我的主要考虑发和运行环境是一样的——都是在Windows10系统中进行。此时遇到了2个警告问题,这2个警告都没有找到原因、并且都没有解决,只是先临时记录一下: 1、Request Autofill.enable failed APP启动之后,在主进程的控制台输出上会有如下的错误提示:”Request Autofill.enable failed. {“code”:-32601,”message”:”‘Autofill.enable’ wasn’t found”}”, source: devtools://devtools/bundled/core/protocol_client/protocol_client.js (1) 这个问题在网络上没有找到比较准确的答案,网上提到的通常是:这个警告信息并不构成实际问题,可以忽略。但是有人也提出“做为编码洁癖者,受不得这样的提示出现”。 经过尝试发现,这是在开发时打开了浏览器的debug窗口引起的,如果在开发的时候不打开调试窗口,则不会出现这个错误。 2、Electron Security Warning (Insecure Content-Security-Policy) This renderer process has either no Content…

又新买了一个USB网卡

1. 之前本来有一个USB网卡,但是被朋友“借走了”,只好再新买一个。之前被朋友借走的是“绿联”,最近因为“囊中羞涩”,所以只能买一个性价比更高的品牌——比亚兹。 我不太清楚这些不同的品牌、但是功能相近的小周边,本质上有没有品质和成本的差异,但是单从外观和使用体验上,暂时并没有感受到什么太大的差异。 可偏偏就是这样一个“没有差异”的感觉,却让我的心情十分不好。原因在于我又有些“替古人担忧”了。我总是觉得这种看似谁都可以做的小周边产品,应该有个更专注、更专业的品牌,那样才能令患有“购买焦虑症”和“选择恐惧症”的人,在购买的时候,不会有太多的左右为难——有钱的时候就买公认最好、最专业的品牌,没钱的时候买个凑合能用的临时将就一下。 没有,这种小周边、小电器,现阶段应该是没有谁家能说自己就是最专业的,大家都是你做我也做,他有谁都有,并不能通过参数、配置、指标分辨出好歹。所以购买的时候总会很纠结。更多的时候,这种商品的购买往往是通过“先入为主”在自己印象中给出它的归属。 例如电脑周边的小产品,我莫明其妙的就会觉得“绿联”非常好、非常专业。为什么会有这种感觉呢?说不好,似乎是“绿联”这个品牌的名字起的不叫正规、大气吧。

记一个自己学习初等数学“切线”时的困惑

一、我的困惑和不解 函数的图像如下,显然的,在原点处是没有这个函数的切线的。但这里“显然”似乎又不是那么“显然”,切线究竟是什么呢?对于在平面上的曲线的切线,历史上有过多种定义方式,现今对切线的定义与莱布尼茨给出的定义表述是一致的,都是利用极限的思想对切线进行定义。 对于曲线S上的某一点A,在A点外做另一个同样落在曲线S上的点B,这样AB可以构成一条直线L,这条直线L可以称为曲线S的割线。 当B点沿曲线移动、并逐渐向A点接近,也就是B沿曲线S像A点逼近,当时,得到的割线便是经过A点的曲线的切线。 上面的定义本来能够解答下面这个图象的疑问:为什么在图像的原点处,没有切线呢?答:因为如果设原点处为A,可以从图像上看出来,B点在左边和B点在右边两种情况下,当时,得到的“极限L线”不一致,所以原点、也就是A点处的切线是不存在的。 但是上面这个答案、或者说解释,以我现在的数学水平,是无法“透彻理解”的。原因在于: 1、我为什么不能说这一点上有2条切线?为什么偏偏要说这一点上的切线不存在?难道图像上任何一点只能最多只有一条切线吗? 2、并不是,而直线既然是通过A和B两点定义的,那么在时就不是严格的,此时通过极限得到的与时得到的就一定是一样的吗?这里额外的又回到了上面的问题:没有2个点,怎么定义出的直线呢? 不想了,想多了脑袋痛。我觉得想通过“极限”定义出切线,也许还有其他基础知识需要学习。换句话说,我隐约感觉:或者是我的学习脉络不正确;或者是这个定义的脉络不正确。也许应该先有导数的定义,有了导数的定义就有了斜率的概念、有了斜率和点A,就可以通过直线的另一个定义方式——点斜式——定义出直线。 所以如果按“将定义脉络翻过来”的想法来解释,也许就是:图像上某一点要先可导,当它可导时就是有斜率的,从而通过“点斜式直线定义”,这一点就是有一条“点斜式可唯一定义出的直线”的,从而这样一条唯一存在的直线就是该点的“切线”。 二、额外的问题: 在搜索上面的问题及尝试通过互联网找到答案时,看到网上有这么3句话: 1、在数学中,切线是与曲线在某一点相切的直线。更严格地说,曲线上某一点的切线是该点处的最佳线性逼近。切线的定义依赖于“可微性”的概念。如果曲线在某一点处是可微的,那么该点处的切线是唯一的; 2、如果曲线在某一点处不可微,则该点处的切线可能不存在,或者不唯一; 3、如果切线的斜率为无穷大,则切线是垂直的; 上面这三句话令我更加“头晕目眩”了。原本的问题没有得到解答,却又多出来更多的“读不懂且理解不了、想不出具体情形”的表述。我现在对数学学习的感觉就是:不要想太多,能把课后习题做出来,就知足了。