熊立丁

中国浙江宁波
熊立丁

前端

微信 JSSDK 在 Android 和 iOS 的一处不一致

今天在使用微信的 JSSDK 时遇到一个诡异的问题:同一套代码,在 Android 中正确,在 iOS 中却失效。 于是开启了 debug,发现在执行 wx.config() 函数时就出现了不同的结果,Android 是 {"errMsg":"config:ok"},而 iOS 是 {"errMsg":"config:fail"}。即使此时我修改了代码确保传入完全相同的参数。 最终发现是在参数 nonceStr 上出了问题,这是一个用于生成签名的随机字符串,为了方便,我直接使用了一个随机数,因此其真正的类型并不是字符串,结果就出现了 Android 和 iOS 中的不同表现。 我想这处不一致,微信开发团队都未必知道。

By 熊立丁

前端

微信 JSSDK 在 Android 和 iOS 的一处不一致

今天在使用微信的 JSSDK 时遇到一个诡异的问题:同一套代码,在 Android 中正确,在 iOS 中却失效。 于是开启了 debug,发现在执行 wx.config() 函数时就出现了不同的结果,Android 是 {"errMsg":"config:ok"},而 iOS 是 {"errMsg":"config:fail"}。即使此时我修改了代码确保传入完全相同的参数。 最终发现是在参数 nonceStr 上出了问题,这是一个用于生成签名的随机字符串,为了方便,我直接使用了一个随机数,因此其真正的类型并不是字符串,结果就出现了 Android 和 iOS 中的不同表现。 我想这处不一致,微信开发团队都未必知道。

By 熊立丁

向不支持输入法的软件输入中文

First Release: 2014-12-17 23:23:52 问题 今天试了下 x2go 的 single application 模式,第一感觉很不错,可以把远程系统中的软件在本地打开,看上去就像打开本地的软件一样。 美中不足的就是没办法输入中文,首先远程系统的输入法没办法在这个模式下使用,而本地系统的输入法也同样不能正常工作,搞得我只能另外开个文本框输了中文粘贴过去。 不能忍 这已经不是我第一次遇到没办法输入中文的情况了。更可恶的是软件本身是支持中文的,就是没办法直接往里输中文,只能从别的地方贴过去,切来切去浪费时间不说,还打断思路。 Ditto 我装了 Ditto 代替 Windows 原生的剪贴板,在使用 Ditto 粘贴的时候突然想到,如果有一个工具能像 Ditto 一样通过全局热键呼出,然后把选择的过程(Ditto 通过 `Ctrl+`` 呼出后可以从最近十次复制的内容中选择一个插入到光标所在位置)换成直接输入就好了。也就是把输入流程简化成: * 全局热键呼出工具 *

By 熊立丁

PHP

在 PHP 中实现带 WSDL 的 SOAP

1. 用 composer 安装生成 WSDL 所需的库 composer require piotrooo/wsdl-creator 2. 实现用于外部访问的入口文件,代码示例请参考(其中方法名和参数中出现的 Notify 对应一个类名,该类的方法将成为可以通过 SOAP 调用的外部接口): <?php use WSDL\DocumentLiteralWrapper; use WSDL\WSDLCreator; use WSDL\XML\Styles\DocumentLiteralWrapped; class Api { public static function soapNotify() { $host = $_SERVER['HTTP_HOST']; $soapuri = "http://{$host}/Api/soapNotify&

By 熊立丁

阅读

哪里需要注释——《The-Art-of-Readable-Code》第五章导读

注释不只是为了解释一段代码的作用,注释是为了将代码编写者所知道的信息全部传达给阅读者。 当你编写代码的时候,你脑中会有很多有价值的信息,这些信息形成一个编写代码的思维环境。 最后,代码写完了,这些环境信息却丢失了。 当其他人阅读代码时,由于不在这个“环境”中,就很难理解那些代码。 注释要做的,就是让阅读者能根据注释提供的信息,还原这个“环境”。 不要注释什么 读注释会占用读代码的时间,显示注释还会占用屏幕上的空间,所以我们必须保证这些时间和空间物有所值。 不要注释一眼就可以从代码中看出来的东西。 有价值的注释必须提供一些无法一眼就能从代码中找到的信息。 不要为了注释而注释。 这常常会导致注释和代码表达重复的信息。 不要注释一个糟糕的命名。 你要做的是找一个更好的名字,名称就是对自己功能的最好注释。 命名要做到“自我解释”。 记住这个公式“ 好代码 > 坏代码 + 好注释 ”。 记录你的想法 当你写代码时,头脑中会有一些想法,比如为什么要这么做而不那么做,把他们记录下来。 引入“导评”。 “导评”是指你自己如何看待这段代码,包括这么写的用意、优势劣

By 熊立丁

方便网页游戏合服的数据库设计思路

合服应该算是游戏生命周期中的一环,很多游戏开发者都会经历这个过程,而根据我自己的经验,网页游戏合服更为普遍和频繁。我经历过合服的痛苦历程,甚至听说过有些游戏由于最初的设计原因导致无法合服。当然真正的无法合服应该是不存在的,我想大概是因为这个痛苦超过了常人的忍受能力,或者是这个过程成本过高。 所以说,我们最好在早期开发过程中就预先考虑好这个问题。 环境说明 以下的内容直接使用 MySQL 的术语和语句,不过就算你使用其他数据库,也应该很容易理解这些概念。 主键冲突 合服时遇到的最普遍情况当属主键冲突。 玩家角色、道具等等都是在游戏运行过程中添加进去的数据,我们用数据库的 AUTO_INCREMENT 特性来创建这些数据的主键,来保证他们在游戏中的唯一性。 比如我们定义了玩家的ID字段为 uid int(11) NOT NULL AUTO_INCREMENT ,那么玩家的道具表中势必也会有一个字段 uid int(11) NOT NULL ,用来表明这个道具是哪个玩家的,类似的,玩家的装备等等也会用类似方法表明归属。 当合服时问题就来了,AUTO_INCREME

By 熊立丁

感悟

如何写好一个教程

* 要明确和清晰的将教程分为多个步骤。 * 核心思想要用简短的语句进行表述,并通过适当的重复来进行强化。 * 用黑体和斜体等标注重要内容。 * 尽可能多的使用可视化元素,以表达文字难以表述的内容。 * 读你的教程的人可能完全是个新手,你不该期望他已经对你提到的东西有所了解。所以,不要跳过任何步骤,并且每个步骤都要尽可能详细。 * 确保你的教程可以被你的读者理解。不要使用他们可能不懂的术语和缩写却不加以解释。 * 给出一些讨论相关话题的文章的链接,以作参考。 * 给出一些实际的例子并告诉他们该如何做。 * 发表它,从而得到反馈建议并进行改进。

By 熊立丁

JavaScript

读Xui,学JavaScript(1)

初篇,hearder & footer —— 匿名函数 Xui的代码以 src/header.js 开头 (function () { 以 src/footer.js 结尾。 })(); 所有其他代码都包含在两者之间——现在流行的JavaScript框架大多采用了这种形式,让这种写法几乎成了不成文的标准。 我们把上面两段代码连在一起并加以整理: ( function () { //<1> } )(); <1> 如果你没有接触过匿名函数,看到这一行就会难以理解。为什么定义函数时可以不指定函数名呢? 我们熟悉的函数定义通常是这样的: function f() { //<2> } <2>此处定义了一个名为f的函数,虽然这个函数什么也不做,但它是合法的,并且可以在之后以f()的形式调用它。 JavaScript则要灵活的多,允许用下面这种形式定义函数: f = function () {}

By 熊立丁

JavaScript

读xui,学JavaScript(0)

在今年5月份的时候,我通读了xui的源代码,并完成了对代码文档和注释的翻译工作。本来是想用于公司内部分享,但由于种种原因,最终没有成型。最近有了时间,也有了合适的工具,所以打算把这个系列完成,并放到网上和大家分享。 适合人群 会某种面向过程或面向对象编程语言,并且一直在以使用该语言的方式使用JavaScript的人。这样的人在我身边为数不少——没有系统性的学习过JavaScript,按照已有的编程知识,想当然的使用JavaScript,甚至认为JavaScript就是这样的——我也曾是其中之一。但JavaScript远比我们所了解的更强大。希望这个系列能帮助大家更好的了解和使用JavaScript,写出好代码。 为什么选择xui Xui 是一个用于开发手机网络应用的,极其轻量、极度易用、高度模块化的JavaScript框架。使用起来和jQuery有点类似,但只包含了最实用的部分。 它的核心代码量很少,因为它的设计思路是这样的:首先建立一个核心项目core,只支持那些最符合标准的浏览器;然后在core的基础上开发ie和bb分支,分别支持ie浏览器和黑莓的浏览器。这

By 熊立丁

PHP

Kohana 3.2 in sina app engine

First Release: 2011-11-18 新浪是目前国内比较领先的云计算服务供应商。Sina App Engine选择了PHP做为开发环境,但和其他云计算平台一样,在使用上还是有一些限制的,由于禁用了对本地文件的读写权限,Kohana在默认设置下是不能在SAE上正常运行的。这里我们就来介绍一些方法,通过简单的修改,让Kohana3.2运行在SAE平台上。 Quick-and-dirty 首先介绍这个快速而简单的解决方案,如果你不打算使用缓存和日志功能,这个方案足够的简单和方便,并能保证kohana运行起来。 请先上传一份原始的Kohana 3.2到你的sae上以便参照操作。 删除install.php install.php本是用来检测服务器环境是否符合kohana运行要求的。经过检测,我们会发现sae的环境不能满足要求,原因是缓存目录和日志目录不能写入。 这里,我们直接删除这个文件。 修改application/bootstrap.php 文件application/bootstrap.php修改前后差异见下图(左边为修改前,右边

By 熊立丁
浙ICP备15043004号-1