분류 전체보기 20

깃허브 원격 저장소를 케이크처럼 쉽게 먹는 법

깃허브 원격 저장소를 추가하는 방법을 알아볼 것이다. 이것이 되어있어야 깃허브 쓰기가 편해진다. 대상 폴더 및 파일 난 이미 데스크톱 노트북 다 연결했으니 VM에서 새로운 폴더를 만들어하겠다. RSA키가 있는지 확인하기 ls -al ~/.ssh id_rsa , id_rsa.pub라는 파일이 있다면 이미 RSA 키가 있는 것이니 생성 작업은 생략하여도 된다. 새로운 RSA 키 생성하기 ssh-keygen -t rsa -b 4096 -C "your_email@example.com" 여기서 your_email은 사용자의 이메일로 대체하고 기본 설정을 유지하려면 Enter를 누르자 제대로 입력이 되었다면 이렇게 될 것이다. SSH 추가 eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_r..

뻘짓 2023.05.14

Iptables 인바운드 & 아웃바운드 트래픽 관리하기

Inbound Outbound란? 네트워크간 이동경로는 두가지가 있다. 클라이언트 내부로 이동하는 : 인바운드 클라이언트 외부로 이동하는: 아웃바운드 구분 Inbound Traffic Outbound Traffic 정의 외부 네트워크에서 내부 네트워크로 들어오는 데이터 트래픽 내부 네트워크에서 외부 네트워크로 나가는 데이터 트래픽 보안 목표 악성 코드 유입, 무단 접근, DDoS 공격 등의 외부 위협 차단 데이터 유출, 불필요한 트래픽 제어, 내부 위협 차단 방화벽 설정 예시 특정 IP 주소 또는 포트로의 접근 허용/차단 특정 IP 주소 또는 포트로의 접근 허용/차단 관리 도구 iptables, nftables, 방화벽 소프트웨어 및 하드웨어 iptables, nftables, 방화벽 소프트웨어 및 하드..

[C언어 4강] 연산자 + 이진수 체계

이번엔 계산을 하기 위한 연산자를 알아볼 것이다. 연산자 : 프로그래밍 언어에서 일반적으로 연산의 집합을 의미한다. 프로그래밍에서 사용되는 연산자의 종류는 다음과 같다. 대입 연산자 : =산술 연산자 : + , - , * , / , %논리 연산자 : ! , && , ||증감 연산자 : ++ , --삼항연산자 : ? :비트 연산자 : ! , ~ , & , ^ , >> , , =, = 180) && (A_weight >= 80)); printf("키가 180이상 이거나 몸무게가 80Kg 이상 : %d\n", (A_height >= 180) || (A_weight >= 80)); printf("키가 180이상 이면서 몸무게가 80Kg 이상 : %d\n",..

쉽게 쓰여진 C 2023.04.29

[C언어 뻘짓] 정렬 다 될때 까지 숨참는다!

라고 적혀있는데요? BOGO SORT 정렬이긴 한데 무작위 정렬이다. 정렬이 될 때까지 계속 정렬을 시도한다는 게 이 정렬에 특징이다. 무작위로 정렬을 해주기 때문에 운만 좋으면 빨리 될 수도 있다. 자료를 보면 n * n! 이란 무시무시한 시간 복잡도가 나온다. 시간 복잡도 사실 보고정렬의 시간복잡도는 의미가 없다. 이걸 알아보는것도 웃긴 게 내가 지금 학교에서 이걸 쓰고 있는데 2교시에 숫자 28개 돌려놓은걸 점심 먹고 5교시하는 동안 끝날기미가 보이지 않는다. 이렇게 정렬이 랜덤이기 때문에 숫자가 좀만 커지면 끝날 기미가 보이지 않기 때문이다. 평균 시간 복잡도 : O((n+1)!) 배열의 가능한 수열이 n! 개 있기 때문에 이러한 시간복잡도가 나온다. 최악의 경우 : 무한 배열이 무작위로 섞이기에..

뻘짓 2023.04.17

[C언어 3강] 서식 지정자, 세미콜론, 주석, 중괄호, 들여쓰기

서식 지정자 서식 지정자는 굉장히 간단하다. 예시 코드로 한번 봐보자 #include int main() { printf("%s\n", "Hello, world!"); // String Format printf("%s %d\n", "Hello", 1234); // String & int Format printf("%s %s\n", "Hello,", "1234"); // String & String Format return 0; } 바로 포맷팅 해줘서 사용할 수 있다. 세미콜론 우리는 세미콜론은 항상 코드에 끝에 넣는다 이렇게 알고 있다. 만약 그렇게 된다면 #include ; int main() { ; printf(""); return 0; } ; // 굉장히 끔찍한 코드 이런 정말 끔찍한 코드가 나올 ..

쉽게 쓰여진 C 2023.04.17

[C언어 2-1강] 변수와 데이터 타입 (심화)

이번엔 저번보다는 조금 어려울 수도 있다. 하지만 내가 아는 지식 안에서 최대한 쉽게 설명해 보겠다. 어려워도 지금은 굳이 이걸 다? 안 이해해도 괜찮다. 나중에 조금 더 익숙해지면 다시 알아가면 되는 것이다. 만약 이해가 안 된다면 괜찮다, 나도 이런 거 이해하기까지 영겁의 시간이 걸렸기 때문이다. 변수 이름 짓는 방법 가정을 해보자 내가 중요한 프로그램에 키 값을 결정하는 변수를 만들 것이다. char asdf[] = "7J2066CH6rKMIO2VmOuptCDsoobrkKnri4jri6Qu"; // 물론 실무에서 코드에 대놓고 키 값을 박아놓는 일은 드물다. printf("%s", asdf); 이렇게 목적이 불분명하고 무엇을 하는지 알 수 없는 변수명은 코드 가독성을 떨어뜨리고 유지보수에 어려움을 ..

쉽게 쓰여진 C 2023.04.10

[C언어 2-0강] 변수와 데이터 타입 (기초)

컴퓨터에서 숫자, 문자 등을 저장하고 사용하는 상황은 빈번하다. 출력문 안에 직접 숫자를 넣어 사용할 수 있지만, 만약 숫자가 크거나 사용 빈도가 높다면 변수를 사용하는 것이 훨씬 효율적이다. 변수에는 여러 가지 자료형이 있다. 만약 문자를 사용하고 싶다면 char라는 자료형을 사용하고 숫자를 사용하고 싶다면 int를 사용하면 된다. 그렇다면 변수에 규칙을 알아볼까? 선언 : 변수의 자료형과 이름을 지정 (예 : int num;) 초기화 : 변수를 선언함과 동시에 초기값을 할당 (예 : int num = 1;) 할당 : 변수에 값을 대입 (예 : num = 2;) 그럼 기본적인 코드 구조를 한번 봐보자 Int 변수 사용 #include int main() { int num1 = 10; int num2 =..

쉽게 쓰여진 C 2023.04.09

[C언어 1강] printf

출력문 이번에 배워볼 코드는 #include int main() { printf("Hello World\n"); return 0; } 이거다. C언어에 기본적인 출력문이라고 볼 수 있다. 하나하나씩 알아보도록 하자! #include 제일 처음으로 한다면 보이는 이 친구는 헤더파일이라고 하는데 우린 항상 언제나 코드 첫 줄에 이 헤더파일을 넣고 시작할 것이다. 쉽게 예를 들어 공사장에서 작업을 한다고 해보자 그런데 공구가 없다. 그럼 맨손으로 모든 건물을 만들어야 할 것이다. 이제 기본적인 공구 망치나 드릴 같은 것을 모아둔 게 이 #include 이다. 맨손으로 건물 만들기 싫으면 코드 맨 첫 줄에 이 도구상자를 꼭 쓰자 int main() 우선 main의 뜻을 알아볼까 가장 큰(중요한) 말 그대로 메인..

쉽게 쓰여진 C 2023.04.07

C언어 세팅 Visual Studio 2022

우선 C코딩을 하려면 C언어를 작성하고 실행하기 위한 개발 환경이 필요하다. 이런 개발 환경을 우린 IDE라고 한다. C언어 IDE는 많지만 사람들이 많이 쓰고 비교적 편리한 Visual Studio라는 IDE를 쓰도록 하겠다 https://visualstudio.microsoft.com/ko/ Visual Studio: 소프트웨어 개발자 및 Teams용 IDE 및 코드 편집기 Visual Studio 개발 도구 및 서비스를 사용하면 모든 개발자가 모든 플랫폼 및 언어로 앱을 쉽게 개발할 수 있습니다. 무료로 어디서나 코드 편집기 또는 IDE를 사용하여 개발하세요. visualstudio.microsoft.com 사이트에 일단 접속해준다. Visual Studio Community를 다운로드하여 준다. ..

쉽게 쓰여진 C 2023.04.07

C언어 첫 경험

C언어가 뭘까? 분명히 간단하게라고 말했지만 전혀 간단히 얘기하지 않는다. 괜찮다, 정말 간단히 설명해 주겠다. 프로그래밍 컴퓨터와 소통(^^)을 하고 코딩을 하기 위해선 컴퓨터도 언어가 필요하다! 두 가지 종류로 저급언어 고급언어라는 것이 있다. 이름만 들으면 저급언어는 좋지 않고 고급언어는 좋은 언어다! 이렇게 느낄 수 있겠지만 아니다. 저급언어 컴퓨터 그니까 기계가 좋아하는 언어이다. 사실 컴퓨터 같은 전자기기는 0과 1 즉 불이 껐다 ~ 켜졌다 ~ 로 작동하게 된다. 즉 저급언어는 이런 컴퓨터와 가까운 언어로 우리가 보기엔 힘들지만 컴퓨터가 좋아하는 언어다. ex) 기계어나 어셈블리어 같은 언어들이 있다. 고급언어 #include int main() { printf("Hello World!"); ..

쉽게 쓰여진 C 2023.04.07