티스토리

김재현 일기장
검색하기

블로그 홈

김재현 일기장

jhkim31.tistory.com/m

사부작 사부작

구독자
0
방명록 방문하기

주요 글 목록

  • Python Schedule 라이브러리 Python Schedule라이브러리에 대한 실험 결과다. 자세한 사용법은 아래 docs에 자세하게 나와있다. schedule — schedule 1.1.0 documentation schedule.readthedocs.io 1. 스케줄러 application 레이어에서의 스케줄러란, 특정 작업을 원하는 주기로 실행시키기 위한 툴이다. 스케줄러의 스케줄링에는 크게 두종류가 있다. 1. 원하는 주기로 작업 실행 작업 종료후, 원하는 시간만큼 기다렸다가 다음 작업을 실행하는 경우다. ex) 5초 주기로 실행 2. 원하는 시간에 작업 실행 특정 시간에 작업을 실행하는 경우다 ex) 매 정각에 실행 (결국 1시간 주기로 실행) 이 두가지 스케줄링 방법에 대해 스케줄러가 어떻게 작업을 배치하는지에 대해 알아보는 .. 공감수 0 댓글수 0 2022. 11. 22.
  • OpenTSDB TCP Command OpenTSDB에 TCP로 명령을 보내는도중 발생한 문제다. 1. telnet 으로 TCP Command 전송 telnet 을 통해 TSDB 서버에 다이렉트로 TCP Command를 날렸다. put {Metric} {timestamp} {value} {tags} 결과는 당연히 값이 잘 들어간다. 2. Python에서 Socket 통신 python에서 같은 명령으로 값을 넣어보았다. import socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((hostname, port)) sock.send('put {Metric} {timestamp} {value} {tags}'.encode()) sock.close() 하지만 값이.. 공감수 0 댓글수 1 2022. 11. 22.
  • Node-RED 노드 만들기 3. 플로우 실행을 위한 Injection 노드 만들기 Inject란 플로우를 시작하기 위한 신호이며, http post 요청으로 이루어진다. Node-RED의 기본 노드인 Inject 노드를 사용하여 Inject를 트리거 할 수 있다. 플로우를 시작하기 위해선 주입(Inject)이 이루어져야 한다. 이러한 Inject는 기본 노드인 Inject노드로 할 수 있고, 만들수도 있다. 다만 이러한 Inject가 없다면, 플로우가 있어도 해당 플로우를 시작 할 수 없다. 이번 포스팅에서는 이러한 플로우의 첫번째 노드, 즉 시작이 되는 노드를 어떻게 만드는지에 대해 알아본다. Inject는 사용자가 원하는 시점에 수동으로 진행될수도, 타이머를 걸어두어 자동으로 진행될수도 있다. 수동 (클릭) Injection 클릭을 통해 플로우를 시작하는 노드를 만들어 본다. 노드.. 공감수 0 댓글수 0 2022. 10. 12.
  • SSH 터널링 (이전 완료) 이번 포스팅에서는 ssh 터널링에 대한 기초적인 설명과, 명령을 통한 실제 터널링에 대해 알아본다. ssh 터널링 터널링 이란것은 일종의 통신 프로토콜이다. 기존 패킷을 어떠한 터널링 프로토콜로 감싸 새로운 패킷을 만들어(캡슐화, Encapsulation) 터널 위에서 패킷을 옮기는 기법을 말한다. 이러한 기법들은 기존 네트워크가 아닌 새로운(또는 보여지면 안되는) 채널이 필요한 경우 사용되게 된다. 또한 갈 수 없는 곳까지의 도달을 터널링을 통해 도달할 수도 있다. 이러한 터널링에는 여러가지 프로토콜이 있다. (VPN, calico CNI에서 기본으로 사용하는 IPIP 프로토콜, ssh 터널링 프로토콜등) 이러한 터널링의 목적은 결국 기존 패킷을 새로운 패킷으로 감싸 기존에는 도달하지 못하던 곳을 도달.. 공감수 1 댓글수 1 2022. 10. 11.
  • 파이썬 asyncio 이 포스팅은 파이썬의 비동기 라이브러리인 asyncio에 대한 전반적인 설명과, 간단한 사용법을 다룬다. asyncio — Asynchronous I/O — Python 3.10.7 documentation asyncio — Asynchronous I/O asyncio is a library to write concurrent code using the async/await syntax. asyncio is used as a foundation for multiple Python asynchronous frameworks that provide high-performance network and web-servers, database connection docs.python.org 1. 비동기 프로그래밍.. 공감수 0 댓글수 0 2022. 9. 18.
  • HTTP2, Protocol Buffer, gRPC 이번 포스팅에서는 gRPC와 그와 관련된 HTTP2, Protocol Buffer 프로토콜 그리고 파이썬에서 gRPC의 사용에 대해 다룬다. 1. Terminology gRPC는 google에서 개발한 RPC 프로토콜로써, 구글의 직렬화 기술인 프로토콜 버퍼를 사용하며 HTTP2 프로토콜 위에서 동작한다. 이를 위해 우선 프로토콜 버퍼와, http2에 대해 대략적으로 설명한다. 1.1 프로토콜 버퍼 Protocol Buffers | Google Developers Protocol buffers are a language-neutral, platform-neutral extensible mechanism for serializing structured data. developers.google.com 프로.. 공감수 0 댓글수 0 2022. 9. 12.
  • 동시성(Concurrency)과 병렬성(Parallelism) 이 포스팅에서는 동시성과 병렬성의 의미적 차이와, 파이썬에서의 차이를 라이브러리와 함께 알아본다. 동시성(Concurrency)과 병렬성(Parallelism) 동시성과 병렬성은 CS공부를 하다보면 또는 업무를 하다보면 반드시 만나게 되는 단어다. 이러한 기법들은 순차적 (Sequential) 프로그래밍보다 더욱 어렵다는 단점이 있다. 작업의 결과가 비결정적이기 때문에 결과에 대한 예측이 어렵고, 디버깅 또한 쉽지 않다. 하지만 한번에 두개 이상의 작업에 대해 수행이 가능하다는 엄청난 장점(두배 이상 빠르다는것은 절대로 아니다) 때문에 반드시 알아두어야 하는 개념이다. 이제 실제 동작을 들여다 보자. 병렬성(Parallelism) 병렬 컴퓨팅 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백.. 공감수 0 댓글수 1 2022. 9. 11.
  • Node-RED 노드 만들기 2. 커스텀 노드 만들기 이번 포스트에선 노드를 만들기 위한 js, html 파일 작성에 관련된 내용을 다룬다. Documentation : Node-RED Tutorials Examples of what you can do, taken one step at a time nodered.org html 파일 html파일에는 노드의 UI, 노드의 인터페이스, 노드의 동작 이 기술된다. html 파일의 기본 포멧은 다음과 같다. 마크업 맨 위에있는 태그에는 노드의 editor UI를 html 파일로 작성하게 된다. 태그의 data-template-name 속성으로 노드의 이름을 넣어줘야 한다 ("test-node") 태그의 id로 node-input-{변수이름} 을 설정할 경우 이 노드에서 사용할 변수와 값이 연결(?) 되게 된다. .. 공감수 0 댓글수 0 2022. 9. 6.
  • Python Thread 파이썬의 스레드에 대해 다루는 글이다. 스레드란, 프로세스내 작업의 단위이다. 프로세스는 하나 이상의 스레드를 가지고 있으며, 스레드 끼리는 프로세스의 힙공간을 공유하지만, 각 스레드별 스택을 가지고 있다. 이 포스팅은 전반적인 스레드에 대한 포스팅이 아닌 파이썬에서 스레드가 어떠한지와, threading 모듈에 관한 포스팅이다. 파이썬의 스레드 파이썬에서 스레드는 GIL이라는 정책 때문에, 동시에 두개 이상의 스레드가 병렬로 실행될 수 없다. 개발자는 이로인해 파이썬에서 제약을 받게된다. 그렇다면 GIL이 있으므로 파이썬 자체는 thread-safe하다고 볼 수 있는가? 불행히도 아니다. atomic 연산과 thread-safe 우선 thread-safe에 대해 알기전 연산의 atomic을 우선 알아야.. 공감수 0 댓글수 0 2022. 8. 30.
  • ssh프로토콜과, 파이썬 paramiko 대화형 쉘 ssh 터미널을 개발하며 공부하게된 ssh프로토콜에 관련한 기본적인 내용과, paramiko 모듈의 ssh 인터렉티브 쉘을 얻을 수 있는 invoke_shell()에 대한 팁이다. (다시 삽질하지 않으려고 하는 기록이다) 쉘 입력 출력에 대해 ssh를 사용하기 전 쉘이 어떻게 사용자의 입력을 받아들이고, 보여주는지에 대해 이해햐아 한다. 쉘은 사용자가 커널을 사용하기 위한 인터페이스다. 사용자는 엔터(\r)를 통해 쉘에 명령을 입력하게 된다. 좀 더 자세한 이해를 위해 사용자가 쉘에 ls명령을 입력하여 해당 명령의 결과를 표준 출력(터미널창, 모니터)로 받는 과정을 알아보자. 사용자는 표준 입력(키보드)를 통해 'l', 's', '\r(CR, 엔터)'라는 세가지 입력을 수행해야 한다. (명령을 한번에 복.. 공감수 0 댓글수 0 2022. 8. 27.
  • 동기, 비동기, 블락, 논블락 동기, 비동기, 블락, 논블락의 개념정리 1. sync, async 동기와 비동기의 개념이다. 동기란, 서브루틴의 종료 순서가 보장되는 것이다. (서브루틴을 메인루틴이 책임) 메인 루틴이 서브루틴의 종료를 책임지며, 서브루틴의 종료가 메인 루틴의 관제 하에 이루어 지는 것이다. 메인루틴은 서브루틴이 종료되었는지 확인하거나(non-blocking), 서브루틴이 종료될때까지 멈추게 된다(blocking). 이로인해 메인 루틴은 서브루틴의 종료와 함께 서브루틴의 결과를 받게된다. 비동기란, 서브루틴의 종료 순서가 보장되지 않는 것이다. (서브루틴을 서브루틴이 책임) 메인 루틴이 서브루틴의 종료를 책임지지 않으며, 대게 서브루틴의 종료는 콜백 또는 시그널을 통해 메인 루틴에 전달된다. 메인 루틴은 서브루틴의 실.. 공감수 0 댓글수 0 2022. 8. 26.
  • 웹소캣 웹소캣은 기존 웹의 단방향 프로토콜인 http의 문제를 해결하기 위해 나오게 되었다. http는 요청(Request)과 응답(Response) 구조를 가진 단방향(Simplex) 동기(Synchronous) 프로토콜이다. 또한 상태를 가지고 있지 않아(Stateless), 매 요청이 독립적으로 진행된다. (이 부분은 대게 쿠키, 세션등으로 서버에서 처리) http는 서버에 특정 데이터를 요청하기 위한 목적으로 지금까지 잘 사용되어 왔다. 하지만 이러한 특징 때문에 http에게 실시간성을 기대하기는 어려웠다. http는 실시간성을 개선시키기 위해 풀링, 롱풀링등 다양한 방법들을 사용해 왔지만 프로토콜의 근본적인 문제 때문에 실시간성은 해결되기 힘든 문제였다. 풀링 : 서버에 주기적으로 요청을 보내 데이터가.. 공감수 0 댓글수 0 2022. 8. 24.
  • Python paramiko 파이썬으로 ssh 프로토콜을 사용할 수 있는 paramiko 라이브러리에 대한 간단한 사용 예제 크게 단일 명령을 전송하는 예제와, 당연히 설치는 pip로 가능하다. pip install paramiko pip3 install paramiko 자세한 설명은 아래 Docs에 나와있다. 자료 Welcome to Paramiko’s documentation! — Paramiko documentation Welcome to Paramiko’s documentation! This site covers Paramiko’s usage & API documentation. For basic info on what Paramiko is, including its public changelog & how the proje.. 공감수 0 댓글수 0 2022. 8. 23.
  • 디자인패턴 - 행위패턴 2 객체지향 프로그래밍을 위한 디자인 패턴중 행위에 관한 패턴을 다룬다. 1. ChainOfResponsibility 2. Command 3. Interpreter 4. Iterator 5. Meditator 6. Memento 7. Observer 8. State 9. Strategy 10. TemplateMethod 11. Visitor 7. Observer 객체의 상태 변화를 관찰자(observer)들에게 알려준다. 옵저버 패턴은 객체의 상태변화를 감지하는 옵저버 객체들을 등록하여, 해당 객체의 변화가 일어나게 되면 등록된 옵저버들에게 객체의 변화를 알려주는 패턴이다. pub-sub 모델로도 알려져 있다. Subject 클래스는 Observer객체들을 보관하고 있다. 이후 자신에게 어떠한 변화가 일어나.. 공감수 0 댓글수 0 2022. 8. 21.
  • 디자인패턴 - 행위패턴1 객체지향 프로그래밍을 위한 디자인 패턴중 행위에 관한 패턴을 다룬다. 1. ChainOfResponsibility 2. Command 3. Interpreter 4. Iterator 5. Meditator 6. Memento 7. Observer 8. State 9. Strategy 10. TemplateMethod 11. Visitor 1. ChainOfResponsibility 명령의 처리가 가능한 처리 객체를 찾을때까지 명령의 처리를 위임한다. 명령의 처리를 위한 핸들러들을 만들어 핸들러가 처리할 수 있는 명령이라면 자신이 처리하게 되고, 자신이 처리할 수 없는 명령이라면 다음 핸들러로 명령을 위임하게 한다. 핸들러는 다음 핸들러를 필드로 가지며, 자신이 수행할 수 있는 명령인지 아닌지 판별한다. .. 공감수 0 댓글수 0 2022. 8. 19.
  • 디자인패턴 - 구조패턴 객체지향 프로그래밍을 위한 디자인 패턴중 구조에 관한 패턴을 다룬다. 1. Adapter 2. Bridge 3. Composite 4. Decorator 5. Facade 6. Flyweight 7. Proxy 1. Adapter 서로다른 인터페이스간 규격을 맞추기 위한 패턴 어댑터 패턴은 서로다른 두개의 인터페이스를 맞추기 위한 패턴이다. 서로다른 인터페이스를 하나의 통일된 사용성을 제공하기 위해 사용한다. 클래스 다이어그램에선, 서로다른 두개의 인터페이스 Product1, 2가 있다. 이 Product2를 Product1의 인터페이스로 사용하기 위해 어댑터가 사용된다. 우리나라(Product1)은 220볼트(function1)를 사용한다. 미국(Product2)는 120볼트(function2)를 사용.. 공감수 0 댓글수 0 2022. 8. 19.
  • Github Flow github-flow는 git-flow의 사용법이 복잡하여 단순화한 모델이다. github-flow는 크게 마스터 브랜치만을 유지하며 별도의 작업이 필요할때는 서브 브랜치를 이용하여 작업을 진행한다. master 브랜치는 항상 유지되는 브랜치 이며, 이 브랜치에는 항상 사용가능한, 배포 가능한 상태의 버전의 소스코드가 유지되어야 한다. 즉 작업들은 모두 서브 브랜치에서 끝나야 하며, 끝나지 않은 작업은 마스터로 머지 하면 안된다. git에서는 PR을 사용하라고 권장한다. 예시 1. master 생성 2. feature 생성 이제 특정한 작업 feature1를 수행하기 위해 브랜치를 하나 만든다. 아래 사진은 브랜치 생성 후 작업이 완료된 feature1 브랜치의 모습이다. 3. master로 머지 이제 .. 공감수 0 댓글수 0 2022. 7. 25.
  • 디자인패턴 - 생성패턴 객체지향 프로그래밍을 위한 디자인 패턴중 생성에 관한 패턴을 다룬다. 1. Simple Factory 2. Factory Method 3. Abstract Factory 4. Singleton 5. Builder 6. Prototype 1. Simple Factory 객체의 생성을 별도의 클래스로 위임하여 객체간 의존성을 줄인다. 간단한 팩토리 패턴이다. 이 패턴은 굳이 디자인 패턴이라고 하지 않는 사람들도 많이 있다. 이 패턴의 목적은 객체의 생성을 자기 자신이 하는것이 아닌 관련된 별도의 객체로 위임함으로써, 객체간 의존 관계를 줄일 수 있게 된다. 해당 다이어그램을 보면, 제품 클래스인 Product를 SimpleFactory라는 클래스가 생성해주게 된다. 코드는 다음과 같다. Product.jav.. 공감수 0 댓글수 0 2022. 7. 25.
  • 트러블슈팅[쿠버네티스] : dial tcp 127.0.0.1:10248: connect: connection refused. 에러메시지 The HTTP call equal to 'curl -sSL http://localhost:10248/healthz' failed with error: Get "http://localhost:10248/healthz": dial tcp 127.0.0.1:10248: connect: connection refused. 쿠버네티스 설치중, control plane 에서, kubeadm init중 나타남.. 해결 os의 swap메모리를 끄지않아서 생긴것 같다... swapoff -a swap메모리를 끄니 잘 init 되었다. 공감수 0 댓글수 0 2022. 7. 18.
  • 파이썬 매직 메소드 파이썬의 클래스에서 사용하기 위한 특수한 메소드다. 매직 메소드라고 부른다. 이러한 매직 메소드들은 이미 정해진 메소드를 오버로딩해 클래스만의 특별한 기능으로 사용할 수 있다. 매직 메소드의 특징으론 앞뒤에 언더바 두개를 가지고 있다. ex) __add__ __init__ 클래스가 생성될때 초기화를 진행하게 되는 메소드다. 클래스를 생성할때 사용한 파라미터를 메소드의 파라미터로 전달받게 된다. class Person: def __init__(self, name, age): self.name = name self.age = age def who(self): print(f"이름 : {self.name}, 나이 : {self.age}") kim = Person("kim", 25) kim.who() 객체 생성시.. 공감수 0 댓글수 0 2022. 7. 17.
  • Typescript 인터페이스 인터페이스란 상호간 통신을 위한 약속이다. 타입스크립트에서도 이러한 인터페이스를 통해 사용할 값의 형태등을 확인하게 된다. 선언한 인터페이스는 사용시 해당 값에 대한 검사를 진행하게 되며, 만약 해당값이 인터페이스를 따르지 않는다면 오류를 반환하게 된다. interface A { name: string, id: number } 만약 A라는 인터페이스가 다음과 같다고 하자. A의 name필드는 문자열이여 하며, id 필드는 숫자여야 한다. const a: A = { name: "kim", id: 123 } 다음과 같이 a객체는 A인터페이스를 따르며, name 조건과, id 조건을 만족하였으므로 정상적인 선언이 된다. 하지만 다음과 같이 조건을 만족하지 않으면 오류를 리턴하게 된다. b 객체는 숫자가 들어가.. 공감수 0 댓글수 0 2022. 7. 9.
  • 옵셔널 체이닝 if (sensorA.type.pm10) ... if (sensorA.type.pm25) ... 옵셔널 체이닝은 타입스크립트에만 있는 문법은 아니다. 최근 자바스크립트에도 옵셔널 체이닝이 쓰인다. 자바스크립트의 옵셔널 체이닝 이해를 돕기 위해 아래와 같은 객체 두개를 사용한다. const sensorA = { "mac_addr" : "***", "type" : { "pm10" : { value: 123, avg_value: 50, max_value: 150, min_value: 30 }, "pm25" : { value: 123, avg_value: 50 } } } const sensorB = { "mac_addr" : "***", "type" : { "pm10" : { value: 100, avg_val.. 공감수 0 댓글수 0 2022. 7. 9.
  • arp 프로토콜 arp 프로토콜은 네트워크 계층인 3계층 프로토콜중 하나이다. 컴퓨터는 통신을 위해 고유 식별값인 MAC주소를 필요로 하게 된다. IP주소가 있는데 왜 MAC주소가 필요할까? 사실 반대의 질문이 더 그럴듯한 질문이다. MAC주소가 있는데 왜 IP주소가 필요할까? 프로토콜의 설계를 떠나, 고유 식별값인 MAC주소를 사용하기만 해도 논리적으론 통신이 될것 같다. 하지만 우리는 통신을 위해 MAC주소와 IP 주소를 사용한다. MAC주소에는 체계가 없다. MAC주소의 절반은 랜카드 회사와 관련이 있긴 하지만, MAC주소 자체가 어떠한 체계를 가지진 않는다. 그러한 MAC주소만 가지고 네트워크의 네트워크인 인터넷에서 통신을 하기란 여간 어려운것이 아닐것이다. 이러한 점을 해결하기위해 IP 프로토콜이 나오게 되었다.. 공감수 0 댓글수 0 2022. 7. 5.
  • 모놀로식과 마이크로 서비스 모놀로식 아키텍처라 하면 모든 서비스가 하나의 커다란 프로그램으로 동작하는 구조를 말한다. 이는 하나의 프로그램으로 되어있다는 점 때문에, 개발이 간단하고, 배포가 쉽고 확장이 쉽다는 장점이 있었다. 하지만 프로그램의 크기가 커질수록 이러한 장점은 단점이 되어갔다. 모놀로식 아키텍쳐로 설계된 프로그램의 경우 기능들끼리 복잡하게 의존관계가 엮여있는 경우가 많다. 그러다 보니 한 기능을 바꾸기 위해선 다른 기능도 같이 변화가 되는등 시간과 비용이 많이 들어가게 된다. 또한 확장 하기는 쉽지만, 효율적인 확장이 어려워 지게 된다. 모든 서비스가 하나의 어플리케이션으로 제공되기 때문에, 특정 서비스에 부하가 몰려 확장을 하게되면 그 외 불필요한 서비스까지 같이 확장이 되게 된다. 이러한 모놀로식 아키텍쳐는 규모.. 공감수 0 댓글수 0 2022. 7. 5.
  • Redux란 Redux란 웹 어플리케이션의 상태 관리를 위한 오픈소스다. Redux - A predictable state container for JavaScript apps. | Redux A predictable state container for JavaScript apps. redux.js.org 리액트에선 컴포넌트간 property 전달을 줄이기 위해 사용된다. react-redux React Redux | React Redux Official React bindings for Redux react-redux.js.org Redux 동작 방식 Redux는 상태 관리를 위해 사용된다. 즉 상태를 관리하며, 업데이트 하고 상태에 접근하는데 사용되는 프레임워크다. Redux는 다음과 같은 방식으로 진행된다. 앱.. 공감수 0 댓글수 0 2022. 7. 3.
  • React prop drilling 리액트에선 프로퍼티를 전달하기 위해 부모객체에서 자식 컴포넌트를 사용할때 attributes로 속성값을 넣어주게 되고, 자식 컴포넌트에서 해당 속성을 받아서 사용하게 된다. Parents Child const Child = (props) => {} 하지만 앱의 구조가 복잡해지게 되고 부모 자식의 관계가 많아지게 된다면 속성 전달을 위해 거쳐가는 노드가 많아지게 된다. 만약 전달해야할 자식노드까지 10개의 컴포넌트를 거쳐야 한다면 10개의 컴포넌트에서는 자신이 사용하지 않는 프토퍼티 값을 전달을 위해 받아야 하는 상황이 나오게 된다. 이러한 현상을 해결하기 위해 전역 state관리에 대한 솔루션들이 나오기 시작했다. 공감수 0 댓글수 0 2022. 7. 2.
  • React 컴포넌트 스타일 styled-component 컴포넌트에 스타일을 입히는 방법은 여러 가지가 있지만 여기선 styled-component를 사용하여 스타일을 입히는 방법에 대해 설명한다. 우선 styled-component를 설치해야한다. npm install -g styled-components styled 사용법 예제를 보면 다음과 같다. import React, {useState, useEffect} from "react"; import styled from "styled-components"; const Div = styled.div` color:red; &:hover { color:cyan; } ` function Counter() { const [a, set_a] = useState(0); return ( {a} { set_a(prev_a.. 공감수 0 댓글수 0 2022. 7. 2.
  • 리액트 Hooks Hooks는 함수형 컴포넌트에서도 클래스형 컴포넌트의 State사용이라던지, 라이프 사이클 메소드와 같은 기능들을 사용할 수 있게 해준다. https://reactjs.org/docs/hooks-overview.html Hooks at a Glance – React A JavaScript library for building user interfaces reactjs.org useState useState는 컴포넌트의 가변상태를 나타내줄 수 있는 hook이다. 이 hook을 통해 컴포넌트 내 state를 유지하며, state가 setter를 통해 업데이트 되게되면 뷰를 갱신하게 됩니다. Counter.js import React, {useState} from "react"; function Counter.. 공감수 0 댓글수 0 2022. 7. 2.
  • React 컴포넌트 React 컴포넌트는 크게 함수형 컴포넌트와 클래스형 컴포넌트로 나뉜다. 클래스형 컴포넌트는 함수형 컴포넌트의 기능 + state기능, 라이프 사이클 기능이 추가된 것이다. React에서는 클래스형 컴포넌트 개발 방식에 대해 지원하겠다 하지만, 새로 개발되는 컴포넌트의 경우에는 함수형 컴포넌트를 우선적으로 할것을 권장한다. 굳이 클래스형 컴포넌트를 함수형 컴포넌트로 바꿀 필요는 없지만 함수형 컴포넌트로 개발을 우선적으로 생각해볼 필요는 있다. 해당 포스팅에서는 컴포넌트의 대략적인 기능을 함수형 컴포넌트로 설명하고, 클래스형 컴포넌트에서는 어떻게 사용하는지에 대해 설명한다. 첫번째 컴포넌트 firstComponent.js import React from 'react'; const MyComponent = .. 공감수 0 댓글수 0 2022. 7. 2.
  • 첫번째 React 앱 만들기 create-react-app을 통해 리액트 개발을 위한 설정을 완료하였다면, 해당 디렉토리안에 src라는 디렉토리가 있을것이다. 이 디렉토리가 개발이 이루어지게 되는 디렉토리다. JSX 우선 JSX에 대해 언급하고 갈 필요가 있다. JSX는 마크업 언어의 형태를 띄고 있지만 이 코드는 실제 동작을 위한 코드는 아니다. 이 코드들은 babel 이란 모듈을 통해 실제 동작하는 js코드로 변환이 되어 동작이 이루어지게 된다. import logo from './logo.svg'; import './App.css'; function App() { return ( Edit src/App.js and save to reload. Learn React ); } export default App; 리액트 최초 세팅 .. 공감수 0 댓글수 0 2022. 7. 2.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.