본문 바로가기
728x90
반응형

개발 관련 강의 정리79

[10분 테코톡] 꼬재의 클로저 정리 클로저 현상의 동작방식에 대해 실행 컨텍스트의 LexicalEnvironment, LexicalEnvironmentRecord, OuterEnvironmentReference를 통해 알아보자. LexicalEnvironmentRecord를 Record로 OuterEnvironmentReference를 Outer로 축약해서 위와 같은 형태로 실행 컨텍스트를 표현할 예정이다. 클로저 MDN에서는 클로저를 함수와 함수가 선언된 어휘적 환경의 조합이다 라고 정의되어 있다. 이해하기 이해하기 어려울 수 있으니 이해하기 편한 코어 자바스크립트에서 해석한 클로저의 정의를 보면, 클로저를 어떤 함수 a에서 선언한 변수 a를 참조 하는 내부함수 B를 외부로 전달할 경우 A의 실행 컨텍스트가 종료된 이후에도 변수 a가 사.. 2023. 6. 12.
[10분 테코톡] 이스트의 로깅 정리 로깅의 역사 System.out.println() System.err.println() 로깅 프레임워크들이 등장하기 전에는 println()을 사용했다. 그런데 println()을 사용하게 되면 어떤 환경에서든 똑같이 동작하게 된다는 것이 문제였다. 예시를 들어보자면 뱅킹 앱의 서버를 개발하고 운영하고 있는 개발자가 있다고 하자. 개발 환경에서는 계좌번호와 비밀번호 등등의 정보들을 로깅할 필요가 있을 것이다. 하지만 운영 환경에서도 민감한 정보들을 로깅해도 될까? 안될 것이다. 이런 문제들을 해결하기 위해 많은 개발팀들이 자체적인 로깅 프레임워크를 만들었고 이런 로깅 프레임워크를 배포한 팀이 있었다. 바로 log4j 이다. log4j는 println()의 어떤 환경에서는 똑같이 동작하는 성질을 로그레벨을.. 2023. 6. 11.
[10분 테코톡] 오리의 Intellij Debugging 정리 디버깅이란? 프로그래밍 과정에서 발생한 오류를 파악하고 또 파악한 오류를 수정하는 일련의 과정 인텔리제이에서는 디버깅을 이용자들이 손쉽게 수행할 수 있도록 또 효과적으로 할 수 있도록 별도의 디버깅 기능을 제공해 준다. 인텔리제에서 디버깅을 수행할 때 가장 시작점은 브레이킹 포인트를 설정하는 것이다. 말 그대로 멈출 지점으로 선택하는 것인데, 예를 들어 위와같이 move라는 메소드의 특정한 라인에 브레이킹 포인트를 설정 했다고 생각해 보자. 그렇다면 디버그시 이 라인이 호출 된다면 그 직전에 디버그는 멈추게 된다. 말 그대로 브레이크 하는 것이다. 만약 디버그를 수행하는데 브레이킹 포인트가 설정된 부분을 만나지 않는다면 멈추지 않고 쭉 진행될 뿐이다. 이 테스트 코드는 move라는 메소드를 호출하고 있다.. 2023. 6. 10.
[10분 테코톡] 🐯 심바의 RESTful 정리 REST란? 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처 - MDN - 네트워크 리소스를 정의하고 처리하는 방법을 설명하는 일련의 원칙을 기반으로 하는 아키텍처 스타일 -Service Architecture- REST에 대한 원칙은 2000년동에 로이 필딩(Roy Fielding)의 박사학위 논문에서 최초로 소개되었다. 로이 필딩은 HTTP의 주요 저자 중 한 사람으로 웹(HTTP)가 제대로 사용되지 못하는 점을 안타까워하며 HTTP의 장점을 최대한 활용할 수 있는 아키텍처로써 REST를 발표하였다. 그래서 REST 원칙은 HTTP를 잘 활용하기 위한 원칙이라고 할 수 있다. 이 REST에 대한 원칙을 준수했을 때, 그 시스템이 RESTful 하다 라고 한다. REST는 REpresentation.. 2023. 6. 9.
[10분 테코톡] 메리의 Gradle 정리 Gradle? 유연한 빌드 자동화 도구 빌드란? 우리가 어떠한 소스코드를 실행해 달라고 하면 컴퓨터는 이해하지 못한다. 소스 코드를 컴파일하고 의존성을 추가해서 실행 가능한 파일 jar나 war로 패키징을 해주어야지 실행할 수 있다. 그래서 소스코드를 실행 가능한 파일로 변환 해주어야 하는데 이 과정을 빌드라고 한다. 빌드도구는 코드를 실행 가능한 파일로 만들어 주는 과정 즉, 빌드를 하고 추가적으로 라이브러리도 관리해주고 테스팅도 해주고 배포도 해준다. 그리고 이러한 과정을 자동화하여 수행하는 역할을 한다. 빌드 도구를 사용하지 않을 때의 문제점 1) 반복적인 작업을 수작업으로 진행해야 하므로 비효율적이다. 2) 라이브러리를 직접 다운로드 및 버전 업데이트해야 한다. 3) 프로젝트의 의존성을 파악하기 .. 2023. 6. 8.
[10분 테코톡] 그레이, 호이의 Modern Java 정리 모던 자바란? - 이전 자바와는 완전히 다르다는 뜻으로 자바 8 이후에 자바를 모던 자바라고 말함 - 자바 8 이후에 새로운 기능을 활용하는 개발 패러다임 모던 자바의 주요 변화 1) 람다와 스트림 도입 - 람다와 스트림이 도입되어 함수형 프로그래밍 지원 2) 멀티코어 환경 대응 - 스트림를 API를 이용해 병렬 처리 3) 높은 안정성 - Optional 도입 람다식 예제로 먼저 알아보자 요구사항1 : 백엔드 크루만 찾아줘 위와같이 백엔드 크루가 일치하는지 확인해서 결과를 담아서 반환 요구사항2 : 프론트엔드 크루도 찾아줘 반복을 줄이기 위해 파라미터로 코스를 추가해서 코스에 해당하는 값을 받아서 반환 요구사항3 : 백엔드 크루면서 남자인 크루만 찾아줘 파라미터를 추가해서 반환 이런 식으로 한다면 요구사.. 2023. 6. 7.
[10분 테코톡] 칙촉의 TCP/UDP 정리 TCP/IP 모델 Application Layer HTTP, 브라우저 Transport Layer TCP/UDP Internet Layer IP Network Access Layer 인터넷 TCP 동작 과정 소켓 생성 → 3 Way Handshake → 데이터 송신, 수신 → 4 Way Handshake TCP 헤더 컨트롤 비트 SYN ACK FIN 송신측과 수신측에서 시퀀스 번호를 공유함을 나타냄 수신 데이터의 시퀀스 번호가 유효함 연결 끊기를 나타냄 시퀀스 번호 현재 데이터의 첫 번째 위치가 전체 송신 데이터에 몇 번째 인지를 나타내는 일련번호 ACK 번호 수신측에 몇 바이트 까지 받았는지 송신측으로 보내는 일련번호 소켓 생성 소켓을 생성의 경우 브라우저에서 소켓을 호출을 한다. 이때 도메인과 사용할.. 2023. 6. 5.
[10분 테코톡] 썬의 캐싱 정리 위와같이 프로세서의 성능이 매년 60%씩 증가하는 반면에 메모리 지연 시간 향상은 9%밖에 일어나지 않는다. 즉, 각 성능 간의 격차가 매년 50%씩 증가하여 아무리 프로세서가 성능이 좋아져도 메모리 처리 속도가 느리기 때문에 전체적인 프로그램 속도가 느리게 된다. 따라서 캐시라는 것이 등장하였다. 캐시(Cache)란? 사전적 정의 - 물건을 일시적으로 저장하거나 보관하기 위해 사용하는 곳 컴퓨터 과학에서의 정의 - 캐시는 데이터나 값을 미리 복사해 놓는 임시 장소 - 미리 복사하여 데이터에 더 빠른 속도로 접근 가능 메모리 구조 아래로 내려갈수록 용량은 커지지만 접근하는 데 드는 비용은 더 많아진다고 보면 되고 레지스터나 캐시같은 경우는 순식간에 접근이 가능한데 메인 메모리를 넘어서서 외부 장치까지 접.. 2023. 6. 4.
728x90
반응형