블로그 이미지
안녕하세요~ iolate(isho) 의 블로그 입니다~! iolate

카테고리

분류 전체보기 (155)
끄적끄적 (9)
Server, AWS (6)
Linux, Ubuntu (22)
개발질 (44)
Mac (18)
iOS (23)
IoT (5)
Web (5)
ROS (1)
Network (3)
Review (10)
마인크래프트 (1)
WF IT봉사 (0)
기타 (8)
비공개글 (0)
Total544,875
Today230
Yesterday264



기대 안하고 있다가 다른 사람이 컷이 4문제 정도일 것 같다는 말에 혹시? 했는데..

본선 진출..... ㅋㅋㅋㅋㅋㅋ


가볼까 말까........


(08.11 18:12 수정)


----------------------------------------------------------------------




예선 참가 도중의 스크린샷도 하나도 없고, 끝나고 완전히 다 닫혀버려서 소스코드도 하나도 없어서 그냥 지나가려고 했지만,,

그래도 재밌었던 경험이라? 조금 부끄럽기도 하지만 짤막하게 남겨본다.


알고리즘 같은걸 제대로 배워본 적도, 공부해본 적도 없어서 보통 이런 대회는 자신이 전혀 없고,,

괜히 쳤다가 참혹한 현실의 결과에 우울할 것 같아 응시를 잘 안하지만,

그래도 잉여로운 나날에 변화점이 될 수 있지 않을까 시도해봄.


예선은 원래 오후 1시 ~ 7시였지만, 당일날 멍때리고 있다가 오후 2시부터 시작하였다.


다행히 문제를 보고 싶다는 동아리 선배의 말에, 스크린샷/복붙을 해둔 친구가 있어서 글 쓰기는 조금 편한 듯.

기본 코드를 제외한 문제 원문이 그대로 있지만, 혹시 모르니 다 올리진 않고 적당히 내 기억에따라 작성...


언어는 C++, Java 2가지였고, 원래 Java 를 별로 안좋아할 뿐더러 C++11 이라 Java 보다 불편할 이유가 없었기에 모두 C++ 로 풀었다.

여튼 문제는 총 6문제!


1 -> 2 -> 4 -> 5 -> 3 순으로 풀었는데, (6은 못품)

1 -> 2 -> 4 까지 2시간 정도 걸렸고, 5번을 푸는데 1시간 정도 투자했던 것 같다.


3번도 1시간 정도 투자했던 것 같지만 결국 못풀었고...

6번은 제대로 시도조차 못해봤다.


결론적으로 1, 2, 4, 5번 이렇게 4개 문제를 풀었음.



Code Festival 문제

1. 카카오 프렌즈 컬러링북


2차원 벡터로 표현된 이미지에서 가로세로 같은색끼리 classification 해서 총 몇개 그룹으로 나뉘는? 뭐 그런 문제였다.

그냥 재귀함수 하나 짜서 돌렸다.


2. 보행자 천국


2차원 맵을 주고 좌측 상단에서 우측 상단까지 최단거리로 가는데, 지점마다 제한(방향전환 불가 / 진입불가)이 있고, 총 몇개의 루트가 있는지를 구하는 문제.

얘도 마찬가지로 재귀로 짰는데, 타임아웃이 났다.

벡터를 하나 더 만들어서, 한번 경우의 수가 구해진 경로는 저장을 했더니 통과.



3. 브라이언의 고민

♚프☆렌☆즈☆레☆이☆싱♚★사전예약★진행중
$지금$예약시♜이모티콘♜100%※증정※
★라이언★카트♨전원♨획@득@기@회
즉시이동 http://...

sentence 

answer 

 HaEaLaLaObWORLDb

 HELLO WORLD

 SpIpGpOpNpGJqOqA

 SIGONG JOA

 AxAxAxAoBoBoB

 invalid


스팸필터를 피하기 위한 규칙적인 광고글을, 원래 문구로 복구시켜보는 문제.


파이썬을 사용하지 않는 문자열 처리를 싫어해서 젤 뒤로 미뤘는데, 결국 마감시간에 쫓겨 제출하지 못했다.

나름 짠다고 짰는데, 경우의 수를 제대로 고려해주지 못했다.

급하게 작성을 하다가 결국 풀지 못한 문제...

중간에 안놀고 1시부터 제때 풀기 시작했으면 풀 수 있지 않았을까 싶어서 아쉬움이 많이 남는다.



4. 4단 고음


어.. 음...

시작음이 1이라고 할때, x3 +1 +1 순서로 높아지는 3단 고음을 구현하는 아이유가,

삼단고음을 중간중간 섞어서 당일 컨디션에 따라 원하는 고음 높이를 구현하기 위한 가지수를 구하는...(뭔소리야)


(생략)

3단 고음은 다음과 같이 적용된다. 1단계에서는 음높이가 세 배가 되며, 2단계와 3단계에서 음높이가 각각 1씩 증가한다. 이를 기록으로 남길 때 * 와 + 기호를 사용하기로 했다. 즉, 3단 고음을 한 번 한 경우는 문자열로 나타내면 다음과 같다.

*++

(생략)

3단 고음의 2단계를 마친 후 3단 고음을 새로 시작한 다음, 나머지 단계를 이어서 하는 경우는 *+*+++

(생략)


 *

 x3

+1 

x3 

+1 

+1 

+1 


최종 음높이: 15



위 문제들과 마찬가지로 그냥 재귀로 역으로 찾으면서 내려갔다.

당연히 그냥 전체 돌면 타임아웃이 나고 중간에서 적당히 빠져나와줘야 하는데...


역계산 하면서 나오는 + 갯수상, 반드시 나와야하는 * 갯수(예를 들어 +가 3개라면 남은 *은 2개, 즉 현재 계산 중인 높이가 3^2 = 9 이상)로 먼저 걸렀는데 또 타임아웃.

그래서 다음으로 최종 음높이를, 밑을 3으로 하는 로그(log(n) / log(3)) 를 취한 값을 구해서, * 이 나올 수 있는 최대 갯수를 구한 다음에 이걸 기준으로 한번 더 걸러주니 정답처리 되었다.



5. 캠핑


쐐기의 좌표를 주고, 외곽선을 제외한 내부에 다른 쐐기가 없는, 대각선으로 쐐기 두개를 고르는 문제였다. (설명을 못하겠네.. ㅈㅅ..)


얘는 그냥 루프로 돌렸지만,, 당연히 그냥 다 돌면 타임아웃...


주어진 쐐기에 대한 좌표들을 x에 대해서, 그 다음 y에 대해서 정렬을 했고, 루프 안에서 인덱스 몇개를 저장하는 방식으로 루프 횟수를 줄이니 8.5초(...)로 통과가 되었다.



6. 신비로운 유적 탐험


트리의 최대 공통부분의 크기를 구하는 문제. 위 예시의 경우 답은 7


바이너리 트리였다면 좀 시도를 해봤을텐데, 시간도 없었고 감이 잘 안와서 시도도 못해본 문제...

1학년때 특허의 claims 항목과 관련하여 비슷한 논문(?)을 봤었는데, 그냥 그 기억만 떠오르고 말았다.




------


5문제 쯤 풀면 괜찮게 풀었다고 말할 수 있지 않을까.. 했는데 4문제로 그쳐 아쉬웠다.
사실 푼 4문제도 잘 풀었다고 말할 수 없을 것 같기도 하고...ㅠㅠㅠ

코드를 백업하지 못해 아쉽다고 생각하기도 했지만, 지금 생각해보니 있어봤자 부끄럽기만 했을 것 같기도 하다.
잘 푼 사람이나 모범답안(?) 같은거 몇개 공개해주면 정말 고마울 것 같은데....ㅠㅠㅠㅠ

결과가 어떤식으로 나올지, 잘한 사람들 코드를 공개해줄지 기대하며, 끝!


저작자 표시 비영리 변경 금지
신고
Posted by iolate

배틀그라운드를 하고싶어만 하던 와중에, 곧 입대하는 선배가 본인의 그래픽카드를 조금 저렴하게 판다고 하셔서,

약간의 고민 끝에 바로 질러버렸다.


eGPU 에 대한 궁금증 + 관심이 예전부터 조금 있기도 했고...


비싼 듯 싼 듯....


Mac 및 Bootcamp 를 공식지원하지 않는다곤 하지만, 이런저런 편법을 사용하면 된다고 하여 구매하도록 하였다.

그래픽카드를 바로 되팔아도 몇만원 이득보게 구매하기도 하였고, eGPU Box 도 크게 감가가 없는 듯 하기도 하였고.



Apple | iPhone 6 | Normal program | 4.2mm | 2017:07:27 14:41:59     Apple | iPhone 6 | Normal program | 4.2mm | 2017:07:27 14:47:43


비교군은 갤럭시s6.. 생각보다 너무 큰 택배상자가 와서 놀랐다


설명서, 나사, 전원케이블, 30cm TB3 케이블이 함께 온다.

저 파란 타이? 는 뭔지 모르겠고...



Apple | iPhone 6 | Normal program | 4.2mm | 2017:08:01 13:58:32


이건 선배가 쓰다가 나에게 판 그래픽카드!

어릴땐 형이 알아서 컴을 맞췄고 고등학생때부턴 맥을 사용해왔으니,

내 소유의 그래픽카드는 처음이다. 여전히 잘 모르기도 하고..ㅋㅋㅋ

어련히 좋겠거니....


장패드도 같이 주셨는데 나에겐 부담스럽다..ㅠㅠ



Apple | iPhone 6 | Normal program | 4.2mm | 2017:08:01 14:06:32    Apple | iPhone 6 | Normal program | 4.2mm | 2017:08:01 14:16:24


그래픽카드에 비해 eGPU BOX 가 너무 커서 그래픽카드 2개 설치하는 용도인가 했는데,

안에 두꺼운 팬? 이 자리하고 있다.

mini 제품도 따로 있던데,, 뭐 들고 다니면서 쓸건 아니니 아쉽지만 큰 사이즈는 그러려니...



Apple | iPhone 6 | Normal program | 4.2mm | 2017:08:01 14:23:08


TB3 케이블이 너무 짧아서 후면을 앞으로 배치하였다.




전원을 종료한 상태에서 연결하고 켜야한다고 하던데, 나의 경우엔 Mac, Windows 둘다 켜진 후에 연결해도 별 문제는 없었다.

물론 연결해도 될 뿐 정상작동한다는 소리는 아님..

또한, AKiTiO Node 가 전원도 공급해준다.



Windows 는 그래픽드라이버 잡고 재부팅하니 별문제 없이 바로 사용가능.

다만 후에 부팅하려고 하니 처음 로고화면에서 멎어서 부팅이 안되는 경우가 발생했다.

부팅 상태에서 연결하면 장치관리자에 error 12, 리소스 부족으로 사용할 수 없다는 메시지가 나오는데,,

egpu.io 에 가보면 아예 상단 메뉴로 [GUIDE] Macbook Pro: solving eGPU error 12 in Windows 10 가 링크되어 있다.


난 저 가이드를 하기 싫어서 부팅 상태에서 연결 후 가만히 있으니 윈도우가 재부팅해야한다고 하고, 재부팅 후에 다시 잘 되더라.

한번 더 부팅하면 어떻게 될지 모르겠다.... 바로 배틀그라운드 결제 후 재밌게 하고 옴..ㅋㅋ


USB-C 허브가 하나 있는데, eGPU 연결된 상태에서 얘를 추가로 연결하면 컴퓨터가 바로 재부팅된다.

HDMI 때문에 그런 것 같기도 하고... 이건 좀 불편함..



Mac 은 모델에 따라 조금 다른 것 같다.


나는 USB-C 지원 맥북을

Macbook Pro Touchbar (15", 2016) 모델과, 

뉴맥북 레티나 (12", 2016 early) 모델을 가지고 있는데,


맥북프로의 경우에는

부팅 전후 연결에 별 문제가 없다. 시스템 리포트에 정상 연결됨을 확인할 수도 있고.



다만 외장 그래픽으로써 사용이 되진 않는 것 같은데,

automate-eGPU 라는 스크립트가 있다.

루트리스를 꺼야하는게 귀찮고 맥북프로에서는 외장그래픽이 딱히 필요가 없어서 시도해보지 않았다.



뉴맥북은 연결되면 좋을 것 같아서 rootless 를 끄고 시도해보기로 했다.

다만 뉴맥북은 연결하자마자 아래와 같은 메시지가 뜨고 연결이 되지 않는다.

스크립트 역시 장치가 검색되지 않아서 작동하지 않고... 대역폭이 부족해서 안되나부다..







외장그래픽 연결 후 해본건 오버워치 훈련장이랑 배틀그라운드..

배틀그라운드는 첫판을 자동 설정 그대로, 모두 울트라로 진행하였고, 별로 렉이 없었다.


그 후론

안티 앨리어싱: 울트라

포스트 프로세싱: 매우 낮음

그림자: 매우 낮음

텍스쳐: 울트라

효과: 매우 낮음

식생: 매우 낮음

거리 보기: 중간

으로 무리 없이 플레이 하였다.


총 5판 정도?에 듀오로 팀 2위 까지(1킬이지만...ㅋㅋ) 가보고 멀미할 것 같아서 그만함..ㅋㅋㅋㅋ





한동안 재밌게 하다가, 게임 외에 사용처를 못찾으면 팔아버려야겠다.


저작자 표시 비영리 변경 금지
신고
Posted by iolate

내가 만든 Lambda 함수에서는 AWS RDS 에 접근도 필요했고, 외부 인터넷으로의 접근도 필요했다.

RDS SG(Security Group) 설정상 Lambda 를 VPC 내에 뒀는데, 이러면 Lambda 에서 외부 인터넷으로 접근이 안된다..!


VPC 밖에 두면 외부 인터넷 접근은 되지만 IP 주소를 특정할 수 없어서 SG 설정이 어려운 상황...


정석적인 가이드는 VPC 에 Managed NAT Gateway 를 생성하여, VPC 내의 Private subnet 이 외부 인터넷 접속이 가능해주게끔 구성하는 방법이지만, 이 NAT Gateway 비용이 월 $40가 넘는다...

비용 및 성능상의 이점으로 Lambda 를 쓰려고 했는데 되려 당한 상황이랄까..



그래서 당장의 해결책은, Lambda 가 있는 리전의 Amazon EC2 IP 들을 RDS 의 SG 에 때려박아두는 것!


Amazon 이 사용하는 IP 주소 목록은

https://ip-ranges.amazonaws.com/ip-ranges.json

이 주소에서 JSON 형태로 확인할 수 있다.


관련 설명은 https://docs.aws.amazon.com/ko_kr/general/latest/gr/aws-ip-ranges.html 여기 참고.


더보기


대충 위의 접어둔 파이썬 코드를 이용해서,

ap-northeast-2 region 의 EC2 service ip prefix 만 가져온 다음에, 이걸 Security Group 에 넣으면 해결.


Source 에 쉼표로 구분된 값을 넣고 저장하면 알아서 분리된다.


-----


이 글을 쓰는 동안, Lambda 함수를 두개로 분리해서, DB 로 접속하는 경우에(몇번 안됨) 다른 Lambda 함수를 호출해서 결과를 받으면 어떨까란 생각이 들었다.


Lambda 비용이 두배로 들겠지만, 어차피 1백만회를 초과할 것 같지도 않고, 초과해도 NAT Gateway 비용보다는 쌀 것 같달까...


다음에 시도해봐야겠다.


잘 된다. ㅋㅋ

다만, VPC 설정이 된 람다함수는 다른 람다함수를 호출할 수 없다.

같은 VPC 안에 위치하지 않는걸 생각하면 당연한건데 한참을 헤맸네...ㅠ

저작자 표시 비영리 변경 금지
신고
Posted by iolate

최근에 달린 댓글

최근에 받은 트랙백

글 보관함