JavaScript 判断是否移动端浏览器

 var browser={
        versions:function(){
            var u = navigator.userAgent;
            var app = navigator.appVersion;
            return {//移动终端浏览器版本信息
                trident: u.indexOf('Trident') > -1, //IE内核
                presto: u.indexOf('Presto') > -1, //opera内核
                webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
                gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核
                mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
                ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
                android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或者uc浏览器
                iPhone: u.indexOf('iPhone') > -1 , //是否为iPhone或者QQHD浏览器
                iPad: u.indexOf('iPad') > -1, //是否iPad
                webApp: u.indexOf('Safari') == -1 //是否web应该程序,没有头部与底部
            };
        }(),
        language:(navigator.browserLanguage || navigator.language).toLowerCase()
    }

	var language = navigator.browserLanguage ? navigator.browserLanguage:navigator.language; 
	
    if(browser.versions.mobile || browser.versions.ios || browser.versions.android || browser.versions.iPhone || browser.versions.iPad){
		if (language.indexOf('zh') > -1) {
			window.location = "/home/index";
		} else {
			window.location = "/homeen/index";
		}
    } else {
        window.location = "/index.html";
    }


21年只为打造80秒烟花!

致敬所有的匠心艺术家
转载自微信公众号:酷玩实验室

大家小时候都很喜欢看烟花吧?

可下面这样的烟花你见过么?

在塞纳河畔用烟花点亮“一夜情”

横跨水面的焰火之桥

在船上缓缓移动的彩虹桥

以天空为幕的白日焰火

踏过整个城市的巨型脚印

蛋蛋姐猜

最后这个你们应该都见过吧

没错,就是北京奥运会开幕式上的大脚印

而所有这些,都是出自一人之手

一个一开口就闽南腔

相貌平平的福建男人

蔡国强

这两天,关于他的纪录片

《天梯:蔡国强的艺术》

正在国内上映

虽然排片量少得可怜

首周末也仅有100万票房

但却有导演张艺谋为它打call

有邓文迪大力推荐

那这个蔡国强究竟是何方神圣呢?

他是目前全世界最顶尖的烟花大师

下面这些仪式的开场烟花

“2008年北京奥运会”

“2001上海APEC”

“2014年北京APEC”

无一不是出自他手

所以你以为他只是个烟火师?

no no no

蛋蛋姐翻了一下他的履历

发现他可是真·艺术大师

事实上蔡国强在当代艺术界的地位

可以说是中国第一人了

1994年获日本文化大奖“广岛奖”,成为第一个获得该奖的中国艺术家

1999年获第48届威尼斯双年展金狮奖,又是第一位获得该奖项的中国艺术家

2008年成功在纽约古根海姆博物馆办展,成为在该馆办展最年轻的当代艺术家

2012年获得美国国家艺术勋章,由希拉里亲自颁奖

2012年获得世界文化奖绘画类终身成就奖,堪比艺术界的诺贝尔奖

……

自80年代中期成名以来

蔡国强在世界舞台上

几乎拿奖拿到手软

而这一切都源于

这件中国古老的四大发明

火药

蔡国强与火药的不解之缘

还要从他儿时说起

1957年

蔡国强出生在福建泉州一个小渔村

父亲是当地有名的书法家和画家

少年时代的蔡国强

很自然地跟随父亲的脚步学起了画画

也许是父亲的管教过于严苛

蔡国强的画中天生带着一股拘谨

一开始并不被父亲看好

可奶奶却一直坚信

孙子国强能成为伟大的艺术家

她的信任给了蔡国强

继续追求艺术的动力

离开泉州后

他先后考取上海和日本的学府

继续自己的艺术之路

事实证明奶奶是对的

蔡国强的艺术天赋

在他与火药相遇后被点燃了

比起绘画

火药这种更加自由大胆的表达

给了蔡国强一种彻底的释放

“找到一种适合的材料并把它化为己有”

这几乎是每个当代艺术家梦寐以求的

而蔡国强做到了

从最初在油画上尝试火药爆破

图:《楚霸王》,1985,Hiro Ihara摄

到直接用火药作画

图:《记忆》,2011,Hiro Ihara摄

图:《向日葵速写》

再到以天空为幕,火药为笔作画

他的艺术不再只追求好看

而更多的加入了他对世界的思考

比如他刚到美国时的这组作品

他手持火药

站在昔日的原子弹诞生地

造出一朵朵小小的蘑菇云

思考原子弹给人类带来的转变

图:1996年,内华达洲

《有蘑菇云的世纪——为二十世纪做的计划》

在熟练运用火药表达思想后

蔡国强更进一步

在火药中加入高科技的精准定时的芯片

给火药带来新的可能性

他为上海个人展开幕所做的白日焰火

引来在场全体观众的阵阵惊呼

视频和图:2014年,上海,三幕白日焰火《挽歌》

自80年代中期成名以来

蔡国强不断在世界的舞台上

创作着惊世之作

图:2009年,纽约,《彩虹桥》

图:2011年,多哈,《黑色仪式》

蔡国强成了全世界最会玩儿火药的男人

而火药也成就了他的艺术

可他心中却直有个缺憾

用火药搭一部天梯

多年来几次尝试,最后都功亏一篑

直到2015年

一段视频在Youtube疯传

这个让蔡国强做了21年的天梯梦

终于实现了

对“天梯”的执着

源自蔡国强少年时代的梦想

靠海吃饭的泉州人

多多少少都有种对老天爷的信仰

蔡国强也不例外

小时候他一直有个登天的梦

直到60年代

美国宇航员登月成功

让蔡国强意识到

自己可能永远无法真正飞入宇宙

但没关系

科技或许不能带他登天,但艺术可以

所以蔡国强长大后

一直研究属于自己的登天之法

1994年,一个很偶然的机会

蔡国强造访英国小城巴斯

在那里他看到了

圣经里的连接人间和天堂的“天梯”

图:巴斯城内的教堂

一个念头渐渐在脑海中升起

用火药打造一座这样的天梯

连接大地和宇宙

这样就可以登天了

蔡国强在当时所住酒店的玻璃上

画出“天梯”的第一张草图

计划用热气球

将火药做成的天梯带入空中

蔡国强的想法

很快得到了英国宇航局的支持

为确保“天梯”能够平安升空

他们特地安排了项目当晚的净空

(当晚巴斯天空中不允许别的飞行物出现)

得到这个消息

蔡国强兴奋地带领团队开始筹备

可到了“天梯”升空这一天

巴斯竟下起了暴雨

风大到连热气球都无法起飞

更别提拖起天梯了

“天梯”的首次尝试因此以失败告终

项目无限期拖延

7年后,时间到了2001年

蔡国强在上海筹备APEC会议的开幕烟花

在黄浦江上

他又一次看到了“天梯”升空的机会

为了确保不受天气影响

这一次他特地选用了飞艇

连效果图都做出来了

然而老天再次无情的拒绝了他

就在APEC开幕前一个月

震惊世界的“911”恐怖袭击发生了

为避免引人联想

会议期间上海采取了“净空”管制

别说飞艇了

飞一只气球恐怕都要被击落

“天梯”项目又一次搁浅了

这一搁,就是11年

2012年蔡国强为了个展去洛杉矶考察

好莱坞标志的山顶旁

壮观的葛瑞菲斯天文台引起了他的注意

他想如果在黄昏的天文台升起“天梯”

那画面一定很美

图:洛杉矶天梯项目效果图

于是尽快搞定了烟花燃放的许可

做了热气球测试

还做了50米升空的小型试验

然而就在项目开始前不久

洛杉矶市民担忧天梯会引发野火危机

就把许可撤销了

撤销了

销了

结果就差最后一哆嗦

“天梯”项目的第三次尝试还是失败了

这一年蔡国强55岁

他已不复年轻

世界闻名的他也无需

再向谁证明自己

他开始重新思考天梯项目的意义

图:画作《天梯》

他回想起20年前

自己开启天梯项目的初心

那种单纯想要登天的“朴实的冲动”

其实来自小时候的愿望

回想起多年来

一直鼓励自己走向艺术之路的奶奶

她已年近百岁

却从未亲眼见过孙子的烟火

图:蔡国强和奶奶

所以三年后

当蔡国强第四次开启“天梯”计划

他不再需要巴斯、上海、洛杉矶这样的舞台

不再需要全世界的关注

他只想让100岁的奶奶

亲眼看到自己的烟火

只想实现自己最初的梦想

在梦开始的地方

他的故乡泉州

图:蔡国强在泉州的家

2015年的初夏

蔡国强带着他的团队回到故乡

找遍整个泉州

最终选定安静的惠屿岛

只因还未过度开发的它

有着蔡国强记忆中属于小渔村的灵气

图:惠屿岛

历时半个多月的筹备

花费上百万美金

他们在海上搭起40米长的平台

造了个直径25米的巨型热气球

只为把这个长500米、重500吨的天梯

升空而起

当一切准备就绪后

仿佛是老天爷给蔡国强的最后考验

泉州又下起了暴雨

而蔡国强的决定是等

他相信这次一定能成功

果然

在连续两天的极端天气后

海面平静下来

蔡国强终于等到了

那个他等待了21年的时刻

2015年6月15日黎明时分

一条火红的“天梯”

缓缓爬升

最终在天际燃烧

蔡国强终于成功了

完整视频就在这里啦

天梯完整视频

这架蔡国强筹备21年的天梯

当它终于成功升天

没有鲜花和掌声

也没有电视台的同步转播

只有视频另一端生病不能前来现场的奶奶

只有蔡国强在泉州的父老乡亲

可看着徐徐燃烧的天梯

蔡国强在奶奶面前

笑的像个孩子

他兴奋地问奶奶

“国强是不是很厉害”

这一刻笑容甚至超越了

他在纽约、巴黎、北京演出成功的喜悦

看到这里

蛋蛋姐似乎有些明白了他的执着

这座天梯的艺术造诣

或许远远不及他其他的烟火演出

可它却代表了蔡国强最初的梦想

代表了这片孕育他的土地和家人的支持

这是他的艺术之根

这短短80秒的烟花里面

凝聚着他对奶奶的爱

对故乡的情

烟花再美也只有一瞬

可爱能够永恒

令人伤感的是

天梯升天一个月后

蔡国强的奶奶永远的离去了

但我相信

她走的时候

心中一定有来自孙子满满的爱

也一定有这段关于烟花的美丽回忆

 

插播一个广告:

Laravel : The PHP Framework For Web Artisans

博客迁移成功

之前博主的博客放在了阿里云上海ECS节点,苦于该服务器mysql占用一直很高,影响到了博客正常打开。

所以迁移到青岛ECS节点。

为了加速附件和网站打开速度和访问安全性,使用了以下服务:

  1. 阿里云cdn
  2. 阿里云oss
  3. 全局https

如果你有什么好的想法和沟通,请到右侧找到联系方式与我联系

laravel框架session使用教程

laravel是一款php框架了,在使用laravel时会碰到session使用问题了,在使用过程中碰到一些问题与一些应用的例子。

用Laravel开发应用,把原有的代码copy过来,以前的代码session使用了$_SESSION,本以为移植过来可以很好的运行的,因为没有依赖其他的组件,结果出现了这个
Undefined variable: _SESSION

Laravel的session的配置文件配置在 app/config/session.php 中,使用时可以看看 session 配置文件中可用的选项设定及注释。
Laravel 默认使用 file 的方式来实现 session的。她并不用php原生的$_SESSION(php原生的session要看php.ini的位置),所以忽略php相关的session函数,例如session_start(), $_SESSION。Laravel在运行过程中会在app/storage/session/目录写入session的信息,所以这个目录需要有写权限,否者session就无法写入成功。
Laravel除了使用默认的file作为session的实现,还支持cookie, Memcached, Redis 和数据库的后端驱动作为session的实现。必要的时候还需要自己实现一个session的实现方式,比如在微信公众账号和用户的交互,这中session就无法直接使用,因为每次都是微信服务器来请求,无法通过请求的来源来辨别用户。

laravel的session简要API

Session的API还是比较简单的,大家看看中文文档也大概知道是怎么个意思。但是有那么几个还不太好理解。

//session的永久保存(在不过期范围内)
Session::put(‘key’, ‘value’);

//等同于PHP的原生session
$_SESSION[‘key’] = ‘value’;

//get操作
$value = Session::get(‘key’, ‘default’);

//去除操作并删除,类似pop概念
$value = Session::pull(‘key’, ‘default’);

//检测是否存在key
Session::has(‘users’);

//删除key
Session::forget(‘key’);
这个对应只要session不过期,基本上是永久保存,下次http请求也是存在的。不同于下面的flash概念。
laravel的session中flash概念
但是Laravel出了个快闪flash的概念,把我一下子给搞混了。这个flash两次请求有效(本次和下次请求有效),与本次请求取操作多少次无关。

//保存key,value
Session::flash(‘key’, ‘value’);

//取值方法还是一样的
Session::get(‘key’);

//刷新快闪数据时间,保持到下次请求
Session::keep(array(‘username’, ’email’));
这个flash的概念和上面的put的概念不太一样。

put :这个对应只要session不过期,基本上是永久保存,下次请求也是存在的。
flash :保存的值,本次请求可以使用,下次http请求可以使用,再下一次就不存在了。
也就是说下一次的请求用完就被销毁了,不会让session的值变的越来越大,可以保存一些临时的数据。

这中情况的使用场景比如有:
用户请求了页面,出现错误信息,重定向到一个新的页面,需要展示之前的数据。(虽然可以通过url参数来传递,处理不好可能会有xss漏洞)。

用户访问了一个页面,过滤器发现没权限,保存当前页面url,重定向到登录页面,登录成功,取出值,重定向到原先的页面。(这里可能需要刷新保存的快闪数据)

session落地的时间
我天真的以为使用了Session::put函数就能保存这个变量了。于是我的代码这样写:

class LoginController {

public function login(){
Session::put(‘key’,’value’);
print_r( Session::all() ); //取出来看看是否put成功
exit; //习惯性的调试都exit,不执行后续代码
//return Redirect::to(/); 框架在return后还会有后续的代码执行的
}
}

结果下次请求就是找不到本次的Session,而且看app/storage/session目录就是没有文件生成。总感觉不对劲啊。

后来看到网络上有个方法Session::save(),于是我也用了下,居然发现成功的生成了session的文件。于是我感觉到,Laravel不用php原生的session,那么在controller之后应该做了一些事情,将session写入到文件中,而不是每次put操作都写操作,这样会IO操作太频繁的,影响性能的。

查看调用相关的代码。laravel编译后,在bootstrap/compiled.php中

class Middleware implements HttpKernelInterface
{

public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
{
$this->checkRequestForArraySessions($request);
if ($this->sessionConfigured()) {
$session = $this->startSession($request); // 启动session
$request->setSession($session);
}
$response = $this->app->handle($request, $type, $catch); // 调用controller的method
if ($this->sessionConfigured()) {
$this->closeSession($session); //关闭session
$this->addCookieToResponse($response, $session);
}
return $response;
}

protected function closeSession(SessionInterface $session)
{
$session->save(); // 保存session
$this->collectGarbage($session);
}
}
小提示:如果不知道函数调用情况,可以在controller中throw new Exception();,然后在/config/app.php的debug更改为debug=>true。可以看到函数的调用关系。

可以看见,在调用完controller之后,调用了session->save()的方法,来主动的保存session。这样session才能落地保存起来,如果在controller或者view里面写了exit;,
那么session是不会被保存的,除非主动的写Session::save()才能手工的保存起来。因此在debug调试的时候千万要注意啊。

 

 

转载自:http://www.cnblogs.com/qhorse/p/4763169.html