분류 전체보기 139

Java에서 jsoup을 이용하여 HTML parsing 하기

자바에서 jsoup 라이브러리는 HTML 문서를 파싱 하여대부분의 사이트의 원하는 정보만 뽑아낼 수 있는 라이브러리이다. 파이썬의 BeautifulSoup와 비슷한 기능이다.jsoup 라이브러리 추가(pom.xml) org.jsoup jsoup 1.15.3 파싱할 대상 페이지 찾기w3schools 사이트에서 상단 메뉴에 나열된 프로그래밍 언어 목록을 파싱 하여 가져오려고 한다. F12로 개발자도구를 열어 메뉴를 선택해서 가져올 selector 키워드를 찾는다. 태그로 감싸져 있는 목록을 가져올 것이다. 참고로 홈페이지가 리뉴얼되어 모양이 바뀌면 selector 역시 바뀔 수 있다. Parser 클래스HTML을 파싱 하여 페이지 정보를 가져올 클래스를 작성하자. selector 변수는 CSS selecto..

프리랜서 개발자가 되면서 느낀 점 (2)

정규직에서 프리랜서 개발자로 전향하면서 알게 된 점을 정리해 둔 포스팅입니다.개인적으로 느낀 바를 정리한 것이므로, 정확하지 않는 내용이 있을 수 있습니다. 혹시 틀린 내용이 있다면 댓글 남겨주세요. 1편에 이어서 작성합니다.과거 프리랜서 월급계산법예전에는 프리랜서 개발자의 월급 계산법은 매우 쉬웠다. 계약서상 월급에서 3.3% 원천징수 세금을 떼면 끝이었다. (3.3% = 소득세 3% + 지방소득세 0.3% 원천징수)실수령액 = 월급 - (월급 * 0.033)실수령액 = 월급여 * 0.967예를 들어, 상호협의된 급여가 500만 원이라면 5,000,000 - (5,000,000 * 0.033) = 4,835,000원이 실수령액이다. 정규직일 때는 어마무시하게 떼가던 세금을 3.3%만 떼고 받으니까 상대..

.gitignore 간단하게 만들기 (.gitignore 샘플 예시)

1. 처음부터 .gitignore 파일을 만들 경우 프로젝트 디렉토리로 이동한 뒤 아래의 명령어를 쳐보자. vim .gitignore 그러면 아래와 같이 보일것이다. 이제 [입력모드]로 들어가서 Git 에게 무시할 정보(확장자, 폴더 등)를 입력해보자. a, i, o 중 아무거나 누르면 입력모드로 전환된다. a : 다음 글자 i : 현재 커서 o : 윗줄 Git에서 무시하려는 정보를 입력했다면 파일을 저장해야 한다. [Esc] 키를 누른뒤, :wq를 입력하여 나가면 된다. ESC : 입력모드 나가기 :wq : 저장 후 나가기 정상적으로 설정이 되었는지 확인하기 위해 실제 저장한 곳에 가서 파일을 확인해볼 수 있다. 보통 C:\Users\사용자명\프로젝트명 내부에 .gitignore 파일이 있다. 또는 c..

해시함수와 암호화 비교하기(feat. 솔팅과 키스트레칭)

해시함수와 암호화 비교해시(Hash)와 암호화(Encryption)의 가장 큰 차이는 '방향'이다. 해시 : 단방향 암호화이므로 복호화는 불가능하다. 데이터 보안에 중점을 둠.암호화 : 양방향 암호화이므로 복호화 가능하다. 통신에서 보안에 중점을 둠.암호화의 목적은 반드시 복호화하는 것은 아니기 때문에, 각자 관점에 따라 둘 다 암호화라고 부르기도 한다. 예를 들어 암호화 해시 함수(cryptographic hash function)라는 개념이 있듯이 말이다. 그래서 해시를 암호화가 아니라고 할 필요는 없는 것 같다(?)암호화개인키 (Symmetric key)다른 말로 대칭키, 비공개키, 비밀키라고 부른다. 암호화와 복호화할 때 같은 비밀키를 공유한다. 따라서 키가 유출되면 해킹 당할 수도 있다. 하나의..

Java에서 Generator 규칙에 따라 거래코드 만들기 (SecureRandom 난수 생성)

거래코드 생성 규칙이 아래와 같다고 가정하자. => 거래날짜yyyyMMdd(8)+난수(10) Generator 파일을 만들어서 타 서비스에서 거래코드를 쉽게 가져다 쓸 수 있도록 소스를 만들어보았다. 이때 난수는 SecureRandom 클래스를 이용해서 알파벳, 숫자내에서 랜덤으로 10자리 생성된다.Generator.javaimport java.security.SecureRandom; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; public class Generator { private final static String CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr..

프로세스(Process)와 스레드(Thread)의 차이

프로그램 (Program) 우리가 흔히 말하는 프로그램이란 명령어들의 집합이다. 사용자가 원하는 일을 처리할 수 있도록 프로그래밍 언어를 사용하여 올바른 수행절차를 표현해 놓은 명령어를 말한다. 프로세스 (Process) 프로세스는 운영체제가 메모리 등의 필요한 자원을 할당해준 실행 중인 프로그램이다. 프로그램을 실행하면 운영체제로부터 실행에 필요한 자원을 할당받아 프로세스가 된다. 이때, 각각의 프로세스는 서로 메모리 공간을 독자적으로 갖기 때문에 서로 메모리 공간을 공유하지 못한다. 따라서 다른 프로세스의 메모리에 접근하려면 IPC(InterProcess Communication)과 같은 방식이 필요하다. 멀티프로세싱 : 여러 프로세스를 사용하는 것 멀티태스킹 : 같은 시간에 여러 프로그램을 띄우는 ..

Github를 트리 구조로 볼 수 있는 Octotree 플러그인

Github에서 꽤 유용한 Octotree라는 크롬 플러그인을 알게 되었다. 이 플러그인으로 GitHub 저장소의 디렉토리를 한 눈에 파악할 수 있다. Octotree Octotree는 아래 사진과 같이 사이드바에서 트리 형식으로 저장소의 디렉토리 구조를 보여준다. 개인 저장소(Private repository) 또는 Enterprise GitHub에도 Access Token만 설정하면 사용이 가능하다. References Octotree GitHub

개발자 역량 평가

퍼블리싱 1. 웹페이지 코딩 간단한 HTML 문법과 CSS 문법을 알고 사용할 수 있다 div로 레이아웃을 잡고 코딩을 할 수 있다 (Box model을 이해한다) 웹 표준을 어느 정도 이해하고 있다 (DTD를 알고 있다) 웹 접근성과 시맨틱한 마크업에 대해 숙지하고 있으며 관심이 깊다 2. 크로스 브라우징 인터넷 익스플로러밖에 사용해 보지 않았다 특정 모바일 디바이스에 최적화된 페이지를 만들어 본 경험이 있다 각 브라우저의 렌더링 이슈를 알고 있으며 해결해 본 경험이 있다 브라우저핵의 존재를 알고 있으며, 우아한 퇴보 기법의 일부를 숙지하여 코딩할 수 있다 3. jQuery 간단한 셀렉터와 실행 문법을 알고 있다 다양한 플러그인을 사용해본 경험이 있다 제법 복잡한 셀렉터를 다룰 수 있고, 메소드 체이닝..

[Book] 객체지향의 사실과 오해를 읽고

이 책의 제목은 '객체지향의 사실과 오해'이고, 부제는 '역할, 책임, 협력 관점에서 본 객체지향'이다. 부제에서 이 책의 핵심이자 결론이 나왔다. 읽기 전부터 책의 크기와 두께가 만족스러웠다. 객체지향 원리를 다룬 다른 서적들과는 달리 300쪽이 되지 않아서 가벼운 마음으로 책을 읽을 수 있다. 저자가 언급하길, 다음 권으로 가기전 필요한 개념 및 배경 지식을 제공하기 위한 용도라고 말하였으니, 아마 처음부터 분량을 제한해두고 집필해서 책이 얇은 것이라는 생각이 들었다. 내용은 총 7장과 부록으로 이루어져 있는데, 특이하게 구현 코드가 나오는 부분은 마지막 장 밖에 없다. 나머지는 글과 그림으로 채워져 있어서 읽다가 꽤 지루할 줄 알았는데, 한 줄씩 의미를 되짚어보며 차분히 읽어보니 코드가 없는 글임에..

My Note/리뷰 2023.11.24

시스템 소프트웨어(System software)의 종류

소프트웨어는 크게 2가지로 분류할 수 있다. 시스템 소프트웨어(System software) 응용 소프트웨어(Application software) 시스템 소프트웨어 시스템 소프트웨어는 하드웨어를 컨트롤할 수 있는 소프트웨어를 말한다. 대표적인 예로 운영체제(OS)가 있다. 예를 들어, 곰플레이어로 영상을 보고 싶다고 가정해 보자.곰플레이어는 모니터에게 "영상을 출력해" 라고 말할 권한이 없어서 운영체제로 요청해야 한다. 곰플레이어가 운영체제에게 "모니터에 영상을 출력해주면 안 될까?" 요청하면 운영체제는 받아들인다. 그제야 하드웨어는 운영체제의 명령을 받아 모니터에 영상을 출력한다. 이렇게 하드웨어를 컨트롤할 수 있는 소프트웨어가 시스템 소프트웨어다. 장치를 움직이게 하는 소프트웨어인 셈이다. 단순하게..