전체 글 380

일일 커밋 1년 회고

오늘은 2022년의 마지막 날임과 동시에 매일 커밋을 남기기로 결심한지 1년이 되는 날이다 결론적으로 1년간 총 1840개의 커밋을 남기며 그 결심은 유지되고 있다 기업 현장실습을 했던 연초와 스프린트 및 여러 해커톤에 참여했던 시기가 눈에 띈다 개발을 처음 접했을 때, (현재는 인프런에 계신) 배민 개발자의 잔디밭을 보며 감탄했던 기억이 난다 그 때에도 일일 커밋에 대한 의견은 분분했다 어차피 보여주기 식이다, 개발 실력과는 상관없다 등등.. 어느 정도 동의하지만 뭐 하나 잘하는 것도 없는데 안 하는 것보다는 낫겠다고 생각했었다 보여주기 식이면 어떠랴.. 실력과 관계없이 노력과 끈기만 있으면 가능한 거였으니까 프로젝트를 제외하면 강의 실습이나 알고리즘 풀이로 커밋 내용을 채웠다 알고리즘은 1년간 거의 ..

생각정리 2022.12.31

[HUFS/객체지향프로그래밍] #6 상속

클래스 상속 이미 개발된 클래스를 상속(재사용)시켜 새로운 클래스를 만들기에 중복되는 코드를 줄일 수 있다 여러 개의 부모를 한 번에 상속받을 수 없음 부모 클래스에서 private 접근 제한을 갖는 필드와 메소드 상속 제외 부모와 자식 클래스의 패키지가 다를 경우 default 접근 제한을 갖는 필드와 메소드 상속 제외 super를 사용해 자식 생성자에서 부모 생성자 호출 예시 package sec01.exam02; public class People { public String name; public String ssn; public People(String name, String ssn) { this.name = name; this.ssn = ssn; } } package sec01.exam02; ..

Languages/Java 2022.12.30

[HUFS/객체지향프로그래밍] #5 클래스

객체 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지며 식별 가능한 것을 객체(Object)라고 하며, 이는 속성(필드)과 동작(메소드)로 구성된다 집합 관계: 부품과 완성품의 관계 사용 관계: 객체 간의 상호작용 상속 관계: 상위(부모) 객체를 기반으로 하위(자식) 객체를 생성 객체 지향 프로그래밍: 집합/사용 관계에 있는 객체들을 설계/조립하여 프로그램 개발 클래스(Class)는 객체의 설계도라고 할 수 있으며 인스턴스(Instance)는 클래스로부터 만들어진 객체이다 클래스 선언 보통 객체를 구상한 후 클래스 이름을 결정하는데 다음과 같은 명명 규칙을 따른다 하나 이상의 문자로 이루어질 것 첫 글자에는 숫자가 올 수 없음 $, _외의 특수 문자는 사용할 수 없음 자바 ..

Languages/Java 2022.12.30

[HUFS/객체지향프로그래밍] #4 참조 타입

기본 타입과 참조 타입 기본 타입(primitive type): 정수, 실수, 논리, 문자 리터럴 저장 참조 타입(reference type): 배열, 열거, 클래스, 인터페이스 (객체의 번지를 참조) 메모리 사용 영역 메모리 사용 영역(Runtime Data Area)은 메소드 / 힙 / JVM 스택 영역으로 나뉜다 메소드 영역(Method Area): 클래스별로 정적 필드, 상수, 생성자, 메소드 등을 분류해 저장 힙 영역(Heap Area): 객체와 배열이 생성되는 영역 JVM 스택 영역: 메소드가 호출되면 프레임이 추가되고 메소드가 종료되면 프레임이 제거 null과 NullPointerException 참조 타입 변수는 객체를 참조하지 않는다는 뜻으로 null 값을 가질 수 있는데, 이 또한 스택..

Languages/Java 2022.12.27

[HUFS/객체지향프로그래밍] #3 연산자, 조건문과 반복문

연산자와 연산자의 종류 연산자(operator): 연산에 사용되는 표시나 기호 피연산자(operand): 연산자와 함께 연산 되는 데이터 연산식(expression): 연산자와 피연산자를 사용하여 연산 과정을 기술한 것 연산의 방향과 우선순위 복합적으로 구성된 연산식의 연산 우선순위 단항 > 이항 > 삼항 산술 > 비교 > 논리 > 대입 우선순위가 같다면 왼쪽에서 오른쪽 괄호()를 사용해 먼저 처리할 연산식 묶기 * 예외: 단항 / 부호 / 대입 연산자는 오른쪽에서 왼쪽 피연산자 수에 따라 단항 / 이항 / 삼항 연산자로 구분 단항 연산자: 부호, 증감 연산자 이항 연산자: 산술, 비교, 논리 연산자 삼항 연산자: 조건 연산자 단항 연산자 1. 부호 연산자 (+, -) 2. 증감 연산자 (++, --) ..

Languages/Java 2022.12.26

[HUFS/객체지향프로그래밍] #2 변수와 타입

변수 선언 값을 저장할 수 있는 메모리의 특정 번지에 붙여진 이름을 변수(Variable)라 한다 변수 사용을 위해서 먼저 변수 선언을 해줘야 한다 변수의 속성 이름: 변수의 이름 주소: 변수의 값이 저장될 메모리 주소 값: 배정문에 의해 부여된 변수의 값 타입: 변수가 가질 수 있는 값의 범위와 이 값에 대한 연산들의 집합 영역: 변수의 사용이 허락되는 범위 수명: 변수가 메모리 주소에 할당되어 있는 기간 값 저장 대입 연산자(=)를 사용해 변수에 값을 저장할 수 있으며, 변수에 최초로 값이 저장될 때 메모리에 변수가 생성되는 것을 초기화, 이 때의 값을 초기값이라 한다 변수 사용 변수의 값을 이용해 출력문이나 연산식을 수행하는 것을 변수 사용이라 한다 변수 사용 범위 메소드 블록 내에서 선언된 변수를..

Languages/Java 2022.12.23

[HUFS/객체지향프로그래밍] #1 자바 시작

기계어와 프로그래밍 언어 기계어 0과 1로 이루어진 코드 사용 사람과 기계어 사이 다리 역할을 하는 프로그래밍 언어 필요 소스(source) 파일: 프로그래밍 언어로 작성한 파일 컴파일(compile): 소스 파일을 기계어 파일로 번역 프로그래밍 언어 자바(Java): 임베디드, 웹, 안드로이드 소프트웨어(SW) 개발 분야 C / C++: 하드웨어(HW) 장치 제어 및 임베디드 SW 분야 C++ / C#: 데스크탑 앱 또는 ASP.NET 기반 웹 SW 분야 파이썬 (Python): 빅데이터 분석 및 머신러닝 SW 분야 자바 소개 1995년 마이크로시스템즈에서 발표한 자바(Java)는 현재 웹사이트 및 다양한 애플리케이션 개발의 핵심 언어이다 자바(Java)의 특징 오라클 라이선스 (자바 개발 도구의 배포..

Languages/Java 2022.12.22

[TIL] MVC 패턴을 알아보자

[10분 테코톡] 🧀 제리의 MVC 패턴 위 영상을 참고해 프리코스에 자주 언급되었던 MVC 패턴에 대해서 정리해보았다 MVC 패턴 이전의 프로젝트들은 규모가 커질수록 코드가 복잡해져서 한 눈에 파악하기도 힘들고 하나의 기능을 수정할 때마다 대부분의 코드를 갈아엎어야 하는 등 문제가 많았다 → MVC 패턴은 이 상황에서 유지보수가 용이한 규칙성들을 공식화한 것이라 볼 수 있다 MVC = 유지보수가 편해지는 코드 구성 방식 Model: 데이터와 관련된 부분 View: 사용자에게 보여지는 부분 Controller: Model과 View를 이어주는 부분 MVC 패턴을 지키며 코딩할 수 있는 5가지 규칙 Model은 Controller와 View에 의존하지 않아야 한다 (= Model 내부에 Controller..

[HUFS/정보보안] #8 IoT 보안과 AI 보안, 침해대응과 포렌식, 사회 공학

IoT 보안과 AI 보안 IoT 보안 AI 보안 인공지능 자체의 취약점을 이용해 학습 과정에서 데이터에 오류가 존재하는 노이즈를 고의적으로 추가하는 회피 공격(= 데이터 변조 공격)이 있으며, 변조 공격을 학습 데이터에 포함해 훈련시키는 방법으로 대응한다 비슷하게 일부로 악의적인 데이터를 이용해 오작동을 일으키도록 하는 중독 공격(= 악의적 데이터 주입 공격)이 있으며, 사전 학습이나 우회하는 답변으로 대응한다 ex) 스캐터랩의 이루다에게 악의적 발언 훈련 인공지능에서 사용하는 데이터 자체를 탈취하는 전도 공격(= 데이터 추출 공격)은 수많은 쿼리를 넣고 산출된 결과를 분석해 인공지능에 사용된 데이터를 추출하는 방식으로, 질의 횟수를 조정하는 것으로 대응한다 나이브 베이즈 분류기를 활용해 스펨 메일을 탐..