배운 것을 정리합니다.

배운 것을 정리합니다. 개발도, 학교 수업도, 기타 등등....
전체
개발
학부
All
flutter
OOP
Java
math
학부
algorithm
AI
AI@Sogang Audio AI Study
이번 학기에 서강대학교 안에서 AI 를 깊게 공부하고 프로젝트를 할 수 있는 학회를 만들었다. 설립 멤버로 학회원들의 리크루팅(다른 사람을 평가할 실력은 전혀 아니지만)부터 홍보 행사 기획까지 참여했다. 학회의 첫 공식 활동은 Trocho Study. 네트워킹 자리를 마련해 학회원 들간의 관심 분야를 공유하고, 마음이 맞는 사람들끼리 모여 두달간 스터디를 진행한다. 나는 오디오 AI 분야 스터디에 들어갔다. 선정한 이유는 다음과 같았다. 한 분야의 논문들을 모아보면서 깊게 공부해봐야겠다고 생각했다. 함께하는 멤버들이 학부연구생들이 많아, 논문을 어떻게 읽는지 배울 수 있을 것 같았다. 작년 K-Startup 챌린지에서 수상한 아이템도 오디오 분야였고, 그 당시 학교의 음성분야를 하시는 교수님도 찾아간 적이 있었다. 서비스에 집중하느라 소홀했던 기술을 더 자세히 알아보고 싶었다. 논문 읽는거 생각보다 어려웠고, 이해하지 못하는 내용이 더 많았다. 수식을 하나하나 이해하려고 노력하다보면 시간을 너무 많이 잡아먹었다. 서베이조차 다 못 읽고 스터디 간 날도 있었고 발표자료 준비를 못한 날도 있었다. AI를 사용해서 논문 읽기의 난이도를 조금이나마 낮췄다. NotebookLM 으로 논문들을 컨텍스트로 추가하고 먼저 팟캐스트를 만들어 들으면서 쉬운 수준에서 이해했다. 그 다음엔 AI가 생성한 다이어그램과 정리된 문서를 기반으로 방법론들을 구체적으로 확인하고, 문라이트를 이용하여 논문을 읽었다. 주차별 서기록을 기반으로 7주간 스터디에서 다루었던 내용들을 정리해보았다. 1주차: Audio Representation & Synthesis 오디오 딥러닝의 기초가 되는 데이터 표현 방식과 생성 모델의 원리를 학습했다. Data Representation: 오디오 데이터는 Raw Audio(Waveform), Spectrogram(STFT, CQT), Acoustic Feature(MFCC, Pitch), Embedding(Wav2Vec) 등 다양한 형태로 표현되며, 목적에 따라 적절한 표현형을 선택해야 한다.
  1. AI
  • 예준천
알고리즘 설계와 분석
강의 자료 정리
  1. algorithm
  2. 학부
  • 예준천
응용수학2
  1. 학부
  2. math
  • 예준천
오브젝트: 코드로 이해하는 객체지향설계
1장 객체 설계 5장 책임할당하기 5.3 구현을 통한 검증. 코드로 적어보니 다음과 같은 개선 사항이 존재한다. DiscountCondition은 3가지 이유로 변경될수 있다. 새로운 할인조건 추가로 인한 isSatisfiedBy 메소드의 조건 추가 isSatisfiedBySequence의 로직 변경 isSatistfiedByPeriod의 로직 변경 하나의 클래스가 여러가지 변경이유를 가진다는 것은 단일 책임의 원칙(SRP)의 위배되며 높은응집도를 달성하지 못했다고 볼수 있다. 그러므로 변경의 이유에 따라 클래스를 분리하자. 변경의 이유를 쉽게 파악하기 꿀팁! 인스턴스 변수의 초기화 시점이 다른 부분을 분리의 후보로 잡아보자. 인스턴스 변수 사용의 방식을 살펴보자. 모든 속성을 다 사용하면 응집도가 높은거다! 이렇게 나눈다면 PeriodCondition과 SequenceCondition두개의 클래스가 나뉘지만, Movie는 두가지 클래스와 협력해야한다. 이건 전체적인 결합도도 높아지고(Movie가 Condition 1개에서 각각의 2개로 결합이 늘어남),변경이 더 어려워져서(새로운 할인조건 추가시 List 인스턴스 추가해야하고 판별 메서드도 추가해야함) 설계 품질이 나빠진거다. Movie 입장에서는 두 클래스 모두 같은 책임을 수행한다. 구현방식의 차이일 뿐이므로 ‘역할’이 등장한다. 자바에서는 이를 구현하기위해 추상클래스(구현을 공유)와 인터페이스(책임만 정의)를 사용한다. POLYMORPHISM 패턴 객체에 타입에 따라 변하는 로직이 있다면 조건문보다는 다형성을 이용하자. PROTECTED VARIATIONS 패턴 변경될 가능성이 높다면 캡슐화해서 예측가능한 안정적인 인터페이스 뒤로 숨기자.
  1. OOP
  2. Java
  • 예준천
Flutter 오답노트
ListTile의 Leading이 가운데 정렬되지 않는 문제 이거로 해결되는줄 알았으나… 결론 In Flutter's ListTile, the leading and trailing doesn't span accross the full height of the ListTile when subtitle is used. Hence create your own Widget using row. CustomListTile 위젯을 만들거나 Row로 해결하는 것이 바람직함. flutter StatefulWidget의 LifeCycle createState State를 생성하고 StatefulWidget에서 state를 실행합니다. initState State를 초기화합니다. 단, initState는 StatefulWidget이 실행되면 단 한번 동작합니다. initState 내부를 수정하고 싶다면 rebuild, hot-reload를 해도 변화가 없으므로 반드시 종료 후 실행시켜야 합니다.
  1. flutter
  • 예준천
Made with Slashpage