特色

Web 开发笔记

作为分类目录的一个补充,在这里按照功能类别对 Web 开发中的一点心得和笔记作一个索引。其中部分是根据自己在查找网络资料时找到的内容的整理与演绎,在此感谢所有那些无私分享经验的人们。

HTML & CSS
JavaScript & jQuery & JSON & AngularJS
Python
PHP
SQL
XML
正则表达式
特色

.NET 开发笔记

作为分类目录的一个补充,在这里按照功能类别对 .NET 开发中的一点心得和笔记作一个索引。其中部分是根据自己在查找网络资料时找到的内容的整理与演绎,在此感谢所有那些无私分享经验的人们。

Entity Framework

Web

特色

Java 开发笔记

作为分类目录的一个补充,在这里按照功能类别对 Java 开发中的一点心得和笔记作一个索引。其中部分是根据自己在查找网络资料时找到的内容的整理与演绎,在此感谢所有那些无私分享经验的人们。

基本

线程

垃圾回收

其他

特色

Android 开发笔记

作为分类目录的一个补充,在这里按照功能类别对Android开发中的一点心得和笔记作一个索引。其中部分是根据自己在查找网络资料时找到的内容的整理与演绎,在此感谢所有那些无私分享经验的人们。

基本

控件使用

资源调用

声音和图像

用户界面

活动 线程 服务

设备控制

SQLite

Android Studio

其他

特色

Android中文开发文档目录

开发者指南

 

API 指南

  • 简介
    • 应用程序基础
    • 设备兼容性
    • 系统权限
  • 应用程序组件
    • 意图与意图过滤器
    • 活动
    • 服务
    • 内容提供者
    • 应用程序小工具
    • 进程与线程
  • 应用程序资源
    • 概览
    • 提供资源
    • 访问资源
    • 处理运行中的改变
    • 本地化
    •  资源类型
      • 动画
      • 色彩状态列表
      • 可绘制资源
      • 布局
      • 菜单
      • 字符串
      • 风格
      • 更多类型
  • 应用程序 Manifest
    • <action>
    • <activity>
    • <activity-alias>
    • <application>
    • <category>
    • <compatible-screens>
    • <data>
    • <grant-uri-permission>
    • <instrumentation>
    • <intent-filter>
    • <manifest>
    • <meta-data>
    • <path-permission>
    • <permission>
    • <permission-group>
    • <permission-tree>
    • <provider>
    • <receiver>
    • <service>
    • <supports-gl-texture>
    • <supports-screens>
    • <uses-configuration>
    • <uses-feature>
    • <uses-library>
    • <uses-permission>
    • <uses-permission-sdk-23>
    • <uses-sdk>
  • 用户界面
    • 概览
    • 布局
    • 输入控件
    • 输入事件
    • 菜单
    • 设置
    • 对话框
    • 通知
    • Toasts 通知
    • 搜索
    • 拖拽与释放
    • 可访问性
    • 风格与主题
    • 自定义组件
  • 动画与图形
  • 计算
  • 媒体与相机
  • 位置与传感器
  • 连接功能
  • 文本与输入
  • 数据存储
  • 管理
  • Web 应用程序
  • 最佳实践

 

Android 设计

 

更新日期:2015-11-15

说明:限于时间、精力和个人水平,翻译进度有限,也可能存在不少谬误之处,欢迎指正。另外由于Android官方开发文档常常会随着SDK版本更新而更新,可能不能马上更新至最新版的翻译(甚至需要等待较长时间,目前以完成第一遍全部文档的翻译为最优先事项)。翻译的发布原则是一旦开始新的文章翻译随即发布,之后逐步完善,因此如果通过RSS订阅本博客,可能会收到仅有文首的翻译文章。

关于进行Android开发文档翻译的初衷,可以参见这篇文章,另外还有关于翻译的几点说明。值得高兴的是,似乎最近Android开发者网站已经能够在大陆被正常访问了(笑)。

本作品采用知识共享 署名-非商业性使用-禁止演绎 3.0 Unported许可协议进行许可。

从卡西欧(Casio)电子辞典 EX-word 聊起

截至上个月,卡西欧宣布其在世界范围内累计卖出了3000万台电子辞典,颇有得意。自己作为卡西欧电子辞典长达十年的爱用者,不免也想借此机会说上几句。

与其说是卡西欧电子辞典的爱用者,不如说是电子辞典爱好者,当然,在此之前,首先是辞典爱好者。

一直在进入大学之前,自己的理想是做一名翻译,斟句酌字,享受翻译这种再创作过程中需要不断反复琢磨推敲的匠心。工欲善其事,必先利其器。对于翻译而言,词典便是工具。有了趁手的工具,才能事半功倍,一展身手。

最初自然是纸质词典。学习的时候翻查、见到生词的时候翻查、闲来无事的时候翻查,好的词典,连前言和凡例都能读得乐在其中,一本书很快就被翻烂,留下的只有倒背如流的字母表顺,和一手能在数秒内查到词条的本领。不多久,纸质词典便不再能满足自己。最大的问题是厚重。随身带着一本就已是相当的负担,更遑论包里始终备着两三本同类或不同类的词典备考。

文曲星是当年电子词典的代名词。从最初三行屏幕纽扣电池供电的 PC 系列袖珍机型,到之后锂电池充电支持从电脑上下载资料的 NC 系列,文曲星内置的来路不明的英汉汉英虽然现在看来可谓简陋,但也已是从无到有,零的突破。也许是受限于技术与成本,作为工具,文曲星算不上趁手,词典内容匮乏质量勉强、屏幕过小、反应较慢、功能不便……五花八门的多媒体和游戏功能倒是紧跟潮流,满足了没有手机的时代的移动娱乐需求。至于金远见为文曲星开发的 GVBASIC 和 GvMaker 编程环境,更是直接把自己领进了软件开发的世界,不过这是另话。可惜,现在的文曲星,已然成为了靠低端廉价产品维持生计的边缘厂商,连官网都只留下了一股山寨作坊味。

不再满足于文曲星之后,目光投向了另一家宣传铺天盖地的电子词典厂商——好易通。结果,好易通当时的主打型号,所谓牛津王,的水准着实让人失望。收录了 OALD 固然是一大进步,作为电子词典本身的易用性却低得惊人。受限于缓慢的处理器速度,等待系统反应是家常便饭,查词的速度不但不比手查纸质版快多少,还要忍受因此带来的错误输入与不得不经常修改带来的不快。然而令人匪夷所思的是,按照自己的使用强度,这样一台低性能的电子词典在两节7号电池的供电下竟然只能使用一周多。于是,在消耗了几组电池之后,这台好易通被不可避免地打入了冷宫。而这便是与卡西欧电子辞典相遇的契机。

当年,在捧着电子词典背完了大学四六级词汇后(很高兴认识了 abandon),学习一门新语言的想法也就顺势而生。综合考虑之后,第二外语决定选择日语。当时市面上,唯一收录了足够多权威可靠日文词典的电子辞典仅有卡西欧的 EV-SP3900,选择它也就顺理成章。

毫不夸张地讲,这台电子辞典改变了自己的人生轨迹。往小了看,在它的帮助下,经过十年数千小时的付出,如今的自己已经能在一定程度上基本自由地实现日语的运用。往大了看,这使自己得以接触到大量来自日本的/由日语写成的信息、更全面地了解这个世界的模样、更高效地在互联网上获取高质量的信息、体验到很多优秀的日文原著与艺术作品、在生活中结识不少日本友人、畅通无阻的日本自由行、参与一些需要日文翻译的活动、翻译出版若干本日文译作……看到差距,而后知前进的方向。在认识并了解了日本,这一老牌资本主义发达国家的历史与现状,优点与不足后,对自己生活的国家与社会存在的种种问题,才能有更深刻的理解。很幸运,自己得以借助日语(当然,和英语),看了更多,想了更多,然后意识到自己还看得太少,时而想得太多,时而又想得太少。

卡西欧的电子辞典子品牌名为 EX-word,不过该名称仅用于日本本土市场,在中国大陆,机身商标仍以 CASIO 标识。它最大的特征为纯粹的电子辞典。除了时钟、日历、便笺等若干基础功能,EX-word 就几乎只是辞典。一组在学界享有盛誉的权威词典与辞典,辅以数十上百本相关参考书,被集合在可随身携带的机身中,曾经外语学习者和翻译工作者案几上如山的厚本,以一个七寸方盒的形式呈现。仅此而已。即使在智能手机与互联网发达的现在,网络或手机应用提供的词典质量依然勉强,准确性、可靠性与实用性和数年一剑的辞书相比仍有差距,这也是 EX-word 存在的最大价值。以当前国内版本为例,论英语,新牛津英语大辞典、韦氏英语大学词典、朗文当代高级英语词典、牛津高阶英汉双解词典、英汉大词典,足以充分满足苛刻要求;论日语,大辞林、新明解国语辞典、日汉大辞典也都是日文辞书中的代表者;德语方面,尽管查得率和易用性方面还有进步的空间,朗氏德汉双解大词典也算是国内出版的少数几本质量较高的德语词典……只有首先确保可靠性,工具的实用性才能得以发挥。

自然,仅凭词典辞书的收录还无法打动用户。之所以如此推崇卡西欧,是因为它试图把电子辞典做到极致。

  • 长续航设计。两节五号电池可以提供数月的高频率使用(标称中等屏幕亮度下180小时),远远领先同类产品,且不用担心电池寿命衰减及因此带来的额外替换成本。从五到十年甚至更久的使用寿命来看,这个设计显然更人性化
  • 较快的启动速度。配合合盖关机、开盖启动的设计,随查随用,十分便捷
  • 较快的查词速度。虽然还是略慢于输入速度,但速度稳定无意外延迟,且可以一次性输入所有字符不必等待反应
  • 大尺寸高分辨率触摸屏。曾经在移动设备中领先的屏幕尺寸与分辨率(5寸480×320点阵),能够同屏显示更多信息。为了提高表现力,EX-word 近年升级为了彩色显示屏。不过色彩相当朴素。虽然如今规格已落后时代,却不失为显示效果与省电之间的一种平衡
  • 多功能副触摸屏(2015年起取消)。根据上下文显示相关功能,减少不必要的按键操作,有效提高操作速度。取消之后,包括查看上一词条/下一词条等功能都从原先的点击一次屏幕,变为了组合键操作,较为不便。甚至因为例句/短语功能键无处显示,词条的例句只能与释义混合显示,降低了可读性
  • 充分的查询方式与跳查功能。且在当时,得益于较强的性能,跳查的层数和速度也令人满意
  • 丰富的扩展读物。尤其是日版 EX-word 包含大量常识、人文、历史等方面的通识教育读本,作为日常阅读也颇为有趣

仅凭以上这些,EX-word 可称为是高效可靠的电子词典,然而,它近年绕了不少弯路,新引入了不少易用性问题,原先的优势逐渐丢失。

  • 改恶的按键布局与手感。在过往型号上,常用功能基本都位于最合适的位置,然而2015年起副触摸屏取消,键盘布局也因此大幅调整,包括输入和返回在内的不少常用按键的位置改得匪夷所思,完全不在普通人手指可以轻松触及之处,增加了操作负担。同时,2016年按键由传统的橡胶按键改成了单轴型按键,号称手感提升。或许是习惯问题,新按键的手感令人抓狂,误操作率直线上升
  • 趋于平庸的做工。当初金属 A 面(顶面)外壳的设计兼顾了质感与功能,给人留下了好印象。或许是为了压缩成本,这些年 A 面改为了塑料外壳,做工下降,连外形都变得平庸。事实上,日本企业的消费级电子产品这些年几乎都存在做工下降的问题,当年的高品质不再,情况堪忧

除此之外,EX-word 自然也存在很多不思进取和敷衍了事。

  • 基础功能停滞不前。每年的新型号基本只是换汤不换药,内在没有改变,却只想着新增些花哨功能,试图从电子辞典转型为学习机,系统速度却越来越慢。词条的排版设计中规中矩,很多时候,纸质版词典费尽心思实现的词条高可读性,在电子版中荡然无存,只能以数千克的厚重纸本能够浓缩于掌中实属不易聊以自慰。所幸,EX-word 还没有跟风增加娱乐功能。事实上,以自己的个人经验来讲,只要提供了便捷的单词记忆和笔记功能,电子辞典就能发挥巨大的作用。那些花哨的查询与学习功能对外语学习的实际帮助有限
  • 单词本功能局限性大。先说可保存数量,最初为单组1500-1700条,之后日版为6×300条,国行为12×300条。这个规格远不能满足日常灵活运用。再说功能,无法改变列表布局,单页仅能显示10条,不支持查询,进一步削弱了单词本的可能性
  • 鸡肋的笔记功能。其他诸如马克笔标记和任意笔记等功能,也都存在可记录条目数量少,功能简陋的问题,并不实用
  • 糟糕的辞典扩展。EX-word 与 PC 的连接十分繁复。即使在以软件易用性较差的日本企业里也属中下,让人几乎不愿意使用。通过 SD 卡添加的数据会导致严重的性能问题——每次重启都需要数十秒重建数据,每次开盖唤醒都需要数秒重新检查数据,查询 SD 中保存的辞书时能明显感觉到性能下降反应迟缓,添加 SD 卡辞书词条至单词本时每次都会显示两秒提示,且单词本内的翻页与浏览速度会大幅下降,更为夸张的是,一旦单词本内包含扩展辞典的条目,按字母数序排序的功能就会失效,只能按照添加顺序逆序显示。这个问题多年未改,短期内也看不到改进的可能。痛苦不堪之下,只得购入新机型只用内置词典查词,以减少每天被无端浪费的等待时间
  • 中文查询词条排序诡异。词条虽然按拼音排序,同音条目的顺序却很糟糕。可以说,几乎所有时候,要查找的条目都会排在比较下方的位置。能做到这点倒也真是不易

其实,卡西欧的主要竞争对手夏普的 Brain 在规格上更胜一筹,很多方面也向如今的智能手机靠拢,不但屏幕更赏心悦目,功能也更加便利,只可惜一方面夏普不重视中国市场(当年翻盖手机风行时曾经在国内推出过基于山寨系统的电子辞典,不久便惨淡离场),一方面日版机型在辞书选择上也总是存在缺憾。整体性能更强的精工虽然产品硬件素质出色,却也同样存在着辞书收录不全面的问题,前几年就因为市场反响平平而停止生产。国内几家厂商则始终以中小学生家长的钱包为首要目标,空有噱头与娱乐功能,却从未开发出真正好用的电子辞典,实在可惜,不过这是另话。

一番褒赏与批评,又勾起不少回忆,感慨良多。只愿手头的电子辞典能再陪伴自己十年,一起去发现更大的世界。

碎碎念——迅速崛起的 Oppo

最近几年步步高旗下的手机厂商 Oppo 销量喜人,这里随口议论几句。

Oppo 的市场与营销:

  • 依托大陆市场,获取了当前全球销量第四的成绩
  • 在国内高调宣传自己的成绩
  • 投入巨资赞助各类综艺节目,知名度极高
  • 投入巨资邀请当红艺人代言,话题度极高
  • 各类数码网站频繁介绍发布会并宣传新产品
  • 在二三四线城市与一线城市郊县拥有数量极多的实体店,常开设于山寨苹果旗舰店附近
  • 给予销售人员极高的单机返利激励他们推销产品
  • 产品定价远高于同级别产品甚至高于三星、索尼等多家国外厂商
  • 以简单上口极易传播的口号宣传闪充技术(充电五分钟、通话两小时)

Oppo 的产品:

  • 使用中端处理器,性能中庸却也避免了过热与耗电问题
  • 摄像头素质中庸,但自拍美艳效果强劲,避开了成像质量的正面对抗
  • 电池容量普遍较小,闪充技术仅略优于其他厂商。最近新机型电池容量有所增加
  • 曾推出多款性能有限但厚度打破纪录的产品以增加知名度
  • 作为一项传统,外形设计大量借鉴流行产品,几乎到了抄袭的边缘
  • 由于单价较高,不必过分控制成本,质量与做工较好
  • 大幅改造 Android 系统使其适应国内用户使用习惯

评论:

  • 虽然有抄袭他人设计的不义之举,但进取心和执行力确实优秀
  • 大力投放广告再以低配高价收回成本也算是商业策略,无可厚非
  • 广铺销售渠道并有效激励销售是正确的思路
  • 缺乏对设计与技术的追求,距离业界领袖距离还很遥远
  • 尽管如今资源与机会丰厚,但凭现有营销策略能否打入国际市场仍是个问号
  • 仅以个人喜好而论,更希望业界领先者能以产品为本,不断推进技术进步与创新,而不是通过营销让技术平庸的产品取胜。如果 Oppo 将来可以转型,或许能成为业界领军者。毕竟它比故意欺诈的小米要正派得多。

AngularJS 中为 input 添加字母大小写不敏感正则表达式匹配验证

代码与范例:

说明:虽然包括 JavaScript 在内的正则表达式实现支持大小写不敏感匹配(i),但 HTML5 中,input 元素的 pattern 属性并不支持该标记位。为此,要实现该功能,必须借助额外的逻辑。如需显示错误信息,可为错误信息添加 ng-show=‘!isEmailValid’ 属性。

JavaScript 中设置与读取 Cookie

代码与范例:

说明:如果要设置过期,则需要为expires赋值。否则默认为 session cookie,可能在浏览器结束后被自动清除。

JavaScript 中判断哪个链接(a 标签)被点击

代码与范例:

说明:可通过 callback 回调方法或许当前被点击的 a 标签,进一步得到诸如 href 或 title 等元素属性,就能知道用于点击了哪一个链接。此处的 a 标签也可以替换为其他包含 click 事件的元素。

 

聊聊压力

这篇文字根据自己前几年在记事帐里随手记下的随感整理而成。这些没有成文、不成系统的只言片语安静地躺了两三年,趁此机会稍作梳理,固仍有疏漏与偏颇,也算是做个了结。因没有任何专业基础,完全基于经验得出感受,难免有不少幼稚与谬误之处,仅作备考。

下面依次谈谈自己对压力的来源,压力的效果和压力的释放等话题的理解和思考。

 

压力源

此处主要讨论的是相对长期的精神压力,短期的应激性压力或肉体压力不做展开。由缺乏食物、饮水、睡眠、温度或身体疾病导致的压力成因与解决方法都较为显然,也不多深入。

内部压力

一个完全与社会隔绝的人是否会有压力?如果他能够自己自作健康而自由地生活,且不用担心外部威胁,他是否还会有压力?这类压力或许可以归为来自内部的压力。有些压力的根因很可能依然源自外界,但其形成与个人的性格或思维方式等息息相关。内部压力包括以下这些:

  • 强迫症。必须反复确认检查才能安心,常见的有出门时检查是否关门等
  • 过分完美主义或脱离实际的期望。对自己或外界的行为及其结果要求过高,一旦存在偏差便产生负面情绪
  • 过度的欲望。强烈的物欲、权利欲或控制欲等

外部压力

撇开生存压力,此处的外部压力也许能大致等同于社会压力。外部压力可以由个人或群体造成,甚至只是舆论或媒体渲染。

  • 外部展现的状态。成绩优秀的同学、外貌出众的朋友、能力拔群的同事、多才多艺的同龄人……荣誉、幸福、清闲、权力、富裕……新买的奢侈品、小清新的出国旅游、丰富而频繁的文娱活动……本来,与自己过分遥远的人不会成为问题。人们通常不会因为明星富商生活条件优越而感到不平,而只会关心身边看得到的例子。然而,网络普及之后,社交网络的流行使情况发生了变化。你会发现,你身边默默无闻的同事周末的生活简直丰富得难以想象;你各方面平平的朋友似乎始终乐观积极毫无烦恼;你泯然众人的高中同学和千里无一的美女结为连理;原本和你一辈子打不了几次交道的远房亲戚在特大城市的富人区购置了房产。做到清心寡欲并非易事。没有比较就没有伤害,外部展现的状态,无论虚实,都会影响自己的心境。尤其是当你发现自己无法达到“社会的普遍标准”时,你必然会有意识或无意识地感受到压力。例如,你以为三十岁前大家都结婚了;你以为大家结婚时都添置了新房;你以为昂贵的钻石戒指是唯一可以表明真爱的信物——如果这不是钻石公司几十年营销得到的成果
  • 外部对自己的评价。无论你与他人相同还是不同,不如还是超越,你都有可能收到指指点点。这些指指点点或许并不会对你有直接的伤害,但你却总担心它们终将转变为实际的影响。也可能,这些不公甚至不实的评价,本身就能让你感到不快,即使它们几乎没有可能对你造成实在的损失
  • 外部对自己的期望与要求。如果说外部展现的状态不明确针对某个目标,外部对自己的评价不直接要求回应,那外部对自己的期望与要求则更加明确与直接。父母期望子女成才;老师要求学生学习,期望他们考取高分;领导要求员工努力工作,期望他们获得好业绩。期望会带来评价,进而转为压力,要求更是很可能会改变今后的处境,形成直接压力
  • 外部对自己的认可
    • 需要与被需要。认识到自己需要依赖整个社会才能更好地生活,并且相信自己具有足够的能力提供社会需要的价值。前者通常成立,后者则不然。如果认为自己不被社会需要,便可能产生一定的心理负担,担心自己能否长久地在社会中生存
    • 信任与被信任。信任社会有助于减少不必要的脑力消耗与精神负担。被信任的人更容易建立起足够的自信。或许存在精神特别强大的人不需要外界的反馈也能认清自己,自信而坚定。不过这种情况下,他很可能缺乏对所属社会群体的认同感与归属感。不过,如果把握不当,被信任也可能转为过度的期望而产生压力
  • 认同感与归属感的缺乏。认同感与归属感指认同自己所属的群体,为自己属于该群体而感到自豪与安心。认同感与归属感能够使人放松,排解压力。这两项却并非总能实现。出于各种原因,人并不总是有能力选择自己所属的群体。后进学校里努力学习的学生可能在班集体里找不到归属感,混吃等死的机构里有雄心的员工可能既不认同也不认为自己属于这个环境。不过,如果信念坚定,相信自己可以改变,改变环境,或是改变环境,由于认同感与归属感确实造成的压力或许也有正面作用
  • 没有选择的自由。能够自由选择,显然胜过枷锁重重

内部压力与外部压力存在联系,在一定条件下能够相互转化。

 

压力的作用与危害

作用

  • 危机意识。穷则思变。压力也许是改变与进步的契机
  • 集中注意力。适当的压力可以迫使人专注于重要的问题

危害

  • 精神疲劳/肉体疲劳的加速。长时间处于压力之下会积累精神疲劳,精神疲劳又将导致肉体疲劳
    • 疲劳将造成效率下降,错误增加
    • 产生焦虑心情,无法正常工作生活,浪费大量时间
    • 恶性循环。疲劳的肉体会发过来影响心智。人在劳累时往往难以意识到自己处于不良状态,越陷越深
  • 情绪消极。对他人产生消极影响,破坏关系。如果能够遇到情绪积极的人帮助还好,仅靠自己很容易钻入牛角尖
  • 短视/无法做出最佳决策。迫于压力,人往往会选择解决眼前的紧迫问题,而这不一定是长期的最佳选择

 

压力的缓解措施

生存压力

不考虑天灾人祸食物短缺等,这类压力主要源于身体健康状况不佳。因此调节方式也很简单,培养并维持良好的生活习惯即可。

  • 合理作息
  • 加强运动
  • 注意饮食
  • 保证睡眠

其中特别要强调保持睡眠。现代人很少会面临生存压力,却常常会遇到睡眠问题。有时候会觉得,睡眠质量不佳其实是一种很特殊的生存压力吧。引发条件极为简单,熬夜不睡即可;影响迅速而明显,内部精神压力剧增,反应力和判断力下降并极易导致失误,进而影响外部评价,产生外部压力。相对破坏,睡眠质量的恢复却要花费更久的时间。此外,长期轻度睡眠问题带来的影响并不亚于短期熬夜。无论如何,确保高质量的睡眠是释放压力的第一要务。

内部压力

  • 通过习惯来缓解强迫症。习惯的力量十分强大,借助习惯可以事半功倍。例如,担心出门时没有锁门,可以培养锁门后拍照记录或只是简单捏一下自己。有意识地让肌肉参与,比眼看脑记更加深刻。这些习惯以简单有效为宜,一旦养成,就值得信赖
  • 建立正确期望。合适的期望对人有激励作用,过高的期望只能徒增压力与失望与不自信。建立期望,应该以过往的经验为基础,如果过去从未实现,有什么理由相信自己下次一定可以成功呢?即使求成心切,也应根据实际情况多次迭代更新期望,而不是一蹴而就在毫无基础的时候就建立不切实际的期望。上一次得了60,这次就改进方法,或增加努力,期望得到65——而不是这次决意已定,信心满满,肯定能得100
  • 过度的欲望。思考自己真正想要的是什么,欲望的来源是什么。这个问题本身就能长篇大论。重要的是,努力成为一个真正独立的人,不要让自己的欲望成为社会舆论宣传的镜子
  • 接受变化与不确定。这个世界上唯一不变的就是不断的变化。大部分人无法准确预测自己两年后的状态。既然变化与不确定是这个世界的常态,是事物发展的法则,又何必为此恐惧和焦虑呢。为变化制定多套不同方案,借助经验预测未知,先尽人事,后听天命

社会压力

  • 正确评价他人。由于信息不对称,他人展现的、媒体宣传的,都不一定是实际情况,或者说不一定能准确反映整体情况。一位成功的商人可能不是一个尽责的父亲,拥趸众多的意见领袖不一定过着自己梦想的生活,学术爱情事业三丰收的长者或许每时每刻都要应对常人想象不到的艰难。因此,不必妄自菲薄,特别是不应自行想象他人不为人知的一面
  • 影响他人的评价但不在意他人的评价。外部评价可以被影响,但不可控。不能期望所有人都满意自己,如果这些评价难以对自己造成实际影响,可以忽略不计。做好自己,影响可以影响的人,影响需要影响的人,即可。当自己能创造价值时,被需要与被信任也将随之获得
  • 双向选择。寻找自己认同的,有归属感的集体。自我提高,让自己具备选择的资本
  • 宁缺勿滥。这一点很难做到。如果追求的东西成本极高,人往往就很难顶住压力。例如,坚守道德通常需要付出极高的精神和物质成本。不乱扔垃圾不乱穿马路等功德,要对抗人性的懒惰和自私;互联网商业公司不助纣为虐利用国内垄断地位把害人性命的骗子医院的广告夹杂在搜索引擎结果里,要对抗金钱的诱惑与外部资本的压力。不过对于个人来讲,或许静下心来,好好想一想自己到底追求的是什么,可以帮助自己找到一些答案。如果明天就是你生命的最后一天,你是否还会纠结于这些难以割舍的东西?你希望得到他人怎样的评价?缺乏公德的人,抑或是丧尽天良的商人?当然,如果这些不会成为你的压力,现在自然也不会成为一个问题
  • 理解历史的进程。每个人都能选择自己的行为,但能与历史进程对抗的毕竟是少数。以史为鉴,可以知兴替。人类文明如何受生产力发展的影响,如果受经济模式的影响,如何受人性的影响,必然遵循一定的规律。如果能了解到一些这样的规律,或许能对这个世界的运行法则有更深的认识吧。一国的制度演化,民众素养与社会风气等,发展成当前的状态大多是众多历史条件叠加的必然结果。为什么会产生农耕文明?为什么会有殖民扩张?为什么会有王朝兴衰?为什么会有革命?为什么会爆发战争?为什么会有经济危机?为什么会有郁金香/普洱茶/房地产的泡沫?……越看清这个社会运行的本质,越能对这个纷扰的世界保持平静吧。就好象人不会因为苹果会掉落地面、水能载舟火能取暖之类的现象感到压力一样,如果知道了在特定的资本与经济条件下某些社会现象几乎是物理定律般的必然,或许也就不会过分患得患失了。《人类简史》是一本通俗易懂的好书,可以帮助自己对人类文明的进程有一个新的认识,值得一读
  • 维护健康的人际关系。人际关系其实和个人与群体的关系类似,只不过此时对方是一个个具体的人。相互认可、相互信任、相互尊重、相互需要,保持合适的距离,紧密而自由,或许是最佳的人际关系

 

 

Android 中设置 EditText 的输入类型

在 Android 中,EditText 可支持句首字母大写、词首字母大写、纯数字等数十种专门优化的输入类型。有两种方式指定输入类型。

方式一,在布局资源文件中为 EditText 控件添加属性,如:

其中,textCapWords 表示在可能的情况下,为每个句子的首字母大写。
textCapSentences 属性的值为 0x00004001 ,textCapWords 则为 0x00002001,它们以掩码的形式制定,这些属性可通过 | 运算符组合。

方式二,在代码中动态添加或更改输入类型,如:

更多可选的输入类型请参见官方文档:
http://developer.android.com/intl/ja/reference/android/widget/TextView.html#attr_android%3ainputType

写给程序员的 AngularJS 语法快速入门

基本示例

index.html

使用控件

index.html

todo.js

todo.css

 

未完待续

通过正则表达式过滤/去除 XML 1.0 的非法字符

说明:
XML 1.0 的合法字符如下:

Char::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] /* any Unicode character, excluding the surrogate blocks, FFFE, And FFFF. */

例如,.NET 框架中的 SQLDataAdapter.Fill() 将自动将 XML 1.0 不支持的 Unicode 字符转换为 HTML 字符(如 #xB 等),因此,在这类场景中,应当首先过滤非法字符,否则 XSL 等可能会无法正确处理由 XmlDocument.LoadXml() 得到的 XML。
另,改用 XML 1.1 也是一种解决方案,XML 1.1 的非法字符仅有 NUL (x00)、xFFFE 与 xFFFF 这三个。

用于匹配 XML 1.0 非法字符的正则表达式模式如下:

VB.NET 代码示例:

碎碎念:智能手机 2015

首先是一则说明。工作生活日渐繁忙,打理博客的时间也越来越少。精力有限,今后原则上不会为索尼的每一次展会/新产品发布写摘要。这些交给专门(虽然很多并不专业)的媒体即可。自己感兴趣的产品或许会三言两语写写感想,例行的产品线更新之类则略过不提。例如新的 Walkman W 系列和 h.ear 耳机系列,小改款的新 VAIO Z/ S 系列等。

回到正题,最近很多网站都在讨论 2015 年各品牌智能手机的销量,长篇大论总结下来其实也就这么几句:

  • 苹果增长放缓
  • 三星颓势开始扭转,但依然被苹果逼近
  • 多个老牌国际大厂日趋边缘化(LG、索尼、HTC、Moto 等)
  • 华为为首的国产厂商进步显著
    • 小米遇到瓶颈
    • 步步高系闷声发财

相关的分析和讨论已经很多,这里不重复相近的观点,只想再次阐述几条自己认为很重要的因素:

  • 品牌影响力是最大因素
  • 中国大陆决定全球局势

关于第一点。又一年的实际观察让自己确信,『大多数』人并不关心也无法分辨产品的好坏。例如,他们不会用到 iPhone 的大部分功能,对 iPhone 的出色设计并不能明确感知,对 iPhone 的缺点也并不在意。此处的 iPhone 可以换成三星的 Galaxy,华为的 Mate,小米手机、Vivo/Oppo 等。屏幕大小、机身轻薄、续航长短,几乎就是普通人对手机的理解力的全部。前些天经历了这么一件事,同事一致觉得 Oppo 某中端手机和索尼 Xperia Z5 长得差不多,前者还更加轻薄,看似更好。

苹果被认为是最好的高端手机、三星被认为是最好的非苹果高端手机、小米被认为是便宜又不错的手机、华为被认为是国货里质量信号最好的、Oppo 好像到处能看到广告和实体店、HTC 是过气品牌现在都没人买……LG 和索尼也做手机?

充分商品化后的智能手机市场,难免陷入营销的苦战。

第二点不用多解释。不迎合国内市场的厂商已经全都被边缘化。国内二三四线城市的消费能力逐渐增强,他们可以提供压倒性的『销量』与『市场份额』。

除了很早就开始布局海外市场的华为,其他几家能否走出国内,短期内是否打算走出国内,都还要打个问号。不过纯看数字,今后的智能手机市场应该可以确定是中国厂商的天下了吧。

顺便,索尼昨天公布了最新一季度的财报,集团整体业绩尚可,更重要的是移动部门罕见地扭亏为盈。尽管2015年全年销量跌破3000万,不仅比前两年大减,甚至不如国内魅族等二线品牌,但依靠高端机型较高的利润率,反而盈利不少。毕竟,4999 的手机的销售额与利润都不是 699 的低端机可比。缩减产品线,减少不必要的开支,专心做旗舰产品,或许是一条正确的路。