목록전체 글 (380)
AACII.TISTORY.COM
서술 원칙1. 문장과 대화를 짧게 하고, 능동태로 해서 입으로도 읽기 쉽게 함으로써 독자의 이해도를 높입니다.2. 상황에 대해 일반 서술보다 행동 묘사로 대신합니다.(심경 변화 예: 미망인이 결혼반지를 뺐다.)(트라우마를 일으키던 요소를 성장의 도구로 사용)3. 서막을 넣지 말고 소개를 하지 말아야 합니다. 너무 많은 정보를 주지 않아도 됩니다. 4. 바디랭귀지와 오감을 써서 감정을 표현합니다. 사람은 몸으로 50% 이상 감정과 의사를 전달하기 때문입니다.5. 결말부터 쓰고 시작하십시오. 주제를 정하고 시작해도 진짜 주제는 결말이 돼서야 알 수 있습니다. 금기1. 개연성 부족이나 과잉: 인물의 행동을 이해할 수 없게 하면 안 되고, 인물의 행동의 이유를 너무 길게 설명해도 안됩니다.2. 설정 과잉: ..
좋은 캐릭터를 만드는 가이드1. 외모, 성격, 능력, 신분으로 캐릭터의 초안을 만듭니다.2. 위 캐릭터의 목표, 욕망, 결핍, 신념(잘못된 믿음), 고민을 정합니다.3. 캐릭터의 결핍과 고민을 반영해서 외모, 성격, 능력, 신분 초안을 수정합니다.4. 캐릭터가 압박을 받았을 때 어떤 선택을 하는지 정합니다.5. 그 선택이 주변 인물(목표, 가치관)과 갈등을 만들게 합니다.6. 관계에 재미를 주려면 주인공과 관계 말고 주변 캐릭터들끼리 관계를 설정해 주면 흥미롭게 됩니다.(예: "사실 은비, 혜진이 딸이에요.")7. 캐릭터 클리셰에 예상 밖의 욕망과 대가를 더합니다. 좋은 캐릭터:캐릭터에 1. 강한 욕망을 부여하면서 욕망을 성취하기 불리한 2. 약점을 설정하고 그럼에도 불구하고 욕망을 성취하기 위한 3. ..
이야기를 설계할 때 먼저 적어볼 네 문장주인공은 무엇을 원합니까?그것을 얻지 못하면 무엇을 잃습니까?목표를 이루려면 어떤 어려운 선택을 해야 합니까?그 선택 뒤에 무엇이 되돌릴 수 없이 달라집니까? 황금 플롯: 전형적이고 좋은 패턴1. 평범한 사람이 어떤 문제(모험)를 격고 훌륭(성장)한 사람이 되는 패턴.(록키) 2. 주인공이 멋진 것(사랑)을 얻고 잃은 뒤 다시 되찾는 패턴: 평범한 주인공(남주)이 운명적인 만남을 겪지만 오해나 갈등을 극복하고 목적(사랑)을 쟁취 하는 패턴 (남성향 로멘틱 코미디) 3. 인물이 깊은 불행에서 시작해 점점 좋아지다가 한번 무너진 후 마지막에 행복을 쟁취하는 패턴: 신데렐라, 상도, 해리포터, 신약성경예수 4. 계속 나빠지기만 하는 패턴: 사회 비판, 불편한 진실 직면시..
도입부(1화)에서 보여줘야 할 것연재물에서 1화는 세계관 소개가 아니라 주인공의 인생과 가치관을 설명합니다.1. 주인공의 목표 설정: 결핍이 목적(원하는 것)을 발생 시킵니다.2. 그 목표를 위해서 주인공이 무엇을 해야하는지 설정: 다만 생존, 복수 등 주인공의 목적이 너무 강력하면 쉬어가는 에피소드들이 무가치해지는 것을 주의합니다.3. 첫 번째 장벽(위기): 누가 반대 세력이고 주인공이 무엇을 이겨내야 하는지 설정합니다.4. 딜레마 선택의 순간: 어떤 문제가 벌어져 갈등 속 주인공이 어떤 선택을 하는지 보여줍니다.5. 앞으로 어떤 재미를 기대할 수 있는지 기대감 부여: 주인공이 목표를 이루면 어떻게 되는지, 목표를 이루지 못하면 어떤 나쁜일이 일어나는지를 보여줍니다.6. 클리프 행어: 기대감 증폭하기 ..
좋은 유머는 캐릭터의 성격, 상황의 모순, 독자가 예상한 결과와 실제 결과의 차이에서 자연스럽게 발생합니다.기대와 결과의 차이, 캐릭터 사이의 성격 차이, 상황과 반응의 불균형, 반복과 변형, 그리고 정확한 타이밍이 웃음을 만들어냅니다.일회성 농담보다 캐릭터 자체에 유머가 발생하는 구조를 심어두는 것이 효과적입니다.웃긴 대사를 억지로 만들기보다, 웃긴 상황이 발생할 수밖에 없는 캐릭터 관계를 만드세요.그렇게 만들어진 유머는 웃음을 주는 동시에 캐릭터의 성격과 관계까지 독자에게 각인시키는 스토리텔링 장치가 됩니다.특히 판타지, 액션, 로맨스처럼 이야기가 길게 이어지는 장르에서는 진지한 이야기 속에서 웃음이 발생할 수 있는 구조를 만드는 것입니다. ★실전에서 사용할 수 있는 유머 공식장면을 만들 때 다음과 ..
후킹이란?★ 후킹이란 정보를 적절히 감추고, 인물에게 관심을 갖게 하며, 다음 장면을 볼 이유를 제공하는 기술입니다.후킹은 시선을 사로잡는 포인트를 말합니다.숏폼, 광고, 스토리의 도입부에서 시선을 잡기 위해 사용합니다.예측하는 다음 순간을 뒤집어야 합니다. 하지만 후킹은 독자를 속이거나 무조건 놀라게 만드는 기술이 아닙니다.무분별한 후킹으로 독자를 속인다면 분노를 사게 됩니다.하지만 일부러 노이즈 마케팅을 하기도 하죠. 후킹의 구조강한 후킹은 대체로 다음 구조를 가집니다.익숙한 상황을 제시한다.→ 한 가지 비정상적인 요소를 넣는다.→ 독자가 질문하게 만든다.→ 작은 답을 준다.→ 더 큰 질문으로 연결한다. 즉, 작품의 첫 장면을 만들 때는 다음 네 가지를 점검하면 좋습니다.첫 장면(페이지)에서 이상하..
추리물의 구조1. 독자에게 의문을 던짐2. 단서3. 잘못된 확신을 유도4. 반전으로 진실을 밝힘좋은 추리물은 독자가 함께 사건을 해결하도록 만들고 그 과정에서 벌어지는 갈등과 위험을 생생하게 보여줍니다.독자를 상대로 고의적인 속임수나 기만을 쓰면 안 됩니다. 사건 설계 실제 집필 전 정확한 범행 시각, 진범, 알리바이, 영상 기록의 모순을 설명하는 증거를 먼저 확정해야 합니다.실제 집필 전 다음 항목을 작성해 두면 논리적 오류를 줄일 수 있습니다.1. 사건의 핵심 수수께끼2. 진범과 범행 동기3. 범행 방법과 실제 시간표4. 결정적 단서5. 거짓 단서와 오해6. 반전과 진실7. 주인공의 개인적 갈등8. 다음 사건의 연결고리 캐릭터 설정 추리하는 자는 한 명으로 설정합니다. 여러 명이 추리를 하면 논리의 ..
클리셰는 독자가 익숙하게 알아보는 설정·사건·관계·전개 방식입니다.익숙한 장치를 사용하더라도 인물의 선택과 사건의 대가를 다르게 설계하면 새로운 이야기가 될 수 있습니다.클리셰를 활용할 때는 “이 장치 때문에 인물이 어떤 선택을 하며, 그 선택으로 무엇이 달라지는가?”를 먼저 정해보시면 좋습니다. 같은 회귀·계약 연애·각성이라도 선택과 결과가 달라지면 작품의 개성이 생깁니다. 1. 서두 클리셰: 첫 장면에서 독자를 붙잡는 방식서두에서는 세계관 설명보다 독자가 당장 알고 싶어 할 질문 하나가 효과적입니다.“왜 재혼을 요구했는가?”, “이 가족은 누구인가?”, “최약체가 어떻게 살아남는가?”처럼 질문이 구체적일수록 다음 화를 읽을 이유가 선명해집니다.거울을 보는 인물의 모습으로 시작한다.1인칭 화자가 자신..
1 원칙: 기획과 코딩은 분리해서 작업하고, 반드시 인간이 검토 후 승인한 이후 적용되게 합니다.이 원칙이 처음이자 마지막 원칙입니다.이 원칙을 지키지 않으면 AI는 내가 모르는 작업을 진행할 것이며, 이런 작업들이 쌓이면 어느 순간 코드는 무너져 수습 불가능해지며, 작업에 소요되는 토큰(비용)은 치솟게 될 것이기 때문입니다.이 원칙을 지키면, AI가 의도와 다르게 동작하는 것을 줄이고, 프로젝트의 주도권을 인간이 가지게 되고, 토큰(비용)을 절약하며, 결과물이 향상됩니다. 바이브 코딩 과정1. 코드 분석: AI에게 기존 코드를 분석하게 하고 반드시 정리한 내용을 research.md 파일에 작성하도록 시킵니다. AI에게 지시 사항:1. 이 폴더(프로젝트)를 깊게 읽고2. 어떻게 동작하는지 매우 상세..
트랜잭션이 수행 시간이 길어지는 경우 커넥션 풀에게 커넥션 반환이 늦어지게 되므로 커넥션 풀이 쉽게 고갈되어 장애가 발생할 수 있습니다. 예를 들어@Transactionalvoid order(Long id){ //커넥션 획득 var order = repository.find(id); payment.approve(order); //외부 API 호출 order.setPaid(true);} // 커넥션 반납 이처럼 트랜잭션 안에 외부 호출이 있는 경우 외부 호출 결과를 기다리는 시간이 존재해서 수행 시간이 길어질 수 있습니다. 이런 경우 커넥션 풀의 개수에는 제한이 있어서 연결이 많이 증가하면 장애가 발생할 수 있습니다.외부 호출이 시간이 많이 걸리는 작업이므로, 트랜잭션 안에 포함..
https://aacii.tistory.com/503 스프링 부트 JWT 인증 구현 가이드 2편: 인증 필터와 보호 API 접근1편에서는 이메일과 비밀번호를 검증한 뒤 JWT 액세스 토큰을 발급했습니다.https://aacii.tistory.com/502 스프링 부트 JWT 인증 구현 가이드 1편: 로그인과 액세스 토큰 발급스프링 시큐리티스프링 부트blog.aacii.net JWT 인증은 정상 토큰으로 API 호출에 성공했다고 끝나지 않습니다.실무에서는 인증정보가 없는 요청과 권한이 부족한 요청을 구분하고, 만료되거나 변조된 토큰에 일관된 오류를 반환해야 합니다.액세스 토큰 만료 시간을 짧게 운영한다면 리프레시 토큰 정책도 필요합니다.다음 내용을 구현하고 점검해보겠습니다.1. 401과 403 오류 구분2..
1편에서는 이메일과 비밀번호를 검증한 뒤 JWT 액세스 토큰을 발급했습니다.https://aacii.tistory.com/502 스프링 부트 JWT 인증 구현 가이드 1편: 로그인과 액세스 토큰 발급스프링 시큐리티스프링 부트 REST API에서 사용할 JWT 인증을 구현해보겠습니다.먼저 로그인 요청을 검증하고, 인증된 사용자를 식별할 수 있는 액세스 토큰을 발급해야 합니다.Spring Security가 아이blog.aacii.net그러나 토큰을 발급하는 것만으로는 인증이 완성되지 않습니다.클라이언트가 API를 호출할 때 전달한 JWT를 서버가 읽고 검증한 다음, Spring Security와 호환이 되는 인증정보로 변환해야 합니다.1. 클라이언트가 Authorization 헤더에 JWT 전달2. JWT ..
스프링 시큐리티스프링 부트 REST API에서 사용할 JWT 인증을 구현해 보겠습니다.먼저 로그인 요청을 검증하고, 인증된 사용자를 식별할 수 있는 액세스 토큰을 발급해야 합니다.Spring Security가 아이디와 비밀번호를 확인하는 과정부터 구현한 뒤, 인증에 성공했을 때 JWT를 발급해야 합니다.전체 흐름은 다음과 같습니다.1. 클라이언트가 이메일과 비밀번호로 로그인 요청2. AuthenticationManager가 인증 처리3. UserDetailsService가 사용자 조회4. PasswordEncoder가 비밀번호 비교5. 인증 성공 시 JWT 생성6. 클라이언트에 액세스 토큰 반환Spring Security에서 AuthenticationManager는 인증 요청을 처리하는 중심 인터페이스입..
서버 사이드 랜더링(SSR)은 브라우저로 필요한 화면(html)을 전송해주는데, 보통 jsp나 Thymeleaf 등을 사용합니다.그런데 REST API 서버 처럼 JSON(혹은 XML)을 이용해서 데이터를 주고 받는 경우, 무상태에다가 화면을 제공하지 않기 때문에 HttpSession이나 쿠키로 인증하는 방법에 제한을 받습니다.따라서 이런 제한을 피하기 위해 토큰을 이용해서 인증하는 방법을 JWT(JSON Web Token) 이라고 합니다.인증(Authentication): 사용자의 아이디와 비밀번호가 올바른지 확인합니다.JWT 생성: 인증에 성공하면 사용자 정보를 담은 JWT를 생성합니다.JWT 전송: 생성된 JWT를 클라이언트에게 응답으로 보냅니다.인가(Authorization)와 보호된 리소스 접근..
AI 도구는 경쟁이 매우 치열해서 하루가 다르게 발전 중이라 현재 우위에 있어도 언제 신기술을 들고 나올지, 가격 정책은 어떻게 바뀔지 등등 변화가 빨라 섣불리 결정하기 힘든 상황입니다.즉, 서로 표준으로 자리 잡으려 경쟁 중이라고 할까요.그래서 선택을 위한 기준을 잡고 적은 비용으로 최적화된 AI를 고르기 위해 기준을 세우고 장단점을 비교해 보았습니다. 개발자용 AI 툴을 고르는 기준1. 코드 문맥 이해력이 중요.2. IDE와의 통합: VSCode, IntelliJ, Cursor 등3. 리팩토링, 버그 수정, 에러 분석, 테스트 제안 능력4. 보안과 배포 방식(금융권, 공공용)5. 과금 방식6. 러닝 커브 AI 도구 장단점 비교AI 도구장점단점ChatGPT Codex(Open AI)에러 로그 해석,..
