Node.js开发环境配置(intern-buptsse工程)

从头说明搭建node.js开发环境的几个步骤(for project intern-buptsse)。

推荐使用Linux进行开发,避免各种傻逼的问题。

  • 安装好Linux(最好是Ubuntu、Fedora、Mint、openSuSE这些主流的Linux发行版)

  • 打开一个终端,运行如下命令:

    Ubuntu:

    sudo apt-get install git mongodb-server redis

    Fedora:

    sudo yum install git mongodb-server redis

    这样就安装了git、mongodb以及redis

  • 安装node.js

    • 方法A 从仓库安装(所有发行版)
      终端中执行sudo yum install nodejs

      (使用该方法安装需要在npm install -g的时候加上sudo)

    • 方法B

      1. 访问http://nodejs.org/download/下载对应Linux的tar.gz文件
      2. 将文件中的目录(bin、lib这些)解压到~/.local这些对应的位置
      3. 编辑.bash_profile文件(可使用gedit .bash_profile)往文件里面添加如下代码

        if [ "$PATH" = "" ]; then
        > PATH=$HOME/.local/bin

        else

        PATH=$HOME/.local/bin:$PATH

        fi

        export PATH

      4. 注销用户、重新登录
      5. 新建一个终端,执行node -v验证是否完成安装和配置
  • 配置git(参考本文从“配置GIT”一节开始)

    配置你的名字和邮箱(还没有github的同学请去注册一个github帐号,注册完成以后还要注册密玥,这个找时间另外交代吧)

  • 同步项目仓库

    git clone git@github.com:shinohane/intern-buptsse.git

  • 安装工程的依赖项

    cd intern-buptsse

    npm install

  • 运行程序

    npm start

这样,基本的配置就完成了。

额外工具

文档整理组同学请务必全局安装一下marked

npm install -g marked

对前端开发最好对下列模块进行全局安装

npm install -g jade less

后端开发最好全局安装下列模块

npm install -g node-dev mocha

或者全都装上吧……对开发会有便利的~

最后

关于git的配置和github的使用,过几天再另外说明吧……

啦啦啦~GiftPress,使用Git的博客系统

居然还敢开坑……实在是没救了…… = =…… 哎~一坑未填一坑又起

GiftPress是基于Git版本控制系统的一个博客系统,本体是Node.js编写的服务器

基本上打算采用这样的结构

本体 {

插件.submodule { Javascript }

主题.submodule { LESS, SAAS, JADE, EJS }

内容.submodule { Markdown, MultiMarkdown, Jade, HTML }

}

本体是一个简单的Express服务器,是不更新的!本体启动以后去加载主题和插件,内容则由内容渲染插件负责渲染。 由于使用的是插件的结构,本体可以对下挂的子模块进行在线动态升级 OwO, 而升级需要做的事情也只是git merge然后git push而已……

妈妈再也不用担心博客的数据备份、网站挂马,so easy > <…

总之用过Git的大概都知道这么些个特性,用起来肯定也是很方便的呢~

【关于插件的框架设计上面有一些不清楚的地方~

【评论插件~大概会使用Disqus这样的公共评论系统吧……实在要保存在本地的话倒是也有解决方法(存文件,做提交!)

《雪之本境~解境篇》网页版【又开新坑】

【众:喂……ONScripter-SAO的坑还没填好啊!

这些日子以来,与ONScripter打的交道也比较多了~虽然不怎么玩Galgame什么的(总共加起来有玩过6部左右……),而作为一个代码强迫症患者,看着NScript的代码真的是为广大文化工作者感到捉急←_←

火车上的空虚又寂寞的时间里,在下对构成一个可视化小说(通称Galgame)的内容构成进行了少许粗浅的思考(相关知识补充急需中),对相关的东西进行了简单的分解和构造……萌生了一个初期的基于Web交互技术的Galgame游戏引擎的想法~

在娜娜姐的帮助下……暂时把名字定成了yooScript……简称yoo! = =……

yoo!在场景脚本语言部分将极大的借鉴于kirikiri script的简单直白的特性,同时yoo!的程序也使用javascript处理交互。在界面和布局上,yoo!可以利用HTML+CSS3进行任意的工作。当然yoo!本身也提供一套完整的API接口供开发者使用。

为了能完整的匹配yoo!的需求【这样表述真的没问题么?——在经过多方考虑以后~就有了《雪之本境~解境篇》网页版的试作计划。服务器使用Node.js+Nginx开发,界面由LESS+Jade构成,兼容性方面暂时只考虑基于Webkit的浏览器实现,对Gecko的兼容会在不得已的时候被舍弃……

关于《雪之本境~解境篇》的更多信息请进入SP-Time同人游戏创作组网站进行了解,同时希望大家能够支持国产Galgame事业的发展,购买正版游戏 ^_^

本项目托管在Github上,猛击这里访问代码仓库

ONScripter-SAO

ONScripter-SAO是Android上的NScript游戏模拟器(好吧……更直白一点……Android上面的GalGame大多数都是NScript来的好吧!),详情请戳度娘或者谷哥~

ONScripter-SAO的用户界面部分是由羽音维护的~界面部分已经成型~风格来自Metro和SAO风格~界面动画是原创哦

代码仓库托管在GitHub上,有兴趣的同学请自行Fork【哪怕是Star一下也好 OwO

基本的风格向SAO靠了个近,应用丰富的动画交互【低端设备可能会卡以及掉帧什么的……无视就好。

仓库已经由原来的UIDemoSAO改名为ONScripter-SAO,原作引擎也已经嵌入~master分支上已经是个能用但是功能不怎么强大的ONScripter了~

功能更加强大的ONScripter-CN由娜娜姐维护~代码仓库请戳娜娜姐的ONScripter-CN~

当前ONScripter的开发状况:主界面部分已经完成、游戏引擎部分暂时使用原来的UI、游戏设置面板未完成、系统设置面板以及关于部分未完成。

游戏设置面板的设计工作已经完成,实现需要等待期末考试以后……【大概会比较久了……有一段时间不能更新了的样子……

已完成的部分

【阅读这一部分的大家请不要吐槽图片中出现的游戏名或者图片内容】

主界面:加载条目使用某动画,不过还有一些Bug……比如条目之间的时间间隔不能很好控制之类的,左边清晰图部分是封面显示区,这里显示的是默认的封面,游戏可以通过定义游戏目录下的media.json定义Cover等属性,如果没有media.json那么ONSAO会对目录进行扫描并找到最有可能的文件。后面的更新考虑在游戏设置菜单内提供对media.json所有属性的编辑。

ONSAO主界面加载

在主界面选中条目以后会在条目上方出现浮动控制板,控制板是进入游戏和游戏设置界面的入口,控制板在出现一段时间后会自动消失,点击选中的条目再次出现控制板。

选中条目同时会尝试获取封面和背景,如果背景没有定义,那么将使用封面图片的模糊化图片做为背景。

ONSAO浮动控制板 ONSAO主界面

ONSAO只扫描/sdcard/ONS/目录,对ONS目录下的所有子目录都会显示在界面上,如果该目录不是一个游戏目录ONSAO将会作出提示。

ONSAO过滤非游戏目录

不管这个目录是不是游戏目录,ONSAO都会扫描其中的media.json文件和媒体,尽可能的显示封面、播放PV和主题音乐,媒体播放中用户可以通过设备上的回退按钮(Back)终止播放。PV和主题音乐的播放是PV播放优先的。

ONSAO游戏PV播放 ONSAO音频播放功能

游戏设置面板正在施工……下一阶段的施工可能会导致逻辑的变更……近期不会打算继续施工了【期末考试压力大】

ONSAO游戏设置界面(施工中)

最后是ONScripter的运行界面,当前使用的是来自ONScripter官方的游戏引擎,配备了中文菜单……

ONSAO运行NScript游戏 最后做个声明~上面的所有图片中的游戏只有这一个是真正的游戏目录……【SD卡16G快满了……目有办法嗨~】 最后给一个测试用的目录包下载~内含一些MV以及《星之梦》还有apk~猛击这里访问度熊网盘

Mars坐标修正公式

This article is translated into English.

The accuracy is said below 3 meters for every coordinate.

Bias Calculation

a1 = 213.7;
b1 = 0.06066;
c1 = 2.39;
a2 = 144.9;
b2 = 0.1121;
c2 = 10.33;
a3 = 283.3;
b3 = 0.0302;
c3 = 2.711;
a4 = 99.34;
b4 = 0.2621;
c4 = 0.75;
f(x) = a1sin(b1x+c1) + a2sin(b2x+c2) + a3sin(b3x+c3) + a4sin(b4x+c4)

Longitude Calculation

Delta=f(longitude) / (111195 * cos(latitude))

Latitude Calculation

Delta=f(longitude) / 111195

Reference

http://www.sosaw.com/forum43/thread-175355-1-1.html
http://www.sosaw.com/forum43/thread-181978-1-1.html

 

Related Regulation

http://www.sbsm.gov.cn/article//zcfg/zygfxwj/200711/20071100027952.shtml

关于Mars坐标修正

关于Mars坐标的修正问题其实由来已久,现有的修正手段只有离散点插值的方法【据说有人把公式搞出来了……但是没有验证不能乱说呢……

用于修正Mars坐标的数据库和代码请戳度受

高德地图定位结果

在测试的过程中我们发现高德地图API定为的结果一定是加过火星坐标修正的,修正行为是国了个家规定的安全保护行为,对于高德地图定位结果是火星坐标这一问题,我们通过将地图控件的图源设置为ditu.google.com使用的瓦片 (ditu.google.com使用的是全偏移图,因此偏+偏=正!)

使用高德地图进行定位的那些事

Google的Gears API关闭有一段时间以后呢,我们才发现它不能定位了……

不能快速定位对于一个LBS应用来说是多么大的悲哀啊……【精度问题另说……

于是速速的想换成百度的Locating API,可是鉴于以前用过百度的精度都几公里的坑爹Wi-Fi定位……最后发现了高德!也就是AutoNavi的API。

由于我们有自己开发了的地图控件~所以就只打算使用高德的定位服务。具体的定位服务借口还请移步官方文档

AutoNavi的API封装成了LocationManagerProxy向用户提供服务,首先我们会遇到的问题是……居然默认一直开着GPS,而且没接口去开关GPS!这对于LBS应用来说又是一个杀手啊……

我们自己也开发了一套GPS-WiFi联协定位模型(这里就不描述了,一个简单的基于负反馈控制模型)实现室内室外多模定位以达到节约电能的目的,被高德地图API这么一弄就呵呵了……

于是就有了本文的徒手拆“高德”计划,被拆的是高德地图v1.3,接下来我们来介绍拆卸过程(主要是介绍一个特殊的逻辑游戏的基本玩法)。

【注意:本文只介绍拆卸方法,不提供拆卸后的代码和拆卸过程中添加的任何代码,拆卸仅以学习为目的。

1、由dex2jar从apk生成jar包,然后再使用jd打开

2、导出一个源代码包~并释放代码到工程的src目录

3、Eclipse工程里面已经可以看到java文件了,接下来删除与定位无关的类(根据jd的引用查找)

4、根据推理,解决java文件内的命名冲突(这里主要根据的是参数类型推断以及类成员约束,推断过程是一个很好玩的推理游戏)

5、Java的语言特性:内部嵌套类对象访问外面的类的上下文成员时会使用access$x(…)这类函数去获取,这些函数名也会被proguard(默认就是proguard了)混淆,所以需要在这一步还原嵌套类的逻辑。(jd是不还原出access$x(…)的代码的,因此这步的推断比较困难)

6、还原代码结构:还原变量的名称(给abcd这样的变量一个合适的名字),比如 Context c = null; => Context mContext = null; 【这一步可以在任何时候执行,也有可能产生错误的推理,所以请做好版本控制

7、理解整体代码结构,还原包名以及一些其他的东西

以上就是个人在拆高达的过程中的一些小小的经验总结……毕竟高德v1.3的api混淆程度不高(v1.2的混淆程度更低)所以这种程度的也比较容易做到。

解决了代码的问题,通过直接使用WiFi定位类(那个location包里面implement了Runnable的类)来定位就可以了~在取出GPS长开定位的同时我们也为Wifi定位类怎加一个暴露的setGPSLocation(Location)接口,使我们的GPS控制器定位的结果也能提供给高德定位服务。

人人站内应用“恋爱连连看”

用户界面设计的大作业,老师定的题目……原来的题目坑爹的叫做“乱点鸳鸯谱”……

本来是没什么兴趣做的~但是既然不让改题目……我就做了吧……

看样子只能改应用名了呢,于是找了个稍微和风一点的名字……把“乱点鸳鸯谱”这个名字给换了。

恋爱连连看Splash

上图就是个封面,请大家慎重吐槽……【点击查看大图……部落格的主题对大图的处理有点问题……貌似……

Logo是毫无设计感来着了……恋爱连连看Logo简单的一个“恋”字【总觉得像在做其他应用……

应用页面 – http://apps.renren.com/koiconn   【虽然也许只能看到个封面 OwO

技术上使用Nginx反向代了个理到Node.js实现服务器,后台使用Jade+LESS+JavaScript编写(左思右想发现CoffeeScript还是不能忍……)

着周就得跑通……现在只有个Splash的羽音压力山大哇……国际惯例

分段FLV快速合并/Kisstudou的好机油之FLVCopyCat

写完了Kisstudou以后呢……发现一个很严重的问题……各种视频网站大多会给视频分段~用ffmpeg官方的办法来合并FLV虽然不会有什么大问题,但是其原理是将flv文件拆分成可拼接的视频和音频(mpg和pcm)拼接后再行压制到flv……

这样的效率是很低而且也不能保证输出视频的质量……

flvcopycat基于Adobe标准的flv文件结构直接拼接flv帧,并且重建timestamp和metadata,可实现快速的flv合并。原来也用VB6写过一个FLV合并器【黑历史……其实不黑啊】,所以用Python写起来也有一点文件结构的经验了~

代码同样也是托管在GitHub上【万一哪天github跪了←_←

这里描述一下可能的改进方案就是将FLVCopyCat整合进KissTudou脚本,整和后可以直接在下载阶段对视频文件进行合并……【因为FLV本来就是流媒体的文件结构麻……

但是这样一来就必须在Python下写一个HTTP下载客户端……好烦不想搞有木有!

Kisstudou-使用flvcd服务flv下载客户端

这是很早以前的一个工程了……下载flv用的……虽说flv普遍清晰度不高不能收藏~拿来看个人来说还是可以接受的……

硕鼠是一个提供视频音频网站多媒体解析下载的这么个平台,我们的脚本利用硕鼠返回的结果就可以实现解析媒体地址了

脚本托管在GitHub上,已经很久没有更新了~结构写的也很凑合……我是乖乖的GitHub链接