转到正文

浪淘沙

静观己心,厚积薄发

存档

2013 年 2 月 的存档

原文地址:http://sauzny.iteye.com/blog/1700313


// 一维数组合并
private static String[] getMergeArray(String[] al, String[] bl) {
    String[] a = al;
    String[] b = bl;
    String[] c = new String[a.length + b.length];
    System.arraycopy(a, 0, c, 0, a.length);
    System.arraycopy(b, 0, c, a.length, b.length);
    return c;
}

// 二维数组纵向合并
private static String[][] unite(String[][] content1, String[][] content2) {
    String[][] newArrey = new String[][] {};
    List<String[]> list = new ArrayList<String[]>();
    list.addAll(Arrays.<String[]> asList(content1));
    list.addAll(Arrays.<String[]> asList(content2));
    return list.toArray(newArrey);
}

// 二维数组横向合并
public static String[][] getMergeArray(String[][] al, String[][] bl) {
    if(al == null || al.length == 0) return bl;
    if(bl == null || bl.length == 0) return al;
    String[][] newArrey = null;
    // 根据数组的长度,判断要补全哪个数组
    if (al.length > bl.length) {
        newArrey = new String[al.length][];
        // 补全较短的数组
        String[][] temps = new String[al.length - bl.length][bl[0].length];
        for (int i = 0; i < temps.length; i++) {
            for (int j = 0; j < temps[0].length; j++) {
                temps[i][j] = "";
            }
        }
        String[][] btemp = unite(bl, temps);
        // 合并
        for (int k = 0; k < al.length; k++) {
            newArrey[k] = getMergeArray(al[k], btemp[k]);
        }
    } else {
        newArrey = new String[bl.length][];
        String[][] temps = new String[bl.length - al.length][al[0].length];
        for (int i = 0; i < temps.length; i++) {
            for (int j = 0; j < temps[0].length; j++)
                temps[i][j] = "";
        }
        String[][] atemp = unite(al, temps);
        for (int k = 0; k < bl.length; k++) {
            newArrey[k] = getMergeArray(atemp[k], bl[k]);
        }
    }
    return newArrey;
}

原文地址:http://sauzny.iteye.com/blog/1700313

原文地址:http://initiative.yo2.cn/archives/633801

烂文章#1(yeeyan上的), #2(rollingcode.org)。读起来相当痛苦。老子看了半天没明白。一是译得烂,二是技术说明不适合入门。

决心写个入门指南,理清思路。当然,如果你真的要仔细研究下oAuth,请看官方文档 http://oauth.net/core/1.0/ 。这里的东西最权威。也可以去oAuth邮件列表讨论。

一句话oAuth

oAuth涉及到3大块的交互和通信。1. 用户2. 拥有用户资料/资源的服务器A3. 求资源的服务器B,。 继续阅读

原文地址:http://blog.youmila.com/?p=513

关于跨域名问题还是问题么,这方面的解决实践非常多,今天我就旧话重提把我所知道的通过几个应用场景来分别总结一下

先说明一点:我说的某某域名在您的控制下的意思是这个域名下的网页由您来负责开发内部的JavaScript
场景一:将bbs.xxx.com的页面用iframe嵌入到www.xxx.com的中,如何在iframe内外使用js通信
一级域名都是xxx.com 这个域名一定是在您的控制下,所以你只要在两个页面中同时升级域名即可
在父窗口和iframe内部分别加上js语句:document.domain=”xxx.com”;
之后2个页面就等于在同一域名下,通过window.parent oIframe.contentDocument就可以相互访问,进行无障碍的JS通信
在新浪、淘宝等很多页面都能找到这样的语句。不过document.domain不可以随便指定,只能向上升级,从bbs.xxx.com升级到yyy.com肯定会出错 继续阅读

原文地址:https://www.evernote.com/pub/allovince/Tech#b=4274eb8b-4e3e-4f3d-8e50-abdd788e284c&st=p&n=5de5c6fd-7463-423b-8f08-452811f92afd

作者:Alexander Merz 翻译:taowen 来源:超越PHP


PEAR提供了强大的错误处理机制。这篇文章向你展示如何从这个系统中获益。


许多程序已经使用了PEAR的包。许多PHP程序员或多或少的熟悉了PEAR中的错误处理。但是这个机制并不局限于PEAR的包??所有人都能在他们的类和程序中使用这些方法。

这篇文章被分为两个部分:首先我们将看看类中用于错误处理的函数,然后我们将看看如何基于PEAR错误处理机制来处理错误。

我们的例子类称为cvs2db,它把数据从CSV文件插入到数据库的表中。因为数据可能是手写的,他们的数据应该在插入之前先得到验证??落实 postcode。函数import()完成读入,检查和插入的工作;它返回损坏的记录数目。如果返回的值大于0,出错的记录集能够使用 exportUnvalid()写入到新的CSV文件中。典型的用法是这样的:
继续阅读

原文地址:http://www.infoq.com/cn/news/2013/01/walmart-lab-opensource-projects

众所周知,沃尔玛是世界第一大零售商;但少为人知的是,沃尔玛有一个实验室:WalmartLabs,该实验室在开源项目上有不少贡献,并在GitHub上有主页。这些项目中,大部分都与Node.js和JavaScript有关。

沃尔玛实验室的“关于我们”页面上这样介绍自己:

沃尔玛实验室以创新的方式融合零售、社交和移动技术,为世界上最大的零售商重新定义“商务”的含义。我们是一群业内最聪明的技术专家和商业人才。对于下一代“商务”将会带给全球几十亿人的无限机会,我们感到十分兴奋,并致力于帮助他们节省金钱,更好地生活。

沃尔玛实验室有两位带头人,一位是Jeremy King,是沃尔玛的资深副总,兼全球电子商务首席技术官,他曾在eBay工作7年时间,担任工程和软件开发副总,并带领团队选型并落地了下一代应用平台——“V3”,并领导过交易和欺诈工程团队。他还主导设立了中国和印度的研发中心,也曾是PayPal整合团队的核心成员。另一位是Gibu Thomas,是移动和数字化资深副总。

在GitHub的主页上,显示沃尔玛实验室共有41个项目,有11名成员。下面简单介绍下最活跃的几个项目:

thorax:基于Backbone的应用框架,提供文件系统结构、按需模块加载、模型和集合视图绑定、继承视图和DOM事件、数据加载助手、表单序列号和验证等功能。其中用到BackboneUnderscoreZeptoHandlebarsStylusLumbar

hapi:基于Node.js的框架,提供restful的API服务。hapi以配置为核心,提供鉴权需求、输入验证、数据缓存和预加载等功能,并允许使用简单的JSON配置对象。开发人员使用hapi,可以将主要精力放在编写可重用的业务逻辑上,而不是用来做其他方面的琐碎事情。

joi:对象schema验证系统。基于丰富的、描述性的schema,验证JavaScript对象。

hoek:node实用工具。

lout:供hapi服务器使用的文本生成器,为使用路由配置的每个端点提供易于阅读的指南。并允许对输出的完全定制。

helmet:hapi的交互调试控制台。

FakeToe:XML到JSON的转换器。

log:hapi的处理监控工具。

Flod:系统化工具集,用来评测和对比Node.js web服务器框架,允许开发人员对比不同版本的、自己的框架,以及其他人的框架。

catbox:多策略对象缓存服务。

上述这些工具,统归在Blammo项目之下。 继续阅读

原文地址:http://www.infoq.com/cn/news/2013/01/50-javascript-chart-lib

在很多项目中都会有在前端展现数据图表的需求,而在开发过程中,开发者往往会使用一些JavaScript库,从而更有效地达到想要的目标。最近,TechSlide上的一篇文章总结了50种用于展现图表的JavaScript库,并对每种库做了简要的说明。这对于想要选择合适JavaScript库的开发者很有参考意义。

文章作者首推的库是D3,他说到:

它非常让人惊叹,我很喜欢它的简洁性。它的文档非常完备,源代码托管在GitHub上,而且不断会添加新的示例。有一种叫做Tributary的创建D3原型的工具,其中有很多非常棒的示例。这个库非常好,以至于xcharts、nvd3、Rickshaw、Cubism.js、dc.js、xkcd都是基于它构建的。如果你想要做出优秀的自定义数据可视化效果,那么D3可能是你最佳选择,或者对于更简单的图,你可以选择上面所提到的基于D3的库。最后,我强烈推荐阅读Scott Murray关于D3的免费书《Interactive Data Visualization for the Web》和《Dashing D3 tutorials》。

继续阅读

原文地址:http://bbs.phpchina.com/forum.php?mod=viewthread&tid=159107

1. 在合适的时候使用PHP – Rasmus Lerdorf
没有谁比PHP的创建者Rasmus Lerdorf明白PHP用在什么地方是更合理的, 他于1995年发布了PHP这门语言,从那时起,PHP就像燎原之火,烧遍了整个开发阵营,改变了互联网的世界。 可是,Rasmus并不是因此而创建PHP的。PHP是为了解决web开发者的实际问题而诞生的。
和许多开源项目一样,PHP变得流行,流行的动机并不能用正常的哲学来进行解释,甚至流行得有些孤芳自赏。它完全可以作为一个案例,一个解决各种web问题的工具需求所引起的案例,因此当PHP刚出现的时候,这种工具需求全部聚焦到PHP的身上。
但是,你不能奢望PHP可以解决所有问题。Lerdorf是第一个承认PHP只是一种工具的人,并且PHP也有很多力所不能及的情况。
根据工作的不同来选择合适的工具。我跑了很多家公司,为了说服他们部署和使用PHP,但是这并不意味着PHP对所有问题都适用。它只是可以一个解决大部分问题的front-end脚步语言。
作为一个web开发者,尝试用PHP解决所有问题是不科学的,同时也会浪费你的时间。当PHP玩不转的时候,不要犹豫,试用一下其他的语言吧。
2. 使用多表存储提高规模伸缩性 – Matt Mullenweg
继续阅读

原文地址:http://bbs.phpchina.com/forum.php?mod=viewthread&tid=177258

身为一名中级PHPer菜鸟..无聊了就爱在各个PHP论坛瞎转.看到了好多PHP初学者都问到了很多相同的问题.而且我学PHP的时候也都遇到过.为了让PHP初学者少走一些弯路.所以突然神经恍惚.决定写下此文章.仅供PHP初学者参考.如有错误.还望指出.不甚感激.

PHP其实是一种很简单易学的语言.如果要精通PHP多则三年.少则一年就足够了.但是为什么三年之后我们照样是菜鸟?

不知道从什么开始.学习PHP我们不得不学习数据库.学习架构.学习面向对象.学习前端.学习linux.学习协议甚至美工等直接导致了现在PHPer都是最累的一种程序员.

最累就不算什么了.往往PHP会被认为是下等的程序.拿着最低级的工资.却要掌握web方面几乎全部的知识.这实在是不公平.

可喜的是 我们逐渐在国内看到了转变.国内越来越多的公司从Java或者C#等转到了PHP.所以各位PHPer一定要有自己的梦想.你们都会很牛B的.请坚信.
继续阅读

原文地址:http://my.oschina.net/cfanlds/blog/14876

目前,有人使用的PHP框架有400多。很多开发了发布的PHP框架可以说是近乎上千个之多。在选择PHP开发框架时,很多人都会陷入迷茫,或因此走很多弯路。
因此,我们这里简单讲一下,如何寻找一个不会让你后悔的PHP开发框架。
首先要明确,先择框架,绝不是为了学习,也不是为了做一个企业网站或小型个人网站。面临选择问题的根本点在于,你这个网站是大型网站,或将来会成为大型网站。你不能因为框架而阻碍你的发展。
那么,我们先讲一下,目前选择框架的种种误区:
1、选择流行的。并非流行的就是非常好的。举例来说,CI相当流行。但CI只能用于小型网站开发,并且,可扩展性相当差,它的最大的优点是初学者易上手。但不能很好地运用PHP5面向对象的特性。
2、选择官方的。无非就是用Zend,但它并不是最具扩展性的代码,或者,它的一切也只有在ZEND SERVER中才能充分体现。可ZEND SERVER是要收费的。另一坏处,那就是,它的更新速度并不是很快。一个很复杂的代码,相对于一个网站的发展,无法等待官方的更新,需要时,你需要自己去修改的。所以,以官方更新有保障,这是靠不住的理论。
3、选择简单的。目前国产的,声称极简单的框架也不下于上百种。但这些简单的框架,实际最终会浪费你很多的时间。为什么呢?比如,无日志,出错后,不知错在何处。无TRACE,跟踪调试不方便。
那么,我们选择框架有什么样的标准昵?
继续阅读

这个支持的比较多。感觉也不错。

开发文档网址:http://developer.sponsorpay.com

官方网站:http://www.sponsorpay.com/

现在还在研究。等研究好了之后再写具体的使用方式。