2024/10 11

[Computer Science/c++] Type Casting과 Exception Handling

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.이번 시간에 정리해볼 내용은c++에서의 type casting과 Exception Handling  Type Casting  type castring이란어떤 variable을 어떤 타입에서다른 타입으로 바꿔주는 것을 말한다 type casting의 종류는c-style castingstatic castingdynamic castingconst castreinterpret cast가 있다 먼저 c-style casting이다 C언어에서 casting을 하는 타입이다타입 캐스팅을 하고하자하는 변수 앞에괄호를 열고 바꾸고싶은 타입을 적어주면 된다 예를 들어 float을 int로 바꿔주고싶으면..

[Computer Science/C++] Multiple Inheritance, Multi-Level Inheritance, Abstract Class, Friend Class

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.Multiple InheritanceMultiple Inheritance란 하나의 derived class가여러 개의 base class를 상속받게 해주는 것이다  저번 시간과 동일하게 포켓몬으로(..)예시를 한 번 보자 전기속성을 띄는 포켓몬은 electricLevel이라는 attribute를불속성을 띄는 포켓몬은 flameLevel이라는 attribute를갖고 있다 따라서 ElectricPokemon이라는 클래스와FirePokemon이라는 클래스를 또 만들려고 한다 그럼 Pikachu는 포켓몬이자 전기속성을 띄는 포켓몬이므로BasePokemon class와 ElectricPokem..

[computer science] c++의 class와 inheritance(상속), class substitution, virtual function, dynamic binding

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.이번 시간에 정리해 볼 내용은c++에서의 class와 상속그리고 virtual function에 관한 내용이다  교수님께서 포켓몬을 이용한 ..예제를 들고오셨다 ㅋㅋ c++로 이런 귀여운 애들에 대한class를 만들어보자 각각의 attribute들과method들은 위와 같다  class design은 다음과 같다우선 Pokemon이라는 base class를 만든다base class에는name, hp, typed이라는 attributes가 있고attack, decreaseHp, getHp, getName이라는methods가 있다 그리고 Pokemon을 상속받은 class로Pikachu와..

[computer science] c++의 Copy/Move semantics, Static

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.파이썬으로 프로그래밍을 할 때아직 프로그래밍을 잘 모르던 시절 int_list = [1, 2, 3]new_int_list = int_listnew_int_list.append(4) 위와같이 프로그래밍을 해줬는데int_list에도 4가 append되어있어당황했던 기억이 있을 것이다 그래서 막 구글링을 하다보면new_int_list = copy.deepCopy(int_list)와 같이 해야하는데그 이유는 deep copy를 해야int_list의 요소들만 담은완전히 새로운 new_int_list가생성된다는걸 들어본적이 있을 것이다 프로그래밍을 공부하다보면call by valuecall by..

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

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.operator overloading 2편! 시시시시작..  cout에서 자주 쓰이는 오른쪽의 object에 인자로 받은 값을append 시키는 기능을 한다 또한 tradition하게는Object 자기 자신을 반환하므로return값으로는 reference값input으로는 오른쪽의 object를 받아준다 그냥 현재 벡터에 내부적으로addElement를 해주는거고반환값으로는 append한자기 자신 reference를 반환해준다 그다음 또 하나 주목해야할게input에 const가 있는걸 확인할 수 있는데왜 const가 있을까? literal값을 받기 위해서다 input으로 변수가 아닌4, ..

[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란 무엇일까 아마 객체지향..