分享一个WebGL开发的网站-用JavaScript + WebGL开发3D模型
这张图每位程序员应该都深有感触。人民心目中的程序员是这样的:坐在电脑面前噼里啪啦敲着键盘,运键如飞。现实中程序员是这样的:编码5分钟,调试两小时。今天我要给大家分享一个用WebGL开发的网站,感兴趣的朋友可以在Chrome开发者工具里调试它的源码来学习WebGL。WebGL(Web Graphics Library)是3D绘图协议的一种,该技术的特色是将万能的JavaScript和OpenGL E
一个具体的例子学习Java volatile关键字
相信大多数Java程序员都学习过volatile这个关键字的用法。百度百科上对volatile的定义:volatile是一个类型修饰符(type specifier),被设计用来修饰被不同线程访问和修改的变量。volatile的作用是作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。可能有很多刚学Java的朋友们看了上面这段非常笼统的描述后仍然觉得云里雾里的。下面我们就用一
JavaScript实现的水果忍者游戏,支持鼠标操作
智能手机刚刚普及时,水果忍者这款小游戏可谓风靡一时。几年过去了,现在,让我们用纯JavaScript来实现这个水果忍者游戏,就算是为了锤炼我们的JavaScript开发技能吧。大家可以通过这个链接在线玩一玩(该链接是我的github地址):http://i042416.github.io/FioriODataTestTool2014/WebContent/051_fruitninja.html用鼠
记录我开发工作中遇到HTTP跨域和OPTION请求的一个坑
我通过这篇文章把今天工作中遇到的HTTP跨域和OPTION请求的一个坑记录下来。场景是我需要在部署在域名a的Web应用里用JavaScript去消费一个部署在域名b的服务器上的服务。域名b上的服务也是我开发的,因此我将域名a加到了该服务的HTTP响应结构的头文件里,这样就允许了域名a上的JavaScript代码用AJAX访问域名b的服务。域名b上的服务是一个Servlet,允许域名a跨域访问的代码
Java动态代理之InvocationHandler最简单的入门教程
网上关于Java的动态代理,Proxy和InvocationHandler这些概念有讲解得非常高深的文章。其实这些概念没有那么复杂。现在咱们通过一个最简单的例子认识什么是InvocationHandler。值得一提的是,InvocationHandler在Spring框架实现中被广泛使用,这意味着我们吃透了InvocationHandler,就为将来的Spring源码学习打下一个坚实的基础。开发一
JavaScript的语音识别
有没有想过给您的网站增添语音识别的功能?比如您的用户不用点鼠标,仅仅通过电脑或者手机的麦克风发布命令,比如"下拉到页面底部”,或者“跳转到下一页”,您的网站就会执行对应命令。听起来很酷对么?然而为了实现这个功能,必须得让您网站的JavaScript脚本能够识别到这些语音输入。这里介绍一个开源的JavaScript语言输入库,名叫annyang。Github地址:https://githu
使用JDK自带的jmap和jhat监控处于运行状态的Java进程
对于处于运行状态中的Java进程,JDK自带了很多工具,允许Java开发人员监控运行进程中的各种状态,比如该进程内部创建了多少个对象实例,消耗了多少内存,等等。本文基于JDK1.8而写成。我下面写了一个最简单的Java类,包含了一个无限循环,每隔5秒增加一个计数器的值。package jmap;class Tool{ private
如何用JavaScript判断前端应用运行环境(移动平台还是桌面环境)
我们部署在某些云平台或者Web服务器上的前端应用,既可以用PC端浏览器访问,也可以用手机上的浏览器访问。在前端应用里,有时候我们需要根据运行环境的不同做出对应处理。比如下面这段逻辑,如果判断出应用当前是运行在手机上,则需要设置对应的viewport。if (this.isMobile()) { var view
100行代码让您学会JavaScript原生的Proxy设计模式
面向对象设计里的设计模式之Proxy(代理)模式,相信很多朋友已经很熟悉了。比如我之前写过代理模式在Java中实现的两篇文章:Java代理设计模式(Proxy)的四种具体实现:静态代理和动态代理Java动态代理之InvocationHandler最简单的入门教程其实和Java一样,JavaScript从语言层面来讲,也提供了对代理这个设计模式的原生支持。我们用一个不到100行代码的例子来看看吧。下
SAP产品的Field Extensibility
SAP开发人员的工作职责,除了实现软件的功能性需求外,还会花费相当的精力实现一些非功能性需求,来满足所谓的SAP Product Standard(产品标准)。这些产品标准,包含在SAP项目实施中大显身手的Extensibility,为客户业务流程的安全运行保驾护航的Security,也有看起来不太起眼,但实际上体现了SAP作为一家伟大企业所具有的社会担当的Accessibility,以及Inte
SAP不同的产品是如何支持用户创建自定义字段的
我们从SAP CRM,Cloud for Customer(简称C4C)和S/4HANA这三个产品分别来看看。SAP CRM我们使用所谓的Application Enhancement Tool(AET)来创建扩展字段。首先在Personalize里将Configuration模式打开,这样才能够直接在浏览器里创建扩展字段。把这个“Enable configuration mode”的勾选中,就打
使用ABAP编程实现对微软Office Word文档的操作
SAP ABAP里提供了一个标准的类CL_DOCX_DOCUMENT,提供了本地以".docx"结尾的微软Office word文档的读和写操作。本文介绍了ABAP类CL_DOCX_DOCUMENT的简单用法。Office OpenXML从微软 Office2007开始, 当我们新建一个word文档时,其扩展名从“.doc"变为了".docx",后
一个SAP开发人员的双截棍之路
由于种种原因,Jerry最近加入了SAP成都研究院的一个演讲俱乐部,这个俱乐部主要是提高大家的英语演讲能力。说来Jerry也是大一下期和大二上期一次性高分通过四六级考试的,但是当毕业进入SAP成都研究院后,通过和同事比较才知道自己口语有多烂。在SAP成都研究院,我能听到同事们地道的伦敦腔,纽约腔,曼彻斯特腔,当然还有Jerry的成都腔。本文是我参加最近一期演讲俱乐部的演讲稿。下面是正文。目录搭环境
在ABAP里模拟实现Java Spring的依赖注入
Dependency Injection- 依赖注入,在Java Spring框架中有着广泛地应用。通过依赖注入,我们不必在应用代码里繁琐地初始化依赖的资源,非常方便。那么ABAP能否从语言层面上也支持依赖注入,享受这种设计思路带来的便利呢?让我们做一次尝试。尝试的场景在现实生活中,每一盏灯都有一个开关控制。按下开关,灯被打开;再按一次,灯熄灭。先看不使用依赖注入的常规实现:设计一个ABAP in
一个简单的例子教会您使用javap
javap是JDK自带的工具:这篇文章使用下面这段简单的Java代码作为例子进行讲解。class Outer { Nested nested; Nested getNested() {  
Cordova插件中JavaScript代码与Java的交互细节介绍
在Cordova官网中有这么一张架构图:大家看右下角蓝色的矩形框"Custom Plugin"——自定义插件。意思就是如果您用Cordova打包Mobile应用时,发现您的移动应用里需要使用一些功能,这些功能用普通的JavaScript无法实现,而是需要调用移动平台的一些原生API才能实现时,我们就需要自己实现自定义插件。这些插件通过在特定的移动平台上采用原生开发实现,比如An
Java和ABAP中的几种引用类型的分析和比较
Java编程语言中几种不同的引用类型是面试时经常容易被问到的问题:强引用,软引用,弱引用,虚引用。其实除了Java之外,某些 其他编程语言也有类似概念,比如ABAP。今天我们就来比较一下。根据ABAP帮助文档,我们可以把某个对象的引用包在一个Weak Reference的实例里。ABAP的Weak Reference实例通过类CL_ABAP_WEAK_REFERENCE实现。看下面的例子:首先我在
小技巧:如何突破某些网站只能登陆后才能进行文字拷贝的限制
我写公众号文章时,经常需要从一些网站的文章上查阅一些资料。比如我想把这个网页上的一个标题“SAP Fiori 2.0用户体验设计概念获红点大奖”进行拷贝。然而当我按了键盘上的拷贝快捷键Ctrl C后,却收到这个提示,告诉我只有登陆后才能够进行复制操作。可是为了登陆我得先注册,有点麻烦。如果赶时间的话,可以使用这篇文章的小技巧,达到不用先注册再登陆,也能任意拷贝网页文字的效果。下面是详细步骤。1.
微信程序开发系列教程(二)微信订阅号+人工智能问答服务
我的前一篇文章微信程序开发系列教程(一)开发环境搭建 已经介绍了微信服务器的开发环境搭建。本文作为开发系列的第二篇文章,介绍如何给您的微信订阅号开发一个最简单的问答服务,非常好玩。这个系列的完整代码在我的github上:https://github.com/i042416/wechat本文实现的场景您的订阅号粉丝向订阅号发送消息,会得到一个和发送消息一模一样的文字回复,并且在前面加上了“Add b
微信程序开发系列教程(一)开发环境搭建
1. 您得从微信官方平台注册一个微信订阅号:https://mp.weixin.qq.com2. 这个教程使用nodejs开发微信订阅号对应的消息服务器,因此需要具备基本的nodejs开发技能。登录微信公众号平台https://mp.weixin.qq.com, 使用菜单:Development->Basic configuration:最重要的是在订阅号的控制台里指定一个消息服务器的url