Category Filters

  • All
  • web-tech
  • experimental
  • design-patterns
  • game-audio
  • audio-technique
Performance Between Set Map and Object

测试Set, Map和Object键值对的读写速度。
写入速度:可以看到Set和Map基本在一个级别,Object慢得多
随机读:Map非常快,Object次之,Set较慢

Variable Object, Scope Chain and Execution Contexts

简单的梳理一下ECMA Variable Object1Scope Chain2Execution Contexts3 相关的概念,以便在分析devtools heap-snapshot时明白各个属性表示的意义。

Http1.1 Cache Control

Http 1.1 的缓存机制

Memory Leak by Closure

It is necessary to notice that closured [[Scope]] in ECMAScript is the same object for several inner functions created in this parent context. It means that modifying the closured variable from one closure, affects the variable in another closure. - Dmitry Soshnikov

JS Module Specification

JS语言本身没有模块概念,为了让JS支持模块化,ServerJS(后更名为CommonJS)社区大牛们推出了Module 1.0规范。后来为了可用于浏览器端,制定了名为AMD规范,并且推出了requireJS这个框架。由于AMD与CommonJS规范相去甚远,CommonJS的拥护者认为,浏览端也可以实现CommonJS的规范,于是稍作改动,形成了CMD规范,并且推出了seajs这个框架。正在AMD与CMD打得火热的时候,ECMAScript6给JS本身定了一个模块加载的功能,ES6表示“你们也别争了,JS模块有原生的语法了”。

Markdown Syntax

Markdown is a text-to-HTML conversion tool for web writers. Markdown allows you to write using an easy-to-read, easy-to-write plain text format, then convert it to structurally valid XHTML (or HTML). - JOHN GRUBER

Simple Raag Player

Player for basic Raag AROH, AVROH and PAKAD playing. Tones are changed when specific Thaat is chosen.

The changes of the Silk Road in different dynasties

< 返回丝路概览

丝路地图

丝路主干线

东起长安,西至巴尔米拉,然后分道开罗和君士坦丁堡。
途经河西走廊,塔里木盆地,帕米尔高原,卡拉库姆沙漠,厄尔布尔士山脉,扎格罗斯山脉,进入美索不达米亚。

丝路主干线

北线和南线

北线从瓜州(安西)向北,沿天山北线经过哈密,高昌(吐鲁番),伊犁,阿里木图,碎叶(唐),塔剌思,突厥斯坦;再顺着锡尔河北上,从咸海和里海以北进入欧洲。

南线从喀什、莎车、塔什库尔干等地通过瓦罕走廊穿越帕米尔高原,新都库什山,到达喀布尔;再通过开伯尔山口进入南亚次大陆。

早期丝路地图

早期丝路地图

汉代丝路地图

汉代丝路地图

隋唐时期丝路地图

唐代丝路地图

新疆境内线路及遗址分布图

新疆境内6处入选世界文化遗产名录

省份 申遗点
新疆维吾尔自治区 高昌故城
  交河故城
  克孜尔尕哈峰燧
  克孜尔石窟
  苏巴什佛寺遗址
  北庭故城遗址

西域丝路及遗址地图

Silk Road Countries

< 返回丝路概览

地中海东部的文明相对简单:

  • 罗马共和国(Roman Republic, Senatus populusque Romanus, SPQR)509BCE - 44BCE
  • 罗马帝国(Roman Empire)44BCE–476CE
  • 拜占庭帝国(东罗马, Byzantine Empire)~330 - 1453
  • 奥斯曼帝国(Ottoman_Empire)1299 - 1923

丝路亚洲地区的国家、朝代变迁,按时间先后大致的对应关系如下:

Node.js 8 The Right Way
Design Patterns - Visitor vs. Iterator

二者最大的区别在于聚集中的元素是否异构,对于访问者模式,其存在最大的理由就是分离异构元素上的不同操作。迭代器模式用于按一定顺序访问聚集中的元素而不用暴露聚集的内部表示;而访问者模式是用来操作聚集上的元素,可以在不改变各元素的类的前提下定义作用于这些元素的新操作。访问者模式在遍历聚集元素时也可采用迭代器实现。

Design Patterns - Observer vs. Pub-sub

订阅/发布 模式重点是对外广播消息,Observable (a.k.a Publisher) 并不关心哪些 Observers (a.k.a Subscribers) 接收到事件,只管发送事件。

  • 在发布订阅模式中,组件是松散耦合的,正好和观察者模式相反。
  • 观察者模式大多数时候是同步的(回调函数);而发布-订阅模式大多数时候是异步的(使用消息队列)。
  • 观察者模式需要在单个应用程序地址空间中实现,而发布-订阅更像网络通信模式。
Design Patterns - Chain of Responsibility vs. State

状态模式中,状态之间的转移可以是网状的关系;责任链中节点的关系是链状关系。
状态模式中,状态转移是在类的设计阶段就定好的;而责任链的下一级是由客户端动态确定的。

Design Patterns - Factory vs. Builder

可以把建造者模式看成对工厂模式中的每一个ConcreteFactory的进一步细化。

Design Patterns - Decorator vs. Proxy

装饰器模式关注于在一个对象上动态的添加方法,然而代理模式关注于控制对对象的访问。 用代理模式,代理类可以对它的客户隐藏一个对象的具体信息。因此,当使用代理模式的时候,我们常常在一个代理类中创建一个对象的实例。而当我们使用装饰器模式的时候,我们通常的做法是将原始对象作为一个参数传给装饰者的构造器。

Design Patterns - Bridge vs. Stratage

相对于策略模式,桥接模式要表达的内容更多,结构也更加复杂。桥接模式主要体现的是接口隔离的原则,即把本质上并不内聚的两个体系区别开来,使得它们可以松散的组合;而策略在解耦上还仅仅是某一个算法的层次,没有到体系这一层次。

Japanese Voice Actor Firms

从1960年「東京俳優生活協同組合」设立以来,历经半个多世纪的发展,配音职业已经从最初的译制片“声替”衍变成为当下备受瞩目的声优偶像。声优事务所之间的渊源也从侧面反映了这一段发展历程。

The Music of DanganRonpa

高田 雅史(Msafumi Takada)先生在「杀手7」「Vanquish」等游戏的配乐作品中留下了令人印象深刻的实验性的作品后成立了自己的工作室,在2010年底开始陆续发布的「弹丸论破」系列中,他更将自己作曲风格多样且极富创造性的特点发挥到了极致。

The music of NieR:Automata

「尼尔:机械纪元」获得2017年TGA的最佳作曲/配乐奖,在玩家群体中也获得不错的口碑。值得对它的音乐表现和实现方式进行分析和总结。

The Voice System of Game Inside

「Inside」是Playdead工作室继 「Limbo」 后出品的又一力作,游戏荣获 E3 大赏Game Critics Awards最佳独立游戏。 在 2016 Wwise Tour 讲座上,Playdead 团队的音效师 Martin Stig Andersen 和音频开发 Jakob Schmid 对游戏的声音设计做了分享,其中着重介绍了游戏的Voice系统。

Sound Design of Rainbow Six Seige

「彩虹六号:围攻」 中最主要的创新之一是在场景中放置一系列的 Propagation-Nodes 摆件,它可以用来辅助计算经过衍射的声源像点位置,从而实现了游戏中可破坏墙体的声音衍射。

Play by Sound - Sound Design of Overwatch

“游戏性至上”是暴雪的核心价值之一。守望先锋的音频团队制定了颇具雄心的目标 —— Play by Sound:通过声音传递尽可能多的信息,给玩家的操作选择提供参考,而不是简单的响应角色动画或技能特效。

Sound Design of VR Regatta

VR Regatta(VR赛艇)是一款帆船驾驶独立游戏。从声音的角度来看,每条船在操作过程中都会产生一系列特定的噪音,但是基本上整个体验的声音都归结为风声和水声的结合。营造良好的环境声不光可以增加沉浸感,还能做到让声音指引玩家。

Sound Design of The Witcher 3: Wild Hunt

起初只是打算对巫师3音频团队在Wwise Tour做的分享进行梳理,后来又断断续续地做了音频拆包和音乐分析,直到今天更新已经过了快三年了。在分析音乐结构地过程中,能够看到他们从刚开始做序章的保守到DLC中大胆尝试更多交互形式的突破;就我个人而言也从当初的只看个热闹到现在对各种细节穷追不舍,算是进步吧 —— 2021.3.13

Sound Design of Planet Coaster

「过山车之星」 的乐趣在于建造并经营最伟大的过山车乐园,并同世界分享你的创意。它是Frontier目前最具雄心,也是技术上最先进的模拟经营游戏。音频团队通过独特的Crowd-Soundbox系统实现了栩栩如生的人群音效。

Sound Metadata

Metadata记录了音频文件的元数据信息,包括声音的类别、描述、制作发行机构或个人、制作发行时间、所属专辑等等。由于历史原因,目前有多种协议、规范被广泛应用于不同的DAW、元数据管理工具及媒体播放器。在制作发行音效库时应该尽量兼容这些规范以保证素材可被更多工具正确检索。

Chinese Opera Percussion
Tuning Systems

简单罗列出西方十二平均律,中国三分损益法,印度五度、四度相生律等Tuning方法。并以440Hz和432Hz为基本音对上述Tuning的频率差异进行对比。

Sound Absorption Coefficients

Table of Sound Absorption Coefficients that can be found on internet.

Loudness Bit-depth & More

关于数字音频的制式以及相应的响度关系的探讨。

Cinematic Sound Systems & Home Theater

在即将发布的 wwise 2021.1中,在影视行业流行了十来年的 Object-Based Audio 被带到了游戏互动音频领域,成为最有意思的新功能之一。本文回顾影视行业的声音系统的大致发展历程,梳理了当下主流的声音系统技术。