[코테] GSHS x SASA 후기ZaMan첫 코테 대회로 2026년 1월 2일 오후 7시부터 10시에 열리는 GSHS x SASA 프로그래밍 경시대회 Open Contest를 참가하게 되었습니다.해당 대회는 1~3인으로 팀을 구성하여 나갈 수 있었기에, 학교 친구 ddungsam과 팀을 맺고 zaman_gosu 깡계를 만들어 참가하였습니다 :) 문제 제출만 하면 solved.ac에서 사용 가능한 프로필 뱃지를 주고, 문제 2개 이상 해결 시 배경 스킨을 준다는 점에 저는 홀려서 최대한 열심히 참여해보았습니다.생각보다 많이 어렵다다른 대회를 보면 브론즈 문제도 많아서 아직 실버인 저도 쉽게 한 문제 이상은 해결할 수 있을 것이라고 생각했습니다.그래서 제일 쉬웠던 문제인 A번을 골라서 풀기 시작했는데, 결국 2시간 30분동안 시달려서 겨우 해결하였..- 2026-01-03 03:41:48
- [회고] 1학년을 보내며ZaMan보호글 입니다.
- 2025-12-19 12:28:19
[Kotlin] Kotlin이란 무엇일까?ZaManKotlin은 Jetbrain에서 개발한 현대적이고 범용적인 언어로, 자바와 완전히 호환되면서 자바보다 더 간결하고 안전한 코드를 작성할 수 있는 것이 특징입니다.탄생 배경Java의 한계Java는 1995년에 개발돼서 오랜 기간동안 쓰이다 보니 한계가 드러났습니다.보일러플레이트 코드단순한 작업도 너무 많은 코드를 써야 합니다.예시) getter/setter, equals, hashCode 등Null 안정성 부족Java의 가장 큰 단점중 하나는 NullPointerException(NPE)로 많은 버그가 null 때문에 발생합니다.컴파일 속도컴파일 속도가 느려서 대규모 프로젝트에서는 개발 생산성이 떨어집니다. 이런 한계들로 인해 Java를 사용하며 제품을 개발한 Jetbrain에서는 직접 더 나은 언어를 ..- 2025-09-02 21:02:58
- [DataBase] 검색은 어떻게 작동할까?ZaMan검색창을 보고 "검색 기능은 어떻게 작동하는걸까?" 라는 의문이 생겼습니다.그래서 검색을 하면 백엔드 서버에서 어떻게 가져오는지에 대해 조사를 해보았습니다.작은 서비스의 경우작은 서비스의 경우에는 데이터가 적어서 성능 문제가 거의 없기 때문에 데이터베이스에서 직접 검색합니다.LIKE 사용SELECT * FROM user WHERE name LIKE '%인간%';대신 이 방식은 앞에 %가 있으면 인덱스를 사용을 못해서 처리 시간이 느려집니다.FULLTEXT 사용SELECT id, name, MATCH(name) AGAINST ('인간' IN NATURAL LANGUAGE MODE) AS scoreFROM userWHERE MATCH(name) AGAINST ('인간')ORDER BY score DES..
- 2025-08-20 19:02:46
- [DataBase] 페이징(Pagination)ZaMan페이징이란?페이징(Pagination)은 대량의 데이터를 여러 페이지로 나누어 필요한 부분만 조회하는 기법입니다.예를 들어 게시판에서 한 페이지에 10개의 글을 보여주는 것처럼, 한 번에 모든 데이터를 가져오지 않고 필요한 범위만 읽어오는 방식입니다.페이징은 사용자 경험과 서버 성능 모두에 큰 영향을 미칩니다.페이징 방식LIMIT/OFFSET 기반 페이징많은 RDBMS(MySQL, PostgreSQL 등)에서 가장 흔하게 쓰는 방식으로 LIMIT와 OFFSET이 있습니다.SELECT * FROM reservationORDER BY created_at DESCLIMIT 10 OFFSET 20;// LIMIT : 한 번에 가져올 데이터 수// OFFSET : 앞에서 N개를 건너뛰고 이후부터 가져옴장점구현이 ..
- 2025-08-11 20:39:35
[BackEnd] FetchType & N+1 문제ZaManFetchTypeFetchtype이란 JPA(Java Persistence API)에서 연관된 엔티티를 어떻게 가져올지(데이터베이스에서 언제 로딩할지) 설정하는 방식입니다.enum 타입이며 아래와 같이 두 가지 종류가 있습니다.LAZY (지연 로딩)연관된 엔티티를 실제로 사용할 때까지 데이터베이스에서 조회를 하지 않아서 성능 최적화에 유리합니다.EAGER (즉시 로딩)연관된 엔티티를 조회 시 JOIN 등으로 즉시 함께 조회합니다.연관 어노테이션@ManyToOne, @OneToOne의 기본값은 FetchType.EAGER(즉시 로딩) 입니다.@OneToMany, ManyToMany의 기본값은 FetchType.LAZY(지연 로딩) 이여서 즉시 로딩을 사용할 때 EAGER 타입으로 변경해주어야 합니다.사용 ..- 2025-08-06 19:28:22
- [Web] CORSZaManCORS란?Cross-Origin Resource Sharing(교차 출처 리소스 공유)의 약자로CORS는 쉽게 말하면 브라우저가 보안상 다른 출처의 리소스를 요청하지 못하게 막는 정책입니다.여기서 출처(origin)는 다음 세 가지를 기준으로 판단됩니다.프로토콜 (HTTP / HTTPS)도메인 (예시: example.com)포트 (예시: :1234, :8080)이 세 가지 중 하나라도 다르면 "다른 출처"로 인식합니다.CORS는 왜 발생할까?예시로 http://localhost:3000에서 프론트엔드를 개발 중일때http://localhost:8080로 열린 Spring Boot 백엔드 서버에 프론트가 데이터를 요청하면 아래와 같은 에러가 뜹니다.Access to fetch at 'http://loca..
- 2025-07-28 17:46:25
- [Spring] Spring filterZaManSpring filter는 웹 애플리케이션에서 HTTP 요청과 응답을 가로채서 처리할 수 있는 컴포넌트입니다.서블릿 기반의 스프링 애플리케이션에서 동작하며, 스프링 자체보다는 Servlet 스펙의 일부입니다.Filter는 DispatcherServlet보다 먼저 실행됩니다.Client → Filter → DispatcherServlet → Controller → DispatcherServlet → Filter → Client즉, 요청이 DispatcherServlet까지 도달하기 전에 필터를 통해 먼저 가공하거나 검사할 수 있고, 응답을 보낼 때도 가공할 수 있습니다.Filter의 대표적인 활용 예로그 출력 : 요청 시간, 요청 URI 등을 콘솔에 출력인코딩 처리: 요청 파라미터 인코딩 강제 설정보안 검..
- 2025-07-23 19:35:48
[Web] Servlet & DispatcherServletZaManServlet이란 클라이언트(브라우저)가 웹 서버에 요청을 보내면, 그 요청을 받아서 처리하고, HTML이나 JSON 같은 응답을 만들어서 보내주는 자바 프로그램입니다. 예를 들어 사용자가 로그인을 하려 할 때, 아이디와 비밀번호를 입력하고 로그인 버튼을 누르면 클라이언트는 서버로 해당 정보를 전송합니다.서버는 이 요청을 받아 아이디와 비밀번호를 검증하고, 그 결과에 따라 다음 페이지로 이동시키거나 오류 메시지를 보여줍니다.이처럼 사용자의 요청을 받아 처리하고 응답을 생성하는 역할을 하는 것이 바로 Servlet입니다.왜 만들어졌을까?과거엔 웹 페이지를 만들 때 HTML만으로는 동적인 웹 페이지를 만들 수 없었고, 사용자의 입력을 처리하거나 데이터베이스와 연결하는 기능이 필요했습니다.이를 위해 자바로 백..- 2025-07-22 09:16:16
- [BackEnd] QueryDSLZaManJPQL이란?JPQL(Java Persistence Query Language)는 테이블을 대상으로 쿼리하는 것이 아닌 엔티티 객체를 대상으로 쿼리합니다.SQL과 비슷한 문법을 가지며 JPQL은 결국 SQL로 변환됩니다. JPA에서 제공하는 CRUD와 같은 메서드 호출만으로 섬세한 쿼리 작성이 어려운 이유로 나오게 되었습니다.JPQL 특징- 테이블이 아닌 객체를 검색하는 객체지향 쿼리- JPA는 JPQL을 분석하여 SQL을 생성한 뒤 DB에서 조회기본 문법- 전체 회원 조회 > SELECT m FROM Member m - 조건 조회 > SELECT m FROM Member m WHERE m.age > 17- 이름만 조회 > SELECT m.name FROM Member mString jpql = "SEL..
- 2025-07-21 18:52:19
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)