오늘 경복궁, 창경궁 야간 특별 관람 예매가 있었습니다.


일하다가 조금 늦게 갔더니 

옥션으로 들어갔는데

경복궁은 이미 다 매진이더군요.

창경궁만 겨우 토요일거로 예매했네요.




이번엔 예매 못했지만 8월, 9월 에도 야간 관람이 예정되어 있으니 

그땐느 반드시 성공하기를 바랍니다.





<<출처 : 문화재청>>


- 7월: 7.16.~29.(12일간) / 경복궁․창경궁 / 7.7. 오후 2시 예매 시작 -


- 8월: 8.20.~9.2.(12일간) / 경복궁 / 8.11. 오후 2시 예매 시작 -


- 9월: 9.17.~30.(12일간) / 경복궁 / 9.8. 오후 2시 예매 시작 -


 

  문화재청(청장 나선화)은 이달부터 9월까지 경복궁과 창경궁에서 진행되는 고궁 야간 특별관람 일정을 확정했다.

 

  이달에는 경복궁과 창경궁에서 16일부터 29일(경복궁 화요일 휴무, 창경궁 월요일 휴무)까지, 8월에는 경복궁에서만 20일부터 9월 2일(기간 중 화요일 휴무), 9월에도 경복궁에서만 17일부터 30일(기간 중 화요일 휴무)까지 각 12일간 진행된다. 조명 개선을 위한 사전조사로 인해 8월과 9월에 창경궁은 야간 관람 일정이 없다.

 

  야간 특별관람 시간은 ▲ 7월과 8월에는 오후 7시 30분부터 10시까지(입장마감 오후 9시까지), ▲ 9월에는 오후 7시부터 9시 30분까지(입장 마감 오후 8시 30분까지)이며, 야간 특별관람 예매를 하지 못한 경우에는 상시 야간관람이 가능한 덕수궁(오후 8시까지 입장, 오후 9시까지 관람/월요일 휴무)을 이용할 수 있다.

 

  7~9월 고궁 야간 특별관람 관람권(유료)과 한복 착용자(무료) 예매는 ‘옥션 티켓’과 ‘인터파크 티켓’에서 오는 7일, 8월 11일, 9월 8일 오후 2시에 각각 시작한다. 일반인 유료 관람권 예매는 1인당 4매, 한복 착용 무료 관람권 예매는 1인당 2매로 제한된다. 인터넷‧전화 예매자는 관람 당일 매표소에서 예매자 본인 신분 확인 후 관람권을 배부 받아 입장하면 된다.

  * 인터넷 예매(PC, 모바일): 옥션 티켓, 인터파크 티켓

  * 전화 예매(만 65세 이상 어르신만 가능): 인터파크(☎1544-1555, 월~토요일 09시~20시, 일요일‧공휴일 09~18시)

  * 현장구매: 경복궁 550매(어르신 50매, 외국인 500매), 창경궁 350매(어르신 50매, 외국인 300매) / 외국인은 현장구매만 가능

 

  한복 착용자 무료입장을 원하는 관람객은 사전에 인터넷 예매(1일 1,000명)를 하고 당일 올바른 한복을 착용한 후(본인 확인을 할 수 있는 신분증을 지참) 매표소에서 관람권으로 교환해야 관람할 수 있다.

 

  7~9월 개최 예정인 고궁 야간 특별관람에 대한 자세한 사항을 비롯하여 2017년 고궁 야간특별관람 전체 일정은 경복궁, 창경궁 누리집에서 확인할 수 있다

  * 경복궁관리소 누리집: www.royalpalace.go.kr (☎02-3700-3900~1)

  * 창경궁관리소 누리집: cgg.cha.go.kr(☎02-762-9515, 4868~9)

  * 미개최 기간: 창경궁(8~9월)

 

  많은 관람객의 사랑을 받아 온 2017년 고궁 야간 특별관람은 7월 경복궁과 창경궁, 8~9월 경복궁을 끝으로 마무리될 예정이다. 문화재청은 올해의 마지막인 야간 특별관람을 통해 한 여름밤부터 가을의 문턱에 들어설 때까지 도심 속 고궁의 밤에 가족, 친구, 연인이 함께 아름다운 야경을 즐기고 추억을 만들 수 있는 특별한 시간을 보내길 바란다.  


tabs upload 예제 소스


Set Upload = Server.CreateObject("TABS.Upload")

Upload.Start "C:\저장할폴더"


Upload("업로드파일input명").Save, True

filename = Upload("업로드파일input명").FileName


filename 디비 저장.




tabs upload 다운로드 소스 예제


Set Download = Server.CreateObject("TABS.Download")

Download.FilePath = "물리적파일경로"


Download.FileName = "다운로드될때저장될파일이름"


Download.TransferFile true


set Download = Nothing



오라클 쿼리 속도 저하 문제 중 하나가 인덱스의 밸런스가 깨진다는데 있다.


보통 B+트리 인덱스는 트리구조인데

이 트리구조 아래부분의 데이터들이 무작위로 삭제되거나 수정되는 경우

트리구조가 불균형을 이룬다는 것이다.


이런 경우 인덱스 재구성을 해주어 속도를 향상시킬 수 있다.


오라클 인덱스를 재설정하는 명령은

alter index 인덱스명 rebuild;


인덱스를 검색하는 쿼리는

select index_name from user_indexes;


위 두 쿼리를 조합해서 리빌드 하는 쿼리들을 뽑아낼려면

select 'alter index '||index_name||' rebuild ;' from user_indexes;


실행시 아래와 같이 리빌드 쿼리가 생성된다.


alter index PK_MEMBER rebuild ;

alter index PK_BOARD rebuild ;


요런식의 결과값이 떨어진다..


쉽게 모든 인덱스의 리빌드 쿼리를 뽑아낼 수 있다.




국민은행 이체한도 변경하기를 알아볼게요.


은행 사이트 쓰기 힘들지요..


엄청난 메뉴로 인해 뭘 어디서 찾아야 할지 몰라서


결국 은행 사이트의 찾기 기능을 써서 저런 메뉴가 있다는 걸 알냈지요..




하지만 인터넷에서는 이체한도 증액은 불가능 합니다.

오프라인 지점에서만 이체한도를 증액시킬수 있습니다.


물론 감액은 인터넷 상으로도 가능합니다.


주말에 헤이리마을 산책을 갔어요

요즘 더워서 너무 집에만 있다보니

좀 걸어야 겠어서...


그것도 그렇고 갑자기 쌀국수가 땡겨서

퇴근 후 점심먹으로 헤이리 마을의 반미싸이코로 향했습니다.


올말에 드라이브라 기분도 업업.






반미싸이코에 들어가서 자리를 잡고

가게를 둘러보니

역시 베트남 냄새가 물씬 풍기죠?

베트남엔 안가봤지만

왠지 베트남 같아요..




메뉴판이 완전히 빈티지 하지요?

일부러 그런건지 오래돼서 그런건지

사진으로 찍으니 더 안보이네요..

수전증이 있나요


쌀국수 라지 하나랑 반미 샌드위치를 주문했습니다.

보통 쌀국수하나 볶음밥 하나 시키는데

샌드위치가 두번째 메인 메뉴라서 주문했어요

탁월한 선택이였습니다.



쌀국수 양이 꽤 돼죠?

왜냐면 라지이니까요..

우선 고기냄새가 적어서 와이프도 잘 먹었어요.

국물도 좋았고요



오늘의 하이라이트

반미 샌드위치 9000원






조그마한 키 그릇에 담아주셨네요.

우선 빵이 바삭바삭합니다. 아주 많이 과자처럼

속은 바게트처럼 질기고요..


씹는 맛이 아주 일품이지요..


요근래 먹어본 음식중에 가장 기억에 남는 음식이 됐어요...










점심을 다하고 헤이리마을 여기저기 돌아댔겼지요..

고양이?호랑이?해태? 너무 익살스럽고 귀엽네요.



포니2 자동차

가게 운영하시는 분이 실제로 출퇴근 하는 차량이라고 합니다.


사람들이 빈티난다고 했나봐요..

빈티아니고 빈티지라고 새겨서 다니시네요...ㅎㅎ


1. pom.xml 설정

2. context.xml 설정

3. 사용자단 소스

4. 자바단 소스


1. pom.xml 설정


<!--  file upload -->

<dependency>

 <groupId>commons-fileupload</groupId>

 <artifactId>commons-fileupload</artifactId>

 <version>1.2</version>

</dependency>

<dependency>

 <groupId>commons-io</groupId>

 <artifactId>commons-io</artifactId>

 <version>2.4</version>

</dependency>


2. context.xml 설정


<!-- MULTIPART RESOLVERS -->

<!-- regular spring resolver -->

<bean id="spring.RegularCommonsMultipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

 <property name="maxUploadSize" value="600000000" />

 <property name="maxInMemorySize" value="100000000" />

</bean>



3. 사용자단 소스


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

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<!DOCTYPE html>

<html>

 <head> 

  <meta name="title" content="Amway Academy">

  <meta name="keywords" content="Amway Academy">

  <meta name="description" content="">

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

  <meta http-equiv="X-UA-Compatible" content="IE=Edge">  

 

  <title>Amway Academy 관리자</title>

  <script type="text/javascript" src="/js/jquery-1.10.2.min.js"></script>

  <script type="text/javascript" src="/js/jquery.form.js"></script>

  <script type="text/javascript">

  $(document.body).ready(function(){

   $("#insertBtn").on("click", function(){

    imageSubmit();

   });

  });

  

  var imageSubmit = function(){

   // 저장전 Validation


   

   if($("#courseimagefile").val().length<1 && $("#courseimage").val().length<1){

    alert("대표이미지를 등록해 주세요.");

    return;

   }


   var fileYn = false;

   $( "input:file" ).each(function( index ){

    if($( this ).val().length>0 ){

     fileYn = true;

    }

   });

   if(!fileYn){

    saveSubmit();

    return;

   }

   $("#frm").ajaxForm({

    dataType:"json",

    data:{mode:"course"},

    url:'/common/fileUploadAjax.do',

    beforeSubmit:function(data, form, option){

     return true;

    },

          success: function(result, textStatus){

           for(i=0; i<result.length;i++){

            $("#"+result[i].fieldName+"file").val(result[i].FileSavedName);

            if(result[i].fieldName == "filedown"){

             $("#"+result[i].fieldName+"file").val( result[i].OriginalFilename + "|" + result[i].FileSavedName );

            }

           }

           saveSubmit();

          },

          error: function(){

              alert("파일업로드 중 오류가 발생하였습니다.");

              return;

          }

   }).submit();

  }

  var saveSubmit = function(){

   alert("저장")

  }

  

  

  /** 이미지 미리보기

   * 

   */

  function getThumbnailPrivew(html, $target, w, h) {

   if(html.value == ""){

    return;

   }

   var _lastDot = html.value.lastIndexOf('.');

   var fileExt = html.value.substring(_lastDot+1, html.value.length).toLowerCase();

   /* 

   if( fileExt != "jpg" && fileExt != "gif" && fileExt != "png" ) {

    alert("이미지 파일(jpg,gif,png)만 입력하세요.");

    try{$(html).replaceWith($(html).clone(true))}catch(e){};

    try{html.value = ""}catch(e){};

    return;

   }

      */

   if (html.files && html.files[0]) {

          var reader = new FileReader();

          reader.onload = function (e) {

              $target.css('display', '');

              var wStr = "";

              var hStr = "";

              if(w !='' && w != null ){

               wStr = "width="+w;

              }

              if(h !='' && h != null ){

               hStr = "height="+h;

              }

              $target.html('<img src="' + e.target.result + '" border="0" alt="" '+wStr+' '+hStr+' />');

          }

          reader.readAsDataURL(html.files[0]);

      }

  }

  

  </script>

 </head>

 <body>

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

  <table>

   <tr>

    <th rowspan="3">대표이미지</th>

    <td rowspan="2">

     <div id="courseimageView" style="width:140px;height:80px;float:left;" class="required">

     <c:if test="${not empty detail.courseimage}"><img src="/manager/lms/common/imageView.do?file=${detail.courseimage}&mode=course" width="120" style="max-height:80px;"></c:if>

     </div>

    </td>

    <td>

     <input type="hidden" id="courseimagefile" name="courseimagefile" value="${detail.courseimage}" title="대표이미지" />

     <input type="file" id="courseimage" name="courseimage" onchange="getThumbnailPrivew(this,$('#courseimageView'), 120 , 80);" title="대표이미지"><br />

    </td>

   </tr>

  </table>

  <a href="javascript:;" id="insertBtn" class="btn_green">저장</a>

 </form>

 </body>

</html>

  



4. 자바단 소스


 @RequestMapping(value = "/common/fileUploadAjax.do", method = RequestMethod.POST)

    public ModelAndView fileUploadAjax(MultipartHttpServletRequest request, ModelAndView mav ) throws Exception {

  Map<String, Object> rtnMap = new HashMap<String, Object>();


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

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

  String childFolder = "temp";

  if("stamp".equals(mode)){

   childFolder = "stamp";

  }else if("course".equals(mode)){

   childFolder = "course";

  }else if("test".equals(mode)){

   childFolder = "test";

  }else if("excel".equals(mode)){

   childFolder = "excel";

  }

  

  //folder mkdir

  File saveFolder = new File(ROOT_UPLOAD_DIR+File.separator+childFolder);

  if(!saveFolder.exists() || saveFolder.isFile()){

   saveFolder.mkdirs();

  }

  

  //iterator

  Iterator<String> files = request.getFileNames();

  MultipartFile multipartFile;

  String filePath;

  List<Map<String, Object>> fileInfoList = new ArrayList<Map<String,Object>>();

  

  try{

   

   //while

   while(files.hasNext()){   

    

    

    String uuid = UUID.randomUUID().toString().replaceAll("-", "");

    multipartFile = request.getFile((String)files.next());

    String fieldName = multipartFile.getName();

    String extName = multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")+1 );

    String filename = uuid+"."+extName;

    filePath = ROOT_UPLOAD_DIR+File.separator+childFolder+File.separator+filename;

    if( filename != null && !"".equals(multipartFile.getOriginalFilename()) ){

     multipartFile.transferTo(new File(filePath));


     

     

     Map<String, Object> map = new HashMap<String, Object>();

     map.put("fieldName", fieldName);

     map.put("FilePath", filePath);

     map.put("OriginalFilename", multipartFile.getOriginalFilename());

     map.put("extName", extName);

     map.put("FileSize", multipartFile.getSize());

     map.put("FileSavedName", filename);

     fileInfoList.add(map);

    }

   }

   

  }catch(IOException e){

   e.printStackTrace();

  }

  

  

  int sizeCheck = 0;

  if(fileInfoList != null && fileInfoList.size() > sizeCheck){

   rtnMap = fileInfoList.get(0);

  }

  mav.setView(new JSONView());

  mav.addObject("JSON_OBJECT",  fileInfoList);

  return mav;

    }



핵심은 jquery.form.js 를 이용해서 비동기로 파일을 업로드 한다

파일을 업로드 하기 위해서는 common-fileupload 와 common-io 자르가 필요하다.

multipartResolver를 선언해 주고

비동기로 파일을 업로드 한다.

어제 MBN뉴스 보는데 눈에 거슬리는게 두개나 나와서 포스팅을 하기로 했습니다.


1인승 전기 자동차 관련 뉴스를 하면서


기자가 직접 운전을 합니다.


극적인 상황을 연출할려고 했는지


좁은 골목길에서 좌측통행을 하고

주차는 장애인 구역 차들 사이에 주차를 합니다.


두개 모두 의도된 설정같은데 눈에 많이 거슬리더군요.


http://mbn.mk.co.kr/pages/vod/programView.mbn?bcastSeqNo=1158497




The project description file (.project) for 'academy' is missing.  This file contains important information about the project.  The project will not function properly until this file is restored.


SI 프로젝트를 나가면 개발자가 들어올때마다 이클립스 셋팅하는데 시간이 꽤 걸리므로

셋팅된 이클립스를 배포하는 경우가 많다.


보통 D드라이브가 없는 친구들이 많기 때문에 기본적으로 C드라이브를 기본으로 해서

이클립스, 워크스페이스, 자바, 톰캣, 메이븐디포짓, 깃폴더 등을 한곳에 때려넣어서 배포를 하는데


구지 꼭 C가 아닌 다른곳에 설치하는 친구들이 있다..


이런 경우가 아니더라도 프로젝트가 끝난 후 유지보수를 위해서 소스를 한곳에 모아 놓는 경우

샛팅을 바꿔줘야 하는 몇가지가 있다.


1. eclipse.ini 의 자바경로 변경

이클립스 폴더에 있는 eclipse.ini의 자바 경로 부분을 변경한다.


-vm

D:/eclipse/Project/Java/jdk1.7.0_80/bin/javaw.exe


2. 이클립스 실행 후 

파일>워크스페이스 변경을 하여 변경하고자 하는 곳으로 변경



3. git 폴더 변경

윈도우 > Preferences > Team > Git 에서 기본 폴더 변경


Git Repositories를 클릭하여

Add an existing local Git repository 를 설정


4. maven 셋팅정보 수정

메이븐 설정파일인 settings.xml의 localRepository 위치 수정

윈도우 > preferences> Maven> User Settings

수정한 settings.xml 파일을 일고 update settings 를 클릭하여 반영



5. 서버설정

윈도우 > preferences> Server> Runtime Environments 

수정을 클릭하여 서버 위치 변경 및 JRE 버전 설정



그런데도 프로젝트가 읽어오질 못한다.

.project 파일을 못찾는단다.

워크스페이스 변경만으로 각 개별 프로젝트의 위치가 자동으로 바뀌는게 아닌것이다.






프로젝트의 속성을 보면 소스 위치가 기존의 폴더로 되어있다.


이건 처음 셋팅시 소스 위치를 워크스페이스 밖으로 설정해서 그런것이다.


해결 방법은 

방법 1. 프로젝트를 삭제하고 git에서 임포트 한다.

방법 2. workspace\.metadata\.plugins\org.eclipse.core.resources\.projects\프로젝트명 폴더에

.lcation 파일의 프로젝트 위치를 편집한다.







요즘 울 부모집 시골집에 있는 대순이 대견이 간식을 뭘 줘야 돼는지 몰라서 항상 인테넷 검색만 하고 있습니다.


강아지를 처음 키우는 거라 어떻게 해야 될지 하나도 몰라요.


그러다가 하림 펫푸드에서 강아지 간식 샘플 무료 이벤트가 있어 공유해 드립니다.


http://www.harimpetfood.com/board/?db=gallery_1&no=125&mari_mode=view@view



그런데 샘플박스만 주문하면 배송비 2500원이 부과돼네요.


우선 2500원만 내고 주문했는데

뭔가 반쪽짜리 이벤트 같은 짙은 아쉬움이 있네요.


요즘 시끄러운 기업인데 한 턱 쏠려면 크게 쏘지 좀 쫀쫀?



요건 울 대순이 대견이




산책도 시킬려면 리드줄도 사야 돼고 개껌도 사줘야 돼는데 

도대체 뭘 사야 될지 모르겠네요..



6-29일 추가

드디어 리얼이 왔습니다.


빠른 배송 아주 칭찬해...ㅎㅎ





우리 회사 사무실 건물 1,2,3 층을 전체 임대해서 쓰는 꽤 큰 건설회사가

방화문을 항상 열어놓고 있고

다른 쪽은 완전히 패쇄시켜놔서


점심시간에 밥먹으러 다닐때마다 닫았는데 계속 다시 열어놓았습니다.

영구 아파트 화재 사건 이후 더 맘이 불편하더군요..

특히 건설 회사라는 곳이 소방법을 저리 안지켜서야..


처음엔 직접 주의를 줄까하다가 건설회사 왠지 오다가나 해꼬지 당할까봐

인터넷으로 신고하는 것을 검색해봤더니


서울인 경우 서울소방재난본부에 신고 할 수 있더군요..

게다가 5만원 포상제도 까지 실시


아래 주소로 가면 안내 문구가 있습니다.

소방법 위반 사항 확인 하시고 신고하면 됩니다.


http://fire.seoul.go.kr/pages/cnts.do?id=3239



서식에 맞게 등록해야 합니다.

서식 파일 찾는데 한참 걸렸네요.

http://fire.seoul.go.kr/pages/cnts.do?id=202

소방시설 등 불법행위 신고서 다운로드 받아서 작성하고 

신고합시다에 등록하면 됩니다.

신고서식

위 URL에서 다운받으세요.


신고합시다 메뉴의 글쓰기 눌러서 작성하세요.

글은 꼭 비공개로 해주세요.

신고서에 개인정보가 들어가니

아무나 보면 안될거 같습니다.



아래는 신고 대상 사진들 입니다.

방화문을 항상 열어놓거나 아에 폐쇄해 놓았습니다.

비상구 폐쇄나 열어놓는게 정확하게 소방법 위반인지는 좀 헷갈리지만

제가 알기로는 또 위에 안내 문에서도 있듯이 

위험에 심각한 위협을 주는건 맞는거 같아요

혹시나 하는 안전불감증으로 가만 놔두기 보다는 적극적으로 고쳐나가야 할 거 같습니다.




+ Recent posts