给Iphone换个自定义的铃声

概述

iPhone的铃声格式是m4r格式,普通的mp3无法直接设置为铃声,所以需要使用铃声制作工具来转换,一般电话铃声的最长时长设置为40s,闹钟的时长最长为30s

制作工具

Ringer制作铃声

Ringer是Mac上制作铃声的工具,操作非常简单,将下载的歌曲播放到Ringer的主界面

  • 大音轨用于精确控制,双击大的音轨可以从点击处开始播放,设置头尾的Preview可以听整个铃声,下面的小音轨用来快速拖动预览声音
  • 可以制作两种:铃声和立名声音,没发现太大的区别只是最大时长不一样
  • FadeOut/FadeIn : 为铃声添加淡入淡出效果
  • 设置好后点击Create按钮即可将制作好的铃声自动导入到Itunes中

如何避免一些危险的指令操作

git引发的事故

上周服务器的一位同事一个不小心用了git push -f,抹掉了我们一上午的工作内容,还好抹掉的记录不是太多大概八九条.
各自花了大概半小时恢复了数据

恢复过程

#查看所有的本地操作数据
git reflog
#或者查看所有数据,找到被抹掉的commit
git log -g
#复制一个提交节点并在当前分支做一次完全一样的新提交。
git cherry-pick commit_id

权重随机算法

带权随机算法在游戏开发中应用广泛,最近在做商店随机商品又遇到这种问题,重新思考并总结了一下带权随机的做法.

带权随机其实很好理解
比如我们希望抽到A的抽到的比重是10,B的比重是5,C的比重是1,如下图
044TM313

readthedocs切换到mkdocs

之前把学习笔记用sphinx生成然后托管在github上,然后用readthedocswebhook自动build文章数量渐多感觉排版拥挤.于是google了一下找了个替代品,那就就是这篇文章的主角mkdocs

简介

mkdocs是一个支持markdown语法的项目文档管理工具,结构很简单,一个yml配置文件管理文档结构和主题信息,docs目录则是项目文档.官方文档(http://www.mkdocs.org/)

NodeJs初探

nodejs

node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效

安装

mac node使用

#安装
brew install node
#升级node
brew upgrade node

linux node

#ubuntu安装6.x
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs
#升级node
npm install -g n
n stable
#升级npm
npm install npm -g

nodejs常用命令

#查看版本
node -v

用例

创建最简单的webserver

const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});

断言(assert)

当需要在一个值为FALSE时中断当前操作的话,可以使用断言

const assert = require ("assert")
assert(true)//成功
assert(1)//成功
assert(false,"it's false")//触发断言
//deepEqual用于比较对象的属性是否相等,但会忽略原型链上的属性,原始值使用==
const obj1 = {
a : {
b : 1
}
};
const obj2 = {
a : {
b : 2
}
};
const obj3 = {
a : {
b : 1
}
}
const obj4 = Object.create(obj1);
assert.deepEqual(obj1, obj1);
//同一对象成功
assert.deepEqual(obj1, obj2);
//失败,对象值不相等
assert.deepEqual(obj1, obj3);
//成功,值相等
assert.deepEqual(obj1, obj4);
//失败,忽略原型链上的值

node base64

console.log(new Buffer("Hello World").toString('base64'));
<!--SGVsbG8gV29ybGQ=-->
console.log(new Buffer("SGVsbG8gV29ybGQ=", 'base64').toString('ascii'))
<!--Hello World-->

npm

NPM的全称是Node Package Manager,如ruby的gem,Python的PyPL、setuptools,PHP的pear,NPM就是Nodejs的包管理器

npm常用命令

#版本
npm -v
#升级模块
npm update modulename
sudo npm install npm -g

npm 使用新资源库

#以资源库安装
npm --registry "http://npm.hacknodejs.com/" install underscore
#默认资源库为淘宝
npm config set registry "http://npm.taobao.org/"

Node-sass 安装失败解决方案

#mac
SASS_BINARY_SITE=https://npm.taobao.org/mirrors/node-sass/ npm install node-sass --save-dev

/usr/bin/env: ‘node’: No such file or directory

ln -s /usr/bin/nodejs /usr/bin/node

node调试

sudo npm install supervisor -g #安装
supervisor index.js

node后台运行

nohup node app.js > /foo/log.txt 2>&1 &
#或者
sudo npm install forever -g #安装
forever list
forever start app.js
forever stop app.js
forever start -l forever.log -o out.log -e err.log app.js #输出日志和错误

vsftpd使用

安装

vsftpd意思为“very secure FTP daemon(非常安全的FTP进程)”,是一个基于GPL发布的类UNIX类操作系统上运行的服务器的名字(是一种守护进程),可以运行在诸如Linux、BSD、Solaris、HP-UX以及Irix等系统上面。vsftpd支持很多其他传统的FTP服务器不支持的良好特性

命令

#安装
yum install vsftpd
#启动
service vsftpd start
#重启
service vsfptd restart

脚本自动化手册

同步文件

rsync(remote synchronize)

实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加信息.

rsync认证方式

rsync有两种常用的认证方式,一种是rsync-daemon方式,另外一种是ssh方式。在平时使用过程,我们使用最多的是rsync-daemon方式

rsync服务器架设

rsync的主要有以下三个配置文件rsyncd.conf(主配置文件)、rsyncd.secrets(密码文件)、rsyncd.motd(rysnc服务器信息)

驾考

报考

驾照这个事情其实被搁置了很久,一来人太懒,再者觉得边上班还要请假练车是件比较让人头痛的事情,年初的时候被催着把这报名的事情给完成了,报名之前听说广州报个名,拿到证一年多是家常便饭,主要是排队时间太长了.

报考前也逛了一下附近的驾校,知乎上,贴吧上一些帖子也琢磨了下,一般驾校分快慢班,快班的意思就是广州练车可能就到湖南去考试,快班自然价格要贵一些,包括了长途的交通费用,还有一个就是手动档和自动档,一般都学习手动档,学费便宜一些,另外可以驾驶自动档的车型。