V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  BoringTu  ›  全部回复第 1 页 / 共 4 页
回复总数  70
1  2  3  4  
2021-06-04 16:20:19 +08:00
回复了 BoringTu 创建的主题 Node.js 关于 npm install 会报 ENOTFOUND 或 ECONNRESET 的问题
@nznd 不想换源啊,换源不就失去了翻墙的意义了么?

不过退一万步说,刚才我测试的时候也测过了,结果是一样的,因为要走我的代理
如果我不设置代理,一样失败率百分百报 ENOTFOUND
2021-05-10 14:35:45 +08:00
回复了 BoringTu 创建的主题 JavaScript 为什么你们要选择 TypeScript?
@Pythoner666666 那你用 coffee 试试呢?
2021-05-10 14:16:07 +08:00
回复了 xieqiqiang00 创建的主题 JavaScript JS 有什么手段可以判断一个函数是不是原生代码吗?
@musi 就算再多页面,你肯定也是按模板来的,难道你这多页面要每个页面都单独完整写一份 html ?
而且你谈侵入性,我的方案只是暴露原对象引用出来而已,并没有做哪怕一丁点的修改,这叫有侵入性?
至于你前半段说的,我都已经说过一遍了。。


@gzzhanghao 为啥不能控制?详见 #72
2021-05-10 10:26:29 +08:00
回复了 xieqiqiang00 创建的主题 JavaScript JS 有什么手段可以判断一个函数是不是原生代码吗?
@binux 你怎样控制用户的浏览器呢?你说插件,你只能在自己电脑上安装插件,你怎样让用户也安装?如果你随意的就能控制他人浏览器,那浏览器这个行业也不用干了。。
你只能在你电脑的浏览器上装你想装的插件,然后你在自己浏览器上通过插件篡改了原生函数,这都可以啊,但能说明啥问题。。
这个其实没啥好杠的,而且都不需要去查什么资料去验证
这就好像之前我碰到有问这么个事儿的,说我通过自己浏览器开发者工具拿到了我登录后的 token,然后发给别人,不就把我的登录信息暴露出去了么。。我。。当时是真不知道该回啥。。
2021-05-10 10:21:33 +08:00
回复了 BoringTu 创建的主题 JavaScript 为什么你们要选择 TypeScript?
@TonyG 我看懂了所以那么回的你啊,咱这么说吧,按你的说法,如今站在 web 前端顶层的人物应该全都看不起 js 而全都用 ts 来代替 js,但实际上你稍微动脑想想,你觉得这种情况是成立的么?如果真是这样,ts 应该在很多年前就出现了,而且也不会出现 coffee 、Clojure 这些就不会出现。既然你都聊到这了,你可以去研究一下 coffee 的设计理念,在我看来是恰到好处的,扬长避短。但因为缩进语法给很多人劝退了。

@adoal 感谢用心回复~ 我现在的态度也偏向多人团队管理尤其是能力差距较大的情况下用 ts,但我个人的项目应该还是不会考虑用 ts 的,还是感觉太繁琐太累赘了
2021-05-10 10:07:27 +08:00
回复了 xieqiqiang00 创建的主题 JavaScript JS 有什么手段可以判断一个函数是不是原生代码吗?
@luofeii #41 但是你怎么做对比呢?
如果不考虑是否是 electron 环境,只是浏览器环境的话,你可以参考我提供的思路,这是最简单也最有效的解决方案
要的就是同一个对象的引用,这样才能判断出是否是同一个内存地址

@binux 为啥做不到呢?在.html 文件里直接写死就好啊,你是考虑会有动态插入 script 标签么?这不需要考虑啊,HTML 在浏览器内核上的渲染逻辑没有那么玄幻,都是自上而下的,就算有动态插入也都是执行到了具体脚本才会有的动作,但早在这一步之前,我想要执行的那句脚本就已经执行完毕了

@rekulas 嗯,我不推荐 iframe 的这种做法哇,虽然按我最早发的那个思路,一样是可以避免你提的这个可能的,我拿到内置 document.createElement 的原生函数引用不就好了嘛。而且你的思路最后的那个判断本来就不是应该的,这个判断木有意义:“XMLHttpRequest === iframe.contentWindow.XMLHttpRequest”,如果不执行你的第一句那个重写 createElement,前面这个判断是永远是 false 的,因为并不是同一个环境,所以也就不是同一个对象

@aaronlam
@musi
以及楼上某些木有点名到的童鞋,你们都没注意听讲啊。。
我给各位总结然后回答一下楼主这个问题(两种情况):

1. 如果只是判断前端环境中是否有脚本重写了 XMLHttpRequest,那最简单也最靠谱的就是我提供的那个方案:
“在 HTML head 标签里所有 script 标签的最前面加上一个 script,里面:
window.originXMLHttpRequest = window.XMLHttpRequest;
然后在你想判断的时候:
originXMLHttpRequest === XMLHttpRequest”
(顺便聊一下 iframe 的这个方案,用来判断的话是没戏的,上下文环境不同,就算没被重写,也没法判断,因为不可能是同一个对象。iframe 的方案,你只能是 iframe 环境里的 XMLHttpRequest 拿来直接当做原生内置函数来用

2. 如果是说 electron 直接修改了浏览器内核里的 XMLHttpRequest,那就无解了,人家都不是在前端环境修改的,你怎么判断?你就算 toString 了,一样拿到的是这个:'function XMLHttpRequest() { [native code] }'。这种情况你想要知道是否被重写了,只能肉眼去看 electron 的源码,没有其他方式了
2021-05-08 18:32:38 +08:00
回复了 xieqiqiang00 创建的主题 JavaScript JS 有什么手段可以判断一个函数是不是原生代码吗?
只有一种情况是我说的方案失效的,就是如果是说 electron 是在加载 html 之前就覆盖了内置函数
2021-05-08 18:30:34 +08:00
回复了 xieqiqiang00 创建的主题 JavaScript JS 有什么手段可以判断一个函数是不是原生代码吗?
@xieqiqiang00 ? 哪里有问题可以提出来,不提出来咋给你解决。。
2021-05-08 18:29:08 +08:00
回复了 xieqiqiang00 创建的主题 JavaScript JS 有什么手段可以判断一个函数是不是原生代码吗?
楼上的各位都想啥呢。。
也就 @luofeii 这位大佬的靠谱点,跟我的逻辑很像,但你的逻辑是行不通的,因为并不是同一个对象

let iframe = document.createElement('iframe');
iframe.id = 'iframe';
document.body.append(iframe);
iframe = document.getElementById('iframe');
iframe.contentWindow.XMLHttpRequest === window.XMLHttpRequest // false
2021-05-08 18:04:55 +08:00
回复了 xieqiqiang00 创建的主题 JavaScript JS 有什么手段可以判断一个函数是不是原生代码吗?
@xieqiqiang00 都在所有脚本执行之前了,你这疑问不成立啊
2021-05-08 18:00:30 +08:00
回复了 xieqiqiang00 创建的主题 JavaScript JS 有什么手段可以判断一个函数是不是原生代码吗?
emmmm,我来给你个正确答案吧~ 思路其实很简单,给你个小 demo~

window.ABC = function() {
console.log('origin ABC');
};

window.tempABC = window.ABC;

window.ABC = function() {
window.tempABC.call(this, arguments);
console.log('new ABC');
}

有思路没~
我只是模拟了一下被人为覆盖浏览器内置函数的逻辑

那现在公布答案~

在 HTML head 标签里所有 script 标签的最前面加上一个 script,里面:
window.originXMLHttpRequest = window.XMLHttpRequest;

然后在你想判断的时候:
originXMLHttpRequest === XMLHttpRequest
其实换句话说,window.originXMLHttpRequest 这东西就是浏览器原装内置函数,因为人为覆盖的逻辑肯定在后面执行的

是不是豁然开朗?(手动抠鼻
2021-05-08 09:39:32 +08:00
回复了 BoringTu 创建的主题 JavaScript 为什么你们要选择 TypeScript?
@Kasumi20 github 光秃秃是因为绝大部分项目都是非开源的,不是在 gitee 上就是在工蜂上,而且还都是私有的
博客打不开是因为一开始 https 的证书过期了,再之后 vps ip 被墙了,我就再没去管
然后反问一句,有什么关系么?能说明啥?我现在都成天忙成狗,哪来的时间折腾别的?人的精力都是有限的,总要有个取舍,而博客对于我来说,就是个记录程序员生涯里的各种需要特意记下来的东西而已,我并不需要吸粉,既然这样,我记在本地以我能看懂的方式,有什么问题么?话反过来说,网上真是是人是狗都能发个文章,大部分都是 copy 别人现成的文章,还有一部分人自己都没弄明白就在上面胡写一气,你如果有幸看到这种文章中招了,估计你骂的更欢。我只想管好自己,并没有打算改变国内互联网环境,而且也没这个能力。

@TonyG 我平时也不咋写 js 啊,要写一堆的括号烦都烦死了,除非是维护别人的代码,coffee 不香么?看来你就没注意听讲啊,乖,去好好翻翻我们都说了什么在来抬杠~

@merpyzf IDE 这么累赘的东西,我很久很久没碰过了,我就是你所谓的脱离 IDE 编程的人,而且不妨跟你说,我常用的开发工具是 vim,不过也会用 vscode,,但也并没有装什么代码提示的插件,因为累赘也完全没有必要,而且这么一过就是这么多年
说到这里其实一直想问一下这里的那些杠精,没有 ts 没有代码提示就活不下去?如果真是的话,除了能证明能力不行,还能说明啥?

@tobeyouth 我也很烦接口文档不注重字段类型的,但话反过来说,你不能因为你的个人原因去强制后端人员全都来迁就你啊,后端那么多人,他们出的文档都是一个德行,然后你跟他们说你难受,让他们把现有文档都犁一遍把字段类型改过来?别说我没权力管他们,就算有权力我也不能这么干啊,除非项目还没启动还在规划中,我们可以把这一条当做规范列出来。
2021-05-07 18:11:56 +08:00
回复了 BoringTu 创建的主题 JavaScript 为什么你们要选择 TypeScript?
@FreeEx 抱歉,我刷 codefights,但估计你没听过,而且现在也改名叫 codesignal 了
至于深度,我从两个方向来说
1. 关于我说的这几点只是举个栗子,但换句话说,你觉得前端这个锅里,有百分之多少的人会?我给你一个我的答案,我面了大概 500+的人(肯定又要有人喷了),就这些人里,有去了解数据结构和算法的,不超过 20 人,我招的岗都是中高级岗
2. 前端和后端的区别,确实是后端要深度,前端要广度,从这个角度来说,前端的深度确实没后端深。但你这是在偷换概念,这里的深度,不是知识储备深度


@nameyukan 是哒,能干活写啥不是写~
2021-05-07 17:35:52 +08:00
回复了 BoringTu 创建的主题 JavaScript 为什么你们要选择 TypeScript?
@cereschen 哦豁,又来个心理学家,服了。。
你能说出这句话,只能证明没认真听讲,好好翻翻我都说了什么再来回我的贴吧好吗,乖~

顺便针对性的回复一下:
1. 我需要热点???我是网红?我能获得什么?也没人跟我分流量钱啊,何况流量也不高,你是咋说出这句话的。。
2. 一点不懂?核心观念跟 js 背道而驰,我本意聊的就是这件事,只不过在你看来这是优点,而在我看来这有点莫名其妙。有一说一,我这帖子有不少大佬心平气和的跟我聊技术,我在思路上确实学到了不少。但你是不是跟谁都是习惯性恶意揣测他人想法啊?厚黑学看多了还是犯罪心理学看多了?这习惯可不好,建议改正
3. 这点跟 1 一样,我需要热点?客观事实也不能说出来?我是不是再给你个调查表啊让我历届公司同事给我 bug 率一个评价整理好了给你看?你平时都是这么看人的话,那你活着是不是有点累啊。。我就是个程序员,只不过在这程序员的水里,我自认代码质量还是不错的而已

想问您还有什么想说的?
2021-05-07 17:22:37 +08:00
回复了 BoringTu 创建的主题 JavaScript 为什么你们要选择 TypeScript?
@xd199153 感谢大佬认真答疑~ 了解了~
-------
咋,我屏蔽的那货又回我了?
我争取拉回来。。不过因为话题争议确实挺大,再加上网上是人是狗啥都有,比如我屏蔽的这位,上来就喷我,我跟人家讲理,但人家不讲理啊,我就只能屏蔽了,但也只是我看不到,你们能看到吧。。
-------
好嘞,感谢大佬支持,我正在入坑中~
2021-05-07 16:47:50 +08:00
回复了 BoringTu 创建的主题 JavaScript 为什么你们要选择 TypeScript?
@walpurgis 不能忍啊,不过这是有历史原因的。。
一开始接口文档是我出的,但在出了 120 个接口的时候休陪产假了,出接口文档的任务就移交给后端了,等我回来之后就发现,卧槽,每个接口的字段几乎都特么 string 。。但那阵已经出了几百个接口了,而且上面还催的急,我不能忍也只能忍了,因为没时间去改文档。。
2021-05-07 16:44:55 +08:00
回复了 BoringTu 创建的主题 JavaScript 为什么你们要选择 TypeScript?
@james122333 哈哈,这人是站在自己意淫出来的制高点在教育我们呢,让他自己玩儿吧,我已经把这位神人屏蔽了
2021-05-07 16:43:09 +08:00
回复了 BoringTu 创建的主题 JavaScript 为什么你们要选择 TypeScript?
@Austaras 你先把怎样做人学会吧,真可怜。。你现在过的应该不太如意吧。。不过我又不是你父亲,没义务教育你

BLOCK 了,自己玩儿吧~
2021-05-07 16:19:09 +08:00
回复了 BoringTu 创建的主题 JavaScript 为什么你们要选择 TypeScript?
@Austaras 你自己看一下我这昨天下午发的帖子,现在有多少收藏好么?
你再挨个层看看有多少人跟我有同样的看法行么?
有争议,就代表有相当一部分人是持有不同看法的,这个道理你不懂?
还是那句话,你既然觉得弱智,为什么还要来这里被我喷呢?受虐倾向?
把嘴闭上吧,我都不好意思骂你了。还有,送你句话,做事之前先学会做人
2021-05-07 16:15:29 +08:00
回复了 BoringTu 创建的主题 JavaScript 为什么你们要选择 TypeScript?
@jiyinyiyong 哈哈哈 这么傲娇的嘛

@tobeyouth 大佬,我现在有个问题,比如举个栗子,我现在的这个项目,后端出的接口文档,只会注重字段名,并不重视这个字段的类型,基本都是 string,但实际上是 int 是 boolean 等等,如果是基于这种前提,ts 好像就会很难受吧?然后就只能让后端把现有的所有接口文档都过一遍,把字段类型改成正确的,ts 才能玩的转,是这样吧?
1  2  3  4  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1160 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 15ms · UTC 23:03 · PVG 07:03 · LAX 15:03 · JFK 18:03
Developed with CodeLauncher
♥ Do have faith in what you're doing.