IT 179

[코딩 인터뷰] 자료 구조

코딩 인터뷰 완전 분석 자료 구조 해시테이블 - 해시테이블은 효율적인 탐색을 위해 Key를 Value에 대응시킴 해시테이블 구현 방법 1. 키와 해시 코드 계산 > 키의 개수: 무한대, 해시 코드: int, long > 서로 다른 키가 같은 해시 코드를 가리킬 수 있음 2. hash(key) % array_length 방식을 이용해 배열의 인덱스를 구함 3. 각 배열의 인덱스는 키와 값으로 이루어진 연결리스트 존재 해당 방법 사용 시, 주어진 키로 해시 코드를 계산하여 인덱스 계산 > 충돌이 자주 발생할 경우, 최악의 수행 시간은 O(N)이 됨 > 일반적으로는 O(1) > 이진 트리로 구현 시, 탐색 시간: O(logN) ArrayList - 특정 언어에서는 크기를 자동으로 조절 가능 (동적) - O(1..

IT/책 2022.01.16

[Clean Architecture] 1달1권, 두번째 책 후기

두번째 책을 마치고 두번째 책은 클린 아키텍처, 클린 코드에 뒤이어서 '클린'이란 무엇일까라는 의문점을 풀기 위해 읽었다. 다 읽은 지는 약 이주가 되었지만 뒤늦게 후기를 남긴다. 결론부터 말하자면 클린 코드에 비해 클린 아키텍처는 더 포괄적이었다. 클린 코드는 포괄적이었지만 예시와 함께 말하고자 하는 바를 명확히 알 수 있었는데, 클린 아키텍처는 조금 어려웠다. 내가 아키텍처적인 지식이 부족한 것일까? 다시 한 번 읽어봐야 하는 것은 분명하다. 아키텍처 지식이 부족한 상태에서 읽은 책은 난해하고 어려웠을 뿐이다. 그래서 별점을 말하자만 2/5 이다. 클린 아키텍처는 설계 원칙에 대해 말한다. 클린 아키텍처의 기본, 설계원칙. 회사를 다니면서 설계원칙에 대해 깊게 생각할 수 없다. 설계 단계는 대부분 위..

IT/책 2022.01.07

[Clean Architecture] 6부, 세부사항

Clean Architecture 6부, 세부사항 30장, 데이터베이스는 세부사항이다 아키텍처 관점에서 데이터베이스는 엔티티가 아님 > 데이터베이스는 소프트웨어일 뿐 데이터베이스는 결국 기술일 뿐, 최하위 유틸리티 함수를 제외하고는 데이터베이스에 대해서 몰라야 함 > 데이터베이스가 테이블 형태라는 것을 알게 되면, 데이터 구조에 결합하게 됨 > 디스크가 어떤 형식인지조차 인식하면 안됨 > 성능은 완전히 캡슐화하여 저수준의 데이터 메커니즘 단에서 다뤄야 함 31장, 웹은 세부사항이다 웹은 GUI이다. GUI는 계속 바뀐다. > 그러나 웹과 장치독립성은 어쩌면 비현실 적임 UI는 애플리케이션 사이의 추상화가 가능 - 업무 로직은 다수의 유스케이스로 구성 - 각 유스케이스는 사용 자를대신해서 일부함수를 수행 ..

IT/책 2021.12.26

[Clean Architecture] 5부, 아키텍처 (2)

클린 아키텍처 22장, 클린 아키텍처 육각형 아키텍처, DCI, BCE 등 다양한 아키텍처들은 모두 관심사 분리라는 목표를 가지고 있음 관심사 분리 - 프레임워크 독립성: 아키텍처는 프레임워크 존재 여부에 의존하지 않음 - 테스트 용이성: 업무 규칙은 UI, 데이터베이스, 웹서버 등의 외부 요인이 없어도 테스트 가능 - UI 독립성: 시스템의 나머지 부분을 변경하지 않아도 UI 쉽게 변경 - 데이터베이스 독립성: 오라클을 몽고DB, 빅테이블 등으로 변경 가능, 업무 규칙은 데이터베이스에 결합되지 않음 - 모든 외부 에이전시에 대한 독립성: 실제 업무 규칙은 외부 세계와의 인터페이스에 대해 전혀 알지 못함 의존성 규칙 각각의 동심원은 소프트웨어에서 서로 다른 영역을 표현함 > 안으로 들어갈 수록 고수준의 ..

IT/책 2021.12.19

[Error] git의 다양한 에러들

Gitbash 1. 로그인 오류 remote: HTTP Basic: Access denied - git bash에서 처음 설정할 때, 계정의 email(username) / 비밀번호를 잘못 설정 한 것 해결방법 https://goodteacher.tistory.com/88 git config --system --unset credential.helper 위 명령어를 입력하면 email(username)과 비밀번호를 입력할 수 있는 창이 나타난다. 그러나, 지속적으로 로그인 정보를 묻기 때문에 한 가지 설정을 더 입력해야 한다. git config credential.helper store 명령어 입력 후, 다시 한 번 로그인을 하면 더 이상 묻지 않는다. 2. 충돌 오류 your local changes..

[Clean Architecture] 5부, 아키텍처(1)

Clean Architecture 5부, 아키텍처 15장, 아키텍처란 - 아키텍처는 코드와 동떨어져서는 안됨 - 시스템을 구축했던 사람들이 만들어낸 시스템의 형태 > 소프트웨어 시스템이 쉽게 개발, 배포, 운영, 유지보수가 되어야 함 > 선택지를 가능한 많이, 오래 남겨야 한다. - 시스템 아키텍처는 시스템의 동작 여부와 관련이 없음 why? 형편없는 아키텍처들도 잘 동작하기 때문 따라서, 아키텍처는 시스템의 수명과 관련된 비용을 최소화하고 프로그래머의 생산성을 최대화 해야한다. 개발 시스템 아키텍처는 개발팀이 시스템을 쉽게 개발할 수 있도록 뒷받침해야한다. 배포 배포 비용이 높을수록 시스템의 유용성은 떨어짐 > 시스템을 단 한번에 쉽게 배포할 수 있도록 만들어야 함 마이크로 서비스 아키텍처 - 컴포넌트..

IT/책 2021.12.12

[JavaScript] 자바스크립트 비동기적 프로그래밍

개발 언어에 익숙하지만 JavaScript의 동기/비동기가 헷갈린 사람들에게 JavaScript는 한 번에 한 가지 일만 한다. 자바스크립트는 단일 스레드에서 동작한다. 따라서, 한 번에 한 가지 일만 할 수 있다. 그러나 자바스크립트는 비동기적 프로그래밍을 할 수 있다. 아래 세 가지에서 크게 사용한다. - 네트워크 요청 - 파일 읽기/쓰기 - 의도적인 시간 지연 콜백(callback) ➡️ 프라미스(promise) ➡️ async/await 순으로 발전하면서 자바스크립트에서 비동기를 쉽게 사용할 수 있다. 콜백과 콜백 지옥 콜백 test.function1(v1, function(){ //function1이 끝난 후, 익명함수가 시작된다. }); 나중에 동작할 함수, 보통 실행할 함수 뒤에 익명 함수를..

IT/CS 2021.12.07

[Clean Architecture] 4부, 컴포넌트 원칙

12장, 컴포넌트 컴포넌트란? 배포 단위 ex) 자바의 jar - 컴포넌트롤 서로 링크하여 실행 가능한 단일 파일로 생성 할 수 있음 ex) .exe, .dll 역사 ... 일부 생략 ... - 링커: 프로그래머가 느린 부분을 처리해주는 링크 과정 처리, 링크가 완료된 재배치 코드를 만듦 -> 로드 속도 향상 = 한 번 만들어둔 실행 파일을 언제나 빠르게 로드 가능 1980년대: 소스 모듈 .c -> .o 컴파일된 후, 링커로 전달되어 로드될 수 있는 실행파일로 만들어 짐 -> 컴파일은 빨랐지만, 링커에서 더 많은 시간이 걸리게 됨 1980년대 후반: 무어의 법칙의 등장으로 디스크가 작아지고 빨라짐 1990년대 후반: 프로그램 링크 속도가 줄어들고, .jar 파일 등 등장 현재: .jar를 기본 애플리케..

IT/책 2021.12.04

[Clean Architecture] 3부, 설계 원칙

SOLID - 함수와 데이터 구조를 클래스로 배치하고 결합하는 방법 종류 SRP: 단일 책임 원칙 - 소프트웨어 모듈은 변경 이유가 하나여야 함 OCP: 개방-폐쇄 원칙 - 기존 코드를 수정하기 보다 새로운 코드를 추가하는 방법으로 행위를 변경해야 함 LSP: 리스코프 치환 원칙 - 상호 대체 가능한 구성요소를 이용해 소프트웨어 시스템을 만들 수 있으려면, 구성요소는 반드시 서로 치환 가능해야 함 ISP: 인터페이스 분리 원칙 - 소프트웨어 설계자는 사용하지 않은 것에 의존하지 않아야 함 DIP: 의존성 역전 원칙 - 고수준 정책을 구현하는 코드는 저수준 세부사항을 구현하는 코드에 의존해서는 안됨 > 세부사항이 정책에 의존 장점 - 변경에 유연 - 이해하기 쉬움 - 컴포넌트 기반 7장, SRP: 단일 책..

IT/책 2021.12.04

[Error] 웹스퀘어 도중 만난 에러들

그지같은 웹스케어 사용 중 만난 에러들 정리 1. SelectBox에서 onviewchange event가 실행되지 않는 경우 Selectbox의 속성 중, ref에 값이 매핑되어 있는 지 확인 2. 그리드 row를 더블클릭하여 index row를 deleteRow 할 때, index+1 row가 삭제되는 경우 더블클릭 시 editor 모드로 들어가는 것과 직접 설정한 더블클릭 함수가 충돌이 나면서 생기는 오류 그리드를 readOnly로 변경하여 사용 이런 말도 안되는 오류가 있는데 왜 웹스퀘어를 사용하는 것인가..? 3. DataCollection 복사 datamap/datalist는 위와 같은 형식으로 만들어진다. id="이름" 으로 검색어 잡고 안에 있는 KeyInfo를 복사해서 붙여넣기하여 사용 ..