분류 전체보기
디미터의 법칙(Law of Demeter)
안녕하세요 코딩하는헬린이 입니다. 백수인데 옴옴옴청머엄엄엄엄청ㅇ청청청나게 바뻐요 ~ㅎ 왜 바쁘지? 아무튼, 오늘은 디미터의 법칙의 대해서 알아보겠습니다. 1. 디미터의 법칙 객체 지향 프로그래머가 따라하기 쉬운 형식으로 캡슐화 및 모듈화의 아이디어를 인코딩하는 간단한 프로그래밍 언어 독립 규칙(사내에서 Law of Demeter™로 알려짐)을 소개합니다. Demeter의 법칙을 따르면서 동시에 코드 중복, 메서드 인수 수 및 클래스당 메서드 수를 최소화하면 다음과 같은 관련 이점을 얻을 수 있습니다. 더 쉬운 소프트웨어 유지 관리, 메서드 간의 결합 감소, 더 나은 정보 숨기기, 더 좁은 인터페이스 , 재사용하기 쉬운 방법 및 구조적 유도를 사용하여 더 쉬운 정확성 증명. 우리는 법칙(강하고 약한)에 대..
임인 2022 마무리, 계묘 2023 시작
안녕하세요 코딩하는헬린이 입니다. 오늘은 기술로 포스팅을 하는게 아닌 나만의 계획을 그냥 끄적끄적 해보고싶어서 작성합니다. 기술 블로그이기에 안보실분은 뒤로가기 해주시면 됩니다 :) 임인, 2022년을 마무리 지으면서 나는 무엇을 했을까? 누군가는 열심히 노력해서 이직을 하거나 또한, 투자나 사업을 통하여 경제적 자유에 가까워진 이들도 있을 것이다. 하지만 나는 다니던 회사나 열심히 다니며 운동이라도 열심히 했다. 그러던 와중에 다니던 스타트업 이었던 회사가 급여가 밀리더니 폐업을 하게 되었으며, 혼자 해봤던 사업도 잘 풀리지 않았다. 그리고 퇴직금도 아직 못 받고 있다. 어떠한가? 참 남들이 보기에 불행하게 볼 수 있다. 그렇지만 아니다. 그렇다면 무엇을 얻었을까? 회사가 폐업하게 되면서 실업급여가 나..
ATDD (Acceptance Test Driven Development) - 인수 테스트
안녕하세요 코딩하는헬린이입니다. 이번엔 ATDD 에 관하여 작성을 해볼려고 합니다. 근데 왜 TDD (테스트주도개발) 이 아닌 ATDD 에 관하여 포스팅 하냐면 이번에 ATDD 방법론 으로 개발을 한번 진행해봤기에 복습차 작성합니당. ATDD (Acceptance Test Driven Development) 란 ? 직역하면 인수 테스트 주도 개발로, ATDD ( 인수 테스트 주도 개발 )은 비즈니스 고객, 개발자 및 테스터 간의 커뮤니케이션을 기반으로 하는 개발 방법론입니다. 쉽게 팀원이 모든 요구사항을 체크하고 사전에 이해한 바탕으로 개발을 진행하는 개발론입니다. 아니 그럼 요구사항을 알고 개발을 진행해야지 ? 아니면 어떻게 진행을해? 라고 생각하실수 있습니다. 근데 아래의 내용을 보시면 다른게 보이실..
Spring Webflux - Reactive Streams 이 뭐길래 ?
안녕하세요 코딩하는헬린이 입니다. 오늘은 Spring webflux에 대한 포스팅이 아니라 Reactive Streams 에 대하여 포스팅할려고 합니다. 갑자기 왜 webflux 도 아닌 reactive streams 인가 ? webflux는 non-blocking과 reactive streams 을 지원합니다. 고로 webflux 기반인 reactive streams 을 알아야한다. 라는 생각이 들어서 포스팅합니다. Reactive Streams 이란 ? reactive-streams.org http://www.reactive-streams.org/ Reactive Streams Reactive Streams is an initiative to provide a standard for asynchron..
Transaction Isolation Level
안녕하세요 코딩하는헬린이입니다. 면접을 진행하면서 isolation Level에 대하여 따로 고민하거나 생각해두질 않아 포스팅합니다. 일단 트랜젝션의 성질부터 알아보는게 좋을듯합니다. 트랜잭션의 성질 (ACID) 원자성(Atomicity)은 트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는 것을 보장하는 능력이다. 예를 들어, 자금 이체는 성공할 수도 실패할 수도 있지만 보내는 쪽에서 돈을 빼 오는 작업만 성공하고 받는 쪽에 돈을 넣는 작업을 실패해서는 안된다. 원자성은 이와 같이 중간 단계까지 실행되고 실패하는 일이 없도록 하는 것이다. 일관성(Consistency)은 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 유지하는 것을 의미한다. 무결성 제약이 모든 ..
RESTfull API 설계를 위한 규칙
안녕하세요 코딩하는헬린이 입니다. 이번에 누군가가 Restfull 뭔가요? 라고 질문을 받았는데 정확하게 말을 해줄수 없었습니다. 저도 API를 설계하고 개발하는 입장으로 요즘 안일하게 규칙을 생각하였던거 같아 다시 원초적으로 돌아가 익히자는 의미에서 작성하게됐습니다. REST 란 REST는 Representational State Transfer라는 용어의 약자로, 자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미합니다. 월드 와이드 웹과 같은 분산 시스템을 위한 소프트웨어 아키텍처의 한 형식이며, Roy T. Fielding 이 2000년에 REST란 논문으로 발표했습니다. 사진으로 표현한다면 아래와 같습니다. REST 구성 자원(Resource): URI ..
[BlockChain] 작업증명(PoW) vs 지분증명(PoS)
안녕하세요 코딩하는헬린이 입니다. 블록체인 네트워크 별 마이닝 방식을 찾아보다가 pos / pow 에 관하여 대충 듣기만 하였지 이해하면서 본건 처음이라 남겨 놓고 싶어서 작성합니다. 블록체인의 경우 채굴 (마이닝) 방식이 대표적이게 PoW / PoS 가 존재하고있으며, PoW 방식은 비트코인이 있으며 최근에 이더리움이 머지에 성공하여 PoW -> PoS 로 변경되었습니다. PoW : 비트코인 PoS : 이더리움 또한, 누구나 노드에 참여할수 있어야 하기에 하이퍼레저와 다른 퍼블릭 블록체인으로 운영됩니다. PoW(작업증명) 이란 ? Proof Of Work의 약자로, 쉽게 접근하면 노드를 계속 접근하여 일을 하여 일한만큼 보상을 가져갈수 있는 구조입니다. 그래서 비트코인을 얻기위해 그래픽 카드를 가지고 ..
[BlockChain] IPFS (파일 분산 시스템)
안녕하세요 코딩하는헬린이 입니다. 오늘은 IPFS에 대하여 설명좀 해볼려고 합니다. 기본적으로 NFT 발급시 메타데이터, 이미지를 ipfs 이용하여 업로드하고 해당 IPFS 주소로 발행하곤 하는데요. 왜 IPFS 를 사용할까? 라는 생각이 들어 찾아보게 되었습니다. 1) IPFS 란 ? 모든 노드를 연결하는 분산된 P2P 시스템 이며 2014년 Juan Benet이 논문을 발표하며 세상에 들어냈다고 하며, HTTP 처럼 Web 프로토콜입니다. 대표적으로 해당 기술을 사용하는 코인 : 파일코인, 스토리지 등등 2) IPFS 왜 쓸까? - HTTP 프로토콜은 불안정하다 : 서버가 중간에 끊겨 버리면 해당 서버가 백업이 없으면 모든게 날아간다. 하지만 IPFS 는 중앙화된 서버에 의존하지 않기 때문에 안전하다..
[BlockChain] BIP-32 / BIP-39 / BIP-44 는 무엇인가 ?
안녕하세요 코딩하는헬린이입니다. 블록체인에 대해 개발하다가 궁금한게 있어서 찾아보다가 좋은글이 있기에 공유합니다. 간단히 말해서 "BIP39"는 무엇입니까? BIP39는 암호화폐 지갑 이 니모닉 문장을 구성하는 일련의 단어(또는 "니모닉 코드")를 생성하는 방법과 지갑이 암호화 키를 생성하는 데 사용되는 바이너리 "시드"로 변환하는 방법을 제시하는 설계 구현입니다. 그런 다음 암호 화폐 거래를 실행하는 데 사용됩니다. 여기서 니모닉코드란 월렛을 사용해보셨다면 쉽게 이해되실텐데 월렛을 복구하기위한 12개의 키워드로 나열되어있는 구문이라고 생각하면 편합니다. BIP32 및 BIP44 BIP32(" 계층적 결정론적 지갑 ")는 계층적 결정론적 지갑( HD 지갑 )을 위한 프레임워크를 제시하여 사람들이 공유할 ..
[Spring] apple client_secret (JWT) 생성
안녕하세요 코딩하는헬린이 입니다 3대 500을 위하여 ~ ~ 이번에 애플에서 회원 탈퇴시 토큰을 강제로 revoke 시켜야 앱 심사가 통과한다해서 뭐 기능을 만들었습니다. 어려운 기능은 아니지만 나중에 제가 또 복붙해서 쓸수있기에 남기는중이에요 자판 치는건 귀찮~ 근손실~ revoke 또는 login 시킬려면 clientSecret 이 필요 apple api 호출할때 필수값입니다. 아래는 애플 clientSecret(JWT) 만드는 방식입니다. 여러 방법이 많겠지만 저는 간단하게~ public String createClientSecret() throws IOException, NoSuchAlgorithmException, InvalidKeySpecException { Date now = new Date..