no image
값에 의한 호출(call by value) / 참조에 의한 호출 (call by reference)
우리는 프로그래밍을 하다 보면 반드시 함수/메서드를 사용하게 된다. 모든 기능을 메인함수 안에 넣을 수 없기에 코드의 가독성을 위해서나, 추상화나 재사용성을 위해서나. 유지보수를 위해서나 함수/메서드를 사용하는 것이 바람직하다. 어떤 언어를 사용하든 간에 매개변수를 이용한 함수를 사용한다면 아래 그림과 같이 사용할 것이다. 먼저 함수가 호출되면 컴퓨터 일어나는 과정을 알 필요가 있다. 함수가 호출되면 호출된 함수의 매개변수, 지역변수 반환 주소등 및 기타 상태 정보를 포함한 스택프레임이 메모리의 스택에 생성된다. 일종의 사용자정의 함수내에서 사용할 변수를 새로 선언하여 사용하는 것이다. 그리고 만들어진 사용자정의 함수의 매개변수로 인수가 전달이 된다. 이 과정이 복사의 과정이다. 그리고 제어권은 사용자정..
2024.04.08
SW
no image
리눅스 개인 서버 만들어보기 ( CLI , GUI 원격접속, Xrdp, SSH )
오래된 컴퓨터를 활용해서 집에 로컬 개인 서버 컴퓨터를 설치해 보았다. 사실 성능이 좋은 컴퓨터는 아니기에 가상화 실습 혹은 간단한 서버 구현을 위해 사용할 예정이다. 위 컴퓨터는 우분투 22.04 LTS 버전으로 포맷하여 사용 중이다. 목표 1. 원격으로 컴퓨터 전원 켜기(WOL) 2. 집 공유기 IP(외부IP)로 접근하여 집에 있는 서버 컴퓨터에 원격접속 3. 원격 접속은 CLI,GUI 2가지 형태로 접근 가능해야 함 구현 CLI 접속 = SSH 접속 (port : 22) GUI접속 = XRDP 접속 (port : 3389) 서버 컴퓨터로써 결국 외부(외부 IP)에서 접속해서 CLI환경과 GUI환경 모두 사용하는 것을 목표로 했다. 위 그림과 같이 원격접속을 구현하였다. 집에 있는 공유기(외부 IP)..
2024.04.03
디시인사이드 이미지 및 동영상 크롤링
프로젝트 중 디시인사이드의 이미지와 동영상을 자동으로 크롤링하는 코드를 작성해보았다. 각 부분에 대한 자세한 설명은 추후 하도록 하겠다. import requests from urllib import request from bs4 import BeautifulSoup import time from datetime import datetime from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options from webdriver_manager...
2024.03.21
no image
(Linux)Ubuntu 터미널 안 열리는 오류 발생 시
오랜만에 로컬에서 VirtualBox를 이용해서 리눅스 가상환경을 만들어서 사용할 일이 생겼다. 안전한 LTS 버전 중 가장 최근버전의 우분투를 사용을 했다. 모두가 아는 일반적인 방법으로 똑같이 가상환경에 우분투를 설치를 했다. 하지만 우분투를 실행하고 보니 터미널이 열리지 않는 증상이 발생했다. 하지만 찾아보니 나만 겪는 문제는 아닌 듯했다. https://askubuntu.com/questions/1435918/terminal-not-opening-on-ubuntu-22-04-on-virtual-box-7-0-0/1436448#1436448 Terminal not opening on Ubuntu 22.04 on Virtual box 7.0.0 I'm using windows 10 and I inst..
2024.01.17
no image
(C언어) 연결 리스트(2)(삽입, 삭제 연산) [자료구조]
지난번에 연결 리스트에서 노드의 기본적인 것들을 알아보았다. (C언어) 연결 리스트(1) [자료구조] (C언어) 연결 리스트(1) [자료구조] 자료구조에서 매우 중요한 연결 리스트의 기본적인 구조에 대해 알아보자. 연결 리스트는 노드라고 부르는 아이템의 리스트이다. 그중 단일, 원형 연결 리스트는 하나의 링크 필드를 가지는 리 taco99.tistory.com 이전에 배웠던 것을 활용해서 연결 리스트에서 삽입과 삭제 연산을 구현해보자. ##삽입 연산 삽입 연산은 노드의 연결을 이용해 구현할 수 있다. 삽입연산은 리스트의 첫 부분에 새로운 노드를 추가하는 연산과, 리스트의 중간에 새로운 노드를 추가하는 연산을 구현해보겠다. 결국 같은 원리이지만 선행 노드 변수의 유무로 인해 코드상 약간의 차이가 생긴다. ..
2022.03.29
no image
(C언어) 연결 리스트(1)(노드의 정의,생성,연결) [자료구조]
자료구조에서 매우 중요한 연결 리스트의 기본적인 구조에 대해 알아보자. 연결 리스트는 노드라고 부르는 아이템의 리스트이다. 그중 단일, 원형 연결 리스트는 하나의 링크 필드를 가지는 리스트이고 두개의 링크 필드를 가지는 리스트는 이중 연결 리스트임을 이전에 배웠다. 2022.02.19 - [SW/Data structure] - [자료구조] 리스트(List) [자료구조] 리스트(List) 자료구조 리스트에 대해 알아보자. 우리가 흔히 일상생활에서 사용하는 리스트와 같다. (EX. 오늘 할 일, 장 볼 리스트 등등) 리스트는 순서의 개념이 없는 집합과는 다르게 순서, 위치를 가진다. taco99.tistory.com 연결 리스트의 구성요소는 다음과 같다. Head 포인터 : 연결리스트에서 첫 번째 노드의 주..
2022.03.05
no image
진법 변환 방법 정리(2진법, 8진법, 10진법, 16진법)
2진법과 8진법, 10진법, 16진법의 의미를 알아보고 각 진법 간의 변환하는 방법을 알아보자. 컴퓨터는 정보를 표현하기 위해 비트라는 기본단위를 사용한다. 비트(bit)는 Binary Digit의 줄임 말로 2가지 상태( 0 or 1) 로만 표현 가능하다. 1비트는 $2^1$개, 2비트는 $2^1$개, n비트는 $2^n$개의 숫자를 표현할 수 있다. 이렇게 0과 1을 이용해 무한개의 숫자를 표현하는 방법이 2진법이다. 그보다 많은 수인 0부터 9까지의 숫자를 이용하여 표현하는 방법은 10진법 ,같은원리로 8진법, 16진법이 있다. 먼저 10진법으로 표현한 숫자를 보자. 각 자릿수가 가지는 의미는 무엇일까?? 2진법으로의 변환원리를 알기 위해서 이렇게 해석해보려 한다. 숫자 3은 10으로 1번 나누었을 ..
2022.02.20
no image
(C언어) 연결 리스트로 스택 구현해 보기[자료구조]
(C언어) 연결 리스트(1) [자료구조] (C언어) 연결 리스트(1) [자료구조] 자료구조에서 매우 중요한 연결 리스트의 기본적인 구조에 대해 알아보자. 연결 리스트는 노드라고 부르는 아이템의 리스트이다. 그중 단일, 원형 연결 리스트는 하나의 링크 필드를 가지는 리 taco99.tistory.com 연결 리스트로 이전에 배운 스택을 구현해 보자. 스택을 배열로 구현했을 때의 모습이다. 배열로 구현했기 때문에 구현은 간단했지만 크기가 제한됐었다. 우리가 배운 스택을 어떻게 연결 리스트로 구현할 수 있을까?? 위 그림처럼 연결 리스트로 구현한다면 외부적으로 스택과 완전히 일치한다. 연결 리스트의 장점인 동적으로 구현할 수 있다는 점을 이용해 크기에 제한받지 않고 스택을 구현할 수 있다. 하지만 동적 메모리..
2022.02.19
no image
[자료구조] 리스트(List)
자료구조 리스트에 대해 알아보자. 우리가 흔히 일상생활에서 사용하는 리스트와 같다. (EX. 오늘 할 일, 장 볼 리스트 등등) 리스트는 순서의 개념이 없는 집합과는 다르게 순서, 위치를 가진다. 스택, 큐 또한 크게 본다면 리스트라고도 볼 수 있다. 리스트는 구현 방법에 따라 배열로 구현하는 순차 리스트, 연결 리스트로 구현하는 여러 연결 리스트들이 있다. 연결 리스트들에는 단일 연결 리스트, 원형 연결 리스트, 이중 연결 리스트가 있다. 각 리스트들에 대해 대략적으로 알아보자.(각 리스트의 코드적인 부분은 추후 포스팅할 예정) ##순차 리스트 순차 리스트는 배열로 구현한 리스트로서 구현이 쉽고 속도가 빠르다는 장점이 있다. 하지만 배열의 특성상 동적으로 크기를 줄이기 어렵다는 단점이 있다. [삽입] ..
2022.02.19