自学计算机编程入门自学开发,从入门到放弃是种什么体验

XXX,从入门到放弃
收藏官方一共提供了13个示例,这些示例运行的方式大同小异,一般会提供JAVA、Browser JavaScript、Node.js三种版本,这里仅演示java版本的示例。这些示例要求系统内已经正确安装了KMS6.0服务器,并在运行前启用服务。...
收藏Hello world 官网文档 Hello world 首先从github上获取代码(如果已经获取可以跳过,获取的代码已经包括后面的示例代码了) {代码...} 进入目录,编译执行 {代码...} 然后在浏览器中打开 https://localhost:8443/...
收藏WebRTC magic mirror 本示例扩展于Hello World Tutorial,在基础的WebRTC 回放中添加了媒体处理。 官方文档WebRTC magic mirror 首先从github上获取代码(如果已经获取可以跳过,获取的代码已经包括后面的示例代...
收藏One to many video call 本示例主要展示了kurento的视频广播功能 官网文档One to many video call 首先从github上获取代码(如果已经获取可以跳过,获取的代码已经包括后面的示例代码了) {代码...} 进入目录,编...
收藏One to one video call 本示例主要展示了kurento的视频软电话功能。 官网文档One to one video call 首先从github上获取代码(如果已经获取可以跳过,获取的代码已经包括后面的示例代码了) {代码...} 进入目录,...
收藏Advanced One to one video call 本示例是上一个示例的进阶版,添加了滤镜和录像回放功能 官网文档 Advanced One to one video call 首先从github上获取代码(如果已经获取可以跳过,获取的代码已经包括后面的示...
收藏Group Call 本示例展示了一个视频聊天室的功能,不同的聊天室之间互相隔离。 官网文档 Group Call 首先从github上获取代码(如果已经获取可以跳过,获取的代码已经包括后面的示例代码了) {代码...} 进入目录,编...
1 收藏Metadata 本示例在视频中可以检测人脸,并且用绿色的方框标识出来。 官网文档 Metadata 首先从github上获取代码(如果已经获取可以跳过,获取的代码已经包括后面的示例代码了) {代码...} 本示例需要 kms-datacha...
收藏本示例通过URL播放视频,并允许选择同时播放视频和音频或仅视频或仅音频 官网文档 Player 首先从github上获取代码(如果已经获取可以跳过,获取的代码已经包括后面的示例代码了) {代码...} 进入目录,编译执行 {...
收藏Send DataChannel 本示例会播放一段视频,并识别其中的二维码,然后在文本框中显示二维码的识别结果。 官方文档 Send DataChannel 首先从github上获取代码(如果已经获取可以跳过,获取的代码已经包括后面的示例...
收藏Show DataChannel 本示例允许用户在文本框中输入任意文字,输入的文字将以字幕的形式显示在传回的视频中。 官网文档 [Show DataChannel[1] 首先从github上获取代码(如果已经获取可以跳过,获取的代码已经包括后...
一个人的命运啊,当然要靠自我奋斗,但是也要考虑...4614人阅读
C语言(7)
想弄一份C语言的东西是因为被好几次问及怎样学C语言。
想说庆幸我刚学习的时候第一门语言不是C语言,如果那时候开头就学C语言我现在已经转去学习我最初的志愿数学或者经济学了。
&&&&&& 这几篇作为C语言的入门,主要说一些学习C语言的准备工作。
这一篇说一些经典书籍。也就是提供一个看什么书的解决方案。
&&&&&& 文章中有太多自己的观点,仅供参考。
&&&&&& 应该读什么书?
&&&&&& 对我影响最大的C语言的书,我会说是《C语言的科学与艺术》。
这本书讨论的内容是C语言的库,也就是stdlib这些,比如作者讨论了C语言的库是怎样实现的。
看似是很难的书,不过实质内容很简单。
前部分讲的是C语言的基础知识,很多都是看到了就可以直接用。相比较两个很厉害的好友推荐的黑皮书《C程序设计语言》(The C programming language),我觉得这本才是真正让我知道编程是怎么回事的书。
书中提出了很多计算机领域很重要的概念,比如递归,接口,自上而下设计原则等等。因为是两年前看的书,很多内容不记得了,但是现在在学习新的语言过程中,经常会莫名得想起书中的一些内容。
后半部分书中还重复讨论了几个需要注意的东西,比如字符串,指针,数组,递归等等。这些问题在前半部分都有讲解,同时后面也有,由浅入深,实在详细认真。(超级赞)
&&&&&& 接下来几本书也是看了的C语言的书,因为相比较前一本对本人的影响,这几本的形影响会小一些,但是的确都是不折不扣的好书。
&&&&&& 《C语言程序设计》(The C programming language):
C语言领域的不二经典,作者是C语言的创始人。从创造者说出来的话,真的很能体现C语言的设计原则。个人觉得零基础的人看得会累,如果学习了一段时间编程再看这本书,这本书绝对值得看十几遍。书中的buffer,快速排序等实例的实现写的太太漂亮。叹为观止的一本好书。
&&&&&& 《C陷阱与缺陷》《学习使用C指针》(Understandingand using C pointers):这两本是C语言的进阶书。
前一本能够让你很快注意C编程中容易出现的错误,另外还讨论了一些C语言中很让人感动(哭)的细节(缺陷)。
第二本则着重介绍指针的细节,书其实很新,不能算是经典,但是讨论的很深入。有的和操作系统联系起来,有的和现实生活中IDE联系起来,是一本很实用同时理论很有深度的书。
因为本篇是入门篇,不多介绍。
&&&&&& 最后一本,《数据解结构与算法分析-C语言描述》
这并不是一本C语言的书。学了以后会发现数据结构还是半懂不懂(微笑)(另外翻译也很让人感动)。
推荐这本书的原因在于,通过写算法,你会逐渐的把思维和语言结合起来。
时间长了,编程过程开始慢慢基于思维,而不被语言桎梏。
这样的好处,不言而喻,不用解释了。
有几本书我不推荐看,谭先生的C语言书籍,还有一些名字类似21天精通**的书籍。
原因嘛,我不喜欢讲,因为这是别人的工作成果,随意评价是对他人的不尊重。
另外还有一些是好友推荐的,都是好书,只是没有看过,没法说出个道道,仅仅列个表吧。
《C primer plus》《C专家编程》《C和指针》
头像是我的公众号,扫码加我把!!!
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:8947次
排名:千里之外
原创:15篇
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'转自 方老师&    /people/zhihusucks/activities
嘿,我最近接到一个 Web 项目,不过老实说,我这两年没怎么接触 Web 编程,听说 Web 技术已经发生了一些变化。听说你是这里对新技术最了解的 Web 开发工程师?
准确地说,我是一名「前端工程师」。不过你算是找对人了。我对今年的技术别提多熟了,前端可视化、音乐播放器、能踢足球的无人机,你尽管问吧。我刚去 JS 大会和 React 大会逛了一圈,没有什么新技术是我不知道的。厉害。是这样的,我要开发一个网页,用来展示用户的最新动态。我想我应该通过后端接口获取数据,然后用一个 table 来展示数据,用户可以对数据进行排序。如果服务器上的数据变化了,我还需要更新这个 table。我的思路是用 jQuery 来做。
可别用 jQuery!现在哪还有人用 jQuery。现在是 2016 年了,你绝对应该用 React。哦,好吧,React 是什么?
React 是一个非常厉害的库,Facebook 的牛人写的。它能让页面更可控,性能极高,而且使用起来很简单。听起来确实不错。我能用 React 展示服务器传来的数据吗?
当然可以,你只需要添加两个依赖,一个是 React,一个是 React DOM额,等下,为什么是两个库?
React 是我说的库,React DOM 是用来操作 DOM 的。因为这些 DOM 是用 JSX 写的,所以需要一个专门的库来操作。JSX?JSX 是什么?
JSX 是对 JS 的扩展,它看起来跟 XML 差不多,可以用来写 HTML,你可以认为 JSX 是一种更优雅的 HTML 写法。为什么不用 HTML 了……?
现在可是 2016 年啊,没有直接写 HTML 的。对哦。好吧,加了这两个依赖,是不是就可以开始用 React 了?
不行哦。你需要添加 Babel,然后才能用 React。Babel 是另一个库?
嗯,Babel 是一个转译工具,Babel 能把你写的 JS 转译成任意版本的 JS。你不一定非要用 Babel,但是如果你不用的话,你就只能写 ES5 的语法了。你知道的,现在是 2016 年,你怎么能不使用 ES2016+ 的语法呢?ES2016+ 多么酷啊。ES5 是啥?ES2016+ 又是啥?我有点晕。
ES5 就是 ECMAScript 5。大部分人都会使用 ES5,因为大部分浏览器都支持 ES5。ECMAScript 是啥……
你晓得的,JS是1995年诞生的,而JS的标准是1999制定出来的。那时候 JavaScript 还叫做 Livescript,只能运行在网景的浏览器里。那时真是混乱的年代,现在好了,我们有了 JS 的 7 个版本的规范。7 个版本?那 ES5 和 ES2016+ 是?
分别是第 5 个版本和第 7 个版本。诶,那第六个版本呢?
你说的是 ES6。每个版本都是上一个版本的超集,所以你直接使用最新的 ES2016+ 就好了。对哦。为什么不用 ES6 呢?
好吧,你可以用 ES6,但是你就用不到 async 和 await 这么酷的语法了。用 ES2016+ 比较好。用 ES6 的话你就只能用 generator 来控制异步任务流了。不知道你在说什么……你说了太多我听不懂的名词了。我只是想从服务器取点数据,我以前用 jQuery 挺好的,从 CDN 引入 jQuery,我就能用 AJAX 获取数据了,现在不能这样做吗?
大哥,都 2016 年了,没人用 jQuery 好吗。所有人都知道用 jQuery 只会造出「意大利面条」一样的代码(不可维护)好吧,所以我现在要加载三个库才能获取并展示数据。
对的,其实你可以用「模块管理器」把这三个库「打包」成一个文件。哦,什么是模块管理器……
不同平台的模块管理器不同啦。前端的模块管理器一般指管理 AMD 或者 CommonJS 模块的东西。好……吧,什么是 AMD 和 CommonJS?
是两个定义。我们有很多方式来描述 JS 中多个库或类的交互方式,比如 exports 和 requires。你可以按照 AMD 或者 CommonJS 的 API 来书写 JS,然后用 Browserify 将它们打包。听起来很有道理。不过,什么是 Browserify?
是一个工具,用来将 CommonJS 形式的 JS 文件打包起来,放到浏览器里运行。用 npm 仓库的人发明了 CommonJS。npm 仓库是什么……
是一个公开的仓库,用于放置可依赖的模块。就像一个 CDN 么?
不太一样。它更像是一个数据库,每个人都能在上面发布代码,也能下载上面的代码。你可以在开发的时候将这些代码下载到本地来使用,必要的时候也能上传到 CDN。听起来像是 Bower!
是的,不过现在是 2016 年了,没有人用 Bower 了……好吧,我知道了,所以我应该用 npm 来安装依赖。
对的。我举个例子吧,如果你要使用 React,你直接用 npm 安装 React,然后在代码里导入 React 就可以了。大部分 JS 库都能这么安装。嗯,Angular 也可以。
Angular 是 2015 年的事情了。不过今年 Angular 还没死,还有 VueJS 和 RxJS 等等,你想学一学么?还是用 React 吧。我刚才已经学了够多东西了。所以我用 npm 安装 React 然后用 Browerify 来打包就好了?
是的。这么做看起来有点过于复杂啊。
确实。这就是为什么你应该使用 Grunt、Gulp 或者 Broccoli 这样的任务管理工具,它们能自动运行 Browserify。不对,你现在可以用 Mimosa。你在说什么……
任务管理工具。不过我们现在已经不用了。去年我们还在用,后来改成了 Makefiles,但是现在我们用的都是 Webpack。我以为只有 C/C++ 项目才会用 Makefiles。
是的,不过显然我们做 Web 开发的,喜欢先把事情搞复杂,然后回归到最朴素的状态。每年我们都是这么搞的。你就看着吧,过不了两年,我们就可以在网页上写汇编了。唉,你刚才说的 Webpack 是什么?
另一种模块管理工具,同时也是一个任务管理工具。你可以认为它是 Browserify 的加强版。哦,好吧,为什么 Webpack 是加强版?
额,可能并没有加强吧。Webpack 告诉你应该如何管理你的依赖,Webpack 允许你使用不同的模块管理器,不只是 CommonJS,甚至支持 ES6 模块。这都是哪跟哪啊,我都被绕晕了。
大家都被绕晕了,不过等 SystemJS 出来了就好了。天呐,又一个 JS 库,这是什么鬼?
呵呵,不像 Browserify 和 Webpack 1.x,SystemJS 是一个动态的模块加载器。等下,刚才不是说应该把所有依赖打包成一个文件吗?
话是这么说,但是等 HTTP/2 普及之后,不打包反而更好。那为什么我们不直接在页面里添加 React 的三个依赖文件呢?
不行。你可以从 CDN 加载这些文件,但是你还是要在本地用 Babel 转译。唉,这么鹾?
是的,你不能在生产环境上运行 babel,你应该在发布到生产环境之前,运行一系列的任务,包括压缩、混淆、内联化CSS、延迟加载script……我懂了我懂了。既然我不能直接用 CDN,那么我应该怎么做?
我会考虑用 Webpack + SystemJS + Babel 来转译 Typescript。Typescript?我们不是在说 JavaScript 吗?!
Typescript 也是 JavaScript 呀,它比 JS 更好用,是 JS 的超集,它是基于 ES6 的,就是我们刚才谈论的 ES6,你还记得吧。ES2016+ 已经是 ES6 的超集了,怎么又冒出来一个 Typescript?
是这样的,Typescript 能让我们写出「强类型」的 JS,从而减少运行时的错误。2016年,我们应该让 JS 支持强类型了。显然 Typescript 可以做到。
Flow 也可以做到,区别是 Typescript 需要编译,而 Flow 只是检查语法。唉,Flow 是?
是一个静态类型检查器,就是 Facebook 的人写的。使用 OCaml 写的,函数式编程很叼的。
OCaml?函数式编程?
如今大牛都用这些东西,都2016年了,你懂的,函数式编程、高阶函数、柯里化、纯函数这些概念。不知道你在说什么。
一开始大家都不知道。这么说吧,你只需要知道函数式编程比面向对象编程厉害,2016 年我们就指着函数式编程了。等下,我大学里学过面向对象编程,当时我觉得它还不错。
Java 在被 Oracle 买下来之前也挺不错啊。我的意思是,面向对象以前是不错,现在依然有人用它,但是现在所有人都发觉状态变换是很难维护的,所以大家都开始用「不可变对象」和函数式编程了。Haskell 的人已经用这套东西用了很久了,不过幸运的是 Web 开发领域里有 Ramda 这样的库,让我们用 JS 就可以进行函数式编程了。你刚刚是不是又抛出了几个名词?Ramnda 又是什么?
不是 Ramnda,是 Ramda,跟 Lambda 表达式有点像。是 David Chambers 写的库。谁?
David Chambers,大神一个。blablabla我不得不打断你一下了。这些东西看起来都不错,但是我觉得它们都太复杂,而且没必要。我只是想获取数据然后展示,我很确定这种情况下我不需要掌握这些知识。
回到 React 吧,用 React 我怎么从服务器获取数据?
额,React 没有提供这个功能,你只能用 React 展示数据。服了啊。那我怎么获取数据?
你用 Fetch API 就可以了。啥玩意?这个 API 的名字很烂啊。
我也觉得是啊。Fetch API 是浏览器提供的异步请求接口。哦,那不就是 AJAX。
AJAX 只是使用 XMLHttpRequest 对象,但是 Fetch API 可以让你用 Promise 风格来发起异步请求,帮你摆脱「回调地狱」。回调地狱?
是的,每次你发起一个异步请求,就得等待它响应。这时你就得在函数里使用一个函数,这种嵌套调用就是回调地狱。好吧。Promise 解决了这个问题么?
是的。用 Promise 来管理回调,你就可以写出更易读的代码,更容易测试的代码。甚至可以同时发起多个请求,然后等待它们全部返回。Fetch 也能做到吗?
是的。但前提是你的用户使用了新版的浏览器,不然的话你就需要加一个 Fetch 的 「polyfill」,或者使用 Request、Bluebird 或者 Axios 这些库。天呐我到底需要多少个库?
这是 JS,同一件事情有上千个库在做。我们了解库,而且我们有最好的库,我们有海量的库,要什么有什么。你刚才说的几个库都是干什么的?
这几个库操作 XMLHttpRequest 然后返回 Promise 对象。好像 jQuery 的 ajax 方法做的是同样的事吧……
从 2016 年起我们就不用 jQuery 了。用 Fetch,大不了加个 Polyfill,要不然用 Bluebird、Request 或者 Axios 都行。然后用 await 和 async 管理 Promise,这样才能控制好异步任务。
这是你第三次说 await 了,那是什么东西?
await 能让你拦住一个异步调用,让你更好地控制异步返回的数据,大大增强了代码的可读性。await 非常好用,你只需要在 Babel 里添加 stage–3 配置,或者添加 syntax-async-functions 和 transform-async-to-generator 插件就可以了。听起来像是疯了。
没疯。为了使用 await,把 Typescript 编译之后再用 Babel 转译一道的人才是疯了。啥玩意?Typescript 不支持 await?
下个版本就支持了。我已经无话可说了。
你看其实很简单。用 Typescript 写代码,用 Fetch 发起异步请求,所有代码编译成 ES6,然后用上 Babel 的 stage–3 配置项,把 ES6 转译成 ES5。所有代码用 SystemJS 加载。如果你用不了 Fetch,就加个 polyfill,或者用 Bluebird、Request 或者 Axios,这样你就可以用 await 来处理 Promise 了。看来我们俩对于「简单」的理解是不同的。好吧,有了这些,我终于可以获取数据然后用 React 展示数据了,对吧?
你的网页需要处理状态变更吗?唔,不用吧。我只是想展示数据。
那就好,不然我就得跟你解释 Flux,以及 Flux 的一些实现,比如 Flummox、Alt、Fluxible。不过说真的你应该用 Redux。你说的这些我就当耳旁风了。再说一次,我只想展示数据。
这样啊,如果你只是想展示数据,其实你不需要 React。你只需要一个模板引擎。你逗我呢?
我只是告诉你你可以用什么技术。别说了,真的。
我想说,即使只是用一个模板引擎,我还是会用 Typescript + SystemJS + Babel 的。我只是想在页面上展示数据,你就告诉我用哪个模板引擎就好了。
有很多,你用过哪一个?额,太久没用了,不记得了。
jTemplates、jQote 还是 PURE?额,不记得,还有别的么?
Transparency? JSRender? MarkupJS? KnockoutJS? 这一个支持双向绑定。
PlatesJS? jQuery-tmpl? Handlebars? 还有些人在用。
有点像。有哪些跟最后一个比较像的?
Mustache, underscore? 我记得连 Lodash 都有一个模板引擎,不过这是 2014 年的事情了。额,也许是再新一点的库?
Jade? DustJS?没用过
DotJS? EJS?没用过。
Nunjucks? ECT?没用过。记不起来了,要是你的话,你用哪个?
我应该会用 ES6 原生的模板字符串我猜猜,只有 ES6 支持。
对的。需要用 Babel
对的。需要用 npm 安装
对的。需要用 Browserify 或者 Webpack,或者 SystemJS
对的。如果没用 Webpack 的话,我还需要一个任务管理工具。
对的。但是由于我要用函数式编程和强类型语言,所以我首先要用上 Typescript 或者 Flow。
对的。如果我要用 await,那我就必须用 Babel 转译。
对的。然后我就能用上 Fetch、Promise 和各种炫酷的东西。
嗯,别忘了加上 Fetch 的 Polyfill,因为 Safari 不支持 Fetch。你猜怎么着,我们就聊到这吧。我不做了,我不做 Web 了,我也不想再碰 JS 了。
没事,过不了几年,我们都会用 Elm 或者 WebAssembly 了。我要回后端去了,我受不这些变动、版本更新、编译和转译了,JS 社区如果觉得有人能跟上它的脚步,那这个社区就是疯了。
我理解你。我建议你去 Python 社区。为什么?
听说过 Python 3 吗?完。
译者注:最后一句「听说过 Python 3 吗?」是讽刺 Python 3 发布已经 8 年了,Python 社区却依然在使用 Python 2.7。而 JS 社区正好相反,把还没有实现的语言特性都用到生成环境中了!
阅读(...) 评论()Shiny Web开发从入门到放弃
Shiny Web开发从入门到放弃
Shiny 是R语言中的一个Web开发框架,Shiny的初衷是用来辅助数据分析师将自己的数据分析结果通过Web和其他人共享研究成果。在这样的中心思想下演化出了形形色色的前端BI组件,比如ShinyBI、ShinyJS、Shinydashboard、flexdashboard等等。结合R语言中的诸如ggplot2、highcharter、plotly、REmap、ggvis、treemap等等的数据可视化组件,我们可以快速完成数据产品的最小可用原型。
传统的开发流程中,往往是后端语言传输JSON到前端,前端通过JS组件对json解析后做数据可视化,而默认的前端模板往往是只支持静态数据的。
一方面,R语言由于在数据可视化上的先天优势和极致体验,直接将后端输出的数据可视化结果在前端展示出来,极大地简化了数据可视化的流程。
另一方面,Shiny和React类似,都支持了响应式编程。也就是通过监听数据的变化,在一次数据变化后直接对多个前端组件进行渲染,这非常符合Shiny的数据流编程的应用场景。透过Rmd,我们甚至可以在markdown里结合使用shiny制作Web应用。
it sounds too good to be true,这一切听起来多么美好。很不幸,截止到目前,根据实际的开发经验,Shiny 至今还停留在学界的象牙塔里。实际开发中,Shiny 还是有不少棘手的问题需要面对。
本文将结合实际的开发经验和前人躺坑总结对Shiny Web开发做一些讨论。
前端细节控制力不足
虽然Shiny 可以借用R语言的数据可视化能力快速制作BI,但是在前端的细节控制和效率上和原生JS或者Jquery相比依然是霄壤之别。
在细节控制上,想要实现针对某个id的div标签下的一个组件做显示或者隐藏,理论上已经有Shinyjs可以帮我们做到,然后实际情况是Shinyjs在大多数情况下调用依然比较复杂,而传统的Jquery只需要一行 #('.some_id').show() 的JS就可以实现精准的操作。
项目耦合严重,debug体验不佳
flexdashboard + Rmarkdown + shiny-server 的文学化编程给我们讲了一个很美好的故事,但是在实际开发中却遇到了一个非常大的坑。Rmd中结合flexdashboard做前端页面暂时找不到嵌入自定义JS的好办法,从编译后的源代码来看,自己自定义的JS都会被重新编译写到flexdashboard和Rmarkdown的一些JS文件中,开发过程中debug的体验并不太友好,bug信息在前端上的打印非常模糊。
虽然通过 R -e "shiny::runApp(port=\"3306\")"这样的命令我们可以将 shiny 从terminal里跑起来,并且实时查看到shiny的traceback调用栈,但是在shiny这样前后端耦合的情况下,想要分离 shiny 的数据渲染和前端细节控制变得非常的麻烦,多人同时修改一个页面几乎成了不能完成的任务。
文档、示例、问答、学习资料匮乏
在我遇到Shinyjs和flexdashboard的开发问题时,面对的就只有GitHub上的一个简易文档和一些示例代码,即使通过google和stackoverflow我们也只是找到对搜索关键词的一些过期的零星讨论,对实际解决开发问题并没有太多切实帮助。
反观现代的微服务开发模式,将一个前端服务模块化、标准化,通过多人协同开发,快速完成整个前端页面的开发反而是一个效率更高的选择。
从工程化层面上看,大量成熟优秀、久经考验的数据产品均纷纷拥抱Python(Django/Flask)+JS(jQuery/Boostrap)的开发框架来完成。比如Spotify开源的Luigi和Airbnb开源的Airflow,就是两个鲜活例子。
随着企业服务复杂度的深化与微服务的变革,前端开发时至今日已经和后端开发走出了完全不同的一种曲线。前端拼的是招式,讲究视觉效果、用户体验;后端拼的是内功,讲究算法数据、架构设计。在微服务的变革中,全栈架构已经分崩离析,前后端完全解耦后需要的是API化生存,多人实时协同开发。
从Web开发的角度来看,Shiny现在离一个成熟的Web框架来说还是有很长的一段距离。一个成熟的Web框架通常都需要包含的ORM工具、前端模板规范、模块化规范、文档规范、代码规范、测试规范、调试规范、接口设计工具、日志服务、配置工具、鉴权模块等等,然而这些暂时 Shiny 都还没有优雅的实现方案。
现在,Shiny-server或许还只能简单地作为一个研究成果的托管工具,透过Rmd和Git将多人的研究成果共享。而对于真枪实战的Web开发,Shiny 还需要从工程化的角度将生态系统完善起来。
在刚刚结束的 SegmentFault2016深圳站的活动中,抱着好玩的心态,我们使用Shiny+annyang 完成了一个基于语音识别的即时数据可视化方案。这个灵感一方面是来自2014年谢大大用语音控制统计图表的Demo,另一方面是来自今年TechCrunch Hackathon 纽约站的冠军用语音控制前端页面设计的Demo。
很有意思的是,本次活动的 Top1 也采用了和我们类似的语音识别技术来控制应用的制作,不过由于 Top1 不仅有领先的理念还有优雅的前端设计,整个用户体验也比基于Shiny制作的Web App要高出好几个等级,我们的Demo还是没能打动评委老师和观众朋友。
文末,附上最近SegmentFault2016深圳站的Shiny代码,大家可以看看我们的架构如何从美好的 index.Rmd 童话退化到尴尬的 app.R。Google刚发布了Google ARCore,对标苹果的ARKit,之前微软出hololens的时候就非常关注AR,迫不及待试了一下ARCore的效果,让人Excited,有种刚学安卓时候第一次跑起来模拟器的感觉。
顺带记录下上手过程,比较简单,官网很详细,这里差不多只是个翻译。
1、Android studio 2.3及以上
2、支持的设备
1、下载上面的AR服务安装包,安装到设备上
2、Studio打开官方Demo,运行到设备上
刚好手边有pixel所以比较顺利,可能大部分没有支持的设备,看了下代码设备检查是通过BUILD.FINGERPRINT这个值,通过反射可以修改,绕过检查,绕过后验证Nexus 6可以使用,7.0以上的机型可以试试看。
好久不写博客了,写这篇其实主要是想看下ARCore的关注度怎么样,会引多少流量进来。
本文已收录于以下专栏:
相关文章推荐
Java中单例(Singleton)模式是一种广泛使用的设计模式。单例模式的主要作用是保证在Java程序中,某个类只有一个实例存在。一些管理器和控制器常被设计成单例模式。单例模式有很多好处,它能够避免...
毕业一年了,总结一下。
对于机器学习,很多人的观点是:机器学习技术是今后所有技术人员都绕不过的一个门槛。 那么,普通程序员该学习机器学作为一名对机器学习心有向往的程序员,我该以什么样的姿势开始呢?
整理了一下自己购物车里的书单,推荐一下。
1由于考虑到在所有的deposit/withdraw方法的继承中,所有的deposit都是相同的,但是withdraw不同,所以把withdraw方法作为一个抽象方法,让其后继承它的具体实现类中的方法...
毕业两年了,总结一下。
  java中单例模式是一种常见的设计模式,单例模式分三种:懒汉式单例、饿汉式单例、登记式单例三种。
  单例模式有一下特点:
  1、单例类只能有一个实例。
  2、单例类必须自己自己创建自...
昨天只是简单运行了官方的Demo,今天抽时间看了下文档和代码,大概了解一下原理。Demo功能很简单,打开之后自动检测平面,手指触摸平面会在触摸位置放置一个机器人。检测平面成功后如下面截图所示,可以看到...
有段时间没有更新博客,一是比较忙,二是考虑自己的博客内容。之前的博客都是自己的学习记录,输入的同时做了输出,自己思考了一下主要就是以下几类:1、一些比较常见的知识点,像这些都是本来就已经存在的内容,我...
他的最新文章
讲师:唐宇迪
讲师:卿来云
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)}

我要回帖

更多关于 数控车床编程入门自学 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信