| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- linux
- JavaScript
- html
- 안드로이드
- js
- GraphQL
- 안드로이드 개발
- 구글
- C++
- build.gradle
- 개발
- 하버드
- gradle
- Android 4.1
- 탐지기법
- kotlin
- 자바
- 보안
- 리눅스
- hcj
- springboot
- ActiveX
- java
- Android
- css
- 노개북
- 코틀린
- 안철수
- Eclipse
- Today
- Total
목록전체 글 (253)
꿈소년의 개발 이야기
백엔드 개발을 처음 시작하는 상황이라 어느 정도 가이드라인이 필요했다.트위터에서 알게 되었고, 교보문고에서 훝어봤더니 지금 내 상황에 딱 들어맞아 보여 구매한 후 스터디를 시작했다.단계별로 스프링부트에 대해서 프로젝트 구성과 결과 확인, 테스트까지 알려주며, 그런 부분이 어디서부터 어떻게 할지 감을 잡지 못하는 독자에게 매우 좋은 장점이 된다. 나도 그래서 도움을 많이 받아 이해가 쉬웠다.다만, 이 책은 말 그대로 '온보딩 가이드' 이다. 그래서 깊은 내용은 따로 찾아봐야 한다. 프로젝트 예제 코드가 있고, 그걸 그대로 봐도 무방하다.다만, 실습 차원에서 그대로 따라할 경우, 책에서 제시한 버전이 예전 버전이라서 안 되는 경우가 발생한다. 그래서 Gradle 이나 의존성 개념을 모른다면 예제가 동작되지 ..
DAY 10🔖 오늘 읽은 범위 : 🌱공부 내용: Chapter 8 도커를 이용한 애플리케이션 패키징 및 배포👢쪽수: p.347- p.384😃 **기억하고 싶은 내용 (복붙해도 상관없어!)**목표: 도커 기반의 Minilog-GraphQL 애플리케이션 패키징 및 배포기능 요구사항애플리케이션 빌드 시 Docker 이미지 자동 생성.명령어를 사용하여 AWS ECS에 애플리케이션 배포구현 요구사항데이터베이스: AWS RDS의 MySQL 사용.Docker 패키징 시 AWS RDS 환경, 데이터베이스 연결 정보 및 계정 설정 사용.Docker의 기본 개념과 설치What is Docker?What is Docker?도커(Docker): 컨테이너 기술을 기반으로 애플리케이션의 패키징, 배포, 실행을 관리할 수 ..
DAY 9🔖 오늘 읽은 범위 : 🌱공부 내용: Chapter 07 GraphQL 기반 마이크로블로그 API 서버 개발👢쪽수: p.291 - p.344😃 **기억하고 싶은 내용 (복붙해도 상관없어!)**목표: GraphQL 기반 Minilog API 재구현기능 요구사항GraphQL Query 기능GraphQL Mutation 기능구현 요구사항엔드포인트는 /graphql 을 사용한다.해당 엔드포인트를 통한 GraphQL 연산은 인증을 거친 요청에 한해 허용한다.GraphQL 이해하기GraphQL: API를 위한 쿼리 언어GraphQL | A query language for your APIGraphQLAPI 쿼리 언어클라이언트가 원하는 데이터 구조를 직접 정의할 수 있어 유연하고 효율적임.중요한 포인..
DAY 8🔖 오늘 읽은 범위 : 🌱공부 내용: Chapter 06 Minilog에 인증 기능 추가하기👢쪽수: p.289 - p.290😃 **기억하고 싶은 내용 (복붙해도 상관없어!)**스프링 시큐리티는 소셜 로그인을 위해 OAuth2 클라이언트 기능을 제공한다. OAuth2 클라이언트를 활용해 사용자가 구글 계정으로 로그인하고, 성공하면 스프링 시큐리티가 구글에서 받은 사용자 정보를 백엔드 애플리케이션에서 활용 할 수 있게 해준다. OAuth2 :: Spring SecurityOAuth2 와 JWT 와의 연결구글 로그인에 성공한 사용자가 시스템에 처음 접속한다.백엔드 앱에서 구글에서 받아온 사용자 정보(예를 들면 이메일)을 바탕으로 JWT 를 새로 발급해 프론트엔드에 전달한다.이 JWT 토큰을 ..
DAY 7🔖 오늘 읽은 범위 : 🌱공부 내용: Chapter 06 Minilog에 인증 기능 추가하기👢쪽수: p.219-p.290😃 **기억하고 싶은 내용 (복붙해도 상관없어!)**목표: Minilog API 에 안전한 인증 시스템 추가기능 요구사항JWT(JSON Web Token)의 생성 및 검증 기능 추가.JWT에 사용자의 User Name, ID, 발급 시간, 만료 시간 포함.AUTHOR와 ADMIN 두 가지 권한 부여 기능 제공.AUTHOR: 게시글 작성 및 조회 권한.ADMIN: 게시글 관리 및 사용자 관리(수정, 삭제) 권한.각 컨트롤러의 엔드포인트에 JWT 인증 기능 추가. 즉, 인가되지 않은 사용자는 엔드포인트에 접근하지 못하도록 차단.구현 요구사항로그인 및 Swagger 페이지를..
DAY 6🔖 오늘 읽은 범위 :🌱공부 내용: Chapter 05 복잡한 실제 비즈니스 요구사항에 대해 JPA 코드 구조를 어떻게 잡아야 하나?👢쪽수: p.217-p.218😃 **기억하고 싶은 내용 (복붙해도 상관없어!)**Q. 실제 비즈니스 요구사항이 복잡해질 때 JPA 코드 구조를 어떻게 잡아야 하나요?책임 분리(Separation of Concerns)JPA 를 이용한 백엔드 개발에서 가장 중요한 설계 원칙 중 하나 ⇒ ‘책임의 분리’각 계층(엔티티, 리포지토리, 서비스, 컨트롤러, DTO, 매퍼 등)이 맡아야 할 역할을 명확히 나누면 코드가 복잡해져도 수정 위치와 문제 원인 파악이 쉬워진다.변화에 강하고 유지보수가 쉬우며, 실무에서 여러 개발자가 동시에 협업할 때도 혼란을 줄여준다.1. 비즈..
DAY 5🔖 오늘 읽은 범위 :🌱공부 내용: Chapter 05 고급 JPA 기반의 마이크로블로그 REST API 서버 개발👢쪽수: p.151-p.218😃 **기억하고 싶은 내용 (복붙해도 상관없어!)**목표: REST API 제공하는 마이크로블로그 스프링부트 앱 구현.기능 요구 사항사용자 계정 CRUD 수행.게시글 데이터 CRUD 수행.다른 사용자에 대한 팔로우 정보 CRUD 수행.감사 기능을 통한 데이터 변경 이력 추적 수행.인증 기능 미제공.구현 요구 사항엔드포인트: 모든 API 엔드포인트는 ‘ /api/todos/v1’ 으로 시작한다.테스트: CRUD 기능 유닛 테스트.문서화 및 테스트: 스웨거3 사용한 API 문서화 및 테스트.프로젝트 초기화프로젝트 스캐폴드 생성 및 다운로드스프링 이니셜..
DAY 4🔖 오늘 읽은 범위 :🌱공부 내용: JPA 기반의 To-Do 리스트 REST API 서버 개발👢쪽수: p.103-p.150😃 **기억하고 싶은 내용 (복붙해도 상관없어!)**목표: 데이터 영속성 지원 기능 추가.기능 요구사항: JPA, MySQL 데이터베이스를 이용하여 CRUD 기능 구현.구현 요구사항엔드포인트: “/api/todos/v2”테스트: CRUD 기능 유닛 테스트 작성.문서화 및 테스트: Swagger 3을 사용해 스키마와 API에 대한 문서화 수행 및 테스트 가능하게 하기.JPA 이해하기자바 객체와 RDB(관계형 데이터베이스) 간의 데이터를 효율적으로 매핑하고 관리하기 위한 표준 ORM 명세.객체 지향 언어 자바에서 클래스와 디비 테이블 간의 매핑을 쉽게 처리할 수 있도록 돕..
DAY 3🔖 오늘 읽은 범위 : 🌱공부 내용: Chapter 03. 인메모리 기반의 To-Do 리스트 REST API 서버 만들기👢쪽수: p.58- p.103😃 **기억하고 싶은 내용 (복붙해도 상관없어!)**프로젝트 스캐폴드 생성 및 다운로드옵션값설명dependencieswebREST API 서버 개발에 필요한 의존성 추가.org.springframework.boot 추가.이 의존성은 서블릿 컨테이너인 톰캣을 내장하고, 스프링 MVC 기반 앱, REST API 서버 개발에 필요한 클래스 라이브러리 제공함.javaVersion21프로젝트에서 사용할 자바 버전 설정.typegradle-project빌드 도구로 Gradle 설정.bootVersion3.3.1 → 3.5.0스프링 부트 버전 설정.→ 2..
DAY 2🔖 오늘 읽은 범위 : 🌱공부 내용: Chapter 02 스프링 부트란 무엇인가요?👢쪽수: p.46- p.57😃 **기억하고 싶은 내용 (복붙해도 상관없어!)**스프링 부트 구조내장 웹서버스프링 부트 스타터자동 구성 Auto Configuration스프링 부트 액츄에이터 Actuator내장 웹서버서블릿 엔진 포함. 자바 서블릿 실행. HTTP 요청 처리.Tomcat 이 기본 설정. Jetty, Undertow 선택적 사용 가능.스프링 부트 스타터특정 기능 구현에 필요한 여러 라이브러리를 미리 구성된 패키지로 제공하는 도구.Maven pom.xml 이나 Gradle build.gradle 파일에 추가하면, 모든 의존성을 자동으로 다운로드하여 프로젝트에 통합 함.spring-boot-star..
DAY 1🔖 오늘 읽은 범위 :🌱공부 내용: Chapter 01 온보딩 가이드의 목적과 활용법👢쪽수: p.26- p.45😃 **기억하고 싶은 내용 (복붙해도 상관없어!)**알고 있으면 좋은 사전 지식기본적인 자바 문법HTTP, REST API, GraphQL 의 이해HTTP 프로토콜의 기본적인 동작 원리REST API 설계 원칙GraphQL 에 대한 기본 지식Gradle 사용법데이터베이스와 SQL 에 대한 지식SQL(DDL 과 DML)데이터베이스 설계RDBMS 기반의 애플리케이션 개발개발 환경Windows 11WSL2(Ubuntu 24.04)OpenJava 21GradleIntellij IDEA Community개발 환경 온보딩Install WSL2명령 프롬프트 실행.명령어 실행: wsl --li..
스터디 그룹에 대한 정보를 얻은 게 아마도 1월이였던 것 같다.X 에서 알게 되서 디스코드에 들어와서, 책 확인한 후 구매한 다음에 인증 받아서 스터디 참가 신청한 게 엊그제 같은데...이렇게 오늘 마무리까지 하게 됐다. 나는 풀스택 개발을 해야 하는 상황이라 준비가 좀 필요했다.15년 경력의 앱 개발자였지만 시대는 바뀌고 나도 변화해야 한다.한번도 생각해본 적도 없고, 들여다 볼 생각도 안한데다가 대학 졸업 이후로 본 적도 없는 HTML, CSS, JS 를 다시 하려고 해도이미 기억이 없는 나에게는 그냥 하는 건 시간 낭비가 크다고 판단했다.원래 나는 기초 위에 쌓아 나가는 형태를 좋아하는지라, 그렇게 하지 않으면 내 궁금증 때문에 계속 찾아볼 것이고...그러면 그 시간이 너무 오래 걸릴 테니, 차라리..
DAY 30🔖 오늘 읽은 범위 : 📢2/13(금) 마지막 진도표 알림▶️공부 내용: Do it! 실전 프로젝트 - 넷플릭스 사이트 따라 만들기▶️쪽수: 679쪽[QR코드]😃 **기억하고 싶은 내용 (복붙해도 상관없어!)**디자인 기획실제 서비스를 바탕으로 디자인 기획하기구조 해석 → 구성 계획으로 진행.개발 환경 만들기헤더 영역 만들기배너 영역, 멤버십 영역 만들기선택 가이드 영역 만들기FAQ 영역 만들기푸터 영역 만들기영역마다 사용할 id 들을 미리 생각해 두기. class 보다는 id로 앵커 메뉴에 사용하므로 크게 묶는 영역에는 id 를 지정하는 것이 좋음.구현 실습 진행https://github.com/dreamboy1339/Bitflix🤔 **오늘의 파트에 대한 소감 (매우 주관적주의)**..
DAY 29🔖 오늘 읽은 범위 : 📢2/12(목) 진도표 알림▶️공부 내용: 19 문서 객체 모델(DOM) 다루기(3)▶️쪽수: 670~678쪽😃 **기억하고 싶은 내용 (복붙해도 상관없어!)**class 속성 추가 • 삭제하기class 선택자의 다양한 활용.한 요소에 여러가지 클래스 스타일 적용할 수 있음.스타일을 추가하거나 삭제하거나.토글 방식도 할 수 있음.classList 프로퍼티웹 요소에 사용한 클래스 속성들을 보여줌. document.querySelector('h1').classList // DOMTokenList ['drawBorder', value: 'drawBorder']목록 항목들에서 확인하기 document.querySelectorAll("ul > li")[2].classL..
DAY 28🔖 오늘 읽은 범위 : 📢2/11(수) 진도표 알림▶️공부 내용: 19 문서 객체 모델(DOM) 다루기(2)▶️쪽수: 644~669쪽😃 **기억하고 싶은 내용 (복붙해도 상관없어!)**DOM 에 이벤트 처리기를 연결하면 HTML 태그와 스크립트 코드를 분리할 수 있음.복잡한 프로그램을 관리하기 편해짐.DOM 요소에 함수 연결하기간단한 이벤트 처리 함수 연결하기 // 이미지 클릭 시 실행 함수 작성하기. let cat = document.querySelector('#cat'); cat.onclick = () => alert('이미지 클릭!!'); //------------------------------------------ // 이미지 클릭 시 실행 함수 이름 지정하기. let..
DAY 27🔖 오늘 읽은 범위 : 📢2/10(화) 진도표 알림▶️공부 내용: 19 문서 객체 모델(DOM) 다루기(1)▶️쪽수: 632~643쪽😃 **기억하고 싶은 내용 (복붙해도 상관없어!)**문서 객체 모델DOM : document object model자바스크립를 사용하는 이유 : 조건이나 동작에 맞게 웹 문서 전체 또는 일부분이 동적으로 반응하도록 만들기 위함.웹 문서에 접근하고 제어할 수 있도록 객체를 사용해 웹 문서를 체계적으로 정리하는 방법.웹 문서를 이루는 텍스트나 이미지, 표 등의 모든 요소도 객체로 정의함.DOM 트리DOM 으로 어떻게 표현되는가?문서 안의 요소들의 부모-자식 관계를 반영.각 요소에서 사용한 내용과 속성도 자식으로 나타냄.이러한 트리 구조를 ‘DOM 트리’ 라고 한..
DAY 26🔖 오늘 읽은 범위 :📢2/9(월) 진도표 알림▶️공부 내용: 18 자바스크립트와 객체▶️쪽수: 589~630쪽😃 **기억하고 싶은 내용 (복붙해도 상관없어!)**자바스크립트 객체객체 : 프로그램이 인식할 수 있는 모든 대상에 대한 개념.사실 세계와 관념 간의 맵핑.내장 객체(Built-in object) : 자바스크립트에서 미리 객체로 정의되어 있는 객체.문서 객체 모델(DOM) : 웹 문서 자체에 대한 객체. 포함된 이미지를 비롯한 요소들도 각각 별도의 객체.웹 브라우저 객체 : 웹 브라우저에서 사용하는 정보에 대한 객체.사용자 정의 객체 : 사용자가 직접 만들어 정의한 객체. let book = { title: "Javascript", pages: 500, }객..
DAY 25🔖 오늘 읽은 범위 : ☃️2/6(금) 진도표 알림❄️공부 내용: 17 함수와 이벤트(2)❄️쪽수: 570-586쪽😃 **기억하고 싶은 내용 (복붙해도 상관없어!)**재사용할 수 있는 함수매개변수, 인수, return매개변수 : Parameter인수 : Argumentreturn : 값을 반환한다.매개변수 기본값 지정하기 function multiple(a, b = 5, c = 10) { return a * b + c; }익명 함수이름 없는 함수. // 익명 함수 function(a, b) { return a + b; }함수 자체가 Expression(식) 이다.그래서 변수에 할당할 수 있다.다른 함수의 매개변수로 사용할 수 있다.함수 간에 실행 순서를 제어할 때..
DAY 24🔖 오늘 읽은 범위 : ☃️2/5(목) 진도표 알림❄️공부 내용: 17 함수와 이벤트(1)❄️ 쪽수: 556~569쪽😃 **기억하고 싶은 내용 (복붙해도 상관없어!)**함수alert() 함수 ⇒ 내장 함수 : 자바스크립트에서 미리 만들어 놓은 함수.필요한 명령들의 묶음.함수 선언 또는 함수 정의. function addNumber(a, b) { let sum = a + b; alert(sum); }함수 이름을 사용하는 것 ⇒ 함수를 호출한다 / 함수를 실행한다💡함수 선언과 실행 순서웹 브라우저에서 자바스크립트 코드 가운데 함수 선언 부분을 가장 먼저 해석함.어느 곳에 함수를 선언해 놓아도 위치에 상관없이 함수를 실행할 수 있음.선언 위치는 영향을 주지 않음.보통 앞이..
DAY 23🔖 오늘 읽은 범위 : ☃️2/4(수) 진도표 알림❄️공부 내용: 16 자바스크립트 기본 문법❄️ 쪽수: 508~554쪽😃 **기억하고 싶은 내용 (복붙해도 상관없어!)**기본 문법변수자료를 담아두는 공간.용도재사용성가독성변수 선언특정 값이나 식, 문을 할당할 수 있음.let width;let height;width = 200;height = 50;let area = width * height;console.log(area);상수 선언한번 값을 할당하면 변경이 불가함. const PI = 3.14; let radius = prompt('반지름 입력해라~'); let area = PI * radius * radius; console.log(area);변수 ..