根据给定的参数,在窗口上绘制直线。
其实我是想来绘制“多边形”的,但是因为刚刚开始上手这门“古老的语言”,所以先从最简单的实现开始。
根据给定的参数,在窗口上绘制直线。
其实我是想来绘制“多边形”的,但是因为刚刚开始上手这门“古老的语言”,所以先从最简单的实现开始。
十多年前的一位老同事找到我,和我聊了一陣子,并且問我有沒有時間做一些有關Java語言開發的視頻,以便幫助她的女兒學習Java語言。 我之前使用B站做過很久的視頻内容,但是因爲B站上面總會有各種各樣奇怪的人跑來我的視頻頻道給出污言穢語的惡意評論,所以我就對做視頻越來沒有興趣了。 這次老同事找我説過之後我,我想趁著這個事情,再做一些視頻,但是就不再發到B站,而是發到YouTube上面去好了。因爲同事人在國外、看YouTube應該要比看B站方便,我也就順便開始將自己的視頻更新到上面,一舉兩得。 做了很長一段時間的視頻,并不是爲了流量或關注人數,只是純粹自己的生活、學習、工作記錄,平日錄下來并且在找一個地方發上去,方便自己的朋友、家人觀看。選擇B站也是覺得這個網站的技術好、空間限制少,但是每每發出視頻就會有令人厭惡的評論,的確影響自己上傳的積極性。 發在YouTube上面其實也是有一些問題的,那就是我的親朋好友并不一定能去看,畢竟從國内訪問還是很困難的。但是我想YouTube上面發視頻也有好處:至少不會有那麽多的污言穢語。而且今後如果自己的親朋真的想我、想看我的視頻,相信他們也是可以看到的。 這麽想著,便開始給同事做她需要的視頻,等給同事的視頻做完之後,我估計自己也會養成上傳YouTube視頻的習慣,那時我便可以再將自己日常的生活、學習記錄,發上去。
路由器GL.iNet AR750S-EXT在前几天误操作变砖之后,重新使用UBOOT机制进行固件安装,并成功安装了Open WRT的最新版固件,此时此刻用着还算稳定。 不过在Open WRT系统内,预装的是Dropbear SSH的服务端和客户端,而并非Open SSH的服务端和客户端。 两个SSH的发行版本差别有一些,Dropbear SSH是专门针对嵌入式系统开发的,它对系统资源的占用更小,功能上也更加精简。虽说常用功能都一样,基本可以平替。然而事实上,对我而言他们二者还是有一定的区别,导致现在稍微有一些难以满足个人需求了。 当前遇到的最主要的问题是:直接使用证书访问登录远程服务器,DropbearSSH会提示String too long错误。 这是因为通常情况下远程服务器都是open ssh server,所生成的也就自然都是open ssh所使用的证书文件。如果直接使用dropbear ssh读入这个证书,会发现并不能正常读取: 当前因为系统内安装的是Drop bear SSH client,所以需要对证书进行重新制作,比较容易的做法是直接使用dropbearconvert命令进行转换生成新的证书。 dropbearconvert是一个控制台命令,先使用opkg包管理器进行安装,之后便可使用。 这样就可以生成出适用于dropbear ssh的证书:
今天陪老婆、孩子一起去首钢园逛icos漫展,目测现场至少6000人,规模宏大、场面壮观。满场的俊俏,赏心悦目。 老婆喜欢国乙、大儿偏爱原神、小儿还没到挑剔的年龄,只要好看好玩的新奇都有着十足的兴趣。我满心期待能收获一些手办,结果现场主题是cosplay,商家寥寥,心愿落空。好在美女如云也算饱了眼福。 漫展是在原焦化厂改建的首钢会展中心举办,群明湖畔、五一剧场附近,那里的一切对我而言,并不陌生。 小学时,每年都会去五一剧场“红五月歌咏比赛”,我五音不全只能滥竽充数。对于小学生,当众表演本就十分紧张,只开口不发声更增加了惶恐,所以不用任何的粉饰,我的脸就已经通红到了耳垂。老师并不会考虑到这个因素,在入场前总会给我们涂上浓重的腮红和口红。现在回忆起来,还能感到脸颊阵阵发热。 父亲喜欢钓鱼,盛夏时总会带我去群明湖。父亲钓鱼时、我用铁丝圈套蜘蛛网,等蛛网套上几层后,便会在湖畔粘蜻蜓。运气好时能粘住个头巨大的“老干儿”,那会让我兴奋的手舞足蹈。可父亲总会十分严厉的告诫我要小心,骗我说湖水深不见底。我是相信的,因为任人看过那个人工净水湖,就会想当然地以为它是个“倒金字塔型”,一旦落水就会一路滑入湖中心、巨大的深渊。 焦化厂并不像五一剧场或群名湖,那是闲人免进的厂区。从围墙外远远的,便能看到六座巨大的料仓,如首钢厂区内其他巨大的仓、釜、塔、罐……这些远超常规尺寸的巨大设备,与周边的建筑形成鲜明对比,有种巨物压迫感、像是来自外星的科技、十分恐怖。 火车穿行于首钢各个厂区之间、铁路从外部直通整个厂区,将各类原材料、成品,送入、送出。我家村子就在首钢边上,村里的小孩儿每逢放假就会去铁路周边玩耍:抓蜻蜓、逮蚂蚱……更多的时候,则是三五成群,沿着铁道捡拾散落在草丛里的各类“宝贝”,不知是送入还是送出焦化厂的焦炭,便是我们共识的宝贝之一。 拿着蜻蜓跑回家,往往会被莫名的踹上几脚;但如果拎着一箩筐、哪怕其中只有3、5块的焦炭回去,无论是在草地里打过滚儿、还是和小伙伴彼此往对方脸上抹过泥,都会因为帮家里寻得了“宝藏”而免受皮肉之苦。 再去首钢园,儿时回忆不禁涌上心头。
买了一台“服务器”。不是那种巨大的、能够安装系统、部署软件的“大电脑”。而是一台RS232 to Ethernet的信号转换服务器。我不知道为什么它的名字要叫“服务器”,也许是因为它能够提供这种服务,所以叫服务器吧。 之所以买只是因为想买。有的时候我感到彷徨、空虚、无助的时候,就喜欢买东西。而且是越没有钱的时候越想花钱买东西。 记得去年某个时期,我手中只剩几十元了,巨大的生活压力压在身上、喘不过气。那个时候就是每天晚上睡觉之前在网上逛网店,看到2元、3元包邮的东西,也不管有用没有,就下单买回来。然后就蒙头呼呼大睡,等着快递送来。 其实那时买回来的不过是一些纸巾、牙刷……一点儿用也没有的东西,但就是停不下来,总想买些什么、每天都在买,似乎只有购物才能缓解我心中的焦虑。 还有更早一些时候也是这样,当时有几个IC网站都是包邮的,纵使只买0.5元的一包电阻,也会包邮到家。我就会买下来,对我而言那些电容、电容,一点儿用也没有,只是因为他们便宜、并且包邮,我钱包中的钱也只能买它们,所以就陆陆续续的邮寄到了家里。 这些毫无用途的东西买回来之后,多多少少可以填补一些我的生活,收快递、拆包装、端详一阵、把玩一翻……总之就是消磨一些时间罢了。 更有钱时、当然“更有钱”也只是相对的,无论多少都还不足以买到每日吃穿。我会买一些图书,图书远比上面提到的那些电阻、电容、纸巾、牙刷要好很多,因为一本图书可以翻来覆去看很久。尤其是科学方面的图书(例如数学、物理、化学) ,它所能消磨的时间远比小说或散文更多、只是故事性和阅读时的顺畅感会少一些。所以我会买书,买回来之后翻看,这样的日子几乎在我的人生中反复的重复着。 最近买回来的RS232-Ethernet服务器,显然比图书更昂贵一些,说明我最近的“羞涩”少一些、出手便更阔绰一些。昨天收到了快递,我并没有急着拆开。而是将他放在桌子上,当是自己送给自己的“儿童节礼物”吧。 今天上厕所时慢慢的将它拆开了,翻看着外包装、印刷文字、内附的广告插页……内心其实很迫切的想尽快将这台有趣的电子设备拿在手中把玩,但我知道要克制。如果只是一股脑地端详、把玩、上电测试……一股脑地将它拆开、抄板、解读……那么它所能带给我的乐趣将会很快结束。 所以我克制着,希望能够一点点的玩味,直到下一个儿童节的到来。
一、放弃wxWidgets 之前尝试用wxWidgets框架写应用,后来越写越不顺手,所以当代码到达3000行的时候,我就动摇了。想了2-3天,不断地摇摆,最终决定放弃使用wxWidgets,自己实现。而且不借助已有的GUI框架,自己实现用到的UI组件。 因为我想实现的应用程序本身并不复杂,用到的UI组件也不会很多,所以实现难度估计应该不大。实际上经过这几天的初步尝试,感觉也还是非常良好的。 自己实现组件,主要就是对渲染和交互的控制,而且我只需要不到10个基础组件,所以现在代码量2000行左右,已经有了一个大概的模样,预计再有一周左右就可以粗糙的实现出来了。 自己动手实现这些组件更大的好处是控制权限更高,例如事件的传递机制,我可以按照自己的想法进行链式的、广播式的、或者就是定向的传递,十分的灵活。当然这种灵活的前提是建立在良好的封装的基础上的,否则一旦没有及时的进行归纳和封装,就有可能将代码写乱、写花,所以每一个新机能的增加,都要对所有已实现的部分进行一边重构、归纳,这是比较花时间的事情。 不过这样做也有好处,就是一旦当前的小工具实现完毕,就拥有了一个简陋的Simple GUI,这样可以为今后再实现其他软件进行复用,持续做下去,不仅能够丰富自己的基础代码库,也能令后期的开发越来越便捷。 如此看来,现在经历的“枯燥”也许是有价值的,只不过它需要时间去验证、还需要一定的坚持才能见到回报。 二、初步的实现和初步的想法 既然已经决定自己从底层一点点慢慢写起,我也就不急于将最终的工具实现出来了,至少不基于做出一个“公众版”出来,只要自己能先用起来也就可以了。 而且自己实现就意味着要在一张画布上自己实现每一个控件和事件,也就无所谓用什么引擎。基本上能用的窗口管理器+图像引擎都可以拿来使用。这样想来,OpenGL应该是首选、其次SDL2、再次DirectX12。既然无所谓,所以我索性就三种引擎都试一试,都写了一写,最终哪一套的实现效果好并且开发难度小,最终的“公众版本”就基于哪一套继续开发就好了。 至于这个工具的目标平台,其实最初我考虑就是做在Windows系统上,虽然当初选择wxWidgets也有一定的跨平台考虑,但并不迫切。可既然如今决定“在一张白纸上”实现自己的基础控件,也就是说理论上它的跨平台移植能力应该也是有的,所以等到做公众版的时候,可以考虑多平台一起实现出来。 不过上面这些也只是初步的想法、幻想。我甚至这样做的工作量将是巨大的,没有3、5个月,估计连个影子都看不到。所以还是要坚持每天写上一写,才有可能将这个美好的“幻想”尽可能想着“现实”实现出来。
最近看RC相移振荡器的时候,发现自己欠缺的基础知识有些多,所以不得不重新学习有关电阻和电容的基础知识。 一、基本概念和定义: 要想了解关于电容的基础知识,我想应该从最基本的电流、电压、电阻方面的知识学起。而这三个基本概念分别是安培、伏特和欧姆三位先生所定义出来的,所以这三个基本的单位使用了三位先生的名字作为定义。 于是就有了: 1、电流:单位是“安培”(Ampere),这是在1836年时为了纪念在电磁学方面有突出贡献的法国科学家安德烈·马里·安培,而以他的名字命名的(虽然是1836年正式命名,但是电流的定义应该早于1800年、早于电压的定义时间)。电流的定义是I=Q/t,含义为在导体内单位时间内所移动的电荷量。 2、电压:单位是“伏特”(Volta),这个概念是亚历山德罗·伏特(Alessandro Volta)在1800年提出的。它的定义是:U=W/Q,即单位电量做出的功。如果电量Q做出的功是n焦耳,说明这些电量Q的电势能降低了、从而释放出了n焦耳的能量。这些Q之所以电势能降低、释放出能量,是因为它们从处于高势能的电场区域移动到了低势能的电场区域。 3、电阻:单位是“欧姆”(Ohm),欧姆定律是在1827年首次提出的。德国物理学家乔治·欧姆(Georg Ohm)在当年发表的《The galvanic circuit investigated mathematically》中,详细描述欧姆定律。在这本书中,欧姆解释了通过简单电路中的各种长度导线时的电压和电流的测量结果,并提出了与现代形式略有不同的稍微复杂的方程来解释他的实验结果。电阻的定义是R=V/I。 二、直接和间接: 从上面的对电流、电压、电阻的定义能够看出来:电流和电压都是有着明确的定义、并且可以通过直接测量,例如直接使用电流表和电压表得到的物理量。所以他们是被精确定义的物理量和物理单位。 而电阻则是根据欧姆定律计算得到的,属于间接物理量和物理单位。虽然电阻也可以通过万用表测量出来,但是使用万用表进行电阻的测量,其内部原理仍然是施加一个电压、然后测量电流,通过电压和电流的测量值,计算出来电阻。所以电阻是计算出来,而不是测量出来的。所以电阻是间接定义、计算得到的物理量。 三、展开说一下“间接”计算: 之所以上面会提到“电阻是基于电压和电流、通过欧姆定律计算”而间接的得出的,原因是对于很多类似的公式,我都存在着困惑:这些计算公式是怎么得来的? 例如,除了电阻R=U/I外,在《电磁学》中提到的Priestley实验,这个Henry Cavendish在1773年完成的实验中,得到了如下的电场力公式: 这个公式我也存在同样的疑惑:Henry Cavendish是凭什么给出的这样一个公式的呢?在这篇blog写作的时候,我似乎解答了自己多年的困惑——这些“间接计算量”并不是想当然地提出来的,而是通过大量的试验,根据试验的数据拟合出来的结果。 为了进一步的将自己的想法整理清晰,先将上面的公式简化一下,直接用库仑定律来当例子。库仑定律是说两个点电荷q1和q2之间的库仑力F,定义如下: 这个库仑定律以及库仑力的计算公式,我之前长久的困惑就是:为什么库伦当年就能“定义成”力是与距离的平方成反比的,为什么偏偏是“平方”,而不是“3次方”、“8次方”呢? 我的想法应该说是非常幼稚的,但我就是闹不明白。现在应该大体上有了答案:库伦之所以能够肯定,是因为他做了大量的实验,并通过实验得出的结论。例如我也给出一些数字来,这些数字假设是实验的记录,那么根据这些数字,反推出公式应该是不难的。 A球电荷量 B球电荷量…