V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  sagnitude  ›  全部回复第 2 页 / 共 5 页
回复总数  88
1  2  3  4  5  
2016-07-06 22:29:42 +08:00
回复了 DoraJDJ 创建的主题 JavaScript 新人求解,如何编写更加高性能的 Javascript 代码?
@murmur
1. 软件上, NPAPI, NaCl, pNaCl, WebAssembly 都可以做到用 C++编写程序,用 js 调用,达到 C++级别性能,前面几个在目前的 Android Chrome 似乎是不可用的,但是 WebAssembly 已经可以打开
2. 硬件上,市面上 3G 内存手机已经大量铺货,下半年到明年, 4G 到 6G 内存手机会进入市场
3. 处理器上,我用 Geekbench 实测了一下:
小米红米 note3 ,使用高通 650 处理器,整机 1000
http://browser.primatelabs.com/geekbench3/7242545
PC 机, i7-4790k , 32G 内存, 2 年前整机 1w+
http://browser.primatelabs.com/geekbench3/7242536
性能差距在 1 个数量级以内,价格差距在 1 个数量级以上
2016-07-06 21:16:47 +08:00
回复了 DoraJDJ 创建的主题 JavaScript 新人求解,如何编写更加高性能的 Javascript 代码?
@murmur webmidi 是用来做手机端 web app 的,相似的还有 webusb , webbluetooth ,
如果你用 android chrome ,它有一个功能“添加到主屏幕”可以把 webapp 添加到桌面上,这会产生一个很轻量级的应用,
如果 web app 可以接触更多的硬件 API ,比如蓝牙设备,比如 USB 口,比如 MIDI 设备,那么它的可用性就能增强,毕竟 js 门槛低, webapp 更新方便,如果 js 能做到所有的事情,那很多人就会考虑用 js 来做产品了,毕竟在同一个浏览器下开发 html 页面比开发全平台的 native app 方便多了

这些方面都是为了 web app 能在各方面接近原生手机应用而做的努力,你只考虑桌面浏览器的话现在是不需要这些
2016-07-02 20:12:03 +08:00
回复了 lianghudou 创建的主题 Ruby on Rails 需要长期运营的项目,千万别用 rails
一个已经基本结束开发,正在长期稳定运营的工程,你这升级操作系统版本是不是太激进了?
2016-06-23 18:15:21 +08:00
回复了 iugo 创建的主题 程序员 微信 Android 大陆版为什么不用 Chrome WebView 而用 QQ 浏览器?
@iugo 我确实不用 Ruby ,开发效率我是有关注的,我们前端很多项目整体采用 AngularJS+requirejs+karma+jasmine ,写起来还是蛮快的,不太用动脑子

确实,如果浏览器给力,技术这边可以很省力,我们在针对 Chromium 49 编写桌面程序的时候就很舒服;而为微信写东西就需要相对有经验的人来做

但是,了解针对限制更大的浏览器( IE ,微信)进行开发的人,毕竟比了解 ES6 的人好招…

ES6 确实可以带来开发效率的提升,不过这些很大程度上是可以用框架来弥补的,更何况框架和 ES6 都有一定的学习成本
2016-06-23 17:34:40 +08:00
回复了 iugo 创建的主题 程序员 微信 Android 大陆版为什么不用 Chrome WebView 而用 QQ 浏览器?
楼主你如果只是来吐槽,来骂这该死的内置浏览器怎么这么烂,没问题,我也想骂,各种排版不能用, WebGL 都不能用,简直坑爹,而且微信内置浏览器是提供 WebGL 接口的,就是调用之后没有任何效果,不是简直,就是坑爹。

但你抬头看看标题,标题是一个问句吧?


1. 所有 web 开发者都必须为每一个平台做 polyfill
2. 挑选一个弱一点但是在几乎所有机器上都能跑的版本,微信内置该版本的某浏览器,所有 web 开发者在这个基础上开发
两者中,我认为 2 是更负责任的

在附言中,你提到了一个前提:“ Android >= 5.0 ”,瞬间就少了 54.5%的用户 (数据来源: 2016/6/6 更新 https://developer.android.com/about/dashboards/index.html

使用系统 webview , web 开发者需要适配 如下浏览器:
Android 2.x Webview; (市场占比 2%)
Android 4.0-4.3 Webview; (20.8%)
Android 4.4 (Chromium 30); (31.6%)(增加 GeoLocation 、 WebSocket 支持)
Android 4.4.3 (Chromium 33); (包含在上面)(增加 Vibration API 支持)
Android 5.x (Chromium 37+); (35.4%)(增加了 WebGL , WebRTC , WebAudio , WebComponent 支持)
Android 6.x+ (>= Chromium 43) (10.1%)
我的手机目前是 Android 6.0.1 (Chromium 51)
iOS Safari (很多版本)
各种厂商自己做的奇怪的浏览器适配

使用微信 WebView ,开发者需要适配如下浏览器:
QQ X5 内核(提供基础 HTML5 支持,部分新特性如 WebSocket ,部分 WebGL 支持)
iOS Safari (没得选)
Android >= 5 的基于 Chromium 的 WebView

你觉得哪个比较简单?

为何使用内置浏览器(注意,微信不是“内置 WebView ”,是内置一个“浏览器内核”),而不是直接使用基于 Chrome 的 WebView
1. 54.5%的安卓机没有该功能
2. 然后就没有然后了

为何使用内置浏览器而不是使用系统 WebView 呢
你要谈技术,那就谈技术
举个例子, WebSocket ,我在 Android 4.1 的机器上,用微信可以使用 WebSocket ;而 Android WebView 只有 Android >=4.4 才支持 WebSocket
再来一个, Android 2.x 的 WebView 不支持 position:fixed 和 overflow:hidden ,你喜欢么?
安卓 webview 的坑很多,如果你真的做的话,你会后悔产生“用 polyfill 解决这些问题”的想法的

为何内置 QQ X5 内核,不内置一个 Chrome
1. Chrome 打包 zip , 50MB ,(比微信大)
2. 然后就没有然后了

你使用最新的语法,然后来兼容老浏览器,这除了给自己开发带来快感(和恶心感),还有什么其他的好处? polyfill 肯定是需要用原生实现来实现的(如果能实现),必然是有性能损失的。

关于你说的产品观,如果你是个人开发者,或者是个创业者,凭热情和自己的想法活动,或者说你面对的平台比较稳定,你这么做没有问题;如果是面向所有用户的公司行为,我认为稳定是高于对 bleeding edge 的技术的热情的

举个例子吧,我现在维护的项目里,有一个是针对我们在桌面应用内置 Chromium 浏览器的,版本统一是 Chromium 49 ,我可以在这里面非常自由地使用各种高级语法;而有另一个项目是针对微信用户开发的,开发的时候自然就得小心谨慎

微信是一个商业产品,做出来是给用户用的,不是给开发者狂欢的
2016-06-23 12:55:37 +08:00
回复了 iugo 创建的主题 程序员 微信 Android 大陆版为什么不用 Chrome WebView 而用 QQ 浏览器?
补充:
http://caniuse.com/#feat=fetch

Android Browser 需求 Android >= 5.0

并且华为 P8 虽然是 Android 5.1.0 ,但是内置 webview 不是基于 Chrome 的,之前我们开发 WebGL 的时候就差点撞死在 P8 上,最后改成 canvas 了
2016-06-23 12:53:57 +08:00
回复了 iugo 创建的主题 程序员 微信 Android 大陆版为什么不用 Chrome WebView 而用 QQ 浏览器?
顺便说下 fetch ,参见兼容表格:

https://developer.mozilla.org/zh-CN/docs/Web/API/Fetch_API#Browser_compatibility

Safari webkit 不能用,老的 Android webview 不能用,楼主你就不该用 fetch ,这个组件本身就不应该被用作移动端开发
2016-06-23 12:38:13 +08:00
回复了 iugo 创建的主题 程序员 微信 Android 大陆版为什么不用 Chrome WebView 而用 QQ 浏览器?
@iugo 没有用户需求,就不需要开发者,开发者不是和用户对等的
2016-06-23 12:35:11 +08:00
回复了 iugo 创建的主题 程序员 微信 Android 大陆版为什么不用 Chrome WebView 而用 QQ 浏览器?
使用系统 webview ,就像楼主你自己说的,只会增加适配的工作量,不会减少开发者的负担

开发一个页面,只有部分用户能看见,其他人只能看见一个报错信息,听起来不是一个好主意

比如 WebBluetooth ,比如 WebGL (没错,之前安卓微信不能在所有平台上使用 webgl )
2016-06-23 12:32:32 +08:00
回复了 iugo 创建的主题 程序员 微信 Android 大陆版为什么不用 Chrome WebView 而用 QQ 浏览器?
1. Chrome Webview 不是可以一个安卓项目可以“直接打包在 apk ”里面的东西,能用的只是“ Android Webview ”
2. Android Webview 在不同安卓版本是 **几乎完全不同** 的,在 Android <4.4 上, webview 不是 Chrome ;随着安卓版本的变化,内置 webview 所实现的技术标准差别太大,根本无法控制一个微信 web 页面在不同系统 webview 上的表现
3. Android Webview 在不同厂商的 ROM 上,实现也是天差地别,同第二点,无法控制产品的表现,而使用同一个内置的浏览器内核可以控制
4. QQ 内核是集团内部的东西,举个具体的例子,在当前 WebBluetooth 还在草案阶段, WebBluetooth API 目前只有 Android 6.0 及以上才能使用,而微信已经能在页面上使用蓝牙信息(只要有蓝牙和有微信),请问如何在系统 webview 上使用蓝牙接口?
5. 自定义 url scheme 是一个很重要的功能,系统 webview 能提供的自定义是受限的,如果使用自己的产品,可以无限制地自定义和使用,微信的交互很多,基于一个简单的系统 webview 开发如此复杂的功能,听起来像是一场噩梦


补充:
WebBluetooth 接口实现情况: https://github.com/WebBluetoothCG/web-bluetooth/blob/gh-pages/implementation-status.md
2016-06-10 12:26:40 +08:00
回复了 arrowna 创建的主题 云计算 你们一般把虚拟机放在哪个盘?
@arrowna 256G ,淘汰下来的系统盘,就放了一个虚拟机
2016-06-10 11:38:58 +08:00
回复了 arrowna 创建的主题 云计算 你们一般把虚拟机放在哪个盘?
不对,云计算节点, lz 你在讨论平时自己使用还是大规模部署?题目和帖子里没有明确说明
2016-06-10 11:35:38 +08:00
回复了 arrowna 创建的主题 云计算 你们一般把虚拟机放在哪个盘?
@arrowna 不,台式机,如果是笔记本电脑,也建议弄个移动硬盘放虚拟机
我之前虚拟机放在 D 盘(工作盘),我在虚拟机里 git add ,整个工作盘就跪了,什么都干不了,只能坐等
2016-06-10 11:26:53 +08:00
回复了 arrowna 创建的主题 云计算 你们一般把虚拟机放在哪个盘?
在虚拟机里做事的时候 IO 爆满,几分钟不响应,我就买了个 SSD 只放虚拟机

为了避免不同分区影响速度,我现在一个硬盘只分一个区,感觉很好
2016-05-31 22:33:19 +08:00
回复了 hackingwu 创建的主题 程序员 C 面试聊什么
在我的工作内容中,基于 Redis 的开发,是用 Java 写的……用到的最高级的算法是二分查找……
你是不是看成了开发 Redis ?基于 Redis 开发功能的话, Redis 各种语言都有库的,和 C 没啥关系的
2016-05-24 11:14:02 +08:00
回复了 hadixlin 创建的主题 Java Java 中对引用类型的变量赋值是原子操作吗?
我认为是原子的

1. 向 reference 赋值是原子的(obj = otherObjectValue):
https://docs.oracle.com/javase/specs/jls/se7/html/jls-17.html#jls-17.7

2. 声明立刻赋值和赋值是等价的(Object var = objValue; 和 var = objValue 等价)
```
K k = source;
```

```
K k;
k = source;
```
编译出的字节码是一样的;(使用 javap -c):
https://gist.github.com/sagnitude/03d0cc5a9f244b61f47e89e59f485587

由 1 和 2 ,声明一个 reference 并立刻赋值( Object obj = otherObjectValue )是原子的。


@xupefei 在字节码里是 2 句指令 `aload`和`astore`,但是这两句根据上面提到的 JLS ,原子性是有保证的:

1. k = source 等价于
```
8: aload_1 // source 压栈
9: astore_2 // source 出栈给 k
```

2. k = source 是 reference 赋值
3. reference 赋值根据 JLS ,是原子的
=> 用于 reference 赋值的`aload + astore`是原子的
2016-05-23 08:30:19 +08:00
回复了 ftfniqpl 创建的主题 Node.js js 公有方法通过 new Function 方式调用私有方法的问题?
应该是这儿
http://www.ecma-international.org/ecma-262/5.1/index.html#sec-10.4.2

eval: 10.4.2 的 2.b, 2.c , eval 会把当前执行 context 设为调用者的 context (VariableEnvironment)
所以能调到局部变量

new Function: 10.4.3 的 5 和 7 ,把当前执行环境设为 NewDeclarativeEnvironment(Function.prototype.[[Scope]]),所以得不到局部变量
2016-05-17 20:47:31 +08:00
回复了 onice 创建的主题 Java 请教大家使用 Java 反射封装 Servlet 的问题
@onice 修正,我看错了…是继承的,拷代码的时候漏了……
2016-05-17 20:46:08 +08:00
回复了 onice 创建的主题 Java 请教大家使用 Java 反射封装 Servlet 的问题
@onice 你这个 Base 和 Sub 没有继承关系啊……
而且
```
Base base = new Base();
```
应该是
```
Base base = new Sub();
```
然后就可以了……
2016-05-17 20:19:57 +08:00
回复了 onice 创建的主题 Java 请教大家使用 Java 反射封装 Servlet 的问题
1  2  3  4  5  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2726 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 30ms · UTC 12:36 · PVG 20:36 · LAX 04:36 · JFK 07:36
Developed with CodeLauncher
♥ Do have faith in what you're doing.