목록개발 (24)
개발자 되어버리기
사내에서 문자 서비스를 구축해야해서 네이버 nens를 다루게 되었는데 제가 미숙한 탓에 헤더 세팅하는데 어려움이 있었습니다. (혼자 핑계로 네이버 API 헤더 세팅 어렵다고.. 꿍시렁) 부디 이 글 보시고 헤더 세팅하시는데 어려움을 덜어내셨으면 좋겠습니다. 저는 막상 저 예제만 보고는 잘 모르겠더라고요... 결론은 헤더의 내용을 암호화하여 다시 헤더에 넣어라! 이런 얘기더랍니다... 소스코드 부터 확인해보겠습니다. public String makeSignature(Long time) throws UnsupportedEncodingException, InvalidKeyException, NoSuchAlgorithmException { String space = " ";// one space String n..
실제 서버에서 인증서 발급받고 그 인증서를 SFTP로 가져오자니 너무 귀찮고 번거롭더라고요.(로컬이니 최초 한번만 하면 되긴 하지만) 그래도 알아두면 좋은 지식인듯 하여 포스팅해두고자 합니다. 윈도우 WSL2 환경이나 아니면 인텔리제이 스프링부트 프로젝트 안에서 쓰셔도 무방합니다. keytool -genkey -alias bns-ssl -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650 이후에 이거저거 입력하라고 나오는데 초기에 패스워드만 알맞게 입력하시면 나머지는 대충 하셔도 문제 없습니다. server: ssl: enabled: true key-store: keystore.p12 key-store-passw..
과거에는 거의 모든것이 세션기반이었기에 서버에 부담이 많이 갔었고 때문에 서버가 자주 장애를 일으키곤 했습니다. 하지만 요즘 추세는 세션기반보다는 JWT로 서버에 부담이 덜 가는 방식을 많이 사용하고 있습니다. RSA 키교환 방식으로 알고리즘을 RS256 으로 적용해보겠습니다. -- RS, HS 관련 혼동되는 것이 있어 추후에 수정하도록 하겠습니다. dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jdbc' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:sp..
백엔드쪽에서 RSET API 개발하고 나면 프론트엔드와 협업을 위해 Parameter, Header, Body 등에 대한 설명을 편하게 웹문서화 시켜주는 라이브러리입니다. SpringBoot 2.2.7 버전이며 Gradle 기준 입니다. // api 문서화 라이브러리 swagger 추가 compile 'io.springfox:springfox-swagger2:2.9.2' compile 'io.springfox:springfox-swagger-ui:2.9.2' ┖ 우선 swagger 라이브러리에 대한 의존성을 gradle에 추가해줍니다. import com.google.common.collect.Lists; import org.springframework.context.annotation.Bean; imp..
import org.springframework.beans.factory.config.YamlPropertiesFactoryBean; import org.springframework.core.env.PropertiesPropertySource; import org.springframework.core.env.PropertySource; import org.springframework.core.io.support.EncodedResource; import org.springframework.core.io.support.PropertySourceFactory; import org.springframework.lang.Nullable; import java.io.FileNotFoundException; imp..
https://lemontia.tistory.com/912 [side impact] 블로그 보고 참고 설치까지는 무난하게 되었으나 환경을 옮기고서 빌드를 하면 에러가 발생. 우선 Node.js 운영체제에 맞게 잘 설치 한 다음에 https://nodejs.org/ko/download/ 다운로드 | Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org npm 캐시 초기화 명령어 npm cache clean --force npm 리액트 앱 설치 명령어 npm install -g create-react-app npm install bootstrap react-bootstrap --savq npm in..
서버에서 로그인기능을 구현하면 사용하는 서버가 SSL을 사용 않는다면 암호화기능을 구현하는 것이 좋습니다. 만약 SSL이 적용되어 있는 서버가 아니라면 전송되는 패킷에 사용자의 아이디와 패스워드가 고스란히 노출될 가능성이 있습니다. 그렇기에 SSL을 쓰지 않는다면 클라이언트 혹은 서버에서 암호화 기능을 구현해야 합니다. 이번 포스팅에서는 AES256-CBC를 이용하여 암호화를 진행하고 푸는 것을 쓰고자 합니다. 깃허브에 업로드 되어있습니다! https://github.com/Koobonik/AES256-CBC 앱이 완성되고 예제를 실행한 화면입니다. 소스코드 입니다. import UIKit class ViewController: UIViewController { @IBOutlet weak var decr..
저희가 테스트를 할때 변수를 선언하고 사용합니다.하지만 이런 변수들은 프로그램이 종료되면 삭제가 됩니다. 앱에서 자체적으로 db처럼 쓸 수 있는 UserDefault 라는 기능이 있습니다. 예제 소스코드 입니다. import UIKit class ViewController: UIViewController { @IBOutlet weak var dbLabel: UILabel! @IBAction func saveDB(_ sender: UIButton) { // db 저장 이라는 내용을 저장합니다. UserDefaults.standard.set("db저장", forKey: "db") } override func viewDidLoad() { super.viewDidLoad() if UserDefaults.stan..