본문 바로가기

분류 전체보기

(16)
테크스펙 작성을 위한 효과적인 가이드라인 (A practical guide to writing technical specs) 스택오버플로우 블로그 글에 올라온 https://stackoverflow.blog/2020/04/06/a-practical-guide-to-writing-technical-specs/ 를 번역한 글입니다. 오역, 의역이 많을 수 있으니 참고 부탁드립니다. 소프트웨어 엔지니어인 당신의 해야할 일은 기술적 문제들을 해결하는 것이다. 이를 위해 바로 코드 작성을 하고 싶겠지만, 해결책에 대한 일말의 생각 없이 코드 작성을 시작하는 것은 아주 끔찍한 생각이다. 당신이 테크스펙을 작성하는 것으로 어려운 기술적 문제들을 생각할 수 있고, 글솜씨가 영 별로라면 하나를 쓰는 것에 있어 답답하다고 생각할 수 있습니다. 아마 불필요한 잡일 정도로 생각할 수도 있겠다. 하지만 테크스펙을 작성한다면 프로젝트의 이해관계자들이 ..
우리가 nest factory를 실행시킨 사이에... 개인적으로 네스트 팩토리를 실행시킨 다음에 뭔일이 일어나는지 궁금해서 몇가지를 좀 찾아보았다. const app = await NestFactory.create(AppModule); 저걸로 보통 네스트팩토리라는걸 생성하는데, 이게 우리가 돌려야할 커다란 웹사이트의 알파이자 오메가다.. 구현체를 보면.. public async create( module: any, serverOrOptions?: AbstractHttpAdapter | NestApplicationOptions, options?: NestApplicationOptions, ): Promise { const [httpServer, appOptions] = this.isHttpServer(serverOrOptions) ? [serverOrOpti..
Node.js/JS 면접 질문 1. var, let, const의 차이점 - var: 함수 범위에서 사용. 변수를 한번 더 선언해도 에러발생하지 않아 위험함 - let: 중괄호 범위(블록)에서 사용. - const: 중괄호 범위에서 상수를 선언할 때 사용. 따라서 선언과 동시에 할당 즉, var은 가급적 사용을 피하고 재할당 방지를 위해서는 const, 그게 아니라면 let을 사용하자. 2. hoisting - 함수 내에서 선언된 변수 선언부를 유효범위의 최상단에서 선언함. - 코드가 옮겨지지는 않고 JS 파서가 함수를 한번 preview하고 함수 도입부에서 선언하여 사용함. 3. Node.JS란? - 서버환경에서 JS를 실행할 수 있도록 개발된 자바스크립트 런타임 - 이벤트루프가 단일 스레드이므로 I/O가 잦은 서버에 있어 Non-..
2. 워밍업 - UPX 강사는 본 과정을 따라오지 못한다면, 초급과정으로 내려가는 것이 좋다고 권유함 1. UPX "TEST"를 출력하는 MsgBox를 출력하는 프로그램을 upx패킹해보도록 하자. 1-1. UPX자동 패킹/언패킹 upx.exe를 통해 upx로 패킹할 수 있다. 위와 같이 UPX로 패킹되어 있다는 안내 문구를 프로그램에서 확인해볼 수 있다. PE VIEW로 열어보면 다양한 메모리 할당을 위한 함수를 사용하고 있는 모습 또한 볼 수 있었다. 언패킹 또한 upx.exe로도 가능하다. 위와 같은 명령어를 사용하면 언패킹된다. 패킹되었다는 안내문구가 사라지고, 패킹되지 않은 프로그램임을 알 수 있다. 패킹되기 전 파일을 한번 집어넣어 본 것인데, 함수 호출을 위한 테이블이 그대로 살아있는 모습도 확인할 수 있으며, PE..
1. 실습환경 정리 추후 추가 예정
[Angr 공식문서] 1. Top Level Interfaces 사전 준비 IPython에서 angr를 사용하고 탐색해보자(다른 파이썬 커맨드라인 도구로 하여도 상관없다.) angr는 Ipython을 통해 사용되는 것을 전제로 개발되었다. 만약 어떤 인터페이스를 사용해야 하는지 햇갈린다면 tab키를 눌러 자동완성 시킬 수 있다. 간혹가다 IPython에서 tab키를 통한 자동완성이 느릴 수 있다. 자동완성의 정확성을 낮추지 않고 도움이 되는 방법을 알려주겠다. # ipython을 킬때마다 아래 코드가 되풀이되지 않도록 Ipython 프로파일의 startup 디렉토리에 아래 내용을 넣어라 import IPython py = IPython.get_ipython() py.Completer.use_jedi = False 이 프로젝트는 angr에 기반하고 있다. 이것과 함께,..
[Angr 공식문서] Angr 기여 방법 버그 보고 만약 angr에 버그가 나타난다면, 우리에게 알려주세요! 1. angr/바이너리와 angr/agr의 fork를 만드세요. 2. 우리에게 angr/바이너리와 바이너리를 pull requet를 보내십시요. 3. angr/tests/broken_x.py, angr/tests/broken_y.py 등의 바이너리를 작동시키는 테스트케이스를 포함한 angr/angr에 대한 pull request를 보내십시요. 우리가 서술한 테스트케이스를 따라주세요. 그러면 저희가 쉽게 합칠 수 있고 script를 실행시킬 수 있습니다. 예를들면: 1 2 3 4 5 6 7 def test_some_broken_feature(): p = angr.Project("some_binary") result = p.analyses...
[Angr 공식문서] 1. 설치 angr 설치 angr는 파이썬 기반 환경에서 작동하므로 Python3가 설치되어 있어야 합니다. python2는 지원하지 않습니다. Angr의 사용에 있어서 파이썬 가상환경(python virtual environment)사용을 극히 권장합니다. angr가 의존성을 지니고 있는 z3, pyvex들이 원본에서 포크된 라이브러리들의 네이티브 코드들을 필요로 하기때문에 libz3나 libVEX가 설치되어 있다면 angr가 이 프로그램들을 덮어쓸 수도 있습니다. 가상환경 밖에서 angr를 설치하여 동작시키다 발생한 문제에 대해서는 책임지지 않습니다. 의존성 python의 의존성은 pip나 setup.py 스크립트에 의해 다뤄집니다. 그러나 설치를 완료하기 위해서는 약간의 C언어 빌드가 필요할 수 있습니다. 따..