반응형

전체 글 71

Python mp3 파일 재생 소리 재생 playsound

파이썬에서 mp3파일을 재생하기 위해서는 다음의 라이브러리를 설치한다. pip install playsound 그 후 준비된 mp3 파일을 실행시켜 본다. 예제) import playsound playsound.playsound('./example.mp3') 참고로 mp3 파일이 재생 중일 때는 코드 실행이 일시 중지된다. 그리고 음악 재생이 끝난 후 코드가 계속 실행된다. playsound는 간단하게 사용하기에 좋다. 하지만 좀 더 복잡하게 사용하려면(예를 들어 게임이라던가) pyaudio, pygame, pyglet 등의 라이브러리를 사용하도록 하자. 만약 라이브러리 설치 과정 중 오류가 발생한다면 다음의 글을 참고하도록 하자. https://zerostarting.tistory.com/55 Pyth..

Python 2023.07.23

Python pip install playsound error, playsound 설치 오류

Python에서 mp3파일 재생을 위해 playsound 라이브러리를 설치하려고 하는데 다음과 같이 오류가 발생하였다. pip install playsound pip 오류인가 했더니 그건 아니였다. 오류를 해결하기 위해 대충 구글링을 하였다... 결론은 playsound 라이브러리의 버전을 낮추는 것!! (괜찮겠지...?) pip install playsound==1.2.2 라이브러리를 설치하고 코드를 실행하니 문제없이 잘된다.

TypeError: 'str' object cannot be interpreted as an integer

TypeError: 'str' object cannot be interpreted as an integer 에러가 발생했다면 `int` 자료형을 사용해야할 곳에 `str` 자료형을 사용해서 발생한 문제이다. 예를들면 다음과 같다. fruits 리스트에서 0번째 인덱스 `apple`을 삭제하려고 한다. fruits = ['apple', 'banana', 'orange'] fruits.pop('apple') # `apple`이 아닌 0을 넣어줘야한다... print(fruits) # TypeError: 'str' object cannot be interpreted as an integer index.pop() 함수의 인자값에는 int 자료형이 들어가야 한다. 위의 코드는 str 자료형을 넣었다. 그렇다면 올..

Golang 난수 생성(math/rand)

Go를 사용하여 난수를 발생하기 위해서는 `math/rand` 패키지와 `time` 패키지를 사용한다. `time` 패키지를 사용하는 이유는 `time.Now().UnixNano()` 함수를 사용하여 현재 시간을 기반으로 난수 시드를 생성할 수 있다. 이를 통해서 매번 다른 시드 값으로 난수를 생성할 수 있다. 다음의 예제는 1부터 10까지 숫자 중 난수를 생성하는 예제이다. package main import ( "fmt" "math/rand" "time" ) func main() { rand.Seed(time.Now().UnixNano()) randomNumber := rand.Intn(10) + 1 fmt.Println(randomNumber) } `rand.Seed()` 함수를 사용하여 현재 시간..

Golang 2023.06.30

TypeError: Can't instantiate abstract class with abstract method

추상 클래스를 상속받은 파생 클래스 내부에서 추상 클래스에서 선언한 추상 메소드를 구현하지 않았을 때 발생하는 오류이다. 파생 클래스 내부에 추상 메소드를 구현해주면 해결할 수 있다. 예시 오류 코드 from abc import ABC, abstractmethod class Animal(ABC): @abstractmethod def eat(self): pass class Dog(Animal): def __init__(self, name, age): self.name = name self.age = age doge = Dog("doge", 1) print(doge.name) print(doge.age) # 결과: TypeError: Can't instantiate abstract class Dog with..

디스코드가 Go 대신 Rust로 전환하는 이유

요약: Go GC 성능 이슈 출처: https://discord.com/blog/why-discord-is-switching-from-go-to-rust Why Discord is switching from Go to Rust discord.com Go gc가 디스코드에서 많은 부하를 유발하는 요소 중 하나인데, gc가 자동으로 메모리를 관리하지만, 디스코드에서는 큰 메모리 할당과 수백만 개의 작은 객체가 동시에 발생하는 경우에 문제가 발생하였음. 이거 때문에 일시적인 렉이나 성능 저하가 발생함. 약 3년전 글이지만(뒷북) `rust가 go보다 더 좋다`는 것은 아니며(언어는 목적과 장점에 따라 선택하는 것이 좋음), 주의 깊게 살펴볼 필요가 있어서 블로그에 글을 작성함.

Golang 2023.06.14

Golang 웹 크롤링/크롤러

다음의 예제 코드는 https://example.com 웹 페이지를 크롤링 하여 h1 태그를 추출하여 출력하는 예제 코드이다. 사용된 패키지에 대해 간단히 설명하자면 다음과 같다. - fmt: 생략 - io/ioutil: 파일 입출력을 쉽게 처리하기 위한 함수들을 제공. ioutil.ReadAll() 함수는 HTTP 응답의 본문을 읽어온다. - net/http: HTTP 클라이언트와 서버를 구현하는 함수와 타입들을 제공. http.Get() 함수를 사용하여 웹 페이지에 GET 요청. - regexp: 정규 표현식을 사용하여 텍스트를 검색, 추출하고 패턴 매칭을 수행하는 함수를 제공. 받아온 HTML 문서에서 태그의 내용을 추출하기 위해 정규식을 활용. package main import ( "fmt" "..

Golang 2023.06.01

Golang 슬라이스 정렬(오름차순, 내림차순)

sort.Ints() 함수를 사용하여 슬라이스를 오름차순으로 정렬할 수 있다. 예제) package main import ( "fmt" "sort" ) func main() { nums := []int{7, 2, 9, 1, 6, 3, 8, 5, 4} sort.Ints(nums) fmt.Println(nums) } // [1 2 3 4 5 6 7 8 9] sort.Reverse() 함수를 사용하여 내림차순으로 정렬할 수 있다. 예제) package main import ( "fmt" "sort" ) func main() { nums := []int{5, 2, 8, 1, 3, 9, 4, 6, 7} sort.Sort(sort.Reverse(sort.IntSlice(nums))) fmt.Println(nums)..

Golang 2023.04.10

옹알이 (1)

링크: https://school.programmers.co.kr/learn/courses/30/lessons/120956 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이: def solution(babbling): babbling_list = ["aya", "ye", "woo", "ma"] answer = 0 for i in babbling: for j in babbling_list: i = i.replace(j, "*") if i == "*" * len(i): answer += 1 return answer babbling_list 내의 문자열과 b..

Python/문제 2023.03.30

유한소수 판별하기

링크: https://school.programmers.co.kr/learn/courses/30/lessons/120878 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이: # 분자 : molecule # 분모 : denominator # 최대 공약수 : gcd(greatest common divisor) def solution(a, b): den = b # 분모 원래 값을 저장 while b: # b가 0이 될때 까지 나눠서 최대 공약수를 구한다. (유클리드 호제법 참고) a, b = b, a % b den = den // a # a = 최대 공약수..

Python/문제 2023.03.29
반응형