Web/Backend

    논문 요약 - WebLinux: a scalable in-browser and client-side Linux and IDE

    (PDF) WebLinux: a scalable in-browser and client-side Linux and IDE PDF | "WebLinux" is a web app tool providing a standard Linux OS and an IDE in the browser, including a terminal, a code editor and a file browser. It... | Find, read and cite all the research you need on ResearchGate www.researchgate.net ABSTRACT Weblinux: 표준 LINUX OS/IDE를 제공하는 웹 앱 도구 터미널, 코드 에디터, 파일 브라우저 기능 제공 JS emulated proc..

    Online Judge에서 발생할 수 있는 보안 이슈

    Online Judge 온라인 저지 코드를 제출/컴파일/실행 후 제시된 문제에 대해 올바른 코드인지 여부를 판단해주는 서비스를 제공하는 사이트를 의미한다. 커스터마이징을 잘 한다면 알고리즘/자료구조 뿐만이 아니라 일반적인 프로그래밍 과제 채점에도 사용 가능할 수 있다. 객관적이고 효율적인 채점이 가능하다는 장점이 있음. 하지만 사용자가 직접 작성한 코드를 가져와서 실행시키는 Process 구조 상 여러가지 보안 문제가 발생할 위험성이 높다. Authorization(권한) Online Judge는 과제 채점 및 대회 개최를 위해 기관에서 사용하기 위한 것이므로, 적절한 권한 승인 프로세스를 통합해야 한다. 사용자는 온라인에서 신중하게 권한을 부여받아야 한다. 보안 침해 시도를 방지하기 위해 각 사용자마다..

    온라인 저지에서 시스템 콜 막기(Sandbox)

    백준과 같은 온라인 저지에서는 코드에 악의적인 system call을 넣는 사용자들을 막기 위해 다양한 방법을 사용한다. (Sandbox) Sandbox 외부로부터 들어온 프로그램이 보호된 영역에서 동작해 시스템이 부정하게 조작되는 것을 막는 보안 형태 Seccomp 리눅스 커널에서 애플리케이션 샌드박싱 메커니즘을 제공하는 컴퓨터 보안 기능 정해지지 않은 system call이 들어오면 바로 종료시켜버림. 2가지의 mode가 있다. Strict_Mode read, write, exit, sigreturn 4 가지의 syscall 만을 사용할 수 있는 모드 허용되지 않은 syscall이 호출되었을 경우, SIGKILL_Signal을 받고 종료된다. Filter_Mode syscall 별로 원하는 동작을 직..

    Windows에서 WSL로 파일 복사하기

    1. WSL 실행 (Windows 안에서 리눅스 실행) 2. 파일 있는 곳으로 이동 $ cd /mnt/c/Users/(user명)/Desktop 3. 파일 복사 (linux의 홈 디렉토리로) $ cp test.txt ~/ 4. 결과 확인 $ cd ~ $ ls

    Linux(Ubuntu)에서 Python 버전 변경하기

    Alternative 리눅스의 Alternatives를 이용하면 python 버전을 쉽게 변경하고 관리할 수 있습니다. Alternatives는 기본 커맨드의 심볼릭 링크를 관리해주는 리눅스 프로그램입니다. 데비안 계열의 리눅스(우분투)에서는 update-alternatives가 제공됩니다. update-alternatives에 대한 자세한 설명과 명령어는 manpages를 참고해주세요. 파이썬의 실행 위치 및 Alternative 설명 which python 명령어를 사용하면 현재 사용하는 파이썬이 어디에 설치되어있는지 알 수 있습니다. 파일 이름을 보면 실제 위치가 아니라, 심볼릭 링크이고 파이썬이 실제 설치된 위치를 가리킬 것 같습니다. $ python -V Python 2.7.14 $ which ..

    Tools for load test

    부하 테스트, 스트레스 테스트 라고도 함. Locust.io 파이썬 기반 https://locust.io/ Locust - A modern load testing framework Example code A fundamental feature of Locust is that you describe all your test in Python code. No need for clunky UIs or bloated XML, just plain code. Select example Simple With HTML parsing Nested TaskSets locust.io Apache Jmeter JAVA 기반 http://jmeter.apache.org/download_jmeter.cgi Apache JMete..

    [백엔드 기초] 7. DB Parallelization

    Scale up vs Scale out Scale up vs Scale out 구분 Scale up Scale out 명칭 스케일업 스케일아웃 관점 서버의 하드웨어 성능을 높이는 것 서버의 수를 증가 설명 · 보통 말하는 업그레이드 · CPU 클럭 속도, 코어 수 나 메모리 그리고 하드디스크 등 서버자원을 추가하여 처리능력을 향상시키는 방식. · 기존 스토리지에 필요한 만큼의 용량 증가 · 동일한 서버/DBMS를 병렬로 구축 · 용량과 성능 요구조건에 맞추기 위해 node단위 (스토리지)로 증가되고 하나의 시스템처럼 운영 · 서버의 수를 증가시켜서 처리능력을 향상시키는 방식 · 여러 대의 서버를 하나의 시스템으로 인식시키는 방법 비용 · 컨트롤러나 네트워크 인프라 비용은 별도로 발생하지 않고 디스크만 추..

    [백엔드 기초] 6. Web server(Nginx, Gunicorn, Dramatiq)

    Web server 개요 1. 클라이언트 웹서버(Nginx)로 HTTP 요청 2. 웹서버(Nginx) 웹 서버. 클라이언트로부터의 HTTP요청을 받아 정적인 페이지/파일을 돌려줌. (동적인 부분은 uWSGI가 담당) 가벼움과 높은 성능이 목표. 웹 서버, 리버스 프록시 및 메일 프록시 기능을 가짐. 3. Unix Socket 웹서버(Nginx) - 웹어플리케이션서버(uWSGI) 사이의 통신을 매개 HTTP 요청을 사용할 수도 있지만 서버 안쪽에서의 통신이기 때문에 socket 방식이 overhead가 적어서 더 효율이 좋음 4. 웹어플리케이션서버(uWSGI) 웹 서버(Nginx)와 웹 애플리케이션(Django)간의 연결을 중계 (Nginx에서 받은 요청을 Django에서 처리하기 위한 중계인 역할) Ng..