목록분류 전체보기 (57)
독도갈매기의 개발 블로그
DI DI ( 의존성 주입 ) 이란? 외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴( IoC 구현 기법 )으로, 인터페이스를 사이에 둬서 클래스 레벨에는 의존관계가 고정되지 않도록 하고 런타임 시에 관계를 다이나믹하게 주입하여 유연성을 확보하고 결합도를 낮출 수 있게 해준다. 의존성이란? 한 객체가 다른 객체를 사용할 때 의존성이 있다고 함. DI를 쓰는 이유 - 장점 재사용성을 높여줌. 테스트 용이. 코드 단순화. 종속적 코드 수 감소. 종속성 감소. 코드 가독성 향상. 결합도 감소, 유연성과 확장성 향상 객체간 의존관계 설정 객체간 의존관계를 없애거나 줄일 수 있음. DI를 사용하지 않는다면 // 커피 클래스 class Coffee { public void drink() { 커피를 마신다 ....
팀원 Server, Database, Admin Client, ChatBot : DokdoGalmaegi Mobile Client : 서울에 사는 한 친구 1 WebPage Client : 서울에 사는 한 친구 2 BackEnd Api Server ( Java Spring Boot ) - 👍 Database ( MySQL ) - 👍 Front Admin Client : C# - 😑 ChatBot ( Kakao Open Builder ) : 👍 WebPage Client ( React ) : 😂 Mobile Client ( Flutter ) : 👍 Spring이 미웠던 순간 ( 미웠던 순간이지 단점이 아닙니다. ) 처음 API서버를 만들 때 DB인 MySQL과 연동할 때 3시간을 썼다는 것이다. 🙈 DB를..
1. 졸작을 만들고 싶은데 뭐 없을까? Spring 회사에 취직하게 되어 이제 스프링을 배워야 하는데 어떤 것을 만들어볼까 라고 생각하게 되었다. 그럼 7월에 있는 전시도 노려보면서 학교에서 사용하고 졸업한 뒤 나중에 찾아 왔을 때 '이걸 선배가 만들었어요?'라는 말을 듣기 위한 프로젝트를 시작해보려고 한다. Github 어느 때와 다를 것 없이 github를 보던 중 다른 이들이 만들었던 학교에서 사용하는 서비스나, 현재 우리 학생들이 사용하는 서비스 중 하나를 봤을 때 학교에서 계속 쓰일만한 프로젝트를 생각하고 있었다. 2. 지각을 많이 하던 우리 반 사건 우리반 아이들은 평소 지각을 많이 해 카톡에 선생님께서 'ㅁㅁ왔니?'를 항상 물어보셨다. 그 아이가 왔다면 선생님은 ..
이 포스팅은 Node.js로 디스코드 봇을 만들 수 있다고!? 시리즈 -5- 메시지의 이모티콘을 확인하자! 1에서 이어지는 포스팅입니다. 전 포스팅을 읽지 않으셨다면 읽고 오시는 것을 권장드립니다. 오늘의 목표 사용자가 보낸 메시지 Reaction을 제거 했을 때 어떤 이름의 Emoji인지를 출력하는 기능을 추가할 것입니다. index.js const { token } = require('./token'); // token 값을 따로 js파일을 만들어주고 module.exports를 사용하여 token이 코드에 노출되는 것을 조금이라도 방지합니다. const discord = require('discord.js'); // discord.js를 import 해줍니다. const..
이 포스팅은 Node.js로 디스코드 봇을 만들 수 있다고!? 시리즈 -4- 봇의 설명을 넣어보자에서 이어지는 포스팅입니다. 전 포스팅을 읽지 않으셨다면 읽고 오시는 것을 권장드립니다. 오늘의 목표 사용자가 보낸 메시지의 Thumbs up Emoji를 눌렀을 때 콘솔에 출력해보려고 합니다. index.js const { token } = require('./token'); // token 값을 따로 js파일을 만들어주고 module.exports를 사용하여 token이 코드에 노출되는 것을 조금이라도 방지합니다. const discord = require('discord.js'); // discord.js를 import 해줍니다. const app = new discord.C..
정규 표현식 정리하기 정규식 생성 First, 리터럴 방식 let Reg = /ab+c/; 정규식 리터럴은 스크립트가 불러와질 때 컴파일됩니다. 만약 정규식이 상수라면, 위와 같이 사용 하는 것이 성능을 향상시킬 수 있습니다. Second, 객체 인스턴스 생성 방식 let Reg = new RegExp("ab+c"); 정규식 객체인 RegExp의 생성자 함수를 사용해 인스턴스를 생성하는 방법도 존재합니다. 이 경우 리터럴 방법과 달리 정규식이 실행 시점에 컴파일됩니다. 정규식의 패턴이 변경될 수 있는 경우, 혹은 사용자 입력과 같이 다른 출처로부터 패턴을 가져와야 하는 경우에는 생성자 함수를 사용하셔야 합니다. 둘의 차이점은? 위에서 설명되어 있듯이 리터럴 방식 같은 경우에는 스크립트가 불러와질 때 실행..
#include using namespace std; int main() { int input = 0; cin >> input; input = input 0110, 1001 = 9, 1 0010 = 18 요런식으로 말이죠 그래서 이번 시프트 문제는 시프트 연산자를 사용해서 비트를 한번만 밀어주면 되는 문제입니다. 그래서 10번 줄에서 받은 값의 비트를 한번 밀어서 출력만 해주면 2배를 출력하는 문제를 풀 수 있습니다. 그냥 2배로 출력하면 되는 문제이긴한디.... 크흠 오늘도 포스팅을 읽어주셔서 감사드리며, 궁금한 점이나 잘못된 점이 있다면 댓글을 달아주시면 감사드리겠습니다.
#include using namespace std; int main() { int first = 0, second = 0, third = 0; cin >> first; cin >> second; cin >> third; cout
#include using namespace std; int main() { int first = 0, second = 0; cin >> first; cin >> second; cout
이 포스팅은 Node.js로 디스코드 봇을 만들 수 있다고!? 시리즈 -3- 봇에 짤이나 이모티콘을 추가에서 이어지는 포스팅입니다. 전 포스팅을 읽지 않으셨다면 읽고 오시는 것을 권장드립니다. 오늘의 목표 !help 명령어를 입력하면 봇의 설명을 출력할 수 있는 간단한 Embed를 세팅하려고 합니다. index.js const { token } = require('./token'); // token 값을 따로 js파일을 만들어주고 module.exports를 사용하여 token이 코드에 노출되는 것을 조금이라도 방지합니다. const discord = require('discord.js'); // discord.js를 import 해줍니다. const app = new dis..