분류 전체보기
-
JSON은 다목적 데이터 교환 형식이지만 특정 시나리오에서는 성능 제한으로 인해 더 빠른 대안을 모색하게 되었습니다. 이러한 대안 중 일부를 자세히 살펴보고 이를 선택할 수 있는 시기와 이유를 이해해 보겠습니다. 1. Protocol Buffer(protobuf) https://protobuf.dev/ protobuf 라고도 하는 프로토콜 버퍼는 Google 에서 개발한 바이너리 직렬화 형식입니다 . 효율성, 소형화 및 속도를 위해 설계되었습니다. Protobuf의 바이너리 특성으로 인해 직렬화 및 역직렬화 작업이 JSON보다 훨씬 빠릅니다. 채택 시기 : 특히 마이크로서비스 아키텍처, IoT 애플리케이션 또는 네트워크 대역폭이 제한된 시나리오에서 고성능 데이터 교환이 필요한 경우 protobuf를 고려..
JSON 대체재(성능 향상을 위한 대체재)JSON은 다목적 데이터 교환 형식이지만 특정 시나리오에서는 성능 제한으로 인해 더 빠른 대안을 모색하게 되었습니다. 이러한 대안 중 일부를 자세히 살펴보고 이를 선택할 수 있는 시기와 이유를 이해해 보겠습니다. 1. Protocol Buffer(protobuf) https://protobuf.dev/ protobuf 라고도 하는 프로토콜 버퍼는 Google 에서 개발한 바이너리 직렬화 형식입니다 . 효율성, 소형화 및 속도를 위해 설계되었습니다. Protobuf의 바이너리 특성으로 인해 직렬화 및 역직렬화 작업이 JSON보다 훨씬 빠릅니다. 채택 시기 : 특히 마이크로서비스 아키텍처, IoT 애플리케이션 또는 네트워크 대역폭이 제한된 시나리오에서 고성능 데이터 교환이 필요한 경우 protobuf를 고려..
2024.03.17 -
최적화 되지 않은 JSON 사용으로 인해 발생한 성능 병목 현상을 해결한 실제 사례를 알아보고 LinkedIn 및 Auth0과 같은 유명한 플랫폼부터 Uber와 같은 거대 기술 기업에 이르기까지 JSON을 활용하면서 속도와 응답성을 높이기 위해 어떤 전략이 사용되었는지 알아봅시다. 1. LinkedIn의 프로토콜 버퍼 통합: 문제 : LinkedIn은 JSON의 장황함과 이로 인한 네트워크 대역폭 사용량 증가로 인해 대기 시간이 길어지는 문제를 경험했습니다. 솔루션 : 마이크로서비스 통신에서 JSON을 대체하기 위해 바이너리 직렬화 형식인 프로토콜 버퍼를 채택했습니다. 결과 : 이 최적화를 통해 대기 시간이 최대 60% 까지 줄어들어 LinkedIn 서비스의 속도와 응답성이 향상되었습니다. 2. Uber..
JSON 속도 최적화 향상 사례(실화)최적화 되지 않은 JSON 사용으로 인해 발생한 성능 병목 현상을 해결한 실제 사례를 알아보고 LinkedIn 및 Auth0과 같은 유명한 플랫폼부터 Uber와 같은 거대 기술 기업에 이르기까지 JSON을 활용하면서 속도와 응답성을 높이기 위해 어떤 전략이 사용되었는지 알아봅시다. 1. LinkedIn의 프로토콜 버퍼 통합: 문제 : LinkedIn은 JSON의 장황함과 이로 인한 네트워크 대역폭 사용량 증가로 인해 대기 시간이 길어지는 문제를 경험했습니다. 솔루션 : 마이크로서비스 통신에서 JSON을 대체하기 위해 바이너리 직렬화 형식인 프로토콜 버퍼를 채택했습니다. 결과 : 이 최적화를 통해 대기 시간이 최대 60% 까지 줄어들어 LinkedIn 서비스의 속도와 응답성이 향상되었습니다. 2. Uber..
2024.03.17 -
JSON은 웹 개발에 널리 채택되고 있지만 속도 문제가 없는 것은 아닙니다. 이 형식은 사람이 읽을 수 있는 특성으로 인해 데이터 페이로드(전송되는 '순수한 데이터')가 커지고 처리 시간이 느려질 수 있습니다. 그럼 JSON을 더 빠르고 효율적으로 만들기 위해 어떻게 최적화할 수 있을까요? 이제 JSON이 애플리케이션의 속도와 효율성을 유지할 수 있도록 JSON의 성능 향상 방법을 알아봅시다. 1. 데이터 크기 최소화: 짧고 설명적인 키 사용: 간결하지만 의미 있는 키 이름을 선택하여 JSON 개체의 크기를 줄입니다. // 비효율적 { "customer_name_with_spaces" : "John Doe" } // 효율적 { "customerName" : "John Doe" } 가능한 경우 약어 사용:..
JSON 성능 최적화JSON은 웹 개발에 널리 채택되고 있지만 속도 문제가 없는 것은 아닙니다. 이 형식은 사람이 읽을 수 있는 특성으로 인해 데이터 페이로드(전송되는 '순수한 데이터')가 커지고 처리 시간이 느려질 수 있습니다. 그럼 JSON을 더 빠르고 효율적으로 만들기 위해 어떻게 최적화할 수 있을까요? 이제 JSON이 애플리케이션의 속도와 효율성을 유지할 수 있도록 JSON의 성능 향상 방법을 알아봅시다. 1. 데이터 크기 최소화: 짧고 설명적인 키 사용: 간결하지만 의미 있는 키 이름을 선택하여 JSON 개체의 크기를 줄입니다. // 비효율적 { "customer_name_with_spaces" : "John Doe" } // 효율적 { "customerName" : "John Doe" } 가능한 경우 약어 사용:..
2024.03.16 -
OWASP(The Open Web Application Security Project)는 오픈소스 웹 애플리케이션 보안 프로젝트로, 주로 웹에 관한 정보노출, 악성 파일 및 스크립트, 보안 취약점 등을 연구하며, 웹 애플리케이션의 취약점 중에서 빈도가 많이 발생하고, 보안상 영향을 크게 줄 수 있는 것들의 10대 취약점들을 발표합니다. 보통 3~4년을 주기로 Top 10 리스트를 발표합니다. A01 : Broken Access Control (접근 권한 취약점) 엑세스 제어는 사용자가 권한을 벗어나 행동할 수 없도록 정책을 시행합니다. 만약 엑세스 제어가 취약하면 사용자는 주어진 권한을 벗어나 모든 데이터를 무단으로 열람, 수정 혹은 삭제 등의 행위로 이어질 수 있습니다. → 사용자가 로그인을 했을 때 ..
Fast API기반 Backend Server OWASP 체크OWASP(The Open Web Application Security Project)는 오픈소스 웹 애플리케이션 보안 프로젝트로, 주로 웹에 관한 정보노출, 악성 파일 및 스크립트, 보안 취약점 등을 연구하며, 웹 애플리케이션의 취약점 중에서 빈도가 많이 발생하고, 보안상 영향을 크게 줄 수 있는 것들의 10대 취약점들을 발표합니다. 보통 3~4년을 주기로 Top 10 리스트를 발표합니다. A01 : Broken Access Control (접근 권한 취약점) 엑세스 제어는 사용자가 권한을 벗어나 행동할 수 없도록 정책을 시행합니다. 만약 엑세스 제어가 취약하면 사용자는 주어진 권한을 벗어나 모든 데이터를 무단으로 열람, 수정 혹은 삭제 등의 행위로 이어질 수 있습니다. → 사용자가 로그인을 했을 때 ..
2024.03.08 -
파이썬으로 자동화할때 죽지않고 계속 일정 간격으로 명령어를 실행하는 스크립트가 필요할때가 있다. 답은 daemon을 사용하면 된다. 코드부터 보자 import socket import subprocess import time import os import sys import daemon from daemon import pidfile from daemon import runner import argparse def runPortChecker(): while True: time.sleep(5) sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) result = sock.connect_ex(('127.0.0.1', 8000)) # ip, port if res..
python 죽지않는 daemon 스크립트 짜기파이썬으로 자동화할때 죽지않고 계속 일정 간격으로 명령어를 실행하는 스크립트가 필요할때가 있다. 답은 daemon을 사용하면 된다. 코드부터 보자 import socket import subprocess import time import os import sys import daemon from daemon import pidfile from daemon import runner import argparse def runPortChecker(): while True: time.sleep(5) sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) result = sock.connect_ex(('127.0.0.1', 8000)) # ip, port if res..
2024.03.07 -
웹 브라우저에서 컴퓨터를 켰을때나 특정 일을 반복할때 유용한 자동화 테크닉이다. 코드부터 보자 우선 열려 있는 브라우저를 찾아야한다 아래는 크롬 브라우저를 찾는 함수다. # Chrome 브라우저 창을 찾는 함수 def findChromeWindow(): try: # xdotool 명령어 실행하여 Chrome 브라우저 창의 ID 가져오기 cmd = "xdotool search --onlyvisible --class Chrome" chromeWindowId = os.popen(cmd).read().strip() print('chromeWindowId', chromeWindowId) return chromeWindowId except Exception as e: print(f"오류 발생: {e}") retur..
python으로 xdotool을 사용해서 크롬 브라우저를 찾아 특정 포인트를 클릭해보자웹 브라우저에서 컴퓨터를 켰을때나 특정 일을 반복할때 유용한 자동화 테크닉이다. 코드부터 보자 우선 열려 있는 브라우저를 찾아야한다 아래는 크롬 브라우저를 찾는 함수다. # Chrome 브라우저 창을 찾는 함수 def findChromeWindow(): try: # xdotool 명령어 실행하여 Chrome 브라우저 창의 ID 가져오기 cmd = "xdotool search --onlyvisible --class Chrome" chromeWindowId = os.popen(cmd).read().strip() print('chromeWindowId', chromeWindowId) return chromeWindowId except Exception as e: print(f"오류 발생: {e}") retur..
2024.03.07 -
밑에꺼 사용하시면 됩니다. ssh-keygen -R [서버 ip]
[SSH 접속시 에러] @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @밑에꺼 사용하시면 됩니다. ssh-keygen -R [서버 ip]
2024.03.07 -
클라이언트 리눅스에서 실시 ssh-keygen -t rsa id_rsa 복사 (.ssh 없다고 뜨면 그냥 mkdir로 만들면 됩니다.) scp ~/.ssh/id_rsa.pub user@192.168.0.24:id_rsa.pub 접속은 다음처럼 userid@server ip 로 접속 ssh user@192.168.0.24 접속 후 다음 명령어 실행 cat id_rsa.pub >> ~/.ssh/authorized_keys chmod 700 ~/.ssh/authorized_keys 이제 빠져나와서 다시 접속하면 비밀번호 묻지 않고 접속 가능해집니다. ------------------------------------ 위의 명령어들 단축 scp ~/.ssh/id_rsa.pub user@192.168.0.73:id..
비밀번호 없이 SSH 접속클라이언트 리눅스에서 실시 ssh-keygen -t rsa id_rsa 복사 (.ssh 없다고 뜨면 그냥 mkdir로 만들면 됩니다.) scp ~/.ssh/id_rsa.pub user@192.168.0.24:id_rsa.pub 접속은 다음처럼 userid@server ip 로 접속 ssh user@192.168.0.24 접속 후 다음 명령어 실행 cat id_rsa.pub >> ~/.ssh/authorized_keys chmod 700 ~/.ssh/authorized_keys 이제 빠져나와서 다시 접속하면 비밀번호 묻지 않고 접속 가능해집니다. ------------------------------------ 위의 명령어들 단축 scp ~/.ssh/id_rsa.pub user@192.168.0.73:id..
2024.03.07