Quantcast
Channel: IT社区推荐资讯 - ITIndex.net
Viewing all 15843 articles
Browse latest View live

Innospace 2014年项目介绍汇总

$
0
0

1、技能银行

技能银行是一个P2P的知识技能分享社交平台。在日常学习,工作和生活范围内存在着各种资源和人才,技能银行让人们在线上发现自己生活圈周围有才能的人,然后通过线下分享自己的技能从而获得新的技能和新的朋友。

2、WoKamon

Wokamon是一个结合电子宠物和计步器功能的移动应用。用户走路时消耗的热量(卡路里)会成为电子宠物的食量,也就是说用户走的越多,电子宠物成长的越快。

Wokamon专注于不喜欢运动的人群,希望用户能在使用Wokamon的应用或穿戴式设备的过程中,享受更多的乐趣并在不知不觉中得到更多的锻炼。

3、易感网络科技

易感LOGO抬头_副本

上海易感网络科技有限公司成立于2011年9月,是一家专注于体感技术开发及应用的创新型公司,主要从事体感识别交互系统开发、体感游戏开发及运营、安卓机顶盒游戏开发、医疗康复产品设计、人体互动广告技术服务等。

技术核心在于利用各类传感器获取人体骨骼的动作信息,通过3D引擎中间件来驱动交互,从而完成虚拟现实的3D应用。

4、R2

R2

一款以物品管理为内容的全方位管控和协同平台(www.r2saas.com),通过PC端和手机端应用的结合,为用户提供更为便捷、轻松的信息化体验,最终帮助用户起到降低成本,降低资源浪费,加速库存流转与合理供给,推进信息闭环和资源回收再利用的作用。

5、AppBei

log-AppBei_副本

AppBei致力于提供专业的婚礼app私人定制,包括喜帖、动感相册、签到簿等多款产品。

6、WeCampus

WeCampus_副本

大学校园活动社区。WeCampus希望连接起校园组织和大学生,让学生可以快速方便地找到感兴趣的活动,让校园组织找到学生参与。每场活动就是一个线上的互动空间,让所有大学生走出班级,走出学院,在校园活动中认识同一学校里志同道合的朋友。

7、十年后

十年后_副本

“十年后”是一个基于未来时间轴的全新社交网络,让人们匿名记录和分享关于未来梦想的真正想法,并和有趣的人进行深刻而无压力的交流。人们也可以在十年后上将梦想细分为目标,随时记录进度,分享资料,交流经验,从而实现基于梦想与未来的社交。

团队希望用「十年后」去颠覆现有社交网络的浅薄、琐碎以及无价值体系,让年轻人去真正地思考:自己十年后想成为怎样的人,自己的生活应该是什么样,自己真正想要的是什么。

8、出发吧

logo_出发吧_副本

“出发吧-旅行计划”是一款针对自助游爱好者的旅行计划App,快速打造个性化旅行计划。通过精品旅行路线推荐,节省用户查找景点资讯、交通方案、路线安排的时间;基于旅行计划来推荐旅行产品,降低用户购买旅行产品时的搜索成本和决策成本;规整收纳旅行信息,成为用户旅行在路上的得力帮手。

9、The Bike

bike-aoao+logo+single_副本

重新定义自行车,制造“属于这个时代的自行车”。

TheBike的开发者上海袄袄信息科技有限公司成立于2013年,是一家轻量级的创新型科技公司,主要致力于移动互联网领域跨平台的软件、硬件的设计与开发。曾创立、开发和运营移动互联网领域项目有“许愿树”,“Touch the Sound”,”Soundbe“,”iWalkout“,”陌陌女神“等。

10、Hipengyou

HiPengyou是一个针对跨语言文化人群的生活交友应用。针对来到陌生城市和国家的用户以及当地希望结交不同语言文化朋友的用户群体需求设计。

团队是由来自4个不同国家成员组成。认识有不同语言文化背景的朋友是一个非常美妙的经历,希望通过HiPengyou让更多的人更自然的体验这种经历。

11、设享

设享_副本

通过众创和众享来实践产品创新想法的平台。通过这个平台,希望由用户和设计师一起来创造大家都认可和需要的产品;让更多平凡而又充满了奇思妙想的人和怀抱设计理念的产品设计师,克服资金、制造和市场的困难,一同来发现创意和参与设计,也一同来分享产品生产所带来的成果和收益。把更多有创意、有生命力、给生活带来便捷和乐趣的产品来带到我们现实的生活,改变我们的生活。

同时,设享网要让用户,设计师,产品制造企业,市场都参与其中,在一个产品从一个创意想法到销售成为商品的整个环节中都能承担自己的角色,并分享相关的收益。


无线Wifi密码破解(WPA)

$
0
0

    PIN破解是近年来流行起来的wifi密码破解最有效的方式了。那什么是PIN?有什么用?
    这里要先说一个概念,WPS, WPS(Wifi Protected Setup)是一种免输密码和SSID的建议无线配置协议,它的好处是能够让支持WPS的设备,在第一次连接某个设备时,能够通过不用手工输入SSID和密码的方式,自动建立连接。
    因为方便,所以危险。如果我们知道一个路由的SSID和PIN,那么我们就可以光明正大的进到这个wifi网络中,即时我们不知道wifi的密码也没关系。而一旦我们知道PIN,那WPA2加密方式也形同虚设,我们可以通过上文说的Reaver软件来获取密码。
    PIN码的格式很简单, 八位十进制数,最后一位(第8位)为校验位(可根据前7位算出),验证时先检测前4位,如果一致则反馈一个信息,所以只需1万次就可完全扫描一遍前4位,前4位确定下来的话,只需再试1000次(接下来的3位),校验位可通过前7为算出,就可暴力验证出pin码。所以即时你不知道校验位怎么计算,那你最多尝试10000+1000+10次=11010次就可以获得PIN,从而获得wifi密码,是不是简单很多?
    先放图,这里为了方便演示,我以自己的路由为例。假设已经获得了PIN(14099281),这是我Tplink的PIN码。从路由界面获取。




(1)和上文一样,先扫描出可用的无线网络,不过这次就不用抓包了。因为你是直接PIN路由的,也不需要有设备在线。点击Reaver。
 

 

(2) 在命令栏添加 -p14099281,意思是从14099281开始PIN,这样的话,一下子就可以获得PIN码,正常情况下不知道的话,不用填,直接点击OK,然后等待密码出来就可以了。



   

   因为这里测试PIN已知,所以不到10秒钟,密码就出现了。 


  

 

 

另外还会保存一份在BT5 Root/tmp下



     

    这种方法获取wifi密码不言而喻是很高效的,理论上也是必破。 

    以上我是事先获知PIN进行演示,所以很快,但是正常情况下不知道PIN是多少,这时候怎么办?这里有一些诀窍。
    由于PIN是随机生成的一个8位10进制数。所以这是由各路由厂商生成的。腾达(Tenda)部分路由(C83A35,00B00C)是由MAC的前6位16进制数直接转化为7位10进制数外加一个检验码生成,算法弱爆了。所以可以直接通过Dec2Hex计算出来。  而像DLink对PIN错会有延迟,这样会导致PIN速度很慢,间接起到防PIN的作用,还有很多其他的,针对不同的路由可以去网上找相关资料。而有一些TPLink是直接带有防PIN功能的。当然这都是需要时间的,所以要有耐心。
    有一些所谓PIN优化的建议不要相信,PIN没有所谓优不优化,万一漏PIN了又要换个姿势,再来一次。 

    对于一些隐藏SSID的,可以通过BT5桌面上的FeedingBattle奶瓶来获取。      
    接下来说一下wifi被蹭的危害。
    当然善类只是蹭一下网络使用,省钱共享网络而已。顶多开下载导致网络稍卡而已。
    但是,如果带有恶意的话,在入侵你的wifi后就可以对你发动arp攻击。举个例子。

    我蹭了郭四娘的wifi,刚好四娘和韩寒在聊天。
    通过对四娘的电脑发送虚假的arp信息,我把自己的主机伪装成网关。这个过程是合理的,且无法被发现。因为802.11协议在下三层LAN中默认是互相信任的,因为只有在互相信任的前提下,你们才会在同一个局域网内。但是这个时候我是偷偷进入的,四娘和网关都不知道。
    四娘说:韩寒我恨你。
    作为伪装的网关,我先接到这条信息,然后我进行篡改:“韩寒我爱你”。接着发送给真正的网关,由网关发送给韩寒。
    韩寒回: 惊恐 
    然后我对网关发送虚假的arp信息,把自己伪装成四娘。就会接收到这个表情。再进行篡改:“ 害羞 ”。然后发送给真正的四娘。
    最后他们两个在一起了。
    这个例子很烂,但是说明了局域网被蹭的危害,当然黑客做的不只是这些。上面这个流程在实现上不难。只是做几个原始套接字的包,自己封装好TCP/IP的协议头进行发送就可以了。然后再对数据进行获取篡改就OK。其实这也是360的主动防御原理,自己主动给网关发送arp信息,防止被欺骗。

作者:u012884280 发表于2014/7/4 19:46:18 原文链接
阅读:95 评论:0 查看评论

Linux 开源车载系统 Automotive Grade Linux

$
0
0

Google、苹果以及微软相继宣布为汽车中控台推出车载系统,近日Linux基金会宣布推出可定制,开源的车载系统平台 Automotive Grade Linux。旨在成为未来车载系统开源标准平台。目前早期版本的AGL已提供下载。

=

Automotive Grade Linux系统支持的汽车厂商以及品牌有捷豹、路虎、本田、日产等,同时也支持ATS、富士通、哈曼、英特尔、LG、NEC、松下三星等科技企业的车内产品。该平台基于Tizen车载系统项目,系统包括控制空调、导航、中控屏幕、媒体回放等组件。

以下是几张初期界面截屏,不过可能根据厂家的定制完全不同。目前初版AGL已经可以提供下载。

Linux开源车载系统Automotive Grade Linux_天极yesky软件频道  =

=  =

= 

据Linux基金会自动化总经理Dan Cauchy称,该项目可满足需要汽车系统配备额外功能和能力的人群,推动产业快速发展。

Dropbox 开源其 Go 语言库 —— godropbox

$
0
0

Dropbox的成功大部分归功于Python,这个语言可以使我们快速迭代开发。然而,为了支持日益增长的用户量,我们的基础设施日渐成熟,这时 我们开始寻找一种更为高效的方式来改变系统规模。大约在一年前,我们作出决定,把对于性能要求很苛刻的后台部分从Python迁移到了Go语言,以提供更 好的并发支持和更快的运行速度。一个规模很小的工程师团队做出了大量的努力,这背后大约是200,000(二十万)行Go语言代码。此时,我们成功地把架 构的大部分迁移到了Go语言。

缺少构建大型系统的健壮的程序库,已经成为了反复出现阻碍我们开发进度的问题。这并不奇怪,因为Go语言还是一门十分年轻的语言。为了处理这个问 题,我们的团队开始构建各种各样的库,已提供更好的封装抽象,例如连接管理和MenCache客户端。我们非常兴奋的宣布我们开源了这些库,帮助更广大的 社区开发大型的产品系统。

作为这项努力的开端,我们包含了许多库。下面列举几个:

  • caching :提供建立caching层的通用抽象。

  • errors :强化了标准错误接口并且揭示出栈跟踪的信息

  • database/sqlbuilder : 允许开发者用可编程的方式生成sql语句。

  • memcache : 实现了一个全特性的memcache客户端库,支持连接池和灵活的 shading 。

  • net2 : 连接管理中加入了函数性功能。

  • (还有我个人最喜欢的,hash2,它包含了一个空间效率高,基于排列的连续哈希算法)

我们会在下面这个repo继续扩大这些库的规模:
https://github.com/dropbox/godropbox

为了确保我们持续投入努力到这些开源库中,我们承诺在我们内部也使用这个公开版本的repo。我们正在迁移内部系统,以直接使用这个repo中的库。这能确保所有的修改和优化都能在他们被提取内部系统之前对公众开放。

我们希望你能加入我们的社区,帮助我们把这些程序库变得更好!

原文链接: dropbox   翻译: 伯乐在线 - Hanbin
译文链接: http://blog.jobbole.com/71414/

centos网速特别慢的最佳解决办法 - 关闭ipv6

$
0
0

我使用了centOS,但是发现网速实在是卡得几乎不能上网,连百度都打不开,但是win却飞快。

后来想到偶然记得有一次看过一段话,说到关闭ipv6,测试来一下,果然有效,关闭来ipv6打开网速飞快。

关闭方法,在/etc/modprobe.d/dist.conf结尾添加

alias net-pf-10 off
alias ipv6 off


然后保存,重启centOS 即可(by default7#zbphp.com)。

作者:default7 发表于2014-6-14 0:09:14 原文链接
阅读:82 评论:0 查看评论

IPv6路由错误引起的怪异问题

$
0
0

我那Ubuntu源服务器(u.srt.cn),最近出现了一些很诡异的错误。
比如:之前设置的crontab同步linux.deepin.org的iso镜像,已经有一段时间没有成功过了,手工执行rsync,却发现连的似乎是自己,因为banner都出来“Thanks for using SRT ubuntu mirror.”了,但是ping linux.deepin.org 却又能得到正确的结果。
再比如之前我设置了用公钥可以ssh登录另外一台机器,但是现在却提示我输入密码。
排查了许久之后,发现了一个问题,很多(但不是全部)公网的域名虽然ping的时候对应了正确的ip,但是正在使用(比如上面的rsync或ssh)的时候,好像都指到本地了。
再后来,无意之中,发现用ping6 去ping那些有问题的域名,返回的都是 localhost(::1),于是终于知道怎么回事了:系统用IPv6去访问那些域名了,而那些域名的IPv6解析不正确。
为了验证这点,只需要把系统的IPv6彻底禁用再试试就成了,但是服务器也是ubuntu,而ubuntu最新的版本都已经把IPv6编译进内核了,不能通过rmmod来禁用IPv6了,要完全禁用需要修改grub的配置,给内核传参数才行(方法见 这里)。
这显然太麻烦了,其实暂时禁用一下还是有方便的办法的,就是这样:

echo 1 | sudo tee /proc/sys/net/ipv6/conf/all/disable_ipv6

执行完以后,可以执行

ip a | grep inet6

来确认已经禁用成功了,如果这命令没有输出就OK了。
然后现在再用ping6的话,会提示 connect: Network is unreachable
再去试试之前的rsync和ssh,果然都正常了。

现在我担心的是:IPv4地址不都已经枯竭了吗?接下来改怎么办呢?

解决win7以上系统 java只获取IPv6的问题

$
0
0

如果系统中开启了IPV6协议(比如window7),java网络编程经常会获取到IPv6的地址,这明显不是我们想要的结果,搜索发现很多蹩脚的做法是:禁止IPv6协议。其实查看官方文档有详细的说明:

java.net.preferIPv4Stack (default: false)

If IPv6 is available on the operating system the underlying native socket
will be an IPv6 socket. This allows Java(tm) applications to connect too, and
accept connections from, both IPv4 and IPv6 hosts.

If an application has a preference to only use IPv4 sockets then this
property can be set to true. The implication is that the application will not be
able to communicate with IPv6 hosts.

在实际的运用中有以下几种办法可以实现指定获取IPv4的地址:

1. 在java启动命令中增加一个属性配置:-Djava.net.preferIPv4Stack=true

1java -Djava.net.preferIPv4Stack=true  -cp  .;classes/ michael.net.TestInetAddress
2 
3java -Djava.net.preferIPv6Addresses=true  -cp  .;classes/ michael.net.TestInetAddress

2.在java程序里设置系统属性值如下:

1package  michael.net;
2 
3import  java.net.InetAddress;
4 
5/**
7 * @author Michael
8 */
9public  class  TestInetAddress {
10 
11    /**
12     * @param args
13     */
14    public  static  void  main(String[] args) throws  Exception {
15        // 注释指定系统属性值
16        // System.setProperty("java.net.preferIPv4Stack", "true");
17        // System.setProperty("java.net.preferIPv6Addresses", "true");
18        System.out.println("-------InetAddress.getLocalHost()");
19        InetAddress addr = InetAddress.getLocalHost();
20        System.out.println("HostName := "  + addr.getHostName());
21        System.out.println("HostAddress := "  + addr.getHostAddress());
22 
23        System.out.println("-------InetAddress.getByName(\"micmiu.com\")");
24        InetAddress addr2 = InetAddress.getByName("micmiu.com");
25        System.out.println("HostName := "  + addr2.getHostName());
26        System.out.println("HostAddress := "  + addr2.getHostAddress());
27 
28    }
29}

java.net.preferIPv4Stack=true 运行结果如下:

——-InetAddress.getLocalHost()
HostName := Michael-PC
HostAddress := 10.7.246.163
——-InetAddress.getByName(“micmiu.com”)
HostName := micmiu.com
HostAddress := 173.254.28.17

java.net.preferIPv6Addresses=true  运行结果如下:

——-InetAddress.getLocalHost()
HostName := Michael-PC
HostAddress := fe80:0:0:0:6518:85da:8690:16eb%13
——-InetAddress.getByName(“micmiu.com”)
HostName := micmiu.com
HostAddress := 173.254.28.17

3.tomcat Web容器

可在 catalina.bat 或者 catalina.sh 中增加如下环境变量即可:
SET CATALINA_OPTS=-Djava.net.preferIPv4Stack=true

原创文章,转载请注明: 转载自 micmiu – 软件开发+生活点滴http://www.micmiu.com/ ]

本文链接地址:  http://www.micmiu.com/lang/java/java-net-ipv4-ipv6/



已有 0人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



centos 6.2 关闭 IPV6

$
0
0

在现在的Linux上IPv6已经在默认安装下被支持,但是对于一些对IPv6支持不是很好的应用服务器来说,开启了IPv6反而会影响服务器的网络性能,毕竟现在的网络交换设备不是IPv6的。


如何判断系统是否开了ipv6?

首先可以使用命令 

lsmod | grep ipv6

ip6_tables             19392  0 
iptable_mangle          3283  1 
ipt_MASQUERADE          2400  3 
iptable_nat             6124  1 
nf_nat                 22788  2 ipt_MASQUERADE,iptable_nat
nf_conntrack_ipv4       9440  4 iptable_nat,nf_nat
nf_defrag_ipv4          1449  1 nf_conntrack_ipv4
nf_conntrack           79643  5 ipt_MASQUERADE,iptable_nat,nf_nat,nf_conntrack_ipv4,xt_state
ipt_REJECT              2349  2 
iptable_filter          2759  1 
ip_tables              17733  3 iptable_mangle,iptable_nat,iptable_filter

ipv6        234881 14


第二,也可以通过查看开启的端口

netstat -tln

tcp 0 0 0.0.0.0:8100 0.0.0.0:* LISTEN 
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 
tcp 0 0 0.0.0.0:843 0.0.0.0:* LISTEN 
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 
tcp 0 0 0.0.0.0:81 0.0.0.0:* LISTEN 
tcp 0 0 0.0.0.0:113 0.0.0.0:* LISTEN 
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 
tcp 0 0 :::8080 :::* LISTEN 
tcp 0 0 :::22 :::* LISTEN 
tcp 0 0 :::443 :::* LISTEN 

udp 0 0 0.0.0.0:68 0.0.0.0:* 
udp 0 0 0.0.0.0:837 0.0.0.0:* 
udp 0 0 0.0.0.0:840 0.0.0.0:* 
udp 0 0 0.0.0.0:111 0.0.0.0:* 
udp 0 0 0.0.0.0:631 0.0.0.0:* 


既然确定开启了之后,那怎样才能关闭呢?

我用的是centos6.2 没有找到/etc/modprobe.conf 文件,所以我就直接vi了一个,并加了两行

alias net-pf-10 off
alias ipv6 off

然后echo"NETWORKING_IPV6=NO" >> /etc/sysconfig/network

重启系统就好了。

作者:quanliyadan 发表于2013-10-5 14:01:02 原文链接
阅读:107 评论:0 查看评论

关于产品推荐的10个问题

$
0
0

许多零售商使用自动的产品推荐技术来增加他们的销售额和转化率。这些推荐的物品通常是商业站点上动态生成的,通常基于特定客户或一组客户的购买习惯。

Strands Recommender 是一个领先的动态生成产品推荐的提供者,我们最近采访了其市场经理 Trevor Legwinski, 关于产品推荐的概念和它对电子零售商的效果。

10 个关于产品推荐的问题

Practical eCommerce: 什么是产品推荐,它们在一个零售商的网站上如何工作?

Trevor Legwinski: “由于电子商务公司有很多产品,对最优的转化率来收,结构化地增加销售和交叉销售会非常困难。产品推荐通过学习你的网站访问者的个人和整体的行为等级来解决这个问题。我们自动地采集这个数据和商业化你的站点,将新访问者的行为和意图与转化过的数千购物者进行匹配。 对回访者我们展示基于他们的客户信息的产品,是我们的引擎随时间推移匿名地学习到的偏好,包括偏好类别,最爱的品牌,甚至特定的颜色和大小。”

PEC: 推荐通常出现在站点的什么位置?

Legwinski: “零售商通常把推荐放在他们的首页,产品细节页面和他们的购物车中。还有,我们已经开始在分类页面、搜索页面引入推荐,甚至创建了类似于Amazon.com的客户"个性化的登录页面"。”

PEC: 你们如何决定推荐那些产品?

Legwinski: “假设你的公司是一个我们的客户,我们的引擎匿名地检测到访问你的站点的客户基于他/她的购物行为创建一份客户简介。这些包括,例如,他们浏览的产品,搜索,添加到购物车和永久购买。对新的访问者我们展示在过去有相似行为的人们最有可能购买的商品。对回访者,我们访问他们的简介并展示与他们的偏好相关的产品。还有,我们提供易用的商业工具允许零售商基于他们的自身市场和商业需要过滤推荐结果。”

PEC: 零售商用于产品推荐的是什么样的结果? 你能从你的客户中引用一些实际的数据吗?

Legwinski: “我们与零售商几乎在每一个目录都有合作,从服装到鞋类,到电器图书,游戏,音乐,家具,和体育设备。他们平均能看到销售额有8到12个百分点的增长。别的更重要的影响推荐器的效果的因子是流量量级,推荐板块数量,推荐放置的位置,和目录大小。给你一些细节和把数字透视出来:一个户外设备客户使用我们的349美元每月的标准计划,年收入已经约有1百万美元,当前通过使用我们的服务还获得每月2000美元的销售额。我们的一个最大的服装零售商使用了我们的企业计划,已经获得了70 百万的回报,并正在获得200 000 每月的额外回报。”

PEC: 目标是提升基本转化率,平均订单大小还是都有?

Legwinski: “我们的推荐引擎的目标是都要增加平均订单大小和转化率。通过对新访问者和回访者提供个性化的体验,我们可以提高添加到购物车中的产品的数量的同时提高我们的客户的转化率水平。还有,使用个性化的邮件能够使现有的客户增加响应率。”

PEC:你们的推荐服务是部署在你们公司内吗?它如何与一个零售商的网站集成?

Legwinski: “Strands Recommender 是一个 SaaS 解决方案,意味着它完全由我们部署。这消除了很多的版本控制问题和部署复杂性。集成只需要三步操作:

  1. “零售商通过一个文件或一个链接上传他们的商品目录到我们的系统上。这只需要操作一次,因为我们会自动刷新目录。其格式与你将发送给一个比较购物引擎的相同的产品feed非常相似。这个feed帮助我们的引擎学习你的产品种类并保持与你的目录实时对应。我们也支持来自排行榜和评论提供者还有站点搜索提供者的数据feeds。
  2. “第二步是在你的站点上的用户行为,然后用于匿名地为每一个访问者构建profile。我们能够通过使用如“购买了那个的人也买了……”算法检测购物模式,相关的profile和别的更加复杂的模式。要做到这些,与Google统计相似的简单的跟踪代码贴到你的主页面模板的底部,产品细节,购物车,订单确认,和如可用的“愿望列表”和“最爱”页面。
  3. “最后一步是展现推荐给你的浏览者。我们的客户从一个预定义的推荐挂件集合中选择,能够快速复制和粘贴到电商网站的任何页面。这些挂件基于最佳的实践,通常对我们的大多数客户都工作得很好。系统也提供一个挂件编辑器,允许自定义外观,感觉和每个挂件的内容。通过这种方式,我们确保每个挂件都能完全地匹配你的站点和邮件模板。”

PEC: 你们的服务支持所有的购物车吗,本地部署的还是认证过的?

Legwinski: “是的。我们的JavaScript 和 API 安装使得它对于安装有我们的软件的任何购物车的零售商而言非常简单。(Our JavaScript or API install makes it very easy for merchants with any shopping cart to install our software. ) 我们已经进一步简化,已经为Miva Merchant 和 Magento stores 创建了购物车插件。

“我们最近开放了我们的 API 给开发者,允许他们创建购物车插件给他们最喜欢的购物车和在用户profile上创建有意思的功能和收集Strands 推荐系统的产品行为。我们非常兴奋地看到开发者团体拥抱个性化和创造一些有用的和很酷的插件。”

PEC: 要花多少钱?

Legwinski: “我们的计划从对小型零售商的每月$149起步到$999,对大型企业客户的要更高。推荐系统变得越来越实惠。过去,这项技术只有大型零售商负担得起每月数千元的花费。我们的目标已经使得我们的技术让小型的零售商可负担。”

PEC: 一个零售商必须有一定的大小吗,或者有一定数量的SKUs ,为使推荐器很好的工作?

Legwinski: “我们已经发现零售商有至少500个产品和每月至少15 000个独立访问者时会获得最大的利润。这并不意味着只有小的目录不能从推荐中获益,但是成功真正关键的是流量等级和产品搭配。推荐引擎需要一个确定等级的产品数据和有效的流量,我们也发现了5 000 个独立访问者是达到连续有影响效果的最低阀值。”

PEC: 零售商需要知道的关于产品推荐的别的还有什么?

Legwinski: “过去我们没有重点强调的一个有积极作用的推荐是邮件营销。我自己作为一个网购常客,我每天从不同的零售商那里收到营销邮件。但是是我沮丧的是很多的零售商仍然发送一个包含一个相同商品的标准的模板给每一个的客户。有一些要说给那些花时间为他们的客户个性化邮件并展示产品子集或他们可能关心的促销。它告诉客户,你是真正在试图服务他们,而且,更多的是,他们会从你额外的努力中买更多。“

-----------------------------------------------------------------------------

后记:在《Mahout in Action 》一书的第一章看到了这个注。觉得挺有意思。就翻译一下。越翻译越觉得是这个推荐引擎的营销广告。不过还是坚持译完了。水平很粗糙。profile这个词貌似很难用中文表达。

原文:http://www.practicalecommerce.com/articles/1942-10-Questions-on-Product-Recommendations
作者:ozhaohuafei 发表于2014/7/5 19:58:31 原文链接
阅读:56 评论:0 查看评论

Google Reader关闭一周年

$
0
0
一年前,Google关闭了受欢迎的RSS阅读器Google Reader。一年之后,你的阅读习惯是否发生了改变?部分人相信Google有先见之明,他们已经不用RSS阅读器了。然而还是有大量人继续在用,在Google Reader关闭之后,他们迁移到了各种替代,如Feedly、The Old Reader、Digg Reader等。截至2014年2月,Feedly的用户数从4百万增加到了1500万,有2.4万付费用户。还有部分人为了避免再依赖于Web服务商,而搭建了自己的RSS阅读器服务。RSS没有死,RSS是一种技术和服务,它不是可杀死的产品。






谷歌联合创始人:健康行业监管过严不宜进入

$
0
0

北京时间 7 月 6 日上午消息,谷歌创始人拉里·佩奇(Larry Page)和谢尔盖·布林(Sergey Brin)本周表示,谷歌不会成为一家健康类公司。

佩奇和布林接受了知名风投维诺德·科斯拉(Vinod Khosla)的访谈。科斯拉在访谈最后提出了这样的问题,即他们是否认为“谷歌将成为一家健康类公司,尤其考虑到健康行业比搜索和媒体行业规模更大”。

佩奇和布林对此表示明确否认。他们表示,尽管谷歌正在开发能检测糖尿病人血糖水平的隐形眼镜,但健康行业是一个得到严格监管的行业,参与这一行业将存在许多麻烦。尽管谷歌目前拥有一些健康类项目,但将限制这些项目的规模。布林指出,目前美国这一领域的监管障碍很高,因此不利于创业者。(维金)

本文链接

南车株洲所推出新型公交车

$
0
0

中国南车株洲电力机车研究所有限公司今天传出消息,由该公司为株洲市公交集团量身打造的一款绰号为“大黄蜂”的新型电动公交车,将于本月底批量投入株洲公交线路运行。

据介绍,与现在运营的混合动力公交车相比,此次交付给株洲市的新型电动公交车,是该公司研发的一款增程插电式公交车。这款车采用燃油动力与电动相结合,克服了纯电动车因电池容量不足导致续驶里程有限的缺陷:行驶过程中,电池快用完时,可通过自带的发动机对车辆进行即时“补电”;也可以在车辆首末 站“休息”间隙,外接常见的普通电源,10 分钟内快速充电。

经测算,增程插电式公交车续驶里程,是一般纯电动公交车的 2-3 倍。一台 12 米长的增程插电式公交车,其百公里油耗比此前的混合动力公交车下降 20%。

增程插电式新型电动公交车,较好地解决了纯电动汽车的“耐力”难题,是国家当前大力推广的一种新能源汽车,南车株洲所在国内率先推出这款产品。

此前在昆明、成都等城市运行情况来看,该款车百公里油耗与纯燃油动力公交车相比下降 40% 以上,每年节省燃油费超过 6.8 万元,每年可节省维护费 0.3 万元,在车辆全寿命周期内,相当于节省了一台新车的购置费用。

VIA 湖南日报

文章内容来自网络投稿,雷锋网登载此文为出于传递更多信息目的,作者观点不代表雷锋网
责任编辑: 谭樊马克

您可能也喜欢:

上门洗车App 竟然是块大肥肉!

电动公交车在韩国上路啦!全路面充电

用爱车控制你的爱巢温度

沃尔沃新型电动公交:极速充电

坐在车内控制你的住宅温度
无觅

什么样的中国人适合在日企工作

$
0
0
  日媒26日报道,日本作为世界经济强国,由于国内市场饱和,许多企业都走出了国门开拓海外市场,统计数据显示,如今入驻中国的日本企业已经超过1万家,为中国人才市场提供了大量的就业岗位,那么就职于日本企业的中国人又是如何评判日本企业的呢?什么样的中国人才适合在日企工作呢?对此,在中国生活了10年以上,熟知中国状况的日本作家山谷刚史在自己的博文中进行了介绍。

    1.日本企业很安定,适合期望安稳工作的人才

    对于日本人来说,外资企业通常都是有能者居之,而从中国人来看,外资企业相对更加安定,因此对于极力想往上晋升攀爬的中国人来说,对日本企业持有较多的不满,比如“企业的高层领导都是日本人,在日企工作看不到自己的未来,好的职位绝不会留给中国人,很小气”等等;另一方面,只求安稳工作生活的中国人则非常适合在日本企业工作。另外,日本企业通常会对泄露企业机密信息以及损害公司利益的职员处以写检讨书以及降级等处分,而在华日企是不会随意滥用的。

    2.日企福利待遇高于中国中小企业

    之前说到了日本企业比较安定,福利待遇完善则是其魅力点之一。尽管在日企工作会经常加班,但是企业都会支付相应的加班费;与此相对,中国的大多数中小企业不仅福利待遇差,不给加班费也是常有的事。

    3.日企职员没有个人隐私空间

    许多中国地方企业以及外资企业针对职员的办公桌都会安装隔板,这样做的目的是为了给职员提供一个小小的私人空间,不过在日本企业当中,办公桌安装隔板的现象则十分少见,日本企业主要通过有关社规来限制职员携带某些私人物品入社,同时还要求职员尽量不要给自己营造私人空间,不过大多数中国职员都喜欢私自下载软件,或者用电脑给手机充电等,对于这些现象,大多数日本企业还是允许的。

    4.通过各种方式表现出对母国的热爱

    在日本企业内,无论是日本上司自己选购,还是下属为日本上司选购,企业内都布满了日本品牌的产品,而且还有一个特点,那就是中国市场占有率越低的日本家电商品,被选购布置的几率越高,另外,所有职员对应的工资代发银行、保险以及指定医院等机构也全部是日本企业,从大多数中国职员来看,日本企业上司表现出的爱国心极为强烈。

    而对于喜欢日本的中国职员来说,一大好处就是可以在日本企业内吃到许多日本点心,如果喜欢日本动漫的话,日本上司还可能会利用去日本出差之便给职员带一些在售的动漫DVD等商品回来,另外,日本上司经常会去当地的日本寿司店,也可能带着喜欢日本的职员一同去,因为对于日本人来说,从心地里真正喜欢热爱日本的中国人是极其稀少的。

    另外,例如不守时、不打招呼、不排队打饭以及浪费食物等行为,在日本企业是严格禁止的,每年年末,日本企业都会举行忘年会,即便在平常表现的极为严肃的日本上司也会在忘年会上无拘无束,开怀畅饮。另外,在日本企业内,例如“谢谢”、“对不起”、“受您照顾了”等寒暄都是时常挂在嘴边的。总的来说,在日本企业内长时间工作并不断受到日本文化熏陶教育的中国人是很难再适应中国企业的工作氛围以及环境的。

    也就是说,从小就喜欢日本动漫、漫画、游戏(简称ACG)的极端热爱日本的中国人,即在中国人当中显得有些奇怪的人,是非常适合在日本企业工作的。
  青春就应该这样绽放   游戏测试:三国时期谁是你最好的兄弟!!   你不得不信的星座秘密

SVN下最高效打基线方法

$
0
0

作者:张克强    作者微博: 张克强-敏捷307

2014/7/6


方法一来自于我的一条微博:

组织级scm建一个名为controlled的目录,当项目某文档通过评审后,组织级scm从项目目录下找到那文档,复制到controlled目录下。请@scmeye软件配置管理社区 @E路向前--李忠利 @火星人陈勇 点评下这做法

针对方法一的点评如下

邱润HW:有什么东西是可以完全被控制的吗?假如没有,那就没意义,假如有,用目录这样做控制,应该不仅仅只是命个名字吧。 (3月27日 08:54)

火星人陈勇:有没有试验过用SVN?感觉SVN直接打一个版本号也不错吧,呵呵。反正我现在所有文档都在一个在线的SVN里边管理着,怕出现版本覆盖问题。 (3月27日 17:56)

scmroad配置管理之路:svn 中有个东西叫tag (3月27日 18:03)

王海鹏Seal:七种浪费之:搬运不创造价值。(3月27日 18:33)

缪刘俊:复制来了工作量[哈哈](3月27日 18:37)

stephen_wang_7971:补充:这里还包含Inventory的工作。同样不创造价值(3月27日 19:09)

方法二来自于@火星人陈勇 的点评:SVN版本号,由于SVN版本号是SVN自动打上的,所以我理解直接打一个版本号的意思就是记录下这个号,抑或是在commit的comments里说明下,回头直接查SVN的log即可。

方法三来自于@scmroad配置管理之路:tag,SVN的tag相当于复制到可读不可写的目录下,目录名称就是tag名称。与Clearcase的Label是不一样的。


以上讨论,大家可能看不明白。下面小结下

方法一:源自于配置管理常说的三库-开发库、受控库、产品库。这是古老配置管理工具遗留下来的做法,看似稳妥,实质效率底下,转移根本没有增值,反而带来一致性维护问题。

方法二:利用SVN自身的revision number。最高效的方法是在关键commit时说明打基线,或者说明关键要点,比如评审后修改再复核通过,比如评审通过。

方法二更加正式的做法是利用专门的表格记录关键点的Revision Number

方法三:利用Tag/Branch。拉出Tag和Branch后,对于基线(Tag),要保持只读,看似方便,其实有隐患;因为还有形态完全一样的分支(Branch)


本文所称SVN下最高效打基线方法是指上述方法二。

还在使用三库的朋友们,是时候改进了!这应当有2%的全局效率提升!

不服的朋友,欢迎来辩论!提出更好更高效的SVN基线方法!

作者:zhangmike 发表于2014/7/6 21:16:39 原文链接
阅读:0 评论:0 查看评论

【前端开发】25种提高网页加载速度的方法和技巧

$
0
0

尊重原创:http://blog.csdn.net/wxzking/article/details/4089384


您希望加快网页的加载速度吗?了解如何通过缩短加载时间来改善拨号上网用户的浏览体验,在某些情形下,加载时间最多可缩短 80%。下面介绍二十五中网速方法和技巧。

一、使用良好的结构
可扩展 HTML (XHTML) 具有许多优势,但是其缺点也很明显。XHTML 可能使您的页面更加符合标准,但是它大量使用标记(强制性的 <start> 和 <end> 标记),这意味着浏览器要下载更多代码。所以,事情都有两面性,尝试在您的网页中使用较少的 XHTML 代码,以减小页面大小。如果您确实不得不使用 XHTML,试着尽可能对它进行优化。

二、不要使布局超载
坚持简约原则:少即是多。页面中充斥着各种类型的图像、视频、广告等,这大大违背实用性原则。

三、不要使用图像来表示文本
使用图像表示文本的最常见示例就是在导航栏中。美观的按钮更加具有吸引力,但是它们的加载速度很慢。此外,图像仍然不能由搜索引擎直接索引,因此,使用图像进行导航不利于搜索引擎优化(search engine optimization,SEO)。当无需图像就可以通过大量 CSS 技巧创建漂亮的按钮时,绝不使用图像来表示文本。

四、检查cookie使用情况
设置一个较早的 expire 日期或者根本不设置 expire 日期,会缩短响应时间。要在 PHP 语言中设置 cookie 的 expire 日期,使用以下代码:

<?php 
 $expire = 2592000 + time(); 
 // Add 30 day’s to the current time 
 setcookie(userid, “123rrw3”, $expire);
?>

这段代码设置 cookie userid,并将 expire 日期设置为自当前日期之后 30 天。

五、不要包含不必要的 JavaScript 代码,尽可能将其外部化
应该明智地使用 JavaScript(仅在真正必要时才使用)并优化脚本的大小和速度。缩短 JavaScript 下载时间的另一种方式是使用外部文件,而不是包含脚本内联。这种方法也适用于 CSS,因为浏览器会缓存外部化的文本,而(在 HTML 页面自身中)以内联方式编码的 CSS 或 JavaScript 每次都会随 HTML 一起加载。

六、尽可能避免使用表格
表格被用作网页的主要构建块,但是作为页面布局元素,使用表格现在被认为是糟糕的做法。有时候,您必须使用表格(并且它们被认为是显示表格数据的出色实践)。如果是这样,明确地指定表格单元格、行和列的宽度和高度,否则,浏览器必须执行许多操作来计算如何显示它们,这会降低页面加载速度。

七、删除任何不必要的元素
可能这是所有技巧中最显而易见的一个,但是它也是最容易忘记的一个技巧。如果您真正需要在网页上放置许多内容,考虑将网页分为 2 个、3 个或更多的独立页面。

八、一些优化网页的技巧
可以使用许多方法来优化您的网页,包括压缩 JavaScript 文件,使用超文本传输协议(Hypertext Transfer Protocol,HTTP)压缩,以及设置图像大小。

九、压缩和缩小 JavaScript 文件
您可以使用 GNU zip (gzip) 来完成此任务,因为许多浏览器都支持这种压缩算法。另一种替代方法是缩小文件。这种方法删除代码中所有不必要的字符,比如制表符(tab)、新行和空格。它删除代码中的注释和空白,进一步缩小文件大小。外部和内部样式表都可以缩小。两种最流行的缩小工具是 JSMin 和 YUI Compressor。

十、使用 HTTP 压缩,并始终使用小写的 div 和类名
可以使用 HTTP 压缩来减少服务器与浏览器之间的通信量。可以在 Apache 中配置 HTTP 压缩(.htaccess 文件),或者可以将其包含到页面中(对于 PHP,可以使用一个 HTTP_ACCEPT_ENCODING 选项)。但是请注意:不是所有浏览器都支持压缩。即使是支持压缩的浏览器,压缩和解压缩都会加重处理器的负载。要在 Apache 中启用地毯式(blanket)压缩(即压缩所有文本和 HTML),使用以下命令:
AddOutputFilterByType DEFLATE text/html text/plain text/xml

另外,考虑一下您想要压缩的内容。图像、音乐和视频在创建时已经进行了压缩,因此您可以将压缩对象限制为 HTML、CSS 和 JavaScript 文件。另一种减少压缩工作的技巧是使用小写形式的 <div> 元素和类名。由于大小写敏感性,并且使用的是无损压缩,<header> 与 <Header> 不同,它们被压缩为两个不同的标记。

十一、设置图像大小
与表格单元格、行和列一样,当您未明确设置图像大小时,浏览器需要执行计算来显示图像,这会降低处理速度。

十二、将 CSS 图像映射用于装饰功能
使用图像映射代替多个图像,这是另一种缩短加载时间的方式,因为同时下载图像的各个独立部分能够加快整个页面的下载进度。或者,您可以使用某种名为 CSS sprites 的工具。CSS sprites 可帮助减少 HTTP 请求的数量。一个图像可以包含装饰或布置页面所需的所有图像元素。您使用 CSS 来选择(通过调用某些位置和维度)用于特定元素的映射。

十三、尽可能延迟脚本加载
一种提升页面下载速度的潜在方式是将脚本放在页面的底部,使页面加载更迅速。通常,浏览器只能(从同一个域)下载不超过两个并行对象,如果一个对象是一段 JavaScript 代码,那么在该脚本下载完之前,其他页面组件的下载将会暂停。如果将 JavaScript 代码放在页面底部,(在大多数情况下)它将在最后下载,这时所有其他组件都已下载完。

十四、按需加载 JavaScript 文件
要按需加载 JavaScript,使用 import() 函数。
import() 函数:    
function $import(src){
  var scriptElem = document.createElement('script');
  scriptElem.setAttribute('src',src);
  scriptElem.setAttribute('type','text/javascript');
  document.getElementsByTagName('head')[0].appendChild(scriptElem);
}

// import with a random query parameter to avoid caching
function $importNoCache(src){
  var ms = new Date().getTime().toString();
  var seed = "?" + ms; 
  $import(src + seed);
}

十五、验证函数加载
也可以验证一个函数是否被加载,如果没有,加载 JavaScript 文件。 
验证函数是否被加载:    
if (myfunction){
  // The function has been loaded
}
else{ // Function has not been loaded yet, so load the javascript.
  $import('http://www.yourfastsite.com/myfile.js');
}

注意:可以使用 defer 属性,但不是所有浏览器(包括 Firefox)都支持它。


十六、优化 CSS 文件
如果经过适当优化和维护,CSS 文件不一定很大。例如,具有很多独立类的 CSS 文件会影响下载速度。与 JavaScript 文件一样,您需要优化 CSS 文件,使其包含所需的所有内容,同时保持合理的大小。另外,使用外部文件代替内联定义来适应浏览器的缓存机制。

十七、使用内容分布网络
内容分布网络(Content-distribution network,CDN)是另一种缩短下载时间的好方法。当您将静态图像放在 Internet 上的许多服务器上时,用户能够从离他们最近的服务器下载这些图像。此外,大多数 CDN 都在快速服务器上运行,因此无论服务器的加载速度如何,其响应速度都比小型的超载服务器快。

十八、对资产使用多个域来增加连接
CDN 的另一个优势是它们是独立的域。因为您的浏览器将并发连接的数量限制到一个单一的域,因此无论何时加载一个页面,都很容易占满所有线程。因此,到其他资产的连接被延迟了。然而,您的浏览器能够打开新线程或到其他域的连接,这样,从另一个域加载的任何资产都可以与其他所有资产同时加载。

十九、在合适的时候使用 Google Gears
使用 Google Gears(参见 参考资料)是避免用户反复下载同一内容的另一种好方法。Gears 允许用户离线访问 Web 应用程序,但是也允许将页面元素持久化到用户的计算机上。因此,频繁加载但未进行更新的内容可以存储在 Gears 数据库中,该数据库是一个 SQLite3 关系数据库管理系统。对同一内容的所有 next 请求都可以从数据库(而不是服务器)直接加载。

二十、使用 PNG 格式的图像

Graphic Interchange Format (GIF) 和 Joint Photographic Experts Group (JPEG) 图像格式都已过时了:Portable Network Graphic (PNG) 是未来流行的格式。当然,您可以说 GIF 和 JPEG 已经消亡,或者 PNG 没有任何缺陷,但是所有事物都有各自的优缺点,PNG 以最佳的文件大小提供了出色的质量。因此,如果进行选择的话,应该尽可能使用 PNG 图像。

二十一、保持 Ajax 调用简短、准确
当统称为 Asynchronous JavaScript + XML (Ajax) 的技术在两年前出现时,这些技术为处理页面请求和响应提供了一种革命性方法。然而,拨号用户可能从来没机会体验其真正的优势,因为在许多情形下,Ajax 需要在浏览器与服务器之间大量通信。因此,如果您能够保持 Ajax 调用简短和准确,可以避免用户花费无止尽的时间来等待元素刷新或响应。

二十二、进行一次较大的 Ajax 调用并在本地处理客户机数据

如果不能进行简短的 Ajax 调用,或者如果这些调用不能提供期望的结果,可以考虑一种替代方法:进行一次大的 Ajax 调用来获取所需的一切内容,然后让客户机在本地处理数据。通过这种方式,客户机只需等待一次(获取传入的数据),但是在此之后(当浏览器与服务器之间没有必要通信时),处理速度将更快。当然,还有大量 Ajax 优化技术,本教程无法一一列出。

二十三、在沙箱中测试代码

还有一个经常被遗忘的常用技巧。尽管清醒的 Web 开发人员通常会在启动应用程序之前对其进行测试,但是有时候测试会使他们不那么重视维护任务,或者新功能添加得太快,并且未经过充分考虑或测试。结果,余下的脚本减缓了应用程序的速度。如果您添加一项新功能,可以首先在沙箱里(完全脱离了应用程序的其余部分)进行测试,查看它作为单个函数的行为。通过这种方式,您可以反复检查,并分析性能和响应时间,无需考虑 Web 应用程序的其余部分。然后,当新功能的行为符合预期时,可以将其引入到应用程序的其余部分中,运行其他测试,保证功能本身的行为符合预期。

二十四、分析站点代码
在许多场景中,自我反省是一个不错的建议。幸运的是,在开发过程中,我们可以使用工具来帮助反省,并尽可能客观地进行实践。像 JSLint(参见 参考资源)这样的工具的价值是无法衡量的,尽管其站点宣称它 “可能令您备受挫折”,因为它向您提供了所有的潜在代码缺陷,这些缺陷不但使调试更加困难,而且可能导致更长的响应时间。

二十五、检查孤立的文件和丢失的图像
检查孤立的文件和丢失的图像是一种明智之举。大部分 Web 开发人员都会检查错误的文件引用,但是这里仍然需要说明一下。丢失的文件容易引起各种问题,因为它们会导致 “The image/page cannot be displayed” 之类的错误消息。但是在网页速度优化方面,它们具有更大的缺陷:当浏览器寻找丢失的或孤立的文件时,它会消耗资源,这不可避免地会导致页面处理速度变慢。因此,请检查孤立或丢失的文件,包括拼写错误的文件名。

http://www.ibm.com/developerworks/cn/web/wa-speedweb/?S_TACT=105AGX52&S_CMP=tec-csdn



作者:a503921892 发表于2014-7-6 18:24:45 原文链接
阅读:83 评论:0 查看评论

《大型网站技术架构》 笔记 - 架构篇

$
0
0

第四章 瞬时响应:网站的高性能架构

4.1 网站性能测试

性能测试是性能优化的前提和基础,也是性能优化结果的检查和度量标准。

性能测试的指标有:响应时间、并发数、吞吐量、性能计数器。

网站性能优化的目的,除了改善用户体验的响应时间,还要尽量提升系统吞吐量,最大限度利用服务器资源。

4.2 Web 前端性能优化

主要手段有优化浏览器访问、使用反向代理、CDN加速等。

4.2.1 浏览器访问优化

  • 减少http请求:合并、压缩CSS、JS,合并图片, 使用Ajax局部刷新页面
  • 使用浏览器缓存:

    • Expires:告诉缓存器:相关副本在多长时间内是新鲜的。过了这个时间,缓存器就会向源服务器发送请求,检查文档是否被修改。
    • Cache-Control:
      > * max-age=[秒] — 执行缓存被认为是最新的最长时间。这个参数是基于请求时间的相对时间间隔,而不是绝对过期时间,[秒]是一个数字,单位是秒:从请求时间 开始到过期时间之间的秒数。
      > * s-maxage=[秒] — 类似于max-age属性,除了他应用于共享(如:代理服务器)缓存
      > * public — 标记认证内容也可以被缓存,一般来说: 经过HTTP认证才能访问的内容,输出是自动不可以缓存的;
      > * no-cache — 强制每次请求直接发送给源服务器,而不经过本地缓存版本的校验。这对于需要确认认证应用很有用(可以和public结合使用),或者严格要求使用最新数据 的应用(不惜牺牲使用缓存的所有好处);
      > * no-store — 强制缓存在任何情况下都不要保留任何副本
      > * must-revalidate — 告诉缓存必须遵循所有你给予副本的新鲜度的,HTTP允许缓存在某些特定情况下返回过期数据,指定了这个属性,你高速缓存,你希望严格的遵循你的规则。
      > * proxy-revalidate — 和 must-revalidate类似,除了他只对缓存代理服务器起作用。
    • Last-Modified/If-Modified-Since:第一次请求资源时,服务器在响应头里设置 Last-Modified 为资源的最后修改时间,浏览器第二次请求资源时,在请求头里带上上次响应的 Last-Modified 值,服务器检测到资源自此值后没有修改,则仅返回 304 响应头。
    • ETag/If-None-Match:服务器发送你所请求的数据的同时,发送数据的某种 hash (在 ETag 头信息中给出)。hash 的确定完全取决于服务器。当第二次请求相同的数据时,你需要在 If-None-Match 头信息中包含 ETag hash,如果数据没有改变,服务器将仅返回 304 状态代码。
  • 服务端启用GZip压缩

  • CSS 放在页面最上面,JS放在页面最下面:浏览器在下载完全部CSS之后才开始对整个页面进行渲染;在加载JS后立即执行,可能会阻塞页面,造成页面显示缓慢。
  • 减少Cookie传输:Cookie包含在每次请求和响应中,太大的Cookie会影响数据传输;对于静态资源,发送Cookie没有意义,可以对静态资源使用独立域名。
  • 对不同的静态资源使用独立域名:浏览器对同一个域同时访问的连接数是有限制的,增加不同的域可以加快资源加载。

4.3 应用服务器性能优化

主要手段有缓存、集群、异步等。

网站性能优化第一定律:优先考虑使用缓存优化性能。

缓存主要用来存放那些读写比很高、很少变化的数据。

任何可以晚点做的事情都应该晚点再做。

代码优化:

  • 多线程: 启动线程数=[任务执行时间/(任务执行时间-IO等待时间)]*CPU内核数。解决线程安全的主要手段:将对象设计为无状态对象、使用局部变量、并发访问资源时使用锁。
  • 资源复用
  • 恰当的数据结构
  • 关注垃圾回收:

4.5 小结

网站性能优化的主要工作是改善高并发下情况下的网站响应速度。

网站性能对最终用户而言是一种主观感受,性能优化的最终目的就是改善用户的体验,使他们感觉网站很快。离开这个目的,追求技术上的所谓高性能,是舍本逐末,没有多大意义。而用户体验的快或慢,可以通过技术手段改善,也可以通过优化交互体验改善。

第五章 万无一失:网站的高可用架构

5.2 高可用的网站架构

完整的高可用架构设计的主要目的是保证服务器硬件故障时服务依然可用、数据依然保存并能够被访问。

实现上述高可用架构的主要手段是数据和服务的冗余备份以及失效转移。

位于应用层和服务层的服务器为了应对高并发的访问请求,会通过负载均衡设备将一组服务器组成一个集群共同对外提供服务。

位于数据层的服务器需要在数据写入时进行数据同步复制,将数据写入多台服务器上,实现数据冗余备份。

5.3 高可用的应用

通过负载均衡进行无状态服务的失效转移。

Session 管理

  • Session 复制:简单,占用服务器内存、带宽资源。
  • Session 绑定:将同一IP或Cookie信息转发到特定的服务器,不满足高可用。
  • 利用Cookie 记录Session:简单可靠性高,支持应用服务器线性伸缩;受cookie大小限制,每次请求要传输cookie,影响性能,如果用户关闭cookie,访问会不正常。
  • Session 服务器:这种解决方案将应用服务器的状态分离,分为无状态的应用服务器和有状态的 session 服务器;应用服务器每次读写 sission,都访问 session 服务器。

5.4 高可用的服务

也是通过负载均衡和失效转移机制失效。

  • 分级管理:对服务进行分级管理,确保优先级高的服务;在部署上进行隔离,避免故障的连锁反应。
  • 超时设置:可避免请求长时间不能得到响应。
  • 异步调用:应用对服务的调用通过消息队列等异步方式完成,避免一个服务失败导致整个应用请求失败的情况。
  • 服务降级:有两种手段:拒绝服务和关闭关闭服务。

    • 拒绝服务:拒绝低优先级应用的调用,减少服务调用的并发数,确保核心应用正常使用;或者随机拒绝部分请求调用,节约资源,让一部分请求成功,避免要死大家一起死的惨剧。
    • 关闭服务:关闭部分不重要的服务,或者服务内部关闭部分不重要的功能,以节约系统开销,为重要的服务和功能让出资源。
  • 幂等性设计:服务层保证重复调用和调用一次产生的结果相同,即服务具有幂等性。服务重复调用是无法避免的。

5.5 高可用的数据

保证数据高可用的手段主要是数据备份和失效转移机制。

CAP 原理

CAP 原理认为一个提供数据服务的存储系统无法同时满足数据一致性(Consistency)、数据可用性(Availability)、分区耐受性(Partition Tolerence,系统具有跨网络分区的伸缩性)。

在大型网站中,通常会选择强化分布式系统的可用性(A)和伸缩性(P),在某种程度上放弃一致性(C)。

数据一致性又分为:

  • 数据强一致性:各个副本的数据在物理存储中总是一致的。
  • 数据用户一致性:各个副本的数据可能是不一致的,终端用户访问时,通过纠错和校验机制,可以确定一个一致的且正确的数据返回给用户。
  • 数据最终一致:物理存储的数据可能是不一致的,终端用户访问到的结果可能也是不一致的,但系统经过一段时间的自我修复和修正,数据最终会达到一致。

数据备份

数据备份分为冷备份和热备份,热备份又分为异步热备份和同步热备份。

在异步写入方式下,存储服务器分为主存储服务器(Master)和从存储服务器(Slave),应用程序通常只连接 Master,数据写入时,由 Master 的写代理操作模块将数据写入本机存储系统后立即返回写操作成功响应,然后通过异步线程将写操作数据同步到 Slave。

同步方式是指多份数据副本的写入操作同步完成,即应用程序收到数据服务系统的写成功响应时,多份数据的都已经写操作成功。

失效转移

失效转移操作由三个部分组成:失效确认、访问转移、数据恢复。

失效确认主要通过心跳检测和应用程序访问失败报告。

5.6 高可用网站的软件质量保证

  • 网站发布
  • 自动化测试
  • 预发布验证
  • 代码控制
  • 自动化发布
  • 灰度发布

5.7 网站运行监控

不允许没有监控的系统上线。

监控数据采集

用户行为日志:

  • 服务器端日志
  • 客户端浏览器日志

服务器性能监控。

运行数据报告。

监控管理

系统报警、失效转移、自动优雅降级。

第六章 永无止境:网站的伸缩性架构

6.1 网站架构的伸缩性设计

网站的伸缩性架构可分成两类:一类是根据功能进行物理分离实现伸缩,一类是单一功能通过集群实现伸缩。

当一头牛拉不动车的时候,不要去找一头更强壮的牛,而是用两头牛去拉车。

负载均衡的基础技术

  • HTTP 重定向负载均衡:采用 HTTP 重定向服务器,根据用户 HTTP 请求计算一台真实的 web 服务器地址,将该服务器地址写入 HTTP 重定向响应中返回给用户浏览器。需要两次访问才能完成一次请求,重定向服务器自身的处理能力有可能称为瓶颈。
  • DNS 域名解析负载均衡:在DNS 服务器中配置多个 A 记录,每次域名解析请求都会根据负载均衡算法计算一个不同的 IP 地址返回,这样 A 记录中配置的多个服务器就构成一个集群,并可以实现负载均衡。DNS 的解析有延迟。
  • 反向代理负载均衡:反向代理服务器需要配置双网卡和内部外部两套 IP 地址,工作在 HTTP 协议层,也叫应用层负载均衡。
  • IP 层负载均衡:在网络层通过修改请求目标的地址进行负责均衡。
  • 数据链路层负载均衡:在数据链路层修改 mac 地址进行负载均衡。在分发过程中不修改 IP 地址,只修改目的 mac 地址,通过配置真实物理服务器集群所有机器虚拟 IP 和负载均衡服务器 IP 地址一致,从而达到不修改数据包的源地址和目的地址就可以进行数据分发的目的。也称作直接路由(DR)。

负载均衡算法

  • 轮询(Round Robin,RR):所有请求被依次分发到每台应用服务器上。
  • 加权轮询(Weighted Round Robin,WRR):在轮询的基础上,按配置的权重将请求分发到每台服务器上。
  • 随机(Random):请求被随机分发到各个应用服务器上。
  • 最少连接(Least Connection):记录每个应用服务器正在处理的连接数,将新到的请求分发到最少连接的服务器上。
  • 源地址算列(Source Hashing):根据请求来源的 IP 地址进行分发请求,同一个 IP 总是分发到同一台服务器上。

第七章 随需应变:网站的可扩展性

  • 扩展性(Extensibility):指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力。表现在基础设施稳定不需要经常变更,应用之间少依赖和耦合,对需求变更可以敏捷响应。
  • 伸缩性(Scalability):指系统能够通过增加(减少)自身资源规模的方式增强(减少)自己计算处理事务的能力。这种增减是成比例的,就被称作线性伸缩。

设计网站可扩展架构的核心思想是模块化,并在此基础之上,降低模块间的耦合性,提供模块的复用性。

分层和分割是模块化设计的重要手段,模块之间以消息传递和依赖调用的方式聚合成一个完整的系统。

模块分布式部署以后具体的聚合方式主要有分布式消息队列和分布式服务。

大型网站分布式服务的需求与特点:

  • 服务的注册与发现
  • 服务调用
  • 负载均衡
  • 失效转移
  • 高效的远程通信
  • 整合异构系统
  • 对应用最少入侵
  • 版本管理
  • 实时监控

第八章 固若金汤:网站的安全架构

推荐算法之基于用户的协同过滤算法

$
0
0

协同过滤是推荐算法中最基本的算法,主要分为基于用户的协同过滤算法和基于物品的协同过滤算法。


这篇文章主要介绍基于用户的协同过滤算法,简单来说,要给用户u作推荐,那么只要找出那些和u之前的行为类似的用户,即和u比较像的用户,把他们的行为推荐给用户u即可。所以基于用户的系统过滤算法包括两个步骤:1)找到和目标用户兴趣相似的用户集合  2)找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户。


第一步的关键点在于计算用户之间的相似度,相似度一般通过Jaccard公式或者余弦相似度即可求得,及计算共有行为所占的比重(具体式子google就行,csdn插入公式不方便。。。),所以目前而言,计算用户相似度的复杂度是O(N*N), N为用户数量,在用户数比较大的网站中不实用,比如亚马逊用户数量肯定N>100000,那么这样的复杂度是不可接受的。 

第一步时间复杂度的改进方法:因为很多用户间其实相似度是为0的,如果看成是一个N*N的矩阵的话,肯定是个稀疏矩阵,那么我们其实没有必要浪费计算量在这些0上。我们可以建立物品到用户的倒查表,及可以根据物品找到所有对该物品有过行为的用户,然后遍历各物品,对一个物品然后找到对该物品有过行为的用户,然后计算这些用户间的行为相似度(共有行为+1,同时计算这些用户的行为数),最后计算两用户间的公有行为占各自行为的比重。

第一步计算相似度的改进方法:举个例子:如果两人都买过《新华辞典》,并不能说明这两人想像,因为这本书基本上人人都会买,而如果这两人都买过《机器学习》,那么我们可以肯定,这两人在这方面有相同的兴趣爱好,也就是说,越是对冷门物品有同样的行为,就越说明用户的相似性,即在计算用户相似性的时候,需要降低热门物品的影响(通过计算流行度来实现,然后用1/N(i)来计算公共行为比重,N(i)表示流行度,这样,流行度高的物品所占比重就比较低)


第二步则比较简单,选出K个和用户u最相似的用户,把他们喜欢过的物品并且用户u没有喜欢过的物品推荐给u即可。这里面K的选择非常重要。K越大,推荐的结果就越热门,流行度就越高,同时覆盖率越低,因为基本推荐的都是流行的物品

作者:wangyuquanliuli 发表于2014-7-6 23:41:28 原文链接
阅读:88 评论:0 查看评论

手机网站开发及手机中图片加速显示img的Canvas方法

$
0
0

    随着手机开发越来越流行,手机开发的很多框架也应运而生,比较好用的手机网站开发框架推荐如下:

    1、zeptojs,里面封装了很多手机特有方法,例如touch.js等等。和jquery用法差不多,很好上手!

API地址:http://zeptojs.com/#$.extend

    2、jquerymobile   演示地址:http://jquerymobile.com/

    3、angularjsmobile  演示地址:http://mobileangularui.com/

   

   最近做手机开发项目是,遇到图片加载很慢的情况,对这种情况,手机开发一般用canvas方法加载:

具体的canvas API 参见:http://javascript.ruanyifeng.com/htmlapi/canvas.html

    下面举例说明一个canvas的例子:


<li><canvas></canvas></li>

js动态加载图片和li

总共举例17张图片!

var total=17;
var zWin=$(window);
var render=function(){
   var padding=2;
   var winWidth=zWin.width();
   var picWidth=Math.floor((winWidth-padding*3)/4);
   var tmpl ='';
   for (var i=1;i<=totla;i++){
    var p=padding;
	var imgSrc='img/'+i+'.jpg';
	if(i%4==1){
	  p=0;
	}
	tmpl +='<li style="width:'+picWidth+'px;height:'+picWidth+'px;padding-left:'+p+'px;padding-top:'+padding+'px;"><canvas id="cvs_'+i+'"></canvas></li>';
	var imageObj = new Image();
	imageObj.index = i;
	image.Obj.onload = function(){
	   var cvs =$('#cvs_'+this.index)[0].getContext('2d');
	   cvs.width = this.width;
	   cvs.height=this.height;
	   cvs.drawImage(this,0,0);
	}
	imageObject.src=imgSrc;
   }

}
render();


   

   

作者:confidence68 发表于2014/7/7 17:37:21 原文链接
阅读:58 评论:0 查看评论

正确的使用dd进行磁盘读写速度测试

$
0
0

正确的使用dd进行磁盘读写速度测试
dd是Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换,所以可以用来测试硬盘的顺序读写能力。可以写文件,可以写裸设备。


dd语法
---------------------------------------------------------
功能说明:读取,转换并输出数据。
语  法:dd [bs=<字节数>][cbs=<字节数>][conv=<关键字>][count=<区块数>][ibs=<字节数>][if=<文件>][obs=<字节数>][of=<文件>][seek=<区块数>][skip=<区块数>][--help][--version]
补充说明:dd可从标准输入或文件读取数据,依指定的格式来转换数据,再输出到文件,设备或标准输出。
参  数:
  bs=<字节数>   将ibs( 输入)与obs(输出)设成指定的字节数。
  cbs=<字节数>   转换时,每次只转换指定的字节数。
  conv=<关键字>   指定文件转换的方式。
  count=<区块数>   仅读取指定的区块数。
  ibs=<字节数>   每次读取的字节数。
  if=<文件>   从文件读取。
  obs=<字节数>   每次输出的字节数。
  of=<文件>   输出到文件。
  seek=<区块数>   一开始输出时,跳过指定的区块数。
  skip=<区块数>   一开始读取时,跳过指定的区块数。
  --help   帮助。
  --version   显示版本信息。

dd常用参数详解
---------------------------------------------------------
if=xxx  从xxx读取,如if=/dev/zero,该设备无穷尽地提供0,(不产生读磁盘IO)
of=xxx  向xxx写出,可以写文件,可以写裸设备。如of=/dev/null,"黑洞",它等价于一个只写文件. 所有写入它的内容都会永远丢失. (不产生写磁盘IO)
bs=8k  每次读或写的大小,即一个块的大小。
count=xxx  读写块的总数量。

避免操作系统“写缓存”干扰测试成绩,使用sync、fsync、fdatasync
---------------------------------------------------------
关于sync、fsync、fdatasync请参考:http://elf8848.iteye.com/blog/2088986

dd bs=8k count=4k if=/dev/zero of=test.log conv=fsync
dd bs=8k count=4k if=/dev/zero of=test.log conv=fdatasync
dd bs=8k count=4k if=/dev/zero of=test.log oflag=dsync
dd bs=8k count=4k if=/dev/zero of=test.log  默认“写缓存”启作用
dd bs=8k count=4k if=/dev/zero of=test.log conv=sync   “写缓存”启作用
dd bs=8k count=4k if=/dev/zero of=test.log; sync   “写缓存”启作用

dd bs=8k count=4k if=/dev/zero of=test.log conv=fsync
加入这个参数后,dd命令执行到最后会真正执行一次“同步(sync)”操作,,这样算出来的时间才是比较符合实际使用结果的。conv=fsync表示把文件的“数据”和“metadata”都写入磁盘(metadata包括size、访问时间st_atime & st_mtime等等),因为文件的数据和metadata通常存在硬盘的不同地方,因此fsync至少需要两次IO写操作,fsync 与fdatasync相差不大。(重要,最有参考价值)

dd bs=8k count=4k if=/dev/zero of=test.log conv=fdatasync
加入这个参数后,dd命令执行到最后会真正执行一次“同步(sync)”操作,,这样算出来的时间才是比较符合实际使用结果的。conv=fdatasync表示只把文件的“数据”写入磁盘,fsync 与fdatasync相差不大。(重要,最有参考价值)

dd bs=8k count=4k if=/dev/zero of=test.log oflag=dsync
加入这个参数后,每次读取8k后就要先把这8k写入磁盘,然后再读取下面一个8k,一共重复4K次。这是最慢的一种方式了。

dd bs=8k count=4k if=/dev/zero of=test
没加关于操作系统“写缓存”的参数,默认“写缓存”启作用。dd先把数据写的操作系统“写缓存”,就完成了写操作。通常称为update的系统守护进程会周期性地(一般每隔30秒)调用sync函数,把“写缓存”中的数据刷入磁盘。因为“写缓存”起作用,你会测试出一个超级快的性能。
如:163840000 bytes (164 MB) copied, 0.742906 seconds, 221 MB/s

dd bs=8k count=4k if=/dev/zero of=test conv=sync 
conv=sync参数明确“写缓存”启作用,默认值就是conv=sync

dd bs=8k count=4k if=/dev/zero of=test; sync
与第1个完全一样,分号隔开的只是先后两个独立的命令。当sync命令准备开始往磁盘上真正写入数据的时候,前面dd命令已经把错误的“写入速度”值显示在屏幕上了。所以你还是得不到真正的写入速度。


裸设备测试
----------------------
1、裸设备到文件系统
dd if=/dev/rsd1b of=/backup/df1.dbf bs=8k skip=8 count=3841
2、文件系统到裸设备
dd if=/backup/df1.dbf of=/dev/rsd2b bs=8k seek=8
更多关于裸设备,请参考:http://czmmiao.iteye.com/blog/1748748



已有 0人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



分享9款最新实用的jQuery插件

$
0
0

今天要为大家分享9款12月份最新的jQuery/CSS3插件应用,插件包括焦点图、菜单、表单、图表等相关应用,一起来看看这些jQuery插件吧。

1、CSS3实现黑色带图标菜单导航

这款CSS3下拉菜单非常漂亮,菜单项带有小图标,且菜单整体色彩很不错。

在线演示   /     源码下载

2、jQuery下拉选择城市插件hhDrop

这款jQuery城市选择插件适用于买票系统的城市选择器,非常实用。

在线演示   /     源码下载

3、纯 CSS3 Lavalamp 菜单导航

这是一款纯CSS3实现的竖向动画菜单,鼠标移过菜单项时,红色飘带就会悬浮在菜单上并随着鼠标移动。

在线演示   /     源码下载

4、jQuery动画图标菜单导航插件imgbubbles

imgbubbles是一款基于jQuery的动画按钮菜单插件,鼠标滑过按钮时,按钮会有逐渐放大的特效,放大的速度可以自定义。

在线演示   /     源码下载

5、jQuery简易焦点图切换

这款jQuery焦点图十分简易,但是滑动效果十分平滑,是一款非常大气的jQuery焦点图。

在线演示   /     源码下载

6、jQuery向上滑动切换Tab选项卡

这是一款很有特色的jQuery Tab菜单插件,Tab切换时会出现很漂亮的切换动画。

在线演示   /     源码下载

7、CSS3制作导航与分享按钮

这是一款基于CSS3技术的菜单导航,该CSS3菜单的特点是有一款非常漂亮的分享按钮。

在线演示   /     源码下载

8、CSS3扁平化面包屑导航

上一款 CSS3圆形面包屑导航非常不错,今天的这款CSS3面包屑导航时扁平化样式的,更加清爽大气。

在线演示   /     源码下载

9、jQuery网上商城左侧分类下拉菜单

很多网上商城的商品种类繁多,商城会在左侧展示一个纵向下拉菜单,这款下拉菜单非常大气。

在线演示   /     源码下载

好了,以上就是8款让前端开发者爱不释手的最新jQuery/CSS3插件,由 网页素材大全网站收集整理,内容来自网络,欢迎收藏。

您可能也喜欢:

分享8款精彩的jQuery/CSS3动画特效

jQuery环形弹出分享按钮

jQuery / CSS3多功能下拉菜单 带分享和搜索功能

分享8款超牛的jQuery/CSS3应用及源代码

分享9款爱不释手的最新jQuery/CSS3插件
无觅
Viewing all 15843 articles
Browse latest View live