说一说在法国的那点事儿吧

一个月以前,年幼无知滴我对于欧洲是个什么样的地方完全没有概念,以至于把瑞典和瑞士混为一谈。。。
154595939424497799
如今,却再也不能以“没去过欧洲”为借口赖帐了555555555555555

为什么要去法国?

其实,偶只不过去法兰西开个会。。。开个国际会议。。。。开个分子电子学领域的国际会议。。。。
该会议共225人参加,几乎囊括了这个领域的所有课题组,其中16个邀请报告,48个口头发表,160个海报发表。
很幸运,俺是口头发表,而且就安排在第一天。。。

签证、机票和航班

法国驻日本大使馆人不多,签证官是个法国帅哥,但资料审核的过程比较曲折,让我重填了两次(東京的申根签和魔都的申根签居然不是一个套路的。。。)。最后签证两天就批下来了,有效时间是从8/22开始,也就是轮到我口头报告的那天,这意味着必须乘坐8/21晚上从東京出发的灰机,于8/22上午抵达巴黎。太早则不能入境,太晚则错过发表。因为是公费,不能选择舒适度超群的JAL(吃相太难看),只好选择法航的AF293航班。
法航,确实不太让人省心呐!
值机的时候,机器一直提示出错,打印错误报告让我去人工台。于是排了近50分钟的长队到了行李柜台,客服告诉我我定的“高级经济舱”满了,能不能降舱?只听说过“无料升舱”的,还是第一次听到要我降舱的。罢了,反正也是经济舱,心里默念三遍“我是去开会的”,同意了。作为补偿,最后法航还给我150欧的机票折扣券,一年有效期。。。
坐在法航的灰机上,免不了仔细观察一下。于是,发现飞机窗户是老式的机械窗帘设计,而不是电控变色;晚上舱内气温下降(尤其是从西伯利亚上空飞过的那一段),想按服务键找空姐多拿条毯子,奈何服务键按了是木有反应的;起飞后空姐会发用于前排小电视上用的耳麦,我拿到的那个线是断裂的;如此种种还有很多。。。
抵达戴高乐机场后,随手晒了一张行李+飞机餐的图,引起了广泛讨论。。。(适当隐去人名照片及容易造成种族歧视的关键字)
921630399925599691all
总结群众的论点:
1.法航比不上JAL
2.行李还是随身比较安全
3.巴黎小偷盛行远近闻名
4.国航无辜躺枪

初到巴黎

法国巴黎时间凌晨4点,过了海关后太阳都还没出来,时间还早,故放弃了乘坐BUS去巴黎市区的方案,改走小偷多、脏乱差的RER B线。由于车站的工作人员也还没上班,只能在SNCF(法国国家铁路)的售票机上试着买车票。尽管有英语版,但俺表示完全看不懂,摸索了半天愣是没买成功。此刻,本次行程的第一位救星出现了,一位皮肤黑得发亮一看就是混上流的成功男士来到我边上那台机器买票,见我窘迫,就问我去哪?我说去北站。于是他在机器上啪啪啪啪点了一通。。。成功购得赶赴巴黎市区的车票。。。
7点多的时候,乘坐了5号线线抵达了举办会议的地方–UPMC(“巴黎第六大学”,又名“皮埃尔和玛丽居里大学”),随意找了一家店,来杯咖啡,先压压惊!

信用卡被锁

来到巴黎后的第三天,信用卡就被锁了!
这张VISA是到日本后办理的,在日本消费时从来没输过密码,偶尔有几次提示我输密码,俺都是直接按确认键然后签字了事的。久而久之,就以为卡是没有密码的。(呵呵呵呵果然还是太天真了)出来混迟早是要还的,在一顿牛排料理后,俺刷了信用卡,要密码?随便输了三次,于是就悲剧了。自那以后不管去哪消费,只要插上卡,连输密码的机会都不给,直接提示ERROR。至于银联卡,不好意思在法国大部分餐厅宾馆都是不能使用的。。。。
来之前听说法国这边都是能刷卡的,所以没准备太多现金,自信用卡被锁之后,有好几天都过着吃土般的生活。。。
关键时刻,本次行程的第二位救星出现了,就是在会场上结识的新队友Ju-san,有一种东西叫“微信支付”听过没?于是用人民币换了一些现金后,才赶脚心中踏实了不少~

巴黎之夜

巴黎8月份的日落时间大约是晚上8点50分的样子,所以尽管白天开会,仍然不会错过每天的magic time以及夜景时光。

黄昏时的巴黎圣母院-剪影

沿着塞纳河走到卢浮宫美术馆,恰好太阳全部落了下去,留下了近一小时的晚霞天际。

卢浮宫美术馆点灯之后,而夜色尚未完全降临的那一小段时间,是卢浮宫最华丽的时刻。

在蒙特纳斯展望台上俯视艾菲尔铁塔,比起她的翻版東京铁塔而言,更显气派。東京铁塔去过的都懂,体积小就不说了,关键塔底部那个四四方方的建筑算是什么鬼? 東京也有许多大师的建筑,但都被拥挤的道路和周边不相称的环境给破坏了,而巴黎在这一点上做得好,一看就是有规划的留白和放空。
上展望台时还遇上了中国籍staff,对方一眼就看出我是中国人,老乡见老乡两眼泪汪汪。。。

凯旋门也是值得一看,只不过门口那条香街感觉真的很一般,当然重点在于香街两侧的奢侈品店,下回还得找个土豪老司机带带路。。。

TGV延误

周五是会议结束的日子,机票是周天返回,所以设计了一个从巴黎去圣米歇尔山的自由行COURSE。故事便由此展开~
从巴黎去圣山,最方便的交通方式就是先到雷恩,再乘坐1小时的巴士,所以那天下午从蒙特纳斯车站坐上去雷恩的TGV列车。TGV是法国高速火车的简称,相当于中国的高铁,日本的新干线,应该代表了法国铁路的最高标准了。因而心中大定,因为火车不像飞机那样受制于天气,一般是不会延误的,更何况是最高标准的列车呢?!(我果然还是太天真了5555)。。。万万没想到,当列车行驶到勒芒的时候,车停下了,然后开始全车广播,说的尽是法语,说完之后全车的人“诶”了一下。。。心中感觉要遭!
恰好旁边坐了位女士(后来知道她叫Hull太太,本次行程的第三位救星),我就弱弱的问了句,发生什么了?她说前方的火车和汽车相撞,所以这一段道路不能通行了,这班车可能会延误。感谢上帝,她的英语我能听懂!(之后所有的广播全是法语,都有她翻译给我听)
等了没几分钟,广播再次响起,说要从南特绕路去雷恩,大约延误2小时。赶紧一查巴士时刻表,没车了。。。
人算不如天算,走一步看一步呗!在列车绕路的时候开始和“邻居”攀谈聊天。我说俺是第一次来欧洲,怎么就摊上这事儿了,她说不用担心,这种事情在欧洲是很常见的,铁路公司会想办法的。(听到“很常见”三个字,俺也是醉了)
没多久列车员开始挨个来问每位乘客的目的地及计划,Hull太太就把我的事情如数告诉了列车员,列车员说需要讨论一下然后给我答复。期间Hull太太表示很理解我的遭遇,如果今晚没钱找地方住了,可以救济我一下去她家里住一晚。当即感叹,还是在乡下小地方的人热心呀~
当列车抵达雷恩后,Hull太太领我出站找到了列车员询问处理方法,对方表示实在很抱歉今天已经没有车前往圣山了,我说那我就住雷恩吧,明天一早坐BUS去圣山,但是今晚在圣山的酒店你想办法给我退掉,说明原因希望对方不要扣款。列车员答应了,当下电话CALL过去处理了事。
晚上住在雷恩,和Ju-san说起此事,Ju-san还安慰我说,法国铁路给了你一次机会下一次带女票或者老婆去圣山。。。。
紧接着欧洲老司机也开始吐槽了。。。
169143299117906141

圣米歇尔山

虽然木有拍到日出日落涨潮退潮的大片,但就这座世界遗产而言还是很值得一去的。

进入圣山之后先去邮局,寄出三张POST CARD(经费有限,时间有限),能不能收到就看猿粪了。。。

在TGV上Hull太太曾问我为什么日本人喜欢去圣山,我说你知道日本的漫画很有名吧?而圣山是一个可以让漫画家寻找到创作灵感的地方。

已经退潮的沙地,会有暗流,一不小心人就会陷下去。

通往圣米歇尔山的道路一开始就是土路,当涨潮时路被水淹没形成孤岛。后来政府把那条路修建成公路,游客是方便了,但涨潮时海水无法淹没道路造成了景观破坏。政府发现后又花了好多年把路改成了桥,让海水从桥下通过,恢复涨潮时的奇观。但正如Hull太太在车上时所说“圣山与20年前已经很不一样了”。尽管改成了桥,孤岛依旧是形成不了的,因为桥路始终都在,几乎踩遍了那里所有的机位才发现明信片上的绝景是不可能再得到了。只能一声叹息。

回程等车时还遇上一对日本游客,他们也是从東京来的,欧洲巡游(目测是度蜜月)。那会儿现金还算充裕,要不然就准备开口借欧元,然后回東京再还了~~~

法国“美食”

会议期间每天都含2次咖啡休息时间和一次午餐,形式属于立食冷盘自助,至于食物么~~只能呵呵了。
因为实在受不了冷餐食,一般晚上都会出去找好吃的,总体来说比较上品的体验有三次。
第一次是在tripadvisor上找了一家全巴黎排名第204位的牛排店,点了一份当天主厨推荐的牛排+可乐。

撇开味道和口感,画面感还是很强大,看着比较美味。。。也就是看着。。。
首先食材含脂量偏低、口感干硬、肉质粗糙,其次调味方面几乎为零,切开后自己加了点盐混合着一些肉脂作为蘸料来享用,再次就是搭配的薯条实在是太!多!了!很难理解这种垃圾食品有什么好多放的?
第二次是在圣山,找到现地排名第一的餐厅,冲进去就要了一份黑脸羊肉,这种羊生活在圣米歇尔山周边,因为靠海,吃的喝的多少都会带有一些盐分,所以他们的肉里也就有了淡淡的咸味。

值得称赞的是,他家居然有日文菜单,全是汉字,看着可贴心了,找到“羊仔”字样的准没错~放心点菜就是了~
第三次是回到巴黎后去了九区的一家百年老店,Ju-san推荐的。
到店门口时发现在排长队,店员见我是一个人,直接就把我请到店里入座了~~~

他家的鹅肝酱还是可以的,法国名菜嘛~不过吃多了还是会腻~

至于蜗牛,可能是我预期太高了,就觉得一般般吧~队友表示也是如此~

主菜牛肉配薯条也是不可少的,也许牛肉需要配上红酒才能激发出其深层的美味~
值得一提的是,这家厨师在结帐时貌似少算了我10欧。。。牛肉+鹅肝酱+蜗牛一共才24欧。。。

后记

回東京后与友人聚会时,俺是憋了很久了,因而各种对法国的吐槽滔滔不绝。某总教育我说:“你是从東京出去的,不能以金字塔顶端的标准去要求法国人,这样太厳しい了。”
确实,在霓虹待久了,人也会变得十分厳しい,但即便以帝魔两都的要求来对待法国对待巴黎,真的不算过分呐!
至于巴黎的博物馆巡礼的,例如卢浮宫、奥赛、橘园,再多的言语也无法表达出极致的艺术,还是看图来得更直观一些。

附(大片合集,器材:GR+21mm广角镜)
漫步在塞纳河两岸
蒙特纳斯展望台
巴黎-博物馆巡礼
埃菲尔铁塔与凯旋门
雷恩
圣米歇尔山
法国大餐

基于HEXO静态博客生成系统的站点建设

这一篇文章可以说是上一篇日志:静态网站系统的构建与思考具体实现
在经历了2009年至今的若干次网站迁徙和改版之后,三年前就对自己持有的域名作出了重新规划,原则就是只记录精品信息,一些生活中的琐碎由第三方SNS来消化(有响应群体更容易产生互动)。但是再琐碎也是生活的一部分,第三方平台在一次又一次的变化中,曾经的记录也随之流失。几经思考后,既不想丢失数据,又不想产生开销,所以寻求了一套免费建站方案,具体实施如下:
1. 域名
顶级域名基本就不要想了,如果不介意经常重新注册,可以考虑TK那一类的。最后我选择的是eu.org二级域名,这个后缀的域目前已经被Q,所以需要使用https访问模式,果断上cloudflare
2. 空间
免费的虚拟主机一搜一大片儿,根据以往经验,速度和性能简直惨不忍睹,而且动不动就被Q被封。所以要找就要找大企业下的免费方案,比如众多的PaaS,其中Github作为程序猿的地盘还是挺厚道的,就暂时用它好了。
3. 构架程序
空间已经是静态的了,那么程序就不可能是WP或者其他的PHP/ASP,找用户数量多的例如HEXO算是稳妥的选择。为了拉近和动态网站的差距,除去使用NEXT主题并采用第三方评论系统“多说”,又做了如下设置:
a) 修正feed中的相对路径
因为主要内容还是以图片居多,所以挂了一个专门放置图片的文件下在根目录下,在编辑日志时可以用相对路径插入图片(使用相对路径的好处是今后若是更换域名,站点文件不需做变动)。那么问题随之而来,在使用hexo-generator-feed产生feed后,其中的图片仍旧以相对路径出现,给之后使用IFTTT同步至blogger和facebook带来了不便,所以使用replace插件来修复feed。
先安装replace
npm install replace
新建一个rss.js文件

var replace = require(“replace”);
replace({
regex: “/p/”, //存放图片的相对路径
replacement: “http://domain/p/”, //存放图片的绝对路径
paths: [‘./public/atom.xml’], //feed文件所在路径
recursive: true,
silent: true,
});

最后每次生成完网站后,执行node rss.js即可。
为了调试和上传方便,分别写了两个脚本,完美滴实现了程序桌面化XDDDDDDDD

//debug.sh
hexo clean
hexo g
node rss.js
hexo s

//run.sh
hexo clean
hexo g
node rss.js
hexo d

b) 实现相册功能
因为有好多图片是存在在lofter的,所以先把图片下载下来。
新建一个lofterphoto.js

//依赖模块
var fs = require(‘fs’);
var request = require(“request”);
var cheerio = require(“cheerio”);
var mkdirp = require(‘mkdirp’);
var http = require(‘http’);
var urlparse = require(‘url’).parse;

//目标网址
var url = ‘http://xxxxxx.lofter.com/?page=’;

//本地存储目录
var dir = ‘./images’;

//创建目录
mkdirp(dir, function (err) {
if (err) {
console.log(err);
}
});

function sleep(milliSeconds) {
var startTime = new Date().getTime();
while (new Date().getTime() < startTime + milliSeconds); }; //发送请求 var getFile = function (url, i, max) { if (i > max)return;
request(url + i, function (error, response, body) {
if (!error && response.statusCode == 200) {
var $ = cheerio.load(body);
$(‘.img img’).each(function () {
var src = $(this).attr(‘src’);
getDetailFile($(this).parent().attr(‘href’));
console.log(‘正在下载’ + src);
var name = src.match(‘[^=/]\\w*\\.jpg\\w*’)[0];
saveImg(src,dir, name);
// sleep(2000);
});
i++;
getFile(url,i,max);

}
});
};

var getDetailFile = function (url){
request(url, function (error, response, body) {
if (!error && response.statusCode == 200) {
var $ = cheerio.load(body);
$(‘.img img’).each(function () {
var src = $(this).attr(‘src’);
console.log(‘正在下载detail’ + src);
saveImg(src,dir, Math.floor(Math.random() * 100000) + src.substr(-4, 4));

});
}
});
}

function saveImg(url, dir,name){
sleep(500);
http.get(url, function(res){
res.setEncoding(‘binary’);
var data=”;
res.on(‘data’, function(chunk){
data+=chunk;
});
res.on(‘end’, function(){
fs.writeFile(dir + “/”+name, data, ‘binary’, function (err) {
if (err) throw err;
console.log(‘file saved ‘+name);
});
});
}).on(‘error’, function(e) {
console.log(‘error’+e)
});
}
var i = 1;
getFile(url, i, 100);

然后我为了省事儿,直接用了一个相册生成器VisualLightBox产生一个网页,将网页中的主体代码复制到HEXO下新建page的index.md文件里,重命名并删除原先产生的index.html文件,而后在CSS里找到定义DIV的那段代码,修改width为auto。这样页面就成了自适应的,无论在PC上还是手机上都能顺畅浏览。


至于如何搭建HEXO,如何部署到Github或者双部署,这里就不再赘述。

静态网站系统的构建与思考

静态网站,可以认为是网站构建的根本。 随着动态网站的出现,众多CMS程序已经十分全面的占据各大网站系统的后台。 基于Web标准,使得前端与后端分离化,数据与文件分开管理。由于这些好处,PHP+MySQL几乎横行了大部分的站点构架。然而,对于个人用户,或者小型企业而言,整站动态化是否真的必要?我认为,这是值得商榷的。

一般的静态网页,因为少了数据库的查询,对于所在服务器的要求大大降低,页面加载速度也就大幅度提升,用户体验度自然也就高,十分适合展示型或者更新频率较慢的网站。这两点要求,恰恰符合了个人博主与小型企业用户的需求。但问题在于,如果要构筑静态网站,那么会迫使非专业用户学会使用Dreamweaver等专业的建站程序,这无疑阻断了用户选择静态建站的道路。除此之外,诸如用户评论、RSS订阅、社区分享、访客统计等功能,在基本的静态站点中也是无法实现的。这一系列的问题,最终导致静态站点与整个互联网脱节,成为孤立的一个主体。

解决方法其实很简单,也是我目前尝试应用在企业站点中的手法,就是基于动态网站构架,静态化页面!原理很简单,因为在一个网站中,大部分东西都不需要实时更新的,比如网站名称,文章内容,页面介绍等。那么极端一些的方法就是,让所有的东西都不需要动态化,先整站静态化。当有内容更新时(比如新文章加入,新评论加入等操作),再进行一次静态化操作(或者只针对需要更新的页面做新的静态化处理)。这样一来,访客在打开页面时,SQL次数基本为0,但是使用者又可以在后台方便的实时更新,一举而两得。这个方法我定义为:由动至静。

那么反过来,由静至动是否可行呢?答案也是可以的,这必须归功于当下流行的静态网站生成器。原理就是在本地建立了一个网站模板,在本地写好日志后,通过批量化处理自动生成并更新所有的页面文件,最后想这些文件统一上传至服务器就完成了。与传统的静态网站构建方式相比,有两点不同:1.降低了更新文章的操作门槛,用记事本就能完成文章的添加,修改,删除。2.可以充分利用Web 2.0应用,将评论、订阅、分享、统计等功能托管在第三方服务。最终完成的站点效果,与“由动至静”法相差无几。

虽说相差无几,但毕竟还是略有些差异的:1.部分需要查询数据库的功能,比如搜索,无法在“由静至动”中实现。因为你无法预知用户会查询哪些关键词,故而无法实现准备好这些关键词对应的页面。2.“由静至动”法虽然降低了编辑的门槛,但大部分人更容易接受“由动至静”法的“所见即所得”。3.“由静至动”法的动态数据(如:评论)因为是托管在第三方服务器中,因而这部分内容可能会受制于第三方服务(能否数据导出与迁移等问题)。4.虽然两者在访客状态下都是静态网页形式,但“由静至动”法对于服务器要求远低于“由动至静”法,个人用户在考虑站点维护成本时应当有所考量。5.除此以外,在使用环境支持等方面,目前“由静至动”法只有极小众人群的用户,对于企业建站而言,依旧推荐使用主流方案,这对于数据的定期备份等均有保障。

总结一下,静态网站系统虽然目前并不适用于企业建站,但对于极小众的GEEK而言比较有趣味,可以探索与开发更好的用户界面。

© 2016 杜少卿记事录 | Do! Blog

Up ↑