반응형

도로명주소 API - 팝업형 주소 API 적용


주소 api를 사용하려면 아래 링크에서 샘플 및 정보를 받을수 있습니다.

https://www.juso.go.kr/addrlink/main.do

접속해서 api키를 발급받아야 사용이 가능하니 api키를 발급 받으시길 바랍니다.

기본적인 정보만 입력하면 쉽게 발급받으실수 있습니다.

sample과 api활용 가이드도 있으니 참고하시면 좋을것 같습니다.

저는 팝업형 주소검색을 사용했고 제가 적용한것을 작성하겠습니다.



JAVA - Controller


@RequestMapping("/jusoPopup")

    public String jusoPopup(@ModelAttribute("paramVO") ParamVO paramVO) throws Exception {

        return " 경로/jusoPopup";

    }


아래 jusoPopup 경로에 맡게 리턴을 설정해주시고 리퀘스트 맵핑을 해줍니다.




조회할 페이지 - jsp


자바스크립트


function goPopup(){

// 주소검색을 수행할 팝업 페이지를 호출합니다.

// 호출된 페이지(jusopopup.jsp)에서 실제 주소검색URL(http://www.juso.go.kr/addrlink/addrLinkUrl.do)를 호출하게 됩니다.

var pop = window.open("/cnsgn/entpr/jusoPopup.do","pop","width=590,height=420, scrollbars=yes, resizable=yes"); 

// 모바일 웹인 경우, 호출된 페이지(jusopopup.jsp)에서 실제 주소검색URL(http://www.juso.go.kr/addrlink/addrMobileLinkUrl.do)를 호출하게 됩니다.

    //var pop = window.open("/popup/jusoPopup.jsp","pop","scrollbars=yes, resizable=yes"); 

}


function jusoCallBack(roadFullAddr,roadAddrPart1,addrDetail,roadAddrPart2,engAddr, jibunAddr, zipNo, admCd, rnMgtSn, bdMgtSn,detBdNmList,bdNm,bdKdcd,siNm,sggNm,emdNm,liNm,rn,udrtYn,buldMnnm,buldSlno,mtYn,lnbrMnnm,lnbrSlno,emdNo){

    // 팝업페이지에서 주소입력한 정보를 받아서, 현 페이지에 정보를 등록합니다.

document.form.roadAddrPart1.value = roadAddrPart1; // 도로명주소

document.form.addrDetail.value = addrDetail; // 상세주소

document.form.zipNo.value = zipNo; // 우편번호

self.close();

}


위와같이 작성후 html에 button을 만들어 goPopup() 스크립트를 호출해주면 됩니다.


josoCallBack에서 원하는 주소방식을 원하는 id값에 넣어주면됩니다. 

또는 제이쿼리를 이용해서 $("#id").val(파라메터); 형식으로 넣어줄수도 있습니다.

파라메터 정보는 아래 사진 첨부하겠습니다.

설명으로 부족하다면 각 파라메터를 console.log()에 넣어서 직접 확인하는 방법이 있습니다.

주소검색후 상세주소를 입력하고 확인을 누르면 각 form에있는 id값에 데이터를 넣어주고 self.close();로 팝업을 닫아줍니다.







jusoPopup.jsp


<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

<% 

//request.setCharacterEncoding("UTF-8");  //한글깨지면 주석제거

//request.setCharacterEncoding("EUC-KR");  //해당시스템의 인코딩타입이 EUC-KR일경우에

String inputYn = request.getParameter("inputYn"); 

String roadFullAddr = request.getParameter("roadFullAddr"); 

String roadAddrPart1 = request.getParameter("roadAddrPart1"); 

String roadAddrPart2 = request.getParameter("roadAddrPart2"); 

String engAddr = request.getParameter("engAddr"); 

String jibunAddr = request.getParameter("jibunAddr"); 

String zipNo = request.getParameter("zipNo"); 

String addrDetail = request.getParameter("addrDetail"); 

String admCd    = request.getParameter("admCd");

String rnMgtSn = request.getParameter("rnMgtSn");

String bdMgtSn  = request.getParameter("bdMgtSn");

String detBdNmList  = request.getParameter("detBdNmList");

/** 2017년 2월 추가제공 **/

String bdNm  = request.getParameter("bdNm");

String bdKdcd  = request.getParameter("bdKdcd");

String siNm  = request.getParameter("siNm");

String sggNm  = request.getParameter("sggNm");

String emdNm  = request.getParameter("emdNm");

String liNm  = request.getParameter("liNm");

String rn  = request.getParameter("rn");

String udrtYn  = request.getParameter("udrtYn");

String buldMnnm  = request.getParameter("buldMnnm");

String buldSlno  = request.getParameter("buldSlno");

String mtYn  = request.getParameter("mtYn");

String lnbrMnnm  = request.getParameter("lnbrMnnm");

String lnbrSlno  = request.getParameter("lnbrSlno");

/** 2017년 3월 추가제공 **/

String emdNo  = request.getParameter("emdNo");


%>

</head>

<script language="javascript">

// opener관련 오류가 발생하는 경우 아래 주석을 해지하고, 사용자의 도메인정보를 입력합니다. ("주소입력화면 소스"도 동일하게 적용시켜야 합니다.)

//document.domain = "abc.go.kr";


function init(){

var url = location.href;

var confmKey = "api키값";  // 위에서 발급받은 api키값을 넣어줍니다.

var resultType = "4"; // 도로명주소 검색결과 화면 출력내용, 1 : 도로명, 2 : 도로명+지번, 3 : 도로명+상세건물명, 4 : 도로명+지번+상세건물명

var inputYn= "<%=inputYn%>";

if(inputYn != "Y"){

document.form.confmKey.value = confmKey;

document.form.returnUrl.value = url;

document.form.resultType.value = resultType;

document.form.action="http://www.juso.go.kr/addrlink/addrLinkUrl.do"; //인터넷망

//document.form.action="http://www.juso.go.kr/addrlink/addrMobileLinkUrl.do"; //모바일 웹인 경우, 인터넷망

document.form.submit();

}else{

opener.jusoCallBack("<%=roadFullAddr%>","<%=roadAddrPart1%>","<%=addrDetail%>","<%=roadAddrPart2%>","<%=engAddr%>","<%=jibunAddr%>","<%=zipNo%>", "<%=admCd%>", "<%=rnMgtSn%>", "<%=bdMgtSn%>", "<%=detBdNmList%>", "<%=bdNm%>", "<%=bdKdcd%>", "<%=siNm%>", "<%=sggNm%>", "<%=emdNm%>", "<%=liNm%>", "<%=rn%>", "<%=udrtYn%>", "<%=buldMnnm%>", "<%=buldSlno%>", "<%=mtYn%>", "<%=lnbrMnnm%>", "<%=lnbrSlno%>", "<%=emdNo%>");

window.close();

}

}

</script>

<body onload="init();">

<form id="form" name="form" method="post">

<input type="hidden" id="confmKey" name="confmKey" value=""/>

<input type="hidden" id="returnUrl" name="returnUrl" value="<c:url value='/cnsgn/entpr/insertCnsgnEntprMngmeView.do'/>"/>

<input type="hidden" id="resultType" name="resultType" value=""/>

<!-- 해당시스템의 인코딩타입이 EUC-KR일경우에만 추가 START-->

<!-- 

<input type="hidden" id="encodingType" name="encodingType" value="EUC-KR"/>

-->

<!-- 해당시스템의 인코딩타입이 EUC-KR일경우에만 추가 END-->

</form>

</body>

</html>

반응형
반응형

JSP - 페이징 처리


ajax통신을 통해서 List와 List의 갯수를 가져와 페이징처리를 적용해봤습니다.

생각보다 게시물수와 리스트페이지수만 바꾸면 자동으로 되게 하려했으나 생각보다 어지러워서 되는대로 짜버렸습니다....

일단 게시물 5개에 리스트 5개띄우는거에서 사용가능하며 아래는 레이어 팝업으로 ajax통신을 통해 데이터를 가져와 띄우는 형식이라 

소스가 더러우실수도있으나 참고하시려면... 참고하시길 바랍니다. 



SQL

아래와같이 SELECT를 3번해서 가져오는게 오라클 대용량 처리라고합니다.


List 쿼리문

SELECT 

no, id, nm 

FROM (

SELECT 

no, id, nm, ROWNUM as rnum

FROM (

SELECT 

no, id, nm

FROM List테이블;

ORDER BY no

) WHERE ROWNUM <= #{lastIndex}

)WHERE rnum > #{firstIndex}


List 개수가져오는 쿼리문

SELECT COUNT(*) FROM List테이블




JSP-자바스크립트


function fn_List_popup(data,num) {

var id = data;

var page = num; //현재페이지

var countList = 5; // 페이지에 게시물 수 (고정)

var countPage = 5; // 리스트 페이지수 (고정)

var totalCount; // 총게시물갯수 = selectListTotCnt

var totalPage; // 생성될 전체 페이지 수

var startPage;

var endPage;

$.ajax({

    type:"POST",

    url:_ctx+"/usr/selectListTotCnt.json",

    data: {'id':id },

    success: function(data) {

    totalCount=data.resultTotCnt; // 총게시물 갯수 설정

    totalPage = Math.floor(totalCount / countList); // 게시물의 리스트갯수 계산

    if (totalCount % countList > 0) {

    totalPage++; // 나머지가 있으면 전체페이지수가 +1이 된다.

}

    var pageMath= Math.floor(page/5.0000001)+1;

    startPage = (pageMath-1)*5+1;//((page - 1) / 10) * 10 + 1; 

    endPage = totalPage;

    var totalPageMath = Math.floor(totalPage/5.0000001)+1;

   

    if(totalPage<6){

    $("#paging2").html("");

    for(var i=startPage; i<=totalPage; i++){

    $("#paging2").append("<a href='#' onclick='fn_List_popup

("+id+","+i+")'>&nbsp;"+i+"&nbsp;</a>");

    }

    } else if( totalPageMath == pageMath ){

    $("#paging2").html("");

    $("#paging2").append("<a href='#' onclick='fn_List_popup("+dprtmId+",1)'> << </a>");

    $("#paging2").append("<a href='#' onclick='fn_List_popup("+dprtmId+","+(startPage-5)+")'> &nbsp;<&nbsp; </a>");

    for(var i=startPage; i<=totalPage; i++){

    $("#paging2").append("<a href='#' onclick='fn_List_popup("+dprtmId+","+i+")'>&nbsp;"+i+"&nbsp;</a>");

    }

    } else if(totalPage > countPage){

    $("#paging2").html("");

    if(pageMath != 1){

    $("#paging2").append("<a href='#' onclick='fn_List_popup("+dprtmId+",1)'> << </a>");

    $("#paging2").append("<a href='#' onclick='fn_List_popup("+dprtmId+","+(pageMath-1)+")'> &nbsp;<&nbsp; </a>");

    }

    for(var i=startPage; i<=startPage+4; i++){

    $("#paging2").append("<a href='#' onclick='fn_List_popup("+dprtmId+","+i+")'>&nbsp;"+i+"&nbsp;</a>");

    }

    $("#paging2").append("<a href='#' onclick='fn_List_popup("+dprtmId+","+(startPage+5)+")'> &nbsp;>&nbsp; </a>");

    $("#paging2").append("<a href='#' onclick='fn_List_popup("+dprtmId+","+endPage+")'> >> </a>");

    }

   

    var firstIndex = countList*(page-1)+1;

    var lastIndex = page*countList;

   

    $(".List").html("");

    $(".popup").show(); //팝업오픈

    //데이터 가져오기

    $.ajax({

        type:"POST",

        url:_ctx+"/usr/selectList.json",

        data: {'dprtmId':dprtmId, 'firstIndex':firstIndex, 'lastIndex':lastIndex },

        success: function(data) {

        $.each(data.resultList,function(index,value){

        $(".popup .popupTable tbody").append('<tr class="List"><td>'+(firstIndex)+'</td><td>'+value.id+'</td><td class="bor_r_0">'+value.nm+'</td></tr>');

        firstIndex++;

        });

        }

    })

   

   

    }

})

}


JSP-HTML


<a href="#" class="grayBtn2" onclick="fn_List_popup('<c:out value="${result.id}"/>','1')">조회</a></td>


<!-- 팝업 -->

<div class="popup" style="display:none;">

    <h1 class="popupT">유저정보<span class="closeBtn"></span></h1>

    <div class="popupCon">

        <table class="popupTable">

            <caption class="blind"></caption>

            <colgroup>

                <col width="20%">

                <col width="40%">

                <col width="40%">

            </colgroup>

            

            <thead class="">

                <tr>

                    <th scope="col">NO</th>

                    <th scope="col">ID</th>

                    <th scope="col"  class="bor_r_0">이름</th>

                </tr>

            </thead>

            

        </table>

            <div id="paging2"></div>

   

    </div>

</div>

<!-- //팝업 -->




반응형

'IT > JSP' 카테고리의 다른 글

JSP - JSTL 데이터 포맷  (0) 2017.11.15
JSTL - c:forEach 리스트 합계구하기  (0) 2017.11.02
JSP - 아이디 중복 체크  (0) 2017.11.01
JSTL - c:forEach문, c:if문, c:choose문(else문)  (0) 2017.10.27
반응형

RDBMS (Relational DataBase Management System)


RDBMS는 관계형 데이터베이스를 관리하기위한 소프트웨어입니다.

테이블(Table based)기반의 DBMS로 데이터를 조건에 따라서 테이블의 행과 열로 나누어 관리하는 시스템입니다.

E-R(Entity Relationship)모델을 사용하며 RDBMS으로 MSSQL, Oracle, MySQL, MariaDB, CUBRID 등이 있습니다.



RDB (Relational DataBase)


RDB는 관계형 데이터베이스를 뜻하며 모든 데이터를 계층구조가 아닌 2차원의 단순한 표(관계)로 표현하는 형식의 데이터베이스입니다.

관계형 데이타 모델에 기초를 둔 데이타베이스로서 수학적 이론에 기반을 두고있습니다.



RDBMS의 기능


데이터베이스 언어

데이터베이스 언어는 DBMS에 대해 다양한 지시를 전달하기위한 언어입니다. 

개념적으로, 데이터정의언어(DDL), 데이터조작언어(DML), 데이터제어언어(DCL)의 구성되있습니다. 

DDL은 데이터베이스의 구조를 정의합니다. 

DML은 데이터베이스에 대한 검색 및 업데이트 등의 작업을 실시합니다. 

DCL은 데이터에 대한 액세스 제어를 실시합니다.

RDBMS에서는 관계모델을 기반으로 데이터베이스언어를 갖추고 있으며, RDBMS의 데이터조작언어는 관계모델의 관계대수와 관계논리에 근거합니다.

RDBMS로하는 시스템의 대부분은 데이터베이스 언어 SQL을 갖추고있습니다.


물리적 데이터 독립성

데이터베이스를 저장하는 저장 장치를 변경할 때, 그에 따라 RDBMS에 액세스하는 방법을 변경할 필요는 없습니다. 

RDBMS에 액세스하는 사용자나 응용프로그램 소프트웨어에 대한 RDBMS는 저장 장치의 변경을 은폐할 수있습니다.


논리적 데이터 독립성

RDBMS에서는 도출관계(뷰)에 따라 논리적 데이터 독립성을 지원합니다.

파생관계는 관계대수 또는 관계논리 식으로 이름을 붙인 것입니다. 파생 관계는 관계의 일종이며, 뷰라고도 불립니다. 

또한 도출 관계를 사용하면 복잡한 검색 및 업데이트 등의 데이터 조작을 단순화하여 설명 할 수있습니다.


데이터 무결성

데이터 무결성은 잘못된 데이터가 등록되는 것이나, 잘못된 데이터로 업데이트되는 것을 방지하는 것을 말합니다. 

RDBMS는 정의역, 데이터 형식, 고유 제한 조건, 참조 무결성 제약, CHECK 제약 조건, 트리거 등의 기능을 갖추고있습니다.


트랜잭션 처리

ACID 속성을 기반으로 트랜잭션 처리를 실시합니다. 

여러 사용자가 동시에 동일한 데이터를 참조, 갱신 한 경우에도 일관성있게 제대로 처리 합니다.


보안

대부분의 RDBMS는 보안 (안전)에 대해 임의의 액세스제어 또는 강제액세스제어 를 제공하고, 

일부 RDBMS는 데이터 암호화 기능도 제공합니다. 

많은 RDBMS에서는 임의의 액세스 제어를 채용하고있다 ( SQL 에서는 임의 액세스 제어만을 규정하고있다). 

SQL의 임의 액세스 제어에서는 GRANT 문을 사용하여 이용자 (인증 식별자)를 지정하여 

그 이용자가 액세스 할 수있는 개체 (관계 등) 및 액세스유형 (검색, 업데이트 등)을 정의합니다.

데이터 암호화 기능은 RDBMS를 우회 한 잘못된 데이터 액세스에 대한 대책으로 RDBMS에서 관리. 전송되는 데이터를 암호화합니다.


복구

트랜잭션 장애, 시스템 장애, 기억 매체 의 장애 복구를 실시합니다.


최적화

데이터조작언어에 의한 고차관계대수와 관계논리에서 작성된 데이터 처리요구를 저수준 절차에 최적화 실행합니다.


분산 데이터베이스

분산 데이터베이스는 네트워크로 연결된 여러 대의 컴퓨터를 사용하여 

각각의 컴퓨터에서 DBMS의 프로세스를 작동시키고 움직 전체로 가상으로 하나의 DBMS를 실현하는 기술입니다. 

여러 대의 컴퓨터를 사용하기 때문에 가용성과 성능을 향상시킬 수있습니다.

클라이언트서버의 데이터베이스는 분산데이터베이스 간단하고 특수한 형태로 자리 매김 할 수있습니다.

반응형
반응형

티스토리의 게시물을 네이버에서도 검색되게하려고 찾아봤는데

아래와같이 검색반영 요청을 위해서는 RSS피드등록을 해야된다고합니다.








피드등록을 위해서 네이버에서는 네이버 웹마스터도구서비스에서 등록을 할수있습니다.

http://webmastertool.naver.com/

위 링크로 들어가셔서 로그인하시면 아래와같이 사이트정보 입력이 나오는데요.








해당하는 URL을 입력해주세요.

저는 http://huistorage.tistory.com 로 입력했습니다.








사이트를 소유확인을 해야하는데

첫번째 HTML 파일 업로드같은경우는 개인적으로 웹호스팅을 하셔서 

FTP로 파일을 업로드나 root로 파일을 올리는게 가능하신분은 첫번째로 하시면 됩니다.


잘모르겠다 나는 티스토리다 하시는분은 

2번째 HTML태그를 이용하시면 됩니다.


메타태그라고 <meta 이렇게 초록색으로 되있는 부분을 복사하셔서

티스토리 관리자 페이지로 가서

아래 화살표 HTML./CSS편집 부분을 클릭해줍니다.









그럼 아래와 같이 HTML 소스코드가 나오는데요.

거기서 <head>라고 적혀있는 아래부분에 위에 복사한 메타태크를 넣어주면됩니다.

<meta> </> 태그사이에 넣지않게 주의해주세요.

넣어주시고 저장을 누르시면됩니다.









그리고나서 네이버의 웹마스터도구 - 2.소유주확인 페이지에가서

자동등록방지가 있으시면 작성해주시고

저장을 눌러주시면 정상적이라면 확인이 됬다고 알림창이 뜨면서 

아래와같은 화면이 나타납니다.









위와같이 됬다면 등록이 완료됬습니다.

끝!

반응형

'기타' 카테고리의 다른 글

티스토리 초대장 나눔해드립니다!  (33) 2017.10.27
티스토리 구글 애드센드 연결하기  (0) 2017.10.26
사업자등록번호  (0) 2017.10.24
반응형

네이티브 앱

통화, 카메라, 진동, GPS 등 모바일기기에서 지원하는 고유기능들을 사용가능하며, OS에서 제공되는 모든API에 액세스할 수 있습니다.

OS제조사에서 제공하는 개발언어와 툴을 사용하며 UI 등 앱제작에 필요한 다양한 요소가 패키지화 되어있고, 편리한 개발툴 제공 및 라이브러리나 함수들이 내장되어있어 개발이 편리합니다.

네이티브 앱은 성능과 디바이스의 액세스 가용성이 높아 고성능의 어플리케이션 개발시에 유리합니다.

인터넷이 사용 가능하지 않은 환경에서도 일부 기능을 작동할 수 있습니다.

하지만 모바일 OS에서 제공하는 언어, 툴 등이 달라 해당언어와 툴에 전문적인 지식이 필요하며, 높은 비용과 많은 시간이 걸리는 단점이 있습니다.

배포는 앱스토어, 플레이스토어 등에서 다운로드받거나 패키지로 직접 설치할수 있습니다.


OS의 종류로는 ios, android, 블랙베리 os, window 등이 있습니다.


각 스토어, 패키지, 언어, 툴 등은 다음과 같습니다.


 

 스토어

 패키지 

 언어 

 툴 

 ios

 App Store

 .app

 Object-C, C, C++

 Xcode

 android

 Play Store

 .apk

 JAVA, C, C++

 android SDK

 블랙베리 os

 Blackberry App world

 .cod

 JAVA

 BB JACA EELIPSE 플러그인

 window

 Window Phone MarketPlace

 .xap

 C#, VB.NET

 비쥬얼 스튜디오, window 개발툴




모바일 웹 앱

모바일 웹의 특징을 가지면서도 네이티브앱의 특징도 가지고 있는 웹을 기반으로한 앱입니다.

통화, 카메라, 진동, GPS 등 모바일기기에서 지원하는 고유기능들을 사용이 불가능합니다.

실행 속도는 빠르지만 인터넷 접속 속도에 영향을 받으며, 인터넷 사용이 안되는 환경에서 사용할 수 없습니다.

웹 방식은 네이티브앱과 하이브리앱보다는 간단하며 비용이 적게 들지만 웹기반이라 기능상으로 많은 제한이 있는 단점이 있습니다.

 



하이브리드 앱

하이브리드 방식은 위 두방식을 합친 것으로, 여러 OS를 한 번에 지원해야 할 경우 선호되는 방식입니다

모바일 기기에서 지원하는 고유정보를 이용가능하며, 배포 또한 앱스토어나 마켓에서 다운로드받아 설치 가능합니다.

네이티브앱 안에 웹뷰 기능을 통해 웹을 얹어서 화면을 구성하며 , 현재 개발툴로 하이브리드 앱 프레임워크 Ionic, Famo.us 등을 사용하여 더 편하게 앱을 만들수도 있습니다.

중요한 화면은 웹으로 구성되기 때문에 개발기간이 상대적으로 적게 걸리고, 개발 비용 또한 상대적으로 적은 편입니다.



반응형

'IT' 카테고리의 다른 글

IT 계층구조  (0) 2018.01.25
css - 긴글 자동 줄바꿈  (0) 2018.01.12
JSP / 자바스크립트 / 자바 데이터 및 함수호출  (0) 2017.11.10
[JAVA/JS/JSP] 문자와 숫자 길이 구하기 - length  (0) 2017.11.08
ERD 표기방법  (0) 2017.09.29
반응형

가로수길을 둘러보고, 좀 쉬려고 카페를 가려고 찾아보는데 

여자친구가  mula 뮬라라는 카페를 가자해서 가게됬습니다. 

무려 루프탑 카페입니다.







골목에서 딱 정면에서 찍은 샷입니다.

지도보고 찾아가는데 골목으로 들어가는 길을 못찾아서 한바퀴 돌았습니다.


생각보다 보이진 않지만 찾기 쉬운곳에 있습니다.

가로수길 골목으로 들어가다보면 작은표지판? 간판이 보이는데 이걸안찍었네요! 이런..








엄청 입구가 깔끔하게 잘되있습니다. 

mula라는 간판이 엄청 깔끔하게 이쁘네요.

루프탑 옥상도 살짝 보입니다.







주말이라 사람은 엄청 많았습니다.

들어가자마자 바로 앞쪽에 카운터와 메뉴판이 있습니다.

주변이 엄청 깨끗하고 깔끔합니다.







메뉴판에 메뉴가 엄청많습니다.

저희는 수제연유라떼와 녹차라떼 2잔을 주문했습니다.

주문줄을 서면서 둘러봤는데 


주변 테이블마다 티라미슈가 있어서 먹어보고 싶었지만 

배가 너무 부른관계로.. 따로 주문하진 않았습니다.

티라미슈 맛집인거 같습니다.







주문을 하고 둘러보는데 

운동복?과 운동과 관련된 용품들이 진열되있었습니다.

남자꺼는 없어서 구경은 안했습니다. 

파는지도 모르겠습니다.







2층 루프탑이 메인이라 올라갔는데 자리는 없었습니다....

테이블은 많지는 않습니다.


이쁠것 같았지만 자리도 없고 기다리기도 애매해서 밖에는 나가지 않았습니다.

의자가 2개있는데 대기용일지도 모르겠습니다.







내려가면서 1층을 전체가 보일만큼 찍었습니다.

테이블이 많아보이는 것처럼 많습니다.


테이블이 꽤 있긴한데 자리도 없고

시끄러운편이여서 밖으로 나갔습니다. 


밖은 그나마 선선해서 괜찮았는데 

더우면 안쪽이 더 좋을거 같습니다. 


해도 떠있어서 눈부시고 테이블은 낮아서 조금 불편했습니다.

그래도 좋았습니다.







음료가 나와서 받는데 금색쟁반 이쁘긴한데 꽤 무겁습니다.

서빙을 오래해서 쟁반은 자신있었는데 무거워서 두손으로 들고왔습니다.







한장찍긴 아쉬워서 한장 더 찍었습니다.

음료는 엄청 달달하고 맛있어서 제가 거의 다먹었습니다.


전체적으로 깔끔하면서 분위기는 좋습니다. 

루프탑에 앉으면 더욱 좋을거 같지만 자리잡기는 쉽지 않을거 같습니다.


밤엔 찾기 어려울수도 있을거 같습니다.

영업시간은 10:00 ~ 22:00 라고하니 참고하시면 좋을 것 같습니다.

가로수길 걸으면서 구경하다가 쉬기 딱좋은 mula 카페 후기였습니다.





반응형
반응형


SELECT문


조건식

SELECT [* | DISTINCT] 컬럼

FROM TABLE명

[ WHERE 조건 ]

[ GROUP BY 컬럼 ]

[ HAVING 검색조건 ]

[ ORDER BY 컬럼 [ ASC | DESC ] 


데이터 처리순서

1. FROM

2. ON

3. JOIN

4. WHERE

5. GROUP BY

6. WITH CUBE 또는 WITH ROLLUP

7. HAVING

8. SELECT

9. DISTINCT

10. ORDER BY

11. TOP


*기본

SELECT * FROM TABLE명;  // TABLE명에 있는 모든 컬럼의 데이터를 찾는다.

SELECT 컬럼1, 컬럼2, 컬럼3 FROM TABLE명 // TABLE의 컬럼1, 컬럼2, 컬럼3의 데이터를 찾음

SELECT 컬럼1 AS 별칭 FROM TABLE명 // 컬럼1 AS 별칭 데이터를 뽑을때 컬럼1의 컬럼명이 별칭으로 바뀜


*집계 함수(숫자 데이터)

SUM() // 컬럼 데이터의 합

AVG() // 컬럼 데이터의 평균

COUNT() // 컬럼의 데이터 갯수

MAX() // 컬럼 데이터의 MAX값

NIN() // 컬럼 데이터의 MIN값


EX) SELECT SUM(컬럼1) FROM TABLE명 // 컬럼1의 모든데이터의 합을 가져옴.


*수치함수(숫자 데이터)

ROUND(데이터, 반올림위치) //반올림 및 자릿수

ABS() // 절대값

SIGN() // 부호

SQRT() // 제곱근

POWER(데이터, n) // n승


*문자열 함수(문자 데이터)

Ascii() // 문자열의 제일 왼쪽 문자의 아스키 코드 값을 반환(Integer형)

Char() // 정수 아스키 코드를 문자로 반환(Char형)

Charindex(찾을문자, 데이터, 찾을시작위치) // 문자열에서 지정한 식의 위치를 반환

Left() // 문자열에서 왼쪽에서부터 지정한 수만큼의 문자를 반환

Len() // 문자열의 길이 반환

Lower() // 대문자를 소문자로 반환

Ltrim() // 문자열의 왼쪽 공백 제거

Nchar()  // 지정한 정수 코드의 유니코드 문자 반환

Replace(데이터, 바꾸고싶은문자, 바꿀문자) -  문자열에서 바꾸고 싶은 문자 다른 문자로 변환

Replicate() // 문자식을 지정한 횟수만큼 반복

Reverse() // 문자열을 역순으로 출력

Right(데이터, 지정수) // 문자열의 오른쪽에서 부터 지정한 수 만큼 반환(Left() 와 비슷 )

Rtrim() // 문자열의 오른쪽 공백 제거

Space() // 지정한 수만큼의 공백 문자 반환

Substring(데이터,가져올자릿수, 길이) // 문자,이진,텍스트 또는 이미지 식의 일부를 반환

Unicode() // 식에 있는 첫번째 문자의 유니코드 정수 값을 반환

Upper() // 소문자를 대문자로 반환

Isnumeric() // 해당 문자열이 숫자형이면 1 아니면 0을 반환

Isdate() // 해당 문자열이 Datetime이면 1 아니면 0


WHERE 조건

SELECT * FROM TABLE명 WHERE 컬럼1=1; // 모든 컬럼의 데이터에서 컬럼1의 데이터가 1인 모든 컬럼의 데이터 값을 찾음


조건 함수

IS NULL // 데이터가 NULL인 값 가져오기 

BETWEEN A AND B // A와 B사이에 있는걸 가져옴

LIKE a% // a로 시작되는

LIKE %a% // a를 포함하는

LIKE a% // a로 끝나는

LIKE a_ // a로 시작하는 2자리

LIKE a___ // a로 시작하는 4자리

LIKE __a // a로 끝나는 3자리  

컬럼 IN (a, b) // 컬럼이 a이거나 b인 데이터 가져오기


SELECT DISTINCT 컬럼 FROM TABLE명 // 중복되지 않는 데이터만 가져옴

SELECT TOP n * FROM TABLE명 // 상위 n개의 데이터만 가져오기


ORDER BY 컬럼1 ASC  // 컬럼1 기준으로 오름차순

ORDER BY 컬럼1 DESC // 컬럼1 기준으로 내림차순



※HAVING이나 빠진부분은 추후 업데이트하겠습니다.


반응형
반응형

형변환 + 데이터 포맷


import { DatePipe } from '@angular/common';


var datePipe = new DatePipe("en-US");

var date2 = datePipe.transform(new Date(), 'yyyyMMddHHmm'); // 현재 시간 가져와서 date포맷

var result= Number.parseInt(date2); // date를 int로 형변환 


1. y represents year. 

2. M represents month. 

3. d represents day. 

4. E represents week day. 

5. h represents hour(12). 

6. H represents hour(24). 

7. m represents minute. 

8. s represents seconds. 

9. z represents timezone. 





Timer


import { Observable } from 'rxjs/Observable';


 this.data = new Observable(observer => {

  setTimeout(() => {

},1000); // 1초에 실행됨


setTimeout(() => {


observer.complete();


        },15000); // 15초에 실행됨.

       });





Date Number타입변환


*Date는 Number로 변환해서 시간연산가능


var nowTime = Number(new Date());

반응형
반응형

ERD표기 방법과 해석







은 하나의 로 구성되어 있다.




은 하나 이상의 로 구성되어 있다.




은 하나 이하의 로 구성되어 있다.




은 0 또는 하나 이상의 로 구성되어 있다.





ERD란



반응형
반응형

id, class, name으로 접근


$("#id") // id는 1개만가능

$(".class") // class는 중복가능

$("tag_name[name=name]") // 



값 가져오기 및 값변경하기


.val();  // 값을 가져올때나 변경할때

.text(); // text만 가져오거나 변경

.html(); // text+html태그 가져오거나 변경


.empty(); // 값 비우기 .val("");랑 비슷하다고 보면됩니다.

.remove(); // tag까지 제거



포커스


.focus(); // focus 줄때

.blur(); // focus 벗어날때



클릭


.click(); // click 이벤트



마우스이벤트


.mouseenter(); // 마우스on 이벤트

.mouseleave(); // 마우스out 이벤트

.hover(); // 마우스오버이벤트



애니메이션


.fadeIn() // 애니메이션 서서히 생기는 (값안에 시간 or slow fast입력시 속도조절가능)

.fadeOut() // 서서히 사라지는

.slideUp() // 위로 사라짐 시간조절 가능

.slideDown() // 아래로 나타남


animate({},시간값);

animate({},function(){}); // 애니메이션이 끝나고 함수안에 또 애니메이션을 넣을수있음



클래스 css


.addClass('추가할 클래스 이름')

.removeClass('제거할 클래스 이름');


.attr('속성','속성값'); // src="", alt="", title="" 값 변경


.css('css속성','값'); // float, display, width, height, color, background, margin, padding 등 여러 속성 제어가능 



태그


.hide(); // 숨기기

.show(); // 나타내기


대상1.append(대상2); // 대상1 태그안에 대상2 태그를 넣을수있음

대상2.appendTo(대상1); // 대상1 태그안에 대상2 태그를 넣을수있음


text창 활성화 비활성화

$("input").prop('disabled', true); // 비활성화

$("input").prop('disabled', false);  // 활성화

반응형

'IT > Jquery' 카테고리의 다른 글

Jquery 사용하기  (0) 2017.09.28

+ Recent posts