[검은사막 모바일] 캐릭터 얼굴 하얗게 하는 방법 






피부톤 하얗게 화이트톤으로 만드는 꼼수



볼터치에서 흰색 서낵하고 높이50 범위100 투명도100 하면


화이트톤 얼굴이 됩니다.


목이랑 색차이가 좀 나긴 하는데


어차피 옷입을거니까 노상관임.



[kendo ui] 켄도 ui bar, column 차트 모서리 radius 효과 넣기 






회사에서 가장 자주 사용하는 ui 플러그인은 kendo ui 이다.


주로 개발하는게 BEMS EMS같은 에너지 관리 시스템 개발인데


여기에 차트들이 굉장히 많이 들어간다.


kendo ui가 일단 기본디자인이 이쁘고 첫회사를 다닐때부터 사용했던 터라


익숙해서 개발에 소요되는 시간이 가장 짧기 때문에


새로운 회사에 들어가면 kendo ui를 사용하자고 어필을 많이 하기 떄문이다.





기본 디자인으로 사용을 하다가 이번에 새로운 프로젝트의 디자인 시안에


켄도 차트의 막대 부분에 radius 효과가 들어가는 부분이 있는데



예전에 구현해놨던 소스를 참고하려고 해도 그떄 구현했던건 윗부분이 볼록해 보이게 하는 효과였고


모서리에 radius 효과를 주는 부분은 없었다.




반나절쯤 구글링을 하다가 힌트가 될 소스를 발견하고 예전에 구현해놨던 코드와 접목시켜서


완성을 했다.


역시 구글신은 정답을 알고 계신다.




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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
$("#mChart").kendoChart({
         legend: {
                position: "bottom",
                orientation: "horizontal"
              },
              seriesDefaults: {
                  overlay: { gradient: "none" },
                  visual: function (e) {
                        return createColumn(e.rect, e.options.color);
                    }
                },
         series: [{
             type: "column",
             data: data1,
             stack: true,
             name"on battery",
             color: "#d2d2d2",
             axis: "kWh"
         },{
             type: "line",
             data: data2,
             name"mpg",
             color: "#ec5e0a",
             axis: "mpg"
         }, {
             type: "line",
             data: data3,
             name"l/100 km",
             color: "#4e4141",
             axis: "l100km"
         }],
         valueAxes: [{
             name"kWh",
             title: { text: "kWh" },
             min: 0
             max: 161,
             majorUnit: 32,
             color: "#006ef0"
         }, {
             name"mpg",
             title: { text: "℃" },
             color: "#ec5e0a"
         }, {
             name"l100km",
             title: { text: "%" },
             color: "#4e4141"
         }],
         categoryAxis: {
             categories: category,
             // Align the first two value axes to the left
             // and the last two to the right.
             //
             // Right alignment is done by specifying a
             // crossing value greater than or equal to
             // the number of categories.
             axisCrossingValues: [02424]
         }
     });
 
 
 
 
 
function createColumn(rect, color) {
    var center = rect.center();
    var origin = rect.origin;
    
    var curveDistance = rect.size.width / 3;
    var x = rect.origin.x;
    var y = rect.origin.y;
    var bottomRight = rect.bottomRight();
    var bottomRightX = bottomRight.x;
    var bottomRightY = bottomRight.y;
    
    
    
    var gradient = new drawing.LinearGradient({
        stops: [{
            offset: 0,
            color: color
        }]
    });
 
    var path = new drawing.Path({
            fill: gradient,
            stroke: {
                color: "none"
            }
        }).moveTo(bottomRightX - curveDistance, y)
        .curveTo([bottomRightX, y], [bottomRightX, y], [bottomRightX, y + curveDistance])
        .lineTo([bottomRightX, bottomRightY - curveDistance])
        .curveTo(bottomRight, bottomRight, [bottomRightX - curveDistance, bottomRightY])
        .lineTo([x + curveDistance, bottomRightY])
        .curveTo([x, bottomRightY], [x, bottomRightY], [x, bottomRightY - curveDistance])
        .lineTo(x, y + curveDistance)
        .curveTo([x, y], [x, y], [x + curveDistance, y])
        .close();
    
    var topArcGeometry = new geometry.Arc([center.x, origin.y], {
      /*  startAngle: 0,
        endAngle: 360,
        radiusX: radiusX,
        radiusY: radiusY  */             
    });
 
    var topArc = new drawing.Arc(topArcGeometry, {
        fill: {
            color: color
        },
        stroke: {
            /*color: "#ebebeb"*/
        }
    });
    var group = new drawing.Group();
    
   // group.append(path, topArc);
    group.append(path);
    return group;
}
 
 
 
 
cs






비쥬얼의 크리에이트컬럼 펑션으로 들어가


막대부분 패스를 재설정 해준 후 렌더링 해준다.




[VUE.JS] 뷰 디렉티브 v-for [반복] 사용하기




이번 포스팅은 뷰 디렉티브중 하나인 v-for 에 대한 포스팅입니다.


제이쿼리와 비교하면 스크립트에서 for문 안에 append 기능을 합친것과 비슷하다고 보시면 되겠습니다.



제이쿼리로 동적으로 엘리먼트 추가할때마다 귀찮았는데


vue.js의 v-for을 이용하면 손쉽게 기능 추가가 가능해 집니다.




1. v-for 사용하기



우선 이전 포스팅과 마찬가지로 jsbin을 이용해


실습해 보도록 하겠습니다.


https://jsbin.com/qowolakowi/edit?html,js,output


해당 링크로 들어가면 이미 만들어진 실습코드에서 조금만 변경 하면 됩니다.


이전 포스팅을 참고하시면 더 좋습니다.





2018/02/19 - [Yame Programmer/VUE.JS] - [VUE.JS] VUE[뷰] 시작해보기

2018/02/22 - [Yame Programmer/VUE.JS] - [VUE.JS] 뷰 디렉티브 사용해보기

2018/02/26 - [Yame Programmer/VUE.JS] - [VUE.JS] 뷰 디렉티브 v-bind 사용하기






1) 기본 사용법



html


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>야매 가이드</title>
</head>
<body>
<div id="app">
  <ul>
    <li v-for="dataList in list">
      {{ dataList.text }}
    </li>
  </ul>
</div>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
</body>
</html>
cs



js


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
// 새로운 뷰를 정의합니다
var app = new Vue({
el: '#app'// 어떤 엘리먼트에 적용을 할 지 정합니다
// data 는 해당 뷰에서 사용할 정보를 가지고 있습니다.
data: {
list:[
  {text:"react 배워보기"},
  {text:"pyhton 배워보기"},
  {text:"vue 배워보기"},
  {text:"연봉을 올려보기"}
  ]
}
});
 
cs




결과




html 코드를 보시면


v-for="dataList in list"


라고 되어 있고



js쪽 코드를 보시면 list안에 오브젝트 배열로 데이터가 들어있습니다.


dataList in list 에서 dataList 는 가져온 데이터를 사용할 변수명 같은거고


list는 js에서 선언한 list 데이터 입니다.


jstl에서 for돌리는것과 비슷한 방법이라고 생각하시면 이해하기 쉽습니다.




2) index 사용하기



jstl의 for기능중에서 index 번호를 불러오는게 있는데


vue.js의 v-for에도 같은 기능이 있습니다.



html


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>야매 가이드</title>
</head>
<body>
<div id="app">
  <ul>
    <li v-for="(dataList, index) in list">
      {{index}}  {{ dataList.text }}
    </li>
  </ul>
</div>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
</body>
</html>
cs



1) 에서 작성한 코드중 data in list -> (dataList, index) in list 로 변경해주시고


{{}}로 index를 추가해 주시면





결과




이렇게 순서 번호가 나타나게 됩니다.


물론



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>야매 가이드</title>
</head>
<body>
<div id="app">
  <ul>
    <li v-for="(dataList, index) in list">
      {{index+1}}  {{ dataList.text }}
    </li>
  </ul>
</div>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
</body>
</html>
cs



이렇게 index에 바로 연산식을 사용해





이렇게 뽑아내는 것도 가능 합니다.






v-for 디렉티브를 사용해 배열 데이터를 동적으로 렌더링 하는 방법에 대해서 알아보았습니다.



이제 디렉티브는 데이터를 양방향으로 바인딩해주는 v-model과 이벤트 핸들링을 하는 v-on 


이렇게 두가지가 남았네요



다들 재밌게 개발 하시고


연봉들 많이 올라갔으면 좋겠습니다!

[VUE.JS] 뷰 디렉티브 v-bind 사용하기





저번 포스팅에선 뷰 디렉티브의 기본적인 9가지에 대해서 알아 보았습니다.


이번 포스팅에선 뷰 디렉티브중 v-bind에 대해서 알아볼텐데요



v-bind는 제이쿼리의 attr 과 비슷한 기능을 한다고 보시면 됩니다.



이번 포스팅에도 cnd로 불러와 jsbin 에서 실습을 해보겠습니다.



사용법은 이전 포스팅을 참고하세요


2018/02/19 - [Yame Programmer/VUE.JS] - [VUE.JS] VUE[뷰] 시작해보기

2018/02/22 - [Yame Programmer/VUE.JS] - [VUE.JS] 뷰 디렉티브 사용해보기





1. v-bind는 어떤 기능일까?



v-bind는 제이쿼리의 attr과 비슷한 역할을 한다고 했는데


이건 엘리먼트의 상태값을 바꿔줄때 사용하기 때문에 저런 언급을 했습니다.



일단 예를 들어



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>야매 가이드</title>
</head>
<body>
<div id="app">
 
  <img id="img" src="https://t1.daumcdn.net/cfile/blog/2119CF4157F6360D2F"/>
 
</div>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
</body>
</html>
cs


이런 html 코드를 작성하면





이렇게 웃는 스마일 이미지가 나타납니다.



이때 자바스크립트로 해당 이미지를 바꾸기 위해서


제이쿼리에선


1
$("#img").attr("src","다른이미지 ");
cs




이런식으로 바꿔주죠


일단 우린 vue를 공부하고 있으니까



vue에선 어떻게 사용 할까요?





2. 엘리먼트 속성을 변경하는 방법




1) 틀린 예


v-bind 라는걸 모르는 상태에선


아마 이렇게 사용 할 것 같아요





html


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>야매 가이드</title>
</head>
<body>
<div id="app">
 
  <img id="img" src="{{smile}}"/>
 
</div>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
</body>
</html>
cs



js



1
2
3
4
5
6
7
8
9
10
// 새로운 뷰를 정의합니다
var app = new Vue({
el: '#app'// 어떤 엘리먼트에 적용을 할 지 정합니다
// data 는 해당 뷰에서 사용할 정보를 지닙니다
data: {
name'Vue',
smile: 'https://t1.daumcdn.net/cfile/blog/2119CF4157F6360D2F'
}
});
 
cs






{{}} 태그 안에 값을 넣는 방식으로 시도를 했을겁니다.


하지만 이렇게 하면





이런 에러가 나타나게 됩니다.



설명을 보시면 v-bind를 사용하라고 나오죠



올바른 사용법을 알아 볼까요?



2) 올바른 예(v-bind 사용)




html


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>야매 가이드</title>
</head>
<body>
<div id="app">
 
  <img id="img" v-bind:src="smile"/>
 
</div>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
</body>
</html>
cs



js


1
2
3
4
5
6
7
8
9
10
// 새로운 뷰를 정의합니다
var app = new Vue({
el: '#app'// 어떤 엘리먼트에 적용을 할 지 정합니다
// data 는 해당 뷰에서 사용할 정보를 지닙니다
data: {
name'Vue',
smile: 'https://t1.daumcdn.net/cfile/blog/2119CF4157F6360D2F'
}
});
 
cs






이렇게 작성하면 정상적으로 이미지가 나타나게 됩니다.



여기서 이미지를 제이쿼리에서 attr을 사용하듯 스크립트를 사용해 동적으로 바뀌게 하려면?



.






3. 스크립트를 이용해 동적으로 엘리먼트 속성 바꾸기


html


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>야매 가이드</title>
</head>
<body>
<div id="app">
 
  <img id="img" v-bind:src="feel?smile:bad"/>
 
</div>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
</body>
</html>
cs




js


1
2
3
4
5
6
7
8
9
10
11
12
// 새로운 뷰를 정의합니다
var app = new Vue({
el: '#app'// 어떤 엘리먼트에 적용을 할 지 정합니다
// data 는 해당 뷰에서 사용할 정보를 지닙니다
data: {
name'Vue',
feel:true,
smile: 'https://t1.daumcdn.net/cfile/blog/2119CF4157F6360D2F',
bad:'https://i.ytimg.com/vi/ir4NgczUrNY/hqdefault.jpg'
}
});
 
cs




이렇게 작성을 해주신후


콘솔창에서





app.feel = false


app.feel = true



요렇게 입력해주시면



false일때는 우는 에비츄가 나오고


true일때는 웃는 스마일 이미지가 나타나게 됩니다.




그런데 코딩할때마다  v-bind 입력하는게 귀찮기도 하고 코드도 길어지는데



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>야매 가이드</title>
</head>
<body>
<div id="app">
 
  <img id="img" :src="feel?smile:bad"/>
 
</div>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
</body>
</html>
cs




이렇게


v-bind:src="변수" -> :src="변수"


해도 동일하게 적용이 됩니다


익숙해지면 어마어마하게 편할것 같아요!



vue의 v-bind 디렉티브를 사용하면 훨씬 편하고 빠르게 프론트 개발이 가능하게 됩니다.







오늘은 vue의 v-bind 기능에 대해 포스팅을 해봤습니다.


다음 포스팅은 아직 포스팅 하지 않은 나머지 디렉티브에 대해서 포스팅 하겠습니다.




[VUE.JS] 뷰 디렉티브 사용해보기




1. 소개


저번 포스팅에선 뷰를 CDN으로 불러와서 아주 간단하게 맛만보는 방법에 대해서 알아보았다.



이번 포스팅은 그 맛을 조금더 보도록 해보자.



저번 포스팅과 마찬가지로 js피들이나 jsbin 으로 간단하게 해볼수 있는 내용들이다.





vue.js 에는 앵귤러에 있는 디렉티브 라는것이 있다. 앵귤러는 안해봤지만 그런게 있다더라;


엘리먼트에 사용되는 지시문 같은 것인데 사용해보니 오... 이거 좀 짱인듯..


편리한 기능이다!


2. vue 디렉티브 종류



디렉티브의 종류는 13가지 종류가 있고 각 디렉티브의 종류와 기본적인 설명은 여기 에서 확을 해보도록 하자


이번 포스팅에서는 


1) v-text

2) v-html

3) v-show

4) v-if

5) v-else

6) v-else-if

7) v-pre

8) v-cloak

9) v-once



이렇게 9가지에 대해서 알아보도록 하자






3. vue 디렉티브 사용 방법



1)  v-text 디렉티브



저번 포스팅에선 {{}} 이런 모양을 사용했었는데 이번엔 다른 방법으로 엘리멘트 안에 값을 바꿔 보도록 하자


물론 저번과 마찬가지로 jsbin이나 피들을 사용하자


jsbin은  여기서 사용할 수 있다.


이전 포스팅 : 

2018/02/19 - [Yame Programmer/VUE.JS] - [VUE.JS] VUE[뷰] 시작해보기



HTML


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>야매 가이드</title>
</head>
<body>
<div id="app" v-cloak>
  <h1>Hello</h1>
  <h2 v-text="value"></h2>
</div>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
</body>
</html>
cs



JS


1
2
3
4
5
6
7
8
9
 
// 새로운 뷰를 정의합니다
var app = new Vue({
el: '#app'// 어떤 엘리먼트에 적용을 할 지 정합니다
// data 는 해당 뷰에서 사용할 정보를 가지고 있습니다.
data: {
value:"안녕?"
}
});
cs



결과




오.. !! 간단!!!!





.



2) v-html


v-html 디렉티브는 value 안에 있는 html을 구현해주는건데 


일단 


위의 코드에서


value를 <h5>야매 가이드</h5>


이렇게 바꾸면




이렇게 출력이 되는데



html의 v-text를 v-html로 바꿔보자



html


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>야매 가이드</title>
</head>
<body>
<div id="app" v-cloak>
  <h1>Hello</h1>
  <h2 v-html="value"></h2>
</div>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
</body>
</html>
cs



js


1
2
3
4
5
6
7
8
9
 
// 새로운 뷰를 정의합니다
var app = new Vue({
el: '#app'// 어떤 엘리먼트에 적용을 할 지 정합니다
// data 는 해당 뷰에서 사용할 정보를 가지고 있습니다.
data: {
value:"<h5>야매 가이드</h5>"
}
});
cs



결과



이렇게 html이 적용이 되서 출력이 된다.


그러나 악성코드나 XSS등의 위험이 있으니 필터링 잘 걸어놓고 사용하도록 하자.



3) v-show 디렉티브


v-show는 보여줄지 안보여줄지 지정하는 디렉티브다.




html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>야매 가이드</title>
</head>
<body>
<div id="app">
  <h1>Hello</h1>
  <h2 v-show="visible" v-text="value">하이하이</h2>
</div>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
</body>
</html>
cs



js


1
2
3
4
5
6
7
8
9
10
 
// 새로운 뷰를 정의합니다
var app = new Vue({
el: '#app'// 어떤 엘리먼트에 적용을 할 지 정합니다
// data 는 해당 뷰에서 사용할 정보를 가지고 있습니다.
data: {
value:"야매 가이드드",
  visible:true
}
});
cs



결과


visible의 값은 true, false 번갈아 가면서 적용을 해보면


true일때는 값이 보이고 false일떄는 보이지 않게 되는 것을 알 수 있다.


그리고  콘솔창에 app.visible = false 입력하면 사라지고


app.visible = true 입력하면 다시 보이게 된다.








4) v-if 디렉티브


v-if는 조건문을 사용 할 수 있는 디렉티브 이다


값이 참이면 보여주고 거짓이면 안보여준다!


html


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>야매 가이드</title>
</head>
<body>
<div id="app">
  <h1>Hello</h1>
  <h2 v-if = "value > 5">value가 5보다 큼</h2>
</div>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
</body>
</html>
cs



js


1
2
3
4
5
6
7
8
9
10
11
 
// 새로운 뷰를 정의합니다
var app = new Vue({
el: '#app'// 어떤 엘리먼트에 적용을 할 지 정합니다
// data 는 해당 뷰에서 사용할 정보를 가지고 있습니다.
data: {
value:2
}
});
 
 
cs



결과


value 가 2일떄




value 9일때









5) v-else 디렉티브



v-if가 있으니 v-else도 있겠지!



html


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>야매 가이드</title>
</head>
<body>
<div id="app">
  <h1>Hello</h1>
  <h2 v-if = "value > 5">value가 5보다 큼</h2>
  <h2 v-else>value가 5보다 안크다</h2>
  
</div>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
</body>
</html>
cs


js는 위의 코드 그대로 사용 한다.



결과




6) v-else-if


else가 있으니 else if도 있겠지!!




html


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>야매 가이드</title>
</head>
<body>
<div id="app">
  <h1>Hello</h1>
  <h2 v-if = "value > 5">value가 5보다 큼</h2>
  <h2 v-else-if = "value == 5">value가 5다!!!</h2>
  <h2 v-else>value가 5보다 안크다</h2>
  
</div>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
</body>
</html>
cs




js 생략



value 값만 바꿔보면됨




결과





7) v-pre 디렉티브


v-pre는 엘리먼트를 무시하는데 사용 합니다.


v-pre가 적영된건 지시문이 없다는걸 인식하고 건너뛰어 버립니다.


내부 자식들 신경 안쓰고 건너뛰어 버리니까 컴파일 속도가 빨라지는 효과를 볼 수가 있다.


지금 테스트 하고 있는 cdn으로 불러와서 사용할떈 저 작업이 브라우저 에서 이루어 지는데


기본적으로 빠르긴 해도 규모카 큰 프로젝트에선 성능이슈가 생길 수 있는데


vue 커맨드 라인 인터페이스를 이용해 사전에 빌드 작업을 거치면 해당 이슈 해결이 가능 하다고 한다.


그런데 어케 하는진 모름 ㅋ  그냥 이런 방법이 있다는걸 알아만 두자.





html


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>야매 가이드</title>
</head>
<body>
<div id="app">
  <h1>Hello</h1>
  <h2 v-if = "value > 5">value가 5보다 큼</h2>
  <h2 v-else-if = "value == 5">value가 5다!!!</h2>
  <h2 v-else>value가 5보다 안크다</h2>
  <h1 v-pre>{{ 이건 그대로 렌더링해줘요 }}</h1>
</div>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
</body>
</html>
cs





저기서 v-pre를 빼면 콘솔창에 에러메시지가 나타난다.


그런데 v-pre를 쓰면 에러메세지가 안나타남


{{}} 이 값을 뷰에서 값을 가져오는게 아니라 걍 텍스트로 인식하게 함



결과


v-pre 적용




v-pre 제거하면 아래처럼 컴파일 오류가 생긴다.







8) v-cloak 디렉티브



v-cloak 디렉티브는 뷰js가 역할을 전부 수행하고 난 뒤 화면에 표현해주는 역할을 한다.


보통 컴퓨터들 속도 빨라져서 저 기능을 안써도 될거 같긴 한데


속도가 느린 브라우저에서는 v-if나 v-show 기능으로 안보이게 해놓은 엘리먼트들이


뷰 스크립트 구동전에 화면에 나타나고 뷰가 구동되면 사라지게 되는 깜빡임 현상이 나타낼수 있다.


뷰 컨트롤하는 스크립트가 복잡하고 길어지면 성능 좋은 컴퓨터에서도 깜빡임 현상이 일어날수도 있고.



그래서 아얘 스크립트가 전부 구동이 된 후에 화면을 보여주게 만드는 디렉티브다.



대신에 디렉티브 하나만 넣는게 아니라 아래 css 처럼 기본적으로 display:none 를 해주어야 한다


안그러면 소용이 없다.


html


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>야매 가이드</title>
</head>
<body>
<div id="app" v-claok>
  <h1>Hello</h1>
  <h2 v-if = "value > 5">value가 5보다 큼</h2>
  <h2 v-else-if = "value == 5">value가 5다!!!</h2>
  <h2 v-else>value가 5보다 안크다</h2>
  <h1 v-pre>{{ 이건 그대로 렌더링해줘요 }}</h1>
</div>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
</body>
</html>
cs




css


1
2
3
4
[v-cloak] {
display: none;
}
cs










9) v-once 디렉티브


v-once 는 초기 구동 딱 한번만 값을 지정하고 그 이후엔 변하지 않도록 하는 디렉티브 이다.


렌더링을 한번만 하고 그 이후엔 얘는 건들이지 않겠다 라고 선언하는 것이다.



html


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>야매 가이드</title>
</head>
<body>
<div id="app">
  <h1>Hello</h1>
  <h2 v-once>초기 값: {{ value }}</h2>
<h2>현재 값: {{ value }}</h2>
</div>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
</body>
</html>
cs



js


1
2
3
4
5
6
7
8
9
10
11
 
// 새로운 뷰를 정의합니다
var app = new Vue({
el: '#app'// 어떤 엘리먼트에 적용을 할 지 정합니다
// data 는 해당 뷰에서 사용할 정보를 가지고 있습니다.
data: {
value:5
}
});
 
 
cs



console


app.value = 7


app.value = 0




결과




v-once를 사용하지 않았으면 초기값 현재값 둘다 0이 되어야 하지만


v-once를 사용해 현재값만 0으로 바뀌어 있는걸 확인 할 수 있다.


이 디렉티브는 업데이트 성능을 최적화 할때 사용한다고 하는데


흠.. 뭐 초기값이랑 비교 할떄 사용해도 좋을거 같고 유용해 보인다.







9가지 디렉티브들을 살펴 보았는데


처음 vue가 어려우면 어떡하지 하는 걱정과는 다르게


많이 쉽게 접근할 수가 있었다


물론 나중에 CLI로 실제 프로젝트 할떈 또 어떤 헬파티가 열릴진 모르겠지만.



아주아주 간단하게 서버와 상관없이 클라이언트쪽에서만 vue를 활용해볼수도 있겠다


라는 희망을 주기 딱 좋은 맛보기 였던것 같다.


다음 포스팅에선 이번에 포스팅하지 못했던 나머지 디렉티브들에 대해서 살펴 보기로 하자.

[VUE.JS] VUE[뷰] 시작해보기





요새 프론트 엔드 라이브러리로 핫하다는 vue를 접해 보았다.


접했다는게 정말 손끝으로 살짝 건들여본 정도 ㅋㅋㅋ



얼마전 node.js 와 react.js를 하고 아주아주 기초적인 파이썬을 해보고


이번엔 vue를 건들여 본다 ㅋㅋ





react를 공부해놓고 왜 이번엔 vue 를 사용하는가 라는 물음에 대한 대답은


"그냥! 개발자라면 새로 나왔다는거 한번쯤 건들여 봐야지!"


라고 할수 있겠지만;;;



일단 문서상으론 react보다 뛰어나다고 하니 한번 해보는게 나쁘진 않을 것 같은데


스택오버플로우에서 참고할 레퍼런스들이 아주 적고


react나 angular에 비해서 실제 업무에 적용된 사례가 적기도 해서


현업에서 바로 실서비스에 적용 하는건 아직 무리라고 보고


그냥 한번쯤 해보는건 좋을 것 같다.



이번에 하는 포스팅은 뭔가 대단하게 셋팅을 하고 설정파일들을 만지작 거리는게 아니라


정말 아주 간단하게



CDN으로 불러와서 마치 제이쿼리 쓰듯 사용해 보는 것에 대해서 포스팅 해보도록 한다.







일단 뭐 프로젝트 만들 필요도 없이 맛만 볼거니까


jsBIn 이나 jsfiddle 에서 사용해 보는 것만 테스트 해보도록 하자




jsbin


https://jsbin.com/xojatohopi/edit?html,js,output





jsbin 의 기본적인 화면이다.


여기서 아주아주 간단하게


제이쿼리 집어넣듯



<script src="https://unpkg.com/vue/dist/vue.js"></script>


한줄을 추가해 주도록 하자



1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
 hello
  
  <script src="https://unpkg.com/vue/dist/vue.js"></script>
</body>
</html>
cs




이렇게 한줄을 추가 해주면


우린 vue.js 를 사용할 준비가 끝난 것이다.



그럼 이제 body 안에


간단한 문장을 써보도록 하자




.








<h1>hello, yamea</h1>


이라는 한줄을 추가 했는데


이것만 가지고는 vue의 어떤 뭘 사용하는지 모르겠다



여기서 살짝만 변형 시켜 보자



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
 
</head>
<body>
  <div id="app">
    <h1>hello, {{name}}</h1>
  </div>
  
  
  <script src="https://unpkg.com/vue/dist/vue.js"></script>
</body>
</html>
cs




이렇게 작성 하면




이렇게 나온다



이제 vue의 기능을 이용해 저 {{name}} 의 텍스트를 바꿔 보도록 하자



자바스크립트에 아래 코드를 추가 해준다



1
2
3
4
5
var app = new Vue({
  el:'#app',
  data:{name:"cheesu's yamea"}
  
});
cs




이런 스크립트 코드를 추가 해주면





짠!


이렇게 된다


마치 EL태그의 jstl 을 스크립트로 사용하는 것 같은 기분이 든다



그럼 여기서 추가로 한가지만 더 해보도록 하자



위의 콘솔 버튼을 클릭해서





app.name = "추천 눌러줘"


를 입력하고 엔터를 누르면 {{name}}의 내용이 바뀐다!





기본적인 기능은 여기까지다



아주 쉽지 않은가?


와.. 이정도면 그냥 써먹어도 되겠다


react를 처음 접할때보다 뭔가 장벽이 어마무시하게 낮아진 기분이다.


react보다 vue의 러닝커브가 훨씬 작다고 하니


간단하게 사이드 프로젝트 정도는 해볼만 한 것 같다.



나도 여기까지 밖에 안해봤으니


다음 포스팅에선 조금더 심화적인 단계로 넘어가 보도록 하자.

[python] 파이썬 입문하기



작년 node.js와 react.js를 하고 나서 빈둥빈둥 놀다가


올해 초 이직을 하고 새로운 언어를 공부해 볼까 하며 고민하다가


해봐야 겠다고 생각한 파이썬



파이썬의 장점과 단점에 대해서 여기저기 찾아보았는데


개인적으로 내린 결론은


장점


1. 파이썬은 속도가 빠르다.


처리속도가 빠른건 아니고 개발 진행 속도가 빠르다는 의미로 받아들이면 될 것 같다.


리뷰들을 보면 C+ 보다도 느린 처리속도를 보여준다고 하는데


최적화를 하면 C+보다는 조금 더 빠르다고 한다.,


파이썬을 이용해 개발해본 사람들이 말하는 것을 들어 보면 파이썬을 사용하면 빠르다 라는 것은 간편한 문법으로 개발 속도가


빠르다는 의미로 많이 사용 하는 것 같다.


2. 데이터 처리가 용이하다.


1번의 개발속도가 빠르다는 것과 같이 묶어서 생각하면 될듯



3. 비동기 코딩


단일 스레드 대신 이벤트 루프를 활용해 소수 유닛의 비동기 코딩을 하는데 뛰어나다 라고 하는데


사실 이건 직접 경험해봐야 알듯 하다.



단점


1. 처리 속도가 느리다.


스크립트 언어인 인터프리터 언어이기 때문에 컴파일 언어보다는 처리속도가 


느리다는데 사실 초 대용량 데이터 쓰거나 하는거 아니면 이젠 하드웨어 성능이 좋아져서


큰 단점이라고 보기는 애매 할듯 하다.



2. 모바일에 취약하다


데스크탑 환경에 맞는 플랫폼은 존재하지만 모바일 컴퓨팅엔 취약 하다고 한다.


사실 이것도 잘 모르겠음...




결론


뭐든 일단 써보고 경험해봐야 이게 어떤 프로젝트에 좋을지 판단 가능 할 것 같다.





그래서 시작해 보았다


파이썬!




책사서 공부하는건 해본적도 없고 돈도 아깝고 적성에도 안맞으니


구굴선생님에게 물어물어 설치를 해 보았다.


일단 파이썬 프레임워크는 장고 보단 플라스크를 선택 하기로 했다.


이유는 그냥 내 주변에 파이썬 공부해봤던 사람이 플라스크를 썼기 떄문이다.


별거 없다. 내 상황에 공부하기 좋은 환경으로 선택해서 진행 하면 된다.


주변에 장고쓰는 사람 있으면 장고 설치 하면 되는것임.



파이썬 설치 하는 방법



1. 파이썬 설치


1) 파이썬 다운로드  및 설치


https://www.python.org/


위 주소로 가서


다운로드 받는다.


파이썬 3.X.X 와 2.X.X가 있는데


처음에 2.x.x를 받았다가


파이썬 공부해본 지인이 파이썬3로 공부 했다고 해서


파이썬 3버전으로 다시 받았다.


요즘 새로 만드는 프로젝트들은 대부분 파이썬3로 진행 한다고 하기도 하고


일단 파이썬3이랑 파이썬2랑 문법이 조금 다르다


일종의 버전커브가 있는데


인터넷에 자료는 파이썬2가 더 많으니 알아서 취사 선택 하면 됨.



일단 다운받아서 설치 하고 나면



환경변수 설정을 해준다.





2) 환경변수 설정


환경변수 설정하는건 자바 환경변수 설정했던거랑 똑같음






path 에 파이썬 설치 경로를 추가 해주면 되는데.


두가지를 추가 해주어야 한다


파이썬 설치 경로에서



C:\Users\cheesu\AppData\Local\Programs\Python\Python36-32


C:\Users\cheesu\AppData\Local\Programs\Python\Python36-32\Scripts


이렇게 두개를 추가 해준다.



그리고 새로만들기를 하고





PYTHONPATH 라는 변수에


값은 C:\Users\cheesu\AppData\Local\Programs\Python\Python36-32\Lib


파이썬이 설치된 경로에 lib 폴더까지의 경로를 선택해 주면 된다.



환경 변수 설정이 끝났다면


CMD 창을 열어서



python 이라고 쳐보자




위 사진과 같은 결과가 나왔다면 완료 된 것이다.



이제 개발할 준비를 해보자




.




2. pip 설치



cmd 창에다가



easy_install pip


라는 명령어를 입력해 pip를 설치 한다.



3. 플라스크(Flask) 설치


CMD 창에


pip install virtualenv


를 타이핑해서 실행 시키고


c드라이브나 아무 드라이브에


작업할 폴더 만들어 놓고


그 폴더 안에서


virtualenv venv


라는 명령어를 실행 시켜보자


그럼 venv 라는 폴더가 생김



그리고 


pip install flask


명령어를 실행 시키면



플라스크가 설치 된다.



이제 플라스크 개발 환경은 끝났는데


좀 제대로 개발 하려면


파이썬 에디터가 필요하다



4. 파이썬 에디터 설치 하기



파이썬 에디터는 여러 종류가 있는데


일단 난 파이참 이라는 걸 선택함


별 이유는 없다


걍 무료고 파이참이라는 이름만 들어도 파이썬에 최적화 되어 있을 것만 같다


https://www.jetbrains.com/pycharm/download/#section=windows


위 주소로 들어가서



오른쪽에 있는 




커뮤니티 버전으로 다운받고 설치 하자



설치를 다 하고 나서 실행하면


프로젝트를 새로 생성할건지


기존에 있는 경로를 쓸건지 물어보는데


아까 위에 venv 설정 해놓은걸 뒤로 하고


걍 새로 만들어보자


그럼 파이참이 알아서 여러 가지 폴더들과 라이브러리들을 생성해준다




처음 생성하고 나면


위에 있는 폴더리스트에서 app 폴더만 뺴고 나머지가 기본으로 생성이 되어 있는 사앹가 된다.





5. 파이썬으로 웹서버 구동시키기



venv 폴더 아래에 app 라는 이름의 폴더를 하나 만들어주고



그 폴더 안에


index.py 라는 파일을 하나 만들어보자



이름은 상관 없다.



그리고 그 파일에


1
2
3
4
5
6
7
8
9
10
11
12
from flask import Flask
app = Flask(__name__)
 
@app.route('/')
def hello_world():
    return 'welcome fucking hell joseon'
 
 
if __name__ == '__main__':
    app.run()
 
 
cs



이렇게 작성을 해준다



그리고 저장한 다음



cmd 창을 키고


저 index.py 파일이 있는 경로에서


python index.py


라는 명령어를 실행하면



이런 메세지가 뜨고



12.7.0.0.1:5000 으로 접속해보면


웰컴 헬조선 이라는 텍스트가 뜬다



이것으로 기본적은 웹서버 구동까지가 끝이다!


오와...


빠르긴 빠르다...


jsp 전자정부 쓸떄는 톰캣설정 따로 해주고 뭐 복잡했는데...



물론 얘도 나중에 html 파일 띄우고 하려면 템플릿 만들어서 뿌려줘야 하니 비슷할지도 모르겠다;;;




그리고 추가로


url 라우터를



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from flask import Flask
app = Flask(__name__)
 
@app.route('/')
def hello_world():
    return 'welcome hell joseon'
 
 
 
@app.route('/user/<username>')
def show_user_profile(username):
    # show the user profile for that user
    return 'User %s' % username
 
 
@app.route('/post/<int:post_id>')
def show_post(post_id):
    # show the post with the given id, the id is an integer
    return 'Post %d' % post_id
 
if __name__ == '__main__':
    app.run()
 
 
cs




이렇게  라우터를 더 만들어 주는데


10번 라인의 경우


127.0.0.1:5000/user/야매개발자



이라는 주소로 접속하면




이렇게 뜬다


우왕 .. 싱기방기...






그리고 파이썬을 쓸때 주의해야 할 점이 있다.


위의 코드에서



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from flask import Flask
app = Flask(__name__)
 
@app.route('/')
def hello_world():
    return 'wellcome fucking hell joseon'
 
 
 
    @app.route('/user/<username>')
    def show_user_profile(username):
        # show the user profile for that user
        return 'User %s' % username
    
    
    @app.route('/post/<int:post_id>')
    def show_post(post_id):
        # show the post with the given id, the id is an integer
        return 'Post %d' % post_id
 
if __name__ == '__main__':
    app.run()
 
cs



이렇게 탭으로 들여쓰기 하면



/user/유저이름


이거 접속 안됨...



하...


스크립트 언어라서 탭에 예민하다는데..


좀 짜증남...


저것떔에 파이썬에 대한 첫인상은 좋지 않았다.




오늘은 여기 까지 했으니


여기까지만 포스팅을 하고


나중에 공부 더 하면 그때 이어서 포스팅을 해보도록 하겠다.



그럼 다들 야근 그만하고 칼퇴 하시길! 

[검은사막] 사전 예약및 공식 카페








검은사막 사전예약이 시작 되었다.


PC버전에선 뭔가 할 엄두가 안나서 못했었는데


모바일버전은 좀 라이트하게 나오지 않을까 한다.



일단 검은사막 사전예약 주소는


검은사막 사전 예약 하러 가기  <<< 요기로 가면 된다.



그리고 공식 카페 주소는


검은사막 공식카페로 이동하기 <<< 여기로 가면 된다.



현재 검은사막 공식카페에서는


몇가이 이벤트가 진행중이며


가입만 해도 나중에 추첨을 통해


아이템을 지급하는 이벤트도 진행 하고 있으니


검은사막 관심있는 사람들은 미리 가입해 놓는것이 좋을 것 같다.


또한 길드 모집도 미리 하고 있어서


세력을 구축하고 싶거나 준비된 길드로 가고 싶은 사람도


공식카페에 가서 미리 살펴 보는 것이 좋을 것이다.

[오버히트] 등급표 스탯표 최신 버전 입니다.



오버히트 공식카페


사기리에요님의 글 입니다. <<<<



이 등급표에 관한 유저분들의 다양한 의견은


위의 사기래에요님의 원글 링크로 가시면 보실 수 있습니다.


영웅들 등급이 어느정도인가


내가 가진 영웅의 등급은 어느정도인가


어떤 영웅이 좋을까 궁금하신 분들에게


좋은 정보가 될 것 같습니다.



----------------------------------------------------------



아프리카 호롤롤로님 및 나다신영류님 그리고 게보린님

너구리 대장님 파일 베이스에 제가 스텟표(풀강 풀초월기준)를 추가후, 업데이트 중입니다.


게임 특성상 오버히트 스킬로인해 표에 적힌 등급보다 상당히 괜찮은 쓰임새를 지닐 수 있습니다.

(예: 토벌전 한정/ 라이리+파이란, 모험: 샤나+스토나)


12/01

- 토벌: 프레이 하향, 유그 (익스 토벌) 상향

12/02

- 결장: 테제 상향, 노사 하향


S급의 경우 주력으로 써도 충분한 영웅들입니다. (*다프네는 후반에 존재감이 약해질 수 있습니다.)

A급 이상 영웅들의 경우 최고는 아니더라도, 무난하게 쓰일 수 있는 영웅들입니다.

A- 이하 영웅들은 타 영웅과의 조합으로 시너지를 내서 사용하시거나, 애정으로 키워주세요.

합계는 총 합산 점수를 나타냅니다.

[출처] [12/02] 오버히트 등급표 + 스텟표 (오버히트 공식카페) |작성자 사기리에요





------------------------------------------------------------------------------------------------------------------



등급표를 보면 최상급에


앗슈, 루나, 베아트릭스, 브람스, 스카디, 아네모네, 아크날, 유그드라실, 테제, 하루가 있네요


합계점수가 가장 높은건 아크날인데 저도 아크날 가지고 싶어요 ㅠ_ㅠ

'Yame Game Life > Over Hit' 카테고리의 다른 글

[오버히트] 합성 꿀팁 공략  (0) 2017.12.02
[오버히트] 기본 공략 & 팁 정리  (0) 2017.12.02

[오버히트] 합성 꿀팁 공략 




오버히트 합성 팁 입니다.




1. 3성만렙 +3성만렙! 


3성만렙 + 3성만렙 합성하여 4성 빨간배경,노란배경 캐릭을 뽑아야 합니다.


그러니까 3성을 먹여버리는 바보짓은 하지말고 잡몹 1,2성들만 경험치로 먹이세요




2. 4, 5성 합성은 비효율! 


4성+4성 , 5성+5성을 해도 되지 않냐 반문할수도 있는데 


만렙 필요 경험치양이 더 많아서 비효율적 입니다.


3성 합성 실패시 30렙 4성 노말영웅이 나오는데


 일단 킵해두고 나중에 스킬업6성몹 수급겸 키웁니다.


- 30렙4성이 너무 많아질시 경험치용으로 먹이는것도 추천


3성 1렙 ->3성 29렙 50퍼 까지 경험치가 올라요




3. 큐브는 신발을 산다.

.

.



4. 초반 쫄작은 헬 3-4를 추천. 난이도가 쉽다. 3캐릭+2쫄로 무난히 돌아간다.




5. 6성 괴물은 킵하자 


6성을 찍으면 초월이 열리는데 초월 1회당 스킬업1회 가능.

초월은 동일 영웅으로, 스킬업은 6성몹으로 하는 것.

그러니까 6성괴물 나왔다고 갈지말고 킵해둬라.




6. 빨간배경캐릭 초월은 힘듬 


핵과금 아닌이상 빨간배경캐릭의 초월은 버거움.

노란배경캐릭을 키우는것이 초월은 더 쉬울 수 있다.

모험에서 드랍되는 노란배경캐릭도 있으니 이런캐릭은 초월이 훨씬 쉬울것.




7. 이런 합성게임은 오래하는 사람이 장땡이다.

초반 뽑기 망했다고 좌절할 필요 없다.



[출처] 합성 팁 대방출. 안보면 너만 후회 (오버히트 공식카페) |작성자 흰우유



+ Recent posts