0%

聊一聊近日更新的 App Store 审核指南的几个重要变化。关于微信小程序,关于公众号打赏,都有了答案。

  • 禁止 App 自己引导用户打开 App Store 给 App 评分,因为现在有系统 API 支持这一行为了,在 App 内就能直接完成 review。

    Use the provided API to prompt users to review your app; this functionality allows customers to provide an App Store rating and review without the inconvenience of leaving your app, and we will disallow custom review prompts.

  • App 的名字长度限制从原来的 50 个字符缩短到 30 个字符,且名字不应该包含价格。App 的副标题更适合用来介绍 App,但副标题不应该有指向其他 App 的内容。

    这个可能是出于打击关键词排名刷榜的考虑。

  • App 只能使用当前最新系统版本的 Public API,保持 App 的更新确保废弃的 API 被移除。

    更严格了,以前没有对代码里 deprecated api 的使用作规定。这条更像是建议而非强制规定,因为不使用某些旧的 API 的话老系统可能无法正常运行 App 了。

    2.5.1 Apps may only use public APIs and must run on the currently shipping OS. Learn more about public APIs. Keep your apps up-to-date and make sure you phase out any deprecated features, frameworks or technologies that will no longer be supported in future versions of an OS.

  • 敲黑板,划重点了:

    In-App Purchase 的规则里新加入了一句话,App 应该使用 IAP 购买的货币让用户给数字内容的提供者给小费。

    这一句话结束了关于微信公众号打赏问题的争论。

    群众:审核规则只说解锁功能,打赏不属于解锁功能,强制走 IAP 不合理。

    Apple:嗯,有道理,那我现在加上了。

    If you want to unlock features or functionality within your app, (by way of example: subscriptions, in-game currencies, game levels, access to premium content, or unlocking a full version), you must use in-app purchase. Apps may use in-app purchase currencies to enable customers to “tip” digital content providers in the app. Apps may not include buttons, external links, or other calls to action that direct customers to purchasing mechanisms other than IAP.

  • 如果是使用商业模板创建的 App 或者是由自动生成服务生成的 App,会被拒绝。

    4.2.6 Apps created from a commercialized template or app generation service will be rejected.

  • 又要划重点了:

    新加入了一条关于 App 内运行第三方程序的规则,看起来是官宣微信小程序的合规性。

    有几个地方需要注意的:App 必须使用 WebKit 和 JavaScript Core 来运行第三方程序,那么就意味着只可能是 Web 程序,同时容器 App 不能把系统的原生接口暴露给第三方程序;第三方程序的开发者也必须是 Apple Developer。

    `4.7 Third-Party Software

Apps may contain or run code provided by third party developers (e.g. HTML5-based games), as long as the code is not offered in a store or store-like interface, and provided that the software (1) is free or purchased using in-app purchase; (2) only uses capabilities available in a standard WebKit view; your app must use WebKit and JavaScript Core to run third party software and should not attempt to extend or expose native platform APIs to third party software; (3) is offered by developers that have joined the Apple Developer Program and signed the Apple Developer Program License Agreement; and (4) adheres to the terms of these App Review Guidelines (e.g. does not include objectionable content; uses IAP to unlock features and functionality). You must provide an index of third party software and metadata available in your app upon request.`

  • App 必须向用户说清楚申请了哪些权限(位置、联系人、日历等),以及用户不给予权限的情况下什么功能无法工作。

    这条规定有可能解决大家经常骂的某些 App 不给权限就直接闪退的问题。

    Your app description should let people know what types of access (e.g. location, contacts, calendar, etc.) are requested by your app, and what aspects of the app won’t work if the user doesn’t grant permission.

  • App 和 Extension(包括第三方键盘),不应该包含 Apple emoji.

    没理解错的话,第三方键盘里不能直接输入系统的 emoji 表情了。我觉得这条略不合理,难道我想发表情时还必须得专门切换到系统的 emoji 键盘?

    Apps and extensions, including third party keyboards and Sticker packs, may not include Apple emoji.

阅读全文 »

过去一年我在网上常逛的社区有:微博、Twitter、V2EX、知乎。V2EX 里互联网从业者居多,偏小众,而 Twitter 中文圈因为自带门槛,活跃度不高,偏私人,特点非常明显。微博和知乎则很杂。

我玩社区的目的有两个:一些话题带来的见识和新鲜感;它们是体验、观察人性的好地方。一个社区一旦受众变广,一定趋向于成为小社会,在社会里就必然能感受到人性。从我个人经验上说,人们在网络上的公开言行要么带有目的,要么出于人性。网络环境越来越开放(只要不涉及敏感话题),受众越来越广,但现在能在网络上好好说话的人比例极低。这篇博客用来总结我过去几年所看所想,涉及以下几个话题:什么样的言论是不恰当的?为什么存在这么多不恰当发言?怎么理解和承受住网络暴力?什么是优质、正向的说话方式?

我对网络舆论的接触最早来自贴吧,刚开始和很多人一样,对于各种自己无法认同的发言很排斥,难以理解,为什么这样瞎说话的人也可以上网?作为活跃成员和管理者又不能正面怼,只能憋着,或者忍不住了上去试图讲两句道理。这种经历多了之后,我发现大多数「我无法认同」的言论都可以找到不复杂的原因解释:可能是信息不对称,比如我在这里已经待了3年而对方是一个新人很多信息和规矩不知道;可能是单纯的无聊,对方随便扯扯淡想吸引注意力;当然也有可能是我自己的问题,我没有跟上对方的思路,我的无知和短见蒙蔽了自己。我开始注意和总结这些现象,一方面能让自己积攒经验更容易了解到一个陌生人想传达的意图,另一方面是,如果不在逻辑上分析出原因让我知道问题不在我这里,我其实很难抵抗地住受众变广带来的压力。如果你有点粉丝,或者你管理过什么社区的话,你知道我在说什么,即使你在持续做正确的事,来自这个世界的恶意也是你难以想象的。后来不带社区,就只当一个普通的吃瓜群众到处逛,这样的思维习惯一直保留了下来,很庆幸培养了自己这样的习惯。即使现在到处都有撕逼、争吵、讽刺、打脸、反转,我看到后内心都毫无波动了。

人人都有的思维误区

阅读全文 »

  • 不轻易烂尾、关闭自己提供的开源项目、在线服务。关闭时应向他人解释原因,提供替代方案的建议。
  • 开始一个项目时,先敲定相应语言的编码规范,全项目保持一致。遵循自己所在公司、团队的编码规范,规范如果和我既有习惯冲突,改变自己的习惯。
  • 永远不提交空的 commit message。尽可能遵循 commit message 礼仪,提供精简有效的信息。
  • 注意名词的大小写和读音,不确定的就去翻官网搜 YouTube。英文和中文之间添加空格。中文排版尽量遵循中文文案排版指北
  • 永远保证对我有价值的数据存在至少一个备份(外置存储、网盘)。
  • 尽可能保证自己任意时刻都能被电话联系上,紧急情况时我可能很重要。
  • 我犯的错挖的坑,我负责擦好屁股填好坑,尤其是给他人带来负面影响时。
  • 视情况帮别人背锅。
  • 在团队、公司协作中,我单点掌握的公有资源应该有可恢复机制,即使自己突然意外死亡,同事也可以很快接手这些资源(公司 Apple ID,邮箱,第三方服务帐号,绑定的手机,私钥,服务器配置文档)。
  • 对当前的国家体制保持警惕。不仅仅是我所处的行业由于体制问题经常开倒车被压制,更重要的是,我正好处在了变革剧烈的时间点,即使我不惹政治,政治也极大可能会找上门来,只要自己不是碌碌无为就逃脱不掉。

这个话题一直想聊,正好碰到个相关的热点,忍不太住,索性拿过来说。热点倒没啥,就是那篇「xxx 你给我站住」的公众号文章。一堆人说被刷屏了,我的朋友圈反而没被波及。

这样祥和的局面来得不太容易,在过去的一年多里,我陆续将 102 个联系人一个个手动点进去设置「不看他的朋友圈」,而我微信通讯录里只有 337 个联系人,朋友圈活跃分子应该不足 200 个,这样下来我就强行将朋友圈的内容屏蔽了至少一半。

我一直将微信定位为私人场合沟通工具和面向熟人的社交工具,而且毫无疑问,微信是一款好用而伟大的产品。即使我不认同它的一部分产品理念,比如公众号文章无法被有效地索引和搜索,这不符合互联网精神开放共享的本质,所以我不会将自己的内容产出只发布到这样封闭的平台上。而重度依赖微信来工作,将微信作为公司协作工具的,在我看来是不负责任的表现,不是这样做不可以,而是几乎没有公司可以把公事和员工私人环境间的隔离做得很好。这一点,性感玉米和乔晓韵有两篇微博文章都说得很清楚了:微信及微信群协作沟通规范倡议书讲道理,为什么我抵制微信办公? 更何况还无法避免出现缺乏基本职业素养的同事,肆无忌惮地在微信上发长语音、传文件,不懂礼貌,无意义增加别人的沟通成本。

基于此,我的微信自注册以来,主动加好友和通过好友申请就卡得很紧,尽可能减少微信好友数量。我并不需要加一堆不太熟的人到私人圈子里来,我不靠交际而活,也不从点赞之交中获取安全感。

阅读全文 »

单身第 400 天,聊聊情感话题。这是我第一次在公共场合谈论此类话题,将来也很少会有,结尾解释原因。

你喜欢我吗?

如果一个朋友突然问你这个问题,你第一反应会是什么,你怎么定义「喜欢」?以我目前的圈子性质和亲密度划分规则,对于我的大多数朋友,我都可以立马回答 Ta 「喜欢」。这种喜欢是出自对对方人品、风格的肯定,简单地说,我下意识里对喜欢的定义,仍然在朋友关系的范围内,而不是通俗意义上男女关系中的喜欢。对于后一种喜欢,我要么很快地说不(没有任何这个意思),要么需要至少半分钟来思考(不太确定有没有),我在感觉上是否的确在喜欢你。

说这个的原因是,我遇到过很多在我这个年龄段(18~25)的人并不能够很好的理清自己的各种感觉和情绪。他们会把对一个人正常的心理倾向当做喜欢,比如:

阅读全文 »

2016年的高考结束了,像微博上的段子说的,今年的高考看起来和往年的没有什么不同。以我单薄的经历看,高考对一个国内的学生非常重要,重要性不是来自将来大学毕业证上的学校名字,而是因为进入不同的大学基本上等同于选择了不同的人生轨迹。高考的名次决定了你将来会和努力到何种程度的人成为同学,在青年时期学校大环境的耳濡目染对一个人产生的影响难以预估。绝大多数大学本科生没有什么独立思考能力,对目前社会的种种现象只能理解到表面,当他们的想法和行动出于人的本性开始随大流时,这个「大流」就显得尤为重要。因此我也一直建议考生尽量填北京上海的大学,因为大陆只有这两所城市可以触摸到最新的理念和生活方式,除非你能上浙大、中科大这种有明显优势的大学,否则去一线城市 4 年下来能获得的视野和平台远比内陆省市要好。

5 年前参加高考时的一部分场景我还记得很清楚:7 号下午考数学,题目比较难,后面有 3 道大题我不太会做,写了前面几个步骤就放那了,交卷前看了看空荡荡的答题纸,面无表情。考完出门后我心里反而还有点窃喜,因为我知道那几个大题我做不出来,跟我差不多水平的考生也大都做不出来,好几十分的题不会做这种事发生在高考考场上非常打击人,但我不虚啊,心理素质挺强的,不怕这么点压力,我就比同一层次的考生有了优势。当晚回到酒店,班上一堆同学哭得稀里哗啦的,搞得几个老师不得不过来开个临时班会安慰安慰,开完会我还是继续在房间里和室友开着玩笑。最后的结果的确和我预料的一样,我数学分数很一般,但总分的排名比计划的高了一截,大把的考生「没发挥好」。

安徽的高考题里,理综的选择题每题 6 分,数学选择题每题 5 分,在我那个分数段错一道选择题名次大概要掉一两千,所以我高三时曾经疯狂地练习过做选择题。不知道是不是因为这段经历,导致我后来遇到重要的事情需要抉择时,都保持着冷静和理智。我水平有限,不是什么题都会做,但我那年选择题还都是单项选择,所以我练久了之后逐渐掌握了些「不会解题但是会选择正确答案」的技巧。高考结果是:我的语文、数学、理综选择题满分。我记得特别清楚理综有道物理选择题我算了好久得到的结果和 4 个选项都不一样,然后先选了个和我结果接近的答案,又把题目和 4 个选项看了看,感觉不太对劲,根据经验换到了另一个答案。

某种意义上,这就是运气好,如果我没再看一遍或者直觉产生偏差,就要扣 6 分,我妥妥进不了华师,今天我很可能就不在上海,而正在看这篇博客的你,也基本没机会和我产生联系。每当我想起这些经历的时候,都会觉得高考如此残酷又奇妙,朋友、同学的相识都是莫名其妙的缘分。

阅读全文 »

三天前,我在博客发表了一篇针对软院本科教育的文章(如果你没看过,建议先阅读它以及后面的评论),讲了些我和部分校友在回顾软院经历时的看法。这篇文章传播范围比我预期的要大一圈,我除了把文章发到博客,自己在朋友圈转发一次外,没做其他的推动,刚才看了看访问统计,从发布到现在差不多有 3000 个独立访客。剔除掉在朋友圈看到后随意进来扫一眼的吃瓜群众,我估摸着有一千来个和软院相关的人接收到了这个话题。遗憾的是,除了那篇博客下面零星的几个评论、一些人的私聊、以及知乎上的一两条私信,我个人并没有直接收到多少反馈信息。

我经历过了太多网络上的辩论和争吵,早已对说服别人没有兴趣,因为绝大多数人在网络上的言论「不输出论证,只输出观点;不输出思维,只输出立场」,他们先有了自身主观上的情绪和立场,然后再企图寻找可以支撑自己情绪的论点。这样的讨论对于专业性的现实问题没有正向作用。我不会因为自己有着丰富的吵架经验和讽刺技巧而产生优越感,我只觉得现在的时间太宝贵,花在这些无意义的事情上是非常亏本的。但对于这些狂野的思维方式我又完全可以理解,比如存在于几乎所有在校生和毕业没几年的校友身上的护校情节:我自己可以骂自己的学校,但别人说一句就是不行,我必须冲上去干点什么。

什么是对问题的正向讨论?我的理解是:先要理清客观事实,基于这些事实,最底层的判断来自公共道德和法律,最上层的观点来自个人不同的价值取向。

那篇文章里提到这几个事实在客观上是绝对存在的:
1.软院的本科应届生在工程领域的平均水平不高(没几个人说得清自己发出一条微博时在技术上经历了哪几个大步骤)。
2.多数学生在校期间努力的方向不太妥当(比如背代码),或者不知道应该自学些什么。
3.很多爱钻技术的学生对氛围感到不适和无奈。
4.“考高分、拿奖学金比写好代码重要”的观念盛行。
5.全院没有一个技术主导的学生组织。

阅读全文 »

一条朋友圈引发的抱怨

15 年年初的时候,我在知乎上用一篇比较长的回答总结了 4 年下来对母校的看法,提了几个点,有赞有贬,里面也有涉及到软件学院的内容,当时出于对毕业生们心情的照顾和避免将矛盾激化的考虑,对回答内容做了引导,没有讲更多具体的问题。很大程度上,作为一个已经毕业快一年的校友,我不应该再继续对大学本身进行公开评价,尤其是不好的方面。然而,前些天软院的 Y 辅导员在 QQ 上找到我和我就某个朋友圈的内容讨论了几句,让我对她的看法从 3 年前的理解、尊重变成了失望,这种失望的情绪成为了我写下本篇内容的推动力。

我虽然性格很好,不惹不必要的麻烦,能帮人就帮人,但对跑到跟前来乱扯的我也会骂,不怎么骂粗话,不过比粗话难听多了。我在知乎说过,大学里的很多人是不适合用「老师」来称呼的,他们只是碰巧在大学里工作,学生们为了方便和表示尊敬会喊老师,实际上这群人本身没啥方面优秀到可以被称作老师。而 Y 辅导员的思维方式简单到我觉得她甚至不适合当大学辅导员,张口就来「大学教育的悲哀」,讨论问题主次不清套话连篇感叹号泛滥。让这样的人做学生工作,是给初入社会的大学生们挖了个大坑。至少,辅导员要分得清正义与肮脏,妥协和虚伪,辅导员应该成为帮学生阻挡上层体制带来负面影响的人,而不是一边说着大家要积极向上一边带领学生浮夸造作的人。

软件学院差劲在哪

阅读全文 »

原来的博客从 2011 年进大学时开始用,一直是 WordPress 搭的。我倒是可以忍受 WP 后台操作时响应慢,程序升级、维护麻烦的问题,但是它对 MarkDown 不友好,让我想写文字的时候觉得不太舒服,插代码很累,试了很多方法都解决不了这个问题,索性换掉了。现在用 Hexo 做静态站方便很多,没那么多要考虑的东西了。原来的博客内容松松散散,东西不多,现在看来有价值的内容也几乎没有,黑历史反而一堆,于是没有迁移过来,直接弃掉。大三大四两年基本没写东西,主要是自己太水,没有什么可以输出的,不管是技术还是观念。当然现在仍然水,但能接触到的新鲜玩意多了,没事可以写一写加深理解。以前总会想,这样的一堆东西写出来别人看了会不会觉得无聊啊,现在我能清晰的认识到,为什么要考虑这样的问题,又没什么人会看这里的文章,自己觉得有意思就好了。
按我目前的性格,不太想在公共区域输出价值观,这里可能会写一些,但负面情绪和个体自由倾向严重,不适合大部分人阅读。

《Python进阶》是《Intermediate Python》的中文版,几个月前在 V2EX 上偶然看到,瞄了几眼发现这本书每一章都很简短清晰,适合碎片时间阅读,就放到了收藏夹了。大体上说这本书是 tips 类型的,不适合新手入门看,至少需要了解、实践过了 Python 的常用语法才会看得比较流畅。我读完所有内容后又过了第二遍,把一些我觉得有意思的、不太熟悉的内容摘出来记一下。

iterator, generator, enumerate

迭代器(iterator)

文档:

阅读全文 »