CS 9

[CS] 리눅스 사용자 관리

안녕하세요! 오늘도 리눅스에 대해서 학습한 내용을 정리해보려고 합니다. 리눅스를 사용하다 보니 iOS 개발을 하면서 터미널을 사용했던 경험들이 도움이 되는 것 같네요. ㅎㅎ (터미널로 git 사용한 것 칭찬해~) 오늘은 리눅스의 가장 큰 특징 중 하나인 다중 사용자에 대해서 알아보려고 합니다.다중 사용자를 지원하는 것은 여러 사용자가 하나의 시스템을 사용할 수 있다는 것입니다. 예를 들어서, A라는 사람과 B라는 사람이 하나의 컴퓨터에서 동시에 작업을 수행할 수 있는 것입니다. 그러면, 사용자를 추가하고, 삭제하는 작업들이 필요할 것입니다. 이런 다중 사용자를 위한 사용자 계정을 관리하는 방법들을 알아보려고 합니다.사용자 관리다중 사용자 시스템을 사용하기 위해서는 사용자를 구별하고, 적절한 자원을 할당하..

CS/OS 2024.05.04

[CS] Linux 고급 - 파일

안녕하세요! 오랜만이네요. 지난번 리눅스 기본 사용법 이후에 더 고급 사용을 위해서 학습했습니다.첫번째 시리즈로 파일 시스템에 대해서 이야기해보려고 합니다. 모든 OS는 각자의 파일 관리 시스템이 존재하며, 리눅스는 어떻게 구성되고 관리되는지 중점적으로 알아보려고 합니다.파일이란?파일의 정의를 찾아보면 관련된 정보들의 집합이라고 합니다. (사실 보면 감이 오지 않죠?) 파일에 대해서 좀 깊게 생각해보면, '인공지능을 위한 DataEngineering' 이라는 'hwp' 파일이 있다고 생각해봅시다. 내부의 내용은 모두 인공지능을 위해 필요한 DataEngineering에 대한 이야기를 하겠죠? 이것은 '인공지능', 'Data', 'Engineering' 과 관련된 정보들이 모여있는 곳이 되는 곳이죠?파일 ..

CS 2024.05.01

[CS] 운영체제의 기본

운영체제는 무엇일까요? 저희가 많이 사용하고 있는 Windows, Mac OS, iOS, Android OS 등등 많은 운영체제를 접하고 있지만, 정확하게 어떤 정의를 가지고 왜 사용하는 지 알지 못했습니다. 오늘은 운영체제는 무엇이고, 왜 사용하는 지 학습했습니다. 운영체제는 컴퓨터 사용자와 하드웨어 사이의 중개자 역할을 합니다. 운영체제의 가장 큰 목적은 사용자가 편리하고 효율적으로 프로그램을 실행할 수 있는 환경을 제공하는 것입니다. 다양한 기능을 제공하고, 우리는 이미 많은 부분에서 사용하고 있습니다.운영체제의 특성장치 및 관리계정 관리오류 감지메모리 및 프로세스 관리성능 제어운영체제의 기능리소스 관리 : 병렬 접근이 발생하여 여러 사용자가 시스템에 접근하는 경우에 리소스를 관리한다.프로세스 관리..

CS/OS 2024.04.27

[CS] Linux란?

리눅스의 역사 리눅스는 1991년 리누스 토발즈 학생에 의해서 만들어진 운영체제이다. 처음에는 개인적인 프로젝트로 시작했으나, 인터넷을 통해서 오픈소스로 전환되었다. 1990년대 이후 Ubuntu, Debian 등의 배포판이 등장했고, 2000년대 이후에 서버, 데스크톱 등 많은 분야에서 리눅스 활용이 증가했다. 리눅스의 특징 리눅스는 기본적으로 OS가 가져야 하는 다양한 기능을 제공한다. 다중 사용자 및 다중 작업을 지원하고, 네트워크를 지원한다. 물론, 보안성과 안정성도 가지고 있다. 더 자세하게 OS를 공부하게 되면, 추가로 포스팅할 예정이다. 리눅스 기본 명령어 파일 보기 ls ls -a ls -al `ls` 를 통해서 폴더에 존재하는 파일을 볼 수 있다. 가장 많이 사용하는 명령어일 것이다. `..

CS 2024.04.22

[CS] HTTP는 어떻게 동작할까?

안녕하세요! 미니입니다. 오늘은 iOS 개발을 하면서 네트워크 통신을 하게 되면, 당연하게 만나게 되는 HTTP에 대해서 이야기 해보려고 합니다. 실제, 프로젝트를 수행하다보면, HTTP가 뭔지는 아는 것 같은데 원론적으로 어떻게 동작하고, 특징들에 대해서 고민하게 되는 것 같아서 학습하게 되었습니다. 1. HTTP란? HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜입니다. 여기서 프로토콜은 컴퓨터 내부나 컴퓨터간의 데이터 교환 방식을 정의하는 규칙입니다. 즉, 컴퓨터가 컴퓨터에게 데이터를 줄때, 마구잡이로 데이터를 주는 것이 아니라 이미 정해둔 규칙에 따라서 데이터를 전달해야 한다는 것입니다. HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초가 되는 프로토콜입니다. 하나..

CS 2023.10.26

[CS] Concurrent Programming

안녕하세요. 미니입니다. 오늘은 개발자들을 괴롭히는 주범 중 하나인 동시성 프로그래밍에 대해서 작성해보려고 합니다. 해당 내용은 예전에 학습했던 내용을 토대로 다시 편집하여 작성한 글입니다. (직접 학습한 내용 중 틀린부분이 있다면, 댓글 남겨주시면 더욱 발전하겠습니다.) 저희가 일반적으로 사용하는 컴퓨터는 실제로 많은 작업을 수행하며, 여러가지의 일을 동시에 수행하게 됩니다. 가령, 예를 들어서 노래를 들으면서 코딩을 하는 상황에서 노래도 불러야하고, 코딩을 위한 IDE 프로그램을 실행해야하고, 코딩에 빠질 수 없는 구글 검색도 수행해야 하죠. 이것이 가능한 비밀(?)은 CPU에 있습니다. CPU를 볼때, 코어와 스레드에 대해서 막연하게 생각했던 부분을 잡고 넘어가는 것이 명확할 것 같아서 조금 설명을..

CS 2023.10.11

빌더 패턴

안녕하세요! 미니입니다.오늘은 디자인 패턴에 대해서 이야기해보려고 합니다. 디자인 패턴은 객체 지향 프로그래밍을 하면서 발생했던 문제들에 대해서 일반화된 해결책입니다. 더욱 자세한 내용을 알고 싶으시면 GOF라는 책에서 보시면 될 것 같습니다.빌더 패턴빌더 패턴은 디자인 패턴의 범주 중 객체를 생성하는 방법에 대한 해결책인 생성 패턴입니다. 복잡하게 생성해야 하는 객체에 대해서 편리하게 해주는 패턴입니다. 복잡한 생성 과정을 작은 속성들을 붙이는 형식으로 구성하게 됩니다. 즉, 많은 매개변수에 대한 설정을 작은 메서드들의 조합을 통해서 생성하게 되는 것입니다.제가 서브웨이 샌드위치를 좋아하는데 이것을 빗대서 코드를 짜봤습니다. ㅎㅎ 저희는 서브웨이 샌드위치에 대해서 구성하기 위해서는 6개의 인자를 주어야..

CS/객체지향 2023.09.07

의존성이 뭐죠...? (Dependency, DI, DIP, IOC)

의존성 주입이라는 말은 Swift를 사용하는 iOS 개발에서만 나오는 용어는 아니다. 이는 객체 지향 프로그래밍에서 사용되는 언어이다. 매일 의존성이라고 말하고 있지만, 도대체 무엇인지 한마디로 정의하지 못하는 나 자신을 보면서 공부하게 되었다… 의존성이란? 의존성은 객체 지향의 세계에서 객체간의 협력을 하기 위해서 A라는 객체가 B라는 객체의 메서드를 호출하면, 의존성이 생기게 된다고 말한다. 또한, 다른 타입을 가지고 있어도 의존성이 발생한다고 한다. 즉, 의존성을 다른 객체를 건드는 것이다. 건드는 것의 의미는 파라미터로 다른 타입을 가지고 있거나, 리턴 타입으로 다른 타입을 가지고 있고, 지역 변수로 다른 타입의 인스턴스를 생성하는 것들이다. class A { let name = "" let B ..

CS/객체지향 2023.09.07

OOP / SOLID 원칙

객체 지향 프로그래밍이란 객체 지향 프로그래밍은 프로그램을 어떻게 설계할지에 대한 일종의 개념이자 방법론이다. 이는 우리가 실생활에서 사용되는 모든 것들을 객체라고 하며, 필요한 객체를 파악하고 각각의 객체들의 역할이 무엇인지를 정의하여 객체들 간의 상호작용을 통해 프로그램을 구성하는 것을 말한다. 절차 지향 프로그래밍 VS 객체 지향 프로그래밍 절차 지향 정수기를 생각하면 조금 더 쉽게 다가오는 개념일 것이다. 정수기는 어떤 필터를 사용하여서 불순물을 걸러낼지에 대해서 많은 고민을 하게 된다. 정수기 처럼 절차 지향 프로그래밍은 어떤 절차로 프로그래밍을 실행시킬 것인가에 대해서 고민하고, 프로그래밍의 중점적인 과제로 바라보는 것이라고 생각이 들었다. 객체 지향 우리가 일상생활에서 대화를 하기 위해서 사..

CS/객체지향 2023.09.07