공유 메모리 시스템의 장단점과 shm_open, truncate, mapp, shm_unlink 를 사용하여 POSIX 에서 할당과 해지가 되는 코드의 예시를 보여준다. 목차 개요 상위의 포스팅에서는 IPC의 개념과 종류에 대해서 알아보았고 2022.08.29 - [OS :: 운영체제] - 프로세스 :: 프로세스 간 통신 IPC 이번 포스팅에서는 IPC의 방식 중 하나인 공유 메모리 시스템에 대해서 자세히 알아볼 것이다. 공유메모리(shared memory) 공유 메모리를 사용한 통신은 두 프로세서가 공통의 메모리에 액세스를 하여 프로세스 간 통신을 하는 경우이다. 일반적으로는 프로세스가 다른 프로세스의 메모리에 접근하는 것을 금지하는데 이러한 제약 조건을 제거한다. 이후 커널에 공유 메모리 공간을 요청..
목차 직사각형에서 탈출(#1085) Problem 한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램을 작성하시오. Hint 2차원 좌표내 거리 = del x + del y 테두리까지의 거리를 어떻게 표현해야할까 생각해보자 Solution 기하를 이용한 풀이 x,y,w,h=map(int,input().split()) print(min(min(x,w-x),min(y,h-y))) 테두리까지의 최소값은 delx와 y 중에 최소값을 고르면 된다 네 번째 점(#3009) Problem 세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째..
목차 개요 FredBot 등 유명한 봇들에는 항상 음악 기능이 들어가있다. 그럼 이 기능은 어떻게 구현되는 것일까? 음악을 입력하면 키워드를 받아서 유튜브 등 음원사이트에 검색을 하여 1. 음악 파일을 다운받아서 재생 시켜준다. 2. 스트리밍을 해준다. 1번의 경우에는 음원을 다운받는데에 시간이 걸려 여러가지 음악을 신청시에 서버에 부하가 걸릴수 있다. 또한 재생까지에 시간이 걸린다. 2번의 경우에는 버퍼링이 걸릴수 있고 음질 이슈가 있을수 있다. (단일 노드 스트리밍일시) 그래서 FredBot 등이나 유명한 봇에서는 lavalink 라는 API를 따로 사용한다. 그 lavalink라는 API의 깃허브에 들어가보면 GitHub - Devoxin/Lavalink.py: A wrapper for Lavali..
목차 개요 지난 편에서는 작동 실행과 종료가 주였지만 지금은 본격적인 기능 구현을 위한 API 툴을 소개하겠다 author 봇은 기본적으로 명령을 받아서 수행하는 형태가 많고 이를 위해서는 누가 이 명령을 주었냐에 따라서 다르게 작동될 경우가 많기에 author 이라고 하는 ctx(context)를 보낸 유저가 누군지를 알아보는 기능이 필요하다. voice API Reference Loads the libopus shared library for use with voice. If this function is not called then the library uses the function ctypes.util.find_library() and then loads that one if available...
목차 문제풀이를 하기 전에 이번 단계의 제목인 집합과 맵 그리고 이 단계가 시사하는 목적에 대해 요약하자면 지금까지는 리스트를 사용해도 시간이 오래 걸리지 않는 적은 수의 데이터를 다루었다면 앞으로는 데이터가 커지기 때문에 문제의 조건을 보고 상황에 맞게 집합 set이나 맵 (해시맵을 뜻함) dict 등을 사용하도록 한다. 따라서 숏코딩 보다는 이에 중점을 두어서 문제 풀이를 하겠다. 숫자 카드(#10815) Problem 숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 가지고 있는지 아닌지를 구하는 프로그램을 작성하시오. Hint 두개의 리스트를 만드는건 불가피하다. 집합과 리스트의 차이는 집합은..
목차 개요 음악 재생 기능을 구현하다가 본 API 래퍼런스를 정리하는 글을 읽다가 자주 사용되는 주요기능을 한글로 해석하여 만들어놓으면 좋을것 같아서 리뷰해놓으려한다. Client 와 Bot 블로그 포스팅을 보다보면 누구는 @client ~ 로 작성하고 누구는 @bot 으로 작성하는것을 볼 수 있는데 결과부터 말하자면 bot은 client 의 하위 클래스로 실제로 discord.py API의 extention으로 존재함을 알 수 있다. Client에 관련된 Attribute 나 method 리스트는 여기에 ⬇⬇⬇ API Reference Loads the libopus shared library for use with voice. If this function is not called then the l..