快速检查某文件的 UTI

在进行 iOS macOS 开发的时候,我们经常会需要和文件进行交互,比如说关联并打开某一类型的文件,那么这个时候,你用到的并不是这个文件的后缀名,而是它的 UTI。

UTI 是一个统一文件类型名称,它规定了一个文件应该是什么类型,而不是靠后缀来确定,比如 txt,text,json 都是纯文本文件,它们都是 public.text

那么,通常情况下,对于知名的文件类型,你可以到苹果官方的页面[……]

点击跳转以继续阅读

用 chsh -s 配错了 shell 该如何挽救?

配错了默认环境并不可怕,大不了再配回来就好了嘛。

显然,说这样话的人是没有故事的。

总之,如果你发现你的 vps 有一天突然无法登录了,没有报错内容是没有权限,但证书确定是正确的——那你就可能是在上次退出前配错了 shell。这时候即使你用 console 去登录,也会发现登录后一闪而过立即回到了登录界面——完蛋了,你心想,刚配好的环境又得重来一遍。

使用 chsh 切换 默[……]

点击跳转以继续阅读

Fail2Ban 高级配置 保护 Nginx 服务

购买了VPS之后你应该做足的安全措施中我们提到过用 fail2ban 来保护 ssh ,这样即使不改变ssh端口(默认为22),也可以做到避免被暴力破解密码,当然,我们已经开启了证书登录并关闭了 ssh 的密码登录选项,但用 fail2ban 干掉那些不停尝试的 bot 也是一件令人心情愉悦的事情。

其实,除了 使用 fail2ban 防止 Bind9 被用于 DNS 放大攻击外,我们也可[……]

点击跳转以继续阅读

UserNotifications 使用用户创建的声音作为提示音

使用自定义声音作为通知提示音

在 iOS 10 以后,iOS 使用了全新的 UserNotifications  作为通知 API,这允许开发者使用 图片、视频、声音 等富媒体作为通知内容,同时进一步地,你还可以使用 Notification Content Extension 来自定义通知的大小和内容布局。
如果要自定义通知的提示音,那么你可以给 [cray[……]

点击跳转以继续阅读

Item “xxx” is used by macOS and cannot be opened.

在恢复数据的时候,你可能需要用 U 盘拷贝数据,但是 macOS 默认挂载 ntfs 是只读的,当然,我们有办法使用命令行重新挂载它来变成可读写。不过这容易造成 ntfs 权限错误,结果就是插到另一台电脑上的时候,这个文件可能变成灰色

如果你这时候强行使用解压缩软件打开它,那么你会得到类似的错误:

Item “xxx” is used by macOS and canno[……]

点击跳转以继续阅读

谈谈 Shadowrocket 和 Quantumult

自从我更换了美区 Apple ID 后,原先购买的 Surge 就不能再用了—— 当然,现在 Surge 也更新了新的版本,对我来说,花大价钱购买一款高级网络调试工具然后单纯用来翻墙,想想就觉得挺蠢的。

好在,macOS 版本的 Surge 2 授权还在,毕竟这个不跟随 Apple ID,我还可以继续使用。将来 Surge 2 停止更新维护了,我会考虑继续坚持几年再买新的。

总之,在 iOS[……]

点击跳转以继续阅读

落格输入法 macOS 是如何处理 ascii 0x01 的兼容问题的-macOS 输入法如何正确设置 buffer

早在去年,落格输入法的用户就有报告说落格输入法 macOS 在 有道云笔记 的 MarkDown 模式下无法正常键入中文,经过测试证明确实如此,体现为打中文字的时候,buffer的刷新会奇怪的删除掉光标前的一个字符——对,不多不少,就删一个。

捣鼓了很久未果,最后我没招了打印出了所有内容,发现了谜团:

当我把输入法获取到的光标左边的文字打印出来后,我发现文字的后边被追加了一个奇怪的字符[……]

点击跳转以继续阅读

落格输入法是如何在 iOS 上反账号共享盗版的

对于 iOS 开发者来说,面对 app 盗版,最大的问题不是技术破解,反而是越来越多的 Apple ID 共享盗版,有的人可能会说这样的盗版就相当于是“试用”了,喜欢的人自然会去入正……但实际上,由于一分钱共享账号盗版的存在,导致无数独立开发者最终走向了投简历。

总之,去年,Surge 的作者发布了这么一篇文章 Surge 2.0 是如何实现在 iOS 上反盗版的 他的理论是从 app 购买[……]

点击跳转以继续阅读

NSView 在 10.12 不显示 shadow 问题详解

在 iOS 上,如果我们要一个 View 显示阴影,那么基本上是这么做的:

不过,到了 macOS 上,这样就不灵了——没有任何效果。

答案在于 macOS 上如果你想要给一个 View 使用 layer ,你必须手动标记,比如说这样:
[crayon-6905e[……]

点击跳转以继续阅读

少有人走的路:独立开发者该如何寻找资源

这一篇其实两个月前就应该写了,不过有一些事情拖延于是就到了现在。前几天和朋友讨论到独立开发的“小众”的概念,我觉得有必要再细致的定义一下。究竟独立开发者要做的这个小众是什么,所谓的细分市场,究竟又该怎么细分。

心灵小众

一说到小众和细分,可能很多人的第一印象是那些无人问津的东西比如学校里一小撮学生的小需求,或者是律师在工作上的一些需求……这里我们回顾一下细分市场:独立开发者该如何确定开发项目中[……]

点击跳转以继续阅读

letsencrypt 工具改名 certbot

今天落格博客的证书到期了,之前我有写过如何用 letsencrypt 来给博客加 https 支持,并且在文章的末尾教大家写了一个定时更新服务,这样你就不用每三个月自己手动去更新了。

不过,如果你的证书要过期了,那么其实 letsencrypt 会有机器人给你发提醒邮件的,内容大致是这样:

Hello,

Your certificate (or certificates) for t[……]

点击跳转以继续阅读

ANNE pro GH60 定制键盘 macOS 键位设置

之前我写过一篇Poker 2 机械键盘 Mac 键位修改的文章,现在由于我买了一个升降桌,然后poker是有线的,于是很不方便,就寻思买一款蓝牙键盘,没想到当年梦想的蓝牙机械键盘已经有了现成的,正好,寻思着就定制一个。

我对poker的wasd方向键情有独钟,尤其是改 capslock 为 fn 后,简直是编程利器,爽的一批,所以这次找键盘也必然是 60键,也要支持 capslock + w[……]

点击跳转以继续阅读

macOS 键盘按键 event 的三种截获方式

一般情况下,你不需要了解这些内容。

在极少数情况下,你的app可能需要去获取用户按下的按键信息,比如盗号木马 开发一款输入法。只有这样你才能给用户提供候选。

怎么在 macOS 下创建一个输入法,我在Swift 使用 InputMethodKit 写输入法这篇文章中有详细的说明,这里略过不提,我们重点放在如何处理用户按键,尤其是修饰按键的处理上。

落格输入法一直以来有一个不大不小[……]

点击跳转以继续阅读

winform 使用 视频 作为窗口背景

最近做 Windows 上的项目,客户要求要做的“炫”一点,所以,动态的窗口背景永远是必不可少的内容(比如手机qq的登录界面对吧?

我本以为这是一个很容易实现的功能于是就满口答应下来……是的,在 winform 里,并不是那么容易就能达到你想要的效果的。

理所当然,我们想到如果要播放视频,那么就用系统自带的 media player,只要添加一个控件就可以搞定——结果就是播放的视频要么[……]

点击跳转以继续阅读

使用 csf 防火墙来有效阻止小规模 DDOS

更新:升级 Ubuntu 20.04 LTS 后,csf 无法正常工作了,提示找不到 iptables:

这是由于 Ubuntu 20.04 LTS 更改了 iptables 相关命令位置导致的,csf 的脚本并没有及时更新。

要解决这个问题,我们可以到[cr[……]

点击跳转以继续阅读

避免输入法 候选条 被其他窗口挡住

在开发落格输入法 macOS 版本的时候,我遇到了这么一个难题,那就是窗口优先级的问题。在之前 如何让 NSWindow 显示在不同的 Space 或者 Screen 中 这篇文章中我提到了自己实现了落格输入法的候选栏,其实是用一个 NSWindow  实现的。那么既然是一个普通(经过魔改)的 [crayon-6905ec758bc5289567[……]

点击跳转以继续阅读

面对coronasdk的物理引擎

关于移动手机的开发,目前网络上主要流行两种开发软件,一个是众所周知的unity(毕竟当年4399小游戏上面的网络版Minecraft由它开发,3d引擎没有任何软件能够超越它),另一个是比较小众化的cocos。cocos占据着2d游戏的主要位置,而unity却占据着3d游戏的主要位置。而我们讲的coronasdk与cocos一样为2d游戏引擎(coronasdk不被人所知主要是因为2010年以前收费[……]

点击跳转以继续阅读

Android 安卓开发板 读取串口

最近接了个工程,需求是给特制的工程安卓板子做串口读写以实现一些特定外接设备的互动——是的你没有看错,安卓板子也是可以有串口的!

很多做移动开发的朋友可能没接触过——其实在这之前我也没接触过。踩了七八个小时的坑,终于爬出来了,这里做一个总结,可能各个工程板子具体情况不同,大家一定要随机应变。

首先你要知道的

跳线,工程板子为了节约 USB 接口,默认的 USB 接口都是对外的不能接电脑调试[……]

点击跳转以继续阅读

? 双拼,拼不停。→落格输入法 macOS 版,正式上架!?

优秀的输入法,来到了另一个优秀的平台!

虽然它还欠缺很多功能,但我还是迫不及待地分享这美好的东西给你们,落格输入法终于走上了 macOS,多年以来,在 macOS 上输入双拼是一个噩梦,现在,这个噩梦可以终结了。

除了残缺弃坑不知道什么时候就不能用了的手心输入法 Mac 版、基本上非专业人员不能配的 Rime 输入法外,你又多了一个选择,落格输入法 macOS 版

前前后后半年的时[……]

点击跳转以继续阅读