<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <title>Guixing&#39;s Jail</title>
    <link rel="self" type="application/atom+xml" hreflang="en" href="https://blog.khsing.net/atom.xml" />
    <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/" />
    <link rel="alternate" type="application/rss+xml" hreflang="en" href="https://blog.khsing.net/index.xml" /><id>https://blog.khsing.net/</id>
  <updated>2025-01-18T07:54:19Z</updated>
  <author>
    <name>Guixing Bai</name>
    <email>khsing.cn@gmail.com</email>
    
  </author><generator>Hugo 0.154.2</generator><rights>Guixing</rights>
  <entry>
    <title><![CDATA[【公告】关于 woodpecker.org.cn 网站已经停止维护的说明]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2025/01/woodpecker-org-cn-notice.html" />
    <id>https://blog.khsing.net/2025/01/woodpecker-org-cn-notice.html</id>
    <updated>2025-01-18T07:54:19Z</updated>
    <summary type="html"><![CDATA[<p>算是存档</p>
<blockquote>
<p>大家好，</p>
<p>因多种原因，原啄木鸟社区网站 (woodpecker.org.cn) 已于2021年5月停止运营。然而，我们近期注意到有人重新注册了该域名，并使用网站原有的内容继续冒充啄木鸟社区名义继续运行，及使用 Google Ads 牟利。</p>]]></summary><content type="html"><![CDATA[<p>算是存档</p>
<blockquote>
<p>大家好，</p>
<p>因多种原因，原啄木鸟社区网站 (woodpecker.org.cn) 已于2021年5月停止运营。然而，我们近期注意到有人重新注册了该域名，并使用网站原有的内容继续冒充啄木鸟社区名义继续运行，及使用 Google Ads 牟利。</p>
<ol>
<li>
<p>我们此前已经尝试过多次试图联系此人均未得到回应，在此特别提醒大家：</p>
</li>
<li>
<p>原啄木鸟社区网站早已经停止运营，原管理团队、豆瓣与目前的域名持有人无任何关联。</p>
</li>
<li>
<p>鉴于目前的域名持有人对我们的联系尝试做出任何回应，我们无法排除该网站以冒充原网站的手法采用钓鱼的方式，从而试图获取此前用户登录凭证的可能性。因此，请大家不要再登录该网站。如果此前登录过网站，并且密码在其他网站使用过，请假定密码已经失窃，并立即修改在其他地方使用的密码。</p>
</li>
<li>
<p>目前的域名持有人使用了无效的网站原备案信息，这有可能涉嫌违反中华人民共和国有关法律法规。</p>
</li>
<li>
<p>原啄木鸟社区团队强烈谴责其冒充行为以及通过冒充牟利，并保留依法追究其法律责任的权力。</p>
</li>
</ol>
<p>感谢各位蟒友多年来的支持与厚爱</p>
</blockquote>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="notice" label="Notice" scheme="https://blog.khsing.net/tags/notice/" />
    <category term="community" label="Community" scheme="https://blog.khsing.net/tags/community/" />
    <published>2025-01-18T07:54:19Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[迁移到hugo的blog engine上来了]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2023/01/migrate-to-hugo.html" />
    <id>https://blog.khsing.net/2023/01/migrate-to-hugo.html</id>
    <updated>2023-01-12T03:02:41Z</updated>
    <summary type="html"><![CDATA[<p>头两天被三金无情的鄙视了我还在用wordpress做blog engine的行为，说干就干，零星搞了几天就把自己的blog用<a href="https://github.com/SchumacherFM/wordpress-to-hugo-exporter">wp-hugo-exporter</a>给导出来，加以修缮，主要是把一些格式都调整一下，另外exporter把一些列表html标签原封不动的搬了过来，都手工给调整了。</p>
<p>目前评论系统还没有接过来，后面看看接哪一个，发布的时候，直接发到了<a href="https://www.netlify.com/">Netlify</a>，省去了自己做host的一堆烦恼。</p>]]></summary><content type="html"><![CDATA[<p>头两天被三金无情的鄙视了我还在用wordpress做blog engine的行为，说干就干，零星搞了几天就把自己的blog用<a href="https://github.com/SchumacherFM/wordpress-to-hugo-exporter">wp-hugo-exporter</a>给导出来，加以修缮，主要是把一些格式都调整一下，另外exporter把一些列表html标签原封不动的搬了过来，都手工给调整了。</p>
<p>目前评论系统还没有接过来，后面看看接哪一个，发布的时候，直接发到了<a href="https://www.netlify.com/">Netlify</a>，省去了自己做host的一堆烦恼。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="blog" label="Blog" scheme="https://blog.khsing.net/tags/blog/" />
    <category term="hugo" label="Hugo" scheme="https://blog.khsing.net/tags/hugo/" />
    <published>2023-01-12T03:02:41Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[2022年过去了，我并不怀念]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2023/01/2022-is-gone-but-i-wont-miss-it.html" />
    <id>https://blog.khsing.net/2023/01/2022-is-gone-but-i-wont-miss-it.html</id>
    <updated>2023-01-05T06:34:41Z</updated>
    <summary type="html"><![CDATA[<p>2022年已经过去好几天，就这几天还在不自觉的说明年，实际上已经是今年了。</p>
<p>我对于2022年的自己只能打个6分，几乎除了忙工作就是在忙着搬家和准备搬家，最后在年底的时候搬来了加拿大，一切都还是个新的开始。</p>]]></summary><content type="html"><![CDATA[<p>2022年已经过去好几天，就这几天还在不自觉的说明年，实际上已经是今年了。</p>
<p>我对于2022年的自己只能打个6分，几乎除了忙工作就是在忙着搬家和准备搬家，最后在年底的时候搬来了加拿大，一切都还是个新的开始。</p>
<p>这一年给我的震撼太多，很多事情看似离的远，又是那么近，看起来离的近，又是那么远。</p>
<p>小儿子2022年上了幼儿园，他适应起来还算是快的，现在换了新环境希望能一切顺利的过渡，不过幼儿园要等到23年9月才能入学了。</p>
<p>2023年只是希望自己能够找到内心的平静，不要再这么忐忑的活着。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="annual" label="Annual" scheme="https://blog.khsing.net/tags/annual/" />
    <published>2023-01-05T06:34:41Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[疫情终于结束了]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2022/12/the-pandemic-is-finally-over.html" />
    <id>https://blog.khsing.net/2022/12/the-pandemic-is-finally-over.html</id>
    <updated>2022-12-27T07:20:21Z</updated>
    <summary type="html"><![CDATA[<p>一场源于2019年底，爆发于2020年1月的全球大流行疫情，随着中国最终调整为乙类乙管传染病后，终于算是告一段落了，不管感染有没有真的结束，都已经过去了，人们终于要回到一个没有管控的正常生活中来了。</p>]]></summary><content type="html"><![CDATA[<p>一场源于2019年底，爆发于2020年1月的全球大流行疫情，随着中国最终调整为乙类乙管传染病后，终于算是告一段落了，不管感染有没有真的结束，都已经过去了，人们终于要回到一个没有管控的正常生活中来了。</p>
<p>以下大概是我对这场大流行的记忆：</p>
<p>2019年12月底，武汉出现了人感染新的冠状病毒的情况，李文亮医生在自己的微信群里提醒朋友注意，被人截图后开始流传，紧接着李文亮医生被派出所训诫，且写下了悔过书，同一时间还有8人被训诫。</p>
<p>2020年1月初，中国向美国和WHO等组织报告发现了新型冠状病毒。之后钟南山去武汉明确了存在人传人的情况。</p>
<p>2020年1月24日，武汉封城，其他城市也都进入几乎封锁的情况，开始播报每日新增感染的情况，整个春节全家人都是在家度过的，几乎不下楼。几个国家同时宣布暂缓中国前往的航班。之后就是全国各地医护人员驰援武汉，全球支援武汉，其中日本送来的物资上面写的诗词，“山川异域，风月同天”，这些都着实让大家感动了一波。春节之后大家都是居家办公。</p>
<p>2020年3月初，我们可以去公司上班，出入小区和单位开始凭临时的卡证，要戴好口罩，办公室也会一天消杀好几次，空气里弥漫着84消毒水的味道。这时候海外已经开始流行，3月18日，美股迎来了一次又一次的跳水，甚至出现了连续4-5次的熔断。而且美国因为一个名叫George Floyd的黑人瘾君子在警察执法过程中死亡的事件，引发了全国的BLM活动，游行一定程度上促进了疫情在美国的传播。</p>
<p>2020年4月初，武汉解封，国内逐渐开始放松管制，但是海外疫情已经爆发，整个疫情管控变成了内防反弹，外防输入，推出了五个一政策，大幅降低海外航线通航率。而且从这个时候开始报告海外疫情严重爆发成为了新闻宣传的重要内容，抨击嘲笑美国等国家的疫情防控也开始成为了社交媒体上的主流意见。</p>
<p>2020年6月，北京发生了一起新发地产生的疫情，也推出了一个物传人的概念。国际上还在就戴不戴口罩的争议。</p>
<p>2020年底，中国开始向普通百姓提供国药和科兴两种灭活疫苗，并且开始了普通大众的接种计划。也是这一年年底，中国关闭了普通人因私办理护照的业务，只允许留学、务工等几类必须出国的情况办理护照业务。</p>
<p>对2021年在疫情方面的记忆主要有三个，一个是变种多了，印度养盅养出了德尔塔，非洲养出了奥密克戎。二个是几个主要国家基本上都推出了各自的疫苗，一度以为这是一个人类大团结，大爱无疆的时刻，然而没想到的是出现了疫苗的民族保护主义，国外的疫苗不能进口，这始料未及。第三个是清零，出现了几个词“社会面清零”、“动态清零”，起初我一直搞不大清楚怎么叫清零，后来才知道是划分封锁区域之后把区域内的核酸阳性及密接甚至次密接人员转运到方舱等地点隔离后就实现了“社会面清零”。到年底的时候，中央开了一个疫情的表彰大会，一度让我以为整个疫情要结束了呢。而这一年底的争论，也是清零派和共存派的争论，最后有个声音是：中国现在有争论是因为中国现在的政策还有选择，而海外已经没有选择了，我们要继续清零的政策，让海外先试试共存的情况，再来选择。</p>
<p>进入到2022年就非常热闹了，先是1月的时候天津迎战了奥密克戎，最后成功清零。同一个时期的海外随着疫苗的注射，先后一些国家放开了航空管制，开始接纳游客入境了。</p>
<p>接着到了3月的时候上海疫情从精准防控变成了不能说的封城，没有高风险地区的封控，小区封控，人们居家开始出现吃饭买菜上的困难，居委会变成了一个有实际管控权力的组织。接着清零政策就变成了一项不能被质疑的政策，上海出了个四月之声，但是很快就被消失了，凡是不支持清零的，那便是与中央的政策相违背，人民日报的“仲音”也一再发声表明清零的重要性，这一切都是“人民至上，生命至上”的体现。也是这时候新出现了一个新词——“新冠次生灾害”，没有24或48小时内的核酸阴性证明，有可能无法就医，西安和上海都出现过孕妇无法进入医院的情况，甚至造成了孕妇的死亡。新加坡的总理夫人在Facebook上建议上海放弃核酸，转向疫苗接种，核酸的成本远高于疫苗注射，当然新加坡也放开了管控措施。</p>
<p>同一时期，香港也已经无法实现清零，选择了与病毒共存，成了所谓的躺平派，不过香港的死亡率比其他地区要高不少，这里的原因不详，但很可能与老人的疫苗接种率低有关。</p>
<p>2022年5月北京接近封城了一个月，而这个时候的封城已经不叫封城了，而是静默，全域静默。先是全员核酸，然后就出现了核酸常态化，上班要凭72小时以内核酸，这之后的主题就是“应检尽检”，北京的健康宝还有一个制胜法宝级别的功能——弹窗。不同提示显示的原因不一样，总体来说就是极大的限制了人员的流动以及提高了京外人员的入京难度。其实全国各地都有类似的健康宝/码，而这个健康码也竟然被挪作他用，成了限制居民人身自由的手段，河南开了一个头是把某暴雷的村镇银行储户给附上了红码，画地为牢。也是同一个时期，一个几乎与世界隔绝的国家——朝鲜，出现了大量的发热病例，就在大家疑惑和观望这个缺医少药甚至都无法进行核酸检测的国家如何应对的时候，金三胖同志给出了答案：给大家科普防疫知识，给大家退烧药，让大家居家应对。很快，在5月底金三胖同志开会就不戴口罩了，宣布抗疫胜利了。</p>
<p>2022年9月贵州发生了一件事情，深夜转运阳性病例的大巴侧翻导致27人遇难，这些人没有死于新冠，却死在了实施清零措施的过程中，虽然严格意义上他们是死于交通事故，但是没有强制转运，他们就不会搭上一辆半夜行驶在山区的大巴。</p>
<p>到了2022年10月，国务院公布的疫情风险划分等级上，低风险区域已经是寥寥无几，全国各地或多或少的都在经历封控和静默，有的地区甚至经历了好几个月的封控，比如新疆，20大也在这个月胜利闭幕了，大家以为尘埃落定之后应该放松管制了吧，迎接来的依旧是坚持动态清零。</p>
<p>2022年11月，全国的封控情况愈加严重，新疆乌鲁木齐一个居民楼的火灾，因为疫情管控的措施，消防车近在咫尺却无法展开消防作业，最终导致人间惨剧的发生，引发了全国多地共鸣，上海人民自发在乌鲁木齐南路发起的一个活动，但活动被阻断，而且这条路次日也开始它的整修工程。北京的疫情也非常严峻，开始实施更加严格的管控手段，一些商城和工作单位开始要求24小时核酸，之后则小区开始实施封控措施，只是没有封控的文件和合理合法性，很多居民因此聚集抵抗了这种封锁小区的措施，最后很多小区的不得不放弃了封锁。</p>
<p>到了2022年12月，也不知道是不是这些抗议活动产生了效果，还是出于经济层面的考虑。突然这些管控措施都在一夜之间消失了，缺医少药的大家又突然一下子都变成了阳性，正当大家还在错愕中经历这一过程的时候，国门也确定要开放了，护照也要开放了，速度之快令人咂舌。不管怎么样，2023年1月8日，中国正式开始后疫情时代。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="china" label="China" scheme="https://blog.khsing.net/tags/china/" />
    <category term="covid" label="Covid" scheme="https://blog.khsing.net/tags/covid/" />
    <category term="life" label="Life" scheme="https://blog.khsing.net/tags/life/" />
    <category term="pandemic" label="Pandemic" scheme="https://blog.khsing.net/tags/pandemic/" />
    <published>2022-12-27T07:20:21Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[接种了Pfizer的Covid19疫苗]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2022/12/pfizer-covid19-vaccine.html" />
    <id>https://blog.khsing.net/2022/12/pfizer-covid19-vaccine.html</id>
    <updated>2022-12-16T23:11:38Z</updated>
    <summary type="html"><![CDATA[<p>首先要在Ontario Public Health的<a href="https://www.ontario.ca/book-vaccine/">预约页面</a>上输入相关信息，打电话把自己的姓名、生日、电话和邮箱告诉接线员，然后预约好了接种时间，对方会提醒带有效的身份证件。</p>
<p>之前的一个预约因为有事儿给耽搁了，后来又预约了一个，到了诊所，如果没有戴口罩，工作人员会给你一个，让你戴好。登记的时候会问你是不是有咳嗽和流鼻涕等症状，过去3周有没有在加拿大境外之类的，之后按指引把护照给他们，然后再把在国内注射的疫苗情况给对方看，他们会给你填写好对应的信息，并给你一个临时的Health Card Number，记好。</p>]]></summary><content type="html"><![CDATA[<p>首先要在Ontario Public Health的<a href="https://www.ontario.ca/book-vaccine/">预约页面</a>上输入相关信息，打电话把自己的姓名、生日、电话和邮箱告诉接线员，然后预约好了接种时间，对方会提醒带有效的身份证件。</p>
<p>之前的一个预约因为有事儿给耽搁了，后来又预约了一个，到了诊所，如果没有戴口罩，工作人员会给你一个，让你戴好。登记的时候会问你是不是有咳嗽和流鼻涕等症状，过去3周有没有在加拿大境外之类的，之后按指引把护照给他们，然后再把在国内注射的疫苗情况给对方看，他们会给你填写好对应的信息，并给你一个临时的Health Card Number，记好。</p>
<p>然后来到注射室，护士还会再次确认相关的信息，估计注射了中国疫苗的情况并不多见，护士又和另外一个人一起确认沟通了一番，最后过来给解释，我只需要再注射一针Pfizer的疫苗，6个月之后在注射一针加强。注射完了之后在旁边等15分钟就可以回家了。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="ontario" label="Ontario" scheme="https://blog.khsing.net/tags/ontario/" />
    <category term="canada" label="Canada" scheme="https://blog.khsing.net/tags/canada/" />
    <category term="covid" label="Covid" scheme="https://blog.khsing.net/tags/covid/" />
    <category term="vaccine" label="Vaccine" scheme="https://blog.khsing.net/tags/vaccine/" />
    <published>2022-12-16T23:11:38Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[疫期往事之12月应开尽开]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2022/12/covid-pandemic-december.html" />
    <id>https://blog.khsing.net/2022/12/covid-pandemic-december.html</id>
    <updated>2022-12-16T06:05:43Z</updated>
    <summary type="html"><![CDATA[<p>时间来到了2022年12月，疫情已经整整三年了。</p>
<p>北京11月经历了几千几千的增长，从有阳性病例开始封单元，甚至封整个楼，到最后把整个小区封住只进不出，这些管控措施并没有控制住疫情的发展，社会面的阳性病例是天天有。同一时间，世界的另一端中东的卡塔尔正在上演一场全球的狂欢——世界杯，那里的人们不戴口罩，没有封锁，没有社交距离，CCTV5直播比赛时为了避免这种荒谬，镜头切换到观众席时，换成场上的大广角。</p>]]></summary><content type="html"><![CDATA[<p>时间来到了2022年12月，疫情已经整整三年了。</p>
<p>北京11月经历了几千几千的增长，从有阳性病例开始封单元，甚至封整个楼，到最后把整个小区封住只进不出，这些管控措施并没有控制住疫情的发展，社会面的阳性病例是天天有。同一时间，世界的另一端中东的卡塔尔正在上演一场全球的狂欢——世界杯，那里的人们不戴口罩，没有封锁，没有社交距离，CCTV5直播比赛时为了避免这种荒谬，镜头切换到观众席时，换成场上的大广角。</p>
<p>由于封小区引起广大居民的反感，多个小区都发生了一些反抗活动，最终导致很多小区并没有封锁成功。全国各地也都爆发了各种形式的抵抗活动，最为有名的恐怕是上海的乌鲁木齐中路，以及后续的白纸活动，不得不说这真真就活在苏联笑话里。</p>
<p>随着他在印尼参加G20峰会，又去泰国参加了APEC会议，之后他又去了沙特进行国事访问，我们看见口罩已经从他的脸上摘了下来了。对大家的抗议活动，他也终于说了一句：学生们累了。</p>
<p>就这一句，国内的形势直接出现了180度大转弯，放开了放开了，北京一股脑的都阳了，同事们一个接一窝的都阳了，买退烧药成了老大难问题。一下子人们从核酸应检尽检变成了应阳尽阳，有些人连楼都没有下就变成了小阳人。</p>
<p>一切都来的那么突然，毫无征兆，毫无准备，猝不及防的又一次赶英超美了。个人在这个洪流中是微不足道的沙粒，除了感谢国家，什么也做不了。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="pandemic" label="Pandemic" scheme="https://blog.khsing.net/tags/pandemic/" />
    <category term="covid" label="Covid" scheme="https://blog.khsing.net/tags/covid/" />
    <category term="beijing" label="Beijing" scheme="https://blog.khsing.net/tags/beijing/" />
    <category term="china" label="China" scheme="https://blog.khsing.net/tags/china/" />
    <published>2022-12-16T06:05:43Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[疫期往事之2022年6月]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2022/06/with-pandemic-in-2022-june.html" />
    <id>https://blog.khsing.net/2022/06/with-pandemic-in-2022-june.html</id>
    <updated>2022-06-02T03:50:30Z</updated>
    <summary type="html"><![CDATA[<p>转眼已经来到了6月，上海已经解封，但是上海的领导说他们并没有封过城……</p>
<p>我囤积的那些粮食物资还没有发挥作用，希望不要发挥作用，整个5月在北京基本上是居家办公过来的，直到5.30日宣布朝阳区几个疫情得到控制的区域可以部分复工，到岗率不超过50%，到了第二天又可以100%复工了。</p>]]></summary><content type="html"><![CDATA[<p>转眼已经来到了6月，上海已经解封，但是上海的领导说他们并没有封过城……</p>
<p>我囤积的那些粮食物资还没有发挥作用，希望不要发挥作用，整个5月在北京基本上是居家办公过来的，直到5.30日宣布朝阳区几个疫情得到控制的区域可以部分复工，到岗率不超过50%，到了第二天又可以100%复工了。</p>
<p>而我所居住的昌平区还在居家办公，且新近又确证了一起阳性病例，而我自己也因为5.28去市场买菜成为了和密接人员时空重合的人员，被通知接下来10天需要做健康检测，分别于通知后的1，4，7天做核酸检测。</p>
<p>核酸检测成常态，捉阳排阴要清零。绿码弹窗找社区，无人知晓几时休。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="covid" label="Covid" scheme="https://blog.khsing.net/tags/covid/" />
    <category term="shanghai" label="Shanghai" scheme="https://blog.khsing.net/tags/shanghai/" />
    <category term="lockdown" label="Lockdown" scheme="https://blog.khsing.net/tags/lockdown/" />
    <category term="pandemic" label="Pandemic" scheme="https://blog.khsing.net/tags/pandemic/" />
    <published>2022-06-02T03:50:30Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[后疫情时代并没有来]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2022/04/post-pandemic-did-not-come.html" />
    <id>https://blog.khsing.net/2022/04/post-pandemic-did-not-come.html</id>
    <updated>2022-04-15T03:49:50Z</updated>
    <summary type="html"><![CDATA[<p>时间来到了2022年的4月，事情的发展超出了我的想象，我以为疫情终将随着病毒毒性的降低，以及疫苗接种率的上升而宣告结束。事实再一次无情的打脸，目前的情况是，吉林的疫情爆发后进行了长达一个月的封锁，上海爆发之后的封锁政策，导致出现了各种各样的物资供应问题以及就医困难等次生灾害，而且还无法获知这样的情况会持续多久。</p>]]></summary><content type="html"><![CDATA[<p>时间来到了2022年的4月，事情的发展超出了我的想象，我以为疫情终将随着病毒毒性的降低，以及疫苗接种率的上升而宣告结束。事实再一次无情的打脸，目前的情况是，吉林的疫情爆发后进行了长达一个月的封锁，上海爆发之后的封锁政策，导致出现了各种各样的物资供应问题以及就医困难等次生灾害，而且还无法获知这样的情况会持续多久。</p>
<p>香港在经过一轮疫情的洗礼之后，无奈的躺平了，损失了一些老人（大部分是没有接种疫苗和自身有基础病的）。大陆没有迎来BNT的疫苗，国产灭活疫苗的接种率应该和香港的水平差不多，老年人的情况应该也差不多，所以真要是爆发了或者躺平了，那这些老年人的处境是极其可怜的。这里有一个情况很费解，韩国的3针注射率很高，辉瑞的特效药也吃了，但是这一波疫情中依然有每天300人左右的人死亡，同样的越南、新加坡、日本都没有出现这样的情况。</p>
<p>上海的疫情持续的情况下，坚持了长久以来的清零政策，以我在这片土地上生活了30多年的经验来讲，事情可能会更糟糕，在各种有选择的情况下，最终会选择最差的那个选项，真正出现转折必然是到了退无可退的地步才会发生，而对于这个地步的把握不同的人有不同的见解。做两手准备，我囤积了一些罐头、挂面和药品。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="beijing" label="Beijing" scheme="https://blog.khsing.net/tags/beijing/" />
    <category term="covid" label="Covid" scheme="https://blog.khsing.net/tags/covid/" />
    <category term="pandemic" label="Pandemic" scheme="https://blog.khsing.net/tags/pandemic/" />
    <category term="lockdown" label="Lockdown" scheme="https://blog.khsing.net/tags/lockdown/" />
    <published>2022-04-15T03:49:50Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[非常火也非常有争议的谷爱凌]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2022/02/very-popular-eileen-gu.html" />
    <id>https://blog.khsing.net/2022/02/very-popular-eileen-gu.html</id>
    <updated>2022-02-14T16:34:54Z</updated>
    <summary type="html"><![CDATA[<p>最近因为冬奥会以及谷爱凌的亮眼表现，谷爱凌在国内变的非常火，也非常有争议。她完成了一个难以置信的动作——1620，取得了北京冬奥会女子自由式高台滑雪冠军，18岁的女孩取得这样的成就，确实非凡。</p>]]></summary><content type="html"><![CDATA[<p>最近因为冬奥会以及谷爱凌的亮眼表现，谷爱凌在国内变的非常火，也非常有争议。她完成了一个难以置信的动作——1620，取得了北京冬奥会女子自由式高台滑雪冠军，18岁的女孩取得这样的成就，确实非凡。</p>
<p>然后和她相关的消息纷至沓来，有赞美她的，自然也有质疑她的，尤其受到关注的是她的国籍问题。几次发布会记者的提问，谷的回答非常巧妙：</p>
<blockquote>
<p>I feel like sport is really a way in that we can unite people, it doesn’t have to be something that’s related to nationality, it’s not something that can be used to divide people.<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup></p>
<p>That’s not political. It’s pushing the human limit and it’s connecting people.<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup></p>
</blockquote>
<p>要说这些回答是有预案和演练的，我也好不奇怪。</p>
<p>其实她的参赛国籍在我来看并不重要，重要的是她所拥有的自信和对美的诠释，她在接受中纪委采访的时候说：美不是瘦，美是有力量，美是能做到这么多不同的事情。<sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup></p>
<p>Ref:</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p><a href="https://www.insider.com/eileen-gu-skirts-questions-on-citizenship-after-winning-gold-beijing-2022-2">https://www.insider.com/eileen-gu-skirts-questions-on-citizenship-after-winning-gold-beijing-2022-2</a> <a href="#fnref:1" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
<li id="fn:2">
<p><a href="https://www.nytimes.com/2022/02/03/sports/olympics/eileen-gu-china-freeski.html">https://www.nytimes.com/2022/02/03/sports/olympics/eileen-gu-china-freeski.html</a> <a href="#fnref:2" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
<li id="fn:3">
<p><a href="http://www.chinanews.com.cn/ty/shipin/cns-d/2022/02-09/news916154.shtml">http://www.chinanews.com.cn/ty/shipin/cns-d/2022/02-09/news916154.shtml</a> <a href="#fnref:3" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
</ol>
</div>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="sports" label="Sports" scheme="https://blog.khsing.net/tags/sports/" />
    <published>2022-02-14T16:34:54Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[后疫情时代其实已经来了]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2022/01/post-pandemic-already-started.html" />
    <id>https://blog.khsing.net/2022/01/post-pandemic-already-started.html</id>
    <updated>2022-01-28T04:19:24Z</updated>
    <summary type="html"><![CDATA[<p>时间来到了2022年的1月，新的Omicron变种已经传播了2个月左右，全球几个主要国家的新增病例都创了新高。中国依旧保持清零策略，但是天津也出现了两次Omicron的疫情，北京目前也发现了Omicron和Delta的毒株疫情，叠加冬奥会和两会的影响，清零政策在此之前不会有任何的变化。</p>]]></summary><content type="html"><![CDATA[<p>时间来到了2022年的1月，新的Omicron变种已经传播了2个月左右，全球几个主要国家的新增病例都创了新高。中国依旧保持清零策略，但是天津也出现了两次Omicron的疫情，北京目前也发现了Omicron和Delta的毒株疫情，叠加冬奥会和两会的影响，清零政策在此之前不会有任何的变化。</p>
<p>分裂的情况依然在加剧，自己身边也有好几个因为疫情隔离在家的情况，包括我自己也差一点就隔离在家了（次密接的接触人），周围的菜市场也是关了开，开了关。疫情从21年10月开始就逐渐开始在全国各个地方星星点点的不断出现，虽然大部分情况下很快被扑灭了，但是像西安那个心脏病和孕妇的情况落在个人身上也是难以承受的。我相信这肯定不是正常的生活，而且每次疫情发生的时候就会有一个声音出来：为什么还没有和这些国外的航班中断？能不能把海外回来的人再多隔离一段时间？一面是认为这种清零政策是保护国内大部分人正常生活的必须手段，付出的成本也在所难免，另一面是对他人付出的成本视而不见，毕竟那个成本不是自己。</p>
<p>再看其他国家一面是病例再创新高，一面是大面积的放开了国境和疫情管理措施。国内的人无法理解海外的措施，反之也亦然。中国的航司基本上停掉了美国的直航航班，现在中美航线基本上都是国外航司在飞。而且最近的几次疫情都和海外邮件以及从事跨境冷链的工作人员有关，要保持清零政策，那继续收紧与海外的联系就是意料之中的事情。</p>
<p>之前我有说<a href="https://blog.khsing.net/2021/10/after-covid19-pandemic.html">后疫情时代准备好了没有</a>，现在来看，没有什么准备好不好的，而是已经来了，动态清零的措施也可能持久下去，我们可能和以后都要和核酸检测以及居家隔离的生活长期共存，直到病毒的风险降低到和流感同等水平。</p>
<p>至于开放、长期共存以及清零政策之间的矛盾，之前一个专家说“我们清零付出的努力是我们现在有权利去选择以何种方式去长期共存”。疫情结束比拼的就是医疗系统压力，如果感染后发展为重症的比例或者死亡率降到一个可以接受的水平，那么实际上疫情就结束了。东兴证券在2020年3月全球疫情初期的时候发了一个<a href="https://pdf.dfcfw.com/pdf/H3_AP202003181376603053_1.pdf?1584536688000.pdf">研报</a>，里面有个数据，美国的ICU床位数量是6.5万，中国是5.2万，中国人口是美国4倍左右，但ICU床位数还要少一些，这基本面就不在一个水平线上了。所以，清零对于医疗资源匮乏的区域，可能不是一个选择，而是一个必选项，只是这个必选项其他地区已经没有什么达成的可能了。当然，任何事情的选择都是有代价的，某种程度上来说格局确定了之后，其他个体的选择只能是在这个大框架内微调。比如在医院接诊方面做的更好，不要出现政策一刀切的情况。不要出现浪费公共资源的情况等等。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="china" label="China" scheme="https://blog.khsing.net/tags/china/" />
    <category term="covid" label="Covid" scheme="https://blog.khsing.net/tags/covid/" />
    <category term="life" label="Life" scheme="https://blog.khsing.net/tags/life/" />
    <category term="virus" label="Virus" scheme="https://blog.khsing.net/tags/virus/" />
    <category term="pandemic" label="Pandemic" scheme="https://blog.khsing.net/tags/pandemic/" />
    <published>2022-01-28T04:19:24Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[设置一下Squirrel输入法]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2021/12/setup-squirrel-ime.html" />
    <id>https://blog.khsing.net/2021/12/setup-squirrel-ime.html</id>
    <updated>2021-12-02T09:17:30Z</updated>
    <summary type="html"><![CDATA[<p>其实用Squirrel已经很久了，关于这个可以高度自定义的输入法的设置已经有非常多的帖子了，主要是官方带的中文输入法非常的废柴。不过即便如此Apple这个官方输入法有一个用法至今我还没有找到替代办法，那就是可以用拆字的方式来拼，比如李，可以输入mu’zi 再用Shift+空格的方式来选择，这对于一些不认识的字，但是拆开了又能认识的汉字非常有用。</p>]]></summary><content type="html"><![CDATA[<p>其实用Squirrel已经很久了，关于这个可以高度自定义的输入法的设置已经有非常多的帖子了，主要是官方带的中文输入法非常的废柴。不过即便如此Apple这个官方输入法有一个用法至今我还没有找到替代办法，那就是可以用拆字的方式来拼，比如李，可以输入mu’zi 再用Shift+空格的方式来选择，这对于一些不认识的字，但是拆开了又能认识的汉字非常有用。</p>
<p>在Mac上安装Squirrel基本都是用Homebrew了，一定要指定一下cask，默认的squirrel是一门编程语言。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>brew install --cask squirrel
</span></span></code></pre></div><p>为了方便我自己保存这些设置，在GitHub上我专门放了一个<a href="https://github.com/khsing/Rime">khsing/Rime</a><sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>来放这些配置文件，之后我只要把这个仓库clone下来之后做一个软链接到<code>~/Library/Rime</code>即可</p>
<p>Squirrel的词库中有大量的Unicode扩展字符集的字，在选单中显示为方框，最后我找到一个关于<a href="http://www.deadnine.com/anything/2018/0622/311.html">《CJK字体列表 日韩统一表意文字免费开源字体查询》</a><sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup> 的文章，找到了花园明朝字体，而这个字体也可以通过Homebrew来安装</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>brew install font-hanamina
</span></span></code></pre></div><p>这样一套下来，在Squirrel里再来个Deploy就齐活了。</p>
<p>另外，如果修改了配置导致Squirrel部署失败，它的提示是有一个INFO级别的日志会被记录下来，而这个日志是放在了临时文件夹里， <code>cd $(echo $TMPDIR)</code> 可解。</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p><a href="https://github.com/khsing/Rime">https://github.com/khsing/Rime</a> <a href="#fnref:1" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
<li id="fn:2">
<p><a href="http://www.deadnine.com/anything/2018/0622/311.html">http://www.deadnine.com/anything/2018/0622/311.html</a> <a href="#fnref:2" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
</ol>
</div>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="ime" label="Ime" scheme="https://blog.khsing.net/tags/ime/" />
    <category term="squirrel" label="Squirrel" scheme="https://blog.khsing.net/tags/squirrel/" />
    <category term="osx" label="Osx" scheme="https://blog.khsing.net/tags/osx/" />
    <published>2021-12-02T09:17:30Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[后疫情时代，准备好了吗？]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2021/10/after-covid19-pandemic.html" />
    <id>https://blog.khsing.net/2021/10/after-covid19-pandemic.html</id>
    <updated>2021-10-05T11:41:08Z</updated>
    <summary type="html"><![CDATA[<p>看起来到2022年的夏天，疫情基本上就可以结束了，其实所谓的结束，实际上应该是与之共存了。随着印度德尔塔毒株的全球蔓延，以及不断变异的情况，实现病例清零的目标越来越难，且成本越来越高。新西兰最近也放弃了清零目标，转而变成了开放模式。美国结束了生活补贴，过不多久美国人也该出门去工作了，后疫情时代貌似已经开始了。</p>]]></summary><content type="html"><![CDATA[<p>看起来到2022年的夏天，疫情基本上就可以结束了，其实所谓的结束，实际上应该是与之共存了。随着印度德尔塔毒株的全球蔓延，以及不断变异的情况，实现病例清零的目标越来越难，且成本越来越高。新西兰最近也放弃了清零目标，转而变成了开放模式。美国结束了生活补贴，过不多久美国人也该出门去工作了，后疫情时代貌似已经开始了。</p>
<p>开放国门以及回到一个行动自由的生活状态应该是很多人的希望，不过以目前国内的防疫政策和疫苗接种情况来说，这一个行动目标还有点遥远。接种了2针国药的疫苗，本是为第三针打辉瑞mRNA疫苗做准备，但是疫苗规划的总规划一句话：不通技术线路的疫苗不能混打。也就把我的小算盘给打翻了。</p>
<p>10.1的假期，我们选择了青岛来度假，同时也是带孩子们来看看海，顺从出生到现在还没有真正的看过海。就在休假前一天，深圳卫健委调侃的提醒大家出游要多带行李，毕竟一个假期之后你也不知道在哪里接受隔离。一语成谶，小道消息传来，去了新疆的朋友们有可能就一时半会儿回不来了。其实在来之前，是约了哥一家人来青岛的，不料出行前，侄子的学校给了通知，不得离津，每天要汇报行程码，如果离津回来要在家隔离14天才可以入学，所以我哥他们一家人就只能在天津过了。而且这样为了孩子上学而不能离开住地的情况也不是个例，应该是个普遍情况。这也许是学校的层层加码，也许是防疫安排。如果这样继续下去，那估计有学生的家庭出游就很难走远了。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="covid" label="Covid" scheme="https://blog.khsing.net/tags/covid/" />
    <category term="pandemic" label="Pandemic" scheme="https://blog.khsing.net/tags/pandemic/" />
    <published>2021-10-05T11:41:08Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[人生第一辆电车选了大众ID6.Crozz]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2021/08/first-ev-cars-in-my-life.html" />
    <id>https://blog.khsing.net/2021/08/first-ev-cars-in-my-life.html</id>
    <updated>2021-08-05T03:50:11Z</updated>
    <summary type="html"><![CDATA[<p>2018年我把摇油车指标变成了排队电车指标，寄希望2021年可以排队排到一辆电车牌照，结果年初的时候规则一改，变成了一年仅两次摇号不说，政策倾向了家庭号。这一番调整下来我对拥有北京车牌的事情基本不抱希望了，但是命运总是这样，当你不抱希望的时候给你一丝光明，5月底的时候中了一个新能源指标，剩下的问题变成了买什么车？</p>]]></summary><content type="html"><![CDATA[<p>2018年我把摇油车指标变成了排队电车指标，寄希望2021年可以排队排到一辆电车牌照，结果年初的时候规则一改，变成了一年仅两次摇号不说，政策倾向了家庭号。这一番调整下来我对拥有北京车牌的事情基本不抱希望了，但是命运总是这样，当你不抱希望的时候给你一丝光明，5月底的时候中了一个新能源指标，剩下的问题变成了买什么车？</p>
<p>说起我的用车需求主要是家里人员众多，需要一个周末能载着全家人出行去个野郊之类的，至于平常上下班，基本上都是和朋友一起开车走或者地铁了，基本上7座是一个很大的考虑点，只是电车的选择面真的很窄。因为是电车，第一个进入视野的是特斯拉Model Y，其次是鱼总极力推荐的蔚来，再后来是看到了大众的ID6系列，其他的车型因品牌或者参数等原因均不纳入考虑范畴。</p>
<p>试驾下来感受如下</p>
<ul>
<li>Model Y：优点是电车品牌力十足，外观谈不上特别好看，但是科技感还是挺足的，内饰简约到简单。加速没的说，非常有爆发力，驾驶起来很爽，除了单踏板模式需要适应之外，开起来是很好的，底盘稳反馈清晰，ACC巡航跟车很好用，自动并线也OK。缺点是后排空间小，座椅没有支撑，另外就是暴力加速驾驶的时候后排会比较不适。</li>
<li>蔚来：优点是服务好，造型也不错，内饰可以算豪华。开起来加速爆发力也够，但是转向的时候底盘不够稳，有点开船的意思。自动巡航也还可以，自动并线不好用。缺点是贵（我的缺点）而且那个BaaS服务一旦选择就无法更换，这样在二手的时候很不合算，虽然可以直接卖给蔚来，但看了一个视频是车主44万来的车，仅半年出手蔚来只能给31万，车商只能给28万，而且租电服务开的时间越久越不合算。</li>
<li>ID6.Crozz/X：优点是7座，配置中规中矩，第二排带座椅加热且腿部支撑可以。开起来很像一台油车，基本没有什么爆发力，踩到底也就那样，好在底盘够稳，没有什么晃的感觉，作为驾驶员来说没有惊喜。这车分了一汽大众的Crozz和上汽大众的X两个版本，差别不大，首发版(Crozz)和初见版(X)目前是ID6车型里性价比最好的选择，Crozz比X多的就是360影像和21寸轮毂，其他的就是灯饰上的差别，Crozz比X少了20km续航，据评测视频里的厂商说是轮毂造型的原因。</li>
</ul>
<p>最后综合考虑之下选择了ID6.Crozz，主要的原因就是空间，7座的纯电车确实很少，可选的其实就BYD唐、腾势X、蔚来ES8。腾势X和BYD唐是套娃，ES8开起来像个大船，租电服务也很鸡肋，最主要是超预算XD。Crozz和X之间来说一汽大众德味浓一些，配置上更好一些，所以就这样定下来了。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="cars" label="Cars" scheme="https://blog.khsing.net/tags/cars/" />
    <category term="ev" label="Ev" scheme="https://blog.khsing.net/tags/ev/" />
    <category term="life" label="Life" scheme="https://blog.khsing.net/tags/life/" />
    <published>2021-08-05T03:50:11Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Apple Silicon版本的MacBook Pro]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2021/01/apple-silicon-macbook-pro.html" />
    <id>https://blog.khsing.net/2021/01/apple-silicon-macbook-pro.html</id>
    <updated>2021-01-28T08:17:39Z</updated>
    <summary type="html"><![CDATA[<p>1月中旬的时候拿到了m1芯片的MacBook Pro，用了一个多礼拜了，整体来说非常的流畅，没有什么限制或者羁绊影响日常使用的。作为一个开发人员来说，目前只有Docker不能使用是略微麻烦一点的事情，除此之外真是没有遇到软件方面有什么真正的困难。</p>]]></summary><content type="html"><![CDATA[<p>1月中旬的时候拿到了m1芯片的MacBook Pro，用了一个多礼拜了，整体来说非常的流畅，没有什么限制或者羁绊影响日常使用的。作为一个开发人员来说，目前只有Docker不能使用是略微麻烦一点的事情，除此之外真是没有遇到软件方面有什么真正的困难。</p>
<p>首先，令人最为惊讶的就是其超强的待机时长，20个小时妥妥的，丝毫没有夸张，对比之下之前Intel版本的MBP连4个小时都撑不下来。其次是键盘终于从铁板一块的蝶式回到了剪刀式，ESC键也回来了，苹果在这一点上真的是不用进步，退步就可以做的非常好，再退一步把TouchBar给退回来就普天同庆了。</p>
<p>我用的CLI的部分比较多，软件大多也都是Homebrew安装的，虽然iTerm以及Homebrew都已经支持了arm架构的M1系列机器，但是部分软件的安装还是存在问题，所以最简单的方案就是将iTerm直接制定以x86方式运行，然后再安装Homebrew，基本上没有遇到大的问题了，pyenv安装的Python可能会遇到一些问题，最后我都是直接使用Homebrew版的Python来解决。</p>
<p>总体而言，苹果这次把整个生态的有一次的掌握在自己手里了，Intel最近是背腹受敌，加把油貌似还不太够，换了CEO不知道有没有什么改善了。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="apple" label="Apple" scheme="https://blog.khsing.net/tags/apple/" />
    <category term="macbook" label="Macbook" scheme="https://blog.khsing.net/tags/macbook/" />
    <category term="chips" label="Chips" scheme="https://blog.khsing.net/tags/chips/" />
    <published>2021-01-28T08:17:39Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[逃离Google服务]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2020/12/escape-from-google.html" />
    <id>https://blog.khsing.net/2020/12/escape-from-google.html</id>
    <updated>2020-12-22T08:11:05Z</updated>
    <summary type="html"><![CDATA[<p>曾几何时，Google的网络服务代表着快速、稳定和安全，然而凡事大了之后就开始走样了，Google也不是当年那个不做恶的Google了，现在的Google可以说比我自己还了解我自己，我搜索过的关键字，访问过的网站，到过的地方，收到的邮件以及哪些我拍出来的照片和视频，这些东西Google统统都知道。</p>]]></summary><content type="html"><![CDATA[<p>曾几何时，Google的网络服务代表着快速、稳定和安全，然而凡事大了之后就开始走样了，Google也不是当年那个不做恶的Google了，现在的Google可以说比我自己还了解我自己，我搜索过的关键字，访问过的网站，到过的地方，收到的邮件以及哪些我拍出来的照片和视频，这些东西Google统统都知道。</p>
<p>何以至此？无非就是Google的服务实在是太好用了，Google提供最早的帐号服务就是Gmail了，1G免费空间，一个酷酷的网页富应用客户端，俘获了多少人的心，随后的Google Map又让多少人从卫星视觉看到了自家的屋顶。</p>
<p>头两天Google的服务面临45分钟的大规模宕机，这在历史上是非常罕见的，随着Google服务覆盖的面越来越广，我认为有必要降低自己对于Google服务依赖程度，好让自己掌握自己更多的自己的数据（这里存在很多风险，自己保存数据的成本会很高，且安全也有很大挑战，参考希拉里邮件门案）</p>
<p>目前我使用过的Google服务，以及替代方案：</p>
<ul>
<li>Google Search: 目前能用的货也就是Bing和DuckDuckGo了，Bing肯定不是什么好的选择，DuckDuckGo英文还可以，中文基本废柴，先切换过去试试看</li>
<li>Gmail：难以替代，而且自己做的话有100%的概率做的不如Gmail</li>
<li>Google Map：在国内基本不能用，在国外基本上不能不用</li>
<li>Google Photos：如果排除掉随意搜索人、物和文字搜索的内容，这个是比较容易替代的</li>
<li>Google Chrome：已经变成了新的IE，很多内部工具都变成了只支持Chrome，第一个淘汰，用Firefox替代</li>
<li>Android：目前有一个Pixel 3a的手机，难以替代，而且Android上除了他家的Play商店之外我也没法相信其他的App Store</li>
<li>YouTube：不用想了，没有什么替代品</li>
</ul>
<p>貌似也就这么多了，要想逃离Google还不失去太多用户体验，还挺难的，Google这一套新的Icon也是够丑就是了</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="escape" label="Escape" scheme="https://blog.khsing.net/tags/escape/" />
    <category term="google" label="Google" scheme="https://blog.khsing.net/tags/google/" />
    <published>2020-12-22T08:11:05Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[iPhone 12/Pro]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2020/11/iphone-12-pro.html" />
    <id>https://blog.khsing.net/2020/11/iphone-12-pro.html</id>
    <updated>2020-11-01T15:34:48Z</updated>
    <summary type="html"><![CDATA[<p>每年iPhone的新品发布都会引起一波新的讨论，今年本来我也没有什么换机的动力，不过还是或被动或主动的看了不少评测的视频和文章，前些日子也摸了一下mactanxin的新Pro，今天在店里也摸了一下12，总体来说12已经满足我对一个手机的要求了。</p>]]></summary><content type="html"><![CDATA[<p>每年iPhone的新品发布都会引起一波新的讨论，今年本来我也没有什么换机的动力，不过还是或被动或主动的看了不少评测的视频和文章，前些日子也摸了一下mactanxin的新Pro，今天在店里也摸了一下12，总体来说12已经满足我对一个手机的要求了。</p>
<p>之前我对11和11 Pro的差异并没有太多关注，直到上个礼拜老婆在用人像模式拍摄的时候不能进行2x缩放这个，我才注意到这个zooming的差异。12和12 Pro依然存在这种差异，只是对我来说真的不是特别重要。列个差异清单吧</p>
<ul>
<li>屏幕：一样大，都是OLED，12 是 625nits，Pro是800 nits差别真的很小，HDR下都是1200 nits</li>
<li>相机：12比Pro少了一个Telephoto的远焦镜头，这就是不能在人像模式下做2x缩放的原因，变焦Pro是4x光学，10x数码，12是2x光学，5x数码；Pro多出来的LiDAR让Pro能更加精确的调整焦距，并且在人像模式下更好的处理拍摄物体的边缘。</li>
<li>边框、内存和容量：12是铝合金，Pro是不锈钢；12是4G RAM，Pro是6G RAM；12的存储容量分64，128，256三档，Pro分128，256，512三档。</li>
</ul>
<p>剩下的不同只有颜色了，一个程序员12只有黑色和白色可选，剩下的几个颜色我都不太喜欢。</p>
<p>从iPhone的在售产品线来说，确实覆盖了比较宽的人群，基本上各个阶段的人群都有合适的产品对应，只有XR还在售确实匪夷所思；</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="iphone" label="Iphone" scheme="https://blog.khsing.net/tags/iphone/" />
    <category term="apple" label="Apple" scheme="https://blog.khsing.net/tags/apple/" />
    <published>2020-11-01T15:34:48Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[疫期记事-20201024]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2020/10/covid19notes-20201024.html" />
    <id>https://blog.khsing.net/2020/10/covid19notes-20201024.html</id>
    <updated>2020-10-24T17:26:14Z</updated>
    <summary type="html"><![CDATA[<p>今天是个周末带孩子去奥森玩了一天，人还是不少的，也来记录一下最近的生活情况。以北京现在的情况来说，基本上和以前的生活差不多了，对比有如下几个不同：</p>]]></summary><content type="html"><![CDATA[<p>今天是个周末带孩子去奥森玩了一天，人还是不少的，也来记录一下最近的生活情况。以北京现在的情况来说，基本上和以前的生活差不多了，对比有如下几个不同：</p>
<ul>
<li>戴口罩：公开区域基本上可以不戴口罩也没有人来管，地铁和商场的入口还是会要求戴口罩，尤其以地铁最为严格，有安全员定期来巡检，发现不戴的会提醒（要求）。公交车上也是必须戴的，不戴的话会遭到全车的人的口伐，口袋里要常备口罩。</li>
<li>测体温：地铁、大厦都会有测温，小区的入口也会测温，不过现在很多小区门口的那种人员常驻的测温团队都消失了，部分小区取而代之的是测温开门。</li>
<li>飞机高铁出行：基本上这些区域的措施比地铁还要严格一些，而且还要检查各地的健康码，北京要求北京健康码，广州要求穗康码，各个省基本上都有各自的码，国务院还有一个基于移动大数据的健康码。</li>
<li>核酸检测：老婆11月要参加一个考试，其中一个要求是进入考场要持有7天内的核酸检测阴性结果。6月的时候家里人要手术住院治疗，也是需要核酸检测阴性结果，而且一旦开始陪床后就不能再出病房区域了。</li>
<li>就医：8月的时候孩子有些感冒去了一次妇幼医院，除了测体温一类的常规入口检查，发现原来的一些自助挂号等设施都有些停摆，可能是通州妇幼自己的问题，也可能是他们正在就疫情后的情况做一些调整。</li>
</ul>
<p>从疫情发生到现在，可以说基本上是快一年了，中国的疫情在1月爆发，经历了几个月的管制措施之后到4月底左右，官方数据来说已经得到有效的控制，且经历了5.1和10.1两次较长的假期之后没有出现全国大规模的疫情爆发（一切都基于官方数据），中间有大连、新疆、北京以及最近青岛的疫情二次爆发，也很快都得到了有效的控制（还是官方数据）。从自己及家庭生活来说，3月初结束在家办公，7月开始出差到现在，生活基本上适应了。就中国疫情控制情况来说，成绩是斐然的，当然如果以中国的措施来说，要是这疫情依然无法控制，那人类离末日也就不远了。其实整个东亚地区的疫情控制都是不错的，甚至包括韩国，其中以台湾的控制情况更为突出。我想这和东亚地区的文化是离不开的，都有对权威的顺从的文化背景，而这种顺从在突发疫情的情况中只要权威的方法是正确的，那么群体的结果就有可能是积极的。</p>
<p>从10月公布的经济数据来说，中国的出口增长还是明显的，其中一个有利因素也是疫情控制的比较好，有利于生产活动的恢复。就自己观察来看，不少门店都关闭了，线下的实体门店在电商和疫情的双重夹击下，使得本就不富裕的家庭雪上加霜。线上经济以及在线教育确实在今年发展迅速。</p>
<p>接下来挑战比较大的是冬季，毕竟是呼吸道疾病高发期，也是流感爆发的季节，已经预约了流感疫苗，但是排队的人多，估计打上了也快11月了。</p>
<p>还是希望一切平安便好。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="covid" label="Covid" scheme="https://blog.khsing.net/tags/covid/" />
    <category term="story" label="Story" scheme="https://blog.khsing.net/tags/story/" />
    <category term="pandemic" label="Pandemic" scheme="https://blog.khsing.net/tags/pandemic/" />
    <published>2020-10-24T17:26:14Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[疫期记事-20200615]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2020/06/covid19-20200615.html" />
    <id>https://blog.khsing.net/2020/06/covid19-20200615.html</id>
    <updated>2020-06-15T08:17:50Z</updated>
    <summary type="html"><![CDATA[<p>北京自打6月11日本土确诊2例之后到今天已经累计50多人确诊，而且爆发地点在新发地集散地，会不会是天女散花式的爆发，不得而知，希望不要吧，毕竟生活刚刚有点恢复的情况。</p>]]></summary><content type="html"><![CDATA[<p>北京自打6月11日本土确诊2例之后到今天已经累计50多人确诊，而且爆发地点在新发地集散地，会不会是天女散花式的爆发，不得而知，希望不要吧，毕竟生活刚刚有点恢复的情况。</p>
<p>今天报道的核算检查样本是7.9万人，检出阳性59人，不到千分之一，我认为这个比例还是比较低的，毕竟这些人是相对密切的接触者；至于三文鱼带毒的问题真是无语，目前看到的研究是三文鱼应该无法染毒，病毒无法在三文鱼上复制，在切割三文鱼的案板上发现病毒，那运输三文鱼的车辆呢，如果三文鱼带毒，这些地方都应该有，至于说是冷链投毒就更是让人怀疑发文的人的动机了。</p>
<p>虽然我自己也戴了很长一段时间的口罩，也有拿防霾用的面罩来做防护，但是我一直好奇这个防护办法究竟有没有效果？刚才看了一下WHO和CDC的解释来说，口罩主要防止病毒传播进入空气和环境，即便没有症状，但也有可能是个无症状感染者，也能够传播病毒，而口罩可以有效降低病人向外传播；所以理论上讲健康的人并不需要戴口罩，但是难点在于新冠有潜伏期，未发病的情况下依然可以传播，那就所有人都戴口罩好了。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="beijing" label="Beijing" scheme="https://blog.khsing.net/tags/beijing/" />
    <category term="china" label="China" scheme="https://blog.khsing.net/tags/china/" />
    <category term="covid" label="Covid" scheme="https://blog.khsing.net/tags/covid/" />
    <category term="pandemic" label="Pandemic" scheme="https://blog.khsing.net/tags/pandemic/" />
    <published>2020-06-15T08:17:50Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[疫期记事-20200506这也许是新生活的开始]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2020/05/may-be-its-start-of-new-life.html" />
    <id>https://blog.khsing.net/2020/05/may-be-its-start-of-new-life.html</id>
    <updated>2020-05-06T12:00:03Z</updated>
    <summary type="html"><![CDATA[<p>刚刚5.1的小长假过去，如果没有爆发，那中国的疫情貌似就过去了，两会的日期也已经定下来了，剩下的就是小学开学了。</p>
<p>我们这边复工复产算是比较早的，基本上3月初就开始了，到现在也有两个月了，但是我也听到了很多复工无法复产的新闻，着实让人看到这次疫情带来的压力。</p>]]></summary><content type="html"><![CDATA[<p>刚刚5.1的小长假过去，如果没有爆发，那中国的疫情貌似就过去了，两会的日期也已经定下来了，剩下的就是小学开学了。</p>
<p>我们这边复工复产算是比较早的，基本上3月初就开始了，到现在也有两个月了，但是我也听到了很多复工无法复产的新闻，着实让人看到这次疫情带来的压力。</p>
<p>美国和欧洲的疫情也都很严重，中国的经济外部依赖那么严重，经济的三驾马车基本上都崴脚了，很悲观。</p>
<p>整个疫情不像非典那次，病毒没有完全消灭，现在扑灭下去，也还有可能死灰复燃，所以即便是大家都复工复产了，但是回到之前的生活却是不可能的了。我们会不会长期戴着口罩？我们和其他人的社交距离是不是也要长期保持？而且根据之前看到的数据保持社交距离等措施的收效慎微，针对新冠只有Lock Down才是可以把R0降低到1以下的措施。</p>
<p>既然回不去，那新的生活是什么样呢？目前来看有这么几个已经在实施的措施可能长期执行下去，并且对生活带来影响</p>
<ul>
<li>戴口罩，虽然不一定完全有用，但是走到哪里要是没有戴口罩基本就已经是异类了</li>
<li>进入大厦/小区/封闭场所都做体温检查（虽然和摆设差不多）</li>
<li>保持社交距离，减少聚集，上饭店和逛街的频率大大降低，工作和生活基本上是两点一线了</li>
<li>医院长期设置发热门诊，患者体温异常估计要先去发热门诊了，以前这个是选项，现在估计是必选了</li>
<li>孩子已经在家呆了快半年了，娃他妈和老人目前轮番带娃，所谓的远程上课也不是那么现实，毕竟送娃去学校才是【正经教育】（为人父母的能休息一会儿）</li>
</ul>
<p>这大概就是以后的常态了，旅游就更不太可能了。。。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="covid" label="Covid" scheme="https://blog.khsing.net/tags/covid/" />
    <category term="life" label="Life" scheme="https://blog.khsing.net/tags/life/" />
    <category term="pandemic" label="Pandemic" scheme="https://blog.khsing.net/tags/pandemic/" />
    <published>2020-05-06T12:00:03Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[疫期记事-20200310]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2020/03/covid-20200310.html" />
    <id>https://blog.khsing.net/2020/03/covid-20200310.html</id>
    <updated>2020-03-10T05:54:18Z</updated>
    <summary type="html"><![CDATA[<p>从1月20中国宣布人传人疫情大爆发之后到现在，全球已经有100多个国家出现COVID-19的病例了，超过10万人感染，全球流行已经是事实了。</p>
<p>由此带来的恐慌情绪也达到了极点，昨天美股经历了史上的第二次熔断，而上一次发生熔断还是1997年的亚洲金融危机期间，所以也是一个见证历史的时刻。而石油价格也跌到了20美元附近，可谓是历史低点了，而俄罗斯和沙特的协议没能达成，俄罗斯有威胁称要把石油价格干到10美元一桶。现在俨然一幅末世的景象。</p>]]></summary><content type="html"><![CDATA[<p>从1月20中国宣布人传人疫情大爆发之后到现在，全球已经有100多个国家出现COVID-19的病例了，超过10万人感染，全球流行已经是事实了。</p>
<p>由此带来的恐慌情绪也达到了极点，昨天美股经历了史上的第二次熔断，而上一次发生熔断还是1997年的亚洲金融危机期间，所以也是一个见证历史的时刻。而石油价格也跌到了20美元附近，可谓是历史低点了，而俄罗斯和沙特的协议没能达成，俄罗斯有威胁称要把石油价格干到10美元一桶。现在俨然一幅末世的景象。</p>
<p>要说疫情，根据中国的官方数据来看，新增病例数已经逐步在降低，治愈数量也正在增加，部分省份出现了病例清零的情况，疫情应该是得到了有效控制。韩国除了开始因为新天地教会的问题大爆发后，目前新增已经在降低了，日本本土也增长比较缓慢，所以日韩应该可以控制住。反而现在问题最大的是意大利和伊朗，现在的意大利几乎是欧洲的湖北，虽然做了全国封城，但是对意大利政府的管理水平存疑，而伊朗则更不用说，情况只有更糟没有最糟。</p>
<p>貌似这个疫情的传播阻断已经无效了，而经济活动并不能停，也停不了。那结果就只有两个了，一、所有人感染，能产生抗体的活，不能产生抗体的死。二、研发出疫苗病毒被消灭。</p>
<p>照这个情况来看，能做的就是延缓病毒的感染过程，而为了延缓势必会极大影响大家的生活方式，减少外出，减少不必要的聚集性活动。影响消费和经济是必然了，实体的服务业和零售业必然受到严重冲击，疫情的长期化对这两个行业必然是毁灭性的。经济生产活动也因为人口流动减少，产能恢复情况势必受到影响，这些都是中国对全球供应链的调整，如果持续下去会不会导致经济上的实际脱钩呢？</p>
<p>我没有答案，短期来说我是非常悲观的，以至于我抛售了部分资产来换取流动性和现金流。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="china" label="China" scheme="https://blog.khsing.net/tags/china/" />
    <category term="virus" label="Virus" scheme="https://blog.khsing.net/tags/virus/" />
    <category term="pandemic" label="Pandemic" scheme="https://blog.khsing.net/tags/pandemic/" />
    <category term="covid" label="Covid" scheme="https://blog.khsing.net/tags/covid/" />
    <published>2020-03-10T05:54:18Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[LVM的作弊条]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2019/11/lvm-tips.html" />
    <id>https://blog.khsing.net/2019/11/lvm-tips.html</id>
    <updated>2019-11-02T00:35:48Z</updated>
    <summary type="html"><![CDATA[<p>Linux里在分区上使用LVM有诸多方便之处，如动态调整、可以组成软RAID一类，几个常用的命令记录一下</p>
<ul>
<li>fdisk: 查看磁盘状态和分区工具，fdisk -l，分区模式分GPT，LVM的分区code是8e</li>
<li>pvs/pvdisplay：查看物理卷</li>
<li>vgs/vgdisplay: 查看卷组</li>
<li>lvs/lvdisplay: 查看逻辑卷</li>
</ul>
<p>LVM创建的顺序，修改和删除的顺序反向</p>]]></summary><content type="html"><![CDATA[<p>Linux里在分区上使用LVM有诸多方便之处，如动态调整、可以组成软RAID一类，几个常用的命令记录一下</p>
<ul>
<li>fdisk: 查看磁盘状态和分区工具，fdisk -l，分区模式分GPT，LVM的分区code是8e</li>
<li>pvs/pvdisplay：查看物理卷</li>
<li>vgs/vgdisplay: 查看卷组</li>
<li>lvs/lvdisplay: 查看逻辑卷</li>
</ul>
<p>LVM创建的顺序，修改和删除的顺序反向</p>
<ul>
<li>pvcreate: 创建物理卷</li>
<li>vgcreate: 创建卷组</li>
<li>lvcreate: 创建逻辑卷</li>
</ul>
<p>几个场景的操作顺序</p>
<ul>
<li>新建LVM
<ul>
<li>pvcreate</li>
<li>vgcreate</li>
<li>lvcreate</li>
<li>mkfs</li>
<li>mount</li>
</ul>
</li>
<li>新增磁盘
<ul>
<li>fdisk/pvcreate，可以分区后添加，也可以直接把裸设备添加进去</li>
<li>vgextend 增加物理卷到卷组</li>
<li>lvextend 扩展逻辑卷</li>
<li>resize2fs/xfs_growfs</li>
</ul>
</li>
<li>调整磁盘大小：现在云主机可以在线调整块设备大小
<ul>
<li>pvresize</li>
<li>vgs查看一下free size</li>
<li>lvextend 增加逻辑卷的空间</li>
<li>resize2fs/xfs_growfs文件系统大小</li>
</ul>
</li>
<li>移除磁盘
<ul>
<li>pvmove把物理卷的数据挪到其他物理卷</li>
<li>vgreduce从卷组里把物理卷删除</li>
<li>pvremove把物理卷删除</li>
</ul>
</li>
</ul>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="system" label="System" scheme="https://blog.khsing.net/categories/system/" />
    <category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="lvm" label="Lvm" scheme="https://blog.khsing.net/tags/lvm/" />
    <category term="disk" label="Disk" scheme="https://blog.khsing.net/tags/disk/" />
    <category term="linux" label="Linux" scheme="https://blog.khsing.net/tags/linux/" />
    <published>2019-11-02T00:35:48Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Catalina的Safari没了uBlock Origin]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2019/11/catalina-safari-has-no-ublock-origin.html" />
    <id>https://blog.khsing.net/2019/11/catalina-safari-has-no-ublock-origin.html</id>
    <updated>2019-11-01T22:27:38Z</updated>
    <summary type="html"><![CDATA[<p>Catalina带来了Safari 13，最直接的一个变化是所有的Extension都必须从Mac App Store里安装，好用的uBlock Origin彻底没戏了，算是官方写了<a href="https://www.reddit.com/r/uBlockOrigin/comments/d18cpi/explanation_of_the_state_of_ublock_origin_and/">公告</a>出来让大家用其他家的，或者换到Firefox之类的浏览器，Chrome很快就会干掉Ad Blocker所以换过去也用不了多久，Microsoft Edge好像没有太多支持也没有声音，但是这几个大厂的做法应该都差不多，Ad Blocker的日子难过。</p>]]></summary><content type="html"><![CDATA[<p>Catalina带来了Safari 13，最直接的一个变化是所有的Extension都必须从Mac App Store里安装，好用的uBlock Origin彻底没戏了，算是官方写了<a href="https://www.reddit.com/r/uBlockOrigin/comments/d18cpi/explanation_of_the_state_of_ublock_origin_and/">公告</a>出来让大家用其他家的，或者换到Firefox之类的浏览器，Chrome很快就会干掉Ad Blocker所以换过去也用不了多久，Microsoft Edge好像没有太多支持也没有声音，但是这几个大厂的做法应该都差不多，Ad Blocker的日子难过。</p>
<p>本来在用Catalina beta的时候就换到了Chrome，用了一段时间还是觉的太重了，RAM吃的太狠以及电源不友好，更奇怪的是在阿里云的后台里有个refund页面加载不完整，在关掉uBO之后也还是不太好，所以也就罢了，装上AdGuard继续用Safari。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="safari" label="Safari" scheme="https://blog.khsing.net/tags/safari/" />
    <category term="osx" label="Osx" scheme="https://blog.khsing.net/tags/osx/" />
    <published>2019-11-01T22:27:38Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Twitter for Mac又上架了]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2019/11/twitter-for-mac-back-to-mas.html" />
    <id>https://blog.khsing.net/2019/11/twitter-for-mac-back-to-mas.html</id>
    <updated>2019-10-31T22:30:09Z</updated>
    <summary type="html"><![CDATA[<p>Twitter for Mac又上架到Mac App Store了，其实也有一段时间了，但是就我刚才安装试用了一下，其体验非常糟糕，完全没有当年Twitter for mac/iOS版本的特点，更像是实习生做的一个web版的包裹而已。</p>]]></summary><content type="html"><![CDATA[<p>Twitter for Mac又上架到Mac App Store了，其实也有一段时间了，但是就我刚才安装试用了一下，其体验非常糟糕，完全没有当年Twitter for mac/iOS版本的特点，更像是实习生做的一个web版的包裹而已。</p>
<p>Twitter当年可是收购了iOS版twitter最好的团队，真是可惜了。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="twitter" label="Twitter" scheme="https://blog.khsing.net/tags/twitter/" />
    <category term="mac" label="Mac" scheme="https://blog.khsing.net/tags/mac/" />
    <published>2019-10-31T22:30:09Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[用homebrew来设置Python开发环境]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2019/01/setting-python-devenv-by-homebrew.html" />
    <id>https://blog.khsing.net/2019/01/setting-python-devenv-by-homebrew.html</id>
    <updated>2019-01-24T09:48:07Z</updated>
    <summary type="html"><![CDATA[<p>Homebrew已经是macOS里非常好的包管理工具了，目前在macOS上设置Python开发环境主要解决几个问题</p>
<ul>
<li>Python的多个版本，python2和python3共存，毕竟还有一些老的项目在用Python2</li>
<li>virturalenv，没有这个不同项目怎么活</li>
<li>pip安装一些扩展的问题</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>brew install python2 python3
</span></span><span style="display:flex;"><span>pip install virtualenv virtualenvwrapper
</span></span></code></pre></div><p>在安装<code>mysql-python</code>的时候可能会遇到<code>openssl</code>头文件无法找到的问题</p>]]></summary><content type="html"><![CDATA[<p>Homebrew已经是macOS里非常好的包管理工具了，目前在macOS上设置Python开发环境主要解决几个问题</p>
<ul>
<li>Python的多个版本，python2和python3共存，毕竟还有一些老的项目在用Python2</li>
<li>virturalenv，没有这个不同项目怎么活</li>
<li>pip安装一些扩展的问题</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>brew install python2 python3
</span></span><span style="display:flex;"><span>pip install virtualenv virtualenvwrapper
</span></span></code></pre></div><p>在安装<code>mysql-python</code>的时候可能会遇到<code>openssl</code>头文件无法找到的问题</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>env <span style="color:#8be9fd;font-style:italic">LDFLAGS</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">"-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib"</span> pip install mysql
</span></span></code></pre></div>]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="brew" label="Brew" scheme="https://blog.khsing.net/tags/brew/" />
    <category term="python" label="Python" scheme="https://blog.khsing.net/tags/python/" />
    <category term="osx" label="Osx" scheme="https://blog.khsing.net/tags/osx/" />
    <published>2019-01-24T09:48:07Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[About Me]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/about-me/" />
    <id>https://blog.khsing.net/about-me/</id>
    <updated>2019-01-18T12:06:40Z</updated>
    <summary type="html"><![CDATA[<h3 id="who-am-i">Who am I</h3>
<p>Hello, I am Guixing. I am living in Canada with my family right now. I am writing code and build stuff on internet to feed myself. In 1996, it’s first time I touched a computer in printing office of my middle school. Since then, I have been addicted to computers, learning computer started being a thing in my life. My first programming language was [LOGO]<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>, which control a tortoise move on screen to draw lines.</p>]]></summary><content type="html"><![CDATA[<h3 id="who-am-i">Who am I</h3>
<p>Hello, I am Guixing. I am living in Canada with my family right now. I am writing code and build stuff on internet to feed myself. In 1996, it’s first time I touched a computer in printing office of my middle school. Since then, I have been addicted to computers, learning computer started being a thing in my life. My first programming language was [LOGO]<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>, which control a tortoise move on screen to draw lines.</p>
<p>Several years later, I joined [SINA.com]<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup> as a system engineer and started my career. I really love [FreeBSD]<sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup>, not just FreeBSD was original UNIX, also because the document was extremely good and well organised. I also spend a lot of time to understand OS Kernel, Network, Database and System Architecture. Python is my favourite programming language, I am also good at PHP.</p>
<p>More or less I am an experienced software developer or system architect and interest in engineering of software development. Tools and methods are very important within development process. Draw clean digram, write good document, share knowledge and motivation to solve problem are also significant soft-skills.</p>
<p>I blog for many years, mostly are life records and notes of software development.</p>
<h3 id="contact">Contact</h3>
<p>The easiest way to contact me is email, here is my email address: <a href="mailto:khsing.cn@gmail.com">khsing.cn@gmail.com</a>. I also tweet to blame the world, here is my twitter [@khsing]<sup id="fnref:4"><a href="#fn:4" class="footnote-ref" role="doc-noteref">4</a></sup>.</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p><a href="https://en.wikipedia.org/wiki/Logo_(programming_language)">https://en.wikipedia.org/wiki/Logo_(programming_language)</a> <a href="#fnref:1" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
<li id="fn:2">
<p><a href="https://www.sina.com.cn">https://www.sina.com.cn</a> <a href="#fnref:2" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
<li id="fn:3">
<p><a href="https://freebsd.org">https://freebsd.org</a> <a href="#fnref:3" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
<li id="fn:4">
<p><a href="https://twitter.com/khsing">https://twitter.com/khsing</a> <a href="#fnref:4" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
</ol>
</div>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><published>2019-01-18T12:06:40Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[把blog从archive.org恢复回来了]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2019/01/restore-blog-from-archive-org.html" />
    <id>https://blog.khsing.net/2019/01/restore-blog-from-archive-org.html</id>
    <updated>2019-01-15T08:40:48Z</updated>
    <summary type="html"><![CDATA[<p>冗余不做，日子甭过，备份不做，十恶不赦。</p>
<p>对于自己的blog之前做的备份都已经失效了，放在vps上，一个手快释放了一台，就跟着灰飞烟灭了。</p>
<p>今天花了一点时间写了个脚本把以前的文章从互联网档案馆[archive.org]<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>里给捞出来了，算是恢复了，部分文章的格式不对，评论都没有了，也是损失惨重。</p>]]></summary><content type="html"><![CDATA[<p>冗余不做，日子甭过，备份不做，十恶不赦。</p>
<p>对于自己的blog之前做的备份都已经失效了，放在vps上，一个手快释放了一台，就跟着灰飞烟灭了。</p>
<p>今天花了一点时间写了个脚本把以前的文章从互联网档案馆[archive.org]<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>里给捞出来了，算是恢复了，部分文章的格式不对，评论都没有了，也是损失惨重。</p>
<p>先用了 [hartator/wayback-machine-downloader]<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup> 把文件都down回来，然后再用 Python 逐个html里翻文章出来，最后输出成一些通用的格式再导入就好了，[脚本在此]<sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup>。</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p><a href="https://archive.org">https://archive.org</a> <a href="#fnref:1" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
<li id="fn:2">
<p><a href="https://github.com/hartator/wayback-machine-downloader">https://github.com/hartator/wayback-machine-downloader</a> <a href="#fnref:2" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
<li id="fn:3">
<p><a href="https://gist.github.com/khsing/2f93e8a6fdb2d38b974a8229684de785">https://gist.github.com/khsing/2f93e8a6fdb2d38b974a8229684de785</a> <a href="#fnref:3" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
</ol>
</div>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <published>2019-01-15T08:40:48Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[机械键盘]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2018/06/mechanical-keyboard.html" />
    <id>https://blog.khsing.net/2018/06/mechanical-keyboard.html</id>
    <updated>2018-06-21T08:49:06Z</updated>
    <summary type="html"><![CDATA[<p>目前为止手里用过三把机械键盘，分别是</p>
<ul>
<li>Filco 87圣手，红轴</li>
<li>iKBC Poker II，青轴</li>
<li>KeyWalker 87键有线蓝牙，茶轴</li>
</ul>
<p>从整体感觉上来说，Filco 87圣手无论是做工还是手感都是这三把中最好的，敲击起来的那种沉着感，声音浑厚，手感轻盈精准，缺点就是小贵了一些，并且没有更多的设置，也没有灯（虽然我不care），而且之后出的蓝牙版是3.0版。</p>]]></summary><content type="html"><![CDATA[<p>目前为止手里用过三把机械键盘，分别是</p>
<ul>
<li>Filco 87圣手，红轴</li>
<li>iKBC Poker II，青轴</li>
<li>KeyWalker 87键有线蓝牙，茶轴</li>
</ul>
<p>从整体感觉上来说，Filco 87圣手无论是做工还是手感都是这三把中最好的，敲击起来的那种沉着感，声音浑厚，手感轻盈精准，缺点就是小贵了一些，并且没有更多的设置，也没有灯（虽然我不care），而且之后出的蓝牙版是3.0版。</p>
<p>其次是Keywalker(键行者)，这是一套由国内深圳的一家手工厂做的键盘，整体来说完整度很不错，键盘的编程功能很好用，使用一个windows版的软件进行操作，比一般的口诀式录制模式好很多，也很直观。目前所使用的茶轴也充分的发挥了茶轴的特点，算是蛮不错的一款。缺点是品控需要加强，第一次发货的版本一个B键有瑕疵，客服倒是很直接的给换了新的。另外一点就是键盘的某些键有弹簧的音颤，这一点不是特别好，虽然有那么一点敲击IBM M键盘的感觉，但是我并不是很喜欢这种感觉，还是特别喜欢Filco的那种浑厚的感觉。</p>
<p>最后是Poker II这一把，整体来说没有亮点，但是也没有太大的缺点，67键的布局导致我在很长一段</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="keyboard" label="Keyboard" scheme="https://blog.khsing.net/tags/keyboard/" />
    <published>2018-06-21T08:49:06Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[iPhone X 之短期体验]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2017/11/iphone-x-first-experience.html" />
    <id>https://blog.khsing.net/2017/11/iphone-x-first-experience.html</id>
    <updated>2017-11-06T07:40:08Z</updated>
    <summary type="html"><![CDATA[<p>首发抢回来的，本来没想着自己用，直接出掉就好了，奈何价格下跌的速度太快，我拿到的时候基本就是原价出手了，索性自己用了</p>
<h2 id="尺寸">尺寸</h2>
<p>iPhone X 的大小和 iPhone 8/7/6 差不多，但是屏幕和iPhone 8/7/6 Plus 差不多，屏占比确实高一些。拿在手里非常舒服，之前使用 iPhone 6 Plus 总是觉的太大。</p>]]></summary><content type="html"><![CDATA[<p>首发抢回来的，本来没想着自己用，直接出掉就好了，奈何价格下跌的速度太快，我拿到的时候基本就是原价出手了，索性自己用了</p>
<h2 id="尺寸">尺寸</h2>
<p>iPhone X 的大小和 iPhone 8/7/6 差不多，但是屏幕和iPhone 8/7/6 Plus 差不多，屏占比确实高一些。拿在手里非常舒服，之前使用 iPhone 6 Plus 总是觉的太大。</p>
<h2 id="屏幕">屏幕</h2>
<p>iPhone X 这个屏幕是非常精细的，Super Retina 确实不是盖的，虽然不及 iPhone 4 首次推出Retina的感官上震撼，但也是非常牛逼的了，应该是当下最好的手机屏幕了。</p>
<p>iPhone X 的黑是真TM黑。</p>
<p>至于空气刘海儿的设计上，只能说是看看就习惯了，和其他全面屏手机对比的话，iPhone X 这个妥协也还可以接受了吧。</p>
<p>变色之类的问题都是OLED的特点，无需吹毛，烧屏问题也一样，只是必须控制在一个范围内，不能像 LG 给 Google 代工的 Pixel 2 那样回来就烧，另一个我关心的问题是：要是真烧屏了，Apple 管埋么？</p>
<h2 id="face-id--面容识别">Face ID / 面容识别</h2>
<p>这应该是最具革新的一项功能了吧，从几天的使用来说整体体验上要好于 Touch ID，但是可靠度上各有优势，大部分情况下 Face ID 解锁都很快，但是失败的比例也不少，比如你侧躺在被窝里看手机，这时候解锁八成是失败的，也许和侧卧脸有变形有关吧，但是 Touch ID 就不会有这种尴尬。</p>
<p>原来最需要 Touch ID 的场景是支付，无论是微信支付还是支付宝都支持 Touch ID，但是到了 Face ID，只有微信做了适配，估计支付宝是在抉择用自己的刷脸支付还是用Face ID。招商银行的 Touch ID 自动登录也没有了，虽然显示了 Face ID，但是打开好像还是 Touch ID，这一点也是比较奇怪的。其他的 App 对于Face ID 的适配做的最好的应该是 1Password 了。</p>
<p>至于 Face ID 的安全问题，我试着关闭了Face ID需要关注才能解锁的功能，果然是闭着眼睛也能刷脸，这么一来睡觉的时候被老婆查手机转账都是轻而易举的事情了，所以吓得我赶紧又打开了这个功能。</p>
<p>因为iPhone X可以感受到你的注意力这个特性，iPhone X 的消息通知默认是不显示内容的，直到你注视了屏幕并且解锁了之后就把通知内容显示出来了，这种小的细节还是挺让人心暖的。</p>
<h2 id="相机">相机</h2>
<p>相机的效果总体来说有点过爆，尤其是拍人像的时候，会在脸部过爆显得脸上有一种油腻感，这个不好；对于色彩还原、夜景效果都还是有提升的，但是基本也就iPhone 8 Plus的水平稍微高一些。</p>
<h2 id="应用适配和系统操作">应用适配和系统操作</h2>
<p>应用的适配上，大部分厂商都做好了适配，微信、支付宝、招行都做了适配，只是有的适配的好，有些适配的就比较差了，像Telegram虽然做了适配但是刘海儿位置的处理就有一个明显的bug，其他的适配都是空间布局上的小问题。</p>
<p>没有Home键的操作反而是更加行云流水般的顺滑了，关掉多余的动画反而不是很自然。</p>
<h2 id="最后的感受">最后的感受</h2>
<p>总体来说，iPhone X确实是当下最好的手机了，毋庸置疑，是我自己在拿到iPhone 4之后拿到最好的手机了。</p>
<p>一些系统上的bug还需要 Apple 修复，比如相机等应用在锁定旋转方向的情况下依然旋转了屏幕，而且把控制条一类的内容给弄丢了。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="iphone" label="Iphone" scheme="https://blog.khsing.net/tags/iphone/" />
    <published>2017-11-06T07:40:08Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[卖掉带TouchBar的Macbook Pro前要清除数据]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2017/10/clean-touchbar.html" />
    <id>https://blog.khsing.net/2017/10/clean-touchbar.html</id>
    <updated>2017-10-18T04:47:00Z</updated>
    <summary type="html"><![CDATA[<p>以后卖掉带 TouchBar 的 Macbook Pro 的时候又多了一个操作，清除储存在 TouchBar 里的数据 重启按住 CMD + R 打开 Terminal.app 执行</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>xartutil –erase-all
</span></span></code></pre></div><p>Ref: [Selling your MacBook Pro with Touch Bar? Apple recommends this step | 9to5Mac]<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup></p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p><a href="https://9to5mac.com/2017/10/17/how-to-erase-macbook-pro-touch-bar-before-selling/">https://9to5mac.com/2017/10/17/how-to-erase-macbook-pro-touch-bar-before-selling/</a> <a href="#fnref:1" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
</ol>
</div>]]></summary><content type="html"><![CDATA[<p>以后卖掉带 TouchBar 的 Macbook Pro 的时候又多了一个操作，清除储存在 TouchBar 里的数据 重启按住 CMD + R 打开 Terminal.app 执行</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>xartutil –erase-all
</span></span></code></pre></div><p>Ref: [Selling your MacBook Pro with Touch Bar? Apple recommends this step | 9to5Mac]<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup></p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p><a href="https://9to5mac.com/2017/10/17/how-to-erase-macbook-pro-touch-bar-before-selling/">https://9to5mac.com/2017/10/17/how-to-erase-macbook-pro-touch-bar-before-selling/</a> <a href="#fnref:1" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
</ol>
</div>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="macbookpro" label="Macbookpro" scheme="https://blog.khsing.net/tags/macbookpro/" />
    <category term="apple" label="Apple" scheme="https://blog.khsing.net/tags/apple/" />
    <published>2017-10-18T04:47:00Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[成为 Winston Wolfe]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2017/10/being-winston-wolfe.html" />
    <id>https://blog.khsing.net/2017/10/being-winston-wolfe.html</id>
    <updated>2017-10-11T08:29:11Z</updated>
    <summary type="html"><![CDATA[<p>在低俗小说里有这么一个角色 Winston Wolfe，他快速的、专业的帮助Vincent和Jules处理了满是鲜血的汽车，解决了最为棘手的问题。这是一个令人非常值得信任的角色，所以有人就总结了 Winston Wolfe 的一些行事特点，认为这是一个领导应该具有的特征，我们也来学习一下，争取成为一个像 Winston Wolfe 那样靠谱的人，张口就是“I’m Winston Wolfe, I solve problems.”</p>]]></summary><content type="html"><![CDATA[<p>在低俗小说里有这么一个角色 Winston Wolfe，他快速的、专业的帮助Vincent和Jules处理了满是鲜血的汽车，解决了最为棘手的问题。这是一个令人非常值得信任的角色，所以有人就总结了 Winston Wolfe 的一些行事特点，认为这是一个领导应该具有的特征，我们也来学习一下，争取成为一个像 Winston Wolfe 那样靠谱的人，张口就是“I’m Winston Wolfe, I solve problems.”</p>
<ul>
<li>100%可靠：只有可靠是一个人信任的保障</li>
<li>制定优先级：凡事都要制定优先级，优先做重要的事情</li>
<li>先听坏消息：坏消息通常能将我们拉回到正确的方向上，虽然总是难听些，先听坏消息</li>
<li>替领导分担：负责到底：对交到自己手里的事情要负责到底</li>
<li>写下来：好记性不如烂笔头，没有人有足够好的记忆力。</li>
<li>战略是外行做的，策略是行家里手做的：战略总是简单的，策略是需要一步步的执行下去的。</li>
<li>你不理解就无法管理：很简单，管理就是要了解每一个步骤，不了解你就无法管理，无法达成目标。</li>
<li>先严格，后宽松：先让所有人都行动起来，当他们完成的出色的时候，就要告诉他们完成的真棒，不要搞反了。</li>
<li>如果不行就干掉：有些人不太行，即便是告知了也不太行的话就要快速坚决的处理掉，即便他不拿工资也是一样。</li>
<li>谨言：人都是情感性的动物，不要因为言语上的不小心而伤害了小伙伴们。</li>
</ul>
<p>话虽不多，但是很有用，当然做到才是重点，所谓知难行亦难。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="story" label="Story" scheme="https://blog.khsing.net/tags/story/" />
    <published>2017-10-11T08:29:11Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Macbook Pro 连接4K显示器的转换头]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2017/09/macbook-pro-4k-connector.html" />
    <id>https://blog.khsing.net/2017/09/macbook-pro-4k-connector.html</id>
    <updated>2017-09-05T02:20:42Z</updated>
    <summary type="html"><![CDATA[<p>从朋友那里入手了一个4K显示器，之后就为适配这个4K显示器的转换头发愁了一段时间，所有买到的转接头不是不能用就是4k无法到60hz刷新率，就连苹果原厂的转接头也不行。</p>]]></summary><content type="html"><![CDATA[<p>从朋友那里入手了一个4K显示器，之后就为适配这个4K显示器的转换头发愁了一段时间，所有买到的转接头不是不能用就是4k无法到60hz刷新率，就连苹果原厂的转接头也不行。</p>
<p>后来终于是发现了[MI 小米 USB-C至Mini DisplayPort多功能转接器]<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>，买回来用了2个月，现在坏了。</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p><a href="https://www.amazon.com/dp/B074J9Q8NK/">https://www.amazon.com/dp/B074J9Q8NK/</a> <a href="#fnref:1" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
</ol>
</div>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="monitor" label="Monitor" scheme="https://blog.khsing.net/tags/monitor/" />
    <category term="display" label="Display" scheme="https://blog.khsing.net/tags/display/" />
    <published>2017-09-05T02:20:42Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Nginx 的流量镜像模块]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2017/08/nginxs-mirror-module.html" />
    <id>https://blog.khsing.net/2017/08/nginxs-mirror-module.html</id>
    <updated>2017-08-14T07:08:03Z</updated>
    <summary type="html"><![CDATA[<p><strong>Nginx 的流量镜像模块</strong></p>
<p><a href="https://nginx.org/">Nginx</a> 发布了1.13.4版本，并且包含了一个流量镜像的模块 <a href="https://nginx.org/en/docs/http/ngx_http_mirror_module.html">ngx_http_mirror_module</a>。</p>
<p>这对于线上系统就很好了，比如可以镜像部分流量来做测试、debug之类的</p>]]></summary><content type="html"><![CDATA[<p><strong>Nginx 的流量镜像模块</strong></p>
<p><a href="https://nginx.org/">Nginx</a> 发布了1.13.4版本，并且包含了一个流量镜像的模块 <a href="https://nginx.org/en/docs/http/ngx_http_mirror_module.html">ngx_http_mirror_module</a>。</p>
<p>这对于线上系统就很好了，比如可以镜像部分流量来做测试、debug之类的</p>
<p>例子也很简单：</p>
<pre tabindex="0"><code class="language-conf" data-lang="conf">location / {
    mirror /mirror;
    proxy_pass http://backend;
}

location /mirror {
    internal;
    proxy_pass http://test_backend$request_uri;
}
</code></pre>]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="nginx" label="Nginx" scheme="https://blog.khsing.net/tags/nginx/" />
    <category term="config" label="Config" scheme="https://blog.khsing.net/tags/config/" />
    <published>2017-08-14T07:08:03Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[软件的收费模式]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2017/08/buying-model-of-apps.html" />
    <id>https://blog.khsing.net/2017/08/buying-model-of-apps.html</id>
    <updated>2017-08-13T08:56:43Z</updated>
    <summary type="html"><![CDATA[<p>Ulysses 发了一篇blog: [Ulysses Switches to Subscription]<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup> 就唰喇喇的把自己的售卖模式从卖 License 换到了卖时间了。</p>
<p>曾几何时，还在指责 Mac App Store 不支持升级的收费策略的时候，这些应用开发商却把自己的收费模式先换成了订阅。我承认软件开发商在卖 License 的模式下面临着很多的生存困境，比如一个 App 很好，但是为了持续的获得收入只能走两条路：</p>]]></summary><content type="html"><![CDATA[<p>Ulysses 发了一篇blog: [Ulysses Switches to Subscription]<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup> 就唰喇喇的把自己的售卖模式从卖 License 换到了卖时间了。</p>
<p>曾几何时，还在指责 Mac App Store 不支持升级的收费策略的时候，这些应用开发商却把自己的收费模式先换成了订阅。我承认软件开发商在卖 License 的模式下面临着很多的生存困境，比如一个 App 很好，但是为了持续的获得收入只能走两条路：</p>
<ol>
<li>发展新客户，每年都把东西卖给陌生人，这个过程其实是挺难的。</li>
<li>向老客户收钱，每年总有那么几个改版本号骗钱的App奸商，比如臭名昭著的Parallels Desktop。</li>
</ol>
<p>开发商能怎么办，也很无奈啊，程序员嗷嗷待哺，不弄点钱，新版本怎么开发，总不能卸了磨就杀驴吧。所以这模式得改，要说这改的快的还是几个大厂，以Adobe为首的先把自己的 Creative 套件给转到订阅了，Microsoft把也提供了365的订阅模式，订阅模式确实对厂商来说是非常的好，收入有了保障，日子也可以过的有滋味了。</p>
<p>用户当然是希望App能稳定的好好工作，别罢工，积极解决遇到的问题，持续更新。最讨厌的就是付费更新，最最讨厌的就是不付费更新在新版OS里就不能好好工作的那种，比如Parallels Desktop。</p>
<p>用户付费买的是什么？是软件的使用权还是有效时间的使用权？</p>
<p>如果是一个有效时间的使用权，应该适用于专业用户，专业用户能够频繁的使用这个软件，这样你才能对得起你的服务和售价。普通用户买来就不合算了，比如工具软件，普通用户一年也就用上几次，只是希望安安静静的工作就行了，所以普通用户修图片应该买 Pixelmator 而不是 Photoshop。</p>
<p>如果是使用权，那就是一个稳定的OS版本下，可以一直使用这个软件，比如我10年前买一个软件，只要我的操作系统没有换，其他环境没有换，这个版本就应该可以一直使用下去。</p>
<p>有些软件的某个版本写的太好了，以至于新版本没有什么吸引力让我去升级，比如我常用的那个Dash 和 Alfred，Dash 4 和 Alfred 3都出来很久了，提醒更新也很久了，但是他们现在的这个版本太好了以至于我完全没有什么动力去升级，厂商当然就挣不到钱喽（心疼1s），所以从某种程度上也可以理解 TextMator 和 Sublime Text 为啥后来更新乏力了，该买的早就买了，不买的也不会再买了。</p>
<p>所以说产品定位很重要，针对专业用户的尽管走订阅模式，因为用你的工具用户能挣回来更多的钱。如果你只是一个针对普通用户的工具，还是卖License吧，以量取胜，增加边际收益，而且工具不是你的长期事业，能分化出专业用户还是得走订阅模式来稳定收益，更长期服务下去。</p>
<p>当然订阅模式也存在 [@bfishadow]<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup> 说的那个问题，即便你一年啥事儿都不干，还是得给你付费才能使用，这确实是很操蛋的事情了，所以我觉的 Sketch 的订阅模式很好，好的是他订阅的是你升级的权利，并不是使用的权利，所以你的订阅过期了，软件依然可以使用，只是不能升级到最新版了而已，所以我之前使用的日记软件Day One是不会升级到新版去的。</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p><a href="https://ulyssesapp.com/blog/2017/08/ulysses-switches-to-subscription/">https://ulyssesapp.com/blog/2017/08/ulysses-switches-to-subscription/</a> <a href="#fnref:1" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
<li id="fn:2">
<p><a href="https://twitter.com/bfishadow">https://twitter.com/bfishadow</a> <a href="#fnref:2" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
</ol>
</div>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <published>2017-08-13T08:56:43Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[体验是优化出来的]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2017/08/experience-grain-from-optimization.html" />
    <id>https://blog.khsing.net/2017/08/experience-grain-from-optimization.html</id>
    <updated>2017-08-12T09:07:34Z</updated>
    <summary type="html"><![CDATA[<p>从直觉上都认为 Apple Pay 的支付体验是优于微信支付的，直到头几天 Apple Pay 和银联一起搞了一个5折之类的促销活动，刺激了很多人去用 Apple Pay，包括星巴克，7-11。从集中的使用了一段时间来看，Apple Pay在国内的体验是不敌微信支付的。</p>]]></summary><content type="html"><![CDATA[<p>从直觉上都认为 Apple Pay 的支付体验是优于微信支付的，直到头几天 Apple Pay 和银联一起搞了一个5折之类的促销活动，刺激了很多人去用 Apple Pay，包括星巴克，7-11。从集中的使用了一段时间来看，Apple Pay在国内的体验是不敌微信支付的。</p>
<p>主要就从速度来说，Apple Pay的支付速度远不及微信支付，举一个我在7-11的例子吧：</p>
<ul>
<li>Apple Pay: 排队 -> 告诉店员使用Apple Pay -> 店员拿起 POS 机设置金额 -> 贴上去支付 -> 完成</li>
<li>微信支付：排队 -> 准备好支付界面-> 告诉店员使用微信支付 -> 直接贴在扫码机上面 -> 完成</li>
</ul>
<p>所谓的需要打开App再支付的步骤，排队的时候就干完了，而且就现在情况来说，打开个App和掏个手机基本不差。</p>
<p>从技术方案和安全性来说Apple Pay都要比微信支付好，但是从部署难易程度，从体验的优化上，微信支付已经在国内大幅的超越了Apple Pay，下一步 iPhone 的 NFC 接口开放之后会不会对微信支付的体验上带来优势呢？也许结合小程序和RDIF在零售领域玩出新花样也不好说。</p>
<table>
  <thead>
      <tr>
          <th>项目</th>
          <th>微信支付</th>
          <th>Apple Pay</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>绑定银行卡</td>
          <td>需要</td>
          <td>需要</td>
      </tr>
      <tr>
          <td>需要POS机</td>
          <td>不需要</td>
          <td>需要</td>
      </tr>
      <tr>
          <td>POS操作难易</td>
          <td>易(甚至不需要)</td>
          <td>难</td>
      </tr>
      <tr>
          <td>手机需要网络</td>
          <td>需要</td>
          <td>不需要</td>
      </tr>
      <tr>
          <td>店员培训成本</td>
          <td>低</td>
          <td>高</td>
      </tr>
      <tr>
          <td>适用范围</td>
          <td>有摄像头</td>
          <td>iPhone 5S+</td>
      </tr>
  </tbody>
</table>
<p>可见这部署成本以及市场教育的结果，再加上市场优化的结果，微信支付的体验某种程度上也来自于这些服务于商铺的服务商的优化。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <published>2017-08-12T09:07:34Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[十条无我编程的戒律]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2017/06/the-ten-commandments-of-egoless-programming.html" />
    <id>https://blog.khsing.net/2017/06/the-ten-commandments-of-egoless-programming.html</id>
    <updated>2017-06-06T07:40:27Z</updated>
    <summary type="html"><![CDATA[<p>下面是译自Jeff Atwood的The Ten Commandments of Egoless Programming<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup></p>
<p>======我是华丽的分割线======</p>
<p>这十条无我编程的戒律，源自Jerry Weinberg的《程序开发心理学》<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup>一书。</p>]]></summary><content type="html"><![CDATA[<p>下面是译自Jeff Atwood的The Ten Commandments of Egoless Programming<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup></p>
<p>======我是华丽的分割线======</p>
<p>这十条无我编程的戒律，源自Jerry Weinberg的《程序开发心理学》<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup>一书。</p>
<ol>
<li><strong>理解并接受你所犯的错</strong>。这是说尽早的在产品发布之前发现这些错误。幸好我们不是在JPL(隶属NASA的喷气推进实验室)开发火箭制导软件的一小撮人，在我们的行业中很难出现致命错误，所以我们可以也必须从错误中学习、开怀并且继续前行。</li>
<li><strong>你并不等于你的代码</strong>。记住审查的目的是为了找到问题，而且问题一定会被找到。不要为一个没有发现的问题而自责。</li>
<li><strong>你知道多少不重要，总有人知道的比你多</strong>。如果你问一个人他总能告诉你一些新鲜的玩意。寻找并且从其他人那里接受输入，尤其是你觉的你不需要的时候。</li>
<li><strong>没有商讨就不要重写代码</strong>。在修复代码和重写代码之间总有一条不错的界线，知晓其中的不同，并在代码审查的框架中追查文法上的变化，而不是孤僻的强迫症。</li>
<li><strong>用耐心和尊敬善待那些知道的比你少的人</strong>。非技术人员在和开发打交道时普遍持有偏见，好一些情况下认为我们是一群自负的怪人，坏一些的情况下认为我们是一群玻璃心。不要用愤怒和不耐烦加深这种偏见。</li>
<li><strong>在这个世界上持续存在的只有变化</strong>。用微笑和开放的心态去接受变化。把每一个需求、平台或是工具上的变化视作新的挑战，而不是严重的不利因素去抵触。</li>
<li><strong>真正的权威来自于知识，并不是职位</strong>。知识带来权威，权威带来尊敬，所以你如果想要在一个自大的环境中受尊敬，增加知识吧。</li>
<li><strong>为你的信仰而战，但也要勇于承担</strong>。要知道有时候你的想法会被批驳。即便最终你是对的，也不要报复或者说“我早就说了”这样的话，也不要作出一副为你的想法惋惜或者哭诉的模样。</li>
<li><strong>不要成为屋子里的人</strong>。不要成为长期处在阴暗角落且打水的时候才出现的码农，屋子里的人与世隔绝、淡出人们视线、失控且在开放协作的环境中无立锥之地。</li>
<li><strong>批评代码而不是批评人——善待码农，而不是代码</strong>。尽可能的让你的评论都是积极的而且目的是促进代码质量。评论要和标准，编程规范，优化性能等内容相关。</li>
</ol>
<p>软件的人性化的准则真是不过时的。这本《程序开发心理学》<sup id="fnref1:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup>成书于1971年，而一年后我才出生。</p>
<p>======我是华丽的分割线======</p>
<p>Guixing 翻译于 2017-06-06</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p><a href="https://blog.codinghorror.com/the-ten-commandments-of-egoless-programming/">https://blog.codinghorror.com/the-ten-commandments-of-egoless-programming/</a> <a href="#fnref:1" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
<li id="fn:2">
<p><a href="https://book.douban.com/subject/1141154/">https://book.douban.com/subject/1141154/</a> <a href="#fnref:2" class="footnote-backref" role="doc-backlink">↩︎</a> <a href="#fnref1:2" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
</ol>
</div>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="translation" label="Translation" scheme="https://blog.khsing.net/tags/translation/" />
    <category term="coding" label="Coding" scheme="https://blog.khsing.net/tags/coding/" />
    <published>2017-06-06T07:40:27Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[黑客帝国的Neo和围棋世界的柯洁]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2017/06/the-matrix-with-neo-and-alphago-with-kejie.html" />
    <id>https://blog.khsing.net/2017/06/the-matrix-with-neo-and-alphago-with-kejie.html</id>
    <updated>2017-06-01T01:56:34Z</updated>
    <summary type="html"><![CDATA[<p>黑客帝国(The Matrix, 1999)<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>一直是我非常喜欢的一部科幻片，其中世界设定值得深思，不时的就会质疑自己是不是一块电池。Neo作为电影的主角有洞悉虚拟世界的能力，也被称之为救世主，在电影的3部曲结束之后，Neo战败，Matrix清除了Agent Smith，达成了人类和机器的和平。</p>
<p>自从 AlphaGo 去年4/5大败李世石之后，人类的围棋世界其实就已经崩塌了，无法战胜 AlphaGo 已经是必然。 今年柯洁和 AlphaGo 的对决以3:0落败，也成了 AlphaGo 的收官之作，从此退役，独孤求败。而柯洁也和 Deepmind 达成共同研究 AlphaGo，让其辅助人类研究围棋。</p>]]></summary><content type="html"><![CDATA[<p>黑客帝国(The Matrix, 1999)<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>一直是我非常喜欢的一部科幻片，其中世界设定值得深思，不时的就会质疑自己是不是一块电池。Neo作为电影的主角有洞悉虚拟世界的能力，也被称之为救世主，在电影的3部曲结束之后，Neo战败，Matrix清除了Agent Smith，达成了人类和机器的和平。</p>
<p>自从 AlphaGo 去年4/5大败李世石之后，人类的围棋世界其实就已经崩塌了，无法战胜 AlphaGo 已经是必然。 今年柯洁和 AlphaGo 的对决以3:0落败，也成了 AlphaGo 的收官之作，从此退役，独孤求败。而柯洁也和 Deepmind 达成共同研究 AlphaGo，让其辅助人类研究围棋。</p>
<p>Neo和柯洁某种程度上何其相似，在 Matrix 即将摧毁人类最后的据点 Zion 之时，Matrix 打败了 Neo，获取了 Agent 的代码，完善了自己。柯洁最后大败给 AlphaGo，但柯洁也开始帮助 AlphaGo 进一步完善。</p>
<p>AI的一直是科幻界的主题，那部以人工智能(2001)<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup>命名的电影，人工智能把自己都给骗了，David努力在寻找自己不是人造的(Artificial)的证据，并且一直在寻找变成真正小孩的方法，最后发现自己并没有唯一性也不能变成真小孩，但是奇幻的一点也是他还是有唯一性，所以人工智能从情感上已经无法分辨了。</p>
<p>人类发明AI是科技发展的必然，机器仿生技术的进步必然会促进生活水平的提高。现在很多人还在纠结同性恋，变性人，out了，下一步该怀疑一下和你恋爱的是不是一个AI了。（这个题材也有了，《她》(2013)<sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup>)</p>
<p>AI和机器人的发展，一方面会让财富快速的向掌握AI和机器的人聚拢，另一方面人类会成为机器豢养的宠物。</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p><a href="https://movie.douban.com/subject/1291843/">https://movie.douban.com/subject/1291843/</a> <a href="#fnref:1" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
<li id="fn:2">
<p><a href="https://movie.douban.com/subject/1302827/">https://movie.douban.com/subject/1302827/</a> <a href="#fnref:2" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
<li id="fn:3">
<p><a href="https://movie.douban.com/subject/6722879/">https://movie.douban.com/subject/6722879/</a> <a href="#fnref:3" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
</ol>
</div>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="movie" label="Movie" scheme="https://blog.khsing.net/tags/movie/" />
    <category term="matrix" label="Matrix" scheme="https://blog.khsing.net/tags/matrix/" />
    <category term="ai" label="Ai" scheme="https://blog.khsing.net/tags/ai/" />
    <published>2017-06-01T01:56:34Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[我所依赖的科技公司]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2017/05/tech-company-i-depend-on.html" />
    <id>https://blog.khsing.net/2017/05/tech-company-i-depend-on.html</id>
    <updated>2017-05-09T05:37:34Z</updated>
    <summary type="html"><![CDATA[<p>使用了很多科技产品，如果这家公司和他们的产品突然消失，也许生活会很不方便，那么究竟有哪些是我生活中不可或缺的公司和产品呢？</p>
<ol>
<li>Apple，苹果公司的产品应该是我几乎无法替代的，他家的软件服务产品都不值一提，唯独iPhone和Mac是我工作生活不可缺少的，让我替换起来成本很高。</li>
<li>Google，搜索产品基本是最最最不能缺少的东西了，缺了他我都不会上网了，Gmail和Contact都还可以替换，至于Chrome我只是开发的时候会用。</li>
<li>淘宝，万能的淘宝，基本上没有买不到的东西和服务，合法的哈。</li>
</ol>
<p>上面这些是基本需求了，作为一个码农，下面两个服务也是不能缺少的</p>]]></summary><content type="html"><![CDATA[<p>使用了很多科技产品，如果这家公司和他们的产品突然消失，也许生活会很不方便，那么究竟有哪些是我生活中不可或缺的公司和产品呢？</p>
<ol>
<li>Apple，苹果公司的产品应该是我几乎无法替代的，他家的软件服务产品都不值一提，唯独iPhone和Mac是我工作生活不可缺少的，让我替换起来成本很高。</li>
<li>Google，搜索产品基本是最最最不能缺少的东西了，缺了他我都不会上网了，Gmail和Contact都还可以替换，至于Chrome我只是开发的时候会用。</li>
<li>淘宝，万能的淘宝，基本上没有买不到的东西和服务，合法的哈。</li>
</ol>
<p>上面这些是基本需求了，作为一个码农，下面两个服务也是不能缺少的</p>
<ol>
<li>Github，太多的开源项目在上面了。</li>
<li>StackOverflow，离了他我都不会写代码了。</li>
</ol>
<p>以上满足了基本需求。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="apple" label="Apple" scheme="https://blog.khsing.net/tags/apple/" />
    <category term="google" label="Google" scheme="https://blog.khsing.net/tags/google/" />
    <category term="taobao" label="Taobao" scheme="https://blog.khsing.net/tags/taobao/" />
    <category term="github" label="Github" scheme="https://blog.khsing.net/tags/github/" />
    <category term="stackoverflow" label="Stackoverflow" scheme="https://blog.khsing.net/tags/stackoverflow/" />
    <published>2017-05-09T05:37:34Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[另一种色情片]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2017/04/another-porn.html" />
    <id>https://blog.khsing.net/2017/04/another-porn.html</id>
    <updated>2017-04-26T03:17:57Z</updated>
    <summary type="html"><![CDATA[<p>通常一说色情片，一下子就想到了日本的、欧美的那些个爱情动作片，这些形形色色的色情片很大程度上满足了直男们的感官需求，但是色情片真的就只有这些么？</p>]]></summary><content type="html"><![CDATA[<p>通常一说色情片，一下子就想到了日本的、欧美的那些个爱情动作片，这些形形色色的色情片很大程度上满足了直男们的感官需求，但是色情片真的就只有这些么？</p>
<p>什么是色情片？把强烈满足感观需求的影片都定义为色情片的话，其实女人们喜欢看的偶像剧也是一种色情片，满足了女人们幻想男主不爱别人只爱女主的情节，而且是男一号、男二号甚至整个剧里的男性都死活都只爱相貌平平的女主。</p>
<p>所以说这偶像肥皂剧不也是另外一种色情片么。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="porn" label="Porn" scheme="https://blog.khsing.net/tags/porn/" />
    <published>2017-04-26T03:17:57Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Uber被苹果请喝茶]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2017/04/uber-asked-by-apple.html" />
    <id>https://blog.khsing.net/2017/04/uber-asked-by-apple.html</id>
    <updated>2017-04-26T03:11:27Z</updated>
    <summary type="html"><![CDATA[<p>这两天还发生了一件事，Uber CEO Travis Kalanick被Apple CEO Tim Cook叫去喝了茶，主要是Uber在代码中嵌入了追踪用户手机的指纹技术，甚至用户清理手机之后，也一样可以追踪的到，而且设置了地理围栏(Geofence)来躲避苹果的审核人员。</p>]]></summary><content type="html"><![CDATA[<p>这两天还发生了一件事，Uber CEO Travis Kalanick被Apple CEO Tim Cook叫去喝了茶，主要是Uber在代码中嵌入了追踪用户手机的指纹技术，甚至用户清理手机之后，也一样可以追踪的到，而且设置了地理围栏(Geofence)来躲避苹果的审核人员。</p>
<p>这事儿挺有意思的，对用户做标记是广告和推荐系统中必须要做的一件事，从最早iOS可以在App中直接读取Mac地址到后来这个接口变成私有API，以及苹果提供了iAd的一套标记用户方法，等等这些都是为了知道屏幕背后的那条狗。从这个角度来说Uber做的这个技术其实是很通用的，只要是做广告和推荐的都这么干。不同之处应该是Uber调用了私有API，从而可以永久标记一个用户，如果只是使用了iAd的标记，用户可以在iOS设置->通用->隐私->广告中重置。</p>
<p>司如其人，Uber的CEO按常理来说就是一个混蛋，只要没有被抓到，什么事情都可以干的出来。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="uber" label="Uber" scheme="https://blog.khsing.net/tags/uber/" />
    <published>2017-04-26T03:11:27Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Apple Pay、内购(IAP)和微信支付的体验]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2017/04/apple-pay-iap-and-wechat-pay.html" />
    <id>https://blog.khsing.net/2017/04/apple-pay-iap-and-wechat-pay.html</id>
    <updated>2017-04-25T03:16:30Z</updated>
    <summary type="html"><![CDATA[<p>昨天说到应用内购买和微信支付体验问题，早上开车想了一下，Apple Pay，IAP和微信支付还真不是一码事，而且还各有各的特点。</p>
<p>先说IAP，应该说这是这三个产品中最早的一个，应用内购买是苹果在2009年推出的。解决应用内虚拟物品的购买，消费通过App Store绑定的信用卡、借记卡、或者余额来购买。便捷性上呢，在没有Touch ID之前，需要输入一次Apple ID用户名和密码进行消费，现在内购基本上就是弹出一个确认购买，TouchID，购买成功或者失败。</p>]]></summary><content type="html"><![CDATA[<p>昨天说到应用内购买和微信支付体验问题，早上开车想了一下，Apple Pay，IAP和微信支付还真不是一码事，而且还各有各的特点。</p>
<p>先说IAP，应该说这是这三个产品中最早的一个，应用内购买是苹果在2009年推出的。解决应用内虚拟物品的购买，消费通过App Store绑定的信用卡、借记卡、或者余额来购买。便捷性上呢，在没有Touch ID之前，需要输入一次Apple ID用户名和密码进行消费，现在内购基本上就是弹出一个确认购买，TouchID，购买成功或者失败。</p>
<p>其次是微信支付，是微信提供的一套支付体系。微信借着滴滴打车和红包砍下了国内移动支付1/3以上的市场份额，生生把二维码支付和抢红包发展成了全国民运动。分场景来说，在微信内的支付很方便，无论是打赏还是微商城一类的支付都是很方便的，但是在其他App中使用微信支付是需要跳转到微信支付完成之后再跳转回去，这个过程就不是那么的原生和自然，但是依然是很不错的体验。</p>
<p>最后是Apple Pay，在国外开展的算是顺利，但是在国内却几乎是一败涂地，被二维码打的可以说是连牙都没找到。除去Apple Pay的POS机部署成本、国人信用卡持卡率等问题不说，仅教育用户这一项，Apple比微信和支付宝来说基本就是没有投入，只有在升级完之后的一个添加银行卡的引导过程，这是远远不够的，中国的移动支付市场是腾讯和阿里两家用补贴和红包砸出来的。就支付体验来说，分线上和线下两个场景来说，Apple Pay的体验都是很不错的，线上来说，无需跳转到另外的App，Touch ID就直接支付，很轻松，线下就更不用说了，轻触一下就完成了。但是，凡事总是有但是，Apple Pay在国内使用的时候，店员不知道、不会操作、设备不支持等等的问题比起微信二维码来说，那就是复杂太多了，店员不耐烦的时候甚至会说：你还是微信支付宝吧。</p>
<p>这时候再来看用户体验的问题，Apple Pay和微信支付的场景都基本上是支付，而IAP还有不同的地方在于支付完成后还要记录用户的支付记录，有些App的功能开启还需要恢复购买这样的功能，所以从功能上来说IAP的业务逻辑要复杂于Apple Pay和微信支付，这也造成了IAP用户体验差，尤其国内还有长城的存在，IAP的接口都在国外，这中间的网络通信就导致IAP支付过程很慢，甚至会失败。Apple Pay的体验优于IAP主要是无须网络连接照样完成支付，逻辑简单。</p>
<p>微信支付的体验好于IAP的主要原因是访问的服务都在国内，如果是店家扫描二维码支付甚至无须客户手机联网，这一点和Apple Pay是同等级的，只是没有Apple Pay那种系统级别行云流水般的顺滑而已。</p>
<p>所以，要微信把赞赏切换到IAP的话，是有一些损伤体验的，但是切换到Apple Pay的话，应该不存在体验损伤的问题，只看用户是不是使用了Apple Pay，这个大前提就喝退了很多人。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="wechat" label="Wechat" scheme="https://blog.khsing.net/tags/wechat/" />
    <category term="apple" label="Apple" scheme="https://blog.khsing.net/tags/apple/" />
    <category term="payment" label="Payment" scheme="https://blog.khsing.net/tags/payment/" />
    <published>2017-04-25T03:16:30Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[微信和苹果的一次交锋]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2017/04/wechat-and-apple-battle.html" />
    <id>https://blog.khsing.net/2017/04/wechat-and-apple-battle.html</id>
    <updated>2017-04-21T07:04:44Z</updated>
    <summary type="html"><![CDATA[<p>已经好几天的热点了，苹果从结果上逼微信干掉了iOS版文章打赏功能，理由是违反了苹果的App准入规定3.1.1的条款，即解锁程序内功能时必须使用IAP(内购)，苹果举了个例子是：订阅，游戏货币，游戏等级，访问高级内容，或者解锁完全版本等，而且不可以引导用户跳过IAP使用其它支付。</p>]]></summary><content type="html"><![CDATA[<p>已经好几天的热点了，苹果从结果上逼微信干掉了iOS版文章打赏功能，理由是违反了苹果的App准入规定3.1.1的条款，即解锁程序内功能时必须使用IAP(内购)，苹果举了个例子是：订阅，游戏货币，游戏等级，访问高级内容，或者解锁完全版本等，而且不可以引导用户跳过IAP使用其它支付。</p>
<p>先下结论，这次事件从目前的结果来看，微信的付费阅读产品可能会延期，至少会在iOS端会缺席。</p>
<p>再来想想这次事件的几个问题：</p>
<p>首先，微信的打赏究竟在不在苹果的这个规定范围内？</p>
<p>打赏虽然没有解锁一个新的功能，但是实际上这本身就是一个新的功能，我认为归类到订阅、访问高级内容这样的服务中也合乎情理。</p>
<p>其次，苹果的这个规定合理么？</p>
<p>根据我的地盘我做主的原则，这事儿其实也没的说，就腾讯来说他自己也干过很多我的地盘我做主的事情，比如干掉淘宝（虽然是淘宝先动手的），干掉优步，可以说微信也是乏善可陈。</p>
<p>最后，这些决定对用户的影响是什么？</p>
<p>苹果是敦促微信回到他的规则上来，乖乖的交虚拟产品的苹果税，微信的做法是用二维码代替按钮（之后也被要求撤下），耍了小聪明，猜测6小时后下线二维码也是在苹果的勒令之下撤下了二维码。其实，微信完全可以继续保留功能，打赏走IAP。但是我也听说，这是为了保持微信支付的优秀体验，好吧，微信的支付体验比Apple Pay要好？</p>
<p>要知道现在的做法是有损公众号的内容提供者的，也就是说微信为了自己的产品体验，强行损害了自媒体的利益，腾讯，干的真是漂亮！</p>
<p>微信的公众号域名是<a href="http://mp.weixin.qq.com">http://mp.weixin.qq.com</a>，一直有对这个mp缩写的猜测，我倾向于这是Media Platform的缩写，媒体平台。如果你是一个内容创业者，或者是一个收入依赖于微信的媒体运营者，长点心吧，这次的事情已经说明，你们的利益是被腾讯这个平台裹挟的，是他可以作为筹码和其他公司打架的武器。</p>
<p>在拥抱微信获取流量的同时也要把灵魂交给撒旦！</p>
<p>再来说Apple的规则是不是真的就那么的神圣？</p>
<p>其实今天微信遇到的问题，不是微信一家遇到的问题，而是所有进入App Store平台的App一起面临的问题，比如Kindle作为一个电子书应用，不能在iOS版App内买书，为啥呢？因为这是虚拟产品，要交30%的苹果税，图书利润很薄还要和作者分成，除非iOS版购买比其他版本购买多30%，但是这个逻辑是不是很诡异呢？打开微博、爱奇艺要续费一个会员，也必须走IAP，为什么呢？因为3.1.1条款。这确确实实是一条霸王条款！</p>
<p>既然这个问题是行业内一样面临的问题，苹果有没有可能去改善？答案是可能会有改善。君不见喊了一万年的App支付订阅模式在去年就有所改进，很多的App也跟进了，比如我常用的Podcasting应用Overcast就在苹果支持订阅模式之后就推出了订阅付费的模式。</p>
<p>苹果占据了移动市场食物链顶端，而且目前的地位别人还无法撼动，所以他的规矩就是规矩，想要Apple作出改变，要么告他，要么退出App Store市场。很多Mac上的App就因为不满App Store的分成和苹果的霸道退出了App Store，比如Sketch, Sip等应用，但是Mac端好歹还是有其他途径安装App的，而iOS安装App的合法路径只有一条————App Store。</p>
<p>强大就封闭，弱小就开放。这就是一个很现实的生存环境，没有什么道义可言，只有商业利益赤裸裸的摆在这里。</p>
<p>至于苹果是不是惧怕微信的小程序而故意修理呢？也许有吧，但是小程序真的就能取代App么？</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="biz" label="Biz" scheme="https://blog.khsing.net/tags/biz/" />
    <category term="wechat" label="Wechat" scheme="https://blog.khsing.net/tags/wechat/" />
    <category term="apple" label="Apple" scheme="https://blog.khsing.net/tags/apple/" />
    <category term="battle" label="Battle" scheme="https://blog.khsing.net/tags/battle/" />
    <published>2017-04-21T07:04:44Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[升级Homebrew中的PostgreSQL]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2017/04/upgrade-homebrew-postgresql.html" />
    <id>https://blog.khsing.net/2017/04/upgrade-homebrew-postgresql.html</id>
    <updated>2017-04-20T04:04:27Z</updated>
    <summary type="html"><![CDATA[<p>最后还是入手了新版的MBP，开发环境都是重新设置的，用PostgreSQL的时候，启动提醒版本不兼容</p>
<pre tabindex="0"><code class="language-log" data-lang="log">FATAL:  database files are incompatible with server
DETAIL:  The data directory was initialized by PostgreSQL version 9.5, which is not compatible with this version 9.6.2.
</code></pre><p>所以要升级一下原来的库，作弊条开始</p>]]></summary><content type="html"><![CDATA[<p>最后还是入手了新版的MBP，开发环境都是重新设置的，用PostgreSQL的时候，启动提醒版本不兼容</p>
<pre tabindex="0"><code class="language-log" data-lang="log">FATAL:  database files are incompatible with server
DETAIL:  The data directory was initialized by PostgreSQL version 9.5, which is not compatible with this version 9.6.2.
</code></pre><p>所以要升级一下原来的库，作弊条开始</p>
<ul>
<li><code>brew services stop postgresql</code></li>
<li><code>brew install postgresql@9.5</code></li>
<li><code>initdb /usr/local/var/postgres9.6 -E utf8</code></li>
<li>开始升级数据库</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>pg_upgrade <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>  -d /usr/local/var/postgres <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>  -D /usr/local/var/postgres9.6 <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>  -b /usr/local/Cellar/postgresql@9.5/9.5.6/bin <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>  -B /usr/local/Cellar/postgresql/9.6.2/bin/ <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>  -v
</span></span></code></pre></div><ul>
<li><code>mv /usr/local/var/postgres /usr/local/var/postgres9.5</code></li>
<li><code>mv /usr/local/var/postgres9.6 /usr/local/var/postgres</code></li>
<li><code>brew services start postgresql</code></li>
</ul>
<p>完成</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="macbookpro" label="Macbookpro" scheme="https://blog.khsing.net/tags/macbookpro/" />
    <published>2017-04-20T04:04:27Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[云服务和数据自由]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2017/04/cloud-and-data-free.html" />
    <id>https://blog.khsing.net/2017/04/cloud-and-data-free.html</id>
    <updated>2017-04-19T09:09:10Z</updated>
    <summary type="html"><![CDATA[<p>最近发生了一个事情，我之前为了方便就把一些流程图都放在了ProcessOn的云服务上，我很容易的能把这个内容发给朋友，而且也可以邀请朋友同事一起来改，但是在我想导出一个思维导图的时候，发现只能导出成图片、私有的pos文件或者pdf，这个时候我就是很懵逼的情况。按理说，这个数据是我的，我应该有数据迁移的自由。</p>]]></summary><content type="html"><![CDATA[<p>最近发生了一个事情，我之前为了方便就把一些流程图都放在了ProcessOn的云服务上，我很容易的能把这个内容发给朋友，而且也可以邀请朋友同事一起来改，但是在我想导出一个思维导图的时候，发现只能导出成图片、私有的pos文件或者pdf，这个时候我就是很懵逼的情况。按理说，这个数据是我的，我应该有数据迁移的自由。</p>
<p>数据自由交换是一种权利，比如我记录的笔记之类的内容，这是我的创作内容，应该可以很容易的导出成一个容易迁移的格式，说的就是Evernote和OneNote。大概从2年前开始，我买了Office 365服务，理所应当的被送了一些空间，OneNote正好可以使用这些空间，我就打算把之前使用Evernote的内容都前一过来，但是当我发现OneNote只能一个Note一个Note的导出成PDF的时候，我彻底的放弃了这个产品，就更不要提他经常不知所以的同步状态，继续乖乖的付费使用Evernote。</p>
<p>从这些云服务的情况来看，我对他们的担心主要是三个问题</p>
<ol>
<li>数据的属主问题。在云服务不能提供良好的数据导出时，这个数据并不能完全意义上属于我。</li>
<li>数据的交换问题。以文档类数据为例，ProcessOn 没有提供导出Mindmap为Freemind等其他软件格式就是一个数据不能自由交换的例子，这和1意义上相同。</li>
<li>服务的持续性问题。如果不在1，2的问题，那么第三个问题就是很严重的问题，作为一个云服务公司，如果数据既不能自由导出流转，那服务的期限最好就是永久，否则就是数据的丢失就是不可避免的了。</li>
</ol>
<p>我并不排斥使用云服务，而且我司也是做云服务的，只是我觉的一些通用的产品数据应该被自由流通和编辑。举几个例子：</p>
<ul>
<li>文档，应该可以导出成为txt, rtf, word格式</li>
<li>表格，应该可以导出成为csv, excel格式</li>
<li>思维导图，应该可以导出成为，freemind, xmind, mindmanager格式</li>
</ul>
<p>数据才是正真的自己拥有。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="cloud" label="Cloud" scheme="https://blog.khsing.net/tags/cloud/" />
    <published>2017-04-19T09:09:10Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[思考和书写]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2017/03/think-and-write.html" />
    <id>https://blog.khsing.net/2017/03/think-and-write.html</id>
    <updated>2017-03-28T06:04:22Z</updated>
    <summary type="html"><![CDATA[<p>人活着除了生理上的存活状态，最主要的还是思考在继续。我们看见周围的事和物都会去思考一系列的问题，比如：这是什么？为什么会发生？等等。</p>
<p>互联网的出现极大的拓展了我们获取知识的能力和范围，而移动互联网的出现则彻底的把我们的时间变的碎片化。在大量碎片信息的冲刷之下，我们的独立思考变的弥足珍贵。</p>]]></summary><content type="html"><![CDATA[<p>人活着除了生理上的存活状态，最主要的还是思考在继续。我们看见周围的事和物都会去思考一系列的问题，比如：这是什么？为什么会发生？等等。</p>
<p>互联网的出现极大的拓展了我们获取知识的能力和范围，而移动互联网的出现则彻底的把我们的时间变的碎片化。在大量碎片信息的冲刷之下，我们的独立思考变的弥足珍贵。</p>
<p>现实生活和工作中面临的问题有小有大，大部分的问题凭着我们的经验和直觉就解决了。而有些问题是值得仔细思考的，甚至是需要长时间的理性思考的。这似乎与我们现在的移动互联网生活是冲突的，刷微博和朋友圈，接收着大量的碎片化信息，是无法完成深度思考的。有些时候我们的直觉会欺骗我们，看到一件事或物，经过简单的分析和思考就认为这件事情掌握了，了解了，然而这只是一个假象。在时间碎片化的今天，这一情况更为普遍。</p>
<p>一个接受和没接受教育的人的最本质的能力区别是阅读和写作，阅读是一种输入技能，经过思考之后书写出来就是输出了。这一点很像写了一个数据处理函数。</p>
<p>思考和写出来是有很大区别的，一个你觉的已经思考过的内容，要写出来的时候就变成了梳理的过程，这时候就会发现自己在脑海中浅思考的错误，所以写出来的内容往往比自己想的内容更加缜密。</p>
<p>如果一件事，经历之后，再经过思考梳理，形成文字材料才是真的消化，想通透了。所以技术人员要多思考，多实践，多分享。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="idea" label="Idea" scheme="https://blog.khsing.net/tags/idea/" />
    <category term="thought" label="Thought" scheme="https://blog.khsing.net/tags/thought/" />
    <published>2017-03-28T06:04:22Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[写给SaaS创业公司的安全基础知识]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2017/03/secruity-advise-for-sass-company.html" />
    <id>https://blog.khsing.net/2017/03/secruity-advise-for-sass-company.html</id>
    <updated>2017-03-12T04:39:26Z</updated>
    <summary type="html"><![CDATA[<p>头两天看到了<a href="https://github.com/forter/security-101-for-saas-startups">写给SaaS创业公司的安全101</a>，内容涵盖了不少，非常值得一读，其实不光是给SaaS企业了，其他公司一样适用。</p>
<p>我摘了几个贴在这里</p>
<ul>
<li>密码共享和密码管理，所有系统都有一个终极的Admin账户，这个账户是共享的，防止这个人的单点故障，同时一旦共享了，那么密码是需要加密共享的，所以要有密码管理。</li>
<li>全盘加密，Mac/Windows都有很好的加密方法了，几乎一键加密。</li>
<li>买3个以上域名，第一个用于公开的品牌和企业的邮箱。第二个用于自己的SaaS服务，比如googleapis.com之类的。第三个域名用于内部的后勤支持，比如公司vpn等基础设施等等，而且这个域名最好匿名，这样别人就难以猜测了。营销邮件应该使用独立的域名，以防反垃圾系统标记后影响公司业务邮件来往。</li>
<li>所有地方都使用HTTPS</li>
<li>API密钥，每一个客户都应该拥有不同的API钥匙对。</li>
<li>物理安全：
<ul>
<li>使用屏保，并且从屏保恢复需要输入密码。</li>
<li>不要使用U盘，这是入侵的最方便最直接的方法了。</li>
</ul>
</li>
<li>企业内部沟通用Slack，客户间沟通用邮件，国内可以适用企业内部用BearyChat，客户沟通用邮件+微信。</li>
<li>认证服务支持SSO和OAuth</li>
<li>备份
<ul>
<li>冷备／热备／异地容灾</li>
<li>自动化备份</li>
<li>定期恢复演练</li>
<li>备份加密</li>
</ul>
</li>
<li>防火墙和访问权限
<ul>
<li>服务访问需要认证，比如ElasticSearch, MongoDB, MySQL等</li>
<li>Review防火墙设置，只能允许必要的服务和端口开放。</li>
<li>自动扫描。</li>
</ul>
</li>
</ul>
<p>可以照这个列一个checklist，看看自己公司都做到了哪些？</p>]]></summary><content type="html"><![CDATA[<p>头两天看到了<a href="https://github.com/forter/security-101-for-saas-startups">写给SaaS创业公司的安全101</a>，内容涵盖了不少，非常值得一读，其实不光是给SaaS企业了，其他公司一样适用。</p>
<p>我摘了几个贴在这里</p>
<ul>
<li>密码共享和密码管理，所有系统都有一个终极的Admin账户，这个账户是共享的，防止这个人的单点故障，同时一旦共享了，那么密码是需要加密共享的，所以要有密码管理。</li>
<li>全盘加密，Mac/Windows都有很好的加密方法了，几乎一键加密。</li>
<li>买3个以上域名，第一个用于公开的品牌和企业的邮箱。第二个用于自己的SaaS服务，比如googleapis.com之类的。第三个域名用于内部的后勤支持，比如公司vpn等基础设施等等，而且这个域名最好匿名，这样别人就难以猜测了。营销邮件应该使用独立的域名，以防反垃圾系统标记后影响公司业务邮件来往。</li>
<li>所有地方都使用HTTPS</li>
<li>API密钥，每一个客户都应该拥有不同的API钥匙对。</li>
<li>物理安全：
<ul>
<li>使用屏保，并且从屏保恢复需要输入密码。</li>
<li>不要使用U盘，这是入侵的最方便最直接的方法了。</li>
</ul>
</li>
<li>企业内部沟通用Slack，客户间沟通用邮件，国内可以适用企业内部用BearyChat，客户沟通用邮件+微信。</li>
<li>认证服务支持SSO和OAuth</li>
<li>备份
<ul>
<li>冷备／热备／异地容灾</li>
<li>自动化备份</li>
<li>定期恢复演练</li>
<li>备份加密</li>
</ul>
</li>
<li>防火墙和访问权限
<ul>
<li>服务访问需要认证，比如ElasticSearch, MongoDB, MySQL等</li>
<li>Review防火墙设置，只能允许必要的服务和端口开放。</li>
<li>自动扫描。</li>
</ul>
</li>
</ul>
<p>可以照这个列一个checklist，看看自己公司都做到了哪些？</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="saas" label="Saas" scheme="https://blog.khsing.net/tags/saas/" />
    <category term="security" label="Security" scheme="https://blog.khsing.net/tags/security/" />
    <published>2017-03-12T04:39:26Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[消除Outlook的安装后反复欢迎提醒和Update无法更新的问题]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2017/03/dismiss-outlook-error.html" />
    <id>https://blog.khsing.net/2017/03/dismiss-outlook-error.html</id>
    <updated>2017-03-02T06:22:18Z</updated>
    <summary type="html"><![CDATA[<p>Outlook for Mac 2016实在是太慢了，写个邮件都要卡顿半天，重新装了2011版来用，导出导入olm文件很是方便，这也是这几年来我一直使用outlook的一个主要原因。</p>]]></summary><content type="html"><![CDATA[<p>Outlook for Mac 2016实在是太慢了，写个邮件都要卡顿半天，重新装了2011版来用，导出导入olm文件很是方便，这也是这几年来我一直使用outlook的一个主要原因。</p>
<p>遇到的问题是无法更新和欢迎界面每次都弹出。</p>
<p>其实就是一个权限的问题，我也懒的去找哪一个文件了，直接执行</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>find ~/Library -type f -user root -exec sudo chown <span style="color:#f1fa8c">`</span>whoami<span style="color:#f1fa8c">`</span> <span style="color:#ff79c6">{}</span> <span style="color:#f1fa8c">\;</span>
</span></span></code></pre></div><p>问题解决！</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="macbook" label="Macbook" scheme="https://blog.khsing.net/tags/macbook/" />
    <category term="outlook" label="Outlook" scheme="https://blog.khsing.net/tags/outlook/" />
    <published>2017-03-02T06:22:18Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[伟大长城带来的痛苦]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2017/03/greate-wall-bring-greate-plain.html" />
    <id>https://blog.khsing.net/2017/03/greate-wall-bring-greate-plain.html</id>
    <updated>2017-03-01T08:16:00Z</updated>
    <summary type="html"><![CDATA[<p>上个礼拜，全球最大的开源社区仓库Github被认证，带来的不便就不说了。</p>
<p>最近用了一个项目，大量的使用了Git Submodule，如果在CI服务器上来做这件事儿，就是问题多多。没有办法，我只能clone一个下来再把内容放到自己的git repo里去，把依赖于github的submodule都给去掉。</p>]]></summary><content type="html"><![CDATA[<p>上个礼拜，全球最大的开源社区仓库Github被认证，带来的不便就不说了。</p>
<p>最近用了一个项目，大量的使用了Git Submodule，如果在CI服务器上来做这件事儿，就是问题多多。没有办法，我只能clone一个下来再把内容放到自己的git repo里去，把依赖于github的submodule都给去掉。</p>
<p>苦不堪言！</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="gfw" label="Gfw" scheme="https://blog.khsing.net/tags/gfw/" />
    <published>2017-03-01T08:16:00Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[一毛钱股份]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2017/02/one-shares.html" />
    <id>https://blog.khsing.net/2017/02/one-shares.html</id>
    <updated>2017-02-27T14:53:18Z</updated>
    <summary type="html"><![CDATA[<p><a href="https://mp.weixin.qq.com/s/C5aDa0pzoUGk6_4q-qKCaQ">就算老公一毛钱股份都没拿到，在我心里，他依然是最牛逼的创业者</a> 的文章上个礼拜被炒的火热，当事人很快就被扒出来了，最后陈CEO也出来解释了；</p>
<p>这事儿最重要的一点就是CEO老陈有没有给老韩承诺给股份？不管是口头的还是书面的，甚至比例都不重要，只是确定这个饼是不是存在。</p>]]></summary><content type="html"><![CDATA[<p><a href="https://mp.weixin.qq.com/s/C5aDa0pzoUGk6_4q-qKCaQ">就算老公一毛钱股份都没拿到，在我心里，他依然是最牛逼的创业者</a> 的文章上个礼拜被炒的火热，当事人很快就被扒出来了，最后陈CEO也出来解释了；</p>
<p>这事儿最重要的一点就是CEO老陈有没有给老韩承诺给股份？不管是口头的还是书面的，甚至比例都不重要，只是确定这个饼是不是存在。</p>
<p>如果没有，老韩媳妇现在要股份是理亏，最终是吃亏。</p>
<p>如果有，但是比例没有定，那么一个股份制公司运行了7年之久还没有确定的股份比例，我只能说老陈这个CEO不是蠢就是坏！</p>
<ol>
<li>
<p>至于老韩人家家里过什么样的生活和股份的获得没有任何关系！甚至有说老韩你7年买房、买车、结婚生子，日子已经过的不错了。呵呵，圣人不死大盗不止！这7年人家日子过的好坏，买了豪车别墅也和凭承诺拿股份没有任何的关系；这就好比是一个公司在创业初期，比尔盖茨投了钱或者精力，比尔盖茨过的生活也和能否获得这个公司股份是没有关系的，如果这公司有承诺比尔盖茨股份，那就按承诺来，如果没有那比尔盖茨也得吃瘪，还是和他个人的生活没有关系。同理，公司现在的经营情况，获利情况依然和老韩拿股份这事儿没关系，只和当时的承诺有关，与其他事都无关；</p>
</li>
<li>
<p>至于公司后面的发展老韩无法带队或者工作状态低迷，而且就老陈CEO的回复来看，是给发了200万分红之后出现的；这个情况还是和老韩获取股份没有关系，如果老韩入伙时没有承诺，老陈CEO就该早做决断，而不是把这个问题一拖再拖，而且是从2013年拖到了2017年。有承诺，即便是消极怠工也一样得给股份，请参考聚美优品陈欧在新加坡的公司一事；</p>
</li>
<li>
<p>发200万和发100万也和股份获得没有关系。注意，这个文章是老韩老婆发的，也许老韩只和老婆说了100万，也许公司只发了100万。这笔钱并不是老韩退出股份的报酬，所以该是多少股份还是得给多少股份。</p>
</li>
</ol>
<p>说一千道一万，最重要的还是承诺；老陈没有承诺，老韩给公司干了7年，终了白干，这是老陈CEO辜负了老韩的信任；老陈给了承诺，终了没有兑现，这是老陈CEO的失信，甚至可以对簿公堂；老韩后期消极怠工，这是老韩不义；面对老韩消极怠工不做处理，这是老陈CEO失职；</p>
<p>结论：拖延症害死人啊！</p>
<p>那到底该不该给老韩股份呢？</p>
<p>有句话叫吃水不忘挖井人，老陈在最需要的时候，老韩跟他一起干，完成了公司的冷启动，你说他该不该拿股份？</p>
<p>再说了，老韩和老陈一起干的时候是降薪，经济学有个概念叫机会成本，老韩也许没有直接投入金钱，但是投入这家公司的机会成本是值得他拿这个股份的！</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="story" label="Story" scheme="https://blog.khsing.net/tags/story/" />
    <published>2017-02-27T14:53:18Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[继续留在Mac OS X]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2017/02/stay-in-macosx.html" />
    <id>https://blog.khsing.net/2017/02/stay-in-macosx.html</id>
    <updated>2017-02-23T03:41:22Z</updated>
    <summary type="html"><![CDATA[<p>macOS 10.12 发布之后我升级过了两次，但是体验都不是很好，本身系统的变化不大，但是带来的问题并不小，对我最大的影响是外接显示器之后的风扇狂转不止。甚至让我产生了它们要修复系统在老机器上运行过于流畅的bug了。</p>]]></summary><content type="html"><![CDATA[<p>macOS 10.12 发布之后我升级过了两次，但是体验都不是很好，本身系统的变化不大，但是带来的问题并不小，对我最大的影响是外接显示器之后的风扇狂转不止。甚至让我产生了它们要修复系统在老机器上运行过于流畅的bug了。</p>
<p>本身我自己的MBP也已经用了4年之久了，是应该更新一下了，然而对于新版MBP的失望，配件的短缺，看来我的MBP还要继续服役1年以上，等配件比较齐全的时候再下手了，希望到时候macOS能稳定一些。</p>
<p>我常读的Joel On Software主角，Joel Spolsky也表达了同样的</p>
<blockquote>
<p>@spolsky: Sorry Apple. After 10 years loyalty, this latest MBPro with useless touchbar and unreliable keyboard was last straw. Switched to Dell XPS13?</p>
</blockquote>
<p><a href="https://twitter.com/spolsky/status/833082540995014656">tweets</a></p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="osx" label="Osx" scheme="https://blog.khsing.net/tags/osx/" />
    <published>2017-02-23T03:41:22Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[在阿里云ubuntu 16.04 LTS版本上安装gitlab-ce]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2017/01/install-gitlab-ce-in-aliyun.html" />
    <id>https://blog.khsing.net/2017/01/install-gitlab-ce-in-aliyun.html</id>
    <updated>2017-01-07T17:57:20Z</updated>
    <summary type="html"><![CDATA[<p>需要安装一个<code>gitlab-ce</code>给大家用，最近把操作系统都换到ubuntu来了，这个ubuntu是阿里云定制过的。</p>
<p>清华大学又一个<code>gitlab</code>的镜像，但是阿里云无法连通，超时，但是单独<code>curl</code>又是好的，结果呢是阿里定制了<code>/etc/apt/apt.conf</code>文件，修改如下即可</p>]]></summary><content type="html"><![CDATA[<p>需要安装一个<code>gitlab-ce</code>给大家用，最近把操作系统都换到ubuntu来了，这个ubuntu是阿里云定制过的。</p>
<p>清华大学又一个<code>gitlab</code>的镜像，但是阿里云无法连通，超时，但是单独<code>curl</code>又是好的，结果呢是阿里定制了<code>/etc/apt/apt.conf</code>文件，修改如下即可</p>
<pre tabindex="0"><code class="language-conf" data-lang="conf">Acquire::http::Proxy "http://mirrors.aliyun.com/";
</code></pre><p>内部用一个proxy连接的trick，添加一行即可使用清华的镜像了</p>
<pre tabindex="0"><code class="language-conf" data-lang="conf">Acquire::http::Proxy::mirrors.tuna.tsinghua.edu.cn "DIRECT";
</code></pre>]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="gitlab" label="Gitlab" scheme="https://blog.khsing.net/tags/gitlab/" />
    <published>2017-01-07T17:57:20Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[selenium wait 和 iframe]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2016/11/selenium-wait-and-iframe.html" />
    <id>https://blog.khsing.net/2016/11/selenium-wait-and-iframe.html</id>
    <updated>2016-11-17T03:22:26Z</updated>
    <summary type="html"><![CDATA[<p>还是从朋友那个小事儿做的时候弄出来的问题</p>
<ol>
<li>selenium 如何切换driver到一个ID设置为中文iframe？</li>
<li>遇到alert了怎么处理？</li>
<li>检查某个元素是不是出现了？</li>
</ol>
<p>不要问我为啥id会用中文，说多了都是泪，总之这是一个一言难尽的问题，一句话，国有企业你懂的。</p>]]></summary><content type="html"><![CDATA[<p>还是从朋友那个小事儿做的时候弄出来的问题</p>
<ol>
<li>selenium 如何切换driver到一个ID设置为中文iframe？</li>
<li>遇到alert了怎么处理？</li>
<li>检查某个元素是不是出现了？</li>
</ol>
<p>不要问我为啥id会用中文，说多了都是泪，总之这是一个一言难尽的问题，一句话，国有企业你懂的。</p>
<ol>
<li>切换到特定的iframe/frame</li>
</ol>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>driver<span style="color:#ff79c6">.</span>switch_to_frame(driver<span style="color:#ff79c6">.</span>find_element_by_id(<span style="color:#ff79c6">&</span><span style="color:#6272a4">#39;some_id&#39;))</span>
</span></span></code></pre></div><p>这样就可以在这个frame/iframe里做相应的find element操作了，但是要记住操作完了要切换回来</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>driver<span style="color:#ff79c6">.</span>switch_to_default_content()
</span></span></code></pre></div><p>多层嵌套的iframe也没有问题，只要一步一步的切换进去就好了</p>
<ol>
<li>接受alert</li>
</ol>
<p>一个简单的方法就是预计有alert的地方，写上接受就好了</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>driver<span style="color:#ff79c6">.</span>switch_to<span style="color:#ff79c6">.</span>alert<span style="color:#ff79c6">.</span>accept()
</span></span></code></pre></div><p>这样很粗暴，但是也很有效，精细一些的做法看<a href="http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.common.alert">文档</a>，比如：</p>
<ul>
<li>确认或者取消</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#ff79c6">from</span> selenium.webdriver.common.alert <span style="color:#ff79c6">import</span> Alert
</span></span><span style="display:flex;"><span>Alert(driver)<span style="color:#ff79c6">.</span>accept()
</span></span><span style="display:flex;"><span>Alert(driver)<span style="color:#ff79c6">.</span>dismiss()
</span></span></code></pre></div><ul>
<li>读取alert的文字内容</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>Alert(driver)<span style="color:#ff79c6">.</span>text
</span></span></code></pre></div><ul>
<li>认证的用户名和密码</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>driver<span style="color:#ff79c6">.</span>switch_to<span style="color:#ff79c6">.</span>alert<span style="color:#ff79c6">.</span>authenticate(username,password)
</span></span></code></pre></div><ul>
<li>输入内容</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>name_prompt <span style="color:#ff79c6">=</span> Alert(driver) name_prompt<span style="color:#ff79c6">.</span>send_keys(“Willian Shakesphere”)
</span></span><span style="display:flex;"><span>name_prompt<span style="color:#ff79c6">.</span>accept()
</span></span></code></pre></div><ol>
<li>检查某个元素是否出现</li>
</ol>
<p>以前的一个很粗暴的做法是<code>time.sleep(N)</code>，但是这种情况下非常粗旷，selenium 提供了更精细的一些控制方法</p>
<ul>
<li>等待某个元素出现以后获取这个元素</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#ff79c6">from</span> selenium.webdriver.common.by <span style="color:#ff79c6">import</span> By
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">from</span> selenium.webdriver.support.ui <span style="color:#ff79c6">import</span> WebDriverWait
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">from</span> selenium.webdriver.support <span style="color:#ff79c6">import</span> expected_conditions <span style="color:#ff79c6">as</span> EC
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>wait <span style="color:#ff79c6">=</span> WebDriverWait(driver, <span style="color:#bd93f9">10</span>) <span style="color:#6272a4">#10秒，超过这个时间就会raise Exception</span>
</span></span><span style="display:flex;"><span>element <span style="color:#ff79c6">=</span> wait<span style="color:#ff79c6">.</span>until(EC<span style="color:#ff79c6">.</span>element_to_be_clickable((By<span style="color:#ff79c6">.</span>ID,<span style="color:#ff79c6">&</span><span style="color:#6272a4">#39;someid&#39;)))</span>
</span></span></code></pre></div><ul>
<li>这里的expected_conditions可以是下面的这些条件
<ul>
<li>title_is</li>
<li>title_contains</li>
<li>presence_of_element_located #元素可以找到</li>
<li>visibility_of_element_located #元素可见</li>
<li>visibility_of</li>
<li>presence_of_all_elements_located #所有元素可以被找到</li>
<li>text_to_be_present_in_element #元素中包含text</li>
<li>text_to_be_present_in_element_value #元素的value值包含text</li>
<li>frame_to_be_available_and_switch_to_it #iframe可以切换</li>
<li>invisibility_of_element_located #不可见元素被找到</li>
<li>element_to_be_clickable #不但可见，而且可点</li>
<li>staleness_of</li>
<li>element_to_be_selected #元素被选中</li>
<li>element_located_to_be_selected #</li>
<li>element_selection_state_to_be</li>
<li>element_located_selection_state_to_be</li>
<li>alert_is_present #弹框出现</li>
</ul>
</li>
</ul>
<p>这些基本覆盖了常见的情况了，足够用了，记得处理异常，否则就挂了。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="selenium" label="Selenium" scheme="https://blog.khsing.net/tags/selenium/" />
    <category term="autotest" label="Autotest" scheme="https://blog.khsing.net/tags/autotest/" />
    <published>2016-11-17T03:22:26Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Trump elected to be next president]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2016/11/trump-elected-to-be-next-president.html" />
    <id>https://blog.khsing.net/2016/11/trump-elected-to-be-next-president.html</id>
    <updated>2016-11-16T15:58:44Z</updated>
    <summary type="html"><![CDATA[<p>做为一个中国人没什么太多资格去讨论一个外国元首，但是他作为一个影响全球的世界元首，对其他国家或多或少还是有影响的，从最近汇市和股市的尿性就可以看出来了，就这还没有上任呢。</p>]]></summary><content type="html"><![CDATA[<p>做为一个中国人没什么太多资格去讨论一个外国元首，但是他作为一个影响全球的世界元首，对其他国家或多或少还是有影响的，从最近汇市和股市的尿性就可以看出来了，就这还没有上任呢。</p>
<p>至于Trump为啥能被选上呢？鬼知道，现在来看大家都归结于社交媒体的胜利。不无道理，以我之见，很多人选Trump的主要原因是想看到一些改变，而不是希拉里作为一个成熟政客的4年表演，她的表演和观海同志一样，who want repeat 4 years again? 而Trump能不能做到他说的make American great again, 未必吧，潜台词是American is not great anymore，但是即便是如此大家也愿意看到一些不太确定的变化吧，更何况Trump说的一些事情也是很多人想做的，比如限制非法移民和废除Obama <del>Don’t</del> Care之类的。</p>
<p>至于现在的民族主义、孤立主义抬头，全世界的新潮流吧，从英国脱欧开始到现在的美国有可能转向保守主义等等，都有表明这个世界正在起变化。全球化进程是不是就此开始衰退，我倒没有太担心，从发达国家已经流出的工作岗位是不会再流回的，他们只是很有可能被另外一种更新的技术来取代。</p>
<p>今天这是卖白菜的操了卖白粉的心，多虑了，洗洗睡觉！</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="usa" label="Usa" scheme="https://blog.khsing.net/tags/usa/" />
    <category term="trump" label="Trump" scheme="https://blog.khsing.net/tags/trump/" />
    <published>2016-11-16T15:58:44Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[macOS 的ssh-add -K]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2016/11/macos-ssh-add.html" />
    <id>https://blog.khsing.net/2016/11/macos-ssh-add.html</id>
    <updated>2016-11-16T02:48:18Z</updated>
    <summary type="html"><![CDATA[<p>macOS 10.12 开始ssh-add并不是默认将你的ssh-key添加进去了，所以需要额外配置一下</p>
<p>打开自己的ssh配置文件<code>~/.ssh/config</code>，加入如下内容</p>]]></summary><content type="html"><![CDATA[<p>macOS 10.12 开始ssh-add并不是默认将你的ssh-key添加进去了，所以需要额外配置一下</p>
<p>打开自己的ssh配置文件<code>~/.ssh/config</code>，加入如下内容</p>
<pre tabindex="0"><code class="language-config" data-lang="config">Host *
    UserKnownHostsFile /dev/null #这一句还好吧
    StrictHostKeyChecking no #这一句非常危险，结合上一句再加上dns劫持的话，再加上密码认证就很有泄漏密码的可能性
    ForwardAgent yes
    TCPKeepAlive yes
    IdentityFile ~/.ssh/id_rsa
    AddKeysToAgent yes
</code></pre>]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="ssh" label="Ssh" scheme="https://blog.khsing.net/tags/ssh/" />
    <published>2016-11-16T02:48:18Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Selenium 连接一个已有的连接]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2016/11/selenium-reconnect.html" />
    <id>https://blog.khsing.net/2016/11/selenium-reconnect.html</id>
    <updated>2016-11-07T08:38:49Z</updated>
    <summary type="html"><![CDATA[<p>帮朋友弄个东西，需要先登录，有一个不复杂的验证码，但是上OCR也太重，所以就先起一个driver，然后手工登录之后再连过来进行操作.</p>
<ul>
<li>先启动一个Driver和Session，并且打印出连接的URL和Session</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>url <span style="color:#ff79c6">=</span> driver<span style="color:#ff79c6">.</span>command_executor<span style="color:#ff79c6">.</span>_url       <span style="color:#6272a4">#"http://127.0.0.1:60622/hub"</span>
</span></span><span style="display:flex;"><span>session_id <span style="color:#ff79c6">=</span> driver<span style="color:#ff79c6">.</span>session_id            <span style="color:#6272a4">#&#39;4e167f26-dc1d-4f51-a207-f761eaf73c31&#39;</span>
</span></span></code></pre></div><ul>
<li>然后再连接过去</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>driver <span style="color:#ff79c6">=</span> webdriver<span style="color:#ff79c6">.</span>Remote(command_executor<span style="color:#ff79c6">=</span>url,desired_capabilities<span style="color:#ff79c6">=</span>{})
</span></span><span style="display:flex;"><span>driver<span style="color:#ff79c6">.</span>session_id <span style="color:#ff79c6">=</span> session_id
</span></span></code></pre></div><p>REF:</p>]]></summary><content type="html"><![CDATA[<p>帮朋友弄个东西，需要先登录，有一个不复杂的验证码，但是上OCR也太重，所以就先起一个driver，然后手工登录之后再连过来进行操作.</p>
<ul>
<li>先启动一个Driver和Session，并且打印出连接的URL和Session</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>url <span style="color:#ff79c6">=</span> driver<span style="color:#ff79c6">.</span>command_executor<span style="color:#ff79c6">.</span>_url       <span style="color:#6272a4">#"http://127.0.0.1:60622/hub"</span>
</span></span><span style="display:flex;"><span>session_id <span style="color:#ff79c6">=</span> driver<span style="color:#ff79c6">.</span>session_id            <span style="color:#6272a4">#&#39;4e167f26-dc1d-4f51-a207-f761eaf73c31&#39;</span>
</span></span></code></pre></div><ul>
<li>然后再连接过去</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>driver <span style="color:#ff79c6">=</span> webdriver<span style="color:#ff79c6">.</span>Remote(command_executor<span style="color:#ff79c6">=</span>url,desired_capabilities<span style="color:#ff79c6">=</span>{})
</span></span><span style="display:flex;"><span>driver<span style="color:#ff79c6">.</span>session_id <span style="color:#ff79c6">=</span> session_id
</span></span></code></pre></div><p>REF:</p>
<ul>
<li><a href="https://stackoverflow.com/questions/18721404/connect-to-an-already-running-instance-of-chrome-using-selenium-in-python/32882207#32882207">Stackoverflow: Connect to an already running instance of chrome using selenium in python</a></li>
</ul>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="web" label="Web" scheme="https://blog.khsing.net/tags/web/" />
    <category term="test" label="Test" scheme="https://blog.khsing.net/tags/test/" />
    <published>2016-11-07T08:38:49Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[对新的 Macbook Pro 有点失望]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2016/11/disappointment-about-new-macbook-pro.html" />
    <id>https://blog.khsing.net/2016/11/disappointment-about-new-macbook-pro.html</id>
    <updated>2016-11-07T03:20:55Z</updated>
    <summary type="html"><![CDATA[<p>新的 Macbook Pro 发布已经有一小段时间了，接口都统一成了USB-C的样式，新增了一个Touch Bar的功能，外形上基本没有变化。</p>
<p>我现在使用的是Macbook Pro的2012年中版，平时的情况基本满足需求，对我来说目前就是内存和SSD硬盘都有一些吃紧，Touch Bar什么的其实我并不Care，所以要我升级来说主要就是升级内存和SSD，如果说外观上能有一个升级的话，这是加分项。</p>]]></summary><content type="html"><![CDATA[<p>新的 Macbook Pro 发布已经有一小段时间了，接口都统一成了USB-C的样式，新增了一个Touch Bar的功能，外形上基本没有变化。</p>
<p>我现在使用的是Macbook Pro的2012年中版，平时的情况基本满足需求，对我来说目前就是内存和SSD硬盘都有一些吃紧，Touch Bar什么的其实我并不Care，所以要我升级来说主要就是升级内存和SSD，如果说外观上能有一个升级的话，这是加分项。</p>
<p>But，这一次的升级除了Touch Bar之外乏善可陈(Touch Bar其实最有用的是TouchID)，而且Touch Bar还去掉了<code>ESC</code>，这对于一个程序员来说是个悲剧，就更不要提那个蝴蝶结构的键盘了。其次就是那个令人诟病的接口了，机身只有4个USB-C，充电、数据传输、外接显示器都得靠这4个全新的接口，所以买回来的第一件事应该是买USB-C相关的各种转接头，这简直就是个悲剧，更悲剧的是Apple这次涨价了。</p>
<p>这样以来对于我来说今年要想更新Macbook Pro就不是一件明智的事情了，要么让我的老Macbook Pro挺一年，要不就是买一个2015款的16/32G内存的版本。我有点希望一个本子有ThinkPad的键盘+Macbook Pro的触摸板和ThinkPad的丰富的接口的机器，起码我不用带一堆配件或者辫子。</p>
<p>记Apple一次失望的Macbook Pro更新，而且饭盒和垃圾桶都没有更新了。我有点离不开的是macOS，虽然它越来越烂了，也需要重启才能解决<code>kernel_task</code>占用过多内存的问题之类的，但是依然是目前能用到的最好的操作系统了。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="macbookpro" label="Macbookpro" scheme="https://blog.khsing.net/tags/macbookpro/" />
    <published>2016-11-07T03:20:55Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[还是不要全局 .gitignore 了]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2016/11/donot-using-global-gitignore.html" />
    <id>https://blog.khsing.net/2016/11/donot-using-global-gitignore.html</id>
    <updated>2016-11-03T03:14:41Z</updated>
    <summary type="html"><![CDATA[<p>昨天踩了一个小坑，使用<code>bower</code>安装了一堆的组件进来，我这里是好的，但是同事去构建的时候就不对了。</p>
<p>发现我<code>git commit</code>的时候，<code>jQuery</code>包里的<code>dist</code>目录没有添加进去，进而发现实际是我在很久以前在<code>~/.gitignore</code>里添加了一个<code>dist</code>导致彻底忽略了。</p>]]></summary><content type="html"><![CDATA[<p>昨天踩了一个小坑，使用<code>bower</code>安装了一堆的组件进来，我这里是好的，但是同事去构建的时候就不对了。</p>
<p>发现我<code>git commit</code>的时候，<code>jQuery</code>包里的<code>dist</code>目录没有添加进去，进而发现实际是我在很久以前在<code>~/.gitignore</code>里添加了一个<code>dist</code>导致彻底忽略了。</p>
<p>索性就把这个家目录下的<code>.gitignore</code>给删除了，反正都是跟着项目走的，新建git repo的之后添加一个<code>.gitignore</code>就好了。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="brew" label="Brew" scheme="https://blog.khsing.net/tags/brew/" />
    <category term="git" label="Git" scheme="https://blog.khsing.net/tags/git/" />
    <published>2016-11-03T03:14:41Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[解决git submodule 无映射路径的问题]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2016/10/sovle-git-submodule-no-path-error.html" />
    <id>https://blog.khsing.net/2016/10/sovle-git-submodule-no-path-error.html</id>
    <updated>2016-10-27T08:01:24Z</updated>
    <summary type="html"><![CDATA[<p>我们在使用Git submodule 的过程中我遇到的一个问题是执行<code>git submodule update</code>之后会出一个错误</p>
<pre tabindex="0"><code class="language-log" data-lang="log">fatal: no submodule mapping found in .gitmodules for path &#39;vendor/predis/predis&#39;
</code></pre><p>这个问题就是你发现有一个不在<code>.gitmodule</code>文件中的submodule在更新，解决办法就是</p>]]></summary><content type="html"><![CDATA[<p>我们在使用Git submodule 的过程中我遇到的一个问题是执行<code>git submodule update</code>之后会出一个错误</p>
<pre tabindex="0"><code class="language-log" data-lang="log">fatal: no submodule mapping found in .gitmodules for path &#39;vendor/predis/predis&#39;
</code></pre><p>这个问题就是你发现有一个不在<code>.gitmodule</code>文件中的submodule在更新，解决办法就是</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>git ls-files --stage | grep <span style="color:#bd93f9">160000</span>
</span></span></code></pre></div><p>这可以看到你所有的Submodule文件，然后</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>git rm --cached PATH
</span></span></code></pre></div><p>Problem solved.</p>
<p>REF:</p>
<ul>
<li><a href="http://stackoverflow.com/questions/4185365/no-submodule-mapping-found-in-gitmodule-for-a-path-thats-not-a-submodule">No submodule mapping found in .gitmodule for a path that’s not a submodule</a></li>
</ul>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="git" label="Git" scheme="https://blog.khsing.net/tags/git/" />
    <published>2016-10-27T08:01:24Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[更换了iPhone 6 Plus 的电池，又换回去了]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2016/10/replace-iphone-battery.html" />
    <id>https://blog.khsing.net/2016/10/replace-iphone-battery.html</id>
    <updated>2016-10-17T09:42:54Z</updated>
    <summary type="html"><![CDATA[<p>上周我某宝买了一个飞毛腿iPhone 6 Plus的电池，主要是原来的那个电池只要天一冷就关机，最严重的一次是在电量70%的情况下，手机关机了，我很是焦虑，所以入手一个新电池准备过冬。</p>]]></summary><content type="html"><![CDATA[<p>上周我某宝买了一个飞毛腿iPhone 6 Plus的电池，主要是原来的那个电池只要天一冷就关机，最严重的一次是在电量70%的情况下，手机关机了，我很是焦虑，所以入手一个新电池准备过冬。</p>
<p>盼星星盼月亮，终于把电池给盼来了，换上了，图片已经收入<a href="https://www.flickr.com/photos/khsing/albums/72157675192501785">Flickr</a>。但是悲剧发生了，换完之后充不进去电，坑爹啊！</p>
<p>我又把iPhone的原装电池换了回去，飞毛腿退货，差评，换一个牌子继续折腾。</p>
<p>btw.</p>
<p>在手撕那个胶条的时候一定要慢，一定要慢，一定要慢，重要的事情说三遍！</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="iphone" label="Iphone" scheme="https://blog.khsing.net/tags/iphone/" />
    <category term="battery" label="Battery" scheme="https://blog.khsing.net/tags/battery/" />
    <published>2016-10-17T09:42:54Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[阿里云的证书被吊销了?]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2016/10/aliyun-cert-revoked.html" />
    <id>https://blog.khsing.net/2016/10/aliyun-cert-revoked.html</id>
    <updated>2016-10-17T06:16:20Z</updated>
    <summary type="html"><![CDATA[<p>上周的我要登陆阿里云的时候发现他家的证书被吊销了，我发了个微博，阿里云的客服就立马回复过来了是：</p>
<blockquote>
<p>亲，经核实，SSL 证书管理机构及提供商GlobalSign的部分证书由于OCSP服务异常导致证书出现错误，会导致 macOS Sierra 系统部分用户使用 Chrome 或者 Safari 等浏览器时访问受限。GlobalSign反馈问题已经修复，新用户不受影响，但是由于证书体系的缓存性质，有一部分用户可能还会受到影响。</p>]]></summary><content type="html"><![CDATA[<p>上周的我要登陆阿里云的时候发现他家的证书被吊销了，我发了个微博，阿里云的客服就立马回复过来了是：</p>
<blockquote>
<p>亲，经核实，SSL 证书管理机构及提供商GlobalSign的部分证书由于OCSP服务异常导致证书出现错误，会导致 macOS Sierra 系统部分用户使用 Chrome 或者 Safari 等浏览器时访问受限。GlobalSign反馈问题已经修复，新用户不受影响，但是由于证书体系的缓存性质，有一部分用户可能还会受到影响。</p>
</blockquote>
<p>但是今天还是无法使用Chrome打开，而Safari和Firefox都已经正常了。</p>
<p>update: 2016-10-17</p>
<p>重装Chrome之后正常了</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="ssl" label="Ssl" scheme="https://blog.khsing.net/tags/ssl/" />
    <published>2016-10-17T06:16:20Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[oh-my-zsh 总是很慢]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2016/09/slow-oh-my-zsh.html" />
    <id>https://blog.khsing.net/2016/09/slow-oh-my-zsh.html</id>
    <updated>2016-09-25T04:04:44Z</updated>
    <summary type="html"><![CDATA[<p>从<code>csh</code>切换到<code>zsh</code>已经很久了，但是有时候他会很慢，甚至是在<code>ctrl+c</code>的时候，看了一下，主要的时间都是去检查<code>git</code>状态了，反正这个功能不是特别需要，就关掉好了。</p>]]></summary><content type="html"><![CDATA[<p>从<code>csh</code>切换到<code>zsh</code>已经很久了，但是有时候他会很慢，甚至是在<code>ctrl+c</code>的时候，看了一下，主要的时间都是去检查<code>git</code>状态了，反正这个功能不是特别需要，就关掉好了。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>git config --add oh-my-zsh.hide-status <span style="color:#bd93f9">1</span>
</span></span></code></pre></div><p>Ref: <a href="http://stackoverflow.com/questions/12765344/oh-my-zsh-slow-but-only-for-certain-git-repo">oh-my-zsh slow, but only for certain Git repo</a></p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="shell" label="Shell" scheme="https://blog.khsing.net/tags/shell/" />
    <category term="zsh" label="Zsh" scheme="https://blog.khsing.net/tags/zsh/" />
    <published>2016-09-25T04:04:44Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[开始使用MWeb]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2016/09/start-using-mweb.html" />
    <id>https://blog.khsing.net/2016/09/start-using-mweb.html</id>
    <updated>2016-09-23T08:08:44Z</updated>
    <summary type="html"><![CDATA[<p>知道MWeb这个App已经很久了，也使用Markdown很久了，头段时间MWeb打折就下单了，而且也把blog从MovableType换到了Wordpress，所以也就结合用起来了。</p>]]></summary><content type="html"><![CDATA[<p>知道MWeb这个App已经很久了，也使用Markdown很久了，头段时间MWeb打折就下单了，而且也把blog从MovableType换到了Wordpress，所以也就结合用起来了。</p>
<p>MWeb支持上传图片到Google Photos和七牛，但是我还没有尝试，所以就先这样吧，以后再设置前来玩。</p>
<p>从朋友那里借了一个HHKB Pro 2 Type S，发现键位真是不太适应，刚刚适应一点，去别人那里总是按错键，也是小醉。</p>
<p>ps. 本文编辑自MWeb</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="mweb" label="Mweb" scheme="https://blog.khsing.net/tags/mweb/" />
    <category term="tools" label="Tools" scheme="https://blog.khsing.net/tags/tools/" />
    <category term="markdown" label="Markdown" scheme="https://blog.khsing.net/tags/markdown/" />
    <published>2016-09-23T08:08:44Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[油猴脚本加载微信公众号的图片]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2016/03/post-30.html" />
    <id>https://blog.khsing.net/2016/03/post-30.html</id>
    <updated>2016-03-06T09:14:07Z</updated>
    <summary type="html"><![CDATA[<p>微信公众号的文章图片使用了 Lazy Load 模式，导致使用 Evernote Clip 剪贴的时候就没有图片，这里有一个 <a href="https://raw.githubusercontent.com/ytzong/UserScripts/master/preload-images-for-wechat.user.js">Weixin Image Preload</a>的 <a href="http://userscripts-mirror.org">UserScripts</a>。Safari上需要安装一个 <a href="https://github.com/os0x/NinjaKit">NinjiaKit</a>的扩展。</p>]]></summary><content type="html"><![CDATA[<p>微信公众号的文章图片使用了 Lazy Load 模式，导致使用 Evernote Clip 剪贴的时候就没有图片，这里有一个 <a href="https://raw.githubusercontent.com/ytzong/UserScripts/master/preload-images-for-wechat.user.js">Weixin Image Preload</a>的 <a href="http://userscripts-mirror.org">UserScripts</a>。Safari上需要安装一个 <a href="https://github.com/os0x/NinjaKit">NinjiaKit</a>的扩展。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="tools" label="Tools" scheme="https://blog.khsing.net/categories/tools/" />
    <category term="wechat" label="Wechat" scheme="https://blog.khsing.net/tags/wechat/" />
    <category term="loading" label="Loading" scheme="https://blog.khsing.net/tags/loading/" />
    <published>2016-03-06T09:14:07Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Django中使用多数据库和裸SQL]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2016/01/djangosql.html" />
    <id>https://blog.khsing.net/2016/01/djangosql.html</id>
    <updated>2016-01-11T16:20:53Z</updated>
    <summary type="html"><![CDATA[<p>有时候一个项目可能会使用多个数据库，而且数据来源可能不同，在Django中支持多数据库，同时不用ORM的情况下直接执行SQL的方法如下，做个笔记</p>]]></summary><content type="html"><![CDATA[<p>有时候一个项目可能会使用多个数据库，而且数据来源可能不同，在Django中支持多数据库，同时不用ORM的情况下直接执行SQL的方法如下，做个笔记</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#ff79c6">from</span> django.db <span style="color:#ff79c6">import</span> connections, connection
</span></span><span style="display:flex;"><span>cursor <span style="color:#ff79c6">=</span> connection<span style="color:#ff79c6">.</span>cursor() <span style="color:#6272a4"># 这是settings.py中定义的default数据库</span>
</span></span><span style="display:flex;"><span>cursor2 <span style="color:#ff79c6">=</span> connections[<span style="color:#f1fa8c">'mysql'</span>]<span style="color:#ff79c6">.</span>cursor() <span style="color:#6272a4"># 这是settings.py中定义的mysql数据库</span>
</span></span></code></pre></div><p>剩下的操作主要靠 PEP 249 的规范</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="python" label="Python" scheme="https://blog.khsing.net/tags/python/" />
    <category term="django" label="Django" scheme="https://blog.khsing.net/tags/django/" />
    <published>2016-01-11T16:20:53Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[科学使用Android]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2016/01/android.html" />
    <id>https://blog.khsing.net/2016/01/android.html</id>
    <updated>2016-01-04T16:37:53Z</updated>
    <summary type="html"><![CDATA[<p>在兲朝科学使用Android，到了Android 6.0重置之后恢复应用的功能终于可以和Apple iOS相提并论了，然而在兲朝还是不太行；步骤如下</p>]]></summary><content type="html"><![CDATA[<p>在兲朝科学使用Android，到了Android 6.0重置之后恢复应用的功能终于可以和Apple iOS相提并论了，然而在兲朝还是不太行；步骤如下</p>
<ol>
<li>开Debug模式，adb 安装<a href="https://github.com/shadowsocks/shadowsocks-android/releases">Shadowsock</a>和<a href="https://github.com/zxing/zxing/releases">Barcode Scanner</a></li>
<li>我使用了12vpn的SS服务，扫描二维码添加配置</li>
<li>开启SS后等待自行恢复</li>
<li>登陆一些需要重新登录的App(大部分需要，还是不如iOS)</li>
</ol>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="android" label="Android" scheme="https://blog.khsing.net/tags/android/" />
    <category term="shadowsock" label="Shadowsock" scheme="https://blog.khsing.net/tags/shadowsock/" />
    <published>2016-01-04T16:37:53Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[证书换到Let’s Encrypt了]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2015/12/lets-encrypt.html" />
    <id>https://blog.khsing.net/2015/12/lets-encrypt.html</id>
    <updated>2015-12-17T10:03:48Z</updated>
    <summary type="html"><![CDATA[<p>今天把证书换到<a href="https://letsencrypt.org">Let’s Encrypt</a>了，Super Easy.</p>
<ol>
<li><code>git clone https://github.com/letsencrypt/letsencrypt</code></li>
<li><code>./letsencrypt-auto certonly -d domain.tld</code>，然后提醒写一个常用email就好了</li>
<li>配置一下<a href="https://www.nginx.org">Nginx</a></li>
</ol>
<p>下面是Nginx配置中的证书部分</p>]]></summary><content type="html"><![CDATA[<p>今天把证书换到<a href="https://letsencrypt.org">Let’s Encrypt</a>了，Super Easy.</p>
<ol>
<li><code>git clone https://github.com/letsencrypt/letsencrypt</code></li>
<li><code>./letsencrypt-auto certonly -d domain.tld</code>，然后提醒写一个常用email就好了</li>
<li>配置一下<a href="https://www.nginx.org">Nginx</a></li>
</ol>
<p>下面是Nginx配置中的证书部分</p>
<pre tabindex="0"><code class="language-conf" data-lang="conf">ssl_certificate      /etc/letsencrypt/live/domain.tld/fullchain.pem;
ssl_certificate_key  /etc/letsencrypt/live/domain.tld/privkey.pem;
</code></pre>]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="https" label="Https" scheme="https://blog.khsing.net/tags/https/" />
    <category term="cert" label="Cert" scheme="https://blog.khsing.net/tags/cert/" />
    <published>2015-12-17T10:03:48Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[tips: 记 Windows 下计划任务执行 bat 复制网络映射文件]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2015/11/tips-windows-bat.html" />
    <id>https://blog.khsing.net/2015/11/tips-windows-bat.html</id>
    <updated>2015-11-12T10:24:02Z</updated>
    <summary type="html"><![CDATA[<p>设置了一个计划任务从来就没有正常执行过，而手动运行又都是好的；终于解决了这个问题，主要是卡在输入用户名密码上了，首先 bat 中做网络影射</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>IF NOT EXIST z:. net use z: <span style="color:#f1fa8c">\\</span>SERVERIP<span style="color:#f1fa8c">\F</span>older /PERSISTENT:YES
</span></span></code></pre></div><p>就是执行到这里是需要密码的，进入控制面板 > 用户管理 > 管理你的凭据 > 增加一个 Windows 的凭据；就可以了。</p>]]></summary><content type="html"><![CDATA[<p>设置了一个计划任务从来就没有正常执行过，而手动运行又都是好的；终于解决了这个问题，主要是卡在输入用户名密码上了，首先 bat 中做网络影射</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>IF NOT EXIST z:. net use z: <span style="color:#f1fa8c">\\</span>SERVERIP<span style="color:#f1fa8c">\F</span>older /PERSISTENT:YES
</span></span></code></pre></div><p>就是执行到这里是需要密码的，进入控制面板 > 用户管理 > 管理你的凭据 > 增加一个 Windows 的凭据；就可以了。</p>
<p>用完了可以断开映射</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>IF EXIST z:. net use z: /delete
</span></span></code></pre></div>]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="windows" label="Windows" scheme="https://blog.khsing.net/tags/windows/" />
    <published>2015-11-12T10:24:02Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[vendor 目录究竟应不应该进 VCS]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2015/10/vendor-vcs.html" />
    <id>https://blog.khsing.net/2015/10/vendor-vcs.html</id>
    <updated>2015-10-28T03:03:09Z</updated>
    <summary type="html"><![CDATA[<p>很多项目现在都有组件式的包管理，比如 <code>composer</code> 管理的第三方组件都存放在 <code>vendor</code> 目录下，那么究竟这个目录应不应该放到 git 之类的版本管理里去，之前我的做法是不放，但是后来发现了一个问题，当多台机器面临更新第三方组件的时候，会出现版本不一致的问题，而且本身 Laravel 的 <code>config/app.php</code> 中启用了第三方组件，但是 <code>vendor</code> 目录中还需要 <code>composer update</code> 更新的时候就会报错；</p>]]></summary><content type="html"><![CDATA[<p>很多项目现在都有组件式的包管理，比如 <code>composer</code> 管理的第三方组件都存放在 <code>vendor</code> 目录下，那么究竟这个目录应不应该放到 git 之类的版本管理里去，之前我的做法是不放，但是后来发现了一个问题，当多台机器面临更新第三方组件的时候，会出现版本不一致的问题，而且本身 Laravel 的 <code>config/app.php</code> 中启用了第三方组件，但是 <code>vendor</code> 目录中还需要 <code>composer update</code> 更新的时候就会报错；</p>
<p>所以，<code>vendor</code> 作为整个项目的一部分，应该放进版本控制系统(VCS)；在部署打包的时候也是一份子，编译打包进入 Docker 之类的容器，进行整体的部署，也才能够保障每个服务器上运行的代码是一致的;</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="composer" label="Composer" scheme="https://blog.khsing.net/tags/composer/" />
    <category term="php" label="Php" scheme="https://blog.khsing.net/tags/php/" />
    <published>2015-10-28T03:03:09Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[HP 关闭 Public Cloud 服务]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2015/10/hp-public-cloud.html" />
    <id>https://blog.khsing.net/2015/10/hp-public-cloud.html</id>
    <updated>2015-10-23T01:11:02Z</updated>
    <summary type="html"><![CDATA[<p><a href="http://www.hpcloud.com">HP Public Cloud</a> 宣布到明年1月底就关闭服务了，公有云这个市场有 <a href="https://aws.amazon.com">AWS</a> 这样的先行者和巨无霸，其它产品只能是边边角角像 <a href="https://www.linode.com">Linode</a> 和 <a href="https://www.digitalocean.com">Digtal Ocean</a> 这样填补便宜的 VPS 市场；</p>
<p>国内的竞争还不明朗，没有什么太多的数据，阿里云应该是国内最大了吧，腾讯云借着强绑定应该也有不少用户，剩下的就是 UCloud 和 金山云了，也主要靠游戏；其它的云厂商都是提供部分 AWS 的服务；</p>]]></summary><content type="html"><![CDATA[<p><a href="http://www.hpcloud.com">HP Public Cloud</a> 宣布到明年1月底就关闭服务了，公有云这个市场有 <a href="https://aws.amazon.com">AWS</a> 这样的先行者和巨无霸，其它产品只能是边边角角像 <a href="https://www.linode.com">Linode</a> 和 <a href="https://www.digitalocean.com">Digtal Ocean</a> 这样填补便宜的 VPS 市场；</p>
<p>国内的竞争还不明朗，没有什么太多的数据，阿里云应该是国内最大了吧，腾讯云借着强绑定应该也有不少用户，剩下的就是 UCloud 和 金山云了，也主要靠游戏；其它的云厂商都是提供部分 AWS 的服务；</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="hp" label="Hp" scheme="https://blog.khsing.net/tags/hp/" />
    <category term="cloud" label="Cloud" scheme="https://blog.khsing.net/tags/cloud/" />
    <published>2015-10-23T01:11:02Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Safari Bookmarklet的快捷键]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2015/10/safari-bookmarklet.html" />
    <id>https://blog.khsing.net/2015/10/safari-bookmarklet.html</id>
    <updated>2015-10-11T03:04:38Z</updated>
    <summary type="html"><![CDATA[<p>我很喜欢以前 Safari 的 Bookmark 的快捷键 <code>CMD + NUM</code>，但是 Safari 8 以后这个快捷键被调整成了 Tab 切换，新的 Bookmarklet 快捷键是 <code>CMD + Option + NUM</code>。</p>]]></summary><content type="html"><![CDATA[<p>我很喜欢以前 Safari 的 Bookmark 的快捷键 <code>CMD + NUM</code>，但是 Safari 8 以后这个快捷键被调整成了 Tab 切换，新的 Bookmarklet 快捷键是 <code>CMD + Option + NUM</code>。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="safari" label="Safari" scheme="https://blog.khsing.net/tags/safari/" />
    <published>2015-10-11T03:04:38Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[OS X EI Capitan 遭遇 mdworker deny 错误]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2015/10/os-x-ei-capitan-mdworker-deny.html" />
    <id>https://blog.khsing.net/2015/10/os-x-ei-capitan-mdworker-deny.html</id>
    <updated>2015-10-09T02:50:54Z</updated>
    <summary type="html"><![CDATA[<p>过完节回来第一件事就是把系统干干净净的升级到了OS X EI Captain，但是用了几天总是觉的顿顿的，打开 Console.app 看有大量的 <code>mdworker deny</code> 的错误，Google半天也解决不了，有的说重启按住 <code>Shift</code> 进入安全模式再重启就可以了，染病卵。然后还有说重新安装就好了的。</p>]]></summary><content type="html"><![CDATA[<p>过完节回来第一件事就是把系统干干净净的升级到了OS X EI Captain，但是用了几天总是觉的顿顿的，打开 Console.app 看有大量的 <code>mdworker deny</code> 的错误，Google半天也解决不了，有的说重启按住 <code>Shift</code> 进入安全模式再重启就可以了，染病卵。然后还有说重新安装就好了的。</p>
<pre tabindex="0"><code class="language-log" data-lang="log">Oct  9 10:22:51 Deathstar kernel[0]: Sandbox: mdworker(3830) deny(1) mach-lookup com.apple.audio.audiohald
Oct  9 10:22:52 Deathstar kernel[0]: Sandbox: mdworker(3829) deny(1) mach-lookup com.apple.audio.audiohald
Oct  9 10:22:52 Deathstar kernel[0]: Sandbox: mdworker(3830) deny(1) mach-lookup com.apple.audio.audiohald
</code></pre><p>本着治病救人的态度，我先不要重装了；</p>
<p>试了一下进入安全模式清理了所有的 Cache；来写个 blog 转头看的时候，呵呵，染病卵；帮主死的早啊！</p>
<p>看起来是Sandbox向<code>~/Caches/</code>目录写入文件有问题</p>
<p>Update: 试了<code>chown -R</code>whoami<code>:staff ~</code>，清Cache重启，然并卵；</p>
<p>Update: 试了把 Spotlight 给disable了，目测是不出现 mdworker 的问题了（呵呵，要是出现就邪了），但是其它和Sandbox相关的还是有，比如：</p>
<pre tabindex="0"><code class="language-log" data-lang="log">15/10/9 下午12:04:58.000 kernel[0]: Sandbox: com.apple.Safari(683) deny(1) file-read-metadata /usr
</code></pre><p>真是日狗了，一会儿打开 Spotlight 试试</p>
<p>Update2: 我败了，现在把几乎所有的东西都清理了，安全模式无数遍了，那个错误依然存在，不说了，晚上回家备份数据重新做系统，妈蛋的啊；</p>
<p>Update3: 在我清理了<code>~/Library/Container/*</code>以及大部分的<code>~/Library/Preferences</code>之后，终于不再出这个问题了，但是感觉 Console.app 下日志还是比较多的，只不过这次报错多和 Evernote 有关，难道说真的是 Evernote Must Die？</p>
<p>而且这次把 Safari 也顺道清理了，终于不会出现地址栏卡顿的情况了，不得不说 OS X 的行为越来越像 Windows，重启重装解决问题的套路又要来了。</p>
<p>Update4: 清理的时候还清理掉了一个<code>~/Library/Preferences/.GlobalPreferences.plist</code>和所有<code>~/Library/Preferences/ByHost</code>里的内容，发现三指拖动竟然没有了？Google 了一圈发现 Apple 竟然把这个功能放到 Accessibility 里去了，好吧，I服了U</p>
<p><img src="https://farm6.staticflickr.com/5711/22050605165_64e71f4f21_n.jpg" alt="Screen Shot 2015-10-09 at 5.27.56 PM"></p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="system" label="System" scheme="https://blog.khsing.net/categories/system/" />
    <category term="osx" label="Osx" scheme="https://blog.khsing.net/tags/osx/" />
    <category term="spotlight" label="Spotlight" scheme="https://blog.khsing.net/tags/spotlight/" />
    <published>2015-10-09T02:50:54Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[作弊条：Mac下给 Nexus 刷机]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2015/10/mac-nexus.html" />
    <id>https://blog.khsing.net/2015/10/mac-nexus.html</id>
    <updated>2015-10-08T08:53:03Z</updated>
    <summary type="html"><![CDATA[<p>收了一个 Nexus 5 等不及OTA，就自己刷了</p>
<ol>
<li><code>brew install android-platform-tools</code></li>
<li>在手机的关于中版本一栏连按7次，打开开发者模式，并且在开发者模式中打开 USB Debug</li>
<li>手机连接电脑执行<code>adb devices</code></li>
<li>如果有unauthorized字样，执行<code>adb kill-server && adb start-server</code>，重新连接手机，在手机上同意设备调试</li>
<li><code>adb reboot bootloader</code></li>
<li>进入bootloader界面之后，执行<code>fastboot oem unlock</code></li>
<li>然后执行下载好的官方rom包里的<code>flush_all.sh</code></li>
</ol>]]></summary><content type="html"><![CDATA[<p>收了一个 Nexus 5 等不及OTA，就自己刷了</p>
<ol>
<li><code>brew install android-platform-tools</code></li>
<li>在手机的关于中版本一栏连按7次，打开开发者模式，并且在开发者模式中打开 USB Debug</li>
<li>手机连接电脑执行<code>adb devices</code></li>
<li>如果有unauthorized字样，执行<code>adb kill-server && adb start-server</code>，重新连接手机，在手机上同意设备调试</li>
<li><code>adb reboot bootloader</code></li>
<li>进入bootloader界面之后，执行<code>fastboot oem unlock</code></li>
<li>然后执行下载好的官方rom包里的<code>flush_all.sh</code></li>
</ol>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="android" label="Android" scheme="https://blog.khsing.net/tags/android/" />
    <category term="nexus" label="Nexus" scheme="https://blog.khsing.net/tags/nexus/" />
    <category term="ota" label="Ota" scheme="https://blog.khsing.net/tags/ota/" />
    <published>2015-10-08T08:53:03Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Firefox 按 Dom 内容截图]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2015/10/firefox-dom.html" />
    <id>https://blog.khsing.net/2015/10/firefox-dom.html</id>
    <updated>2015-10-07T03:57:37Z</updated>
    <summary type="html"><![CDATA[<p><a href="https://www.mozilla.com/firefox">Firefox 41</a>有一个按 DOM 内容截图的功能，真是超酷超实用；</p>
<p><img src="https://i.imgur.com/zWYY7U4.gif" alt="Firefox screenshot by dom"></p>]]></summary><content type="html"><![CDATA[<p><a href="https://www.mozilla.com/firefox">Firefox 41</a>有一个按 DOM 内容截图的功能，真是超酷超实用；</p>
<p><img src="https://i.imgur.com/zWYY7U4.gif" alt="Firefox screenshot by dom"></p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="firefox" label="Firefox" scheme="https://blog.khsing.net/tags/firefox/" />
    <published>2015-10-07T03:57:37Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[ElasticSerach 成为了 AWS 的一项 Service]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2015/10/elasticserach-aws-service.html" />
    <id>https://blog.khsing.net/2015/10/elasticserach-aws-service.html</id>
    <updated>2015-10-07T03:48:34Z</updated>
    <summary type="html"><![CDATA[<p>亚马逊推出了ElasticSearch的服务－<a href="https://aws.amazon.com/cn/elasticsearch-service/">Amazon Elasticsearch Service</a>，这可以说是肯定了ElasticSearch在开源分布式搜索引擎的地位，同时也宣告了 AWS 自家的 CloudSearch 失败？</p>]]></summary><content type="html"><![CDATA[<p>亚马逊推出了ElasticSearch的服务－<a href="https://aws.amazon.com/cn/elasticsearch-service/">Amazon Elasticsearch Service</a>，这可以说是肯定了ElasticSearch在开源分布式搜索引擎的地位，同时也宣告了 AWS 自家的 CloudSearch 失败？</p>
<p>看看国内的阿里云有 OpenSearch，但是对其应用一直不是很明晰；</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="elasticsearch" label="Elasticsearch" scheme="https://blog.khsing.net/tags/elasticsearch/" />
    <category term="aws" label="Aws" scheme="https://blog.khsing.net/tags/aws/" />
    <published>2015-10-07T03:48:34Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[用dnsmasq设置本地开发dev环境]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2015/10/dnsmasqdev.html" />
    <id>https://blog.khsing.net/2015/10/dnsmasqdev.html</id>
    <updated>2015-10-05T23:57:13Z</updated>
    <summary type="html"><![CDATA[<p>作弊条一个，主要是为了映射多个项目的.dev泛域名解析到localhost</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>brew install dnsmasq
</span></span><span style="display:flex;"><span>cat <span style="color:#f1fa8c"><< EOF > /usr/local/etc/dnsmasq.conf
</span></span></span><span style="display:flex;"><span><span style="color:#f1fa8c">address=/.dev/127.0.0.1
</span></span></span><span style="display:flex;"><span><span style="color:#f1fa8c">listen-address=127.0.0.1
</span></span></span><span style="display:flex;"><span><span style="color:#f1fa8c">port=35353
</span></span></span><span style="display:flex;"><span><span style="color:#f1fa8c">EOF</span>
</span></span><span style="display:flex;"><span>sudo mkdir /etc/resolver
</span></span><span style="display:flex;"><span>sudo chown <span style="color:#f1fa8c">`</span>whoami<span style="color:#f1fa8c">`</span>:admin /etc/resolver
</span></span><span style="display:flex;"><span>cat <span style="color:#f1fa8c"><< EOF > /etc/resolver/dev
</span></span></span><span style="display:flex;"><span><span style="color:#f1fa8c">nameserver 127.0.0.1
</span></span></span><span style="display:flex;"><span><span style="color:#f1fa8c">port 35353
</span></span></span><span style="display:flex;"><span><span style="color:#f1fa8c">EOF</span>
</span></span></code></pre></div><p>使用了<code>brew services</code>的话还可以直接<code>brew services start dnsmasq</code>就启动了</p>]]></summary><content type="html"><![CDATA[<p>作弊条一个，主要是为了映射多个项目的.dev泛域名解析到localhost</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>brew install dnsmasq
</span></span><span style="display:flex;"><span>cat <span style="color:#f1fa8c"><< EOF > /usr/local/etc/dnsmasq.conf
</span></span></span><span style="display:flex;"><span><span style="color:#f1fa8c">address=/.dev/127.0.0.1
</span></span></span><span style="display:flex;"><span><span style="color:#f1fa8c">listen-address=127.0.0.1
</span></span></span><span style="display:flex;"><span><span style="color:#f1fa8c">port=35353
</span></span></span><span style="display:flex;"><span><span style="color:#f1fa8c">EOF</span>
</span></span><span style="display:flex;"><span>sudo mkdir /etc/resolver
</span></span><span style="display:flex;"><span>sudo chown <span style="color:#f1fa8c">`</span>whoami<span style="color:#f1fa8c">`</span>:admin /etc/resolver
</span></span><span style="display:flex;"><span>cat <span style="color:#f1fa8c"><< EOF > /etc/resolver/dev
</span></span></span><span style="display:flex;"><span><span style="color:#f1fa8c">nameserver 127.0.0.1
</span></span></span><span style="display:flex;"><span><span style="color:#f1fa8c">port 35353
</span></span></span><span style="display:flex;"><span><span style="color:#f1fa8c">EOF</span>
</span></span></code></pre></div><p>使用了<code>brew services</code>的话还可以直接<code>brew services start dnsmasq</code>就启动了</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="dns" label="Dns" scheme="https://blog.khsing.net/tags/dns/" />
    <category term="setup" label="Setup" scheme="https://blog.khsing.net/tags/setup/" />
    <published>2015-10-05T23:57:13Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[XcodeGhost编译器里的木马]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2015/09/xcodeghost.html" />
    <id>https://blog.khsing.net/2015/09/xcodeghost.html</id>
    <updated>2015-09-18T09:08:16Z</updated>
    <summary type="html"><![CDATA[<p>今天的XcodeGhost新闻算是炸了庙了，有人发现<a href="http://weibo.com/1650375593/CAV5fqdo3">非官方渠道下载的Xcode编译出来的App被注入第三方代码了</a>，紧接着就是一堆一堆的App被发现中招了。</p>
<p>大体上就是有人把挂了码的Xcode放到了百度网盘上，然后一些App的开发着就从百度网盘上下载了Xcode，用这些Xcode编译了App打包发给了Apple，Apple审核通过上架了，普通老百姓下载App并且使用App，跟着用户的数据就被发到了下面这些服务器上</p>]]></summary><content type="html"><![CDATA[<p>今天的XcodeGhost新闻算是炸了庙了，有人发现<a href="http://weibo.com/1650375593/CAV5fqdo3">非官方渠道下载的Xcode编译出来的App被注入第三方代码了</a>，紧接着就是一堆一堆的App被发现中招了。</p>
<p>大体上就是有人把挂了码的Xcode放到了百度网盘上，然后一些App的开发着就从百度网盘上下载了Xcode，用这些Xcode编译了App打包发给了Apple，Apple审核通过上架了，普通老百姓下载App并且使用App，跟着用户的数据就被发到了下面这些服务器上</p>
<ul>
<li><a href="http://init.crash-analytics.com">http://init.crash-analytics.com</a></li>
<li><a href="http://init.icloud-diagnostics.com">http://init.icloud-diagnostics.com</a></li>
<li><a href="http://init.icloud-analysis.com">http://init.icloud-analysis.com</a></li>
</ul>
<p>目前发现的被统计的信息如下：</p>
<ul>
<li>当前时间</li>
<li>应用名称</li>
<li>应用的唯一ID</li>
<li>当前设备的名称和类型</li>
<li>当前的语言和国家设置</li>
<li>设备的UUID</li>
<li>网络类型</li>
</ul>
<p>Update: <a href="http://m.weibo.cn/1846569133/3888466125150314">最新消息</a>，这玩意截获了所有的弹窗，发生内购之类的都会向上面的服务器发送加密的消息，而且目前没有解密消息内容，呵呵；</p>
<p>总的来说，这确实是一次老谋深算的进攻，攻击的同学干的很漂亮，先给您跪了；</p>
<p>有人做了<a href="https://docs.google.com/spreadsheets/d/1YELrImviQ5ARC8A-WKgNyx0puRxXPMjR3TmSzHghUZA/edit">一个列表来放中招App</a></p>
<p>我的应对就是发现有问题就卸载了吧，把该厂的所有App都卸了，这从一个侧面能反映出该公司的开发环境。</p>
<p>珍惜生命，从远离网盘开始；获取生产力工具还是要去正规渠道；</p>
<p>Update: 已经把国内的非必要App都给卸载了，呵呵；</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="security" label="Security" scheme="https://blog.khsing.net/tags/security/" />
    <category term="xcode" label="Xcode" scheme="https://blog.khsing.net/tags/xcode/" />
    <published>2015-09-18T09:08:16Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Let’s Encrypt开出了第一张证书]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2015/09/lets-encrypt-first-cert.html" />
    <id>https://blog.khsing.net/2015/09/lets-encrypt-first-cert.html</id>
    <updated>2015-09-09T04:00:02Z</updated>
    <summary type="html"><![CDATA[<p>Firefox的这个Let’s Encrypt计划开签出了第一张证书，目前来看所有的浏览器还没有设置为根证书信任（包括Firefox），等更新吧，等各家的浏览器升级了，并且<a href="https://letsencrypt.org/certificates/">ISRG root certificate</a>被预设了，我就考虑把证书换上去，加油吧！</p>]]></summary><content type="html"><![CDATA[<p>Firefox的这个Let’s Encrypt计划开签出了第一张证书，目前来看所有的浏览器还没有设置为根证书信任（包括Firefox），等更新吧，等各家的浏览器升级了，并且<a href="https://letsencrypt.org/certificates/">ISRG root certificate</a>被预设了，我就考虑把证书换上去，加油吧！</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="firefox" label="Firefox" scheme="https://blog.khsing.net/tags/firefox/" />
    <category term="https" label="Https" scheme="https://blog.khsing.net/tags/https/" />
    <category term="ssl" label="Ssl" scheme="https://blog.khsing.net/tags/ssl/" />
    <published>2015-09-09T04:00:02Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[设置Sublime Text 3下的PHP开发环境]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2015/09/setting-php-dev-env-with-sublime-text-3.html" />
    <id>https://blog.khsing.net/2015/09/setting-php-dev-env-with-sublime-text-3.html</id>
    <updated>2015-09-08T08:41:43Z</updated>
    <summary type="html"><![CDATA[<p>需要做一些PHP的开发工作，工欲善其事，必先利其器.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>brew tap homebrew/homebrew-php
</span></span><span style="display:flex;"><span>brew install curl
</span></span><span style="display:flex;"><span>brew install php56 --with-homebrew-curl
</span></span><span style="display:flex;"><span>brew install phpmd php-code-sniffer  php-cs-fixer
</span></span></code></pre></div><p>在Sublime Text 3里<code>cmd+shift+p</code>中<code>install package</code>，安装如下插件</p>]]></summary><content type="html"><![CDATA[<p>需要做一些PHP的开发工作，工欲善其事，必先利其器.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>brew tap homebrew/homebrew-php
</span></span><span style="display:flex;"><span>brew install curl
</span></span><span style="display:flex;"><span>brew install php56 --with-homebrew-curl
</span></span><span style="display:flex;"><span>brew install phpmd php-code-sniffer  php-cs-fixer
</span></span></code></pre></div><p>在Sublime Text 3里<code>cmd+shift+p</code>中<code>install package</code>，安装如下插件</p>
<ul>
<li><a href="https://github.com/benmatselby/sublime-phpcs">phpcs</a></li>
<li><a href="https://github.com/jotson/SublimePHPIntel">PHPIntel</a></li>
<li><a href="https://github.com/erichard/SublimePHPCompanion">PHP Companion</a></li>
<li><a href="https://github.com/akalongman/sublimetext-codeformatter">CodeFormatter</a></li>
</ul>
<p>Update: 2015-10-22 19:13
更新一下，配置一下可以让代码清晰一些了呢</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">"phpcs_path"</span>: <span style="color:#f1fa8c">"/usr/local/bin/phpcs"</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">"phpcs_show_errors_on_save"</span>: <span style="color:#ff79c6">false</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">"phpcs_show_gutter_marks"</span>: <span style="color:#ff79c6">true</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">"phpcs_outline_for_errors"</span>: <span style="color:#ff79c6">false</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">"php_cs_fixer_on_save"</span>: <span style="color:#ff79c6">true</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">"php_cs_fixer_executable_path"</span>:<span style="color:#f1fa8c">"/usr/local/bin/php-cs-fixer"</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">"php_cs_fixer_additional_args"</span>: {
</span></span><span style="display:flex;"><span>    <span style="color:#ff79c6">"--level=psr2"</span>:<span style="color:#f1fa8c">""</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#ff79c6">"--fixers=operators_spaces,align_equals,align_double_arrow,remove_lines_between_uses"</span>:<span style="color:#f1fa8c">""</span>
</span></span><span style="display:flex;"><span>  },
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">"phpcbf_path"</span>: <span style="color:#f1fa8c">"/usr/local/bin/phpcbf"</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">"phpcbf_on_save"</span>: <span style="color:#ff79c6">true</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">"phpcbf_show_quick_panel"</span>: <span style="color:#ff79c6">true</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">"phpcbf_executable_path"</span>: <span style="color:#f1fa8c">"/usr/local/bin/phpcbf"</span>
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div>]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="php" label="Php" scheme="https://blog.khsing.net/tags/php/" />
    <category term="brew" label="Brew" scheme="https://blog.khsing.net/tags/brew/" />
    <published>2015-09-08T08:41:43Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[在debian使用npm安装出错]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2015/08/debiannpm.html" />
    <id>https://blog.khsing.net/2015/08/debiannpm.html</id>
    <updated>2015-08-27T09:19:06Z</updated>
    <summary type="html"><![CDATA[<p>在一台Debian机器上部署Laravel，<code>nmp install</code>的时候总出错，错误如下</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>sh: 1: node: not found
</span></span><span style="display:flex;"><span>npm WARN This failure might be due to the use of legacy binary <span style="color:#f1fa8c">"node"</span>
</span></span><span style="display:flex;"><span>npm WARN For further explanations, please <span style="color:#8be9fd;font-style:italic">read</span>
</span></span><span style="display:flex;"><span>/usr/share/doc/nodejs/README.Debian
</span></span></code></pre></div><p><code>nodejs</code>一定是通过<code>apt-get</code>安装过了，查过之后就是还有一些老旧的package在使用<code>node</code>，所以需要安装一下<code>apt-get install nodejs-legacy</code>，之后就OK了</p>]]></summary><content type="html"><![CDATA[<p>在一台Debian机器上部署Laravel，<code>nmp install</code>的时候总出错，错误如下</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>sh: 1: node: not found
</span></span><span style="display:flex;"><span>npm WARN This failure might be due to the use of legacy binary <span style="color:#f1fa8c">"node"</span>
</span></span><span style="display:flex;"><span>npm WARN For further explanations, please <span style="color:#8be9fd;font-style:italic">read</span>
</span></span><span style="display:flex;"><span>/usr/share/doc/nodejs/README.Debian
</span></span></code></pre></div><p><code>nodejs</code>一定是通过<code>apt-get</code>安装过了，查过之后就是还有一些老旧的package在使用<code>node</code>，所以需要安装一下<code>apt-get install nodejs-legacy</code>，之后就OK了</p>
<p><a href="http://stackoverflow.com/questions/21168141/can-not-install-packages-using-node-package-manager-in-ubuntu">ref</a></p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="php" label="Php" scheme="https://blog.khsing.net/tags/php/" />
    <category term="laravel" label="Laravel" scheme="https://blog.khsing.net/tags/laravel/" />
    <category term="nodejs" label="Nodejs" scheme="https://blog.khsing.net/tags/nodejs/" />
    <published>2015-08-27T09:19:06Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Youtube downloader 又来一个]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2015/04/youtube-downloader.html" />
    <id>https://blog.khsing.net/2015/04/youtube-downloader.html</id>
    <updated>2015-04-21T10:59:08Z</updated>
    <summary type="html"><![CDATA[<p><a href="https://github.com/rg3/youtube-dl">youtube-dl</a> 又一个 Youtube downloader，不过这次这个真实大赞，支持的网站还真是多啊。</p>
<p>而且功能很强大，比如下载一个质量超级棒的，带字幕的(Youtube only)</p>]]></summary><content type="html"><![CDATA[<p><a href="https://github.com/rg3/youtube-dl">youtube-dl</a> 又一个 Youtube downloader，不过这次这个真实大赞，支持的网站还真是多啊。</p>
<p>而且功能很强大，比如下载一个质量超级棒的，带字幕的(Youtube only)</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>youtube-dl -f bestvideo+bestaudio https://www.youtube.com/watch?v<span style="color:#ff79c6">=</span>POu1e71OlMo --write-auto-sub
</span></span></code></pre></div>]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="tools" label="Tools" scheme="https://blog.khsing.net/categories/tools/" />
    <category term="youtube" label="Youtube" scheme="https://blog.khsing.net/tags/youtube/" />
    <category term="download" label="Download" scheme="https://blog.khsing.net/tags/download/" />
    <published>2015-04-21T10:59:08Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[在 Yosemite 下使用 JDK 1.6]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2015/04/yosemite-jdk-16.html" />
    <id>https://blog.khsing.net/2015/04/yosemite-jdk-16.html</id>
    <updated>2015-04-20T12:32:51Z</updated>
    <summary type="html"><![CDATA[<p>首先下载一个 <a href="http://supportdownload.apple.com/download.info.apple.com/Apple_Support_Area/Apple_Software_Updates/Mac_OS_X/downloads/031-03190.20140529.Pp3r4/JavaForOSX2014-001.dmg">OS X 的 JDK 1.6</a>.</p>
<p>然后要使用<code>Maven</code>的话，还要安装 3.1 的版本，之后的版本就要求 1.7 起步了。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>brew install homebrew/versions/maven31
</span></span></code></pre></div>]]></summary><content type="html"><![CDATA[<p>首先下载一个 <a href="http://supportdownload.apple.com/download.info.apple.com/Apple_Support_Area/Apple_Software_Updates/Mac_OS_X/downloads/031-03190.20140529.Pp3r4/JavaForOSX2014-001.dmg">OS X 的 JDK 1.6</a>.</p>
<p>然后要使用<code>Maven</code>的话，还要安装 3.1 的版本，之后的版本就要求 1.7 起步了。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>brew install homebrew/versions/maven31
</span></span></code></pre></div>]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="jdk" label="Jdk" scheme="https://blog.khsing.net/tags/jdk/" />
    <category term="java" label="Java" scheme="https://blog.khsing.net/tags/java/" />
    <category term="maven" label="Maven" scheme="https://blog.khsing.net/tags/maven/" />
    <published>2015-04-20T12:32:51Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[在 OS X Yosemite 里用 Homebrew 来安装 Tomcat]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2015/04/os-x-yosemite-homebrew-tomcat.html" />
    <id>https://blog.khsing.net/2015/04/os-x-yosemite-homebrew-tomcat.html</id>
    <updated>2015-04-16T07:57:25Z</updated>
    <summary type="html"><![CDATA[<p>部分内容用到了<code>Java</code>，所以机器上需要安装<code>JDK</code>和<code>Tomcat</code>，<code>JDK</code>去<a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">Oracle JDK下载站</a>拖回来安装。</p>
<p>然后是<code>brew install tomcat</code>就好了，启动使用<code>catalina start</code>，默认在<a href="http://127.0.0.1:8080">http://127.0.0.1:8080</a>。停止就<code>catalina stop</code>。</p>]]></summary><content type="html"><![CDATA[<p>部分内容用到了<code>Java</code>，所以机器上需要安装<code>JDK</code>和<code>Tomcat</code>，<code>JDK</code>去<a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">Oracle JDK下载站</a>拖回来安装。</p>
<p>然后是<code>brew install tomcat</code>就好了，启动使用<code>catalina start</code>，默认在<a href="http://127.0.0.1:8080">http://127.0.0.1:8080</a>。停止就<code>catalina stop</code>。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="system" label="System" scheme="https://blog.khsing.net/categories/system/" />
    <category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="java" label="Java" scheme="https://blog.khsing.net/tags/java/" />
    <category term="tomcat" label="Tomcat" scheme="https://blog.khsing.net/tags/tomcat/" />
    <published>2015-04-16T07:57:25Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[OS X下使用Homebrew来管理服务]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2015/04/os-xhomebrew.html" />
    <id>https://blog.khsing.net/2015/04/os-xhomebrew.html</id>
    <updated>2015-04-14T07:43:22Z</updated>
    <summary type="html"><![CDATA[<p>使用Homebrew时，经常有一系列的服务要安装启动，通常的做法是copy一个<code>plist</code>文件到<code>~/Library/LaunchAgents</code>目录下再<code>launchctl load</code>一下，比较麻烦。</p>]]></summary><content type="html"><![CDATA[<p>使用Homebrew时，经常有一系列的服务要安装启动，通常的做法是copy一个<code>plist</code>文件到<code>~/Library/LaunchAgents</code>目录下再<code>launchctl load</code>一下，比较麻烦。</p>
<p>今天发现了一个不错的玩意－brew services</p>
<ol>
<li>安装: <code>brew tap gapple/services</code></li>
<li>使用: <code>brew services restart mysql</code></li>
</ol>
<p>下面是我的<code>brew services list</code></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>$ brew services list
</span></span><span style="display:flex;"><span>influxdb   started      <span style="color:#bd93f9">658</span> /Users/khsing/Library/LaunchAgents/homebrew.mxcl.influxdb.plist
</span></span><span style="display:flex;"><span>dnsmasq    started    <span style="color:#bd93f9">34881</span> /Users/khsing/Library/LaunchAgents/homebrew.mxcl.dnsmasq.plist
</span></span><span style="display:flex;"><span>nginx      started    <span style="color:#bd93f9">39552</span> /Users/khsing/Library/LaunchAgents/homebrew.mxcl.nginx.plist
</span></span><span style="display:flex;"><span>postgresql started      <span style="color:#bd93f9">676</span> /Users/khsing/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
</span></span><span style="display:flex;"><span>php56      started    <span style="color:#bd93f9">45046</span> /Users/khsing/Library/LaunchAgents/homebrew.mxcl.php56.plist
</span></span><span style="display:flex;"><span>redis      started      <span style="color:#bd93f9">668</span> /Users/khsing/Library/LaunchAgents/homebrew.mxcl.redis.plist
</span></span><span style="display:flex;"><span>mysql      started    <span style="color:#bd93f9">34225</span> /Users/khsing/Library/LaunchAgents/homebrew.mxcl.mysql.plist
</span></span></code></pre></div><p>而且这个还可以帮助清理<code>brew services cleanup</code>，居家旅行必备。</p>
<p>参考来源：<a href="https://robots.thoughtbot.com/starting-and-stopping-background-services-with-homebrew">Starting and Stopping Background Services with Homebrew</a></p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="tools" label="Tools" scheme="https://blog.khsing.net/categories/tools/" />
    <category term="brew" label="Brew" scheme="https://blog.khsing.net/tags/brew/" />
    <category term="osx" label="Osx" scheme="https://blog.khsing.net/tags/osx/" />
    <category term="tools" label="Tools" scheme="https://blog.khsing.net/tags/tools/" />
    <published>2015-04-14T07:43:22Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[清理Yosemite的DNS Cache]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2015/04/yosemitedns-cache.html" />
    <id>https://blog.khsing.net/2015/04/yosemitedns-cache.html</id>
    <updated>2015-04-14T05:41:37Z</updated>
    <summary type="html"><![CDATA[<p>10.10.1以后就没有<code>mDNSResponder</code>了，取而代之的是<code>discoveryd</code>，所以清理DNS Cache的方法也不一样了。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>sudo discoveryutil udnsflushcaches¬
</span></span></code></pre></div>]]></summary><content type="html"><![CDATA[<p>10.10.1以后就没有<code>mDNSResponder</code>了，取而代之的是<code>discoveryd</code>，所以清理DNS Cache的方法也不一样了。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>sudo discoveryutil udnsflushcaches¬
</span></span></code></pre></div>]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="tools" label="Tools" scheme="https://blog.khsing.net/categories/tools/" />
    <category term="osx" label="Osx" scheme="https://blog.khsing.net/tags/osx/" />
    <category term="tips" label="Tips" scheme="https://blog.khsing.net/tags/tips/" />
    <published>2015-04-14T05:41:37Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[debian locales错误]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2015/03/debian-locales.html" />
    <id>https://blog.khsing.net/2015/03/debian-locales.html</id>
    <updated>2015-03-17T07:12:52Z</updated>
    <summary type="html"><![CDATA[<p>某台debian机器的locale执行出现如下错误</p>
<pre tabindex="0"><code class="language-log" data-lang="log">locale: Cannot set LC_CTYPE to default locale: No such file or directory
</code></pre><p>出现这个一般是locale文件缺失，需要重新生成</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>dpkg-reconfigure locales
</span></span></code></pre></div><p>选中需要的locale就可以了</p>]]></summary><content type="html"><![CDATA[<p>某台debian机器的locale执行出现如下错误</p>
<pre tabindex="0"><code class="language-log" data-lang="log">locale: Cannot set LC_CTYPE to default locale: No such file or directory
</code></pre><p>出现这个一般是locale文件缺失，需要重新生成</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>dpkg-reconfigure locales
</span></span></code></pre></div><p>选中需要的locale就可以了</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="system" label="System" scheme="https://blog.khsing.net/categories/system/" />
    <category term="debian" label="Debian" scheme="https://blog.khsing.net/tags/debian/" />
    <category term="locale" label="Locale" scheme="https://blog.khsing.net/tags/locale/" />
    <published>2015-03-17T07:12:52Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[在OS X里不同域名用不同的域名解析器]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2014/12/split-resolver-macosx.html" />
    <id>https://blog.khsing.net/2014/12/split-resolver-macosx.html</id>
    <updated>2014-12-08T09:03:37Z</updated>
    <summary type="html"><![CDATA[<p>由于公司内网的特殊原因，github.com以及pypi.python.org甚至gmail.com和google.com等网站被IT给劫持到了一个代理上去，本来是好事帮助大家翻墙了，但是这是实现我就不吐槽了。</p>]]></summary><content type="html"><![CDATA[<p>由于公司内网的特殊原因，github.com以及pypi.python.org甚至gmail.com和google.com等网站被IT给劫持到了一个代理上去，本来是好事帮助大家翻墙了，但是这是实现我就不吐槽了。</p>
<p>带来的问题是这些网站都会有https的访问，尤其是以下客户端和命令行，证书是内网下发的假证书（听到这里，是不是很熟悉呢，没错这就是man-in-the-middle attack，#此处可以有呵呵</p>
<p>曾经反应过这样的问题总是不能奏效，只能自己动手了，Mac下可以这么搞</p>
<p>在<code>/etc/resolver/</code>目录下放上域名为名的文件，比如<code>/etc/resolver/python.org</code>内容如下</p>
<pre tabindex="0"><code class="language-conf" data-lang="conf">nameserver 8.8.8.8
nameserver 8.8.4.4
</code></pre>]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="system" label="System" scheme="https://blog.khsing.net/categories/system/" />
    <category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="github" label="Github" scheme="https://blog.khsing.net/tags/github/" />
    <category term="dns" label="Dns" scheme="https://blog.khsing.net/tags/dns/" />
    <published>2014-12-08T09:03:37Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[重新使用Trello]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2014/12/trello.html" />
    <id>https://blog.khsing.net/2014/12/trello.html</id>
    <updated>2014-12-05T14:39:48Z</updated>
    <summary type="html"><![CDATA[<p>知道<a href="https://www.trello.com">Trello</a>这个服务真是时间不短了，但是一直没有怎么用这个东西，最近的事情多到脑子里装不下了，自己的OmniFocus只能给自己看，协同的事情还真是不太好做，所以呢这个Trello就重新用起来了。</p>
<p>他的官方有一个板子叫<a href="https://trello.com/b/nPNSBZjB/trello-resources">trello resources</a>，翻了一下确实有不少东西。</p>
<p>比如，在User case里有一些有趣的用法</p>
<ul>
<li>用来计划减肥: <a href="https://trello.com/b/tp7bnAod/lose-weight-get-in-shape">Lose Weight / Get in Shape</a></li>
<li>计划旅游: <a href="https://trello.com/b/tNQbo4EM/tours-of-homes-atlanta-area">Tours of Homes Atlanta area</a>, <a href="http://www.benmccormack.com/blog/plan-your-holiday-vacation-with-trello">Plan Your Holiday Vacation with Trello</a>, <a href="https://trello.com/b/4sS0fQe7/holiday-vacation-planning">Holiday Vacation Planning</a></li>
<li>招聘：<a href="http://ryancarson.com/post/23990414000/how-to-hire-a-lot-of-talented-people-very-quickly">How to hire a lot of talented people, very quickly</a></li>
</ul>]]></summary><content type="html"><![CDATA[<p>知道<a href="https://www.trello.com">Trello</a>这个服务真是时间不短了，但是一直没有怎么用这个东西，最近的事情多到脑子里装不下了，自己的OmniFocus只能给自己看，协同的事情还真是不太好做，所以呢这个Trello就重新用起来了。</p>
<p>他的官方有一个板子叫<a href="https://trello.com/b/nPNSBZjB/trello-resources">trello resources</a>，翻了一下确实有不少东西。</p>
<p>比如，在User case里有一些有趣的用法</p>
<ul>
<li>用来计划减肥: <a href="https://trello.com/b/tp7bnAod/lose-weight-get-in-shape">Lose Weight / Get in Shape</a></li>
<li>计划旅游: <a href="https://trello.com/b/tNQbo4EM/tours-of-homes-atlanta-area">Tours of Homes Atlanta area</a>, <a href="http://www.benmccormack.com/blog/plan-your-holiday-vacation-with-trello">Plan Your Holiday Vacation with Trello</a>, <a href="https://trello.com/b/4sS0fQe7/holiday-vacation-planning">Holiday Vacation Planning</a></li>
<li>招聘：<a href="http://ryancarson.com/post/23990414000/how-to-hire-a-lot-of-talented-people-very-quickly">How to hire a lot of talented people, very quickly</a></li>
</ul>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="trello" label="Trello" scheme="https://blog.khsing.net/tags/trello/" />
    <category term="pm" label="Pm" scheme="https://blog.khsing.net/tags/pm/" />
    <published>2014-12-05T14:39:48Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[命令行下的代理设置]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2014/12/set-proxy-under-cli.html" />
    <id>https://blog.khsing.net/2014/12/set-proxy-under-cli.html</id>
    <updated>2014-12-01T10:10:35Z</updated>
    <summary type="html"><![CDATA[<p>为了科学上网，访问github之类的快一些，总要在命令行工具下用代理，于是就有了如下设定</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#6272a4"># Setup commandline proxy</span>
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">_proxy</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">"http://127.0.0.1:16888"</span>
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">_noproxy</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">"localhost,.sina.com.cn,.weibo.com"</span>
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">alias</span> <span style="color:#8be9fd;font-style:italic">proxyon</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">"export http_proxy=</span><span style="color:#f1fa8c">${</span><span style="color:#8be9fd;font-style:italic">_proxy</span><span style="color:#f1fa8c">}</span><span style="color:#f1fa8c"> https_proxy=</span><span style="color:#f1fa8c">${</span><span style="color:#8be9fd;font-style:italic">_proxy</span><span style="color:#f1fa8c">}</span><span style="color:#f1fa8c"> no_proxy=</span><span style="color:#f1fa8c">${</span><span style="color:#8be9fd;font-style:italic">_noproxy</span><span style="color:#f1fa8c">}</span><span style="color:#f1fa8c">"</span>
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">alias</span> <span style="color:#8be9fd;font-style:italic">proxyoff</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">"unset http_proxy https_proxy no_proxy"</span>
</span></span></code></pre></div><p>这个no_proxy是为了让本地内网的repo不要走代理<code>.sina.com.cn</code>代表了该域名下的内容都不走代理。</p>]]></summary><content type="html"><![CDATA[<p>为了科学上网，访问github之类的快一些，总要在命令行工具下用代理，于是就有了如下设定</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#6272a4"># Setup commandline proxy</span>
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">_proxy</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">"http://127.0.0.1:16888"</span>
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">_noproxy</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">"localhost,.sina.com.cn,.weibo.com"</span>
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">alias</span> <span style="color:#8be9fd;font-style:italic">proxyon</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">"export http_proxy=</span><span style="color:#f1fa8c">${</span><span style="color:#8be9fd;font-style:italic">_proxy</span><span style="color:#f1fa8c">}</span><span style="color:#f1fa8c"> https_proxy=</span><span style="color:#f1fa8c">${</span><span style="color:#8be9fd;font-style:italic">_proxy</span><span style="color:#f1fa8c">}</span><span style="color:#f1fa8c"> no_proxy=</span><span style="color:#f1fa8c">${</span><span style="color:#8be9fd;font-style:italic">_noproxy</span><span style="color:#f1fa8c">}</span><span style="color:#f1fa8c">"</span>
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">alias</span> <span style="color:#8be9fd;font-style:italic">proxyoff</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">"unset http_proxy https_proxy no_proxy"</span>
</span></span></code></pre></div><p>这个no_proxy是为了让本地内网的repo不要走代理<code>.sina.com.cn</code>代表了该域名下的内容都不走代理。</p>
<p>在<code>sudoers</code>里写上环境变量的保持，</p>
<pre tabindex="0"><code class="language-conf" data-lang="conf">Defaults    env_keep += "http_proxy https_proxy no_proxy"
</code></pre>]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="system" label="System" scheme="https://blog.khsing.net/categories/system/" />
    <category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="shell" label="Shell" scheme="https://blog.khsing.net/tags/shell/" />
    <category term="proxy" label="Proxy" scheme="https://blog.khsing.net/tags/proxy/" />
    <category term="gfw" label="Gfw" scheme="https://blog.khsing.net/tags/gfw/" />
    <published>2014-12-01T10:10:35Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[启用Akismet]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2014/11/enable-akismet.html" />
    <id>https://blog.khsing.net/2014/11/enable-akismet.html</id>
    <updated>2014-11-29T16:33:22Z</updated>
    <summary type="html"><![CDATA[<p>趁着收拾blog系统的时候，升级到了MovableType 6，同时也好好处理了一下之前的comments，发现即便是在启用验证码的情况下，依旧有不少Spam。</p>]]></summary><content type="html"><![CDATA[<p>趁着收拾blog系统的时候，升级到了MovableType 6，同时也好好处理了一下之前的comments，发现即便是在启用验证码的情况下，依旧有不少Spam。</p>
<p>于是就启用了Akismet，不过我是下载回来之后些许改动，都放在了<a href="https://github.com/khsing/mt-plugin-akismet">github/mt-plugin-akismet</a>.</p>
<p>安装很简单，</p>
<ul>
<li>建立一个软链接到<code>mt-plugin-akismet/plugins/akismet</code></li>
<li>进入 System Overview -> Tools -> Plugins -> MT-Akismet -> Settings</li>
<li>在API Key的位置上写上在<a href="http://akismet.com">http://akismet.com</a>申请的API Key就好了。</li>
</ul>
<p>自己试一下，看看Activelog有没有报错，如果没有点进新的Comments应该可以看到如下界面</p>
<p>另外也可以在akismet站上看得到统计信息。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="others" label="Others" scheme="https://blog.khsing.net/categories/others/" />
    <category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <published>2014-11-29T16:33:22Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[重装Mac OS X 10.10]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2014/11/reinstall-macosx-yosemite.html" />
    <id>https://blog.khsing.net/2014/11/reinstall-macosx-yosemite.html</id>
    <updated>2014-11-28T15:09:37Z</updated>
    <summary type="html"><![CDATA[<h2 id="重装mac-os-x-1010">重装Mac OS X 10.10</h2>
<p>最近很是悲催，家里虽然添置了新的NAS，但是在导数据的时候移动硬盘挂了，这个硬盘了有一部分数据是没有备份的，这是最糟心的了。真是应了墨菲定律，也真是应了那句话”备份不做，日子甭过。”</p>]]></summary><content type="html"><![CDATA[<h2 id="重装mac-os-x-1010">重装Mac OS X 10.10</h2>
<p>最近很是悲催，家里虽然添置了新的NAS，但是在导数据的时候移动硬盘挂了，这个硬盘了有一部分数据是没有备份的，这是最糟心的了。真是应了墨菲定律，也真是应了那句话”备份不做，日子甭过。”</p>
<p>俗话说的好”祸不单行”，就在那个硬盘挂掉的时候我也发现了我的 Macbook Pro 的硬盘分区很不对劲，用Disk Utility并不能修复，即使使用<code>CMD+R</code>启动到Recovery Mode依然不行，HFS+不是一般的渣啊。备份数据，重装系统。</p>
<p>这次要来一个全新的安装，硬盘还要格式化。</p>
<ol>
<li>
<p>制作一个USB安装盘, 具体参考<a href="http://osxdaily.com/2014/10/16/make-os-x-yosemite-boot-install-drive/">How to Make an OS X Yosemite Boot Installer USB Drive</a>, 简概之<code>$ sudo /Applications/Install\ OS\ X\ Yosemite.app/Contents/Resources/createinstallmedia --volume /Volumes/Untitled --applicationpath /Applications/Install\ OS\ X\ Yosemite.app --nointeraction</code></p>
</li>
<li>
<p>用这个U盘启动</p>
</li>
<li>
<p>重置硬盘，打开<code>Terminal.app</code>, 执行 <code>$ diskutil eraseDisk JHFS+ OSX disk0</code></p>
</li>
<li>
<p>重置结束之后，检查磁盘应该如下</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>diskutil list disk0
</span></span><span style="display:flex;"><span>/dev/disk
</span></span><span style="display:flex;"><span><span style="color:#6272a4">#: TYPE NAME SIZE IDENTIFIER</span>
</span></span><span style="display:flex;"><span> 0: GUID partition scheme *251.0 GB disk0
</span></span><span style="display:flex;"><span> 1: EFI EFI 209.7 MB disk0s1
</span></span><span style="display:flex;"><span> 2: Apple CoreStorage 250.1 GB disk0s2
</span></span><span style="display:flex;"><span> 3: Apple Boot Recovery HD 650.0 MB disk0s3
</span></span></code></pre></div></li>
<li>
<p>退出之后重新安装整个系统。</p>
</li>
</ol>
<p>经验教训还是，经常备份，尤其是重要的数据，电影音乐之类的东西都还好说，最重要的就是拍摄的照片和视频了。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="installation" label="Installation" scheme="https://blog.khsing.net/tags/installation/" />
    <category term="reinstall" label="Reinstall" scheme="https://blog.khsing.net/tags/reinstall/" />
    <category term="osx" label="Osx" scheme="https://blog.khsing.net/tags/osx/" />
    <published>2014-11-28T15:09:37Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[打开spdy支持]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2014/11/enable-spdy.html" />
    <id>https://blog.khsing.net/2014/11/enable-spdy.html</id>
    <updated>2014-11-24T04:03:30Z</updated>
    <summary type="html"><![CDATA[<p>把自己的站都给放到SSL下也有一阵子了，以前用startssl，头几天更新证书的时候StartSSL宕机了，索性就买了ssl。</p>
<p>今天打开了nginx 1.6的spdy支持，非常简单。</p>]]></summary><content type="html"><![CDATA[<p>把自己的站都给放到SSL下也有一阵子了，以前用startssl，头几天更新证书的时候StartSSL宕机了，索性就买了ssl。</p>
<p>今天打开了nginx 1.6的spdy支持，非常简单。</p>
<pre tabindex="0"><code class="language-conf" data-lang="conf">listen 443 ssl spdy;
</code></pre>]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="https" label="Https" scheme="https://blog.khsing.net/tags/https/" />
    <category term="nginx" label="Nginx" scheme="https://blog.khsing.net/tags/nginx/" />
    <published>2014-11-24T04:03:30Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[手机和桌面的数据分享]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2014/11/share-data-between-pc-and-mobile.html" />
    <id>https://blog.khsing.net/2014/11/share-data-between-pc-and-mobile.html</id>
    <updated>2014-11-19T10:11:18Z</updated>
    <summary type="html"><![CDATA[<p>苹果的订单发货了，给邮箱里来了一个链接，点开了就是跳转到EMS相应的快递追踪上去了。我习惯这个东西在手机上用「快递100」来管理，问题来了，怎么把这个快递单号扔给手机。之前的方法是放到evernote、Notes之类的云笔记本里，然后拷贝过来。</p>]]></summary><content type="html"><![CDATA[<p>苹果的订单发货了，给邮箱里来了一个链接，点开了就是跳转到EMS相应的快递追踪上去了。我习惯这个东西在手机上用「快递100」来管理，问题来了，怎么把这个快递单号扔给手机。之前的方法是放到evernote、Notes之类的云笔记本里，然后拷贝过来。</p>
<p>今天我尝试了一下用<a href="https://chrome.google.com/webstore/detail/bhddglpocgogkbpkbkoieiplhgbjmiim">Chrome插件</a>直接生成一个QR Code用快递100的App扫描一下就好了。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="apple" label="Apple" scheme="https://blog.khsing.net/tags/apple/" />
    <published>2014-11-19T10:11:18Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[家庭无线打印搞定]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2014/11/home-airprint.html" />
    <id>https://blog.khsing.net/2014/11/home-airprint.html</id>
    <updated>2014-11-12T03:37:33Z</updated>
    <summary type="html"><![CDATA[<p>最近给家里添了几个物件，基本实现了在家的无线打印需求。</p>
<ul>
<li><a href="http://item.jd.com/1086970.html">佳能 CP910</a></li>
<li><a href="https://www.apple.com/airport-express/">Apple Airport Express</a></li>
<li><a href="http://en.wikipedia.org/wiki/HP_LaserJet_1020">HP LaserJet 1020</a></li>
<li><a href="http://www.dpreview.com/reviews/ricoh-gr">Ricoh GR</a></li>
</ul>
<p>关于佳能CP910，使用的感觉很不错，属于是热升华技术，相纸的成本比较高，但是家庭使用，也不是大批量打印，成本忽略了吧，打印出照片的喜悦完全淹没了成本问题，而且在TB还可以买到日本代购的相纸，相对稍便宜些。所以家里还缺了一个东西就是照片墙。</p>]]></summary><content type="html"><![CDATA[<p>最近给家里添了几个物件，基本实现了在家的无线打印需求。</p>
<ul>
<li><a href="http://item.jd.com/1086970.html">佳能 CP910</a></li>
<li><a href="https://www.apple.com/airport-express/">Apple Airport Express</a></li>
<li><a href="http://en.wikipedia.org/wiki/HP_LaserJet_1020">HP LaserJet 1020</a></li>
<li><a href="http://www.dpreview.com/reviews/ricoh-gr">Ricoh GR</a></li>
</ul>
<p>关于佳能CP910，使用的感觉很不错，属于是热升华技术，相纸的成本比较高，但是家庭使用，也不是大批量打印，成本忽略了吧，打印出照片的喜悦完全淹没了成本问题，而且在TB还可以买到日本代购的相纸，相对稍便宜些。所以家里还缺了一个东西就是照片墙。</p>
<p>拿910配合来打印很方便，需要注意的就是它的dpi是300，在通过Aperture之类的打印的时候一定要选好了DPI，否则默认可是按72dpi打印的，那就糟烂透了。</p>
<p>Airport Express有点问题了，本想拿它作Wifi Repeater，但是这货只能和水果的东西做Repeater，一下子就变成了只和HP 1020打印机配合的AirPrint服务器了，功能减半啊，有点亏，现在开始考虑要不要给家里添一个水果的高端路由器（麻痹，苹果毁一生啊</p>
<p>其实CP910就是因为Ricoh GR买的，很不错的相机，成像很好，28mm定焦，有乐趣。不过<a href="https://www.flickr.com/photos/khsing/sets/">我拍的</a>比较差。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="product" label="Product" scheme="https://blog.khsing.net/tags/product/" />
    <category term="printer" label="Printer" scheme="https://blog.khsing.net/tags/printer/" />
    <category term="apple" label="Apple" scheme="https://blog.khsing.net/tags/apple/" />
    <category term="wifi" label="Wifi" scheme="https://blog.khsing.net/tags/wifi/" />
    <published>2014-11-12T03:37:33Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[招聘: 新浪招聘DevOps]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2014/04/sina-is-hiring-devops.html" />
    <id>https://blog.khsing.net/2014/04/sina-is-hiring-devops.html</id>
    <updated>2014-04-08T11:04:23Z</updated>
    <summary type="html"><![CDATA[<p>职位：运维开发工程师 （需求2~3人）</p>
<p>工作地点：北京，中关村地区</p>
<ul>
<li>工作职责
<ul>
<li>分析日志和监控数据指标，发现和定位问题</li>
<li>对系统故障进行长期的跟踪分析</li>
</ul>
</li>
<li>任职要求：
<ul>
<li>有3年以上Linux运维经验；</li>
<li>精通Linux/UNIX等操作系统，有3年以上Linux平台操作经验； 熟悉Shell编程，熟悉Python或Ruby者优先；</li>
<li>熟悉服务器监控软件，有较强的分析能力；</li>
<li>熟悉rsyslog, scribe, flume等日志收集和处理系统；</li>
<li>熟悉Nginx、Apache、Haproxy、LVS等软件日常操作和优化</li>
<li>学习能力强，能快速了解掌握新技术</li>
</ul>
</li>
<li>优先条件：
<ul>
<li>熟悉Elasticsearch、Logstash者优先</li>
</ul>
</li>
</ul>
<p>有意者请联系我，邮箱：khsing.cn@gmail.com, 来信注明应聘职位，附上简历一份。</p>]]></summary><content type="html"><![CDATA[<p>职位：运维开发工程师 （需求2~3人）</p>
<p>工作地点：北京，中关村地区</p>
<ul>
<li>工作职责
<ul>
<li>分析日志和监控数据指标，发现和定位问题</li>
<li>对系统故障进行长期的跟踪分析</li>
</ul>
</li>
<li>任职要求：
<ul>
<li>有3年以上Linux运维经验；</li>
<li>精通Linux/UNIX等操作系统，有3年以上Linux平台操作经验； 熟悉Shell编程，熟悉Python或Ruby者优先；</li>
<li>熟悉服务器监控软件，有较强的分析能力；</li>
<li>熟悉rsyslog, scribe, flume等日志收集和处理系统；</li>
<li>熟悉Nginx、Apache、Haproxy、LVS等软件日常操作和优化</li>
<li>学习能力强，能快速了解掌握新技术</li>
</ul>
</li>
<li>优先条件：
<ul>
<li>熟悉Elasticsearch、Logstash者优先</li>
</ul>
</li>
</ul>
<p>有意者请联系我，邮箱：khsing.cn@gmail.com, 来信注明应聘职位，附上简历一份。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="others" label="Others" scheme="https://blog.khsing.net/categories/others/" />
    <category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="hiring" label="Hiring" scheme="https://blog.khsing.net/tags/hiring/" />
    <category term="job" label="Job" scheme="https://blog.khsing.net/tags/job/" />
    <published>2014-04-08T11:04:23Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[用https代替git-ssh来push]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2013/12/httpsgit-sshpush.html" />
    <id>https://blog.khsing.net/2013/12/httpsgit-sshpush.html</id>
    <updated>2013-12-19T05:36:44Z</updated>
    <summary type="html"><![CDATA[<p>最近发现推送代码到github总是要账户名和密码，大多给出的解决办法是用ssh代替https就解决了，而且说是just simply。鄙人觉的这简直就是不负责任的解决办法（虽然之前我也是这么解决的），我忍你很久了。正确的方法是在家目录放一个<code>.netrc</code>的文件（win用户自动绕开，我不会告诉你们是在家目录放_netrc的），内容如下</p>]]></summary><content type="html"><![CDATA[<p>最近发现推送代码到github总是要账户名和密码，大多给出的解决办法是用ssh代替https就解决了，而且说是just simply。鄙人觉的这简直就是不负责任的解决办法（虽然之前我也是这么解决的），我忍你很久了。正确的方法是在家目录放一个<code>.netrc</code>的文件（win用户自动绕开，我不会告诉你们是在家目录放_netrc的），内容如下</p>
<pre tabindex="0"><code class="language-config" data-lang="config">machine github.com
login <user>;
password <password>;
</code></pre><p>REF: <a href="http://stackoverflow.com/a/14417827/437840">StackOverflow:Git push requires username and password</a></p>
<p>Update: 前面的方法请绕行，目前的做法是<code>git config --global credential.helper osxkeychain</code>.</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="github" label="Github" scheme="https://blog.khsing.net/tags/github/" />
    <category term="auth" label="Auth" scheme="https://blog.khsing.net/tags/auth/" />
    <published>2013-12-19T05:36:44Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[关闭ElasticSearch自动匹配]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2013/11/elasticsearch.html" />
    <id>https://blog.khsing.net/2013/11/elasticsearch.html</id>
    <updated>2013-11-26T03:53:31Z</updated>
    <summary type="html"><![CDATA[<p>这几天在弄ElasticSearch来分析日志，突然有一天早上8:00之后的日志就进不来了，看了分析程序运行正常，服务也正常，只是ElaticSearch的日志增长很快，其中比较值得注意的就是这条了。</p>]]></summary><content type="html"><![CDATA[<p>这几天在弄ElasticSearch来分析日志，突然有一天早上8:00之后的日志就进不来了，看了分析程序运行正常，服务也正常，只是ElaticSearch的日志增长很快，其中比较值得注意的就是这条了。</p>
<pre tabindex="0"><code class="language-log" data-lang="log">Caused by: org.elasticsearch.index.mapper.MapperParsingException: failed to parse date field [22-Nov-2013 12:24:30], tried both date format [yyyy/MM/dd HH:mm:ss||yyyy/MM/dd], and timestamp number with locale []
</code></pre><p>看起来应该是mapping的问题，对比了一下当前的mapping和之前的，确实有一些不一样，<code>timestamp</code>之前是<code>string</code>，现在成了<code>date</code>，本着调整一下mapping就可以的思路，调整了，开始有数据可以进来了，但是错误还是很多。</p>
<p>仔细看了一下，ES有一个<code>date_detection</code>的机制，得把这个给关了，停止他对时间字段的自动mapping。</p>
<p>在<code>CONFIG_DIR</code>下放一个<code>default-mapping.json</code>就可以从<code>cluster</code>级别关闭了。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>  default : {
</span></span><span style="display:flex;"><span>    <span style="color:#ff79c6">"date_detection"</span> : <span style="color:#ff79c6">false</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#ff79c6">"properties"</span> : {
</span></span><span style="display:flex;"><span>      <span style="color:#ff79c6">"@timestamp"</span> : {
</span></span><span style="display:flex;"><span>        <span style="color:#ff79c6">"type"</span> : <span style="color:#f1fa8c">"date"</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#ff79c6">"format"</span> : <span style="color:#f1fa8c">"dateOptionalTime"</span>
</span></span><span style="display:flex;"><span>      }
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>  }
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div>]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="system" label="System" scheme="https://blog.khsing.net/categories/system/" />
    <category term="elasticsearch" label="Elasticsearch" scheme="https://blog.khsing.net/tags/elasticsearch/" />
    <published>2013-11-26T03:53:31Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[从iOS7到iOS6.1.x的蛋疼]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2013/10/ios7ios61x.html" />
    <id>https://blog.khsing.net/2013/10/ios7ios61x.html</id>
    <updated>2013-10-12T09:16:54Z</updated>
    <summary type="html"><![CDATA[<p>手贱的把自己的iPhone4更新到了iOS7，介于水果的一贯作风，估计iPhone4是无法承受iOS7之重，当然这不是重点，重点是我想把他给降回来了。在升级之前我还专门的去看了看自己备份的shsh，并且确认了使用ifaith 1.5.9是可以恢复回来的。刷上去是真的简单，就是确实有些慢，降回来吧，用ifaith降回来了，之后发现，回是回来了，但是中文输入法是怎么也打不开，表现为app挂掉，妈蛋啊！试了多次，发现ifaith每一次build出来的ipfw文件并不一致(MD5不一致)，再也不相信爱情了。现在觉的iPhone4跑iOS7也还好。</p>]]></summary><content type="html"><![CDATA[<p>手贱的把自己的iPhone4更新到了iOS7，介于水果的一贯作风，估计iPhone4是无法承受iOS7之重，当然这不是重点，重点是我想把他给降回来了。在升级之前我还专门的去看了看自己备份的shsh，并且确认了使用ifaith 1.5.9是可以恢复回来的。刷上去是真的简单，就是确实有些慢，降回来吧，用ifaith降回来了，之后发现，回是回来了，但是中文输入法是怎么也打不开，表现为app挂掉，妈蛋啊！试了多次，发现ifaith每一次build出来的ipfw文件并不一致(MD5不一致)，再也不相信爱情了。现在觉的iPhone4跑iOS7也还好。</p>
<p>接下来是重点了，此事表明，我们做备份，不光要验证恢复，还要做回归测试。</p>
<p>2014/01/17 update: 还是撤回到了6.1.3，iOS7在iPhone4上还是作死，输入法的问题已经用JB后的百度来解决了</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="iphone" label="Iphone" scheme="https://blog.khsing.net/tags/iphone/" />
    <category term="upgrade" label="Upgrade" scheme="https://blog.khsing.net/tags/upgrade/" />
    <category term="jailbreak" label="Jailbreak" scheme="https://blog.khsing.net/tags/jailbreak/" />
    <published>2013-10-12T09:16:54Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[手贱升级了OS X 10.8.5]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2013/09/os-x-1085.html" />
    <id>https://blog.khsing.net/2013/09/os-x-1085.html</id>
    <updated>2013-09-24T12:10:31Z</updated>
    <summary type="html"><![CDATA[<p>下午看到升级提升就升级了10.8.5，现在Photoshop不能安装了，准备退回去(重装10.8.4，不升级)，麻痹的。</p>]]></summary><content type="html"><![CDATA[<p>下午看到升级提升就升级了10.8.5，现在Photoshop不能安装了，准备退回去(重装10.8.4，不升级)，麻痹的。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="osx" label="Osx" scheme="https://blog.khsing.net/tags/osx/" />
    <published>2013-09-24T12:10:31Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[tmux是神器]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2013/08/tmux-is-awesome.html" />
    <id>https://blog.khsing.net/2013/08/tmux-is-awesome.html</id>
    <updated>2013-08-27T10:27:25Z</updated>
    <summary type="html"><![CDATA[<p>用了這麼長時間的tmux，今天才發現這貨有這個兇殘能力，結對編程的夥伴們有福了</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>tmux new -s pair
</span></span></code></pre></div><p>開另外一個電腦或者窗口，然後繼續</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>tmux new-session -t pair -s pair2
</span></span></code></pre></div><p>享受人生吧</p>]]></summary><content type="html"><![CDATA[<p>用了這麼長時間的tmux，今天才發現這貨有這個兇殘能力，結對編程的夥伴們有福了</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>tmux new -s pair
</span></span></code></pre></div><p>開另外一個電腦或者窗口，然後繼續</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>tmux new-session -t pair -s pair2
</span></span></code></pre></div><p>享受人生吧</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="cli" label="CLI" scheme="https://blog.khsing.net/categories/cli/" />
    <category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="tools" label="Tools" scheme="https://blog.khsing.net/tags/tools/" />
    <category term="tmux" label="Tmux" scheme="https://blog.khsing.net/tags/tmux/" />
    <published>2013-08-27T10:27:25Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[糾結於機械鍵盤]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2013/08/keyboard.html" />
    <id>https://blog.khsing.net/2013/08/keyboard.html</id>
    <updated>2013-08-26T15:15:44Z</updated>
    <summary type="html"><![CDATA[<p>想搞一個機械鍵盤，看來看去糾結在了三款鍵盤上面。</p>
<ul>
<li>Das Keyboard: 這個是我看到評價很好的鍵盤了，主要是擊鍵的感覺很到位。缺點是太大了，我其實不想要一個全鍵位的鍵盤。</li>
<li>Filco 聖手2 87: 這個鍵盤也不錯了。缺點是鍵帽是ABS材質，用久了會變油打滑，只有側刻，沒有無刻版本。</li>
<li>HHKB Pro 2: 最喜歡這個鍵盤佈局了，而且可以編程，唯一的缺點是太貴了。</li>
</ul>
<p>綜合下來我想要的一個機械鍵盤是</p>]]></summary><content type="html"><![CDATA[<p>想搞一個機械鍵盤，看來看去糾結在了三款鍵盤上面。</p>
<ul>
<li>Das Keyboard: 這個是我看到評價很好的鍵盤了，主要是擊鍵的感覺很到位。缺點是太大了，我其實不想要一個全鍵位的鍵盤。</li>
<li>Filco 聖手2 87: 這個鍵盤也不錯了。缺點是鍵帽是ABS材質，用久了會變油打滑，只有側刻，沒有無刻版本。</li>
<li>HHKB Pro 2: 最喜歡這個鍵盤佈局了，而且可以編程，唯一的缺點是太貴了。</li>
</ul>
<p>綜合下來我想要的一個機械鍵盤是</p>
<ul>
<li>Cherry MX Blue(青軸)</li>
<li>Tenkeyless. (無數字鍵盤，甚至無Home,Page鍵區)</li>
<li>PBT材質鍵帽</li>
<li>無刻</li>
</ul>
<p>糾結啊</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="keyboard" label="Keyboard" scheme="https://blog.khsing.net/tags/keyboard/" />
    <published>2013-08-26T15:15:44Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Vagrant使用桥接网络]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2013/07/vagrant.html" />
    <id>https://blog.khsing.net/2013/07/vagrant.html</id>
    <updated>2013-07-19T14:51:59Z</updated>
    <summary type="html"><![CDATA[<p>Vagrant是一个非常好的工具，可以让你在本机做很多测试，甚至在企业里可以提供给开发、运帷维持统一的本地开发环境。</p>
<p>Vagrant的v1和v2变化非常大，以至于之前的<code>:bridged</code>设置失效，无法配置一个桥接网路，今天又读了读文档，这个选项变成了<code>:public_network</code></p>]]></summary><content type="html"><![CDATA[<p>Vagrant是一个非常好的工具，可以让你在本机做很多测试，甚至在企业里可以提供给开发、运帷维持统一的本地开发环境。</p>
<p>Vagrant的v1和v2变化非常大，以至于之前的<code>:bridged</code>设置失效，无法配置一个桥接网路，今天又读了读文档，这个选项变成了<code>:public_network</code></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-ruby" data-lang="ruby"><span style="display:flex;"><span>Vagrant<span style="color:#ff79c6">.</span>configure(<span style="color:#f1fa8c">"2"</span>) <span style="color:#ff79c6">do</span> <span style="color:#ff79c6">|</span>config<span style="color:#ff79c6">|</span>
</span></span><span style="display:flex;"><span>config<span style="color:#ff79c6">.</span>vm<span style="color:#ff79c6">.</span>network <span style="color:#f1fa8c">:public_network</span>
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">end</span>
</span></span></code></pre></div><p>p.s. 升级了VirtualBox以后一定要升级VirtualBox的Additional，否则共享目录啥的都是不可能的</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="vagrant" label="Vagrant" scheme="https://blog.khsing.net/tags/vagrant/" />
    <category term="tools" label="Tools" scheme="https://blog.khsing.net/tags/tools/" />
    <published>2013-07-19T14:51:59Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[信用卡安全(Secure Credit Card)]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2013/04/secure-credit-card.html" />
    <id>https://blog.khsing.net/2013/04/secure-credit-card.html</id>
    <updated>2013-04-16T09:32:27Z</updated>
    <summary type="html"><![CDATA[<p>最近信用卡安全议题频发，也引发了我对信用卡用卡安全的疑惑。以前的认识是信用卡不设密码如果出现盗刷则由银行负担。现在来看不是这个样子的。我查了几家银行的信用卡章程，重点是关于挂失、网上交易、密码交易的部分。</p>]]></summary><content type="html"><![CDATA[<p>最近信用卡安全议题频发，也引发了我对信用卡用卡安全的疑惑。以前的认识是信用卡不设密码如果出现盗刷则由银行负担。现在来看不是这个样子的。我查了几家银行的信用卡章程，重点是关于挂失、网上交易、密码交易的部分。</p>
<p>下面是<a href="http://cc.cmbchina.com/Common/Default.aspx?pageid=zhangcheng">招商银行章程</a></p>
<blockquote>
<p>第三章 使 用</p>
<p>第十五条 凡使用密码进行的交易，发卡机构均视为持卡人本人所为，依据密码等电子信息为持卡人办理的刷卡消费、存取款、转账结算、网上支付、手机支付、电话支付等各类交易，交易所产生的电子信息记录均为该项交易的有效凭据。凡未使用密码进行的交易，则记载有持卡人签名的交易凭证及发卡机构与持卡人约定的其他证明文件，或经确认证明持卡人本人消费的其他依据，为该项交易完成的有效凭证，但持卡人与发卡机构另有约定的除外。持卡人应在安全的技术和商户环境下在互联网上使用信用卡，否则持卡人须对该卡在互联网上使用所导致的风险和损失自行承担责任。</p>
<p>… …</p>
<p>第十九条 信用卡遗失、被窃或遭他人占有时，持卡人应及时通过发卡机构客户服务热线办理挂失。发卡机构在核对相关资料后进行相关挂失处理。电话挂失经发卡机构确认后即生效，挂失正式生效前所发生经济损失均由持卡人(单位卡由申领单位)承担，但持卡人和发卡机构另有约定的除外。信用卡遗失、被窃或遭他人占有的，持卡人应配合发卡机构调查情况。持卡人与他人合谋、恶意串通、套现、洗钱或有其他任何违法、不诚信的行为，持卡人承担全部法律后果和责任。</p>
</blockquote>
<p>国内其他银行的章程基本和招行的一样，比如工行的</p>
<blockquote>
<p>第十一条 凡使用密码进行的交易，均视为持卡人本人所为，持卡人遗忘密码，可凭本人有效身份证件和牡丹信用卡办理密码重置。基于持卡人签字形成的交易凭证和/或凭牡丹信用卡磁条、芯片、卡号或密码等电子数据而办理的各项交易（包括但不限于通过销售点终端、手工受理、邮件、电话、手机、短信、传真、互联网等方式进行的信用卡交易）所产生的信息记录之一或全部均属于该项交易的有效凭据。</p>
<p>第十三条 持卡人遗失牡丹信用卡应立即通过中国工商银行电话银行、网上银行等电子银行渠道或到发卡机构营业网点办理挂失，挂失手续办妥，挂失即生效。持卡人对挂失生效后其牡丹信用卡发生的交易不承担任何责任，除非持卡人对该交易存在欺诈、串通他人欺诈或其他不诚信行为。挂失生效前牡丹信用卡产生的损失由持卡人承担，发卡机构不承担任何责任，但发卡机构存在法律、法规规定的过错或与持卡人另有约定的除外。挂失后如需补办新卡，可按照规定办理补办手续。</p>
</blockquote>
<p>然后我又看了一下花旗银行的信用卡章程</p>
<blockquote>
<p>第十九条 如持卡人选择通过互联网(INTERNET)使用信用卡的，则应在安全的技术环境和商户环境下使用，否则持卡人必须自行对该卡片在互联网上使用所导致的一切风险和损失承担责任。</p>
<p>您可直接通过客户服务热线设置电话银行密码及交易/取现密码。请妥善保管您的密码，任何通过密码完成的指令均视为您本人作出，您应自行承担有关后果及损失。并且，您应妥善保管信用卡及有关交易凭证等，不得将信用卡以任何方式交与他人使用。</p>
<p>如果您的密码被泄露，或您的信用卡遗失、被盗或被他人所使用，您必须立即通过客户服务热线向本行挂失。挂失一经本行确认即时生效。您应对挂失生效前发生的所有信用卡交易负责，不论该项交易您是否知悉或是否经过您的授权。如您与他人合谋或有其它不诚实行为，或者不配合本行进行有关调查的，则您须自行承担在挂失生效后发生的所有债务。</p>
<p>您了解，根据具体交易性质，信用卡交易可能无需或无法通过密码或签名完成，或可能没有交易单据。该等交易包括但不限于通过电话、传真、邮寄或电子终端或媒介直接授权从信用卡账户转账付款或使用 ATM 或任何其他本行随时认可的设备进行的交易。您不得以未凭密交易、单据上无签名或无交易单据等为由否认交易或拒绝还款。</p>
<p>若您因使用信用卡而使用任何第三方的服务，您需认真阅读并充分了解该等第三方服务的有关条款和条件（如有），并同意受其约束。除非我们明确告知，否则我们与任何第三方不存在代理关系。对于非我行代理的第三方，您需自行承担该等第三方的行为或服务的有关风险，我们对其提供的服务不提供任何保证或承担任何责任，也不因其机器设备或通讯网络的故障或任何我们无法控制的原因承担责任。若发生任何与该等第三方的争议，您应自行与其协商解决，您不得以任何争议为由拒绝支付所欠本行的款项，也不得以退还使用信用卡交易取得的货物等方式要求本行退款。本款所指的非代理关系的第三方的服务包括但不限于您因使用信用卡而接受商家、特约商户、收单银行及其他受理单位向您提供的服务，操作任何第三方的自助设备，使用第三方提供的增值服务（包括但不限于短信和移动支付等功能），选择第三方支付平台（包括但不限于支付宝、拉卡拉等）进行支付或还款等。</p>
</blockquote>
<p>浦发银行倒是有一个<a href="http://www.spdbccc.com.cn/zh/service/skbz/index.html">失卡保障</a>的增值服务，来保障挂失前72小时的境外交易和48小时内的境内交易，但是他的章程和领卡合约中和其他银行基本一样：</p>
<blockquote>
<p>第二十二条 凡使用密码进行的交易，信用卡中心均视为持卡人本人所为，依据密码等电子数据信息办理的各类结算交易所产生的电子信息交易记录均为该项交易的有效凭证。凡未使用密码进行的交易，基于持卡人签字形成的交易凭证和/或凭信用卡磁条、芯片、卡号等电子数据而办理的各项交易所产生的信息记录之一或全部均属于该项交易的有效凭据。</p>
<p>第二十三条 持卡人应在安全的技术和商户环境下在互联网（INTERNET）上使用信用卡，信用卡中心保留拒绝处理或支付怀疑涉及非法赌博等根据适用法律可能为不合法的互联网交易。因可能涉及非法互联网交易所导致的风险和损失由持卡人自行承担责任。</p>
<p>第二十四条 信用卡遗失或被窃时，持卡人应及时通过信用卡中心24小时客户服务热线办理电话挂失，挂失即时生效。挂失生效前所发生的经济损失由持卡人承担。持卡人与他人合谋或有其它不诚实行为，或者不配合信用卡中心调查情况时，由持卡人承担所有损失，信用卡中心不承担任何责任。挂失后，信用卡中心可为持卡人换发新卡。</p>
</blockquote>
<p>这么看下来，基本就是：</p>
<ul>
<li>设置了密码，银行肯定免责，不设密码还有商量的可能行，但是怎么处理都是银行说了算。</li>
<li>网上交易一水的说了都是自己负责，而且用了第三方支付平台的都是要自己负责的。</li>
<li>挂失前产生的交易都由自己承担，工行在章程里没说挂失前的怎么办。招行是默认持卡人自己负责，除非另有合约（谁会另有合约?）。花旗直接就说持卡人自己负责。浦发的这个得看他的失卡保障服务给力不给力了。</li>
</ul>
<p>所以自己用信用卡还是注意些吧：</p>
<ul>
<li>不要设置交易密码，在信用卡背后签名而且提醒收银员核对签名</li>
<li>设置网上交易，单笔上限和单日上限</li>
<li>不要把信用卡交给其他人刷卡、保管</li>
<li>用不透明的胶贴把信用卡背后的CVV给盖上（不要刮掉，那样会破坏信用卡从而违反信用卡使用章程）</li>
</ul>
<p>ps. 浦发信用卡的失卡保障中境外消费不包含古巴、伊朗、缅甸、叙利亚和苏丹，这几个地方也是Facebook上不去的几个地方吧。;-)</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="others" label="Others" scheme="https://blog.khsing.net/categories/others/" />
    <category term="credit" label="Credit" scheme="https://blog.khsing.net/tags/credit/" />
    <category term="bank" label="Bank" scheme="https://blog.khsing.net/tags/bank/" />
    <published>2013-04-16T09:32:27Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Google和Reader]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2013/03/google-reader.html" />
    <id>https://blog.khsing.net/2013/03/google-reader.html</id>
    <updated>2013-03-20T08:31:41Z</updated>
    <summary type="html"><![CDATA[<p>Google Reader这个使用多年的产品在2013.7.1就画上句号了。</p>
<p>GR一经发布我就从bloglines迁移过来了，基本上是我继Gmail之后使用最为频繁的Google服务了。要说呢这是Google提供的服务，人家说关也就关了，但是这同时也是一个企业的信任问题。我使用GR是对Google的一种信任，现在这些信任都荡然无存了，谁知道你会不会关闭其他的我信任的服务，比如Gmail。所以，我要开始考虑脱离Gmail，特别是注册时留的email地址，我可不想在其他网站找回密码的时候，出现Gmail的帐户被封之类的悲剧（已经有人遭遇了），自建邮箱系统或者使用Google Apps(因为我可以通过换MX记录来换服务)都是可以接受的选择。</p>]]></summary><content type="html"><![CDATA[<p>Google Reader这个使用多年的产品在2013.7.1就画上句号了。</p>
<p>GR一经发布我就从bloglines迁移过来了，基本上是我继Gmail之后使用最为频繁的Google服务了。要说呢这是Google提供的服务，人家说关也就关了，但是这同时也是一个企业的信任问题。我使用GR是对Google的一种信任，现在这些信任都荡然无存了，谁知道你会不会关闭其他的我信任的服务，比如Gmail。所以，我要开始考虑脱离Gmail，特别是注册时留的email地址，我可不想在其他网站找回密码的时候，出现Gmail的帐户被封之类的悲剧（已经有人遭遇了），自建邮箱系统或者使用Google Apps(因为我可以通过换MX记录来换服务)都是可以接受的选择。</p>
<p><a href="http://qr.ae/TPGOz">GR的关闭是因为G+</a>，G+是Page上台后Google强推的社交平台。GR的Share功能是我最喜欢的功能，甚至代替了我自己的DailyRead文件夹，可惜这个功能在G+上线不久后就牺牲了。Page有了社交情节，而且这情节影响到了整个公司。James在<a href="http://blogs.msdn.com/b/jw_on_tech/archive/2012/03/13/why-i-left-google.aspx">Why I left Google</a>中把Google区分成了老Google和现在的x新Google，老Google是一家广告公司，用好的内容来吸引广告主，就像电视行业那样。老Google招聘优秀的人才并且激发他们的创新热情，新Google看起来不是这样，像是一个家长，觉的孩子们做错事了就要逼迫他们”改正”，新Google正在用G+尝试修复错过社交平台的错误。</p>
<p>当年Page回到CEO的时候我是很期待的，尤其是Google退出中国这事儿，认为Google是要强势回归到过去的那个Google，现在看来不是我想象的那样。Page做了几件最明显的事情：统一界面、G+，都是强势的自上而下的推进下去的。并不是说自上而下不好，但是自上而下的东西就和KPI一样，为了完成而完成，乐趣就没有了。</p>
<p>凡事其实错过了就是错过了，Google错过了社交平台就是错过了，这种错过无法修复只能接受，然后向前看，Move on。而Page想修复这个错误是在做无用功，是在给Google开倒车。霍矩写的<a href="http://blog.devep.net/virushuo/2013/03/19/googlereader.html">Google的社会化梦想与Reader</a>更透彻。现在的Google已经不是当年的Google了。</p>
<p>既然Google做出了选择，我也做出了选择，不再使用Google+，删除Google+帐号，为逃离Gmail做好准备。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="google" label="Google" scheme="https://blog.khsing.net/tags/google/" />
    <category term="reader" label="Reader" scheme="https://blog.khsing.net/tags/reader/" />
    <category term="product" label="Product" scheme="https://blog.khsing.net/tags/product/" />
    <published>2013-03-20T08:31:41Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[编程和沟通(Programming and communication)]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2013/03/programming-and-communication.html" />
    <id>https://blog.khsing.net/2013/03/programming-and-communication.html</id>
    <updated>2013-03-14T01:46:38Z</updated>
    <summary type="html"><![CDATA[<p>译文</p>
<blockquote>
<p>一般程序员和伟大程序员的区别不是精通多少编程语言，也不是他们选择Python或Java。而是他们能通过写清晰的注释和技术细节来交流想法，让其他程序员理解他们的代码，这意味着其他程序员可以使用他们的代码而不是重写一套。除此之外，他们的代码毫无用处。给用户写清晰的技术文档，就可以让他们了解这些代码的作用，这也是让用户看到那堆代码价值的唯一途径。 :Jeol Spolsky</p>]]></summary><content type="html"><![CDATA[<p>译文</p>
<blockquote>
<p>一般程序员和伟大程序员的区别不是精通多少编程语言，也不是他们选择Python或Java。而是他们能通过写清晰的注释和技术细节来交流想法，让其他程序员理解他们的代码，这意味着其他程序员可以使用他们的代码而不是重写一套。除此之外，他们的代码毫无用处。给用户写清晰的技术文档，就可以让他们了解这些代码的作用，这也是让用户看到那堆代码价值的唯一途径。 :Jeol Spolsky</p>
</blockquote>
<p>原文</p>
<blockquote>
<p>The difference between a tolerable programmer and a great programmer is not how many programming languages they know, and it’s not whether they prefer Python or Java. It’s whether they can communicate their ideas. By writing clear comments and technical specs, they let other programmers understand their code, which means other programmers can use and work with their code instead of rewriting it. Absent this, their code is worthless. By writing clear technical documentation for end users, they allow people to figure out what their code is supposed to do, which is the only way those users can see the value in their code.</p>
<p>Joel Spolsky</p>
</blockquote>
<p><a href="http://johanbrook.com/development/programming-communication/">Programming and communication</a></p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="programming" label="Programming" scheme="https://blog.khsing.net/tags/programming/" />
    <category term="communication" label="Communication" scheme="https://blog.khsing.net/tags/communication/" />
    <category term="softskill" label="Softskill" scheme="https://blog.khsing.net/tags/softskill/" />
    <published>2013-03-14T01:46:38Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[解决Macbook Pro插USB设备僵3秒的问题]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2013/02/macbook-prousb3.html" />
    <id>https://blog.khsing.net/2013/02/macbook-prousb3.html</id>
    <updated>2013-02-22T08:23:44Z</updated>
    <summary type="html"><![CDATA[<p>不知道从什么时候开始我的MBP就出现了插USB设备后，鼠标键盘僵三秒的问题，不是多大事儿，今天忍不了了。查了下是Android File Transfer的问题，删除了就好了。本来这也不值得写一篇，但是知道真相的我真的被恶心了一把，还是写出来吧，珍惜生命，远离Android。</p>]]></summary><content type="html"><![CDATA[<p>不知道从什么时候开始我的MBP就出现了插USB设备后，鼠标键盘僵三秒的问题，不是多大事儿，今天忍不了了。查了下是Android File Transfer的问题，删除了就好了。本来这也不值得写一篇，但是知道真相的我真的被恶心了一把，还是写出来吧，珍惜生命，远离Android。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>rm -rf ~/Library/Application<span style="color:#f1fa8c">\ </span>Support/Google/Android<span style="color:#f1fa8c">\ </span>File<span style="color:#f1fa8c">\ </span>Transfer
</span></span></code></pre></div><p>还要在<code>System Preferences->User & Groups->Login Item</code>里把这个Agent给删除了。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="system" label="System" scheme="https://blog.khsing.net/categories/system/" />
    <category term="osx" label="Osx" scheme="https://blog.khsing.net/tags/osx/" />
    <category term="android" label="Android" scheme="https://blog.khsing.net/tags/android/" />
    <published>2013-02-22T08:23:44Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[作弊条：root的shell吐核时su到root]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2013/01/tips-for-su-when-shell-of-root-is-broken.html" />
    <id>https://blog.khsing.net/2013/01/tips-for-su-when-shell-of-root-is-broken.html</id>
    <updated>2013-01-05T11:49:02Z</updated>
    <summary type="html"><![CDATA[<p>帮朋友看个FreeBSD的机器，无法<code>su</code>到root用户了，查了下原因是<code>csh</code>吐核了，所以<code>su</code>就失败了。用<code>su -m root</code>可以保持当前用户的环境变量和当前目录，幸好这个用户的shell是<code>/bin/sh</code>，这样切到了root。</p>]]></summary><content type="html"><![CDATA[<p>帮朋友看个FreeBSD的机器，无法<code>su</code>到root用户了，查了下原因是<code>csh</code>吐核了，所以<code>su</code>就失败了。用<code>su -m root</code>可以保持当前用户的环境变量和当前目录，幸好这个用户的shell是<code>/bin/sh</code>，这样切到了root。</p>
<p>不过这事让我注意到还有<code>toor</code>的用户，就是给<code>csh</code>挂了用的。不过这帐号默认也用不得，得改个密码不说还只能在<code>console</code>用。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="system" label="System" scheme="https://blog.khsing.net/categories/system/" />
    <category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="su" label="Su" scheme="https://blog.khsing.net/tags/su/" />
    <category term="csh" label="Csh" scheme="https://blog.khsing.net/tags/csh/" />
    <category term="troubleshooting" label="Troubleshooting" scheme="https://blog.khsing.net/tags/troubleshooting/" />
    <published>2013-01-05T11:49:02Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[2012 Summary]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2013/01/2012-summary.html" />
    <id>https://blog.khsing.net/2013/01/2012-summary.html</id>
    <updated>2013-01-05T09:46:20Z</updated>
    <summary type="html"><![CDATA[<p>1月5号了，我来总结一下我的2012年，先看看去年定下的这几个事儿。</p>
<ul>
<li>继续和拖沓症作战：拖沓的差了些了，继续努力。</li>
<li>利用业余时间把自己的小项目搞出个眉目来：只是非常简单的做了一个iOS的app，有了一些新的想法。</li>
<li>出国旅游一次：年底的时候和老婆去了一趟马尔代夫，感觉非常不错。</li>
<li>考一次雅思，争取到6分：这个确实没能去做，还是觉的差太多，而且英文的学习上今年也不是很有进步。</li>
<li>每2个月读1本书,其中1/3要是英文的：读了5本书，其中1本是英文的，在读的有一本，还要努力。</li>
<li>拼RP，买车：拼到现在，RP也没有爆发，6月的时候着急买了一个2003年的别克老君威，开了半年下来感觉还行，就是油太贵。</li>
</ul>
<p>工作上2012年我觉的相对来说还是有些失意的，在4月的时候跳槽做了lead，不过在11月的时候就又离开了，这半年感触颇深，虽然也做成了些事情，但是总的来说是非常不如意的，这经历很是珍贵。</p>]]></summary><content type="html"><![CDATA[<p>1月5号了，我来总结一下我的2012年，先看看去年定下的这几个事儿。</p>
<ul>
<li>继续和拖沓症作战：拖沓的差了些了，继续努力。</li>
<li>利用业余时间把自己的小项目搞出个眉目来：只是非常简单的做了一个iOS的app，有了一些新的想法。</li>
<li>出国旅游一次：年底的时候和老婆去了一趟马尔代夫，感觉非常不错。</li>
<li>考一次雅思，争取到6分：这个确实没能去做，还是觉的差太多，而且英文的学习上今年也不是很有进步。</li>
<li>每2个月读1本书,其中1/3要是英文的：读了5本书，其中1本是英文的，在读的有一本，还要努力。</li>
<li>拼RP，买车：拼到现在，RP也没有爆发，6月的时候着急买了一个2003年的别克老君威，开了半年下来感觉还行，就是油太贵。</li>
</ul>
<p>工作上2012年我觉的相对来说还是有些失意的，在4月的时候跳槽做了lead，不过在11月的时候就又离开了，这半年感触颇深，虽然也做成了些事情，但是总的来说是非常不如意的，这经历很是珍贵。</p>
<p>家庭方面，终于是把父母接到了离北京比较近的河北香河，老家也经历了拆迁的风波，贵国的政府真是一个模子刻出来的。在为人父母方面我还要多多的努力，多些耐心。</p>
<p>年底的时候FIT的作者冯华君因病去世了，才31岁，天妒英才啊。我和华君只在gTalk上有聊过，感觉甚好，但一直未能见面，没想到的是他竟如此早的去另一个世界了。关注身体健康，别再延续IT人短命的恶谶了。</p>
<p>总结2012年，我对自己不是很满意。</p>
<p>2013年，我还是列个单子。</p>
<ul>
<li>提高效率，充分利用时间。GReader和twitter的时间有点多了，要克制。</li>
<li>多读书，理想情况下1个月读1本，至少8本。</li>
<li>自己的几个产品想法至少实现一个。</li>
<li>继续学习英语。</li>
<li>耐心的做一个好爸爸。</li>
</ul>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="annual" label="Annual" scheme="https://blog.khsing.net/tags/annual/" />
    <published>2013-01-05T09:46:20Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Magic Trackpad & Mouse]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2012/10/magic-trackpad-mouse.html" />
    <id>https://blog.khsing.net/2012/10/magic-trackpad-mouse.html</id>
    <updated>2012-10-16T04:14:39Z</updated>
    <summary type="html"><![CDATA[<p>最近朋友送给我一个Magic Mouse，马上用了起来，再结合之前自己买的Trackpad说说感受。</p>
<ul>
<li>Mouse的手感并不是很好，手心的位置没有紧实感，设计上给美学开了道。</li>
<li>Mouse上面那个双指左右滑动的手势真心不太习惯。</li>
<li>Mouse单指左右划的Scroll手势容易被误操作，这在网页里就回退了。</li>
<li>Trackpad有点费手指，另外就是画图的时候真心就不行了。</li>
<li>Trackpad的手势比Mouse多而且用起来要自然的多。</li>
<li>Trackpad可以三指轻点查字典，Mouse就没有这个function了，只能<code>Command+Control+D</code>。</li>
</ul>]]></summary><content type="html"><![CDATA[<p>最近朋友送给我一个Magic Mouse，马上用了起来，再结合之前自己买的Trackpad说说感受。</p>
<ul>
<li>Mouse的手感并不是很好，手心的位置没有紧实感，设计上给美学开了道。</li>
<li>Mouse上面那个双指左右滑动的手势真心不太习惯。</li>
<li>Mouse单指左右划的Scroll手势容易被误操作，这在网页里就回退了。</li>
<li>Trackpad有点费手指，另外就是画图的时候真心就不行了。</li>
<li>Trackpad的手势比Mouse多而且用起来要自然的多。</li>
<li>Trackpad可以三指轻点查字典，Mouse就没有这个function了，只能<code>Command+Control+D</code>。</li>
</ul>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="apple" label="Apple" scheme="https://blog.khsing.net/tags/apple/" />
    <category term="magicmouse" label="Magicmouse" scheme="https://blog.khsing.net/tags/magicmouse/" />
    <published>2012-10-16T04:14:39Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[普罗米修斯(Prometheus)观后感]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2012/09/prometheus.html" />
    <id>https://blog.khsing.net/2012/09/prometheus.html</id>
    <updated>2012-09-24T04:58:24Z</updated>
    <summary type="html"><![CDATA[<p>异形在我的科幻电影观里属于仅次于星球大战的系列。普罗米修斯作为前传，未能解释异形里的疑惑，而且本身也有几处不解之处，希望下一部里能解释清楚。</p>
<p>下面是我想到的一些疑惑。</p>]]></summary><content type="html"><![CDATA[<p>异形在我的科幻电影观里属于仅次于星球大战的系列。普罗米修斯作为前传，未能解释异形里的疑惑，而且本身也有几处不解之处，希望下一部里能解释清楚。</p>
<p>下面是我想到的一些疑惑。</p>
<ul>
<li>影片开始的高智人为什么孤独的喝下药水，化为灰烬，进而融入大江大河？</li>
<li>高智人的双螺旋结构的破坏和其在水中的重新组合是否映射了人类的起源？</li>
<li>星图是人类诞生前高智人画的还是人类画的？如果是人类，那么高智人是否回来过？还是通过DNA传递了星图这个信息？</li>
<li>那些储藏着的黑色有机液体是生化武器还是什么？如果影片开始的高智人喝的就是这个，那么人类和异形就是同源的？</li>
<li>高智人在那里的死像是由内向外爆裂的，这一点和异形的出生是一致的。那就是说高智人感染了异形？</li>
<li>异形1的异形是卵生之后寄生的，这里最后出生的异形已经和之前的很像了，只是少了里面的小口，但是六爪的章鱼是有小头的。异形1里面的异形破腹而出的时候只是个小虫子，之后再长大成异形的。如果说普罗米修斯里面的异形是初代异形，那么，后面的异形进化没有理由退回到卵生到寄生再长成（里面有脱皮这一情节）。</li>
<li>如果飞船不是只有一个，那么其他的飞船是不是也应该有高智人的存在？他们除了飞向地球是不是也有其他星球要去？</li>
</ul>
<p>暂时就这么多了。</p>
<p>Update:</p>
<ul>
<li>如果人类DNA来源自杀高智人在水中的重新组合，那么人类必然不是高智人创造出来的，而是一个意外。</li>
<li>机器人是人类创造出来的，因为我们可以，而且我们是有目的的创造了机器人。</li>
</ul>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="movie" label="Movie" scheme="https://blog.khsing.net/tags/movie/" />
    <category term="alien" label="Alien" scheme="https://blog.khsing.net/tags/alien/" />
    <category term="sci-fi" label="Sci-Fi" scheme="https://blog.khsing.net/tags/sci-fi/" />
    <published>2012-09-24T04:58:24Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[在MT5里开reCaptcha]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2012/08/mt5recaptcha.html" />
    <id>https://blog.khsing.net/2012/08/mt5recaptcha.html</id>
    <updated>2012-08-30T12:08:52Z</updated>
    <summary type="html"><![CDATA[<p>最近这个spam确实有些多了，MT的anti-spam比WP的还是有差距。头几天<a href="https://blog.delphij.net">@delphij</a>也受不了了，就开了reCaptcha，今天我也跟上。</p>
<p>MT官方提供的那个<a href="https://github.com/movabletype/mt-plugin-recaptcha">reCaptcha在Github有个案子</a>，但是对https支持不成，好在Google提供了https服务，所以就fork了一个出来改了一下，参看<a href="https://github.com/khsing/mt-plugin-recaptcha">我的github</a>。</p>]]></summary><content type="html"><![CDATA[<p>最近这个spam确实有些多了，MT的anti-spam比WP的还是有差距。头几天<a href="https://blog.delphij.net">@delphij</a>也受不了了，就开了reCaptcha，今天我也跟上。</p>
<p>MT官方提供的那个<a href="https://github.com/movabletype/mt-plugin-recaptcha">reCaptcha在Github有个案子</a>，但是对https支持不成，好在Google提供了https服务，所以就fork了一个出来改了一下，参看<a href="https://github.com/khsing/mt-plugin-recaptcha">我的github</a>。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="movabletype" label="Movabletype" scheme="https://blog.khsing.net/tags/movabletype/" />
    <category term="spam" label="Spam" scheme="https://blog.khsing.net/tags/spam/" />
    <category term="recaptcha" label="Recaptcha" scheme="https://blog.khsing.net/tags/recaptcha/" />
    <published>2012-08-30T12:08:52Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[App Store的一些困惑]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2012/08/app-store.html" />
    <id>https://blog.khsing.net/2012/08/app-store.html</id>
    <updated>2012-08-29T03:59:38Z</updated>
    <summary type="html"><![CDATA[<p>最近呢Mac App Store因为沙箱的事儿，搞的不少App都要离开MAS。关于沙箱，我只说有人不想改变而已。</p>
<p>我困惑的呢不是沙箱的事儿，主要是用户的事儿，拉个单子：</p>]]></summary><content type="html"><![CDATA[<p>最近呢Mac App Store因为沙箱的事儿，搞的不少App都要离开MAS。关于沙箱，我只说有人不想改变而已。</p>
<p>我困惑的呢不是沙箱的事儿，主要是用户的事儿，拉个单子：</p>
<ul>
<li>没有升级优惠，像Adobe的产品没过一段时间都有新版，新版不可能在MAS里让你免费Update，所以Lightroom 3和4是两个产品。MAS目前还不能说你买了Lightroom 3就给你把Lightroom 4打个5折，但是传统的商店模式是可以这么干的。</li>
<li>App Store有区域，你要是换了商店这东西就没有了，比如你在中国商店买了东西，后来你移民去了美国，你要是换商店了，恭喜你，你在中国商店买的东西就不能升级了，这个和户口制度有的一拼啊。</li>
<li>App Store买了东西实际上还是在MAS里，如果厂商把这个软件下架了，恭喜你，你再也不拥有这个软件了。这个感觉更像是天朝的房子，租给你用。</li>
</ul>
<p>上面这些困惑吧除了第一条能经常恶心到你之外，后两条恶心到的机率要小一些，但是不代表他们想这么做的时候不能这么做。App Store这模式简直就是为国人量身打造，紧跟特色社会主义。</p>
<p>Update: MAS还有一个特性是，你一旦升级了就失去了获得旧版本的权利。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="apple" label="Apple" scheme="https://blog.khsing.net/tags/apple/" />
    <category term="appstore" label="Appstore" scheme="https://blog.khsing.net/tags/appstore/" />
    <published>2012-08-29T03:59:38Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[OS X上创建ISO]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2012/08/os-xiso.html" />
    <id>https://blog.khsing.net/2012/08/os-xiso.html</id>
    <updated>2012-08-23T10:00:26Z</updated>
    <summary type="html"><![CDATA[<p>昨天蛋疼的在Parallels Desktop里安了一个Win98，说实话这货在当年真不是给老百姓用的，也怪不得有不少人因此找到了另一半。没有Share folder也没有优盘，分享点东西给Win98还真是困难啊，只有光盘这招了。</p>]]></summary><content type="html"><![CDATA[<p>昨天蛋疼的在Parallels Desktop里安了一个Win98，说实话这货在当年真不是给老百姓用的，也怪不得有不少人因此找到了另一半。没有Share folder也没有优盘，分享点东西给Win98还真是困难啊，只有光盘这招了。</p>
<p><a href="http://osxdaily.com/2012/03/16/create-iso-images-from-the-command-line/">osxdaily</a>介绍了在OS X上有命令工具可以做ISO文件</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>hdiutil makehybrid -iso -joliet -o image.iso /path/to/source
</span></span></code></pre></div><p>至于从光盘做ISO，那就<code>dd</code>好了。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="cli" label="CLI" scheme="https://blog.khsing.net/categories/cli/" />
    <category term="system" label="System" scheme="https://blog.khsing.net/categories/system/" />
    <category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="iso" label="Iso" scheme="https://blog.khsing.net/tags/iso/" />
    <published>2012-08-23T10:00:26Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[给MovableType的Markdown加上删除线支持]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2012/08/add-strike-support-for-movable-type.html" />
    <id>https://blog.khsing.net/2012/08/add-strike-support-for-movable-type.html</id>
    <updated>2012-08-21T11:32:01Z</updated>
    <summary type="html"><![CDATA[<p>MovableType的MarkDown格式不支持删除线。下面是别人写的patch.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-patch" data-lang="patch"><span style="display:flex;"><span><span style="color:#f55">--- mt.bk/plugins/Markdown/Markdown.pl  2012-05-10 05:03:28.000000000 -0400
</span></span></span><span style="display:flex;"><span><span style="color:#50fa7b;font-weight:bold">+++ mt/plugins/Markdown/Markdown.pl 2012-08-21 04:29:37.000000000 -0400
</span></span></span><span style="display:flex;"><span><span style="font-weight:bold">@@ -971,6 +971,10 @@
</span></span></span><span style="display:flex;"><span>$text =~ s{ (\*|_) (?=\S) (.+?) (?&lt;=\S) \1 }
</span></span><span style="display:flex;"><span>{&lt;em&gt;$2&lt;/em&gt;}gsx;
</span></span><span style="display:flex;"><span><span style="color:#50fa7b;font-weight:bold">+    # These lines added by Bill Eccles, 2008-07-04
</span></span></span><span style="display:flex;"><span><span style="color:#50fa7b;font-weight:bold">+    $text =~ s{ (\s) (~~) (?=\S) (.+?) (?&lt;=\S) (~~) }
</span></span></span><span style="display:flex;"><span><span style="color:#50fa7b;font-weight:bold">+    {$1&lt;strike&gt;$3&lt;/strike&gt;}gsx;
</span></span></span><span style="display:flex;"><span><span style="color:#50fa7b;font-weight:bold">+
</span></span></span><span style="display:flex;"><span>return $text;
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div>]]></summary><content type="html"><![CDATA[<p>MovableType的MarkDown格式不支持删除线。下面是别人写的patch.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-patch" data-lang="patch"><span style="display:flex;"><span><span style="color:#f55">--- mt.bk/plugins/Markdown/Markdown.pl  2012-05-10 05:03:28.000000000 -0400
</span></span></span><span style="display:flex;"><span><span style="color:#50fa7b;font-weight:bold">+++ mt/plugins/Markdown/Markdown.pl 2012-08-21 04:29:37.000000000 -0400
</span></span></span><span style="display:flex;"><span><span style="font-weight:bold">@@ -971,6 +971,10 @@
</span></span></span><span style="display:flex;"><span>$text =~ s{ (\*|_) (?=\S) (.+?) (?&lt;=\S) \1 }
</span></span><span style="display:flex;"><span>{&lt;em&gt;$2&lt;/em&gt;}gsx;
</span></span><span style="display:flex;"><span><span style="color:#50fa7b;font-weight:bold">+    # These lines added by Bill Eccles, 2008-07-04
</span></span></span><span style="display:flex;"><span><span style="color:#50fa7b;font-weight:bold">+    $text =~ s{ (\s) (~~) (?=\S) (.+?) (?&lt;=\S) (~~) }
</span></span></span><span style="display:flex;"><span><span style="color:#50fa7b;font-weight:bold">+    {$1&lt;strike&gt;$3&lt;/strike&gt;}gsx;
</span></span></span><span style="display:flex;"><span><span style="color:#50fa7b;font-weight:bold">+
</span></span></span><span style="display:flex;"><span>return $text;
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div>]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="movabletype" label="Movabletype" scheme="https://blog.khsing.net/tags/movabletype/" />
    <category term="markdown" label="Markdown" scheme="https://blog.khsing.net/tags/markdown/" />
    <published>2012-08-21T11:32:01Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Think about capacity plan 容量规划]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2012/08/think-about-capacity-plan.html" />
    <id>https://blog.khsing.net/2012/08/think-about-capacity-plan.html</id>
    <updated>2012-08-07T15:52:03Z</updated>
    <summary type="html"><![CDATA[<p>做服务运维的人员除了解决各种杂七杂八的问题之外，还要时刻的关注业务的增长和服务的容量问题。</p>
<p>要对容量有一个准确的评估并不容易，要考虑的因素比较多，突发的情况也比较多，另外有些时候容量的增长并不是一个线性的过程。</p>]]></summary><content type="html"><![CDATA[<p>做服务运维的人员除了解决各种杂七杂八的问题之外，还要时刻的关注业务的增长和服务的容量问题。</p>
<p>要对容量有一个准确的评估并不容易，要考虑的因素比较多，突发的情况也比较多，另外有些时候容量的增长并不是一个线性的过程。</p>
<p>以下是我对容量规划的一些体会</p>
<p>首先是要对系统的构架有足够的熟悉，明确的知道系统的扩展瓶颈在那里，以互联网产品来说大部分的扩展瓶颈都是在DB上，这种情况下，DB的扩展能力就是容量规划的一个极限。从构架上来说，分库分表，增加Cache层都是提升DB扩展能力的手段，使其扩展更趋向于线性。</p>
<p>其次，对整体系统和单一系统进行压力测试和容量测试，找到最大承载和最佳承载。</p>
<p>最后，要建立一个业务数据和系统能力间的关系公式。假定业务数据是日活跃用户(DAU)，以Web服务来说，每秒请求数(RPS)就是一个很好的指标做参照。使用RPS比上DAU得到一个RPS/DAU的比率，再结合之前测试的最佳承载，就可以得出值得参考的容量规划。现实情况要更加复杂，特别是有些业务系统涉及的因素比较多，就要拿到多个因素的比率，以其低点为参照。比如DB，在关注存储容量的同时还要关注请求数以及响应速度等多个指标，所以关系公式也就要考虑多个因素进去，按每个因素算出容量，再取其中的最大值。</p>
<p>容量规划本身是一个参考值，估算的精确非常有助业务的发展和成本的节约。同时他作为一个参考值又需要不断的根据业务特点和构架变化作出调整。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="capacity" label="Capacity" scheme="https://blog.khsing.net/tags/capacity/" />
    <published>2012-08-07T15:52:03Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[重装 OS X Mountain Lion]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2012/08/reinstall-os-x-with-mountain-lion.html" />
    <id>https://blog.khsing.net/2012/08/reinstall-os-x-with-mountain-lion.html</id>
    <updated>2012-08-07T12:21:51Z</updated>
    <summary type="html"><![CDATA[<p>Mountain Lion刚刚GM的时候我做了一个Time Machine就直接升级了，但是之后出现了一些问题，特别是App Store不帮我做更新，而且安装过的软件也不会显示Installed，虽然有些问题是有解，但是我还是重新安装才安心。</p>]]></summary><content type="html"><![CDATA[<p>Mountain Lion刚刚GM的时候我做了一个Time Machine就直接升级了，但是之后出现了一些问题，特别是App Store不帮我做更新，而且安装过的软件也不会显示Installed，虽然有些问题是有解，但是我还是重新安装才安心。</p>
<p>为了安装的干净一些，另外有一些通过defaults修改的设置累积太久了，有些可能已经不适用了，所以这次也是一并清理了重新弄一次。</p>
<p>下面是过程：</p>
<ul>
<li>用Install OS X Mountain Lion.app/Contents/SharedSupport/InstallESD.dmg做出安装盘来。Option安装盘启动，Disk Utility清理原来的磁盘后安装。</li>
<li>通过Time Machine恢复帐号，只选择用户。</li>
<li>清理~/Library/Cache/ ~/Library/Preferences/</li>
<li>调整Locale，在System Preference的Language里把中文拖到日文上面，把排序改成Pinyin。</li>
<li>通过App Store安装Xcode，通过Xcode安装Command line Tools.</li>
<li>安装Xquartz.</li>
<li>安装Homebrew.</li>
<li>导入整理好的defaults设定。<a href="https://gist.github.com/891d01fe7a8422ffc4bd">gist:mac_tips.sh</a></li>
<li>安装第三方软件。</li>
</ul>
<p>Update: 之前忘了写</p>
<ul>
<li>Quicksilver的随机启动失效了，我又回到了Spotlight了。</li>
<li>Tunnelblick挂了，不好用了，换Viscosity吧。</li>
<li>要把CNNIC和China Internet Network Information Center的根证书给Never Trust</li>
</ul>
<p>ML的感受</p>
<ul>
<li>Notification Center真是不错，尤其是Calendar的提醒，以前设一个提前15分钟提醒吧，到了点儿反而忘了，现在不会了。</li>
<li>iCloud的结合还是不太成熟，比如Preview和Textedit都可以直接存东西到iCloud的，但是当我要上传这个文件的时候就SB了，Finder里没有Media Browser也没有。</li>
<li>显示器在Status Bar上的图标没有了，不方便了。</li>
</ul>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="osx" label="Osx" scheme="https://blog.khsing.net/tags/osx/" />
    <category term="reinstall" label="Reinstall" scheme="https://blog.khsing.net/tags/reinstall/" />
    <published>2012-08-07T12:21:51Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Back to MovableType – 回到了MovableType]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2012/07/back-to-movabletype.html" />
    <id>https://blog.khsing.net/2012/07/back-to-movabletype.html</id>
    <updated>2012-07-26T11:51:19Z</updated>
    <summary type="html"><![CDATA[<p>经过一年的Wordpress洗礼，发现在当下最合适我使用的blog软件还是MovableType，所以就回来吧。捎带手的呢，还把www和mt.khsing.net也给加上了https。</p>]]></summary><content type="html"><![CDATA[<p>经过一年的Wordpress洗礼，发现在当下最合适我使用的blog软件还是MovableType，所以就回来吧。捎带手的呢，还把www和mt.khsing.net也给加上了https。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="movabletype" label="Movabletype" scheme="https://blog.khsing.net/tags/movabletype/" />
    <category term="wordpress" label="Wordpress" scheme="https://blog.khsing.net/tags/wordpress/" />
    <published>2012-07-26T11:51:19Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[bash的退出和后台执行的进程]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2012/06/bash-exit-and-background-process.html" />
    <id>https://blog.khsing.net/2012/06/bash-exit-and-background-process.html</id>
    <updated>2012-06-07T05:06:09Z</updated>
    <summary type="html"><![CDATA[<p>前天的一个事儿，在这儿计一笔。</p>
<p>后台执行的脚本在shell退出的时候也会退出，所以退出shell后还要继续后台进程就要加<code>nohup</code>，但是在bash下不是完全按照这个来的，如果bash正常退出，他不会向后台进程发<code>SIGHUP</code>，如果异常退出，比如ssh连接因超时中断，bash进程本身收到<code>SIGHUP</code>等等，就会发<code>SIGHUP</code>给后台进程了。
Ref:</p>]]></summary><content type="html"><![CDATA[<p>前天的一个事儿，在这儿计一笔。</p>
<p>后台执行的脚本在shell退出的时候也会退出，所以退出shell后还要继续后台进程就要加<code>nohup</code>，但是在bash下不是完全按照这个来的，如果bash正常退出，他不会向后台进程发<code>SIGHUP</code>，如果异常退出，比如ssh连接因超时中断，bash进程本身收到<code>SIGHUP</code>等等，就会发<code>SIGHUP</code>给后台进程了。
Ref:</p>
<ul>
<li><a href="http://cygwin.com/ml/cygwin/1998-04/msg00413.html">Re: bash and ‘&’</a></li>
</ul>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="cli" label="CLI" scheme="https://blog.khsing.net/categories/cli/" />
    <category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="shell" label="Shell" scheme="https://blog.khsing.net/tags/shell/" />
    <published>2012-06-07T05:06:09Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[About learning on the Internet 如何在网上学习]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2012/03/about-learning-on-the-internet.html" />
    <id>https://blog.khsing.net/2012/03/about-learning-on-the-internet.html</id>
    <updated>2012-03-14T09:49:01Z</updated>
    <summary type="html"><![CDATA[<ol>
<li>讀英文文檔，英文不好就練習</li>
<li>用Google.com，Google.com.hk也不要用</li>
<li>先翻官方文檔，再去社區。先搜索，再提問</li>
<li>如果搜到了好的文章，或者有別的文章提到這個文章了，但是文章已經不存在了，就去<a href="http://web.archive.org">web archive</a>看看</li>
<li>關注一些Conf，不能現場去聽但是大多都有slide或者video，這些東西未必能直接解決問題，但是提供了很多的思路。</li>
</ol>]]></summary><content type="html"><![CDATA[<ol>
<li>讀英文文檔，英文不好就練習</li>
<li>用Google.com，Google.com.hk也不要用</li>
<li>先翻官方文檔，再去社區。先搜索，再提問</li>
<li>如果搜到了好的文章，或者有別的文章提到這個文章了，但是文章已經不存在了，就去<a href="http://web.archive.org">web archive</a>看看</li>
<li>關注一些Conf，不能現場去聽但是大多都有slide或者video，這些東西未必能直接解決問題，但是提供了很多的思路。</li>
</ol>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="english" label="English" scheme="https://blog.khsing.net/tags/english/" />
    <category term="learn" label="Learn" scheme="https://blog.khsing.net/tags/learn/" />
    <published>2012-03-14T09:49:01Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Hidden keyboard after done is pressed]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2012/02/hidden-keyboard-after-done-is-pressed.html" />
    <id>https://blog.khsing.net/2012/02/hidden-keyboard-after-done-is-pressed.html</id>
    <updated>2012-02-29T02:31:54Z</updated>
    <summary type="html"><![CDATA[<p>近日小寫iOS，記一筆，在<code>TextField</code>叫出鍵盤後，按下Done鈕再隱藏鍵盤的例子。</p>
<p>Apple 的<a href="https://developer.apple.com/library/ios/#DOCUMENTATION/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html">Managing the Keyboard</a>是應該詳讀的文檔。</p>
<p>鍵盤在編輯的時候會自動的出現，但是並不會自動的消失，這個工作Apple交給了開發者自己調用<code>resignFirstResponder</code>來隱藏。</p>]]></summary><content type="html"><![CDATA[<p>近日小寫iOS，記一筆，在<code>TextField</code>叫出鍵盤後，按下Done鈕再隱藏鍵盤的例子。</p>
<p>Apple 的<a href="https://developer.apple.com/library/ios/#DOCUMENTATION/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html">Managing the Keyboard</a>是應該詳讀的文檔。</p>
<p>鍵盤在編輯的時候會自動的出現，但是並不會自動的消失，這個工作Apple交給了開發者自己調用<code>resignFirstResponder</code>來隱藏。</p>
<p>首先，要在聲明使用<code>UITextFieldDelegate</code>協議。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-objc" data-lang="objc"><span style="display:flex;"><span><span style="color:#ff79c6">@interface</span> <span style="color:#50fa7b">ViewController</span> : <span style="color:#50fa7b">UIViewController</span>  <span style="color:#ff79c6">&</span>lt;UITextFieldDelegate<span style="color:#ff79c6">&</span>gt;
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">@property</span> (<span style="color:#ff79c6">nonatomic</span>,<span style="color:#ff79c6">retain</span>) <span style="color:#8be9fd">IBOutlet</span> UITextField <span style="color:#ff79c6">*</span>textField;
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">@end</span>
</span></span></code></pre></div><p>其次，要在<code>implementation</code>裡指定<code>TextField.delegate</code></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-objc" data-lang="objc"><span style="display:flex;"><span>- (<span style="color:#8be9fd">void</span>)<span style="color:#50fa7b">viewDidLoad</span>
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">self</span>.textField.delegate <span style="color:#ff79c6">=</span> <span style="color:#8be9fd;font-style:italic">self</span>;
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p>最後再複寫<code>textFieldShouldReturn</code>方法來call <code>resignFirstResponder</code>方法。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-objc" data-lang="objc"><span style="display:flex;"><span>- (<span style="color:#8be9fd">BOOL</span>)<span style="color:#50fa7b">textFieldShouldReturn:</span>(UITextField <span style="color:#ff79c6">*</span>)<span style="color:#8be9fd;font-style:italic">textField</span>
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>[textField resignFirstResponder];
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">return</span> <span style="color:#8be9fd;font-style:italic">NO</span>;
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div>]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="ios" label="Ios" scheme="https://blog.khsing.net/tags/ios/" />
    <category term="apple" label="Apple" scheme="https://blog.khsing.net/tags/apple/" />
    <category term="objc" label="Objc" scheme="https://blog.khsing.net/tags/objc/" />
    <published>2012-02-29T02:31:54Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[2011年总结]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2012/01/say-goodbye-to-2011.html" />
    <id>https://blog.khsing.net/2012/01/say-goodbye-to-2011.html</id>
    <updated>2012-01-04T14:42:02Z</updated>
    <summary type="html"><![CDATA[<p>2011过去三天了，今天我才拖着来写去年的事情。</p>
<p>2010年总结的时候我给自己的2011定了几件事儿，先看看：</p>
<ul>
<li>**继续克服拖沓症。**有所改进，但是不够，拖沓的事情还是有不少。</li>
<li>继续学习科学技术，数学是重点，算法和数据结构要有个交待。这个进展很小，没有学进去太多。</li>
<li>学车，在党同意并且运气好的情况下，希望能抽个号，买个车。车是11月学完了，还撞了一次车。但是党还没通过我的申请，有一个暂住证没办，1月8号以前搞定一个，争取1月的奖池里有我。</li>
<li>继续学习外语，把重点放在英语上，得空的时候顾及一下法语。英语的学习今年还是可以的，基本上是可以听的懂了，但是词汇量还是太小了，语法和写作是接下来的重点。法语已经忘的连10以内的数字都数不完了。</li>
<li>带着老婆孩子旅个游，目的地未定。中秋去了一趟厦门，总体的感觉还是不错的。我也从很远的地方看到了“三民主义，统一中国”的标语（实际上是拍的照片回来才看清楚，远处只看到了一个大的标语牌子上有字）。</li>
<li>得空儿回老家办二代身份证和护照，这是淫威啊。5.1的时候回去了一趟，护照、身份证、港澳台通行证都一起办完了。</li>
</ul>
<p>计划外的事情是：2月的时候换了一次工作。</p>]]></summary><content type="html"><![CDATA[<p>2011过去三天了，今天我才拖着来写去年的事情。</p>
<p>2010年总结的时候我给自己的2011定了几件事儿，先看看：</p>
<ul>
<li>**继续克服拖沓症。**有所改进，但是不够，拖沓的事情还是有不少。</li>
<li>继续学习科学技术，数学是重点，算法和数据结构要有个交待。这个进展很小，没有学进去太多。</li>
<li>学车，在党同意并且运气好的情况下，希望能抽个号，买个车。车是11月学完了，还撞了一次车。但是党还没通过我的申请，有一个暂住证没办，1月8号以前搞定一个，争取1月的奖池里有我。</li>
<li>继续学习外语，把重点放在英语上，得空的时候顾及一下法语。英语的学习今年还是可以的，基本上是可以听的懂了，但是词汇量还是太小了，语法和写作是接下来的重点。法语已经忘的连10以内的数字都数不完了。</li>
<li>带着老婆孩子旅个游，目的地未定。中秋去了一趟厦门，总体的感觉还是不错的。我也从很远的地方看到了“三民主义，统一中国”的标语（实际上是拍的照片回来才看清楚，远处只看到了一个大的标语牌子上有字）。</li>
<li>得空儿回老家办二代身份证和护照，这是淫威啊。5.1的时候回去了一趟，护照、身份证、港澳台通行证都一起办完了。</li>
</ul>
<p>计划外的事情是：2月的时候换了一次工作。</p>
<p>2012年，我对自己有一些要求，也有一些期许。</p>
<ul>
<li>继续和拖沓症作战</li>
<li>利用业余时间把自己的小项目搞出个眉目来</li>
<li>出国旅游一次</li>
<li>考一次雅思，争取到6分</li>
<li>每2个月读1本书,其中1/3要是英文的</li>
<li>拼RP，买车</li>
</ul>
<p>希望年底的时候，不会对自己这一年的作为失望。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="annual" label="Annual" scheme="https://blog.khsing.net/tags/annual/" />
    <published>2012-01-04T14:42:02Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[驾照和租车]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2011/11/driving-license-and-rental-car.html" />
    <id>https://blog.khsing.net/2011/11/driving-license-and-rental-car.html</id>
    <updated>2011-11-26T04:00:05Z</updated>
    <summary type="html"><![CDATA[<p>经过半年的驾校学习，赶在一年结束以前我终于是拿到了天朝的驾驶执照。3月报的名，4月科目一考完，5月份开始上车学习，10月科目二考试完事，11月科目三考试结束，在我看来这是一个漫长的过程。</p>]]></summary><content type="html"><![CDATA[<p>经过半年的驾校学习，赶在一年结束以前我终于是拿到了天朝的驾驶执照。3月报的名，4月科目一考完，5月份开始上车学习，10月科目二考试完事，11月科目三考试结束，在我看来这是一个漫长的过程。</p>
<p>在拿到驾照的第一天，蠢蠢欲动的心情难以抑制，于是在神舟租车下了单订了一个标致207。第一天上路，堵车是难免的，熄火数次，被后面鸣笛多次，送老婆回来的时候还走错了路在健翔桥上桥去了八达岭高速。第二天主要是下了两次地库，中午出库的时候在出口熄火、小溜车把后面的宝马吓的倒退。晚上出地库的时候，在收费处把前面的宝马给小追尾了一次，这是没刹住车，没有处理经验一时有点惊慌失措。打了一圈电话，才搞清楚，给交警报警，给保险公司保险，属于小事故，自行解决一下走保险完事了。第三天和同事去吃饭，三环堵车一路。</p>
<p>总结下来，我这驾车技术还是不行滴。</p>
<ol>
<li>起步不行，不够平缓，经常熄火。</li>
<li>坡起不行，经常熄火，偶尔溜车。</li>
<li>停车不行，倒车位置不好，左右不均，需要多次调整。实地的侧方停车还没有机会试验。</li>
</ol>
<p>经验是</p>
<ul>
<li>起步的时候还是要适当的给点油，不象教练场不要给油</li>
<li>手动档，左脚的位置怎么也不能离开离合，即使在上破时也不能，放在离合上是右脚在紧张时踩刹车的一个参考，不至于一脚踩到离合上。</li>
</ul>
<p>当然这个经验和车应该有不小的关系，需要和自己的车磨合磨合。</p>
<p>租车的经验是，</p>
<ul>
<li>新手还是要买那个不计免赔的保险。</li>
<li>提车的时候要注意车身的损伤情况，要在租车协议上写的清楚。</li>
<li>神舟租车是满箱油走，满箱油回。提车要检查油表，如果没满，一定要在租车协议上注明。</li>
<li>如果出事了会多收租金，一般是1到2天。</li>
<li>提车时还要注意车内应该放有车的保险协议，最好是还要有快速处理单。</li>
</ul>
<p>出了事故的处理流程是：</p>
<ol>
<li>报警，拿到快速处理单。责任清楚时候警察可能会让自己写个快速处理单完事，不清楚的时候警察来下责任认定书。</li>
<li>保险，看看车的保险公司是哪一个。给保险公司打电话，说明情况，提供双方车辆的车牌号和车型号就好了。重要的是要拿到保险号</li>
<li>拍照</li>
<li>到租车公司门店提供这些材料。复印相关证件，这时候双方车辆都要到场。</li>
<li>等保险公司的指定或者客户指定的定损地点定损修车</li>
<li>要先垫刷1500到3000左右的一个预售权，等修过车了，保险公司的赔付到了再返还。</li>
</ol>
<p>BTW: 新手上路还是要多注意，多小心，后车鸣笛的时候不要太紧张。别出事，自己心烦，而且还给人家添麻烦。虽然有保险赔付，但是双方的时间都是耗不起。你撞人家，人家比你还要烦的多。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="driver" label="Driver" scheme="https://blog.khsing.net/tags/driver/" />
    <published>2011-11-26T04:00:05Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[一个PHP文件的透过HTTP分发的错误]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2011/11/a-php-file-distribute-error.html" />
    <id>https://blog.khsing.net/2011/11/a-php-file-distribute-error.html</id>
    <updated>2011-11-07T03:55:10Z</updated>
    <summary type="html"><![CDATA[<p>同事写一个服务安装脚步，有一个PHP的配置文件要在安装时分发，脚步里是用wget来获取这个文件的，不幸的是Apache加载了mod_php，所以分发的文件是那个PHP文件被modphp解析过的结果，而这种情况下那个PHP文件的执行大多会导致500错误，被分发的文件要么是空要么是Apache的500错误内容或php display error的内容。</p>]]></summary><content type="html"><![CDATA[<p>同事写一个服务安装脚步，有一个PHP的配置文件要在安装时分发，脚步里是用wget来获取这个文件的，不幸的是Apache加载了mod_php，所以分发的文件是那个PHP文件被modphp解析过的结果，而这种情况下那个PHP文件的执行大多会导致500错误，被分发的文件要么是空要么是Apache的500错误内容或php display error的内容。</p>
<p>服务安装后又匮乏验证机制，出现这种情况就不为人知，真正出事了才会发现。其实出这个问题是有一定历史原因的，原来配置文件的分发是走s3的，到了国内呢，s3服务变的不可用，同时受网络的限制也就不用s3了，采用HTTP的服务代替了s3，但是一些安装脚本的写法延续了s3时代的写法，只不过以前分发的都是conf之类的文件，这次是个php文件，所以出事了。</p>
<p>避免这个问题的方法有很多，如：</p>
<ul>
<li>提供文件分发的HTTP服务不加载解析模块</li>
<li>配置文件的分发一律走文件分发机制，如puppet等。</li>
</ul>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="php" label="Php" scheme="https://blog.khsing.net/tags/php/" />
    <category term="fail" label="Fail" scheme="https://blog.khsing.net/tags/fail/" />
    <published>2011-11-07T03:55:10Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[在RAID 10和RAID 01之间永远选Raid 10]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2011/10/always-chose-raid-10.html" />
    <id>https://blog.khsing.net/2011/10/always-chose-raid-10.html</id>
    <updated>2011-10-25T09:51:05Z</updated>
    <summary type="html"><![CDATA[<p>读<a href="http://www.thegeekstuff.com/2011/10/raid10-vs-raid01/">The Geek Stuff: RAID 10 vs RAID 01</a>的内容，我马一下。</p>
<p>遇到选Raid 10还是Raid 01的时候永远选Raid 10，因为Raid 10比01在容量和性能一致的情况下提供了更多的容错性。</p>]]></summary><content type="html"><![CDATA[<p>读<a href="http://www.thegeekstuff.com/2011/10/raid10-vs-raid01/">The Geek Stuff: RAID 10 vs RAID 01</a>的内容，我马一下。</p>
<p>遇到选Raid 10还是Raid 01的时候永远选Raid 10，因为Raid 10比01在容量和性能一致的情况下提供了更多的容错性。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="system" label="System" scheme="https://blog.khsing.net/categories/system/" />
    <category term="raid" label="Raid" scheme="https://blog.khsing.net/tags/raid/" />
    <published>2011-10-25T09:51:05Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[放Amazon的成本]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2011/10/amazon.html" />
    <id>https://blog.khsing.net/2011/10/amazon.html</id>
    <updated>2011-10-25T09:33:54Z</updated>
    <summary type="html"><![CDATA[<p><a href="http://highscalability.com">HS</a>放了一个<a href="http://highscalability.com/blog/2011/10/24/stackexchange-architecture-updates-running-smoothly-amazon-4.html">StackExchange的构架更新</a>，其中说到把服务放在Amazon上的成本是自己购买后的4倍。</p>
<p>我厂也是Amazon的用户，关于我厂为什么用上了Amazon是有一个段子的。话说当年运维部门遇上用户大幅增加的时候一个礼拜都在加班，尽在机房过生活了，人手不够用到老大把自己怀孕的老婆都叫来插网线。后来另一个游戏在上线的时候发现运维部门的资源如此紧张，没办法就硬着头皮试了试Amazon，结果这一试让厂里后来的游戏都放到了Amazon上来了。这是2008年的事了，经过了这几年的成长，现在我厂也要回到自己的数据中心了，甚至已经在Amazon的产品也要回到数据中心了。</p>]]></summary><content type="html"><![CDATA[<p><a href="http://highscalability.com">HS</a>放了一个<a href="http://highscalability.com/blog/2011/10/24/stackexchange-architecture-updates-running-smoothly-amazon-4.html">StackExchange的构架更新</a>，其中说到把服务放在Amazon上的成本是自己购买后的4倍。</p>
<p>我厂也是Amazon的用户，关于我厂为什么用上了Amazon是有一个段子的。话说当年运维部门遇上用户大幅增加的时候一个礼拜都在加班，尽在机房过生活了，人手不够用到老大把自己怀孕的老婆都叫来插网线。后来另一个游戏在上线的时候发现运维部门的资源如此紧张，没办法就硬着头皮试了试Amazon，结果这一试让厂里后来的游戏都放到了Amazon上来了。这是2008年的事了，经过了这几年的成长，现在我厂也要回到自己的数据中心了，甚至已经在Amazon的产品也要回到数据中心了。</p>
<p>似乎从这两个案子来看，Amazon是适合创业公司在初期资源不足，无暇顾及底层支持的一种选择，一旦业务的增长到了一个阶段，可以腾出手来做优化和成本缩减的时候，离开Amazon就是一个合理的选择了。</p>
<p>关于我厂的故事，还是<a href="http://hi.baidu.com/icej/blog/item/97ccd8fc8684cd9eb801a0fe.html">猫说的多</a></p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="system" label="System" scheme="https://blog.khsing.net/categories/system/" />
    <category term="amazon" label="Amazon" scheme="https://blog.khsing.net/tags/amazon/" />
    <category term="arch" label="Arch" scheme="https://blog.khsing.net/tags/arch/" />
    <published>2011-10-25T09:33:54Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Computer, Apple and Jobs – 电脑、苹果和乔布斯]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2011/10/computer-apple-and-jobs.html" />
    <id>https://blog.khsing.net/2011/10/computer-apple-and-jobs.html</id>
    <updated>2011-10-08T08:05:06Z</updated>
    <summary type="html"><![CDATA[<p>从2006年我自己购买的第一个<a href="http://www.apple.com">Apple</a>产品<a href="http://support.apple.com/kb/SP43">iBook</a>到现在有5年多的时间了，<a href="http://www.apple.com">Apple</a>给了我很多乐趣。</p>
<p>关于我对<a href="http://www.apple.com">Apple</a>的最早印象可以追溯到中学时期，当时我对电脑产生了很大的热情，1997年左右学校来了2台电脑，应该是486/586吧，主要用来打字用，至今还记得当年趴在微机室外的窗户看老师玩纸牌和打字(CCED)的情景。后来学校来了14台电脑，有了微机教室和微机课程。成立了兴趣小组，我是成员之一，但是半年左右我又退出了这个小组，理由竟然是我想学习Windows 95，而当时有Windows 95的电脑只有教室机一台，在这个事情上我和当时的微机老师闹翻了。这一时期我所接触到的都是PC，DOS，WPS和LOGO，说来惭愧的是Q-Basic没有学懂，我错过了一次学习编程技术的机会，现在想来为学习Windows而和微机老师闹翻是一件蠢事。关于苹果电脑，老师提到了一次，只是淡淡的说那是过时的产品，已经没有人去学习了。</p>]]></summary><content type="html"><![CDATA[<p>从2006年我自己购买的第一个<a href="http://www.apple.com">Apple</a>产品<a href="http://support.apple.com/kb/SP43">iBook</a>到现在有5年多的时间了，<a href="http://www.apple.com">Apple</a>给了我很多乐趣。</p>
<p>关于我对<a href="http://www.apple.com">Apple</a>的最早印象可以追溯到中学时期，当时我对电脑产生了很大的热情，1997年左右学校来了2台电脑，应该是486/586吧，主要用来打字用，至今还记得当年趴在微机室外的窗户看老师玩纸牌和打字(CCED)的情景。后来学校来了14台电脑，有了微机教室和微机课程。成立了兴趣小组，我是成员之一，但是半年左右我又退出了这个小组，理由竟然是我想学习Windows 95，而当时有Windows 95的电脑只有教室机一台，在这个事情上我和当时的微机老师闹翻了。这一时期我所接触到的都是PC，DOS，WPS和LOGO，说来惭愧的是Q-Basic没有学懂，我错过了一次学习编程技术的机会，现在想来为学习Windows而和微机老师闹翻是一件蠢事。关于苹果电脑，老师提到了一次，只是淡淡的说那是过时的产品，已经没有人去学习了。</p>
<p>2002年我来北京，到了中关村，看到了大量的电脑，也看到了那个大箱子里面的东西，在我哥的帮助下，和他一起DIY了一台PC。有一次逛海龙电脑城的时候，苹果电脑有一个展台放着一个<a href="http://youtu.be/sYutehhGknI">iMac广告</a>吸引了我。当时的感觉就是这个玩意比我们DIY的那个Cool多了。随后就开始注意当时北京仅有的几个<a href="http://www.apple.com">Apple</a> retailer的店，每过一段时间就去这些店里把玩把玩<a href="http://support.apple.com/kb/SP43">iBook</a>和Powerbook，看着晶莹剔透的<a href="http://www.apple.com/support/powermac/">PowerMac</a>和iMac，这是一种享受。这个时候我对<a href="http://www.apple.com">Apple</a>及其产品的认识大多是停留在外观的Cool上面，至于对Mac OS还没有半点的感觉。</p>
<p>2006年我托从美国回来的老乡带了一台<a href="http://support.apple.com/kb/SP43">iBook</a>，价值¥7800，而在我拿到<a href="http://support.apple.com/kb/SP43">iBook</a>之后不到一个星期，<a href="http://www.apple.com">Apple</a>就宣布他们奔向了Intel平台，发布了Macbook，有点坑爹是吧？实际上我熟悉这个<a href="http://support.apple.com/kb/SP43">iBook</a>大概花了至少半年的时间。起初的时候我觉的这个<a href="http://support.apple.com/kb/SP43">iBook</a>与PC相比太慢了，软件啥的也不那么上手，没能适应<a href="http://www.apple.com/macosx/">Mac OS X</a>，搞的我一度觉得是不是这钱花的有点冤？这个阶段我的桌子上摆着两个本子，一个是Dell 410，安装的系统不是<a href="http://www.freebsd.org">FreeBSD</a>就是<a href="http://www.debian.org">Debian</a>，折腾操作系统几乎是当时的常态，到了07年秋天的时候就不怎么折腾桌面了，主要的工作就都由<a href="http://support.apple.com/kb/SP43">iBook</a>完成了。到这个时候我才开始体会到了<a href="http://www.apple.com/macosx/">Mac OS X</a>的好，开始发现当我回到Windows的时候就有些不适应了。细节，是一些细节的东西把我留在了Mac上。也是这个时期我开始去看<a href="http://www.apple.com">Apple</a>的Event了，关注起了WWDC，也是这一年iPhone发布了，而我没有搞到一台，只是看了看其他人的东西。</p>
<p>2009年<a href="http://www.apple.com">Apple</a>把Unibody的Macbook改名到了Macbook Pro，<a href="http://blog.khsing.net/2009/07/buy-a-macbookpro.html">我入手了一台13′</a>。这个时候的我早已觉得笔记本这东西真是非<a href="http://www.apple.com">Apple</a>不能入了。</p>
<p>2010年初的时候我从朋友那里接过了一台二手<a href="http://support.apple.com/kb/SP495">iPhone 3G</a>，算是再一次的中了苹果毒，这台<a href="http://support.apple.com/kb/SP495">iPhone 3G</a>因我一次不慎跌落而残废，恰逢<a href="http://support.apple.com/kb/SP587">iPhone 4</a>发布不久，不少朋友都说我是故意为之，不管怎样在<a href="http://support.apple.com/kb/SP587">iPhone 4</a>依然热卖的12月我又入手了。到现在用<a href="http://www.apple.com/iphone">iPhone</a>能做的事情就很多了，交手机费，银行转帐，查询公交线路等等，生活因此而改变一点不假。</p>
<p>关于<a href="http://www.apple.com">Apple</a>的另一个产品iPod我一直没有入手过，直到在前东家转正的时候送了一台。对iPod有过渴望但是又没有那么强烈，另外也确实觉得iPod比较贵，况且手里已经有其他的产品了，但是iTunes我是在Windows时代就使用的，作为Mp3的管理软件，虽然觉得iTunes不够好，但是也没有比之更好的选择。</p>
<p>我知道Bill Gate是因为他的财富，而我知道<a href="http://www.apple.com/stevejobs/">Steve Jobs</a>是因为他的产品。在我喜欢上<a href="http://www.apple.com">Apple</a>产品的时候就自然的了解了这个公司的过去和领导人，在参加北麦活动的时候我认识了David Feng，并且获赠了一本<a href="http://book.douban.com/subject/1483756/">《苹果传奇》</a>，这算是我第一次了解<a href="http://www.apple.com">Apple</a>，同时也知道了一些<a href="http://www.apple.com/stevejobs/">Steve Jobs</a>的古怪脾气，甚至也有过对Jobs的品性的质疑，也看过了<a href="http://youtu.be/UF8uR6Z6KLc">Jobs在Stanford的演讲</a>，我想这可能就是一个完整的Jobs，有些人觉得他不够和蔼，他太偏执，身为上司脾气太坏，我们也许受圣人的影响过多了，容不得有任何的瑕疵，实际上又有谁是完美的呢。Jobs追逐他的梦想和事业直到生命的最后尽头，他改变了这个世界，他改变了我们的生活方式，他是当之无愧的精神领袖。如果苹果重拍<a href="http://youtu.be/4oAB83Z1ydE">Think Different</a>的广告，Jobs应该在那些面孔里。</p>
<p>现在<a href="http://www.apple.com/stevejobs/">Steve Jobs</a>离开了这个世界，我们缅怀这位伟大的导师，也许是上帝觉的7天的时间有点仓促了。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="stevejobs" label="Stevejobs" scheme="https://blog.khsing.net/tags/stevejobs/" />
    <category term="apple" label="Apple" scheme="https://blog.khsing.net/tags/apple/" />
    <category term="ibook" label="Ibook" scheme="https://blog.khsing.net/tags/ibook/" />
    <category term="macbookpro" label="Macbookpro" scheme="https://blog.khsing.net/tags/macbookpro/" />
    <category term="iphone" label="Iphone" scheme="https://blog.khsing.net/tags/iphone/" />
    <published>2011-10-08T08:05:06Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Steve Jobs is gone]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2011/10/steve-jobs-is-gone.html" />
    <id>https://blog.khsing.net/2011/10/steve-jobs-is-gone.html</id>
    <updated>2011-10-06T03:23:32Z</updated>
    <summary type="html"><![CDATA[<p>Steven Paul Jobs (1955 – 2011) is gone while I am waiting for a bus. Thanks for his contribution for the world. R.I.P Steve Jobs.</p>
<p>Buddha and God might need some Apple products.</p>]]></summary><content type="html"><![CDATA[<p>Steven Paul Jobs (1955 – 2011) is gone while I am waiting for a bus. Thanks for his contribution for the world. R.I.P Steve Jobs.</p>
<p>Buddha and God might need some Apple products.</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="stevejobs" label="Stevejobs" scheme="https://blog.khsing.net/tags/stevejobs/" />
    <category term="rip" label="Rip" scheme="https://blog.khsing.net/tags/rip/" />
    <published>2011-10-06T03:23:32Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[浏览器的缓存处理策略]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2011/09/cache-of-browser.html" />
    <id>https://blog.khsing.net/2011/09/cache-of-browser.html</id>
    <updated>2011-09-27T04:48:01Z</updated>
    <summary type="html"><![CDATA[<p>IE和Firefox在Cache的处理上基本的逻辑是，在一个Session里可Cache住的数据会直接读取Cache，并且不会向服务器发出带if-modified-since或if-none-match头信息的HTTP请求，也就不会收到304的回应。这里的一个Session就是指浏览器存活期间，如果浏览器关闭视为该Session结束。</p>]]></summary><content type="html"><![CDATA[<p>IE和Firefox在Cache的处理上基本的逻辑是，在一个Session里可Cache住的数据会直接读取Cache，并且不会向服务器发出带if-modified-since或if-none-match头信息的HTTP请求，也就不会收到304的回应。这里的一个Session就是指浏览器存活期间，如果浏览器关闭视为该Session结束。</p>
<p>对于Flash ActionScript URLRequest的Cache，IE和Firefox都是无论如何都直接读取了浏览器Cache。另外Flash自己也有Cache机制和Storage的设置，只是我还没有去看。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="firefox" label="Firefox" scheme="https://blog.khsing.net/tags/firefox/" />
    <category term="ie" label="Ie" scheme="https://blog.khsing.net/tags/ie/" />
    <category term="cache" label="Cache" scheme="https://blog.khsing.net/tags/cache/" />
    <published>2011-09-27T04:48:01Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[十年9.11]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2011/09/911-10-years.html" />
    <id>https://blog.khsing.net/2011/09/911-10-years.html</id>
    <updated>2011-09-15T17:52:20Z</updated>
    <summary type="html"><![CDATA[<p>9.11十周年过了好几天了。想想2001年的时候我还在高中，那天下午知道这个消息的时候还是很兴奋的，下课后就去网吧看相关新闻，现在想不大起来当时的心情了，可能有一些高兴，可能有一些伤感，也可能更多的是震撼。</p>]]></summary><content type="html"><![CDATA[<p>9.11十周年过了好几天了。想想2001年的时候我还在高中，那天下午知道这个消息的时候还是很兴奋的，下课后就去网吧看相关新闻，现在想不大起来当时的心情了，可能有一些高兴，可能有一些伤感，也可能更多的是震撼。</p>
<p>现在来看这件事的时候，当时美国人的心情和我们2008年遭遇5.12地震的心情应该是类似的，一个是人祸，一个是天灾。10年过去了，那一场袭击的策划者拉登已经被美国人给干掉了。以因果论来讲，拉登也算是有这一果。要说美国又因什么得的9.11这个果，那我还真想不明白。即便是有仇有很，那我觉得也是冤有头债有主，该找谁你找谁，别拿着手无寸铁的老百姓当枪使。我讨厌这些故意牵涉无辜的行为。这就和战场上赶着老百姓走在阵前是一个道理（说的就是刘玄德）。</p>
<p>美国通过十年的反恐战争，也许并不能避免美国再次受到袭击，但是美国政府是在向着保卫国民安全的目标前行，他们在努力的避免悲剧的再次发生。9.11的纪念活动看起来很简单，也很严肃，当然这也确实是一件严肃的事情，他们细细的统计了那场灾难的遇难者，他们也惩戒了行凶者。</p>
<p>既然提到了5.12，那我也希望我们能细细的统计遇难者，能修建起不倒的校舍，希望十年后我们看到的不是遗憾，同样希望我们能严肃的对待严肃的事情。</p>
<p>btw: 凤凰网这个“<a href="http://news.ifeng.com/world/special/911shizhounian/jilupian.shtml">再看中国人的美国观</a>”专题做的不错。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="annual" label="Annual" scheme="https://blog.khsing.net/tags/annual/" />
    <category term="usa" label="Usa" scheme="https://blog.khsing.net/tags/usa/" />
    <published>2011-09-15T17:52:20Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Twitter和微博]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2011/09/twitter-and-weibo.html" />
    <id>https://blog.khsing.net/2011/09/twitter-and-weibo.html</id>
    <updated>2011-09-06T18:35:14Z</updated>
    <summary type="html"><![CDATA[<p>关于Twitter和微博已经有不少人在谈了，尤其是霍距的那一篇“<a href="http://blog.devep.net/virushuo/2011/06/26/microblogging.html">microblogging和微博信息架构产品差距和影响</a>”讲的深。我这一篇呢是在和老婆说twitter和微博的时候说的，现在到blog里来整理一下。</p>
<p>twitter和微博在功能上最大的差别是有没有评论，另一个有相同功能但是却差别巨大的是转发，本文中在写到转发时如其功能与retweet相似或一致，则括号注明(retweet)。关于微博评论对信息的影响，最主要的一点是无法对抛砖引玉所引出的玉进行转发(retweet)以扩大其影响力。微博为了弥补这一点而增加了转发功能，其原型是来自twitter的民间RT，但是微博的转发是将原微博作为引用附在转发微博的下面。这个看似不大的变化，实际上带来了很大的不同。这个不同在原微博被转发时不明显，但是在转发微博被转发的时候就凸显出来了。因为转发微博在被二次转发时，依然会附带上原微博，转发微博变成了二次转发微博的正文内容，从此后的转发就是依次将上一次转发微博的内容作为本次转发微博内容的一部分而被转发。问题是在这样的转发下很快就会达到140字的限制，因此转发微博的用户不得不删除前人的内容再转发，值得注意的是这个问题是民间RT的问题，微博是把这个问题放大了，而twitter正是借着retweet把这个问题缩小了。</p>]]></summary><content type="html"><![CDATA[<p>关于Twitter和微博已经有不少人在谈了，尤其是霍距的那一篇“<a href="http://blog.devep.net/virushuo/2011/06/26/microblogging.html">microblogging和微博信息架构产品差距和影响</a>”讲的深。我这一篇呢是在和老婆说twitter和微博的时候说的，现在到blog里来整理一下。</p>
<p>twitter和微博在功能上最大的差别是有没有评论，另一个有相同功能但是却差别巨大的是转发，本文中在写到转发时如其功能与retweet相似或一致，则括号注明(retweet)。关于微博评论对信息的影响，最主要的一点是无法对抛砖引玉所引出的玉进行转发(retweet)以扩大其影响力。微博为了弥补这一点而增加了转发功能，其原型是来自twitter的民间RT，但是微博的转发是将原微博作为引用附在转发微博的下面。这个看似不大的变化，实际上带来了很大的不同。这个不同在原微博被转发时不明显，但是在转发微博被转发的时候就凸显出来了。因为转发微博在被二次转发时，依然会附带上原微博，转发微博变成了二次转发微博的正文内容，从此后的转发就是依次将上一次转发微博的内容作为本次转发微博内容的一部分而被转发。问题是在这样的转发下很快就会达到140字的限制，因此转发微博的用户不得不删除前人的内容再转发，值得注意的是这个问题是民间RT的问题，微博是把这个问题放大了，而twitter正是借着retweet把这个问题缩小了。</p>
<p>回到前面说到的抛砖引玉的例子上来，当一块砖(原微博)引出一块玉(转发微博)的时候，想对玉做转发必需带上砖，如果玉又引出了玉，但是超过了140字的限制就无法继续了，你只能把前面的玉扔掉，才能抛出新的玉，而且虽然你的玉是被上一块玉引出来的，但是你还是必需带上砖，这时第二块玉可能已经和那块砖没关系了，要紧的是看客们也没有途径透过第二块玉找到第一块玉。信息的前后链路开始断了，随着转发次数的增加，这种链路的断层会越来越严重。而且这会影响到对那块砖的价值的评估，砖虽然被转了多次，但可能只是在转那块玉的时候的附带作用。</p>
<p>说完了微博再来说twitter。twitter维持一个话题和传播靠的是reply和retweet这两个功能。先说reply，任何一个reply都会包含它的回复对象(api: in_reply_to_status_id)，根据这个id就可以顺藤摸瓜，找到原tweet，所以有了第二块玉就可以找到第一块玉，顺着第一块玉就可以找到那块砖。再说retweet，retweet本身没有附加内容，只是在信息的传播路上做个中转放大，而且是原汁原味的。转发和民间RT都是有添油加醋或断章取义的可能性的（从这一点上来说retweet更能防止谣言的产生啊）。而且retweet是对tweet价值的一种真实体现，砖就是砖，玉就是玉。</p>
<p>说到这里，基本上也就把我对这两个产品在传播上的功能差异认识说出来了。twitter对这些功能的设计是深思熟虑的，微博的设计看起来欠点意思。我说了这么些，根子上还是霍距说的信息平等的问题。</p>
<p>twitter和微博在其他功能上的差异，有些有可比性，有些没有可比性。比如发图片和视频的功能，对比起来就是信息平等的问题，微博你发个图，评论和转发都不能回个图或视频给你，twitter只能发图片/视频的URL，回复也只能回复图片/视频的URL，这个方案简单，有趣，不烦人，twitter把显示图片/视频的事情交给了客户端。</p>
<p>就这么多了，虽然还有一些话没说，但是我觉的还是留着吧，值得肯定的一点是微博还是有创新的。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="twitter" label="Twitter" scheme="https://blog.khsing.net/tags/twitter/" />
    <category term="weibo" label="Weibo" scheme="https://blog.khsing.net/tags/weibo/" />
    <published>2011-09-06T18:35:14Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Google Docs不簡單]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2011/08/google-docs.html" />
    <id>https://blog.khsing.net/2011/08/google-docs.html</id>
    <updated>2011-08-29T11:48:11Z</updated>
    <summary type="html"><![CDATA[<p>今天用Google Docs做Check List，想對Status欄的Done, In progress, Blocked設不同的background-color，Google Docs竟然有App Scripts可以用，完全是Javascript，超讚的。</p>]]></summary><content type="html"><![CDATA[<p>今天用Google Docs做Check List，想對Status欄的Done, In progress, Blocked設不同的background-color，Google Docs竟然有App Scripts可以用，完全是Javascript，超讚的。</p>
<p>下面這個就是我從<a href="http://webapps.stackexchange.com/questions/16745/google-spreadsheets-conditional-formatting">Google spreadsheets conditional formatting</a>抄來改的。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-js" data-lang="js"><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">function</span> colorAll() {
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">var</span> sheet <span style="color:#ff79c6">=</span> SpreadsheetApp.getActiveSheet();
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">var</span> startRow <span style="color:#ff79c6">=</span> <span style="color:#bd93f9">2</span>;
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">var</span> endRow <span style="color:#ff79c6">=</span> sheet.getLastRow();
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">var</span> statusCol <span style="color:#ff79c6">=</span> getStatusColumn();
</span></span><span style="display:flex;"><span><span style="color:#6272a4">//Browser.msgBox(statusCol);
</span></span></span><span style="display:flex;"><span><span style="color:#ff79c6">for</span> (<span style="color:#8be9fd;font-style:italic">var</span> r <span style="color:#ff79c6">=</span> startRow; r <span style="color:#ff79c6">&</span>lt;<span style="color:#ff79c6">=</span> endRow; r<span style="color:#ff79c6">++</span>) {
</span></span><span style="display:flex;"><span>colorRow(r,statusCol);
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">function</span> getStatusColumn() {
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">var</span> sheet <span style="color:#ff79c6">=</span> SpreadsheetApp.getActiveSheet();
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">var</span> startCol <span style="color:#ff79c6">=</span> <span style="color:#bd93f9">1</span>;
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">var</span> maxCol <span style="color:#ff79c6">=</span> sheet.getMaxColumns();
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">var</span> header <span style="color:#ff79c6">=</span> sheet.getRange(<span style="color:#bd93f9">1</span>, maxCol);
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">for</span> ( <span style="color:#8be9fd;font-style:italic">var</span> col <span style="color:#ff79c6">=</span> startCol; col <span style="color:#ff79c6">&</span>lt;<span style="color:#ff79c6">=</span> maxCol; col<span style="color:#ff79c6">++</span>){
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">var</span> value <span style="color:#ff79c6">=</span> sheet.getRange(<span style="color:#bd93f9">1</span>, col).getValues();
</span></span><span style="display:flex;"><span><span style="color:#6272a4">//Browser.msgBox(value);
</span></span></span><span style="display:flex;"><span><span style="color:#ff79c6">if</span> (value <span style="color:#ff79c6">==</span> <span style="color:#f1fa8c">'Status'</span>){
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">return</span> col;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">function</span> colorRow(r,c){
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">var</span> sheet <span style="color:#ff79c6">=</span> SpreadsheetApp.getActiveSheet();
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">var</span> dataRange <span style="color:#ff79c6">=</span> sheet.getRange(r, c);
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">var</span> data <span style="color:#ff79c6">=</span> dataRange.getValues();
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">if</span>(data <span style="color:#ff79c6">==</span> <span style="color:#f1fa8c">"Done"</span>){
</span></span><span style="display:flex;"><span>dataRange.setBackgroundRGB(<span style="color:#bd93f9">0</span>, <span style="color:#bd93f9">255</span>, <span style="color:#bd93f9">0</span>);
</span></span><span style="display:flex;"><span>}<span style="color:#ff79c6">else</span> <span style="color:#ff79c6">if</span>(data <span style="color:#ff79c6">==</span> <span style="color:#f1fa8c">"In progress"</span>){
</span></span><span style="display:flex;"><span>dataRange.setBackgroundRGB(<span style="color:#bd93f9">255</span>, <span style="color:#bd93f9">255</span>, <span style="color:#bd93f9">0</span>);
</span></span><span style="display:flex;"><span>}<span style="color:#ff79c6">else</span> <span style="color:#ff79c6">if</span>(data <span style="color:#ff79c6">==</span> <span style="color:#f1fa8c">"Blocked"</span>){
</span></span><span style="display:flex;"><span>dataRange.setBackgroundRGB(<span style="color:#bd93f9">255</span>, <span style="color:#bd93f9">153</span>, <span style="color:#bd93f9">0</span>);
</span></span><span style="display:flex;"><span>}<span style="color:#ff79c6">else</span> {
</span></span><span style="display:flex;"><span>dataRange.setBackgroundRGB(<span style="color:#bd93f9">255</span>, <span style="color:#bd93f9">255</span>, <span style="color:#bd93f9">255</span>);
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>SpreadsheetApp.flush();
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">function</span> onEdit(event)
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">var</span> currentCol <span style="color:#ff79c6">=</span> event.source.getActiveRange().getColumnIndex();
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">var</span> statusCol <span style="color:#ff79c6">=</span> getStatusColumn();
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">if</span> (currentCol <span style="color:#ff79c6">===</span> statusCol){
</span></span><span style="display:flex;"><span>colorRow(event.source.getActiveRange().getRowIndex(),statusCol);
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">function</span> onOpen(){
</span></span><span style="display:flex;"><span>colorAll();
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div>]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="google" label="Google" scheme="https://blog.khsing.net/tags/google/" />
    <category term="docs" label="Docs" scheme="https://blog.khsing.net/tags/docs/" />
    <published>2011-08-29T11:48:11Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Steve Jobs]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2011/08/steve-jobs.html" />
    <id>https://blog.khsing.net/2011/08/steve-jobs.html</id>
    <updated>2011-08-29T03:38:25Z</updated>
    <summary type="html"><![CDATA[<p>教主謝幕了。豐富多彩的職業生涯可能也就此結束了。感謝他帶給這個世界這個行業的一切。</p>]]></summary><content type="html"><![CDATA[<p>教主謝幕了。豐富多彩的職業生涯可能也就此結束了。感謝他帶給這個世界這個行業的一切。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="stevejobs" label="Stevejobs" scheme="https://blog.khsing.net/tags/stevejobs/" />
    <published>2011-08-29T03:38:25Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[在Puppet裡使用ERB模板]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2011/08/using-erb-template-in-puppet.html" />
    <id>https://blog.khsing.net/2011/08/using-erb-template-in-puppet.html</id>
    <updated>2011-08-18T04:24:39Z</updated>
    <summary type="html"><![CDATA[<p>Puppet也可以使用erb模板，默認模板的搜尋位置是<code>$vardir/templaters</code>，但是搭配VCS來做還是有Best Practices照做。先在pp文件裡寫</p>]]></summary><content type="html"><![CDATA[<p>Puppet也可以使用erb模板，默認模板的搜尋位置是<code>$vardir/templaters</code>，但是搭配VCS來做還是有Best Practices照做。先在pp文件裡寫</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-puppet" data-lang="puppet"><span style="display:flex;"><span><span style="color:#ff79c6">file</span> { <span style="color:#f1fa8c">'/etc/hosts'</span>:
</span></span><span style="display:flex;"><span><span style="color:#50fa7b">content</span> <span style="color:#ff79c6">=</span>&<span style="color:#50fa7b">gt</span>; <span style="color:#ff79c6">template</span>(<span style="color:#f1fa8c">"hosts/hosts.erb"</span>),
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p><code>template()</code>裡的路徑對應的其實是<code>modules/hosts/templates/hosts.erb</code></p>
<p>erb文件裡的變量有兩個來源,</p>
<ol>
<li>pp文件裡的定義，如：<code>$var = "aaa"</code>，也可以是list/array，如：<code>$var = ["a","b","c"]</code></li>
<li>facter的定義，這個定義可以用<code>facter --puppet</code>看到。</li>
</ol>
<p>參考：<a href="http://docs.puppetlabs.com/guides/templating.html">Docs: Using Puppet Templates</a></p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="puppet" label="Puppet" scheme="https://blog.khsing.net/tags/puppet/" />
    <published>2011-08-18T04:24:39Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[在Mac OS X裡用CPAN]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2011/07/mac-os-xcpan.html" />
    <id>https://blog.khsing.net/2011/07/mac-os-xcpan.html</id>
    <updated>2011-07-25T04:00:17Z</updated>
    <summary type="html"><![CDATA[<p>有個perl的腳本有用到YAML，但是Mac OS X的perl並沒有內建此模組，自己動手CPAN來裝又不想寫花<code>/Library</code>。就用local-lib來做好了。先載一個<a href="http://search.cpan.org/dist/local-lib/">local-lib</a>回來。</p>]]></summary><content type="html"><![CDATA[<p>有個perl的腳本有用到YAML，但是Mac OS X的perl並沒有內建此模組，自己動手CPAN來裝又不想寫花<code>/Library</code>。就用local-lib來做好了。先載一個<a href="http://search.cpan.org/dist/local-lib/">local-lib</a>回來。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">cd</span> local-lib-1.008004
</span></span><span style="display:flex;"><span>perl Makefile.PL --bootstrap
</span></span><span style="display:flex;"><span>make
</span></span><span style="display:flex;"><span>make <span style="color:#8be9fd;font-style:italic">test</span>
</span></span><span style="display:flex;"><span>make install
</span></span></code></pre></div><p>這會在家目錄下建一個perl5的目錄來放lib。接下來要設置一些環境變量就好了。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>perl -I<span style="color:#8be9fd;font-style:italic">$HOME</span>/perl5/lib/perl5 -Mlocal::lib
</span></span></code></pre></div><p>要是bash可以直接把上面的輸出貼到bashrc既可，csh要轉成setenv。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>setenv PERL_LOCAL_LIB_ROOT <span style="color:#f1fa8c">"~/perl5"</span>;
</span></span><span style="display:flex;"><span>setenv PERL_MB_OPT <span style="color:#f1fa8c">"--install_base ~/perl5"</span>;
</span></span><span style="display:flex;"><span>setenv PERL_MM_OPT <span style="color:#f1fa8c">"INSTALL_BASE=~/perl5"</span>;
</span></span><span style="display:flex;"><span>setenv PERL5LIB <span style="color:#f1fa8c">"~/perl5/lib/perl5/darwin-thread-multi-2level:~/perl5/lib/perl5"</span>;
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">set</span> <span style="color:#8be9fd;font-style:italic">path</span> <span style="color:#ff79c6">=</span> <span style="color:#ff79c6">(</span> ~/perl5/bin <span style="color:#f1fa8c">\ </span><span style="color:#6272a4">#後面省略</span>
</span></span></code></pre></div>]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="cli" label="CLI" scheme="https://blog.khsing.net/categories/cli/" />
    <category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="perl" label="Perl" scheme="https://blog.khsing.net/tags/perl/" />
    <category term="cache" label="Cache" scheme="https://blog.khsing.net/tags/cache/" />
    <published>2011-07-25T04:00:17Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[MySQL应不应该开swap]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2011/07/should-swapon-in-mysql-instance.html" />
    <id>https://blog.khsing.net/2011/07/should-swapon-in-mysql-instance.html</id>
    <updated>2011-07-08T06:29:14Z</updated>
    <summary type="html"><![CDATA[<p>这其实是个老问题了，只是昨天和同事说起来的时候，稍稍争执了一番。
正常来说，一个Linux主机应该打开swap并且是内存的二倍。但是凡事应该具体问题具体对待，时代在变化，软硬件都有了不少的变化。在一个64G内存的机器上你还会用128G的swap？
Peter Zaitsev在08年写的一篇blog: <a href="http://www.mysqlperformanceblog.com/2008/04/06/should-you-have-your-swap-file-enabled-while-running-mysql/">Should you have your swap file enabled while running MySQL?</a>，里面提到了一个标准：如果你宁可加内存，也不让系统变慢，那就关掉swap。如果你不介意内存耗尽系统变慢，那就开着swap。Peter也提到了一个情况是kernel在没有swap的时候会工作异常，这也被<a href="http://blogs.smugmug.com/don/">Don MacAskill</a>的评论证实了，Don的做法是用Memdisk上建立了一个32M大小的swap来避免。
就我自己来讲，Don的做法比较好。另外也要注意不同的应用有不同的策略，如果应用对数据的完整性要求较高，例如支付系统，事务系统，还是要开启swap的来避免kernel panic和OOM-killer。如果只是在线系统，数据有多份冗余，且允许一定的数据损失（大部分的互联网应用都属这一范围），相反的性能的要求很高，那就把swap设置的低一些，调整<code>swapiness</code>到10左右。
这里还有一个问题是你相信kernel能管好memory cache，swap out正确的数据？还是不能？
参考：</p>]]></summary><content type="html"><![CDATA[<p>这其实是个老问题了，只是昨天和同事说起来的时候，稍稍争执了一番。
正常来说，一个Linux主机应该打开swap并且是内存的二倍。但是凡事应该具体问题具体对待，时代在变化，软硬件都有了不少的变化。在一个64G内存的机器上你还会用128G的swap？
Peter Zaitsev在08年写的一篇blog: <a href="http://www.mysqlperformanceblog.com/2008/04/06/should-you-have-your-swap-file-enabled-while-running-mysql/">Should you have your swap file enabled while running MySQL?</a>，里面提到了一个标准：如果你宁可加内存，也不让系统变慢，那就关掉swap。如果你不介意内存耗尽系统变慢，那就开着swap。Peter也提到了一个情况是kernel在没有swap的时候会工作异常，这也被<a href="http://blogs.smugmug.com/don/">Don MacAskill</a>的评论证实了，Don的做法是用Memdisk上建立了一个32M大小的swap来避免。
就我自己来讲，Don的做法比较好。另外也要注意不同的应用有不同的策略，如果应用对数据的完整性要求较高，例如支付系统，事务系统，还是要开启swap的来避免kernel panic和OOM-killer。如果只是在线系统，数据有多份冗余，且允许一定的数据损失（大部分的互联网应用都属这一范围），相反的性能的要求很高，那就把swap设置的低一些，调整<code>swapiness</code>到10左右。
这里还有一个问题是你相信kernel能管好memory cache，swap out正确的数据？还是不能？
参考：</p>
<ul>
<li><a href="http://www.mysqlperformanceblog.com/2008/04/06/should-you-have-your-swap-file-enabled-while-running-mysql/">Should you have your swap file enabled while running MySQL?</a></li>
<li><a href="http://mysqldba.blogspot.com/2008/05/linux-64-bit-mysql-swap-and-memory.html">Linux 64-bit, MySQL, Swap and Memory</a></li>
<li><a href="http://kerneltrap.org/node/3202">Linux: Is Swap Necessary?</a></li>
<li><a href="http://jcole.us/blog/archives/2010/09/28/mysql-swap-insanity-and-the-numa-architecture/">The “swap insanity” problem, in brief</a></li>
</ul>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="linux" label="Linux" scheme="https://blog.khsing.net/tags/linux/" />
    <category term="swap" label="Swap" scheme="https://blog.khsing.net/tags/swap/" />
    <published>2011-07-08T06:29:14Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Mac OS X Lion的感受]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2011/07/mac-os-x-lion.html" />
    <id>https://blog.khsing.net/2011/07/mac-os-x-lion.html</id>
    <updated>2011-07-04T07:25:25Z</updated>
    <summary type="html"><![CDATA[<p>从朋友那里搞了一个Developer的账号下到了Lion GM，玩了两天。感觉如下：</p>
<ul>
<li>手势还是不错的，可惜Show Desktop的那个手势我做不来。</li>
<li>Misson Control确实是一个不错的东东，比之以前给力多了。</li>
<li>Full Screen这个Feature还不够好，主要是在多个显示器上的Full Screen是有很大问题的，在我看来这个是没有达到Release的地步的。</li>
<li>Address Book的更新不给力，反而出了个中文排序的bug。</li>
<li>iCal和Address Book的界面我不是很喜欢。没有在易用型上有什么新的进展。</li>
<li>与Scrollbar相反的滚动，确实需要适应。</li>
<li>Mail的升级很不错，但是还是不能像Outlook那样显示Receipt的Popup来看详细，这是我唯一使用Outlook的理由了。</li>
<li>Dock Icon上的Count变丑了。</li>
<li>AirDrop确实是个方便分享文件的方法，人性化了。但是有时候找不到人。</li>
<li>Spotlight不能直接显示字典的结果了。Fuck.</li>
<li>Time machine可以加密了。</li>
</ul>
<p>Apple这次Lion的这个升级吧，有惊喜，有遗憾。界面的变化我不太喜欢，越来越平了，不靓丽，我喜欢颜色鲜艳的风格，但是这样又有可能把用户的注意力从自己所关注的事情上转移到系统上来。当然我这个是无凭据的乱说，也许Apple有数据呢。</p>]]></summary><content type="html"><![CDATA[<p>从朋友那里搞了一个Developer的账号下到了Lion GM，玩了两天。感觉如下：</p>
<ul>
<li>手势还是不错的，可惜Show Desktop的那个手势我做不来。</li>
<li>Misson Control确实是一个不错的东东，比之以前给力多了。</li>
<li>Full Screen这个Feature还不够好，主要是在多个显示器上的Full Screen是有很大问题的，在我看来这个是没有达到Release的地步的。</li>
<li>Address Book的更新不给力，反而出了个中文排序的bug。</li>
<li>iCal和Address Book的界面我不是很喜欢。没有在易用型上有什么新的进展。</li>
<li>与Scrollbar相反的滚动，确实需要适应。</li>
<li>Mail的升级很不错，但是还是不能像Outlook那样显示Receipt的Popup来看详细，这是我唯一使用Outlook的理由了。</li>
<li>Dock Icon上的Count变丑了。</li>
<li>AirDrop确实是个方便分享文件的方法，人性化了。但是有时候找不到人。</li>
<li>Spotlight不能直接显示字典的结果了。Fuck.</li>
<li>Time machine可以加密了。</li>
</ul>
<p>Apple这次Lion的这个升级吧，有惊喜，有遗憾。界面的变化我不太喜欢，越来越平了，不靓丽，我喜欢颜色鲜艳的风格，但是这样又有可能把用户的注意力从自己所关注的事情上转移到系统上来。当然我这个是无凭据的乱说，也许Apple有数据呢。</p>
<p>update: 发现Finder的Bug很严重，向移动硬盘拖东西进去的时候会出现进度条正常结束后，里面什么都没有的情况，这一Bug对SMB等网络文件系统同样有效。不推荐安装升级GM版，等Release和10.7.1吧。Bug和待完善的地方太多了。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="macos" label="Macos" scheme="https://blog.khsing.net/tags/macos/" />
    <published>2011-07-04T07:25:25Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[玩了玩Andriod]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2011/06/andriod.html" />
    <id>https://blog.khsing.net/2011/06/andriod.html</id>
    <updated>2011-06-02T04:31:51Z</updated>
    <summary type="html"><![CDATA[<p>iPhone送去修了，就从公司先借了一台HTC Desire来玩。感觉如下：</p>
<ul>
<li>几乎不需要用电脑同步。因为我在iPhone, Nokia S60以及WM 6.1时都和Google Contact做同步，所以Google Contact直接就可以同步联系人过来。</li>
<li>Android用户体验还是有很大差距的。无论是Google本厂，OEM厂和第三方都有待提高。最主要的问题就是拖拽之类的，拖到头的时候没感觉，不知道是卡住了还是到头了。各种动画不平滑就不多说了，太突然了。</li>
<li>Gmail的应用很好用。</li>
<li>Apps的管理很麻烦，无论是Stop还是Delete。</li>
<li>Flash很渣，死机重启的元凶之一。</li>
<li>Market自动升级，卸了update又自动升上去了，升上去就找不到Twidroyd了。不过这可能是我的设置问题，还不熟。</li>
<li>那个联系人的Connect，我还搞不大清楚。</li>
</ul>
<p>总的来说Android干掉WM和Nokia是足矣，要说是iPhone killer还为时尚早。Android的机型目前只能成为另一个Android机型的killer。</p>]]></summary><content type="html"><![CDATA[<p>iPhone送去修了，就从公司先借了一台HTC Desire来玩。感觉如下：</p>
<ul>
<li>几乎不需要用电脑同步。因为我在iPhone, Nokia S60以及WM 6.1时都和Google Contact做同步，所以Google Contact直接就可以同步联系人过来。</li>
<li>Android用户体验还是有很大差距的。无论是Google本厂，OEM厂和第三方都有待提高。最主要的问题就是拖拽之类的，拖到头的时候没感觉，不知道是卡住了还是到头了。各种动画不平滑就不多说了，太突然了。</li>
<li>Gmail的应用很好用。</li>
<li>Apps的管理很麻烦，无论是Stop还是Delete。</li>
<li>Flash很渣，死机重启的元凶之一。</li>
<li>Market自动升级，卸了update又自动升上去了，升上去就找不到Twidroyd了。不过这可能是我的设置问题，还不熟。</li>
<li>那个联系人的Connect，我还搞不大清楚。</li>
</ul>
<p>总的来说Android干掉WM和Nokia是足矣，要说是iPhone killer还为时尚早。Android的机型目前只能成为另一个Android机型的killer。</p>
<p>下面是Google Contact的吐槽。
以前不分姓和名，现在分了，有木有！！！
分了姓，名，结果姓名颠倒了，有木有！！！
我在网页上更正过来，结果在Mac的Address都同步到First Name了，有木有！！！
在Android添加个联系人，也都同步到了Frist Name，坑爹呢这是！！！
Mac OS X 10.5的时候同步的是All Contact，有木有！！！
后来10.6只同步My Contact，有木有！！！
Android又同步All Contact。有木有！！！
Android不能设置全局的Order by Last/First，有木有！！！
要一个一个改Display Name，这是坑爹呢这是！！！</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="android" label="Android" scheme="https://blog.khsing.net/tags/android/" />
    <category term="google" label="Google" scheme="https://blog.khsing.net/tags/google/" />
    <published>2011-06-02T04:31:51Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[手工备份iPhone的SMS]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2011/05/backup-sms-on-iphone.html" />
    <id>https://blog.khsing.net/2011/05/backup-sms-on-iphone.html</id>
    <updated>2011-05-13T04:27:33Z</updated>
    <summary type="html"><![CDATA[<p>头段时间iPhone出了一个奇怪的问题，在3G网络下浏览网络图片质量很差，但是又没有找到原因。最后就祭出了修电脑的杀手锏——重装，囧rz</p>
<p>这个重装还必须是干干净净的重装，不能使用iTunes的restore from backup，所以最重要的是SMS信息就要自己来备份了。步骤：</p>]]></summary><content type="html"><![CDATA[<p>头段时间iPhone出了一个奇怪的问题，在3G网络下浏览网络图片质量很差，但是又没有找到原因。最后就祭出了修电脑的杀手锏——重装，囧rz</p>
<p>这个重装还必须是干干净净的重装，不能使用iTunes的restore from backup，所以最重要的是SMS信息就要自己来备份了。步骤：</p>
<ul>
<li>越狱是必须的。</li>
<li>ssh进去把<code>/var/mobile/Library/SMS</code>目录打个tar包，再scp出来。</li>
<li>进DAU模式</li>
<li>恢复firmware</li>
<li>越狱并且安装OpenSSH</li>
<li>scp进去并解压</li>
</ul>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="iphone" label="Iphone" scheme="https://blog.khsing.net/tags/iphone/" />
    <category term="backup" label="Backup" scheme="https://blog.khsing.net/tags/backup/" />
    <category term="restore" label="Restore" scheme="https://blog.khsing.net/tags/restore/" />
    <category term="sms" label="Sms" scheme="https://blog.khsing.net/tags/sms/" />
    <published>2011-05-13T04:27:33Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[VirtualBox 4.0.6在MacBook Pro i7上的性能问题]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2011/05/vbox-performance-problem-on-macbookpro.html" />
    <id>https://blog.khsing.net/2011/05/vbox-performance-problem-on-macbookpro.html</id>
    <updated>2011-05-13T04:06:42Z</updated>
    <summary type="html"><![CDATA[<p>为了网银，安装个VirtualBox+WinXp，但是性能不行。一查是VirtualBox在i7平台下的bug，并且已经修复。预计在4.0.7版本里放出。via <a href="http://www.virtualbox.org/ticket/8474">Performance and stability problems on new i7 CPUs (Mac OS X)</a></p>]]></summary><content type="html"><![CDATA[<p>为了网银，安装个VirtualBox+WinXp，但是性能不行。一查是VirtualBox在i7平台下的bug，并且已经修复。预计在4.0.7版本里放出。via <a href="http://www.virtualbox.org/ticket/8474">Performance and stability problems on new i7 CPUs (Mac OS X)</a></p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="virtualbox" label="Virtualbox" scheme="https://blog.khsing.net/tags/virtualbox/" />
    <published>2011-05-13T04:06:42Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[支持Mac的扫描仪还是少]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2011/05/fewer-scanner-on-mac.html" />
    <id>https://blog.khsing.net/2011/05/fewer-scanner-on-mac.html</id>
    <updated>2011-05-11T04:08:12Z</updated>
    <summary type="html"><![CDATA[<p>从老家带了点老照片回来，想扫描下，公司有用的是HP Color LaserJet CM2320nf，是个办公一体机，可惜Mac只能支持打印，不能扫描。详见：<a href="http://support.apple.com/kb/ht3669">Mac目前支持的打印机，扫描仪和传真的清单</a></p>
<p>Windows 7有个<a href="http://windows.microsoft.com/en-US/windows7/products/features/windows-fax-and-scan">Windows Fax and Scan</a>的新工具，这事做得很好，照片给弄出来了，<a href="http://g2.khsing.net/v/older_picture/">移步相册</a>。</p>]]></summary><content type="html"><![CDATA[<p>从老家带了点老照片回来，想扫描下，公司有用的是HP Color LaserJet CM2320nf，是个办公一体机，可惜Mac只能支持打印，不能扫描。详见：<a href="http://support.apple.com/kb/ht3669">Mac目前支持的打印机，扫描仪和传真的清单</a></p>
<p>Windows 7有个<a href="http://windows.microsoft.com/en-US/windows7/products/features/windows-fax-and-scan">Windows Fax and Scan</a>的新工具，这事做得很好，照片给弄出来了，<a href="http://g2.khsing.net/v/older_picture/">移步相册</a>。</p>
<p>要说这事应该是厂商的驱动支持没跟上，Mac在很早就内建了Image Capture工具可以扫描图片了，其实Preview也可以。反过来想也理解硬件厂商的做法，Windows市占率高必须支持，要支持Mac，可能投入产出比较低，支持了只能说是有远见。</p>
<p>IT部门以后选择设备的时候要看清楚了，公司里有人在用Mac工作，选玩意的时候要支持Mac。Linux用户就请忽略吧。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="osx" label="Osx" scheme="https://blog.khsing.net/tags/osx/" />
    <category term="scanner" label="Scanner" scheme="https://blog.khsing.net/tags/scanner/" />
    <published>2011-05-11T04:08:12Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[5.1回家感闻]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2011/05/5-1.html" />
    <id>https://blog.khsing.net/2011/05/5-1.html</id>
    <updated>2011-05-09T11:26:27Z</updated>
    <summary type="html"><![CDATA[<p>5.1专门回家去办了一下身份证，护照和港澳通行证。家乡有些个变化和听闻，简单记录mark一下。</p>
<ul>
<li>老家雅镇要修很多的化工厂，据说投资好多亿。</li>
<li>爸妈的同龄人基本上都离开了那个地方。</li>
<li>空气的污染比以前更严重了。</li>
<li>爸妈这一辈的房屋搬迁迟迟的没有人出来解决。</li>
<li>高中时常去的“开心牛肉面馆”因与开心网重名而改名“何五牛肉面馆”，价格也翻了好几番，好在味道没变。</li>
</ul>
<p>要说老家的政务人员还真不赖，一个早晨就把我那三个证件办理完毕，可惜的是到时候还得麻烦爸妈去取一趟。</p>]]></summary><content type="html"><![CDATA[<p>5.1专门回家去办了一下身份证，护照和港澳通行证。家乡有些个变化和听闻，简单记录mark一下。</p>
<ul>
<li>老家雅镇要修很多的化工厂，据说投资好多亿。</li>
<li>爸妈的同龄人基本上都离开了那个地方。</li>
<li>空气的污染比以前更严重了。</li>
<li>爸妈这一辈的房屋搬迁迟迟的没有人出来解决。</li>
<li>高中时常去的“开心牛肉面馆”因与开心网重名而改名“何五牛肉面馆”，价格也翻了好几番，好在味道没变。</li>
</ul>
<p>要说老家的政务人员还真不赖，一个早晨就把我那三个证件办理完毕，可惜的是到时候还得麻烦爸妈去取一趟。</p>
<p>回来的路上遇到了一个武威人，说起食品安全了，他讲了两件事：</p>
<ul>
<li>三聚氰胺的结石宝宝，补偿是两千块。</li>
<li>幼儿园出了食物中毒的事儿，14个宝宝丧生。封锁消息，政府赔偿，不许上访。</li>
</ul>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="story" label="Story" scheme="https://blog.khsing.net/tags/story/" />
    <category term="china" label="China" scheme="https://blog.khsing.net/tags/china/" />
    <published>2011-05-09T11:26:27Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[手动下载Juniper SSL VPN客户端]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2011/04/juniper-ssl-vpn.html" />
    <id>https://blog.khsing.net/2011/04/juniper-ssl-vpn.html</id>
    <updated>2011-04-29T06:57:45Z</updated>
    <summary type="html"><![CDATA[<p>昨天折腾新电脑，Juniper VPN的客户端(Network Connection)本已经安装了，并且正常使用。但是今天无缘故的无法使用了。</p>
<p>怀疑是安装JDK导致，想删除的时候发现，Mac OS X的Java竟然是只能Upgrade不能Downgrade，Apple的说法是要想Downgrade你就重装操作系统，坑爹啊。</p>]]></summary><content type="html"><![CDATA[<p>昨天折腾新电脑，Juniper VPN的客户端(Network Connection)本已经安装了，并且正常使用。但是今天无缘故的无法使用了。</p>
<p>怀疑是安装JDK导致，想删除的时候发现，Mac OS X的Java竟然是只能Upgrade不能Downgrade，Apple的说法是要想Downgrade你就重装操作系统，坑爹啊。</p>
<p>手欠就直接把Network Connection给删了，这时候才发现从网页登录之后在Application的tab里有Uninstall，晚已。怎么再安一个才是正道，后来找到了<a href="http://basementjack.com/uncategorized/manually-download-the-juniper-vpn-client-for-mac/">Manually download the Juniper VPN client for mac</a>，这才算是得救。自己拼个地址，就可以下载一个：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-txt" data-lang="txt"><span style="display:flex;"><span>#VPN URL#/dana-cached/nc/NetworkConnect.dmg
</span></span></code></pre></div><p>吐个Mac的槽，屏幕太大，找不到鼠标，有木有？有木有。。。</p>
<p>update: 引起这个问题的原因应该是安装Homebrew的时候，<code>/usr/local</code>的Owner改为自己有关，改为root应该就好了。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="download" label="Download" scheme="https://blog.khsing.net/tags/download/" />
    <category term="mac" label="Mac" scheme="https://blog.khsing.net/tags/mac/" />
    <published>2011-04-29T06:57:45Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[不支持废除死刑]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2011/04/don-t-support-despise-capital-punishment.html" />
    <id>https://blog.khsing.net/2011/04/don-t-support-despise-capital-punishment.html</id>
    <updated>2011-04-28T05:44:25Z</updated>
    <summary type="html"><![CDATA[<p>死刑是正义和公正的客观体现，不是惩罚。从量刑上，我支持多个死刑和几百年的监禁，这同样是对所犯罪行程度的一种客观体现。</p>
<p>update: 目前我唯一能接受废除死刑的理由是：案件有可能错判，但是生命不可以重来。</p>]]></summary><content type="html"><![CDATA[<p>死刑是正义和公正的客观体现，不是惩罚。从量刑上，我支持多个死刑和几百年的监禁，这同样是对所犯罪行程度的一种客观体现。</p>
<p>update: 目前我唯一能接受废除死刑的理由是：案件有可能错判，但是生命不可以重来。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="viewpoint" label="Viewpoint" scheme="https://blog.khsing.net/tags/viewpoint/" />
    <published>2011-04-28T05:44:25Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[iPhone的密码和键盘布局]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2011/04/keyboard-layout-of-iphone-in-password-input-mode.html" />
    <id>https://blog.khsing.net/2011/04/keyboard-layout-of-iphone-in-password-input-mode.html</id>
    <updated>2011-04-22T06:48:19Z</updated>
    <summary type="html"><![CDATA[<p>iPhone可以设置锁屏的密码保护，密码长度的变化会导致输入键盘的变化，目前我看到三种键盘：</p>
<ul>
<li>密码为全数字，长度==4位：全数字键盘，出现4个格子没有确认键。</li>
<li>密码为全数字，长度>4位：全数字键盘，出现输入栏及确认键。</li>
<li>密码有数字有字母及其他字符：全键盘，与正常键盘无二。</li>
</ul>
<p>这样自然是方便输入了，不过也透露了密码强度，好在iPhone还有一个密码输入错误10次的自毁机制（需要自行开启）。</p>]]></summary><content type="html"><![CDATA[<p>iPhone可以设置锁屏的密码保护，密码长度的变化会导致输入键盘的变化，目前我看到三种键盘：</p>
<ul>
<li>密码为全数字，长度==4位：全数字键盘，出现4个格子没有确认键。</li>
<li>密码为全数字，长度>4位：全数字键盘，出现输入栏及确认键。</li>
<li>密码有数字有字母及其他字符：全键盘，与正常键盘无二。</li>
</ul>
<p>这样自然是方便输入了，不过也透露了密码强度，好在iPhone还有一个密码输入错误10次的自毁机制（需要自行开启）。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="iphone" label="Iphone" scheme="https://blog.khsing.net/tags/iphone/" />
    <category term="lock" label="Lock" scheme="https://blog.khsing.net/tags/lock/" />
    <published>2011-04-22T06:48:19Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Mac上的奇技淫巧]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2011/04/mac-tips.html" />
    <id>https://blog.khsing.net/2011/04/mac-tips.html</id>
    <updated>2011-04-15T09:38:46Z</updated>
    <summary type="html"><![CDATA[<p>这儿有篇<a href="http://apple.stackexchange.com/questions/400/mac-os-x-hidden-features-and-nice-tips-tricks">Mac OS X hidden features and nice tips & tricks</a>的列表。有一些是我知道的，有一些是我不知道的。挑几个有意思的说说，主要吐吐Windows的槽。</p>
<p>截屏：Mac的截屏一直是我比较喜欢的，<code>Command+Shift+3/4</code>，至于<code>Command+Shift+Ctrl+3/4</code>我用的就很少了。Windows直到我用上了7，才有了一个Snipping Tools，但是依然没有快捷键，看着QQ成了截屏软件，M$你不惭愧吗。另外QQ解决了截屏分享的事，Mac上的QQ虽然能干这事，不过QQ for Mac算Mac软件吗？。<a href="http://skitch.com/">Skitch</a>才能算是截屏分享的解决方案。</p>]]></summary><content type="html"><![CDATA[<p>这儿有篇<a href="http://apple.stackexchange.com/questions/400/mac-os-x-hidden-features-and-nice-tips-tricks">Mac OS X hidden features and nice tips & tricks</a>的列表。有一些是我知道的，有一些是我不知道的。挑几个有意思的说说，主要吐吐Windows的槽。</p>
<p>截屏：Mac的截屏一直是我比较喜欢的，<code>Command+Shift+3/4</code>，至于<code>Command+Shift+Ctrl+3/4</code>我用的就很少了。Windows直到我用上了7，才有了一个Snipping Tools，但是依然没有快捷键，看着QQ成了截屏软件，M$你不惭愧吗。另外QQ解决了截屏分享的事，Mac上的QQ虽然能干这事，不过QQ for Mac算Mac软件吗？。<a href="http://skitch.com/">Skitch</a>才能算是截屏分享的解决方案。</p>
<p>非焦点窗口滚屏：Mac上如果鼠标悬停在一个非焦点窗口上是可以滚屏的，Windows你是来打酱油的吧，干这活还得个<a href="http://ehiti.de/katmouse/">katmouse</a>帮忙。</p>
<p>窗口切换：这事在<a href="http://blog.khsing.net/2011/02/win7task-switcher.html">Windows的任务切换</a>一文里吐过槽了。</p>
<p>Update: 这次吐吐Mac的槽。</p>
<p>锁屏：这事不得不说Windows有一个不错的快捷键<code>Windows+L</code>，至于你的键盘上有没有Windows这个键，得看造化。Mac上就没有个方便得锁屏方法，我一直设置屏幕右下角唤启屏保，再设置从屏保恢复需要密码，事实上我从那个文章里看到了一个新方法，在KeyChain Access的Preferences里设置在Status Bar上显示，显示的那个图标的菜单里有Lock Screen，<a href="http://www.apple.com">Apple Inc.</a>你在想啥呢，你这叫Hidden feature？你这叫坑爹啊。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="osx" label="Osx" scheme="https://blog.khsing.net/tags/osx/" />
    <published>2011-04-15T09:38:46Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[光华路五号院西边的一湾水]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2011/04/waterpool-maintained-by-people.html" />
    <id>https://blog.khsing.net/2011/04/waterpool-maintained-by-people.html</id>
    <updated>2011-04-12T17:06:15Z</updated>
    <summary type="html"><![CDATA[<p>每天上班都会路过光华路五号院，说是院子，其实是大厦办公楼了。大厦西边有一个水池，很浅，底上刷着蓝漆，所以水看起来很蓝。其实我并不是说这水，而是这湾水每天都是有人来清理的，甚至头几天还被重新漆过。
人造的玩意，总是得有人来打理，否则就会成为一滩死水，那底上也会积起砂土，不在那么蓝哇哇的一湾了。</p>]]></summary><content type="html"><![CDATA[<p>每天上班都会路过光华路五号院，说是院子，其实是大厦办公楼了。大厦西边有一个水池，很浅，底上刷着蓝漆，所以水看起来很蓝。其实我并不是说这水，而是这湾水每天都是有人来清理的，甚至头几天还被重新漆过。
人造的玩意，总是得有人来打理，否则就会成为一滩死水，那底上也会积起砂土，不在那么蓝哇哇的一湾了。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="story" label="Story" scheme="https://blog.khsing.net/tags/story/" />
    <published>2011-04-12T17:06:15Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[磁盘和磁带的备份策略]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2011/03/backup-strategy.html" />
    <id>https://blog.khsing.net/2011/03/backup-strategy.html</id>
    <updated>2011-03-28T16:20:00Z</updated>
    <summary type="html"><![CDATA[<p>High Scalability贴了一篇<a href="http://highscalability.com/blog/2011/3/24/strategy-disk-backup-for-speed-tape-backup-to-save-your-baco.html">Strategy: Disk Backup For Speed, Tape Backup To Save Your Bacon, Just Ask Google</a>的文章，起因是Google从磁带恢复了一批用户的数据出来，本以为是要走进历史的设备又发挥了巨大的作用。文章里提到Gmail的数据丢失是由一个bug引起的，Gmail备份是多份的，并且是跨数据中心级别的，而这个bug导致所有的数据备份都受到了影响，因为这些数据备份都是在线的，所幸的是Gmail还有磁带备份，磁带备份属于是离线备份，没有受到影响，也因此得到了一个教训：影响控制的bug远比影响数据的bug严重。</p>]]></summary><content type="html"><![CDATA[<p>High Scalability贴了一篇<a href="http://highscalability.com/blog/2011/3/24/strategy-disk-backup-for-speed-tape-backup-to-save-your-baco.html">Strategy: Disk Backup For Speed, Tape Backup To Save Your Bacon, Just Ask Google</a>的文章，起因是Google从磁带恢复了一批用户的数据出来，本以为是要走进历史的设备又发挥了巨大的作用。文章里提到Gmail的数据丢失是由一个bug引起的，Gmail备份是多份的，并且是跨数据中心级别的，而这个bug导致所有的数据备份都受到了影响，因为这些数据备份都是在线的，所幸的是Gmail还有磁带备份，磁带备份属于是离线备份，没有受到影响，也因此得到了一个教训：影响控制的bug远比影响数据的bug严重。</p>
<p>这事引起了对磁带的再次关注，文章的结论是：磁盘备份为了快速，磁带的备份为了数据的保障。评论里有人说到了磁带的备份速度其实也没有那么慢，并且Oracle还发布了一些新的磁带设备。看来磁带使命还没有结束。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="backup" label="Backup" scheme="https://blog.khsing.net/tags/backup/" />
    <published>2011-03-28T16:20:00Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[干掉IE 6是阻止Spam的好方法]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2011/03/stop-spam-by-block-ie6.html" />
    <id>https://blog.khsing.net/2011/03/stop-spam-by-block-ie6.html</id>
    <updated>2011-03-22T16:19:06Z</updated>
    <summary type="html"><![CDATA[<p>头几天我的blog还在用MT的时候，突然来了不少的Spamer，而且一度搞的机器很High，我先是用上了Fastcgi，效果不明显，然后又封IP，后来都开始封B段了，还是没什么大用。之后注意了一下User Agent，发现基本都是IE 6.0来的，添了条rewrite就安静了。</p>]]></summary><content type="html"><![CDATA[<p>头几天我的blog还在用MT的时候，突然来了不少的Spamer，而且一度搞的机器很High，我先是用上了Fastcgi，效果不明显，然后又封IP，后来都开始封B段了，还是没什么大用。之后注意了一下User Agent，发现基本都是IE 6.0来的，添了条rewrite就安静了。</p>
<pre tabindex="0"><code class="language-conf" data-lang="conf">RewriteCond %{HTTP_USER_AGENT} "IE 6.0"
RewriteRule ^/cgi-bin/mt-comment.cgi - [F,L]
</code></pre><p>现在换了Wordpress之后Spamer也还是不少，不过机器还不是很High。值得注意的是针对Wordpress的spam机器人核心比MT的新，开始有IE 7/8的内核了。把IE 6干掉，那是大势所趋，人心所向，但要把IE 7/8干掉的话还是有些太冲动，是魔鬼啊。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="spam" label="Spam" scheme="https://blog.khsing.net/tags/spam/" />
    <category term="block" label="Block" scheme="https://blog.khsing.net/tags/block/" />
    <published>2011-03-22T16:19:06Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[从MovableType迁移到WordPress]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2011/03/move-to-wordpress-from-movabletype.html" />
    <id>https://blog.khsing.net/2011/03/move-to-wordpress-from-movabletype.html</id>
    <updated>2011-03-22T06:18:04Z</updated>
    <summary type="html"><![CDATA[<p>昨天花了点时间把自己的blog从MovableType给迁移到Wrodpress，说实话这件事的起因其实是为了写一个wordpress的插件，这个闲话就不表了。MT的静态发步确实是我非常非常喜欢的，而且就多个Blog的管理来说比Wordpress要灵活的多。我有两个blog，本来想是安装一套Wordpress就完事了，但是设置了半天的wordpress MU都没有找到我希望的模式，重点是到了这个Subdomain和Subdirectory的地方卡住了，算了我顶多安装两套完事。</p>]]></summary><content type="html"><![CDATA[<p>昨天花了点时间把自己的blog从MovableType给迁移到Wrodpress，说实话这件事的起因其实是为了写一个wordpress的插件，这个闲话就不表了。MT的静态发步确实是我非常非常喜欢的，而且就多个Blog的管理来说比Wordpress要灵活的多。我有两个blog，本来想是安装一套Wordpress就完事了，但是设置了半天的wordpress MU都没有找到我希望的模式，重点是到了这个Subdomain和Subdirectory的地方卡住了，算了我顶多安装两套完事。</p>
<p>迁移最大的问题是permalink的问题，这一点上MT和Wordpress的最大问题是减号(-)和下划线(_)的问题，这个我觉得还是MT的问题，MT会把你指定的Basename中的下划线替换成减号，而WP不会，这样就会出404。所以在WP的Admin->permalinks设置规则</p>
<pre tabindex="0"><code class="language-conf" data-lang="conf">/%year%/%monthnum%/%postname%.html
</code></pre><p>之后还要在数据库里做点手脚：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sql" data-lang="sql"><span style="display:flex;"><span><span style="color:#ff79c6">update</span> wp_posts <span style="color:#ff79c6">set</span> post_name<span style="color:#ff79c6">=</span><span style="color:#ff79c6">replace</span>(post_name,<span style="color:#f1fa8c">'_'</span>,<span style="color:#f1fa8c">'-'</span>);
</span></span></code></pre></div><p>接下来就是重定向feed和一些分类链接，</p>
<pre tabindex="0"><code class="language-conf" data-lang="conf">RewriteRule ^/(arch|shared|diary-excerpt|development|life|note|others)$ /category/$1 [R=301,L]
RewriteRule ^/(rss|rsd).xml$ /feed [R=301,L]
RewriteRule ^/atom.xml$ /feed/atom [R=301,L]
</code></pre><p>这样下来看起来就差不多了，不过我还不知道各种Reader的Feedfetcher拿到了301会不会改链接。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="wordpress" label="Wordpress" scheme="https://blog.khsing.net/tags/wordpress/" />
    <category term="movabletype" label="Movabletype" scheme="https://blog.khsing.net/tags/movabletype/" />
    <published>2011-03-22T06:18:04Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Team Cymru提供的IP to ASN服务]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2011/03/team-cymruip-provide-ip2asn-service.html" />
    <id>https://blog.khsing.net/2011/03/team-cymruip-provide-ip2asn-service.html</id>
    <updated>2011-03-08T06:45:27Z</updated>
    <summary type="html"><![CDATA[<p><a href="http://www.team-cymru.org/About/">Team Cymru</a>提供了一组好用的<a href="http://www.team-cymru.org/Services/ip-to-asn.html">IP to ASN</a>服务。终端下使用非常的方便。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>%whois -h whois.cymru.com <span style="color:#f1fa8c">" -v 203.208.60.245"</span>
</span></span><span style="display:flex;"><span>AS      | IP               | BGP Prefix          | CC | Registry | Allocated  | AS Name
</span></span><span style="display:flex;"><span><span style="color:#bd93f9">24424</span>   | 203.208.60.245   | 203.208.60.0/24     | CN | apnic    | 2006-01-13 | CNNIC-GOOGLECN-AP Beijing Gu Xiang Information Technology Co.,Ltd.
</span></span></code></pre></div>]]></summary><content type="html"><![CDATA[<p><a href="http://www.team-cymru.org/About/">Team Cymru</a>提供了一组好用的<a href="http://www.team-cymru.org/Services/ip-to-asn.html">IP to ASN</a>服务。终端下使用非常的方便。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>%whois -h whois.cymru.com <span style="color:#f1fa8c">" -v 203.208.60.245"</span>
</span></span><span style="display:flex;"><span>AS      | IP               | BGP Prefix          | CC | Registry | Allocated  | AS Name
</span></span><span style="display:flex;"><span><span style="color:#bd93f9">24424</span>   | 203.208.60.245   | 203.208.60.0/24     | CN | apnic    | 2006-01-13 | CNNIC-GOOGLECN-AP Beijing Gu Xiang Information Technology Co.,Ltd.
</span></span></code></pre></div>]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="whois" label="Whois" scheme="https://blog.khsing.net/tags/whois/" />
    <category term="asn" label="Asn" scheme="https://blog.khsing.net/tags/asn/" />
    <published>2011-03-08T06:45:27Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[公司数据安全]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2011/03/data-security-for-company.html" />
    <id>https://blog.khsing.net/2011/03/data-security-for-company.html</id>
    <updated>2011-03-08T03:49:14Z</updated>
    <summary type="html"><![CDATA[<p>最近换了新的东家，配发的新电脑安装了PGP做了全盘的加密，所以理论上讲，笔记本丢了之后没有密码是不可能知道硬盘的数据的（策略是输错7次密码就锁住了）。另外公司的IT在new hire的课程上还声明了一些问题。</p>]]></summary><content type="html"><![CDATA[<p>最近换了新的东家，配发的新电脑安装了PGP做了全盘的加密，所以理论上讲，笔记本丢了之后没有密码是不可能知道硬盘的数据的（策略是输错7次密码就锁住了）。另外公司的IT在new hire的课程上还声明了一些问题。</p>
<ul>
<li>不要使用不安全的优盘，如果使用了，需要及时清理。</li>
<li>桌子上不要留下上述的不安全存储设备。</li>
<li>不要安装P2P，尤其是迅雷等下载软件，还有Tom版本的Skype，这些东西会扫硬盘，会上传数据。</li>
<li>不要安装盗版软件。</li>
</ul>
<p>安全问题除却技术上的保护，还有意识。另外想想<a href="http://xkcd.com/538/">538</a>。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="security" label="Security" scheme="https://blog.khsing.net/tags/security/" />
    <category term="pgp" label="Pgp" scheme="https://blog.khsing.net/tags/pgp/" />
    <published>2011-03-08T03:49:14Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[FreeBSD 8.2和7.4放出]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2011/03/freebsd-released-new-version.html" />
    <id>https://blog.khsing.net/2011/03/freebsd-released-new-version.html</id>
    <updated>2011-03-02T17:03:52Z</updated>
    <summary type="html"><![CDATA[<p><a href="http://www.FreeBSD.org">FreeBSD</a> 8.2和7.4放出来有几天了，昨天闲着就把手里的机器升级了，用的是163提供的<a href="http://mirrors.163.com">mirrors</a>。要说起来163的同学做的还真是不错，现在连帮助都放在上面，照着做就好了。</p>
<p><code>freebsd-update</code>和<code>portmaster</code>搭配起来升级速度还是很快的，过程也很平稳，没有出锤</p>]]></summary><content type="html"><![CDATA[<p><a href="http://www.FreeBSD.org">FreeBSD</a> 8.2和7.4放出来有几天了，昨天闲着就把手里的机器升级了，用的是163提供的<a href="http://mirrors.163.com">mirrors</a>。要说起来163的同学做的还真是不错，现在连帮助都放在上面，照着做就好了。</p>
<p><code>freebsd-update</code>和<code>portmaster</code>搭配起来升级速度还是很快的，过程也很平稳，没有出锤</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="system" label="System" scheme="https://blog.khsing.net/categories/system/" />
    <category term="freebsd" label="Freebsd" scheme="https://blog.khsing.net/tags/freebsd/" />
    <published>2011-03-02T17:03:52Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[京15条和马太效应]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2011/02/beijing-house-policies-and-matthew-effect.html" />
    <id>https://blog.khsing.net/2011/02/beijing-house-policies-and-matthew-effect.html</id>
    <updated>2011-02-18T05:55:11Z</updated>
    <summary type="html"><![CDATA[<p>北京开始实行京15条，公布了一系列外地人限购房产的政策。</p>
<p>《圣经新约》中“马太福音”第二十五章有这样几句话：“凡有的，还要加给他叫他多余；没有的，连他所有的也要夺过来。”</p>]]></summary><content type="html"><![CDATA[<p>北京开始实行京15条，公布了一系列外地人限购房产的政策。</p>
<p>《圣经新约》中“马太福音”第二十五章有这样几句话：“凡有的，还要加给他叫他多余；没有的，连他所有的也要夺过来。”</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="china" label="China" scheme="https://blog.khsing.net/tags/china/" />
    <published>2011-02-18T05:55:11Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Win7的task switcher]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2011/02/win7-task-switcher.html" />
    <id>https://blog.khsing.net/2011/02/win7-task-switcher.html</id>
    <updated>2011-02-18T05:24:13Z</updated>
    <summary type="html"><![CDATA[<p>因为工作的关系我现在开始使用Win7的笔电工作了。使用了这几天来看问题不大，就是还有些不太适应。特别是Win7的那个程序切换，XP时代就烂的一塌糊涂，现在依旧。</p>]]></summary><content type="html"><![CDATA[<p>因为工作的关系我现在开始使用Win7的笔电工作了。使用了这几天来看问题不大，就是还有些不太适应。特别是Win7的那个程序切换，XP时代就烂的一塌糊涂，现在依旧。</p>
<p>Mac下按Alt+Tab切出task switcher的时候只要鼠标移上去，再放开Alt+Tab就可以切换到相应的程序了。Win7不是，鼠标移上去只是一个预览，当Alt+Tab键release的时候是切换到了task switcher高亮焦点的那个程序上去了，根本就不是你鼠标移上去预览的那个。真要完成这个操作需要多一次click，把那个高亮的焦点移过来才可以。这个体验让我不爽了好几天了。</p>
<p>今天专门下载了个VistaSwitcher才算是解决了这个问题。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="windows" label="Windows" scheme="https://blog.khsing.net/tags/windows/" />
    <category term="taskmgr" label="Taskmgr" scheme="https://blog.khsing.net/tags/taskmgr/" />
    <published>2011-02-18T05:24:13Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[半路出家的野生程序员]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2011/01/self-learning-programmer.html" />
    <id>https://blog.khsing.net/2011/01/self-learning-programmer.html</id>
    <updated>2011-01-25T08:38:56Z</updated>
    <summary type="html"><![CDATA[<p>我是半路出家自学的计算机和编程，一度觉的自己学的还不错。后来看别人写的优秀代码，直呼过瘾，也发现自己的代码并不出色，用某人的话讲就是：too young, too simple,  sometimes naive。一度觉得学得还不错，那是自我安慰，其实只是掌握了一些非常基本的小技巧(little tricks)。</p>]]></summary><content type="html"><![CDATA[<p>我是半路出家自学的计算机和编程，一度觉的自己学的还不错。后来看别人写的优秀代码，直呼过瘾，也发现自己的代码并不出色，用某人的话讲就是：too young, too simple,  sometimes naive。一度觉得学得还不错，那是自我安慰，其实只是掌握了一些非常基本的小技巧(little tricks)。</p>
<p>发现自己和专业人士之间存在差距，也意识到这差距是需要付出更多的努力才能追回来的，知耻而后勇。那么究竟又差在了那些方面呢，是数学，是数据结构、算法、计算机体系结构，是这些非常基础的东西。</p>
<p>就自己学习的过程来看，要说操作计算机这事，那是最为简单了，只要不傻，应该不成问题。甚至写代码也是简单的，只要逻辑清楚就好，但是要想认真的了解计算机是如何运行的(How to work?)，并且针对计算机来设计程序，那还是有很多东西要学的，要考虑到性能问题、扩展到问题等等。</p>
<p>就在刚才我看<a href="http://blog.ericsk.org/">ericsk</a>写的<a href="http://blog.ericsk.org/archives/1428">新工作的來由</a>，又顺着看了《程式設計師懺情錄》和《不要學電腦、不要學英文》，其中有一个算法有没有用的例子，就是从1加到100，靠逻辑来写呢：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>result <span style="color:#ff79c6">=</span> <span style="color:#bd93f9">1</span>
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">for</span> i <span style="color:#ff79c6">in</span> <span style="color:#8be9fd;font-style:italic">range</span>(<span style="color:#bd93f9">100</span>):
</span></span><span style="display:flex;"><span>    result <span style="color:#ff79c6">+=</span> <span style="color:#bd93f9">1</span>
</span></span></code></pre></div><p>加算法：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>result <span style="color:#ff79c6">=</span> (<span style="color:#bd93f9">1</span><span style="color:#ff79c6">+</span><span style="color:#bd93f9">100</span>)<span style="color:#ff79c6">*</span><span style="color:#bd93f9">100</span><span style="color:#ff79c6">/</span><span style="color:#bd93f9">2</span>
</span></span></code></pre></div><p>在计算机运行上差距就非常大了，掌握好算法、数据结构这些基础知识是从事软件工作的同学必须要做到的事情。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="selftalk" label="Selftalk" scheme="https://blog.khsing.net/tags/selftalk/" />
    <published>2011-01-25T08:38:56Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[系统管理员和程序员]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2011/01/sysadmin-and-programmer.html" />
    <id>https://blog.khsing.net/2011/01/sysadmin-and-programmer.html</id>
    <updated>2011-01-06T14:23:31Z</updated>
    <summary type="html"><![CDATA[<p><a href="http://everythingsysadmin.com">Everythings Sysadmin</a>的作者<a href="http://everythingsysadmin.com/abouttomchris.html">Tom</a>给一个初级系统管理员回了封<a href="http://everythingsysadmin.com/2011/01/learn-os-internals.html">Learn your operating system’s internals</a>的信，有讲到每次靠重启解决问题和用猜代替知道的时候总是觉得这是对行业和专业的深深打击。然后又讲了系统管理上三个复杂且容易误解的内容：内存子系统，文件子系统和进程。再加一个是安全子系统，然而这三块的内容又是理解安全的必要前提。总之就是一个系统管理员一定要深入操作系统，知道操作系统到底是怎么工作的。Tom还列了几本针对不同操作系统的书出来，</p>]]></summary><content type="html"><![CDATA[<p><a href="http://everythingsysadmin.com">Everythings Sysadmin</a>的作者<a href="http://everythingsysadmin.com/abouttomchris.html">Tom</a>给一个初级系统管理员回了封<a href="http://everythingsysadmin.com/2011/01/learn-os-internals.html">Learn your operating system’s internals</a>的信，有讲到每次靠重启解决问题和用猜代替知道的时候总是觉得这是对行业和专业的深深打击。然后又讲了系统管理上三个复杂且容易误解的内容：内存子系统，文件子系统和进程。再加一个是安全子系统，然而这三块的内容又是理解安全的必要前提。总之就是一个系统管理员一定要深入操作系统，知道操作系统到底是怎么工作的。Tom还列了几本针对不同操作系统的书出来，</p>
<ul>
<li>Windows：《Windows Internals》，中文版：<a href="http://book.douban.com/subject/2031396/">《深入解析Windows操作系统》</a>，Russinovich, Solomon and Ionescu</li>
<li>Linux：《Linux Kernel Internals》，Beck, Bohme, Dziadzka, Kunitz et al</li>
<li>FreeBSD：《The Design and Implementation of the FreeBSD Operating System》，中文版：<a href="http://book.douban.com/subject/1737145/">《FreeBSD操作系统设计与实现》</a>，McKusick and Neville-Neil</li>
<li>The TCP/IP Protocol: 《TCP/IP Illustrated》, W. Richard Stevens，中文版：<a href="http://book.douban.com/subject/1088054/">《TCP/IP详解》</a>，W. Richard Stevens</li>
</ul>
<p>无论你是否使用FreeBSD，都应该读一读FreeBSD的那本。TCP/IP那本就不消说了，现在离了网络的计算机啥也不是！</p>
<p>还有一个Hacker News的贴是问<a href="http://news.ycombinator.com/item?id=2069477">How to step up my coding skills?</a>，提问的人想在半年到一年的时间里成为一个Skilled Programmer，回贴的都说程序员这摊子浑水深了，这点时间是不够的。顶的最多的是说要写代码，也有列了代码量的。不过我觉得Ixiaus列出的建议还是很实用的，比如下面几条：</p>
<ul>
<li>要成为一个程序员，不是码农。/Ctrl+C/V</li>
<li>不要忽视理论、算法、数据结构和数学</li>
<li>学习多个语言，包括面向对象和函数式编程。</li>
</ul>
<p>系统管理员和程序员虽是两个不同的职位，但是学习的内容应该说是差不多的，系统管理员甚至要比之程序员学得更多，了解的更多，按<a href="https://blog.delphij.net">三金</a>的话就是：我们知道的状态比其他人多，修好只不过是把系统调到已知状态。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="sysadmin" label="Sysadmin" scheme="https://blog.khsing.net/tags/sysadmin/" />
    <category term="learn" label="Learn" scheme="https://blog.khsing.net/tags/learn/" />
    <published>2011-01-06T14:23:31Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[2010，逝者如斯夫，不舍昼夜]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2010/12/2010-summary.html" />
    <id>https://blog.khsing.net/2010/12/2010-summary.html</id>
    <updated>2010-12-31T06:58:54Z</updated>
    <summary type="html"><![CDATA[<p>再过几个小时2010年就结束了，其实这一年一年的过就和游戏一样，一年就是一关，只要不是过关途中隔屁，那就会有个过关统计，比如打死乐几个人，吃了几个豆之类的。</p>]]></summary><content type="html"><![CDATA[<p>再过几个小时2010年就结束了，其实这一年一年的过就和游戏一样，一年就是一关，只要不是过关途中隔屁，那就会有个过关统计，比如打死乐几个人，吃了几个豆之类的。</p>
<p>去年的时候我写下了一个<a href="http://blog.khsing.net/2009/12/2009.html">终了2009</a>，记下了2010年要办的事，现在正好回头来看看。</p>
<dl>
<dt>做一个好爸爸。</dt>
<dd>这事怎么说呢，当了爸爸了，但是好不好的还不清楚。得我老婆和孩子做出评价。</dd>
<dt>多学一门外语。</dt>
<dd>这事只能算是开了个头。法语的你好和再见是记住了。</dd>
<dt>把学习的重点放在计算机科学上，不要再搞民科了。要深一些！</dt>
<dd>开始看算法和数据结构，深深的觉的自己的数学太差。</dd>
<dt>广交好友，提升RP。</dt>
<dd>认识了陈总@gokeeper，方叔，P总等人。</dd>
<dt>在人大的学习该有个了结了。</dt>
<dd>确实了结了。不用上课了。</dd>
<dt>多了解一些微观经济学的东西。</dt>
<dd>了解了点皮毛。</dd>
<dt>克服拖沓症。</dt>
<dd>这事还得努力。</dd>
</dl>
<p>还有一些未在计划中的事情，比如换了工作，周围的同事也都很不错。在香河县投钱买了个小房子，希望父母能过来住，这样就离的近了。</p>
<p>2010年过去了，就轮到2011年了，这时间真是如流水一般，虽然我没有在川上，但是还是得说一句：逝者如斯夫。依旧列个单子</p>
<ul>
<li>继续克服拖沓症。</li>
<li>继续学习科学技术，数学是重点，算法和数据结构要有个交待。</li>
<li>学车，在党同意并且运气好的情况下，希望能抽个号，买个车。</li>
<li>继续学习外语，把重点放在英语上，得空的时候顾及一下法语。</li>
<li>带着老婆孩子旅个游，目的地未定。</li>
<li>得空儿回老家办二代身份证和护照，这是淫威啊。</li>
</ul>
<p>就这么多吧，大体的情况是这样。明年年末再来对对帐。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="annual" label="Annual" scheme="https://blog.khsing.net/tags/annual/" />
    <published>2010-12-31T06:58:54Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[微软把H.264带给了Win7上的Firefox]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2010/12/microsoft-bring-h264-to-firefox-in-win7.html" />
    <id>https://blog.khsing.net/2010/12/microsoft-bring-h264-to-firefox-in-win7.html</id>
    <updated>2010-12-16T02:34:26Z</updated>
    <summary type="html"><![CDATA[<p><a href="http://www.osnews.com">OSNews</a>说<a href="http://www.microsoft.com">Microsoft</a>出了一个<a href="http://www.interoperabilitybridges.com/html5-extension-for-wmp-plugin">HTML5 Extension for Windows Media Player Firefox Plug-in</a>，可以让Firefox直接调Windows 7自带的H.264解码器。这也是对Google的WebM解码的一个回应。</p>]]></summary><content type="html"><![CDATA[<p><a href="http://www.osnews.com">OSNews</a>说<a href="http://www.microsoft.com">Microsoft</a>出了一个<a href="http://www.interoperabilitybridges.com/html5-extension-for-wmp-plugin">HTML5 Extension for Windows Media Player Firefox Plug-in</a>，可以让Firefox直接调Windows 7自带的H.264解码器。这也是对Google的WebM解码的一个回应。</p>
<p>就现下来看HTML5的video标签用什么解码标准，还得是看浏览器的市占率，要IE支持WebM怕是难，即便是支持也是Google扔个ActiveX的Plugin出来，那对普通用户来说装机率又是问题了。同样的问题也出现在Mac的Safari上。Firefox用户本就是要安装许多的Plugin，也不在乎多加这一个，而且还乐于安装Plugin吧。</p>
<p>总的来说，当下还是H.264的阵营要胜出几筹。H.264形成了一个产业，特别是移动设备厂商的支持，WebM还没有得到广泛的支持呢，再者WebM的设计和实现都还有很多的问题。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="microsoft" label="Microsoft" scheme="https://blog.khsing.net/tags/microsoft/" />
    <category term="video" label="Video" scheme="https://blog.khsing.net/tags/video/" />
    <category term="webm" label="Webm" scheme="https://blog.khsing.net/tags/webm/" />
    <category term="firefox" label="Firefox" scheme="https://blog.khsing.net/tags/firefox/" />
    <published>2010-12-16T02:34:26Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[假途灭虢]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2010/11/jia-tu-mie-guo.html" />
    <id>https://blog.khsing.net/2010/11/jia-tu-mie-guo.html</id>
    <updated>2010-11-24T07:37:44Z</updated>
    <summary type="html"><![CDATA[<p>最近国内外互联网，都是乱象丛生。国内有3Q大战，国外有Google和Facebook的导出联系人之争以及Kik被黑莓给下架。</p>
<p>嘴炮归嘴炮，都是假隐私的途，灭竞争对手罢了。版权神马的全是打架用的道具。</p>]]></summary><content type="html"><![CDATA[<p>最近国内外互联网，都是乱象丛生。国内有3Q大战，国外有Google和Facebook的导出联系人之争以及Kik被黑莓给下架。</p>
<p>嘴炮归嘴炮，都是假隐私的途，灭竞争对手罢了。版权神马的全是打架用的道具。</p>
<p>一旦上了网，就没有隐私可言。只要放在网络上的东西都是一样，不管是交给了Google还是Facebook。如果有什么东西不想让人知道，就千万别放在网上，如果想放在网上，就自己做加密。</p>
<p>PS: 放在本地电脑的东西也要小心，根据保密级别使用相对的加密措施，陈老师就是教训。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="internet" label="Internet" scheme="https://blog.khsing.net/tags/internet/" />
    <category term="battle" label="Battle" scheme="https://blog.khsing.net/tags/battle/" />
    <published>2010-11-24T07:37:44Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[关于婴儿学步车(About infant walker)]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2010/11/about-infant-walker.html" />
    <id>https://blog.khsing.net/2010/11/about-infant-walker.html</id>
    <updated>2010-11-16T02:56:58Z</updated>
    <summary type="html"><![CDATA[<p>上个星期给儿子买了一个学步车，本想着能让孩子高兴点，岳父带着孩子也能轻松一点。买回来之后丁丁的反应一般，一直适应不了自带的音乐，估计是声音太大了。</p>]]></summary><content type="html"><![CDATA[<p>上个星期给儿子买了一个学步车，本想着能让孩子高兴点，岳父带着孩子也能轻松一点。买回来之后丁丁的反应一般，一直适应不了自带的音乐，估计是声音太大了。</p>
<p>最近几天的使用情况来看，儿子在里面还是玩得不错的，比较喜欢。今天岳父问我学步车会不会对宝宝的小鸡鸡有影响，就在网上看了一些相关的文章。对于小鸡鸡的影响几乎没人提到过，但是其他的问题还真是不少。</p>
<p>首先看到的是关于学步车的功效问题：学步车对于帮助孩子学习走路是没有帮助的，甚至会导致孩子比没有使用学步车的孩子要晚一些学会走路(一些研究表明会推迟2~3个星期)。</p>
<p>再则是学步车会给带来了很多的危险，在国外危险主要带来了：</p>
<ul>
<li>跌伤，主要是从楼梯上跌下。这一点要联系国情，正常情况下老外家里都是有好几层的，我们所谓的别墅大抵也就是人家的House，我们的房子大抵就是人家的Apartment，所以国内跌落楼梯的可能性要小很多。</li>
<li>脚趾的扭伤。</li>
<li>烧伤烫伤，这一点我想也是和国外的情况有关，他们是否还在使用壁炉？当然在国内也要注意一些取暖设备，比如<a href="http://www.360buy.com/product/117811.html">小太阳</a>一类的电暖器，即使是水暖的暖气片也存在同样的问题。</li>
<li>溺水，自家没有游泳池，这个问题可能还是国外居多。</li>
</ul>
<p>要说上面的这些伤害，大部分是因为学步车给孩子过早的带来了很高的机动性（打仗的时候，这个性能很重要），导致了孩子在无防范能力的情况下能接触到更多的危险，实际上这些危险并不是学步车自身存在的问题。</p>
<p>关于学步车会不会导致孩子的身体发育畸形，这个问题我没有看到哪个研究中有证实，国内关于学步车负面的文章里大多都会说导致孩子罗圈腿和扁平足，但是国外的文章我只看到了一篇里有说导致腿比不使用学步车的孩子弯曲。孩子在爬行和学习走路的时候重点是依靠膝盖以上腿部（大腿？）的肌肉锻炼，而使用学步车之后，孩子的锻炼重点就变成了膝盖以下的部位（小腿？）。</p>
<p>鉴于这些原因，我决定孩子的学步车以后能不使用时就尽可能的不使用，偶尔的让孩子玩一玩、开心开心就好了。尤其不能疏忽了孩子的爬行和独立行走的锻炼。俗话有讲：三翻六坐九爬爬。按部就班的来吧。</p>
<p>参考：</p>
<ul>
<li><a href="http://www.keepkidshealthy.com/welcome/safety/baby_walkers.html">Keep Kids Healthly: Baby Walkers</a></li>
<li><a href="http://www.ivillage.com/considering-baby-walker-learn-facts/6-a-127319?p=1">Considering a Baby Walker? Learn the Facts</a></li>
<li><a href="http://pediatrics.about.com/od/agesandstages/i/baby_walkers.htm">About.com: Baby Walkers – Are they safe?</a></li>
<li><a href="http://hubpages.com/hub/Pros-and-Cons-of-Baby-Walkers">Hubpages: Pros and Cons of Baby Walkers :Everything a Mom Want to Know about Baby Walkers</a></li>
<li>PDF:<a href="http://www.americanchiropractic.net/general_%20interest/Baby%20Walkers.pdf">Baby Walkers.pdf</a></li>
<li>PDF:<a href="http://www.accc.gov.au/content/item.phtml?itemId=646278&nodeId=25253b9bc71557a76fa692c355cd141e&fn=Baby%20walker%20safety.pdf">ACCC: Baby walkers</a></li>
<li><a href="https://yourcub.com/baby-walker-safety/">Baby Walker Safety – Tips and Info</a></li>
</ul>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="others" label="Others" scheme="https://blog.khsing.net/categories/others/" />
    <category term="child" label="Child" scheme="https://blog.khsing.net/tags/child/" />
    <category term="raisebaby" label="Raisebaby" scheme="https://blog.khsing.net/tags/raisebaby/" />
    <published>2010-11-16T02:56:58Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[在Nginx中判断请求参数做跳转]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2010/11/nginx-rewrite-depend-on-reques.html" />
    <id>https://blog.khsing.net/2010/11/nginx-rewrite-depend-on-reques.html</id>
    <updated>2010-11-08T13:36:06Z</updated>
    <summary type="html"><![CDATA[<p>今天有个朋友问我nginx下怎么把请求<code>/abc_123.html</code>的参数非<code>tj=1</code>的请求重定向到<code>/abc_123.html</code>，起初我以为<code>rewrite</code>就可以搞定，后来发现不是那么回事。最后的解决办法是：</p>]]></summary><content type="html"><![CDATA[<p>今天有个朋友问我nginx下怎么把请求<code>/abc_123.html</code>的参数非<code>tj=1</code>的请求重定向到<code>/abc_123.html</code>，起初我以为<code>rewrite</code>就可以搞定，后来发现不是那么回事。最后的解决办法是：</p>
<pre tabindex="0"><code class="language-conf" data-lang="conf">if ($args !~ ^($|tj=1$)){
  set $args "";
  rewrite ^/abc_([0-9]+).html /abc_$1.html permanent;
}
</code></pre><p><code>rewrite</code>模块只对URI进行处理，并不包含请求参数。</p>
<p>参考：</p>
<ul>
<li><a href="http://wiki.nginx.org/NginxHttpRewriteModule#rewrite">HttpRewriteModule</a></li>
<li><a href="http://wiki.nginx.org/HttpCoreModule">HttpCoreModule</a></li>
</ul>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="nginx" label="Nginx" scheme="https://blog.khsing.net/tags/nginx/" />
    <category term="rewrite" label="Rewrite" scheme="https://blog.khsing.net/tags/rewrite/" />
    <published>2010-11-08T13:36:06Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[用uwsgi和nginx来跑moinmoin]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2010/10/run-moinmoin-under-uwsgi-and-nginx.html" />
    <id>https://blog.khsing.net/2010/10/run-moinmoin-under-uwsgi-and-nginx.html</id>
    <updated>2010-10-26T10:48:28Z</updated>
    <summary type="html"><![CDATA[<p>抽了点时间把Woodpecker的wiki放到了<a href="http://projects.unbit.it/uwsgi/">uWSGI</a>和<a href="http://www.nginx.org">Nginx</a>下来了，中间有一个小地方折腾了我好几趟，所以记一下。安装之类的就不说了。</p>
<p>在Nginx里配置了<code>uwsgi_pass</code>之后，访问wiki一直会多带过去/moin这个url_prefix，所以默认的设置对于wiki放在根下的人来说可能什么都不用动。我以为是uwsgi处理的时候是把/moin也当成一个页来处理的。所以就想着把/moin从<code>$request_uri</code>里直接拿掉，把后面的部分传给uwsgi。</p>]]></summary><content type="html"><![CDATA[<p>抽了点时间把Woodpecker的wiki放到了<a href="http://projects.unbit.it/uwsgi/">uWSGI</a>和<a href="http://www.nginx.org">Nginx</a>下来了，中间有一个小地方折腾了我好几趟，所以记一下。安装之类的就不说了。</p>
<p>在Nginx里配置了<code>uwsgi_pass</code>之后，访问wiki一直会多带过去/moin这个url_prefix，所以默认的设置对于wiki放在根下的人来说可能什么都不用动。我以为是uwsgi处理的时候是把/moin也当成一个页来处理的。所以就想着把/moin从<code>$request_uri</code>里直接拿掉，把后面的部分传给uwsgi。</p>
<pre tabindex="0"><code class="language-conf" data-lang="conf">if ( $request_uri ~ ^/moin(.*)?) {
set $wiki_uri $1;
}
uwsgi_param REQUEST_URI $wiki_uri;
</code></pre><p>这条路不通啊。中间还试过其他的参数，跳开不说了，最后在uWSGI的wiki：<a href="http://projects.unbit.it/uwsgi/wiki/RunOnNginx">RunOnNginx</a>里有一句关键的话</p>
<blockquote>
<p>The WSGI standard says that the SCRIPT_NAME is the var used to select a specific application. The “uwsgi_modifier1 30” option set the UWSGI_MODIFIER_MANAGE_PATH_INFO. This per-request modifier instructs the uWSGI server to rewrite the PATH_INFO value removing the SCRIPT_NAME from it.</p>
</blockquote>
<p>所以直接在Nginx的conf里这样写</p>
<pre tabindex="0"><code class="language-conf" data-lang="conf">uwsgi_param SCRIPT_NAME /moin;
uwsgi_pass unix:///tmp/woodpecker.moin.sock;
uwsgi_modifier1 30;
</code></pre><p>就可以了。这三句应该和Apache里的 <code>WSGIScriptAlias /moin/ /path/to/moin.wsgi</code>是一致的。</p>
<p>uWSGI的性能看起来不错，不过我还没有做什么测试，也没有数据佐证，凭感觉说一下而已。Nginx的文档里什么也没留下来，这一点很不好。不过Nginx的文档一直很烂。</p>
<p>Updating: 抽出了点时间看了一下，大概比apache+mod_wsgi快了1.5倍以上。下面是Moinmoin的timer数据。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-txt" data-lang="txt"><span style="display:flex;"><span>item    apache+wsgi nginx+uwsgi
</span></span><span style="display:flex;"><span>Page.execute    1.933   0.807
</span></span><span style="display:flex;"><span>Page.execute|1  1.808   0.732
</span></span><span style="display:flex;"><span>Page.execute|2  1.047   0.446
</span></span><span style="display:flex;"><span>getPageList     0.251   0.014
</span></span><span style="display:flex;"><span>init    0.048   0.006
</span></span><span style="display:flex;"><span>load_multi_cfg  0.031   0
</span></span><span style="display:flex;"><span>run     2.481   0.981
</span></span><span style="display:flex;"><span>send_page   2.462   0.972
</span></span><span style="display:flex;"><span>send_page_content   1.938   0.813
</span></span><span style="display:flex;"><span>send_page_content|1     1.834   0.762
</span></span><span style="display:flex;"><span>send_page_content|2     1.096   0.501
</span></span><span style="display:flex;"><span>send_page|1     1.847   0.773
</span></span><span style="display:flex;"><span>send_page|2     1.119   0.522
</span></span><span style="display:flex;"><span>total   2.529   0.988
</span></span></code></pre></div>]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="woodpecker" label="Woodpecker" scheme="https://blog.khsing.net/tags/woodpecker/" />
    <category term="uwsgi" label="Uwsgi" scheme="https://blog.khsing.net/tags/uwsgi/" />
    <category term="python" label="Python" scheme="https://blog.khsing.net/tags/python/" />
    <category term="nginx" label="Nginx" scheme="https://blog.khsing.net/tags/nginx/" />
    <published>2010-10-26T10:48:28Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[设置自己的iPhone]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2010/10/to-make-a-iphone-as-mine.html" />
    <id>https://blog.khsing.net/2010/10/to-make-a-iphone-as-mine.html</id>
    <updated>2010-10-22T09:08:39Z</updated>
    <summary type="html"><![CDATA[<p>基本上是标准化作业。</p>
<ol>
<li>Use Umbrella backup SHSH.</li>
<li>Jailbreak, battery percentage enable, without baseband upgrade. install cydia.</li>
<li>Add gfwinterceptor, hakulo.us, ultrasn0w,weiphone repo source.</li>
</ol>
<ul>
<li>
<p><a href="http://cydia.ifuckgfw.com">http://cydia.ifuckgfw.com</a></p>
</li>
<li>
<p><a href="http://repo666.ultrasn0w.com">http://repo666.ultrasn0w.com</a></p>
</li>
<li>
<p><a href="http://cydia.hackulo.us">http://cydia.hackulo.us</a></p>
</li>
<li>
<p><a href="http://cydia.myrepospace.com/wiim">http://cydia.myrepospace.com/wiim</a></p>
</li>
<li>
<p><a href="http://apt.mirrordev.com">http://apt.mirrordev.com</a></p>
</li>
<li>
<p><del><a href="http://apt.weiphone.com/cydia/">http://apt.weiphone.com/cydia/</a></del></p>
</li>
<li>
<p>Install ultrasn0w, appsync, OpenSSH, GoogleMap Fixer via Cydia.</p>
</li>
<li>
<p>Change root’s password.(alpine)
Google Map Fix还要设置一下，滤掉Map程序，因为maps没有偏移。</p>]]></summary><content type="html"><![CDATA[<p>基本上是标准化作业。</p>
<ol>
<li>Use Umbrella backup SHSH.</li>
<li>Jailbreak, battery percentage enable, without baseband upgrade. install cydia.</li>
<li>Add gfwinterceptor, hakulo.us, ultrasn0w,weiphone repo source.</li>
</ol>
<ul>
<li>
<p><a href="http://cydia.ifuckgfw.com">http://cydia.ifuckgfw.com</a></p>
</li>
<li>
<p><a href="http://repo666.ultrasn0w.com">http://repo666.ultrasn0w.com</a></p>
</li>
<li>
<p><a href="http://cydia.hackulo.us">http://cydia.hackulo.us</a></p>
</li>
<li>
<p><a href="http://cydia.myrepospace.com/wiim">http://cydia.myrepospace.com/wiim</a></p>
</li>
<li>
<p><a href="http://apt.mirrordev.com">http://apt.mirrordev.com</a></p>
</li>
<li>
<p><del><a href="http://apt.weiphone.com/cydia/">http://apt.weiphone.com/cydia/</a></del></p>
</li>
<li>
<p>Install ultrasn0w, appsync, OpenSSH, GoogleMap Fixer via Cydia.</p>
</li>
<li>
<p>Change root’s password.(alpine)
Google Map Fix还要设置一下，滤掉Map程序，因为maps没有偏移。</p>
</li>
</ul>
<p>update: weiphone的源不用了，维护的太差了。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="iphone" label="Iphone" scheme="https://blog.khsing.net/tags/iphone/" />
    <published>2010-10-22T09:08:39Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[国家地理广告里的一句话]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2010/10/a-quote-from-national-geograph.html" />
    <id>https://blog.khsing.net/2010/10/a-quote-from-national-geograph.html</id>
    <updated>2010-10-21T09:09:07Z</updated>
    <summary type="html"><![CDATA[<blockquote>
<p>If you are, you breath. If you breath, you talk. If you talk, you ask. If you ask, you think. If you think, you search. If you search, you experience. If you experience, you learn. If you learn, you grow. If you grow, you wish. If you wish, you find. If you find, you doubt. If you doubt, you question. If you question, you understand. If you understand, you know. If you know, you want to know more And if you want to know more, you are alive.</p>]]></summary><content type="html"><![CDATA[<blockquote>
<p>If you are, you breath. If you breath, you talk. If you talk, you ask. If you ask, you think. If you think, you search. If you search, you experience. If you experience, you learn. If you learn, you grow. If you grow, you wish. If you wish, you find. If you find, you doubt. If you doubt, you question. If you question, you understand. If you understand, you know. If you know, you want to know more And if you want to know more, you are alive.</p>
</blockquote>
<p>你活着，你就会呼吸。你呼吸，你就会交谈。你交谈，你就会提问。你提问，你就会思考。你思考，你就会探索。你探索，你就会体验。你体验，你就会学习。你学习，你就会成长。你成长，你就会期许。你期许，你就会寻找。你寻找，你就会质疑。你质疑，你就会提问。你提问，你就会理解。你理解，你就会知道。你知道，你就会想知道更多。你想知道更多，你就活着。</p>
<p>YouTube: <a href="http://www.youtube.com/watch?v=4qwA5fUh3hA">National Geographic Channel – IF. Live curious.</a></p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="quote" label="Quote" scheme="https://blog.khsing.net/tags/quote/" />
    <published>2010-10-21T09:09:07Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[再说说打孩子]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2010/10/post-13-2.html" />
    <id>https://blog.khsing.net/2010/10/post-13-2.html</id>
    <updated>2010-10-18T04:48:22Z</updated>
    <summary type="html"><![CDATA[<p>周末从图书馆回来在地铁上遇到了一对夫妻带着一个孩子，四五岁的样子，额头上有三条新伤，刚结痂。那个孩子很不消停，对他爸妈大声吼叫，甚至对他爸爸挥拳、啐唾沫。他爸爸假装一副生气的样子，不过没唬住。说实话，我当时差一点没忍住就要动手了。</p>]]></summary><content type="html"><![CDATA[<p>周末从图书馆回来在地铁上遇到了一对夫妻带着一个孩子，四五岁的样子，额头上有三条新伤，刚结痂。那个孩子很不消停，对他爸妈大声吼叫，甚至对他爸爸挥拳、啐唾沫。他爸爸假装一副生气的样子，不过没唬住。说实话，我当时差一点没忍住就要动手了。</p>
<p>这个事情让我想起我的那个<a href="http://blog.khsing.net/2010/07/post-12.html">不打孩子的誓言</a>，我想如果我的孩子成了这样，我一定得让他知道什么是王法。当然这并不是说我赞成打孩子，而是这样的孩子已经失去理智了，必须让他有所畏忌。</p>
<p>反之再想，孩子也不是一朝一夕变成这样的，他变成这样必然是受了某种影响的，这种影响可能大多来自于父母。</p>
<p>养不教，父之过。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="others" label="Others" scheme="https://blog.khsing.net/categories/others/" />
    <category term="child" label="Child" scheme="https://blog.khsing.net/tags/child/" />
    <category term="raisebaby" label="Raisebaby" scheme="https://blog.khsing.net/tags/raisebaby/" />
    <published>2010-10-18T04:48:22Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[planet的https的bug]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2010/10/planet-https-bug.html" />
    <id>https://blog.khsing.net/2010/10/planet-https-bug.html</id>
    <updated>2010-10-13T07:55:42Z</updated>
    <summary type="html"><![CDATA[<p>前几天给<a href="http://woodpecker.org.cn">啄木鸟</a>设置planet，发现拿不到https站下的东东。调了一圈发现是这个问题</p>
<pre tabindex="0"><code class="language-log" data-lang="log">TypeError: ssl() argument 1 must be _socket.socket, not _socketobject
</code></pre><p>Google了一圈是<code>timeoutsocket.py</code>的问题，就给删除了，但是依旧不行。最后看到了redhat的bugzilla里有报<a href="https://bugzilla.redhat.com/show_bug.cgi?id=498456">这个bug</a>，顺藤摸瓜找到了一个可用的<a href="http://www.theospears.com/blog/2008/12/25/planet-and-https-feeds/">patch</a>。<a href="http://www.planetplanet.org/">planet</a>实在是年久失修了。</p>]]></summary><content type="html"><![CDATA[<p>前几天给<a href="http://woodpecker.org.cn">啄木鸟</a>设置planet，发现拿不到https站下的东东。调了一圈发现是这个问题</p>
<pre tabindex="0"><code class="language-log" data-lang="log">TypeError: ssl() argument 1 must be _socket.socket, not _socketobject
</code></pre><p>Google了一圈是<code>timeoutsocket.py</code>的问题，就给删除了，但是依旧不行。最后看到了redhat的bugzilla里有报<a href="https://bugzilla.redhat.com/show_bug.cgi?id=498456">这个bug</a>，顺藤摸瓜找到了一个可用的<a href="http://www.theospears.com/blog/2008/12/25/planet-and-https-feeds/">patch</a>。<a href="http://www.planetplanet.org/">planet</a>实在是年久失修了。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="system" label="System" scheme="https://blog.khsing.net/categories/system/" />
    <category term="woodpecker" label="Woodpecker" scheme="https://blog.khsing.net/tags/woodpecker/" />
    <category term="planet" label="Planet" scheme="https://blog.khsing.net/tags/planet/" />
    <published>2010-10-13T07:55:42Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[作弊条：tcpdump的几个flag]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2010/10/tcpdump-and-flag.html" />
    <id>https://blog.khsing.net/2010/10/tcpdump-and-flag.html</id>
    <updated>2010-10-13T04:22:14Z</updated>
    <summary type="html"><![CDATA[<ul>
<li>SYN: <code>'tcp[13] & 2 != 0'</code></li>
<li>ACK: <code>'tcp[13] & 16 !=0'</code></li>
<li>URG: <code>'tcp[13] & 32 !=0'</code></li>
<li>PSH: <code>'tcp[13] & 8 !=0'</code></li>
<li>RST: <code>'tcp[13] & 4 !=0'</code></li>
<li>FIN: <code>'tcp[13] & 1 !=0'</code></li>
<li>SYN-ACK: <code>'tcp[13]  = 18'</code></li>
</ul>
<p>Ref: <a href="http://danielmiessler.com/study/tcpdump/">A tcpdump Tutorial and Primer</a></p>]]></summary><content type="html"><![CDATA[<ul>
<li>SYN: <code>'tcp[13] & 2 != 0'</code></li>
<li>ACK: <code>'tcp[13] & 16 !=0'</code></li>
<li>URG: <code>'tcp[13] & 32 !=0'</code></li>
<li>PSH: <code>'tcp[13] & 8 !=0'</code></li>
<li>RST: <code>'tcp[13] & 4 !=0'</code></li>
<li>FIN: <code>'tcp[13] & 1 !=0'</code></li>
<li>SYN-ACK: <code>'tcp[13]  = 18'</code></li>
</ul>
<p>Ref: <a href="http://danielmiessler.com/study/tcpdump/">A tcpdump Tutorial and Primer</a></p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="tcpdump" label="Tcpdump" scheme="https://blog.khsing.net/tags/tcpdump/" />
    <category term="network" label="Network" scheme="https://blog.khsing.net/tags/network/" />
    <published>2010-10-13T04:22:14Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[TG制下的SB银行SB身份证制度及SB户藉制度]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2010/08/tg-and-3sb.html" />
    <id>https://blog.khsing.net/2010/08/tg-and-3sb.html</id>
    <updated>2010-08-16T08:03:13Z</updated>
    <summary type="html"><![CDATA[<p>我有一张建行的卡找不到了，中午去建行挂个失。原本以为带上身份证就可以了，没想到啊，没想到，竟然是被银行这帮孙子给气了个半死。没挂成失的原因倒也简单：你的身份证在公安部的系统里没有照片，必须提供额外的带照片印有身份证号的证件来做辅助证明。</p>]]></summary><content type="html"><![CDATA[<p>我有一张建行的卡找不到了，中午去建行挂个失。原本以为带上身份证就可以了，没想到啊，没想到，竟然是被银行这帮孙子给气了个半死。没挂成失的原因倒也简单：你的身份证在公安部的系统里没有照片，必须提供额外的带照片印有身份证号的证件来做辅助证明。</p>
<p>我的身份证是02年来北京前办的，有效期十年。在身边的人一个个都换了二代身份证的时候我还一直在使用一代身份证，原因是身份证必须回原藉公安部门办理。可惜我老家在偏远西北，这些年也没几次回家的机会，有回家的机会的时候也没时间去办。抽出时间的时候吧，人家公安部门在放假。</p>
<p>就今天这个问题，有以下几点我是不清楚啊。</p>
<ul>
<li>本人所持证件是否为中华人民共和国的有效身份证件？是。</li>
<li>本人所持证件是否为假冒证件？不是</li>
<li>本人所持证件是否过期？没有</li>
<li>本人所持证件能否证明本人身份？厄，对不起，根据目前规定，必须在公安部的系统内有照片才可以。</li>
</ul>
<p>公安部系统里没有我的照片，你应该找公安部啊。再说了，公安部门也没向我要照片啊。</p>
<p>还有这个狗逼人民银行，出的这SB规定。你们丫的说改系统就改系统，说让我等屁民回老家办个身份证就办个身份证，说让回老家开个证明就开证明。你们这群大SB，你们知道吗，事情都是被你们这帮狗杂碎给搞瞎了。</p>
<p>每年就因为这极其落后的玩意，误了多少事，你们丫的知道吗？老子在这片被称之为祖国的土地上办个孩子的出生证要回原藉，办个护照要回原藉，换个身份证也要回原藉。你们这些高高在上的狗杂碎们，你们一定会被写在历史的耻辱柱上的。你们反人类进步的做法是会有报应的。</p>
<p>Update: 今天我带医疗蓝本去了，丫们还问我要额外的证件，说是有没有医保卡或者驾照之类的。操了，其他证件一概没有，你们丫的昨天说带医疗蓝本可以的。然后丫们问我谁说的，操，你们的营业员我怎么记得住。男的女的？女的。然后丫给我支到1号台去了，坐了会儿，又给我支回4号台了，操。最终是办理完了。WTF。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="bank" label="Bank" scheme="https://blog.khsing.net/tags/bank/" />
    <category term="china" label="China" scheme="https://blog.khsing.net/tags/china/" />
    <published>2010-08-16T08:03:13Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Use CUPS on FreeBSD]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2010/08/use-cups-on-freebsd.html" />
    <id>https://blog.khsing.net/2010/08/use-cups-on-freebsd.html</id>
    <updated>2010-08-13T03:26:45Z</updated>
    <summary type="html"><![CDATA[<p>最近把工作机从Mac换到了FreeBSD之后，有许多在Mac OS X和Windows这些成熟桌面操作系统不需要关心的问题，都需要手工去解决，在一些人看来这就是折腾，其实在我看来这也确实是折腾。不过那又怎样，我们就是不折腾不舒服司机( cc <a href="http://twitter.com/delphij">@delphij</a> <a href="http://twitter.com/quakelee">@quakelee</a>)。</p>]]></summary><content type="html"><![CDATA[<p>最近把工作机从Mac换到了FreeBSD之后，有许多在Mac OS X和Windows这些成熟桌面操作系统不需要关心的问题，都需要手工去解决，在一些人看来这就是折腾，其实在我看来这也确实是折腾。不过那又怎样，我们就是不折腾不舒服司机( cc <a href="http://twitter.com/delphij">@delphij</a> <a href="http://twitter.com/quakelee">@quakelee</a>)。</p>
<p>先安装<code>printer/cups</code>，然后在<code>/etc/devfs.rules</code>里写上如下：</p>
<pre tabindex="0"><code class="language-conf" data-lang="conf">[system=10]
add path 'unlpt*' mode 0660 group cups
add path 'ulpt*' mode 0660 group cups
add path 'lpt*' mode 0660 group cups
</code></pre><p>自然的还要在<code>/etc/rc.conf</code>或者<code>/etc/rc.conf.local</code>里写上<code>cupsd_enable="YES"</code></p>
<p>在这些做完了之后呢还要在<code>/etc/make.conf</code>里写上如下</p>
<pre tabindex="0"><code class="language-conf" data-lang="conf">WITH_CUPS=YES
CUPS_OVERWRITE_BASE=YES
WITHOUT_LPR=YES
</code></pre><p>这样一来呢，Ports里有支持CUPS的软件在安装的时候就可以自动挂上CUPS的支持了。然后要做的事情就是buildworld了。这样就会把lpr替成cups的lpr。</p>
<p>说到这里我就顺嘴带几句别的。公司使用的是Fuji Xerxo DocuCentre-II 3005打印机，前几天我在Mac上设置的时候没有发现相关的驱动支持，我就去Fuji Xerxo的网站上下载了一个<a href="http://onlinesupport.fujixerox.com/processDriverForm.do;jsessionid=CA076AD80472D2D08EFB59887FBFB03A?ctry_code=AU&lang_code=en&d_lang=en&corp_pid=DCII3005&rts=1&model=DocuCentre-II+3005&oslist=Macintosh+OS+X&lang_list=en&selected=Go">Mac OS X 10.5 / 10.6 Driver</a>，杯具就是从这里开始的。那天下午我试这个驱动试了多次，浪费A4纸4张，全是乱码。后来问了个使Mac的同事，告诉用Generic PCL Laser Printer驱动就可以了，操勒，不但能正常打印，还可以双面。Fuji Xerxo的家伙们，即然你们做出了这么牛B，这么标准的产品，那还提供那个废柴驱动干啥，WTF。</p>
<p>Link: <a href="http://www.freebsd.org/doc/en/articles/cups/index.html">CUPS on FreeBSD</a></p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="system" label="System" scheme="https://blog.khsing.net/categories/system/" />
    <category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="freebsd" label="Freebsd" scheme="https://blog.khsing.net/tags/freebsd/" />
    <category term="osx" label="Osx" scheme="https://blog.khsing.net/tags/osx/" />
    <category term="printer" label="Printer" scheme="https://blog.khsing.net/tags/printer/" />
    <published>2010-08-13T03:26:45Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Set nameserver in dhclient.conf]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2010/08/set-nameserver-in-dhclientconf.html" />
    <id>https://blog.khsing.net/2010/08/set-nameserver-in-dhclientconf.html</id>
    <updated>2010-08-13T03:15:15Z</updated>
    <summary type="html"><![CDATA[<p>在FreeBSD上使用OpenVPN的时候不能自动更改DNS，手动更新<code>resolv.conf</code>之后呢，等到DHCP renew地址的时候就再次被改回去了。</p>]]></summary><content type="html"><![CDATA[<p>在FreeBSD上使用OpenVPN的时候不能自动更改DNS，手动更新<code>resolv.conf</code>之后呢，等到DHCP renew地址的时候就再次被改回去了。</p>
<p>解决之道是在<code>/etc/dhclient.conf</code>里写下如下即可保持自行设置的DNS在第一个位置上。</p>
<pre tabindex="0"><code class="language-conf" data-lang="conf">prepend domain-name-servers 8.8.8.8;
</code></pre><p>还有更多关于dhclient.conf的，请参看man手册。</p>
<p>BTW: 自行设定DNS之后就要把内部域名的解析换成<code>/etc/hosts</code>。当然也可以在本地搭一个BIND，把内部域名给forward到内部DNS去（此王道也！）。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="system" label="System" scheme="https://blog.khsing.net/categories/system/" />
    <category term="openvpn" label="Openvpn" scheme="https://blog.khsing.net/tags/openvpn/" />
    <category term="freebsd" label="Freebsd" scheme="https://blog.khsing.net/tags/freebsd/" />
    <category term="dns" label="Dns" scheme="https://blog.khsing.net/tags/dns/" />
    <published>2010-08-13T03:15:15Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[调教fonts.conf的过程]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2010/08/tunning-fontsconf.html" />
    <id>https://blog.khsing.net/2010/08/tunning-fontsconf.html</id>
    <updated>2010-08-11T09:28:03Z</updated>
    <summary type="html"><![CDATA[<p>继续说字体渲染的事。在Unix下使用Xorg和FreeType时，可能要花一些时间来调教一下，方能得到一个可以接受的结果。这也是使用Windows和Mac OS X的用户几乎不用关心的事情。</p>]]></summary><content type="html"><![CDATA[<p>继续说字体渲染的事。在Unix下使用Xorg和FreeType时，可能要花一些时间来调教一下，方能得到一个可以接受的结果。这也是使用Windows和Mac OS X的用户几乎不用关心的事情。</p>
<p>在fonts.conf的调教过程中一定要清楚的知道自己想要的效果，并且对字体渲染过程要有一个简单的了解，否则还是照着别人的抄一份吧。</p>
<p>对于中文用户来说首要的问题应该是字体的fallback，所以应该安装一些中文的字体，比如<code>x11-fonts/wqy</code>。</p>
<p>然后再来看这些字体的优先级别。默认到底是宋体、黑体还是圆体都想根据自己的喜好来设定一下。我这里就选了文泉驿的米黑。不过这里应该多说一句的是要区别Sans, Serif和Monospace这几个字体类型。</p>
<p>然后再来看Hinting的设定，默认使用的HintStyle是什么。</p>
<ul>
<li>hintnone: 就是不改变字体设计的做法，但是对有些TTF字体要注意一下，应该打开一些TTF的auto-hinting设定。</li>
<li>hintslight: 一般而言对字体的hinting是基于x轴和y轴的，但是slight设定只会对y轴做hinting。</li>
<li>hintmedium和hintfull是更加激进的两种设定，对于屏幕文字的可辩识程度是增加了。但是我并不喜欢这个设定，也许Windows的用户会喜欢这两种设定。要特别注意的是微软出品的一些TTF字体是很依赖hinting技术的，所以对微软出品的字体最好是设置为hintfull。</li>
</ul>
<p>这个设置就涉及到Joel谈到的Mac风格和Windows风格的问题，习惯Windows的用户大可设置为medium和full，而Mac用户应该会喜欢none或slight。</p>
<p>调教的过程会设置Sub-pixel Rendering，在fonts.conf里就是rgba的设置。~~某些字体应该是不适合开Sub-pixel的，比如文泉驿的米黑就属于这一类。这样的字型要是开了Sub-pixel，看起来就像是加了个有颜色的边，而且不是每个边都有。所以对于这样的字体开GrayScale Anti-aliasing就可以了。~~GrayScale和Sub-pixel Rendering要干的事情基本一样，<del>就我个人而言我比较喜欢用Anti-Aliasing。</del>，但是效果是不同的，我在Mac OS X上做了测试，在开启Sub-Pixel Rendering的情况下字体明显要比GrayScale的清晰，但是我在FreeBSD下的设置很是不尽人意，字体边上的颜色太明显了，反而有一种炫目的感觉，这可能就是之前我不喜欢Sub-Pixel Rendering的原因吧。总之在对比之后，只能退而求其次，只使用GrayScale了。</p>
<p>如此看来，调教fonts.conf的过程是比较麻烦的，因为对不同的字体要进行不同的处理。所以呢，我偷懒从别人那个抄了一个，再改一改就开始用了，现在基本满意。另外呢，听说Apple关于字体渲染的算法专利已经过期了，并且之前的那个FreeType分支也合并了，Unix屁民们使用上Mac级别的字体渲染，也为期不远了。</p>
<p>update: 和@jjgod聊天之后，我在Mac下对比了下GrayScale和Sub-Pixel Rendering的差别，在LCD下应该开启Sub-Pixel Rendering，但目前我的设定似乎没有达到预期的效果，所以先使GrayScale，等看完了那些鬼佬们写的文案再来调整吧，理论知识的不足，就是盲目啊。</p>
<p>Links:</p>
<ul>
<li><a href="http://pastebin.com/yCGRXw5F">我抄的fonts.conf</a></li>
<li>Joel Spolsky: <a href="http://www.joelonsoftware.com/items/2007/06/12.html">Font smoothing, anti-aliasing, and sub-pixel rendering</a></li>
<li>Github:Gist <a href="http://gist.github.com/518719">我的fonts.conf</a></li>
</ul>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="fonts" label="Fonts" scheme="https://blog.khsing.net/tags/fonts/" />
    <category term="display" label="Display" scheme="https://blog.khsing.net/tags/display/" />
    <published>2010-08-11T09:28:03Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[关于字体的显示技术笔记]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2010/08/font-display-tech.html" />
    <id>https://blog.khsing.net/2010/08/font-display-tech.html</id>
    <updated>2010-08-10T15:43:23Z</updated>
    <summary type="html"><![CDATA[<p>今天整了一下公司的工作电脑，配置桌面的时候看字体的显示怎么也没有Mac OS X下的那种感觉。调了半天也不尽人意，后来<a href="http://twitter.com/jjgod">@jjgod</a>同学给了个关于字体显示的论文，做点笔记，还请知晓的相关技术的朋友指正。</p>
<p>在显示器上字体大概有三种技术。</p>]]></summary><content type="html"><![CDATA[<p>今天整了一下公司的工作电脑，配置桌面的时候看字体的显示怎么也没有Mac OS X下的那种感觉。调了半天也不尽人意，后来<a href="http://twitter.com/jjgod">@jjgod</a>同学给了个关于字体显示的论文，做点笔记，还请知晓的相关技术的朋友指正。</p>
<p>在显示器上字体大概有三种技术。</p>
<ul>
<li>
<p>Hinting
是把字体的形状发生一变化，以适应计算机显示器上像素点，以此呢来提高在低分辩率的可识别能力。</p>
</li>
<li>
<p>GrayScale Anti-aliasing
这是利用显示器的灰度明暗产生的字体显示技术，是在字体形状的边缘产生一些有明有暗像素点，骗过人眼使得字体的形状看起和设计的差不多。</p>
</li>
<li>
<p>Sub-pixel Rendering Anti-aliasing
这是要有显示器支持的一种技术，基本上是应用在LCD上的。原理是利用LCD显示器的每个像素点都有rgb三个点混合而成，控制rgb这三个点的亮度和色品以达到一种类似GrayScale Anti-aliasing的效果，实际上是从效果上提高了水平分辩率。</p>
</li>
</ul>
<p>就Hinting技术在FreeType的配置来说，hintstyle有四种：none,slight,medium和full，slight可能是使用比较淘人喜欢的一个值。</p>
<p>update：和@jjgod聊过之后，纠正了我对AntiAliasing概念的混淆，关于AntiAliasing的名词有GrayScale, Sub-pixel Rendering和Sub-pixel Positioning，这几个概念是不同的。</p>
<p>参考：</p>
<ul>
<li><a href="http://freddie.witherden.org/pages/font-rasterisation/">http://freddie.witherden.org/pages/font-rasterisation/</a></li>
<li><a href="http://www.grc.com/ctwhat.htm">How Sub-Pixel Font Rendering Works</a></li>
</ul>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="system" label="System" scheme="https://blog.khsing.net/categories/system/" />
    <category term="font" label="Font" scheme="https://blog.khsing.net/tags/font/" />
    <category term="display" label="Display" scheme="https://blog.khsing.net/tags/display/" />
    <published>2010-08-10T15:43:23Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[网易的镜像添加了FreeBSD的镜像]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2010/08/freebsd-mirror-in-163.html" />
    <id>https://blog.khsing.net/2010/08/freebsd-mirror-in-163.html</id>
    <updated>2010-08-09T16:35:59Z</updated>
    <summary type="html"><![CDATA[<p>去年3月的时候，可能<a href="http://mirror.163.com">网易镜像</a>刚刚发布，我给<a href="mailto:mirror@service.netease.com">mirror@service.netease.com</a>写了封信，希望他们能加上FreeBSD的portsnap镜像和mastersite的镜像。今天我收到了他们的回信说是已经添加了ports和package的镜像。</p>
<p>其实我并不是说网易过了一年多才回这封信，而是觉的虽然时间久了一点，但网易的这种贡献和投入依然是值得赞赏的。</p>
<p>Link: <a href="http://mirrors.163.com/FreeBSD/">网易的FreeBSD镜像</a>，另附上<code>/etc/make.conf</code>的设置。</p>
<pre tabindex="0"><code>MASTER_SITE_OVERRIDE?=http://mirrors.163.com/FreeBSD/distfiles/${DIST_SUBDIR}/
</code></pre>]]></summary><content type="html"><![CDATA[<p>去年3月的时候，可能<a href="http://mirror.163.com">网易镜像</a>刚刚发布，我给<a href="mailto:mirror@service.netease.com">mirror@service.netease.com</a>写了封信，希望他们能加上FreeBSD的portsnap镜像和mastersite的镜像。今天我收到了他们的回信说是已经添加了ports和package的镜像。</p>
<p>其实我并不是说网易过了一年多才回这封信，而是觉的虽然时间久了一点，但网易的这种贡献和投入依然是值得赞赏的。</p>
<p>Link: <a href="http://mirrors.163.com/FreeBSD/">网易的FreeBSD镜像</a>，另附上<code>/etc/make.conf</code>的设置。</p>
<pre tabindex="0"><code>MASTER_SITE_OVERRIDE?=http://mirrors.163.com/FreeBSD/distfiles/${DIST_SUBDIR}/
</code></pre>]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="mirror" label="Mirror" scheme="https://blog.khsing.net/tags/mirror/" />
    <category term="freebsd" label="Freebsd" scheme="https://blog.khsing.net/tags/freebsd/" />
    <published>2010-08-09T16:35:59Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Woodpecker.org.cn访问量的统计]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2010/07/statistics-from-woodpeckerorgc.html" />
    <id>https://blog.khsing.net/2010/07/statistics-from-woodpeckerorgc.html</id>
    <updated>2010-07-30T04:07:27Z</updated>
    <summary type="html"><![CDATA[<p>刚才看了下<a href="http://wiki.woodpecker.org.cn">Woodpecker.org.cn</a>的Google统计，有一些数据可以拿出来看看。</p>
<ul>
<li>日均访问量(Vistors/Day)：873.71 Visits / Day</li>
<li>日均PV：3000</li>
<li>平均停留时间：00:03:42</li>
</ul>
<p>浏览器和操作系统的比例</p>
<ul>
<li>
<p>浏览器的前三是：
1. Internet Explorer(33.95%)
1. 8.0(45.98%)
2. 6.0(34.74%)
3. 7.0(19.25%)</p>]]></summary><content type="html"><![CDATA[<p>刚才看了下<a href="http://wiki.woodpecker.org.cn">Woodpecker.org.cn</a>的Google统计，有一些数据可以拿出来看看。</p>
<ul>
<li>日均访问量(Vistors/Day)：873.71 Visits / Day</li>
<li>日均PV：3000</li>
<li>平均停留时间：00:03:42</li>
</ul>
<p>浏览器和操作系统的比例</p>
<ul>
<li>
<p>浏览器的前三是：
1. Internet Explorer(33.95%)
1. 8.0(45.98%)
2. 6.0(34.74%)
3. 7.0(19.25%)</p>
<pre><code>2. Firefox(33.68%)
3. Chrome(25.61%)
</code></pre>
</li>
<li>
<p>操作系统的排名前三是
1. Windows(82.18%)
1. XP(69.32%)
2. 7(24.08%)
3. Server 2003(3.27%)</p>
<pre><code>2. Linux(14.13%)
3. Macintosh(3.22%)
1. Intel 10.6(87.83%)
2. Intel 10.5(10.79%)
</code></pre>
</li>
</ul>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="others" label="Others" scheme="https://blog.khsing.net/categories/others/" />
    <category term="woodpecker" label="Woodpecker" scheme="https://blog.khsing.net/tags/woodpecker/" />
    <category term="google" label="Google" scheme="https://blog.khsing.net/tags/google/" />
    <category term="analytics" label="Analytics" scheme="https://blog.khsing.net/tags/analytics/" />
    <published>2010-07-30T04:07:27Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[bash里关于string相关的处理]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2010/07/bashstring.html" />
    <id>https://blog.khsing.net/2010/07/bashstring.html</id>
    <updated>2010-07-23T09:05:59Z</updated>
    <summary type="html"><![CDATA[<ul>
<li>取字符串的长度：<code>${#VAR}</code></li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#6272a4"># a="HelloWorld"</span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># echo ${#a}</span>
</span></span><span style="display:flex;"><span><span style="color:#bd93f9">10</span>
</span></span></code></pre></div><ul>
<li>字符串截断：<code>${VAR:POSITION}</code>或<code>${VAR:POSITION:LENGTH}</code></li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#6272a4"># a="HelloWorld"</span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># echo ${a:5}</span>
</span></span><span style="display:flex;"><span>World
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># echo ${a:4:3}</span>
</span></span><span style="display:flex;"><span>oWo
</span></span></code></pre></div><ul>
<li>字符串匹配取最短：<code>${VAR#SUBSTRING}</code>和<code>${VAR%SUBSTRING}</code></li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#6272a4"># a="HelloWorld"</span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># echo ${a#*o}</span>
</span></span><span style="display:flex;"><span>World
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># echo ${a%o*}</span>
</span></span><span style="display:flex;"><span>HelloW
</span></span></code></pre></div><p>注：<code>#</code>是从前向后，并且*号是紧随着的，而<code>%</code>则是从后向前匹配。*号是放在最后的。</p>]]></summary><content type="html"><![CDATA[<ul>
<li>取字符串的长度：<code>${#VAR}</code></li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#6272a4"># a="HelloWorld"</span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># echo ${#a}</span>
</span></span><span style="display:flex;"><span><span style="color:#bd93f9">10</span>
</span></span></code></pre></div><ul>
<li>字符串截断：<code>${VAR:POSITION}</code>或<code>${VAR:POSITION:LENGTH}</code></li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#6272a4"># a="HelloWorld"</span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># echo ${a:5}</span>
</span></span><span style="display:flex;"><span>World
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># echo ${a:4:3}</span>
</span></span><span style="display:flex;"><span>oWo
</span></span></code></pre></div><ul>
<li>字符串匹配取最短：<code>${VAR#SUBSTRING}</code>和<code>${VAR%SUBSTRING}</code></li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#6272a4"># a="HelloWorld"</span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># echo ${a#*o}</span>
</span></span><span style="display:flex;"><span>World
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># echo ${a%o*}</span>
</span></span><span style="display:flex;"><span>HelloW
</span></span></code></pre></div><p>注：<code>#</code>是从前向后，并且*号是紧随着的，而<code>%</code>则是从后向前匹配。*号是放在最后的。</p>
<ul>
<li>字符串匹配取最长：<code>${VAR#SUBSTRING}</code>和<code>${VAR%SUBSTRING}</code></li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#6272a4"># a="HelloWorld"</span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># echo ${a#*o}</span>
</span></span><span style="display:flex;"><span>rld
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># echo ${a%o*}</span>
</span></span><span style="display:flex;"><span>Hell
</span></span></code></pre></div><ul>
<li>字符串替换：<code>${VAR//PATTERN/REPLACEMENT}</code></li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#6272a4"># a="HelloWorld"</span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># echo ${a//World/Earth}</span>
</span></span><span style="display:flex;"><span>HelloEarth
</span></span></code></pre></div><ul>
<li>确定匹配位置：<code>expr STRING : REGEX</code></li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#6272a4"># a="HelloWorld"</span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># expr $a : ".*o"</span>
</span></span></code></pre></div><p>注：这里的REGEX从名字上就说明了是一个正则表达式。</p>
<p>Update：详细请参考</p>
<ul>
<li><a href="http://tldp.org/LDP/abs/html/refcards.html#AEN22102">Advanced Bash-Scripting Guide: Table B-5. String Operations</a></li>
<li><a href="http://www.thegeekstuff.com/2010/07/bash-string-manipulation">The Geek Stuff: Bash String Manipulation Examples – Length, Substring, Find and Replace</a></li>
</ul>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="bash" label="Bash" scheme="https://blog.khsing.net/tags/bash/" />
    <published>2010-07-23T09:05:59Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Data Center基础设施革新]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2010/07/data-center.html" />
    <id>https://blog.khsing.net/2010/07/data-center.html</id>
    <updated>2010-07-19T05:34:51Z</updated>
    <summary type="html"><![CDATA[<p>来自<a href="http://www.royans.net/arch/james-hamilton-data-center-infrastructure-innovation/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+arch+%28Scalable+web+architectures%29">James Hamilton: Data center infrastructure innovation</a></p>
<ul>
<li>
<p>革新的步调:革新的步调正在加快。高度关注基础设施的革新可以降低成本、增加可靠性并且减少资源的消费，最终的目的就是降低成本。</p>
</li>
<li>
<p>钱都花哪儿了？:</p>]]></summary><content type="html"><![CDATA[<p>来自<a href="http://www.royans.net/arch/james-hamilton-data-center-infrastructure-innovation/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+arch+%28Scalable+web+architectures%29">James Hamilton: Data center infrastructure innovation</a></p>
<ul>
<li>
<p>革新的步调:革新的步调正在加快。高度关注基础设施的革新可以降低成本、增加可靠性并且减少资源的消费，最终的目的就是降低成本。</p>
</li>
<li>
<p>钱都花哪儿了？:</p>
<ul>
<li>54%花在服务器上，8%花在网络上，21%花在配电上，13%在电力上还有5%花在其他的基础设施上了。</li>
<li>34%的成本与电力有关。</li>
<li>电力成本有上升的趋势。</li>
</ul>
</li>
<li>
<p>云效率:服务器的使用率在咱们的工业里是10%到15%。</p>
<ul>
<li>避免在基础设施中使用漏洞。</li>
<li>把工作拆成小份，并且尽可能的将他们排入队列。</li>
</ul>
</li>
<li>
<p>配电:11%到12%的电力消耗在了配电的过程中。一些最小化电力消耗的规则</p>
<ul>
<li>把电力都卖出去，只要电力允许就放置更多的服务器。</li>
<li>避免使用变压器。</li>
<li>增加电力转换的效率。</li>
<li>高压越接近负载越好。</li>
<li>使用效率高的电压整流设备。</li>
<li>高压直流是一个小的潜在利益。</li>
</ul>
</li>
<li>
<p>机械系统:一个可以节省空调的环节。</p>
<ul>
<li>什么是可以被改进的？冷却塔，热交换，泵，蒸发器，压缩机，冷凝机等。</li>
<li>上述这些系统的效率取决于对不同温度的需求。</li>
<li>冷热系统分离</li>
<li>增加服务器的运行温度。
<ul>
<li>通常在61到84</li>
<li>电信标准是104F(40C)，游戏行业要更高一些。</li>
</ul>
</li>
</ul>
</li>
<li>
<p>温度</p>
</li>
<li>
<p>限制到高温运行的因素</p>
</li>
<li>
<p>避免整体直接澎涨冷却</p>
</li>
<li>
<p>过滤微粒和化学污染</p>
</li>
<li>
<p>网络安排
目前的网络是超订了</p>
<ul>
<li>强制放置有序</li>
<li>目标：所有点到数据中心的距离是一致的。</li>
</ul>
</li>
</ul>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="datacenter" label="Datacenter" scheme="https://blog.khsing.net/tags/datacenter/" />
    <category term="innovation" label="Innovation" scheme="https://blog.khsing.net/tags/innovation/" />
    <published>2010-07-19T05:34:51Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[关于打孩子的看法]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2010/07/post-12-2.html" />
    <id>https://blog.khsing.net/2010/07/post-12-2.html</id>
    <updated>2010-07-17T07:50:43Z</updated>
    <summary type="html"><![CDATA[<p>当爸爸之后有时候会和老婆聊聊孩子将来的教育问题，必然的就会聊到打孩子的问题。刚才洗脸的时候又突然想起这个事情，想先撂句话在这儿。就是无论孩子将来做了什么事情，都不要去打他。暴力是不能解决所有问题的，两个理性的人之间应该是可以坐在一起通过交流和讨论来解决问题的。</p>]]></summary><content type="html"><![CDATA[<p>当爸爸之后有时候会和老婆聊聊孩子将来的教育问题，必然的就会聊到打孩子的问题。刚才洗脸的时候又突然想起这个事情，想先撂句话在这儿。就是无论孩子将来做了什么事情，都不要去打他。暴力是不能解决所有问题的，两个理性的人之间应该是可以坐在一起通过交流和讨论来解决问题的。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="story" label="Story" scheme="https://blog.khsing.net/tags/story/" />
    <category term="raisebaby" label="Raisebaby" scheme="https://blog.khsing.net/tags/raisebaby/" />
    <category term="child" label="Child" scheme="https://blog.khsing.net/tags/child/" />
    <published>2010-07-17T07:50:43Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[性能问题前十]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2010/07/post-11-2.html" />
    <id>https://blog.khsing.net/2010/07/post-11-2.html</id>
    <updated>2010-07-17T04:29:52Z</updated>
    <summary type="html"><![CDATA[<p>来自<a href="http://blog.dynatrace.com/2010/06/15/top-10-performance-problems-taken-from-zappos-monster-and-co/">DynaTrace’s Top 10 Performance Problems Tanken From Zappos , Monster, Thomson and Co</a>。</p>
<ol>
<li>太多的数据库请求
在一个请求或事务中数据库请求太多。具体有三种现象：</li>
</ol>
<ul>
<li>
<p>请求的数据多于实际使用的数据。</p>
</li>
<li>
<p>同样的数据请求多次。</p>]]></summary><content type="html"><![CDATA[<p>来自<a href="http://blog.dynatrace.com/2010/06/15/top-10-performance-problems-taken-from-zappos-monster-and-co/">DynaTrace’s Top 10 Performance Problems Tanken From Zappos , Monster, Thomson and Co</a>。</p>
<ol>
<li>太多的数据库请求
在一个请求或事务中数据库请求太多。具体有三种现象：</li>
</ol>
<ul>
<li>
<p>请求的数据多于实际使用的数据。</p>
</li>
<li>
<p>同样的数据请求多次。</p>
</li>
<li>
<p>多次的请求一个必然的结果集</p>
</li>
<li>
<p>同步走向死亡
同步是一种保护共享数据的重要机制。但是过度的代码同步就会引发性能问题，这种问题在单机的时候并不明显，但是在一个高负载的环境下就难以持续了，最终的结果就是死亡。如何确定同步问题，可以把程序的CPU时间和总体执行时间在递增负载环境下做测试对比，就会发现CPU时间几乎是一定的，但是总体执行时间是随负载增加而快速增涨的，那就是说这个程序在同步上是有问题的。</p>
</li>
<li>
<p>过多的远程调用
许多的库都是一些远程调用，对于程序员来说，本地调用和远程调用在程序上并无差别。但是不要忘记了远程调用的额外成本，比如：传输时间、序列化、网络流量以及内存使用等等。</p>
</li>
<li>
<p>错误的使用ORM
ORM从开发人员手里接过了载入和存储数据的重担。ORM的框架一般都有许多的设置以供优化，在使用时候如果使用了错误的设置，就会导致一些不可预见的性能问题。所以在使用框架的时候对于其设置项要真正的了解其内部的工作方式。</p>
</li>
<li>
<p>内存泄漏
垃圾回收并不能阻止内存泄漏，所以尽可能快的释放对象引用是非常重要的。</p>
</li>
<li>
<p>成问题的第三方代码或组件
代码是人写的，是人写的就会有问题，但是问题有多有少。所以在引入第三方代码或组件的时候最好是深入检查一下，以免从A产品的开发人员演变成B组件的捉虫队。</p>
</li>
<li>
<p>贪婪的占用稀缺资源
像内存、CPU、I/O、数据库啥的都是稀缺资源，所以就别占着矛坑不拉屎（这也是人品中重要的一项，我相信一个人品好的人写代码的时候也会这么做。）。</p>
</li>
<li>
<p>肥胖的前端
太肥的东西总是要避免的，不管是吃、看还是用。</p>
</li>
<li>
<p>错误的缓存策略导致额外的垃圾回收
缓存对象到内存是为了避免重复的数据库请求。但是如果把太多的数据都缓存到内存或是数据对象是频繁被更新的，那这样的缓存策略带来的问题就是要做更多的垃圾回收工作。</p>
</li>
<li>
<p>间断性的问题
这种问题较难发现，通常出现在特别的输入或是某个确定的负载情况下。这只能是尽可能的做全面的测试，从功能到负载和性能都覆盖到，这样就尽可能早的把这种给问题给揪出来，从而不影响到真实用户。</p>
</li>
<li>
<p>（额外送的）昂贵的序列化
在现在的Web应用中序列化随处可见，REST大行其道，数据对象要序列化之后再通过接口才能送出去。有序列化就有反序列化，这种开销是对称的，所以要尽可能快速的处理这两个问题，而且还要考虑到其序列化后数据的大小，内存占用等问题。</p>
</li>
</ul>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="performance" label="Performance" scheme="https://blog.khsing.net/tags/performance/" />
    <category term="optimize" label="Optimize" scheme="https://blog.khsing.net/tags/optimize/" />
    <published>2010-07-17T04:29:52Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[2010年的Mac软件清单]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2010/06/2010mac.html" />
    <id>https://blog.khsing.net/2010/06/2010mac.html</id>
    <updated>2010-06-25T08:50:40Z</updated>
    <summary type="html"><![CDATA[<p>每年几乎都要来这么一次，最近想整理一下的原因是周围有两个同事相继加入Mac党，帮他们安装设置了一些工具。所以就顺手也整理一下：</p>
<ul>
<li>
<p>网页浏览
主要使用的还是Safari，同时也挂上了Glims。安上Firefox的主要原因是Y!slow和Firebug，同时为了有更好的界面效果，还搭上了<a href="http://foxdie.us">foxdie.us</a>。</p>]]></summary><content type="html"><![CDATA[<p>每年几乎都要来这么一次，最近想整理一下的原因是周围有两个同事相继加入Mac党，帮他们安装设置了一些工具。所以就顺手也整理一下：</p>
<ul>
<li>
<p>网页浏览
主要使用的还是Safari，同时也挂上了Glims。安上Firefox的主要原因是Y!slow和Firebug，同时为了有更好的界面效果，还搭上了<a href="http://foxdie.us">foxdie.us</a>。</p>
</li>
<li>
<p>网络下载
FTP的主要工具是Cyberduck和在Terminal.app使用的ftp命令。cURL则是一个下载以及测试的利器。</p>
</li>
<li>
<p>文本编辑
虽然Textmate一直不思进取，2.0杳无音讯，跳票情况超过暴雪，但是今年还是团了一个License，确实是码农必备。另外在写中文文档的时候也会用到TextWrangler。</p>
</li>
<li>
<p>文档编写
公司里有太多的人使用Word和Excel了，所以也会安装一套M$的Office 2008来用。文档的编写一般是趋向于纯文本方式的，如果有格式要求我更趋向于使用TeX，自然也就会安一套MacTeX来用。安装iWorks主要是冲Keynote去的。</p>
</li>
<li>
<p>绘图处理
OmniGraffle绝对是Mac上的超牛B软件画图软件。对于照片的管理还是用了自带的iPhoto，虽然以前下载了Aperture回来试用，但是对于我这样的傻瓜用户还是有些太高级了。一般的裁剪工具就是自带的Preview.app。思维导图则是MindNode.app比较好使。</p>
</li>
<li>
<p>影视娱乐
看电影必用的工具是Perian，VLC和Movist。一般情况下会先用QuickTime来播，如果不行就换Movist，再不行换VLC。在家接上电视的时候也会用Plex来放电影，不过这个情况要少一些，可能等我在家里搞起一个电影库的时候就有用了。RealPlayer已经从我的安装清单里去掉了，下载电影的时候也基本上不下RMVB了。</p>
</li>
<li>
<p>聊天通信
我平常几乎只开iChat挂Google Talk，偶尔会开一下Adium和QQ。</p>
</li>
<li>
<p>杂项</p>
</li>
<li>
<p>Nally.app是读BBS的利器</p>
</li>
<li>
<p>The Unarchiver.app可以通吃所有的打包档。包括rar的字符集问题处理的都不错。</p>
</li>
<li>
<p>Tweetie.app是发推利器，而且支持民间RT。</p>
</li>
<li>
<p>iCompta.app来记帐是节源的好工具，不过要坚持下来才可以。</p>
</li>
<li>
<p>HandBrake.app来转档给iPhone使。</p>
</li>
<li>
<p>Evom.app也是转视频档给iPhone使的工具。</p>
</li>
<li>
<p>CoRD.app可以连接Windows远程桌面。</p>
</li>
<li>
<p>iChm.app可能是Mac上最好用的chm阅读器了。</p>
</li>
</ul>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="mac" label="Mac" scheme="https://blog.khsing.net/tags/mac/" />
    <published>2010-06-25T08:50:40Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[WWDC放出的和我想要的]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2010/06/wwdc.html" />
    <id>https://blog.khsing.net/2010/06/wwdc.html</id>
    <updated>2010-06-09T04:07:11Z</updated>
    <summary type="html"><![CDATA[<p>WWDC的keynote已经过去了，直到今天早晨我才在iPhone上看完视频。总体来说我想要的东西，Apple没发。</p>
<p>iPhone 4的过人之处有三：</p>
<ol>
<li>强悍的电力，300小时待机啊，300小时啊。</li>
<li>高精细的屏幕，326ppi啊，326啊。</li>
<li>三轴的陀螺仪，三轴的啊，三轴啊。</li>
</ol>
<p>虽然老乔夸过头了，人眼的极限大概在1200dpi，300dpi只是个起步价，但是这并不影响iPhone 4成为当下最伟大的手持设备。</p>]]></summary><content type="html"><![CDATA[<p>WWDC的keynote已经过去了，直到今天早晨我才在iPhone上看完视频。总体来说我想要的东西，Apple没发。</p>
<p>iPhone 4的过人之处有三：</p>
<ol>
<li>强悍的电力，300小时待机啊，300小时啊。</li>
<li>高精细的屏幕，326ppi啊，326啊。</li>
<li>三轴的陀螺仪，三轴的啊，三轴啊。</li>
</ol>
<p>虽然老乔夸过头了，人眼的极限大概在1200dpi，300dpi只是个起步价，但是这并不影响iPhone 4成为当下最伟大的手持设备。</p>
<p>我本以为Apple为回应Google IO的动作把MobileMe给免费了，再搭上个无线同步。这种事情也许将来有吧，但是这次是没出。我猜没出的原因如下：</p>
<ul>
<li>苹果目前还无意指染云端。虽然苹果一定在搞云端工程，但现在可能不是推出的时候。</li>
<li>云端同步的带宽还不够快。每次同步都backup，如果为了云端同步而让同步过程速度变的更慢，老乔是不会答应的。当然现在已经很慢了。</li>
<li>苹果目前的技术整合能力还没有到这一步。收了lala之流的公司还没来得及完全整合。</li>
</ul>
<p>出于这些猜测，我觉的短时间内Apple应该是不会出云端同步了。要云端同步，Apple得万事俱备才会推出吧。比如下列的事情：</p>
<ul>
<li>在线的音乐流服务。</li>
<li>在线的高清电影流服务。</li>
<li>更高速的网络。</li>
<li>MobileMe准备好免费接纳现有的iPhone用户。</li>
</ul>
<p>总之是iTunes能提供的同步服务，云端同步所也必须能完成，那才行。不过话说回来，iTunes的无线同步，该是提供的时候了吧，iTunes 9.2不要让我们失望。</p>
<p>就现在Apple放出的玩意来看，比Google弱的事情主要在TV上，和Google TV相比Apple TV真是太烂了。Android现在能直接把视频流推给Google TV。iPhone你是要到iOS 5能支持还是iOS 4.x就能支持呀，还是等你出了Apple TV二代才行啊。说实话推视频这个功能真的是超赞的，有赤裸裸的需求的。</p>
<p>Apple，自上次Google IO之后，我觉的你还得再加把劲才做的稳头把交椅。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="apple" label="Apple" scheme="https://blog.khsing.net/tags/apple/" />
    <category term="wwdc" label="Wwdc" scheme="https://blog.khsing.net/tags/wwdc/" />
    <published>2010-06-09T04:07:11Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[性能问题]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2010/05/performance-problem.html" />
    <id>https://blog.khsing.net/2010/05/performance-problem.html</id>
    <updated>2010-05-11T04:08:29Z</updated>
    <summary type="html"><![CDATA[<p>记点笔记：<a href="http://pl.atyp.us/content/tech/servers.html">High-Performance Server Architecture</a></p>
<p>性能问题一般因以下四个原因而起：</p>
<ol>
<li>Data copies(数据复制)</li>
<li>Context switches(上下文切换)</li>
<li>Memory allocation(内存分配)</li>
<li>Lock contention(锁争用)</li>
</ol>
<p>为避免Data copies，作者使用的方法是间接使用和通过buffer descriptor来代替buffer pointer，每一个buffer descriptor由以下部分构成：
f112cc81592c28588088b63ad6fd4c9a
但是作者并不推荐在所有情况下都这样用做，因为在描述符的链表中穿行是非常痛苦的，这个做法虽然提高了性能但是却比data copies更恶。最好的做法是标记所有较大的对象，比如说数据块，确保他们像上述那样被独立分配，这样他们就不会被复制了。另外也说了一些因避免复制而做出的更坏的事情，比如强制一个上下文切换，分解一个大的IO请求。为避免Data copies，第一个要关心的应该是如何避免额外的操作。</p>]]></summary><content type="html"><![CDATA[<p>记点笔记：<a href="http://pl.atyp.us/content/tech/servers.html">High-Performance Server Architecture</a></p>
<p>性能问题一般因以下四个原因而起：</p>
<ol>
<li>Data copies(数据复制)</li>
<li>Context switches(上下文切换)</li>
<li>Memory allocation(内存分配)</li>
<li>Lock contention(锁争用)</li>
</ol>
<p>为避免Data copies，作者使用的方法是间接使用和通过buffer descriptor来代替buffer pointer，每一个buffer descriptor由以下部分构成：
f112cc81592c28588088b63ad6fd4c9a
但是作者并不推荐在所有情况下都这样用做，因为在描述符的链表中穿行是非常痛苦的，这个做法虽然提高了性能但是却比data copies更恶。最好的做法是标记所有较大的对象，比如说数据块，确保他们像上述那样被独立分配，这样他们就不会被复制了。另外也说了一些因避免复制而做出的更坏的事情，比如强制一个上下文切换，分解一个大的IO请求。为避免Data copies，第一个要关心的应该是如何避免额外的操作。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="performance" label="Performance" scheme="https://blog.khsing.net/tags/performance/" />
    <category term="optimize" label="Optimize" scheme="https://blog.khsing.net/tags/optimize/" />
    <published>2010-05-11T04:08:29Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[HS: sify.com的构架]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2010/05/hs-sifycom-2.html" />
    <id>https://blog.khsing.net/2010/05/hs-sifycom-2.html</id>
    <updated>2010-05-11T03:40:34Z</updated>
    <summary type="html"><![CDATA[<p>刚才看过了High Scalability的新文：<a href="http://highscalability.com/blog/2010/5/10/sifycom-architecture-a-portal-at-3900-requests-per-second.html">SIFY.COM ARCHITECTURE – A PORTAL AT 3900 REQUESTS PER SECOND</a>。构架里有许多有意思的地方，他们在GFS上存储所有数据，没有DB，没有NoSQL，而是使用Apache Solr来做数据的索引。使用了Drools这个rule引擎来处理缓存过期的问题。文章的最后把他们在构架进化过程的问题也抛出来了，这一点很不错，弯路谁没走过，把这样的经验分享出来是相当不错的。
从抛出来所遇到的问题和解决方法来看，系统重启以解决还是相当的普遍。</p>]]></summary><content type="html"><![CDATA[<p>刚才看过了High Scalability的新文：<a href="http://highscalability.com/blog/2010/5/10/sifycom-architecture-a-portal-at-3900-requests-per-second.html">SIFY.COM ARCHITECTURE – A PORTAL AT 3900 REQUESTS PER SECOND</a>。构架里有许多有意思的地方，他们在GFS上存储所有数据，没有DB，没有NoSQL，而是使用Apache Solr来做数据的索引。使用了Drools这个rule引擎来处理缓存过期的问题。文章的最后把他们在构架进化过程的问题也抛出来了，这一点很不错，弯路谁没走过，把这样的经验分享出来是相当不错的。
从抛出来所遇到的问题和解决方法来看，系统重启以解决还是相当的普遍。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="architecture" label="Architecture" scheme="https://blog.khsing.net/tags/architecture/" />
    <category term="solution" label="Solution" scheme="https://blog.khsing.net/tags/solution/" />
    <published>2010-05-11T03:40:34Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[再说说Echofon和Tweetie]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2010/03/talk-aboute-chofon-and-tweetie-again.html" />
    <id>https://blog.khsing.net/2010/03/talk-aboute-chofon-and-tweetie-again.html</id>
    <updated>2010-03-25T07:52:32Z</updated>
    <summary type="html"><![CDATA[<p>Echofon近期都作了很多的更新，基本上已经满足我的需求了。Tweetie最近也出了一次更新支持了官方RT，但是Echofon和Tweetie对于官方RT的处理是不同的。Tweetie上官方RT会被翻译成民间RT的模样，如果进行reply和repost的操作是针对RT这条Tw的人，并不是这个Tw的原始作者。而Echofon对官方RT的处理就是reply和repost都会针对Tw的原作者。相比之下Tweetie的风格更好一些，熟人之间更容易展开讨论。</p>]]></summary><content type="html"><![CDATA[<p>Echofon近期都作了很多的更新，基本上已经满足我的需求了。Tweetie最近也出了一次更新支持了官方RT，但是Echofon和Tweetie对于官方RT的处理是不同的。Tweetie上官方RT会被翻译成民间RT的模样，如果进行reply和repost的操作是针对RT这条Tw的人，并不是这个Tw的原始作者。而Echofon对官方RT的处理就是reply和repost都会针对Tw的原作者。相比之下Tweetie的风格更好一些，熟人之间更容易展开讨论。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="echofon" label="Echofon" scheme="https://blog.khsing.net/tags/echofon/" />
    <category term="twitter" label="Twitter" scheme="https://blog.khsing.net/tags/twitter/" />
    <published>2010-03-25T07:52:32Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[在Mac下同步通信录到Google、Windows Phone]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2010/03/sync-contacts-calendars.html" />
    <id>https://blog.khsing.net/2010/03/sync-contacts-calendars.html</id>
    <updated>2010-03-19T04:33:47Z</updated>
    <summary type="html"><![CDATA[<p>因为我的手机坏了，就从朋友手里借了个Dopod S1来用，但是和Mac同步数据就成了一个问题了。刚开始用SyncMate来同步，也还可以，但是最近总也是连不上，无法同步。找了找看到Google对Windows Mobile的同步支持也不错，就可以使Mac同步到Google，Google再同步到Windows Mobile，这样还省得带数据线了。Mac OS X 10.6.2的Address Book可以直接和Google Contants同步，而10.5.x必须要有一个iPhone/iPod和iTunes同步才可以和Google同步（好奇怪的策略），没有iPhone/iPod的话就要Hack一下了，具体方法看<a href="http://www.zaphu.com/2008/05/29/how-to-enable-mac-address-book-syncing-with-googles-gmail-contacts-without-an-iphone-or-mac/">这一篇</a>。10.5和10.6的同步的范围有一些差别，10.5是同步Gmail里的All contacts，而10.6里则是只同步My Contacts部分。不过这个和Google的同步好象不太靠谱，所以就有了<a href="http://www.google.com/support/forum/p/Google+Mobile/thread?tid=69dae97a4171354b&hl=en">这一篇</a>，其中有一个回复说明Google Sync Client是作为一个App client存在的，必须搭上MobileMe或者其他同步Address Book的服务才可以进行同步。下面两行就是把Google Sync Client换成了server类型，也就直接可以使用iSync的Sync Now来同步了。</p>]]></summary><content type="html"><![CDATA[<p>因为我的手机坏了，就从朋友手里借了个Dopod S1来用，但是和Mac同步数据就成了一个问题了。刚开始用SyncMate来同步，也还可以，但是最近总也是连不上，无法同步。找了找看到Google对Windows Mobile的同步支持也不错，就可以使Mac同步到Google，Google再同步到Windows Mobile，这样还省得带数据线了。Mac OS X 10.6.2的Address Book可以直接和Google Contants同步，而10.5.x必须要有一个iPhone/iPod和iTunes同步才可以和Google同步（好奇怪的策略），没有iPhone/iPod的话就要Hack一下了，具体方法看<a href="http://www.zaphu.com/2008/05/29/how-to-enable-mac-address-book-syncing-with-googles-gmail-contacts-without-an-iphone-or-mac/">这一篇</a>。10.5和10.6的同步的范围有一些差别，10.5是同步Gmail里的All contacts，而10.6里则是只同步My Contacts部分。不过这个和Google的同步好象不太靠谱，所以就有了<a href="http://www.google.com/support/forum/p/Google+Mobile/thread?tid=69dae97a4171354b&hl=en">这一篇</a>，其中有一个回复说明Google Sync Client是作为一个App client存在的，必须搭上MobileMe或者其他同步Address Book的服务才可以进行同步。下面两行就是把Google Sync Client换成了server类型，也就直接可以使用iSync的Sync Now来同步了。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>sudo defaults write /System/Library/PrivateFrameworks/GoogleContactSync.framework/Resources/ClientDescription Type <span style="color:#f1fa8c">'server'</span>
</span></span><span style="display:flex;"><span>sudo chmod <span style="color:#bd93f9">644</span> /System/Library/PrivateFrameworks/GoogleContactSync.framework/Resources/ClientDescription.plist
</span></span></code></pre></div><p>也可以用命令行来手动的触发同步。通过Console.app可以看到sync产生的log，来确认同步是不是在正常进行。</p>
<p>默认的同步间隔是1个小时，可以通过修改<code>~/Library/LaunchAgents/com.google.GoogleContactSyncAgent.plist</code>文件来改变同步间隔。</p>
<pre tabindex="0"><code class="language-plist" data-lang="plist">&lt;key&gt;StartInterval&lt;/key&gt;
&lt;integer&gt;900&lt;/integer&gt;
</code></pre><p>如此一来Mac和Google的同步就搞定了。而Windows Mobile和Google的同步就简单多了，看<a href="http://www.google.com/support/mobile/bin/answer.py?answer=138636&topic=14299">这一篇</a>就可以了。</p>
<p>Update: 在<a href="http://www.google.com/contacts">Google Contacts</a>里写新增用户的时候要写成”名 姓”的格式，名在前，姓在后，中间有空格。这样同步到Address Book里的时候姓和名的位置才是正确的。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="sync" label="Sync" scheme="https://blog.khsing.net/tags/sync/" />
    <category term="contacts" label="Contacts" scheme="https://blog.khsing.net/tags/contacts/" />
    <published>2010-03-19T04:33:47Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[又败家给MBP添了两条内存]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2010/03/mbp.html" />
    <id>https://blog.khsing.net/2010/03/mbp.html</id>
    <updated>2010-03-12T06:05:53Z</updated>
    <summary type="html"><![CDATA[<p>今天又败家给MBP添了两条DDR3-1066，单条2G的内存。花费660大洋。</p>
<p>加了内存之后，再一次的验证了真理：花钱买回来的性能真不是盖的。开虚拟机那个速度快呀！原本想等到单条4G的便宜了再买，等了半年还是无望，算了还是先买两条2G爽爽吧。</p>]]></summary><content type="html"><![CDATA[<p>今天又败家给MBP添了两条DDR3-1066，单条2G的内存。花费660大洋。</p>
<p>加了内存之后，再一次的验证了真理：花钱买回来的性能真不是盖的。开虚拟机那个速度快呀！原本想等到单条4G的便宜了再买，等了半年还是无望，算了还是先买两条2G爽爽吧。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="macbookpro" label="Macbookpro" scheme="https://blog.khsing.net/tags/macbookpro/" />
    <category term="memory" label="Memory" scheme="https://blog.khsing.net/tags/memory/" />
    <published>2010-03-12T06:05:53Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Tweetie and Echofon]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2010/03/tweetie-and-echofon.html" />
    <id>https://blog.khsing.net/2010/03/tweetie-and-echofon.html</id>
    <updated>2010-03-10T03:28:26Z</updated>
    <summary type="html"><![CDATA[<p>我真正有用的twitter客户端主要就是Tweetie和Echofon，各有各的好，但是哪一个也不让我满意。如果这两个产品要是互相学习一下就好了。我希望一个twitter客户端能集如下功能于一身</p>]]></summary><content type="html"><![CDATA[<p>我真正有用的twitter客户端主要就是Tweetie和Echofon，各有各的好，但是哪一个也不让我满意。如果这两个产品要是互相学习一下就好了。我希望一个twitter客户端能集如下功能于一身</p>
<ul>
<li>展开一个用户的时候像Echofon拉出一个Drawer</li>
<li>可以展开一个关联对话</li>
<li>以看官方的retweete</li>
<li>可以查看list</li>
<li>能使用方向键来选择单个tweete.</li>
<li>能使用快捷键进行reply,retweete,direct reply和repost的操作</li>
<li>可以对重点用户的tweete打label或颜色标记</li>
</ul>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="twitter" label="Twitter" scheme="https://blog.khsing.net/tags/twitter/" />
    <category term="echofon" label="Echofon" scheme="https://blog.khsing.net/tags/echofon/" />
    <category term="tweetie" label="Tweetie" scheme="https://blog.khsing.net/tags/tweetie/" />
    <published>2010-03-10T03:28:26Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[buzz和twitter代表的是两个方向]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2010/03/buzztwitter.html" />
    <id>https://blog.khsing.net/2010/03/buzztwitter.html</id>
    <updated>2010-03-09T06:24:45Z</updated>
    <summary type="html"><![CDATA[<p>注意到Google Reader的People You Followed里老是有几条排在前面，这才发现GReader对目录有三种排序。</p>
<p>这个Sorted by Magic似乎就是别他人分享越多、评论越多就越排在前面。而这正是Buzz的策略，甚至Buzz的评论都会让文章排在前面。</p>]]></summary><content type="html"><![CDATA[<p>注意到Google Reader的People You Followed里老是有几条排在前面，这才发现GReader对目录有三种排序。</p>
<p>这个Sorted by Magic似乎就是别他人分享越多、评论越多就越排在前面。而这正是Buzz的策略，甚至Buzz的评论都会让文章排在前面。</p>
<p>一个人的关注面是有限的，以前的我会把Greader清零才睡觉，但是后来我发现信息越来越多，我放弃了，开始只关注部分信息。同样的问题也发生在twitter上，起初我觉的信息量不够，follow了许多人，但是我同样发现信息量太大了，我处理不了那么多，开始unfo了不少，到了可以接受的情况。</p>
<p>buzz的重点还是在集体的智慧，意在利用Google强大的计算能力和海量的信息，再加上集体的智慧来提供有用的信息。而twitter的重点是实时，过期的信息是不被重视的，保持信息新鲜的方法是被Retweete。</p>
<p>有人的地方就有八卦和政治，而且人们谈论八卦和政治的热情比较高。这一点无论在twitter和buzz里都是有的，twitter的感觉是线性的，过去的就是过去的，不再回来。而buzz则不然，时空回转也不是不可能，几年前的讨论都可能被他人提起，进入你的视线，且提起陈旧或无趣题目的人也许你并没有follow。</p>
<p>buzz带来的到底是惊喜还是搅扰？从目前看来搅扰的成份要大过惊喜。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="twitter" label="Twitter" scheme="https://blog.khsing.net/tags/twitter/" />
    <category term="google" label="Google" scheme="https://blog.khsing.net/tags/google/" />
    <category term="buzz" label="Buzz" scheme="https://blog.khsing.net/tags/buzz/" />
    <published>2010-03-09T06:24:45Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[和出租车司机聊天]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2010/03/post-9-2.html" />
    <id>https://blog.khsing.net/2010/03/post-9-2.html</id>
    <updated>2010-03-09T03:35:40Z</updated>
    <summary type="html"><![CDATA[<p>前几天搬了次家，路上和出租车司机就聊起天了，聊的主要内容是小产权的房子。据司机说，村里在宅基地上盖房子，审批比较严，但是一旦盖出来了就是村里说了算了。要说这审批也好批，村里以建设新农村，家家户户住楼房为理由也就批下来了。刚开始呢村支书给大家分完了房了，余下的房子就在开始卖。但是村民很快就又买了几套。村支书还在想，这不是刚刚分完房，怎么又买房呢？后来才明白人家村民转手加2000就卖了，然后这村支书就直接把价码提高到了2000，让村里来挣这个钱。村里盖的房子有不少是电采暖，比之市政供暖还是较贵的，但是村里有卖地来的钱，所以就给每户村民补贴电暖。但是村里的宅基地是有限的，卖地的钱自然也是有限的，如果这样补贴，钱总是会贴没的。</p>]]></summary><content type="html"><![CDATA[<p>前几天搬了次家，路上和出租车司机就聊起天了，聊的主要内容是小产权的房子。据司机说，村里在宅基地上盖房子，审批比较严，但是一旦盖出来了就是村里说了算了。要说这审批也好批，村里以建设新农村，家家户户住楼房为理由也就批下来了。刚开始呢村支书给大家分完了房了，余下的房子就在开始卖。但是村民很快就又买了几套。村支书还在想，这不是刚刚分完房，怎么又买房呢？后来才明白人家村民转手加2000就卖了，然后这村支书就直接把价码提高到了2000，让村里来挣这个钱。村里盖的房子有不少是电采暖，比之市政供暖还是较贵的，但是村里有卖地来的钱，所以就给每户村民补贴电暖。但是村里的宅基地是有限的，卖地的钱自然也是有限的，如果这样补贴，钱总是会贴没的。</p>
<p>在中国村支书是直选的，所以自这个补贴开始之后，就没有那一届村支书敢把这个供暖补贴取消了。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="story" label="Story" scheme="https://blog.khsing.net/tags/story/" />
    <category term="china" label="China" scheme="https://blog.khsing.net/tags/china/" />
    <published>2010-03-09T03:35:40Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[说说最近玩iPhone的事]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2010/03/iphone.html" />
    <id>https://blog.khsing.net/2010/03/iphone.html</id>
    <updated>2010-03-01T06:30:00Z</updated>
    <summary type="html"><![CDATA[<p>前些日子从朋友那里拿了一个iPhone 3G。拿过来时候基本就是个砖头，推测是一个已经刷到3.1.3的有锁版，后来还拿去e世界的电玩巴士请帮解锁，未成功。回来查了一些资料及刷机的方法，自己也刷了几次。这次经历算是给我补了一把iPhone的课。</p>]]></summary><content type="html"><![CDATA[<p>前些日子从朋友那里拿了一个iPhone 3G。拿过来时候基本就是个砖头，推测是一个已经刷到3.1.3的有锁版，后来还拿去e世界的电玩巴士请帮解锁，未成功。回来查了一些资料及刷机的方法，自己也刷了几次。这次经历算是给我补了一把iPhone的课。</p>
<p>iPhone除了1代、3G、3GS的区别之外还有有锁版和无锁版的区别。有锁版一般是美国的和日本的，俗称美版和日版，应该也还有欧版的。国内的无锁版一般都是指港版。有锁和无锁的区别是有没有绑定了电信运营商，美版绑定的运营商是AT&T，而日版绑定的是SoftBank Mobile。正常来说绑定了运营商的iPhone只能使用绑定运营商的sim卡，然而非指定运营商的用户也想使用iPhone，于是就出现了卡贴，把一个非指定运营商的sim卡伪装成一个指定运营商的sim卡。后来有人通过软解的方式把iPhone的这一限制给破了，这个过程也就称之为解锁，但是软解的过程并不是一切顺利的，苹果也是通过更新软件的方式防止人们对iPhone进行解锁。最近的iPhone OS 3.1.3的升级就造成了iPhone 3G和3GS无法解锁的情况（我相信这只是暂时的）。目前iPhone 3G有锁版要是刷到了3.1.3并且baseband升到了05.12.01，那么得到的是一个增强版的iPod Touch。iPhone 3G升到3.1.3之后可以使用PwnageTool定制一个固件，选择不要升baseband，这样起码让iPhone 3G可以当个iPod使用。也可以刷回到3.1.2（这个过程会遇到1015的错误），再使用Blackra1n来解。</p>
<p>iPhone用户经常会提到的一个事情就是JailBreak，称之为越狱。越狱后就可以安装许多Apple Store之外的应用程序了。</p>
<p>iPhone用户经常会做同步操作，其实在同步的时候iTunes还会做备份的操作，如果你换了iPhone，那就可以使用”从备份中恢复”这一招把设置、联系人、Safari的书签等给恢复回来。但是要注意以前iPhone里的mp3、视频和买的应用程序就只能从iTunes中同步才能回来了。</p>
<p>在iPhone的刷机过程中要特别注意恢复模式和DFU模式的区别，最大的区别是DFU模式下屏幕是全黑的。进入DFU模式的方法是如下：</p>
<ol>
<li>关机</li>
<li>同时按下Power+Home键不放，保持10秒</li>
<li>松开Power键，Home继续不放，保持10秒</li>
<li>松开Home键，进入DFU模式</li>
</ol>
<p>这个操作我的建议是看着PwnageTool中的指导来做，非常的方便。</p>
<p>就iPhone刷机升级这个事来看，没事别折腾。如果要折腾有几点忠告：</p>
<ol>
<li>无论何时都不要刷官方的新版，除非你是无锁版的，并且不想越狱。</li>
<li>对自己的iPhone要完全了解。是否有锁？什么型号？baseband是多少？。</li>
<li>熟读解锁软件的各个注意事项，一定要读，看看自己的手机是不是在可破的范围之内等等。</li>
</ol>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="iphone" label="Iphone" scheme="https://blog.khsing.net/tags/iphone/" />
    <published>2010-03-01T06:30:00Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[帮助怡帆]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2010/01/post-8-2.html" />
    <id>https://blog.khsing.net/2010/01/post-8-2.html</id>
    <updated>2010-01-06T06:54:58Z</updated>
    <summary type="html"><![CDATA[<p>看到<a href="http://www.ifanr.com/6104">拯救怡帆：请帮助这位漂亮、坚强的女孩</a>。我自己到今年5月底就会成为一名父亲，深感这样的事情是大不幸，希望怡帆能够挺过去，去拥有她应该拥有的童年。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-txt" data-lang="txt"><span style="display:flex;"><span>捐赠方式
</span></span><span style="display:flex;"><span>1. 银行转账
</span></span><span style="display:flex;"><span>怡帆妈妈农业银行账户：
</span></span><span style="display:flex;"><span>户名：周萍
</span></span><span style="display:flex;"><span>账号：6228480010211053011
</span></span><span style="display:flex;"><span>开户行：中国农业银行北京市分行白石桥支行
</span></span><span style="display:flex;"><span>2. 支付宝
</span></span><span style="display:flex;"><span>怡帆基金支付宝账户：yifanfoundation@gmail.com
</span></span><span style="display:flex;"><span>3. 和睦家基金会 (美元捐款)
</span></span></code></pre></div><p>另有网站：<a href="http://www.help-yifan.org">http://www.help-yifan.org</a>，网站上也可以看到<a href="http://www.help-yifan.org/donate.html">捐款信息</a>。望怡帆重返健康！</p>]]></summary><content type="html"><![CDATA[<p>看到<a href="http://www.ifanr.com/6104">拯救怡帆：请帮助这位漂亮、坚强的女孩</a>。我自己到今年5月底就会成为一名父亲，深感这样的事情是大不幸，希望怡帆能够挺过去，去拥有她应该拥有的童年。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-txt" data-lang="txt"><span style="display:flex;"><span>捐赠方式
</span></span><span style="display:flex;"><span>1. 银行转账
</span></span><span style="display:flex;"><span>怡帆妈妈农业银行账户：
</span></span><span style="display:flex;"><span>户名：周萍
</span></span><span style="display:flex;"><span>账号：6228480010211053011
</span></span><span style="display:flex;"><span>开户行：中国农业银行北京市分行白石桥支行
</span></span><span style="display:flex;"><span>2. 支付宝
</span></span><span style="display:flex;"><span>怡帆基金支付宝账户：yifanfoundation@gmail.com
</span></span><span style="display:flex;"><span>3. 和睦家基金会 (美元捐款)
</span></span></code></pre></div><p>另有网站：<a href="http://www.help-yifan.org">http://www.help-yifan.org</a>，网站上也可以看到<a href="http://www.help-yifan.org/donate.html">捐款信息</a>。望怡帆重返健康！</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="others" label="Others" scheme="https://blog.khsing.net/categories/others/" />
    <category term="help" label="Help" scheme="https://blog.khsing.net/tags/help/" />
    <published>2010-01-06T06:54:58Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[终了2009]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2009/12/2009.html" />
    <id>https://blog.khsing.net/2009/12/2009.html</id>
    <updated>2009-12-31T09:07:29Z</updated>
    <summary type="html"><![CDATA[<p>2009年又要过去了，一年又一年，日子总是追着走。</p>
<p>从工作、学习和生活三个方面去说，2009年做的事真是不多，有些得过且过的感觉了。年初我有许多的计划，可是到了年终，细细的数来却没能完成几样。生活上值得庆祝的事情，一来办了婚礼，二来呢做了准爸爸。工作上没有值得庆祝的事，只有值得反省的事。学习上的事情，是觉的学的太慢了，而且网撒的太大，有点收不住的感觉了。</p>]]></summary><content type="html"><![CDATA[<p>2009年又要过去了，一年又一年，日子总是追着走。</p>
<p>从工作、学习和生活三个方面去说，2009年做的事真是不多，有些得过且过的感觉了。年初我有许多的计划，可是到了年终，细细的数来却没能完成几样。生活上值得庆祝的事情，一来办了婚礼，二来呢做了准爸爸。工作上没有值得庆祝的事，只有值得反省的事。学习上的事情，是觉的学的太慢了，而且网撒的太大，有点收不住的感觉了。</p>
<p>2010年对自己的希望是：</p>
<ol>
<li>做一个好爸爸。</li>
<li>多学一门外语。</li>
<li>把学习的重点放在计算机科学上，不要再搞民科了。要深一些！</li>
<li>广交好友，提升RP。</li>
<li>在人大的学习该有个了结了。</li>
<li>多了解一些微观经济学的东西。</li>
<li>克服拖沓症。</li>
</ol>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="annual" label="Annual" scheme="https://blog.khsing.net/tags/annual/" />
    <published>2009-12-31T09:07:29Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Automator Proxy Toggle Shell]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2009/12/automator-proxy-toggle-shell.html" />
    <id>https://blog.khsing.net/2009/12/automator-proxy-toggle-shell.html</id>
    <updated>2009-12-11T02:23:49Z</updated>
    <summary type="html"><![CDATA[<p>人都是被逼出来的，为翻墙方便，用Automator写了一个Service，就执行一段shell，还设置了一个快捷键。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#ff79c6">#!/bin/sh
</span></span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">STAT</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">`</span>sudo networksetup -getwebproxy Ethernet | head -1 | cut -d: -f 2|sed <span style="color:#f1fa8c">'s/ //g'</span><span style="color:#f1fa8c">`</span>
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">if</span> <span style="color:#ff79c6">[</span> <span style="color:#f1fa8c">"</span><span style="color:#8be9fd;font-style:italic">$STAT</span><span style="color:#f1fa8c">"</span> <span style="color:#ff79c6">==</span> <span style="color:#f1fa8c">"No"</span> <span style="color:#ff79c6">]</span>;<span style="color:#ff79c6">then</span>
</span></span><span style="display:flex;"><span>networksetup -setwebproxystate Ethernet on;
</span></span><span style="display:flex;"><span>/Users/guixing/bin/growlnotify -m <span style="color:#f1fa8c">"Proxy On"</span>;
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">else</span>
</span></span><span style="display:flex;"><span>networksetup -setwebproxystate Ethernet off;
</span></span><span style="display:flex;"><span>/Users/guixing/bin/growlnotify -m <span style="color:#f1fa8c">"Proxy Off"</span>;
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">fi</span>
</span></span></code></pre></div><p><code>growlnotify</code>是Growl的一个命令行工具。</p>]]></summary><content type="html"><![CDATA[<p>人都是被逼出来的，为翻墙方便，用Automator写了一个Service，就执行一段shell，还设置了一个快捷键。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#ff79c6">#!/bin/sh
</span></span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">STAT</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">`</span>sudo networksetup -getwebproxy Ethernet | head -1 | cut -d: -f 2|sed <span style="color:#f1fa8c">'s/ //g'</span><span style="color:#f1fa8c">`</span>
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">if</span> <span style="color:#ff79c6">[</span> <span style="color:#f1fa8c">"</span><span style="color:#8be9fd;font-style:italic">$STAT</span><span style="color:#f1fa8c">"</span> <span style="color:#ff79c6">==</span> <span style="color:#f1fa8c">"No"</span> <span style="color:#ff79c6">]</span>;<span style="color:#ff79c6">then</span>
</span></span><span style="display:flex;"><span>networksetup -setwebproxystate Ethernet on;
</span></span><span style="display:flex;"><span>/Users/guixing/bin/growlnotify -m <span style="color:#f1fa8c">"Proxy On"</span>;
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">else</span>
</span></span><span style="display:flex;"><span>networksetup -setwebproxystate Ethernet off;
</span></span><span style="display:flex;"><span>/Users/guixing/bin/growlnotify -m <span style="color:#f1fa8c">"Proxy Off"</span>;
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">fi</span>
</span></span></code></pre></div><p><code>growlnotify</code>是Growl的一个命令行工具。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="automator" label="Automator" scheme="https://blog.khsing.net/tags/automator/" />
    <category term="shellscript" label="Shellscript" scheme="https://blog.khsing.net/tags/shellscript/" />
    <published>2009-12-11T02:23:49Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Google的公共DNS服务]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2009/12/googledns.html" />
    <id>https://blog.khsing.net/2009/12/googledns.html</id>
    <updated>2009-12-04T03:41:21Z</updated>
    <summary type="html"><![CDATA[<p>Google提供了公共的DNS服务，三金和老黄马上就想到了对CDN厂商的冲击。我看了下Google的<a href="http://code.google.com/speed/public-dns/docs/performance.html">Performance Benefits</a>，记一笔。</p>
<p>发生在解析服务器和其它DNS服务器的传输时间，有三个原因。</p>]]></summary><content type="html"><![CDATA[<p>Google提供了公共的DNS服务，三金和老黄马上就想到了对CDN厂商的冲击。我看了下Google的<a href="http://code.google.com/speed/public-dns/docs/performance.html">Performance Benefits</a>，记一笔。</p>
<p>发生在解析服务器和其它DNS服务器的传输时间，有三个原因。</p>
<ul>
<li>无缓存。无缓存就要查其它的NS。</li>
<li>无法服务。要查的NS如果过载，就可能发生请求被丢弃或重发。</li>
<li>恶意的流量。DoS，重点是攻击，人为造成第二种情况甚至更严重。</li>
</ul>
<p>无缓存的情况有一些数据，NS服务器拿到一个无缓存的请求，会导致至少1次的外部NS查询，一般情况会是2次以上。</p>
<p>根据Googlebot的情况来看，平均解析时间是130ms，然而还有4-6%的请求会直接超时，这通常是UDP丢包或服务器无法到达。把丢包，死NS，NS配置错误等因素都计算进来的话，实际的解析时间是300-400ms。</p>
<p>无缓存的情况较难避免，原因有三：</p>
<ul>
<li>internet太大而且还在成长。新用户和新网站都在增长，并不是所有的网站都是那么的流行，所以大部分的请求都是无缓存的情况。</li>
<li>TTL太短，这个好象是个趋势，短TTL带来的就是更多的NS请求。</li>
<li>缓存是相对隔离的，NS大多放在LB设备下，缓存是随机的。所以就增加了无缓存的情况。</li>
</ul>
<p>Google采用了一些方法，如下：
fda0ec58d8eed89ac2ec5173e0b6d342
其中新的东东是这个预抓取！</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="dns" label="Dns" scheme="https://blog.khsing.net/tags/dns/" />
    <category term="google" label="Google" scheme="https://blog.khsing.net/tags/google/" />
    <published>2009-12-04T03:41:21Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[记一笔keep-alive和cache-control]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2009/12/keep-alivecache-control.html" />
    <id>https://blog.khsing.net/2009/12/keep-alivecache-control.html</id>
    <updated>2009-12-02T01:37:33Z</updated>
    <summary type="html"><![CDATA[<p>以前看的时候大多走马观花，补补课，记一笔吧。</p>
<ul>
<li>对于静态内容在HTTP Header中设置过期时间和最大时间，可以有效的使浏览器避免下载已经下载过的文件。</li>
<li>js,css,图片什么的都是静态内容，都应该考虑cache，但是html不是静态内容。</li>
<li>Expires和Cache-Control: max-age是资源终身鲜活的Cache控制。浏览器在过期之前不进行资源的鲜活检查。</li>
<li>Last-Modified 和ETag则是对资源的一种描述，属于启发式的Cache控制，浏览器在检查之后再决定使用Cache与否。</li>
<li>Expires 和Cache-Control: max-age，作用相同，设置其中一个即可，Last-Modified 和Etag也是冗余的设置，设置其中一个即可。</li>
<li>设置Expires，Cache-Control支持率不及Expires。这个值通常设置1个月，不要超过1年。如果不知道过期时间，就设长一点，当发生变化的时候使用URL的指纹。</li>
<li>要考虑到代理服务器的Cache情况，使用Cache-Control的public还是private。通常来说要set-cookie的地方就不要让代理Cache，所以设置为Private。</li>
<li>代理Cache的情况还有压缩与否的问题，有两种方法，一种是把Cache-Control设置为Private，使代理服务器不Cache这些内容。另一种是设置Vary: Accept-Encoding的Header，这可以使代理Cache两种内容，压缩的与不压缩的。</li>
<li>避免Firefox的URL哈希冲突，Firefox的URL哈希算法有8个字符的冲突边界。所以两个资源的URL差异应该在8个字符以上。</li>
<li>设置正确的Vary Header，IE对于设置了Vary头的资源是不Cache的，有例外，Vary头的值是Accept-Encoding和User-Agent的时候可以被IE给Cache，所以要么不设Vary头，要么就对Vary头进行裁剪。</li>
</ul>
<p>HTTP Keep-alive呢，重点看以下几个文档：</p>]]></summary><content type="html"><![CDATA[<p>以前看的时候大多走马观花，补补课，记一笔吧。</p>
<ul>
<li>对于静态内容在HTTP Header中设置过期时间和最大时间，可以有效的使浏览器避免下载已经下载过的文件。</li>
<li>js,css,图片什么的都是静态内容，都应该考虑cache，但是html不是静态内容。</li>
<li>Expires和Cache-Control: max-age是资源终身鲜活的Cache控制。浏览器在过期之前不进行资源的鲜活检查。</li>
<li>Last-Modified 和ETag则是对资源的一种描述，属于启发式的Cache控制，浏览器在检查之后再决定使用Cache与否。</li>
<li>Expires 和Cache-Control: max-age，作用相同，设置其中一个即可，Last-Modified 和Etag也是冗余的设置，设置其中一个即可。</li>
<li>设置Expires，Cache-Control支持率不及Expires。这个值通常设置1个月，不要超过1年。如果不知道过期时间，就设长一点，当发生变化的时候使用URL的指纹。</li>
<li>要考虑到代理服务器的Cache情况，使用Cache-Control的public还是private。通常来说要set-cookie的地方就不要让代理Cache，所以设置为Private。</li>
<li>代理Cache的情况还有压缩与否的问题，有两种方法，一种是把Cache-Control设置为Private，使代理服务器不Cache这些内容。另一种是设置Vary: Accept-Encoding的Header，这可以使代理Cache两种内容，压缩的与不压缩的。</li>
<li>避免Firefox的URL哈希冲突，Firefox的URL哈希算法有8个字符的冲突边界。所以两个资源的URL差异应该在8个字符以上。</li>
<li>设置正确的Vary Header，IE对于设置了Vary头的资源是不Cache的，有例外，Vary头的值是Accept-Encoding和User-Agent的时候可以被IE给Cache，所以要么不设Vary头，要么就对Vary头进行裁剪。</li>
</ul>
<p>HTTP Keep-alive呢，重点看以下几个文档：</p>
<ul>
<li><a href="http://httpd.apache.org/docs/2.0/mod/core.html#keepalive">http://httpd.apache.org/docs/2.0/mod/core.html#keepalive</a></li>
<li><a href="http://en.wikipedia.org/wiki/HTTP_persistent_connection">http://en.wikipedia.org/wiki/HTTP_persistent_connection</a></li>
<li><a href="http://en.wikipedia.org/wiki/Keepalive">http://en.wikipedia.org/wiki/Keepalive</a></li>
<li><a href="http://blog.opensource.org.cn/hdcola/2008/05/apachekeepalive-1.html">Apache的KeepAlive设置与优化 – 老黄纸条箱</a>（这篇是精华）</li>
</ul>
<p>Keep-alive是指在同一个连接中发出和接收多次HTTP请求。优点是：</p>
<ul>
<li>使用较少的CPU和内存</li>
<li>开启HTTP 管道</li>
<li>减少网络拥堵</li>
<li>在接下来的请求中，减少传输时间。</li>
<li>错误可以被报告但是不关闭TCP连接。</li>
</ul>
<p>在RFC 2617第47页里，一个用户客户端对任何服务器或代理不能维持2个以上的连接。代理可以维持2xN个连接。</p>
<p>IE6和7使用 2个长连接，IE8使用6个，都是在60秒之后超时。
Firefox的长连接都是在300秒超时，同时使用的连接可以自定义（按每主机或总计），Opera与Firefox类似。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="http" label="Http" scheme="https://blog.khsing.net/tags/http/" />
    <category term="protocol" label="Protocol" scheme="https://blog.khsing.net/tags/protocol/" />
    <category term="cache" label="Cache" scheme="https://blog.khsing.net/tags/cache/" />
    <category term="header" label="Header" scheme="https://blog.khsing.net/tags/header/" />
    <published>2009-12-02T01:37:33Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[卧底经济学的小记(1)]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2009/12/1.html" />
    <id>https://blog.khsing.net/2009/12/1.html</id>
    <updated>2009-12-01T01:51:21Z</updated>
    <summary type="html"><![CDATA[<blockquote>
<p>还价能力来自于稀缺性。</p>
</blockquote>
<p>稀缺有两种，一种是自然稀缺，另一种是人为稀缺。人为的通过政策和法律限制”边际”资源，造成资源的稀缺，进而提高了还价的能力。</p>]]></summary><content type="html"><![CDATA[<blockquote>
<p>还价能力来自于稀缺性。</p>
</blockquote>
<p>稀缺有两种，一种是自然稀缺，另一种是人为稀缺。人为的通过政策和法律限制”边际”资源，造成资源的稀缺，进而提高了还价的能力。</p>
<blockquote>
<p>如果1蒲式耳粮食值1美元，那么5蒲式耳粮食就是5美元的地租。如果1蒲式耳粮食值20万美元，那么5蒲式耳粮食就是100万美元的地租。</p>
</blockquote>
<p>现行的货币系统，因其本身做为一种商品，其价值的不稳定，对普通大众甚至是有一定的欺骗性。许多人认为货币是稳定不变的，至少认为变化不大，而实际上货币是有时间成本的，是在不断贬值的。当存款的利率低于当年的通货澎胀率，那么把钱存在银行实际上是在赔钱。实际这个例子是在说羊毛出在羊身上，地租的差异是因为地皮的差异，但是地租的高低则是议价的结果。而且地皮的差异并不是一承不变的，比如买房的时候周围还没有地铁，但是后来地铁新建之后就改变了地皮与地皮之间的差异。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="others" label="Others" scheme="https://blog.khsing.net/categories/others/" />
    <category term="booknote" label="Booknote" scheme="https://blog.khsing.net/tags/booknote/" />
    <category term="economic" label="Economic" scheme="https://blog.khsing.net/tags/economic/" />
    <published>2009-12-01T01:51:21Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[内存是新的硬盘]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2009/11/memory-is-new-disk.html" />
    <id>https://blog.khsing.net/2009/11/memory-is-new-disk.html</id>
    <updated>2009-11-27T14:47:17Z</updated>
    <summary type="html"><![CDATA[<p>High Scalability有篇<a href="http://highscalability.com/are-cloud-based-memory-architectures-next-big-thing">基于内存构建云的展望</a>。顺手做一下笔记：</p>
<ul>
<li>Google的一个查询能够在200ms之内完成，其性能主要来源就是索引信息完全在内存里。数以千记的服务器处理每一个查询，以使搜索结果能立刻返回。</li>
<li>Linkedin和digg都把自己的社会关系网络给塞到内存里了。</li>
<li>Facebook使用了800个memcached，存储了25T的数据，并且保持了99%的cache命中率。</li>
<li>在基于内存的结构中，内存将是一套存储系统。与基于缓存的结构不同之处是，内存中的数据即是最终数据。</li>
<li>缓存系统是以最小化磁盘读取数据的瓶颈为目的，而内存系统则可以定址整个应用的栈。 数据存储在内存里比之传统方式将获得更高的可用性。</li>
<li>内存＝高带宽和低传输时间。</li>
<li>内存的带宽是5GB/s，硬盘是100MB/s。内存比硬盘快数百倍。</li>
<li>硬盘的读传输时间大约在几秒的范围之内，内存则在5纳秒之内。内存比硬盘快了2000倍。</li>
<li><a href="http://www.infoq.com/news/2008/06/ram-is-disk">内存是新的硬盘</a>。</li>
<li>通过网络在内存中提交一个事务要比写在硬盘上快。同样的读内存也要比读硬盘快。</li>
<li>所以思想就是要跳过硬盘。</li>
<li>硬盘是新内存，内存是新缓存。50个硬盘的集群可以达到与内存相同的带宽。但是传输时间上的问题就要靠组织数据结构和优化算法实现了。</li>
</ul>
<p>记的比较乱，大概留个映像吧。要让数据靠CPU足够近。</p>]]></summary><content type="html"><![CDATA[<p>High Scalability有篇<a href="http://highscalability.com/are-cloud-based-memory-architectures-next-big-thing">基于内存构建云的展望</a>。顺手做一下笔记：</p>
<ul>
<li>Google的一个查询能够在200ms之内完成，其性能主要来源就是索引信息完全在内存里。数以千记的服务器处理每一个查询，以使搜索结果能立刻返回。</li>
<li>Linkedin和digg都把自己的社会关系网络给塞到内存里了。</li>
<li>Facebook使用了800个memcached，存储了25T的数据，并且保持了99%的cache命中率。</li>
<li>在基于内存的结构中，内存将是一套存储系统。与基于缓存的结构不同之处是，内存中的数据即是最终数据。</li>
<li>缓存系统是以最小化磁盘读取数据的瓶颈为目的，而内存系统则可以定址整个应用的栈。 数据存储在内存里比之传统方式将获得更高的可用性。</li>
<li>内存＝高带宽和低传输时间。</li>
<li>内存的带宽是5GB/s，硬盘是100MB/s。内存比硬盘快数百倍。</li>
<li>硬盘的读传输时间大约在几秒的范围之内，内存则在5纳秒之内。内存比硬盘快了2000倍。</li>
<li><a href="http://www.infoq.com/news/2008/06/ram-is-disk">内存是新的硬盘</a>。</li>
<li>通过网络在内存中提交一个事务要比写在硬盘上快。同样的读内存也要比读硬盘快。</li>
<li>所以思想就是要跳过硬盘。</li>
<li>硬盘是新内存，内存是新缓存。50个硬盘的集群可以达到与内存相同的带宽。但是传输时间上的问题就要靠组织数据结构和优化算法实现了。</li>
</ul>
<p>记的比较乱，大概留个映像吧。要让数据靠CPU足够近。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="memory" label="Memory" scheme="https://blog.khsing.net/tags/memory/" />
    <category term="cloud" label="Cloud" scheme="https://blog.khsing.net/tags/cloud/" />
    <published>2009-11-27T14:47:17Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Wave和科技创新]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2009/11/wave.html" />
    <id>https://blog.khsing.net/2009/11/wave.html</id>
    <updated>2009-11-16T01:28:30Z</updated>
    <summary type="html"><![CDATA[<p>周末参加了豆瓣举办的Python聚会，直播使用了Google的新产品:Wave，发现Wave真的可以把会议室给解放出来。</p>
<p>刚刚接触到Wave的人，大多都有些失望，发现Wave和一个即时通信工具没有什么两样，只不过组的成员是不固定的。同样也没有带来想象中的信息爆炸。</p>]]></summary><content type="html"><![CDATA[<p>周末参加了豆瓣举办的Python聚会，直播使用了Google的新产品:Wave，发现Wave真的可以把会议室给解放出来。</p>
<p>刚刚接触到Wave的人，大多都有些失望，发现Wave和一个即时通信工具没有什么两样，只不过组的成员是不固定的。同样也没有带来想象中的信息爆炸。</p>
<p>然而在这次聚会直播中，我们发现了Wave的真正实力，与IM相比Wave多出了这样几个功能。</p>
<ul>
<li>可以在任何时间把一个人拉入一个Wave中。（与其说是Wave不如说是Topic）</li>
<li>可以对消息进行再次的编辑、删除操作。</li>
<li>playback，回放可以让后来的人了解过程或者回顾讨论的顺序，比如讨论过程中拉了谁进来，谁说了什么话，谁修改了自己的或者别人的发言，哪句话被谁在什么时候给删除了等等，Wave让我们了解了这是一个过程。</li>
</ul>
<p>就上面这些功能就足以让我们不必到会议室进行讨论，而是直接在线上进行交流，快速的讨论，如果讨论过程中觉的某某人也应该参加这个讨论，那么就把他拉进来吧，就是这样，很简单，但是我们有会议记录，可以回放的会议记录。相对于会议室，缺少的可能是一个白板，我相信不久就会有这样的Widget出来。</p>
<p>科技创新改变生活方式，也改变行业的规则。twitter提供了个人的即时广播电台，YouTube提供网络电视，Wave提供了网络会议室，Facebook提供了网络的社会关系。如果有一天机器人可以送快递，我们就真的可以足不出户的生活了。</p>
<p>BTW: 当国际科技发展在改变国际友人的生活方式的同时，国内科技的发展同样的在改变国人的生活方式，比如翻墙。鬼子们通过网络(也许是免费的)看YouTube 1080p高清电影的时候，我们还在为自己1M ADSL付费。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="meetup" label="Meetup" scheme="https://blog.khsing.net/tags/meetup/" />
    <category term="google" label="Google" scheme="https://blog.khsing.net/tags/google/" />
    <category term="wave" label="Wave" scheme="https://blog.khsing.net/tags/wave/" />
    <published>2009-11-16T01:28:30Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[爬出那个坑]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2009/11/the-hole.html" />
    <id>https://blog.khsing.net/2009/11/the-hole.html</id>
    <updated>2009-11-02T04:09:10Z</updated>
    <summary type="html"><![CDATA[<p>在Practice of System and Network Administration中有一章是Climb out of the Hole。这个洞就是：</p>
<blockquote>
<p>一个家伙掉到了深到他不可能出来的坑里。听到有人路过，他成功的引起了注意。路人听完了他的遭遇，想了一会儿，也跳进了那个坑。</p>]]></summary><content type="html"><![CDATA[<p>在Practice of System and Network Administration中有一章是Climb out of the Hole。这个洞就是：</p>
<blockquote>
<p>一个家伙掉到了深到他不可能出来的坑里。听到有人路过，他成功的引起了注意。路人听完了他的遭遇，想了一会儿，也跳进了那个坑。</p>
<p>“你为什么要这样做？现在我们都被困在这儿了。”</p>
<p>“呃〜至少你现在不再孤独了。”路人说。</p>
</blockquote>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="story" label="Story" scheme="https://blog.khsing.net/tags/story/" />
    <published>2009-11-02T04:09:10Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[MacBook电池问题的解决方法]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2009/09/sovle-macbooks-battary-problem.html" />
    <id>https://blog.khsing.net/2009/09/sovle-macbooks-battary-problem.html</id>
    <updated>2009-09-29T18:02:01Z</updated>
    <summary type="html"><![CDATA[<p>在公司班车上闲来无事就翻了翻<a href="http://www.douban.com/subject/2303791/">《Mac OS X Snow Leopard – Pocket Guide》</a>这本书。看了其中关于电池问题的一些解决方法就随手翻译出来了。下面是译文：</p>
<p>MacBook的用户要面对一个桌面电脑用户所没有的问题，电池。大多数苹果电池的目标就是在300次完全充电周期之后还能提供原电池容量80%的电力（新的MacBook上是1000次）。想查看你的电池情况，第一个地方就是System Profiler->Power。</p>]]></summary><content type="html"><![CDATA[<p>在公司班车上闲来无事就翻了翻<a href="http://www.douban.com/subject/2303791/">《Mac OS X Snow Leopard – Pocket Guide》</a>这本书。看了其中关于电池问题的一些解决方法就随手翻译出来了。下面是译文：</p>
<p>MacBook的用户要面对一个桌面电脑用户所没有的问题，电池。大多数苹果电池的目标就是在300次完全充电周期之后还能提供原电池容量80%的电力（新的MacBook上是1000次）。想查看你的电池情况，第一个地方就是System Profiler->Power。</p>
<p>System Profiler的电源部分可以看到电池在完全充电后的电池容量、充电的次数以及电池的情况。如果充电次数已经接近电池的最大利用率，那也就是考虑更换新的电池的时候了。如果你的充电次数很少，但是电池还是早泄，你可以试试下面这些招数：</p>
<dl>
<dt>校正电池</dt>
<dd>在每个MacBook电池内部都有一个微控制器来告诉电脑还有多长将耗尽电力。有时，这个估算值可能和实际的性能偏差许多。要使电脑和这个控制器趋于一致，你需要重新校正电池。可以这样做，充满电池并且保持接通电源2个小时以上，然后拨掉电源。当出现电池电力严重不足的警告时，保存好你的文档，直到电脑进入睡眠状态，并且持续五个小时以上。再次接上电源充满电池。这时电池的指示器已经重新校正成功了。</dd>
<dt>重置SMC</dt>
<dd>SMC是系统管理控制器（System Management Controller）的缩写。这个芯片会对硬盘的减速、睡眠、唤醒和背光做出相应的反应。一个失灵的SMC可以阻止电池充电。要重置SMC（在关机之后），须先取下电池并且不接电源。按下电源键5秒。重新安回电池并且接通电源，启动电脑。这一招对于内置电池的MacBooks是无效的。对于这样的型号，关机并接通电源，然后按下左边的Shift-Control-Option和电源键5秒，重新启动电脑。</dd>
</dl>
<p>如果上述的招术都不能恢复你的电池，差不多就该去当地的苹果专卖店或授权维修中心的时候了。如果你的电脑在保，并且你的充电次数很低。苹果也许会更改你的电池。如果你的充电次数超过了推荐值（300次，新型号是1000次），而且性能的哀减是在意料之中，你也许需要更换电池或者与低电池容量继续生活。</p>
<p>注意：就像许多电脑制造商，苹果也有部分电池被召回。一些情况下是危险的电池被召回，另外的情况下是因为性能原因被召回。不管怎样，你都应该查查看你的电池是否在召回的范围之内。通常来说，苹果会为你更换电池，既便电脑已经过保。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="battery" label="Battery" scheme="https://blog.khsing.net/tags/battery/" />
    <category term="macbook" label="Macbook" scheme="https://blog.khsing.net/tags/macbook/" />
    <published>2009-09-29T18:02:01Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[繁体还是简体]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2009/09/tc-or-sc.html" />
    <id>https://blog.khsing.net/2009/09/tc-or-sc.html</id>
    <updated>2009-09-08T22:41:36Z</updated>
    <summary type="html"><![CDATA[<p>昨天看了Cathayan写的<a href="http://blog.cathayan.org/item/1989">繁体的优越感</a>一文，又和几个朋友聊了会儿，恰好又看到了<a href="http://www.ideographer.com/articles/article.php?aid=72">Snow Leopard的新中文字體</a>一文。其实cathayan的那篇是针对<a href="http://note.zhusee2.net/post/180268849/snow-leopard-heiti-xd">这一篇</a>的一个义气回应文。</p>
<p>事情的起因是因为<a href="http://www.apple.com">Apple</a>在Snow Leopard里把繁体中文界面的字体换成了Heiti TC，然后呢，很多台湾使用者都不适应了。纷纷站出来说苹果和这个字体的不是，比如zonble的<a href="http://zonble.github.com/tcfail/">这一篇</a>和前面的那一篇。</p>]]></summary><content type="html"><![CDATA[<p>昨天看了Cathayan写的<a href="http://blog.cathayan.org/item/1989">繁体的优越感</a>一文，又和几个朋友聊了会儿，恰好又看到了<a href="http://www.ideographer.com/articles/article.php?aid=72">Snow Leopard的新中文字體</a>一文。其实cathayan的那篇是针对<a href="http://note.zhusee2.net/post/180268849/snow-leopard-heiti-xd">这一篇</a>的一个义气回应文。</p>
<p>事情的起因是因为<a href="http://www.apple.com">Apple</a>在Snow Leopard里把繁体中文界面的字体换成了Heiti TC，然后呢，很多台湾使用者都不适应了。纷纷站出来说苹果和这个字体的不是，比如zonble的<a href="http://zonble.github.com/tcfail/">这一篇</a>和前面的那一篇。</p>
<p>就Heiti TC这个字体来说呢，阿杰的<a href="http://www.ideographer.com/articles/article.php?aid=72">Snow Leopard的新中文字體</a>一文说的比较中肯。另外也参看一下他所写的<a href="http://www.ideographer.com/articles/article.php?aid=67">是誰寫錯字（－）</a>、<a href="http://www.ideographer.com/articles/article.php?aid=68">（二）</a>、<a href="http://www.ideographer.com/articles/article.php?aid=69">（三）</a>、<a href="http://www.ideographer.com/articles/article.php?aid=70">（四）</a>。</p>
<p>要说这简繁之争嘛，以前我是倾向于繁体的，甚至觉的简体的某些字失去了一些文化内涵。比如这个听和聽。但是多了解了一些汉字简化的历史之后，又觉的对于常用字的简化是很有必要的。简化字历来就有，在行书、草书里很常见，只不过咱政府效法秦始皇，把这事给硬推下来了。当然了过尤不及，第二批简化字试了一段时间，发现太简单了，也太乱了，于是乎下马了。虽然下马了，但是这批简化字的影响还是不小的，小时候在街上看到许多字不认识，我爸告诉我这个字是算术的算，这个字是镶牙的镶，现在记不得这些字是怎么个写法了，但是说明一个问题就是第二批简化字影响了一大批人。就目前的第一批简化字来说，还是相当有进步意义的。比如郁闷的郁，繁体要写成”鬱”。别说是写了，看着就觉的够麻烦的。还有一个比较有争议的简化字就是”发”，繁体是”發財”的”發”还是”頭髪”的”髪”。简化字施行到现在有没有因为发的二义性影响了语义的理解？没有嘛，因为我们有上下文，而且我们已经白话了，单字词已经被大量的多字词代替了。</p>
<p>结合前些日子那44个字的字型变化来说，如果有时光机，把那些学院派送回甲古文、金文那个时代是比较合适的，要不他们就在自己的圈子里搞点小爱好，写几篇论文，聊以解闷完事。</p>
<p>最后再赞一赞阿杰和cathayan在国学上的造诣，真是我等学习的楷模。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="chinese" label="Chinese" scheme="https://blog.khsing.net/tags/chinese/" />
    <published>2009-09-08T22:41:36Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[人和机制]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2009/08/people-and-mechanism.html" />
    <id>https://blog.khsing.net/2009/08/people-and-mechanism.html</id>
    <updated>2009-08-14T01:01:03Z</updated>
    <summary type="html"><![CDATA[<p>上卫生间洗手，边上有一个自动出洗手液的机器。机器的下方常常有洗手液滴下来，滴在台子上，有些浪费。</p>
<p>公司最早使用的是手压式容器，每用一段时间就坏了，洗手液滴了一台子。现在自动了，但有人把手伸过去后，接了一点洗手液后就开始洗手了，剩下的洗水液自然就滴到台子上了。</p>]]></summary><content type="html"><![CDATA[<p>上卫生间洗手，边上有一个自动出洗手液的机器。机器的下方常常有洗手液滴下来，滴在台子上，有些浪费。</p>
<p>公司最早使用的是手压式容器，每用一段时间就坏了，洗手液滴了一台子。现在自动了，但有人把手伸过去后，接了一点洗手液后就开始洗手了，剩下的洗水液自然就滴到台子上了。</p>
<p>把这个小小的洗手液容器，看成是一种机制。总有些人不按机制行事，从而导致机制的失效。换个角度来想，如果洗手液容器改进一下，在下面设计一个接收盒，如果有从上面滴下来的洗手液就自动回收到容器里，是否可以阻止这种浪费呢？</p>
<p>现实中人与机制的问题远比这个洗手液的问题，复杂的多。面对很多事情，到底是机制的问题，还是人的问题。很多情况下是无奈。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="spark" label="Spark" scheme="https://blog.khsing.net/tags/spark/" />
    <published>2009-08-14T01:01:03Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[在Python里拿周序号]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2009/08/week-number-of-year-in-python.html" />
    <id>https://blog.khsing.net/2009/08/week-number-of-year-in-python.html</id>
    <updated>2009-08-05T00:07:28Z</updated>
    <summary type="html"><![CDATA[<p>早晨有同事问为什么Python里的<code>datetime</code>模块使用<code>strftime("%W")</code>取出来的Week number不对呢，好象差一周。使用<code>date "+%W"</code>得出的结果与Python的结果是一致的。</p>]]></summary><content type="html"><![CDATA[<p>早晨有同事问为什么Python里的<code>datetime</code>模块使用<code>strftime("%W")</code>取出来的Week number不对呢，好象差一周。使用<code>date "+%W"</code>得出的结果与Python的结果是一致的。</p>
<p>造成这种差异的原因是对于周数的定义不太一致，通常使用的周数指的是<a href="http://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a>中定义的。要输出这个ISO格式的周数应当使用<code>strftime("%V")</code>，<code>%U</code>、<code>%W</code>和<code>%V</code>的区别在<a href="http://www.freebsd.org/cgi/man.cgi?query=strftime&sektion=3&apropos=0&manpath=FreeBSD+7.2-RELEASE">strftime(3)</a>说的明白。虽然Python在<a href="http://docs.python.org/library/datetime.html#strftime-behavior">strftime文档</a>里没有说明可以使用<code>%V</code>格式化，但是在2.3、2.4、2.5和2.6里测试都可以正常的输出ISO的周数。Python提供的另外一种方法是<code>isocalendar()</code>，这个方法返回一个<code>tuple(Year, WeekOfYear, DayOfWeek)</code>。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="datetime" label="Datetime" scheme="https://blog.khsing.net/tags/datetime/" />
    <category term="iso" label="Iso" scheme="https://blog.khsing.net/tags/iso/" />
    <category term="week" label="Week" scheme="https://blog.khsing.net/tags/week/" />
    <published>2009-08-05T00:07:28Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[MB990的CPU型号]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2009/08/about-cpu-of-mb990.html" />
    <id>https://blog.khsing.net/2009/08/about-cpu-of-mb990.html</id>
    <updated>2009-07-31T22:16:24Z</updated>
    <summary type="html"><![CDATA[<p>昨天用<a href="http://www.plexapp.com/">Plex</a>看电影的时候发现MB990的CPU不是之前确认的P8400而是P7550。这就奇怪了，满世界都在说MB990的CPU是P8400，怎么成了P7550了，去Intel的网站上也是查不到P7550的信息。开始怀疑这个世界，是不是我的机器有问题，查来查去查出来了，这两个型号MB990都用了。<a href="http://www.ifixit.com">iFixit</a>的<a href="http://www.ifixit.com/Teardown/MacBook-Pro-13-Inch-Unibody/814/2">拆机照</a>也是P7550。</p>
<p>即然Apple用了这两种型号，那就不用怀疑世界了，但是这两个型号有什么差别呢？国民待遇有差？继续查，有人说p7550不支持VT，后来呢在<a href="http://macx.cn">MacX.cn</a>找到了一个<a href="http://www.machome.com.cn/thread-61674-1-1.html">贴子</a>，也查了贴子里的那些链接。看来这p7xxx系列应该是Intel专门给Apple的OEM货，参数上呢应该和p8400相差无几，而且也支持VT。Apple为什么会用两个型号的CPU在同一款机型上呢？费解。从这篇<a href="http://www.primatelabs.ca/blog/2009/06/macbook-pro-benchmarks-june-2009/">Benchmark</a>来看，p7550的性能还要比p8400的好一些。</p>]]></summary><content type="html"><![CDATA[<p>昨天用<a href="http://www.plexapp.com/">Plex</a>看电影的时候发现MB990的CPU不是之前确认的P8400而是P7550。这就奇怪了，满世界都在说MB990的CPU是P8400，怎么成了P7550了，去Intel的网站上也是查不到P7550的信息。开始怀疑这个世界，是不是我的机器有问题，查来查去查出来了，这两个型号MB990都用了。<a href="http://www.ifixit.com">iFixit</a>的<a href="http://www.ifixit.com/Teardown/MacBook-Pro-13-Inch-Unibody/814/2">拆机照</a>也是P7550。</p>
<p>即然Apple用了这两种型号，那就不用怀疑世界了，但是这两个型号有什么差别呢？国民待遇有差？继续查，有人说p7550不支持VT，后来呢在<a href="http://macx.cn">MacX.cn</a>找到了一个<a href="http://www.machome.com.cn/thread-61674-1-1.html">贴子</a>，也查了贴子里的那些链接。看来这p7xxx系列应该是Intel专门给Apple的OEM货，参数上呢应该和p8400相差无几，而且也支持VT。Apple为什么会用两个型号的CPU在同一款机型上呢？费解。从这篇<a href="http://www.primatelabs.ca/blog/2009/06/macbook-pro-benchmarks-june-2009/">Benchmark</a>来看，p7550的性能还要比p8400的好一些。</p>
<p>看来买机器要做的功课还很是很多的，像下面这个方法就可以查的出CPU的型号和特性列表。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>% sysctl -a machdep.cpu.brand_string
</span></span><span style="display:flex;"><span>machdep.cpu.brand_string: Intel<span style="color:#ff79c6">(</span>R<span style="color:#ff79c6">)</span> Core<span style="color:#ff79c6">(</span>TM<span style="color:#ff79c6">)</span><span style="color:#bd93f9">2</span> Duo CPU     P7550  @ 2.26GHz
</span></span><span style="display:flex;"><span>% sysctl -a machdep.cpu.features
</span></span><span style="display:flex;"><span>machdep.cpu.features: FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP MTRR PGE MCA CMOV PAT PSE36 CLFSH DS ACPI MMX FXSR SSE SSE2 SS HTT TM SSE3 MON DSCPL VMX EST TM2 SSSE3 CX16 TPR PDCM SSE4.1
</span></span><span style="display:flex;"><span>% sysctl -a machdep.cpu.extfeatures
</span></span><span style="display:flex;"><span>machdep.cpu.extfeatures: XD EM64T
</span></span></code></pre></div><p>这些特性码可以参考<a href="http://blog.incase.de/index.php/cpu-feature-flags-and-their-meanings/">CPU feature flags and their meanings</a>这篇文章。</p>
<p>参考：</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/List_of_Intel_Core_2_microprocessors#.22Penryn-3M.22_.28medium-voltage.2C_45_nm.29">Wikipedia: List of Intel Core 2 Microprocessors</a></li>
<li><a href="http://en.wikipedia.org/wiki/Macbookpro#Models_2">Wikipedia: Macbook Pro</a></li>
<li><a href="http://communities.vmware.com/thread/199449#1198447">Re: Does VMware Fusion require a CPU supporting Intel VT-x?</a></li>
<li><a href="http://forums.macrumors.com/archive/index.php/t-729110.html">Can MB990 (Macbook Pro 13 inch 2.26GHz) user test your cpu vt support?</a></li>
</ul>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="macbookpro" label="Macbookpro" scheme="https://blog.khsing.net/tags/macbookpro/" />
    <category term="plex" label="Plex" scheme="https://blog.khsing.net/tags/plex/" />
    <category term="cpu" label="Cpu" scheme="https://blog.khsing.net/tags/cpu/" />
    <published>2009-07-31T22:16:24Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[关于笔记本的电池]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2009/07/about-battery.html" />
    <id>https://blog.khsing.net/2009/07/about-battery.html</id>
    <updated>2009-07-28T01:59:52Z</updated>
    <summary type="html"><![CDATA[<p>买了新的本本之后要关注的一件事情就是电池了，更何况新的MBP已经不能换电池了，如果不好好的使用电池，最终导致更换新电池，这可是一笔不小的费用。</p>]]></summary><content type="html"><![CDATA[<p>买了新的本本之后要关注的一件事情就是电池了，更何况新的MBP已经不能换电池了，如果不好好的使用电池，最终导致更换新电池，这可是一笔不小的费用。</p>
<p>电池有一个充电周期次数的限制，有一个说法是当充电次数超过300次时，电池的实际容量就降低到了原始容量的80%。这个充电周期（full cycle）指的是充电前电池的储电量低于50％。也就是说一个周期并不是指充一次电，比方说第一次用掉了40%的电量，之后又充电到了100%，然后又用掉了20%，这都算在一个周期里。</p>
<p>即然如此，是不是可以一直接着电源呢？苹果给的建议是不要这样做，而且还要经常动一动笔记本，这样可以保证电池里的电子是流动的。</p>
<p>苹果还说到了一点是电池在充电时，两个小时就可以快速充电到80％，之后开始就进入了小电流的充电模式，直到100％，这个过程同样也是两个小时。</p>
<p>之前不知道是听了谁的建议说是每次最好把电池的电量用完再充电，真是把肠子都要悔青了。</p>
<p>参考</p>
<ul>
<li><a href="http://guides.macrumors.com/Laptop_Battery_Guide">Macrumors的笔电电池使用指南</a></li>
<li><a href="http://www.apple.com.cn/batteries/">苹果的电池使用指南</a></li>
</ul>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="battery" label="Battery" scheme="https://blog.khsing.net/tags/battery/" />
    <published>2009-07-28T01:59:52Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Mac版Office2008字体缺失]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2009/07/office2008-missing-fonts-on-mac.html" />
    <id>https://blog.khsing.net/2009/07/office2008-missing-fonts-on-mac.html</id>
    <updated>2009-07-27T07:26:49Z</updated>
    <summary type="html"><![CDATA[<p>Mac上的Office2008缺少两个Windows版Office常用的字体：黑体(simhei)和揩体(simkai)。为能在Mac下正常的看Windows版Office写出来的文档，从Windows上拷贝simhei.ttf和simkai.ttf两个文件安装之。</p>]]></summary><content type="html"><![CDATA[<p>Mac上的Office2008缺少两个Windows版Office常用的字体：黑体(simhei)和揩体(simkai)。为能在Mac下正常的看Windows版Office写出来的文档，从Windows上拷贝simhei.ttf和simkai.ttf两个文件安装之。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="office" label="Office" scheme="https://blog.khsing.net/tags/office/" />
    <category term="font" label="Font" scheme="https://blog.khsing.net/tags/font/" />
    <published>2009-07-27T07:26:49Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[败家记录-买了一台Macbook Pro]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2009/07/buy-a-macbookpro.html" />
    <id>https://blog.khsing.net/2009/07/buy-a-macbookpro.html</id>
    <updated>2009-07-26T01:38:20Z</updated>
    <summary type="html"><![CDATA[<p>昨天终于在<a href="http://www.macx.cn">MacX.cn</a>败了一台<a href="http://www.apple.com/macbookpro">Macbook Pro 13′</a>，型号是MB990。附带的还买了一个Apple的遥控器和一个Disport到DVI的转接线。</p>
<p>新机器的速度真是没的说了，用银子砸出来的性能真不是盖的，比老的iBook 12’那可真是鸟枪换了炮了（连用了三个真，兴奋程度可见一斑，XD）。</p>]]></summary><content type="html"><![CDATA[<p>昨天终于在<a href="http://www.macx.cn">MacX.cn</a>败了一台<a href="http://www.apple.com/macbookpro">Macbook Pro 13′</a>，型号是MB990。附带的还买了一个Apple的遥控器和一个Disport到DVI的转接线。</p>
<p>新机器的速度真是没的说了，用银子砸出来的性能真不是盖的，比老的iBook 12’那可真是鸟枪换了炮了（连用了三个真，兴奋程度可见一斑，XD）。</p>
<p>在买新机器之前我一直很纠结的是买13的还是买15的，这是第一个问题。周末和老婆在Apple Store看了一圈之后，老婆问我是15的好还是13的好，那还用说当然是15的好了。老婆接着问好在哪儿，我说主要屏幕大。老婆接着又问那么大的屏幕你用的上不，仔细的想了想，用处就是在Xcode或是Keynote的时候检查器能放在一边不挡编辑区常开着，仅此而已。确定了买13之后，是买高配版还是低配版，这是第二个问题。对比了990和991的配置，差别主要在CPU、内存和硬盘上，继续着第一个问题的解决方法，觉的CPU上的差别我不在乎，硬盘和内存都是Apple指定可以升级的东西，自行升级的费用显然是低于高配版很多的。就此决定下来了买MB990。</p>
<p>到目前为止一直让我光火的是在DVI转接头上打错了如意算盘，本想是买一个Disport转DVI的头，再从市场上买DVI转VGA和HDMI的头就可以了。结果是Apple给的DVI是DVI-D（这一段参看<a href="http://zh.wikipedia.org/wiki/DVI">维基百科</a>），是无法转到VGA的。在转向HDMI的时候也有一个问题是怎么把声音传给电视呢，HDMI是音频视频一条线，MacBook Pro可不是，怎么办？真是火大呀！！！</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="macbookpro" label="Macbookpro" scheme="https://blog.khsing.net/tags/macbookpro/" />
    <category term="apple" label="Apple" scheme="https://blog.khsing.net/tags/apple/" />
    <category term="buy" label="Buy" scheme="https://blog.khsing.net/tags/buy/" />
    <published>2009-07-26T01:38:20Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Python里怎么按数切字符串]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2009/07/split-a-string-by-number.html" />
    <id>https://blog.khsing.net/2009/07/split-a-string-by-number.html</id>
    <updated>2009-07-21T23:05:08Z</updated>
    <summary type="html"><![CDATA[<p>有个同事问Python里怎么把字符串按每两个切成一个列表。给了个答案</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#ff79c6">def</span> <span style="color:#50fa7b">splitByNumber</span>(s,n):
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">for</span> i <span style="color:#ff79c6">in</span> <span style="color:#8be9fd;font-style:italic">range</span>(<span style="color:#bd93f9">0</span>,<span style="color:#8be9fd;font-style:italic">len</span>(s),n):
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">yield</span> s[i:i<span style="color:#ff79c6">+</span>n]
</span></span></code></pre></div><p>用匿名函数可以写成一句话</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>splitByNumber <span style="color:#ff79c6">=</span> <span style="color:#ff79c6">lambda</span> s,n: <span style="color:#8be9fd;font-style:italic">map</span>(<span style="color:#ff79c6">lambda</span> x: s[x:x<span style="color:#ff79c6">+</span>n],<span style="color:#8be9fd;font-style:italic">range</span>(<span style="color:#bd93f9">0</span>,<span style="color:#8be9fd;font-style:italic">len</span>(s),n))
</span></span></code></pre></div><p>结果如下</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>splitByNumber(<span style="color:#f1fa8c">'fuckgfw'</span>,<span style="color:#bd93f9">2</span>)
</span></span><span style="display:flex;"><span>[<span style="color:#f1fa8c">'fu'</span>, <span style="color:#f1fa8c">'ck'</span>, <span style="color:#f1fa8c">'gf'</span>, <span style="color:#f1fa8c">'w'</span>]
</span></span><span style="display:flex;"><span>splitByNumber(<span style="color:#f1fa8c">'fuckgfw'</span>,<span style="color:#bd93f9">3</span>)
</span></span><span style="display:flex;"><span>[<span style="color:#f1fa8c">'fuc'</span>, <span style="color:#f1fa8c">'kgf'</span>, <span style="color:#f1fa8c">'w'</span>]
</span></span></code></pre></div>]]></summary><content type="html"><![CDATA[<p>有个同事问Python里怎么把字符串按每两个切成一个列表。给了个答案</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#ff79c6">def</span> <span style="color:#50fa7b">splitByNumber</span>(s,n):
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">for</span> i <span style="color:#ff79c6">in</span> <span style="color:#8be9fd;font-style:italic">range</span>(<span style="color:#bd93f9">0</span>,<span style="color:#8be9fd;font-style:italic">len</span>(s),n):
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">yield</span> s[i:i<span style="color:#ff79c6">+</span>n]
</span></span></code></pre></div><p>用匿名函数可以写成一句话</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>splitByNumber <span style="color:#ff79c6">=</span> <span style="color:#ff79c6">lambda</span> s,n: <span style="color:#8be9fd;font-style:italic">map</span>(<span style="color:#ff79c6">lambda</span> x: s[x:x<span style="color:#ff79c6">+</span>n],<span style="color:#8be9fd;font-style:italic">range</span>(<span style="color:#bd93f9">0</span>,<span style="color:#8be9fd;font-style:italic">len</span>(s),n))
</span></span></code></pre></div><p>结果如下</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>splitByNumber(<span style="color:#f1fa8c">'fuckgfw'</span>,<span style="color:#bd93f9">2</span>)
</span></span><span style="display:flex;"><span>[<span style="color:#f1fa8c">'fu'</span>, <span style="color:#f1fa8c">'ck'</span>, <span style="color:#f1fa8c">'gf'</span>, <span style="color:#f1fa8c">'w'</span>]
</span></span><span style="display:flex;"><span>splitByNumber(<span style="color:#f1fa8c">'fuckgfw'</span>,<span style="color:#bd93f9">3</span>)
</span></span><span style="display:flex;"><span>[<span style="color:#f1fa8c">'fuc'</span>, <span style="color:#f1fa8c">'kgf'</span>, <span style="color:#f1fa8c">'w'</span>]
</span></span></code></pre></div>]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="python" label="Python" scheme="https://blog.khsing.net/tags/python/" />
    <published>2009-07-21T23:05:08Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[让python-ldap与python25以及CentOS 4.x和谐共处]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2009/06/python-ldap-python25-centos4.html" />
    <id>https://blog.khsing.net/2009/06/python-ldap-python25-centos4.html</id>
    <updated>2009-06-03T04:45:42Z</updated>
    <summary type="html"><![CDATA[<p>最近写的一个东东要用python25和python-ldap，但是使用的那台主机是python23、ldap2.2.x和python-ldap2.0.1。安装了一个python25，python-ldap是2.3.8，编译失败，openldap2.2太老了，python-ldap2.3.8不向下兼容了。</p>]]></summary><content type="html"><![CDATA[<p>最近写的一个东东要用python25和python-ldap，但是使用的那台主机是python23、ldap2.2.x和python-ldap2.0.1。安装了一个python25，python-ldap是2.3.8，编译失败，openldap2.2太老了，python-ldap2.3.8不向下兼容了。</p>
<p>那我就用python-ldap2.0.x，这个版本已经不提供下载了，从sf.net的cvs上拉了一份2.0.11的版本，这次倒是编过去了。用的时候出问题了</p>
<pre tabindex="0"><code class="language-log" data-lang="log">*** glibc detected *** free(): invalid pointer: 0xb7f60728 ***
Aborted
</code></pre><p>查来查去有三个文章有说这种情况</p>
<ul>
<li><a href="http://www.mail-archive.com/python-ldap-dev@lists.sourceforge.net/msg00369.html">problem using python-ldap under fcgi</a></li>
<li><a href="https://bugs.launchpad.net/ubuntu/+source/python-cdb/+bug/157251">python-cdb double free</a></li>
<li>解决之道：<a href="http://www.notes.xythian.net/2007/10/24/python-cdb-032-52ubuntu2-with-python-25-causes-double-free-corruption-crash-on-dealloc/">python-cdb 0.32 (-5.2ubuntu2) with Python 2.5 causes double-free corruption crash on dealloc</a></li>
</ul>
<p>主要原因是<code>PyMem\_DEL</code>的调用已经不被推荐了，应该用<code>PyObject\_Del</code>。所以要对两个C文件做一些改动。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>sed -i.orig <span style="color:#f1fa8c">'s/PyMem_DEL/PyObject_Del/g'</span> Modules/LDAPObject.c
</span></span><span style="display:flex;"><span>sed -i.orig <span style="color:#f1fa8c">'s/PyMem_DEL/PyObject_Del/g'</span> Modules/ldapcontrol.c
</span></span></code></pre></div><p>然后再build，install就OK了</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="python" label="Python" scheme="https://blog.khsing.net/tags/python/" />
    <category term="ldap" label="Ldap" scheme="https://blog.khsing.net/tags/ldap/" />
    <published>2009-06-03T04:45:42Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[终端下的Spotlight]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2009/05/spotlight-in-terminal.html" />
    <id>https://blog.khsing.net/2009/05/spotlight-in-terminal.html</id>
    <updated>2009-05-21T08:40:59Z</updated>
    <summary type="html"><![CDATA[<p>在终端下也可以使用spotlight:<code>mdfind</code>。</p>
<p>找所有metadata包含something的东东</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>mdfind something
</span></span></code></pre></div><p>在<code>~/Downloads</code>里找something</p>]]></summary><content type="html"><![CDATA[<p>在终端下也可以使用spotlight:<code>mdfind</code>。</p>
<p>找所有metadata包含something的东东</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>mdfind something
</span></span></code></pre></div><p>在<code>~/Downloads</code>里找something</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>mdfind -onlyin ~/Downloads something
</span></span></code></pre></div><p>找<code>~/Pictures</code>下的所有图片</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>mdfind -onlyin ~/Pictures <span style="color:#f1fa8c">"kMDItemKind == *image"</span>
</span></span></code></pre></div><p>还有<code>mdls</code>查看文件metadata的工具</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="cli" label="CLI" scheme="https://blog.khsing.net/categories/cli/" />
    <category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="spotlight" label="Spotlight" scheme="https://blog.khsing.net/tags/spotlight/" />
    <category term="cli" label="Cli" scheme="https://blog.khsing.net/tags/cli/" />
    <published>2009-05-21T08:40:59Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[人生大事]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2009/05/biggest-thing-in-my-life.html" />
    <id>https://blog.khsing.net/2009/05/biggest-thing-in-my-life.html</id>
    <updated>2009-05-19T11:53:45Z</updated>
    <summary type="html"><![CDATA[<p>上月29号回家开始办终身大事，直到上周末在北京的朋友同事宴请结束，我的人生大事终于办完了。</p>
<p>老家在内蒙古阿拉善，是巴丹吉林沙漠的边缘地区。四月底五月初正是沙漠发狂的时节，这次回家也算是天公做美，竟然接连四五天都是放晴的好日子，倒有了一种秋高气爽的感觉。老家的一切基本照旧，只是随着西部大开发和重污染企业的西迁，空气和饮用水质量下降的太多。同学和朋友大多也都外出打工或学习，在家的少之又少，没见到几个。</p>]]></summary><content type="html"><![CDATA[<p>上月29号回家开始办终身大事，直到上周末在北京的朋友同事宴请结束，我的人生大事终于办完了。</p>
<p>老家在内蒙古阿拉善，是巴丹吉林沙漠的边缘地区。四月底五月初正是沙漠发狂的时节，这次回家也算是天公做美，竟然接连四五天都是放晴的好日子，倒有了一种秋高气爽的感觉。老家的一切基本照旧，只是随着西部大开发和重污染企业的西迁，空气和饮用水质量下降的太多。同学和朋友大多也都外出打工或学习，在家的少之又少，没见到几个。</p>
<p>婚礼当天请了我初中的语文老师做主持人，并宣读了结婚证书。席间老师在祝福我们的同时也顺便向我老婆揭发了一下我当年的恶习。:-D</p>
<p>来了不少的亲戚，说了不少祝福的话，也说了不少“要好好过日子”之类的话。结婚就是一个成人礼。</p>
<p>在内蒙办完大事，和爸妈告别后就去了辽宁老婆的老家待客。见了许些老婆家的亲戚、朋友、同学，也听了许些祝福的话。这才回到北京招待了一下朋友同事。</p>
<p>人生最大事，在不到20天的时间里过去了，当然了这只是一个开始。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="marriage" label="Marriage" scheme="https://blog.khsing.net/tags/marriage/" />
    <category term="travels" label="Travels" scheme="https://blog.khsing.net/tags/travels/" />
    <published>2009-05-19T11:53:45Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Mac OS X菜单栏图标的排序]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2009/05/sort-of-menu-bar.html" />
    <id>https://blog.khsing.net/2009/05/sort-of-menu-bar.html</id>
    <updated>2009-05-19T10:15:30Z</updated>
    <summary type="html"><![CDATA[<p>Mac OS X里菜单栏图标的顺序可以按着苹果键拖放，拖出菜单栏就删除了。</p>]]></summary><content type="html"><![CDATA[<p>Mac OS X里菜单栏图标的顺序可以按着苹果键拖放，拖出菜单栏就删除了。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="osx" label="Osx" scheme="https://blog.khsing.net/tags/osx/" />
    <category term="menubar" label="Menubar" scheme="https://blog.khsing.net/tags/menubar/" />
    <published>2009-05-19T10:15:30Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[参加CocoaHeads北京分舵的处女会]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2009/04/cocoaheads-1st-meeting.html" />
    <id>https://blog.khsing.net/2009/04/cocoaheads-1st-meeting.html</id>
    <updated>2009-04-19T07:09:35Z</updated>
    <summary type="html"><![CDATA[<p>昨天下午正好在海淀就去了<a href="http://cocoaheads.org">CocoaHeads</a><a href="http://cocoaheadsbj.org">北京分舵</a>的处女会（其实是1st meeting）。</p>
<p>刚一开始就是免费送书活动:<a href="http://www.douban.com/subject/2382413/">《Cocoa入门－使用Objective-C》</a>，因为后来书还有剩，我不仅自己拿了一本，还给朋友带了一本。暖场过程是让大家做自我介绍及活动的了解途径，发现<a href="http://twiiter.com">twiiter</a>真的不是一般的火，很多人都是看到了<a href="http://apple4.us">Apple4.us</a>的推来的。有位大哥热情真是高涨，从天津专程过来，可见大家欲火焚身，也可见Ben Chen同志真是为大家败火呀。场内共有三个MM，只有一位是开发人员，可见这还是个男人的世界，不过我们还是非常欢迎对Cocoa开发感兴趣不感兴趣的PLMM来调和阴阳。</p>]]></summary><content type="html"><![CDATA[<p>昨天下午正好在海淀就去了<a href="http://cocoaheads.org">CocoaHeads</a><a href="http://cocoaheadsbj.org">北京分舵</a>的处女会（其实是1st meeting）。</p>
<p>刚一开始就是免费送书活动:<a href="http://www.douban.com/subject/2382413/">《Cocoa入门－使用Objective-C》</a>，因为后来书还有剩，我不仅自己拿了一本，还给朋友带了一本。暖场过程是让大家做自我介绍及活动的了解途径，发现<a href="http://twiiter.com">twiiter</a>真的不是一般的火，很多人都是看到了<a href="http://apple4.us">Apple4.us</a>的推来的。有位大哥热情真是高涨，从天津专程过来，可见大家欲火焚身，也可见Ben Chen同志真是为大家败火呀。场内共有三个MM，只有一位是开发人员，可见这还是个男人的世界，不过我们还是非常欢迎对Cocoa开发感兴趣不感兴趣的PLMM来调和阴阳。</p>
<p>进入正场之后，Ben Chen手绘了Cocoa历史、OOP、MVC、GC等内容，又现场写了Demo，非常牛逼，然后Sunyong又讲了输入法相关问题。端木同学在中间插了许多有趣的故事，比如送的那本书是他一个人一个字一个字的翻写出来的（原书第二版只盖到10.2，他给盖到了10.5），结果他只在序里被提了一句，还有Mac自带的输入法比较烂，Motorola的输入法也比较烂，原因是这两个全世界输入法最烂的团队在同一栋大厦里工作等等了。</p>
<p>处女会显的比较羞涩<del>不要联想</del>，不够开放，讨论也不多。不过毕竟只是处女会嘛，已经很好了。有趣的东西会越来越多的。</p>
<p>活动的成果见：<a href="http://cocoaheadsbj.org/?p=33">Cocoaheads BJ</a></p>
<p>另外最近我必须要闭关还债了，欠了公司好多东西，5.1前要有个了结了。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="cocoa" label="Cocoa" scheme="https://blog.khsing.net/tags/cocoa/" />
    <category term="meetup" label="Meetup" scheme="https://blog.khsing.net/tags/meetup/" />
    <published>2009-04-19T07:09:35Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[又是万恶的户口制度]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2009/04/evilest-system.html" />
    <id>https://blog.khsing.net/2009/04/evilest-system.html</id>
    <updated>2009-04-15T18:59:55Z</updated>
    <summary type="html"><![CDATA[<p>看一条新闻：<a href="http://news.sina.com.cn/c/edu/2009-04-15/133015471044s.shtml">北京6月起6岁以下儿童免费体检</a>。注意其中有一句是”居住在北京市且具有北京市户籍的0至6岁儿童可享有这一免费服务”。你妈了个逼的！我上税是上在北京了还是上到老家了。</p>
<p>Update: 再来一条<a href="http://www.bj.xinhuanet.com/bjpd_sdzx/2009-04/15/content_16262403.htm">北京将对适龄妇女免费筛查宫颈癌乳腺癌</a>。看看吧，受惠人群是京藉适龄妇女，怎么也脱不了户口的关系。至于费用则是”两癌的检查费用由北京市、区（县）两级财政承担，子宫颈癌筛查每人按20元标准，乳腺癌筛查每人按60标准。”。</p>
<p>北京市地税局每年给我寄税单有个屁用，背面的”谢谢您为北京市作出的贡献”，只能是谢谢而已。</p>]]></summary><content type="html"><![CDATA[<p>看一条新闻：<a href="http://news.sina.com.cn/c/edu/2009-04-15/133015471044s.shtml">北京6月起6岁以下儿童免费体检</a>。注意其中有一句是”居住在北京市且具有北京市户籍的0至6岁儿童可享有这一免费服务”。你妈了个逼的！我上税是上在北京了还是上到老家了。</p>
<p>Update: 再来一条<a href="http://www.bj.xinhuanet.com/bjpd_sdzx/2009-04/15/content_16262403.htm">北京将对适龄妇女免费筛查宫颈癌乳腺癌</a>。看看吧，受惠人群是京藉适龄妇女，怎么也脱不了户口的关系。至于费用则是”两癌的检查费用由北京市、区（县）两级财政承担，子宫颈癌筛查每人按20元标准，乳腺癌筛查每人按60标准。”。</p>
<p>北京市地税局每年给我寄税单有个屁用，背面的”谢谢您为北京市作出的贡献”，只能是谢谢而已。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="china" label="China" scheme="https://blog.khsing.net/tags/china/" />
    <category term="policy" label="Policy" scheme="https://blog.khsing.net/tags/policy/" />
    <published>2009-04-15T18:59:55Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[DNS动态更新和通知机制]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2009/04/dns-dynamic-update-and-notify.html" />
    <id>https://blog.khsing.net/2009/04/dns-dynamic-update-and-notify.html</id>
    <updated>2009-04-15T10:23:40Z</updated>
    <summary type="html"><![CDATA[<p>DNS的动态更新是在RFC 2136里引入的，BIND8以后就支持了这一特性。用起来还是挺不错的。</p>
<p>Notify机制是在RFC 1996中提出来的，也是在BIND8以后支持的，微软的DNS服务器也是支持这一特性的。</p>]]></summary><content type="html"><![CDATA[<p>DNS的动态更新是在RFC 2136里引入的，BIND8以后就支持了这一特性。用起来还是挺不错的。</p>
<p>Notify机制是在RFC 1996中提出来的，也是在BIND8以后支持的，微软的DNS服务器也是支持这一特性的。</p>
<p>Notify的工作原理是这样的：发现一个master zone的序列号发生改变之后，向该zone的所有slave发送一个变更通知。而确定slave的方法就是查NS记录，然后去掉SOA记录中的master。</p>
<p>上面这个机制在一个有load balancer的环境里就有问题了，NS记录里只记录的是load balancer的一个虚拟IP，master的notify就不可能完整的送达所有的slave。BIND有一个<code>also-notify</code>的参数，以解决这类问题。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="system" label="System" scheme="https://blog.khsing.net/categories/system/" />
    <category term="rfc" label="Rfc" scheme="https://blog.khsing.net/tags/rfc/" />
    <category term="bind" label="Bind" scheme="https://blog.khsing.net/tags/bind/" />
    <category term="dns" label="Dns" scheme="https://blog.khsing.net/tags/dns/" />
    <published>2009-04-15T10:23:40Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[留学回国人太少]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2009/04/few-oversea-student-come-back.html" />
    <id>https://blog.khsing.net/2009/04/few-oversea-student-come-back.html</id>
    <updated>2009-04-03T12:57:32Z</updated>
    <summary type="html"><![CDATA[<p><a href="http://news.163.com/09/0402/06/55SIQ4RF0001124J.html">教育部透露30年来逾百万留学生留在国外</a>，这新闻想起了《论语》里的一句话：</p>
<blockquote>
<p>孔子曰：”求，君子疾夫舍曰欲之，而必为之辞。丘也，闻有国有家者，不患寡而患不均，不患贫而患不安，盖均无贫，和无寡，安无倾。夫如是，**故远人不服，则修文德以来之。**既来之，则安之。今由与求也，相夫子，远人不服而不能来也，邦分崩离析而不能守也，而谋动干戈于邦内，吾恐季孙之忧，不在颛臾，而在萧墙之内也。”</p>]]></summary><content type="html"><![CDATA[<p><a href="http://news.163.com/09/0402/06/55SIQ4RF0001124J.html">教育部透露30年来逾百万留学生留在国外</a>，这新闻想起了《论语》里的一句话：</p>
<blockquote>
<p>孔子曰：”求，君子疾夫舍曰欲之，而必为之辞。丘也，闻有国有家者，不患寡而患不均，不患贫而患不安，盖均无贫，和无寡，安无倾。夫如是，**故远人不服，则修文德以来之。**既来之，则安之。今由与求也，相夫子，远人不服而不能来也，邦分崩离析而不能守也，而谋动干戈于邦内，吾恐季孙之忧，不在颛臾，而在萧墙之内也。”</p>
</blockquote>
<p>人家出去了不回来到底是谁的原因？</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="china" label="China" scheme="https://blog.khsing.net/tags/china/" />
    <category term="international" label="International" scheme="https://blog.khsing.net/tags/international/" />
    <published>2009-04-03T12:57:32Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[备份很重要]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2009/03/backup-is-important.html" />
    <id>https://blog.khsing.net/2009/03/backup-is-important.html</id>
    <updated>2009-03-05T02:00:41Z</updated>
    <summary type="html"><![CDATA[<p>周末，机器硬盘挂了，只有DB做了备份，所以<a href="http://blog.khsing.net">blog</a>还在，其他的<a href="http://wiki.khsing.net">wiki</a>呀，<a href="http://www.khsing.net">www</a>呀全挂了。备份真的很重要。</p>]]></summary><content type="html"><![CDATA[<p>周末，机器硬盘挂了，只有DB做了备份，所以<a href="http://blog.khsing.net">blog</a>还在，其他的<a href="http://wiki.khsing.net">wiki</a>呀，<a href="http://www.khsing.net">www</a>呀全挂了。备份真的很重要。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="backup" label="Backup" scheme="https://blog.khsing.net/tags/backup/" />
    <category term="database" label="Database" scheme="https://blog.khsing.net/tags/database/" />
    <published>2009-03-05T02:00:41Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[央视大裤叉配楼的火灾]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2009/02/fire-at-cctv.html" />
    <id>https://blog.khsing.net/2009/02/fire-at-cctv.html</id>
    <updated>2009-02-10T14:49:38Z</updated>
    <summary type="html"><![CDATA[<p>引自《阿房宫赋》：</p>
<blockquote>
<p>楚人一炬，可怜焦土！</p>
</blockquote>]]></summary><content type="html"><![CDATA[<p>引自《阿房宫赋》：</p>
<blockquote>
<p>楚人一炬，可怜焦土！</p>
</blockquote>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="fireworks" label="Fireworks" scheme="https://blog.khsing.net/tags/fireworks/" />
    <published>2009-02-10T14:49:38Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Django m2m自包含]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2009/02/django-m2m.html" />
    <id>https://blog.khsing.net/2009/02/django-m2m.html</id>
    <updated>2009-02-10T07:12:34Z</updated>
    <summary type="html"><![CDATA[<p>设计一个group，可以包含user也可以包含group。user和group都可以被多个group包含。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#ff79c6">class</span> <span style="color:#50fa7b">Group</span>(models<span style="color:#ff79c6">.</span>Model):
</span></span><span style="display:flex;"><span>users <span style="color:#ff79c6">=</span> models<span style="color:#ff79c6">.</span>ManyToManyField(User)
</span></span><span style="display:flex;"><span>groups <span style="color:#ff79c6">=</span> models<span style="color:#ff79c6">.</span>ManyToManyField(<span style="color:#f1fa8c">'self'</span>)
</span></span></code></pre></div><p>update: <code>ManyToMany</code>对象有一个<code>symmetrical</code>的参数，当为<code>True</code>时的意思是对象间有互相拥有的关系，是双向的，反之为<code>False</code>时就是单向的。</p>]]></summary><content type="html"><![CDATA[<p>设计一个group，可以包含user也可以包含group。user和group都可以被多个group包含。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#ff79c6">class</span> <span style="color:#50fa7b">Group</span>(models<span style="color:#ff79c6">.</span>Model):
</span></span><span style="display:flex;"><span>users <span style="color:#ff79c6">=</span> models<span style="color:#ff79c6">.</span>ManyToManyField(User)
</span></span><span style="display:flex;"><span>groups <span style="color:#ff79c6">=</span> models<span style="color:#ff79c6">.</span>ManyToManyField(<span style="color:#f1fa8c">'self'</span>)
</span></span></code></pre></div><p>update: <code>ManyToMany</code>对象有一个<code>symmetrical</code>的参数，当为<code>True</code>时的意思是对象间有互相拥有的关系，是双向的，反之为<code>False</code>时就是单向的。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="django" label="Django" scheme="https://blog.khsing.net/tags/django/" />
    <category term="model" label="Model" scheme="https://blog.khsing.net/tags/model/" />
    <published>2009-02-10T07:12:34Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[对待平等]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2009/02/about-equal.html" />
    <id>https://blog.khsing.net/2009/02/about-equal.html</id>
    <updated>2009-02-06T02:07:57Z</updated>
    <summary type="html"><![CDATA[<p>云风的一篇<a href="http://blog.codingnow.com/2009/02/equality.html">平等</a>讲述了他们团队对平等的一些理解。<a href="http://herock.net/2009/02/post_16.html">herock</a>又对平等产生了许些质疑。我从电影<a href="http://www.douban.com/subject/1308837/">King Arthur</a>里觉的人与人之间的平等是重要的，也是人与人之间互相尊敬的一个基础。其实真正的平等并不存在，herock重在说明这一情况（唯物）。而云风则更注重人对人的平等，且不论平等是否存在（唯心）。</p>]]></summary><content type="html"><![CDATA[<p>云风的一篇<a href="http://blog.codingnow.com/2009/02/equality.html">平等</a>讲述了他们团队对平等的一些理解。<a href="http://herock.net/2009/02/post_16.html">herock</a>又对平等产生了许些质疑。我从电影<a href="http://www.douban.com/subject/1308837/">King Arthur</a>里觉的人与人之间的平等是重要的，也是人与人之间互相尊敬的一个基础。其实真正的平等并不存在，herock重在说明这一情况（唯物）。而云风则更注重人对人的平等，且不论平等是否存在（唯心）。</p>
<p>摘电影里的一句话</p>
<blockquote>
<p>Every man must be equal.</p>
</blockquote>
<p>我当时取名Gawain(圆桌骑士之一)即是受这部电影的影响。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="equal" label="Equal" scheme="https://blog.khsing.net/tags/equal/" />
    <published>2009-02-06T02:07:57Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[一个Safari地址栏的小技巧]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2009/02/safari-tip-in-addressbar.html" />
    <id>https://blog.khsing.net/2009/02/safari-tip-in-addressbar.html</id>
    <updated>2009-02-06T01:12:05Z</updated>
    <summary type="html"><![CDATA[<p>按Command(⌘)和L是移动焦点到地址栏，然后再按Command(⌘)和分号(; semicolon)就是修改当前地址的各个部分了，多按几次修改的部分就不同</p>]]></summary><content type="html"><![CDATA[<p>按Command(⌘)和L是移动焦点到地址栏，然后再按Command(⌘)和分号(; semicolon)就是修改当前地址的各个部分了，多按几次修改的部分就不同</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="osx" label="Osx" scheme="https://blog.khsing.net/tags/osx/" />
    <category term="shortcut" label="Shortcut" scheme="https://blog.khsing.net/tags/shortcut/" />
    <published>2009-02-06T01:12:05Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[扒Django Admin的登陆界面出来用]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2009/02/django-login.html" />
    <id>https://blog.khsing.net/2009/02/django-login.html</id>
    <updated>2009-02-03T06:48:48Z</updated>
    <summary type="html"><![CDATA[<p>最近写一个django项目的时候犯懒，把admin的login form给简单的扒出来用了用，感觉还不错。</p>
<p>先把<code>display_login_form</code>给扒出来</p>]]></summary><content type="html"><![CDATA[<p>最近写一个django项目的时候犯懒，把admin的login form给简单的扒出来用了用，感觉还不错。</p>
<p>先把<code>display_login_form</code>给扒出来</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#ff79c6">def</span> <span style="color:#50fa7b">display_login_form</span>(request, error_message<span style="color:#ff79c6">=</span><span style="color:#f1fa8c">''</span>, extra_context<span style="color:#ff79c6">=</span><span style="color:#ff79c6">None</span>):
</span></span><span style="display:flex;"><span>request<span style="color:#ff79c6">.</span>session<span style="color:#ff79c6">.</span>set_test_cookie()
</span></span><span style="display:flex;"><span>context <span style="color:#ff79c6">=</span> {
</span></span><span style="display:flex;"><span><span style="color:#f1fa8c">'title'</span>: <span style="color:#f1fa8c">'Log in'</span>,
</span></span><span style="display:flex;"><span><span style="color:#f1fa8c">'app_path'</span>: request<span style="color:#ff79c6">.</span>get_full_path(),
</span></span><span style="display:flex;"><span><span style="color:#f1fa8c">'error_message'</span>: error_message,
</span></span><span style="display:flex;"><span><span style="color:#f1fa8c">'root_path'</span>: <span style="color:#f1fa8c">''</span>,
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>context<span style="color:#ff79c6">.</span>update(extra_context <span style="color:#ff79c6">or</span> {})
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">return</span> render_to_response(<span style="color:#f1fa8c">'admin/login.html'</span>, context,
</span></span><span style="display:flex;"><span>context_instance<span style="color:#ff79c6">=</span>template<span style="color:#ff79c6">.</span>RequestContext(request)
</span></span><span style="display:flex;"><span>)
</span></span></code></pre></div><p>然后自己再写一个<code>login</code></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#ff79c6">def</span> <span style="color:#50fa7b">login</span>(request):
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">if</span> request<span style="color:#ff79c6">.</span>POST:
</span></span><span style="display:flex;"><span>username <span style="color:#ff79c6">=</span> request<span style="color:#ff79c6">.</span>POST[<span style="color:#f1fa8c">'username'</span>]
</span></span><span style="display:flex;"><span>password <span style="color:#ff79c6">=</span> request<span style="color:#ff79c6">.</span>POST[<span style="color:#f1fa8c">'password'</span>]
</span></span><span style="display:flex;"><span>user <span style="color:#ff79c6">=</span> auth<span style="color:#ff79c6">.</span>authenticate(username<span style="color:#ff79c6">=</span>username, password<span style="color:#ff79c6">=</span>password)
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">if</span> user <span style="color:#ff79c6">is</span> <span style="color:#ff79c6">not</span> <span style="color:#ff79c6">None</span> <span style="color:#ff79c6">and</span> user<span style="color:#ff79c6">.</span>is_active:
</span></span><span style="display:flex;"><span>auth<span style="color:#ff79c6">.</span>login(request, user)
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">return</span> http<span style="color:#ff79c6">.</span>HttpResponseRedirect(request<span style="color:#ff79c6">.</span>get_full_path())
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">else</span>:
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">return</span> display_login_form(request,<span style="color:#f1fa8c">"Login error!"</span>)
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">else</span>:
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">return</span> display_login_form(request)
</span></span></code></pre></div><p>需要认证的地方就这样写</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#ff79c6">def</span> <span style="color:#50fa7b">login_test</span>(request):
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">if</span> <span style="color:#ff79c6">not</span> request<span style="color:#ff79c6">.</span>user<span style="color:#ff79c6">.</span>is_authenticated():
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">return</span> login(request)
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">else</span>:
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">return</span> http<span style="color:#ff79c6">.</span>HttpResponse(<span style="color:#f1fa8c">"Welcome </span><span style="color:#f1fa8c">%s</span><span style="color:#f1fa8c">"</span> <span style="color:#ff79c6">%</span> request<span style="color:#ff79c6">.</span>user)
</span></span></code></pre></div><p>update: 上面那个方法还是不够懒，细读了一下文档，可以这样写。</p>
<ul>
<li>settings.py</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>LOGIN_URL <span style="color:#ff79c6">=</span> <span style="color:#f1fa8c">'/login/'</span>
</span></span><span style="display:flex;"><span>LOGIN_REDIRECT_URL <span style="color:#ff79c6">=</span> <span style="color:#f1fa8c">'/'</span>
</span></span></code></pre></div><ul>
<li>urls.py</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>(<span style="color:#f1fa8c">r</span><span style="color:#f1fa8c">'^login/'</span>,<span style="color:#f1fa8c">'django.contrib.auth.views.login'</span>,{<span style="color:#f1fa8c">'template_name'</span>: <span style="color:#f1fa8c">'admin/login.html'</span>}),
</span></span><span style="display:flex;"><span>(<span style="color:#f1fa8c">r</span><span style="color:#f1fa8c">'^logout/'</span>,<span style="color:#f1fa8c">'superman.lib.views.logout'</span>),
</span></span></code></pre></div>]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="django" label="Django" scheme="https://blog.khsing.net/tags/django/" />
    <category term="admin" label="Admin" scheme="https://blog.khsing.net/tags/admin/" />
    <published>2009-02-03T06:48:48Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[易用的touchpad]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2009/02/usability-of-touchpad.html" />
    <id>https://blog.khsing.net/2009/02/usability-of-touchpad.html</id>
    <updated>2009-02-03T05:00:52Z</updated>
    <summary type="html"><![CDATA[<p>有个朋友最近入手一台二手<a href="http://support.apple.com/kb/SP68">iBook(Late 2004)</a>。试用了一下，发现Touchpad不支持双个手指滚动的功能，立时感到易用性下降许多。</p>
<p>我用的是<a href="http://support.apple.com/kb/SP43">Mid 2005</a>版，有双个手指滚动的功能，很方便。以前有一个单键的Apple Pro Mouse，但是很不好用，后来索性把鼠标拨了不用了，直接用Touchpad。键盘使用的频率要比鼠标高的多，要用到鼠标，手掌就会离开托手的位置，之后再回到托手的位置，Touchpad虽然精度不高但是手掌不用离开托手（我是懒人）。如果仅是如此还是不够，要拖动滚动条的时候还是麻烦，Touchpad远不如鼠标的滚轮方便，但是Apple近乎完美的解决了这个问题，就是用两个手指滚动，这远比其他厂商采用的右侧滚动区(HP等)或第三键滚动(IBM)方便的多。</p>]]></summary><content type="html"><![CDATA[<p>有个朋友最近入手一台二手<a href="http://support.apple.com/kb/SP68">iBook(Late 2004)</a>。试用了一下，发现Touchpad不支持双个手指滚动的功能，立时感到易用性下降许多。</p>
<p>我用的是<a href="http://support.apple.com/kb/SP43">Mid 2005</a>版，有双个手指滚动的功能，很方便。以前有一个单键的Apple Pro Mouse，但是很不好用，后来索性把鼠标拨了不用了，直接用Touchpad。键盘使用的频率要比鼠标高的多，要用到鼠标，手掌就会离开托手的位置，之后再回到托手的位置，Touchpad虽然精度不高但是手掌不用离开托手（我是懒人）。如果仅是如此还是不够，要拖动滚动条的时候还是麻烦，Touchpad远不如鼠标的滚轮方便，但是Apple近乎完美的解决了这个问题，就是用两个手指滚动，这远比其他厂商采用的右侧滚动区(HP等)或第三键滚动(IBM)方便的多。</p>
<p>虽然现在的<a href="http://www.apple.com/support/macbook/">MacBook</a>都有了Multi-Touch，其易用性也已经不可同日而语了，但我觉的最重要的还是两个手指(two finger)滚动(两个手指还可以当右键使two finger+单击)。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="ibook" label="Ibook" scheme="https://blog.khsing.net/tags/ibook/" />
    <category term="touchpad" label="Touchpad" scheme="https://blog.khsing.net/tags/touchpad/" />
    <published>2009-02-03T05:00:52Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[备案警告]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2009/01/beian-notice.html" />
    <id>https://blog.khsing.net/2009/01/beian-notice.html</id>
    <updated>2009-01-31T12:25:51Z</updated>
    <summary type="html"><![CDATA[<p>刚才想down个驱动，上了nVidia，最后<a href="http://cn.download.nvidia.com/Windows/nForce/15.24/15.24_nforce_winvista32_international_whql.exe">打开的下载地址</a>竟然是：</p>
<blockquote>
<p>警告：该网站未备案，按照国家相关法律法规，该网站被临时屏蔽，请网站拥有者尽快到国家工业和信息化部备案网站http://www.miibeian.org.cn对网站进行备案!</p>]]></summary><content type="html"><![CDATA[<p>刚才想down个驱动，上了nVidia，最后<a href="http://cn.download.nvidia.com/Windows/nForce/15.24/15.24_nforce_winvista32_international_whql.exe">打开的下载地址</a>竟然是：</p>
<blockquote>
<p>警告：该网站未备案，按照国家相关法律法规，该网站被临时屏蔽，请网站拥有者尽快到国家工业和信息化部备案网站http://www.miibeian.org.cn对网站进行备案!</p>
<p>联系方式：+8622-27234501</p>
</blockquote>
<p>算你狠！！</p>
<p>update: 房东同学告诉我这个www.miibeian.org.cn的网站不是工信部的，域名被截了？今晚回家看看。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="beian" label="Beian" scheme="https://blog.khsing.net/tags/beian/" />
    <category term="china" label="China" scheme="https://blog.khsing.net/tags/china/" />
    <published>2009-01-31T12:25:51Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[周末小记]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2009/01/weekend.html" />
    <id>https://blog.khsing.net/2009/01/weekend.html</id>
    <updated>2009-01-12T01:12:17Z</updated>
    <summary type="html"><![CDATA[<p>周末和<a href="http://blog.sina.com.cn/wudi">老婆</a>去三里屯看了《非诚勿扰》，台词的彩头较多，剧情较差，140分钟有些太长了。有个笑场的地方是，葛尤说了一句：”孽缘啊！”，本不可乐，但是影院里有个小孩重复了这句话，一个童音版的话外音引得大家暴乐。从影院出来就去了<a href="http://http://www.apple.com.cn/retail/sanlitun/">Apple Store</a>，老婆看上了<a href="http://www.apple.com/macbookair/">MacBook Air</a>和<a href="http://www.apple.com/ipodtouch/">iPod Touch</a>，我依然对<a href="http://www.apple.com/macbookpro">MacBook Pro</a>心往神怡，新的unibody做工真是不可同日而语。质感！质感！无奈手中拮据，不能立时拍下这三样，日后一一置办吧！</p>]]></summary><content type="html"><![CDATA[<p>周末和<a href="http://blog.sina.com.cn/wudi">老婆</a>去三里屯看了《非诚勿扰》，台词的彩头较多，剧情较差，140分钟有些太长了。有个笑场的地方是，葛尤说了一句：”孽缘啊！”，本不可乐，但是影院里有个小孩重复了这句话，一个童音版的话外音引得大家暴乐。从影院出来就去了<a href="http://http://www.apple.com.cn/retail/sanlitun/">Apple Store</a>，老婆看上了<a href="http://www.apple.com/macbookair/">MacBook Air</a>和<a href="http://www.apple.com/ipodtouch/">iPod Touch</a>，我依然对<a href="http://www.apple.com/macbookpro">MacBook Pro</a>心往神怡，新的unibody做工真是不可同日而语。质感！质感！无奈手中拮据，不能立时拍下这三样，日后一一置办吧！</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="movie" label="Movie" scheme="https://blog.khsing.net/tags/movie/" />
    <category term="life" label="Life" scheme="https://blog.khsing.net/tags/life/" />
    <published>2009-01-12T01:12:17Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[在FreeBSD和Linux路由表里标记的差异]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2009/01/route-flags-in-freebsd-and-linux.html" />
    <id>https://blog.khsing.net/2009/01/route-flags-in-freebsd-and-linux.html</id>
    <updated>2009-01-09T07:43:27Z</updated>
    <summary type="html"><![CDATA[<p>对比一下FreeBSD和Linux的关于路由表Flags的定义
相同的有</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-txt" data-lang="txt"><span style="display:flex;"><span>U   Up: The route is active.
</span></span><span style="display:flex;"><span>H   Host: The route destination is a single host.
</span></span><span style="display:flex;"><span>G   Gateway: Send anything for this destination on to this remote system, which will figure out from there where to send it.
</span></span></code></pre></div><p>FreeBSD独有的:</p>]]></summary><content type="html"><![CDATA[<p>对比一下FreeBSD和Linux的关于路由表Flags的定义
相同的有</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-txt" data-lang="txt"><span style="display:flex;"><span>U   Up: The route is active.
</span></span><span style="display:flex;"><span>H   Host: The route destination is a single host.
</span></span><span style="display:flex;"><span>G   Gateway: Send anything for this destination on to this remote system, which will figure out from there where to send it.
</span></span></code></pre></div><p>FreeBSD独有的:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-txt" data-lang="txt"><span style="display:flex;"><span>S   Static: This route was configured manually, not automatically generated by the system.
</span></span><span style="display:flex;"><span>C   Clone: Generates a new route based upon this route for machines we connect to. This type of route is normally used for local networks.
</span></span><span style="display:flex;"><span>W   WasCloned: Indicated a route that was auto-configured based upon a local area network (Clone) route.
</span></span><span style="display:flex;"><span>L   Link: Route involves references to Ethernet hardware.
</span></span></code></pre></div><p>Linux独有的：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-txt" data-lang="txt"><span style="display:flex;"><span>R (reinstate route for dynamic routing)
</span></span><span style="display:flex;"><span>D (dynamically installed by daemon or redirect)
</span></span><span style="display:flex;"><span>M (modified from routing daemon or redirect)
</span></span><span style="display:flex;"><span>A (installed by addrconf)
</span></span><span style="display:flex;"><span>C (cache entry)
</span></span><span style="display:flex;"><span>!  (reject route)
</span></span></code></pre></div><p>FreeBSD里常看到的是UC, UHLW, UGS, UGHS这几种。UC根据本地网络配置自动生成的，UHLW是由UC根据连接情况自动生成的，UGS是手工配置的段网关路由，UGHS是手工配置的主机网关路由。</p>
<p>Linux里常看到的是U, UG, UGH这几种。U和BSD的UC是一样的，UG和UGS一样，UGH和UGHS一样，没有UHLW。</p>
<p>BSD明确区别了手工添加和自动生成，Linux则没有。还是BSD强大呀，XD</p>
<p>Ref:</p>
<ul>
<li>FreeBSD Handbook: <a href="http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/network-routing.html">Gateways and Routes</a></li>
<li>Linux man page: <a href="http://linux.die.net/man/8/route">route(8)</a></li>
</ul>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="freebsd" label="Freebsd" scheme="https://blog.khsing.net/tags/freebsd/" />
    <category term="linux" label="Linux" scheme="https://blog.khsing.net/tags/linux/" />
    <category term="netstat" label="Netstat" scheme="https://blog.khsing.net/tags/netstat/" />
    <published>2009-01-09T07:43:27Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[用sed从ifconfig取IP和mac地址]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2009/01/use-sed-to-got-mac-and-ip-from-ifconfig.html" />
    <id>https://blog.khsing.net/2009/01/use-sed-to-got-mac-and-ip-from-ifconfig.html</id>
    <updated>2009-01-07T15:28:54Z</updated>
    <summary type="html"><![CDATA[<p>作弊条一个，Linux下</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>ifconfig | sed -e <span style="color:#f1fa8c">'/.*inet addr:/!d;s///;s/ .*//'</span>
</span></span><span style="display:flex;"><span>ifconfig | sed -e <span style="color:#f1fa8c">'/.*HWaddr \([:[:xdigit:]\-]*\).*/{s//\1/;p}'</span>
</span></span></code></pre></div><p>FreeBSD下</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>ifconfig | sed -e <span style="color:#f1fa8c">'/.*inet /!d;s///;s/ .*//'</span>
</span></span><span style="display:flex;"><span>ifconfig | sed -e <span style="color:#f1fa8c">'/.*ether/!d;s///;'</span>
</span></span></code></pre></div><p>都要在sh或bash里执行。</p>]]></summary><content type="html"><![CDATA[<p>作弊条一个，Linux下</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>ifconfig | sed -e <span style="color:#f1fa8c">'/.*inet addr:/!d;s///;s/ .*//'</span>
</span></span><span style="display:flex;"><span>ifconfig | sed -e <span style="color:#f1fa8c">'/.*HWaddr \([:[:xdigit:]\-]*\).*/{s//\1/;p}'</span>
</span></span></code></pre></div><p>FreeBSD下</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>ifconfig | sed -e <span style="color:#f1fa8c">'/.*inet /!d;s///;s/ .*//'</span>
</span></span><span style="display:flex;"><span>ifconfig | sed -e <span style="color:#f1fa8c">'/.*ether/!d;s///;'</span>
</span></span></code></pre></div><p>都要在sh或bash里执行。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="linux" label="Linux" scheme="https://blog.khsing.net/tags/linux/" />
    <category term="mac" label="Mac" scheme="https://blog.khsing.net/tags/mac/" />
    <published>2009-01-07T15:28:54Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[别了2008]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2008/12/good-bye-2008.html" />
    <id>https://blog.khsing.net/2008/12/good-bye-2008.html</id>
    <updated>2008-12-31T13:13:09Z</updated>
    <summary type="html"><![CDATA[<p>再过几个小时，2008年就成为过去了，孔圣人先知先觉啊。想2008年我做的最重要的一件事是结婚，其次是买了房。</p>
<p>09年也不说什么了，为我刚刚成立的小家拼一年先！</p>]]></summary><content type="html"><![CDATA[<p>再过几个小时，2008年就成为过去了，孔圣人先知先觉啊。想2008年我做的最重要的一件事是结婚，其次是买了房。</p>
<p>09年也不说什么了，为我刚刚成立的小家拼一年先！</p>
<p>新年快乐！坐火车回家去了！</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="newyear" label="Newyear" scheme="https://blog.khsing.net/tags/newyear/" />
    <published>2008-12-31T13:13:09Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[vi中大小写转换的小技巧]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2008/12/upper-and-lower-tips-in-vi.html" />
    <id>https://blog.khsing.net/2008/12/upper-and-lower-tips-in-vi.html</id>
    <updated>2008-12-30T17:24:06Z</updated>
    <summary type="html"><![CDATA[<p>把25行到68行都换成小写</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-vim" data-lang="vim"><span style="display:flex;"><span>:<span style="color:#bd93f9">25</span>,<span style="color:#bd93f9">68</span>!tr [A-Z] [a-z]
</span></span></code></pre></div><p>link: <a href="http://vsbabu.org/techbits/viandunix.html">VI with UNIX tools</a></p>]]></summary><content type="html"><![CDATA[<p>把25行到68行都换成小写</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-vim" data-lang="vim"><span style="display:flex;"><span>:<span style="color:#bd93f9">25</span>,<span style="color:#bd93f9">68</span>!tr [A-Z] [a-z]
</span></span></code></pre></div><p>link: <a href="http://vsbabu.org/techbits/viandunix.html">VI with UNIX tools</a></p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="vim" label="Vim" scheme="https://blog.khsing.net/tags/vim/" />
    <published>2008-12-30T17:24:06Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Python简单介绍]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2008/12/intro-python.html" />
    <id>https://blog.khsing.net/2008/12/intro-python.html</id>
    <updated>2008-12-25T23:31:44Z</updated>
    <summary type="html"><![CDATA[<p>今天在公司做了一个简单的<a href="http://www.python.org">python</a>介绍。Presentation放在了<a href="http://www.slideshare.net/">SlideShare</a>，几个用例则放在了<a href="http://www.github.com">github</a></p>
<ul>
<li>SlideShare: <a href="http://www.slideshare.net/khsing/python-presentation-870960/">Python简单介绍</a></li>
<li>github: <a href="http://github.com/khsing/intropy/tree/master">Intro Python</a></li>
</ul>]]></summary><content type="html"><![CDATA[<p>今天在公司做了一个简单的<a href="http://www.python.org">python</a>介绍。Presentation放在了<a href="http://www.slideshare.net/">SlideShare</a>，几个用例则放在了<a href="http://www.github.com">github</a></p>
<ul>
<li>SlideShare: <a href="http://www.slideshare.net/khsing/python-presentation-870960/">Python简单介绍</a></li>
<li>github: <a href="http://github.com/khsing/intropy/tree/master">Intro Python</a></li>
</ul>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="python" label="Python" scheme="https://blog.khsing.net/tags/python/" />
    <category term="slideshare" label="Slideshare" scheme="https://blog.khsing.net/tags/slideshare/" />
    <category term="github" label="Github" scheme="https://blog.khsing.net/tags/github/" />
    <published>2008-12-25T23:31:44Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[“法”的读音]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2008/12/pronunciation-between-taiwan-and-mainland.html" />
    <id>https://blog.khsing.net/2008/12/pronunciation-between-taiwan-and-mainland.html</id>
    <updated>2008-12-24T11:04:42Z</updated>
    <summary type="html"><![CDATA[<p>看一个记录片是台湾某主持采访邓丽君弟弟的，中间有说到”法国”这个词，他们发”fa4″的音，而我们则发”fa3″的音，适才<a href="http://lukhnos.org/blog/zh/">lukhnos</a>在线，就聊了一会儿，发现台湾和大陆在很多地方的读音是不同的，他举了几个例子：</p>
<blockquote>
<p>辦公室 (shi3 vs. shi4)
俄國 (e2 vs. e4)
企業 (qi3 vs qi4)</p>]]></summary><content type="html"><![CDATA[<p>看一个记录片是台湾某主持采访邓丽君弟弟的，中间有说到”法国”这个词，他们发”fa4″的音，而我们则发”fa3″的音，适才<a href="http://lukhnos.org/blog/zh/">lukhnos</a>在线，就聊了一会儿，发现台湾和大陆在很多地方的读音是不同的，他举了几个例子：</p>
<blockquote>
<p>辦公室 (shi3 vs. shi4)
俄國 (e2 vs. e4)
企業 (qi3 vs qi4)</p>
</blockquote>
<p>像这些字眼还真是没有注意到过，两岸在这些字眼上的差异lukhnos觉的是民国初年的北方官腔与普通话的区别，区别源自于汉语普通话的统一和推广，这之间的定论怕是要找一个中文老教授问一问了。顺便了解了一下台湾目前大概有四种语言，分别是国语、闽南话、客家话和原住民语，这其中细分的话原住民语怕是有七八种吧。还有一个新移民语，其实就是越南移民了，不过比例实在很少很少。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="chinese" label="Chinese" scheme="https://blog.khsing.net/tags/chinese/" />
    <published>2008-12-24T11:04:42Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[GPGMail导致Mail.app异常退出]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2008/12/gpgmail-caused-mail-exit-unexpectly.html" />
    <id>https://blog.khsing.net/2008/12/gpgmail-caused-mail-exit-unexpectly.html</id>
    <updated>2008-12-16T10:51:18Z</updated>
    <summary type="html"><![CDATA[<p>昨天<a href="http://www.apple.com/">Apple</a>发布了<a href="http://support.apple.com/kb/HT3194">10.5.6的更新</a>，更新过了之后，打开Mail.app就Crash了，可能是<a href="http://www.sente.ch/software/GPGMail/English.lproj/GPGMail.html">GPGMail Plug-in</a>引起的。GPGMail的动作还真是快，马上就发布了针对10.5.6的修正版。赞一个~</p>
<blockquote>
<p>Nov 16, 2008 – GPGMail & 10.5 (Leopard)
GPGMail doesn’t work yet on 10.5, and can’t work as-is. I’m currently working on the port, and published a beta version. Please subscribe to gpgmail-users mailing list to get informed about issues. Final release will come out… later.
IMPORTANT: You need at least GPGMail d55 since MacOS X 10.5.6; previous versions of GPGMail will crash Mail.</p>]]></summary><content type="html"><![CDATA[<p>昨天<a href="http://www.apple.com/">Apple</a>发布了<a href="http://support.apple.com/kb/HT3194">10.5.6的更新</a>，更新过了之后，打开Mail.app就Crash了，可能是<a href="http://www.sente.ch/software/GPGMail/English.lproj/GPGMail.html">GPGMail Plug-in</a>引起的。GPGMail的动作还真是快，马上就发布了针对10.5.6的修正版。赞一个~</p>
<blockquote>
<p>Nov 16, 2008 – GPGMail & 10.5 (Leopard)
GPGMail doesn’t work yet on 10.5, and can’t work as-is. I’m currently working on the port, and published a beta version. Please subscribe to gpgmail-users mailing list to get informed about issues. Final release will come out… later.
IMPORTANT: You need at least GPGMail d55 since MacOS X 10.5.6; previous versions of GPGMail will crash Mail.</p>
</blockquote>
<p>但是这个版本是一个beta版，作者请大家订阅gpgmail-users的邮件列表，及时的反馈问题。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="gpgmail" label="Gpgmail" scheme="https://blog.khsing.net/tags/gpgmail/" />
    <category term="apple" label="Apple" scheme="https://blog.khsing.net/tags/apple/" />
    <category term="mail" label="Mail" scheme="https://blog.khsing.net/tags/mail/" />
    <published>2008-12-16T10:51:18Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[逝者已矣，来者可追]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2008/12/introspection.html" />
    <id>https://blog.khsing.net/2008/12/introspection.html</id>
    <updated>2008-12-15T09:09:46Z</updated>
    <summary type="html"><![CDATA[<p><a href="http://www.google.com/reader">Google Reader</a>是一个不错的工具，我定义了一个dailyRead的Folder里面大概有十几二十个人的Blog Feed。里面的文章多有精品，这些人多也被我视做标榜。今天就读到了<a href="http://blog.codingnow.com">云风</a>的离开工作的 12 月系列，多有自省之情，许是这自省已有多日，今日变的强烈了些。</p>]]></summary><content type="html"><![CDATA[<p><a href="http://www.google.com/reader">Google Reader</a>是一个不错的工具，我定义了一个dailyRead的Folder里面大概有十几二十个人的Blog Feed。里面的文章多有精品，这些人多也被我视做标榜。今天就读到了<a href="http://blog.codingnow.com">云风</a>的离开工作的 12 月系列，多有自省之情，许是这自省已有多日，今日变的强烈了些。</p>
<p>里面提到了写与数学和信息学相关内容Blog的主人<a href="http://www.matrix67.com/blog/">Matrix67</a>竟是一个学中文的北大学生。也提到了他10岁的妹妹4个小时就上手了美服Wow，还在写blog。</p>
<p>想我成长的过程中，也有朋友家人说过我”聪明”的，可据我自己测试，IQ不过才117，也就是一个非常普通的人，可我却还一堆的毛病。拖沓就是其中一件，很是令人生厌，其实认识到这个毛病已经很长时间了，可到如今这个毛病还在困扰着我，改了许久收效甚微。还有写作能力差，上学的时候不当一回事，作文也是胡写乱揍，如今认识到自己欠的债开始写blog，却也不甚勤奋。要这样下去，可不得了，只认识了毛病，却无改正的决心和毅力，着实可悲。常听人说人生就在朝夕之间，如今却任朝夕流逝如水。过去着虚位太甚，致使自己根基不稳，今当痛弃前非，知逝者已矣，来者可追。朝已至，夕不远矣，请君多珍重。</p>
<p>发了这一篇对我自己的牢骚，希望我能在自己不足的地方大有进步。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="google" label="Google" scheme="https://blog.khsing.net/tags/google/" />
    <category term="reader" label="Reader" scheme="https://blog.khsing.net/tags/reader/" />
    <published>2008-12-15T09:09:46Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[vim的tabstop]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2008/12/vims-tabstop.html" />
    <id>https://blog.khsing.net/2008/12/vims-tabstop.html</id>
    <updated>2008-12-12T14:12:01Z</updated>
    <summary type="html"><![CDATA[<p><a href="http://www.vim.org">vim</a>有几个关于tab和space的<a href="http://www.vim.org/htmldoc/options.html">option</a>让我迷惑了一阵子，查手册<code>tabstop</code>是一个tab<strong>占</strong>几个space，<code>softtabstop</code>是当编辑的时候一个tab<strong>表现为</strong>几个space，<code>shiftwidth</code>是缩进的时候用几个space。怎么设置才合适呢？</p>
<p>官方给了4个方案.</p>
<ol>
<li>保持<code>tabstop</code>是8，把<code>softtabstop</code>和<code>shiftwidth</code>设置成4，再加上<code>noexpandtab</code>，这样呢vim就会把space和tab给混用，但是呈现的时候是4个space。</li>
<li>把<code>tabstop,shiftwidth</code>设置成同一个值，加上<code>expandtab</code>，这样就会只用space，而不用tab了，这样不管tabstop怎么变样式也不会花了。</li>
<li>用<code>modeline</code>的方式把<code>tabstop</code>和<code>shiftwidth</code>的设置放在文件里，无论怎样编辑样式都不会花了。</li>
<li>永远保持<code>tabstop</code>和<code>shiftwidth</code>是同一个值，再加上<code>noexpandtab</code>。</li>
</ol>
<p>介于<a href="http://www.python.org/dev/peps/pep-3100/#style-changes">Py3k的Style Changes</a></p>]]></summary><content type="html"><![CDATA[<p><a href="http://www.vim.org">vim</a>有几个关于tab和space的<a href="http://www.vim.org/htmldoc/options.html">option</a>让我迷惑了一阵子，查手册<code>tabstop</code>是一个tab<strong>占</strong>几个space，<code>softtabstop</code>是当编辑的时候一个tab<strong>表现为</strong>几个space，<code>shiftwidth</code>是缩进的时候用几个space。怎么设置才合适呢？</p>
<p>官方给了4个方案.</p>
<ol>
<li>保持<code>tabstop</code>是8，把<code>softtabstop</code>和<code>shiftwidth</code>设置成4，再加上<code>noexpandtab</code>，这样呢vim就会把space和tab给混用，但是呈现的时候是4个space。</li>
<li>把<code>tabstop,shiftwidth</code>设置成同一个值，加上<code>expandtab</code>，这样就会只用space，而不用tab了，这样不管tabstop怎么变样式也不会花了。</li>
<li>用<code>modeline</code>的方式把<code>tabstop</code>和<code>shiftwidth</code>的设置放在文件里，无论怎样编辑样式都不会花了。</li>
<li>永远保持<code>tabstop</code>和<code>shiftwidth</code>是同一个值，再加上<code>noexpandtab</code>。</li>
</ol>
<p>介于<a href="http://www.python.org/dev/peps/pep-3100/#style-changes">Py3k的Style Changes</a></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-vimrc" data-lang="vimrc"><span style="display:flex;"><span><span style="color:#ff79c6">set</span> tabstop=<span style="color:#bd93f9">4</span>
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">set</span> shiftwidth=<span style="color:#bd93f9">4</span>
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">set</span> softtabstop=<span style="color:#bd93f9">4</span>
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">set</span> expandtab
</span></span></code></pre></div><p>这样设置应该是比较和谐了。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="vim" label="Vim" scheme="https://blog.khsing.net/tags/vim/" />
    <category term="stop" label="Stop" scheme="https://blog.khsing.net/tags/stop/" />
    <published>2008-12-12T14:12:01Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[解决Safari升级失败]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2008/12/sovle-safari-upgrade-failed-problem.html" />
    <id>https://blog.khsing.net/2008/12/sovle-safari-upgrade-failed-problem.html</id>
    <updated>2008-12-10T17:08:15Z</updated>
    <summary type="html"><![CDATA[<p>前几天Software Update老是提示Safari有升级可用，需要重启。安装时就出错了，是下载的包没有通过签名检查吧。Software Update把下载的包都放在了<code>/Library/Updates</code>目录下，进去之后把Safari的升级目录给干掉就升级正常了。</p>]]></summary><content type="html"><![CDATA[<p>前几天Software Update老是提示Safari有升级可用，需要重启。安装时就出错了，是下载的包没有通过签名检查吧。Software Update把下载的包都放在了<code>/Library/Updates</code>目录下，进去之后把Safari的升级目录给干掉就升级正常了。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="update" label="Update" scheme="https://blog.khsing.net/tags/update/" />
    <category term="software" label="Software" scheme="https://blog.khsing.net/tags/software/" />
    <category term="safari" label="Safari" scheme="https://blog.khsing.net/tags/safari/" />
    <published>2008-12-10T17:08:15Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[拿到结婚证]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2008/12/has-been-married.html" />
    <id>https://blog.khsing.net/2008/12/has-been-married.html</id>
    <updated>2008-12-01T09:06:36Z</updated>
    <summary type="html"><![CDATA[<p>已于二零零八年十一月廿七日（农历十月三十）上午10时34分登记结婚。</p>]]></summary><content type="html"><![CDATA[<p>已于二零零八年十一月廿七日（农历十月三十）上午10时34分登记结婚。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="marriage" label="Marriage" scheme="https://blog.khsing.net/tags/marriage/" />
    <published>2008-12-01T09:06:36Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[CNAME记录的排他性]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2008/11/cname-record-does-not-allow-coexist-with-other.html" />
    <id>https://blog.khsing.net/2008/11/cname-record-does-not-allow-coexist-with-other.html</id>
    <updated>2008-11-20T22:47:34Z</updated>
    <summary type="html"><![CDATA[<p>整理前人做的一个NS，发现@有一个SOA记录和一个CNAME记录。整理的时候DB文件怎么都是load failed。问了<a href="http://www.delphij.net">delphij</a>才知道这样写是不合法的。</p>
<pre tabindex="0"><code class="language-db" data-lang="db">@ IN NS ns
@ IN MX mail
@ IN CNAME www
www IN A 10.1.1.1
mail IN A 10.1.1.2
</code></pre><p>CNAME记录在<a href="http://www.ietf.org/rfc/rfc1912.txt">RFC1912</a>里说的比较清楚，CNAME不能和其它数据共存。</p>]]></summary><content type="html"><![CDATA[<p>整理前人做的一个NS，发现@有一个SOA记录和一个CNAME记录。整理的时候DB文件怎么都是load failed。问了<a href="http://www.delphij.net">delphij</a>才知道这样写是不合法的。</p>
<pre tabindex="0"><code class="language-db" data-lang="db">@ IN NS ns
@ IN MX mail
@ IN CNAME www
www IN A 10.1.1.1
mail IN A 10.1.1.2
</code></pre><p>CNAME记录在<a href="http://www.ietf.org/rfc/rfc1912.txt">RFC1912</a>里说的比较清楚，CNAME不能和其它数据共存。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="dns" label="Dns" scheme="https://blog.khsing.net/tags/dns/" />
    <category term="bind" label="Bind" scheme="https://blog.khsing.net/tags/bind/" />
    <category term="rfc" label="Rfc" scheme="https://blog.khsing.net/tags/rfc/" />
    <published>2008-11-20T22:47:34Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[整理使用的Mac软件]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2008/10/mac-software-list.html" />
    <id>https://blog.khsing.net/2008/10/mac-software-list.html</id>
    <updated>2008-10-28T12:31:25Z</updated>
    <summary type="html"><![CDATA[<p>算起来用上mac也已经二年了，一共重装过五次系统（2次<a href="http://www.apple.com/support/tiger/">Tiger</a>, 1次<a href="http://www.apple.com/support/leopard/">Leopard</a>测试版，2次<a href="http://www.apple.com/support/leopard/">Leopard</a>正式版，都是折腾），也试用过不少的软件。整理备忘。</p>
<dl>
<dt>浏览器</dt>
<dd>99%的时间是在用<a href="http://www.apple.com/safari/">Safari</a>，有时也用一下<a href="http://www.opera.com">Opera</a>和<a href="http://www.mozilla.com/firefox/">Firefox</a>，不过<a href="http://www.mozilla.com/firefox/">Firefox</a>在<a href="http://www.apple.com/support/ibook/">iBook</a>上的表现实在太差</dd>
<dt>下载</dt>
<dd>国内的FTP大多使用的是GB2312编码，而我多用UTF-8环境，<a href="http://cyberduck.ch/">Cyberduck</a>比较好用。还有用到命令行下的<a href="http://curl.haxx.se/">curl -O</a>。</dd>
<dt>文本编辑</dt>
<dd>以前常用的是<a href="http://emacs-app.sourceforge.net/">Emacs.app</a>，写<a href="http://www.django-project.org">Django</a>的时候觉的<a href="http://macromates.com/">Textmate</a>比较爽，但是要付费且中文支持不佳。现在回到命令行下的<a href="http://www.bostic.com/vi/">vi</a>，其实GUI的<a href="http://www.barebones.com/products/textwrangler/">TextWrangler</a>也不错</dd>
<dt>文书处理</dt>
<dd>目前是用了<a href="http://www.tug.org/mactex/">MacTex</a>、Office2008、<a href="http://www.apple.com/iwork/">iWork</a>三种，各有优势。</dd>
<dt>邮件处理</dt>
<dd>Mail.app工作用最可心，<a href="http://www.mutt.org">mutt</a>看列表最可心</dd>
<dt>图像处理</dt>
<dd>画流程图、结构图都用<a href="http://www.omnigroup.com/applications/omniplan/graffle">OmniGraffle</a>。处理图片大小等小问题，<a href="http://seashore.sourceforge.net/">Seashore</a>和Preview是的第一选择。</dd>
<dt>GTD</dt>
<dd><a href="http://en.wikipedia.org/wiki/Getting_Things_Done">GTD</a>则是最原始的手写记事本加上<a href="http://www.apple.com/support/ical/">iCal</a>，有试用<a href="http://www.omnigroup.com/applications/omniplan/">OmniPlan</a>什么的，还是不够易用。</dd>
<dt>系统增强</dt>
<dd><a href="http://www.blacktree.com/projects/quicksilver.html">Quicksilver</a>应该是安装的第一个软件了，<a href="http://www.freemacsoft.net/AppCleaner/">AppCleaner</a>在试用软件的时候常常用</dd>
<dt>其它</dt>
<dd><a href="http://www.bluem.net/downloads/plain-clip_en/">PlainClip</a>去掉剪切薄里的样式。<a href="http://perian.org/">Perian</a>给QuickTime加Plugin。<a href="http://www.flip4mac.com/">Flip4Mac</a>播wmv。<a href="http://code.google.com/p/ichm/">iChm</a>读chm。<a href="http://sourceforge.net/projects/cotvnc/">Chicken</a>连VNC。<a href="http://iconfactory.com/software/twitterrific">Twitterrific</a>连<a href="http://www.twitter.com">twitter</a>。</dd>
</dl>]]></summary><content type="html"><![CDATA[<p>算起来用上mac也已经二年了，一共重装过五次系统（2次<a href="http://www.apple.com/support/tiger/">Tiger</a>, 1次<a href="http://www.apple.com/support/leopard/">Leopard</a>测试版，2次<a href="http://www.apple.com/support/leopard/">Leopard</a>正式版，都是折腾），也试用过不少的软件。整理备忘。</p>
<dl>
<dt>浏览器</dt>
<dd>99%的时间是在用<a href="http://www.apple.com/safari/">Safari</a>，有时也用一下<a href="http://www.opera.com">Opera</a>和<a href="http://www.mozilla.com/firefox/">Firefox</a>，不过<a href="http://www.mozilla.com/firefox/">Firefox</a>在<a href="http://www.apple.com/support/ibook/">iBook</a>上的表现实在太差</dd>
<dt>下载</dt>
<dd>国内的FTP大多使用的是GB2312编码，而我多用UTF-8环境，<a href="http://cyberduck.ch/">Cyberduck</a>比较好用。还有用到命令行下的<a href="http://curl.haxx.se/">curl -O</a>。</dd>
<dt>文本编辑</dt>
<dd>以前常用的是<a href="http://emacs-app.sourceforge.net/">Emacs.app</a>，写<a href="http://www.django-project.org">Django</a>的时候觉的<a href="http://macromates.com/">Textmate</a>比较爽，但是要付费且中文支持不佳。现在回到命令行下的<a href="http://www.bostic.com/vi/">vi</a>，其实GUI的<a href="http://www.barebones.com/products/textwrangler/">TextWrangler</a>也不错</dd>
<dt>文书处理</dt>
<dd>目前是用了<a href="http://www.tug.org/mactex/">MacTex</a>、Office2008、<a href="http://www.apple.com/iwork/">iWork</a>三种，各有优势。</dd>
<dt>邮件处理</dt>
<dd>Mail.app工作用最可心，<a href="http://www.mutt.org">mutt</a>看列表最可心</dd>
<dt>图像处理</dt>
<dd>画流程图、结构图都用<a href="http://www.omnigroup.com/applications/omniplan/graffle">OmniGraffle</a>。处理图片大小等小问题，<a href="http://seashore.sourceforge.net/">Seashore</a>和Preview是的第一选择。</dd>
<dt>GTD</dt>
<dd><a href="http://en.wikipedia.org/wiki/Getting_Things_Done">GTD</a>则是最原始的手写记事本加上<a href="http://www.apple.com/support/ical/">iCal</a>，有试用<a href="http://www.omnigroup.com/applications/omniplan/">OmniPlan</a>什么的，还是不够易用。</dd>
<dt>系统增强</dt>
<dd><a href="http://www.blacktree.com/projects/quicksilver.html">Quicksilver</a>应该是安装的第一个软件了，<a href="http://www.freemacsoft.net/AppCleaner/">AppCleaner</a>在试用软件的时候常常用</dd>
<dt>其它</dt>
<dd><a href="http://www.bluem.net/downloads/plain-clip_en/">PlainClip</a>去掉剪切薄里的样式。<a href="http://perian.org/">Perian</a>给QuickTime加Plugin。<a href="http://www.flip4mac.com/">Flip4Mac</a>播wmv。<a href="http://code.google.com/p/ichm/">iChm</a>读chm。<a href="http://sourceforge.net/projects/cotvnc/">Chicken</a>连VNC。<a href="http://iconfactory.com/software/twitterrific">Twitterrific</a>连<a href="http://www.twitter.com">twitter</a>。</dd>
</dl>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <category term="software" label="Software" scheme="https://blog.khsing.net/tags/software/" />
    <category term="mac" label="Mac" scheme="https://blog.khsing.net/tags/mac/" />
    <published>2008-10-28T12:31:25Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[把Firewire还给我!]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2008/10/firewire-has-removed-from-macbook.html" />
    <id>https://blog.khsing.net/2008/10/firewire-has-removed-from-macbook.html</id>
    <updated>2008-10-17T10:54:59Z</updated>
    <summary type="html"><![CDATA[<p><a href="http://www.apple.com">Apple</a>发布了新的<a href="http://www.apple.com/macbook">Macbook</a>，全新的一体铝壳，镜面屏，大一号的多点触控面版，确实很Cool。可是Firewire的接口呢？Apple Remote呢？</p>
<p>去年买了一个移动硬盘，专门挑了一个有USB2.0和Firewire400接口的，贵出了100多大洋。使用过程中也体会到了Firewire的稳定性，期间换过一块硬盘，用Firewire才得以保全数据（USB拷到一半就出错了）。对此苹果倒是也有回应：”pro人应该用pro机”，我想说的是”pro机真的很贵！”</p>]]></summary><content type="html"><![CDATA[<p><a href="http://www.apple.com">Apple</a>发布了新的<a href="http://www.apple.com/macbook">Macbook</a>，全新的一体铝壳，镜面屏，大一号的多点触控面版，确实很Cool。可是Firewire的接口呢？Apple Remote呢？</p>
<p>去年买了一个移动硬盘，专门挑了一个有USB2.0和Firewire400接口的，贵出了100多大洋。使用过程中也体会到了Firewire的稳定性，期间换过一块硬盘，用Firewire才得以保全数据（USB拷到一半就出错了）。对此苹果倒是也有回应：”pro人应该用pro机”，我想说的是”pro机真的很贵！”</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="macbook" label="Macbook" scheme="https://blog.khsing.net/tags/macbook/" />
    <category term="apple" label="Apple" scheme="https://blog.khsing.net/tags/apple/" />
    <published>2008-10-17T10:54:59Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[测试安装了LaTeX插件]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2008/10/test-latex-pluggin.html" />
    <id>https://blog.khsing.net/2008/10/test-latex-pluggin.html</id>
    <updated>2008-10-09T11:28:20Z</updated>
    <summary type="html"><![CDATA[<p>给MT安上一个数学的心<a href="http://www.raquo.net/fine-structure/latex/">LaTeX for Movable Type</a>，需要在系统里安装<code>tetex,tetex-latex,ghostscript,imagemagick,perl-imagemagick</code>。这个插件用到了一个<a href="http://www.tangentspace.net/cz/archives/2005/04/latexrender-perl-port">Perl port of LaTeXRender</a>，其工作流是<code>latex -> dvips -> convert</code>。有latex,tmp两个目录要自行建立在Publishing Settings里的Site Root下。放个例子
$latex \sum_{i=1}^{n}(x_i-\overline x)(y_i-\overline y)$</p>]]></summary><content type="html"><![CDATA[<p>给MT安上一个数学的心<a href="http://www.raquo.net/fine-structure/latex/">LaTeX for Movable Type</a>，需要在系统里安装<code>tetex,tetex-latex,ghostscript,imagemagick,perl-imagemagick</code>。这个插件用到了一个<a href="http://www.tangentspace.net/cz/archives/2005/04/latexrender-perl-port">Perl port of LaTeXRender</a>，其工作流是<code>latex -> dvips -> convert</code>。有latex,tmp两个目录要自行建立在Publishing Settings里的Site Root下。放个例子
$latex \sum_{i=1}^{n}(x_i-\overline x)(y_i-\overline y)$</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="latex" label="Latex" scheme="https://blog.khsing.net/tags/latex/" />
    <published>2008-10-09T11:28:20Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[电信的服务很不错]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2008/07/good-service-via-chinatelcom.html" />
    <id>https://blog.khsing.net/2008/07/good-service-via-chinatelcom.html</id>
    <updated>2008-07-30T03:42:19Z</updated>
    <summary type="html"><![CDATA[<p>新家里要安装电话和宽带，小区是电信包的，但是我觉的网通我用的时间比较长了，可能工作起来也比较方便，另外打电话给10060套餐也要比电信的便宜一些。还咨询了所在小区能不能安装等等，最后10060告诉我在通州北苑的营业厅办理，后付费是要有北京人作保。于是就约好了哥们一起去。排了很长的队，办理时说：“您那个小区应该是在梨园办理，但是我们这里也能办”，吾心稍安。又说：“对不起，您那个小区是电信的，我们安装不了。”</p>]]></summary><content type="html"><![CDATA[<p>新家里要安装电话和宽带，小区是电信包的，但是我觉的网通我用的时间比较长了，可能工作起来也比较方便，另外打电话给10060套餐也要比电信的便宜一些。还咨询了所在小区能不能安装等等，最后10060告诉我在通州北苑的营业厅办理，后付费是要有北京人作保。于是就约好了哥们一起去。排了很长的队，办理时说：“您那个小区应该是在梨园办理，但是我们这里也能办”，吾心稍安。又说：“对不起，您那个小区是电信的，我们安装不了。”</p>
<p>没办法，当即打10000给电信，说电话就可以办理，然后介绍了几个套餐，选了e家158的包月，并且告诉我2天后就上门安装。过了10几分钟又打电话过来让我选电话号码。又过了半个多小时打电话过来说还可以送无线路由。整个过程也不过1个小时的时间。</p>
<p>1天后就有安装工人打电话给我第二天上门安装，定好了时间，他们准时来，安装完了。工人还接通客服人员问我安装工人有没有按时到？进来的时候有没有带鞋套？送的无线路由送了没？给您的帐号试了没有，是不是XXXXXX？密码有没有更改？等等。看来在北京选电信是一个好选择。</p>
<p>Update: 经过3年的使用，我收回这个不错的评价。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="network" label="Network" scheme="https://blog.khsing.net/tags/network/" />
    <category term="home" label="Home" scheme="https://blog.khsing.net/tags/home/" />
    <published>2008-07-30T03:42:19Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[FreeBSD导致同事工作效率低下？]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2008/07/freebsd-make-coworker-low-efficiency.html" />
    <id>https://blog.khsing.net/2008/07/freebsd-make-coworker-low-efficiency.html</id>
    <updated>2008-07-23T03:16:14Z</updated>
    <summary type="html"><![CDATA[<p>有一同事向我抱怨我使用的那台FreeBSD导致了他工作效率低下，比如他在Linux下调试正常的PHP在那台FreeBSD上却是失败的，而且那个<code>vi</code>也是让他相当恼火。</p>]]></summary><content type="html"><![CDATA[<p>有一同事向我抱怨我使用的那台FreeBSD导致了他工作效率低下，比如他在Linux下调试正常的PHP在那台FreeBSD上却是失败的，而且那个<code>vi</code>也是让他相当恼火。</p>
<p>后来发现php里的代码是php4时代的的东东（主要是问号后面没有加上php），且是与html混写的。在他使用vi的时候发现，使他恼火的是不能向前删除。</p>
<p>就是这样，我还能说什么呢。安装一个<code>vim</code>吧。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="freebsd" label="Freebsd" scheme="https://blog.khsing.net/tags/freebsd/" />
    <category term="vim" label="Vim" scheme="https://blog.khsing.net/tags/vim/" />
    <published>2008-07-23T03:16:14Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Django Admin的变化]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2008/07/django-admin-changes.html" />
    <id>https://blog.khsing.net/2008/07/django-admin-changes.html</id>
    <updated>2008-07-21T09:50:28Z</updated>
    <summary type="html"><![CDATA[<p>今天从django的svn拉出一份出来写点东东，写好了models，runserver查看admin的时候却出现了如下提示</p>
<blockquote>
<p>You don’t have permission to edit anything</p>]]></summary><content type="html"><![CDATA[<p>今天从django的svn拉出一份出来写点东东，写好了models，runserver查看admin的时候却出现了如下提示</p>
<blockquote>
<p>You don’t have permission to edit anything</p>
</blockquote>
<p>翻了一下文档，发现已经0.97的时候变化了很多的东东。最后说明是要这样写。
在<code>urls.py</code>里写入</p>
<pre tabindex="0"><code>from django.contrib import admin
admin.autodiscover()
</code></pre><p>在<code>settings.py</code>中的<code>INSTALLED_APPS</code>部分加入</p>
<pre tabindex="0"><code>INSTALLED_APPS = (
'django.contrib.admin')
</code></pre><p><del>在<code>models.py</code>的最后要写上</del></p>
<pre tabindex="0"><code>from django.contrib import admin
admin.site.register(MODELNAME)
</code></pre><p>这样才算是OK。
update: django 1.0之后的应该把上面这一段放到<code>admin.py</code>里去，而且要把以前写在<code>models.py</code>里的<code>class admin</code>部分也放到<code>admin.py</code>例子如下：</p>
<pre tabindex="0"><code>from django.contrib import admin
from models import Module
class ModuleAdmin(admin.ModelAdmin):
list_display = ['name','manager','isdpool']
filter_horizontal = ['host']
admin.site.register(Module,ModuleAdmin)
</code></pre>]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="django" label="Django" scheme="https://blog.khsing.net/tags/django/" />
    <category term="svn" label="Svn" scheme="https://blog.khsing.net/tags/svn/" />
    <published>2008-07-21T09:50:28Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[macport的一些常用操作]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2008/07/macport-operation.html" />
    <id>https://blog.khsing.net/2008/07/macport-operation.html</id>
    <updated>2008-07-11T01:02:38Z</updated>
    <summary type="html"><![CDATA[<p><code>macport</code>是BSDer们在Mac下无法或缺的工具之一，其使用时支持的命令很多。罗列如下：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>activate, archive, build, cat, cd, checksum, clean, compact, configure,
</span></span><span style="display:flex;"><span>contents, deactivate, dependents, deps, destroot, dir, distcheck, dmg,
</span></span><span style="display:flex;"><span>dpkg, echo, ed, edit, exit, extract, fetch, file, gohome, help, info,
</span></span><span style="display:flex;"><span>install, installed, lint, list, livecheck, location, mdmg, mirror, mpkg,
</span></span><span style="display:flex;"><span>outdated, patch, pkg, provides, quit, rpm, search, selfupdate, srpm,
</span></span><span style="display:flex;"><span>submit, sync, test, trace, unarchive, uncompact, uninstall, upgrade,
</span></span><span style="display:flex;"><span>url, usage, variants, version, work
</span></span></code></pre></div><p>但是最常用也就无非是<code>install,selfupdate,upgrade,uninstall,search,list</code>这几个。
其实<code>macport</code>还有一种叫伪名称的东东，罗列如下：</p>]]></summary><content type="html"><![CDATA[<p><code>macport</code>是BSDer们在Mac下无法或缺的工具之一，其使用时支持的命令很多。罗列如下：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>activate, archive, build, cat, cd, checksum, clean, compact, configure,
</span></span><span style="display:flex;"><span>contents, deactivate, dependents, deps, destroot, dir, distcheck, dmg,
</span></span><span style="display:flex;"><span>dpkg, echo, ed, edit, exit, extract, fetch, file, gohome, help, info,
</span></span><span style="display:flex;"><span>install, installed, lint, list, livecheck, location, mdmg, mirror, mpkg,
</span></span><span style="display:flex;"><span>outdated, patch, pkg, provides, quit, rpm, search, selfupdate, srpm,
</span></span><span style="display:flex;"><span>submit, sync, test, trace, unarchive, uncompact, uninstall, upgrade,
</span></span><span style="display:flex;"><span>url, usage, variants, version, work
</span></span></code></pre></div><p>但是最常用也就无非是<code>install,selfupdate,upgrade,uninstall,search,list</code>这几个。
其实<code>macport</code>还有一种叫伪名称的东东，罗列如下：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>all, current, active, inactive, installed, uninstalled, and outdated.
</span></span></code></pre></div><p>以下是我常用的一些macport命令</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>port -d selfupdate <span style="color:#6272a4">#升级macport, 如同：cd /usr/ports && make update</span>
</span></span><span style="display:flex;"><span>port install xxx <span style="color:#6272a4">#安装xxx软件, 如同：cd /usr/ports/kkk/xxx && make install</span>
</span></span><span style="display:flex;"><span>port upgrade outdated <span style="color:#6272a4">#升级所有已过时的软件，作用如portupgrade -a</span>
</span></span><span style="display:flex;"><span>port installed <span style="color:#6272a4">#列出已经安装的软件，如pkg_info</span>
</span></span><span style="display:flex;"><span>port search xxx <span style="color:#6272a4">#列出与xxx条件相符的软件，如cd /usr/ports/ && make search name=xxx</span>
</span></span></code></pre></div>]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="macport" label="Macport" scheme="https://blog.khsing.net/tags/macport/" />
    <category term="osx" label="Osx" scheme="https://blog.khsing.net/tags/osx/" />
    <published>2008-07-11T01:02:38Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[关于DNS Cache Flush]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2008/07/dns-cache-flush.html" />
    <id>https://blog.khsing.net/2008/07/dns-cache-flush.html</id>
    <updated>2008-07-04T11:10:32Z</updated>
    <summary type="html"><![CDATA[<p>目前大多数的操作系统都有一个DNS Cache，在调整DNS或是测试的时候可能会清理Cache记录一下各个操作系统清理DNS Cache的方法</p>
<ul>
<li>Mac OS X 10.4 Tiger</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>lookupd -flushcache
</span></span></code></pre></div><ul>
<li>Mac OS X 10.5 Leopard</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>dscacheutil -flushcache
</span></span></code></pre></div><ul>
<li>Windows</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-cmd" data-lang="cmd"><span style="display:flex;"><span>ipconfig /flushdns
</span></span></code></pre></div><ul>
<li>Linux</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>/etc/init.d/nscd restart
</span></span></code></pre></div><p>询问<a href="http://blog.delphij.net">delphij</a>FreeBSD有没有一个DNS Cache，答曰”有”，就是<code>ncsd</code>。但是默认这个服务是没有开的，也就是没有Cache。</p>]]></summary><content type="html"><![CDATA[<p>目前大多数的操作系统都有一个DNS Cache，在调整DNS或是测试的时候可能会清理Cache记录一下各个操作系统清理DNS Cache的方法</p>
<ul>
<li>Mac OS X 10.4 Tiger</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>lookupd -flushcache
</span></span></code></pre></div><ul>
<li>Mac OS X 10.5 Leopard</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>dscacheutil -flushcache
</span></span></code></pre></div><ul>
<li>Windows</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-cmd" data-lang="cmd"><span style="display:flex;"><span>ipconfig /flushdns
</span></span></code></pre></div><ul>
<li>Linux</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>/etc/init.d/nscd restart
</span></span></code></pre></div><p>询问<a href="http://blog.delphij.net">delphij</a>FreeBSD有没有一个DNS Cache，答曰”有”，就是<code>ncsd</code>。但是默认这个服务是没有开的，也就是没有Cache。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="dns" label="Dns" scheme="https://blog.khsing.net/tags/dns/" />
    <category term="cache" label="Cache" scheme="https://blog.khsing.net/tags/cache/" />
    <category term="flush" label="Flush" scheme="https://blog.khsing.net/tags/flush/" />
    <published>2008-07-04T11:10:32Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[FreeBSD要从CVS迁到SVN上去了]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2008/06/freebsd-migrate-from-cvs-to-svn.html" />
    <id>https://blog.khsing.net/2008/06/freebsd-migrate-from-cvs-to-svn.html</id>
    <updated>2008-06-06T07:58:46Z</updated>
    <summary type="html"><![CDATA[<p><a href="http://www.freebsd.org">FreeBSD</a>有人在杵svn，看来要弃用CVS了。所有已发布的stable版本CVS树将不受影响，在转向svn的过程中cvsup,cvsweb等服务也不受影响。目前ports,doc,www还不会迁移。这次项目是Yahoo!赞助的服务器，而且Yahoo本身也在准备转换目前的CVS。这个过程中用了cvs2svn, svn2cvs等等。</p>]]></summary><content type="html"><![CDATA[<p><a href="http://www.freebsd.org">FreeBSD</a>有人在杵svn，看来要弃用CVS了。所有已发布的stable版本CVS树将不受影响，在转向svn的过程中cvsup,cvsweb等服务也不受影响。目前ports,doc,www还不会迁移。这次项目是Yahoo!赞助的服务器，而且Yahoo本身也在准备转换目前的CVS。这个过程中用了cvs2svn, svn2cvs等等。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="system" label="System" scheme="https://blog.khsing.net/categories/system/" />
    <category term="freebsd" label="Freebsd" scheme="https://blog.khsing.net/tags/freebsd/" />
    <category term="cvs" label="Cvs" scheme="https://blog.khsing.net/tags/cvs/" />
    <published>2008-06-06T07:58:46Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[为2008年四川地震中的死难者致哀]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2008/05/first-mourning-day-for-citizen-in-china.html" />
    <id>https://blog.khsing.net/2008/05/first-mourning-day-for-citizen-in-china.html</id>
    <updated>2008-05-20T02:43:14Z</updated>
    <summary type="html"><![CDATA[<p>5.19~5.20 为全国哀悼日，其间降半旗致哀，并在每日14:28分，全国民众为地震中的死难者默哀三分，汽，火，车，船鸣迪，防空警报拉响。我站在缓行的地铁里为他们致哀。</p>]]></summary><content type="html"><![CDATA[<p>5.19~5.20 为全国哀悼日，其间降半旗致哀，并在每日14:28分，全国民众为地震中的死难者默哀三分，汽，火，车，船鸣迪，防空警报拉响。我站在缓行的地铁里为他们致哀。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="earthquake" label="Earthquake" scheme="https://blog.khsing.net/tags/earthquake/" />
    <category term="china" label="China" scheme="https://blog.khsing.net/tags/china/" />
    <published>2008-05-20T02:43:14Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[四川汶川大地震]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2008/05/earthquake-in-sichuan.html" />
    <id>https://blog.khsing.net/2008/05/earthquake-in-sichuan.html</id>
    <updated>2008-05-13T17:09:30Z</updated>
    <summary type="html"><![CDATA[<p>昨天中午觉到头晕了一下，跟着就感到楼体比较强烈的震动，向窗外看了一下，和老婆通了一下电话就下楼了。在楼下大量的同事都聚在一起，有说有笑，大致觉的应该是北京周边的某地，比如历史上地震严重的唐山。</p>]]></summary><content type="html"><![CDATA[<p>昨天中午觉到头晕了一下，跟着就感到楼体比较强烈的震动，向窗外看了一下，和老婆通了一下电话就下楼了。在楼下大量的同事都聚在一起，有说有笑，大致觉的应该是北京周边的某地，比如历史上地震严重的唐山。</p>
<p>半个多小时后才知道是四川发生的7.6级(后更正为7.8级)地震，很是震惊。</p>
<p>一个半小时后大部分同事都已经上楼开始工作了，开始看到了一定量的新闻消息，温总理已经奔赴灾区。解放军，武警官兵及救援医疗队伍，也已经展开救援或处于待发状态。</p>
<p>到了今天已经有12000多人因此而遇难，6万余人下落不明。看到电视里的一幕幕，让人心酸。在这里向工作在一线的解放军武警官兵及医务人员致敬。请伸出我们的援助之手吧！</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-txt" data-lang="txt"><span style="display:flex;"><span>中国扶贫基金会
</span></span><span style="display:flex;"><span>1.银行汇款：
</span></span><span style="display:flex;"><span>开户单位：中国扶贫基金会
</span></span><span style="display:flex;"><span>开户行：中国银行北京科技会展中心支行
</span></span><span style="display:flex;"><span>账号：8145-11681908091001
</span></span><span style="display:flex;"><span>(捐款请注明"汶川地震救援")
</span></span><span style="display:flex;"><span>2.邮局汇款：
</span></span><span style="display:flex;"><span>地址：北京市海淀区双榆树西里36号南楼五层邮编：100086 (捐款请注明"汶川地震救援")
</span></span><span style="display:flex;"><span>3.现场捐赠：
</span></span><span style="display:flex;"><span>办公地址：北京市海淀区双榆树西里36号南楼五层，咨询热线：010-62655199(8：30-21：00)网站：www.cfpa.org.cn
</span></span><span style="display:flex;"><span>中国红十字基金会
</span></span><span style="display:flex;"><span>1.银行汇款：
</span></span><span style="display:flex;"><span>开户单位：中国红十字会总会
</span></span><span style="display:flex;"><span>人民币开户行：中国工商银行北京分行东四南支行
</span></span><span style="display:flex;"><span>人民币账号：0200001009014413252
</span></span><span style="display:flex;"><span>外币开户行：中信银行酒仙桥支行
</span></span><span style="display:flex;"><span>外币账号：7112111482600000209
</span></span><span style="display:flex;"><span>2.邮局汇款：
</span></span><span style="display:flex;"><span>地址：北京市东城区北新桥三条8号
</span></span><span style="display:flex;"><span>邮编：100007
</span></span><span style="display:flex;"><span>3.网上捐款:登陆中国红十字会总会网站：www.redcross.org.cn，点击捐款热线栏目进行在线捐款。
</span></span><span style="display:flex;"><span>(通过银行、邮局和网上捐款在捐款时请注明捐款人姓名、通信地址、捐款意向如：四川地震捐款等信息，以便邮寄捐赠收据和感谢信)
</span></span><span style="display:flex;"><span>4.通过短信捐款：中国移 动、中国联通手机用户以及中国电信、中国网通小灵通用户均可编辑短信1或2，发送至1069999301，即向"红十字救援行动"捐款1元钱或2元钱。
</span></span></code></pre></div><p>Update: 郭美美事件之后，让我们彻底对这些机构失去了信心</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="earthquake" label="Earthquake" scheme="https://blog.khsing.net/tags/earthquake/" />
    <category term="china" label="China" scheme="https://blog.khsing.net/tags/china/" />
    <category term="charity" label="Charity" scheme="https://blog.khsing.net/tags/charity/" />
    <published>2008-05-13T17:09:30Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[在终端下执行AppleScript]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2008/05/execute-applescript-under-terminal.html" />
    <id>https://blog.khsing.net/2008/05/execute-applescript-under-terminal.html</id>
    <updated>2008-05-10T17:54:54Z</updated>
    <summary type="html"><![CDATA[<p>AppleScript是一种OSA语言，偶然发现在Mac下有这样一组工具</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>osacompile 编译OSA文件
</span></span><span style="display:flex;"><span>osadecompile  反编译OSA文件
</span></span><span style="display:flex;"><span>osalang   列出已经安装的OSA语言
</span></span><span style="display:flex;"><span>osascript 执行OSA语言
</span></span></code></pre></div><p>他们默认的是执行AppleScript，下面这句将打开iTunes并播放音乐：</p>]]></summary><content type="html"><![CDATA[<p>AppleScript是一种OSA语言，偶然发现在Mac下有这样一组工具</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>osacompile 编译OSA文件
</span></span><span style="display:flex;"><span>osadecompile  反编译OSA文件
</span></span><span style="display:flex;"><span>osalang   列出已经安装的OSA语言
</span></span><span style="display:flex;"><span>osascript 执行OSA语言
</span></span></code></pre></div><p>他们默认的是执行AppleScript，下面这句将打开iTunes并播放音乐：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>osascript -e <span style="color:#f1fa8c">'tell app "iTunes" to play'</span>
</span></span></code></pre></div>]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="applescript" label="Applescript" scheme="https://blog.khsing.net/tags/applescript/" />
    <published>2008-05-10T17:54:54Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Mac OS X中改变文件默认打开程序]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2008/04/change-default-app-under-mac.html" />
    <id>https://blog.khsing.net/2008/04/change-default-app-under-mac.html</id>
    <updated>2008-04-20T23:05:50Z</updated>
    <summary type="html"><![CDATA[<p>上一次想改变某个文件的打开方式，怎也找不到一个可以改的地方，这时就在想”不会呀，Windows都能让用户改，Mac怎么不能呢。”，最后找到了<a href="http://www.rubicode.com/Software/RCDefaultApp/">RCDefaultApp</a>，虽然方法很土，但也算差强人意吧。直到昨天看到了<a href="http://www.apple.com/business">Quick Tips</a>，改的地方其实就在文件info（Command + I）里的Open With处，选好了点一下Change All就搞定了。这时再想想，觉的Windows还是那么的土鳖。</p>]]></summary><content type="html"><![CDATA[<p>上一次想改变某个文件的打开方式，怎也找不到一个可以改的地方，这时就在想”不会呀，Windows都能让用户改，Mac怎么不能呢。”，最后找到了<a href="http://www.rubicode.com/Software/RCDefaultApp/">RCDefaultApp</a>，虽然方法很土，但也算差强人意吧。直到昨天看到了<a href="http://www.apple.com/business">Quick Tips</a>，改的地方其实就在文件info（Command + I）里的Open With处，选好了点一下Change All就搞定了。这时再想想，觉的Windows还是那么的土鳖。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <category term="macos" label="Macos" scheme="https://blog.khsing.net/tags/macos/" />
    <published>2008-04-20T23:05:50Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[在Mac OS X 10.5下安装pysvn]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2008/04/install-pysvn-under-leopard.html" />
    <id>https://blog.khsing.net/2008/04/install-pysvn-under-leopard.html</id>
    <updated>2008-04-17T11:50:56Z</updated>
    <summary type="html"><![CDATA[<p>在python中与svn进行通信交流是少不了<a href="http://pysvn.tigris.org/">pysvn</a>这个C扩展的，但无论是在<a href="http://www.freebsd.org">FreeBSD</a>还是<a href="http://www.apple.com/macosx/">Mac OS X</a>下安装这个家伙都是对自己RP的一种考验。
其实错误主要来自编译的时候会有一个dylib找不到</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>powerpc-apple-darwin9-g++-4.0.1: /opt/local/libpython2.5.dylib: No such file or directory
</span></span><span style="display:flex;"><span>make: *** <span style="color:#ff79c6">[</span>pysvn/_pysvn_2_5.so<span style="color:#ff79c6">]</span> Error <span style="color:#bd93f9">1</span>
</span></span></code></pre></div><p>那么就改造一下Makefile吧，patch如下</p>]]></summary><content type="html"><![CDATA[<p>在python中与svn进行通信交流是少不了<a href="http://pysvn.tigris.org/">pysvn</a>这个C扩展的，但无论是在<a href="http://www.freebsd.org">FreeBSD</a>还是<a href="http://www.apple.com/macosx/">Mac OS X</a>下安装这个家伙都是对自己RP的一种考验。
其实错误主要来自编译的时候会有一个dylib找不到</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>powerpc-apple-darwin9-g++-4.0.1: /opt/local/libpython2.5.dylib: No such file or directory
</span></span><span style="display:flex;"><span>make: *** <span style="color:#ff79c6">[</span>pysvn/_pysvn_2_5.so<span style="color:#ff79c6">]</span> Error <span style="color:#bd93f9">1</span>
</span></span></code></pre></div><p>那么就改造一下Makefile吧，patch如下</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-patch" data-lang="patch"><span style="display:flex;"><span><span style="color:#f55">--- Makefile.orig   2008-04-17 09:47:44.000000000 +0800
</span></span></span><span style="display:flex;"><span><span style="color:#50fa7b;font-weight:bold">+++ Makefile    2008-04-17 09:50:31.000000000 +0800
</span></span></span><span style="display:flex;"><span><span style="font-weight:bold">@@ -10,8 +10,8 @@
</span></span></span><span style="display:flex;"><span>CCFLAGS=-Wall -Wno-long-double -fPIC -I/opt/local/include/python2.5 -I/Users/guixing/Downloads/pysvn-1.5.3/Import/pycxx-5.4.0 -I/Users/guixing/Downloads/pysvn-1.5.3/Import/pycxx-5.4.0/Src -I/usr/include/subversion-1 -I/usr/include/apr-1 -I.
</span></span><span style="display:flex;"><span>PYCXX=/Users/guixing/Downloads/pysvn-1.5.3/Import/pycxx-5.4.0
</span></span><span style="display:flex;"><span>PYCXXSRC=/Users/guixing/Downloads/pysvn-1.5.3/Import/pycxx-5.4.0/Src
</span></span><span style="display:flex;"><span><span style="color:#f55">-LDSHARED=g++ -bundle  -u _PyMac_Error -framework System /opt/local/libpython2.5.dylib -framework CoreFoundation -framework Kerberos -framework Security
</span></span></span><span style="display:flex;"><span><span style="color:#f55">-LDLIBS=-L/usr/lib -L/usr/lib -lsvn_client-1 -lsvn_repos-1 -lsvn_wc-1 -lsvn_fs-1 -lsvn_subr-1 -lsvn_diff-1 -lapr-1
</span></span></span><span style="display:flex;"><span><span style="color:#50fa7b;font-weight:bold">+LDSHARED=g++ -bundle  -u _PyMac_Error -framework System /opt/local/lib/libpython2.5.dylib -framework CoreFoundation -framework Kerberos -framework Security
</span></span></span><span style="display:flex;"><span><span style="color:#50fa7b;font-weight:bold">+LDLIBS=-L/usr/lib -L/usr/lib -L/opt/local/lib -lsvn_client-1 -lsvn_repos-1 -lsvn_wc-1 -lsvn_fs-1 -lsvn_subr-1 -lsvn_diff-1 -lapr-1
</span></span></span><span style="display:flex;"><span>#include pysvn_common.mak
</span></span><span style="display:flex;"><span>#
</span></span><span style="display:flex;"><span>#   pysvn_common.mak
</span></span></code></pre></div>]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <category term="python" label="Python" scheme="https://blog.khsing.net/tags/python/" />
    <category term="svn" label="Svn" scheme="https://blog.khsing.net/tags/svn/" />
    <published>2008-04-17T11:50:56Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[SA的工作内容是什么]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2008/03/what-is-a-sysadmin-do.html" />
    <id>https://blog.khsing.net/2008/03/what-is-a-sysadmin-do.html</id>
    <updated>2008-03-24T19:37:22Z</updated>
    <summary type="html"><![CDATA[<p>今天吃饭前从<a href="http://www.jackos.org/blog/">Jackos</a>那里拿起了一本<a href="http://www.douban.com/subject/1236780/">UNIX系统管理</a>翻了几页。书中对系统管理员的工作定义如下</p>
<blockquote>
<ol>
<li>
<p>添加新用户</p>
</li>
<li>
<p>给激光打印机加墨粉</p>
</li>
<li>
<p>做系统备份</p>
</li>
<li>
<p>从备份里重建那些由于用户不小心而被删除的文件</p>
</li>
<li>
<p>回答用户的问题，比如”怎么发电子邮件？”，这种问题总是有人在问</p>]]></summary><content type="html"><![CDATA[<p>今天吃饭前从<a href="http://www.jackos.org/blog/">Jackos</a>那里拿起了一本<a href="http://www.douban.com/subject/1236780/">UNIX系统管理</a>翻了几页。书中对系统管理员的工作定义如下</p>
<blockquote>
<ol>
<li>
<p>添加新用户</p>
</li>
<li>
<p>给激光打印机加墨粉</p>
</li>
<li>
<p>做系统备份</p>
</li>
<li>
<p>从备份里重建那些由于用户不小心而被删除的文件</p>
</li>
<li>
<p>回答用户的问题，比如”怎么发电子邮件？”，这种问题总是有人在问</p>
</li>
<li>
<p>监视系统活动，并且试着调整各项参数，使过载的系统有时间回应那些闲置中的系统</p>
</li>
<li>
<p>在用户的请求之下，暂时违反规定提前他们在打印队列里的打印作业</p>
</li>
<li>
<p>维护系统安全，并收拾上任管理员留下来的烂摊子</p>
</li>
<li>
<p>安装程序</p>
</li>
<li>
<p>清出更多的磁盘空间，特别是连续的空间</p>
</li>
<li>
<p>在系统死机之后重新开机（而且常在很晚或是不方便的时候 ）</p>
</li>
<li>
<p>找出小故障，不过这可能意味要巡查在房子四周的网线，以检查该网络的每个节点</p>
</li>
<li>
<p>安装新到的设备，并改变桌椅的摆设以便安装</p>
</li>
<li>
<p>找出某个程序、命令、或是某个帐户为什么突然开始不正常工作了，虽然用户发誓他什么也没有做</p>
</li>
<li>
<p>试着修理坏掉的CAD/CAM二进制数据文件</p>
</li>
<li>
<p>参加会议</p>
</li>
<li>
<p>在网络上加入新的系统</p>
</li>
<li>
<p>尽量使用脚本自动处理上述的工作</p>
</li>
</ol>
<p>如上所述，正式的系统管理的确是一件复杂的工作，除了计算技术之外，还得靠一点人际沟通技巧。… … 与他人沟通最好的学习方法是，看别人怎么做，学习他们的成功之外以及避免重复他们的错误</p>
</blockquote>
<p>这本书是在2001年在国内的第一版，最新的一版应该是<a href="http://www.douban.com/subject/1944877/">Unix与Linux系统管理</a>。上述的一段话中的某几条我还是深有感触的（这一版翻译好像有点问题，所以引用的时候我做了一些修改）。其实最有用的是最后一条，这是一个系统管理员必修的课程。而修练的方法也正如其所说。</p>
<blockquote>
<p>做系统管理，一方面有系统中最高的权限，另一方面则必须和他人合作，并且为他们提供服务。管理系统其实和治理国家很像－－可能是一个法西斯式的铁腕独裁者，不顾用户的需要；或者也可能因为用户的问题忙的不可开交，而没有自己的时间。其实要做好系统管理也没有什么特别的决窍，只是在这两者之间取得平衡：除了让用户尽量满意之外，也要坚持既定的政策，以维护全系统的利益。而系统管理的最终目标，则是以最简单而有效率的方法，提供用户良好的工作环境，并且顾及系统安全、用户需求、系统能力以及和用户之间的交互</p>
</blockquote>
<p>我有时在想应用的开发人员与系统管理人员是不是天敌。这里还有一段是关于系统管理的哲学归纳</p>
<ul>
<li>做任何事之前先做计划</li>
<li>做完后要能够恢复回来</li>
<li>慢慢做改变</li>
<li>反复测试，直到确定没有问题</li>
<li>懂得每件事的工作原理</li>
</ul>
<p>update: Jackos从cn换到org了</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <published>2008-03-24T19:37:22Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[django: 在命令行下执行的脚本]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2008/03/django-execute-scripts.html" />
    <id>https://blog.khsing.net/2008/03/django-execute-scripts.html</id>
    <updated>2008-03-24T10:28:45Z</updated>
    <summary type="html"><![CDATA[<p>有个django的东东要写一个daemon来处理，这样就要在daemon script里初始化一个django environment，还好django提供了一个东东来设置这个environment.</p>]]></summary><content type="html"><![CDATA[<p>有个django的东东要写一个daemon来处理，这样就要在daemon script里初始化一个django environment，还好django提供了一个东东来设置这个environment.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#ff79c6">import</span> sys
</span></span><span style="display:flex;"><span>sys<span style="color:#ff79c6">.</span>path<span style="color:#ff79c6">.</span>append(<span style="color:#f1fa8c">'/home/guixing/Sites'</span>) <span style="color:#6272a4">#先要把自己的项目目录加入path</span>
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">from</span> django.core.management <span style="color:#ff79c6">import</span> setup_environ <span style="color:#6272a4">#这是重头戏，全靠它了</span>
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">from</span> myproject <span style="color:#ff79c6">import</span> settings <span style="color:#6272a4">#介绍自已人</span>
</span></span><span style="display:flex;"><span>setup_environ(settings) <span style="color:#6272a4">#安排自己人</span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4">#干活去吧</span>
</span></span></code></pre></div><p>想干什么就干什么了，完全一样了。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <published>2008-03-24T10:28:45Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[如何在FreeBSD里安装配置moin wiki]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2008/03/moinmoin.html" />
    <id>https://blog.khsing.net/2008/03/moinmoin.html</id>
    <updated>2008-03-19T05:53:15Z</updated>
    <summary type="html"><![CDATA[<p>前几天写了一篇moinmoin安装配置的东东，家里网络不好，没存下来就挂了。真是无用。眼看着这个月就要过去了，总共才写了一篇，实在是对不起苍天黄土。
费话少絮，切正题。先安装一个<code>www/moinmoin</code></p>]]></summary><content type="html"><![CDATA[<p>前几天写了一篇moinmoin安装配置的东东，家里网络不好，没存下来就挂了。真是无用。眼看着这个月就要过去了，总共才写了一篇，实在是对不起苍天黄土。
费话少絮，切正题。先安装一个<code>www/moinmoin</code></p>
<pre tabindex="0"><code>cd /usr/ports/www/moinmoin && make install clean
</code></pre><p>这个ports现在可以用<code>make instance</code>帮你做许多事了。这里有几个变量要说明一下。</p>
<pre tabindex="0"><code>MOINDEST wiki数据放在哪里
MOINTYPE wiki运行在哪种模式下面cgi,fastcgi,standalone??
</code></pre><p>即然这样，就干吧，当然了我是要用mod_python驱动了。</p>
<pre tabindex="0"><code>make MOINDEST=/www_root/wiki instance
</code></pre><p>ports能做的事情就这么多了。设置Apache如下</p>
<pre tabindex="0"><code>Alias /moin/ "/usr/local/share/moin/htdocs/"

SetHandler python-program
PythonPath "['/www_root/wiki'] + sys.path"
PythonHandler MoinMoin.request.request_modpython::Request.run
</code></pre><p>还有一个文件是<code>wikiconfig.py</code></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>sitename
</span></span><span style="display:flex;"><span>interwikiname
</span></span><span style="display:flex;"><span>logo_string
</span></span><span style="display:flex;"><span>data_dir <span style="color:#6272a4">#这个东东要注意请写绝对路径</span>
</span></span><span style="display:flex;"><span>data_underlay_dir <span style="color:#6272a4">#同上</span>
</span></span><span style="display:flex;"><span>url_prefix_static <span style="color:#6272a4">#这个要和Apache的Alias地址一样</span>
</span></span><span style="display:flex;"><span>language_ignore_browser  <span style="color:#6272a4">#你想让用户按浏览器语言来显示吗？No.</span>
</span></span></code></pre></div><p>这样子也就可以用了。地址就是http://host/wiki</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <published>2008-03-19T05:53:15Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Shell Script陷阱和缺陷]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2008/03/shell-script.html" />
    <id>https://blog.khsing.net/2008/03/shell-script.html</id>
    <updated>2008-03-07T15:19:22Z</updated>
    <summary type="html"><![CDATA[<p>最近在读<a href="http://www.douban.com/subject/1102097/">C陷阱与缺陷</a>，正好有朋友问到了在写Shell Script时要注意哪些东东。总结一下：</p>
<ul>
<li>注意空格</li>
<li>有空格：在条件语句(if while until)中注意方括号与判定语句之间有空格</li>
<li>没有空格：在赋值语句(=)等号两边是没有空格格的</li>
</ul>
<p>其他的想起来了再写吧。</p>]]></summary><content type="html"><![CDATA[<p>最近在读<a href="http://www.douban.com/subject/1102097/">C陷阱与缺陷</a>，正好有朋友问到了在写Shell Script时要注意哪些东东。总结一下：</p>
<ul>
<li>注意空格</li>
<li>有空格：在条件语句(if while until)中注意方括号与判定语句之间有空格</li>
<li>没有空格：在赋值语句(=)等号两边是没有空格格的</li>
</ul>
<p>其他的想起来了再写吧。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <published>2008-03-07T15:19:22Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Expect登陆没有公钥的服务器]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2008/02/expect.html" />
    <id>https://blog.khsing.net/2008/02/expect.html</id>
    <updated>2008-02-26T10:19:57Z</updated>
    <summary type="html"><![CDATA[<p>公司有几台服务器总是不能把自己的ssh-pubkey放上去，每一次输入那一长串的东东实在是无法忍受。看了一下expect像样的文档没有一个，倒是有一堆的例子，学习下，放在这里备忘吧。</p>]]></summary><content type="html"><![CDATA[<p>公司有几台服务器总是不能把自己的ssh-pubkey放上去，每一次输入那一长串的东东实在是无法忍受。看了一下expect像样的文档没有一个，倒是有一堆的例子，学习下，放在这里备忘吧。</p>
<pre tabindex="0"><code class="language-expect" data-lang="expect">#!/usr/bin/env expect
set timeout -1 #设置超时的时间，单位是秒，-1是永不超时
set password ****  #设置变量
set host [lindex $argv 0] #设置一个变量是从命令行参数得到
spawn ssh guixing@$host #来来来，下个蛋
expect "assword:" #等的就是它了
send -- "$password\r" #发出去
interact #剩下的就是自己的了
</code></pre>]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <published>2008-02-26T10:19:57Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[在Mac上调教Emacs.app]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2008/02/emacsapp.html" />
    <id>https://blog.khsing.net/2008/02/emacsapp.html</id>
    <updated>2008-02-25T16:03:54Z</updated>
    <summary type="html"><![CDATA[<p>Emacs到了Mac上遇到了一个关于中文显示的问题，最后还是使用了OpenDesktop-Fonts中的AR PL New Kai这一套字体</p>
<p><code>defaults write Emacs Font "AR PL New Kai"</code></p>]]></summary><content type="html"><![CDATA[<p>Emacs到了Mac上遇到了一个关于中文显示的问题，最后还是使用了OpenDesktop-Fonts中的AR PL New Kai这一套字体</p>
<p><code>defaults write Emacs Font "AR PL New Kai"</code></p>
<p>update: 从<a href="http://realazy.org/blog">Reallazy</a><sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>那里找到一个写.emacs的方法</p>
<pre tabindex="0"><code>(set-default-font "Monaco-18")
(set-fontset-font (frame-parameter nil 'font) 'unicode '("STHeiti" . "unicode-bmp") 'nil 'append)
(set-fontset-font (frame-parameter nil 'font) 'unicode '("LiHei Pro" . "unicode-bmp") 'nil 'append)
(set-fontset-font (frame-parameter nil 'font) 'unicode '("Arial Unicode MS" . "unicode-bmp") 'nil 'append)
</code></pre><div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p><a href="http://realazy.org/blog">http://realazy.org/blog</a> <a href="#fnref:1" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
</ol>
</div>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <published>2008-02-25T16:03:54Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[遇上oom-killer]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2008/02/oomkiller.html" />
    <id>https://blog.khsing.net/2008/02/oomkiller.html</id>
    <updated>2008-02-09T11:24:21Z</updated>
    <summary type="html"><![CDATA[<p>最近有几台加过内存的Dell 2950总是很囂张的把我的mysqld给kill掉了，原因是Out of Memary了。这几台机器都有添加新内存的经历。应该是OOM-killer在做怪了吧。查了一下,这种情况好象是发生在LowMemary耗尽的时候，kernel就会把某个倒霉的pid给干掉，而且这个时候他是不会管HighMemary还有没有剩余。先做了一些调整，看看情况再说吧。</p>]]></summary><content type="html"><![CDATA[<p>最近有几台加过内存的Dell 2950总是很囂张的把我的mysqld给kill掉了，原因是Out of Memary了。这几台机器都有添加新内存的经历。应该是OOM-killer在做怪了吧。查了一下,这种情况好象是发生在LowMemary耗尽的时候，kernel就会把某个倒霉的pid给干掉，而且这个时候他是不会管HighMemary还有没有剩余。先做了一些调整，看看情况再说吧。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>sysctl -w vm.lower_zone_protection<span style="color:#ff79c6">=</span><span style="color:#bd93f9">250</span>
</span></span><span style="display:flex;"><span>sysctl -w vm.overcommit_ratio<span style="color:#ff79c6">=</span><span style="color:#bd93f9">70</span> <span style="color:#6272a4">#这个可能没什么大用吧</span>
</span></span></code></pre></div><p>update:
适才到 <a href="https://blog.delphij.net">delphij</a>那里了解了一下，32位CPU有不同的工作模式，因APE增加了四条地址线，因此有36位的物理寻址能力，但寄存器是32位的，所以最多只能使用4G内存。但是OS有办法能让你运行的一大票进程访问的内存其实是4G之外的内存，但是MySQL是线程的，所以只能在同一个进程地址内。所以MySQL只能看到4G内存，但这4G内存有1G是系统使用的，所以只有3G内存给MySQL用。解决的办法就是换64位的吧。</p>
<p>link:</p>
<ul>
<li><a href="http://www.redhat.com/magazine/001nov04/features/vm/#intro">RedHat: Understanding Virtual Memory</a></li>
<li><a href="http://linux.derkeiler.com/Mailing-Lists/RedHat/2008-01/msg00144.html">Out of Memory issue</a></li>
</ul>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <published>2008-02-09T11:24:21Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[桌面从Debian到FreeBSD]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2008/02/switch-desktop-from-debian-to-freebsd.html" />
    <id>https://blog.khsing.net/2008/02/switch-desktop-from-debian-to-freebsd.html</id>
    <updated>2008-02-09T09:15:20Z</updated>
    <summary type="html"><![CDATA[<p>春节的时候还是把以前用的Debian/Linux(lenny)桌面系统给换到了FreeBSD7上来了。基本没有什么大问题，而且还把在Debian下KDE无法工作的声卡也搞定了。</p>]]></summary><content type="html"><![CDATA[<p>春节的时候还是把以前用的Debian/Linux(lenny)桌面系统给换到了FreeBSD7上来了。基本没有什么大问题，而且还把在Debian下KDE无法工作的声卡也搞定了。</p>
<p>简单的记录一下安装的过程</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <published>2008-02-09T09:15:20Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[保持系统的更新就是sysadmin的事]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2007/09/sysadmin.html" />
    <id>https://blog.khsing.net/2007/09/sysadmin.html</id>
    <updated>2007-09-04T15:53:31Z</updated>
    <summary type="html"><![CDATA[<p>作为一个系统管理人员，切记要让自己管理的服务器做对如下几点
保持系统先进性，与时俱进（软件更新）
以三个代表为核心（时间同步）
第一条要切记，更新软件有几个显而易见的好处：
安全：新版常常有bugfix
稳定：bugfix
性能：更新的软件，可能会在性能上较上一版更快
新功能：新功能可能会解决以前一个棘手的问题</p>]]></summary><content type="html"><![CDATA[<p>作为一个系统管理人员，切记要让自己管理的服务器做对如下几点
保持系统先进性，与时俱进（软件更新）
以三个代表为核心（时间同步）
第一条要切记，更新软件有几个显而易见的好处：
安全：新版常常有bugfix
稳定：bugfix
性能：更新的软件，可能会在性能上较上一版更快
新功能：新功能可能会解决以前一个棘手的问题</p>
<p>不要以为程序还可以使用就不升级，不更新软件。等到有一天自己的程序因为使用的依赖软件out of time了，中断服务好几天来跨N个版本进行升级时，就会为自己当年省下一分钟的时间而感到悔恨了。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <published>2007-09-04T15:53:31Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[亚马逊加大对卓越投资]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2007/06/amazon-increase-investment-on-joyo.html" />
    <id>https://blog.khsing.net/2007/06/amazon-increase-investment-on-joyo.html</id>
    <updated>2007-06-06T11:38:13Z</updated>
    <summary type="html"><![CDATA[<p><a href="http://chinese.wsj.com/gb/20070606/tec101611.asp">亚马逊加大对卓越网投资</a> 贝索斯说，公司下决心要避免其他美国互联网企业在中国遇到的问题。他说：这些公司发展不顺利的一个原因是，他们在中国的管理团队整天考虑的不是如何让顾客高兴，而是如何让美国老板高兴。这种错误我们不能犯。</p>]]></summary><content type="html"><![CDATA[<p><a href="http://chinese.wsj.com/gb/20070606/tec101611.asp">亚马逊加大对卓越网投资</a> 贝索斯说，公司下决心要避免其他美国互联网企业在中国遇到的问题。他说：这些公司发展不顺利的一个原因是，他们在中国的管理团队整天考虑的不是如何让顾客高兴，而是如何让美国老板高兴。这种错误我们不能犯。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <published>2007-06-06T11:38:13Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[What kind of person is a success leader?]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2007/03/what-kind-of-person-is-a-success-leader.html" />
    <id>https://blog.khsing.net/2007/03/what-kind-of-person-is-a-success-leader.html</id>
    <updated>2007-03-15T15:49:20Z</updated>
    <summary type="html"><![CDATA[<p>All the succeed leader has one common property, that is there can inspire and stimulate all the round people.</p>
<p>All of them has staunch faith and will.</p>
<p>All of them has wonderful personal glamor of leading.</p>]]></summary><content type="html"><![CDATA[<p>All the succeed leader has one common property, that is there can inspire and stimulate all the round people.</p>
<p>All of them has staunch faith and will.</p>
<p>All of them has wonderful personal glamor of leading.</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <published>2007-03-15T15:49:20Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[简体的“恳”和繁体的“懇”]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2006/10/post-20.html" />
    <id>https://blog.khsing.net/2006/10/post-20.html</id>
    <updated>2006-10-09T10:51:04Z</updated>
    <summary type="html"><![CDATA[<p>今天看到了繁體的“恳”字─懇。看一下這個字與簡體的那個懇字有什麼不一樣嗎？多了一個貌字的一部分，說明當你在懇求別人或是誠懇待人時要以禮居先，用心做基石。</p>]]></summary><content type="html"><![CDATA[<p>今天看到了繁體的“恳”字─懇。看一下這個字與簡體的那個懇字有什麼不一樣嗎？多了一個貌字的一部分，說明當你在懇求別人或是誠懇待人時要以禮居先，用心做基石。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <published>2006-10-09T10:51:04Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[电影《人生遥控器》里的一个故事]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2006/09/click.html" />
    <id>https://blog.khsing.net/2006/09/click.html</id>
    <updated>2006-09-05T10:54:23Z</updated>
    <summary type="html"><![CDATA[<p>上周看完了電影《<a href="https://movie.douban.com/subject/1474185/">人生遙控器</a>》，記下了一個story.</p>
<blockquote>
<p>一個人在追逐一桶金子，追逐了多年後終于拿到了，當他打開桶的時候，里面只不過是麥片。</p>
</blockquote>]]></summary><content type="html"><![CDATA[<p>上周看完了電影《<a href="https://movie.douban.com/subject/1474185/">人生遙控器</a>》，記下了一個story.</p>
<blockquote>
<p>一個人在追逐一桶金子，追逐了多年後終于拿到了，當他打開桶的時候，里面只不過是麥片。</p>
</blockquote>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <published>2006-09-05T10:54:23Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[读后感：《兄弟》——余华]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2006/08/bookreview-brother-by-yuhua.html" />
    <id>https://blog.khsing.net/2006/08/bookreview-brother-by-yuhua.html</id>
    <updated>2006-08-24T10:50:02Z</updated>
    <summary type="html"><![CDATA[<p>不幾日前于風入松書店內看完了余華同志之《兄弟（下）》</p>
<p>宋鋼：一個誠實、重家庭、重仁義的Ｎ好青年，被鐵飯碗給毀了，同時也是一個沒主見、沒抱負的老實青年。</p>]]></summary><content type="html"><![CDATA[<p>不幾日前于風入松書店內看完了余華同志之《兄弟（下）》</p>
<p>宋鋼：一個誠實、重家庭、重仁義的Ｎ好青年，被鐵飯碗給毀了，同時也是一個沒主見、沒抱負的老實青年。</p>
<p>李光頭：徹底的無賴，有信但無義。</p>
<p>林紅：一個保守、世俗的女人，無論在婚前婚後及宋鋼離開後。</p>
<p>李光頭無義表現在了他富有之後，沒有對宋鋼辦過任何一件事甚至，宋鋼成了劉鎮的首席代理，他把自己的十五個忠臣養起來的時候也沒有想到宋鋼，因為宋鋼搶過他的女人，有這一劍之仇，且後來林紅逼宋鋼與其絕裂更是讓其將這個兄弟拋棄（不要被後來宋鋼去找他的時候的態度所麻痺，如果他要是真為宋鋼好就會在宋鋼成為首席代理之時即出面幫助，因為他知道宋鋼的處境。），宋鋼去找他証明了他比宋鋼強，他打敗敵人，所以李光頭是個無義之人。李光頭對宋鋼的所做是有目的的，目標就是林紅。林紅是在收到了李光頭為宋鋼治病的錢後就覺的自己當時看錯了李光頭，這個正是他光頭所要的，想想李光頭當時為了林紅不惜讓宋鋼對林紅說出：〝這下你該死心了吧！〞這樣的狠話，且有〝兄弟也一樣宰了！〞，後來也確實是宰了。李光頭是一個為達目的而不惜犧牲兄弟利益的小人，自私鬼。</p>
<p>林紅：這個女人是個典型的女人，太典型了。典型在世俗，想想他當時逼宋鋼去與李光頭絕裂，後來因對李光頭之感激而與李光頭苟且行之。要知道她在第一次上李光頭的車的時候肯定是意識到李光頭是為了什麼，但她還是去了，當時她很矛盾，後來被李光頭強行雲雨了一翻之後反而除去了她心中的疑慮，然而過了一段時間以及李光頭對她也漸失去了興趣，這時她又想起了自己忠誠的宋鋼，但在她就要結束與李光頭的這段生活時，宋鋼死了，然後她難過了許久之後才又燃起了生活的希望，誰知道這個世俗的女人又想通了什麼事情？</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <published>2006-08-24T10:50:02Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[人有仁爱，所以食素]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2006/08/become-a-vegetarian.html" />
    <id>https://blog.khsing.net/2006/08/become-a-vegetarian.html</id>
    <updated>2006-08-21T11:03:26Z</updated>
    <summary type="html"><![CDATA[<p>是昨夜览毕老师所赠之饮食与健康，方觉有耻。我辈之人为诸欲而肆为，且美之乐之，何其不仁不慈也！</p>
<p>想来诸多动物与人相类，亦为吾辈之朋党，何以待其以俎，食之以口，仅为己之口欲，岂人之为哉？</p>]]></summary><content type="html"><![CDATA[<p>是昨夜览毕老师所赠之饮食与健康，方觉有耻。我辈之人为诸欲而肆为，且美之乐之，何其不仁不慈也！</p>
<p>想来诸多动物与人相类，亦为吾辈之朋党，何以待其以俎，食之以口，仅为己之口欲，岂人之为哉？</p>
<p>想那诸多动物亦有情义。雌龟产后因失元气而失明，其子忧心，遂游入雌龟口中，其误以为别类之鱼虾，竟而食也。待元气重得，复而能视，方知食者为己子，伤心而绝欲。此情与人无异，我等缘何为己之私欲而坏他人之亲情。</p>
<p>由此也，亦为己之身体康泰，余即日起渐而少食鱼肉，多食素菜，终而成一素食者也。亦宜推而广之。</p>
<p>Update/2012-08-21: 现在的我已经不坚持吃素了，实话是当时坚持了2个月。还是遵从了自然法则，进化到生物链顶端不是光吃蔬菜的，当然营养要均衡。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <published>2006-08-21T11:03:26Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[原来不止有一种拼音方案]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2006/08/pinyin.html" />
    <id>https://blog.khsing.net/2006/08/pinyin.html</id>
    <updated>2006-08-08T10:44:41Z</updated>
    <summary type="html"><![CDATA[<p>本人的漢語在如此多的拼音方案下的寫法，防止自己看了也不認識。備忘～</p>
<ul>
<li>注音符號： ㄅㄞ˙ ㄍㄨㄟˋ ㄒ一ㄥ</li>
<li>漢語拼音： Bai Guixing</li>
<li>韋氏： pai2 kuei4 hsing1</li>
<li>注音二式： bai guei shing</li>
<li>耶魯： bai gwei sying</li>
<li>通用： bai guei sing</li>
<li>國語羅馬字： bai guei shing</li>
</ul>]]></summary><content type="html"><![CDATA[<p>本人的漢語在如此多的拼音方案下的寫法，防止自己看了也不認識。備忘～</p>
<ul>
<li>注音符號： ㄅㄞ˙ ㄍㄨㄟˋ ㄒ一ㄥ</li>
<li>漢語拼音： Bai Guixing</li>
<li>韋氏： pai2 kuei4 hsing1</li>
<li>注音二式： bai guei shing</li>
<li>耶魯： bai gwei sying</li>
<li>通用： bai guei sing</li>
<li>國語羅馬字： bai guei shing</li>
</ul>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <published>2006-08-08T10:44:41Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[我们到底有多蠢？]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2006/07/how-fool-we-are.html" />
    <id>https://blog.khsing.net/2006/07/how-fool-we-are.html</id>
    <updated>2006-07-24T10:42:40Z</updated>
    <summary type="html"><![CDATA[<p>伊格洛克中学的一名学生于4月26日赢得大爱达荷瀑布市科学大会的一等奖。他试图向人们说明，我们已经被搞假科学的奇谈怪论者所吓倒，他们在社区到处散布恐慌。他在论文中呼吁人们签署一项请愿书，要求对“一氧化二氢”化学物进行严格控制，或者完全予以废除，理由还非常充足：</p>]]></summary><content type="html"><![CDATA[<p>伊格洛克中学的一名学生于4月26日赢得大爱达荷瀑布市科学大会的一等奖。他试图向人们说明，我们已经被搞假科学的奇谈怪论者所吓倒，他们在社区到处散布恐慌。他在论文中呼吁人们签署一项请愿书，要求对“一氧化二氢”化学物进行严格控制，或者完全予以废除，理由还非常充足：</p>
<ol>
<li>它有可能引发过多出汗和呕吐</li>
<li>它是酸雨的主要成分；</li>
<li>处在气体状态时，它能引起严重灼伤；</li>
<li>发生事故时吸入也有可能致命；</li>
<li>它是腐蚀的成因；</li>
<li>它会使汽车制动装置效率减低；</li>
<li>在不可救治的癌症病人肿瘤中已经发现该物质；</li>
</ol>
<p>他问过50个人，想了解他们是否支持禁止使用这种化学物质。 43人说支持。 6人说尚不能决定。 只有1个人说这种化学物质是水。 他赢得大奖的论文的题目是《我们到底有多蠢？》</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <published>2006-07-24T10:42:40Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[民国的工程师节]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2006/06/engineer-day.html" />
    <id>https://blog.khsing.net/2006/06/engineer-day.html</id>
    <updated>2006-06-06T09:58:50Z</updated>
    <summary type="html"><![CDATA[<p>了解到今天是<a href="http://tw.knowledge.yahoo.com/question/question?qid=1405111801916">工程师节</a>，是在民国32年由国民政府为纪念大禹而设立此节。<br>
想大禹13次路过家门不进, 为治水事业做出丰功伟绩，如今的三峡工程是何样的工程呢？是个造福于长江流域百姓的好工程嘛？不知呀~但愿如是~~</p>]]></summary><content type="html"><![CDATA[<p>了解到今天是<a href="http://tw.knowledge.yahoo.com/question/question?qid=1405111801916">工程师节</a>，是在民国32年由国民政府为纪念大禹而设立此节。<br>
想大禹13次路过家门不进, 为治水事业做出丰功伟绩，如今的三峡工程是何样的工程呢？是个造福于长江流域百姓的好工程嘛？不知呀~但愿如是~~</p>
<p>Update/2012-08-21: 目前来看，我赌不是。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <published>2006-06-06T09:58:50Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[Apache日志的轮转设置]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2006/05/apache-error-logtips.html" />
    <id>https://blog.khsing.net/2006/05/apache-error-logtips.html</id>
    <updated>2006-05-29T09:55:05Z</updated>
    <summary type="html"><![CDATA[<p>适才看到Apache 一些設定技巧，有一个较有用的东东也就记下来，免的失忆。</p>
<pre tabindex="0"><code>ErrorLog "|Q:\AppServ\Apache\bin\rotatelogs.exe logs/%y-%m-%d.error.log 86400 480″&lt;/code> 86400 是指每 86400 ( 一天的秒數 ) , 480 指 GMT + 8 ( 以分鐘計 , GMT -1 下 -60 ) .這樣 Apache 就會自動在該換日時換一個檔案名稱 ,如果你也是用 Apache 架站 ,可以試看看這個指令 .
</code></pre>]]></summary><content type="html"><![CDATA[<p>适才看到Apache 一些設定技巧，有一个较有用的东东也就记下来，免的失忆。</p>
<pre tabindex="0"><code>ErrorLog "|Q:\AppServ\Apache\bin\rotatelogs.exe logs/%y-%m-%d.error.log 86400 480″&lt;/code> 86400 是指每 86400 ( 一天的秒數 ) , 480 指 GMT + 8 ( 以分鐘計 , GMT -1 下 -60 ) .這樣 Apache 就會自動在該換日時換一個檔案名稱 ,如果你也是用 Apache 架站 ,可以試看看這個指令 .
</code></pre>]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="dev notes" label="Dev Notes" scheme="https://blog.khsing.net/categories/dev-notes/" />
    <published>2006-05-29T09:55:05Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[csh的prompt设置]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2006/05/tcsh.html" />
    <id>https://blog.khsing.net/2006/05/tcsh.html</id>
    <updated>2006-05-05T08:53:39Z</updated>
    <summary type="html"><![CDATA[<p>在FreeBSD下，csh默認的提示行是#，是不是東西太少了？我們一般習慣這樣<code>root@Gawain[~]#</code> 怎樣呢？？
在/etc/profile或是~/.profile中加入<code>PS1='\u@\h[\w]\$'</code>就會變成習慣的哪樣了。</p>]]></summary><content type="html"><![CDATA[<p>在FreeBSD下，csh默認的提示行是#，是不是東西太少了？我們一般習慣這樣<code>root@Gawain[~]#</code> 怎樣呢？？
在/etc/profile或是~/.profile中加入<code>PS1='\u@\h[\w]\$'</code>就會變成習慣的哪樣了。</p>
<ul>
<li><code>\u</code> 顯示使用者帳號</li>
<li><code>\h</code>顯示系統的hostname（機器名）</li>
<li><code>\w</code> 完整路徑</li>
<li><code>\$</code>以#表示root,以$表示一般使用者</li>
</ul>
<p>設定完了要重新登錄方能生效，只要<code>source ~/.cshrc</code>一下就好。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="tips" label="Tips" scheme="https://blog.khsing.net/categories/tips/" />
    <published>2006-05-05T08:53:39Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[关于debian的鼠标的配置]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2006/01/debian.html" />
    <id>https://blog.khsing.net/2006/01/debian.html</id>
    <updated>2006-01-04T10:33:55Z</updated>
    <summary type="html"><![CDATA[<p>用了这许些日子的debian..应该把自己这许些日子的东西写个备忘录出来了.</p>
<ul>
<li><a href="https://docs.huihoo.com/debian/debian-study.html">Debian学习笔记</a>(by 肥肥世家)</li>
<li><a href="http://bjzhanghao.cnblogs.com/archive/2005/11/09/272253.html">用Debian遇到的部分问题和解决</a>(by八进制)</li>
</ul>
<p>修改鼠标主题，需修改<code>/usr/X11R6/lib/X11/icons/default/index.theme</code></p>]]></summary><content type="html"><![CDATA[<p>用了这许些日子的debian..应该把自己这许些日子的东西写个备忘录出来了.</p>
<ul>
<li><a href="https://docs.huihoo.com/debian/debian-study.html">Debian学习笔记</a>(by 肥肥世家)</li>
<li><a href="http://bjzhanghao.cnblogs.com/archive/2005/11/09/272253.html">用Debian遇到的部分问题和解决</a>(by八进制)</li>
</ul>
<p>修改鼠标主题，需修改<code>/usr/X11R6/lib/X11/icons/default/index.theme</code></p>
<pre tabindex="0"><code>[Icon Theme]
Inherits=DeepSky
</code></pre><p>改后面的那一段儿.而在<code>/etc/X11/cursors</code>中文件格式为与上相同.</p>
<pre tabindex="0"><code>$ update-alternatives --install x-cursor-theme x-cursor-theme /etc/X11/cursors/Gold.theme 70
$ update-alternatives --config x-cursor-theme
</code></pre><p>我觉的似乎在<code>/etc/X11/cursors</code>就像是替补一般..在此等待主教的招呼以代替<code>/usr/X11R6/lib/X11/icons/default/index.theme</code>这个文件</p>
<p>注意：同事的centOS没有这个目录.</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <published>2006-01-04T10:33:55Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[2006年开始了]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2006/01/2006.html" />
    <id>https://blog.khsing.net/2006/01/2006.html</id>
    <updated>2006-01-01T10:23:49Z</updated>
    <summary type="html"><![CDATA[<p>刚刚参过Postshow新年Party。以此结束了我的2005，并也以此开始了我的2006。</p>
<p>见到了keso，同来的有詹膑（<a href="https://twitter.com/horsezhanbin">@horse</a>），<a href="http://www.doubleaf.com">陈二</a> （<a href="https://twitter.com/doubleaf">@doubleaf</a>），从日本回来过新年的<a href="https://twitter.com/biantaishabi">变态傻逼</a>（王勃），顺子等..</p>
<p>认识大家很高兴！</p>]]></summary><content type="html"><![CDATA[<p>刚刚参过Postshow新年Party。以此结束了我的2005，并也以此开始了我的2006。</p>
<p>见到了keso，同来的有詹膑（<a href="https://twitter.com/horsezhanbin">@horse</a>），<a href="http://www.doubleaf.com">陈二</a> （<a href="https://twitter.com/doubleaf">@doubleaf</a>），从日本回来过新年的<a href="https://twitter.com/biantaishabi">变态傻逼</a>（王勃），顺子等..</p>
<p>认识大家很高兴！</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <published>2006-01-01T10:23:49Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[逝去的2005…]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2005/12/past-2005.html" />
    <id>https://blog.khsing.net/2005/12/past-2005.html</id>
    <updated>2005-12-31T10:22:03Z</updated>
    <summary type="html"><![CDATA[<p>今晨阴晦, 并有小雪飘扬，2005年就在这样一天里过去了。</p>
<ul>
<li>这一年是我参加工作的整一年，这一年我学习了不少的东东。</li>
<li>这一年认真学习了Linux，并在年终的时候可以使用Linux完成几乎所有工作。</li>
<li>这一年我开了blog，认识了好几个blogger，认识了RSS。</li>
<li>这一年我好好读了几本书。</li>
</ul>
<p>这一年过去了我不在迷惘。</p>]]></summary><content type="html"><![CDATA[<p>今晨阴晦, 并有小雪飘扬，2005年就在这样一天里过去了。</p>
<ul>
<li>这一年是我参加工作的整一年，这一年我学习了不少的东东。</li>
<li>这一年认真学习了Linux，并在年终的时候可以使用Linux完成几乎所有工作。</li>
<li>这一年我开了blog，认识了好几个blogger，认识了RSS。</li>
<li>这一年我好好读了几本书。</li>
</ul>
<p>这一年过去了我不在迷惘。</p>
<p>回首看了看2005，然后面对2006说：“2006 爷爷我来了”</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="excerpt" label="Excerpt" scheme="https://blog.khsing.net/categories/excerpt/" />
    <category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <published>2005-12-31T10:22:03Z</published><rights>Guixing</rights></entry>
  <entry>
    <title><![CDATA[翻译：10年编程无师自通]]></title>
      <link rel="alternate" type="text/html" hreflang="en" href="https://blog.khsing.net/2005/11/teach-yourself-programming-in-ten-years.html" />
    <id>https://blog.khsing.net/2005/11/teach-yourself-programming-in-ten-years.html</id>
    <updated>2005-11-22T10:04:40Z</updated>
    <summary type="html"><![CDATA[<p>Update/2012-08-21: 这是整理自己以前blog的时候看到的，中文原作者的链接已经失效了。</p>
<p>原文：<a href="http://norvig.com/21-days.html">Teach Yourself Programming in Ten Years</a> 作者：Peter Norvig 翻译：郭晓刚（foosleeper@163.net） 最后修订日期：2004-3-19 2005-01-12增加了新的译本链接。</p>]]></summary><content type="html"><![CDATA[<p>Update/2012-08-21: 这是整理自己以前blog的时候看到的，中文原作者的链接已经失效了。</p>
<p>原文：<a href="http://norvig.com/21-days.html">Teach Yourself Programming in Ten Years</a> 作者：Peter Norvig 翻译：郭晓刚（foosleeper@163.net） 最后修订日期：2004-3-19 2005-01-12增加了新的译本链接。</p>
<p>本中文译本得到了Peter Norvig的许可。</p>
<p>为什么每个人都急不可耐？</p>
<p>走进任何一家书店，你会看见《Teach Yourself Java in 7 Days》（7天Java无师自通）的旁边是一长排看不到尽头的类似书籍，它们要教会你Visual Basic、Windows、Internet等等，而只需要几天甚至几小时。我在Amazon.com上进行了如下搜索：pubdate: after 1992 and title: days and (title: learn or title: teach yourself) (出版日期：1992年后 and 书名：天 and （书名：学会 or 书名：无师自通）) 我一共得到了248个搜索结果。前面的78个是计算机书籍（第79个是《Learn Bengali in 30 days》，30天学会孟加拉语）。我把关键词”days”换成”hours”，得到了非常相似的结果：这次有253本书，头77本是计算机书籍，第78本是《Teach Yourself Grammar and Style in 24 Hours》（24小时学会文法和文体）。头200本书中，有96%是计算机书籍。 结论是，要么是人们非常急于学会计算机，要么就是不知道为什么计算机惊人地简单，比任何东西都容易学会。没有一本书是要在几天里教会人们欣赏贝多芬或者量子物理学，甚至怎样给狗打扮。 让我们来分析一下像《Learn Pascal in Three Days》（3天学会Pascal）这样的题目到底是什么意思：</p>
<ul>
<li>学会：在3 天时间里，你不够时间写一些有意义的程序，并从它们的失败与成功中学习。你不够时间跟一些有经验的程序员一起工作，你不会知道在那样的环境中是什么滋味。简而言之，没有足够的时间让你学到很多东西。所以这些书谈论的只是表面上的精通，而非深入的理解。如Alexander Pope（译注：英国诗人、作家，1688-1744）所言，一知半解是危险的（a little learning is a dangerous thing） 。 * Pascal：在3 天时间里你可以学会Pascal的语法（如果你已经会一门类似的语言），但你无法学到多少如何运用这些语法。简而言之，如果你是，比如说一个Basic程序员，你可以学会用Pascal语法写出Basic风格的程序，但你学不到Pascal真正的优点（和缺点）。那关键在哪里？Alan Perlis（译注：ACM第一任主席，图灵奖得主，1922-1990）曾经说过：”如果一门语言不能影响你对编程的想法，那它就不值得去学”。另一种观点是，有时候你不得不学一点Pascal（更可能是Visual Basic和JavaScript之类）的皮毛，因为你需要接触现有的工具，用来完成特定的任务。但此时你不是在学习如何编程，你是在学习如何完成任务。</li>
<li>3天：不幸的是，这是不够的，正如下一节所言。</li>
</ul>
<p>10年编程无师自通</p>
<p>一些研究者（Hayes、Bloom）的研究表明，在许多领域，都需要大约10 年时间才能培养出专业技能，包括国际象棋、作曲、绘画、钢琴、游泳、网球，以及神经心理学和拓扑学的研究。似乎并不存在真正的捷径：即使是莫扎特，他4 岁就显露出音乐天才，在他写出世界级的音乐之前仍然用了超过13年时间。再看另一种音乐类型的代表–披头士，他们似乎是在1964年的Ed Sullivan节目中突然冒头的。但其实他们从1957年就开始表演了，即使他们很早就显示出了巨大的吸引力，他们第一次真正的成功之作《Sgt. Peppers》也要到1967年才发行。Samuel Johnson（译注：英国诗人）认为10 年还是不够的：”任何领域的卓越成就都只能通过一生的努力来获得；稍低一点的代价也换不来。” （Excellence in any department can be attained only by the labor of a lifetime; it is not to be purchased at a lesser price.） 乔叟（译注：Chaucer，英国诗人，1340- 1400）也抱怨说：”生命如此短暂，掌握技艺却要如此长久。”（the lyf so short, the craft so long to lerne.） 下面是我在编程这个行当里获得成功的处方：</p>
<ul>
<li>对编程感兴趣，因为乐趣而去编程。确定始终都能保持足够的乐趣，以致你能够将10年时间投入其中。</li>
<li>跟其他程序员交谈；阅读其他程序。这比任何书籍或训练课程都更重要。</li>
<li>编程。最好的学习是从实践中学习。用更加技术性的语言来讲，”个体在特定领域最高水平的表现不是作为长期的经验的结果而自动获得的，但即使是非常富有经验的个体也可以通过刻意的努力而提高其表现水平。”（p. 366），而且”最有效的学习要求为特定个体制定适当难度的任务，有意义的反馈，以及重复及改正错误的机会。”（p. 20-21）《Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life》（在实践中认知：心智、数学和日常生活的文化）是关于这个观点的一本有趣的参考书。</li>
<li>如果你愿意，在大学里花上4年时间（或者再花几年读研究生）。这能让你获得一些工作的入门资格，还能让你对此领域有更深入的理解，但如果你不喜欢进学校，（作出一点牺牲）你在工作中也同样能获得类似的经验。在任何情况下，单从书本上学习都是不够的。”计算机科学的教育不会让任何人成为内行的程序员，正如研究画笔和颜料不会让任何人成为内行的画家”，Eric Raymond，《The New Hacker’s Dictionary》（新黑客字典）的作者如是说。我曾经雇用过的最优秀的程序员之一仅有高中学历；但他创造出了许多伟大的软件，甚至有讨论他本人的新闻组，而且股票期权让他达到我无法企及的富有程度（译注：指Jamie Zawinski，XEmacs和Netscape Navigator的作者）。</li>
<li>跟别的程序员一起完成项目。在一些项目中成为最好的程序员；在其他一些项目中当最差的一个。当你是最好的程序员时，你要测试自己领导项目的能力，并通过你的洞见鼓舞其他人。当你是最差的时候，你学习高手们在做些什么，以及他们不喜欢做什么（因为他们让你帮他们做那些事）。</li>
<li>接手别的程序员完成项目。用心理解别人编写的程序。看看在没有最初的程序员在场的时候理解和修改程序需要些什么。想一想怎样设计你的程序才能让别人接手维护你的程序时更容易一些。</li>
<li>学会至少半打编程语言。包括一门支持类抽象（class abstraction）的语言（如Java或C++），一门支持函数抽象（functional abstraction）的语言（如Lisp或ML），一门支持句法抽象（syntactic abstraction）的语言（如Lisp），一门支持说明性规约（declarative specification）的语言（如Prolog或C++模版），一门支持协程（coroutine）的语言（如Icon或Scheme），以及一门支持并行处理（parallelism）的语言（如Sisal）。</li>
<li>记住在”计算机科学”这个词组里包含”计算机”这个词。了解你的计算机执行一条指令要多长时间，从内存中取一个word要多长时间（包括缓存命中和未命中的情况），从磁盘上读取连续的数据要多长时间，定位到磁盘上的新位置又要多长时间。（答案在这里。）</li>
<li>尝试参与到一项语言标准化工作中。可以是ANSI C++委员会，也可以是决定自己团队的编码风格到底采用2个空格的缩进还是4个。不论是哪一种，你都可以学到在这门语言中到底人们喜欢些什么，他们有多喜欢，甚至有可能稍微了解为什么他们会有这样的感觉。</li>
<li>拥有尽快从语言标准化工作中抽身的良好判断力。</li>
</ul>
<p>抱着这些想法，我很怀疑从书上到底能学到多少东西。在我第一个孩子出生前，我读完了所有”怎样……”的书，却仍然感到自己是个茫无头绪的新手。30个月后，我第二个孩子出生的时候，我重新拿起那些书来复习了吗？不。相反，我依靠我自己的经验，结果比专家写的几千页东西更有用更靠得住。 Fred Brooks在他的短文《No Silver Bullets》（没有银弹）中确立了如何发现杰出的软件设计者的三步规划：</p>
<ul>
<li>尽早系统地识别出最好的设计者群体。</li>
<li>指派一个事业上的导师负责有潜质的对象的发展，小心地帮他保持职业生涯的履历。</li>
<li>让成长中的设计师们有机会互相影响，互相激励。</li>
</ul>
<p>这实际上是假定了有些人本身就具有成为杰出设计师的必要潜质；要做的只是引导他们前进。Alan Perlis说得更简洁：”每个人都可以被教授如何雕塑；而对米开朗基罗来说，能教给他的倒是怎样能够不去雕塑。杰出的程序员也一样”。 所以尽管去买那些Java书；你很可能会从中找到些用处。但你的生活，或者你作为程序员的真正的专业技术，并不会因此在24小时、24天甚至24个月内发生真正的变化。</p>
<p>参考文献</p>
<p>Bloom, Benjamin (ed.) Developing Talent in Young People, Ballantine, 1985. Brooks, Fred, No Silver Bullets, IEEE Computer, vol. 20, no. 4, 1987, p. 10-19. Hayes, John R., Complete Problem Solver, Lawrence Erlbaum, 1989. Lave, Jean, Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life, Cambridge University Press, 1988.</p>
<p>答案</p>
<p>各种操作的计时，2001年夏天在一台典型的1GHz PC上完成：</p>
<ul>
<li>执行单条指令1 纳秒 = (1/1,000,000,000) 秒</li>
<li>从L1缓存中取一个word 2 纳秒</li>
<li>从主内存中取一个word 10 纳秒</li>
<li>从连续的磁盘位置中取一个word 200 纳秒</li>
<li>从新的磁盘位置中取一个word（寻址）　8,000,000纳秒 = 8毫秒</li>
</ul>
<p>脚注</p>
<p>T. Capey指出Amazon上面《Complete Problem Solver》的页面中，《Teach Yourself Bengali in 21 days》和《Teach Yourself Grammar and Style》被列在了”购买此书的顾客还买了以下书籍”栏目里面。我猜其中一大部分察看这两本书的人都是从我这里过去的。</p>
<p>译本</p>
<p>感谢以下作者将本文翻译成其他语言： 日文（Yasushi Murakawa），中文（郭晓刚），繁体中文（Jason Chen），西班牙文（Carlos Rueda），德文（Stefan Ram），法文（P. E. Allary），土耳其文（Çağıl Uluşahin）。</p>
]]></content>
    <author>
      <name>Guixing Bai</name>
      <email>khsing.cn@gmail.com</email>
      
    </author><category term="share" label="Share" scheme="https://blog.khsing.net/categories/share/" />
    <published>2005-11-22T10:04:40Z</published><rights>Guixing</rights></entry>
</feed>
