분류 전체보기
-
웹서버 권한분석과탐구 2025. 3. 25. 13:37
1. 개요웹서버 권한을 보면 644, 600이 보이는데, 왜 이런 권한을 사용하는지 알아본다2. 644, 600 권한의 의미644 권한은 rw | r | r 권한으로 사용자는 rw, 그룹은 r, other는 r인 권한이다. 실행은 없는 권한이다. 600은 이것보다 더 강력한 권한으로 그룹과 other는 읽기조차 못한다. 이러한 권한의 주요 특징은 다음과 같다.보안(실행을 하지 못함)필요 최소의 권한(목적에 맞는) 644 권한이 들어간 파일은 주로 html, css, js로 공개적으로 읽을 수 있는 파일들이다.600 권한이 들어간 파일은 소유자만 읽고 쓸수있는 설정 파일, 비밀 키 등이다.3. 웹서버에서 644, 600 권한을 사용하는 이유644 권한웹 서버는 클라이언트에 콘텐츠를 제공해야하므로, 웹서버 ..
-
PHP의 Fiber분석과탐구 2024. 4. 11. 04:14
개요PHP는 멀티스레딩 지원이 빈약하다. pthread 같은 extension을 잠시 지원했으나 더 이상 지원을 하지 않는다.한편, parallel란 익스텐션이 나와 멀티스레딩을 지원하려는 시도가 있었다. 그리고 활발하게 개발되다가 중단되었다.멀티스레딩 지원이 빈약하고 또 개발 중단이 일어나는 이유를 추측해 본다면, 프로그래머가 그것을 필요로 하는 경우가 적기 때문이다. 즉, 수요가 없는 것이다. PHP는 C++, Java같은 일반적인 언어가 아니라 웹 페이지 전달을 목적으로 하기 때문이다. 일반적인 언어에선 처리 속도의 향상, 처리량의 향상을 이유로 멀티스레딩이 요구된다. PHP에선 그렇진 않다. 그런데도, PHP를 하다 보면 멀티스레드가 있으면 좋겠다 싶은 경우가 있다. 파일 입출력, 다른 서버에 A..
-
스트리밍 서비스가 궁금하다분석과탐구 2023. 12. 16. 00:10
스트리밍 서비스가 궁금하다. 최근 트위치가 한국에서 철수했다. 관련 담화들을 보면서 몇 가지 키워드들을 발견했다. 망 사용료, 그리드 네트워크, 스트리밍 서비스 등등... 가벼운 주제가 하나도 없다. 기억을 더듬어보니 개인적으로 스트리밍과 관련된 뭔가를 다룬 적이 한 번도 없었다. 그래서 한 번 알아봤다. 실시간 중계 서비스 분석 스트리밍 서비스도 클라이언트가 서버에 비디오 파일을 요청하고 서버가 파일을 응답하는 구조일 것이다. 서버는 나중에 보기로 하고 보통의 클라이언트인 브라우저에선 어떻게 처리할까? 브라우저에선 HTML5의 video 태그를 이용하여 브라우저에서 비디오를 보여줄 수 있다. 평소에 보던 스포티비에서 실시간 중계를 하길래 보다가 캡처한 것의 일부이다. html을 보니 video 태그를 ..
-
Amazon Lightsail에 배포문제해결 2023. 12. 4. 21:49
서론모두의 토론 백엔드를 아마존 라이트세일에 배포하는 과정을 정리했다.배포 과정모두의 토론 백엔드는 도커 위에 개발 환경을 구축했다. php-apache 이미지를 기반으로 라라벨 웹 서버를 구동시키고, redis 이미지를 활용하여 job을 처리하고, mysql 이미지를 활용하여 데이터베이스를 사용했다. 세 컨테이너를 관리하기 위하여 도커 컴포즈를 활용했다. 따라서 배포 역시 도커를 기반으로 하면 좋을 것이라고 생각하고 진행했다.0. 배포 방법 고민어떻게 배포를 할까 생각했다. AWS, Azure 사이에서 고민했다. Azure를 사용하면 새로운 경험을 할 수 있지만, 결제 정보 관리 포인트가 늘어나므로 AWS로 결정했다. AWS를 만지작 거리다 보니 Lightsail이란 게 눈에 띄었다. AWS의 여러 서..
-
클라우드 트래픽 비용 비교분석과탐구 2023. 11. 29. 20:52
서론 트래픽 비용을 제대로 분석하려면 트래픽당 과금 구조 뿐만 아니라 서버, 디스크, 문제 해결 서비스 등의 가격까지 모두 고려해야 한다. 왜냐하면 트래픽 비용을 다른 서비스 가격에 녹여내서 트래픽 비용은 싼데 다른 서비스가 비싸지거나 그 반대도 가능하기 때문이다. 하지만, 모두 고려할 에너지가 없는 관계로, 관심이 가는 선에서 서버 대여와 트래픽 비용만 따져보려고 한다. 트래픽 계산 트래픽은 사용자가 웹 서비스에 보내는 패킷량과 웹 서비스로부터 받은 패킷양(데이터)의 총합이다. 클라우드 서비스 용어로 다시 말하면, 인바운드(사용자ㅡ>서버)와 아웃바운드(서버ㅡ>사용자) 트래픽이라고 할 수 있다. 인바운드는 초당 트래픽 상한을 두고 무료로 제공하되, 기준을 넘으면 따로 계약하는 것으로 보인다(링크). 아웃..
-
뻘스러운 리팩토링 후짧은경험기 2023. 11. 1. 04:33
뻘스러운 리팩토링 후 개발하던 도중 UserOpinion 클래스가 신경에 거슬렸다. 이 클래스는 현재 로그인한 유저의 의견을 CRUD 하는 용도이다. 내부에 상태가 없고, CRUD하는 용도라 공개된 메소드가 모두 static이었다. 다음과 같은 형태이다. class UserOpinion { static fetch() { ... } static store() { ... } } 그런데, 이상하게 무언가 마음에 안 드는 것이었다. 어떤 점이 신경에 거슬리는지도 모르겠고. 그래서 멍청하게 static을 우선 다 지웠다. 그래도 마음에 안 든다. 왜 신경이 거슬릴까. 그 후로도 이것저것 뻘스럽게 바꿨는데 마음에 안 들었다. 결국, 쉬다가 왜 이런 결과가 나왔는지 처음부터 생각했다. 처음의 계획은 처음의 계획은 U..
-
타입스크립트 삽질짧은경험기 2023. 10. 26. 15:35
1. 타입을 값으로 바꾸려는 삽질 상황 타입스크립트에서 타입을 값으로 바꿀 수 있을까. 이 생각은 FixedArray를 타스에서 구현하려고 한 것으로부터 시작된다. 아래 코드는 타입스크립트에서 FiexArray를 구현하려고 했던 코드이다. class FixedArray { data: RangeObject; constructor() { // 클래스 안에서 N(N으로 주어지는건 1, 2, 4.. 중에 하나인데) // 이것을 타입이 아니라 값으로 얻어오고싶음 // 생성자 인자로 넘기는 방법도 있겠지만, 템플릿 파라미터로도 가능한지 궁금 } } type SIZE = 1 | 2 | 4 | 8 | 16 | 32; type RangeObject = { [K in keyof [...Array]]: T; }; C++의 ..
-
객체지향 프로그래밍분석과탐구 2023. 10. 22. 00:42
객체지향 프로그래밍객체지향 프로그래밍을 이야기하다 보면 개체지향 프로그래밍이란 용어도 보게 된다. 개체는 시스템 안에서 협력하는 개념에 가깝고, 객체는 독립성을 가진 대상을 가리키는 쪽에 가깝다. 객체지향의 object는 개념상으론 개체 쪽에 가까운 것으로 보이는데, 개체보단 객체라는 단어가 주로 쓰인다. MSDN에선 개체지향 프로그래밍으로 명시한다. 일단, 객체가 좀 더 널리 쓰이니, 객체로 하겠다. 객체지향 프로그래밍에 대하여 글을 쓴 계기는 객체지향의 사실과 오해라는 책을 읽고 생각을 정리하고 싶어서다. 여태까지의 경험과 책의 내용을 종합하여, 객체지향을 정리할 것이다.객체지향과 절차지향객체지향 프로그래밍과 절차지향 프로그래밍의 차이점은 무엇인가. 그것은 코드 진행의 최소 단위를 객체로 보면 객체지..