언어, 프레임워크
-
[Python] 어느 날 친구가 악성 프로그램을 만들어줄 수 있겠냐고 물어봤다.언어, 프레임워크/Python & Django 2023. 7. 23. 21:57
어디까지나 테스트 목적으로 진행한 것이며, 아래 내용을 따라해 발생하는 일에 대해 책임지지 않습니다! 말 그대로 이건 친구의 부탁을 받아 윈도우용 랜섬웨어 프로그램을 만든 기록이다. 사정을 이야기하자면, 친구는 보안 시스템 회사에서 일을 하고 있으며 백신 프로그램을 테스트하기 위해 악성 프로그램이 필요한 상황이었다. 친구 부탁이기도 하고 호기심도 생겨서 그래!라고 대답했다. 악성 프로그램 중에서도 랜섬웨어 프로그램을 만들어달라고 하여 찾아보았다. 랜섬웨어(Ransomware)는 몸값을 뜻하는 Ransom과 Software(소프트웨어)가 더해진 합성어이다. 컴퓨터 시스템을 감염시켜 접근을 제한하고 몸값을 요구하는 악성 소프트웨어의 한 종류로, 컴퓨터 접근이 제한되기 때문에 제한을 없애려면 해당 악성 프로그..
-
[Javascript] Set에 대한 얄팍한 정리언어, 프레임워크/Javascript & Typescript 2023. 5. 28. 01:33
틀린 내용이 있을 수 있습니다. 잘못된 부분을 발견하시면 말씀 부탁드립니다! 🙇 Javascript에서 Set을 이용해 코드를 작성한 적이 종종 있었고 코딩테스트 연습 문제들을 풀면서도 사용한 적이 있었다. 당시에도 사용하면서 왜 빠르지?를 궁금해하긴 했지만 이런저런 핑계 때문에 자세히 찾아보기를 미뤘다. 최근 알고리즘 문제를 풀다 Set을 이용해 속도 효율성 문제를 해결했고, 이 기회에 Javascript에서의 Set에 대해 정확히 이해하자 생각하여 정리해 본다. 1. Set의 정의와 특징 MDN에서 Set의 정의를 보면 'Set objects are collections of values.'라 나와있듯 Set은 여러 개 값들의 모음이다. 이 여러 개 값들의 모음인 Set에는 원시값(String, Nu..
-
[Javascript] test() 사용시 정규표현식에 g 플래그 포함할 경우언어, 프레임워크/Javascript & Typescript 2023. 3. 13. 15:36
틀린 내용이 있을 수 있습니다. 발견하시면 말씀 부탁드립니다! 🙇 정규표현식과 test() 메소드를 통해 문자열에 숫자가 포함되어있는지 체크하는 코드를 작성하다가, 글로벌(g) 플래그 여부에 따라 결과가 다른 것을 알게되었다. let checkNum = /[0-9]/; let checkNumGlobal = /[0-9]/g; mdn test method 문서를 확인해보니, 정규표현식에 g플래그를 붙이고 test() 메소드를 실행할 때 결과가 true일 때마다 정규표현식 객체의 lastIndex 프로퍼티를 업데이트한다고 되어있다. lastIndex는 다음 메소드 실행시 시작할 인덱스이다. 만약 test() 메소드 결과가 false이면 lastIndex가 0으로 업데이트 된다. 참고 자료 https://dev..
-
[Javascript] 병렬 처리와 함께 작업 순서가 유지되어야 하는 경우언어, 프레임워크/Javascript & Typescript 2022. 4. 6. 20:47
틀린 내용이 있을 수 있습니다. 발견하시면 말씀 부탁드립니다! 🙇 회사에서 운영 업무 자동화에 이용할 API를 개발했다. 해당 API에서는 서드파티 연동을 위해 외부 API 호출을 하면서 동시에 내부 DB 요청도 수행한다. 이러한 일련의 작업을 수행하는데 n초가 소요되며 유저 수(m)만큼 반복해야 하기 때문에 단순히 계산해도 n*m 초 이상이 걸린다. 속도 개선을 위해 병렬로 처리하려 하니 순서가 보장되지 않아 DB 요청에서 데이터가 꼬이는 이슈가 발생했다. (각 작업을 마치고 고유키와 로그를 저장하는 플로우를 위해 순서 유지는 필수이며, 속도 vs 순서 유지 중 하나만 선택해야 한다면 순서 유지를 골라야 하는 상황이다.) 개선 -작업 순서 유지와 함께 병렬 처리- 을 하기 위해, 자바스크립트의 비동기 ..
-
[Javascript] 함수형 프로그래밍 (+제너레이터/이터러블/이터레이터)언어, 프레임워크/Javascript & Typescript 2021. 10. 19. 14:37
인프런 강의를 통해 배운 내용과 궁금한 점에 대해 정리한 글입니다. 틀린 부분이 있다면 말씀 부탁드립니다! 함수형 프로그래밍이라는 단어를 듣기만 한 상태에서 강의를 보기 시작했다. 강의를 반 정도 본 지금, 평소에 내가 쓰던 코드가 함수형 프로그래밍 코드와 비교했을 때 얼마나 더러운(^^) 코드인지 알게 되었다. 아직 완강을 못 한 상태이기 때문에 이번 글에서는 함수형 프로그래밍에 대한 기본적인 정의와 사용 시 이점, 그리고 강의에서 언급된 제너레이터, 이터러블, 이터레이터에 대해 정리해보려 한다. 1. 함수형 프로그래밍은 선언적인 프로그래밍 패러다임이다. 선언적 프로그래밍이란? (+명령적 프로그래밍이란?) 더보기 명령적 Imperative 프로그래밍 ↔ 선언적 Declarative 프로그래밍 - 명령적..
-
[Typescript] 기본적인 타입스크립트 문법과 키워드 정리언어, 프레임워크/Javascript & Typescript 2021. 10. 6. 17:10
인프런 강의를 듣고 배운 내용에 대해 정리한 글입니다. 틀린 부분이 있다면 말씀 부탁드립니다! 올해가 가기 전 타입스크립트를 공부해야겠다고 생각했고 그 첫 단계로 타입스크립트 입문 강의를 들었다. 여러 언어 중 타입 스크립트를 선택한 이유는 1) 트랜디한 언어라는 점 2) 자바스크립트를 사용하고 있는 입장에서 러닝 커브가 적을 것 같다는 점 3) 자바스크립트와 뭐가 다른지 직접 써보고 확인하고 싶다는 점 때문이었다. 강의를 수강한 뒤 든 생각은 '자바스크립트의 확장판 느낌이군 + (자바스크립트에 비해) 사용하기 좀 번거롭네' 였다. 자바스크립트에선 신경 안 써도 됐던 타입 정의라던가, 그에 맞는 문법이라던가... 굳이 왜 이렇게까지 작성해야 되지?라는 생각이 들었다. 굳이 귀찮게 일일이 타입을 정하고 그..
-
[TIL] Python 쉬운 알고리즘 문제 풀기 + 정리언어, 프레임워크/Python & Django 2020. 8. 21. 20:01
오늘도 소소한 알고리즘 문제를 통해 알게 된 내용 정리 ✍️ 프로그래머스 Level 1 문제: https://programmers.co.kr/learn/courses/30/lessons/12916 코딩테스트 연습 - 문자열 내 p와 y의 개수 대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 programmers.co.kr string.count(): 문자열 메서드. 해당 문자열에 찾고자 하는 문자의 개수 반환. 첫 번째 인자에는 찾고자 하는 문자열, 두 번째 인자에는 시작 인덱스, 세 번째 인자에는 끝 인덱스 (끝 ..
-
[TIL] Python 쉬운 알고리즘 문제 풀기 + 정리언어, 프레임워크/Python & Django 2020. 8. 20. 22:14
별건 없지만 일단 기록! 알고리즘 풀고 알게된 내용 정리 🐌 프로그래머스 Level 1 문제: https://programmers.co.kr/learn/courses/30/lessons/64061?language=python3 코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr def solution(board, moves): answer = 0 stack = [] while len(moves) > 0: # 파이썬은 pop()안에 인덱스를 넣어 해당 인덱스 요소를 뺄 수 있다 i = moves.pop(0) for arr in board: ..