728x90

개발 287

[RN] React Navigation Bottom Tab 추가

리액트 네이티브로 간단한 앱을 만들면서 겪었던 일을 기록합니다. 리액트 네이티브 버전 : "react-native": "0.69.2" 지난번에 내비게이션을 설치해서 기본 세팅을 했었고, 이번엔 화면 하단에 탭을 추가해봤다. import React from 'react'; import {createNativeStackNavigator} from '@react-navigation/native-stack'; import {createBottomTabNavigator} from '@react-navigation/bottom-tabs'; import MainScreen from '../screens/main/MainScreen'; import SettingScreen from '../screens/main/Set..

[Go] 기초 - 루틴(goroutine)

1. Go루틴 - Go루틴(goroutine)은 Go 런타임이 관리하는 Lightweight 논리적 (혹은 가상적) 쓰레드이다. - Go에서 "go" 키워드를 사용하여 함수를 호출하면, 런타임시 새로운 goroutine을 실행한다. - goroutine은 비동기적으로 함수루틴을 실행한다. 이를 통해 여러 코드를 동시에 실행한다. package main import ( "fmt" "time" ) func say(s string) { for i := 0; i < 10; i++ { fmt.Println(s, "***", i) } } func main() { // 함수를 동기적으로 실행 say("첫 번째 함수 실행") // 함수를 비동기적으로 실행 go say("두 번째?") go say("세 번째?") go ..

개발/Go 2022.08.02

Git 커밋 제거하기

회사 코드를 다시 이전 버전으로 돌릴 일이 생겼다.(하나 하나 수정하기엔 너무 많았다.) 인텔리제이를 사용했는데, 인텔리제이는 Git과 연동이 되어있어서 사용하기 편했다. git 로그 목록 중 원하는 버전을 클릭하여 마우스 오른쪽 버튼에서 Reset Current Branch to Here...(현재 브랜치를 여기로 재설정) 클릭 후 Hard, Reset 순서로 클릭하면 되돌아간다. 명령어로도 가능하다. git reset --hard HEAD^ : 바로 전으로 돌아감 git reset --hard HEAD~n : n만큼 전으로 돌아감 이후 cmd창 켜서 프로젝트가 있는 경로에 가서 강제 커밋해준다. git push origin master -f

개발/ETC 2022.08.02

[JPA] 스프링 데이터 - 나머지 기능들

김영한님의 실전! 스프링 데이터 JPA 정리 1. Specifications(명세) - 도메인 주도 설계(Domain Driven Design)는 SPECIFICATION(명세)라는 개념을 소개 - 스프링 데이터 JPA는 JPA Criteria를 활용해서 이 개념을 사용할 수 있도록 지원 2. 술어(predicate) -> 실무 사용 X - 참 또는 거짓으로 평가 - AND OR 같은 연산자로 조합해서 다양한 검색조건을 쉽게 생성 예) 검색 조건 하나하나 - 스프링 데이터 JPA는 org.springframework.data.jpa.domain.Specification 클래스로 정의 참고 Querydsl 사용! 3. Query By Example - 실무에서 사용하기에 매칭 조건이 너무 단순함. - LE..

[Java] 자바와 객체 지향 (1)

스프링 입문을 위한 자바 객체 지향의 원리와 이해를 읽고 간단한 정리. 1. 객체 지향의 4대 특성 - 캡슐화: 정보 은닉 - 상속: 재사용 - 추상화: 모델링 - 다형성: 사용 편의 2. 클래스 : 객체 = 붕어빵틀 : 붕어빵 X!!!! 클래스 객체명 = new 클래스(); - 붕어빵틀과 붕어빵이 아닌 개념과 실체로 설명했다. 예전에 배웠을 때 보다 훨씬 이해가 잘되는 문장이다. 3. 추상화 : 모델링 - 추상화는 모델링이다. 객체 지향의 추상화는 곧 모델링이다. - 객체: 세상에 존재하는 유일무이한 사물 - 클래스: 분류, 집합 같은 속성과 기능을 가진 객체를 총칭하는 개념 - 추상화: 구체적인 것을 분해해서 관심 영역(애플리케이션 경계)에 있는 특성만 가지고 재조합하는 것 = 모델링 애플리케이션 경..

[Go] 기초 - defer&panic

1. defer - defer는 특정 문장이나 함수를 나중에 (defer를 호출하는 함수가 리턴하기 직전에) 실행하게 한다. - Java 같은 언어에서의 finally 블럭처럼 마지막에 작업을 위해 사용 package main import "os" func main() { f, err := os.Open("1.txt") if err != nil { panic(err) } // main 마지막에 파일 close 실행 defer f.Close() // 파일 읽기 bytes := make([]byte, 1024) f.Read(bytes) println(len(bytes)) } - 나는 주로 DB 커넥션을 끊을 때 사용했다. 2. panic - panic은 현재 함수를 즉시 멈추고 현재 함수에 defer 함수들..

개발/Go 2022.08.01

[JPA] 스프링 데이터 - 스프링 데이터 JPA 분석

김영한님의 실전! 스프링 데이터 JPA 정리 1. 스프링 데이터 JPA 구현체 분석 - 스프링 데이터 JPA가 제공하는 공통 인터페이스의 구현체 - org.springframework.data.jpa.repository.support.SimpleJpaRepository - @Repository 적용: JPA 예외를 스프링이 추상화한 예외로 변환 - @Transactional 트랜잭션 적용 (1) JPA의 모든 변경은 트랜잭션 안에서 동작 (2) 스프링 데이터 JPA는 변경(등록, 수정, 삭제) 메소드를 트랜잭션 처리 (3) 서비스 계층에서 트랜잭션을 시작하지 않으면 Repository에서 트랜잭션 시작 (4) 서비스 계층에서 트랜잭션을 시작하면 Repository는 해당 트랜잭션을 전파 받아서 사용 (5..

[Go] 기초 - Error

1. 에러 - Go는 error 라는 interface 타입을 갖고 있다. - Go에서 에러가 발생한 경우 error 인터페이스를 통해서 주고 받는다. type error interface { Error() string } 2. Go 에러처리 package main import ( "log" "os" ) func main() { f, err := os.Open("C:\\temp\\1.txt") if err != nil { log.Fatal(err.Error()) } println(f.Name()) } - Go 함수가 결과와 에러를 함께 리턴한다면, 이 에러가 nil 인지를 체크해서 에러가 없는지를 체크할 수 있다. - 에러가 nil이 아니면 에러 로그를 남기는 로직. - 또 다른 에러처리는 error의 ..

개발/Go 2022.07.31

[Go] 기초 - 인터페이스

1. Go 인터페이스 - 구조체(struct)가 필드들의 집합체라면, interface는 메서드들의 집합체 - interface는 타입(type)이 구현해야 하는 메서드 원형(prototype)들을 정의 - 하나의 사용자 정의 타입이 interface를 구현하기 위해서는 단순히 그 인터페이스가 갖는 모든 메서드들을 구현하면 된다. - 인터페이스는 struct와 마찬가지로 type 문을 사용하여 정의 type Shape interface { area() float64 perimeter() float64 } 2. 인터페이스 구현 - 인터페이스를 구현하기 위해서는 해당 타입이 그 인터페이스의 메서드들을 모두 구현하면 되므로, 위의 Shape 인터페이스를 구현하기 위해서는 area(), perimeter() 2..

개발/Go 2022.07.30

[Spring] 프레젠테이션 층의 설계와 구현

1. 프레젠테이션 층이란 - 프레젠테이션 층은 사용자 인터페이스와 컨트롤러를 말한다. - 프레젠테이션 층에서는 스프링MVC와 스프링 웹 플로를 이용할 수 있다. 2. 스프링 MVC와 REST - URL을 자유롭게 결정할 수 있다. - HTTP 메소드에 따라 실행할 처리를 전환할 수 있다. - URL의 일부를 쉽게 추출해 사용할 수 있다. 3. 스프링 MVC의 구성 요소 이름 역할 DispatcherServlet - 프론트 컨트롤러를 담당 - 모든 HTTP 요청을 받아들여 그 밖의 오브젝트 사이의 흐름을 제어 - 기본적으로 스프링 MVC의 DispatcherServlet 클래스를 그대로 적용 Handler Mapping - 클라이언트의 요청을 바탕으로 어느 컨트롤러를 실행할 지 결정 Model - 컨트롤러..

728x90