아래 명령어를 통하여 Next.js 프로젝트를 생성하려고하는데,

npx create-next-app@latest custom-project-name

 

아래와 같은 에러를 직면하였다.

I am ERROR

 

이유인즉슨, Node Version 문제였다.

현재 사용하고 있던 노드 버전은 14.23.1 버전으로,
@latest 버전의 Next 를 사용하기에는 버전이 지원되지 않았기에 발생하였다.

그래서 어쩔 수 없이 nvm 으로 노드를 새로 다운로드 받아 버전 컨트롤을 수행하였다.

 

 

 에러 해결 완료

반응형

 

 

Jenkins Build & Deploy shell

Jenkins 를 통해 FrontEndBackEnd의 CI/CD 를 구축 중에 있었다.

이런식으로 FrontEnd 소스를 빌드&배포하는 작업을 처리해놓았고, 실제로 수동 빌드가 동작하는 것까지 확인을 하였다.

branch를 main으로 잡아놓고, 해당 브랜치가 업데이트 되었을 때 배포하도록 설정해놨다.
그런데 아무리 기다려봐도 동작이 없었다.

그래서 원인이 뭔가를 확인해봤더니 Trigger 가 문제였다.

Trigger

Poll SCM

트리거를 특별히 지정해놓지 않았더니 수동 배포 동작을 눌러주기까지 계속 기다리고 있던 것.
그래서 Trigger(빌드유발) > Poll SCM 을 추가해주었다.

다들 ChatGPT를 확인해서 알겠지만, 위 내용은
평일 오전9시-오후6시에 5분마다 변경사항을 체크하고 배포한다는 내용이다.

그랬더니 정상적으로 build & deploy 가 되는것을 확인하였다.

 

반응형

 

아래와 같이 클래스를 만들었을 경우

1.  Override, 다형성

open class Country ( var fullName: String, var capital: String, var language: String)  {

    fun printFullName () {
        println("fullName: $fullName")
    }
    fun printCapital () {
        println("capital: $capital")
    }
    fun printLanguage () {
        println("language: $language")
    }
    open fun singNationalAnthem () {
        println("singNationalAnthem")
    }
}

class Korea (fullName: String, capital: String, language: String) : Country( fullName, capital, language) {
    override fun singNationalAnthem () {
        super.singNationalAnthem()
        println("sing Korea")
    }
}


class USA ( fullName: String, capital: String, language: String) : Country( fullName, capital, language) {
    override fun singNationalAnthem () {
        super.singNationalAnthem()
        println("sing USA")
    }
}

 

  1. Country 라는 클래스를 Korea, USA 라는 클래스에서 상속.
  2. 자식 클래스에서는 super.METHOD 를 통해 부모 클래스의 메서드를 호출 할 수 있다.
  3. +커스터마이징이 가능하다 (== 다형성)

 

fun main (args: Array<String>) {
    val korea = Korea("대한민국", "서울", "한국어")
    korea.singNationalAnthem()
    val usa = USA("미국", "워싱턴", "영어")
    usa.singNationalAnthem()
}

/** output
singNationalAnthem
sing Korea
singNationalAnthem
sing USA
*/

이렇게 출력이 된다.

Java의 문법과는 또 달라서 [ Java(public) / Kotlin(open) ] 신기하다.
뭔가 public 공공의 라는 뜻보다는 open 이 더 직관적이기도 하고

 


 

2. Abstract. 추상매서드

다음으로 추상메서드에 대해 메모한다.

//추상클래스
abstract class Game {
    //일반메서드
    fun startGame () {
        println("Game Start")
    }

    //추상메서드
    abstract fun printGameName ()
}

class OverWatch: Game() {
    //추상메서드는 하위 클래스에서 반드시 구현해야함
    override fun printGameName() {
        println("This game is OverWatch.")
    }
}

Game이라는 클래스를 만들었다.
Game > 메서드로 printGameName 이라는 메서드를 만들어놓았다.
: 추상메서드는 반드시!!! 오버라이딩 한 메서드에서 만들어야한다.

fun main (args: Array<String>) {
    val overwatch = OverWatch() //새로운 인스턴스 생성

    overwatch.startGame()
    overwatch.printGameName()
}

새로운 인스턴스 overWatch 를 생성.
해당 클래스에 선언된 메서드를 실행하였다.
printGameName 메서드는 추상메서드로 선언(abstract)

예전에는 이게 무슨소린지 전혀 이해를 못했었는데, 다시 보니 또 바로 이해되는게 신기하다.

반응형

코틀린을 사용하는데에 차이점이 존재했다.

1. Array

//Java
String[] javaArray = {"1", "2", "3"};

//Kotlin  : Array<String> 부분은 생략이 가능하다.
val kotlinArray: Array<String> = arrayOf("1", "2", "3");
val kotlinArray arrayOf("1", "2", "3");

문법이 너무 신기하다.


2. 배열의 사용법

//Until 끝 값을 포함하지 않는 범위를 생성 (시작값 ≤ i < 끝값).
for (i in 1 until 10) {
    println(i) // Prints numbers from 1 to 9 (10 is excluded)
}

//DownTo 값을 감소시키며 반복.
for (i in 10 downTo 1) {
    println(i) // Prints numbers from 10 to 1
}

//Step 반복 간격을 설정 (기본값은 1).
for (i in 1..10 step 2) {
    println(i) // Prints 1, 3, 5, 7, 9
}

꽤나 많은 것들이 확장 되는 것 같다.


3. print

여러 가지가 있지만, 그 중에 JavaScript template literal 처럼 사용하는게 너무 신기했다.

//JavaScript
const literalWord = 'value of Literal'
console.log(`literalWord : ${literalWord}`)

//Kotlin
val literalWord: String = "value of Literal"
println("literalWord : $literalWord");

어떤가? 너무 유사해보이지 않은가??


4. when

fun getGrade (examScore: Int): Char {
    return when {
        examScore >= 90 -> 'A'
        examScore >= 80 -> 'B'
        examScore >= 70 -> 'C'
        examScore >= 60 -> 'D'
        else -> 'F'
    }
}
val grade = getGrade(80)
println("grade: $grade") //B

JavaScript 에서 switch case 와 동일해보인다.
문법자체는 더 간결하고 깔끔하며 break; 를 걸어줄 필요가 없어서 편의성이 더 높다.


5. set

//1. mutable set : 가변
val mutableAnimalSet = mutableSetOf("Lion", "Elephant", "Dog", "1", "2", "1")
println("mutableAnimalSet: $mutableAnimalSet")

//2. immutable set : 불변
val animalSet = setOf("Lion", "Elephant", "Dog", "1", "2", "1")
println("animalSet: $animalSet")

신기했던 건 setOf, mutableSetOf 함수를 사용하면, 중복된 내용은 삭제가 된다는 것이었다.

//output
mutableMap: {key1=Lion, key2=Elephant, key3=Dog}




React.js, Next.js 등을 공부하던 와중
회사에서 인턴 직원분이 백엔드 코드를 짜고 제출하는 모습을 봤다
내용도 꽤나 괜찮았다
이에 자극받아 백엔드 쪽 공부의 필요성을 느끼게 되어 Kotlin 코틀린 공부를 시작하게 되었다.

 

반응형

안녕하세요 상훈입니다.

4년 차 프론트엔드 웹개발자의 시각에서 이 책을 읽으며 느낀 점을 공유하고자 합니다.

 

한상기 저자의 『AGI의 시대: 인간을 초월한 인공지능, AGI를 논하다』는 인공일반지능(AGI)의 개념과 그에 따른 사회적, 기술적, 윤리적 논쟁을 심도 있게 다룬 책입니다. 




AGI의 개념과 현재 기술과의 비교

AGI는 특정 작업에 국한되지 않고 인간과 유사한 수준의 지능을 갖춘 인공지능을 의미합니다. 현재 우리가 사용하는 AI는 주로 특정 업무에 특화된 '좁은 인공지능(Narrow AI)'으로, 예를 들어 음성 인식, 이미지 분류, 추천 시스템 등이 이에 해당합니다. 반면, AGI는 이러한 특정 업무를 넘어 다양한 문제를 인간처럼 이해하고 해결할 수 있는 능력을 지향합니다. 이러한 AGI의 등장은 기술 산업 전반에 걸쳐 큰 변화를 예고하며, 특히 웹 개발 분야에서도 새로운 도전과 기회를 가져올 것입니다.

 

프론트엔드 개발에 미치는 영향

AGI의 발전은 프론트엔드 개발자에게도 다양한 영향을 미칠 것으로 예상됩니다:

자동화의 확대

코드 작성, 디버깅, 최적화 등의 작업이 AGI를 통해 자동화될 수 있습니다. 이는 개발 생산성을 높이는 동시에, 개발자의 역할을 재정립하게 만들 것입니다.

물론 아닌 곳들이 아직까지는 많겠지만, AI의 발전속도는 매우 가파르게 변화하고 있습니다.



사용자 경험의 혁신

AGI를 활용하여 사용자와의 상호작용을 더욱 자연스럽고 직관적으로 설계할 수 있습니다. 예를 들어, 사용자 입력에 대한 실시간 이해와 반응, 개인화된 콘텐츠 제공 등이 가능해질 것입니다.



새로운 기술 스택의 등장

AGI와의 통합을 위해 새로운 프레임워크나 라이브러리가 등장할 수 있으며, 이에 대한 학습과 적응이 필요할 것입니다.
지금에서야 React.js, Vue.js 들이 메인 프론트엔드 개발로 자리잡고 있지만, 언제 또 갑자기 새로운 프론트엔드 라이브러리, 프레임워크 등이 생길지 모릅니다.

윤리적 고려사항
책에서는 AGI의 발전에 따른 윤리적 문제도 강조하고 있습니다. 개발자로서 우리는 기술의 발전이 사용자와 사회에 미치는 영향을 고려해야 하며, 특히 AGI의 경우 그 파급력이 매우 클 것으로 예상됩니다. 따라서 AGI 시스템의 투명성, 공정성, 책임성 등을 고려한 개발이 중요합니다.

개인적인 소감
이 책은 AGI에 대한 기술적 설명뿐만 아니라, 사회적, 윤리적, 철학적 관점에서의 논의도 풍부하게 담고 있어, 기술 개발자로서 시야를 넓히는 데 큰 도움이 되었습니다. 특히, AGI가 가져올 미래에 대한 다양한 시나리오와 그에 따른 준비 사항을 생각해보게 되어 매우 유익했습니다.



결론

『AGI의 시대』는 프론트엔드 개발자를 포함한 모든 기술 종사자들이 미래를 대비하는 데 있어 꼭 읽어야 할 책입니다. AGI의 개념부터 그에 따른 사회적 영향까지 폭넓게 다루고 있어, 기술의 발전 방향을 이해하고, 이에 맞춰 자신의 역량을 개발하는 데 큰 도움이 될 것입니다.

이 책을 통해 AGI에 대한 깊은 이해와 함께, 다가올 미래에 대한 준비를 시작하시길 권합니다.

 

이상입니다.

 "한빛미디어 <나는리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

반응형

안녕하세요 상훈입니다.

오늘 리뷰할 도서는 여지껏 맨날 개발도서만 했던것과는 다르게 Cha tGPT, 생성형 ai 관련 도서입니다.

"하루 30분! 돈이 되는 네이버 블로그 with 챗GPT"는 일상 속 짧은 시간을 활용해 네이버 블로그를 효율적으로 운영하고, 수익화를 도모하는 방법을 안내하는 실용서입니다. 

ChatGPT를 중심으로 생성형 AI를 활용해 블로그 글을 보다 쉽게 작성하고, 수익화할 수 있는 다양한 아이디어를 제공합니다.

 

하루 30분! 돈이 되는 네이버 블로그 with 챗GPT

 

1. ChatGPT와 클로드를 통한 효율적인 글쓰기 지원

책은 AI 도구인 챗GPT와 클로드를 사용해 블로그 글의 초안을 작성하거나 수정하는 방법에 중점을 둡니다. 초보자나 글쓰기 시간을 줄이고 싶은 사람들에게 특히 유용한 이 기능은 아이디어를 빠르게 생성하고, 글의 구조를 개선해 가독성 높은 콘텐츠를 만드는 데 도움을 줍니다. 또한, AI를 통해 키워드 리서치 및 최적화를 할 수 있어 SEO 관점에서도 실질적인 도움이 됩니다.

*SEO: Search Engine Optimization : 검색엔진최적화

2. 다양한 수익화 전략 제시

이 책은 체험단과 기자단 참여를 비롯해, 광고 수익, 판매 제휴 프로그램, 그리고 직접적인 상품 판매 등 블로그로 수익화할 수 있는 다양한 방법을 제시합니다. 이를 통해 블로그 운영을 통해 단기적인 수익뿐만 아니라, 장기적인 수익 창출 방법에 대한 전략을 학습할 수 있습니다.

3. AI 활용으로 블로그 운영 시간을 절감

책은 블로그 운영에 필요한 일상적인 작업들을 AI가 얼마나 효과적으로 지원할 수 있는지를 다룹니다. 예를 들어, 글쓰기 초안 작성부터 포맷팅, 키워드 선택, 발행 시기 추천까지 AI가 담당함으로써 블로거의 시간을 절약하고 생산성을 높이는 방법을 설명합니다. 이는 바쁜 직장인이나 취미로 블로그를 운영하는 사람에게 큰 이점이 됩니다.

4. 실전팁과 맞춤형 가이드

이 책은 각자의 블로그 운영 방식에 맞춘 다양한 실전 팁을 포함하고 있어, 블로그 초보자도 빠르게 성장할 수 있는 노하우를 습득할 수 있습니다. 일일 30분의 시간 관리를 통해 일관된 포스팅을 유지하고, AI의 도움을 받아 콘텐츠 주제 발굴에서부터 마케팅까지 일련의 작업을 효과적으로 수행하는 방법을 구체적으로 제시합니다.

수익화 조와요. 2챕터 위주로만 읽음;

결론

블로그 운영을 통해 수익화를 꿈꾸는 사람들에게 맞춤형 솔루션을 제공하며, AI의 활용 가능성까지 폭넓게 다루어 실질적인 도움을 줍니다.

+ 네이버 클로바에 대해서도 간략하게 설명을 해주어 네이버 클로바를 사용하고자 하시는 분들 또한 도움이 되실겁니다.

 

"한빛미디어 <나는리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

반응형

안녕하세요 상훈입니다.

이번에는 한빛미디어 - 실전 레디스
- 기초, 실전, 고급 단계별로 배우는 레디스 핵심 가이드 

도서에 대해 리뷰하겠습니다.

장점

  1. 빠른 데이터 처리: 레디스는 인메모리형 데이터 구조를 채택하고 있어 매우 빠른 처리 속도를 자랑합니다. 이는 실시간 데이터 처리와 응답 속도가 중요한 애플리케이션에 유리합니다
  2. 다양한 자료형 지원: String, List, Hash, Set, Sorted Set 등 다양한 자료형을 지원하여 데이터 표현의 유연성이 높습니다
  3. 영속성: 인메모리 데이터베이스임에도 불구하고 데이터를 영구적으로 저장할 수 있는 기능을 제공합니다

 

단점

  1. 복잡한 사용법: 다양한 기능과 자료형을 제공하는 만큼, 이를 모두 이해하고 사용하는 데에는 학습 곡선이 존재합니다
  2. 메모리 의존성: 인메모리 데이터베이스이기 때문에, 대규모 데이터를 처리할 때는 메모리 사용량이 급격히 증가할 수 있습니다

특이점

  1. 인메모리 및 영속성 결합: 대부분의 인메모리 데이터베이스가 영속성을 제공하지 않는 반면, 레디스는 빠른 데이터 처리와 영속성을 모두 제공합니다
  2. 다양한 자료형: 일반적인 데이터베이스에서는 보기 힘든 자료형들을 지원하여, 특정 요구사항에 맞는 최적의 자료 구조를 선택할 수 있습니다

 

글을 쓰다보니 저도 모르게 레디스에 대한 내용을 작성해버리고 말았긴하네요.. (정신머리가 어디가있는건지;)

 

결론

한빛미디어의 "실전 레디스" 도서는 레디스의 고성능 데이터 처리 능력과 다양한 자료형 지원, 영속성 제공 등 여러 장점을 잘 설명하고 있습니다.

그러나 복잡한 사용법과 메모리 의존성이라는 단점도 명확히 이해하고 사용해야 합니다.

 

이 도서는 레디스를 실제 운영 환경에서 효과적으로 사용하는 방법을 배우고자 하는 개발자들에게 큰 도움이 될 것입니다.

 

가격이 비싸요 ㄷ

 

이상입니다.

"한빛미디어 < 나는리뷰어다 > 활동을 위해서 책을 제공받아 작성된 서평입니다."

반응형

안녕하세요 상훈입니다.

금일 소개할 IT 도서는 [ 혼자 공부하는 네트워크 ] - 한빛미디어 (강민철) 입니다.
혼공네트 라고도 하죠.

 

 

별점: ★★★★☆

장점

1. 다수의 네트워크 전공 서적을 면밀히 분석하여, 초보자도 이해하기 쉽게 구성되어 있어서 자습에 적합합니다.
또한, 핵심 내용만을 선별하였기 때문에 복잡한 이론을 쉽게 이해할 수 있습니다.

2. 개발자를 꿈꾸는 이들에게 추천되는 책으로, 네트워크의 거시적과 미시적 관점에서 다양한 지식을 제공하여 전반적인 IT 분야에 대한 이해를 높일 수 있습니다.
-> 개발 초보 (저같은) 분들에게 유익할 수 있습니다.

 


부족한 점

1. 특정 주제에 대한 깊은 이해를 원하는 전문가에게는 부족할 수 있습니다. 이 책은 네트워크의 전반적인 내용을 다루기 때문에, 특정 주제나 전문적인 세부 사항에 대한 내용이 제한적일 수 있습니다
 > 고급 개발자들이 읽기에는 핵심 요약적인 내용만 있기 때문에 깊이가 부족할 수 있다고 보여집니다.
(주의바랄게요!)



결론

다른 서적과의 비교를 통해 필요한 핵심 내용을 강조하며, 쉽게 이해할 수 있도록 구성되어 있습니다.
개발자에게 네트워크의 중요성을 강조하며, 각 네트워크 계층을 깊이 있게 다루고 있습니다. 또한, 실무에 필요한 실전 예제와 함께 제공하여 실용적인 지식 습득을 돕습니다.

 

 

 

이상입니다.

" 한빛미디어 서평단 <나는리뷰어다> 활동을 위해서 책을 제공 받아 작성된 서평입니다. "

반응형

안녕하세요 상훈입니다.

이번에 한빛미디어"나는 리뷰어다" 도서 서평단 활동을 통하여 내용을 작성하게 되었습니다.

오늘 소개할 도서는 [혼공자] 혼자 공부하는 자바(링크) 인데요, 해당 내용은 Java 언어의 입문자를 위한 책이라고 볼 수 있습니다.

혼공자 도서 전면

 

 

목차

 

1. 요약

별점: ★★★★☆

"혼자 공부하는 자바"는 자바 프로그래밍을 처음 시작하는 사람들을 위한 입문서입니다.
자바의 기본 개념부터 객체 지향 프로그래밍까지 체계적으로 다루고 있습니다.

→ 저는 객체지향 프로그래밍 부분에 대해 다시 학습이 필요한 것 같아 이 도서를 신청하였고, 기본기를 다시 학습할 수 있었습니다.

 

2. 단점

아쉽게도 해당 책은 입문도서로서, 상세한 실무 프로젝트나 고급 주제는 다루지 않습니다.

그렇기 때문에 중급이상이신분들은 다른 책을 찾아보시는게 좋을 것 같습니다.

 

3. 장점!

혼공자에서는 매 챕터의 상세 항목마다 자세한 설명과 예제가 있어 이를 통해 자바를 쉽게 이해할 수 있습니다. (물론 연습은 필요하지만요 ㅎㅎ)
책은 과외 선생님이 알려주듯 친절하게, 그러나 핵심적인 내용만 콕콕 집어줍니다. 이로 인해 자바를 처음 배우는 입문자도 쉽게 따라갈 수 있습니다.

 

단계별 학습

7단계에 걸쳐 자바의 핵심 내용을 반복 학습하면서 자연스럽게 머릿속에 기억되도록 구성되었습니다.
핵심 키워드와 시작하기 전에를 통해 각 절의 주제에 대한 대표 개념을 워밍업한 후,
본격적인 자바 핵심 이론과 실습을 거쳐 마무리에서는 핵심 포인트와 확인 문제로 한번에 복습합니다.

Beta 리더 검증

26명의 Beta 리더와 함께 구성하여 입문자에게 맞는 난이도, 분량, 학습 요소 등을 적극 반영했습니다.
어려운 용어와 개념은 한번 더 풀어 쓰고, 복잡한 설명은 눈에 잘 들어오는 그림으로 풀어냈다고 봅니다.
또한 해당 도서는 저자 직강 동영상과 학습 사이트를 통해 언제 어디서든 가볍게 자바를 학습할 수 있습니다.

 

4. 결론! ✈️

"혼자 공부하는 자바"는 자바 입문자들을 자바의 세계로 잘 이끌어주는 책입니다.
기초를 탄탄하게 다지고, 이후 더 전문적인 자바 수준으로 나아가기에 좋은 디딤돌이 될 것입니다.
이 책은 자바를 처음 배우는 분들에게 추천드리며, 자바 프로그래밍에 관심이 있는 분들에게도 유용한 자료입니다.
(초보자도 충분히 따라하실 수 있도록 예제도 있습니다.)

 

객체지향프로그래밍

"한빛미디어 서평단 <나는리뷰어다> 활동을 위해서 책을 제공 받아 작성된 서평입니다."

 

이상입니다.

반응형

안녕하세요 상훈입니다. 
지난 번에는 text 와 utext 에 관해서 포스팅을 했었는데요, 아래 링크를 통해 확인이 가능합니다.

 

[Spring / Thymeleaf ] 타임리프 : text, utext 가 무슨 차이인데?

[글작성일자: 2024.01.16] 안녕하세요 상훈입니다. 이번에 프로젝트를 통해 타임리프를 사용하게 되었는데, 생각보다 신기하고 간단하더라구요. 하나씩 공부하는 입장으로서 작성중에 있습니다. 1.

code-hoon.tistory.com

 


1. 그래서, | | 이 뭔데?

이번에는 | | : literal substitution 에 대해 간단하게 작성하려고합니다.

해당 문법은 JavaScript 를 아시는 분이라면 유명한 template literal 라고 생각하시면 편한데요,
바로 보여드리도록 하겠습니다.

//Java
model.addAttribute("name", name);
//HTML
<p th:text="|The Name is ${name}|"></p>

해서 값을 받아와 출력을 하면,

출력 결과

requestParam으로 받아온 값이 위 사진과 같이 출력이 됩니다.

 

주요한 기능으로는 안의 문자열을 조합하여 한번에 출력이 가능하다고 볼 수 있겠네요.

또 다른 예시)

    <p th:text="|My Name is ${name}, and his name if ${name2}. Also her name is ${name3}|"></p>

이런식으로도 작성이 가능하겠네요.

 


자바스크립트로는 백택(`) 을 사용하여 ${변수명} 으로 사용하는 템플릿 리터럴(Template Literal)과 동일하네요.

반응형

[글작성일자: 2024.01.16] 안녕하세요 상훈입니다.

이번에 프로젝트를 통해 타임리프를 사용하게 되었는데, 생각보다 신기하고 간단하더라구요.
하나씩 공부하는 입장으로서 작성중에 있습니다.

 

1. 타임리프

타임리프는 아래 링크에 소개드립니다. 만약 보신적이 없으시다면 간단하게 훑는걸로 봐주세요!

https://www.thymeleaf.org/index.html#natural-templates

 

Thymeleaf

Integrations galore Eclipse, IntelliJ IDEA, Spring, Play, even the up-and-coming Model-View-Controller API for Java EE 8. Write Thymeleaf in your favourite tools, using your favourite web-development framework. Check out our Ecosystem to see more integrati

www.thymeleaf.org


2. text, utext 무슨 차이인데?

딱 필요한부분만 말하자면, 문자 내에 html 태그를 사용할 수 있는가 없는가의 차이입니다.

예시)

//Java
model.addAttribute("testText", "<b>utext를 통하여 Escaped문자열을 사용할 수 있다.</b>");
  //HTML
  utext 를 사용할 경우:   <span th:utext="${testText}">testText</span><br/>
  utext 를 사용하지 않았을 경우: <span th:text="${testText}">testText</span>

이렇게 다른 결과를 볼 수 있습니다.

다른말로는 Escape 문법을 사용하여 화면에 렌더링을 시킬 수 있는가 정도.


 

html inspect 를 살펴보면, <b> 태그로 위에는 들어가있는 반면,  => Escaped
아래는 문자열로 들어가지는 모습을 볼 수 있습니다.

 

 

반응형

안녕하세요 상훈입니다. 

Spring + Maven, MySQL 을 사용하는데 DBeaver 를 통해서는 MySQL 과 연동이 되는데, 스프링에서는 서버 구동조차 안되어 난감했던 경험을 하였습니다.

최근에 NCP-Computed Engine 에서 AWS - EC2로 서버이전을 하게되었는데, 이 과정 중 발생하였습니다.

보통 인바운드, 아웃바운드 설정 오류인 것이다. 라는 내용이 대부분이라 인바운드, 아웃바운드 모두 모든 트래픽 허용 (0.0.0.0/0) 으로 했는데도 안되고 (::/0)... 너무 난감했습니다.

 


 ✔ Which Error?

✔ Communications link failure

바로 연결 오류.

해당 오류가 뜨면서 서버 구동조차 안되었기 때문에, 무엇이 오류였던건지 2일정도 찾아 헤매었습니다.

구글 서핑 중 우연히 발견하게 된 블로그의 한 단락

이게 빛이자 나의 누였다.

이번 서버 설정에서는 MySQL 의 기본 설정인 bind-address 를 설정하지 않았다는 것이 상기되었다.

 


✔ MySQL 기본 설정하기 [Solution]

mysql 의 기본 설정 중 bind-address 를 찾아 주석처리
  - 로컬에서만 된다는 것으로 설정된 기본 형태를 주석 처리하여 모두 사용이 가능하도록 변경

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

bind-address 설정

초보적인 실수였지만 겨우 잘 찾았으니 다행.
(그냥 ec2 어떻게 서버 올리는지 순서에 따라 작성을 한 번 해야하나? 라는 필요성을 느낌)

 

반응형

+ Recent posts