[Tistory] 이펙티브 코틀린 1장 아이템2 – 변수의 스코프를 최소화하라

아이템2의 주제: 변수의 스코프를 최소화 하는것이 좋다 스코프란?어떤 요소의 스코프라고 한다면 그 요소를 볼 수 있는 컴퓨터 프로그램 영역이다.변수의 스코프라고 한다면 그 변수를 인식하고 사용할 수 있는 범위를 의미한다.코틀린에서는 기본적으로 {} 중괄호로 스코프를 만든다.상태를 정의할때는 변수와 프로퍼티의 스코프를 최소화 하는 것이 좋다.프로퍼티 보단 지역변수를 사용하는것이 좋다.최대한 좁은 스코프를 갖도록 변수를 사용한다.스코프 범위 좁히기의 예시// 가장 안좋은 방법var user: Userfor(i in users.indices) { user= users[i] print(“user at $i is $user”)}// 조금 더 좋은 방법for(i in users.indices) { val us..

[Tistory] 55, 56일차 TIL

모의면접 시뮬레이션 Q&A Q2. UserDefaults로 저장해 놓은 데이터를 UICollectionView에 보여주는 방법을 설명해 주세요.A : UserDefaults 다른 팀원이 사용하셨던 거 쓱 보고 지나갔어서 ㅜ 막상 이렇게 질문이 들어오니.. 정확하게 잘 모르고 있는 것 같았다.. 강의도 들었었는데..🥹 그냥 간단한 데이터 저장하고, 불러오는 데 사용하는 그런 거.. 대충 이렇게 알고 있어서.. 역시 복습이 중요하다 느꼈다.. 그런 의미에서 한 번 더 공부하고 답변 적어야겠다고 생각했다! UserDefaults: 앱 실행 시 지속적으로 키-값 쌍을 저장하는 사용자의 기본 데이터베이스에 대한 인터페이스1. UserDefaults를 통해서 plist에 데이터 저장2. UserDefaults는 ..

[Tistory] [Network] 방화벽

네트워크 중간에서 해당 장비를 통과하는 트래픽을 정책 조건에 맞춰 허용 or 차단하는 장비 패킷이 외부로 나갈 때 세션 정보를 저장하고 패킷이 들어오거나 나갈 때 저장했던 세션 정보를 먼저 참조한다. 들어오는 패킷이 외부에서 처음 시작된 것인지 내부 사용자가 외부로 요청한 응답인지 가려낸다. 세션테이블을 이용해 패킷의 인과 관계를 파악해 정책을 간단히 유지할 수 있다. 만약, 세션테이블이 없다면 상태 정보를 담아두는 공간이 없어 세션 방향성을 파악하지 못함 > 정책을 복잡학게 관리해야 함 인터넷과 같이 불특정 다수와 통신해야 할 때는 정책의 복잡도가 증가하므로 방화벽은 메모리에 남은 상태와 세션 정보를 이용해 패킷을 상세히 로깅하고 관찰 4계층 장비를 통과 시 유의 (세션 관리) 세션 장비는 2,3계층 ..

[Tistory] 우분투에 Chrome Remote Desktop 설치하기

우분투에 크롬 데스크탑을 설치하면, 원격 접속하는 PC에서 검은 스크린에 ‘select a session to launch within your chrome remote desktop environment’라는 문구만이 뜬다. 구글링을 통해 문제를 해결했는데, 일련의 과정을 잊지 않도록 정리 해둔다. 며칠동안 헤맸기 때문에 우분투에서 크롬 데스크탑을 삭제한 후, 처음 설치하는 것부터 전부 적어둔다. 1. 우선 상단의 링크를 따라 크롬 데스크탑을 설치해준다. https://remotedesktop.google.com/access/ 2. 터미널에 해당 명령어를 넣어 폴더를 생성해준다. mkdir ~/.config/chrome-remote-desktop 3. 크롬 창을 모두 닫은 뒤 다시 열어 데스크탑에 접속..

[Tistory] Reasons of Korea Discount

The term “Korea Discount” refers to the phenomenon where South Korean companies are valued less favorably compared to foreign companies with similar profitability or asset value.   The graph above is data analyzed by the Korea Capital Market Institute, illustrating how undervalued the Korean market is compared to other countries or classifications such as developed or emerging markets. It shows ..

[Tistory] [랜더링] CSR & SSR & SSG

페이지의 랜더링 방식 CSR , SSR, SSG에 대해 정리해보려고 합니다   ◼ CSR Client-side Rendering의 약자입니다. 단어를 보면 Client단어가 눈에 띄는데요.단어에 명시되어 있는 것처럼 서버가 아닌 클라이언트에서 랜더링 하는 방식을 이야기합니다.그렇다고 모든 것을 클라이언트 측에서 해주는 것은 아닙니다.다만 서버 보다 더 많은 비중으로 클라이언트에서 랜더링 작업을 해주는 것이죠. 이미지에서 좀 더 설명을 붙이자면, 그러나 한 번 웹 페이지에 접속하여 데이터를 받아오면, 해당 데이터는 브라우저의 캐시에 저장됩니다. 따라서 사용자가 이미 방문했던 페이지에 다시 접속할 때는 새로운 데이터를 다운로드할 필요 없이, 캐시에 저장된 데이터를 바로 불러와서 표시할 수 있습니다. 이는 페..

[Tistory] 20240525_React와 Spring Boot 연결(SpringSecurity Login)

우선 알아야 할 것은 기존에 사용하던 SpringSecurity와의 차이이다.1. 팀프로젝트- 모놀리틱- 프론트엔드는 jsp, 백엔드는 java를 사용하며 port 번호가 동일 2. MSA(1차)- MSA- 프론트엔드는 jsp, 백엔드는 java–> SpringSecurity를 사용하는 모듈 자체가 동일 3. 프론트엔드와 백엔드의 분리- 프론트엔드는 React- 백엔드는 자바–> 포트번호가 다름–> SpringSecurity를 사용할 때 프론트엔드에서 인증요청이 백엔드로 넘어간 다음, 인증이 확인되면 프론트엔드로 다시 데이터를 브라우저에 뿌려줌 여기서 큰 차이가 발생하는 것은 1, 2번 vs 3번이다.기존의 SpringSecurity 사용은 동일 모듈에서 사용했기 때문에 쿠키가 저장되는 것은 같은 ..

[Tistory] [Spring Boot] 멀티 모듈 구조(Multi Module Architecture) 적용기

글을 시작하기 전에 최근 멀티 모듈 구조를 도입했다. 아니 정확히 말하면 도입하는 중이다.. 1차적으로 분리와 리팩토링은 완료했으나, 구조를 100%로 이해한 건 아니라서 조금씩 공부하면서 개선점을 찾고 추가 적용해가고 있는 단계이다. 그래서 이 글을 쓸까말까도 좀 고민했다 🤔 잘못된 정보를 전달할 수도 있을까봐ㅠㅠ 하지만 실전과 기록이 최고의 학습법이라고 생각하는 사람으로서, 이런 생소한 개념은 기록으로 좀 남겨야 진짜 내 것이 되겠다!라는 생각도 들었다. 이제까지 설계한 과정을 기록하고, 이후로도 추가 적용할 때마다 해당 블로그 글을 조금씩 수정해나가려 한다. 하지만 또 잘못된 정보를 공유할 순 없기 때문에,, 참고한 레퍼런스들을 틈틈히 남겨둘테니, 한 분이라도 이 글을 참고하며 구조 설계를 도입하려..

[Tistory] [Docker] Docker란 무엇일까?

기존 진행했던 프로젝트 및 여러 해외 자료들을 보며 docker가 흔하게 사용되는 것은 다들 알고 있을 것이며, 나 또한 원리는 정확히 파악하지 못한 채 사용해 왔다. 매번, Docker는 정확히 무엇이고 왜 이렇게 이슈가 되는 것일까?라는 생각이 있었지만 이번 포스팅을 통해 Docker가 어떻게 등장하게 되었는지? Docker란 무엇인지 알아보고자 한다. 1. Docker의 등장 배경 Docker의 등장 배경에는 여러 가지 이유가 있지만, 가장 큰 이유는 클라우드 환경의 발전과 환경 관리(버전 관리)의 문제라고 생각한다. 기존 시스템에서 여러 애플리케이션을 구동하고 배포하기 위해서는 하나로 통일된 형태의 환경설정이 필요했으며 이는 여러 애플리케이션을 구동할 때 환경 충돌과 같은 시스템 동작에 치명적인 ..

[Tistory] Poetry 분리환경 구축기 A-Z (docker-poetry-jupyter 조합)

이 글이 도움 되셨다면 광고 클릭 부탁드립니다 최근 pandas2.0/autogluon 등 새로운 라이브러리들이 써보고 싶어서 pip로 무지성 업그레이드를 해버렸고, 배치로 돌아가던 ML모델이 돌아가지 않는 이슈를 맞이했습니다;; 영영 옛 버전의 라이브러리를 사용할 수 없기에 분리 환경을 구축해보려고 합니다. 단순하게 분리되는 환경은 가상환경을 만들어 사용할 수 있겠지만, 라이브러리 간의 의존성 관리부터 패키징까지 편하게 도와주는 Poetry를 이번 기회에 셋팅해보려고 합니다. https://python-poetry.org/docs/Introduction | Documentation | Poetry – Python dependency management and packaging made easyIf yo..