분류 전체보기 127

[c++] gcc 컴파일러로 여러 개의 c++ 파일 link해서 컴파일하기

이번에 c++ 과목 과제를 하면서교수님이 알려주신대로 gcc 컴파일러를 통해컴파일을 하는데 자꾸 ld: symbol(s) not found for architecture arm64clang: error: linker command failed with exit code 1 (use -v to see invocation)이 에러가 뜨는 것이었다 열심히 구글링을 해보니main함수가 있는 c++ 파일에다른 여러 c++ 파일들을 include 해줬는데이게 뭐 자체적으로 link가 되지않아 생기는 에러인 듯 했다 해결법은 초특급 간단하다 당연하겠지만 헤더에#include를 이용해서 가져올 다른 cpp파일을 입력해줘야한다그리고 저 cpp파일들은 같은 폴더 안에 있어야한다 그런 다음기존에 gcc 컴파일러로 컴파일하기..

기술/기타 2024.09.22

[ssh] ssh public key 로컬에 생성하기

AWS 서버에 접근하기 위해서나의 ssh public key가 필요로했다 ssh key는 주로 Git이나 AWS같은원격 서버에 접근해야하는 상황에서비밀번호대신 많이 쓰인다 나는 기존에는 없었으므로 새로 생성해주었다생성하는 방법은 매우 간단하다나는 Mac을 사용하므로MacOS 기준이다 우선/ .ssh 폴더에id_xxxxid_xxxx.pub이런 파일 2개가 존재하는지 확인해주자 존재한다면 이미 ssh key를로컬에 갖고이쓴 것이다 cat /.ssh/id_xxxx.pub 위 명령어를 통해 공개키를 확인해주면된다만약 없다면 새로 생성하면된다 ssh-keygen 위 명령어를 terminal에 쳐주면위와 같이해당 경로에 ssh key를 저장하겠다고 알려준다저 곳에 저장해주기 위해서 enter를 눌러준다  enter..

기술/기타 2024.09.22

[ComputerScience] c++의 I/O Streams (cin, cout)

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다. c++의 cin과 cout같은 I/O Streams는input과 output을 도와주는 프레임워크이다 실제로 컴퓨터에서 input과 Output은밑바닥에서 굉장히 복잡한 과정이 일어나는데사용자는 이를 알지못해도 입출력 기능을 사용할 수 있도록 해주는 것이다  cin  c++에서 input을 도와주는 오브젝트이다일반적으로 키보드를 이용해서 입력한다 사용자가 키보드로 입력을 해서입력한 내용을 프로그램 안으로 가지고가는 부분이다 위 ppt 그림에서 수도꼭지에서 물이 나오는 부분이cin이라고 이해하면 좋다 수도꼭지를 트는 레버(?)는cin >> input할거... 에서 >> 의 역할이다 >..

[ComputerScience] C++과 Namespace

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.C++을 처음배울 때 흔히 가장 많이 배우는 것이입력과 출력문 일 것이다#include int main(void) { std::cout  c++에서의 출력은 주로 std::cout 이런 방식으로 많이 사용하고입력을 받으려면std::cin과 같은 방식으로 많이 사용한다 cout과 cin 앞에 붙이는 이 std의 정체는대체 무엇일까 이걸 이해하려면 c++에서의namespace 개념을 이해해야한다  Namespace cin과 cout은 이미 c++ 내부에 정의되어있는 변수이다한마디로 c++을 개발하면서 이미 입력과 출력 기능을사용할 수 있도록 predefined 해놓은 변수라는 뜻이다..

[ComputerScience] 알고리즘의 시간복잡도와 탐색, 정렬 (Binary Search, 깊이우선탐색, 넓이우선탐색, Selection Sort, QuickSort, Merge Sort)

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.Time Complexity 알고리즘의 성능을 측정할 때는 흔히time complexity(시간 복잡도)와 space complexity(공간 복잡도)로측정을 많이 한다 이 중에서 이번에 알아볼 것은 시간복잡도보통 흔히 우리들이 아는 알고리즘의 성능을 평가할 때 자주 사용된다 단순하게 어떤 알고리즘의 시간 복잡도를 측정하려면어떤 방법이 있을까? 첫 번째는 실제로 알고리즘을 돌려서시작 시점과 종료된 시점의 시각을 구해그 차이를 구하는 방법이다 이러한 방법의 차이는 real-world performance를 측정할 수 있다즉, 실제로 알고리즘이 사용될 때 어느정도의 시간이 걸리는지를측정할..

[ComputerScience] 자료구조 Tree와 Graph (Rooted Binary Tree, Binary Search Tree, Graph)

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.Tree란? 자료구조 중에서 Tree(트리)라는 친구가 있다단순하게 말하면 트리는 서로 연결되어있는노드들의 집합인데노드와 노드 사이에는 반드시 한 개의 길만 존재해야한다 따라서 위 그림에서 Tree로 분류할 수 있는 것은1번, 3번, 4번이라고 할 수 있다 이런 형태의 자료구조를 트리라고 부른 이유는자료구조의 형태가 나무를 거꾸로 한 형태를 닮았기 때문인데가장 출발점이 되는 노드를 root(뿌리)로 부르고길을 통해 퍼져나가는 노드들의 모양이 leaf(잎)의형태를 닮았기 때문이다  Rooted Binary Tree Rooted Binary Tree는Binary라는 뜻에서 유추할 수 있듯..

[computerScience] Array, Linked List, Queue, Stack, Hash Table

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.Array와 Linked List 비교 array와 linked list의 구조array는 우리가 흔히 알고있는[1, 2, 3, 4, 5]같은 자료구조이다.  위에서 보이듯이 array는 연속된 공간을 할당받고그래서 실제로 1과 2가 저장된 공간도물리적으로 연속되어 있다.  linked list는 영어 그대로데이터들이 서로 연결되어있는 list라고생각하면 편하다 Linked list에 1, 2, 3, 4, 5가 있다고 하면각 1, 2, 3, 4, 5가 메모리 어디에 저장되어있는지는 모르지만1과 2가 연결되어있고1이라는 데이터와 함께 2가 저장된 메모리의 주소를함께 저장하기 때문에1에 ..

[python/AzureAI] 발음평가(Pronunciation Assessment) API 사용해보기(cognitive-services-speech-sdk)

외주 개발 프로젝트에서front에서 user의 영어 녹음 파일을 받아와서pronunciation assessment API에 보내발음평가 결과를 받아와야했다 이 작업을 하면서 삽질을 너무 많이해서30분이면 끝날 작업을3일에 걸쳐서 완성하게 됐는데 ... 삽질의 과정은 딴것보다는 wav파일을 보내는 부분 때문이었는데 ,,, 삽질 기록과 해결법은 다른 게시물에이미 기록해뒀으니 참고해두면 좋을 것 같다 아무튼 그것만 빼면 그렇게 어려운 작업은 아니었던이번 작업을 기록에 남겨두려고한다 왜냐면 얘네 Microsoft라 공식문서가 잘돼있을 줄 알았는데그렇지 않았기때문에 ㅎ,,,일단 이 발음평가 API를 사용하려면미리 세팅해야하는게 2가지가 있다 1. speech_key와 service_region2. cogniti..

기술/기타 2024.09.09

[ComputerScience] C언어와 포인터

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.pointer는 C언어의 꽃이라고도 불린다어렵고 복잡하지만 그만큼 중요하고 반드시 필요한 부분이기때문에C언어 혹은 컴퓨터과학을 공부한다면반드시 완벽하게 이해하고 넘어가야한다 그래서 강의에서 들은 Pointer에 대해서정리해보도록 하겠당 Pointer란?포인터란 어떤 변수의 메모리 주소를 담고있는 변수이다말그대로 int, string같은 변수인데그 데이터 타입이 메모리 주소인 것이다  *;앞의 type이 메모리 주소에 담겨있는 변수의 데이터 타입은 포인터 변수의 이름이다 int *ptr;이렇게 정의를 한다면ptr은 어떤 int 값의 메모리 주소를 담고있는포인터 변수라는 뜻이다 char ..

[ComputerScience] 프로그래밍 언어 개요(python의 Module과 Class, 객체지향(OOP)의 4가지 원칙)

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 목적으로 재구성한 것입니다python의 Module module이란 쉽게 말하면 python 파일을 뜻한다 import math라고 가장 위에 선언해주면math라는 python 파일 안에 있는 각종definition이나 statement를 사용할 수 있다접근을 위해서는math.sqrt()이런 방식으로 한다 from math import sqrt와 같은 방식으로math 모듈 안에 있는 sqrt 함수만 가져올 수도 있지만이름 충돌 확률이 있어 권장되지 않는 방식이라고 한다  python의 class class는 주로 구글링해보면설계도(blueprint)라는 개념에 자주 비유가 된다 클래스는 변수들과 함수들이 ..