다이소에서 셀카봉 하나 구매했다.
크기부터 남달랐다.
이 크기를 보고도 왜 이걸 샀을까?
펼치지 않아도 길어도 너무 길다.

한 25cm는 충분히 될 듯 하다.
펼치면 무려 107cm
팔이 하나 더 생기네..
심지어 폰 지지대가 분리되어있다.
심각한 기운이 멤돈다..

대놓고 메이드 인 차이나..
무슨 애기 장난감 조립하는듯...
어쨋든 조립했다. 그런데 말입니다.
버튼이 없다... 촬영 버튼이!!
내가 여태까지 봐왔던 셀카봉은
다 버튼이 있었는데 이건 뭐지. 없다!
당혹스러워 주의사항을 읽어봤다.
오마이갓.

뭐? 셀프촬영은지원하지 않..습니다.
아..하하.. 못 쓰겠다.

자기 전 방 불 끌때, 티비 리모콘 없을때
영화보다 일시 정지할때 이럴때 사용해야겠다.
언제 타이머 맞추고 이걸찍는다고...

다이소 싼맛에 쓰지만
품질도 다이소스럽다.
Posted by sungho88
,

리액트를 설치하면, 기본 파일이 생성된다.


App.js가 루트 컴포넌트이다.


이 파일에는 다음과 같이 작성되어 있다.


import React, { Component } from 'react';
import logo from './logo.svg';
import './App.css';


class App extends Component {
render() {
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<h1 className="App-title">Welcome to React</h1>
</header>
<p className="App-intro">
To get started, edit <code>src/App.js</code> and save to reload.
</p>
</div>
);
}
}


export default App;




 

여기서, render 함수 안에 return 안ㅔ html로 생긴 이것이 바로 JSX 코드이다.


<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<h1 className="App-title">Welcome to React</h1>
</header>
<p className="App-intro">
To get started, edit <code>src/App.js</code> and save to reload.
</p>
</div>


JSX 코드는 리액트 컴포넌트를 만들때 사용하는 언어이다.


.js로 파일을 생성하면, render() 에서 태그가 자동완성 되지 않아 고생이 많았다.


알고봤더니, React에서는 .jsx로 작성해야한다.


이렇게 하면, HTML 자동 완성이 된다.


하지만, 반전이 있다.


HTML 문법이지만, HTML이 아니다. 이것은 자바스크립트이다. 


리액트에서 빌드시, 고쳐준다고 한다. 고맙다.


JSX파일


다만, jsx보다는 js로  주로 사용된다.

Posted by sungho88
,


VS Code를 사용하다가, 변수 선언 중 색상이 다른 한 개를 발견했다.


다른것들은 하늘색인데, 이것만 회색...


뭔가 다른가해서 마우스를 갖다대보니...


위와 같이 경고가 뜬다.


'items'이(가) 선언은 되었지만 해당 값이 읽히지는 않았습니다.


선언은 되었으나 해당 파일에서 사용하지 않고 있다는 의미이다.


자바나 안드로이드 같은 경우 노란색으로 밑줄이 가는데, vs code에서는 경고 밑줄이 없어 놓치기 쉽다.


코드가 틀렸거나, 이 변수가 필요없거나 두 개 중 하나이다.


중복된 코드 부분을 복붙하다가 이 변수를 바꿔주는 것을 잊은 헤프닝이다.


쓸일이 없다면 제거해주면 된다.



Posted by sungho88
,

1. FLEXBOX란 무엇인가?


레이아웃이란, 엘리먼트들의 크기나 위치등을 배치하는 것이다. 

- 레이아웃을 쉽게 작성하기 위해 사용하는 도구.

- 이전까지는 레이아웃이 효과적이지 않았다.


- 예전에는, 표(Table)을 이용해서 레이아웃을 잡았는데 큰 문제점이 있었다.

- 표 = 구조화된 정보를 표현하기 위한 용도인데, 레이아웃으로 사용하

- 변경 및 유지 보수가 쉽지 않아 표로 레이아웃을 

- position, float등을 이용하여 HTML내 요소들을 배치해왔다. 


FLEX를 사용하기 위해서는 


<container>

<item></item>

<item></item>

<item></item>

</container>


2. FLEXBOX를 사용하는 방법



https://opentutorials.org/course/2418/13526



Flexbox관련해서 게임을 통해 실습해볼 수 있는 사이트가 있다.


이름하여 

Posted by sungho88
,


[vue.js] 1. Vue.js는 어떻게 설치할까?

 

에 이어서 두 번째.


[개념] 


아키텍터 모델은 다음과 같다. 같은 의미의 이미지 두 개를 올렸다.


MVVM 방식이다.

MVVM 모델의 ViewModel을 Vue.js가 담당한다.


MVVM은 Model View ViewModel의 약자이다.


ViewModel은 View와 Model의 가운데 존재하는 중간정도라 할 수 있다.

 

프로세스는 다음과 같다.


1) View에 입력이 들어오게 오면 ViewModel에 요청한다.


2) ViewModel은 1) 처리를 위해 필요한 데이터를 Model에 요청한다.


3) Model은 ViewModel에 필요한 데이터를 응답(Response)한다.


4) ViewModel은 응답 받은 데이터를 처리해서 저장한다.


5) View로 보내지 않아도 ViewModel과의 Data Binding으로 인해 View는 자동으로 업데이트된다.




- 데이터 바인딩과, 화면 단위를 컴포넌트 형태로 제공... Vue.js는 철저하게 컴포넌트 기반의 개발을 유도한다.


- Angular에서 지원하는 양방향 데이터 바인딩(2 way data binding) 을 Vue.js 역시 제공한다.


※ 데이터 바인딩이란?


- Virtual DOM을 이용한 렌더링 방식이 리액트(React)와 거의 유사하다.



Posted by sungho88
,

CSS 개념 및 적용 방법


= Cascading Stylesheets의 약자.


= CSS를 HTML에서 적용시키는 방법에는 세 가지가 존재한다.


1. HTML 태그 안에 직접적으로 적용하기(인라인 스타일)

2. <style>태그를 이용해서 HTML 파일에 작성 후 적용하기

3. 외부에서 .css 확장자를 갖는 CSS 파일을 생성해서 HTML에서 불러와서 사용하기.


1번은 유지보수나 가독성 측면에서 최대한 사용하지 말아야하며,

2번은 간단한 CSS라면 가능하지만, 이것 역시 HTML파일에  CSS가 포함되어 길어지기 때문에 별로이다.

3번을 추천한다. 이렇게 작성해야 HTML과 CSS가 분리되어 따로따로 관리를 할 수 있고, 재사용이 용이하다.


1번의 경우 태그의 속성으로 style을 선언 후 작성.

이렇게 코딩을 하게 되면 추후 수정이 어렵고, 코드 가독성이 떨어진다!



2번의 경우 <head>태그 안에 <style>을 선언 후 작성



3번의 경우 HTML에는 CSS를 일절 사용하지 않고, 호출만 한다. 그러면 적용된다.

외부에 .css파일을 생성한 뒤, 호출한다. 호출방법은 다음과 같다.


<link rel="stylesheet" href="style.css">


<link>로 연결을 하는데, href 속성을 사용한다.
같은 경로에 있을 경우에는, 그냥 style.css를 사용하고 다른 경로에 있을때는 상대경로를 작성해준다.

이것은 HTML 파일 설정에 해당하므로, <head>태그 안에 넣어야한다.



CSS 선택자(Selectors)


- CSS 적용시 { } 안에 속성:값; 형식으로 넣는다.

선택자에는 여러가지 종류가 있다.


1) 태그를 선택자로 하기

<style>
h1 {
color: blue;
}
</style>


태그를 선택자로 한다면, 모든 태그에 CSS가 적용이 되는 것을 주의해야한다.


2. 특정 태그를 CSS 적용하기.


<style>
#green-heading {
color: green;
}

.primary-para {
color: red;
}
</style>
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
<div class="box">
<h2 id="green-heading">Welcome</h2>
<p class="primary-para">
Hello My World
</p>
</div>


특정 태그를 선택하여 스타일을 적용하는 방법에는 두 가지가 존재한다.


1) class (클래스) : 태그 속성을 class="box"로 했다면 CSS에서 이 태그를 호출할 때는, 점(.)을 태그앞에 쓴다.  : .box

2) id (아이디) : 태그 속성을 id="box01"로 했다면 CSS에서 이 태그를 호출할 때는, 샵(#)을 태그앞에 쓴다.  : #box01

  

HTML에서 태그의 내부 태그(Nested Selectors)를 찾는 방법은 다음과 같다.


.box h2 {
    color: blue;

}


이 것은 class="box"로 선언된 div태그의 하위인 h2태그에 CSS를 적용하겠다는 의미이다.


주의할 점은, 콤마로 구분을 할 경우 Nested Selectors가 아니라 각각 적용이 되므로


.box와 모든 h2가 css 적용이 되어버리므로 그냥 space 1번으로 작성해야한다.


즉, 여러개를 동시에 적용하려면 콤마(,)를 사용한다.





<ul>
<li><a href="">List01</a></li>
<li><a href="">List02</a></li>
<li><a href="">List03</a></li>
<li><a href="">List04</a></li>
<li><a href="">List05</a></li>
<li><a href="">List06</a></li>
<li><a href="">List07</a></li>
</ul>


이렇게 하면,


이렇게 되는데, a태그를 css에서 원하는대로 바꿀 수 있다.


Posted by sungho88
,

<abbr> Tag


<p>
<abbr title="World Wide Web">WWW</abbr>
Smaller and faster than other CSS frameworks.
Easier to learn, and easier to use than other CSS frameworks.
Better cross-browser compatibility than other CSS frameworks.
Uses standard CSS only (No jQuery or JavaScript library).
Supports modern responsive mobile first design by default.
Provides CSS equality for all browsers: Chrome, Firefox, Edge,
Provides CSS equality for all devices: desktop, laptop, tablet,
Speeds up and simplifies web development.
</p>


abbr요소는 텍스트를 생략어(abbreviated form)로 지정합니다.


무슨 말이냐?


약자를 쓸 경우 무슨 뜻인지 모를때가 있다.


위에 예제의 경우 WWW의 전체 뜻을 알려주기 위해서


<abbr title="World Wide Web"> 이렇게  적어주면 WWW에 마우스를 갖다대면


title에 적힌 설명이 뙇~~



이렇게 설명을 해주는! 태그이다.

눈에 띄게 점선 밑줄까지!!



Posted by sungho88
,

이걸 과연 왜 쓰는 걸까?


아니... 쓰는 사람도 못 봤거니와... 왜 존재하는걸까?


내용의 출처를 적는다고 하는데...


웹 브라우저에서 보이지도 않는다.


과연 왜 사용하는 걸까?


모르겠다.


일단은 설명을 하면 다음과 같다.


cite속성을 이용하여 인용된 정보의 URL를 명시한다.



도대체 왜.


이상.

Posted by sungho88
,

[특징 정리]


- HyperText Markup Language의 약자이다.

- HTML은 웹의 최소 단위인 웹페이지를 만드는 언어이기 때문에 웹의 밑바탕이 된다.

- 웹 페이지의 구조를 만들기 위해 사용한다.

- HTML 개발을 위해서는 웹브라우저와 텍스트 에디터가 반드시 필요하다.

- 서버 필요없이 실행할 수 있으며, index.html이 웹 사이트의 루트 파일이다.

- .html 확장자를 붙이면 HTML 파일이 되어 브라우저로 실행이 가능하다. 

(저장할 때 파일명.html으로 저장하면 HTML 파일이 생성된다)


[태그]

- HTML의 태그들은 각각의 용도가 있다. 

- 태그는 다음과 같은 형태로 사용된다.  <tagname>content</tagname>

- 태그는 종류가 매우 많으므로, 외우기보다는 이해한 후, 필요에 따라 갖다쓰는 것이 좋다.

- 보통은 한 쌍으로 이루어져있다.(시작 태그와 끝 태그)


<h1>Title<h1>

<p>Content<p>


- 몇몇은 태그 하나로 나눠쓴다.


<br/> 

HTML5에서는 <br>로도 가능하다.



html 기본 구조는 다음과 같다.


<!DOCTYPE html>는 HTML5를 사용하겠다는 일종의 선언이다.


그리고 HTML 파일 내 설정 세팅이나 내용은 반드시 <html>과 </html> 태그 안에 들어가야 한다.

이 태그가 가장 기본이 되는 태그이다.


<head> </head> 사이에는 제목을 위한 <title>태그와 <meta> <script>나 <link>등이 들어갈 수 있다.


유저가 실제 눈으로 보는, HTML 파일에 대한 Contents 정보들은 <body>태그안에 입력된다.


페이지 구조를 브라우저에게 알리는 정보들은  <head>태그안에 작성된다.


<!DOCTYPE html> // HTML5임을 나타내는 선언
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
</body>
</html>


<meta> 란? 


- 브라우저에게 해당 HTML 파일에 대한 정보를 알리는 태그일 뿐, 사용자를 위한 정보는 아니므로 보이지 않는다.

 

- charset 속성의 경우, Character encoding을 뜻한다. 즉, 문자의 인코딩 종류를 결정한다.




아래 태그들은 모두 <body>태그에서 사용하는 것이다.



제목을 위한 h1, h2, h3, h4, h5 태그


<h1>111</h1>
<h2>222</h2>
<h3>333</h3>
<h4>444</h4>
<h5>555</h5>


이렇게 하고 실행을 해보자.




h1이 가장 큰 제목(중요한 제목일때 사용한다)이며 h5로 갈수록 작아진다(중요도가 떨어진다)

크롬에서 개발자 도구(단축키 F12)를 사용하면 구조를 좀 더 쉽게 확인할 수 있다.




태그에는 2가지로 구분할 수 있는데, 다음과 같다. 


1. 인라인 태그

- 새로운 라인에서 시작하지 않는다. 즉, 내용 중간에 사용할 수 있다는 의미이다.

- <strong>, <em> <a>, <span>, <img> ...


<a>태그는  <a href="http://www.naver.com">네이버</a> 으로 사용한다. 링크를 거는 것이다.

태그 속성으로 target이 있는데, 현재 창에서 링크 이동할 것인지, 아니면 새 창을 띄우고 그 창에서

이동할 것인지를 지정하는 것이다. _blank의 경우 새 창을 띄우고 이동한다.

이것을 작성하지 않으면? 기본적으로 현재 페이지에서 링크 사이트로 이동하게 된다.


<a href="http://www.naver.com" target="_blank">네이버</a>



2. 블록 태그

- 새로운 라인에서 시작한다.

- <div>, <h1~h6>,<p>,<form> ...






ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ


태그 속성(Attribute)

- 시작 태그에 입력한다.

- 태그명과 ">" 사이에 입력한다. 

<tagname attributeName="attributeValue">content</tagname> 



Posted by sungho88
,

설치는 여러가지 방법이 존재한다.


1. 직접 <script>를 추가하는 방법(CDN을 사용하는 방법)


3. NPM을 설치한 후 사용하는 방법


4. Vue.JS에서 제공하는 공식 CLI(Command Line Interface)인  vue-cli을 사용하는 방법

 

이 블로그에서는 4번을 사용할 것이며, webpack을 이용할 것이다. 


사용 방법은 다음과 같다.


# vue-cli 설치
$ npm install --global vue-cli
# "webpack" 템플릿을 이용해서 새 프로젝트 생성
$ vue init webpack my-project
# 의존성을 설치하고 실행하세요!
$ cd my-project
$ npm install
$ npm run dev


회색은 주석이고, 검은색이 명령어다!


터미널을 열고! 5줄의 명령어를 순서대로 입력하자! 


여기서 my-project의 경우 원하는 프로젝트 폴더명을 작성한다.


vue init webpack ...


을 입력하면 뭘 자꾸 물어본다.


npm init으로 package.json을 생성할때와 유사하다.



프로젝트명, 프로젝트 설명, 사용자, 뭘 설치할래? 할래? 할래?

특별한 설정을 하기 귀찮다면, 그냥 Enter키만 쳐서 넘기면 된다.


Use ESLint to lint your code?의 경우 처음이면 No을 하는것을 추천한다.

안 그러면 쓸데없는 에러를 페이지마다 수십개씩 발생시킨다.


엔터를 치면서 빈 공간이 너무 많다.

세미클론 안 붙여도 되는 코드인데 붙였다,

등등 공백 1개 1개 모두 에러가 발생한다.

에러라 하지만 일종의 경고랄까. 작동은 되지만 엄청 찝찝하다. 


이렇게 하면 webpack에 의해서 vue 프로젝트가 생성된다. 


그런데 많이 복잡하다. 이건 뭐지? 어떻게 사용해야 하는거지?




vue-cli를 통해 생성한 프로젝트의 디렉토리 구조는 위와 같습니다. 중요한 프로젝트 구조만 이야기 하면..


build/ : webpack 빌드 관련 설정이 모여 있는 디렉토리입니다.


config/ : 프로젝트에서 사용되는 설정이 모여 있는 디렉토리입니다.

    ㄴ dev.env.js : npm start 시 적용되는 설정입니다.

    ㄴ prod.env.js : npm run build 로 배포 버전에 적용되는 설정입니다.


dist/ : 배포버전의 Vue 어플리케이션 파일들이 모여 있는 디렉토리입니다. npm run build 명령어 실행시 생성됩니다.


node_modules/ : npm으로 설치되는 서드파트 라이브러리들이 모여 있는 디렉토리입니다.


src/ : 실제 대부분의 코딩이 이루어지는 디렉토리입니다.

    ㄴ assets/ : 이미지 등.. 어플리케이션에서 사용되는 파일들이 모여 있는 디렉토리입니다.

    ㄴ components/ : Vue 컴포넌트들이 모여 잇는 디렉토리입니다.

    ㄴ router/ : vue-router 설정을 하는 디렉토리입니다.

    ㄴ App.vue : 가장 최상위 컴포넌트입니다.

    ㄴ main.js : 가장 먼저 실행되는 javascript 파일입니다. Vue 인스턴스를 생성하는 역활을 합니다.






1. index.html


쉽게 말하면 이 어플리케이션은 자체는 index.html 파일이 보이는 것이다.

이 페이지에 선언된 id="app"인 div에 vue컴포넌트들이 들어간다고 할 수 있다.

Jquery 등 외부 라이브러리를 CDN으로 사용하기 위해서는 이 HTML파일에 링크를 적는다



<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>webpacktest</title>
</head>
<body>
<div id="app"></div>

<script
src="https://code.jquery.com/jquery-3.3.1.js"
integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60="
crossorigin="anonymous"></script>
<!-- built files will be auto injected -->
</body>
</html>



2. main.js


main.js에서 Vue 인스턴스를 생성한 뒤, 로드한다.

el: '#app'이므로 위 index.html의 <div id="app"></div>에 Vue 컴포넌트들이 마운트 된다.


트들이 마운팅되게 됩: http://beomy.tistory.com/40?category=646688 omy]// The Vue build version to load with the `import` command

// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'


Vue.config.productionTip = false


/* eslint-disable no-new */
new Vue({
el: '#app',
router,
components: { App },
template: '<App/>'
})


Vue 인스턴스 내부 속성을 살펴보면,


el: '#app'  - index.html 내에 id가 app인 div 태그에 Vue 컴포넌트를 마운팅하게 된다.


router  -  vue-router를 사용할 수 있다.


components: { App }  -  App 컴포넌트를 사용한다는 의미며, 지역적 등록이다.


template: '<App />'  -  #app에 마운팅 되는 컴포넌트는 <App /> 이다.


 


[한 수 배운 참고 블로그]


http://beomy.tistory.com/40?category=646688


http://itstory.tk/entry/vuecli-Webpack-%ED%85%9C%ED%94%8C%EB%A6%BF%EC%9C%BC%EB%A1%9C-vuejs-%EA%B0%9C%EB%B0%9C%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%B6%95%ED%95%98%EA%B8%B0





Posted by sungho88
,