전체 글 11

면접 준비 CS - 개발 상식

좋은 코드란 무엇인가?- 읽기 좋은 코드- 중복이 없는 코드- 테스트가 용이한 코드등등 구글링하면 많은 검색 결과가 나온다. 객체지향프로그래밍이란?- 객체지향 이전은 컴퓨터가 사고하는대로 프로그래밍 하는 것이었지만, 객체지향 프로그래밍은 인간 중심적 프로그래밍 패러다임이라고 할 수 있다. 즉, 현실 세계를 프로그래밍으로 옮겨와 프로그래밍하는 것을 말한다.현실 세계의 사물들을 객체라고 보고 그 객체로부터 개발하고자 하는 애플리케이션에 필요한 특징들을 뽑아와 프로그래밍하는 것이다. 이것을 추상화라고 한다. 객체지향프로그래밍을 하면 이미 작성한 코드에 대한 재사용성이 높다. 자주 사용되는 로직을 라이브러리로 만들어두면 계속해서 사용할 수 있다. 또한 내부적으로 어떻게 동작하는지 몰라도 개발자는 라이브러리가 제..

카테고리 없음 2026.05.31

[bandit] Level5 -> Level6

Level 5 -> Level 6다음 레벨의 비밀번호는 inhere 디렉토리 어딘가에 있는 파일에 저장되어 있으며 다음과 같은 모든 속성을 가지고 있습니다.사람이 읽을 수 있는크기는 1033바이트입니다.실행 불가 이번엔 du를 사용해 파일 크기를 봤다. du는 disk usage로 파일의 용량을 확인 할 수 있다. 모두 출력을 위해 -a 와 파일 용량을 바이트로 보기 위해 -b 옵션을 사용했다. du -a -b 그랬더니 수많은 파일이 나왔고 그 중 1033바이트로 이루어진 파일을 찾을 수 있었다. 바로 경로 입력해서 cat 실행하니비밀번호가 나왔다!. 풀고 찾아보니 더 간단하게 하는 방법이 있었다. 수많은 파일 중 1033바이트를 가진 파일을 내가 찾는 게 아니라 조건으로 넣어서 처음부터 그 파일만 찾게..

wargame/bandit 2026.04.27

[bandit] bandit Level 1 ~ 5 문제 풀이

Level 1-> Level2다음 레벨의 비밀번호는 홈 디렉터리에 있는 '-' 라는 파일에 저장되어 있습니다. 레벨 0에서 1로 갔던 것처럼 ls로 우선 파일 확인을 해주고 cat을 입력했다.그랬더니 텍스트를 입력할 수 있게 되었다... 생각해보니 "cat -" 는 입력 받은 텍스트를 그대로 출력하는 명령어다. 그래서 파일 경로를 직접 입력해주었다.비밀번호가 나왔다. Level 2 -> Level 3--spaces in this filename--다음 레벨의 비밀번호는 홈 디렉터리에 있는 파일에 저장되어 있습니다. 파일명에 띄어쓰기가 들어간 경우는 따옴표로 묶어서 명령어를 작성하면 된다.그렇게 알고 있었는데 안 되길래 한참을 했다... -- 이게 이름에 포함이 안 되는 건가? 싶어서 빼고도 해봤는데 아니..

wargame/bandit 2026.04.27

[bandit] level 0->level1

문제다음 레벨의 비밀번호는 홈 디렉터리에 있는 readme 라는 파일에 저장되어 있습니다 . 이 비밀번호를 사용하여 SSH로 bandit1에 로그인하세요. 레벨 비밀번호를 찾을 때마다 SSH(2220번 포트)를 통해 해당 레벨에 로그인하여 게임을 계속 진행하십시오 cd ~ 를 치면 홈디렉터리로 이동이 가능하다. 그치만 이미 홈 디렉터리이기 때문에 ls를 입력해 파일이 있는지 확인을 해준 후 cat을 통해 파일 내용을 읽었다. 맨 마지막 줄을 보면 비밀번호가 나와있다. 이 비밀번호는 로컬에 따로 기록해두는 게 좋다고 한다. exit를 쳐서 나간 후 ssh bandit1@bandit.labs.overthewire.org -p 2220 이번에 1번으로 접속해 아까 파일에서 얻은 비밀번호를 입력했다. 아까와 똑..

wargame/bandit 2026.04.26

리눅스 공부 워게임 bandit 소개

요즘 보안에 대해 관심을 가지기 시작했다. 3학년이 되고 컴퓨터 보안 관련 과목이 있어 듣게 되고, 사회적으로 큰 보안 이슈들도 생기면서 자연스래 관심이 가기 시작했다. 보안 공부? 어떻게 해야할까? 찾아보다 보니 우선 리눅스를 공부 해야한다고 하는데... 리눅스는 1학년과 2학년 때 강의로 듣기도 했고 교수님이 재밌으셔서 열심히 공부했던 기억이 있다. 그렇지만... 전부 기억 나냐고 묻는다면 아니요...? ㅎㅎ 그래서 다시 공부를 해야겠다는 생각이 들었는데 내가 가지고 있는 리눅스 책은 너무 두껍고 다시 인강 같은 걸 보면서 공부하기엔 시간이 너무 많이 들어갈 것 같았다. 그러다가 발견한 게 bandit이라는 사이트다. bandit은 워게임인데 리눅스에 대해 공부한 걸 어떻게 활용하면 좋을지 알 수 있..

wargame/bandit 2026.04.26

[Python] 리스트 활용: 간단한 투두리스트 만들기 enumerate()

리스트를 활용한 간단한 걸 하나 만들고 싶어서 제미나이한테 뭐가 좋을지 물어봤더니 아래와 같은 걸 만들라고 했다.더보기간단한 '할 일 목록' (To-Do List) 프로그램핵심 목표: 사용자 입력(I), 저장(C/U), 조회(R), 삭제(D)의 CRUD 기본 로직을 익힙니다.구현 기능:메뉴 화면: "1. 할 일 추가", "2. 할 일 조회", "3. 할 일 삭제", "4. 종료" 등을 출력하고 사용자로부터 선택을 받습니다.데이터 저장: 할 일을 **파이썬 리스트(List)**에 저장하고, 각 할 일에 번호를 부여합니다.흐름 제어: 사용자가 '4'를 선택하기 전까지 프로그램이 계속 실행되도록 while 무한 루프를 사용합니다. ToDo = []i = 0choice = 0print("----TODOLIST ..

[Python] 리스트, 튜플, 딕셔너리 정리

1. 개념적 차이리스트(list)순서(ordered) + 요소 나열변경 가능[1, 2, 3]튜플(tuple)순서(ordered) + 요소 나열불변(1, 2, 3)딕셔너리(dict)key-value 매핑 구조key는 유일, 순서는 유지됨(3.7+){"name": "Kim", "age": 20} 2. 변경리스트✅ 가능값 추가/삭제/수정 가능튜플❌ 불가능생성 후 내부 값 변경 불가딕셔너리✅ 가능key-value 추가/삭제/수정 가능 3. 사용 목적리스트데이터 집합을 순서대로 관리할 때 (stack, queue, 컬렉션)튜플변하지 않는 레코드, 좌표, 설정값, 함수 반환 시 여러 값 전달딕셔너리고유한 키로 데이터 매핑해야 할 때 (JSON 구조, 객체 표현) 4. 주요 문법 비교리스트arr = [10, 2..

[Python] 리스트 활용

1. 리스트 값 변경하기numList = [10, 20, 30]numList[1] = 100print(numList)>> [10, 100, 30] numList = [10, 20, 30]numList[1:2] = [200, 300]print(numList)>> [10, 200, 300, 30] numList = [10, 20, 30]numList[1] = [100, 200]print(numList)>> [10, [100, 200], 30 ] 2. 리스트에 값 삽입하기 : append(), insert()리스트이름.append(값)맨 뒤에 값을 추가하는 함수 리스트이름.insert(위치, 값)정해진 위치에 값을 삽입할 수 있음 numList = [10,20,30]numList.insert(1,222)p..

ngrok에 대해 알게 됐다

학교 축제에서 주점을 하게 됐다. 손님들에게 주문을 받을 때 큐알코드 접속을 통해 우리가 만든 주문 시스템에 접속하게 할 예정이다. 같은 와이파이가 아니더라도 접속이 되게 해야하는데 포트포워딩을 하기엔 1-2일 쓸 프로그램에 복잡한 과정이라고 생각했다. 그렇다고 클라우드 서버에 배포하기엔 당장 다 다음 날이 축제 당일이라 시간이 없었다. 아직 UI도 제대로 안 만든 상황이고 필요한 모든 기능을 만든 것도 아니었기 때문이다. 그래서 간단하고 빠르게 시간과 노력을 아낄 방법을 찾는 중에 ngrok이라는 걸 알게 됐다. ngrok이란?내 컴퓨터(로컬 환경)에서 실행 중인 프로그램을 외부 인터넷에서 접속할 수 있도록 임시 터널을 만들어주는 도구다. 쉽게 말해서 내 노트북에서만 보이던 사이트를 전 세계 어디서든 ..

Programing 2025.10.13

[Python] 리스트 정리

학교에서 내준 과제를 하거나 동기들끼리 프로젝트를 할 때 내가 스스로 코드를 짜는 경험이 줄고 있다. 어떤 프로젝트인지 정해지면 그걸 AI에게 설명 후 나온 코드를 그저 복붙하고 있다. AI 활용을 잘 하는 게 중요하다고는 하지만 아무것도 모르고 복붙하는 걸 말하는 건 아닌 것 같다는 생각이 들었다. 그래서 내가 스스로 코드를 쓰고, AI는 내가 이미 아는 것을 빠르게 할 때 사용하기 위해서, 그리고 개념에 대해 공부하기 위해서 라는 이유로 기초부터 다시 복습할 생각이다. 내가 무엇을 알고 무엇을 모르는지도 잘 모른다. 그래서 1학년 때 배운 기본적인 것부터 나아갈 것이다. 파이썬으로 먼저 시작한 이유는 동아리에서 앱을 하나 만들고 있는데 웹 크롤링과 데이터 분석이 필요해서 자주 쓰고 있기 때문이다. ..