| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- 스프링부트
- java테스트
- input
- list
- CSS
- junit5
- 배열
- Array
- junit
- math
- Java
- 자바문법
- vscode
- string
- javascript
- ArrayList
- 정규식
- 인텔리제이
- js
- 단위테스트
- html
- 자바
- SpringBoot
- 자바스크립트
- 문자열
- Eclipse
- HashMap
- 테스트자동화
- Visual Studio Code
- IntelliJ
- Today
- Total
목록2026/04 (34)
어제 오늘 내일
지난 시간에는 화면에 글자를 띄워보는 기초적인 작업을 해보았습니다. 하지만 진짜 쓸모 있는 프로그램을 만들려면 데이터를 기억하고, 계산하고, 조작할 줄 알아야 합니다.오늘은 데이터를 담는 상자인 변수(Variable)와, 그 상자에 들어가는 데이터의 종류인 자력형(Data Type)에 대해 완벽하게 정리해 드리겠습니다.1. 변수(Variable): 데이터를 담는 이름표 붙인 상자컴퓨터에게 "이 숫자 좀 잠깐 기억해 줘!"라고 명령할 때 사용하는 것이 바로 변수입니다. 쉽게 말해, 데이터에 이름표를 붙여서 상자에 보관하는 것과 같습니다.파이썬에서는 수학 기호인 = (등호)를 사용해서 변수에 값을 넣습니다. (프로그래밍에서 =는 '같다'가 아니라 '오른쪽의 값을 왼쪽 상자에 넣어라(대입해라)'라는 뜻입니다...
요리를 하려면 '식재료'와 '도마'가 필요하듯, 파이썬을 하려면 파이썬 인터프리터(명령어를 컴퓨터 언어로 번역해 주는 프로그램)와 코드 에디터(코드를 작성하는 도마)가 필요합니다.시중에는 '아나콘다(Anaconda)'라는 데이터 분석용 통합 패키지도 있지만, 처음 배우기에는 용량이 크고 무거울 수 있습니다. 오늘은 가장 가볍고, 현업 개발자들이 가장 많이 사용하는 "순정 파이썬 + VS Code" 조합으로 세팅해 보겠습니다. 딱 5분이면 충분합니다!1단계: 파이썬(Python) 설치하기먼저 컴퓨터에게 파이썬 문법을 이해할 수 있는 능력을 심어줘야 합니다.python.org 공식 홈페이지에 접속합니다.메인 화면에 있는 "Download Python 3.x.x" 노란색 버튼을 클릭해 설치 파일을 다운로드합니..
안녕하세요! 여러분의 업무 자동화와 칼퇴를 돕는 하이애나입니다."코딩, 전공자만 하는 거 아닌가요?""엑셀 함수도 어려운데 프로그래밍을 어떻게 해요?"이런 걱정은 잠시 접어두셔도 좋습니다. 오늘 소개할 파이썬(Python)은 전 세계에서 "가장 배우기 쉬운 프로그래밍 언어" 1위로 꼽힙니다.구글, 넷플릭스, NASA, 그리고 수많은 데이터 분석가들이 파이썬을 선택한 이유, 그리고 우리가 왜 지금 이것을 배워야 하는지 그 매력을 알아보겠습니다.1. 사람이 읽기 쉬운 언어 (Readability)파이썬의 가장 큰 특징은 "코드 자체가 영어 문장처럼 읽힌다"는 점입니다.복잡한 기호나 괄호를 최대한 배제하고, 들여쓰기(Indentation)를 통해 문단을 구분합니다.백문이 불여일견, 코드를 한번 볼까요?📌 예..
크롬 브라우저에서 캐시를 지우는 목적에 따라 두 가지 방법이 있습니다. 웹페이지의 이미지나 레이아웃이 제대로 새로고침되지 않을 때는 일반 캐시를, hosts 파일을 수정했는데도 접속할 IP가 바뀌지 않을 때는 내부 DNS 캐시를 지워야 합니다.1. 일반 브라우저 캐시 지우기 (단축키 활용)웹사이트의 업데이트된 내용이 보이지 않거나 화면이 깨질 때 가장 먼저 시도하는 표준적인 방법입니다. 크롬 브라우저를 열고 단축키 Ctrl + Shift + Delete를 누릅니다. (Mac은 Cmd + Shift + Delete) 화면에 '인터넷 사용 기록 삭제' 창이 나타납니다. 상단의 기간을 '전체 기간'으로 선택합니다. 아래 항목 중 '캐시된 이미지 및 파일'에 체크합니다. (로그인 상태를 유지하려면 '쿠키..
hosts 파일을 올바르게 수정하고 저장했는데도 웹 브라우저에서 바뀐 IP로 접속되지 않는 경우가 많습니다. 이는 윈도우 운영체제가 이전에 접속했던 기록을 임시로 기억하고 있기 때문입니다.이때 기존의 기억을 강제로 지우고 수정한 hosts 파일을 즉각 반영하게 만드는 DNS 캐시 초기화 방법을 정리해 드립니다.1. 왜 수정한 내용이 바로 적용되지 않을까요?윈도우는 인터넷 접속 속도를 높이기 위해, 한 번 방문했던 웹사이트의 IP 주소를 매번 새로 찾지 않고 컴퓨터 내부에 임시로 저장해 둡니다. 이를 DNS 캐시(Cache)라고 부릅니다.hosts 파일을 방금 수정했더라도, 윈도우가 "이 사이트 주소는 아까 저장해 둔 캐시에 있어!"라고 판단하여 과거의 IP 주소로 먼저 연결을 시도해 버리기 때문에 변경 ..
웹 개발을 하거나 특정 웹사이트의 접속을 제어해야 할 때 반드시 알아야 하는 시스템 파일이 바로 hosts 파일입니다. 이 파일이 무엇인지, 어디에 있는지, 그리고 어떻게 수정하는지 명확하게 정리해 드립니다.1. 파일이란 무엇인가요?우리가 웹 브라우저에 google.com이라는 도메인 주소를 입력하면, 컴퓨터는 이 이름표에 해당하는 실제 집 주소(IP 주소, 예: 142.250.190.46)를 찾아야만 접속할 수 있습니다. 보통 이 변환 작업은 외부의 DNS(Domain Name System) 서버가 담당합니다.하지만 컴퓨터가 외부 DNS 서버에 "이 도메인의 IP가 뭐야?"라고 물어보기 전에, 가장 먼저 뒤져보는 내 컴퓨터 안의 '개인 주소록'이 바로 hosts 파일입니다.이 파일에 특정 도메인과 I..
MVC에서는 쓰레드 하나가 막혀도(Blocking) 다른 쓰레드 199개는 잘 돌아갑니다.하지만 WebFlux는 쓰레드가 고작 CPU 코어 수(예: 4개)만큼밖에 없습니다. 하나가 막히면 서버 성능의 25%가 날아가는 셈이죠.문제는 실수로 JDBC를 쓰거나, Thread.sleep을 써도 컴파일 에러가 안 난다는 것입니다. 배포하고 나서야 서버가 죽는 걸 보게 되죠.이걸 막아주는 수호신, BlockHound를 소개합니다.1. BlockHound: "블로킹 코드가 보이면 에러를 뱉어라!"Reactor 팀이 만든 도구로, 논블로킹 쓰레드(Reactor Thread)에서 블로킹 작업이 감지되면 즉시 예외(BlockingOperationError)를 던져서 테스트를 실패하게 만듭니다.① 의존성 추가depende..
JUnit으로 동기 코드를 테스트할 때는 결과가 바로 나옵니다.하지만 Flux.interval(Duration.ofSeconds(1)) 같은 코드는 1초 뒤에 데이터가 나옵니다.이걸 테스트하려고 Thread.sleep(1000)을 쓰는 순간, 테스트 시간은 늘어지고 코드는 지저분해집니다.Project Reactor는 이런 문제를 해결하기 위해 StepVerifier라는 강력한 테스트 도구를 제공합니다.1. StepVerifier가 뭔가요?리액티브 스트림의 구독자(Subscriber) 역할을 하는 테스트용 객체입니다."첫 번째 데이터는 'A'여야 하고, 두 번째는 'B'여야 하고, 마지막엔 성공적으로 끝나야 해"라는 시나리오를 짜고, 실제로 그렇게 흘러가는지 검증합니다.2. 기본 사용법: 데이터 검증 ()..
WebFlux에서 R2DBC를 쓸 때 가장 불안한 점은 트랜잭션입니다."A 계좌에서 돈을 빼고(update), B 계좌에 돈을 넣어야(update) 하는데, 중간에 에러 나면 롤백이 될까?"결론부터 말씀드리면, @Transactional 어노테이션 하나면 완벽하게 동작합니다.하지만 그 원리는 MVC와 완전히 다릅니다.1. 트랜잭션 매니저 설정 ()스프링 부트가 ConnectionFactory를 보고 알아서 빈을 등록해 주지만, 명시적으로 알고 있어야 합니다.JDBC의 PlatformTransactionManager가 아니라, R2dbcTransactionManager가 필요합니다.@Configuration@EnableTransactionManagement // 트랜잭션 관리 활성화public class ..
WebFlux 서버를 잘 만들어놓고 spring-boot-starter-data-jpa 의존성을 추가하는 순간, 그 서버의 성능은 나락으로 떨어집니다.왜냐고요? WebFlux는 적은 수의 쓰레드(이벤트 루프)로 돌아가는데, JPA가 쿼리를 날리는 동안 그 소중한 쓰레드를 붙잡고 놔주지 않기(Blocking) 때문입니다.이벤트 루프가 멈추면 서버 전체가 멈춥니다.그래서 우리는 R2DBC라는 새로운 친구를 사귀어야 합니다.1. R2DBC가 뭔가요?Reactive Relational Database Connectivity의 약자입니다.MySQL, PostgreSQL, H2 같은 관계형 DB를 논블로킹(Non-Blocking) 방식으로 사용할 수 있게 해주는 표준 API입니다. JDBC: 결과가 나올 때까지 ..