V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  FaiChou  ›  全部回复第 65 页 / 共 82 页
回复总数  1625
1 ... 61  62  63  64  65  66  67  68  69  70 ... 82  
2019-10-10 10:25:44 +08:00
回复了 Pogbag 创建的主题 iPhone 大家 iPhone 的负一屏都放了哪些插件
TINYCAL SHADOWROCKET ALIPAY
2019-09-30 14:47:15 +08:00
回复了 petelin 创建的主题 Apple 垃圾 iOS13 没用过这么多 bug 的 iOS
@Livid 上面一条回复导致 ip 被封,只发图片回复会被封 ip 吗? 10.190.126.45
2019-09-30 14:30:42 +08:00
回复了 petelin 创建的主题 Apple 垃圾 iOS13 没用过这么多 bug 的 iOS
2019-09-24 16:17:08 +08:00
回复了 sgissb1 创建的主题 程序员 遇到学院派程序员,大家怎么处理和之间的关系
总会有一些人喜欢挑刺, 比如提问者的 typo `apeend`, 同样有好多人热衷于对误读(misreading)的强烈讨论, 所以尽量发表意见之前检查再三(点击回复之前).
ps. 以上这段可以理解为 **学院派** 吗?
2019-09-10 10:42:13 +08:00
回复了 banxi1988 创建的主题 JavaScript 简单的(10 多行代码) 基于 TypeScript 的 Redux 核心实现及应用
这不就是 egghead 上 Dan 的视频教程内容么 ?
不过这个 redux 教程对新手启发还是挺大的
2019-09-08 22:44:55 +08:00
回复了 FaiChou 创建的主题 JavaScript JavaScript 编译/执行等问题请教
再举个例子:
chrome 的一个 bug https://bugs.chromium.org/p/chromium/issues/detail?id=315190

```
var someClass = function() {
console.log('some');
};

function getter() {
var some = new someClass();
if(true) {
return function() { //I'm done with some and don't need it
return null;
};
} else {
return function() {
return some;
};
}
}

window.f = getter();
```

执行完后, 通过 devtools 里 memory - [heap snapshot] 可以发现 变量 some 没有被 GC.

理想情况下, 函数执行完, 里面的变量如果没有闭包引用, 那么就会被释放, 但是引擎也是按照代码执行的, 有 bug 也在所难免.
2019-09-08 22:37:00 +08:00
回复了 FaiChou 创建的主题 JavaScript JavaScript 编译/执行等问题请教
@secondwtq

谢谢回复.

看了一些资料, 发现自己进入了一个误区, 关于函数里的变量为什么没有被 GC, 一开始的猜想是和 LexicalEnvironment 相关, 于是跑去查了一堆资料, ecma 文档看了好一会, 但是终于发现, ecma 根本没有规定堆里变量什么时候释放, 内存管理是引擎的工作, ecma 根本不去规定. 引擎怎么知道一个变量应不应该回收可以看下 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management , 在本帖的问题中, 引擎可能想去回收变量 a, 但是它要确保闭包里没有使用这个 a, 于是跑去 evaluate 闭包函数, 发现它有引用, 所以还是放过了变量 a.

再比如:
```
function foo() {
var a = 1;
}
foo();
console.log('~') // line 5
```

这个例子当中, 执行完 foo(), 到了第五行, 大家都知道 a 会被回收, 但是 js 引擎到底有没有回收它, 我不敢保证, 它回收的时机在什么时候, 我没有去研究, 能保证的是「 a 在第五行被回收了」这么说是没有问题的, 大家都懂.
2019-09-06 09:04:23 +08:00
回复了 FaiChou 创建的主题 JavaScript JavaScript 编译/执行等问题请教
@secondwtq @mcfog 关于预编译 看过很多中文个人资料 会有一些这个概念

https://tva1.sinaimg.cn/large/006y8mN6ly1g6pirewda9j30u00zgqh1.jpg

@mcfog 我在 telegram 和 email 中关于本帖的问题对你提问过, 抱歉打扰哈.. 原来你经常混 v 站呀
2019-09-02 16:49:43 +08:00
回复了 FaiChou 创建的主题 程序员 手机游戏手柄通信的原理是什么?
@x86 什么游戏给封了? 现在账号找回了吗
2019-09-02 16:17:22 +08:00
回复了 FaiChou 创建的主题 程序员 手机游戏手柄通信的原理是什么?
@huage2580

谢谢, 之前玩过「王者荣耀」在某一官方助手 app 里启动, 可以实现游戏解说功能, 类似于导航语音功能
2019-09-02 14:49:56 +08:00
回复了 FaiChou 创建的主题 程序员 手机游戏手柄通信的原理是什么?
@whileFalse

不需要下载特殊版本游戏, 只需要点击 apply and play 就可以启动运行

https://tva1.sinaimg.cn/large/006y8mN6ly1g6l6ahjnbaj31120ku79o.jpg
2019-09-02 13:43:02 +08:00
回复了 FaiChou 创建的主题 程序员 手机游戏手柄通信的原理是什么?
@justfindu 手柄一代是通过物理映射的, 模拟用户点击 但第二代是蓝牙协议.. 不清楚原理
2019-09-02 13:41:18 +08:00
回复了 FaiChou 创建的主题 程序员 手机游戏手柄通信的原理是什么?
@eGlhb2Jhb2Jhbw 这些协议规范不像 js 查 ecma 那样容易找到, 所以除非联系手柄开发商或者游戏开发商, 否则在网上的资料很少, 个人也是比较好奇才研究下, 经过一系列搜索也是无果
2019-09-02 13:39:30 +08:00
回复了 FaiChou 创建的主题 程序员 手机游戏手柄通信的原理是什么?
@eGlhb2Jhb2Jhbw 「给游戏注入了一个动态库」这个方式会有安全隐患, 大多数游戏应该都不会支持此操作来被 hook 吧
2019-09-02 13:35:46 +08:00
回复了 FaiChou 创建的主题 程序员 手机游戏手柄通信的原理是什么?
2019-09-02 13:31:45 +08:00
回复了 FaiChou 创建的主题 程序员 手机游戏手柄通信的原理是什么?
但以上两种解释都是在猜测, 没有找到官方解释, 在 iOS 下不越狱也非常难以 debug 验证 囧
2019-09-02 13:31:00 +08:00
回复了 FaiChou 创建的主题 程序员 手机游戏手柄通信的原理是什么?
目前收到两种解释:

1. 游戏里有一个开关, 通过 urlscheme 启动过来传参 通知 app 打开这份蓝牙协议, 之前在游戏厅里的配置 都是通过 scheme 传过来了, 游戏里自己解析
2. 蓝牙手柄根本不知道目前使用的游戏配置是哪一个, 但是在游戏厅 apply & run 的时候,游戏厅给手柄发送了对应的配置并且打开游戏, 这时候游戏和配置才对上, 手柄把处理好的信号直接发送给游戏, 所以受支持的游戏只需要支持一份公共的蓝牙协议就可以了.
2019-08-30 15:39:29 +08:00
回复了 FaiChou 创建的主题 JavaScript JS 里闭包是如何 capture 外部变量的?
@maichael

https://hackernoon.com/javascript-execution-context-and-lexical-environment-explained-528351703922
这篇文章有一句:

> Each time you invoked a function it will create a new Function Execution Context.

也就是说, 只有在函数被执行(invoke)时候, 才会创建 execution context.

这句是对的吗?

函数定时时候就 'capture' 外部变量, 此时函数没有被执行, 也就没有 context, 那么应该怎么解释 capture ?
2019-08-30 15:30:54 +08:00
回复了 FaiChou 创建的主题 JavaScript JS 里闭包是如何 capture 外部变量的?
@s0f
也就是说执行到第 6 行时, 已经有了 3 个 context:

global execution context, foo execution context, closure execution context 分别对应:

GlobalExecutionContext = {
ThisBinding: global,
VariableEnvironment: { },
LexicalEnvironment: { }
}
FooExecutionContext = {
ThisBinding: foo,
VariableEnvironment: { a: undefined },
LexicalEnvironment: { }
}
ClosureExecutionContext = {
ThisBinding: closure,
VariableEnvironment: { },
LexicalEnvironment: { a: undefined }
}

在执行完第 7 行, 虽然 FooExecutionContext 被弹出栈, js 运行时发现变量 a 还有 closure 的 lexicalEnvironment 引用, 所以不会释放变量 a, 对吗?
1 ... 61  62  63  64  65  66  67  68  69  70 ... 82  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5786 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 31ms · UTC 02:21 · PVG 10:21 · LAX 19:21 · JFK 22:21
Developed with CodeLauncher
♥ Do have faith in what you're doing.