婚礼微电影剧本

6镜头闪回

音乐:Cloud Atlas Opening

分镜1:军训

  • 时间:2002年9月
  • 地点:虎林中学操场,
  • 音乐:俩少无猜

夏日的操场,空的旗杆,学校的墙壁,树叶

操场上原地踏步的孩子们,男生从背后看着女生,女生的双马尾在晃动

休息的时候,女生和其他女生在玩耍,男生看着女生

分镜2:表白

  • 时间:2004年2月
  • 地点:海冰宫溜冰场
  • 音乐:大无畏

灯光闪耀的溜冰场,技巧娴熟的男生在加速,变换姿势。

渐渐的,脸上流露出紧张的神情。走向寄包处,拿起好时Kisses巧克力。

面对女生,他递上巧克力。女生扭捏收下,湖南的灯光掩盖了女生的红脸。

分镜3:毕业照

  • 时间:2005年6月
  • 地点:虎林中学操场
  • 音乐:路小雨

拍毕业照那天的操场,同学们三三俩俩的拍照留念。

突然一个声音出现:季玙斐跟陆秋石拍一张呀!女生略显尴尬但没有拒绝,男声紧张但按捺不住内心的喜悦。

镜头从操场开始,一路切换到高中

串场

音乐:战败秋明山

同框不同背景下的两个人穿上各自的校服,开始了各自的高中生活。

背景变为相同,两人有少量互动,但没有明显的火花。

最终两人回到不同的背景。

分镜4:重聚

时间:2013年2月12日

地点:环艺电影院

音乐:Cloud Atlas Opening

环艺电影城外景,内景,云图海报,云图片段

渡轮码头,牵手。

苏州河畔桥,单车,闲聊,欢笑,泪水。

分镜5:求婚

  • 时间:2014年8月25日
  • 地点:奉贤路
  • 音乐:Ending-不能说的秘密

接上镜,男女手缓慢松开。悬念。

漆黑的奉贤路,男生放下他的双肩包,取出一束花,和一枚耳钉。

男生下跪,女生赶忙拉男生起来,两人抱在一起。

下跪前12秒,背景音乐起

分镜6:婚礼

  • 时间:2016年9月24日
  • 地点:婚礼现场
  • 音乐:Cloud Atlas Ending

第一段,婚礼当天剪辑。

新郎在追光灯下等新娘

现场(音乐继续)

新相机试镜之泰晤士小镇

IMGP0318   ƒ/5.6   PENTAX K-50   55mm   100   1/1600s

IMGP0295   ƒ/4.5   PENTAX K-50   40mm   100   1/320s

IMGP0287   ƒ/4.5   PENTAX K-50   40mm   400   1/80s

IMGP0159   ƒ/4.5   PENTAX K-50   28.13mm   100   1/160s

IMGP0117   ƒ/4.5   PENTAX K-50   135mm   100   1/1250s

IMGP0351   ƒ/4   PENTAX K-50   20mm   100   30s

IMGP0347   ƒ/10   PENTAX K-50   18mm   100   6s

IMGP0335   ƒ/4   PENTAX K-50   18mm   200   1/320s

IMGP0334   ƒ/4.5   PENTAX K-50   42.5mm   100   1/160s

IMGP0328   ƒ/4   PENTAX K-50   21.25mm   100   1/400s

IMGP0325   ƒ/5.6   PENTAX K-50   50mm   200   1/100s

IMGP0309   ƒ/4   PENTAX K-50   18mm   100   1/1600s

IMGP0250   ƒ/5.6   PENTAX K-50   55mm   200   1/100s

区分软件包依赖和版本控制,Git历史修剪“核武器”小试

我的89jian项目依赖于LubanLock,LubanLock又依赖于CodeIgniter,所以我就想当然的把Codeigniter配置成了LubanLock的一个remote,又把LubanLock配置成了89jian的一个remote,被依赖的库有更新了,依赖它的库就git pull LubanLock一下。

我首先发现,这样我每在LubanLock中的一个提交,会重复出现在依赖它的项目中(这当然不是问题),Github在统计个人贡献的时候,会重复计算这些提交。开始我认为是Github的bug,还发了邮件给人家support。人家弱弱的回了一段,说你项目之间的依赖没做好,才会这样的。

然后我就慢慢懂了,包依赖管理,和版本控制,原来是两回事呢!对于一个项目来说,需要自动安装,不直接改动代码,甚至不提交入库的包称之为依赖,这些代码的版本控制其实并不关心,只要确定当前依赖的版本和来源就可以了。而版本控制则记录了每一个贡献者的每一次代码提交,应该仅针对当前项目。如果动不动就把依赖的那些项目的版本管理也纳入,那你的库该有多热闹(我之前看似数百人参与的那些LubanLock的分支就是那么回事)。

不过对于包管理,有一些前提:被依赖的包在项目中可以轻松设置路径,比如composer的就是vendor,一般是不应该去改它的。那么对于我而言,LubanLock对于89jian,是框架,硬要做成依赖扔到一个目录里太伤,不如就像其他几个WordPress项目一样,对于WP的更新不去pull,直接提交更新后的整个代码。把框架纳入仓库,还是出于可能会对框架进行一些项目范围内的局部改动,方便跟踪更改。

于是我现在,CodeIgniter仍然是LubanLock的remote,89jian等项目中的LubanLock代码直接cp,而且纳入前者的版本控制中。

附使用Git剪枝的两端脚本

git filter-branch --commit-filter '
 if [ "$GIT_AUTHOR_EMAIL" = "uicestone@gmail.com" ];
 then
 skip_commit "$@";
 else
 git commit-tree "$@";
 fi' HEAD

还有段好不容易调试成的用grep按照提交hash逐条比较判断是否排除提交的脚本弄丢了,算了,估计这辈子难弄第二回。

未来把框架做到单独的子目录,做成依赖管理,应该是迟早的事,人家node.js的express在npm里不就直接一行install装在/vendors/里嘛。如果我用的框架不能适应这些项目管理方式,只能说明,他们老了。

而如果有一天我没有心情研究新的项目管理方式了,说明我也老了。

更新:自从使用了Composer和Laravel,世界清静了。包管理大一统时代即将到来,代码风格大一统时代即将到来。

抛弃花生壳!直接使用DNSPod配置动态DNS

如你所料,如果你想在动态IP的网络环境下搭建服务器,那么你需要一个动态DNS服务,来使用一个固定的域名,解析到实时更新的IP。

公司随便一个搞网络基础建设或者运维的小哥都能报出一个如驴贯耳的名字:花生壳。TP-Link路由器中甚至直接集成了花生壳的动态DNS服务,自动将IP上报到花生壳提供的超短TTL(40秒)DNS服务器。我自然也是使用这个服务来保证家中的老旧笔记本充当的服务器能7×24在全球互联网中占有一个席位。

可是这几天,由于通过家中路由器的流量激增,使得小小TP-Link不堪重负,内置的花生壳DDNS进程僵死导致无法上报IP。不上报就不上报嘛,IP又不是更新的那么快。可恶的花生壳居然在上报失败的时候显示他的新硬件广告:花生棒!泥煤啊,这玩意怎么看怎么像ChengRen电视Bang啊!网页怎么看怎么像美国XX胶囊啊!

寻找替代方案的时候,意料之外,情理之中地发现了DNSPod的API,通过接入API,可以在服务器使用脚本动态上报当前IP到DNSPod,在后者使用A记录解析即可,再也不用再CNAME到花生壳了。那么动手之前,我只有一个疑问,TTL怎么办?DNSPod的免费服务TTL最小只支持600秒,也就是说网络上的其他DNS服务器要600秒才来刷新,运气不好的话,家里IP变更将造成10分钟的服务中断。好吧,先试试再说。

官网推荐的一段脚本,Python写的。首先很愚蠢的花了很久才发现有只要有python环境,.py文件可以直接运行,甚至没有后缀名也没有关系。果断很干净地移到/usr/local/bin/。脚本本身是间歇循环运行的,考虑加入开机自动启动,方法在这

惊喜的是,使用这段代码调用API写入的DNS A记录,TTL居然是10秒,10!秒!。

这下好,IP是自动上报了,机器关不掉了,这段循环运行的脚本阻塞了关机或重启的过程,具体原因就不深究了,直觉直接改由系统来负责定时,把脚本改成一次运行。虽然不会Python,注释一句while神马的问题还是不大。

sudo crontab -e

* * * * * /usr/local/bin/pypod >> /var/log/pypod.log

搞定,重启都免了。

希望明天不要再中断服务了。