Movatterモバイル変換


[0]ホーム

URL:


전체 글

Swift, Java, iOS&macOS, Spring Boot, CI/CD
·Server
개요저는 디스플레이가 박살이 나버린 맥북으로 홈 서버를 구축해서 사이드 프로젝트를 배포했고, 개발용 서버로도 사용 중입니다. 비싼 돈 주고 산 16인치 맥북을 카페에서 실수로 떨어트렸는데, 모서리 부분이 아작이 나버렸습니다. 디스플레이 교체 비용 견적을 내보았는데 너무 비싸서, 차라리 새 맥북을 한대 더 사는 게 나을 것 같더라구요. 그래서 예정에 없던 새 맥북을 구매했습니다. 기분이 좋은데 안 좋네요.. 그런데 디스플레이만 망가졌지, 다른 건 멀쩡하게 작동하는 맥북을 그냥 썩히기에는 너무 아깝다는 생각이 들어, 클라우드 임대료도 아낄 겸 이 맥북을 홈 서버로 구축해서 써먹어보기로 했습니다. 결과적으로 최근에 진행했던 팀 프로젝트를 그 맥북에 성공적으로 배포해서 운영 중입니다. NCP 기준으로 4코어 1..
·Server
개요최근 진행한 프로젝트에서 동시성 문제로 인한 에러를 경험했습니다. 게시글에 '좋아요'를 토글할 수 있는 기능이 있는데, 사용자가 이 버튼을 빠르게 연타하면 MySQL에 동일한 Unique Key로 insert를 시도하게 되면서 중복 엔트리 예외가 발생하는 케이스였습니다. 처음에는 조회 쿼리에 배타적 Lock을 추가해서 해결했습니다. 에러를 해결하는게 우선이니, 가장 쉽고 빠른 방법을 선택했습니다. 그런데 Lock으로 해결하는 방식은 최선의 방법이 아니었다고 생각했습니다. Lock으로 인해 불필요한 DB 부하가 발생하고, 무엇보다 응답 시간이 길어져 사용자 경험에 악영향을 끼친다고 느꼈기 때문입니다. 그래서 동시에 들어오는 요청들을 순서대로 처리해주는 메시지 큐 시스템을 도입했습니다. 요청에 대한 성공..
·Server
개요최근 진행한 사이드 프로젝트에서 Spring Security를 사용했습니다. 처음에는 학습 차원에서 인터넷과 책에서 찾은 기본 구현 예제를 따라 해봤는데, 생각보다 개발자가 직접 구현해주어야 하는 부분이 적고 간단해서 기본적인 구현 정도는 쉽게 할 수 있었습니다. 자체 로그인 기능을 구현할 때 비밀번호 암호화 알고리즘으로 BCrypt를 사용했습니다. Spring Security 프레임워크에 기본적으로 내장되어 있는 방식이라 추가 의존성 설치를 할 필요가 없다는 장점이 있고, 비밀번호 암호화에 사용하기 적절한 단방향 암호화 알고리즘에 안정성까지 보장받은 알고리즘이라고 합니다. 그런데, 예제를 따라해보는 동안 한 가지 의문점이 들었습니다."내가 직접 Salt 값을 세팅해놓지 않았는데, 왜 안전한 거지? ..
·iOS(macOS)
화면을 덮어도 잠자기 모드에 들지 않게 하는 명령어# 자동 잠자기 비활성화> sudo pmset -a sleep 0# 잠자기 모드 진입 방지> sudo pmset -a disablesleep 1 [옵션 설명]`-a` (all) : 모든 전원 상태(배터리 전원, AC 전원 등등)에 대해 설정을 적용. 데스크톱 타입의 Mac과 노트북 Mac 모두 적용 가능`-c` (charger) : 충전기(AC 전원)에 연결되어 있는 상태일 때에 대해서만 설정을 적용. 언제 사용하면 좋을까저는 여분의 맥북을 홈 서버로 사용 중입니다. 카페에서 실수로 떨어트려 디스플레이가 박살 났지만, 나머지는 다 멀쩡한 제 M2 Pro 맥북.. 을 집에 상시 전원과 유선 랜을 연결해서 사용 중입니다. 이 맥북에 MySQL이나 MongoD..
·CI & CD
개요최근 참여한 팀 프로젝트에서 경험한 CI/CD 파이프라인 구축 방법에 대해 공유하고자 합니다.자동으로 빌드 및 배포를 수행하는 Github Actions 스크립트를 프로젝트 소스코드에 포함시키는 방법으로 구성하였고, 최종 배포 단계에서는 Docker Hub를 통해 빌드된 Docker 이미지를 서버로 옮기는 방법으로 구성하였습니다.저처럼, 배포 Docker 이미지나 소스 코드가 외부에 노출되어도 상관없는 오픈 프로젝트를 진행 중인 분들에게 도움이 되기를 바랍니다. 이 글은 각자 필요한 시크릿 환경 변수들을 사전에 Github 저장소의 Secrets and Variables 메뉴에 모두 등록해놓았다는 가정 하에 작성하였습니다.또한 변수명은 임의로 작성한 것이니, 이 점 참고하며 읽어주시기 바랍니다. 기술..
·Algorithm(PS)
개요요즘에는 알고리즘 문제풀이 연습에 시간을 많이 할애하고 있습니다. 한동안 연습을 등한시했더니, 완전 기초적인 지식도 헷갈려서 골치 아프네요. 특히나 언어를 Java로 바꾸면서 언어적 특성도 같이 공부하느라 더 머리가 아픕니다. 아무튼, 저는 백준과 프로그래머스 두 플랫폼을 주로 사용하고 있습니다. 개인적으로, 프로그래머스 문제들은 문제 자체를 이해하는 능력과 구현 능력이 필요한 스타일이라면, 백준 문제들은 대부분 알고리즘 자체에 대한 이해를 필요로 하는 스타일이라고 느낍니다. 그래서 둘 다 골고루 많이 연습해 보는 게 좋은 것 같습니다. 두 플랫폼간의 큰 차이점이 한 가지 더 있습니다. 문제에 대한 테스트케이스 데이터 입력 방식이 다르다는 점인데요.프로그래머스 방식은 데이터 입력을 함수의 매개변수로..
·iOS(macOS)/SwiftUI
개요Introspect 라이브러리를 사용할 때 유의해야 할 버그 발생 케이스와 우회 방법을 공유합니다.Introspect: UIKit과 AppKit의 기능 또는 요소들을 SwiftUI로 사용할 수 있게 래핑 해서 제공하는 오픈 소스 라이브러리. 최근 100% SwiftUI로 작성되어 있는 iOS 프로젝트를 유지보수했던 적이 있습니다. iOS 개발자가 퇴사한 지 2년이 넘어, 2022년도에 출시된 이후로 거의 유지보수된 적이 없는 프로젝트의 일부 기능을 개선해야 하는 임무를 맡았습니다.그 프로젝트를 열어보기 전에는 솔직히 약간 겁부터 났습니다. 그 앱이 출시되었던 시점이 2022년이었고 최소 지원 버전이 iOS 14로 되어있었던걸 감안했을 때, SwiftUI의 극초창기 시절에 개발된 프로젝트라서 매끄럽지 ..
·Kotlin
개요Kotlin의 Aamed Arguments를 작성하기 편하게 도와주는 IntelliJ 플러그인을 소개한다.  본론Kotlin은 정의한 함수를 호출할 때, 함수에 넘길 각 argument 값에 매치시킬 parameter 명을 함께 작성할 수 있다.Kotlin에서는 이를 Named Arguments 라고 부른다.함수에서 필요로 하는 paremeter의 개수가 많아질수록 코드를 작성하는 개발자가 값을 잘못 넘겨주는 실수할 가능성이 높아진다.이를 해결하기 위해 모던 랭귀지는 named arguments 방식을 채택해서, 사용을 권장하도록 변화하고 있다. 참고: Named arguments는 Keyword arguments 로 불리기도 한다. Python, Swift, Dart, Ruby, C# 등에서도 이 ..
·iOS(macOS)
개요분리된 여러 프로젝트에서 사용하는 공통 코드들을 SPM(Swift Package Manager)으로 모듈화를 해서 관리하는 중이다.특정 API를 호출하는 서비스 레이어나 유틸리티성 코드들은 한번 분리를 해놓으니 확실히 유지보수 하기 편하다. - SPM 생성에 참고한 블로그 : https://0urtrees.tistory.com/387 iOS Swift Package Manager, SPM 패키지 생성 및 사용방법SPM, Swift Package Manager는 iOS의 built-in swift 코드 배포 관리 도구입니다. 비교적 지원하는 라이브러리가 적긴 하지만, cocoaPods, carthage 처럼 프로젝트에 라이브러리를 연결하거나 프로젝트 코드 모듈0urtrees.tistory.com 위 ..
·iOS(macOS)
개요Remote Push Notification을 이용해서 요구사항을 구현하기 위해 Firebase Cloud Messaging(FCM)을 사용해 봤습니다.체감상 가장 레퍼런스도 많고, 알람 횟수에 상관없이 무료라는 장점이 있어서 FCM을 선택했습니다. FCM을 사용하는 방법을 학습하고 적용하는 과정에서 삽질을 많이 했고, 새롭게 알게 된 것들이 많습니다.그래서 제가 오해하고 있던 부분들과 해결 과정을 정리해서 남겨보려고 합니다. 프로젝트에 FCM 설정하기 & 예제 프로젝트가장 먼저 해야 할 일은 Firebase 프로젝트를 세팅하는 작업과, 각자의 프로젝트에서 FCM을 사용할 수 있도록 연동하는 작업입니다.조금만 검색해 봐도 자세하게 잘 정리한 다른 블로그가 많이 있어서 설명을 생략할까 했는데, 뒤에서 ..
Clover Laundry
Clover 기술 블로그
Clover Laundry
전체
49,392
오늘
37
어제
35

인기 글

최근 글

hELLO· Designed By정상우.v4.5.2
Clover Laundry
Clover 기술 블로그
상단으로

티스토리툴바


[8]ページ先頭

©2009-2025 Movatter.jp