某不科学的技术博客

(:3[____] 只做了一点微小的工作

OS X

Maria 开发记录 II

Maria 是为 aria2 这款命令行下载软件定制的 Native App,开发 Maria 本身是不用写下载核心代码的。 这个项目最初创建于4月份,至今已经有6个月了,从最初的一个 Today Widget 发展到现在已经快要接近于完整的 macOS 应用了,(但是在我眼里还是不算完整应用,因为下载核心需要依赖 aria2 项目,而缺乏自己的下载核心程序),之前也写过一篇文章简单讲了一下这个程序的编写过程。最近的几次更新主要是对 aria2 的深度集成,到目前也已经有所成果了,所以准备记录一下这其中的过程和坑。 集成 aria2 一开始是根本没打算集成 aria2 的,因为考虑到其他类似的软件比如 Aria2GUI 或者是 Aria2D 都是用的直接打包一个 aria2 二进制包的方式,实际上还是通过 rpc 的方式来控制下载操作。 我个人觉得这种方式集成

Hexo

黑白漫画去白底

对于黑白漫这类图片,如果放在一个背景不是白色的网页上,会显得很突兀,所以需要将图片的灰白色部分去除掉变成透明的。 另外也是因为在 iBooks 上体验到了这个功能,于是就自己写了一个简陋的版本。这里大致讲一些算法思路。 因为是要直接在浏览器上处理,所以就直接使用 JavaScript 写了。先获取 img 标签,再把得到的 Image 对象转换成 Canvas 对象,再通过 canvas 来处理像素块,得到去除白底的图片。 从 Canvas 里直接获取到的数据是 RGBA 格式(red-green-blue-alpha format)。 [255, 253, 255, 255, 252, 250, 252, 255, 254, 252, 254, 255,

Hexo

自己设计 Hexo 主题模板

自己设计一套博客主题,暑假计划做的事情在拖到暑假结束之后终于在学校完成了,先上一张基础版本的截图吧。 设计借鉴 iBooks 和多看阅读软件的设计,重点突出中文排版,文章排版使用 han.css ,所以这套主题适用于一般日记散文中文文章,而不适合用作程序员的技术博客。 之前一直使用的是 Ghost ,从很早的版本就开始使用, Ghost 的确是一个很不错的博客程序,适合小白用户。但是由于自己的服务器需要更多的运行资源,所以由 Ghost 改为 Hexo。Hexo 可以直接一次性生成所有页面的静态文件,然后配合 nginx 使用,节省了 Ghost 或者 Hexo Server 将近 100MB 的基础内存使用。 在编写 Hexo 主题的过程中也是遇到了不少的坑,这里集中提出来。 首先要想自己写一个主题出来,肯定是要去 Hexo 官网

Swift: 从入门到重学?
Xcode

Swift: 从入门到重学?

当时 Swift 才出来的时候就去体验过了这门新语言,也写过一篇文章介绍这门语言,而现在 Swift 3.0 发布,我决定重写这篇文章,你可以看到,前后两次我对这门语言的理解是有很大不同了。 同时这也说明了一个道理,如果你没有花一定的时间精力去认真体会一门语言,你是根本没有权利去评判一门语言的好坏的。 有很多人说,这 Swift 一年一个语法版本大更新,垃圾语言,在我看来不过是人云亦云的跟风狗罢了。 关于 Swift 我打算分成两部分讲: 第一部分是语言部分,主要是这门编程语言的语法,还有内置的一些库,比如枚举类型、可选类型、协议等等;

OS X

Maria 开发记录

Maria 是为 aria2 这款命令行下载软件定制的 Native App,开发 Maria 本身是不用写下载核心代码的。 这篇文章主要目的是分享我在开发过程中的一些经验以及遇到的一些坑,顺便期望着有人能快速看懂我的代码提出意见。 Aria2 我们先来说一下 Aria2 是什么。Aria2 是一款命令行下载软件,你可以在终端输入简单命令直接下载文件,而不用再非常麻烦的打开其他下载工具了。~~(其实我觉得一点也不麻烦)~~比如快速下载某个文件: $ aria2c "https://moeoverflow.com/moe.gif" 我们通常所说的 Aria2,其实是指的 Aria2 RPC 模式,一种可以在后台运行并通过 WebSocket 通信的模式。由于有了这么一个特性,很多开发者开发出了各个网盘的浏览器插件,可以一键式的快速下载网盘内容,比如下载百度云盘的内容,不用再下载云管家(Mac

OS X

Cocoa dev 运行 shell 命令

近期在做 Maria 的开发的时候,需要运行 Shell 命令,这里把遇到的一些坑说明一下。 Sandbox 首先如果你需要通过 Shell 多外操作的话,需要关闭 Sandbox,不然执行 Shell 命令的时候就会一直卡在那里。 .sh 文件 执行 Shell 命令,一般都是先写到一个 .sh 文件里面。当你添加一个 .sh 文件到工程项目里时,请注意要连接上项目相应 Target. Error 如果遇到程序 Crash 并给出 path not accessible 错误信息,需要给你 .sh 文件可运行权限。大致做法: 打开终端并进入你 .sh 文件所在的目录

Xcode

YXMenuView 开发小记

第一次尝试做一个 iOS Framework - YXMenuView[1],遇到了不少问题,写这篇来记录遇到的一些问题以及 MenuView 的设计思路。 基本结构 MenuView 分为两部分: headerView (custom view) bodyView (table view) 初始化问题 VIew 初始化的大致流程 init(frame: CGRect) 或者 init?(coder aDecoder: NSCoder) 初始化基础 View initBaseView(),也就是 View 的大致结构,并且使用默认数据源初始化详细 View 如果没有设置 Delegate 和 DataSource,到这一步就可以结束了 当检测到

JavaScript

JavaScript 数组随机获取多个元素

今天撸代码实现了 array.forEach(); 的类似方法 array.forRandom(); 这个方法可以随机不重复地获取数组中多个元素并进行相应处理。 函数实现 Array.prototype.forRandom = function(n, callback) { // 如果 n 大于数组长度,则直接调用 forEach(); if (n >= this.length) { this.forEach(function(element) { callback(element); }); return; } // 深复制 var temp = []; this.forEach(function(element, index) { temp[index] = element; }); var len

Procreat

在 iPad 上画画是怎样一种体验

最近这几天买了两支蓝牙电容笔,一支是 Paper53 pencil,另一支是 Adonit jot touch. 这里大致说一下使用体验吧。 Paper53 pencil 这笔很漂亮,非常漂亮,材质胡桃木,看上去高大上。但是也就仅仅是漂亮了。 一开始我以为这支笔是有压感的,毕竟能蓝牙连接。使用了一段时间后发现,这个其实是伪压感,笔触大小是通过和笔尖接触面积来确定的,这也是这支笔被设计成这么大一个笔尖的原因。[一开始我是想不明白的,为啥笔尖要设计得这么大..] 因为笔尖很大,所以这支笔拿来画画的话会是非常蛋疼的。比如第二笔的时候很难接着第一笔的继续画。而且笔尖是软的不稳,拿笔的姿势不同笔尖到屏幕的触点也会不同。当然也有可能是我用 iPad mini 屏幕太小的导致的使用不便。 然后 Paper 这个 App 其实 bug 蛮多的,有时候想用橡皮擦却是模糊工具,有时候画着画着就成橡皮擦了。 所以这支笔对我这画画的人来说完全不适合,画一些框图、

JSON

JSON String 直接存取 SQLite3 的方法

最近在写的 Node.js App 的时候,需要直接将 对象 直接存入数据库,如果使用 JSON.stringify(json) 把 JSON 对象转换为字符串直接存入,会报错显示查询语句出错 var data = { name : "shin" } 存入 JSON String 的时候需要使用 escape() 进行转义序列编码,取出的时候需要使用 unescape() 进行转义序列解码 var sqlite3 = require("sqlite3").verbose(); var db = new sqlite3.Database(config.

Telegram

Telegram 贴图表情 - 请问您今天要来点兔子吗?

Telegram Stickers Pack - Is the order a rabbit 前段时间看抑郁番看多了,这几天看 点兔 萌我一脸血,所以决定制作一个 点兔的贴图包。 已更新至 17 张贴图。 这个贴图包使用 @西园美鸟 提供的截图包制作。 「贴图包持续更新中...」 最近查看了一下纪录,这个 Stickers Pack 已经有 540 的安装量了。 add the Stickers](https://telegram.me/addstickers/IsTheOrderARabbit)

EPUB

制作 EPUB 电子书并适配多看阅读

多看出品的图书都是全屏封面,而且注释都会有漂亮的弹出框,这对于我等完美主义者简直不能更棒了,但是,虽然说多看图库现在相对来说已经很全了,但是些许冷门书籍还是缺少的,需要我们自己制作。更多细节参考多看电子书规范扩展开放计划[1] 图片全屏显示 需要编辑 content.opf 这个文件,我大概讲一下这个文件的作用「一般使用软件制作 EPUB 都会自动生成,我们只需要稍作修改即可」 content.opf 是 EPUB 电子书的核心文件,而且是一个标准的XML文件,依据OPF 规范,主要由五个部分组成: metadata // 元数据信息,比如标题、描述、类型、出版社之类的信息 manifest // 列出各类文件列表 spine // 决定文档阅读顺序 guide //指南,依次列出电子书的特定页面 tour //导读「根据不同的读者阅读水平或者阅读目的,

Swift 初体验
Xcode

Swift 初体验

准备 Objective-C 转 Swift 了「转什么转诶,反正两个不都得学嘛 「而且本来OC都还没没学好呢、 第一次看到 Swift 的代码,首先注意到的就是语句末尾讨厌的分号终于被干掉了,真是有点小学生作文体「高兴得跳了起来」的感觉呢。 整体看来 Swift 的代码是变得更加简洁了。Swift 与 Objective-C 相比,虽然大体上编程思想差不多,但是语法方面还是有很多的地方差别蛮大的,第一次看到的 Swift 的代码多少都觉得有点奇葩。 「Swift 相比原先的 Objective-C

算法

带小数的高精度数的任意进制转换

大学第一学期期末课程设计的一道题,进制转换。 大概思路就是把整数和小数部分分开为 整型 类型,由一个结构体构成。整数部分进制转换模拟人工除法取余,小数部分进制转换模拟人工乘法取整。 numTrans.h /* Windows 8.1 VS 2013 Pro 编译通过 */ #include <stdio.h> #define MAXSIZE 10000 typedef struct n{ short s_integer[MAXSIZE]; short s_decimal[MAXSIZE]; }NUMBER; int inputNum(NUMBER * f_num, int f_

Don't Starve 不作死就不会死
Game

Don't Starve 不作死就不会死

在 Steam 入了一款游戏 Don't Starve ,太好玩了根本停不下来,就等着明年联机正式出来就和好基友联机抱团取暖。 14年12月份,这个时间段的游戏最新版真的是蛮难的,机具挑战。玩了将近11小时,停尸房已经是10几具尸体了。所以我也有必要写写给分享分享。 「不得不吐槽的是,游戏开始那人说话的音好难听,强迫症简直不能忍。」 人物属性大概有三个 「生命值」「饥饿值」「心智值」 首先一出来就要开始找食物,不然第二天都过不了。前面几天最好能找到大量的「浆果 berries」,这东西虽说只能加饥饿值,生命心智都加不了,但是生存前几天应该不存在生命值爆减的情况。然后应该会看到很多「胡萝卜

算法

算法题 HDU Problem 2211 杀人游戏

类约瑟夫环问题 算法题目链接地址 传送门 题目要求 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1506 Accepted Submission(s): 315 Problem Description 不知道你是否玩过杀人游戏,这里的杀人游戏可没有法官,警察之类的人,只有土匪,现在已知有N个土匪站在一排,每个土匪都有一个编号,从1到N,每次杀人时给定一个K值,从还活着的土匪中,编号从小到大的找到K个人,然后杀掉,继续往下,直到找遍,然后继续从剩下的土匪中,编号从小到大找到第K个活着的土匪,然后杀掉。

JavaScript

用 impress.js 制作 About Me 页面

通过使用 impress.js 实现网站的 About Me Page ,感觉棒棒哒~~ 「很早就知道 impress.js 这么个开源项目,但是一直很(hen)忙(lan),没空加内容进去,所以也就一直没有发布到网上来。昨天闲的无聊,晚上开始弄一直到凌晨4点。」 就写个总结,以免以后又忘记了,内容简单,勿喷。 这次就是忘记了,浪费了好多时间 >.< <div id="its-in-3d" class="step" data-x="0" data-y="