Tech Stack17 [CSS] border-radius: ๊ผญ์ง์ ๋ณ๊ฒฝ border-radius ์์ฑ์ ์์ ํ ๋๋ฆฌ ๊ฒฝ๊ณ์ ๊ผญ์ง์ ์ ๋ฅ๊ธ๊ฒ ๋ง๋ ๋ค. .thumb{ padding:8px; background:#f8fafc; border-radius: 10px 100px / 120px; box-shadow: 0 10px 28px rgba(99,102,241,.14), inset 0 0 0 1px rgba(15,23,42,.05); } .thumb img{ border-radius: 10px 100px / 120px; } ์ฐธ๊ณ : https://developer.mozilla.org/ko/docs/Web/CSS/Reference/Properties/border-radius 2026. 1. 12. [DB] [๋์์ฑ์ ์ด] ๋๊ด์ ๋ฝ๊ณผ ๋น๊ด์ ๋ฝ ๊ฒ์๊ธ(Post), ๋๊ธ(Comment) ์ข์์ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ์ ์์ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์ ๊ทผํด์ ์ฌ์ฉ์๊ฐ ์ข์์๋ฅผ ๋์์ ๋๋ฅด๋ ๊ฒฝ์ฐ ์ถฉ๋์ด ๋ฐ์ํ๊ฒ ๋๋ค.์ถฉ๋์ด ๋ฐ์ ์ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น ๋ฐฉ๋ฒ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฝ(Lock)์ ์ฌ์ฉํ์ฌ ์ถฉ๋์ ๋ฐฉ์งํ๋ ๋ฐฉ๋ฒ๊ณผ Redis๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด ์๋๋ฐ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฝ(Lock)์ด ๋ฌด์์ธ์ง ๋จผ์ ์์ ๋ณด๋ ค๊ณ ํ๋ค. ์ด๋ฌํ ๋์์ฑ ๋ฌธ์ ๋ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ๊ณผ ๋ฌด๊ฒฐ์ฑ์ ์ํํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋์์ ๋ฐ์ดํฐ์ ์ ๊ทผํ๋ ค๋ ๋ค์ํ ์์ฒญ๋ค์ ์ ์ ์ดํ๋ ๊ฒ์ ํ์์ ์ธ ์์ ์ ๋๋ค. ๋์์ฑ ์ ์ด๋ฅผ ์ํ ๋ ๊ฐ์ง ํต์ฌ์ ์ธ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. ๋น๊ด์ ๋ฝ(pessimistic lock)๋น๊ด์ ๋ฝ์ ๊ฐ๋จํ๊ฒ ๋งํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ธฐ ์ ์ ํด๋น ๋ฐ์ดํฐ์ ๋ํ ์ ๊ทผ์ ๋ฏธ๋ฆฌ.. 2025. 9. 16. [JPA] [MySQL] ON DELETE CASCADE์ ์ํํธ ์ญ์ (Soft Delete) 1. ๋ฌธ์ ์ํฉ๊ฒ์๊ธ(Post)์ ์ญ์ ํ ๋, ๊ทธ ์์ ์๋ ๋๊ธ(Comment)๋ ํจ๊ป ์ญ์ ๋๋๋ก ๊ตฌํํ๊ณ ์ถ์๋ค.๊ฒ์์ ํ๋ค๊ฐ @OnDelete ์ด๋ ธํ ์ด์ ์ ์๊ฒ ๋์๊ณ , ์ด๊ฒ์ ์ฌ์ฉํ๋ฉด ๋ถ๋ชจ(Post)๋ฅผ ์ญ์ ํ ๋ ์์(Comment)๋ ๊ฐ์ด ์ญ์ ๋๋ค๊ณ ํ๋ค. ๊ทธ๋์ ๋ค์๊ณผ ๊ฐ์ด ์ ์ฉํ์ง๋ง ๋ฌธ์ ๋ ๊ทธ๋๋ก ์๋ค.constraint FKh4c7lvsc298whoyd4w9ta25cr foreign key (post_id) references posts (id) ์ด ์ธ๋ํค์๋ ON DELETE CASCADE ์ต์ ์ด ์์๊ธฐ ๋๋ฌธ์, ๋ถ๋ชจ(Post)๋ฅผ ์ญ์ ํ๋ ค๊ณ ํ๋ฉด ์์(Comment)์ด ๋จ์์ ์๋์ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.Cannot delete or update a parent row: a fo.. 2025. 9. 10. [Java] optional์ orElse์ orElseGet ์ฐจ์ด - orElse๋ Null์ด๋ ๋ง๋ ํญ์ ์ฌ์ฉ- orElseGet์ null์ผ ๋๋ง ์ฌ์ฉ public interface MemberRepository extends JpaRepository { Optional findByKakaoId(String kakaoId);} 2025. 9. 4. [Spring] [์นด์นด์ค ๋ก๊ทธ์ธ] RestTemplate vs WebClient Spring์์ ์ธ๋ถ API์ ํต์ ํ ๋๋ RestTemplate ๋๋ WebClient๋ฅผ ์ฃผ๋ก ์ฌ์ฉํ๋ค.์นด์นด์ค ๋ก๊ทธ์ธ์ ๊ตฌํํ๋ฉด์ ์ฐธ๊ณ ํ ๋ธ๋ก๊ทธ๋ RestTemplate์ ์ฌ์ฉํ์ง๋ง, ๊ธฐ์กด์ WebClient๋ฅผ ์ฌ์ฉํด ์๊ณ ์ฐจ์ด๊ฐ ๊ถ๊ธํด ์ ๋ฆฌํด ๋ดค๋ค. RestTemplate vs WebClient ์ฐจ์ด๊ตฌ๋ถRestTemplateWebClient๋ฐฉ์๋๊ธฐ(๋ธ๋กํน)– ํธ์ถ ์ค๋ ๋๊ฐ ์๋ต๊น์ง ๋๊ธฐ๋น๋๊ธฐ/๋ ผ๋ธ๋กํน– ๋ณด๋ด๋๊ณ ์๋ต ์ค๋ฉด ์ฒ๋ฆฌ(Mono/Flux)์ ์ก/ํ์ฑHttpMessageConverter ๋ฑ๋ก์์ฒญ ์์ ์ contentType/ํค๋ ๋ช ์, BodyInserters ๋ฑ์ผ๋ก ๋ช ํํ์ฅ์ฑํ์์์/์ฐ๊ฒฐ ํ ์๋ ์ค์ Reactor Netty๋ก ๋คํธ์ํฌ ์ต์ ์ ์ด ์ฌ์ ์นด์นด์ค OAuth์ ์ ์ฉํ ๋ ํ์ธํ ์ฌํญ-.. 2025. 9. 3. [Spring] ์ค์ฒฉ ํด๋์ค์ DTO ์ค๊ณ KakaoDTO.OAuthToken oAuthToken = kakaoUtil.requestToken(accessCode); KakaoDTO.OAuthToken- KakaoDTO ํด๋์ค ์์ ์๋ ๋ด๋ถ ํด๋์ค(Static Inner Class) ๋๋ ์ค์ฒฉ ํด๋์ค OAuthToken์ ์๋ฏธํ๋ค.- KakaoDTO ๋ผ๋ DTO ๋ฌถ์ ์์์ "์นด์นด์ค์์ ๋ฐ๊ธ๋ฐ์ ํ ํฐ ์ ๋ณด๋ฅผ ๋ด๋ ๊ฐ์ฒด" ๋ฅผ ๋งํ๋ค. // ์ฝ๋ ์์public class KakaoDTO { @Getter public static class OAuthToken{ @JsonProperty("token_type") private String tokenType; @JsonProperty("access_to.. 2025. 9. 3. ์ด์ 1 2 3 ๋ค์