코딩 테스트에서 많이 나오는 것 중에 하나는 조합을 구현하는 것입니다. 물론, 이것이 단독으로 나오는 경우는 매우 드뭅니다. 보통, 구현까지 요구하는 경우가 많습니다. 여기서 더 어려워 지면, 대놓고 조합으로 푸세요. 라고 하지 않고, 조건을 숨겨놓는 경우도 있는데요. 이 문제가 그에 속합니다. 이번 시간에는 조합을 어떻게 구현하는지 정도만 언급하도록 하겠습니다. 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방이라는 반례가 있습니다. 그 후에는, 이렇..
최근댓글