728x90

연습 겸 코드 기록으로 작성

데이터베이스는 docker 를 이용해 mariadb 컨테이너를 사용하고, 서버로는 springboot , 프론트로는 react를 사용해보기로 했다.

 

1. mariadb - docker

먼저 docker-desktop 이나 docker가 설치 되어있다는 가정하에 진행한다.

먼저 mariadb 이미지를 pull 받아준다.

docker pull mariadb

docker run으로 mariadb 컨테이너를 만들어 줍니다.

docker run -dit --name=mariadb -p 3307:3306 -e MARIADB_ROOT_PASSWORD=root --restart=always mariadb

docker exec 로 root 접속해 유저생성, 데이터베이스 생성, 권한을 부여해 줍니다.

docker exec -it mariadb mysql -u root -p
password: root
CREATE USER 'hiio'@'%' identified by 'hiio';
CREATE DATABASE HIIO;
GRANT ALL PRIVILEGES ON HIIO.* TO 'hiio'@'%';

connect 연결테스트를 해보기 위해서 dbeaver로 접속해 봅니다.

 

 

2. spring boot

VScode를 사용합니다.

JDK 는 11버전을 사용합니다.

 

vscode에 java 와 spring boot Extention을 설치 해주고 F1을 눌러 spring boot initialize 를 gradle로 만들어 줍니다.

버전은 2.7.8 를 사용해 줬습니다.

 

언어는 JAVA로 선택하고, 패키지 명을 정해줍니다.

패키지 타입은 JAR로 선택해 줬습니다.

 

JAVA 버전은 11로 선택해 주고 

초기 Dependency 는 Lombok , Devtools, web 을선택해 줬습니다.

디렉토리를 선택해면 그 하위에 파일들이 생기게 됩니다.

 

 

PracApplication 을 실행해 봅니다.

 

잘 실행이 되네요.

 

3. create-react-app

node 를 설치한 상태에서 npx를 사용해 create-react-app 으로 리액트를 설치해 줍니다.

 

설치가 완료되고 나서 front 디렉토리로 이동후에 npm run start 명렁어로 실행해 봅니다.

 

완료! 

 

728x90
728x90

요즘하는 업무는 검증 과정에 대한 데이터를 뿌려주는 cms 프로젝에 투입이 되어 열심히 쿼리를 짜고 있다.

되도록이면 하루에 1개 이상의 작업은 완료를 하려고 하다보니 퇴근이 틎어 질떄도 있지만, 하루에 1개도 못할때가 있다면, 정말 잠을 자기 전까지는 그 부분이 머릿속에서 떠나지 않는다.

일반적인 CRUD라면 빨리 빨리 처리할수있겠는데, 데이터를 비교해서 뿌려주거나, 아이디값만 올려 그대로 다시 insert하거나 하는 경우가 많다.

그래도 곧 끝나가는 시점에 짧게 나마 기록을 해두고자 한다.

이번 프로젝트를 진행하면서 느낀것은 1. 팀인원 2. 분석 설계 과정의 중요성 3. 커뮤니케이션 이다.

되도록이면 팀인원의 밸런스가 정말 중요하다고 느껴졌다. DBA,Backend,Frontend 등등 뿐만아니라 PM의 역할까지도,

이러한 점은 분석설계과정이 미비할수록 더 잘 느껴지는 것이 아닐까하는 생각을 해보는데, 일정이나 , DB설계, 구조, 개발방법 등등 개발에 들어가기 앞서 진행되어야 하는 것들이 어느정도 (내생각에는 90%)가 완료되어야 개발 단계에는 불편함이나, 힘든 시간을 보내지 않을 수 있지않을까?

이런 분석설계가 잘 이루어져 있지 않다보니, 테이블 정의서 없이 DB 테이블을 수정해야하는 일이 빈번해지고, 테스트를 위한 임의데이터의 결점도 많아져 쿼리를 계속 수정해야하는 일이 잦아 졌다. 물론 내개발 실력의 문제일수도 있지만, 1.팀인원에 대한 문제와 귀결되는 사항인데, 앞단 뒷단 할것 없이 개발을 해야하다보니 한가지에만 집중하기 어려운 점도 있기는 하다. 특히나 어떤 기능에 대한 확정적인 답변이 필요로 해야하는 빈번하게 발생한다는 점이다. 각 화면에 대한 기능 정의나 설계가 부실해 그때그때 마다 구현 방식이 바뀌게 되고 이게 맞는지 아닌지에대한 설명도 애매해질때가 많고, 팀원 중 한명은 개발을 중점으로 하는게 아니라 이러한 문제를 해결하려고 커뮤니케이션에 할애하는 시간이 훨씬 많다. 

코로나 시대에 접어들면서, 또는 비대면 시대에 접어 들면서, 대면으로 하는 미팅이나 대화가 많이 줄어든 상태이다.

비대면으로도 업무가 정말 잘 진행 된다면 좋겠지만,짧은 시간안에 빠르게 진행되어야할  문의사항에 대한 결정이나, 협의사항을 이야기하는데에는 대면이 훨씬 능률이 좋지 않을까?

 

많은것을 느끼고 배우고있는 프로젝트가 이제 막바지를 향해 달려가는데 끝나면, 제주도로 떠나야지

 

728x90
728x90

첫 stateless 위젯

flutter 에서 위젯은 크게 stateless 와 stateful 로 구별한다. 이외의 위젯도 있지만, 우선 이둘만 알면 충반하다는듯

stateless 위젯은 StatelessWidget 을 상속받아 사용한다.

import 'package:flutter/material.dart';

void main() {
  return runApp(MaterialApp(
      title: "Hello World",
      home: Scaffold(
          appBar: AppBar(title: Text('Widget')),
          body: _TestStatelessWidget())));
}

class _TestStatelessWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Text("Test");
  }
}

dart에서 private class를 만들려면 _를 맨앞에 붙인다.

상속은 extends 키워드를 사용한다.

@override 키워드는 똑같다.

 

Stateless는 화면을 표시하는 위젯으로 상태의 변경이 불가능하다.

build 함수를 Override해야한다. 

build 함수의 returnType은 Widget이다. 

그럼 또 StatelessWidget 을 상속받는 class를 사용할 수 있을듯? 나중에 해봐야지.

react 가 hooks를 이용하는 함수형 components가 주로 사용되면서 클래스형으로 구성하는 방법을 많이 잊어버렸는데 

react 클래스형 components구성과 비슷한듯 한다.

728x90

+ Recent posts