使用Electron/Web开发的踩坑记录
之前在Python的GUI编写上有过一些简单的尝试,后来想到结合FastAPI的后端,自己再写一个前端熟悉一下HTML5/CSS/JS三件套,又听说Electron是Web套皮做GUI的不错的选择,所以也做了一些尝试,但是遇到了不少的坑。老实说,有些地方的文档实在是写了和没写差不多……
下面在假定已经完成了Electron的安装,写好了Web页面的基础上,介绍一些经验。
基于Napi实现C++和Node.js交互
最初写好的Web的核心逻辑完全依赖Web上的API,而这一部分我已经写过C++的实现,所以自然地想到在Node.js里调用C++,然后向Web页面提供这部分功能。
最开始搜到的实现方法是node-ffi,这个模块提供了和C++编写的动态链接库的交互,具体用法和Python的ctypes大同小异,也是注册接口,定义输入参数和返回值的数据类型,做好转换就完成了。遗憾的是,这个模块在2018年就已经停止维护,貌似并不支持新版的Node,不能通过编译,而我也不愿意专门为此倒退版本,于是作罢。
在这之后,就只有在C++中编写原生接口的办法了。当然这里也有两种选择,一种是直接基于v8, ...
在vscode中配置golang开发环境时遇到的小坑
从官网下载golang的安装包完成安装,并且在vscode里也装好拓展之后还不能正常调试和运行,提示需要补充安装一系列的插件。这时问题来了,无论重试多少次,抑或是在命令行窗口里手动输安装的命令go get xxx,都无一例外地提示错误……
网上相关教程很多,基本上是要手动到github或者golang官网把插件下载回来,再放好路径配置安装,然而vscode提示有17个插件要装,要是全部手动完成就太难受了……
认真检查报错信息之后发现,虽然这些插件大多来源于github上的代码仓库,照理说都是可以正常访问的,然而golang在获取插件的时候,默认是从某个带有proxy字样的域名获取,而不幸的是这个域名指向的IP不能访问,于是我想到或许可以换源解决这个问题,搜索到国内的镜像源和相关配置:
12go env -w GO111MODULE=ongo env -w GOPROXY=https://goproxy.io,direct
完成配置重启vscode再尝试安装的时候,所有安装都毫无意外地成功了。解决。
不过GO111MODULE这个参数貌似会带来一点问题,导致package main也会报 ...
基于Snap的Nextcloud安装与配置
Git适合基于纯文本类文件的多人协作,但是对于一般的文件同步需求来说显得过于复杂,所以最近尝试在自己的CentOS云主机上安装了一个类似于私有云盘的Nextcloud,这里记录一下安装过程。
由于中途参考了大量博客和论坛的解决方案,这里就不一一声明和记录了。
安装Snap
据说新版的Ubuntu自带了Snap,但是我当前使用的CentOS显然没有,这里使用yum安装:
1sudo yum install snapd
安装完Snap之后就遇到了第一个坑,无法继续进行,这里要先做一些处理:
123sudo systemctl unmask snapd.servicesystemctl enable snapd.servicesystemctl start snapd.service
安装Nextcloud
使用Snap安装Nextcloud也比较简单:
12sudo snap install nextcloudsudo snap start nextcloud
完成后,首先要进入初始化页面完成初始化安装,默认地址是http://<IP/域名>,但是因为我的80和443端口都无 ...
阅读障碍与ADHD共患问题的VBM元分析
文献笔记的记录和收集。
Title
DOI
Are there shared neural correlates between dyslexia and ADHD? A meta-analysis of voxel-based morphometry studies
https://doi.org/10.1186/s11689-019-9287-8
Focus: Gray matter correlates
Introduction
The multiple deficit model stipulates that there are multiple, probabilistic predictors of developmental disorders across levels of analysis and that comorbidity arises because of risk factors that are shared by disorders.
What is missing are the potential overla ...
How To Think Straight About Psychology - 摘录 6
第四章,关注的是个案研究和安慰剂效应。
顺便一提,这个作者貌似比较喜欢在章节开头说得很绝对,然后再慢慢改回来。
Sentence 1
The reason is that case studies and testimonials are isolated events that lack the comparative information necessary to rule out alternative explanations. (Chap. 4, p. 55)
简评:不太明白这里对个案研究的划定。如果是非常罕见而几乎只能找到个案的现象,不知道作者会不会把这一类归进去。
Sentence 2
One of the leading writers about Freud’s work, Frank Sulloway, has said that “science is a two-step process. The first step is the development of hypotheses. Freud had developed a set of ext ...
How To Think Straight About Psychology - 摘录 5
进入第三章。标题是“操作主义和本质主义”。
Sentence 1
Operationism is simply the idea that concepts in scientific theories must in some way be grounded in, or linked to, observable eventes that can be measured. Linking the concept to an observable events makes the concept public. (Chap. 3, p. 39)
简评:对操作主义的简单、明确的定义。还是很容易让人接受。
Sentence 2
For example, defining the concept hunger as “that gnawing feeling I get in my stomach” is not an operational definition because it is related to the personal experience of a “gnaw ...
How To Think Straight About Psychology - 摘录 4
继续是第二章的摘录。
Sentence 1
I remind the audience that replication of a finding is critical to its acceptance as an established scientific fact and that this is particularly true in the case of results that contradict either previous data or established theory. (Chap. 2, p. 27)
简评:这里应该是把可证伪性和可重复性联系在一起了,不知道是否符合逻辑。
Sentence 2
Thus, we must look not only at the quantity of the confirming evidence, but also at the quality of the confirming instances. (Chap. 2, p. 28)
简评:这是在可证伪上的延伸,从证伪推向证实,虽然关系并不是那么密切 ...
How To Think Straight About Psychology - 摘录 3
进入绪论之后的第二章,可证伪性。作者把这一部分安排在这个位置,不难推知他对可证伪性的重视。
Sentence 1
Scientific theories must always be stated in such a way that the predictions derived from them could potentially be shown to be false. Thus, the methods of evaluating new evidence relevant to a particular theory must always include the possibility that the data will falsify the theory. (Chap. 2, p. 22)
简评:非常简单直接的阐释,简单得让人想起行为主义的主张。当然,也可以作一些延伸。从这个解释出发,可以推导出科学应当具有的预测力。一些不具有可证伪性的体系,确实不具有预测力,或者具有虚假的预测力。
Sentence 2
The more specific and prec ...
Python中ctypes调用dll的简单测试
Python便于开发但是效率一般,C/C++效率较高但是开发难度相对更大,这可以说是老生常谈了。对于我这样的业余人士而言,效率并不是那么重要,但是如果能够做相对少的工作,而使得性能可以有较大的改善,我当然还是乐意的。这里介绍一下我对ctypes调用dll的简单测试。
首先,编写一个C的程序。这里使用最简单的累加来测试速度。
123456/* test.c */void sumup();void sumup() { for(unsigned long long i = 1; i <= 1000000; i++) {}}
然后,使用gcc将test.c编译为Python可以调用的dll(注意是否添加了环境变量)。
1gcc test.c -shared -fPIC -o test.dll
在Python中分别通过ctypes调用sumup累加和使用Python实现累加,并通过装饰器(鸣谢:@Toyomu)计时。由于单次运行时间较短,为方便起见,这里选择了在Python中循环调用来延长时间。
12345678910111213141516 ...
How To Think Straight About Psychology - 摘录 2
这次看的还是绪论部分,大致讲述了心理学和“常识”的冲突,有价值的地方有不少。
Sentence 1
We all have implicit models of behavior that govern our interactions and out thoughts about ourselves and other people. Indeed, some social, personality, and cognitive psychologists study the nature of these implicit psychological theories. Rarely do we state our theories clearly and logically. (Chap. 1, p. 13)
简评:这说的应该就是“心理理论”,确实是我们会视为理所当然,常常忽视但是意义非凡的心理现象。
Sentence 2
That folk wisdom is “after the fact” wisdom, and that it actually is useles ...