개발일지 썸네일형 리스트형 20240111 브라우저의 동작원리 1. 사용자 인터페이스를 통해 브라우저를 동작시킨다. 2. 브라우저 엔진이 사용자 인터페이스와 렌더링 엔진사이의 동작을 제어한다. 3. 렌더링엔진이 서버에 요청해서 가져온 리소스를 화면에 표시해 준다. 렌더링 엔진의 동작과정을 살펴보면 DOM 트리와 CSSOM트리를 만들고 이를 결합하여 렌더트리를 형성한다. 그 후 생성된 렌더트리를 배치 후 그린다. 쿠키란 사이트를 방문했을 때 사용자의 컴퓨터에 저장되는 기록 정보 파일을 뜻하며 무상태성인(stateless) HTTP에게 상태정보를 기억하게 하는 일에 쓰인다. 하지만 쿠키는 쉽게 수정이 가능해서 악의적으로 변조될 가능성이 크기때문에 중요하지 않은 정보만 저장되어야 한다. 세션이란 사용자의 정보를 서버에서 저장 및 관리하는 방식이다. 각.. 더보기 20240110 - 파일업로드 용량 제한걸기 클라이언트가 multipart파일 업로드 기능을 할 수 있는 서비스를 구현 중인데, 테스트단계에서 너무 많은 용량을 차지해 사용 중인 프리티어 스토리지에 부담이 될 경우를 생각해 업로드 용량에 제한을 두고 싶어 졌다. properties 파일의 아래의 코드를 추가해 준다. spring.servlet.multipart.max-file-size=50MB spring.servlet.multipart.max-request-size=50MB spring.servlet.multipart.resolve-lazily=true 우선 max-file-size는 파일의 용량을 50MB로 제한을 두고 max-request-size는 한 번의 요청에 50MB가 넘지 않도록 제한을 두는 것이다. 그리고 만약 GlobalExcep.. 더보기 20240109 HTTP 메서드란? 클라이언트와 서버간의 요청,응답 데이터를 주고받는 행위를 말합니다. 종류로는 리소스를 조회하는 GET, 데이터를 생성하는 POST, 리소스를 대체하거나 수정하는 PUT, 일부분만 수정하는 PATCH, 리소스를 제거하는 DELETE, 그 외에 HEAD GET과 유사하지만 ResponseBody를 포함하고있지않습니다. TRACE는 테스트를 위한 메서드입니다. 요청패킷 내용을 확인할 수 있습니다. OPTION 예비요청에 사용됩니다. CORS란? Cross-Origin Resource Sharing 교차 출처 자원 공유를 뜻하며 출처(Origin)가 다른 서버간 리소스 공유에 대한 허용정책을 말합니다. 여기서 출처란 Origin을 말하고 이는 프로토콜,도메인,포트를 합친 부분을 뜻합니다. 보.. 더보기 20240108 rdbms의 정규화 중복을 최소화하여 데이터 구조를 설계함으로써 데이터베이스에서 발생하는 이상현상들을 해결하고, 데이터의 무결성 유지, 관계를 쪼개면서 Join이 많이 발생하여 속도가 느려질 수 있으나, 중복되는 데이터의 최소화로 빨라질 수도 있음. 1차 정규화 : 테이블에는 하나의 값만 존재 2차 정규화 : 부분함수의 종속 제거 3차 정규화 : 이행적 종속 제거 BCNF 정규화 : 모든 결정자가 후보 키인 상태 4차 정규화 이상 : 복잡한 종속성 제거 Primary Key, Foreign Key 테이블 간의 연관관계를 나타내기 위해 PK와 FK를 사용하는데 이를 통해 잘못된 매핑을 방지할 수 있다. Primary Key : 기본키를 뜻하며 이를 통해 테이블의 행을 식별할 수 있어야 하므로 Null일 수.. 더보기 20240108 - 프로그래머스/133502 https://school.programmers.co.kr/learn/courses/30/lessons/133502 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr class Solution { public int solution(int[] ingredient) { int answer = 0; StringBuilder sb = new StringBuilder(); for (int i : ingredient) { sb.append(i); if(sb.length() >=4 && sb.substring(sb.length()-4,sb.length()).equals.. 더보기 20240104 - 최종 프로젝트 설계 어느덧 시간이 지나 최종 프로젝트 단계에 도달해 서비스를 설계해 보았다. 이번 프로젝트에서는 취미를 공유하고 함께 즐길 수 있는 모임을 만들거나 가입 할 수 있는 서비스를 제공하는것을 목표로 기본적인 CRUD기능과 더불어 실시간 채팅기능, 오픈 API를 통한 날씨나 위치정보 제공, 최종적으로 배포까지 해서 사용자들로부터 피드백을 받아 리팩토링까지 하는것을 목표로 하고있다. 와이어 프레임 Figma를 이용해서 필수적인 기능만 담긴 와이어프레임을 작성해 보았다. ERD Diagram ERDCloud를 활용해서 필요한 도메인들을 설계하고 각 도메인간의 연관관계에 대해서도 고려하여 ERD Diagram을 작성했다. API 명세서 팀과 공유하는 노션에 구현할 기능들에 대한 API 명세서를 작성했다. 개발업무에 활.. 더보기 20240103 - 심화프로젝트 KPT 회고 Keep 시간 내에 각자 맡은 기능 구현을 마칠 수 있었다. 코드리뷰를 통해 프로젝트 진행도를 공유할 수 있었다. Figma, erdCloud 등 협업툴을 적절히 사용했다. 프로젝트 설계가 잘 되어있어서 이후 진행이 순조로웠다. Problem 프로젝트 배포를 진행하지 못했다. 코드의 통일성이 부족했다. 테스트코드 작성이 미흡했다. 트러블슈팅 과정 공유가 부족했다. Try AWS등을 통해 프로젝트 배포를 시도해 본다. 코드리뷰에서 더욱 적극적인 피드백을 통해 코드의 통일성을 보완한다. 협업을 위한 깃 로그를 고려해 본다. 복잡한 비즈니스 로직의 테스트 코드 작성을 시도해 본다. 문제가 발생했을 시 적극적으로 팀원들과 상황을 공유한다. Github https://github.com/chicken-beer/T.. 더보기 20240101 - @Transactional 내가 코드를 짜면서 Service단에서 주로 @Transactional을 사용하고 있지만 사실 정확한 동작원리나 사용방법에 대해서 알고 있지 않은 것 같다. 그래서 오늘은 @Transactional에 대해 정리해보려 한다. 우선 트랜잭션이 무엇인지 알아야 한다. 트랜잭션이란 데이터베이스 관리 시스템에서의 상호작용의 단위를 뜻하며 쉽게 말해서 데이터베이스의 상태가 변경될 때의 수행되는 연산들을 말한다. @Transactional를 클래스나 메서드등에 선언해 주면서 해당 범위를 트랜잭션으로 묶어준다. 그러면 우리는 왜 @Transactional을 사용해야 할까? 이는 트랜잭션의 특징(ACID)으로 알아볼 수 있는데 해당 범위를 트랜잭션으로 정해주면서 데이터베이스 관리중에 발생할 수 있는 여러 문제들을 해결해.. 더보기 이전 1 2 3 4 5 ··· 8 다음