terra incognita

When you debug Bluetooth peripheral services with some tools like "LightBlue", you may find the services retain unchanged even if you have modified your peripheral code.

That is because, iOS caches the services. Try to restart your iPhone, all should be solved.

综述

2012 年底到 2014 年中,在过去的一年半中,「贵邮」for iOS 已经更新了 20 次(但是仍然有很多 bug 存在...)。在这篇文章中,我将对于开发过程中的一些技术架构、想法做一个小结。

技术架构

客户端(iOS)

客户端这部分貌似挺 straightforward,无外乎就是 Xcode + Objective-C。从 12 年底萌发写一个 iOS app 的想法开始,到注册 iOS Developer 以及学习 Objective-C 等等,总共用了大概两个多星期。第一个版本的「贵邮」从开发到设计大概也是两个星期左右。虽然说从速度上讲的确是够快,但是这方面也埋下了一定的隐患——很多地方从开始设计的时候没有考虑到,导致到现在还在为一些设计缺陷挣扎。有时候想重构了,发现古之人不余欺也:

如果在某一个 bug 上耗费了太多时间却依然没有搞定它的话,试试重构一下吧,相信 bug 会更多的。

AFNetworking

“, the de facto networking library for iOS” 我喜欢有人这么说,的确 AF

其实我有一个小网站,说起来算是个论坛,但是用户看起来只有我一个,平时就在上面发发一些喜欢的歌词什么的。有一天,突然脑子一抽风,觉得查找歌词太麻烦了还不如去找找有木有歌词的 API。

So,一段噩梦开始了。首先,之前有过使用 sogou 或者 soso 的歌词搜索经验,但是这次发现解析 HTML 实在是不优雅。于是放弃。然后,发现网上有 qianqian 的 API,但是需要进行一些编码加密之类的工作。好吧,也许这个可以。

其实也很麻烦。

借助于 OS X 上的 开源项目,里面就是通过 qianqian 的 API 获取歌词。所以只需要把 Objective-C 代码改写成*目前*喜欢的 Python 就可以了。

嗯,是挺不好玩的。

但是还是完成了,不是么?完成的改写工作在这里 。以为这就大功告成了么?

没那么简单啊。。。

原因是发现有一定概率得不到歌词,就是说,你需要 retry 再 retry 才有可能得到歌词。我不知道是不是我这边网络的原因。反正不好玩。

经过一番搜寻,于是,下一个项目开始了。。

其实标题应该是「我听歌的时候我都怎么听」。不过所说的时间大概是高一的时候。

事情是这样的,在我高一的时候,有个朋友是当时脑子一烧开了一个在线音乐网站。呐,你知道的,那时候的在线音乐站是不可能提供给你无损的音乐的,带宽不允许,大家都不矫情也没那必要。呐,但是你可能忘记了,那时候可是 M$ 家的天下,我还在用一个美国良心企业——联想的笔记本上网(当然是蹭邻居的网)。重点是,那时候的音乐可是 64Kbps 的 wma 格式。

当然,其实这都不是重点。有这么一个朋友,我思考了一下我下一步应该做什么。作为一个有着神经病天赋的选手,当时的想法便是——把音乐库拖下来!你看看我都在想什么…所以不出意外的,我得到了一个 FTP 账户,那便是音乐服务器的账号。登录上去,稍等片刻…大概看到了 27 个文件夹,如果没记错应该是数字和 A 到 Z 这样以歌手名分类的结果。作为一个理性的理科生,首先从 A 文件夹开始下载,不过囿于不愿透露姓名的邻居的网速限制,只能在做完作业发呆的不想睡的晚上稍微下一些歌曲。于是,那些漫长而又美好的日子就那么开始了。

如你所知,其实 A 开头的歌手没有多少,

WhatsUp

Yet another simple socket multi-user chatting program

UPDATE

WARNING: this code is just a simple demo showing how to use socket in Python with many bugs, meaning it is NOT a complete project. If you'd like to implement a real chatroom, you should find some other open source projects.

Features

Using Python sockets module

Support group chatting

Support memtion user function (@username)

Source code

Server

#! /usr/bin/env python

# coding: utf-8

#

# WhatsUp Server

#

# Y

In file: /etc/network/interfaces

append:

auto eth0 inet

iface eth0 inet dhcp

... printf("%.*s", 3, "abcdef") will result in "abc" being printed.

Wow…

Ref: