[ 시스템 프로그래밍 ] fork()와 execve()의 차이를 알아보자 포스팅 썸네일 이미지

프로그래밍

[ 시스템 프로그래밍 ] fork()와 execve()의 차이를 알아보자

1. fork()란 무엇인가 - 새로운 프로세스를 생성한 뒤에 현재 프로세스의 메모리 상태를 새로운 프로세스에 그대로 복사하는 것이다. - 부모 프로세스의 메모리 상태에서 몇 가지를 제외하고 그대로 복사하는데 이 중에 부모 프로세스와 다른 것은 pid이다. - 아래 결과를 보면 부모 프로세스와 자식프로세스는 독립된 메모리 주소를 사용한다. ( Code 영역은 공유함 ) - 아래 출력 결과를 보면 자식 프로세스에서 printf를 찍어도 stdout으로 출력된다. 즉, 부모 프로세스의 파일 디스크럽터를 자식프로세스에서 복사한다. - fork로 만들어진 자식 프로세스 부모 프로세스 사이의 통신은 IPC통신을 한다. 대표적으로는 PIPE통신이 있다. - return값은 2개이고, 0과 프로세스 id이다. 0은 ..

2022.04.14 게시됨

[ Docker ] 도커로 로드밸런싱한 서비스 배포하기 포스팅 썸네일 이미지

프로그래밍

[ Docker ] 도커로 로드밸런싱한 서비스 배포하기

1. 로드밸런싱이란? - 로드밸런싱이란 클라이언트가 많아졌을 때를 대비해 하나의 대표 서버를 두고, 대표 서버 뒤에서는 각자의 역할만을 하는 서버를 여러대 두는 것입니다. - 아래의 gif를 보시면 한번에 이해될 것 입니다.(gif설명이 너무 좋아서 가져왔습니다) - 즉, 하나의 서버만을 이용하면 과부하가 걸려 요청을 받을 수 없게 되거나 서비스가 느려집니다. 이를 방지하기 위해 로드밸런서가 요청을 분담하거나 구별해 일을 나누어 처리하는 것입니다. 2. 도커를 이용한 로드밸런싱 실습 - 먼저 저는 Windows에서 로드밸런싱을 실습하기 위해 Docker Desktop과 node.js을 이용하였습니다. - "npm init"을 하여 package.json을 생성한 뒤에 웹 페이지와 도커 컨테이너를 만들어 ..

2022.03.24 게시됨

[ AWS ] 도커를 이용해 AWS에서 배포하기 포스팅 썸네일 이미지

프로그래밍

[ AWS ] 도커를 이용해 AWS에서 배포하기

AWS 계정 및 인스턴스 접속 - 처음 AWS에 가입하게 되면 Free Tier요금제를 이용해 무료에 가까운 저렴한 가격에 이용할 수 있다. - 가입을 해준 다음 EC2를 이용해 가상 서버를 만든다. 이후에는 우측에 인스턴스 시작에서 Free tier용 원하는 이미지를 선택한다. 나는 ubuntu18.04 LTS x86을 선택했다. 키페어는 ssh접속 시에 사용하는 private key이다. 다운로드 받아 리얼 해커들이 못 털어가게 꼭꼭 숨겨놓자 인스턴스 선택 후 연결 버튼을 누르면 ssh로 어떻게 접속하는지 나온다. ex) ssh -i ~~~ 인스턴스를 ssh로 할시에 vi를 써야 하는데 렉이 많이 걸리니까 vscode로 연결해서 작업할 예정이다. 연결 방법은 아래 블로그를 참고했다. https://k..

2022.01.21 게시됨

[ Python ] 파이썬에서 __str__과 __repr__에 대해 알아보자 포스팅 썸네일 이미지

프로그래밍

[ Python ] 파이썬에서 __str__과 __repr__에 대해 알아보자

__str__과 __repr__에 대해 알아본 이유 - 웹 공부를 해나가면서 Python Flask로 짜여진 코드를 많이 읽는다. C언어와는 다르게 파이썬에서는 Class를 이용한 OOP코딩을 지향하시는 분들이 많다. 아래 코드는 드림핵에서 발췌해온 코드이다. 단순히 SQL을 쓰고 User라는 DB를 클래스화 시켜놨다. 객체의 다른 함수들은 그냥 평범한 메소드이다. 하지만 __repr__, __init__이렇게 언더라인 두 개가 붙어 있는 함수들은 특별한 의미를 가지고 있는 것 같았다. 예를 들어 __init__은 객체를 선언했을 때 생성자 역할을 하여 객체들의 값들을 초기화 시켜준다. 하지만 __repr__는 뭐하는 친구인지 궁금했다. from sqlalchemy import Column, Intege..

2022.01.19 게시됨

[ Network ] PC에서 모바일 패킷 캡쳐 방법 포스팅 썸네일 이미지

프로그래밍

[ Network ] PC에서 모바일 패킷 캡쳐 방법

항상 컴퓨터 패킷만 캡쳐하고 분석하다가 이번 주부터는 모바일 앱에서 이용하는 패킷을 캡쳐를 해야했다. 하지만 모바일에서는 wireshark도 안 깔리는데 어떻게 하는지 궁금했는데 조교님이 친절하게 링크도 보내주셨다. https://domdom.tistory.com/221 요약하자면 이렇다. 1. wifi가 되는 컴퓨터/노트북에서 핫스팟 공유 키기 2. 휴대폰으로 핫스팟에 연결 3. 로컬 영역 연결 10에서 핸드폰이 주고 받는 캡쳐 내용이 뜬다. 유투브 정지 누를 때 오고 가는 패킷이 멈추는 것을 보니 제대로 동작한다

2022.01.06 게시됨

프로그래밍

[ Network ] 네떡 종강 전 마지막 과제..

1. DNS를 통해 IP주소를 알아내는 과정 https://it-mesung.tistory.com/180 [Network] DNS 과정 DNS(Domain Name System) 개인 컴퓨터의 웹에서 www.naver.com을 입력하면 어떤 과정을 통해 접속하는 지 살펴보자. DNS는 IP 주소를 기억하는 것이 어렵기 때문에 DNS가 등장한 것이다. DNS의 과정을 간략히 it-mesung.tistory.com 2. https://ijbgo.tistory.com/27 DNS 동작원리 DNS란 www.example.com과 같이 사람이 읽을 수 있는 이름을 192.0.2.1과 같은 숫자 IP 주소로 변환하여 컴퓨터가 서로 통신할 수 있도록 한다. 인터넷의 DNS 시스템은 이름과 숫자 간의 매핑을 관리하여 ..

2021.12.20 게시됨

프로그래밍

[Android] 안드로이드 프로젝트를 위한 잡지식들

소스코드를 각각 올리면 올릴게 너무 많아져서 코드와 실행영상을 동영상으로만 기록하겠다. 1. 화면 넘기기( 액티비티 전환 이용) 출처 : https://blog.naver.com/eominsuk55/220227937851 부족한 점 : Button Onclick을 이벤트 리스너로 등록해서 해보기 2. 버튼 꾸미기 ( Custom Button) https://onemask514.tistory.com/24 3. 로딩 화면 구현(스플래시) https://blog.naver.com/eominsuk55/220396966709 4. 앱 종료 다이어로그 https://chjune0205.tistory.com/entry/Android-Custom-Dialog-%EB%A7%8C%EB%93%A4%EA%B8%B0-Dialo..

2021.11.14 게시됨

프로그래밍

[ Android] 안드로이드 찐막

1. 자바 코드로 화면 구성하기 - LinearLayout 객체 생성 - 버튼 객체 생성 - setText와 위에서 생성한 linear객체에 버튼을 addView해줌 - setContentView(linear)로 LinearLayout객체를 화면에 나타내준다. package com.example.zzinmak; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.widget.Button; import android.widget.LinearLayout; public class MainActivity extends AppCompatActivity { @Override protected void onC..

2021.10.22 게시됨