mj@home:~$

  • JAVA7 try-resources 구문 활용.

    try-resources 자바7에 추가된 리소스 객체 처리 방법 예외 발생 여부와 상관럾이 정리해줘야했던 리소스 객체의 close()를 호출해준다. JAVA 6까지의 사용했던 코드 try { FileWriter fileWriter = new FileWriter(); ... } catch (Exception e) { e.printStackTrace(); } finally { if (fileWriter != null) { fileWriter.close(); } } try-resources 구문 사용 try (...

  • Object List를 Ajax로 보내는 방법

    javasciprt ajax의 data를 JSON.stringify()함수를 사용하여 json 형태로 만들어 보낸다. contentType은 “application/json;charset=UTF-8”로 설정한다. $.ajax({ url : API_SERVER + "/addCSVShoes", type : "POST", contentType: "application/json; charset=UTF-8", data : JSON.stringify(shoesList), crossDomain: true, beforeSend: function(xhr) { xhr.setRequestHeader("Token", TOKEN); }, success : function(data) { if(data.toString() === "true") { alert("신발 등록을 완료하였습니다."); window.opener.location.reload(); window.close(); } else...

  • Swift3 입문

    ?와 !의 차이 ? optional-type nil이 될 수 있는 데이터 형태. nil: 어떤 타입이든 데이터가 없으면 nil이다. non-optional 데이터는 nil이 될 수 없기 때문에 무조건 선언시 초기화가 필요하다. ! forced-unwrapping-operator Optional-type에 값이 있음을 명시적으로 알려주는 표시 DownCasting as? 조건부 다운 케스팅 결과값은 Optional-type 원하는 형태로 케스팅이 불가능 할 경우 nil을...

  • Http Header

    Http Header http 통신을 할때, body의 데이터를 담는것보단 상대적으로 안전한 방법 데이터를 요청하는 쪽과 받는 쪽의 헤더를 맞춰줘야한다. Sample Code Javascript(JQuery) - 보내는 쪽 $.ajax({ url : , type : "POST", dataType : "json", data : , crossDomain: true, beforeSend: function(xhr) { xhr.setRequestHeader("Token", TOKEN); }, success : function(data) { },...

  • Spring Security Tips

    Authentication SecurityContextHolder.getContext().getAuthentication();로 로그인 정보를 얻을 수 있다. xml 상에서 <http pattern="" security="none" />으로 되어 있는 페이지에선 authentication을 불러올 수 없다.(null을 가져온다.) security="none"으로 되어 있으면 <intercept-url pattern="" access="" />도 동작하지 않는다. AuthenticationProvider 직접 정한 사용자 정보를 return하고 싶을 때는 Authentication을 상속받은 VO를 만들고 이를 return해 주면된다. package iot.smartshoes.lbs.webapp.dto; import java.util.Collection; import...

  • ResponseEntity

    ResponseEntity API Server를 구축할 때 response header와 body를 만들어서 보낼 수 있는 Object 사용법 public class CommonController { @Autowired @Qualifier(AdminServiceImpl.BEAN_QUALIFIER) private AdminService adminService; protected ResponseEntity<Object> createResponseEntity(String token, Object body) { if (adminService.checkValidToken(token)) { return new ResponseEntity<Object>(body, HttpStatus.OK); } else { return new ResponseEntity<Object>(HttpStatus.UNAUTHORIZED); } } } 위는 실제 사용했던 프로젝트의...

  • SHA 암호화

    hash 암호화 hash 암호화는 암호화만 가능하고 복호화는 불가능 데이터를 비교 할때는 암호화된 내용을 복호화하는 것이 아니라 둘다 암호화하여 비교해야한다. SHA Secure Hash Algorithm SHA-0, SHA-1, SHA256, SHA512 등이 있다. 위키 JAVA 예제 public static String encrypt(String target) { try { MessageDigest md = MessageDigest.getInstance("SHA-512"); md.update(target.getBytes()); byte byteData[] = md.digest(); //...

  • install shield로 다른 프로그램 설치

    프로젝트를 진행하면서 프로젝트에 필요한 파일들을 한번에 설치할 수 있는 설치 파일을 만들어 달라는 요청이 있었다. 이를 위해 필요한 실행파일들을 가지고 있고 이를 직접 실행하기 위해 새로운 실행파일을 만들었다. 프로젝트 생성 install shield를 실행하고 새로운 프로젝트를 만든다. 기본적으로 Basic MSI Project를 만들어서 실행파일을 만들지만, InstallScript를 쉽게 컨트롤하기 위해서 InstallScript Project로 만든다....

  • Swift3에서 googlemap 사용

    프로젝트에 googlemap 사용 준비 우선 swift 프로젝트를 생성하고 여기에 cocoapods을 사용하여 googlemap을 이용할 수 있게 만들어야한다. cocoapods이 mac에 안깔려있을 경우 설치를 한다. $ sudo gem install cocoapods swift 프로젝트 폴더에 Podfile이라는 파일을 만들어주고 다음과 같이 설정한다. <프로젝트 이름>에는 생성한 프로젝트의 이름을 넣어준다. source 'https://github.com/CocoaPods/Specs.git' platform :ios, '10.3' target "<프로젝트 이름>"...

  • Android에서 googlemap 사용

    AndroidManifest.xml 할당 받은 API Key를 가지고 사용하기 위한 초기 설정을 진행한다. <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="io.github.mj_youn.testapplication"> <!-- 인터넷 사용과 위치 정보 사용을 위한 permission 추가 --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity" android:screenOrientation="portrait" > <intent-filter> <action android:name="android.intent.action.MAIN"...