개발은 윈도우 혹은 리눅스로만 하다보니 최근 맥북으로 개발을 하는게 여간 힘든게 아니다.어쩔땐 편리하다라는 생각이 들기도 하지만, 내가 하지 않았던 방식도 많아서 마치 신입 개발자로 돌아간듯한 기분도 들었다. Python으로 새로운 것을 설치하는 도중, zshrc를 수정해야 되는 일이 발생하였고, nano 툴로 수정을 해야 됐었다. 나는 그동안에 리눅스에 있는 환경 설정은 vi로 bashrc만 건드렸었는데 nano툴도 잘 적응이 안돼서, 정리해보도록 해본다. 내가 사용하는 쉘 확인우선 Zshrc를 사용하는지 bashrc를 사용하는지 알아야 되는데 아래의 명령어로 확인이 가능하다.echo $SHELL 필자의 컴퓨터는 위와 같은 명령어를 수행했을 때 아래와 같이 zshrc를 수정해야 된다는 것을 알았다./b..
프로젝트를 만든지 얼마 되지 않았고, Web 소스를 만든적도 없는데 아래와 같은 로그인 페이지가 떠서 당황스러울 수 있습니다. 내가 이런 페이지를 만들었었나? 생각 할 수 있지만, 이는 스프링 부트에서 만들어낸 자체적인 기능으로, 보안설정 때문에 아이디, 패스워드를 입력받는 페이지입니다. 이렇게 아이디 패스워드가 나오는 것이 보기 싫을 경우, 해제하는 방법이 있지만 우선 이번에는 아이디 패스워드를 입력하는 방법부터 알아보도록 하겠습니다. Using generated security password: 라고 콘솔창에 띄워져 있는 것을 볼 수 있는데요. 해당 부분의 값이 Password입니다. 그리고 id는 user가 됩니다. 위와 같이 입력을 하면, 정상적으로 넘어가는 것을 확인할 수 있습니다. 그리고..
인텔리J(Intellij)로 Spring boot를 사용하여 Java Application을 만드는 와중, 인텔리J에서 직접 실행을 할 때에는 이상이 없었으나, Jar로 빌드를 한 후 실행을 하게 되면, Could not find com.mysql:mysql-connector-j 위와 같은 에러 문구가 뜨면서 실행이 되질 않았다. 그렇게 원인을 찾아본 순간, 내 Gradle 설정에 MySQL Connector가 2개 중복 설정이 되었다는 것을 깨달았다. 그리고 이렇게 중복으로 설정된 가장 큰 원인은 MySQL Connector가 버전에 따라 패키지 명이 바뀌게 되면서 인지를 하지 못했기 때문이었다. MySQL 8.0.31 이전 버전우선 예전부터 내가 자주 사용하였던, 8.0.31 이전 버전의 커넥터는 ..
스프링 부트로 프로젝트를 생성한 후, RestController를 사용해야 돼서, 어노테이션을 걸었지만 해당 어노테이션관련 라이브러리 Import가 되질 않았다. 내가 설치한 Dependency는 아래와 같았는데 RestController는 당연히 기본적으로 적용이 될거라 생각한 나의 착각이었다. 스프링부트가 아닌 일반적인 스프링 기반으로 프로젝트를 할 경우 아무런 문제없이 라이브러리가 추가되었었기 때문이었다. 디펜던시(Dependencies) 추가 원인을 찾은 결과 spring-web을 설치해야 하는데 나는 web을 rest와 연관지어 생각지 못했기 때문에 web을 추가하게 되었다. implementation 'org.springframework.boot:spring-boot-starter-web' 위..
에러 메세지 D:\anaconda3\envs\gpt\python.exe D:/gpt/_openai.py Traceback (most recent call last): File "D:\anaconda3\envs\gpt\lib\site-packages\aiohttp\client_reqrep.py", line 70, in import cchardet as chardet ModuleNotFoundError: No module named 'cchardet' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "D:/gpt/_openai.py", line 2, in impor..
Spring Boot에서 application.properties와 application.yml은 모두 어플리케이션의 구성 설정을 위한 파일이며, 둘간의 주요 차이점은 파일 형식과 구문에 있습니다. 둘간의 차이점을 알아보고, 각각에서 mysql과 mongodb 세팅의 차이점을 알아보도록 하겠습니다. 파일 형식 application.properties - 전통적인 프로퍼티 형식을 사용하며, 설정은 키 밸류 형태로, key=value 형식으로 표현됩니다. application.yml - YAML(Yet Another Markup Language 혹은 YAML Ain't Markup Language) 형식을 사용하며, 계층적이고 가독성이 높은 방식입니다. 구문 application.properties에서는 동..
여태까지 Spring-boot를 사용했던 케이스는 STS(Spring Tools Suite)을 사용하여 개발을 했었는데요. Java 어플리케이션은 IntelliJ로 개발을 하다보니, 어느덧 IntelliJ로 Spring-boot를 개발을 해봐야 겠다라는 생각을 가지게 되었습니다. 15년 가까이 Eclipse를 사용했지만, 이제는 놔줘야 될때가 온 것도 같습니다. 아직도 많은 SI 사이트들은 전자정부프레임워크를 사용할테지만, IntelliJ와 성능 차이가 너무 심하게 나서 저는 도저히 못쓸 것 같네요. 그럼 IntelliJ로 Spring 설정하는 법을 설명하도록 하겠습니다. Spring Boot 프로젝트 생성 IntelliJ를 실행한 후, New Project를 선택합니다. New Project 탭이 뜨면..
MySQL 혹은 MariaDB에서 널(NULL) 값을 다른 값으로 교체를 하고 싶을 경우, 대표적으로 2가지의 방법을 활용하는데요. 2가지의 방법을 모두 활용해보고, 어떤 차이가 있는지 알아보도록 하겠습니다. IFNULL 함수 우선 NULL값을 가장 심플하게 처리하는 방법으로는 IFNULL이 있습니다. IFNULL은 2개의 인자를 받아서 첫번째 인자가 NULL값인 경우 두번째 인자로 대체하는 함수입니다. 간단히 생각해서 IFNULL(값, 대체값) 형식으로 사용되며, 여기서 값이 NULL일 경우 대체값으로 처리 되는 방식입니다. 사용 방식 SELECT IFNULL(column_name, '교체할값') From table_name; 예시 SELECT IFNULL(sales, 0) from sales_tabl..
자바(Java)에서 숫자를 퍼센트(%) 형식으로 표시하려면 일반적으로 NumberFormat 형식과 고전적으로 값을 곱하는 방식이 존재하는데요. 두가지의 방법의 차이와 NumberFormat 사용법에 대해서 알려드리도록 하겠습니다. 비교할 데이터 public class TestMain { public static void main(String[] args) { double a = 0.23; double b = 0.045; double c = 0.00713; } } 명확한 값의 차이를 알기 위해, 위와 같이 3가지의 값을 지정해봤습니다. 고전적인 방식 퍼센트값은 당연하게도 0~1의 사이인 값으로 되어 있습니다. 이렇게 값이 정해져있기 때문에 퍼센트로 치환하는 방식 역시 생각보다 쉬울 수 있는데요. /** ..
현재 ChatGPT API를 Java로 Rest 기반으로 호출하여 사용을 잘하고 있는데 Python의 패키지를 이용하여 ChatGPT를 실행해보고자, 사이트에 있는 Python 예제를 그대로 실행해보려 하였습니다. openai 패키지를 정상적으로 설치 한후, 예제 코드를 그대로 실행하였으나, openai 패키지 관련 에러가 발생하였는데요. 원인이 무엇이고 어떻게 해결을 하였는지 좀 황당스럽지만 포스팅 해보겠습니다. 에러 예제 코드 import os import openai openai.api_key = os.getenv("OPEN_AI_LICENSE") response = openai.Completion.create( model="text-davinci-003", prompt="The following ..
Gensim 라이브러리로 FastText로 연관 키워드 동작 테스트 하기 위해서 설치 한 후 테스트 코드를 작성하고 실행을 돌렸더니 다음과 같은 에러가 발생하였다. 에러 코드 Traceback (most recent call last): File "Y:/Project/gendlca/python-source/gendlca/relate_keyword.py", line 12, in model = FastText(vector_size=100, window=5, min_count=1, sentences=tokenized_lines, epochs=10) TypeError: __init__() got an unexpected keyword argument 'vector_size' 원인 위 에러의 원인은 설치한 Gen..
모바일로 어플리케이션을 만드는 방법은 크게 네이티브(Native), 크로스 플랫폼(Cross Platform), 하이브리드(Hybrid) 3가지의 방식으로 만들 수 있습니다. 각각의 방식은 무엇이고 어떤 점이 다른지 간단하게 작성해보도록 하겠습니다. 네이티브 앱(Native App) 네이티브 앱 방식은 플랫폼(Platform)에 종속된 기술을 뜻하며, 모바일의 운영체제(Operating System, OS)인 안드로이드(Android)와 iOS, 윈도우 모바일(Windows Mobile) 등에 종속되어 개발하는 언어 및 기술들을 뜻하고, OS에 종속된 코드를 네이티브 코드(Native Code)라고 합니다. 네이티브 앱의 장점은 해당 플랫폼의 기술을 최대치로 사용하며, 효과적으로 다루기에 하드웨어를 효율..