Categories
日常应用

微单拍月亮小白教程

虽然超级月亮每年都可能出现一次到两次,但是毕竟一年就那么几天,能拍拍也不错。然而我们一般也不会为了拍月亮而特意准备什么器材——常年拍鸟的有长焦镜头自然好,可是谁没事儿扛着个长枪大炮出门啊....园主反正就一个索尼微单(还是五年前买的),以及一个标配的18-55mm镜头...就这样简陋的装备,也能拍环形山好嘛。

下面是园主的心得。

  • 首先,放弃iphone。
  • 其次,你要有个长焦。(然而园主并没有)
  • 再次,你要有个单反。(园主只有个五年前的微单凑数)

我不知道现在的相机是不是更高级了,反正园主手里的这个微单是没有星空模式,所有自动模式拍的月亮都是一团光圈, 不比iphone好到哪里去....所以,靠手动模式吧!

拍月亮一团光圈的原因不是晚上光线不足没法对焦,而是因为月亮实在是太亮了!按照其他背景风景的亮度根本没法拍月亮。所以,降光线是最重要的。

首先,我们不是拍银河,所以iso降到100或200。

然后大光圈。曝光时间1/2000秒。或者你有三角架的话可以小光圈、延长曝光时间。

最后,最最重要的,对焦无穷远。园主的微单只有一个手动模式可以实现(随便搜了张图)。

screen-shot-2016-11-15-at-1-19-35-pm

嗯、还想要背景?那就高iso长时间同一位置再曝光一次。后期,靠photoshop合二为一吧。

所以最后的成果就是...勉强可以看到环形山。

dsc03139-c2摄于Mission Bay, San Francisco.

Categories
日常应用

《Stardew Valley 星露谷物语》送礼关系网

呃,前段时间入了Stardew Valley(星露谷物语)的坑,然后发现送礼是门很讲究的事情。

然后手痒痒,职业习惯使然,就顺手分析了一下送礼策略。

原始数据:Stardew Valley的官方wiki送礼页面

然后我就是想看一下怎么简单的可以携带一堆礼物然后送给不同村民。

分析办法:把官网wiki的数据抓下来,然后看一下那些东西可以同时送给多个人,又比较容易获得,这样便于有计划的生产和携带。

结果:画了一张图...v开头的是村民,其他都是礼物。前面分析在r,画图的时候还是用了gephi...便于控制。

screen-shot-2016-11-06-at-6-52-54-pm

源代码:

gift = read.csv("stardew valley gift.csv/Sheet 1-Table 1.csv", stringsAsFactors = F)

names(gift)

expand.gift = apply(gift, 1, 
      function (x) {
        gift_list = unlist(strsplit(x[2],"\n "))
        data.frame(v = x[1], g = gift_list)
        }
      )
expand.gift = do.call(rbind, expand.gift)

expand.gift$v = gsub("\n","",expand.gift$v)
expand.gift$g = gsub("[[:space:]]","",expand.gift$g)
expand.gift$v = paste0("v.",expand.gift$v)
names(expand.gift) = c("source","target")
write.csv(expand.gift, file = "expand.gift.csv", row.names = F)
expand.gift = subset(expand.gift, ! g %in% c("Prismatic Shard","Rabbit's Foot"))

expand.gift.mul = merge(expand.gift, expand.gift,
                        by.x = "v",by.y = "v")
expand.gift.mul = subset(expand.gift.mul, g.x!= g.y)

library(igraph)
gift.n = graph_from_edgelist(as.matrix(expand.gift.mul[,2:3]), T)
gift.n = as.undirected(gift.n, mode = "mutual")
V(gift.n)$size <- 1
l <- layout_with_kk(gift.n)
plot(gift.n,layout=l, vertex.label.cex	 = 0.7)

write_graph(gift.n, file = "svgift.gml",format = "gml")

原始数据:

sheet-1-table-1.csv

矢量图形:

svgift.pdf

Categories
网站建设

换个样子

简单的换了一个wordpress的主题,主要是以前那个太落后于现在这种手机小屏幕的潮流了,我又懒得去改以前那个模版。就这样简简单单的也挺好的。

Categories
日常应用

简单的shell

好像一直没怎么正儿八经的写shell....今天不得不动手写了。反正就是摸着石头过河吧。

for i in {1..20}
do 
    mydate=$(date -v-"${i}d" +"%Y/%m/%d")
    echo "------Now importing:"$mydate"--------"
done

这样就实现了一个简单的for循环。

  • do 和done完成一个循环...
  • date是给日期的,mac和linux貌似语法有点不一样,date -v-1d 这样是往前减一天。后面那个是日期的格式。
  • 然后等号旁边不能有空格,这个和r差别好大。
  • 然后如果command中间要引用变量,需要${}一下,有点像r的paste()然后eval(parse())。
  • 1..20相当于r的1:20,给出一个整数序列。echo就是打印到屏幕上了。

暂时就这些,至少现在用起来是正常的哈哈。

Categories
日常应用

Hadoop Arvo Schema 和 HIVE 笔记

昨天捣鼓了一天这个东西,随便写点笔记。

  • arvo:除了著名的hdfs文件,hadoop上常用的另一种序列化存储的文件格式就是arvo。简单的讲,这货就是由一个定义好的schema来读取的二进制文本文件。
  • arvo schema:很像json...比如这里这个:
{
 "type" : "record",
 "name" : "Tweet",
 "namespace" : "com.miguno.avro",
 "fields" : [ {
 "name" : "username",
 "type" : "string",
 "doc" : "Name of the user account on Twitter.com"
 }, {
 "name" : "tweet",
 "type" : "string",
 "doc" : "The content of the user's Twitter message"
 }, {
 "name" : "timestamp",
 "type" : "long",
 "doc" : "Unix epoch time in seconds"
 } ],
 "doc:" : "A basic schema for storing Twitter messages"
}
  • 定义好schema之后可以用java去build...
  • arvo to HIVE:可以直接建HIVE external table. (还是上面那个link)
CREATE EXTERNAL TABLE tweets
 COMMENT "A table backed by Avro data with the Avro schema stored in HDFS"
 ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
 STORED AS
 INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
 OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
 LOCATION '/user/YOURUSER/examples/input/'
 TBLPROPERTIES (
 'avro.schema.url'='hdfs:///user/YOURUSER/examples/schema/twitter.avsc'
 );

然后就是正常的玩法了。