Archive for the ‘Informatics’ Category

Three months in Beijing

找房子 确定 搬进去 有床 花费了漫长的三个月

一直没有把朋友叫过来做一次饭 house warming party 没办 就一直没有settle down的感觉

下面是在刚满月的时候再安琪家露台写下的

七月九日 来北京满月的日子

早晨 爬出帐篷 静坐在露台上看蓝色的天

总是用一种局外人的角度在看这里

开始享受这种在城市住露台睡帐篷的日子

九月 一切都好 只缺烦恼
今夜 南京

n361

北漂

晚上的火车 开始北漂的生活

一个新的城市 一份新的工作 一种新的生活

回国的幸福感依然持续蔓延

离开家的最后一日竟然潸然了, 久违的家庭生活那么快就要结束了。

上路 去实现一个梦

北京见。

n369

离开是为了回来

从2006年出来的那一天就在筹备这篇

当时走之前一直在听林一峰的《离开是为了回来》

那时只知道自己肯定会回,却不知是何时。

身边的朋友一个个的送,今天也是该我说 So long

每个人都会问我此刻的心情

就像当时蛋妞走我问他那样

原话他怎么回的我不记得了

大意是 前面就是新生活 留恋过去又有何用

不舍,有的,蓝天白云绿草地

激动,更多,朋友家人新生活

五年 长大了很多 更认识自己了 知道自己要什么

整理箱子时 在想这30kg应该装的是我怎么样的生活

帐篷,溜冰鞋,一叠带了8年的信件,一些所谓文件,陪了我三年的walle,几件tee,几条牛仔裤,手机,电脑,照相机

这些似乎已经足够,希望回国也能这样吧,尽量保持简单的生活。

嗯 我辞穷了 就这样吧 我回来了  high起来吧

Airplane mode

明天就要飛走 朋友都輕鬆奉上祝福  旅途愉快
留低是個選擇  離開亦未算放開一切壓抑
如愛上一個人  一起上路
才驟覺尚有一些心野
行程未想好  起點經已太遠

人進進出出在我生命
季節更改幻變天地 歲月流過
遺憾若是放不下
仍可學習去感激得到過的
如放棄一個人 孤身上路
才驟覺尚有一些心軟
忙著讓傷口盡快風乾  沿路風光沒心機細看
明明是太軟弱  偏裝作硬朗

倘若結束為了重新開始   乾掉了酒為了重新斟滿
旅途落泊 能讓記憶穩固   偶然下雨懷念陽光可愛
歡樂太短為了回憶千次   (倘若痛哭為了趁早解脫)
失掉瑰寶為了尋找安慰
我離別你全為太專心愛   怕忘掉了世間的色彩
離開 是為了回來

從機艙機望向跑道   迅速身處萬尺高空  我留下你
城市跟天空大概一樣 容納著敵友從不知道偏心
曾遇上幾個人 一心靠近
才驟覺尚有 一些心癮
離別再上路 不管遠或近

明天就要飛走
朋友都輕鬆奉上祝福  旅途愉快
n423

[带你看世界]九月的尾巴 Isle of Arran

上周早上醒来 天气无比的好 史蒂芬童鞋在gtalk上呼叫

11点决定去Isle of Arran, 2点半在火车站集合
完全没有计划的出逃

在路上

Train Glasgow-> Ardrossan Harbor 14:15-15:09

Train tikect

Ferry Ardrossan -> Brodick 15:15 – 16:10

Ardrossan Harbor

手动模式 一不小心就爆了, 凑合看吧

起航了

苏格兰的旗子

继续旗帜

Baby

定焦头拍的Stephen童靴

我自己,玻璃有够脏

到Brodick

Brodick Bay

先发个map,接下来的两天我们就是绕岛一周, Arran是苏格兰第7大岛,英国第九大,人口5000多吧。

Map

到了在information center耗了很久,问了很多问题, 决定晚上直接去Kildonan看日落,明天继续起来看日出。但是在那里耽搁太久导致错过了一班bus,下一班要等到7点。 这样我们看日落的希望就木有了,所以再次的要hitchhiking啦。

Brodick Bay

小逛了一下,就去拦车了

第一个拦车的地点

大概等了半个多小时吧,一个善良的大妈搭救了我们, 她是去养老院看她妈妈的,后来她说自己不赶时间就直接送我们去了camping site, 一路上还跟我妈讲了很多可以玩的地方, 充满期待。她曾经在岛上看过北极光,非常fabulous的说。

Kildonan 晚餐和日落

路上顾着聊天也没拍照 转眼我们就到了 Kildonan. 露营的地方旁边就是 Kildonan hotel.

kildonan

kildonan bar

这个地方的划分有些奇怪,在房间里面的呢是餐厅,露天的是bar。在露天这边吃东西呢只能点bar menu上面的食物。

Menu

看了半天不知道点什么,本来期待海边能有点什么龙虾蟹之类的,结果无奈的点了 fish and salad,出人意料的好吃。比起城市里的那些,fish要肥美很多。

fish and salad

35号台

Cocacola

没事玩一下定焦头,很多换了哈 虽然现在还不太会玩

边吃晚餐边看日落啦

灯塔

准备看日落

继续灯塔

日落

日落

被染红的天空

落完了

iphone的HDR也不赖吧

吃晚饭check in,compingsite的老板跟我们说这是最后一个周末了, 十月compingsite应该都关门啦。 交完钱,搭完帐篷。晚上月亮出来了

满月

然后接下来就是赏月赏星光了, 在海中的大岩石上躺下来 看天一点点暗下去, 星星越来越多,还一不小心看到了一颗流星。后来刻意的等了很久就再没有出现了。 嘿嘿,虽然有点小冷,但是这种感觉太美妙了。我是俗人,以物喜以己悲。 后悔手机里没有装个star walk,可以多认识点星星嘛。

后来实在太冷 又跑去bar里做了一会 喝了杯热巧。

该换睡袋了,晚上就一个字,冷。

日出

在information center查的6:15的日出,五点半就爬起来啦。

还太早 完全没有日出的迹象

彩色的天空

等到快7点的时候 就觉得已经看不到了 一直在犹豫要不要回去接着睡 结果这边开始亮了

要来咯

出来了一点点

又多一点点

差不多都跳出来了

日出啦

灯塔也变成粉红色啦

跟太阳玩一下

手持火球

吐火球

早上的月亮

粉红色的灯塔

看完,回家收帐篷

super light tent 再次入镜,很喜欢我们邻居的车

另外一边一个骑摩托车的哥们跟我们说远处有很多海豹,还借了他的望远镜给我们看。 吃完早餐,遇到一个团,他们的导游说不要靠近海豹,会吓着他们。于是远远的有了下面这张,经过我的仔细观察辨认,那不是木头,确实是在晒太阳的海豹们。

那些翘着尾巴的海豹们

远处的小岛啊 轮船啊 有点海市蜃楼的景象,都飘了起来

缩小以后看不清楚了

早上第一班bus是11点半

等车的地方

等得无聊 跑去玩了会儿秋千

海边的秋千

豪宅呢

蓝天和大海

在路上看到有人玩越野摩托车

越野摩托车

Blackwaterfoot

我们到这里的车晚点了,就没有赶到去Lochranza的车。 司机把我们丢下说,可以去路边get lift。 嗯 第二次的 hitchhiking。

第二个hitchhiking的地点 我们要去的是Lochranza 17mile

太帅气了 马好大的

镇上的房子

Lochranza

搭了两次车, 一次是一个在格拉斯哥工作的中老年男人带着他5,6岁的儿子。把我丢在另一个相对比较好拦车的地方, 然后遇到一个神奇的在Holly island呆了一个星期的长胡子的中老年女性。 由于第一天遇到的人说北部有很多鹿啊 各种动物之类,我们满怀期待的来带了 Lochranza。

lochranza

lochranza

城堡

等车回Lochranza

然后郁闷的事情就开始接二连三的发生了, 由于之前现金没有准备够,我们已经身无分文啦,接下来的bus也木有钱,问了一个餐馆的服务人员,这个小镇是没有ATM的,要拿钱可以在店里买东西拿cashback,手续费2镑左右。 真是黑啊。Stephen去买了瓶可乐,取了点现金。满怀期待的去传说中很好吃的海鲜餐馆。

早上起来太早,在回brodick的bus上就睡着啦。 还好没有坐过站,下车以后傻了。 这个餐馆下午3-6点关门,我们到那里的时候大概4点15, 晚上7点15的ferry。 从餐馆走回码头大概需要30分钟,6点开门我们显然是等不及了, 纠结郁闷悲愤的离去,在超市随便买了点牛角面包之类的。

走回Brodick路上经过的河

行程结束,回来的时候太冷,相机都懒得往外拿。 回到格拉斯哥以后去十家楼补了一顿,但是自从那天起,我就开始每天都觉得吃不饱。

最后

Arran真是个小地方,我们遇过的人几乎都遇到了两遍以上,抱憾的海鲜餐怀恨至今。

但是 24小时内,看了日出日落,赏了月看了星星, 还抓住了流星,意外在海边遇到晒太阳的海豹, hitchhiking了三次,在公车上瞟了一眼鹿,在9月的尾巴又去露营了一次。 还能奢求更多吗?

估计这也是最后一次跟斯蒂芬同学一起旅行了,再过两个星期他也要回到祖国母亲的怀抱了。 耸肩叹气。

这篇流水账竟然弄了快4个小时。。回到现实已经一个星期,强烈怀恋躺在岩石上看星星的那种宁静。

最后的最后

“我还在路上,你出发了吗?”

n633

Amazon EC2| micro instance connection refused

新玩具 Amazon EC2

昨天重启了服务器以后就再也ssh不上去了 connection refused了, google 了半天 原来是ubuntu10.04的一个bug

因为micro的最便宜 所以就在micro上玩, 谁知道它不支持ephemeral storage(就是放一些数据之类的,反正这个东西是个临时数据),当重启以后发现找不到ephemeral storage了, 但是cloud-init这个傻子呢还傻傻的死等, 这就是bug的地方啦。

解决问题当然也就不难了, 只要让他不再等就好了

Mark 一下solution

在这里找到这个解决方法 (别着急,这个方法是有问题的)

modified the init file to tell ssh to start after the network has been initialized, replaced in /etc/init/ssh.conf :

start on filesystem

with

start on (started network-interface
          or started network-manager
          or started networking)

重新生成AMI,然后启动一个micro的instance,跟解决了。 但是视乎这个解决方案不好, 因为启动的时候你告诉他你可以现在A开始,或者B, 或者C。 机器会傻的, 到底是要从哪里呢?
当然后面又有高人出来了, launchpad上面给出了两种办法

第一种是ssh上去然后copy下面一段

[ "$(uname -m)" = "x86_64" ] && ephd=/dev/sdb || ephd=/dev/sda2
sudo sed -i.dist "\,${ephd},s,^,#," /etc/fstab

第二种能 就是 launch instance with cloud-config metadata
这个没弄明白应该怎么加

上面三种方法 前两种都做了测试 顺利搞定 mark一下
估计在ubuntu10.10就会把这个bug修复了

n770

[Rails 3]Cropping images use paperclip and jcrop

在railscast看到用paperclip跟Jcrop(一个jquery的一个插件)来实现图片裁剪功能,看起来很简单 就顺便用在现在做的项目里面了。 结果杯具的花了一天多的时间来弄。

在上一篇

[/rails]

paperclip works on windows 中记录了怎么给一个model加avatar

100×100# VS 100×100>

在model中我们加入了一下的代码

has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => "100x100>" }

注意这里的在维度后面加了一个大于号,当时不是很理解。 google也没有找到答案,今天又仔细研究了一下, 100*100>的话呢,>是指按比例缩放的情况下最长边等于100. #就不是按比例缩放了, 如果是 100×100# 最后的图就是拉伸到100×100,不论之前的比例。

首先 在model里面把上面这句改成下面一句

has_attached_file :avatar, :style {:medium=>"150x150#", :large=>"500x500>"}

我们在页面上显示用户的头像是150*150的。
因为用户上传的图片的大小必然是各种各样的,所以我们这里先把用户给的图片变化成我们已知的大小, 这里的large style接下来就会用来被裁剪的图片。

Action

我们要实现的是, 当用户upload一个图片时转到一个叫crop的页面去进行裁剪。
所以需要修改controller里面的action,下面这段代码直接从railscast里面偷过来的。

def create
    @user = User.new(params[:user])
    if @user.save
      if params[:user][:avatar].blank?
        flash[:notice] = "Successfully created user."
        redirect_to @user
      else
        render :action => "crop"
      end
    else
      render :action => 'new'
    end
  end

  def update
    @user = User.find(params[:id])
    if @user.update_attributes(params[:user])
      if params[:user][:avatar].blank?
        flash[:notice] = "Successfully updated user."
        redirect_to @user
      else
        render :action => "crop"
      end
    else
      render :action => 'edit'
    end
  end

Jcrop选区

然后我们要新加一个crop的view,就是在upload一个图片后,跳转到用来图片剪裁的页面。 在这个页面中呢, 我们就要用到Jcrop这个plugin了,下载地址
把JavaScript,stylesheet一股脑都丢进这个文件里面, 当然为了保证Javascript在head里面呢,我们可以用 yield跟content_for 来做,请同学们自行动手尝试。(也可以到这里围观Ryan是怎么做的)

加入下列代码 依然是偷过来的,我自己的使用haml写的

    <% title "Crop Avatar" %>
    <% content_for (:head) do %>
    <%= stylesheet_link_tag "jquery.Jcrop" %>
    <%= javascript_include_tag "jquery.Jcrop.min" %>
    <script type="text/javascript">
     $(function() {
        $('#cropbox').Jcrop();
      });
    </script>
   <% end %>

  <%= image_tag @user.avatar.url(:large), :id => "cropbox" %>

通知paperclip选区范围

显然这只实现了一个在图片中选中一个区域的步骤,我们需要告诉paperclip我们选择了哪个区域。
回到model里 加入下面的代码

attr_accessor:crop_x, :crop_y, :crop_w,:crop_h

什么是attr_accessor, 字面上来看呢 就是attribute accessors,如果你熟悉java或者c++, whatever else. 这个就相当于getter跟setter的合体。
这里的四个值呢 分别是 crop_x 左上角的x坐标, crop_y 左上角的y坐标, crop_w 所选框的width,同理crop_h 所选框的height.

怎么把这些值传递给paperclip让它知道呢,首先想到的是要弄一个表单,为了不让这些值显示给亲爱的用户,所以我们使用hidden input.

继续偷代码

 <% form_for @user do |form| %>
    <% for attribute in [:crop_x, :crop_y, :crop_w, :crop_h] %>
      <%= form.text_field attribute, :id => attribute %>
     <% end %>
     <p><%= form.submit "Crop" %></p>
  <% end %>

这时候我们在Jcrop的调用中也要加一些配置了

$(function() {
  $('#cropbox').Jcrop({
    onChange: update_crop,
    onSelect: update_crop,
    setSelect: [0, 0, 500, 500],
    aspectRatio: 1
  });
});

function update_crop(coords) {
   $('#crop_x').val(coords.x);
   $('#crop_y').val(coords.y);
   $('#crop_w').val(coords.w);
   $('#crop_h').val(coords.h);
   }

这里update_crop的方法呢就是用来更新选区。通过表单提交给model,这时候呢我们要通知model 我们需要来进行crop
在model中加入以下偷来的代码

 after_update :reprocess_avatar, :if => :cropping?

   def cropping?
     !crop_x.blank? && !crop_y.blank? && !crop_w.blank? && !crop_h.blank?
   end

   private
   def reprocess_avatar
     avatar.reprocess!
   end

上面这段代码是说什么呢, 通过crop_x, crop_y, crop_w,crop_h来判定是否进行croping,如果进行cropping的话就通知paperclip再reprocess一下。
然后就是要告诉paperclip该如何处理?

Reprocess

安装railscast上讲的,我们需要有在lib文件夹下,新建一个paperclip_processors的文件夹, 然后new以下新的文件cropper.rb 内容如下

module Paperclip
  class Cropper < Thumbnail
    def transformation_command
      if crop_command
        crop_command + super.sub(/ -crop \S+/, '')
      else
        super
      end
    end

    def crop_command
      target = @attachment.instance
      if target.cropping?
        " -crop '#{target.crop_w}x#{target.crop_h}+#{target.crop_x}+#{target.crop_y}'"
      end
    end
  end
end

这时候测试一下, 错误如下
uninitialized constant Paperclip::Cropper
检查一下,好像是因为lib文件夹下面的文件并没有自动载入, 一google才知道 rails3 取消了对lib文件的autoload. 既然不能自动我们就手动呗。到model文件里面加入下面两句

require 'lib/paperclip_processors/cropper.rb'
include Paperclip

再次运行,新的错误又来了,
undefined method `sub’ for ["-resize", "x170", "-crop", "170x170+9+0", "+repage"]:Array

看了railscast下面的comment,有人也有同样的问题,原因是新版本的paperclip改变了他处理命令的方式,这里有人给出了解决方式
在cropper文件里面分别替换成下面两行

crop_command + super.join(' ').sub(/ -crop \S+/, '').split(' ')
["-crop", "#{target.crop_w}x#{target.crop_h}+#{target.crop_x}+#{target.crop_y}"]

再运行下,理论上应该可以crop了。

校准

但是视乎裁剪的结果并不不准确,原因是我们用large style的图片来做选区,但其实是在original的图上裁剪的,所以我们需要在中间做一个转换。
我们需要知道original跟large的width跟height。在model里面再加入下面的代码

def avatar_geometry(style= :o riginal)
    @geometry ||= {}
    @geometry[style] ||= Paperclip::Geometry.from_file(avatar.path(style))
 end

把update_crop文件更新为下面这样

function update_crop(coords) {
 var ratio = <%= @user.avatar_geometry(:original).width %> / <%= @user.avatar_geometry(:large).width %>;
  $("#crop_x").val(Math.round(coords.x * ratio));
  $("#crop_y").val(Math.round(coords.y * ratio));
  $("#crop_w").val(Math.round(coords.w * ratio));
  $("#crop_h").val(Math.round(coords.h * ratio));
}
</script>

现在再一运行 一切正常啦。

add a preview

但是这样用户体验不够好啊,那再加入一个预览的吧
view文件里面

<h4>Preview</h4>
  <div style="width: 100px; height: 100px; overflow: hidden;">
  <%= image_tag @user.avatar.url(:large), :id => "preview" %>
</div>

javascrip里面继续更新一下update_crop文件

function update_crop(coords) {
	var rx = 100/coords.w;
	var ry = 100/coords.h;
	$('#preview').css({
		width: Math.round(rx * <%= @user.avatar_geometry(:large).width %>) + 'px',
		height: Math.round(ry * <%= @user.avatar_geometry(:large).height %>) + 'px',
		marginLeft: '-' + Math.round(rx * coords.x) + 'px',
		marginTop: '-' + Math.round(ry * coords.y) + 'px'
	});
  var ratio = <%= @user.avatar_geometry(:original).width %> / <%= @user.avatar_geometry(:large).width %>;
  $("#crop_x").val(Math.round(coords.x * ratio));
  $("#crop_y").val(Math.round(coords.y * ratio));
  $("#crop_w").val(Math.round(coords.w * ratio));
  $("#crop_h").val(Math.round(coords.h * ratio));
}

一切搞定。

悲催的我在写cropping?的时候, 少写了一个感叹号给crop_h.blank? debug了好久才找到。希望以后不要再犯这样的错误

n1775

[rails] paperclip works on windows

需要实现一个avatar的功能

谷哥说paperclip

先在railscast上看了下Ryan的介绍, 对于功能基本满意。

1. 安装

Rails3用bundle来管理gem的dependencies。

在Gemfile里面加上如下代码

gem 'paperclip' 

然后命令行 bundle check, paperclip需要安装 再bundle install, 再check一下 现在所有的dependencies 都满足了

2. migration

这里假设我是要给user这个model加一个avatar
按照github上讲的http://github.com/thoughtbot/paperclip, 在model里面加上 下面这句

 has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => "100x100>" }
rails g paperclip user avatar

这样生成了一个migration file,下面这段是自动生成滴

class AddAttachmentAvatarToUser< ActiveRecord::Migration
  def self.up
    add_column :users, :avatar_file_name, :string
    add_column :users, :avatar_content_type, :string
    add_column :users, :avatar_file_size, :integer
    add_column :users, :avatar_updated_at, :datetime
  end

  def self.down
    remove_column :users, :avatar_file_name
    remove_column :users, :avatar_content_type
    remove_column :users, :avatar_file_size
    remove_column :users, :avatar_updated_at
  end
end

好最后别忘了 rake db:migrate (我经常忘记 囧 ), 这样数据库就搞定啦。

3. controller

Controller 里面不需要做什么改动,因为这里的avatar跟其他的email之类的属性是一样的 所以update的时候都会update的, 就来看看view吧

4. views

首先要有一个form吧, 嗯在我们的form的partial里面加一句, 因为我这里用的是haml所以就没有”"

= form.file_field :avatar

还没有完 还要给form加一个html的option, :multipart => true。这样呢 就给form加了一个enctype=”multipart/form-data“, 完整的haml代码如下

= form_for(@user,:html=>{:multipart=>true}) do |f|
  .field
      =f.label :avatar
      =f.file_field :avatar
  .field
      =f.label :email
      = f.text_field :email
  .field
      =f.label :name
      = f.text_field :name
  .actions
    = f.submit

嗯 form有, 上传完了以后要show出来吧, 然后在show的里面加一句

=image_tag police.avatar.url(:medium)

5.ImageMagick

嗯 运行一下,理论上应该是不行的, 因为这里有个重要的东西我们没有安装。 ImageMagick. 这个才是我们今天讨论的重点, 在linux跟mac下这个不是大问题。但是windows总是让人头痛的。
下载地址:http://www.imagemagick.org/script/binary-releases.php#windows

选好适合自己的下载, 注意安装的时候加入环境变量,为了安全起见可以check一下是否成功加入了

这个时候你运行呢 很可能会得到一个 ”Error: [...] is not recognized by the ‘identify’ command“ 的错误。
为什么环境变量加入了还是不能识别呢, 在cmd里面运行下面的代码
1. 把model里面的styles去掉 测试一下, 如果成功上传 说明确实是paperclip跟ImageMagick之间的沟通出了问题。否则,请检查以上步骤是否正确完成了
2. 测试完以后,加上styles, 为什么要加上? 因为我们需要嘛,如果不需要这个不同大小的话这里就可以算成功了 请忽略后面的。 现在打开你的log,看看有[paperclip]的行是怎么说。copy那句话,我的是如下的

identify '-format' '%wx%h' 'C:/Users/danyi/AppData/Local/Temp/str
eam,4212,0.jpg[0]'  

在cmd中输入,报错
这个时候呢 根据报错发现需要”代替‘.输入下面的命令,再试一下

identify "-format" "%wx%h" "C:/Users/danyi/AppData/Local/Temp/str
eam,4212,0.jpg[0]"

视乎运行成功了, 嗯 问题也似乎找到了。如何解决呢,我在config/initializers里面加入了一个paperclip_patch.rb文件, 然后加入一下代码,overwirte原来的quote_command_options方法。

if RUBY_PLATFORM == 'i386-mingw32'
  module Paperclip
    def self.quote_command_options(*options)
      options.map do |option|
        option.split("\"").map{|m| "\"#{m}\"" }.join("\\\"")
      end
    end
  end
end

再测试。。搞定。。

6 最后

不在于这个问题是怎么解决的,而在于这个过程怎么去发现问题分析问题最后才是解决问题。

明天做image的 crop..

n531

与HUST有关的三人三事

又是一年夏天 又是一个毕业季

根叔的寄语

如果看过了Ellen DeGeneres at Tulane’s 2009 Commencement Speech(youtube地址youku地址),一定会觉得国内的毕业典礼是相当的无趣。

而这一次根叔只是用我们平时说话的语言就让大家感动了。

浪费了太多的时间听了太多虚假的言语的我们,只是需要一些跟我们说真实的话。

请去掉官僚 让我们真实的对话 赞根叔

“母校 就是那个你一天骂她八遍却不许别人骂的地方。”

李行亮之快男

之前听过他在华工摇滚节上的演唱  Desperado确实惊艳

不记得跟谁一起去看的他的毕业个人演唱会,似乎是跟小猴子他们一起刷过去的。

去看了演唱会的人,定会被那样的情景打动。

一个人唱歌,一万个人在听。

朋友的伴奏,站台。

记得子时当时还弄了个女子第一band

跟一帮有共同梦想的人为了一个梦想而激情奋斗的夏天

之前说不要踏入娱乐圈的他 今年竟然参加了快男 而且一路高歌进入十二强

祝福他能实现音乐梦想

那年一起听演唱会的同学们 你们现在都在哪里呢?

谢谢 李行亮唤起的那年夏天的hust露天电影院的回忆

R.I.P 陈熙

周五晚上小明忽然在qq上跟我说 如果在国外不开心 就快回来吧

然后跟我讲了陈熙的事情 震惊 不敢相信

对于这个名字并不熟悉 虽然一起上过很多课

惋惜 是怎么样的绝望让他彻底离开的勇气

太理解在国外的孤单 朋友一个一个的送

还有找工作的艰辛与压力

此刻对胖子充满了钦佩 如何强大的内心 让他可以坚持在这边找工作找一年

但是熬过来就好了  everything is gonna be OK

傻孩子 希望你在天堂会快乐 没烦恼

这个事情以后对于心理健康方面思考了很多

工作以后 我们都变得越来越忙碌 但是请别忘了老朋友

保持联络 你的留言短信电话会温暖另一个人的世界

最后 积极生活 一切都会好起来的

n343

Danyifeng.com 正式启用

昨天godaddy上0.99刀的offer 迅速强入一枚

danyifeng.com 会直接转向danyifeng.com

Walle 早上没睡醒就被我拉起来当模特了。。可怜的孩子

散花hoho

欢迎交互链接 O(∩_∩)O

n486

新浪专区之天下贰

12月初的时候,蚊子师父帮我接的网易的天下贰在新浪游戏专区的页面设计。 基本上市连熬三天。搞定了, 师父帮忙很多,也学到不少东西。

今天早上又被呼叫,有新单子。 于是乎去查了下新浪专区(http://games.sina.com.cn/o/z/tx2/),页面终于换成我的设计,只是只是怎么只改了一半。 品质差了很多。。上图

设计图:

n346
Return top