코딩 테스트에서 많이 나오는 것 중에 하나는 조합을 구현하는 것입니다. 물론, 이것이 단독으로 나오는 경우는 매우 드뭅니다. 보통, 구현까지 요구하는 경우가 많습니다. 여기서 더 어려워 지면, 대놓고 조합으로 푸세요. 라고 하지 않고, 조건을 숨겨놓는 경우도 있는데요. 이 문제가 그에 속합니다. 이번 시간에는 조합을 어떻게 구현하는지 정도만 언급하도록 하겠습니다. n개 중에 m개를 뽑는다고 해 봅시다. 뽑은 것만 중요한 게 조합입니다. 순서가 중요하진 않아요. 그러면, 하나를 뽑으면서, 뽑을 수 있는 집합을 줄여나간다고 봐도 될까요? 예를 들어보겠습니다. 카드가 5개 있습니다. 이 중 3개를 뽑아야 합니다. 뽑은 것이 중요하니, 전략을 하나 세워봅시다. 일단, 먼저 뽑은 카드에 적혀있는 수가 나중에 뽑은..
분류 전체보기 검색 결과
path traversal 공격은 들어보신 분도 계실 겁니다. spring boot로 만든 간단한 프로그램을 가지고 테스트를 해 보도록 하겠습니다. 먼저, 프로젝트 구조는 다음과 같습니다. application.properties를 보겠습니다. server의 포트를 7778로 설정하였습니다. 다음에, default controller를 보겠습니다. 뭔가 복잡해 보이는데요. path가 /data입니다. 이것은, 파라미터로 file name을 보내면, 해당 파일에 있는 내용을 출력해서 응답합니다. 별 문제는 없어 보입니다. 저는 클라이언트가 보내준 값만 믿겠습니다. 저는 우분투를 이용하므로, 방화벽을 설정해 줄 건데요. 포트를 7778을 쓰므로, 172.30.1.0/24에 대해서만 허용해 줍니다. 왜 그런지..
GIL과 lock에 대해 공부하다 보면, 연산이 atomic하다. 그렇지 않다 이야기는 많이 들을 듯 싶습니다. a += 1 같은 것도 사실 바이트 코드로 보면 몇 개의 연산으로 이루어져 있을 겁니다. c python에서 한 줄의 코드에 어떤 바이트 코드들이 들어 있는지 간단하게 확인하는 방법이 없을까요? dis 모듈을 이용하시면 편하게 하실 수 있습니다. 저는 문서에 나 온 것 중, dis 함수만 언급하겠습니다. 나중에, 다른 것이 필요하다면 따로 보는 게 좋을 듯 싶어요. dis 모듈은 뭔지는 잘 모르겠어요. 그런데, Disassembler가 나오고, byte code가 나오는 걸로 보아서는 파이썬 코드를 기계어나, 혹은 바이트 코드로 변환하는 역할을 하는 모양새입니다. 여기에 있는 모듈 중에 우리가..
파이썬을 다루시다 보면 한 번 쯤 GIL에 대해서 들어본 적이 있을 겁니다. 그리고, 이에 대한 문서를 보면, jython이나 iron에는 GIL이 없다는 것을 알 수 있는데요. 이렇게 구현체마다 다른 특성을 가지는 경우가 있어요. 그래서, 버전과 함께 구현체를 확인하는 방법을 알아보려고 해요. python을 하는데, Jython을 쓰는지 pypy를 쓰는지, cpython을 쓰는지 모르면 말이 안 될 거고요. 이 질문의 답을 보면, platform을 써 보라고 합니다. platform을 import 해 보겠습니다. 여기에는, platform identifying data를 얻어오기 위한 모듈임을 알 수 있어요. function API를 통해서, information을 만들어 낸다는 이야기도 같이 덧붙이고..
이번 시간에는 인증과 인가에 대해서 알아봅시다. 아마 http를 공부하시다 보면 한 번 쯤은 들어보셨으리라 생각합니다. 401과 403, 그리고 404가 이것과 연관이 있습니다만, 이 글에서 상태코드를 중요하게 다루지는 않을 겁니다. 티스토리 포럼에 가 보시면, 댓글을 입력하는 란이 있음을 알 수 있어요. 최대 500자까지 입력이 가능해 보이는군요. 입력하려는 순간 로그인을 하라고 뜹니다. 이는 제가 로그인을 하지 않아서, 서버는 내가 누구인지 모르기 때문입니다. 처음 보는 사람이 누구인지 모르는 것처럼요. 로그인을 해 보겠습니다. 로그인을 하고 나서 보니, 코딩강아지라는 것이 확인 되었습니다. 신원이 확인이 된 셈입니다. ip 주소를 알면 되지 않을까요? pc방이라는 반례가 있습니다. 그 후에는, 이렇..
최근댓글