Press "Enter" to skip to content

w3cool Posts

Linux命令行测试网速

speedtest是一个用Python编写的轻量级Linux命令行工具,在Python2.4至3.4版本下均可运行。它基于Speedtest.net的基础架构来测量网络的上/下行速率。安装speedtest-cli很简单——只需要下载其Python脚本文件。 安装speedtest

然后

就得到了。

Leave a Comment

linux下测试磁盘的读写IO速度(IO物理测速)

hdparm命令 这是一个是用来获取ATA/IDE硬盘的参数的命令,也可以用来测试性能: 语法:hdparm [-CfghiIqtTvyYZ][-a <快取分区>][-A <0或1>][-c <I/O模式>][-d <0或1>][-k <0或1>][-K <0或1>][-m <分区数>][-n <0或1>][-p <PIO模式>][-P <分区数>][-r <0或1>][-S <时间>][-u <0或1>][-W <0或1>][-X <传输模式>][设备] PS:hdparm可检测,显示与设定IDE或SCSI硬盘的参数。 参数: -a<快取分区> 设定读取文件时,预先存入块区的分区数,若不加上<快取分区>选项,则显示目前的设定。 -A<0或1> 启动或关闭读取文件时的快取功能。…

Leave a Comment

长期混日子的程序员的特点

缺乏系统性分析问题和分解问题的能力 如果没法问别人,则会(感到)束手无策 遇到错误只会根据观察到的现象去网上找解决方案,例如复制错误信息,网上找到的解决方案只会照搬,如果不好使只好再找下一个 对于所使用的技术(比如编程语言)的态度是black box,或者black magic 用观察到的经验和自己总结的规律代替系统性的分析(或许因为缺乏必要的计算机知识 / 对框架的了解 / 数学) 强行积攒自己的一套 {问题: 解决办法} 工具箱,并且遇到问题跳过分析而盲目凭直觉(经验)进行修复,如果不好使立刻再试另一个 完全不了解数据结构、算法、操作系统、网络协议、编译器等基础知识,甚至忽略其重要性 对于未知(但是成熟)的技术有着本能的抗拒和不自信 不能对各种框架、设计、模式、架构的概念和本质融会贯通 以技术名词为炫耀的资本 / 崇拜未知技术名词 心里认为自己是XX程序员 (c++, j2ee, node,…

Leave a Comment

REST API Style 接口设计

REST(Representational State Transfer)是一种基于HTTP协议的数据交换方法。按照RESTful架构可以充分的利用HTTP协议带给我们的各种功能,算是对HTTP协议使用的最佳实践,还有一点就是可以使软件架构设计更加清晰,可维护性更好。 架构特性: 幂等性:幂等性(Idempotence)本身是一个数学概念,在HTTP/1.1规范中幂等性的定义是:

翻译过来大意就是如果方法调用一次和多次产生额外的效果是相同的,它就具有幂等性。 例子:在HTTP中使用GET方法通常用于从服务器获取资源,无论调用多少次产生的额外效果都是从服务器获取资源,所以GET具有幂等性;而POST方法通常用于提交数据在服务器上创建一个资源,由于最终创建的结果每次都是不同的,所以POST不具有幂等性;但是PUT方法却是幂等的,因为每次调用产生的效果都是对资源进行更新。 安全方法:安全方法是指不修改资源的 HTTP 方法。譬如,当使用 GET 或者 HEAD 作为资源 URL,都必须不去改变资源。然而,这并不全准确。意思是:它不改变资源的 表示形式。对于安全方法,它仍然可能改变服务器上的内容或资源,但这必须不导致不同的表现形式。 有关HTTP常用方法幂等性和安全性如下:   RESTful API设计规则:1. URI 应该将API部署在专用域名之下:https://api.example.com 不用大写 用中杠-不用下杠_;…

Leave a Comment

PaaS and CloudFoundry

一、架构及模块 从总体地看,CloudFoundry的架构如下: 这个架构图以及下文所用到的各模块架构图均来自Pat的PPT。从上图能够看到CloudFoundry主要有以下几大组件组成: 1、 Router:顾名思义,Router组件在CloudFoundry中是对所有进来的Request进行路由。进入Router的request主要有两类:首先是来自VMCClient或者STS的,由CloudFoundry使用者发出的,管理型指令。 例如:列出你所有apps的vmcapps,提交一个apps等等。这类request会被路由到AppLife Management组件,又叫CloudController组件去;第二类是外界对你所部署的apps访问的request。这部份requests 会被路由到Appexecution,又或者叫做DEAs的组件去。所有进入CloudFoundry系统的requests都会经过Router组件, 看到这里可能会有朋友会担心Router成为单点,从而成为整个云的瓶颈。 但是CloudFoundry作为云系统,其设计的核心就是去单点依赖,组件平行扩充,且可替代的以保证扩展性,这是CloudFoundry,甚 至所有云计算系统的设计原则,后文会讨论CloudFoundry如何做到这点,目前只要知道,系统可以部署多个Routers共同处理进来的 requests,但是Router上层的LoadBalance不在CloudFoundry的实现范围,CloudFoundry只保证所有的 request是无状态的,这样就使上层均衡附载选择面非常非常大了,例如可以通过DNS做,也可以部署硬件的LoadBalancer,或者简单点,弄 台ngnix作负载均衡器,都是可行的。 Router组件,目前版本是对nginx的一个简单封装。熟悉ngnix的朋友应该知道,它可以一个套接字文件(.sock文件)作为输入输出。所有安装CloudFoundry的Router组件服务器都会安装一个nginx,其ngnix.conf文件有以下配置: 从整体的来看,Router组件的结构如下: 外界httprequest进入CloudFoundry服务器,nginx会首先接到request,nginx通过sock与 router.rb进行交互,于是真正处理请求的是Router组件。router.rb里面根据传入的url,用户名密码等,进行逻辑判断,到 CloudController组件或者DEA组件取数据并且返通过与niginx连接的.sock文件返回。 router.rb是对nginx进行了逻辑封装。熟悉CloudFoundry的朋友肯定知道,CloudFoundry给每一个app分配了一 个url访问,如果直接使用VMware所托管的CloudFoundry.com的话,那你的app的url可能就是 xxx.cloudfoundry.com,无论通过命令给你的app扩展了多少个instances,都是从这个url访问的,这里面的url转换路由 就是由router.rb实现的。 2、DEA(Droplet Execution…

Leave a Comment

PaaS and OpenShift

一般我们传统开发,折腾服务器在所难免。选择时得考虑CPU大小,内存多少,带宽如何,以及有什么操作系统; 然后还得在上面安装自己需要的语言、框架、服务,Web 服务器(虽然这一般都有默认安装),应用服务器,以及其它中间件之类的;再有就是登录上去然后发布、管理应用,维护应用和服务器本身。 如果只有少量应用或服务器,而且应用更新也不是很频繁;或者我们有专门的服务器管理员/运维人员(用专业的部署管理工具),我们在服务器上折腾也没什么。 但一旦场景复杂起来,比如虚拟机/应用很多,或者应用本身更新比较频繁,重复操作就会增多,我们的人力成本就自然而然的提高。 一种解决方案。 在追求“简洁、快速,自动化”的今天,选择PaaS不失为一个很好的选择。PaaS是Platform-as-a-Service的缩写,意思是平台即服务。从最终开发者(用户)的角度来说,就是“把服务器交出来”;而从供应商的角度,就是“把平台交出来“。 也就是说所有与服务器相关的操作,基本上用户都不必关心,PaaS平台都已经帮我们想好了。平台提供的运行时、服务中间件、开发工具等一般都能满足我们的要求,用户只专心编写与应用直接相关的应用代码就行了。不用担心负载均衡、缓存、扩展,把系统管理和运维忘了吧! —————————————————————– 当然了,任何事都有利有弊,使用PaaS需要一定成本。举几个例子: 你需要熟悉你所使用的PaaS平台。即使你永远不会对其进行二次开发,但也不能对其完全不了解,至少每个PaaS平台所提供的开发工具你是要学会的。毕竟PaaS平台改变了用户的编程习惯,而改变习惯有时成本是很高的。 一定程度信任你所使用的PaaS平台。代码、数据、应用安全怎样,应用规模比较大时性能能否满足要求,平台是否够稳定,这都需要你自己体验之后才能知道。 被绑定的危险。出于安全等因素,并不是所有PaaS平台所提供的运行时、服务中间件等都是标准的,而是经过修改的。即使不考虑这一点,对于应用开发中常用的功能,大多数PaaS平台都喜欢以扩展服务的方式提供给开发者选择,而这些扩展服务往往会导致PaaS平台的专有性,移植起来不容易。无论是应用的迁入、迁出,还是更改另一PaaS供应商,你都免不了要更改代码。 和上面的有点重复。你能否容忍将你的代码托管在第三方,公司防火墙外? 不成熟。 对于用户来说,服务器不可见,提供方便的同时也带来了限制。按照供应商服提供的平台“规范”来做,你确实可以减少很多繁琐、重复的工作,但一旦你想按自己的特定需求、不按“规矩”办事,那无疑你会遇到很大的阻力,毕竟服务器对你来说不可见了,你不能在上面进行任何操作。 对OpenShift简单介绍 Openshift.com 是红帽线上的 PaaS 平台。OpenShift 允许个人开发者或开发团队在此平台上创建、测试、部署以及运行应用。 从代码上,OpenShift 平台主要涉及五个项目: *…

Leave a Comment

Sayso说悦-简介

Sayso说悦 SaySo说悦是一种文本到语音的朗读服务, 他可以灵活的整合到您的网站和app, 无需电脑或手机安装任何软件即可实现文本到语音(Text-to-Speech), 按需调用, 并支持自由扩展. 资讯文字到语音朗读 方便整合,嵌入到文章页,朗读整篇文章,适合新闻或资讯网站 演示地址:http://sayso.w3cool.com/wiki/doc/demo

Leave a Comment