유쨈미 2024. 5. 9. 22:55

1. Debugging

프로그램의 버그를 찾아내고 수정하는 과정이다.
Java에서는 IDE(통합 개발 환경)를 통해 비교적 손쉽게 디버깅을 할 수 있다.
예를 들어, IntelliJ IDEA나 Eclipse와 같은 IDE들은 다음과 같은 디버깅 기능을 제공한다.

 

💡 디버깅 기능

  1. 브레이크포인트 설정
    코드의 특정 지점에 브레이크포인트를 설정하여 실행을 일시 중지시킬 수 있다.
  2. 스텝 오버/인/아웃
    브레이크포인트에서 중지된 후, 한 줄씩 코드를 실행하거나

    함수 안으로 들어가거나 현재 함수를 벗어나면서 디버깅할 수 있다.
  3. 변수 검사
    실행 중인 코드의 변수 값을 실시간으로 확인하고 변경할 수 있다.
  4. 조건부 브레이크포인트
    특정 조건이 충족될 때만 브레이크포인트가 활성화되도록 설정할 수 있다.

 

💡 Debug Toolbar 사용법

용어 설명
Resume 다음 브레이크 포인트를 만날 때까지 진행
Suspend 현재 작동하고 있는 Thread를 멈춤
Terminate 프로그램(디버그 모드 실행)을 종료
Step Into Method 를 포함한 라인을 만나면 Method 안으로 진입
Step Over 다음 라인으로 이동.
Method 가 있어도 메소드 안으로 진입하지 않고 다음 라인으로 이동
Step Return  Current Method에서 즉시 Return
Drop to Frame Method 를 처음부터 다시 실행
 

[IDE] 이클립스(Eclipse) 디버깅 하는법

프로그래밍을 하다 보면 필연적으로 각종 오류에 부딪치게 되고 그 오류를 해결하는 과정에서 디버깅은 필수입니다. 디버깅을 얼마나 잘하느냐에 따라 프로그램의 생산성과 개발자의 능력이

coding-factory.tistory.com

- 출처 : coding-factory


2. 단위 테스트 (JUnit, Mock)

특정 소스코드의 모듈이 의도한 대로 작동하는지 검증하는 테스트이다. Java에서 단위 테스트를 구현할 때 주로 사용되는 두 가지 중요한 도구는 JUnit과 Mocking 라이브러리이다. JUnit은 테스트 케이스를 작성하고 실행하는 프레임워크이며, Mocking 라이브러리(예: Mockito, EasyMock)는 외부 의존성을 제어하여 테스트의 독립성을 보장하는 데 사용된다.

 

💡 JUnit

자바 프로그래밍 언어를 위한 단위 테스트 프레임워크로, 간단한 어노테이션 사용으로 테스트를 구조화하고 실행할 수 있다. JUnit 5는 현재 가장 널리 사용되는 버전으로, 다음과 같은 주요 기능을 제공한다.

 

💡 주요 기능

  1. @Test
    메서드가 테스트 케이스임을 나타낸다.
  2. @BeforeEach/@AfterEach
    각 테스트가 실행되기 전과 후에 실행될 메서드를 지정한다. 테스트 환경을 설정하거나 정리하는 데 사용된다.
  3. @BeforeAll/@AfterAll
    모든 테스트가 실행되기 전과 후에 한 번씩 실행되는 메서드를 지정한다.

    일반적으로 리소스의 할당과 해제에 사용된다.
  4. @Disabled
    테스트를 비활성화하고자 할 때 사용하는 어노테이션이다.
  5. Assertions
    assertEquals(), assertTrue(), assertNotNull() 등의 메서드를 제공하여 예상되는 결과를 실제 결과와 비교한다.

단위테스트에 성공하면 녹색불이 들어오지만, 실패하면 빨간색 불이 들어오는 것을 확인할 수 있다.

💡 Mock

Mock 객체는 실제 객체의 동작을 모방하며, 테스트에서는 이러한 객체를 사용하여 실제 의존성 없이 코드를 독립적으로 검증할 수 있다. Mockito는 자바에서 가장 인기 있는 Mocking 라이브러리 중 하나이다.

 

💡 주요 기능

  1. mock()
    지정된 클래스의 Mock 객체를 생성한다.
  2. when()
    Mock 객체의 특정 메서드 호출에 대한 응답을 정의한다.
  3. verify()
    특정 조건에서 메서드가 호출되었는지 확인한다.
 

JUnit Test 자바 단위테스트란? feat. 서비스 단에서 DB연결 테스트해보기.

junit 자바 단위테스트란? Java에서 독립된 단위테스트 (Unit test)를 지원해주는 프레임워크. * 단위테스트란? 특정 소스코드의 모듈이 의도한 대로 작동하는지 검증하는 테스트이다. 즉, 함수 및 메

cheershennah.tistory.com

- 출처 : cheershennah

 

[jUnit][mock] 단위 테스트

💡 JUnit 1. JUnit을 이용한 단위 테스트 JUnit은 자바용 단위 테스트 작성을 위한 산업 표준 프레임워크이다. 2. 프로젝트 구성 프로젝트를 생성(Maven or Gradle or whatever)하면 기본옵션으로 jUnit이 포함

server-engineer.tistory.com

- 출처 : server-engineer


3. TDD (Test Driven Development)

TDD는 '테스트 주도 개발'이라고 한다. 반복 테스트를 이용한 소프트웨어 방법론으로, 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현한다. 짧은 개발 주기의 반복에 의존하는 개발 프로세스이며, 애자일 방법론 중 하나인 eXtream Programming(XP)의 'Test-First' 개념에 기반을 둔 단순한 설계를 중요시한다.

 

💡 TDD의 기본 원칙 : 빨간 막대 - 녹색 막대 - 리팩터의 사이클을 따른다.

  1. 빨간 막대 (Red)
    실패하는 테스트 케이스를 먼저 작성한다. 이 시점에서 테스트는 실패해야만 한다.
  2. 녹색 막대 (Green)
    테스트가 통과하도록 최소한의 코드를 작성한다.
  3. 리팩터 (Refactor)
    코드를 정리하고 중복을 제거한다. 이 단계에서는 기능 변경 없이 코드의 구조만 개선한다.
 

🧪 TDD 방법론 (테스트 주도 개발) - 알기 쉽게 정리

TDD(Test Driven Development) 란? TDD란 Test Driven Development의 약자로 '테스트 주도 개발'이라고 한다. 반복 테스트를 이용한 소프트웨어 방법론으로, 작은 단위의 테스트 케이스를 작성하고 이를 통과하는

inpa.tistory.com

- 출처 : inpa


4. Network, Networking

Network는 컴퓨터, 서버, 메인프레임, 네트워크 장치, 퍼리페랄, 또는 기타 장치가 데이터를 교환할 수 있도록 연결된 집합이다. 네트워크는 연결 매체(유선 또는 무선), 네트워크 장비(라우터, 스위치, 허브 등) 및 전송 프로토콜을 사용하여 구성된다. 네트워크는 규모에 따라 LAN(지역 네트워크), WAN(광역 네트워크), MAN(도시 네트워크), PAN(개인 네트워크) 등으로 분류될 수 있다.
즉, 데이터를 교환하기 위해 연결된 컴퓨터 장치 간의 모음(물리적인 개념)이다.

 

💡 예시

  1. PAN(Personal Area Network)
    블루투스 장치
  2. LAN(Local Area Network)
    가정, 사무실, 학교, 직장 등 작은 지리적 영역에 제한된 네트워크
  3. MAN(Metropolitan Area Network)
    작은 마을의 네트워크
  4. WAN(World Area Network)
    국가와 같이 매우 넓은 지리적 영역 

 

Networking은 네트워크 기기들 간의 연결을 설정, 관리, 유지하는 과정이다. 이 용어는 네트워크를 설계하고 구성하는 기술적 활동뿐만 아니라, 전문적인 관점에서 사람들 사이의 연결을 촉진하는 과정을 포함할 수도 있다. 기술적 측면에서는 네트워크 토폴로지 설계, 프로토콜 구성, 네트워크 보안 구현 등을 포함한다.
즉, 네트워크를 연결, 유지하기 위한 하드웨어/소프트웨어적인 모든 것을 의미한다.

 

네트워크(Network)와 네트워킹(Networking) 차이점

네트워크(Network)란? : 데이터를 교환하기 위해 연결된 컴퓨터 장치간의 모음(물리적인 개념) Ex) PAN(Personal Area Network) : 블루투스 장치 ▼ LAN(Local Area Network) : 가정, 사무실, 학교, 직장 즉. 작은 지

codinglevelup.tistory.com

- 출처 : codinglevelup

 

네트워크(Network)란?

Net + Work 의 합성어컴퓨터와 같은 노드들이 통신 기술을 이용하여 그물망처럼 연결된 통신 이용 형태네트워크(Network)란 전송매체를 링크로 서로 연결된 장치(또는 노드)의 모임노드(node)는 컴퓨

velog.io

- 출처 : inyong_pang


5. 허브(Hub)와 라우터(Router) 차이

허브(Hub)는 네트워크의 기본적인 연결 장치로서, 네트워크 내의 모든 기기에 데이터 패킷을 동시에 전송하는 역할을 한다. 이는 "멀티포트 리피터"로도 불리며, 들어오는 패킷을 허브에 연결된 모든 포트로 브로드캐스팅한다. 허브는 데이터의 출처나 목적지를 구분하지 못하기 때문에 네트워크 트래픽과 충돌이 발생할 수 있으며, 보안성이 낮고 효율성이 떨어진다.

 

라우터 (Router)는 네트워크의 지능형 연결 장치로서, 데이터 패킷을 송신지와 목적지 간 최적의 경로를 찾아 전송한다. 라우터는 IP 주소를 기반으로 패킷을 라우팅 하며, 다양한 네트워크 간 트래픽을 관리할 수 있다. 또한, 네트워크 보안 기능(방화벽 등)을 제공하며, 네트워크 성능을 향상시키는 기능을 가지고 있다.

 

허브, 스위치, 라우터, 공유기

통상적으로 허브는 더비 허브와 스위치 허브로 나눠집니다. 일반적으로 더미 허브를 허브라 칭하고, 스위치 허브를 스위치라고 말합니다. 허브는 크게 두가지 기능으로 많이 사용됩니다.리피터

velog.io

- 출처 : ckstn0777


6. Web scraping, Web crawling

Web scraping은 특정한 웹 사이트에서 필요한 데이터를 수집하는 방법이다. 스크래핑은 크롤링보다는 좁은 범위의 데이터 수집에 주로 사용된다. 예를 들어, 온라인 쇼핑몰에서 상품 정보를 추출하거나, 뉴스 사이트에서 최신 기사를 수집하는 등의 작업을 수행할 때 주로 사용된다. 크롤링에 비해 스크래핑은 특정한 웹 사이트에서 필요한 데이터를 추출하는 데 초점을 둔다는 차이점이 있다.

Web crawling은 인터넷상에 존재하는 모든 웹 페이지를 방문하여 데이터를 수집하는 방법이다. 즉, 크롤러는 인터넷상의 모든 페이지를 방문하며, 각 페이지의 링크를 따라가면서 자동으로 데이터를 수집한다. 크롤링은 대부분의 검색 엔진에서 사용되며, 예를 들어 구글, 네이버 같은 검색 엔진의 검색 결과를 보여줄 때도 크롤러를 사용하여 인덱싱 작업을 수행한다. 스크래핑과 가장 큰 차이점은 특정한 웹 페이지가 아닌 URL을 타고 다니며 반복적으로 데이터를 가져오는 과정(데이터 색인)이 진행된다는 것이다.

 

[웹 스크래핑] 웹 스크래핑의 개념과 정적 웹 스크래핑

웹 페이지로부터 우리가 원하는 정보를 추출하는 방법에는 웹 스크래핑(Web scraping)과 웹 크롤링(Web crawling)이 있다. 웹 스크래핑과 크롤링은 서로 관련된 개념이지만, 약간의 차이가 있다. 이번

velog.io

- 출처 : DongwookKim0823


7. 파싱이란

파싱은 웹 페이지의 내용을 분석하여 구조화된 데이터로 변환하는 과정이다. 예를 들어, HTML 문서의 구조를 분석하여 특정 태그나 속성을 가진 요소를 찾아내는 것을 포함한다. 파싱은 웹 스크레이핑의 일부로 사용될 수 있으며, 데이터를 추출하고 의미 있는 정보로 가공하는 데 필요하다.

 

💡 로컬 컴퓨터에 있는 파일을 브라우저에게 읽으라고 하기

file:///C:/Workstation/Acorn/ok.html
                  경로                      html문서

 

 

HTML 파싱과 렌더링

Parse 파싱이란 프로그램이 런타임 환경에서 실제로 실행될 수 있는 포맷으로 분석하고 변환하는 것입니다. 브라우저 내부의 자바스크립트 엔진이 이에 해당합니다. 브라우저는 HTML을 DOM tree로

hoontinparis.tistory.com

- 출처 : hoontinparis

 

파싱이란 ?

파싱 파싱은 렌더링 엔진 내에서 매우 중요한 프로세스 문자를 파싱 한다는 것은 문서를 코드에서 사용할 수 있는 구조로 변환하는 것을 의미 파싱은 문서가 준수하는 구문 규칙을 기반으로 함.

sahs-kr.tistory.com

- 출처 : sahs-kr


8. Java URL 클래스

Java의 URL 클래스는 인터넷 리소스에 대한 URL을 나타낸다. 이 클래스를 사용하여 웹 자원에 접근하고, 데이터를 읽어오는 등의 작업을 수행할 수 있다.

 

💡 URL 클래스의 주요 생성자

  1. URL(String spec)
    문자열 spec이 지정하는 자원에 대한 URL 객체 생성
  2. URL(String protocol, String host, int port, String file)
    프로토콜 식별자 protocol, 호스트 주소 host, 포트 번호 port, 파일 이름 file이 지정하는 자원에 대한 URL 객체 생성

 

💡 URL 클래스의 주요 메소드

메소드 설명
Object getContent() 이 URL의 컨텐트를 리턴
String getFile() 이 URL의 파일 이름을 리턴
String getHost() 이 URL의 호스트 이름을 리턴
String getPath() 이 URL의 경로 부분을 리턴
int getPort() 이 URL의 포트 번호를 리턴
String getProtocol() 이 URL의 프로토콜 이름을 리턴
InputStream openStream() URL 주소와 연결한 뒤 이 연결로부터
입력받을 수 있는 InputStream 객체를 리턴
URLConnection openConnection() URL 주소의 원격 객체에 접속한 뒤
통신할 수 있는 URLConnection 객체를 리턴
 

[java 네트워크 프로그래밍] 6. URL 클래스

URL 클래스URL 구조http : //www.naver.com/URL의 구조는 다음과 같이 프로토콜식별자(:)과 자원 이름(//www.naver.com/)으로 나누어진다.자원의 이름은 다시 //www.myhom.net/index.html:8080 다음과 같은 형식으로 구

hackeen.tistory.com

- 출처 : hackeen

 

URI와 URL, 어떤 차이점이 있나요? | 이랜서 블로그

uri와 url, 비슷한 듯 다른 it 용어, 어떤 차이점이 있는지 확인하기 | uri url 차이, uri 뜻, uri 란, uri url urn, uri vs url

www.elancer.co.kr

- 출처 : www.elancer.co.kr


9. Jsoup

HTML 파싱 Java 라이브러리이다. DOM, CSS 및 jquery와 같은 방법을 사용하여 데이터를 추출하고 조작하는 매우 편리한 API를 제공한다. 주로 정적인 웹 페이지를 파싱 하고자 하는 경우, 간단하게 HTML을 가져와 파싱을 할 수 있는 라이브러리이다.

 

💡 주요 기능

  1. connect()
    웹사이트에 연결하고 HTML을 로드한다.
  2. parse()
    로컬 HTML 파일을 파싱 한다.
  3. select()
    CSS 쿼리를 사용하여 요소를 선택한다.

 

💻 예시 코드

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;

public class ExampleJsoup {
    public static void main(String[] args) throws Exception {
        Document doc = Jsoup.connect("http://example.com").get();
        Elements paragraphs = doc.select("p");
        for (Element paragraph : paragraphs) {
            System.out.println(paragraph.text());
        }
    }
}
 

Jsoup이란?

jsoup란 자바(Java)로 만들어진 HTML 파서(Parser) jsoup은 자바 언어로써 HTML을 다루기 쉽고, 강력한 기능을 제공 jsoup로 할 수 있는 작업 종류 1. URL, 파일, 문자열을 소스로 하여 HTML을 파싱 2. DOM 구조를

pso62.tistory.com

- 출처 : pso62

 

[크롤링] Java Jsoup(HTML Parser) 사용법

이번 시간에는 Java로 Jsoup 라이브러리를 적용하고 간단하게 사용하는 방법에 대해서 알아보도록 하겠습니다. Jsoup이란? Jsoup은 HTML 파싱 Java 라이브러리입니다. DOM, CSS 및 jquery와 같은 방법을 사용

jinseongsoft.tistory.com

- 출처 : jinseongsoft


10. Encoding, Decoding

Encoding은 데이터를 특정 포맷이나 알고리즘을 사용하여 다른 형식으로 변환하는 과정이다.
예를 들어, 웹에서는 URL 인코딩을 사용하여 URL에 포함될 수 없는 문자를 % 기호와 함께 ASCII 코드 값으로 치환한다. Decoding은 인코딩 된 데이터를 원래의 형식으로 변환하는 과정입니다. Java에서는 URL Encoder와 URL Decoder 클래스를 사용하여 URL 인코딩과 디코딩을 수행할 수 있다.

 

💻 예시 코드

import java.net.URLEncoder;
import java.net.URLDecoder;

public class EncodingDecodingExample {
    public static void main(String[] args) throws Exception {
        String original = "special characters: &%?";
        String encoded = URLEncoder.encode(original, "UTF-8");
        String decoded = URLDecoder.decode(encoded, "UTF-8");

        System.out.println("Original: " + original);
        System.out.println("Encoded: " + encoded);
        System.out.println("Decoded: " + decoded);
    }
}
 

인코딩 vs 디코딩 정확하게 이해하기

이번 개발 프로젝트를 하며 인코딩, 디코딩을 많이 접했다. 개발을 진행하면서 많이 답답했었다. 기본 지식이 없는 상태에서 어떤 인코딩인지 어떻게 디코딩을 해서 써야할지 코드를 겨우 찾아

codingpractices.tistory.com

- 출처 : codingparactices


11. SOCKET통신

소켓(Socket)은 TCP/IP 기반 네트워크 통신에서 데이터 송수신의 마지막 접점을 말한다. 소켓통신은 이러한 소켓을 통해 서버-클라이언트 간 데이터를 주고받는 양방향 연결 지향성 통신을 말한다. 소켓통신은 보통 지속적으로 연결을 유지하면서 실시간으로 데이터를 주고받아야 하는 경우에는 사용된다. 소켓은 클라이언트 소켓과 서버 소켓으로 구분되며, 소켓 간 통신을 위해서는 네트워크상에서 클라이언트와 서버에 해당되는 컴퓨터를 식별하기 위한 IP주소와 해당 컴퓨터 내에서 현재 통신에 사용되는 응용프로그램을 식별하기 위한 포트번호가 사용된다.

 

 

📍 요약

  1. 자주 데이터를 주고받는 환경이 아닌 경우 HTTP 통신을 통해 받는 것이 유리하다.
  2. 자주 데이터를 주고받아야 하는 환경에서는 소켓 통신이 유리하다.
  3. HTTP 통신은 사용자가 서버에 요청을 보내는 단방향 통신인 반면, 소켓 통신은 양방향 통신이다.

12. HTTP 통신과 SOCKET통신의 차이점

HTTP 통신은 웹상에서 데이터를 교환하기 위한 프로토콜을 사용한다. HTTP는 요청/응답 모델을 기반으로 하며, 주로 웹 브라우저와 서버 간의 통신에 사용된다. HTTP는 상태가 없으며 각 연결은 독립적이다.

 

💡 차이점

  1. Socket 통신연결 지향적이며, 연결이 유지되는 동안 자유롭게 데이터를 송수신할 수 있다.
  2. HTTP 통신비연결성 프로토콜을 사용하며, 요청을 보낸 후 응답을 받으면 연결이 종료된다.

 

📍 요약

  1. HTTP 통신은 클라이언트의 요청이 있을 때 서버가 응답하는 단방향 통신이다.
  2. JSON, Image, HTML 파일 등 다양한 파일을 전송받을 수 있다.
  3. 응답을 받은 후 Connection이 끊어지는 것이 기본 동작이지만,
    성능 상으로 필요하다면 Keep Alive 옵션을 주어 일정 시간 동안 Connection을 유지하는 것이 가능하다. 
 

HTTP 통신과 Socket 통신의 차이점

목표 Htttp 통신과 Socket 통신의 차이점을 이해한다. HTTP 통신이란? HTTP란 HyperText Transfer Protocol의 약자로 HTML 파일을 전송하는 프로토콜이라는 의미를 가진다. 웹브라우저에서 통신이 일어나며, 초

kotlinworld.com

- 출처 : kotlinworld