전체 글289 Laravel 데이터 caching 처리 하기 많은 트래픽을 보유한 사이트에서 db에서 데이터를 읽어올때 cache 처리해서 읽어오는 이유가 뭘까? 많은 트래픽이 발생하는 사이트에서는 대량의 요청을 동시에 처리해야 한다. 이런 요청들이 모두 데이터베이스에서 직접 데이터를 읽게 되면, 데이터베이스에 엄청난 부하가 발생하게 되고, 부하가 지나치게 증가하면 성능 저하 또는 서비스 중단이 발생할 수 있다. 그래서 이런 문제를 해결하기 위해 캐시를 사용하는데, 캐시는 빠르게 접근 가능한 저장소로, 한 번 읽은 데이터를 임시로 저장해 두는 것이다. 이후 동일한 데이터를 요청할 경우, 데이터베이스에 다시 접근하는 것이 아니라 캐시에서 데이터를 가져옴으로써, 데이터베이스의 부하를 줄이고 응답 시간을 향상시킬 수 있는 것이다. 특히, 변경이 자주 일어나지 않는 데이.. Framework/Laravel 2023. 11. 8. Laravel Authentication Session Life Time 종료시 강제로 로그아웃 로그 쌓기 Laravel Auth Session을 통한 로그인,로그아웃 구현 라라벨에서는 사용자가 애플리케이션으로 인증하고 "로그인"할 수있는 Authentication(인증) 방법을 제공하기 때문에 손 쉽게 로그인 로그아웃 기능을 구현할 수 있다. 세션 스토리지와 쿠키를 사용하여 상태를 유지하는 session 가드와, 각 요청-request와 함께 전달되는 "API 토큰"을 사용하여 사용자를 인증하는 token 가드를 제공하는데, 최근 진행했던 프로젝트의 경우 다수의 사용자가 아닌 특정 사용자들이 이용하는 Contents Management System(이하 CMS)를 만드느라 session을 이용했다. Session은 Redis에 저장하였고 session life time은 180분으로 설정하여 사용자가 180.. Framework/Laravel 2023. 11. 8. 내가 만든 패키지를 packagist.org에서부터 설치해보자 패키지를 다운받아 설치하는것은 우리의 패키지 매니저가 다 알아서 해준다. PHP의 전용 패키지 매니저인 Composer를 사용해서 내가 만들어 올려놓은 패키지를 packagist.org에서부터 다운받아서 사용할 수 있다. 신규 프로젝트 생성하기 composer create-project laravel/laravel example-app 위 명령어처럼 우리는 composer 패키지 매니저를 통해서 손 쉽게 라라벨 프로젝트를 설치할 수 있다. composer가 설치되어 있지 않더라도 각각의 os에서 쉽게 라라벨 프로젝트를 생성하는 방법은 라라벨 공식 홈페이지에서 쉽게 찾을 수 있다. 패키지 설치하기 packagist.org의 우측 상단 자신의 닉네임을 클릭하여 My Packages를 클릭하면, 앞에서 배포하.. Server Language/PHP 2023. 11. 8. 내가 만든 패키지를 packagist.org에 올려보자 많은 PHP 개발자들은 composer 패키지 매니저를 사용해서 다른 사람들이 만든 라이브러리 혹은 패키지 등을 본인의 프로젝트에 주입하여 사용한다. 나도 다른 사람들이 만들어놓은 패키지를 많이 사용해왔지만, 스스로 패키지를 만들어 본 적은 없었기 때문에 한번 해봤다. 참고 : PHP 언어의 패키지매니저로 유명한 Composer로 다운받는 모든 외부 패키지는 packagist.org 사이트에서 운영 및 관리가 되고 있다. github webhook을 packagist와 연결하자 수 많은 개발자들이 하나의 프로젝트를 시작하면 제일 먼저 하는 소스 버전 및 형상 관리를 해주는 Git. 나는 GitHub으로 앞으로의 토이프로젝트를 진행하려고 한다. 때문에 새로운 github repository를 만들고 pus.. Server Language/PHP 2023. 11. 8. [웹개발자의 IOS 탐방기] 7. UserDefaults를 사용한 로컬기기에 알림 권한설정 값 저장하기 서론 UserDefaults는 간단한 데이터, 설정, 환경설정 등을 로컬에 저장할 때 사용되는 인터페이스다. UserDefaults에 저장하는 데이터는 키-값(key-value) 쌍으로 관리된다. 예를 들어, 여러 곳에서 사용되는 UserDefaults의 키를 하드코딩하면 오타가 발생할 위험이 있고, 키 관리가 어려워질 수 있기 때문에 이를 방지하기 위해 UserDefaultsKeys를 사용하면 각 키에 대한 참조를 한 곳에서 관리할 수 있으며, 이후 코드에서는 이러한 참조를 재사용함으로써 안전성과 유지보수성을 높일 수 있다. 본 포스팅에서는 UserDefaultsKeys를 사용하여 디바이스 로컬 기기에 설정한 값들을 저장 및 불러와서 기계가 꺼져도 설정 내용이 변하지 않게 SettingView.Swfi.. Framework/SwiftUI 2023. 11. 8. [웹개발자의 IOS 탐방기] 6. UserNotifications을 사용한 알림 설정 구현 서론 UserNotifications은 Swift에서 iOS와 macOS 운영 체제를 위한 로컬 및 원격 알림을 관리하고 처리하는 프레임워크로써, 이 프레임워크를 사용하면 앱이 백그라운드에서 실행되는 동안이나 전혀 실행되지 않을 때도 사용자에게 알림을 보낼 수 있다. 우리는 이 UserNotifications을 활용하여 알림 설정을 구현할 것이다. NotificationManager.swift 파일 생성 아래 코드는 UserNotifications 프레임워크를 사용하여 알림 권한을 관리하고, 앱의 알림 설정 상태를 확인하는 역할을 하는 NotificationManager라는 클래스를 정의하고 있다. 코드의 각 부분을 단계별로 나누어 설명하자면 필요한 모듈을 가져오기: Foundation: 기본적인 시스템.. Framework/SwiftUI 2023. 11. 8. [웹개발자의 IOS 탐방기] 5. ListView를 사용한 알림 화면 구현 서론 설정화면 우측 상단에 알림 아이콘을 넣고, 알림 아이콘을 클릭했을 때 알림 리스트들이 나오는 화면을 구현해보려 한다. 또한 각 아이템에 스와이프하여 삭제 기능까지 추가해보자. SettingView Hedaer 분리 기존 설정 화면에서 구현한 Header부분을 공용으로 사용하기 위해 HeaderView.Swift파일을 생성하여 공용 코드로 관리한다. 우측에 알림 아이콘을 넣어주고, 타이틀을 구분하기 위해 enum HeaderType을 지정해준다. 타입에 맞는 타이틀을 반환하는 함수도 함께 정의한다. enum HeaderType { case setting case notice } func headerTitle(for type: HeaderType) -> String { switch type { case.. Framework/SwiftUI 2023. 11. 8. [웹개발자의 IOS 탐방기] 4. VStack HStack을사용하여설정창 UI 구현 서론 IOS의 NavigationView와 NavigationLink로 이동된 화면에서는 IOS 자체적으로 지원하는 뒤로가기 버튼이 표시된다. 하지만 우리는 좀 더 친숙한 UI를 구현하기 위해 뒤로 가기 버튼부터 시작하여 설정창에 필요한 기능들을 아래와 구현하려고 한다. SwiftUI에서 화면을 그릴때는 주로 VStack과 HStack을 사용한다. 오마주는 당근마켓 설정화면을 기준으로 하였다. VStack, HStack이란? VStack: 수직으로 뷰들을 쌓아 준다. 위에서 아래로 UI 요소들을 일렬로 배열하고 싶을 때 사용한다. HStack: 수평으로 뷰들을 쌓아 준다. 왼쪽에서 오른쪽으로 UI 요소들을 일렬로 배열하고 싶을 때 쓰면 된다. 간단하게 말하면, VStack은 세로로, HStack은 가로로.. Framework/SwiftUI 2023. 11. 8. [웹개발자의 IOS 탐방기] 3. NavigationView 컨테이너뷰를 사용하여 설정창 띄우기 서론 NavigationView는 SwiftUI에서 네비게이션 기능을 제공하는 컨테이너 뷰로서, 주로 계층적 구조의 콘텐츠를 표시하거나 상세 정보를 보여줄 때 사용된다. 예를 들어, 목록에서 항목을 선택하면 해당 항목의 상세 정보 페이지로 이동하는 경우에 NavigationView와 함께 사용한다. 때문에 SwiftUI에서 제공하는 네비게이션 스택을 활용하여 화면 전환을 간편하게 구현할 수 있어서 NavigationView를 활용하여 설정창으로의 화면이동을 구현해보자. SettingView.swift 파일 생성 사용자 로그인/아웃 폼 부터 시작하여 푸쉬 알림 설정, 알림 내역 확인 등을 할 수 있는 Setting에 관련된 뷰 파일을 생성한다. 이 파일은 추후 목적에 맞게 디벨롭 해나갈 예정이다. // /.. Framework/SwiftUI 2023. 11. 8. [웹개발자의 IOS 탐방기] 2. 웹앱에 CustomToolbar 붙이기 서론 [1.Swift UI로 웹앱 만들기] 에서 간단히 만들어본 SwiftUI기반의 웹앱에 본격적으로 SwiftUI 기반의 네이티브 기능들을 하나씩 붙여보려고 한다. 그중 제일 먼저 시작할 Custom Toolbar를 만들어 볼 예정이다. 가장 많이 필요한 "이전","다음","홈","설정" 4개의 버튼을 만들고 그 중 "설정"을 제외한 나머지 기능을 먼저 구현한다. Constants.Swift 파일 생성 나는 전역에서 사용할 상수 혹은 변수를 관리할 때에 Constants 라는 명명을 자주 사용한다. 때문에 여기서도 전역에서 사용할 값을을 다루는 Constants.swift 파일을 생성해줬다. 파일 Source의 경우 Swift File을 선택해준다. 지금 당장은 공통으로 사용할 값이 모바일 도메인 값밖.. Framework/SwiftUI 2023. 11. 8. [웹개발자의 IOS 탐방기] 1. Swift UI로 웹앱 만들기 서론 아이폰의 운영체제(IPhone OS : 이하 IOS) 에서 동작하는 Application (이하 App)은 수만가지가 있다. 사람들이 가장 많이 사용하는 방식으로 SwiftUI를 활용하여 List View & Scroll View 등의 View단위로 구성된 Native App. Unitiy 및 SpriteKit, Unreal Engine 등의 게임 프레임워크 킷들을 사용하여 만드는 Game App 등이 여기에 해당된다. 그중에서 나는 모바일 웹을 앱에서 표현하는 통칭 웹앱에 네이티브 기능을 추가한 하이브리드 앱(Hybrid APP)을 만드려고 한다. SwiftUI를 사용한 웹앱 Project 만들기 웹앱을 만드는데 SwiftUI를 사용한다니 뭔가 어불성실이다. SwiftUI는 대부분 네이티브 앱에서.. Framework/SwiftUI 2023. 11. 8. [Chat GPT] GPT가 만든 PHP, Nginx, Mysql, Mongo, Redis 웹 환경 도커 셋팅 가히 혁명적이다. GPT가 출시된 날을 기점으로 나는 구글링을 멈췄다. 내가 원하고자 하는 답변이 게시되어있는 블로그 찾아 삼만리를 하지 않아도 되는 점이 가장 컸기에 GPT의 의존성을 높였다. 물론 올바른 대답이 아님에도 불구하고 확답처럼 답변을 해서 어리둥둥 했던 적 도 있었지만, 귀찮은 개발 환경 셋팅을 자동으로 시키기에는 훌륭한 존재였다. 물론 완벽하진 않다. 2021년 까지의 데이터를 기반으로 만들어져 있기 때문에 하루가 멀다 하고 update 되는 IT 기술의 최신화된 답변은 어렵지만, 큰 그림에서 도안을 짜고, 셋팅을 하는 것에는 문제가 전혀 없다고 느꼈다. 나 : php 8.1, nginx 1.14, mysql 5.7, redis latest, Mongo latest 로 구성된 docker.. Infrastructure/Docker 2023. 2. 20. AWS CodeDeploy 배포 에러 해결하기 AWS Codedeploy로 배포를 진행하던 도중 전에는 잘만 진행되었던 배포가 에러가 나는 현상이 발생했다. 기존에 애플리케이션 및 배포 그룹 설정까지 잘 설정해줬기 때문에 이런 일이 전혀 없을 줄 알았는데 갑자기 배포 작업이 "실패당해서" 당황했다. 하지만 나도 년차가 쌓여서 그런지, 당황은 뒤로 미뤄두고 좀 더 상세한 에러 로그를 확인하기 위해 세부 정보를 확인해 봤다. 아래와 같은 에러 메시지를 첫 번째로 확인할 수 있었는데 배포 그룹 설정이나 ec2 인스턴스에 특별한 문제는 없어 보였다. The overall deployment failed because too many individual instances failed deployment, too few healthy instances are .. Infrastructure/AWS 2023. 1. 3. Java로 Builder Program 만들기 (완결) - Apache Commons-compress로 빌드 된 프로젝트 폴더 tar.gz 파일로 압축하기 이전 포스팅에서 원하는 도커 이미지를 사용하여 Build 된 프로젝트 폴더를 AWS S3 Bucket에 올리기 쉽게 tar.gz(tgz) 파일로 압축하는 작업을 실행할 차례. apache에서 제공하는 commons-compress 라이브러리를 주입받아 사용한다. Dependency injection 본인은 gadle build tool을 사용하고, commons-compress 1.3버전을 주입받아 사용하였다. dependencies { implementation group: 'org.apache.commons', name: 'commons-compress', version: '1.3' } Make CompressLib Class compress 기능은 추후 다른 곳에서도 사용할 수 있기 때문에 comp.. Server Language/Java 2023. 1. 2. 이전 1 ··· 3 4 5 6 7 8 9 ··· 21 다음