Category Archives: linux
android开发入门2:概念建立
上一记传送门:android开发入门 在第一记中,我(54chen)完成了一个完整的android开发环境,并且简单开发了一个Hello world android程序,在有了一个大概的开发过程的感觉之后,再进一步来学习android开发过程中需要接触到的常识。 android开发表皮几大块 1)extends Activity的Activity类很是奇异,其实这很像是mvc框架中的controller,继承Activity实现的类,它控制了所有的业务逻辑。 2)打开项目的文件夹,你会发现有许多的xml,其中,比较关键的一个是main.xml(layout目录下),它相当于mvc框架中的view,负责了软件界面哪个位置摆放一个什么样的控件,当然了,这些控件都是系统本身的,你可以想像成是html标签里的那些控件一样。 3)values目录下有settings.xml,是定义了一些字符串、颜色、数组等常量数据,有点像普通java项目里的属性文件(properties文件) 走进android项目中的layout/main.xml 开发android项目和开发web项目有几分神似,在main.xml里(也可能是xx.xml哦,main.xml是默认的第一个,在java代码里,会用R.layout.main来表示man.xml),包括了各种各样的基础控件(它们都是大小写敏感的,如果在xml里写错了,那一定会在运行过程中出现空指针错误),就像是web项目的前端一样,不过其复杂程度自然要比写html复杂。可能大部分入门android的时间都会花在这里。 <TextView and
android 开发入门
最近我(54chen)的兴趣都在android上,看到做的软件放到手持设备上的时候,找到了大学时光写delphi、gnome程序时久违的成就感。 下面是一些手记,这一系列的日志都将记录学习过程。 手记假设: 1.开发环境为ubuntu eclipse 2.你和我(54chen)一样有几年的java开发经验,对java基础不再进行描述 3.一开始就是以android2.2开始搞的,不排除后面的3出来,到时再另行通知 一 开发环境搭建 要开始开发Hello world,先要准备java环境(略),准备eclipse(略),再在eclipse上用software upadte安装上sdk的tools,再使用sdk的tools来安装platform(现在的最新版本是2.2),官方的文档和下载地址在http://developer.android.com/sdk/installing.html(洋文,被墙)。 因为是ubuntu 10.04,eclipse java都是可以apt-get install eclipse java6-sun-sdk(印象中是openjdk-6-jdk)来安装的。网上有许多切换openjdk到sunjdk的资料,不过提醒一点,这个openjdk似乎也一样可以用,如果切换成sunjdk的话,可能会遇到字体不正常的问题。 eclipse版本:3.5.2 Build id: M20100211-1343 第一步,要给eclipse安装一个android开发工具包 在eclipse的install new software上增加site:https://dl-s
国内互联网公司数据库访问层调查
在WEB开发中,数据库的数据读写和传输一向是瓶颈,在此基础上的解决方案基本都是数据库连接层的设计,一个公司数据库连接层的牛B与否可以标识这个公司的全局规划的“工艺水平”到达一个什么样了。下面的内容来自明查暗访,决无BS之意,旨在提供给需要统一规划整体架构的架构师一个帮助。 54chen声明:本文所有内容本着技术分享的原则,收集资料皆来自网络,绝不透露不该透露的内容,绝不隐藏不该隐藏的内容(阿弥托佛,资本家万岁)。 1.人人网 参考:http://ugc.renren.com/2009/12/28/renren-ice-problem/ 关键词:ice中间层,统一配置数据源,开发者不关心分库分表 与很多大型的网站一样,人人网的系统全部是由开源软件构建的。使用Nginx做前端接入,resin做容器,Memcached做通用 cache,MySQL做数据库,使用Linux操作系统。 除了上述的部分外,人人网还有一个与众不同的中间层。中间层以服务的形式存在,位于MySQL和resin中间,提供高并发低成本的数据访问层。 2.百度 参考:http://wenku.baidu.com/view/9daa2b8102d276a200292e9c.html 关键词:dbproxy,服务器都是flash卡,DBA与开发者都不关心分裤分表(半自动) 百度的dbproxy利器,将mysql的管理半自动化,HA等功能一应俱全,再加上SSD等硬件支持,性能相当不一般。 3.盛大-技术保障中心 参考:网友 关键词:无中间件,每个系统一个数据库,开发者严重关心分库分表 4.新浪 参考:网友 关键词:无
nginx.conf控制指定的代理ip和ip访问的设置手记
工作中有一次用到利用nginx的配置来让只有公司ip的访问才能打开指定的后台url,于是有了下面的记录。 在nginx中if很弱,http://www.nginxcn.com/doc/standard/httprewrite.html,基本上不能写太复杂的条件或者是嵌套。 因为公司我(54chen)网络的设置,过去打到服务器的ip有可能是几个ip,同时也有可能是代理的ip,所以在if判断的时候,可能有多个条件。 location /administrator { #log_format www_54chen_com '$remote_addr - $remote_user [$time_local] $request ' # '"$status" $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; # access_log /data/www.log www_54chen_com; set $fuck 0; if ($remote_addr = '1.1.1.1'){ set $fuck 1; } if ($remote_addr = …
用sphinx轻松搞定方便管理的多节点过亿级数据搜索
概述 来自俄罗斯的开源全文搜索引擎软件Sphinx,单一索引最大可包含1亿条记录,在1千万条记录情况下的查询速度为0.x秒(毫秒级),实测千万级数据在0.0X秒和0.00X秒占大多数。 Sphinx创建索引的速度为:创建100万条记录的索引只需3~4分钟,实测30W线上复杂的blog数据需要5分钟,创建1000万条记录的索引可以在50分钟内完成,实测时间比这个更长得多,而只包含最新10万条记录的增量索引,重建一次只需几十秒,实测十万条在一分钟不到的时间。 Sphinx 是一个基于 GPL 2 协议颁发的免费开源的全文搜索引擎.它是专门为更好的整合脚本语言和SQL数据库而设计的.当前内置的数据源支持直接从连接到的 MySQL 或 PostgreSQL 获取数据, 或者你可以使用 XML 通道结构(XML pipe mechanism , 一种基于 Sphinx 可识别的特殊xml格式的索引通道) 。 sphinx安装 安装见 用Sphinx快速搭建站内搜索功能 配置多节点协同工作 第一点,原理 在sphinx.conf中可以配置index段落里的local和agent两个参数,local = blog_1表示使用本地索引名为blog_1的索引,agent = 10.1.1.1:3312:blog_2表示使用10.1.1.1这个机器的3312端口上服务的blog_2索引。这两个参数均可在此段落中重复出现。 利用这两个参数,可进行节点与节点间的配置。如图1所示,一个searchd服务在接到请求时两种使用索引的示意图。 图1 一个searchd服务在接到请求时两种使用索引的示意图
近期分布式相关文章汇总
号外:http://url.cn/0ThU83 infoQ的线下技术活动Qclub本周六在知春路京仪大酒店举行,我给沙龙参会者分享来自人人网nuclear的开发经验以及如何运用在RIA上. 1.54chen解读NoSQL代表Dynamo 这篇文章颇费了心思从构思到成文,把dynamo原理描述得还算是清楚。 2.4月24日QCon现场直播流水帖 这篇是在QCon大会上现场记录的一些不算是太完整的笔记 4.java线程控制器代码分享-根据cpu情况决定线程运行数量和情况 一个根据cpu来执行的线程控制器实现,评论中有高人改进方案。 5.jdbc socketRead0 locked 记一个Mysql的不明bug 在开发nuclear过程中遇到的一个jdbc的bug 6.LinkIn基于Dynamo设计的系统:伏地魔(voldemort)设计中文文档[我是陈科学院译]-完稿 54chen翻译的一个来自国外SNS网站的分布式存储系统文档
用Sphinx快速搭建站内搜索功能
Sphinx[英] [sfɪŋks] [美] [sfɪŋks] 出自俄罗斯的开源全文搜索引擎软件Sphinx,单一索引最大可包含1亿条记录,在1千万条记录情况下的查询速度为0.x秒(毫秒级)。Sphinx创建索引的速度为:创建100万条记录的索引只需3~4分钟,创建1000万条记录的索引可以在50分钟内完成,而只包含最新10万条记录的增量索引,重建一次只需几十秒。 Sphinx 是一个基于 GPL 2 协议颁发的免费开源的全文搜索引擎.它是专门为更好的整合脚本语言和SQL数据库而设计的.当前内置的数据源支持直接从连接到的 MySQL 或 PostgreSQL 获取数据, 或者你可以使用 XML 通道结构(XML pipe mechanism , 一种基于 Sphinx 可识别的特殊xml格式的索引通道) 下面发出操作记录: 10106 wget http://www.coreseek.cn/uploads/csft/3.2/csft-3.2.12.tar.gz 10107 wget http://www.coreseek.cn/uploads/csft/3.2/mmseg-3.2.12.tar.gz 10109 tar -zxvf mmseg-3.2.12.tar.gz 10110 tar -zxvf csft-3.2.12.tar.gz 10111 cd …
54chen解读NoSQL代表Dynamo
本文已经首发于InfoQ中文站,版权所有,原文为《解读NoSQL技术代表之作Dynamo》,如需转载,请务必附带本声明,谢谢。 InfoQ中文站是一个面向中高端技术人员的在线独立社区,为Java、.NET、Ruby、SOA、敏捷、架构等领域提供及时而有深度的资讯、高端技术大会如QCon、免费迷你书下载如《架构师》等。 NoSQL在过去的一年里,逐渐已经成为了家喻户晓的东西,我(54chen)自从去年开始人人网的NoSQL系统Nuclear的研发以来,一直看着NoSQL越来越热,越来越引来大家的围观。受infoQ霍师傅之托,特作此文,一来作过去一年的总结,二来希望以平白的话语对NoSQL系统在国内的发展献绵薄之力。 1.我眼中的两种模式 NoSQL其实并不是什么妖魔鬼怪,相反的,NoSQL的真谛其实应该是Not Only SQL,其产生是在数据量和访问量的增大下,人为地去添加机器、切分数据到不同的机器,变得越来越困难,人力成本越来越高,于是便开始有了这样的项目,本意是提高数据存储的自动化程度,减少人为干预的时间,让负载更加均匀。在国际上,真正的代表之作有来自Google的 BigTable 和Amazon 的Dynamo,他们分别使用了不同的基本原理。 1.1 MapReduce 这是历史最久的一种模型,典型的代表是BigTable。Map表示映射,Reduce表示化简。MapReduce通过把对数据集的大规模操作分发给网络上的每个节点实现可靠性(Map);每个节点会周期性的把完成的工作和状态的更新报告回来(Reduce)。大多数分布式运算可以抽象为MapReduce操作。Ma
跨系统共享键盘鼠标利器分享:synergy
是这样的张总, ?在家里的电脑上按了CTRL+C,然后在公司的电脑上再按CTRL+V是。。。肯定不行的。即使同一篇文章也不行。不不,多贵的电脑都不行。 --题记 端午归来,特此总结,实现上述难题,靠一利器:synergy 此利器可打通mac\linux\windows任意两者的联系,使两个系统共享鼠标和键盘。下面以ubuntu 10.04与盗版windows XP为例。 首先,在ubuntu下面,建立服务端。 #sudo apt-get install synergy quicksynergy #quicksynergy 启动后如图所示: 只需要填写上下左右中的某一个位置修改成另一台机器的机器名,点击执行,常驻运行即可。 然后,在windows下面,安装客户端。 Synergy 1.3 Client 安装运行后如图: 输入Ubuntu机器的ip地址,点Start即可连上两机。 连上之后,可以撤掉在你办公桌面上的一个键盘,鼠标移动到哪个桌面上,键盘针对哪个系统输入,非常好用,还支持复制粘贴,对上班时候用两台电脑的同学非常适用。
ubuntu 10.04 LTS版本下的Empathy MSN群聊显示昵称方法
1.关系普及 Empathy是个托,python-papyon是个python实现的msn库,telepathy-butterfly是个完成msn功能的python客户端。 2.修改办法 sudo vim /usr/share/pyshared/papyon/conversation.py 查找 if message_type == 这个字符串 找到内容为: if message_type == 'text/plain': msg = ConversationMessage(unicode(message.body, message_encoding), TextFormat.parse(message_formatting), self.__last_received_msn_objects) try: display_name = message.get_header('P4-Context') 将if判断后try之前中间定义msg这一堆内容修改为如下: try: msg = ConversationMessage(unicode("["+message.get_header('P4-Context')+"]"+message.body, message_encoding), TextFormat.parse(message_formatt
SEARCH
Update
- 54chen Twitter memo 2012-02-12
- 人肉解析riak_admin join
- go语言安装手记
- 54chen Twitter memo 2012-02-05
- Riak Core说明
- maven库nexus拖不到jar包小记
- 服务接入层小结
- 54chen Twitter memo 2012-01-15
- nginx防hashdos模块使用帮助
- 54chen Twitter memo 2012-01-08
- nginx防hashdos模块释出
- 54chen Twitter memo 2012-01-01
- 水煮鱼杯2011年度不得不总结的十件事
- 年终攻击hashDos-哈希表多碰撞实现拒绝服务-破解办法
- 54chen Twitter memo 2011-12-25
