본문 바로가기
728x90

language64

[Scala] 스칼라 배우기 1. 스칼라란? 특징 및 스칼라 언어에 관한 통계 이번에 이직을 하게 되면서 스파크 코드가 python이 아닌 scala로 구성되어 있기 때문에 스칼라 언어를 배울 필요성을 느껴 스칼라언어에 대해 하나씩 배우면서 적용해 나갈 계획입니다. java와 닮은 점이 많은 언어 이기 때문에 java와 비교하며 같이 공부 해 나갈 계획이고 scala를 통해 spark프로그래밍도 적용 및 pyspark와 비교 해 볼 계획입니다. 1. Scala란? 2004년 마틴 오더스키(Martin Odersky)가 발표 일반적인 프로그래밍 패턴을 간결하고 우아하며 타입-세이프한 방식으로 표현할 수 있게 설계된 최신 멀티-패러다임 프로그래밍 언어 객체지향과 함수형 언어의 특징을 자연스럽게 통합한 언어(하이브리드 언어) 2. Scala 특징 1. 모든 값이 객체인 순수 객체지향 언.. 2023. 5. 13.
[Java] Compile과 Decompile (feat. .JAR, .WAR, .class, .java) + JAD 이번 포스트에는 Java 언어의 특징인 Compile과 그의 반댓말인 Decompile, 그리고 관련된 파일형식 및 도구에 대해 정리해보겠습니다. 1. Compile이란? 1) 정의 사람이 이해하는 언어를 컴퓨터가 이해할 수 있는 언어로 바꾸어 주는 과정 컴퓨터는 0과 1로만 모든 명령을 이해하고 실행하기 때문에, 인간의 언어를 기계가 알아 들을 수 있게 바꿔주는 작업이 필요함. Compiler(compile + link) compile: 원시코드에서 목적코드(목적파일)로 바꾸어 주는 것 link : 목적 파일을 실행 파일로 바꾸는 것 원시코드: 인간이 알아볼 수 있는, 우리가 작성한 코드(.java) 목적코드: 컴퓨터가 이해할 수 있도록 번역한 코드(기계어)(.class) 2) compile을 과정이 .. 2023. 2. 17.
[Python] PyPy3 vs Python3 이번 포스트에는 PyPy3와 Python3를 비교해보고 어떤 상황일 때 사용하면 좋은 지 확인해보겠습니다. 비교 전에 컴파일 언어와 인터프리터 언어의 특징을 확인하겠습니다. 컴파일 언어: 소스 코드를 기계어로 컴파일(Compile time) -> 실행파일 만듦 -> 실행(Run time) 인터프리터 언어: 코드를 한줄씩 읽어 가며 실행 Python3 1) 구현체 python의 시작은 C로 구현되었고, 그 구현체가 CPython인데, CPython은 인터프리터이면서 컴파일러 2) 동작 방식 python3에서는 우리가 작성하는 python코드를 bytecode로 컴파일하고 실행한다. 즉, python코드를 C언어로 바꾸는 것이 아니라, 컴파일 하여 bytecode로 바꾸고 그 다음 인터프리터(가장 머신)가 .. 2023. 1. 6.
[Python] 함수의 강점, 함수 return 이란?, 언제 사용할까? print()와의 차이점 왜 쓰는지 알고 쓰는 것과 그냥 쓰는 것의 차이는 굉장히 크다고 생각합니다. 늘상 접하고 있는 함수에 대해서 정리해보겠습니다. 1. 함수의 강점 1) 반복과 재사용에 강하다 기계와 사람의 큰 차이점은 어떤걸까? 같은 일을 반복함에 있어서 속도차이가 엄청나게 나는 부분이 제일 큰 차이가 아닐까 싶습니다. 프로그래밍에는 반복을 해야하는 일들이 존재합니다. 즉, 코드를 재사용할 일이 많다는 뜻입니다. 그런것을 도와주는 것이 반복문 함수 정도 일 것 같습니다. 2) 유지보수에 좋다 함수의 강점은 반복 뿐만이 아닙니다. modularity(모듈성)라 하는 시스템 구성 요소가 분리되고 재결합 될 수있는 정도를 나타내는 단어는 프로그래밍에 있어 중요합니다. 기능을 잘게 쪼개게 되면, 원하는 기능의 수정이 필요할 때에.. 2022. 12. 15.
[Python] Input() vs sys.stdin.readline() 입력 함수 차이 (feat. python version) 이번 포스트에는 사용자 입력을 처리하기 위한 내장 함수에 대해서 비교하여 정리하겠습니다. 1. Python 2.x 1) raw_input() 입력 값을 무조건 문자열로 받음 2) input() 입력으로 들어온 값을 evaluate 해서 그 값에 맞는 자료형으로 초기화(형변환이 자동으로 된다.) 2. Python 3.x 1) input() Python 3.x에서 input()는 Python 2.x 의 raw_input() 역할을 대신하여 입력 값을 문자열로 받음 -> 다른 타입을 넘겨주기 위해선 형변환이 필요 Python 3.x로 넘어오면서 모든 변수가 객체(object)로 처리됨에 따라서 결과 값도 type에서 class로 바뀌게 됨 input() 내장 함수는 parameter로 prompt messag.. 2022. 12. 15.
[Python] pandas vs pyspark 사용 및 코드 비교 이번 포스트에는 pyspark과 pandas를 쓰임새를 비교 해보고, pyspark의 코드를 pandas코드로 옮겨보고 비교해보겠습니다. 1. Pandas vs Pyspark 언제쓸까? pandas와 spark는 dataframe이라는 SQL 테이블 또는 Excel 스프레드 시트에서와 같이 이질적으로 유형이 지정된 열이있는 데이블 형식 데이터를 다루게 될 때 아주 적합함 대부분의 데이터처리에는 pandas 라이브러리를 통해 해결했었는데, pandas와 spark의 가장 큰 차이는 핸들링하는 데이터의 양의 크기 pandas는 통상적으로 spark보다 작은 데이터 처리에 대해서는 속도가 빠르다고 하는데, 10GB이상의 파일 처럼 파일의 크기가 커지게 되면, pandas는 메모리용량의 부족으로 인해 성능이 저.. 2022. 9. 22.
[Java] public static void main(String args[]){}란? 이유 자바의 메인 메소드 메인 메소드란 Java로 구현된 프로그램이 시작될 때 가장 먼저 실행되는 메소드 자바의 메인메소드를 작성할 때는 public static void main(String[] args){}구조로 작성 public(접근제어자) public은 접근제어자의 일종 private default protected public *private -> default -> protected -> public 순으로 보다 많은 접근을 허용 public 접근제어자는 어느 클래스에서든 해당 객체를 참조할 수 있다는 뜻 JVM(Java Virtual Machine)이 접근 하기 위해서 public을 사용 다른 접근 제어자를 사용하면 프로그램이 실행되지 않음 하지만 접근제어자를 이용하면 프로그래머의 코딩 실수를 방.. 2022. 9. 5.
[Python] Numpy library 개념, 기본 사용법 1. Numpy 란? Numpy는 다차원 배열을 쉽게 처리하고 효율적으로 사용할 수 있도록지원하는 파이썬의 패키지 데이터 구조 외에도 수치 계산을 위해 효율적으로 구현된 기능을 제공 2. Numpy 설치 pip install numpy 3. Numpy 기본 사용법 1) ndarray 생성 import numpy as np arr1 = np.array([1,2,3,4]) # numpy의 배열인 ndarray 생성 print(arr1,type(arr1)) # [1 2 3 4] 출력 2) ndarray 데이터 타입 지정 float int bool str object arr2 = np.array([1,2,3,4], dtype = 'float') # dtype으로 배열의 데이터타입을 지정함 3) 1차원 이상의 배.. 2022. 7. 12.
[Python] Requests, URLlib, BeautifulSoup4(bs4) 확실히 알고 쓰기 1. requests Requests 는 파이썬에서 HTTP를 사용하기 위해 쓰여지는 라이브러리 데이터를 보낼 때 딕셔너리 형태로 보낸다 없는 페이지를 요청해도 에러를 띄우지 않는다 어떤 방식(method)의 HTTP 요청을 하느냐에 따라서 해당하는 이름의 메소드를 사용 GET 방식: requests.get() POST 방식: requests.post() PUT 방식: requests.put() DELETE방식: requests.delete() response 요청(request)을 보내면 응답(response)을 python 객체로 받음 response = requests.get("url~~") # 내가 보낸 request 객체에 접근 가능 response.request # 출력 # 응답 코드 resp.. 2022. 6. 30.
728x90