웹 서비스에서 잘 작동하던 소셜 로그인을 iOS나 Android 앱에 붙이려다 보면 생각지 못한 리다이렉트(Redirect) 문제에 직면하곤 합니다. 특히 클라이언트가 카카오/네이버 SDK를 직접 사용하는 것이 아니라, 백엔드에서 인증을 처리하고 클라이언트로 결과를 돌려주는 구조라면 더욱 그렇습니다.오늘은 기존 웹 환경에 맞춰진 소셜 로그인 흐름을 앱(iOS) 환경에 맞게 개선하며 겪은 문제와 그 해결 과정을 정리해 보았습니다.1. 기존 웹 기반 소셜 로그인 흐름과 문제점일반적인 웹 환경에서의 소셜 로그인 흐름은 다음과 같습니다.앱(클라이언트)이 "카카오 로그인 화면 열어줘"라고 백엔드에 요청합니다.백엔드는 카카오 로그인 URL을 클라이언트에 반환합니다.iOS 앱이 해당 URL을 브라우저처럼 띄웁니다.사..
1. 문제 상황 (The Problem)프론트에서 JSON으로 분명히 true를 보냈는데, 서버 DTO에서는 자꾸 false만 찍히는 기괴한 현상.JSON: {"isTermsAgreed": true}Java DTO: private boolean isTermsAgreed; (Lombok @Getter 사용)Log: isTermsAgreed=false (하...)2. 원인 분석 (Why?)범인은 자바의 Bean 규약과 Jackson 라이브러리의 지나친 친절함 때문입니다.자바의 관례: 일반적인 필드는 getFieldName()이지만, boolean 타입은 게터 이름이 isFieldName()이 됩니다.Lombok의 동작: 필드명이 isTermsAgreed라면, 롬복은 게터를 getIsTermsAgreed()가..
JPA를 처음 접하실 때 @ManyToOne, @OneToMany 같은 연관관계 매핑 어노테이션 때문에 많이 헷갈리실 텐데요. 이 복잡한 개념이 등장한 근본적인 이유부터 살펴보겠슴다.이유는 '자바 객체'와 '관계형 데이터베이스(RDB) 테이블'의 구조가 태생부터 완전히 다르기 때문입니다. 이를 전문 용어로 '객체와 관계형 데이터베이스의 패러다임 불일치'라고 부릅니다.1. 객체와 테이블, 어떤 점이 다를까요?객체 (Object)의 세계: "참조(Reference)"객체는 다른 객체와 관계를 맺을 때 참조를 사용합니다.예를 들어, 댓글(Comment) 객체가 게시글(Post) 객체의 정보를 알기 위해서는 comment.getPost()처럼 참조를 통해 접근해야 합니다.기본적으로 단방향입니다. 게시글 객체 안..
https://jwinjection.tistory.com/5 주차감면 키오스크(PyQT,Selenium)| 주차감면 키오스크내가 오자 마자 맡았던 업무 주차권 교부처음에는 주차권에 도장찍어서 교부하는 방식이었는데 그런데 몇달 지나서야주차권 없어지고 사이트를 하나 만들어서 온라인jwinjection.tistory.com사회복무요원 당시 주차감면 키오스크에 이어...| 식권관리시스템우리회사는 식권을 수기로 관리한다... 했다식권관리사이트를 하나 만들어야겠다 생각이 들었다.스프링 부트로 웹을 만들어 아이패드에서 접속했다.골때리는게 아이패드미니 1세대는 JS가 es5 까지밖에 안돼서 api요청시 xhr을 사용해야했다.이번에 회사에서 준 2025년 다이어리의 포장박스와 2024년도 국민은행 달력을 좀 곁들여서 ..
| 주차감면 키오스크내가 오자 마자 맡았던 업무 주차권 교부처음에는 주차권에 도장찍어서 교부하는 방식이었는데 그런데 몇달 지나서야주차권 없어지고 사이트를 하나 만들어서 온라인으로 할수있게 바꾼다고 했다좀 편해지는건가 싶었다.하지만옆자리 다른 공익형이 맘에 안드셨던 담당자는 나랑 그형의 업무를 바꾸셨고 나는 그렇게 등기를 맡게 됐다 그런데 종종 그형은 병가를 아끼지 말아야 한다며 연가 병가를 자주 쓰셨고 안오는날 마다 나 혼자 주차감면도 하고 등기 접수도 받고 바쁜날이 많았다. 온라인으로 시스템이 바꼈다지만 도장찍는 게 그냥 컴퓨터로 옮겨간 느낌이다 사람이 오면 내가 직접 주차관리서버에 들어가 감면신청을 눌러줘야했기때문이다 그리고 주차감면을 받으로 오는 사람들에 대한 코로나 감염위험도 있었기에 직접 키..
내가 복무중인 곳에서 이전 까지의 사회복무요원들은 일일이 수작업으로 업무를 해왔다 나는 이게 너무 시간이 아깝다는 생각이 들었다. 이 프로그램을 통해 매일 아침 데이터를 불러와서 엑셀로 열기를 누르고 이렇게 원본폴더에 저장하고 저 엑셀에 각각의 열을 하나하나 복사해서 이 양식에다가 하나씩 붙여놓고 수령대장이라는 폴더에 오늘날짜로 이름변경해서 저장한 후 수취인명에 있는 이름을 교직원한글파일에서 검색해 학과명을 찾아내서 해당 학과명으로 변경하고 확인이 끝난 행은 저렇게 ㅇ 동그라미를 넣어준후 학과를 그룹으로 노란색 그룹서식을 일일이 넣어주고 복사해주면 끝이다 등기가 2~30개면 할만했는데 입시기간이나 자격증신청기간 뭐 별별 이유로 100~200개가 들어온다..... 점심까지는 그냥 등기만 하다가 끝난다 이당..
1. 멜론어플과 작별인사를 한다 2. 원하는 노래를 재생목록에 저장한다 재생목록 없으면 새로하나 만든다. 3. 내 채널 - 재생목록에 들어간다 4. 재생목록의 제목을 눌러서 재생목록 페이지로 들어간다 5.이게 재생목목록 페이지이다 6.재생목록페이지의 링크를 복사한다 링크형식은 https://www.youtube.com/playlist?list=playlist?list=샬라샬라샬라샬라 이런식으로 되어있다 복사한후 파이썬을 켜주자 7.pip install pytube 로 pytube라이브러리를 설치한다 pip install pyautogui pip install moviepy 등등 필요한거 설치해준다 8. Playlist안에 복사했던 재생목록링크를 넣고 DOWNLOAD\_FOLDER 에는 노래를 저장할 폴더..
지금까지 등기번호 뒤에 4자리 혹은 6자리로 검색해서 체크를 했는데 이게 등기가 많을때에는 다른 등기번호의 중간부분과 겹치는 경우도 있어서 찾기를 여러번 눌러야 제대로 찾는 경우가 있었다 그리고 무엇보다 등기번호보고 숫자 키보드로 검색하는게 은근 귀찮고 비효율적이다 마침 안쓰는 웹캠이 생겨서 모든 등기우편에는 등기번호바코드가 존재한다! 그래서 웹캠을 바코드리더기로 사용하면 매우 편할것같았다 playsound는 에러가 계속떠서 그냥 winsound 이용했다 그리고 웹캠이 연결되어있지 않으면 실행이 되지 않는다 import cv2 import pyzbar.pyzbar as pyzbar import clipboard import pyautogui import winsound as ws #from playsou..
문제세상이 날 억까하는 느낌 윈도우 터미널을 열어서netstat -ano | findstr :8080 해봐도8080 쓰는 새끼없음??????????????? 원인Hyper-V, WSL2, Docker(NAT 드라이버) 등의 윈도우 시스템 서비스가 동적 포트 예약(Dynamic Port Reservation)으로 선점해 쥐고 있기 때문개뜬금없이 가만히 있던 포트들을 윈도우가 납치해감.아래 사진보면 8001부터 8100 까지 싸그리 선점해버린상태그래서 사용불가된거임 해결net stop winnat확인 netsh interface ipv4 show excludedportrange protocol=tcp잘 사라진거 확인했으면 다시 시작net start winnat 성공.
최근 3D 맵 컴포넌트(Map3DWithControls.js)를 작업하면서 렌더링 퀄리티를 한 단계 높이기 위해 후처리 안티앨리어싱(Post-processing Anti-Aliasing)을 도입했습니다. 모델의 난간이나 얇은 구조물, 외곽선 등에서 눈에 띄게 발생하는 계단 현상(Aliasing)을 개선한 과정입니다. 안티앨리어싱(Anti-Aliasing)과 FXAA란?3D 그래픽을 모니터의 사각 픽셀로 표현하다 보면, 사선이나 곡선의 경계면이 톱니바퀴처럼 깨져 보이는 '계단 현상(Aliasing)'이 필연적으로 발생합니다. 이를 부드럽게 다듬어주는 기술을 안티앨리어싱이라고 합니다.이번 작업에서 선택한 방식은 FXAA (Fast Approximate Anti-Aliasing)입니다. FXAA는 3D 지오메..
10분짜리영상 129개를 합쳐서 하나의 영상파일로 만들어야하는상황총 약23시간짜리 영상파일. 처음엔 프리미어프로로 시도. 결과 렌더링 걸린 시간만 5시간, 24시간, 8시간3번다 에러남. c파꺼 gpt한테 물어보니 샤나인코더 스트림 복사 기능을 쓰면 바로 해결가능하다고함. 샤나인코더https://shana.pe.kr/shanaencoder_download 샤나인코더 다운로드 - 샤나샤나인코더는 동영상 변환과 인코딩을 위한 최고의 무료 인코더입니다. 샤나보컬리무버는 인공지능(AI) 기반으로 목소리를 제거를 할 수 있습니다.shana.pe.kr 사용법파일추가빠른설정비디오 코덱, 오디오코덱 => 스트림 복사 경로 변경 해준다음 인코딩시작 인코딩까지 5분도 채안걸림