반응형

최근 개인적으로 프로젝트를 진행하고 있는데,

버전을 잘 관리하려고 해서 main 이라는 브런치는 만들었다.(실제로 branch를 통해서 프로젝트를 관리해본 적은 없었기에..)

근데 다음날 git commit 을 하려고 하니 다음과 같은 에러가 발생했다.

 

 

이거보면 현재 main 브런치가 최신이라는 거 같은데

 

보니까 지난번에 react에 대한 부분이 빠져있었다.

 

Branch 문제가 아니었다.

 

왜 코드를 올리지 못했을까?

 

일단 파일이 있었기 때문에 다시 저장소 파서 새로운 폴더에서 관리하는 걸로 대응했다.

반응형
반응형

요즘 emacs를 사용하면서 react를 개발하고 있다.

 

근데 mac에서 terminal을 통해서 emacs를 사용하고 있는데,

터미널 상에서 Ctrl + W로 복사한 내용이

실제 블로그에 올리려고 하니 복사가 되지 않았다.

 

왜 그런지 살펴보니, Emacs와 MAC은 서로 클립보드를 공유하고 있지 않아서 발생하는 문제였다.

 

이것을 해결하기 위해서 아래와 같이 하였다.

 

일단 터미널에서 emacs 설정 파일을 연다.(없다면 만들어서 열어준다.)

 

그러면 창이 하나 뜬다.

여기에 아래와 같은 코드를 입력해준다.

;; pbcopy for OSX
(defun copy-from-osx ()
  (shell-command-to-string "pbpaste"))
(defun paste-to-osx (text &optional push)
  (let ((process-connection-type nil))
    (let ((proc (start-process "pbcopy" "*Messages*" "pbcopy")))
      (process-send-string proc text)
      (process-send-eof proc))))

(setq interprogram-cut-function 'paste-to-osx)
(setq interprogram-paste-function 'copy-from-osx)

 

그리고 위의 GUI 형태의 저장버튼을 누르고

화면을 종료한다.

 

이후에 다시 Emacs를 통해 파일을 편집할 때, 복사하게 되면,

실제로 블로그에도 복사된 내용이 잘 공유된다.

반응형

'IT' 카테고리의 다른 글

React - SpringBoot 연동하기  (1) 2020.10.26
git add 시 파일이 track에 올라가지 않는 에러  (0) 2020.10.22
React 프론트 개발 기초 ver 2  (0) 2020.10.22
React 프론트 개발 기초 ver 1  (0) 2020.10.21
리액트 너는 누구니?  (0) 2020.10.21
반응형

지난번에 말씀 통통 초기 화면 띄우기를 진행하였다.

 

datacodingschool.tistory.com/146

React 프론트 개발 기초 ver 1

리액트 개발 기초 노트 1) 노드 설치(노드를 통해서 여러가지 리액트 라이브러리를 사용할 수 있다.) 2) 터미널을 열고 아래 명령어를 칩니다. yarn은 개선된 버전의 npm입니다. brew install yarn 잘 진

datacodingschool.tistory.com

 

오늘은 해당 프로젝트를 이어가면서 

필요한 컴포넌트를 만들어보겠다.

 

 

 

1) 일단 component 에 form 이라는 폴더를 만든다.

mkdir form
cd form

 

 

 

그리고 여기서 Form.js랑 Form.css를 만들어준다.

 

Form.js

import React from 'react';
import './Form.css';

const Form = ({value, onChange, onCreate, onKeyPress}) => {
  return (
    <div className="form">
      <input value={value} onChange={onChange} onKeyPress={onKeyPress}/>
      <div className="create-button" onClick={onCreate}>
        추가
      </div>
    </div>
  );
};

export default Form;

 

Form.css

.form {
  display: flex;
}

.form input {
  flex: 1; /* 버튼을 뺀 빈 공간을 모두 채워줍니다 */
  font-size: 1.25rem;
  outline: none;
  border: none;
  border-bottom: 1px solid #c5f6fa;
}

.create-button {
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
  padding-left: 1rem;
  padding-right: 1rem;
  margin-left: 1rem;
  background: #22b8cf;
  border-radius: 3px;
  color: white;
  font-weight: 600;
  cursor: pointer;
}

.create-button:hover {
  background: #3bc9db;
}

 

2) App.js 에서 만든 Form을 사용해보자.

import React,{Component} from 'react';
import IndexTemplate from './components/index/IndexTemplate';
import Form from './components/form/Form';

class App extends Component{
    render(){
        return (
                <IndexTemplate form={<Form/>}>
                고민 해결
            </IndexTemplate>
        );
    }
}

export default App;

 

3) 이제 실행해볼까요?

cd ..
yarn start

 

 

네 ~ 테스트 입니다~~ 라는 인풋텍스트 창이 생기고 버튼도 생겼네요!!

 


자 이제 고민 해결 창에 고민을 나열해주는 컴포넌트를 만들어 보겠습니다.

 

4) 다시 새로운 컴포넌트 폴더를 만들어줍니다.

>> cd src/components

>> mkdir contents

>> cd contents

>> ema Content.js

 

Content.js 파일은 아래와 같습니다.

import React, { Component } from 'react';

class Content extends Component {
    render() {
        const { contents, onToggle, onRemove } = this.props;

        return (
                <div>

                </div>
        );
    };
};

export default Content;

 

 

 

 

5) 이제 Contents에 들어갈 item 컴포넌트를 만들어보겠습니다.

아래와 같이 component 위에 item 폴더를 만들어주고 폴더 안으로 들어갑니다.

 

 

 

그리고 Item.js 를 만들어줍니다.

import React, {Component} from 'react';
import './Item.css';

class Item extends Component {
    render(){
	const { text, checked, id, onToggle, onRemove } = this.props;

	return (
		<div className="content-item" onClick={() => onToggle(id)}>
		<div className="remove" onClick={(e) => {
		    e.stopPropagation(); // onToggle 이 실행되지 않도록 함
		    onRemove(id)}
		}>&times;</div>
		<div className={`item-text ${checked && 'checked'}`}>
		  <div>{text}</div>
		</div>
		{
		    checked && (<div className="check-mark">✓</div>)
		}
	    </div>
	);
    };
}

export default Item;

 

만들었으니, 이제 Item 스타일링을 해본다.

 

 

.content-item {
  padding: 1rem;
  display: flex;
  align-items: center; /* 세로 가운데 정렬 */
  cursor: pointer;
  transition: all 0.15s;
  user-select: none;
}

.content-item:hover {
  background: #e3fafc;
}

/* content-item 에 마우스가 있을때만 .remove 보이기 */
.content-item:hover .remove {
  opacity: 1;
}

/* content-item 사이에 윗 테두리 */
.content-item + .content-item {
  border-top: 1px solid #f1f3f5;
}


.remove {
  margin-right: 1rem;
  color: #e64980;
  font-weight: 600;
  opacity: 0;
}

.item-text {
  flex: 1; /* 체크, 엑스를 제외한 공간 다 채우기 */
  word-break: break-all;
}

.checked {
  text-decoration: line-through;
  color: #adb5bd;
}

.check-mark {
  font-size: 1.5rem;
  line-height: 1rem;
  margin-left: 1rem;
  color: #3bc9db;
  font-weight: 800;
}

 

6) 이제 만들어진 Item 컴포넌트를 3개정도만 뿌려보자

다시 Content.js 로 파일로 돌아온다.(위치: components/contents/Content.js)

 

여기서 중요한 것은 경로이다.

아래 import Item from 에서 .. 이 두개이다( 1개는 자기 위치, 두개는 이전 폴더 위치를 의미)

import React, { Component } from 'react';
import Item from '../item/Item';

class Content extends Component {
    render() {
	const { contents, onToggle, onRemove } = this.props;

	return (
		<div>
		  <Item text="안녕"/>
		  <Item text="리액트"/>
		  <Item text="반가워"/>
		</div>
	);
    };
};

export default Content;

 

 

 

 

7) 이제 content를 App.js에 렌더링 해보자(만들었으니까 화면에 뿌려보자)

 

import React,{Component} from 'react';
import IndexTemplate from './components/index/IndexTemplate';
import Form from './components/form/Form';
import Content from './components/contents/Content';

class App extends Component{
    render(){
        return (
	    <IndexTemplate form={<Form/>}>
                <Content/>
            </IndexTemplate>
        );
    }
}

export default App;

 

 

 

8) 과연 잘 될 것인가!! 떨린다 한번 실행해보자~~

 

 

오! 잘된다~~~ 성공!

 

 

근데 버튼을 누르면 아래와 같은 에러가 발생한다.

 

 

구현이 되어 있지 않아서 발생하는 자연스러운 현상이다^

반응형
반응형

오늘의 추억이 될 기록 남기기

Henry의 daily log를 작성해본다.

 

 

오늘은 한국투자증권 지원서를 제출했다.(방금)

자소서를 쓰면서 들었던 생각인데,

그 동안 SKTelecom, 네이버에서 했던 내용들을 거의 주로 썼던 것 같다.

지금까지는 이것만 믿고 회사를 지원했나보다..ㅜㅜ!!

앞으로 어디에서 근무하게 되도 실력을 발휘할 수 있도록 개인 역량을 쌓아가야겠다 --> 1일 1 Commit 하자!

나의 역량도 꾸준히 계발해서 자소서에 조금 더 진솔한 이야기를 적어보자!

 

 

오늘 해야할 일은

1. 인적성 공부

2. 영어 공부(오픽에서 사용할 만한 문장 암기)

3. 1일 1 commit -> 말씀통통(리액트)

4. 키움증권 자소서 작성

 

 

목표: 7시 반에 집 가기

 

 

 

하나님께서 나의 Way maker 되십니다!

보이지 않는 곳에 길을 내시고, 신실하게 이끄시는 주님을 찬양합니다.

 

오늘 DT도 기대하자!

 

 

 

 

반응형
반응형

 

꾸준히 하고 있는 나에게 힘을!!

 

오늘 이상하게 서류 탈락 메일이 많이 온다.

나는 열심히 하고 있는데, 왜 자꾸 탈락을 하는 것일까 복기해보자.

 

일단 오늘 탈락한 회사는

SKTelecom, 금호석유화학그룹, DB손해보험, 넷마블, 캐롯손해보험..

 

하루에 5군데씩 떨어지는 거는 조금 충격이지만,

지금도 성실하게 준비하고 있기 때문에 그런 마음을 먹지 않을 것이다.

 

특시 오늘은 오픽 점수를 올리기 위해 전화영어도 신청했고, 이따가 집에 가서 할 것이기 때문이다.(11월에 IH 목표)

또, 인적성 공부를 열심히 하고 있다.(효성그룹 책 사서 풀어봐야겠다.) -> 코딩테스트 공부도 꾸준히 할 것이다.(하루에 1~2문제씩 풀어줄거다.)

 

분명히 나에게도 좋은 결과가 있을 것이다. 화이팅하자!

 

내 눈에는 보이지 않지만 믿음으로 이미 취업했음을 선포하자!

 

"여호와는 나의 목자시니 내게 부족함이 없으리로다" - 시편 23편

 

반응형
반응형

리액트 개발 기초 노트

 

1) 노드 설치(노드를 통해서 여러가지 리액트 라이브러리를 사용할 수 있다.)

 

 

 

 

2) 터미널을 열고 아래 명령어를 칩니다.

yarn은 개선된 버전의 npm입니다.

brew install yarn

 

잘 진행되고 있네요.

 

3) react를 사용하기 위해 추가해줍니다.

yarn -g add create-react-app

 

근데 아래와 같은 에러 발생

"Missing list of packages to add to your project"

명령어를 조금 바꿔봅니다.

 

 

 

-g 를 global로 바꾸니까 설치되었습니다.

yarn global add create-react-app

 

 

 

 

4) 리액트 잘 추가되었는지 버전 확인해봅니다.

create-react-app --version

 

 

 

5) 리액트 폴더 생성해줍니다.

create-react-app 폴더명

 

저는 front라는 이름으로 만들었습니다.

 

 

6) 친절하게 실행하는 방법을 가르쳐주네요.

그대로 따라해봅니다.

>> cd front
>> yarn start

 

 

 

7) 터미널과 크롬 브라우저에 아래와 같이 나타나면 정상적으로 작동하는 것입니다.

 

오예~~

 

8) 이제 저 파란색 리액트 친구를 없애주어야합니다.(우리의 목표)

일단 터미널에서 Ctrl+c로 나오고, ls 명령어를 쳐봅니다.

그러면 해당 폴더에 어떤 파일들이 생성됬는지 리스트가 나옵니다.

우리가 집중할 것은 src라는 폴더입니다.

cd src

 

 

 

9) 파일이 많이 있는데, 여기서 App.js를 변경해줄 것입니다.

아래와 같이 변경해줍니다.

import React, { Component } from 'react';

class App extends Component {
  render() {
    return (
      <div>
        App
      </div>
    );
  }
}

export default App;

 

 

 

10) 그리고 다시 yarn start로 실행해주면 아래와 같이 나타나면 성공입니다!

 

 

 

11) 이제 컴포넌트를 만들어주자.

src에 components 라는 폴더 만들고, components 별로 폴더를 따로 만들어서 특정 기능을 수행하도록 만들어 준다.

components 폴더 안으로 들어와서, indexTemplate.js를 만들어준다.

 

 

 

 

import React from 'react';
import '/.indexTemplate.css';

const indexTemplate = ({form, children}) => {
    return (
            <main className="index-template">
            <div className="title">
            오늘 할일
        </div>
            <section className="form-wrapper">
            {form}
        </section>
            <section className="todos-wrapper">
            {children}
        </section>
            </main>
    );
};

export default indexTemplate;

 

 

 

파라미터를 props로 받아야 하는건데, 위 컴포넌트는 2가지의 props를 받게 된다.

 

12) 이제 indexTemplate.css 파일을 만들어줍니다.

.index-template {
  background: white;
  width: 512px;
  box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); /* 그림자 */ 
  margin: 0 auto; /* 페이지 중앙 정렬 */
  margin-top: 4rem;
}

.title {
  padding: 2rem;
  font-size: 2.5rem;
  text-align: center;
  font-weight: 100;
  background: #22b8cf;;
  color: white;
}

.form-wrapper {
  padding: 1rem;
  border-bottom: 1px solid #22b8cf;
}

.todos-wrapper {
  min-height: 5rem;
}


13) index.css 파일을 수정하여 배경색을 지정하겠습니다.

 

 

 

 

 

 

14) 수정이 완료되었다면 이제 App.js에서 indexTemplate을 사용해줍니다!

 

import React,{Component} from 'react';
import indexTemplate from './components/indexc/indexTemplate';

class App extends Component{
    render(){
        return (
            <indexTemplate>
                템플릿 완성
            </indexTemplate>
        );
    }
}

export default App;

 

 

 

 

15) 실행해볼까요?

 

 

 

 

16) 에러 발생,.

 

 

 

확인해보니, indexTemplate.css를 못찾는거 같아요

 

 

이렇게 바꿔줍니다.

 

 

17) 근데 결과가 이상..

velopert.com/3480 <-- 이거 따라했는데 이렇게 안나오는 이유는 뭘까요?

 

 

 

18) 잉?

indexTemplate -> IndexTemplate으로 앞글자를 대문자로 하니까 잘 된다. 이상하다ㅋㅋ(규칙이 있나보다)

 

 

 

 

암튼 그럭저럭 템플릿 만드는 방법을 배웠다.

 

이걸로 말씀통통의 프론트 화면을 만들 것이다.

아래는 Text 수정해서 띄운거

 

 

반응형
반응형

 

 

 

 

페이스북에서 만든 프론트엔드 개발 프레임워크이다. (라이브러리 개념)

 

리액트 이전에도 Angular.js, Backbone.js 등 다양하게 존재했다.(MVC, MVVM 패턴 사용하는 것들.)

리액트는 MVC를 사용하지 않는다.

왜냐면 MVC 패턴은 시스템 규모가 커지게 되면, 성능이 떨어진다는 것이다.

 

근데 리액트는 MVC에서 View를 사용하지 않았다.

대신 VirtualDOM을 사용하여 처음부터 새롭게 렌더링을 진행해준다.

 

리액트의 장점

1) VirtualDOM을 사용하여 속도가 빠르다.

2) 캐치프레이즈, Javascript, React만 알면, 웹, 앱 개발 가능하다.

3) 이미 많은 회사에서 사용하고 있어서 문서가 많다.

 

 

리액트 구조

1) 모든 것이 캡슐, 레고같이 컴포넌트로 구성된다.(유지보수 편함, 이식 편함 등)

2) 단방향 데이터 흐름(부모 -> 자식)

3) ECMA script 6 사용(let, const, => 이런거)

 

 

대략적으로 이렇다는데, 한번 사용해보면서 배워봐야지~~~

 

 

반응형
반응형

1. STS4 를 실행시켜줍니다.

 

 

 

2. 한번 위 쪽에 있는 실행버튼을 눌러봅니다. > 이렇게 생긴거(초록색)

 

 

 

3. 그러면 아래 Spring 배너가 뜨는 것을 확인할 수 있습니다.(서버가 실행되었음을 의미합니다.)

저는 서버 실행 시 Spring boot(내장 서버)로 실행했습니다.(달라도 무방)

 

 

 

4. 인터넷을 열고 검색창에 localhost:8080 이라고 검색해봅니다.(저는 크롬 사용했습니다.)

그러면 아무것도 나오지 않습니다. 왜냐면 뷰를 만들어주지 않았으니까요

 

 

 

5. 다시 STS로 돌아와서 임시방편으로 화면을 띄워보겠습니다.

IndexController 클래스를 만들어줍니다.

그리고 아래와 같이 코드를 적어줍니다.

@RestController
@RequestMapping("/")
public String index(){
return "Hello World!";
}

위 코드의 의미는 localhost:8888/ 로 들어왔을 때, Hello World!를 리턴해주어라 라는 의미입니다.

 

 

 

6. 실행해보겠습니다.(빨간 내모 클릭하여 서버 종료하고, 다시 실행)

검색창에 localhost:8080/ 검색하면,

 

 

 

잘 나오네요.

반응형

+ Recent posts