Programming

    [Kotlin] Jvm Prefix Annotation 5가지 파헤치기

    코틀린은 자바와의 상호 운용을 중요하시하는 언어이다. 따라서 JVM 상에서 두 언어의 유연함을 가지기 위해 Jvm Prefix Annotation을 제공한다. 주로 사용하는 5가지 Annotation에 대해 알아보자. JvmField JvmStatic JvmOverloads JvmName JvmSynthetic 1. JvmField 코틀린에는 프로퍼티라는 개념이 존재하지만, 자바에서는 필드라는 개념이 존재한다. 즉, 자동으로 getter/setter를 만들어주지 않는다. 따라서 코틀린의 프로퍼티를 자바에서 필드처럼 사용하고 싶다면 @JvmField 어노테이션을 사용한다. class Person { @JvmField var name: String = "John Doe" } // 자바 코드에서 호출 Pers..

    [Kotlin] Value Class (inline class deprecated)

    Kotlin 1.6 버전부터 value class가 도입되었습니다. 이전 버전에서는 data class를 통해 유사한 효과를 얻을 수 있었지만, 데이터 클래스는 추가적인 객체 생성과 메모리 할당이 필요한 문제가 있었습니다. value class가 추가되면서, 객체 생성 및 메모리 할당을 최소화하고 성능을 개선할 수 있게 되었습니다. Kotlin 1.5에서는 inline class라는 키워드를 사용하였지만 1.6 버전으로 업그레이드되면서 value class가 등장하고 inline class는 Deprecated 되었습니다. 그 이유는 Kotlin 팀에서는 inline class를 대신하기 위해 value class를 도입하였기 때문입니다. 해당 포스팅에서는 value class가 무엇인지와 장점에 대해 ..

    [Kotlin] val a: Int = 1000과 val b: Int = 1000은 다르다

    (우아한테크코스 미션 피드백을 듣다가 한 가지 새로운 사실을 알게 되어 정리합니다.) Kotlin은 정수를 나타내는 타입으로 Int와 Integer가 있습니다. 이 둘의 차이는 Int는 primitive type이지만 Integer는 reference type이라는 점입니다. 이 둘의 존재로 인해, 동등성과 동일성을 비교해야 하는 상황에서 어떠한 차이가 발생하는지 알아보겠습니다. isEqualTo() 메서드는 동등성을 비교합니다. (객체의 내용이 같음) isSameAs() 메서드는 동일성을 비교합니다. (메모리 주소가 같음) @Test fun test1() { val actual: Int = 1 val expected: Int = 1 assertThat(actual).isEqualTo(expected) ..

    [Kotlin] const val vs val - 둘의 차이점은 무엇일까?

    최근 우아한테크코스에서 코틀린에 대해 공부하면서 상수를 관리할 때 companion object(동반 객체) 내에 필요한 상수를 선언하는 일이 자주 있었습니다. 단순히 상수이기 때문에 val 키워드를 사용하면 된다고 생각했지만, IDE에서는 이 방식을 추천하지 않았습니다. val만 사용하여 상수를 선언하면, Might be 'const'라는 문구가 나타나면서 노란 줄로 경고가 나타납니다. 여기서 IDE가 추천해주는 방식을 따르면 const 키워드가 추가로 붙게 됩니다. 이 둘에 어떤 차이가 있는지 알아본 바로는, const val는 컴파일 시점에 값을 할당하는 반면, val는 런타임 시점에 값을 할당한다는 차이가 있습니다. 많은 레퍼런스를 참조해봤지만 대부분 이 둘에 대한 차이밖에 찾을 수 없었으며, K..

    [파이썬] 코랩에서 Python Rich 라이브러리를 사용하여 텍스트 출력을 예쁘게 꾸며보자

    이번 포스팅에서는 파이썬의 Rich 라이브러리를 사용해서 딱딱해 보이기만 하는 콘솔 텍스트를 조금 더 예쁘게 출력하는 방법에 대해 알아보도록 하겠다. 제목은 코랩에서라고 적어놨지만 다른 일반적인 환경에서도 적용된다는 점을 알아두자. !pip install rich !python -m rich 우선, rich 라이브러리를 사용하기 위해서 위 명령어를 사용하여 rich를 설치해주고, !python -m rich 명령어로 Rich 라이브러리에 대한 설명을 확인해보자. 그럼 이렇게 Rich 라이브러리를 사용하여 나타낼 수 있는 기능들에 대해 출력해준다. 문장의 색상을 변경할 수 있으며, 밑줄, Bold체, Italic체, 하이라이트, 마크다운, 테이블 등을 사용할 수 있다고 말해주고 있다. 위 기능들을 하나하나..

    [파이썬] Python Sqlite3 모듈을 사용하여 Database를 생성하고 데이터를 관리해보자

    이번 포스팅에서는 파이썬 Sqlite3 모듈을 사용하여 자체 데이터베이스를 생성하고 데이터를 관리하는 방법에 대해 알아보도록 할 예정이다. Sqlite3는 파이썬에서 제공하는 모듈로써, 텍스트나 숫자와 같이 간단한 데이터를 저장하는 심플한 데이터베이스를 구축할 수 있다. 마치 MariaDB와 MYSQL의 축소형이라고 생각할 수 있다. Sqlite3에서 지원하는 자료형 파이썬 SQLite3 None NULL int INTEGER str TEXT float REAL bytes BLOB 예제에서 사용할 데이터 id (INTEGER) name (TEXT) age (INTEGER) number (TEXT) address (TEXT) 1 김상욱 22 010-4545-6767 서울특별시 종로구 세종대로 종로 1가 2..

    [파이썬] Python SMTP 모듈을 사용하여 Email 전송하기 / SMTPAuthenticationError : 534 오류 해결 방법

    이번 포스팅에서는 파이썬 내장 모듈인 SMTP를 사용하여 프로그램으로 이메일을 전송하는 실습을 진행해볼 것이다. SMTP는 Simple Mail Transfer Protocol의 약자로, 이메일을 송/수신하는데 사용하는 TCP/IP 프로토콜이다. 쉽게 말하자면, 컴퓨터 사이에 이메일 통신을 위한 규약이라고 할 수 있다. import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart 우선, SMTP를 사용하기 위해 필요한 smtplib 모듈을 import한다. 그 아래에 클래스들을 보면 MIME이라는 이름을 가지고 있는데, MIME은 이메일과 함께 전송할 파일을 텍스트 형식으로 변환해주는 역할..

    [Develop/파이썬] 셀레니움 크롤링(Crawling) - Tistory 포럼 자동 댓글 프로그램 문제점 개선하기

    이전 포스팅을 꼭 참고해주시기 바랍니다. [Develop/파이썬] 셀레니움 크롤링(Crawling) - Tistory 포럼 자동 댓글 등록 프로그램 : https://itstory1592.tistory.com/26 [Develop/파이썬] 셀레니움 크롤링(Crawling) - Tistory 포럼 자동 댓글 등록 프로그램 개발 동기 티스토리(Tistory)는 자체적으로 포럼(Forum) 사이트를 제공함으로써 많은 블로거들의 소통 공간을 마련해주고 있다. 포럼을 한 번이라도 이용해본 유저라면 알겠지만, 티스토리 블로거 itstory1592.tistory.com 이번 포스팅에서는 지난 글에 이어 파이썬 셀레니움 라이브러리를 이용하여 개발했던 티스토리 포럼 게시글에 자동으로 댓글을 다는 프로그램의 문제점을 개선..

    [파이썬] 코랩(CoLab)에서 구글 드라이브 파일(csv, txt ...) 가져오기

    코랩(CoLab) 환경에서 개발을 하다보면 파일 입출력을 해야할 때가 있을 것이다. 보통 코랩을 사용하는 이유가 개발하는 장소가 유동적이기 때문에, 온라인 상에서라도 개발 환경이 변하지 않도록 가상 환경을 구축해놓는 것이다. 마찬가지로 파일 입출력의 경우에도 csv 또는 txt 파일들을 개발 환경에 계속 저장해놓을 수 없는 상황이 있을 수 있기 때문에, 코랩에서는 구글 드라이브에 파일을 저장해놓고 접근할 수 있는 모듈을 제공해준다. 이렇게 하면 개발 환경이 달라진다고 해서 파일을 계속 다운받을 필요도 없을 뿐더러, 마치 파일 입출력을 통해 DB와 비슷한 효과를 볼 수도 있다. 그럼 이제 이런 환경을 어떻게 구축하는지 알아보자. from google.colab import drive drive.mount(..

    [Develop/파이썬] 셀레니움 크롤링(Crawling) - Tistory 포럼 자동 댓글 등록 프로그램

    개발 동기 티스토리(Tistory)는 자체적으로 포럼(Forum) 사이트를 제공함으로써 많은 블로거들의 소통 공간을 마련해주고 있다. 포럼을 한 번이라도 이용해본 유저라면 알겠지만, 티스토리 블로거들 사이에는 소통뿐만 아니라 상호간의 맞구독이라는 문화가 존재한다. 여기서 '맞구독'이란, 블로거들끼리 서로의 블로그를 구독하고 협업(?)하는 개념이다. 구독자가 많으면 많을 수록 자신이 등록한 게시글을 보기 위해 블로그를 방문하는 이용자가 늘어날뿐만 아니라, 사람들이 이 블로그를 이만큼 구독할 정도로 신뢰도가 있다는 것을 의미하기 때문에 많은 티스토리 블로거들이 맞구독을 하기위해 본인의 블로그를 포럼에서 홍보하고 있는 상황이다. 본인 또한 포럼을 자주 이용하며, 스크린샷의 댓글처럼 다양한 블로거들의 게시글에 ..