본문 바로가기

개발158

파이썬(python)에서 큐(Queue) 만들기 파이썬에서 Queue 자료구조를 구현하는 방법으로 collections 모듈에서 제공하는 deque 자료구조를 활용해 볼 수 있다. deque는 스택과 큐의 장점을 모두 채택한 자료구조로 데이터 삽입, 삭제 속도가 리스트에 비해 빠르고 효율적이며 queue라이브러리를 사용하는것보다 간단하다. deque의 append() 메소드를 이용하여 데이터를 삽입하며, popleft() 메소드로 꺼낼 수 있다. deque를 이용한 Queue 자료구조 예시 # Queue from collections import deque queue = deque() queue.append(5) # insert queue.append(2) queue.append(3) queue.append(7) queue.popleft() # pop.. 2021. 1. 4.
파이썬(Python)에서 스택 구현하기 스택은 선입후출(FIFO)구조인 기본적인 자료구조이다. 파이썬에서는 별도의 라이브러리없이 기본 리스트에서 append()와 pop() 메서드를 이용하면 구현 할 수 있다. append() 메소드는 리스트의 가장 뒤쪽에 값을 삽입하며 pop()메소드는 가장 뒤쪽의 데이터를 꺼낸다. 리스트로 구현한 스택 예시 stack = [] stack.append(5) stack.append(2) stack.append(1) stack.append(4) stack.pop() stack.append(9) stack.append(10) stack.pop() print(stack) # 최하단 원소 부터 출력 print(stack[::-1]) # 최상단 원소부터 출력 출력 결과 Wonheeui-MacBookPro:05.DFS... 2021. 1. 4.
cURL로 파일 다운로드 받기 CentOS 7에는 wget이 기본적으로 설치가 안되어 있지만 cURL은 설치가 되어있다. yum install wget으로 설치를 해서 사용해도 되지만 급할때 cURL로 파일을 다운로드 할 수 있기 때문에 방법을 알아 두는 편이 좋다. 방법은 간단하다 curl -O [url] curl -o [target file] [url] -O 옵션은 서버에서 던저주는 파일명을 그대로 다운로드 한다. 반면 -o 옵션은 직접 다운로드될 파일명을 지정할 수 있다. 더 자세한 옵션은 curl홈페이지를 참조하자. curl.se/docs/manpage.html curl - How To Use curl.se 2020. 12. 28.
NodeJS 바이너리 설치하기 / CentOS CentOS에서 nodeJS를 이용하는 방법은 yum 패키지 설치, 소스컴파일, 바이너리 설치가 있다. yum 패키지 설치의 경우 최신버전이나 특정 버전을 설치하기 어렵다. 또 소스컴파일 방법의 경우 개발 툴셋이 설치 되어 있어야하며 빌드 시간이 오래 걸린다는 단점이 있다. 때문에 바이너리 설치 방법이 가장 빠르고 편한 방법이 될 수 있다. 1. NodeJS 바이너리 아카이브 다운로드 NodeJS 홈페이지(nodejs.org/en/download/)에서 원하는 버전의 압축파일을 다운로드 받는다. 우리는 CentOS에 설치 할 것이므로 Linux x64 바이너리를 wget 명령어를 이용하여 적절한 위치에 다운로드 받는다. 2. 압축 풀기 tar명령으로 다운로드 받은 바이너리를 적절한 경로에 풀어준다. ta.. 2020. 12. 28.
[hackerrank] Minimum Absolute Difference in an Array / C++ int minimumAbsoluteDifference(vector arr) { sort(arr.begin(),arr.end()); int diff = INT_MAX; for(int i = 0;i 2020. 12. 7.
드라이버에서 파일 읽기 예제/ ZwOpenFile ,ZwReadFile 유저모드 프로그램에서 파일을 읽을 때에는 CreateFile API를 통해 파일을 열고 ReadFile함수 이용하여 파일을 읽습니다. 드라이버 개발을 할 때에도 간혹 파일 처리를 해야할 때가 있는데 이때 사용 가능한 커널모드 함수로는 Zw계열 함수인 ZwOpenFile, ZwReadFile입니다. 다음 코드는 ZwOpenFile, ZwReadFile 의 예시입니다. void FileRead() { NTSTATUS status = STATUS_SUCCESS; HANDLE hFile = NULL; IO_STATUS_BLOCK iostatus; OBJECT_ATTRIBUTES oa; LARGE_INTEGER byteOffset; UNICODE_STRING uFilename; unsigned char buf[1.. 2020. 11. 12.
Metasploit Framework 설치하기 / CentOS7 이번 포스트에서는 Metasploit Framework를 CentOS7에서 설치하는 법을 알아보겠습니다. Metasploit은 Rapid7에서 개발되고 취약성 점검, 침투 테스트등에 이용되는 보안 프로젝트입니다. 1. Metasploit 인스톨러를 다운로드 curl 명령어를 사용하여 Metasploit 인스톨러를 다운로드 받습니다. curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall 다운로드된 인스톨러에 실행권한을 줍니다. chmod +x msfinstall 다음 인스톨러를 실행합니다. ./msfi.. 2020. 11. 4.
PHP 에러가 출력되지 않을때 / display_errors php로 개발을 하던 중 이상하게 에러가 출력되지 않아 어디서 문제인지 알 수 가 없었다. echo, var_dump, 만찍다가 너무 답답하여 찾아보니 php.ini 설정 값이 잘 못 되어 있었다. 보통은 보안상의 이유로 릴리즈 배포시 에러를 출력하지 않게 설정해 놓는게 일반적이다. 하지만 개발시에는 에러를 알아야 하기 때문에 켜놓는게 좋다. php.ini에서 display_errors 옵션을 On으로 변경하자. display_errors = On 2020. 11. 4.
React Native ] macOS에서 안드로이드(android) 개발 환경 구축하기 이전 포스트에서 macOS에서 React Native iOS 환경을 구축해보았다. lucidmaj7.tistory.com/252 iOS React Native 환경 구축하기 이번에 알아볼 내용은 React Native 개발환경을 macOS에서 구축하기 위한 방법이다. React Native는 페이스북에서 개발한 오픈소스 모바일 애플리케이션 프레임워크로 기존의 Web에서 사용하는 React를 Nat lucidmaj7.tistory.com 이번 포스트에서는 macOS에서 React Native 안드로이드 개발환경을 구축하는 법을 알아보려한다. React Native 안드로이드 개발환경 구축 방법은 React Native 홈페이지에 자세히 나와있다. reactnative.dev/docs/environment-.. 2020. 10. 14.