node.js 공부한 것으로 한번 테스트 해보기 위해서 카카오 플러스친구를 만들고 그곳에서 호출하는 api를 만들어 연동해봤다. 일부러 wedul 플러스 친구 정보와 친구추가를한 사용자들에 정보를 담을 데이터는 redis에 넣어봤다.

플러스친구 만들기

우선 카카오 플러스친구에 들어가서 플러스친구를 만들었다. 플러스 친구에 wedul이라고 검색하면 이제 나온다. 신기하다.

친구 추가 url : http://pf.kakao.com/_qMxnEj




이제 친구 추가후에 채팅창에서 보여줄 안내 대화를 만들기 위해 api를 만들었다.
api 만들 때 필요한 상세 내용들은 문서에 잘 나와있다. 아주 간단해서 10분이면 다 만들듯??? 그렇게 만든 api를 aws 프론티어에 올려서 카카오 플러스친구에 연동했다.

Developer Document

https://github.com/plusfriend/auto_reply#6-object


짜잔 결과!


그냥 재미삼아 만든 것이기 때문에 별다른 기능은 없다.

자세한 소스는 git에 node.js 공부하는 소스에 포함시켜 올려놓았다. 

https://github.com/weduls/nodejs_test



간단하게 rabbitMQ 코드 만들어보는 도중에 메일전송기능이 필요했다.

그런데 메일을 계속 보낼수도 없기 때문에 메일이 잘 전송되고 있는지 확인할 수 있는 프로그램이 있는지 찾아봤다. 


그중에 Fake SMTP 라는 프로그램이 있어서 소개해본다.

프로그램은 하단에 첨부된 링크에서 다운받을 수 있다. 실행방법은 다운받은 파일위치에서  java -jar fakeSMTP-2.0.jar 명령어로 실행시키면 GUI 화면이 나온다.

스프링 부트에서 JavaMailSender와 간단한 설정을 통해 메일 전송 여부를 테스트 할 수 있다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// application.properties
spring.mail.host=localhost
spring.mail.port=2525
 
// service
/**
 * microservice
 *
 * @author wedul
 * @since 2018. 8. 25.
 **/
@Component
public class Mailer {
 
    @Autowired
    private JavaMailSender javaMailSender;
 
    public void sendMail(String email) {
        SimpleMailMessage mailMessage = new SimpleMailMessage();
        mailMessage.setTo(email);;
        mailMessage.setSubject("Registration");
        mailMessage.setText("Successfully Registered");
        javaMailSender.send(mailMessage);
    }
}
 
cs


http://nilhcem.com/FakeSMTP/download.html#

Maven Scope 정리

pom.xml에서 상용되는 scope에 대한 정리

compile
- 아무런 scope를 명시하지 않았을때 사용되는 기본값.
- 테스트 및 런타임에도 classpath에포함된다.

※provied
- JDK 또는 컨테이너에 의해서 runtime에 제공되는 모듈
- 이 scope는 이미 컨테이너가 해당 라이브러리를 제공하고 있을때 유용 그러므로 실제로 배포시에 제외대상
- 예를 들면 아래 servlet api의 경우 이미 웹서버에서 제공하고 있는 경우에 maven scope를 provied로 기재

1
2
3
4
5
6
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
    <scope>provided</scope>
</dependency>
cs

※runtime
- 런타임시 필요하지만 컴파일시에 필요하지 않는 경우에 사용
- 테스트와 런타임에는 사용 되지만 컴파일시에 사용 되지 않음
- 대표적 예로 JDBC Driver

1
2
3
4
5
6
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>6.0.6</version>
    <scope>runtime</scope>
</dependency>
cs


※test
테스트 코드 컴파일시 필요, 배포시 제외


참고
https://www.baeldung.com/maven-dependency-scopes


Scope를 Provided로 지정했을때 문제사례
인텔리제이에서 간단한 spring project를 만들고 실행시킬때 NoClassDefFoundError: javax/servlet/Filter 에러가 발생했다.

그 이유를 구글링해서 확인해보니 실행시 사용할 spring-boot-starter-tomcat의 스코프를 provided로 지정해서 에러가 발생했다. 스코프를 지워서 default인 compile로 사용하지 정상적으로 동작했다.
https://stackoverflow.com/questions/31494183/getting-a-caused-by-java-lang-noclassdeffounderror-javax-servlet-http-httpser


Maven 프로젝트를 Gradle로 변경해봤다.

멈저 PC에 cmd 창에서 gradle 명령어를 사용할 수 있도록 환경 변수를 편집해보자.
우선 시스템 환경변수에서 시스템 변수 편집에 들어가 Path를 수정하여 gradle\bin의 위치를 설정해준다. (gradle은 홈페이지에서 별도로 다운로드)



정상적으로 환경변수가 설정이 되면 cmd 창을 키고 gradle -v 명령어를 사용하면 다음과 같이 gradle 버전정보가 출력된다



그리고 maven 프로젝트 디렉토리에서 pom.xml이 존재하는 위치로 이동하여 다음 명령어를 사용하면 자동으로 build.gradle이 생성되면서 gradle 설정파일이 추가된다.

1
gradle init --type pom
cs


맥북을 사용하다보면 다 좋은데 키보드 연결해서 사용하려고 할때 일반 키보드와 단축키가 너무 달라서 불편한 경우가 굉장히 많다.

특히 개발할 때 홈버튼과 엔드 버튼을 자주 사용하는데 너무 불편했다. 이를 해결하기 위한 방법을 구글링해서 찾았고, 공유 및 정리하기 위해서 글을 올린다.

다른 글이나 동영상 보면 karabinder를 사용하라고 하는데 나는 아무리 해도 적용이 안됐다... 이 글을 보고 나와 같은 문제를 격는 사람들이 문제를 해결 했으면 좋겠다.

1. 먼저 터미널을 실행 시키고 다음 경로로 이동한다.

$ cd ~/Library
$ mkdir KeyBindings
$ cd KeyBindings
$ vi DefaultKeyBinding.dict

 

2. 그리고 vi 편집기로 실행시킨 텍스트에 아래 내용을 입력해주고 Esc를 누른 후 :q를 눌러 저장한다.

{
/* Remap Home / End keys to be correct */
"\UF729" = "moveToBeginningOfLine:"; /* Home */
"\UF72B" = "moveToEndOfLine:"; /* End */
"$\UF729" = "moveToBeginningOfLineAndModifySelection:"; /* Shift + Home */
"$\UF72B" = "moveToEndOfLineAndModifySelection:"; /* Shift + End */
"^\UF729" = "moveToBeginningOfDocument:"; /* Ctrl + Home */
"^\UF72B" = "moveToEndOfDocument:"; /* Ctrl + End */
"$^\UF729" = "moveToBeginningOfDocumentAndModifySelection:"; /* Shift + Ctrl + Home */
"$^\UF72B" = "moveToEndOfDocumentAndModifySelection:"; /* Shift + Ctrl + End */
}

 

3. 그리고 재부팅을 하면 놀랍게도 홈버튼과 엔드 버튼이 정상 동작한다. 너무 좋다.

  1. 2018.07.20 16:37

    비밀댓글입니다

  2. 2018.12.08 23:21

    비밀댓글입니다

    • Favicon of https://wedul.site BlogIcon 위들 wedul 2018.12.08 23:59 신고

      안녕하세요 저도 구글링 해서 찾은 정보라 자세히는 모르는데 저 설정값이 이미 적용이 되었기에 지웠다고 돌아오지는 않을거 같아요.

      페러럴즈에 키를 바꿔주는 옵션이 있는데 홈/엔드 키를 눌렀을때 동작하는 부분을 바꿔보시는건 어떨까 생각이 듭니다.

      저도 페러럴즈에서 안되는 부분은 잘 몰라 죄송합니다 ㅠㅠ 도움이 못되서

+ Recent posts