6 분 소요

들어가며

이제 취업도 얼마 남지 않았고 졸업 또한 얼마 남지 않았다. 그동안은 내가 해보고 싶은 거 다 해보자는 마인드였지만 이제는 선택과 집중을 해서 그것만 파야겠다고 생각했다. 그동안 한 것 중에 나름 재미있고 앞으로도 하고 싶은 거 위주로 공부하고 깊게 파보려고 한다.

프로그래밍 언어

C++ & Python

C++ (범용 프로그래밍 언어, 성능 중심의 프로그래밍에 적합), Python (범용 프로그래밍 언어, 빠른 개발과 다양한 응용 프로그램 개발에 적합)

가장 기본이 되는 프로그래밍 언어를 공부하려고 하는데 좀 더 본격적이고 집중하기로 한 건 C++과 Python이다. 사실 두 언어의 학습 동기는 주로 취업과 포렌식 때문이다. IT 분야에서 취업을 하기 위해서는 대부분 기업이 코딩 테스트를 실시하고 있다. 특히, C++과 Python은 많은 기업에서 선호하는 프로그래밍 언어 중 하나? 라고 생각한다. C++은 시스템 수준의 프로그래밍이 필요한 곳에서 매우 유용하며, Python은 그 유연성과 다양한 라이브러리 덕분에 데이터 과학, 웹 개발, 자동화 등 다양한 분야에서 활용된다.

C++은 코딩 테스트에서 성능과 효율성을 평가하는 문제에 매우 적합하다. 복잡도가 높은 알고리즘 문제에서 메모리 관리와 실행 시간은 매우 중요한 평가 기준이 된다. C++의 세밀한 메모리 관리 기능과 빠른 실행 속도는 이러한 문제들을 해결하는 데 큰 이점을 제공한다. 또한, 많은 기업이 C++을 사용하여 시스템 레벨의 소프트웨어를 개발하기 때문에, 이 언어를 통해 그러한 기술적 문제들을 해결할 수 있는 능력을 보여줄 수 있다.

Python은 그 사용의 용이성으로 인해 코딩 테스트에서 시간을 절약할 수 있게 해준다. 많은 코딩 테스트와 알고리즘 대회에서는 효율적이고 읽기 쉬운 코드를 빠르게 작성하는 것이 중요하다. Python의 간결한 문법은 복잡한 로직을 명확하고 간단하게 표현할 수 있게 해준다. 또한, Python의 풍부한 표준 라이브러리와 서드파티 라이브러리는 자주 사용되는 알고리즘과 데이터 구조를 손쉽게 구현할 수 있도록 도와주며, 이는 코딩 테스트에서 시간을 절약하는 데 크게 도와준다.

C++과 Python은 코딩 테스트 준비에 있어서 각각의 장점을 가지고 있다. C++는 성능 중심의 문제 해결에 강점을 가지며, Python은 빠르고 효율적인 코딩이 가능하여 문제 해결 속도를 높여준다. 이 두 언어의 조합은 코딩 테스트에서 필요한 다양한 유형의 문제를 효과적으로 대비할 수 있는 폭넓은 스킬 셋을 제공한다. 따라서, 개발자로서의 커리어를 향한 첫걸음으로 이 두 언어의 학습과 실습에 집중하고 있다.

Rust

현재 대부분의 작성 언어는 C 언어로 되어 있다. 그러나 앞으로는 Rust로 대체되지 않을까? 개인적으로 생각해 본다. Rust는 시스템 프로그래밍을 위해 설계된 언어로, 메모리 안전성과 병행성을 중시한다. 최근 백악관은 개발자들에게 C와 C++ 같은 전통적인 언어들이 더 이상 안전하지 않다고 발표하면서, 이들 언어의 사용을 중단할 것을 촉구하는 보고서를 발표했다. 이러한 보고서는 C와 C++ 언어들이 1980년대부터 오늘날까지 수많은 사이버 공격을 쉽게 했다고 지적한다.

Rust의 메모리 안전성은 컴파일 시간에 메모리 접근 오류를 감지하고 예방한다. 이는 소유권, 대여, 수명 등의 개념을 통해 구현된다. 이러한 체계는 메모리 누수, 댕글링 포인터, 버퍼 오버플로우 등의 위험을 상당히 줄여준다. 또한, 데이터 경쟁을 방지하며 안전하게 데이터를 관리할 수 있는 병행성 모델을 제공한다. 이는 멀티쓰레딩 환경에서도 높은 수준의 안정성을 보장한다.

Rust는 C와 유사한 수준의 높은 성능을 제공한다. 성능 저하 없이 안전하고 효율적인 코드를 작성할 수 있다, 이는 저수준 시스템 제어와 고수준 언어의 편의성을 동시에 제공한다. Rust는 타입 추론, 패턴 매칭, 함수형 프로그래밍 기능을 지원하여 더욱 깔끔하고 유지보수가 용이한 코드를 가능하게 한다. 또한 Cargo라는 강력한 패키지 관리자와 빌드 시스템을 통해 프로젝트 관리가 용이하다. 개인적으로 Rust가 기존의 언어들을 대체할 강력한 후보라고 생각한다. 특히 보안이 중요한 시대에 안전성과 성능을 동시에 제공하는 Rust는 매우 매우 매력적이다.

Network

네트워크(Network): 데이터 교환을 가능하게 하는 디지털 통신 시스템 IOT (Internet of Things): 서로 연결된 장치들이 인터넷을 통해 데이터를 주고받는 시스템

네트워크 기술은 모든 디지털 통신의 기본을 이룬다. 데이터가 어떻게 인터넷을 통해 전송되는지, 서버와 클라이언트 간에 어떻게 통신이 이루어지는지를 이해하는 것은 모든 형태의 프로그래밍 및 시스템 설계에 필수적이다. 네트워크를 통한 데이터의 효율적인 교환 방법을 배우는 것은 웹 개발, 클라우드 컴퓨팅, 데이터 센터 관리 등 다양한 분야에서 활용된다.

IoT는 일상생활의 사물들이 인터넷을 통해 서로 데이터를 주고받으며 상호 작용하는 기술을 말한다. 이는 스마트 홈 기기, 산업 자동화, 스마트 시티, 헬스케어 기술 등 매우 넓은 범위에 걸쳐 적용된다. IoT 기술을 이해하고 개발할 수 있는 능력은 이 시장에서 새로운 기회를 창출하고, 창의적이고 혁신적인 솔루션을 제공할 수 있는 기반을 마련해 준다.

네트워크와 IoT 기술 모두 보안이 매우 중요한 요소이다. 데이터가 네트워크를 통해 전송될 때, 그리고 수많은 IoT 기기가 상호 연결될 때, 보안 취약점이 발생할 수 있다. 이 분야를 공부함으로써 보안 프로토콜과 방어 메커니즘을 이해하고, 잠재적인 위협으로부터 시스템을 보호하는 방법을 배울 수 있다.

네트워크와 IoT 기술의 발전은 계속해서 새로운 비즈니스 모델과 서비스를 가능하게 한다. 이러한 기술을 습득함으로써, 혁신적인 프로젝트에 참여하고, 기술 진보에 기여하며, 기술 분야에서의 경력을 다양화하고 심화시킬 수 있다.

이렇듯 네트워크와 IoT를 공부하는 것은 현대 기술 환경에서 중요한 역량을 구축하고, 다양한 산업 분야에서 중요한 기회를 포착할 수 있게 한다. 또한, 이는 개인적인 성장과 전문성 강화에도 기여하며, 기술의 미래를 형성하는 데 중요한 역할을 할 수 있다.

공부

임베디드 시스템 (Embedded Systems) : 특정 기능을 수행하기 위해 설계된 컴퓨터 시스템 (하드웨어 + 소프트웨어) 임베디드 시스템은 특정 기능을 수행하도록 설계된 컴퓨터 시스템으로, 하드웨어와 소프트웨어가 통합되어 있다. 이러한 시스템은 가전제품, 의료 기기, 자동차 등 일상생활 곳곳에서 활용된다. 임베디드 시스템을 공부함으로써, 특정 목적에 최적화된 시스템을 설계하고 개발하는 능력을 키울 수 있으며, 이는 기술적 문제 해결 능력을 향상시키고, 다양한 산업 분야에서 응용 가능한 실질적인 기술을 습득하는 것을 의미한다.

개인적으로 이미 프로그래밍 언어인 Rust를 배우며 메모리 안전성과 병행성에 대한 중요성을 깊이 이해하고 있다. Rust가 제공하는 보안 기능 덕분인데, 이러한 개념은 임베디드 시스템에서도 매우 중요하다. 사실, 임베디드 시스템은 우리 생활 곳곳에 존재하며, 이 시스템들이 안전하지 않다면, 심각한 보안 문제로 이어질 수 있다.

임베디드 시스템은 전자기기에서부터 교통 관리 시스템, 의료 장비에 이르기까지 다양한 분야에서 핵심적인 역할을 한다. 이 시스템들이 해킹의 대상이 되면, 단순한 데이터 유출을 넘어서 인명 피해나 중대한 재산 손실을 초래할 수 있다. 따라서 이러한 시스템들을 안전하게 보호하는 것은 매우 중요하다. 확실히 해킹보안 분야는 하드웨어(전자공학)도 잘 알아야 하는것 같다.

포렌식 (Forensic Science) : 법적 문제를 해결하기 위한 과학적 접근 방식, 디지털 포렌식은 컴퓨터나 디지털 장치의 데이터를 분석

블록체인 (Blockchain Technology) : 분산 데이터 저장 기술, 트랜잭션을 기록하여 보안성과 투명성을 높이는데 사용

리눅스 (Linux Operating System) : 오픈 소스 운영 체제, 서버 및 임베디드 시스템에 널리 사용 리눅스는 오픈 소스 운영 체제로서, 서버, 슈퍼컴퓨터, 임베디드 시스템 등에 널리 사용된다. 리눅스를 배우는 것은 시스템 운영, 서버 관리, 보안 측면에서 근본적인 이해를 제공하며, 오픈 소스 생태계에서 협업하고 기여하는 방법을 배울 수 있는 기회를 제공한다.

프로젝트

나쁜놈들을 잡자

개인적으로 봉사활동을 매년 해오고 있다. 앞으로도 꾸준하게 할 예정이다. 내가 하는 봉사활동은 더 나은 인터넷 환경을 구축하는 것이다. 그러나 현재 활동하는 것은 수작업으로 진행이 된다. 따라서 수작업 말고 반 자동화를 구축하여 같이 봉사활동 하는 사람들이 편리하게 사용하고 더 빠르게 좋은 환경을 구축할 수 있게 하는 것이 개인적인 목표이자 바람이다. 이 프로젝트 또한 기간이 오래 걸릴 수는 있지만 꾸준하게 개발해 나가려고 한다.

암호화 프로그램

데이터 보호는 디지털 시대에서 중요한 문제 중 하나이다. 이를 위해, 강력한 암호화 프로그램을 개발하려고 한다. 비록 이런 강력한 암호화 기술이 양날의 검이 될 수 있다는 것을 인지하고 있지만, 현재 상황에서는 데이터 보호가 훨씬 더 중요하다고 생각한다.

매일 엄청난 양의 데이터가 생성되고, 이 데이터 중 많은 것이 민감한 정보를 포함하고 있다. 이러한 정보를 보호하지 않으면, 개인의 프라이버시는 물론 기업의 기밀 정보가 위험에 노출될 수 있다. 강력한 암호화 프로그램은 이러한 정보를 안전하게 보호하는 데 필수적이다.

암호화 기술이 발전함에 따라, 이를 악용할 수 있는 가능성도 증가한다. 예를 들어, 범죄자들이 암호화를 사용하여 법 집행 기관의 감시를 회피할 수 있다. 그러나 이러한 위험을 이유로 암호화 기술의 발전을 억제해서는 안 된다. 오히려, 더 강력하고 효율적인 암호화 방법을 개발하여 보안을 강화해야 한다.

개발하려는 암호화 프로그램은 암호화 알고리즘을 사용하여 높은 수준의 보안을 제공할 것이다. 또한, 사용자 친화적이면서도 전문가들도 만족할 수 있는 유연성과 강력한 기능을 갖출 예정이다. 개인 사용자부터 대기업까지, 모든 이들이 이 프로그램을 통해 그들의 데이터를 안전하게 보호할 수 있게 할 것이다.

강력한 암호화는 디지털 시대의 필수적인 방어책이다. 앞으로 개발할 암호화 프로그램은 데이터 보호를 최우선으로 하며, 이를 통해 디지털 세계에서의 보안과 프라이버시를 한층 강화할 것이다. 앞으로의 발전을 통해, 더욱 안전하고 정의로운 디지털 환경을 만들어 나가는 데 기여하고자 한다. 개발 내용은 블로그에 포스팅될 예정이다.

포렌식 툴

개인적으로 mac을 수년간 사용해 보는 유저 입장으로써 mac에서보다 Windows에서 포렌식을 하는 게 더 편리하고 더 많은 소프트웨어를 사용할 수 있는 건 사실이다. 그래서 개인적인 목표는 시간이 오래 걸리더라도 macOS에 특화된 포렌식 도구 모음을 개발하여 현재의 디지털 포렌식 환경에서 큰 격차를 메우고자 한다. macOS의 인기가 높아짐에 따라 Mac 시스템에서의 포렌식 조사는 주로 Windows 용으로 설계된 도구에 의존하곤 한다.

물론 아직 Windows를 더 많이 사용하고 있지만, 다양한 전문 분야에서 Mac이 활용도가 높아짐에 따라 전문 도구의 필요성은 더욱 분명해진다. 앞으로 포렌식 툴 제작 목표는 포렌식 전문가들이 확립한 기초 지식을 바탕으로 macOS의 독특한 아키텍처와 보안 기능에 맞는 강력한 도구 세트를 개발하는 것이다.

마치며

예전처럼 나 이거 해야지 저거 해야지는 아닌 것 같다. 그리고 어느 정도 나의 방향도 잡혀가는 것 같아서 방황하던 나의 모습보다는 앞으로 꾸준하게 공부할 수 있을 거 같아서 개인적으로 기대가 된다. 앞으로 위에 있는 내용을 더욱 중심적으로 공부하려고 하고 공부한 내용은 지금 포스팅된 블로그에 작성해 보려고 한다.

정리

Rust, C++, Python, 네트워크, 임베디드, 포렌식, 블록체인, 리눅스

맨 위로 올라가기

저의 글을 읽어 주셔서 감사합니다. 문제가 있으면 저의 메일로 연락 주시면 감사하겠습니다. 댓글과 피드백 또한 감사합니다.
Thank you for visiting my blog. If you have any problems, please contact me by e-mail. Thanks also for the comments and feedback.

태그:

카테고리:

업데이트:

댓글남기기