Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

编写Chrome插件,需要用sql访问本地电脑(使用插件的电脑)的sqlite数据库

126 views
Skip to first unread message

Alont

unread,
Mar 31, 2021, 11:00:00 AM3/31/21
to
好像Chrome扩展本身没有本地sqlite数据库的支持?
有没有办法用javascript在扩展程序里用sql语法访问本地电脑特定文件夹的sqlite DB文件?

Lu Wei

unread,
Mar 31, 2021, 11:16:16 PM3/31/21
to
On 2021-3-31 22:59, Alont wrote:
> 好像Chrome扩展本身没有本地sqlite数据库的支持?
> 有没有办法用javascript在扩展程序里用sql语法访问本地电脑特定文件夹的sqlite DB文件?
>
Mozilla系的倒可以用插件SQLite manager操作本地的sqlite文件

--
Regards,
Lu Wei
IM: xmpp:luwe...@riotcat.org
PGP: 0xA12FEF7592CCE1EA

acc

unread,
Apr 1, 2021, 3:27:59 AM4/1/21
to
> 好像Chrome扩展本身没有本地sqlite数据库的支持?

chrome 的 content script 不能访问自己目录之外的文件, 浏览器对 js 的限制非常多. 基本上

要么通过 Native Messaging
https://stackoverflow.com/questions/21912056/access-local-files-using-a-google-chrome-extension

要么再弄个本地 http 服务器, 让插件访问这个 http 服务器. 但运行本地 http 服务器的操作也不能在 js 里完成

要么写个本机程序, 该程序注册自己能够打开某个网络协议, 然后在你的页面里生成那个协议连接,
点的时候打开你的本机程序, 类似迅雷

sql 语法方面, websql 标准已经废弃, 并且 websql 也没法访问已有的 sqlite 数据库文件

Alont

unread,
Apr 1, 2021, 9:17:09 AM4/1/21
to
我有时用过firefox浏览器上安装的SQLite manager, 好像Chrome插件也有一个SQLite manager,
但我想要的是自己在浏览器里和电脑上某个文件夹上的sqlite db进行查询,
今天搜索了很多资料,能实现这一点方法还没找到,好费劲呐。。

Alont

unread,
Apr 1, 2021, 9:50:09 AM4/1/21
to
感谢回复,感谢你如此认真的理解了我的需求:

On Thursday, April 1, 2021 at 3:27:59 AM UTC-4, acc wrote:
> > 好像Chrome扩展本身没有本地sqlite数据库的支持?
>
> chrome 的 content script 不能访问自己目录之外的文件, 浏览器对 js 的限制非常多. 基本上
>
> 要么通过 Native Messaging
> https://stackoverflow.com/questions/21912056/access-local-files-using-a-google-chrome-extension

Chrome的Native Messaging好像没有sql查询本地SQLite数据库的功能吧?


> 要么再弄个本地 http 服务器, 让插件访问这个 http 服务器. 但运行本地 http 服务器的操作也不能在 js 里完成

写chrome扩展程序的时候可不可以用javascript查询本地已经搭建的mysql数据库?如果可以我就把当前的本地sqlite更换成mysql服务。
如果javascript不能在chrome扩展程序中直接查询mysql,那就得再搭建个http服务器,然后chrome扩展程序和http服务器进行sql查询?

> 要么写个本机程序, 该程序注册自己能够打开某个网络协议, 然后在你的页面里生成那个协议连接,
> 点的时候打开你的本机程序, 类似迅雷

这个方案太麻烦,我不是专业程序员,这个方案有点不现实,不如搭建个本地服务器简单一点吧?

> sql 语法方面, websql 标准已经废弃, 并且 websql 也没法访问已有的 sqlite 数据库文件


今天研究了sql.js和alasql, 不知是我没研究透,还是这两个方案根本就不适合我的需求呢?

Alont

unread,
Apr 1, 2021, 10:37:05 AM4/1/21
to
查了资料,说是浏览器端的javascript不能直接访问mysql,那chrome扩展程序也是浏览器端,也就无法直接通过javascript访问mysql数据库,
看来得再搭建个http服务器,不会php,那就还是用python flask搭建个简单的服务器用来连接浏览器和mysql吧,感觉有点杀鸡用牛刀的感觉,一年没用过python的flask了,年纪大了,啥都忘掉了,又得磨磨刀了。。。。

acc

unread,
Apr 1, 2021, 5:08:15 PM4/1/21
to
> 感谢你如此认真的理解了我的需求

哈哈, "让网页做它做不了的事" 这种想法我遇见的比较多, 其中有很多确实能做, 并不是做不了.

> Chrome的Native Messaging好像没有sql查询本地SQLite数据库的功能吧?

没有. 它既和 sql 语法没关系, 也没办法打开本地文件.

根据 web 规范 js 读写文件有个要求, 就是不能有默默执行这回事, 操作必须由用户发起: 打开文件必须调用一个 api,
此 api 显示系统标准的打开文件对话框, 返回给你用户选择的文件代号列表, 文件只读; 保存文件必须用下载文件的方式,
显示一个新建文件对话框, 让用户选择文件保存的位置.

> 写chrome扩展程序的时候可不可以用javascript查询本地已经搭建的mysql数据库?

不行. 前面知道没法 (默默地) 打开文件, 就没法自己解析 db. 现在问能否查询本地已经搭建的数据库, 不能. js 不支持
socket, 没法连接端口, 也就没法连接数据库; 然后是没法访问内存, 也就即使能连接端口也没法和端口交换字节*

* node.js 解决办法是给你转成 Buffer; js 虽然有 typed array 但没有定义从内存转换为 typed array 的机制.

如果已搭建的数据库提供 http 接口, 那当然就解决问题了.

> 如果可以我就把当前的本地sqlite更换成mysql服务

怎么使用这个服务? 端口, 管道 js 都用不了, http 能用

> 今天研究了sql.js和alasql, 不知是我没研究透,还是这两个方案根本就不适合我的需求呢?

没听说过这两个库, 因为很少用 sql

> 查了资料,说是浏览器端的javascript不能直接访问mysql,

应该没错, 不能访问

> 看来得再搭建个http服务器,不会php,那就还是用python flask搭建个简单的服务器

要我的话肯定用 node.js 😁

Alont

unread,
Apr 1, 2021, 8:47:40 PM4/1/21
to
你的回答句句直抵我的疑问深处,基本原理搞明白了,昨天研究的sql.js和alasql和我的需求不搭边,属于服务器端的技术,或者只能在内存里运行。
放弃幻想,只能通过搭建mysql+http服务器,然后chrome扩展程序里用javascript通过http的方式查询、交互了。
非常感谢!
没想到为了一个小小的网页浏览需求,居然特地要为这个需求搭建完整的web服务。。。果然是杀鸡用牛刀,还没有别的刀可用:D
不过这个结构用习惯了,以后还有类似需求也就迎刃而解了。
用node.js搭建服务器还没学,这两天学javascripts的时候见过这个东西,还没深入,
去年疫情开始的时候 为了给孩子做拼音学习纠正服务和语文、英语听写服务,学习了用python+flask搭建简单web应用,
怎么搭建服务还有点印象,先用这把小刀解决问题再说,是不是node.js在搭建web服务方面比python的框架更简单呢?

Lu Wei

unread,
Apr 2, 2021, 4:54:41 AM4/2/21
to
On 2021-4-1 21:17, Alont wrote:
> 我有时用过firefox浏览器上安装的SQLite manager, 好像Chrome插件也有一个SQLite manager,
> 但我想要的是自己在浏览器里和电脑上某个文件夹上的sqlite db进行查询,
> 今天搜索了很多资料,能实现这一点方法还没找到,好费劲呐。。
>

如果不是限定要在浏览器里的话,jscript应该是可以的,以下改编自
https://docs.microsoft.com/en-us/sql/ado/guide/data/jscript-code-example-to-return-a-recordset
并在我的机器上测试通过:

------------ js code ------------------
try
{
var objRs = new ActiveXObject("ADODB.Recordset");
}
catch (e)
{
alert("ADODB namespace not found.");
exit(0);
}
DP = "Microsoft.Jet.OLEDB.4.0";
DS = "C:\Program Files\\Microsoft Office\\Office10\\Samples\\NORTHWIND.mdb";
strComm = "SELECT * FROM Products WHERE ProductID<3 ";
strConn = "Provider=" +DP+ ";Data Source=" +DS;
adOpenForwardOnly = 0;
adLockReadOnly = 1;
adCmdText = 1;
objRs.open(strComm, strConn, adOpenForwardOnly, adLockReadOnly, adCmdText);
objRs.MoveFirst();
while (objRs.EOF != true)
{
alert(objRs("ProductID")+"\t" +objRs("ProductName")+"\t" +objRs("UnitPrice"));
objRs.MoveNext();
}
objRs.Close;
objRs = null;

function alert(str)
{
WScript.Echo(str);
}

------------ js code ------------------

acc

unread,
Apr 2, 2021, 4:58:55 AM4/2/21
to
> 没想到为了一个小小的网页浏览需求,居然特地要为这个需求搭建完整的web服务。。。

一般都要这样. 浏览器以安全为主, 给 js 很多限制. 基本上只要是访问硬件都需要自己写程序,
访问硬件并运行 http 服务器, js 和程序通过 http 交换文本, 可能还要考虑跨域. 由于库比较多,
"完整的web服务" 一般也不要很多代码.

> 是不是node.js在搭建web服务方面比python的框架更简单呢?

都简单, 哪个顺手就用哪个. 我用 node.js 一是因为喜欢 js 语言, 二是 node.js 的 api 比较直接,
基本就是操作系统 api 的 js 接口, 没加入那么多自己的发明创造.

css, html, js 是近几年我最喜欢的语言, 调试容易, 运行容易, 写界面容易, 语法容易. 语法容易这
一条正在被积极侵蚀, 但是 js 出了个 douglas crockford, 他的策略 "the good part" 可以对抗
变坏. 该策略可以对抗所有的 "变坏". 深入说的话就比较乱, 首先什么是 good, 等等.

acc

unread,
Apr 2, 2021, 5:43:47 AM4/2/21
to
哈哈, 我还是挺喜欢这语言的. 看到 jscript 就想到一堆: windows scripting host, scripting guy,
powershell, wsf 文件. jscript 很好玩, 完全能玩, 和 vb 差不多, 但他那些东西很多都是劣化版的
html. jscript, vb, 在有了 .net 和 c# 之后都变得相当难用, 我相信此功劳应该归于 anders hejlsberg.
在 .net 之前, 微软的 com|activex 已经相当歪了, jscript 就是 com 应用.

好久不关注 jscript 了, 他的运行时支持啥版本的 js|ecmascript? 我记得当时他的 js 引擎是 ie 的
thunder 啥玩意, 后来 ie 的 js 引擎换成 chakra* 了

* 微软老是搞点希腊罗马的东西: chakra, sparta

用 jscript 和用 node.js, python 差不多, 都需要一个执行环境; js 也需要用浏览器做执行环境.
好处是 windows 自带 jscript 的执行环境, 坏处是语言语法可能比较老, 库语法确定比较老, 还是那种
"坏的老的" 而不是 "好的老的".

jscript 满足 Alont 的这些需求: 连接 sql 数据库, 执行 sql 语句. oledb 应该也支持连接 sqlite
但是似乎不满足这个需求: 连接|服务 chrome 插件. 这需要一个 http 服务器
说似乎是因为我不知道 jscript 能否建立 http 服务器. 估计能, com 有这功能, 但一定很难用, 这点
不用多想, 他做不好这功能.

acc

unread,
Apr 2, 2021, 5:45:04 AM4/2/21
to
这个 north wind 当年还花了点功夫才下载到

acc

unread,
Apr 2, 2021, 5:51:12 AM4/2/21
to
> 他做不好这功能.

他 = 微软 (相关的部门人员)

Alont

unread,
Apr 2, 2021, 8:33:13 AM4/2/21
to
谢谢推荐,好像是微软的ADO?在chrome的扩展程序里使用微软的ADO,不知道会有什么难度,算了,还是走htttp服务器的路吧 ;-D

Alont

unread,
Apr 2, 2021, 8:48:20 AM4/2/21
to
On Friday, April 2, 2021 at 4:58:55 AM UTC-4, acc wrote:
> > 没想到为了一个小小的网页浏览需求,居然特地要为这个需求搭建完整的web服务。。。
>
> 一般都要这样. 浏览器以安全为主, 给 js 很多限制. 基本上只要是访问硬件都需要自己写程序,
> 访问硬件并运行 http 服务器, js 和程序通过 http 交换文本, 可能还要考虑跨域. 由于库比较多,
> "完整的web服务" 一般也不要很多代码.
>
> > 是不是node.js在搭建web服务方面比python的框架更简单呢?
>
> 都简单, 哪个顺手就用哪个. 我用 node.js 一是因为喜欢 js 语言, 二是 node.js 的 api 比较直接,
> 基本就是操作系统 api 的 js 接口, 没加入那么多自己的发明创造.

你肯定是专业IT人士,能哪个顺手用哪个的都是高手,我哪个都用的不顺手。。。都是现学现用,现用现磨刀。。。
我就喜欢python这样库多的语言,不管什么难题,一个库解决不了的问题,再找别的库,哈哈
人生苦短,没太多时间去研究细节,只求解决问题,哈哈

>
> css, html, js 是近几年我最喜欢的语言, 调试容易, 运行容易, 写界面容易, 语法容易. 语法容易这
> 一条正在被积极侵蚀, 但是 js 出了个 douglas crockford, 他的策略 "the good part" 可以对抗
> 变坏. 该策略可以对抗所有的 "变坏". 深入说的话就比较乱, 首先什么是 good, 等等.

我可能没有发言权,毕竟自己不是专业IT人士,只会用点python皮毛,应该没有资格说“我感觉javascript语法没有python简单、“优雅”,
据说开发javascript的牛人,他开发这门脚本语言只用了10天时间,太thd 令人敬佩了,而且还这么普及,想象一下,一个10天时间开发出来脚本语言,最后成为web标准,这比神话故事都还神奇,你可以不学它不用它但你不得不崇拜他。

acc

unread,
Apr 2, 2021, 10:28:44 AM4/2/21
to
> 我感觉javascript语法没有python简单、“优雅”

哈哈, javascript 其实很优雅啊! 各人有不同的看法, 我眼中的 js 完全可以很优雅 😁
不优雅不是 js 的问题, 而是代码作者的问题:

> The determined Real Programmer can write FORTRAN programs in any language
- hacker's wisdom | Real Programmers Don't Use PASCAL

> LOL at watching bad node programmers (who used to be bad php programmers)
> trying to deal with golang.
- sleepybrett

要用好 js 至少得理解这两个人: douglas crockford, john resig (jquery), 并且显然
还需要其他语言编程的经验.

Moses

unread,
Apr 5, 2021, 9:51:40 PM4/5/21
to

还有许多过时的技术可以做到, ActiveX, Flash, Java web applet...


>>>>> "Lu" == Lu Wei <luwe...@gmail.com> writes:

Lu> On 2021-4-1 21:17, Alont wrote:
>> 我有时用过firefox浏览器上安装的SQLite manager, 好像
>> Chrome插件也有一
Lu> 个SQLite manager,
>> 但我想要的是自己在浏览器里和电脑上某个文件夹上的
>> sqlite db进行查询,今天搜索了很多资料,能实现这一点方
>> 法还没找到,好费劲呐。。
>>

Lu> 如果不是限定要在浏览器里的话,jscript应该是可以的,
Lu> 以下改编自
Lu> https://docs.microsoft.com/en-us/sql/ado/guide/data/jscript-code-example-to-return-a-recordset
Lu> 并在我的机器上测试通过:

Lu> ------------ js code ------------------ try { var
Lu> objRs = new ActiveXObject("ADODB.Recordset"); }
Lu> catch (e) { alert("ADODB namespace not found.");
Lu> exit(0); } DP = "Microsoft.Jet.OLEDB.4.0"; DS =
Lu> "C:\Program Files\\Microsoft
Lu> Office\\Office10\\Samples\\NORTHWIND.mdb"; strComm =
Lu> "SELECT * FROM Products WHERE ProductID<3 "; strConn
Lu> = "Provider=" +DP+ ";Data Source=" +DS;
Lu> adOpenForwardOnly = 0; adLockReadOnly = 1; adCmdText
Lu> = 1; objRs.open(strComm, strConn, adOpenForwardOnly,
Lu> adLockReadOnly, adCmdText); objRs.MoveFirst(); while
Lu> (objRs.EOF != true) { alert(objRs("ProductID")+"\t"
Lu> +objRs("ProductName")+"\t" +objRs("UnitPrice"));
Lu> objRs.MoveNext(); } objRs.Close; objRs = null;

Lu> function alert(str) { WScript.Echo(str); }

Lu> ------------ js code ------------------


Lu> -- Regards, Lu Wei IM: xmpp:luwe...@riotcat.org
Lu> PGP: 0xA12FEF7592CCE1EA

--
Moses@GNUS

Moses

unread,
Apr 5, 2021, 9:55:22 PM4/5/21
to

注册协议这种方法可以不用全部自己做,
比如可以利用 irc:// , tg:// 这些已经存在的服务
甚至是 https://telegram.me/share/url 这个服务都可以,

然後发到 IRC, Telegram 等服务之後,
用 Python 就非常好处理了~

>>>>> "acc" == acc <a@b.c> writes:

>> 好像Chrome扩展本身没有本地sqlite数据库的支持?

acc> 要么写个本机程序, 该程序注册自己能够打开某个网络协
acc> 议, 然后在你的页面里生成那个协议连接,点的时候打开你
acc> 的本机程序, 类似迅雷

--
Moses@GNUS

Moses

unread,
Apr 5, 2021, 10:23:46 PM4/5/21
to

[] == []; // false
[] < []; // false
[] > []; // false
[] <= []; // true
[] >= []; //true

[] + []; // ""
{} + {}; // "[object Object][object Object]"
[] + {}; // "[object Object]"
{} + []; // 0

Math.min() < Math.max(); // false

foo = [0];
!foo; // false
foo == foo; // true
foo == !foo; // true

[[[null]]] ? true : false; // true

typeof NaN; // "number"
NaN == true; // false
NaN == false; // false
NaN != true; // true
NaN != false; // true
NaN == NaN; // false
NaN == !NaN; // false
!NaN; // true
NaN != NaN; // true

'x' == true; // true
'x' == false; // false
'0' == true; // false
'0' == false; // true

...


>>>>> "acc" == acc <a@b.c> writes:

>> 我感觉javascript语法没有python简单、“优雅”
acc> 哈哈, javascript 其实很优雅啊! 各人有不同的看法, 我
acc> 眼中的 js 完全可以很优雅 😁不优雅不是 js 的问题, 而
acc> 是代码作者的问题:

>> The determined Real Programmer can write FORTRAN
>> programs in any
acc> language - hacker's wisdom | Real Programmers Don't
acc> Use PASCAL

>> LOL at watching bad node programmers (who used to be
>> bad php
acc> programmers)
>> trying to deal with golang.

--
Moses@GNUS

alont

unread,
Apr 6, 2021, 12:03:44 AM4/6/21
to
On Wednesday, March 31, 2021 at 11:16:16 PM UTC-4, Lu Wei wrote:
> On 2021-3-31 22:59, Alont wrote:
> > 好像Chrome扩展本身没有本地sqlite数据库的支持?
> > 有没有办法用javascript在扩展程序里用sql语法访问本地电脑特定文件夹的sqlite DB文件?
> >
> Mozilla系的倒可以用插件SQLite manager操作本地的sqlite文件
firefox的那个插件我以前试用过,但用它进行sql更新数据库的话实际sqlite数据库根本没动作,有时候有有用,不知是不是因为sqlite被我正在用pycharm编辑着的project占用着,可能因为它是单线程的?
被一个程序占用了连接另外的连接就不管用了?

alont

unread,
Apr 6, 2021, 12:06:14 AM4/6/21
to
全是乱码?

Moses

unread,
Apr 6, 2021, 1:12:30 AM4/6/21
to

Javascript 不优雅的体现, Python 虽然也没有多好, 但还是比 JS
好...

可以放到浏览器里自己试一下... Chrome 里按 F12, 然後找到
Console, 在里面输入

[] < [];
就得到 false
再输入
[] <= [];
就是 true...


>>>>> "alont" == alont <alon...@gmail.com> writes:

alont> 全是乱码?
--
Moses@GNUS

Lu Wei

unread,
Apr 6, 2021, 3:42:12 AM4/6/21
to
你说的很多我都半懂不懂。我不是专业搞编程的,开始之所以会研究jscript是因为bat批处理太弱,又偷懒不想学“大”语言,只把它当成升级版的bat。然后因为语法和javascript基本一样,javascript的库也可以拿来用,还能做一些简单的数据处理。对于我这懒人来说,路径依赖严重,工具可满足当前需求即可。现在感觉到jscript要能做更多的事情,都要靠这个ActiveXObject,只是这个东西jscript的帮助文档里没有,也不应该有,应该由提供接口的程序来给。如果chrome有提供ActiveXObject,或许就可以连接chrome
插件了。当年微软是想大家都来支持ActiveX,这样他就可一统江湖了吧

acc

unread,
Apr 6, 2021, 3:56:46 AM4/6/21
to
没错这些确实很恶心. js 还有很多恶心的地方, 还在添加更多恶心的东西, 这就是我前面强调 "the good part" 的用意.
也是为什么我说 "the good part" 很有意义. "我眼中的 js 完全可以很优雅" 我前面的话.

你列出的那些大部分都用到了双等号 == 所以看看它的 (一部分) 规则

Equal (==)

1. If the two operands are not of the same type, JavaScript converts the operands then
applies strict comparison.
1.1. If either operand is a number or a boolean,
the operands are converted to numbers if possible;
1.2. else if either operand is a string,
the other operand is converted to a string if possible.
2. If both operands are objects, then JavaScript compares internal references which are
equal when operands refer to the same object in memory.

按规则*, 所有结果都合理了吧? 有些是其他的原因, 比如,
{} + []; // 0
这是由于 js 引擎分不清表达式和定义, 频繁用到的 (function () {})() 就说明了这点. 上面的式子没有解释为表达式,
如果告诉引擎这是表达式, 结果就又合理了:
({} + [])

* 我不是无条件服从规则, 但这个规则我觉得还可以, 所以没啥怨言

{ var a, b, c; 3 } 是语句块, 值是 3
再比如 typeof / / == "object", type of // 就是语法错误, 因为斜杠有时候是正则表达式字面量, 有时候是注释

NaN 那部分我没看到不合理的地方.

acc

unread,
Apr 6, 2021, 4:17:54 AM4/6/21
to
前面说了按规则并不惊讶. js 还有很多东西, 大部分是主机对象, 根本就不遵循啥规则, 比如

> typeof document.all
< "undefined"
> console.log(document.all ? "yes" : "no")
< no
> document.all.length
< 2071

> var call = Function.prototype.call
< undefined
> typeof call
< "function"
> call()
< Uncaught TypeError: call is not a function
< at <anonymous>:1:1

这也是我喜欢 js 的地方: 本来就是假的, 就别装的跟真的一样
js 一个脚本语言, 完全就是想怎么解释就怎么解释, 那些规则都是表面上的, 哈哈
javascript 连名字里的 java 都是假的

js 里面的惊喜太多了, 很多在我看来都是搞笑, 其他人当然会有不同看法. 就比如有人认为 perl 的语法, 特性
很搞笑, 而我觉得大部分很气人.

我讨厌静态强类型, 这是喜欢 js 的另一个原因

alont

unread,
Apr 6, 2021, 9:46:49 AM4/6/21
to

从来没接触过javascript,十几年前就知道这门语言,顾名思义以为它就是java语言的一个分支,就跟vb script是vb的分支一样,
直到接触后,才知道完全就是为了借当年java语言的势头来取这么一个名字。
一门最后成为web主流的编程语言,作者不过是花了10天左右来完成,它有再多的缺点和弱点,我觉得都是情有可原的。
编程行业,大神的力量是难以想象的。
我最讨厌javascript的是他的大括号,看得我眼花。看python语法顺眼多了,现在也是因为为了写个插件被逼着学它,
未来web行业javascript基本就是定型了吧,这“屎”再难吃有时间也得学着吃。不把它消化完很多事干不了啊。

Lu Wei

unread,
Apr 6, 2021, 8:29:26 PM4/6/21
to
On 2021-4-6 12:03, alont wrote:
> On Wednesday, March 31, 2021 at 11:16:16 PM UTC-4, Lu Wei wrote:
>> On 2021-3-31 22:59, Alont wrote:
>>> 好像Chrome扩展本身没有本地sqlite数据库的支持?
>>> 有没有办法用javascript在扩展程序里用sql语法访问本地电脑特定文件夹的sqlite DB文件?
>>>
>> Mozilla系的倒可以用插件SQLite manager操作本地的sqlite文件
> firefox的那个插件我以前试用过,但用它进行sql更新数据库的话实际sqlite数据库根本没动作,有时候有有用,不知是不是因为sqlite被我正在用pycharm编辑着的project占用着,可能因为它是单线程的?
> 被一个程序占用了连接另外的连接就不管用了?
>
不知道,我是在thunderbird上用来整合日历时用过

Lu Wei

unread,
Apr 6, 2021, 8:29:27 PM4/6/21
to
On 2021-4-2 20:33, Alont wrote:
> 谢谢推荐,好像是微软的ADO?在chrome的扩展程序里使用微软的ADO,不知道会有什么难度,算了,还是走htttp服务器的路吧 ;-D
>

呵呵不算推荐,因为其实和你的使用场景不一样,只是想到一个类似的

Moses

unread,
Apr 6, 2021, 9:51:52 PM4/6/21
to

我相信按定义所有这些都解释的通, 说它不 "优雅" 就是因为这些定
义和规则太违反直觉了啊...

比如一般人看到
[] < []; 是假
[] <= []; 是真
就会推出
[] == []; 是真, 但实际结果是假...

NaN 也同理...
看到 NaN == true; 和 NaN == false; 会认为 NaN 是非真非假,
但 !NaN 却又是真...



>>>>> "acc" == acc <a@b.c> writes:

acc> 没错这些确实很恶心. js 还有很多恶心的地方, 还在添加
acc> 更多恶心的东西, 这就是我前面强调 "the good part" 的
acc> 用意. 也是为什么我说 "the good part" 很有意义. "我
acc> 眼中的 js 完全可以很优雅"我前面的话.

acc> 你列出的那些大部分都用到了双等号 == 所以看看它的
acc> (一部分) 规则

acc> Equal (==)

acc> 1. If the two operands are not of the same type,
acc> JavaScript converts the operands then applies
acc> strict comparison. 1.1. If either operand is a
acc> number or a boolean, the operands are converted to
acc> numbers if possible; 1.2. else if either operand is
acc> a string, the other operand is converted to a
acc> string if possible. 2. If both operands are
acc> objects, then JavaScript compares internal
acc> references which are equal when operands refer to
acc> the same object in memory.

acc> 按规则*, 所有结果都合理了吧? 有些是其他的原因, 比如,
acc> {} + []; // 0这是由于 js 引擎分不清表达式和定义, 频
acc> 繁用到的 (function () {})() 就说明了这点. 上面的式
acc> 子没有解释为表达式,如果告诉引擎这是表达式, 结果就又
acc> 合理了: ({} + [])

acc> * 我不是无条件服从规则, 但这个规则我觉得还可以, 所
acc> 以没啥怨言

acc> { var a, b, c; 3 } 是语句块, 值是 3再比如 typeof /
acc> / == "object", type of // 就是语法错误, 因为斜杠有
acc> 时候是正则表达式字面量, 有时候是注释

acc> NaN 那部分我没看到不合理的地方.

--
Moses@GNUS

Moses

unread,
Apr 6, 2021, 10:21:22 PM4/6/21
to

webassembly 已经成为标准了, 希望将来能部分取代 js...


>>>>> "alont" == alont <alon...@gmail.com> writes:

alont> On Tuesday, April 6, 2021 at 4:17:54 AM UTC-4, acc wrote:
>> 前面说了按规则并不惊讶. js 还有很多东西, 大部分是主机
>> 对象, 根本就不
alont> 遵循啥规则, 比如
>>
>> > typeof document.all < "undefined" >
>> console.log(document.all ? "yes" : "no") < no >
>> document.all.length < 2071
>>
>> > var call = Function.prototype.call < undefined >
>> typeof call < "function" > call() < Uncaught
>> TypeError: call is not a function < at
>> <anonymous>:1:1
>>
>> 这也是我喜欢 js 的地方: 本来就是假的, 就别装的跟真的
>> 一样 js 一个脚本语言, 完全就是想怎么解释就怎么解释,
>> 那些规则都是表面上的,
alont> 哈哈
>> javascript 连名字里的 java 都是假的
>>
>> js 里面的惊喜太多了, 很多在我看来都是搞笑, 其他人当然
>> 会有不同看法.
alont> 就比如有人认为 perl 的语法, 特性
>> 很搞笑, 而我觉得大部分很气人.
>>
>> 我讨厌静态强类型, 这是喜欢 js 的另一个原因

alont> 从来没接触过javascript,十几年前就知道这门语言,
alont> 顾名思义以为它就是java语言的一个分支,就跟vb
alont> script是vb的分支一样,直到接触后,才知道完全就是
alont> 为了借当年java语言的势头来取这么一个名字。一门最
alont> 后成为web主流的编程语言,作者不过是花了10天左右来
alont> 完成,它有再多的缺点和弱点,我觉得都是情有可原的。
alont> 编程行业,大神的力量是难以想象的。我最讨厌
alont> javascript的是他的大括号,看得我眼花。看python语
alont> 法顺眼多了,现在也是因为为了写个插件被逼着学它,
alont> 未来web行业javascript基本就是定型了吧,这“屎”再
alont> 难吃有时间也得学着吃。不把它消化完很多事干不了啊。

--
Moses@GNUS

acc

unread,
Apr 7, 2021, 8:58:39 AM4/7/21
to
> webassembly 已经成为标准了, 希望将来能部分取代 js...

相关人员一部分是显卡*方面的:
khronos: opengl, webgl, essl, vulkan, webgpu
一部分是图形方面的:
css: filter, worklet
svg: siml
一部分是编译爱好者: emscripten: c++, rust
一部分是 mozilla 方面不知道干啥的: simd, simd.js, asm.js

* 显卡是我所谓的 "硬件流氓". 软件流氓是 adobe, 主要因为它的 flash

这帮人在扩张的时候马上会踩到彼此, 然后就会火并, 得花不少时间. 他们的目标是 web, 对 js 伤害不大.

J Magazine Cn

unread,
Apr 7, 2021, 7:46:48 PM4/7/21
to
Learned sth new from you.
0 new messages