❤爱在蜈支洲❤

时间是2019/8/24-2019/9/1
其实为什么会决定是去蜈支洲岛呢?
有一次,我去虹桥机场出差要乘飞机的时候,望着地铁窗子发呆。不是会有那种频率跟列车速度保持一致的广告嘛,
就是在那里第一次知道蜈支洲岛,(第二次当然是做旅游攻略的时候了)当时小影片结束的最后就是”爱在蜈支洲”,字体也好看。
感觉是很浪漫的五个字,所以就决定去蜈支洲啦。

起飞的时间稍微延误了一会。不过后来听Chien说上海周五下午去海南岛的航班一般都会延误。超级玛丽以前从天津去延迟貌似也更严重。。
因为是暑期旺季,来回都是一飞机小朋友,所以带好充电宝,听音乐或者看b站什么还是很有必要的。不然有可能会被吵的头疼。

这次的主要目标是奔着拍婚纱照去的,是克洛伊全球旅拍,之前看FSY拍得很好所以去的。负责的化妆师静静还有杨摄像师专业程度都是很高的!绝对的五星好评!★★★★★
助理是新人感觉稍微有点怂,哈哈O(∩_∩)O不过人也很nice,工作特别到位。

先报一下前几天的流水账,前面两天是在克洛伊的民宿里面确定拍摄事项和服装什么。
然后去附近的鹿回头景区稍微散散步。爬到顶上风景很好,可以看到凤凰岛的酒店还在开发中。
毕竟海南岛可是国家重点发展的对象啊。










大中午去第一海鲜市场吃了点海鲜什么的。果然很贵,因为如果不懂当地行情,一般都会被狠狠宰一波。不过还是那句话,来都来了。。。就当不知道吧



好!开始进入拍婚纱照的正题,总共有四个主题。粉红甲壳虫-绿色植被-海滩比基尼-还有一本正经的正装礼服和婚纱。
第一套老婆觉得拍得不好,不过我觉得很好啊!可能男女的审美眼光果然还是有点不同的。


















好想有一部敞篷甲壳虫啊!!!!!!!!!啊。!!!!!!!!!(算了,这不重要=_=|||)
第二套开始都是在蜈支洲岛上的摄影,原计划是当天拍摄完成,正好很累了可以住岛上的蜈支洲珊瑚酒店,想想就很完美。
结果天公不作美,我们去的当天中午左右拍完甲壳虫以后就开始下雨了,暑假快结束的时候海南岛天气真的挺难把握的。
后来因为下雨天拍不出效果,放弃了当天的拍摄。然后就在蜈支洲岛玩了一天一夜。
后来我专门去看了白百合他们演的《私人订制》里面开场有个泳池的镜头就是蜈支洲岛,不过那里我们去的当时在装修。。。
顺便一提,我很粉白百合的,有演技,颜值高,还热衷于做公益。后来出的《妈阁是座城》我也很喜欢,有时间一定要去澳门一游!(可惜香港是去不了的了)




其实白天的蜈支洲岛吵吵闹闹的。可是到了最后一班离岛的船走后,人也少了,整个岛也安静了。吹着海风,听听海浪,好像就能让人暂时放下烦恼的事情,沉浸在珍贵的片刻安宁中。

这个是岛上自动制作冰激凌的机器人!カワイイネ❕







可乐和炸鸡还是必不可少的。。。
感觉蜈支洲岛这个时间段最主流的就是三口之家带孩子来的,因为晚上泳池从阳台很远听到也很吵啊。。。=_=
然后到了第二天,又可以重新回到婚纱照的正题了。其实当天早上我一直在担心,坐在阳台上盯着外面的天,心里想’那朵乌云啥时候被吹走啊’的问题。还好我本人没有什么其他特长,就是运气好,到了中午基本放晴了。下午就太阳超级大了。
关于我运气好这件事,跟我一桌打过八十分的人都知道是怎么回事。(不过好久没空打啦,什么时候组牌局啊chy)
咳咳,扯远了,不好意思。后面两套婚纱照的效果我们都很满意!尤其是绿植感觉很唯美啊。

这张对比度比较高的图明显是PS过的啦,相信大家一看就知道。。。下面的就是原图了。













最后这张明显过曝了,不过如果经过专业的P图,一定可以效果很好看的。
接下来这套比基尼算是拍得体力层面最轻松的一套,因为海滩就应该穿比基尼才行啊!!!

同理这张对比度也很强,所以也是修过图的。













反倒是最后一套主纱的婚纱照,可能是因为我上午祈祷放晴的愿望太强烈,到拍这套的时候下午三点的太阳变得异常刺眼。
由于闪得我们两个人睁不开眼,最后效果感觉不是很好啦。不过我们实在累得拍不动了,再加上前面的都很满意,所以也就OK啦。
(克洛伊承诺如果不满意可以拍到满意为止,不过后来当时的台风杨柳就要袭击海南岛了,所以感觉也没啥希望了。。。)









到此为止,婚纱照拍摄的重要任务总算完成啦!给杨摄影师和静静团队疯狂安利输出中。大半天的拍摄任务我们也超累,老婆后背晒伤涂了四天芦荟胶。
后面几天就在亚龙湾和三亚湾悠闲地呆了几天。因为当时台风来袭,去”非诚勿扰”中舒淇葛优的那个热带森林公园的地方的计划也落空啦,感觉稍微有点小遗憾。不过以后还有可能再来玩的,所以也无所谓啦O(∩_∩)O









我刚在想怎么给文章结尾,百度了一下舒淇和葛大爷的《非诚勿扰》中的经典对白,以此代表我的心情:
“你不仅是情人眼里出西施,在仇人眼里也是西施”

Javascript常用笔记(不定时更新)

1,关于两个!!a的用法
在Antd的checkbox group里面有用,判断indeterminate的状态的地方
!!a是一个布尔值,代表a有内容,即a不为null,不为undefined,不为空字符串

1
2
3
4
5
    var array1=[1,2,3];
    var array2=[];

    !!array1.length;//true
    !!array2.length;//false

2,Spread运算符(…)

用法1:用于构造函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    var arr1 = [1,3,5];
    var arr2 = [2,4,6];

    […arr1,…arr2]  //输出[1,3,5,2,4,6]

    //第二个例子
    var o2 = {
        age:22,
        address:'中国北京',
    }
   
    var o1={
        name:'张三',
        ...o2,
    }
    console.log(o1);//得到一个属性都有的对象

用法2:用于调用函数时,将一个数组用作函数的参数,(就是把这个数组转化为参数的列表)

1
2
3
4
5
6
    function testFunc(x,y,z){
        return x+y+z;
    }

    var args = [1,2,3];
    testFunc(…args);  //输出6

用法3,(不知道是不是应该叫用法3)
属性前面的三个点(…props),是延展操作符。 在React中,延展操作符一般用于属性的批量赋值。比如

1
2
3
4
5
6
7
8
9
    var props = {};
    props.foo = x;
    props.bar = y;
    var component = <Component {...props} />;
    //等同于
    var props = {};
    props.foo = x;
    props.bar = y;
    var component = <Component foo={x} bar={y} />;

使用延展操作符的好处是,当你的属性有所增加的时候,组件中的使用不需要去增加对应的属性。

3,filter函数,
filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

1
2
3
4
5
6
7
    var ages = [32,33,16,40];

    function checkAdult(age){
          return age >= 18;
    }

    ages.filter(checkAdult);//[32,33,40]

4,Array(46).keys()迭代器
这个不太懂,比如得到一个数组,元素是数字[0,1,2,3,……,45]
就是用下面这个方法

1
2
3
4
    var it = Array(46).keys();//这是一个迭代器对象,具体是啥我也不造,目前看到过的都是...它 当参数用,从零到四十五
    var arr1 = [];
    arr1 = [...it];
    document.getElementById("demo3").innerHTML=arr1;//输出0,1,2,3,4,5,.....,45

5, var a = a || {}
是给a赋默认值的一种写法。
如果a已经赋值了,这 a 为真 a || {} 返回 a,即a还是原来的值。
如果a为假 a || {} 返回 {},就为a赋值为{} 了。

6,Object.assign(target,source)复制

1
2
3
4
5
6
7
8
9
10
    const target = { a: 1, b: 2 };
    const source = { b: 4, c: 5 };

    const returnedTarget = Object.assign(target, source);

    console.log(target);
    // expected output: Object { a: 1, b: 4, c: 5 }

    console.log(returnedTarget);
    // expected output: Object { a: 1, b: 4, c: 5 }

Antd受控组件-以Table组件为例

//详细信息直接看以下代码中的注释内容。
//就是一个组件里面要告诉外面发生事件的时候要setState的属性
//外面要告诉里面组件的状态是看state里面的属性
//https://ant.design/components/table-cn/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import React, { Component } from 'react';  
import { Table, Button } from 'antd';
import './TableTest4.css';

const columns = [
    {
        title:'Name',
        dataIndex:'name',
    },
    {
        title:'Age',
        dataIndex:'age',
    },
    {
        title:'Address',
        dataIndex:'address',
    },
];

const data =[];
for(let i=0;i<46;++i){
    data.push({
        key:i,
        name:`特仑苏${i}`,
        age:32,
        address:`London,Park Lane no.${i}`,
    });
}

export default class TableTest4 extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            selectedRowKeys:[],
            loading : false,
            //hasSelected : selectedRowKeys.length > 0,//React里面是不能state里面的状态互相联动的
            //一个组件里面是不能这么写的
        }
    }

    componentDidMount() {
    }

    start = () => {
        this.setState({loading:true});
        //ajax request
        setTimeout(()=>{
            this.setState(
                {
                    selectedRowKeys:[],
                    loading:false,
                }
            );
        }
        ,1000);

    }

    onSelectChange = (selectedRowKeys,selectedRows) =>{
        console.log('selectedRowKeys changed',selectedRowKeys);
        console.log('selectedRows',selectedRows);
        this.setState({selectedRowKeys})
    }

    render() {
        const hasSelected = this.state.selectedRowKeys.length>0;
        const rowSelection = {
            selectedRowKeys:this.state.selectedRowKeys,//外面告诉里面是看state的状态
            onChange:this.onSelectChange,//里面告诉外面变化的时候应该怎么触发事件
        }

        return (
            <div>
                <p>TableTest4</p>
                <div style={{marginBottom:16}}>
                    <Button type="primary" onClick={this.start} disabled={!hasSelected} loading={this.loading}>
                        Reload
                    </Button>
                    <span style={{marginLeft:8}}>
                        {hasSelected?`Selected ${this.state.selectedRowKeys.length} items`:''}
                    </span>
                </div>                
                <Table rowSelection={rowSelection} columns={columns} dataSource={data}/>
            </div>                
        );
    }
}