전체 글 130

[computer science] c++의 operator overloading/연산자 구현하기 1편

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다. 저번 시간에는 c++의 class 내부에서method를 구현하는 법을 배웠다면이번시간에는 class의 바깥에서method 구현하는 법을 정리해보려고한다 그리고 그와 함께operator overloading까지같이 정리해보려구한다 그럼 시작..!  Out-of-Class Definition  위 ppt의 코드를 잘 읽어보자SimpleVector라는 class 내부에 void addElement(T element);int getSize() const;와 같이 함수들이 정의되어있는데자세한 구현은 없이prototype만 정의되어 있는 것을 확인할 수 있다 실제 메소드들이 어떻게 작동하는지는..

[Docker/mongoDB] docker compose로 mongoDB, mongo-express build하기 (Datagrip으로 MQL 실행)

이번에 야심차게개인 프로젝트를 진행해보려고한다 이미 대학원 연구실 과제에개인 연구에개발 외주 작업에대학원 수업으로초특급 바쁘긴하지만.. 그래도 약 1년전부터해보고싶다고 마음 먹었던건데시작이 반이라고개발환경이라도 셋팅해놓으면언젠간 차근차근 하지 않을까 생각했다 ㅎㅎ 내가 기획하고 있는 프로젝트는그렇게 가볍지도 않지만또 엄청 무겁게 할 생각도 없는개인 프로젝트이기에어떻게 할까 고민했다가 backend: Spring Boot + jpaDB: MongoDBfrontend: React + tailwind css로 해주기로 했다 처음에는 backend를node.js로 해주려고했다가사실 가장 익숙한게 spring framework이기도 했고spring에서 jap를 써보고 싶었기 때문이다 DB를 MongoDB를 선택한..

기술/DB 2024.10.13

[react] Google Cloud text-to-speech API 이용해서 frontend에서 영어단어별 발음 재생 구현하기

외주로 작업하고있는 개발 프로젝트에서영어 문단이 있으면그 문단의 단어별로 녹음파일을재생해야하는 기능이 있었다 처음에는 모든 녹음파일들을Google Cloud text-to-speech기능을 사용해서front쪽 public 폴더에넣어놓고 재생해달라고 요청을 받았지만 https://console.cloud.google.com/vertex-ai/studio/speech/text-to-speech?project=gen-lang-client-0237974714&inv=1&invt=AbeTjg Google 클라우드 플랫폼로그인 Google 클라우드 플랫폼으로 이동accounts.google.com그렇게하면단어별로 하나하나 녹음파일을다운받아야한다는 수작업이 발생하고..나중에 영어 문단이 바뀌었을 때새로 작업하기가 꽤..

기술/웹 개발 2024.10.10

[react/tailwind css] 자체적으로 audio player 구현하기

이번에 맡게된 외주 개발 작업에서1. 사용자가 mediaRecorder로 녹음한거 재생2. mp3 파일 재생을 할 오디오 플레이어를 구현해야했다 Figma상 디자인은 이랬다  따라서 대충 슥 봤을 때크게 구현해야하는 기능은 1. audioURL 생성해서 audio component에서 재생가능하게하기2. play, pause 할 때마다 아이콘 바뀌고audio 재생했다가 멈췄다가해주기3. audio 전체 길이와 현재 재생 중인 시간계산해서 progress bar 만들어주기 였다   처음에는 audioBlob이나 URL을생성하지 않고바로 audioRef를 넣어서재생하게 해줬는데이유는 모르겠지만 재생에 필요한셋업을 하는 시간이 너무 오래 걸려서.. audioRef -> audioBlob -> URL로 변경한 ..

기술/웹 개발 2024.10.06

[ComputerScience] c++의 Class와 Class Template

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.이번 시간에는c++에서 ₩class와class template에 대해서배운 내용에 대해서 정의해보려고 한다 우선 c++의 개발자Bjarne Stroustrup의Why I created C++영상을 보면c++을 왜 만들었는지에 대한이야기가 나오는데c에는 없는 class의 개념을도입하기 위해서 만들었다고한다  Simula라는 언어에서class의 개념을 가져온 뒤c의 빠른 속도와 class의 개념을 결합시킨언어를 만들기 위해서c++을 개발했다고한다 c에서는 structure라는 개념이 있는데이를 c++에서 object의 개념으로 확장시켰다고한다  Classclass란 무엇일까 아마 객체지향..

[ComputerScience] c++의 function overloading

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.이번 시간에는 c++에서함수를 다룰 수 있는 다양한 방법들과function overloading에서 대해서배운 내용을 정리해보려고한다 Default Arguments in Functions  우선 c++에서는 함수의 인자값를default로 설정할 수 있다 함수를 호출 할 때두 번째 인자값을 넘겨주면넘겨준 값으로 들어가지만아무것도 넘겨주지 않는다면default로 설정해둔 2가 들어가게 된다  Function OverloadingC에서는 같은 함수의 이름을여러 개 사용할 수 없었지만c++은 가능하다 이런걸 function overloading이라고 한다   이름이 같은 함수들을오른쪽과 같..

[ComputerScience] c++의 pointer와 reference 3편 (Call by Value, Call by Reference, Reference)

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.c++에서의 Pointer와 Reference마지막 편 Call by ValueCall by Reference와마지막으로c++에서의 Reference에 대해정리해보도록하겠다  Call by Value  위 ppt의 코드를 잘보자mySwap이란 함수에서x와 y를 파라미터로 받고함수 내부에서 x와 y의 값을서로 바꿔준다 그런 다음 main함수에서int a와 b를 선언해준뒤mySwap 함수의파라미터로 넣어준뒤 a와 b를 출력해본다 mySwap 함수 내부에서는두 파라미터의 값을 서로 교환해주니main함수에서 정의된 a와 b를mySwap에 넣어주면a와 b의 값이 변할까? 정답은 변하지 않는다왜..

[ComputerScience] c++의 pointer와 reference 2편 (Dynamic Array, Static Array, Smart Pointers)

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.pointer와 reference는관련 내용이 깊고자세하게 설명해야할게 많아서나누다보니 3편까지 작성해야할 것 같다 1편에서는 pointer의 정의, 사용법,동적 메모리 할당 등에 대해서 배웠다 이버에는 포인터 변수를 이용해서동적으로 배열을 할당하고그걸 어떻게 이용하는지 알아보자  Dynamic Array  위 코드를 보면int *arr = new int[3]{1, 2, 3};이렇게 포인터 변수 arr를 동적으로 할당했다 위 코드가 무슨 뜻이냐하면어떤 메모리 주소에int가 3개 들어갈 수 있는공간을 할당하겠다는 뜻이다 new로 동적 할당이 끝나면arr는 첫번째 원소의 위치를 반환하게된..

[ComputerScience] c++의 pointer와 reference 1편 (포인터의 정의, 동적 메모리 할당, 포인터 연산)

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.이번시간에는 c언어의 꽃이라고 할 수 있는포인터에 대해서 배운 내용을 정리해보려한다 포인터는 c언어의 꽃이지만강의 내용이 c++로 이루어지기에c++과 함께 포인터 변수에 대한 내용을 정리하고c++에만 있는 reference에 대해서도배운 내용을 정리해보려한다   c나 c++에서는 변수가 선언이 될 때그 변수를 위한 공간이 메모리에 생성이된다메모리에 특정 변수를 위한 공간이 생성이되면그 공간에 대한 정보인 주소가 존재할텐데이 주소를 변수의 이름과 associate를 해서변수 이름을 이용해 그 메모리 주소를찾아갈 수 있도록 하는 것이다이러한 것을 변수 선언이라고 부른다 위의 ppt에 있는..

[ComputerScience] c++의 map과 set

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.저번시간엔 c++의 list에 대해서 정리해보았고오늘은 map과 set 대해서 정리해보려한다  Map  map은 python의 dict와 비슷하다고 볼 수 있는데key-value가 서로 associate되어있는 구조이다 key들은 모두 unique하며각 element들은 key들의 ascending order로sort 되어있다 hash table과는 완전히 다른 구조이다  map은 내부 구조로balanced binary search tree를 갖고있다 각 node들은 Key-value pair인std::pair 오브젝트로 구현되어있다 balance tree이기 때문에tree의 차수가 ..