iOS Web开发调试工具MIHTool作者访谈

MIHTool是一款在国外非常出名的移动设备Web开发调试工具。大家可能想不到的是这款工具是不折不扣的国人作品。InfoQ联系到它的作者,做了一次简单采访。不管你是否了解此应用,是否关心移动开发与调试,这后面的故事都值得一读。

\u0026#xD;\n

以下是采访内容:

\u0026#xD;\n

InfoQ:请先做个自我介绍吧。

\u0026#xD;\n
\u0026#xD;\n

听奏:我是MIHTool的作者,也是一个前端开发者,目前就职于网易,专注于移动前端。关于MIHTool大家可以Twitter @unbug 或者微博 @听奏。这是我的个人主页 iunbug.com

\u0026#xD;\n
\u0026#xD;\n

InfoQ:能否讲讲决定做MIHTool这款产品的起因?

\u0026#xD;\n
\u0026#xD;\n

听奏:开发MIHTool最初是因为移动前端的项目一直受到性能不佳,CSS3动画不流畅,闪动等的问题的困扰。但如果调试移动端页面的时候能像PC端的Chrome一样查看到页面合成渲染层边框元素的重绘渲染数,那么可以大大减少上述问题的出现。后来作者在Zynga工作室CTO(也是jQuery UI的原作者)Paul Bakaus指导下,MIHTool不断迭代,通过Twitter,邮件,MIHTool Google Group作者收集到不少网友的建议(或需求),MIHTool才有今天这么多丰富实用的开发者功能。

\u0026#xD;\n
\u0026#xD;\n

InfoQ:MIHTool解决了什么问题?

\u0026#xD;\n
\u0026#xD;\n

听奏:详细的内容可以在MIHTool的主页看到。当中比较突出的功能用Paul Bakaus专门为MIHTool写的介绍博文《MIHTool, the iOS web debugger》中总结的四点可以说明:

\u0026#xD;\n
  1. \u0026#xD;\n

    Inline Web inspector 这个是iPad独占的功能。没错,通过MIHTool不仅可以远程调试页面,如果你有一台iPad你可以完全用iPad来完成调试,特别是你身边没有一台PC的时候。当Paul Bakaus看到这个功能时他在Twitter上是这么评价的\"This will be game changing. Nothing like it existed before in iOS. I'm blogging about it.\"。

    \u0026#xD;\n \u0026#xD;\n
  2. \u0026#xD;\n

    进阶性能分析功能显示页面合成渲染层边框和显示元素的重绘渲染数 Webkit内核的浏览器提供这两个网页高级性能分析标记。在chrome中很容易开启,但在mobile safari不通过XCode的instruments是无法查看到的。而通过这两个标记,前端开发者能够更加有依据的也解决性能问题。MIHTool直接提供了这两个功能,作者希望从事移动前端的开发者通过MIHTool都能找出自己作品中的性能瓶颈原因进而做出更加优异的作品。

    \u0026#xD;\n \u0026#xD;\n
  3. \u0026#xD;\n

    完全远程控制 通过MIHTool HTTP Server你可以完全方便的通过简单的命令控制MIHTool,这对开发者有什么好处呢?比如你有10台iOS设备罢在你面前,你想写一个脚本让他们自动打开你的测试页面(自动化测试),那么通过MIHTool的远程打开URL命令你的脚本是可以实现的。

    \u0026#xD;\n \u0026#xD;\n
  4. \u0026#xD;\n

    缓存的控制 MIHTool不仅可以很方便的清除缓存(包括manifest),Cookies,localStorage,你还能(或者远程)禁用缓存或者全部删除上述所有数据。这大大的节约了开发者的时间。

    \u0026#xD;\n \u0026#xD;\n
\u0026#xD;\n

InfoQ:市面上有什么同类产品吗?

\u0026#xD;\n
\u0026#xD;\n

听奏:目前同类产品比较知名的是Adobe edge inspect(原名Adobe shadow),已经发布有一年了专注于web inspector和多平台及云服务。

\u0026#xD;\n
\u0026#xD;\n

InfoQ:和Adobe edge inspec相比,MIHTool有什么优势?

\u0026#xD;\n
\u0026#xD;\n

听奏:Adobe edge inspect属adobe edge系列的成员,主要功能是web inspect。MIHTool专注于给开发者丰富的开发者调试工具,web inspect只是其中的一个功能,两者都是用的apache开源的weinre,MIHTool对weinre做了一些修改,如适配触屏(Inline web inspector),离线存储脚本,支持外连脚本/样式的查看等。MIHTool的开发者工具非常的丰富,其他功能有:多达30的UA可以切换,显示合成渲染层边框和元素重绘率,查看HAR,HTML编辑器查看和编辑源码,缓存控制,完全化的远程控制等都是Adobe edge inspect没有的。并且MIHTool只用安装到iOS设备上即可以使用,而adobe edge inspect 要不仅要安装iOS客户端,同时还要安装chrome插件和MAC(PC)客户端,当然,adobe edge inspect支持多平台也是MIHTool不及的。

\u0026#xD;\n
\u0026#xD;\n

InfoQ:这款工具的名字是怎么得来的?

\u0026#xD;\n
\u0026#xD;\n

听奏:MIH = Make It Happen。这是作者给自己的一个承诺,承诺无论如何都要将MIHTool开发出来坚持下去。作者知道无论做任何事情开头难坚持也难,如果不给自己一个承诺那么即使开始兴趣盎然最终也会不了了之。作者为了这个承诺在不到三个月时间就将MIHTool打造得如此实用,着实让作者本人也大吃一惊。

\u0026#xD;\n
\u0026#xD;\n

InfoQ:在创作这款产品的时候,有没有遇到什么困难,是如何解决的?(语言学习、视觉设计、产品规划、推广工作)

\u0026#xD;\n
\u0026#xD;\n

听奏:因为作者曾是J2EE开发者,学习其他编程语言心理上没有什么压力,学习objective-c时也没有过多拘泥,都是MIHTool要用什么特性才通过搜索引擎和youtobe视频学习的,显然很不专业,其实MIHTool本来是开源的,在github上还有早期的版本,但作者把MIHTool的objective-c代码写得实在不堪入目,不再好意思更新上去。

\u0026#xD;\n

MIHTool里唯一上眼的应用图标不是作者设计的,是Mortensen的图形与交互设计师Rude设计的,Rude先是在Twitter上抱怨原来的图标,后来干脆动手帮作者做了一个,也就是现在MIHTool的图标,非常的细腻和精致。

\u0026#xD;\n

因为MIHTool迭代非常的快,规划的功能基本上都即想即加的,直到5.0才算基本完善了。但很遗憾的是作者一直想给MIHTool加FPS查看器和网络环境模拟及类似fiddler的本地脚本替换线上脚本等功能因为作者iOS开发能力有限没能实现,如果读者知道如何实现欢迎不吝赐教。

\u0026#xD;\n

MIHTool在国外较多开发者知晓,Twitter上几乎每天都有的关于MIHTool的新twitter,但MIHTool的推广作者其实没有什么功劳,都是Zynga工作室CTOPaul Bakaus在Twitter上的推广的,他专门为MIHTool写了一篇Blog。同时在Twitter,G+,facebook上推广MIHTool的还有Google的工程师Paul Irish和Addy Osmani及Smashing Magazine的编辑。作者的朋友同事也帮MIHTool在微博上推广过,但可能由于国内移动前端不太活跃的原因国内的安装量很少而且大多都是友情支持,目前安装量较多的几个国家是美国,英国,德国,和意大利。

\u0026#xD;\n
\u0026#xD;\n

InfoQ:那么国外的开发者对MIHTool都有着什么样的评价?

\u0026#xD;\n
\u0026#xD;\n

听奏:在Twitter,一些业界比较有名望的人士对MIHTool做出过如下的评价:

\u0026#xD;\n
  • Zynga工作室CTO @pbakaus : MIHTool is a brilliant tool that helps you debug websites on iOS.\u0026#xD;\n
  • Google工程师 ‏@paul_irish : MIHTool: a smart \u0026amp; powerful debug tool for iOS WebView.\u0026#xD;\n
  • Google工程师 @addyosmani : MIHTool will change your life: A complete inline Web Inspector on iOS with performance profiling\u0026#xD;\n
  • Smashing Magazine ‏@smashingmag : MIHTool: a good tool for debugging websites on iPad and iPhone.\u0026#xD;\n
\u0026#xD;\n

InfoQ:此款产品在AppStore上有一个收费版和一个免费版,能否对此讲讲你的想法?

\u0026#xD;\n
\u0026#xD;\n

听奏:收费版是4。0才开始上架的,作者对外发布一直没用过收费版的连接,因为收费版是作者给那些想捐助支持MIHTool的用户准备的,他们的捐助会帮助作者支付MIHTool的服务器开销,作者承诺只要是作者管理的,MIHTool收费版和免费版就不会有任何区别。

\u0026#xD;\n

作者收到一些MIHTool用户的感谢邮件,希望能通过PayPal或Google Checkout的方式捐款,作者在此深表感激。

\u0026#xD;\n
\u0026#xD;\n

InfoQ:对这款工具,有怎样后续的计划?

\u0026#xD;\n
\u0026#xD;\n

听奏:MIHTool到5.0时基本已经完善,目前这段时间作者比较轻松,只修修BUG和添加网友新的需求,后续会将MIHTool的HTML编辑器(iPad版)做成一个更加实用的源码编辑器。

\u0026#xD;\n
\u0026#xD;\n

(采访内容完)

深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值