본문 바로가기

분류 전체보기766

비전공자를 위한 프로그래밍 개념 - 프로세스와 스레드 사진: Unsplash의Ilya Pavlov 오늘은 프로그래밍을 시작하기 위한 기초개념인 프로세스와 스레드에 대한 설명입니다. 컴퓨터 과학 또는 공학 전공자라면 운영체제 시간에 공룡책을 보면서 접했을 개념입니다만, 분명 그런 경험없이 코드를 작성한다거나, 운영업무를 도맡아 하시는 분들도 있을 것이라고 생각이 됩니다. 실제로 제 주변에서 많이 보고 있구요. 요즘은 정말 다양한 분야의 사람들이 코딩을 공부하여 업무를 수행하다 보니 업무에 필요한 핵심 내용 외에는 놓치는 것들이 있는 것 같아 제가 아는 내용들을 최대한 풀어보려고 합니다. 인터넷 검색하면 동일한 내용들이 너무나 많지만, 더 잘 설명해 보려는 노력을 하면 저도 배우는 점이 있을 것 같다는 생각에 포스팅을 하게 되었습니다. 프로세스 프로세스를 한마.. 2024. 2. 24.
알아두면 회사에서 인정받는 리눅스 명령어, ls ls 파일 리스트를 출력해 주는 명령어 입니다. 리눅스에서 개발을 하는 저는 매일 사용하는 명령어 이고, 이 명령어 없이는 개발이 불가능 하다고 봐도 무방할 것 같습니다. ls의 활용 ls 명령을 사용하면 현재 디렉토리의 파일 리스트가 출력됩니다. 각종 옵션을 이용하여 필요한 작업을 수행할 수 있으며, 빈번하게 사용하는 예시를 보시고 어떻게 사용되는지 감을 잡으시기 바랍니다. 현재디렉토리 파일 조회 warehouse@warehouse-VirtualBox:~/Desktop$ ls a.out test.cc 원하는 경로의 파일리스트 조회 warehouse@warehouse-VirtualBox:~/Desktop$ ls ~/ Desktop Documents Downloads Music Pictures Public.. 2024. 2. 19.
리눅스에서 C++ 프로그래밍을 위한 gcc, g++ 의 개념과 활용 리눅스에서 C++ 코드를 작성하고 이를 바이너리로 만들기 위해서는 gcc 또는 g++ 이 필요하다. 오늘은 이 도구들의 개념에 대해 알아보고, 어떻게 사용하는지 알아보고자 한다. 전공자라면 학교에서 자연스럽게 접할 수 있는 부분이지만, 요즘같이 여러 분야에서 프로그래밍을 접하는 환경에서는 다소 생소할 수 있는 개념이라고 생각해서 포스팅을 쓰게 되었다. gcc 개념 : GNU OS의 컴파일러를 시작으로 시작 된 GNU Compiler Collection 지원 언어 : C, C++, Objective-C, Fortran, Ada, Go, D gcc는 컴파일러이다. 리처드 스톨먼에 의해 만들어 진 자유소프트웨어 재단에서 발현된 GNU 프로젝트의 일환으로 정말 널리 사용되는 컴파일러이다. 리눅스 환경에서 C로 .. 2024. 2. 18.
[Architectural Style] Data flow architecture 개념요약과 유형 DATA FLOW ARCHITECTURE 데이터플로우 아키텍쳐는 입력되는 정보를 계속 변경해 나가는 설계기법이다. 데이터플로우 패턴은 상당히 명백하며, 프로세스 간 다른 상호작용이 없다. 주요 구성요소 데이터플로우 아키텍쳐의 주요 구성요소는 두가지 입니다. 1. Component(Data Transformer) - 입력을 바탕으로 출력을 생성합니다. 2. Connector(Data Channel) - I/O stream, I/O files, buffer 등으로 구현되며, 데이터가 흘러가는 연결을 의미합니다. Data flow system의 유형 일반적으로 데이터는 제멋대로 흘러가지만, 우리는 선형으로 흘러가는 데이터흐름을 가진 시스템 또는 단순한 구조에 주로 관심을 갖습니다. 대표적인 data flow .. 2024. 2. 1.
[Architectural style] Data-centered architecture의 개념과 유형 Data-Centered Architecture Data-centered architecture 는 모든 주변 Software component들과 공유하는 중앙집중형 데이터 저장소를 갖는 설계 스타일이다. Data-Centric Architecture로도 불리운다. Data-centered architecture에서 각 client components 는 서로 직접 메시지를 전달하지 않고, Data store를 통해 통신을 수행한다. 특정 client 간 데이터 송-수신이 필요한 경우 별도의 Data store 추가 구성도 가능하다. 주요 구성요소 Data-centered architecture는 크게 두가지 구성 요소를 갖는다. 1. Data store 2. Data client Data-center.. 2024. 1. 31.
품질속성 만족을 위한 잘 알려진 설계전술, Tactic의 개념과 종류 안녕하세요 warehouse 입니다. 오늘은 품질속성을 만족하기 위한 기술인 Tactic 에 대한 포스팅을 작성하였습니다. Tactic Software architecture tactic 에 대해 정의를 내리자면 아래와 설명할 수 있습니다. Software architecture tactics are specific design decisions or techniques employed to address and achieve quality attributes, such as performance, scalability, maintainability, and security, in a software system. 즉, Tactic은 필요한 품질속성을 만족하기 위해 사용하는 설계적 기술이라고 볼 수 있겠.. 2024. 1. 27.
모든 기업들이 주목하는 기술 LLM(Large Language Model) 의 개념 안녕하세요 warehouse입니다. 요즘 OpenAI CEO 샘 올트먼의 방한으로 큰 이슈가 되고 있습니다. 이렇게 화제가 되는 이유는 아무래도 OpenAI 의 Chat GPT 때문이 아닐까 생각됩니다. 오늘은 ChatGPT와 그 기반기술인 LLM(Large Language Model) 에 대해서 짧게나마 리서치한 내용을 적어보려고 합니다. LLM(Large Language Model) "Large Language Model"은 대화형 인공지능 모델 중 하나를 나타냅니다. 이러한 모델은 많은 텍스트 데이터를 학습하여 다양한 자연어 처리 작업을 수행할 수 있으며 Open AI에서 제공하는 GPT (Generative Pre-trained Transformer) 시리즈는 이러한 대표적인 모델 중 하나입니다... 2024. 1. 27.
[Go programming] 함수를 선언하고 값 반환하기 Go 언어에서 함수를 구성하는 요소는 크게 네가지 입니다. 1. 이름 2. 파라미터 목록 3. 결과목록 4. 본문 코드 내에서 위 요소들은 아래와 같은 형태를 띄게 됩니다. func 함수명 (파라미터 목록) (결과목록) { 본문 } 각 요소에 대해 간단히 설명하고 예제를 구현해 보려 합니다. 이름 이름은 함수의 이름을 의미합니다. 구현하는 함수를 호출할 때 어떤 이름으로 호출될지를 결정합니다. 프로그래밍을 하면서 변수의 이름과 함수의 이름은 다른 개발자가 이해하기 쉽게 직관적으로 작성될 수 있도록 노력이 필요합니다. 파라미터 목록 파라미터 목록은 함수 파라미터의 이름과 타입을 지정합니다. 이 인자는 호출하는 곳에서 전달하는 값이나 인자를 받는 지역변수를 의미합니다. 결과목록 결과목록은 함수가 반환하는 값.. 2023. 11. 12.
go programming - 가변인자 함수로 min/max 구하기 오늘은 연습삼아 가변함수를 이용하여 인자 값 중 최소 값, 최대 값을 구하는 코드를 구현해 보았습니다. 내용은 다음과 같습니다. package main import ( "fmt" ) func minMax(args ...int) (int, int) { min := 0 max := 0 for i := 0; i < len(args); i = i + 1 { if args[i] = max { max = args[i] } } return min, max } func main() { min, max := minMax(1, 22, 3, 5, 0) fmt.Printf("min:%d / max:%d\n", min, max) } 가변인자 함수 minMax 를 만들어 주고 ... 표현을 이용하여 int type 의 변수들을 .. 2023. 7. 30.
Go programming 복합 타입 - 슬라이스 에 대하여 Go programming 복합 타입 - 배열 에 대하여 오늘은 go 언어의 복합 타입에 대해 포스팅을 남깁니다. 복합타입 기본타입을 다양한 방법으로 결합하여 생성한 타입 복합타입의 유형 복합타입의 유형은 배열, 슬라이스, 맵, 구조체 이렇게 4가 armin.tistory.com 이전 글에 이어서 오늘은 슬라이스에 대해 설명합니다. 슬라이스 슬라이스는 모든 원소가 같은 타입인 가변길이 시퀀스입니다. 슬라이스 타입은 원소가 T 타입인 경우 []T 태로 정의하며, 이는 크기가 없는 배열 타입처럼 보이기도 합니다 슬라이스 타입의 선언과 활용 e := []int{1, 2, 3} fmt.Println(e) 출력 [1 2 3] 특징 1. 모든 원소의 타입이 같고, 길이가 가변적 입니다. 2. 슬라이스는 배열과 달리.. 2023. 7. 29.
Go programming 복합 타입 - 배열 에 대하여 오늘은 go 언어의 복합 타입에 대해 포스팅을 남깁니다. 복합타입 기본타입을 다양한 방법으로 결합하여 생성한 타입 복합타입의 유형 복합타입의 유형은 배열, 슬라이스, 맵, 구조체 이렇게 4가지가 있습니다. 특징 복합타입 유형 별 특징은 다음과 같습니다. 다양한 특징이 있지만 상세한 특징은 각 타입별 설명에 정리 합니다. 고정크기 배열, 구조체는 집합타입으로 크기가 고정되어 있습니다. 지정 된 사이즈 이상의 데이터를 할당이 불가능합니다. 동적크기 슬라이스, 맵은 동적 데이터 구조입니다. 값을 추가할 때 마다 커질 수 있습니다. 간단한 특징은 이정도로 설명하고 타입별 세부특징을 알아보겠습니다. 배열 배열은 0개 이상으로 이뤄진 고정길이 시퀀스 입니다. 지정된 특정 타입으로만 원소를 이루고 있으며, 길이를 고.. 2023. 7. 29.
go programming - byte array 숫자에 콤마를 붙이는 방법 오늘은 go programming 연습삼아 아래의 예제 코드를 만들어 보았습니다. string 이 아닌 byte array 에 숫자를 할당해 두고 1,000 단위로 콤마를 붙여주는 코드입니다. package main import "fmt" func comma(s []byte) []byte { rByteArray := make([]byte, len(s)+len(s)/3) j := 0 for i := 0; i < len(s); i++ { if i != 0 && i%3 == 0 { rByteArray[j] = ',' j = j + 1 rByteArray[j] = s[i] j = j + 1 continue } rByteArray[j] = s[i] j = j + 1 } return rByteArray } func.. 2023. 7. 23.
go programming - switch문 go 언어도 다른 언어와 동일하게 switch 문을 제공합니다. 프로그래밍 언어를 접해보신 분들이라면 switch 문에 대해서는 익숙하시리라 생각이 들어 자세한 설명은 생략하겠습니다. go 언어에서 switch 사용은 다음 예시를 통해 알 수 있습니다. package main import ( "fmt" ) func test() int { return 1 } func main() { switch test() { case 1: fmt.Print("test is one \n") case 2: fmt.Print("test is two \n") default: fmt.Print("Default!!! \n") } } switch 문은 test 함수의 실행 결과를 가지고 case 에서 비교를 수행합니다. case 에.. 2023. 7. 21.
Linux 에서 프로세스의 core file(core dump) 분석 리눅스 환경에서 프로그래밍을 하고 서비스를 운영하다 보니 프로세스가 제대로 동작하지 않는 경우가 종종 발생합니다. 이런 경우, 제가 주로 선택하는 방식은 2가지 입니다. 1. gdb 를 프로세스에 붙인다. gdb 의 간단한 사용은 아래 내용을 참고하세요. 2022.12.06 - [CS] - gdb 기초 사용방법 - 리눅스에서 C++ 디버깅 실행부터 값 출력까지 gdb 기초 사용방법 - 리눅스에서 C++ 디버깅 실행부터 값 출력까지 gdb란? GDB는 GNU project의 디버거로, 실행되는 상황 또는 충돌이 발생한 프로그램에서 일어난 일들을 볼 수 있도록 한다. GDB, the GNU Project debugger, allows you to see what is going on `inside' anot.. 2023. 7. 21.
Go언어 HTTP 응답코드(Status) 출력 방법 사진: Unsplash의Glenn Carstens-Peters 2023.07.03 - [분류 전체보기] - go programming - strings.HasPrefix 사용 go programming - strings.HasPrefix 사용 사진: Unsplash의Glenn Carstens-Peters 2023.06.24 - [CS/Go] - [Go programming] Requesting http get method to an url from an argument [Go programming] Requesting http get method to an url from an argument 사진: Unsplash의Sergey Zolkin Today, I made a t armin.tistory.com.. 2023. 7. 5.