Embedded IoT 2차시 시리얼 모니터란? 시리얼 모니터는, 아두이노에서 보내주는 데이터를 아두이노 IDE에 포함되어 있는 별도의 창을 통해 출력하는것을 말한다. 아두이노 IDE화면에서 우측상단에 돋보기 모양 아이콘을 클릭하면 시리얼 모니터를 켤 수 있다. 다음과 같이 회로를 구성하고 코드를 실행하면, 시리얼 모니터에 LED가 꺼지고 켜질때마다 각각 HIGH, LOW가 출력되는것을 볼
Embedded IoT 1차시 IOT란? IOT는 Internet of Things의 줄임말로 사물인터넷이라고도 말합니다. 센서가 장착된 연결된 오브젝트와 장치로 이루어진 네트워크로, 다른 사물 및 시스템과 데이터를 전송하고 수신할 수 있습니다. 우리 일상속의 IOT는 스마트워치, AI스피커, 무선이어폰 등이 있습니다. 아두이노란? 아두이노는 오픈 소스를 기반으로 한 단일 보드 마이크로컨트롤러로 완성된 보드와 관련
Programming Codeup 1610 : 서브 스트링, 1620 : 자릿수의 합 1610 문제 서브 스트링 함수는 문자열 처리에 있어 아주 유용한 함수이다.(엑셀이나 VB에선 Mid함수) 이 함수는 원본 문자열에서 특정위치에서 부터 몇 글자를 추출하는 함수이다. 이 함수를 직접 구현해보자. 첫째 줄에 문자열이 공백없이 입력된다.(문자열은 100글자 이하) 둘째 줄에 문자열의 시작위치와 글자 개수가 입력된다. (첫글자는
Programming CodeUp 6075, 6076 : 정수 1개 입력받아 그 수까지 출력하기 6075 문제 정수(0 ~ 100) 1개를 입력받아 0부터 그 수까지 순서대로 출력해보자. 6075 풀이 a = int(input()) for i in range(0, a+1): print(i) 6076 문제 정수(0 ~ 100) 1개를 입력받아 0부터 그 수까지 순서대로 출력해보자. 6076 풀이 a = int(input()) for
Programming 메모리 구조 & 후입선출 메모리의 구조 프로그램이 실행되기 위해서는 먼저 프로그램이 메모리에 로드되어야 합니다. 또한, 프로그램에서 사용되는 변수들을 저장할 메모리도 필요합니다. 따라서 컴퓨터의 운영체제는 프로그램의 실행을 위해 다양한 메모리 공간을 제공하고 있습니다. 프로그램이 운영체제로부터 할당받는 대표적인 메모리 공간은 다음과 같습니다. 1. 코드(code)영역 2. 데이터(data)영역
Programming CodeUp 1928:(재귀함수) 우박수 (3n+1) (basic) 문제 콜라츠의 추측, 3n+1 문제, 우박수 문제라고 불리는 이 문제는 다음과 같다. 1, 어떤 자연수 n이 입력되면, 2. n이 홀수이면 3n+1을 하고, 3. n이 짝수이면 n/2를 한다. 4. 이 n이 1이 될때까지 2, 3과정을 반복한다. 예를 들어 5는 5 → 16 → 8
Programming Baekjoon 27433:팩토리얼2 문제 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. 첫째 줄에 정수 N(0 ≤ N ≤ 20)이 주어진다. 첫째 줄에 N!을 출력한다. IO example : 10 입력 → 출력 3628800 풀이 #include long long int factorial(long long int n){ if(
Programming Baekjoon 2869:달팽이는 올라가고 싶다 문제 땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터(1 ≤ B < A ≤ V ≤ 1,000,000,000)인 나무 막대를 올라갈 것이다. 달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다. 달팽이가 나무 막대를
Programming CodeUp 1282:제곱수 만들기 문제 n이 입력(0 < k < n ≤ 2^31)되면 k를 빼서 제곱수를 만들 수 있는 k를 구하고, 그 제곱수에 루트를 씌운 수(제곱근) t를 구하여라 이 때 가장 작은 k를 출력한다. IO example : 34 입력 → 출력 9 5 풀이 #include int main(){ int a;
Service Linux(Ubuntu) - keepalived 개요 * keepalived는 주로 haproxy와 많이 사용이 되며 haproxy server 간 HA(High Availability) 구성을 한다. * keepalived와 haproxy는 따로 사용이 가능하며, 보통 keepalived는 vIP 목적으로 사용된다. 설치 설치는 보통 haproxy와 함께 설치되며 간단하다. # psmisc는 process 관리를 위해 설치 함 leeyoonho@is-ha1:~$ sudo apt install haproxy
Service Linux(Ubuntu) - haproxy 개요 * haproxy는 Proxy의 일종이며, Load balance의 역할로 사용된다. * Proxy의 쓰임새는 Client의 access root는 보통 내부에서 우회(Outbound 접근) 할 때 많이 사용하지만, Reverse proxy는 역으로 외부에서 내부(Inbound) 접근 시에 사용된다. * haproxy는 보통 여러 node에 대상으로 접근 시 load balancing을 위해 사용되며 performance 또한
Service Traefik(Docker) - Regexp로 모든 subdomain에 대하여 forward 처리하기 개요 * traefik은 haproxy, nginx와 같이 proxy를 해주는 강력한 tool이다.Docker 및 k8s와 같은 container base의 platform에서도 강력한 기능은 자랑하며 쉽게 호환되게 만들어 놨다. * 기본적으로 L7(http)로 사용하는경우가 거의 다 이며, 특수한 경우 L4(TCP)로 사용도 가능하다. * router, middleware와 같은 용어가 어색할 수
Hardware SLI란? 정의 NVIDIA SLI는 "Scalable Link Interface"의 약자로, NVIDIA에서 개발한 기술로 두 개 이상의 그래픽 카드를 병렬로 연결하여 그래픽 처리 능력을 향상시키는 기술이다. 이 기술을 통해 사용자들은 높은 해상도와 그래픽 설정에서도 부드러운 게임 플레이와 고품질의 그래픽을 경험할 수 있다. SLI는 여러 개의 GPU(Graphics
Network VM으로 토폴로지에서 통신을 통한 서비스 만들기 과제 주어진 토폴로지를 유지한 채, Ubuntu Server를 기반으로 본인만의 통신 서비스 또는 애플리케이션을 구성해보기 모든 VM은 Ubuntu Server 기반으로 구성할 것을 권장함. 정해진 기준 없이,자유롭게 창의적인 아이디어를 실현. 수업에서 배운 명령어, 서비스 뿐만 아니라 새로운 패키지, 오픈소스 도구를 자유롭게 설치하여 사용해도 좋음. 네트워크
OS & Virtual VirtualBox에 Ubuntu 설치하기 소수전공 심화과정 과제로 VirtualBox에 Ubuntu를 설치하게 되었다. VirtualBox 설치하기 VirtualBox는, OS위에서 Virtual Machine을 구동할 수 있도록 해주는 반 가상화 하이퍼바이저 이다. 아래 링크에서, 다운받을 수 있다. Downloads – Oracle VirtualBox 다운받은 설치프로그램을 실행하고 설치하면 virtualbox가 설치된다. ISO 다운받기 Get Ubuntu Server | Download | UbuntuGet Ubuntu Server
OS & Virtual IOMMU와 VT-d (PCI Passtrough) 정의 IOMMU(Input/Output Memory Management Unit, 입출력 메모리 관리 장치)는 DMA(Direct Memory Access, 특정 하드웨어 하위 시스템이 CPU와 독립적으로 메인 시스템 메모리에 접근할 수 있게 해주는 컴퓨터 시스템의 기능이다.) 가능한 버스와 주기억장치를 연결하는 메모리 관리 장치이다. MMU와 IOMMU 아래 그림은 IOMMU의
OS & Virtual Memory Management 정의 메모리 리소스를 효율적으로 할당하고, 사용하고, 제거하는 과정을 말한다. OS, HW, SW가 Memory를 어떻게 관리하느냐에 따라 시스템 성능과 안정성이 크게 좌우된다. * 효율적인 메모리 할당: 프로세스와 프로그램에 필요한 메모리를 적절하게 할당하고, 비효율적인 메모리 사용을 방지한다. * 메모리 보호: 한 프로세스가 다른 프로세스의 메모리에 접근하지 못하도록 보호하는
OS & Virtual Proxmox(LXC) - NFS mount ❕Proxmox Virtual Environment 8.0.3❗LXC⭐CLI 개요 * LXC에서는 fstab이 작동하지 않는다. * 이것을 해결하기 위해서systemd를 이용한 mount를 하면 가능할 거라고 생각하고 해보니 잘 된다. * proxmox에서 필수로 lxc option 중 nfs를 체크 해줘야 작동한다. systemd를 이용한 NFS mount systemd는 만드는 법 자체는 간단하다. 다만,
OS & Virtual Linux - SSH 무인증 로그인 ❕OpenSSH_8.2p1 / 대부분의 Linux 배포판❗Host⭐CLI 개요 * 서버 간 SSH(SCP) 통신이 필요할 경우 사용한다. * Cluster 구축 때는 필수로 사용한다. * node to node 통신이 가능하기에 외부에서 접속이 되면 보안 상 문제가 생길 수 있다. * 기본적으로 서버 간 접속 시 SSH 비밀번호 대신
OS & Virtual Proxmox(VM) - GPU Passthrough ❗Proxmox Virtual Environment 8.1 개요 * BIOS에서 IOMMU 세팅이 필수적으로 필요하다. * BIOS에서 Intel VT-D와 같은 세팅이 필수적으로 필요하다. Passthrough 방법 Proxmox host machine에서 Shell에 접근 또는 ssh로 접속하여 다음과 같이 진행한다. root@pve:~$ vi /etc/default/grub GRUB_DEFAULT=0 GRUB_TIMEOUT=5 GRUB_
OS & Virtual 프로세스 스케줄링 알고리즘 정의 단일 처리 시스템에서는 실행 중인 프로세스(A)가 존재하는데 다른 프로세스(B)가 입출력을 요청하면 그 프로세스(B)는 이전의 프로세스(A)의 자원을 놓을때까지 대기하고 있어야합니다. 하지만 다중 프로그래밍에서는 여러 프로세스들이 동시에 돌아갈 수 있으며, 프로세스가 자원(프로세서 등)을 요청하면 운영체제는
Network [과제] 비효율적인 네트워크 토폴로지 설계하기 결과물 * PC 6대: 각각 독립된 하위 네트워크 구성 * Router 11대: * PC마다 1대씩 (총 6대) * 중간 계층 라우터 3대 (Router6~8) * 루트 계층 라우터 2대 (Router9, Router10) * Server 1대: 최상단의 Router10에 연결 비효율적인 이유 1. PC 하나당 라우터 한 대 (과잉 분산) * 스위치 하나로 연결할
Network 네트워크 공격 네트워크 공격의 과정 1. 정보 수집 (Reconnaissance) * 대상 네트워크 및 시스템의 정보를 수집하는 단계이다. * 수집된 정보는 이후 공격 단계에 활용한다. 1. 스캐닝 및 취약점 탐색 (Scanning and Vulnerability Assessment) * 네트워크, 포트, 서비스 상태를 조사한다. * 대상의 취약점을 찾기 위해 취약점 스캐너 등을 사용한다. 1. 침투
Network Switch Jamming & Port Security Switch Jamming이란? Switch Jamming은 스위치의 MAC 주소 테이블(CAM 테이블)을 의도적으로 오버플로우시켜 네트워크 트래픽을 모든 포트로 브로드캐스트하게 만드는 공격 기법이다. 이는 공격자가 스위치에 대량의 가짜 MAC 주소를 가진 패킷을 전송하여 발생하며, 스위치의 메모리 용량을 초과하게 되면 스위치는 정상적인 MAC 주소 학습을 하지 못하고
Network VLAN & ACL VLAN이란? VLAN(Virtual Local Area Network, 가상 LAN)은 물리적인 네트워크를 여러 개의 논리적인 네트워크로 분할하는 기술이다. 이를 통해 동일한 물리적 네트워크 상에서 서로 다른 논리적 네트워크를 구성하여 네트워크 관리의 유연성과 보안성을 향상시킬 수 있다. VLAN은 스위치의 포트나 MAC 주소 등을 기준으로 VLAN 멤버십을