2016년 11월 25일 금요일

Metallica - LORDS OF SUMMER

Sight
Pale riders into the night
Galloping harder and faster
Through your dreaming

보아라
창백한 말 탄 이들이 밤 속으로
더욱 빠르게 질주하는
너의 꿈속을

Wake
Walk towards the fire innate
Frost bitten soul below zero
Excitation

깨어나라
타고난 열기로 나아가고
냉기로 영혼을 얼어붙게 하는
자극

Are you remembering the sound?
Recall the shaking of the ground?

그 소리가 기억나나?
땅의 울림이 기억나나?

Pounding
Pounding
No Remorse
Lords of summer set on course

쿵쿵거리고
쿵쿵거리며
후회없이
여름의 제왕이 진로를 정했다

Pushing
Pushing
Horsemen Ride
Lords of summer, undenied
밀치고
밀치며
말탄이들이 질주한다
부정할 수 없는, 여름의 제왕

At last the thawing has begun
Come trade your darkness for the sun
Melting the chill of winter’s turn 
So celebrate and let your fires burn
The Lords of Summer have returned 

마침내 해빙기가 시작되고
태양을 향한 너의 어둠을 바꿀때가 왔다
겨울 모퉁이의 냉기가 녹아
축하하며 너의 열기가 불타오르게 한다
그 여름의 제왕이 돌아왔다

Straight
Light passes through, penetrate
It’s been a long lonely winter
Illumination

똑바로 가라
빛이 통과하여 지나가고
길고도 외로운 겨울이었지
빛나는 존재

Bright
Bathe in the volume and light
Reanimated by fire
Transformation

빛나라
볼륨과 빛속에 몸을 담그고
열기에 의해 소생된
변화

Become the nexus of the sound
Become the shaking of the ground

소리의 결합체가 되어라
땅의 울림이 되어라

Pounding
Pounding
No Remorse
Lords of summer set on course

Pushing
Pushing
Horsemen Ride
Lords of summer, undenied

At last the thawing has begun
Come trade your darkness for the sun
Melting the chill of winter’s turn
So celebrate and let your fires burn
The Lords of Summer have returned 

Whoa, Pounding
Pounding 
No Remorse
Lords of summer set on course

Whoa, Pushing
Pushing
Horsemen Ride
Lords of summer, undenied
Undenied

At last the thawing has begun
Come trade your darkness for the sun
Melting the chill of winter’s turn
So celebrate and let your fires burn
The Lords of Summer have returned


2016년 11월 23일 수요일

Metallica - Atlas, Rise!

Bitterness and burden
Curses rest on thee
Solitaire and sorrow
All Eternity

괴로움과 부담감
너에 대한 악담
고립됨과 슬픔
이 모든것이 영원하다


Save the Earth and claim perfection
Deem the mass and blame rejection
Hold the pose, reign perception
Grudges break your back

이 세상을 구하고 완벽함을 주장하지만
대부분 추측이고 거절을 떠넘기지
자세를 잡고, 인식을 지배하여
원한은 애를 쓰고 있다


All you bear
All you carry
All you bear
Place it right on, right on me

네가 지탱한 모든 것
네가 견딘 모든것
네가 지탱한 모든 것
그것들을 내려놔라, 바로 나에게


Die as you suffer in vain
Own all the grief and the pain
Die as you hold up the skies
Atlas, Rise!

헛된 고통으로 넌 죽고
모든 비탄과 고통은 나의 것이 되었지
하늘을 떠 받들어 넌 죽었지
거인이여, 일어나라!


How does it feel on your own?
Bound by the world all alone
Crushed under heavy skies
Atlas, Rise!

너 자신은 어떻게 느끼는가?
홀로 세상에 묶여
찌뿌린 하늘아래 으스러졌다
거인이여, 일어나라!

Crucify and witness
Circling the sun
Bastardize and ruin
What have you become?

벌받고 증인이 되어
태양을 돌며
조잡하고 파괴되어
뭘 할 수 있겠는가?

Blame the world, and blame your maker
Wish ‘em to the undertaker
Crown yourself the other savior
So you carry on

세상을 탓하고, 조물주를 탓해보고
장의사에게 바라길
다른 구세주에게 왕관을 씌우라
그래서 계속 하길


All you bear
All you carry
All you bear
Place it right on me, right on me

Die as you suffer in vain
Own all the grief and the pain
Die as you hold up the skies
Atlas, Rise!

How does it feel on your own?
Bound by the world all alone
Crushed under heavy skies
Crushed under heavy skies
Atlas, Rise!

Masquerade as maker
Heavy is the crown
Beaten down and broken
Drama wears you down

조물주로 가장했지만
무겁기만한 왕관
얻어맞고 깨져
널 지치게 하는 연극

Overload, the martyr stumbles
Hit the ground and heaven crumbles
All alone, the fear shall humble
Swallow all your pride

지친, 순교자는 휘청거리고
땅에 부딫혀 천국은 산산조각난다
홀로 남아, 두려움은 비천해지고
네 모든 자존심을 삼킨다

All you bear
All you carry
All you bear
Place it right on, right on me

Die as you suffer in vain
Own all the grief and the pain
Die as you hold up the skies
Atlas, Rise!

How does it feel on your own?
Bound by the world all alone
Crushed under heavy skies
Crushed under heavy skies
Atlas, Rise!


2016년 11월 22일 화요일

Metallica - HARDWIRED

HARDWIRED


ln the name of desperation
ln the name of wretched pain
ln the name of all creation
Gone insane

자포자기의 이름으로
비참한 고통의 이름으로
모든 창조물의 이름으로
미쳐버렸다

We're so fucked
Shit outta luck
Hardwired to self-destruct

그래서 우린 좇됐고
재수도 더럽게 없다
자멸할 수 밖에 없다

On the way to paranoia
On the crooked borderline
On the way to great destroyer
Doom design

피해망상증이 되려는
비뚤어진 경계선상에서
위대한 파괴자가 되기 위한
파멸의 설계

We're so fucked
Shit outta luck
Hardwired to self-destruct

그래서 우린 좇됐고
재수도 더럽게 없다

자멸할 수 밖에 없다

Once upon a planet burning
Once upon a flame
Once upon a fear returning
All in vain

옛날에 행성이 불타고
옛날에 불꽃이 불타올랐고
옛날에 두려움이 돌아올적에
모든게 헛수고가 됐다

Do you feel that hope is fading?
Do you comprehend?
Do you feel it terminating?
ln the end

희망이 사라져 가는 것을 느낄 수 있나?
무슨 뜻인지 알까?
종말이 느껴지나?
종말의 때에


We're so fucked
Shit outta luck
Hardwired to self-destruct
Hardwired to self-destruct

Self-destruct
Self-destruct
Self-destruct

2016년 11월 14일 월요일

OpenOffice - Calc에서 중복 데이터 제거하기..

업무 처리하다 보니..

엑셀로 데이터를 넘겨 받음..

양이 좀 많아서.. 중복 데이터 삭제 기능 검색울 해 보았으나..

엑셀의 중복 제거 기능만 나옴...

오픈오피스는 아무래도 마이너해서 그런가..

한글로 검색 말고.. 영어로 구글링해서 찾은 내용..



1. 중복 제거할 영역 선택

2. 상단 메뉴 - 데이터 - 표준필터 선택

3. 필드 이름을 - 없음으로 선택

4. 하단의 옵션 보기 - 중복 허용 안됨 체크

5. 확인 누르면 끗~~~

2016년 11월 11일 금요일

2. 구글 지도 API로 가까운 매장 찾기 구현

이하 거리 구하기 서버 측 코드

asp + Msxml2.ServerXMLHTTP.6.0 사용 함.

의외로 간단~

<%
Session.CodePage = 65001
Response.ContentType = "application/json"
Response.Charset = "utf-8"


Dim callUrl 
Dim HttpReq
Dim params
origins = Request.QueryString("origins")
destinations = Request.QueryString("destinations")

callUrl = "https://maps.googleapis.com/maps/api/distancematrix/json?origins="&origins&"&destinations="&destinations&"&mode=transit&language=ko-KO&key=구글API키"
Set HttpReq = Server.CreateObject("Msxml2.ServerXMLHTTP.6.0")

HttpReq.open "GET", callUrl, False
HttpReq.send

Response.Write HttpReq.responseText
%>

1. 구글 지도 API로 가까운 매장 찾기 구현

이하 웹페이지 소스 일부. 뭐 내가 짠게 우왕 굿은 아니지만..

이래저래 잘 활용해 보시길...

script에 Google API 키 발급받아서 넣는거 잊지 말길...


var curPos = null;
var directionsDisplay = null;
var directionsService = null;
var storeList = new Array();
var findStoreFlag = false;
storeList[0] = {lat: 37.5707940, lng: 126.9710600};
storeList[1] = {lat: 37.5704049, lng: 126.9722485};
storeList[2] = {lat: 37.5060580, lng: 127.0033890};
storeList[3] = {lat: 37.4843585, lng: 126.9022739};
storeList[4] = {lat: 37.6505030, lng: 127.0619600};
storeList[5] = {lat: 37.3850110, lng: 127.1206630};
storeList[6] = {lat: 37.5544795, lng: 126.9366329};
storeList[7] = {lat: 37.6677905, lng: 126.7646956};
storeList[8] = {lat: 37.7525750, lng: 127.0690960};
function initMap() { 
 var map = new google.maps.Map(document.getElementById('map'), {
  zoom: 14,
  center: storeList[0]
 });
 directionsDisplay = new google.maps.DirectionsRenderer;
 directionsService = new google.maps.DirectionsService; 
 directionsDisplay.setMap(map); 
 getLocation();
}

function getLocation() {  //위치 조회시작..

 if (navigator.geolocation) {
  navigator.geolocation.getCurrentPosition(showPosition,showError);
 } else {
  alert("Geolocation is not supported by this browser.");
  var map = new google.maps.Map(document.getElementById('map'), {
   zoom: 14,
   center: storeList[0]
  });
 }
}

function fnSetCurLoc(position){ // 현재 위치를 저장
 curPos = {
  lat: position.coords.latitude,
  lng: position.coords.longitude
 };
}

function showPosition(position) { 
 curPos = {
  lat: position.coords.latitude,
  lng: position.coords.longitude
 };
 alert(curPos);
 fnFindStore();//가까운 위치 미리 찾기...
 directionsService.route({
   origin:curPos,  // Haight.
   destination: storeList[document.getElementById('selStore').value],
   travelMode: google.maps.TravelMode.TRANSIT,
   unitSystem: google.maps.UnitSystem.METRIC,
   avoidHighways: false,
   avoidTolls: false
  }, function(response, status) {
  if (status == google.maps.DirectionsStatus.OK) {
   directionsDisplay.setDirections(response);
  } else {
   window.alert('Directions request failed due to ' + status);
  }
 });
}


var minDistance = 10000000;
var minDistInx = 0;
function fnFindStore(){
 if(!findStoreFlag){  //한번만 찾게 flag로 조정
  $.ajaxSetup({
   async: false
  });
 
  for(listCnt = 0 ; listCnt &lt; storeList.length ; listCnt ++){
   var callUrl = "/api/google/retDistance.asp";
   var sendParams = {  
    origins : curPos.lat + "," + curPos.lng, 
    destinations : storeList[listCnt].lat + "," + storeList[listCnt].lng
   };
   console.log(listCnt);
   $.getJSON( callUrl, sendParams ).done(function( data ) {
    console.log( "JSON Data: " + data.rows[0].elements[0].distance.value + ":::" + listCnt + ":::" + minDistInx + "::::" + minDistance);
    if(minDistance &gt; data.rows[0].elements[0].distance.value){    //최소 거리를 계산해서 저장...
     minDistance = data.rows[0].elements[0].distance.value;
     minDistInx = listCnt;
     console.log(minDistance);
     console.log(listCnt);
    }   
   }).fail(function( jqxhr, textStatus, error ) {
    var err = textStatus + ", " + error;
    console.log( "Request Failed: " + err );
   });
  }
  
  if(!findStoreFlag) findStoreFlag = true;
 }
}

function fnSetStore(){
 console.log(minDistance);
 console.log(minDistInx);
 document.getElementById('selStore').value = minDistInx;
 directionsService.route({
   origin:curPos,  // Haight.
   destination: storeList[minDistInx],
   travelMode: google.maps.TravelMode.TRANSIT,
   unitSystem: google.maps.UnitSystem.METRIC,
   avoidHighways: false,
   avoidTolls: false
  }, function(response, status) {
  if (status == google.maps.DirectionsStatus.OK) {
   directionsDisplay.setDirections(response);
  } else {
   window.alert('Directions request failed due to ' + status);
  }
 });
}

function showError(error){
 switch (error.code){
  case error.PERMISSION_DENIED:
   alert("User denied the request for Geolocation.");
   break;
  case error.POSITION_UNAVAILABLE:
   alert("Location information is unavailable.");
   break;
  case error.TIMEOUT:
   alert("The request to get user location timed out.");
   break;
  case error.UNKNOWN_ERROR:
   alert("An unknown error occurred.");
   break;
 }
}

0. 구글 지도 API로 가까운 매장 찾기 구현

0. 회사에서 모바일 환경에서 매장으로 길찾기를 하게 해달라고 함.

1. 구글, 네이버, 다음 3개의 지도 서비스 검토

2. 일단 네이버, 다음은 제휴를 맺은 업체만 길찾기를 제공함.

   제휴가 없으면.. 그냥 지도에 점찍기 정도만 가능. 기타 기능은 서술 생략하겠음.

3. 구글은 길찾기를 무료로 제공하나!!!! 찾기 모드에서

   걷기, 자전거, 자가용... 모두!!!! 정상 작동하지 않는다..

   오직 대중교통 안내만 가능... 어쩔수 없이 이걸로 구현

   그나마 천만 다행인게 대중교통 안내에 도보 정보도 표시가 된다.

4. 기본 예제들은 구글 지도 API에서 제공

5. 개발한 부분은 현재 위치에서 각 매장들간의 거리를 측정하여

   데이터를 미리 갖고 있다가, 가까운 매장 검색 버튼을 눌렀을 때

   지도에 표기만 하면 됨.

6. 지도 API의 사용의 기본은 HTML5의 navigator.geolocation 를 사용하여

   접속 기기의 위도와 경도를 받아오는 것 부터 시작하면 된다.

7. 지도 그리는건 알아서들 하시고(https://developers.google.com/maps/web/?hl=ko)

   거리 측정에 대해서만 기술함.

8. 일단 길 찾기 class는 다음과 같다. 해당 class의 API와 예제를 참고하면

   길찾기를 간단히 구현 할 수 있다.

    var directionsDisplay = new google.maps.DirectionsRenderer;
    var directionsService = new google.maps.DirectionsService;

9. 가까운 지점의 검색은 distancematrix class를 사용한다.

   이 부분은 xml 또는 json 형태의 데이터를 수신하는 형식으로 사용 가능하다.

   xml은 parsing 하기 귀찮으므로 간단한 json 형태로 구현 하기로 했다.

10. 그런데.. 이 거리 구하는게 google에 실시간으로 통신을 해야 해서

   cross-domain 문제가 발생한다. 물론 jquery의 jsonp 형태의 통신을 하면

   일단 수신은 가능하나! 내 경우에 Unexpected Exception이 발생.

11. 이래저래 구글링을 해보았고, 내린 결론은

    수신되는 json 형식에 문제가 있다고 판단됨.

    뭐 엔터키를 치환해주면 된다는 글도 봤으나. 전부 안됨.

12. 방향 선회하여 json 통신으로 다시 개발.

13. 회사 개발 환경은 IIS 7.5 + ASP 환경으로 ASP에서 xml 통신을 사용하여

     위치 검색 결과를 수신하여 다시 웹페이지에서 json으로 받는 식으로 우회 함.

14. 개인적으로 cross-domain 문제 해결 할 시에 jquery로 다른 domain을

    호출하는 것 보다, Server에서 호출하면 쉽게 해결이 된다고 판단됨.

15. 여튼 구현 성공!


BE Band (비밴드) - 2024년 03월 02일 잠실새내 락앤롤욱스 공연

나의 10~20대를 보낸 잠실에서의 공연.. 오랜만에 가보니.. 여기가.. 마눌님과 자주 가던 영화관이었는데... 여긴 뭐가 있었는데... 란 추억도 떠올리며 기분좋게 감.​ 공연장은 좀 협소한 편이었고, 인천의 쥐똥나무 보다는 약간 크고... 인천 ...