function GetServerTime (param, formula) {
/* All HTTP date/time stamps MUST be represented in Greenwich Mean Time (GMT), without exception
*
* This function returns a Date or String type value
*
* var time = GetServerTime(); // [date] Wed Oct 11 2017 09:48:52 GMT+0900 (대한민국 표준시)
var time = GetServerTime(""); // "2017-10-11" , can be any string or variable except as provided below
var time = GetServerTime("day", -1); // "2017-10-10"
var time = GetServerTime("week", -1); // "2017-10-04"
var time = GetServerTime("month", 1); // "2017-11-11"
var time = GetServerTime("year", 1); // "2018-11-11"
*/
var xmlHttp;
if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest(); // upper IE7, Chrome, Firefox
xmlHttp.open('HEAD',window.location.href.toString(),false);
xmlHttp.setRequestHeader("Content-Type", "text/html");
xmlHttp.send('');

//return xmlHttp.getResponseHeader("Date");

}else if (window.ActiveXObject) {
//Old versions of IE supported the ability to use ActiveX controls inside the browser.

xmlHttp = new ActiveXObject('Msxml2.XMLHTTP');
xmlHttp.open('HEAD',window.location.href.toString(),false);
xmlHttp.setRequestHeader("Content-Type", "text/html");
xmlHttp.send('');
//return xmlHttp.getResponseHeader("Date");
}
//return xmlHttp.getResponseHeader("Date");
var serverTime = xmlHttp.getResponseHeader("Date");

if(param!=null){
var ymd = new Date(serverTime);
param = param.toLowerCase().trim();

if(formula !=null){

if(!typeof formula=="number") {
console.log("변수 formula는 number타입이어야 합니다.");
}
else if(param=="day"){
ymd.setDate(ymd.getDate()+formula);
}
else if(param=="week"){
ymd.setDate(ymd.getDate()+(7*formula));
}
else if(param=="month"){
ymd.setMonth(ymd.getMonth()+formula);
}
else if(param=="year"){
ymd.setFullYear(ymd.getFullYear()+formula);
}
}
var month = '' + (ymd.getMonth() + 1),
day = '' + ymd.getDate(),
year = ymd.getFullYear();

if (month.length < 2) month = '0' + month;
if (day.length < 2) day = '0' + day;

return [year, month, day].join('-');
}

else{
return new Date(serverTime);
}
}

안녕하세요~ 바나나입니다!!

아마존에 저장되어 있는 값들을 로컬DB로 옮기는 법을 소개합니다~

 

우선 오라클에 사용자를 하나 생성합니다.

 

create user local_typeof identified by "typeoftypeof"
default tablespace users;

 

-- 권한 1
grant EXEMPT IDENTITY POLICY
    , GRANT ANY OBJECT PRIVILEGE
    , EXEMPT ACCESS POLICY
    , DROP ANY DIRECTORY
    , CHANGE NOTIFICATION
    , FLASHBACK ANY TABLE
    , ALTER PUBLIC DATABASE LINK
    , ALTER DATABASE LINK
    , RESTRICTED SESSION
  --, EXEMPT REDACTION POLICY
    , SELECT ANY TABLE
    , UNLIMITED TABLESPACE
to local_typeof;

 

-- 권한 2
grant AQ_ADMINISTRATOR_ROLE
    , AQ_USER_ROLE
    , CONNECT
    , CTXAPP
    , DBA
    , EXECUTE_CATALOG_ROLE
  --, RDS_MASTER_ROLE
    , RECOVERY_CATALOG_OWNER
    , RESOURCE
    , SELECT_CATALOG_ROLE
to local_typeof;

 

 

저는 local_typeof 를 사용하여 사용자를 하나 생성하였습니다.

 

 

그다음 도구 창에서 데이터베이스 복사를 들어갑니다.

 

 

데이터베이스 복사에 들어가면 총 6단계로 되어있습니다.

첫번째, 소스접속은 내가 받아오고싶은 데이터베이스(아마존DB)를 선택하고

          대상접속은 방금전 만들어 놓은 로컬 사용자로 선택합니다.

 

 

밑에는 별도로 선택할 것 없이 다음 버튼을 누릅니다!

 

 

그다음 2단계는 자동으로 전체 선택이 되어 있으므로 바로 다음 버튼을 눌러도 됩니다!

 

 

 

3단계! 조회버튼이 보일텐데요 조회버튼을 누르고 잠시기다리면 아마존DB에 저장되어있던 내용들이 쭉 나올 것입니다.

그리고 >> 버튼을 눌러 오른쪽으로 넘겨주고 다음버튼을 누릅니다.

 

 

 

4단계, 3단계와 같이 조회버튼을 눌러 값이 나오면 아래로 내리는 버튼을 눌러 값을 옮긴 후 다음버튼!

 

 

 

5단계에서는 별도로 해줄 것없이 완료를 해주면 오라클창에서 아래와 같이 진행되는 것을 볼 수 있습니다.

 

 

진행사항이 마무리가 되고 로컬사용자로 접속한 상태로 select * from tab; 을 하게 되면 아래와 같이 테이블이 옮겨진 것을 알 수 있습니다.

 

 

 

성공적으로 옮기기 완료!

 

지금까지 아마존DB를 오라클 로컬DB로 옮기는 방법에 대해 알아보았습니다~

감사합니다!ㅎㅎ #바나나

 

 

 

 


마이바티스(myBatis)를 통한 쿼리문 작성시 


데이터를 insert 한 후에 그 인서트 된 record의 특정 칼럼 값을 가져오고 싶을 때가 있습니다.


회원번호 컬럼과 같은 시퀀스 값이나, PK 속성을 갖는 값을 통해 바로 다른 작업을 하고 싶을 때 유용하게 쓸 수 있는 코드가 있습니다.


마이바티스의 셀렉트키(selectKey) 옵션을 사용하면 쿼리 짜는 시간도 노력도 코딩 효율도 좋아지겠죠?





<pre> <code class="xml">

<insert id="insertend" parametertype="java.util.HashMap">



       <selectkey keyproperty="sabun" resulttype="String" order="AFTER"> 

SELECT 

시퀀스명.CURRVAL // 해당 시퀀스의 현재 값을 insert 한 후에 가져옵니다. (order="AFTER") 옵션 

FROM

DUAL

         </selectkey>

    

    //"insert 쿼리문이 위치하는 곳"

    

 </insert>

</code>

</pre>



안녕하세요, 욘듀입니다!


제목에서 알아채셨듯이, 
신입 자바 개발자로 일을 시작하게되었습니다. 
바로 오늘부터요!


저는 교육을 받으면서, 이력서와 포트폴리오를 준비하면서,

지원하는 그 순간에도 항상 신입사원이 되면 무엇부터 하는지 궁금했었습니다.


물론 모든 회사가 같다고 할 수는 없겠지만

그래도 어느 정도는 다들 비슷하지 않을까-

그리고 또 누군가는 나와 같은 궁금증을 갖지 않을까 하는 생각에

저의 첫 퇴근길에 이 포스트를 작성해보려고 합니다 :^)


아침 일찍 졸린 몸을 이끌고 무사 출근을 하니

2주에 한 번씩하는 주간회의가 기다리고 있었어요-


주간회의는 영업팀과 개발팀, 컨설팅 팀이 모여서

간단한 진행상황 공유하는 것이였어요 ㅎㅎ


포함한 3명의 신입은 열심히 듣느라 바빴지만

정말이지 모르는 용어 투성이였네요 @_@


약 30분간의 주간회의가 끝나고 바로 이어진 것은

개발팀의 코드리뷰 시간이였습니다. 


코드리뷰- 코드리뷰- 듣기만 했지, 직접 보는거는 처음이었어요!

오늘은 대리님 한 분이 코드리뷰를 하셨는데

미리 팀원들에게 리뷰할 코드를 이메일로 보내고

작성한 코드에 대해서 다같이 이야기 하는 시간이였어요. 


서로 자유롭게 이야기하면서

설명하고 이해하며 서로에게 선생님이 되어준다는 느낌을 받았습니다. 

때로는 내가 잘 못보는 것을 옆에서 더 잘 보기도 하기 때문인 것 같아요-


코드리뷰도 약 30분간 진행하고나서는

멘토분들(선임)께서 회사의 다른 팀들께 저희 셋을 소개해주셔서

열심히 인사드렸었지요 ㅎ_ㅎ


그 이후의 일정은 개발 환경 구축이였습니다!

회사에서 사용하는 프로그램인 오라클, mssql, 이클립스, svn, toad 등을 설치했구요

그에 맞게 환경변수도 추가 및 업데이트 해주었습니다. 


별 거 없죠?

다 하고나니 퇴근까지 2시간 가량 남아서

일일 업무 일지도 작성하고 받은 코드들도 조금 살펴보다

칼퇴를 했습니다!!


아마 출근 첫 날의 패기가 아닐런지요 ㅎㅎ

'hello' 카테고리의 다른 글

#06. 안녕하세요~!  (0) 2017.07.24
#05. Hello todak  (1) 2017.06.11
#04. 안녕하세여  (0) 2017.06.11
#03. 안녕하세요 -♪  (0) 2017.06.11
#02. 안녕하세요  (0) 2017.06.11

안녕하세요, 오랜만에 다시 인사드리는 욘듀입니다!


이번 포스트에서는 아이엠포트를 사용한 결제 구현을 진행해보려고 합니다 'v')

실제로 결제를 해볼 수 있는 '테스트' 버젼을 체험해볼 예정입니다!

 

 

아임포트(I'mport;)는 개발자를 위한 무료 결제 연동 서비스인데요

신용카드, 계좌이체, 휴대폰 소액결제, 카카오 페이 등 다양한 결제 서비스를 지원합니다.

최근에는 네이버페이(N Pay)도 지원하기 시작했다고 하네요 '-')!

 

 

그럼 본격적으로 사용법을 알아보도록 하겠습니다.

 

 

먼저 아임포트 홈페이지에 접속합니다

http://www.iamport.kr/

 

 

오른쪽 상단의 연동시작하기를 클릭합니다.

 

 

 

이러한 새 창이 뜰텐데요,

오른쪽 상단의 로그인을 클릭해주세요.

 

 

 

회원가입을 진행해주세요.

간단하게 이메일과 비밀번호를 설정하여 가입하실 수 있습니다!

 

 

로그인을 완료하신 후 시스템설정 메뉴를 클릭하면 다음과 같은 화면을 보실 수 있는데요,

 

여기서 중요한 것은 '가맹점 식별코드' 입니다.

가맹점 식별 코드는 아임포트에서 제공하는 모듈을 사용할 때 가맹점을 구분하기 위해,

관리자 페이지 가입과 동시에 자동 발급되는 고유한 문자입니다.

 

 

 

PG설정(인증방식결제) 를 클릭하시면

테스트해볼 PG사를 선택할 수 있습니다.

물론, 테스트모드를 ON으로 설정해두어야겠죠 :^)

 

 

 

이제 본격적으로 코드 작성을 시작해봅니다.

 

아임포트를 사용하기 위해,

먼저 결제가 필요한 곳에 아임포트의 라이브러리를 추가합니다.

아임포트는 jQuery 기반으로 작동하기 때문에 jQuery 1.0 이상이 설치되어있어야 합니다.

 

<script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.min.js" ></script>
<script type="text/javascript" src="https://service.iamport.kr/js/iamport.payment-1.1.2.js"></script>

 

 

다음은,  자바 스크립트 안에 들어갈 코드입니다.


var IMP = window.IMP; // 생략가능
   IMP.init('imp50043848');  // 가맹점 식별 코드

   IMP.request_pay({
      pg : 'kakao', // 결제방식
       pay_method : 'card',	// 결제 수단
       merchant_uid : 'merchant_' + new Date().getTime(),
      name : '주문명: 결제 테스트',	// order 테이블에 들어갈 주문명 혹은 주문 번호
       amount : '100',	// 결제 금액
       buyer_email : '',	// 구매자 email
      buyer_name :  '',	// 구매자 이름
       buyer_tel :  '',	// 구매자 전화번호
       buyer_addr :  '',	// 구매자 주소
       buyer_postcode :  '',	// 구매자 우편번호
       m_redirect_url : '/khx/payEnd.action'	// 결제 완료 후 보낼 컨트롤러의 메소드명
   }, function(rsp) {
	if ( rsp.success ) { // 성공시
		var msg = '결제가 완료되었습니다.';
		msg += '고유ID : ' + rsp.imp_uid;
		msg += '상점 거래ID : ' + rsp.merchant_uid;
		msg += '결제 금액 : ' + rsp.paid_amount;
		msg += '카드 승인번호 : ' + rsp.apply_num;
	} else { // 실패시
		var msg = '결제에 실패하였습니다.';
		msg += '에러내용 : ' + rsp.error_msg;
	}
});

 

IMP.request_pay() 파라미터 상세보기

 

 

 

자 여기까지 잘 따라오셨다면 모든 준비가 끝났습니다!

저는 제가 만들었던 프로젝트에 해당 결제 테스트 모듈을 구현해보았었는데요,

 

결제 부분으로 넘어가면 위에 설정해둔 것처럼

카카오 페이로 진행되는 것을 볼 수 있습니다.

 

실제로 해당 결제 기능을 사용하고자 하신다면

아임포트에 이용요금을 지불하여야하지만

 

최초가입비와 연관리비가 무료인

네이버페이, KG모빌리언스, 다날 도 있으니 참고하여 사용해주시면 될 것 같습니다.

제휴프로모션 살펴보기

 

 

 

 

 

여기까지 욘듀였습니다.

궁금하신 사항은 댓글로 남겨주세요.

언제든지 환영입니다♥

안녕하세요~
신입으로 들어오게된 토닥앤코의 바나나입니다!!ㅎㅎ

지난 7월 22일부터 참여하게됐는데 인사가 늦었습니다ㅠㅠ
저를 이렇게 초대해주셔서 너무너무 감사드립니다~~~ 늦게 참여하게 된 만큼 더 노력하는 바나나가 되겠습니다!!

코딩으로도 "토닥토닥"
언니/오빠에게도 "토닥토닥"
동생한테도 "토닥토닥"
서로에게도 "토닥토닥"

하는 즉, 지금의 모습처럼 모두에게 토닥토닥해줄 수 있는 모임이 되었으면 좋겠어요!! 왜냐하면 저는 여러분을 만나 매번 감사하고 항상 행복하기 때문입니다()

저도 앞으로도 쭈~욱 열심히 토닥토닥 하는 바나나가 되겠습니다~~~~~!!

감사합니다♥

- 신입 바나나

'hello' 카테고리의 다른 글

#07. 신입 개발자 : 첫 출근날엔 무엇을 하나요?  (0) 2017.08.07
#05. Hello todak  (1) 2017.06.11
#04. 안녕하세여  (0) 2017.06.11
#03. 안녕하세요 -♪  (0) 2017.06.11
#02. 안녕하세요  (0) 2017.06.11


소스코드를 블로그에 그냥 올리면 구분이 어렵습니다.



if UIImagePikcerController.isSourceTypeAvailable(.Camera) {
imagePicker.sourceType = .Camera
} else {
}


좋은 개발자가 되려는 사람들이 본인도 못알아 볼 정도로 불편함을 유발하는 방식을 이용하면 안되지 않을까요...?


친절한 블로거 여러분 덕분에 highlight.js 를 사용하는 방법을 공부했습니다.


js파일과 css 파일을 tistory에 업로드 합니다.

(자세한 내용은 추후에 적겠습니다.)



그럼 지금부터 적용해 보겠습니다. 아래의 코드를 html 편집기 모드에서 원하는 위치에 작성합니다.



<pre> <code class="swift">

소스코드가 들어갈 위치 

</code>

</pre>



토닥토닥

if UIImagePikcerController.isSourceTypeAvailable(.Camera) { // 카메라 사용 가능 하면 소스타입을 세팅한다. imagePicker.sourceType = .Camera } else { // 카메라 사용 불가능 } if UIImagePikcerController.isCameraDeviceAvailable(.Front) { // 전면 카메라 사용 가능 } else { // 전면 카메라 사용 불가능 } if UIImagePikcerController.isCameraDeviceAvailable(.Rear) { // 후면 카메라 사용 가능 } else { // 후면 카메라 사용 불가능 }


자세한 참고문헌 링크와 사용법은 추후에 적겠습니다.


일단은 성공한걸로 만족~


가벼운 안경 착용 시뮬레이트 어플리케이션 ddunglass는 아래와 같은 핵심 기능을 구현하고자 합니다.


1. 카메라 

  

사용자는 안경을 착용해볼 얼굴 사진을 카메라 롤에서 선택하거나, 카메라로 직접 찍어 선택할 수 있습니다.


2. 사진 크기 조정 및 크롭


사용자는 선택한 얼굴 사진을 확대, 축소 하거나 사진을 자를 수 있습니다.


3. 안경 선택


사용자는 어플리케이션 ddunglass에서 직접 제공하는 안경 사진을 선택하거나 자신이 직접 다운 받은 안경 사진을 카메라롤에서 선택할 수 있습니다.



4. 안경의 크기 조정 및 위치 이동


사용자는 안경의 위치를 자신의 얼굴 사진과 매칭 되도록 위치를 조정하고 확대 축소할 수 있습니다.



5. 사진 필터링


사용자는 가상으로 안경을 착용한 사진에 효과를 줄 수 있습니다.



6. 저장 및 공유


사용자는 위의 단계를 마친 결과물을 자신의 카메라롤에 저장하거나 바로 공유할 수 있습니다. 


   


* : 우리의 실력으로 개발이 가능하다면 OpenCV(Open Source Computer Vision, 실시간 이미지 프로세싱에 중점을 둔 라이브러리)를 활용해 사용자가 원하는 사진의 배경을 없애주는 기능을 추가해 보다 많은 안경 사진을 활용할 수 있도록 합니다.

'dev > ddunglass' 카테고리의 다른 글

0. ddunglass : coming soon  (0) 2017.06.11

안녕하세요.

 

팀에서 간식 담당을 맡고 있는 초이까까(감자)라 합니다.

 

모임을 꾸린지 약 한 달이 되서야 자기 소개를 하게 되네요.

 

실력이 부족해서 스터디를 만들어 함께 공부를 하고자 만든 모임인데, 어쩌다 보니 마음이 맞는 사람 다섯 명이 모이게 되었습니다.

 

빅픽쳐, 모닝케어, 욘듀, 파순이 그리고 저

 

모임 때마다 '오늘 뭐 하지' 란 공부 이야기 보단 '오늘 뭐 먹지', '뭐 마실까' 이야기를 더 자주 하는 느낌이 드는 술모임 같지만

 

매 모임이 지날수록 프로젝트가 조금씩 진행되어 나가는 모습에 그래도 스터디 하는구나 라는 느낌이 뿌듯하네요.

 

 

마지막까지 아무 일 없이 힘내서 프로젝트를 잘 마무리 합시다!!!!

 

화이팅!!

 

 

'hello' 카테고리의 다른 글

#07. 신입 개발자 : 첫 출근날엔 무엇을 하나요?  (0) 2017.08.07
#06. 안녕하세요~!  (0) 2017.07.24
#04. 안녕하세여  (0) 2017.06.11
#03. 안녕하세요 -♪  (0) 2017.06.11
#02. 안녕하세요  (0) 2017.06.11


 todak & co 의 첫 기획 회의에서 결정이 된 것은


1. web이외의 platform에서의 개발

2. 자체 DB에 담을 내용이 방대하지 않을 것

3. 저작권 문제에 해당되지 않을 것

4. front-end부터 back-end까지의 개발 전반에 팀원 모두가 참여해 볼 것

5. 각자의 공부 및 개발 내용을 팀내에서 원활히 공유되도록 study-note를 만들 것

6. 블로그를 만들고 팀블로그를 포트폴리오화 시킬 수 있도록 할 것


기타 등등 . 


이었습니다.



그 결과 2차회의에서


[ 코딩교육용 안드로이드 어플리케이션 ] 개발


로 아이템이 선정되었습니다만! 



디자인을 책임져줄 팀원의 부재 속에

모두가 디자인에 할애하는 시간이 전체 개발 시간의 큰 비중을 차지하게 되는 것을 우려하여


3차 회의와 첫 개발 시간

조금 더 간단한 어플리케이션을 우선적으로 개발하는 것으로 방향을 선회하기로 결정했습니다.


팀원 모두의 web개발 경험을 토대로 

다뤄본적이 있는 아이템의 application화.


소개드리는 우리의 첫번째 프로젝트 

ddunglass.



유저가 앱 상에서 안경 착용을 시뮬레이션할 수 있도록 돕는 것이 프로젝트의 목표라고 할 수 있습니다.

어떻게 완성될 지 기대해주세요.?!


ps : 아래의 내용은 본인 인사하라 했더니 잘못알아듣고 어플리케이션 소개를 

마치 카피라이터처럼 거창하게 작성한 팀 막내의 소개글입니다. (카피에 쓰인 만큼 개발이 잘되면 상받을듯)


Making the world

a better place to see


당신의 세상을

더 잘보이게 해줄 안경!


Fit for you


내게 꼭 맞는 

안경!


Alternative Fit ensures zero slipping down the nose


자고 일어나도

고개를 숙였다 들어도

흔들림이 없는 안경!






'dev > ddunglass' 카테고리의 다른 글

ddunglass 핵심 구현 기능 정리. (미완성)  (0) 2017.06.18

+ Recent posts