[Tistory] 소프트웨어에 대해 알아보자

01-2 정보의 표현과 컴퓨터 하드웨어 공개  1.한글은 2진수, 8진수, 10진수, 16진수에서 어떻게 표현하나요? (Unicode)에 대하여 조사 유니코드란?- 유니코드는 한글, 영어, 특수문자, 이모티콘등을 표현하기 위한 통일된 문자 집합- 유니코드는 현대 문자 표현에 있어서 매우 중요한 위치를 가짐- 유니코드를 인코딩하는 방식으로 utf-8, utf-16등이 있음- utf는 유니코드 인코딩 방법을 의미하며, 뒤에 숫자에 따라 인코딩 결과의 크기가 1-4바이트가 됨 한글을 2진수로 표현하는 것은 일반적으로 Unicode 또는 UTF-8 인코딩을 사용하여 이루어짐Unicode에서는 한글 문자들은 16진수로 표현되며, UTF-8은 이를 이진수로 변환하여 저장함ex) 가 (U+AC00) = 1010110..

[Tistory] 팀프로젝트 16일차

아티스트 개인 페이지를 만들라고 하는데 무슨 의미인지 잘 모르겠다백엔드라고 했던 것 같은데개인페이지에 해당하는 모든 기능들을 만들라는 의미일까? 남이 볼 수 있는 아티스트 정보가 담긴 페이지를 말하는 건가?그렇다면 아티스트 단건 조회와 뭐가 다른 거지?이건 나중에 물어봐야 할 것 같다구독된 것과 관련된 것들을 볼 수 있는 마이페이지- 구독한 아티스트그룹의 피드 모아보기-> 어느 패키지에 만들어야 하지?1. subscripbion2. feed3. artistGroup4. user-> 1번으로 결정 : subscriptionRepository 를 사용할 것이므로 – 구독 연관 공지 리스트 보기  유저 마이페이지관리자 마이페이지엔터테인먼트 마이페이지아티스트 마이페이지각각은 공통적인 부분도 있겠지만 추가적 기능..

[Tistory] [Proxy Pattern] 프록시 패턴

Proxy  영어로 Proxy는 ‘대리’, ‘대리인’ 이라는 뜻을 가지고 있다. 뜻 그대로 프록시 패턴이란, 원본 객체에 직접적으로 접근 하는 것이 아니라 어떤 ‘대리자’를 통해서 간접적으로 원본 객체를 사용하는 것을 말한다.  그림을 통해 자세히 알아보자 인터페이스를 구현한 ‘Origin Object’와 ‘Proxy Object’가 있다. ‘Proxy Object’는 ‘Origin Object’를 컴포지션하여 멤버 변수로 사용하고있다. 이때 Client에서 요청이 온다면 다음처럼 작동 할 것이다.Client에서 Request를 보냄Controller를 거친 뒤, ‘Origin Object’가 아닌 ‘Proxy Object’를 호출’Proxy Object’는 method A를 구현하고, 기타 작업을 수행..

[Tistory] 윈도우에서 WSL2 + VSCode 사용 환경 설정

https://velog.io/@hjuny17/%EC%9C%88%EB%8F%84%EC%9A%B0-10%EC%97%90%EC%84%9C-%EB%A6%AC%EB%88%85%EC%8A%A4-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95 Windows 10에서 Visual Studio Code로 Linux 프로그래밍 하기Windows 10에서 Visual Studio Code로 Linux 프로그래밍 하기 위한 솔루션 및 세부 절차 가이드velog.io Ubuntu 설치 중 “wslregisterdistribution failed with error: 0x80370102 please enable the virt..

[Tistory] [React] useEffect 내부에 fetch를 사용하면 생기는 문제점 & 해결책 (feat. race-condition)

useEffect에 대해 공부하던 중 공식문서에서 useEffect 내에 fetch를 사용하면 race condition이 발생할 수 있다는 것을 알게됐다. 공식문서에서는 race condition을 해결하기 위해 boolean flag를 사용했는데, 처음 보는 방법이라 정리해두려 한다. 1. Race condition Race condition(경쟁 상태)이란 여러 개의 프로세스가 공유 자원에 동시 접근 할 때 실행 순서에 따라 결과값이 달라질 수 있는 현상이다. Race condition은 컴퓨터의 입장에서 큰 문제이다. 이유는 똑같은 코드를 실행할 경우 실행 결과가 항상 같아야 하는데, Race condition이 발생하면 결과가 달라질 수 있기 때문이다. 이러한 문제를 방지하기 위해서 공유 메모리..

[Tistory] UML Diagram과 E-R Diagram

💡 UML 이란Unified Modeling LanguageUML은 객체 지향 소프트웨어 개발 과정에서 산출물을 명세화, 시각화, 문서화할 때 사용되는 모델링 기술과 방법론을 통합해서 만든 표준화된 범용 모델링 언어입니다. 💡 UML 의 특징UML 방법론을 통합한 것으로, 표준화된 모델링 기법을 제공합니다. 1. 가시화 언어개념 모델 작성 시 오류가 적고 의사소통이 용이2. 구축 언어 다양한 프로그래밍 언어로 실행 시스템 예측 가능UML을 소스 코드로 변환하여 구축 가능, 역 공학 가능3. 명세화 언어정확한 모델 제시, 완전한 모델 작성 가능4. 문서화 언어시스템에 대한 평가 및 의사소통 문서 💡 UML 구성 요소✅ 사물 (Things)1. 추상적인 개념으로 주제를 ..

[Tistory] [TIL] SwiftUI에서 Bottom Sheet 구현기

기획이번 프로젝트에서 앱의 시작부분을 아래 사진처럼 기획 중인데요. 그래서 이번 기회에 이 Bottom Sheet를 구현한 내용에 대해 작성해 보려고 합니다. Bottom Sheet 만들기하단 시트 구현struct BottomSheetView: View where Content: View { @Binding var isPresented: Bool private var height: CGFloat private var content: Content @GestureState private var translation: CGFloat = .zero init(_ isPresented: Binding, height: CGFloat, content: () -> Con..

[Tistory] [Network] TCP 연결 및 해제 과정 (3 way-handshake & 4 way-handshake)

0. TCPTCP는 전송 계층(Transport Layer)에서 사용되는 프로토콜이다.장치들 사이에 논리적인 접속을 성립(Establish)하기 위하여 연결을 설정높은 신뢰성을 제공하고 연결 지향성 서비스를 제공한다.정보 전달에 있어 안정적으로, 순서대로, 에러 없이 데이터를 교환을 목적으로 한 프로토콜위의 안정적이고 논리적인 특징을 만족하기 위해 TCP의 경우 handshake를 사용한다. 1. TCP의 3 way-handshake 1-1. TCP의 3 way-handshake 역할3 way-handshake는 TCP 통신을 이용해 데이터 전송 전 정확한 전송을 보장하기 위해 사전에 세션을 수립하는 과정클라이언트와 서버 모두 데이터를 전송하고 받을 준비가 되었다는 것을 보장한다.실제로 데이터 전달이 시..

[Tistory] CSRF(Cross-Site Request Forgery)

CSRF 란 사이트 간 요청 위조(Cross-site request forgery, CSRF)는 웹사이트 취약점 공격의 하나로, 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 특정 웹사이트에 요청하게 하는 공격을 의미한다.  CSRF 공격 시나리오  1. 사용자는 정상적으로 웹 애플리케이션에 로그인  – 로그인 과정에서 서버는 사용자의 세션 정보를 쿠키에 저장  – 이 쿠키는 세션 ID를 포함하고 있으며, 사용자가 로그인 상태를 유지하도록 함 2. 공격자는 사용자를 피싱 이메일이나 메시지를 통해 악성 링크를 클릭하도록 유도  – 피싱 이메일은 긴급한 보안 문제나 계정 확인을 빌미로 사용자를 속임  3. 패스워드 변경 요청   – 사용자가 악성 링크를 클릭하면 브라우저는..

[Tistory] [Spring] 프로젝트 협업 툴 디스코드 연동해서 에러 메세지 받아보기 (Feat. feign, logback.xml)

이번에 팝콘메이트 하면서 통신할 때 에러 코드나 짤막한 에러 원인을 받아 볼 수 있게 하였는데, 그 정보들만 가지고 원인을 해결하지 못할 때가 있다 보니 리팩토링 할 겸 팀 공용 디스코드에 로그 전체를 볼 수 있는 시스템을 만들어 보려고 한다 먼저 팀이 사용하는 디스코드에서 웹후크를 만들려면 채널 설정 -> 연동 들어가서 웹후크 만들기를 누르면 된다! 간단한 작업이다 본격적으로 코드 구현에 대해 알아보자 (1) FeignClient 이용하는 방식 먼저 DiscordClient 클래스에 Controller 클래스에 메서드 짜주는 것처럼 인터셉터를 위한 메서드를 써준다 @FeignClient( name = “discord-client”, url = “웹후크 URL”, configuration = Discor..