'하늘을 사랑한 사람 여행기' 카테고리의 다른 글
남해 보리암 (0) | 2016.05.29 |
---|---|
남해 독일 마을 (0) | 2016.05.29 |
전주한옥마을_풍남문 (0) | 2016.05.06 |
윤동주 시인님의 언덕에 가다 (0) | 2016.04.09 |
윤동주 시인님 문학관에 가다 (0) | 2016.04.09 |
남해 보리암 (0) | 2016.05.29 |
---|---|
남해 독일 마을 (0) | 2016.05.29 |
전주한옥마을_풍남문 (0) | 2016.05.06 |
윤동주 시인님의 언덕에 가다 (0) | 2016.04.09 |
윤동주 시인님 문학관에 가다 (0) | 2016.04.09 |
남해 독일 마을 (0) | 2016.05.29 |
---|---|
전주한옥마을 2 (0) | 2016.05.06 |
윤동주 시인님의 언덕에 가다 (0) | 2016.04.09 |
윤동주 시인님 문학관에 가다 (0) | 2016.04.09 |
외도 여행 두번째 (0) | 2015.05.31 |
-- 분석 함수
-- RANK OVER()
-- ROW_NUMBER() OVER() ** 중요 제일 많은 씀 **
-- 순위를 구함.
-- RANK() OVER()는 동일 순위인 경우 1,1,3, 형식으로 출력하지만
-- ROW_NUMBER() OVER()는 동일 순위인 경우 1,2,3, 형식으로 출력
-- DENSE_RANK() OVER()는 동일 순위인 경우 1,1,2 형식으로 출력
-- ROW_NUMBER() OVER()는 매우매우매우 중요한 함수이므로 반드시 알아 둘것 !!!!!!!!!!!!!!!!!!!!!!!
--기본급 내림차순으로 순위를 구하기
SELECT name, basicpay, RANK() OVER(ORDER BY basicpay DESC) 순위 FROM insa; -- 비교데이타가 똑같으면 순위를 건너뜀
SELECT name, basicpay, ROW_NUMBER() OVER(ORDER BY basicpay DESC) 순위 FROM insa; -- 비교데이타가 똑같아도 순위를 차례대로 매김
-- 기본급 내림차순으로 순위. 단, 기본급이 같으면 수당 내림차순.
SELECT name, basicpay, sudang, RANK() OVER(ORDER BY basicpay DESC, sudang DESC) 순위 FROM insa;
SELECT name, basicpay, sudang, ROW_NUMBER() OVER(ORDER BY basicpay DESC, sudang DESC) 순위 FROM insa;
-- 부서별 기본급의 내림차순 순위 구하기
SELECT name, basicpay, buseo,
RANK() OVER(PARTITION BY buseo ORDER BY basicpay DESC, sudang DESC) 순위
FROM insa;
SELECT name, basicpay, buseo,
ROW_NUMBER() OVER(PARTITION BY buseo ORDER BY basicpay DESC, sudang DESC) 순위
FROM insa;
-- 출신도별 부서별 순위(학년의 반별)
SELECT name, basicpay, city, buseo,
RANK() OVER(PARTITION BY city ORDER BY basicpay DESC, sudang DESC) 순위
FROM insa;
-- 여자 인원수가 가장 많은 부서는?
SELECT buseo, COUNT(*) FROM insa
WHERE SUBSTR(ssn,8,1) IN (2,4,6)
GROUP BY buseo;
SELECT buseo FROM(
SELECT buseo, COUNT(*) cnt, RANK() OVER(ORDER BY COUNT(*) DESC) 순위
FROM insa WHERE SUBSTR(ssn,8,1) IN (2,4,6) GROUP BY buseo
) WHERE 순위 =1;
-- 기본급여 많이 받는 1~10등 까지 출력(name, basicpay)
SELECT name, basicpay,RANK() OVER(ORDER BY basicpay DESC) 순위 FROM(
SELECT name, basicpay, RANK() OVER(ORDER BY basicpay DESC) 순위 FROM insa
) WHERE 순위 <=10;
-- 기본급 상위 10% 출력(name, basicpay)
SELECT name, basicpay FROM(
SELECT name, basicpay, RANK() OVER(ORDER BY basicpay DESC) 순위 FROM insa
)WHERE 순위<=TRUNC((SELECT COUNT(*) FROM insa) *0.1);
-- 기본급 하위 10% 출력(
SELECT name, basicpay FROM(
SELECT name, basicpay, RANK() OVER(ORDER BY basicpay) 순위 FROM insa
)WHERE 순위<=TRUNC((SELECT COUNT(*) FROM insa) *0.1);
-- 부서별 기본급여 가장 높은 사람들 출력( name, buseo, jikwi)
SELECT name, buseo,basicpay, RANK() OVER(PARTITION BY buseo ORDER BY basicpay DESC) 순위
FROM insa; -- 일단 부서별 순위를 매기는 쿼리
SELECT name, buseo,basicpay FROM(
SELECT name, buseo,basicpay,
RANK() OVER(PARTITION BY buseo ORDER BY basicpay DESC) 순위
FROM insa
) WHERE 순위=1;
-- ***** 나중에 게시판 작성 할 때 사용하는 쿼리 형식이므로 반드 암기 해야함. *****
-- ROW_NUMBER()를 이용한 쿼리가 아래 ROWNUM을 사용한 쿼리보다 우수
SELECT num,name,basicpay FROM(
SELECT num, name, basicpay, ROW_NUMBER() OVER(ORDER BY num DESC) rnum FROM insa
) WHERE rnum>= 10 AND rnum <=15 ORDER BY num DESC;
SELECT num,name,basicpay FROM(
SELECT ROWNUM rnum, num, name, basicpay FROM(
SELECT num, name, basicpay FROM insa ORDER BY num DESC
)
)WHERE rnum>=10 AND rnum<=15;
출처 : http://tibang.tistory.com/
오라클에서 COMMENT 다는 법 (0) | 2019.04.24 |
---|---|
오라클 테이블스페이스 생성 (0) | 2019.04.04 |
oracle hr 사용자 unlock (0) | 2016.01.25 |
ORACLE PLS-553 오류 처리 (0) | 2015.04.29 |
오라클 백업 (0) | 2015.04.24 |
@Aspect annotation 기반 AOP 사용
1. 로그인 하지 않은 사용자가, 로그인페이지를 제외한 다른페이지에 접근했을 때
2. 접근권한이 없는(세션값) 사용자가, 접근할 수 없는 페이지에 접근했을 경우 등
로깅이나, 공통기능을 사이트 전반에 적용시켜야 할 때 이용한다.
@Aspect 어노테이션은 AspectJ 5버전에 새롭게 추가된 어노테이션으로서, xml파일에 Advice 및 Pointcut 등의 설정을 하지않고도,
자동으로 Advice를 적용할 수 있다.
#STS를 사용할 경우 메이븐 dependency 추가
<!-- AspectJ -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${org.aspectj-version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${org.aspectj-version}</version>
</dependency>
# spring 환경 설정 xml 파일에 아래 내용을 추가한다.
<aop:aspectj-autoproxy />
<bean id="loginAspect" class="com.common.LoginAspect"/>
# aspect 구현 소스
@Aspect
public class LoginAspect {
@Pointcut("execution(public * com.admin..*(..))")
private void adminMethod(){}
@Pointcut("execution(public * com.bbs..*(..))")
private void bbsMethod(){}
@Pointcut("execution(public * com.common..*(..))")
private void commonMethod(){}
@Pointcut("execution(public * com.onm.administrator..*(..))")
private void onmAdministratorMethod(){}
@Pointcut("execution(public * com.onm.membership..*(..))")
private void onmMembershipMethod(){}
@Pointcut("execution(public * com.onm.report..*(..))")
private void onmReportMethod(){}
private String[] access_url = {
};
@Around(value ="adminMethod() || bbsMethod() || commonMethod()
|| onmAdministratorMethod() || onmMembershipMethod() || onmReportMethod()")
public Object trace(ProceedingJoinPoint joinPoint) throws Throwable{
System.out.println("#### LoginAspect 시작 ####");
HttpServletRequest request = null;
HttpServletResponse response = null;
for ( Object o : joinPoint.getArgs() ){
if ( o instanceof HttpServletRequest ) {
request = (HttpServletRequest)o;
}
if ( o instanceof HttpServletResponse ) {
response = (HttpServletResponse)o;
}
}
try{
HttpSession session = request.getSession();
String loginId = (String) session.getAttribute("loginId");
String userEnterType = (String) session
.getAttribute("UserEnterType");
System.out.println("### Margo ==> loginId : " + loginId);
if (loginId == null || "".equals(loginId)) {
System.out.println("### Margo ==> in if loginId : "
+ loginId);
throw new RuntimeException("먼저 로그인을 하셔야 합니다.");
}
}catch(Exception e){
throw new RuntimeException("먼저 로그인을 하셔야 합니다.");
}
Object result = joinPoint.proceed();
System.out.println("#### LoginAspect 끝 ####");
return result;
}
}
1라인 에 적용한 @Aspect 어노테이션을 적용한 클래스는 advice구현메소드나, pointcut정의를 포함할 수 있게된다.
4 라인에 AspectJ의 pointcut 표현식으로 pointcut을 정의한다.
execution(수식어패턴 리턴타입 클래스이름패턴 이름패턴(파라미터패턴))
수식어패턴: public, protected 등
각패턴은 * 를 이용하여 모든 값을 표현할 수 있고. '..' 를 이용하여 0개 이상이라는 의미를 표현가능
Controller라고 끝나는 이름의 클래스에만 적용할때는 - execution(public * com.bbs..*Controller.*(..))
5라인 처럼 pointcut 정의 메소드는 무조건 리턴타입이 void여야한다.
이 메소드는 advice 관련 어노테이션인 @around의 값으로 사용될 메소드이다.
이제 trace메서드를 이용해서, 필요한 처리를 구현하면된다.
!!!!!!!!!!!!!!!! 여기서...중요한게 있다!!!!!!
27라인에서 joinPoint는 수행될 메소드인데, 보통 세션값 이용할때 request에서 빼내오는데
그 원래 해당메소드 파라메타로 HttpServletRequest가 지정되어 있지 않으면, request가 null이 되겠지..
끝으로 51,55라인에서 뿌린 Exception을 잡을 놈도 xml에 정의해야한다.
servlet xml에다가 추가해주자
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<prop key="java.lang.Exception">
index
</prop>
</property>
</bean>
출처 : http://winmargo.tistory.com/164
전자정부프레임워크 json 설정 (0) | 2016.11.08 |
---|---|
스프링 한글 깨짐 처리 (0) | 2016.05.15 |
Spring3에서 Tiles2 설정 (0) | 2016.04.21 |
Apache Titles 적용하기 (0) | 2016.04.21 |
spring에서 현재의 HttpServletRequest 가져오는 법 (0) | 2016.04.20 |
google map 서비스 만드는 과정
1. sdk manager로 들어가서 google play service를 설치한다.
2. 라이브러리를 등록한다.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.vincentgoo.myapplication">
<!-- 내 프로젝트에 대한 보안 수준 설정. 내 프로젝트의 패키지가 com.example.vincentgoo.myapplication 인 경우 -->
<!--android:name="com.example.myapplication.permission.MAPS_RECEIVE"-->
<permission
android:name="com.example.vincentgoo.myapplication.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<!-- 구글맵 API v2의 권한 설정 -->
<uses-permission android:name="com.example.vincentgoo.myapplication.permission.MAPS_RECEIVE" />
<!-- 구글맵 API v2의 일반 권한 설정. -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<!-- 일반 권한 설정 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- OpenGL 사용 설정 -->
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<!-- 라이브러리 사용 설정 -->
<uses-library android:name="com.google.android.maps" />
<!-- 구글맵 API v2 키 설정 -->
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyAnZOuHXGxWoTuxXejtC0BWfuEJE7vnJAI" />
<!-- GMS 라이브러리 버전 설정 -->
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
<구글 map api key 받기>
작업 1 : 고급설정에 path에 C:\Program Files\Java\jdk1.7.0_40\bin 설정여부를 확인한다. 작업 2 : C:\Users\a\.android/debug.keystore을 이용해서 MD5값을 생성하기 위해서 콘솔창을 실행하고 C:\Users\a\.android/으로 경로를 이동한다. 작업 3 : keytool -v -list -alias androiddebugkey -keystore debug.keystore -storepass android -keypass android 실행한다. 작업 4 : 'SHA1:'뒤에 있는 값을 이용하여 구글맵을 사용하기 위한 API키를 발급받는다. 작업 5 : 구글맵을 사용하기 위한 API키를 발급받기 위해 https://code.google.com/apis/console/사이트에 접속한다. 작업 6 : Google Maps Android API v2 을 'API사용설정'을 클릭한다. 작업 7 : Api Acess서브메뉴선택후 create new android key버튼을 클릭한다. 작업 8 : SHA1;어플리케이션 패키지명을 입력후 create버튼을 클릭한다. 작업 9 : 작업8단계에서 생성된 API키를 androidmanifast.xml파일에서 <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="API키" /> value속성에 작성한다
https://code.google.com/apis/console/ 접속
Google Maps APIs 에서 Google Maps Android API 클릭
Credentials 클릭
API key 설정
역사상 위대한 여자 성악가 중 한 사람으로 기록되고 있는
미국의 콘트랄토(여성 최저음 영역의 가수) 마리안 앤더슨.
그녀는 가난한 가정 형편과 흑인이라는 이유로 많은 어려움이 있었지만
1925년 28세의 나이에 '뉴욕 필하모닉' 주최 신인 콩쿠르에서
많은 경쟁자를 뒤로하고 1등으로 합격하였습니다.
1935년 흑인 최초로 잘츠부르크 음악제에 섰고
이 공연을 본 거장 지휘자 아르투로 토스카니니는
한 세기에 한 번 나올만한 소리를 가졌다며
아낌없는 찬사를 보내기도 했습니다.
그리고 1939년 워싱턴 링컨 기념관 광장에서 진행한
무료 야외 연주회에서는 7만 5천여 명의 청중이 몰릴 정도로
그녀는 많은이들에게 유명해졌습니다.
어느 날 그녀가 서는 무대마다 빠짐없이 참석해 취재했던
한 기자가 그녀에게 다음과 같이 질문했습니다.
"당신의 인생 중에서 가장 행복했던 때는 언제입니까?"
기자는 그녀가 공연을 마친 뒤 감격으로 눈물을 흘리던
모든 순간을 함께했었기 때문에
그녀가 어떤 대답을 할지 짐작할 수 있었습니다.
그런데 그녀의 입에서 뜻밖의 대답이 흘러나왔습니다.
"제 일생에서 가장 행복했던 순간은 늙으신 어머니께
이젠 피부색으로 인한 차별을 받지 않게 되었다고 말씀드릴 때였습니다."
마리안 앤더슨은 가난했고 차별당했지만
꿈을 향한 도전을 포기하지 않았고
결국 그녀는 가장 행복한 순간을 얻을 수 있었습니다.
우리는 원하는 것에 주저하지 않을 때
비로소 행복해질 수 있습니다.
꿈을 향해 도전하는 삶을 사시길 바랍니다.
착한 빵집 아저씨 (0) | 2016.05.11 |
---|---|
“저는 곧 세상을 떠납니다. 누군가 이걸 읽어주면 좋겠어요.” (0) | 2016.05.06 |
제이슨 마라즈 - I'm yours (0) | 2016.04.23 |
빈틈 (0) | 2016.04.23 |
더블클릭을 하시면 이미지를 수정할 수 있습니다 (0) | 2016.04.23 |
=============================================================
키 | 자바스크립트 코드(숫자)
=============================================================
출처 : http://Ssemi.net
jQuery : $(window).load, $(document).ready 로드 후 실행되는 시간 (0) | 2020.01.31 |
---|---|
jquery 화면 상단으로 이동 (0) | 2019.12.19 |
jQuery selectBox 제어 (0) | 2016.04.14 |
jQuery 자식 팝업 창에서 부모 창 컨트롤 (0) | 2016.03.17 |
jquery radio, select, checkbox (0) | 2013.10.28 |
평소에 시간이 나는대로 팝송을 들으면서 따라 불러보세요. 분명히 어느 순간 자신의 영어 실력이 늘어있음을 스스로 느낄 것입니다.
I’m yours (전 당신 거예요)
sung by Jason Mraz
Well you done done me in, you bet I felt it
(당신이 제게로 왔고, 제가 느꼈음을 당신도 알 거예요)
I tried to be chill but you're so hot that I melted
(냉정해지려 했지만, 당신이 너무도 멋져 난 주체할 수 없었어요)
I fell right through the cracks (전 당신에게 완전히 빨려들었어요)
Now I'm trying to get back (이제 난 당신에게서 빠져나오려고 해요)
Before the cool done run out (내 마음이 식어버리기 전에)
I'll be giving it my bestest (내 모든 것을 줄 거예요)
And nothing's gonna to stop me but divine intervention (무엇도 절 막을 수는 없어요)
I reckon it's again my turn to win some or learn some
(제가 이길지 아니면 좀 더 배워야 하는 건지 가늠해봤어요)
But I won't hesitate no more, no more (난 더 이상 주저하지 않을 거예요, 더 이상은)
It cannot wait, I'm yours (기다릴 수 없어요, 전 당신 거예요)
Well open up your mind and see like me (마음을 열고 저처럼 바라봐요)
Open up your plans and damn you're free (계획 따위는 치워버려요, 당신은 자유로우니까요)
Look into your heart and you'll find love love love love (당신의 마음속에는 사랑이 있을 거예요)
Listen to the music of the moment, people dance and sing (사람들이 춤추고 노래하는 순간에)
We're just one big family (우리는 한 가족이에요)
And it's our God-forsaken right to be loved love loved love loved
(버림받은 당신의 마음이 사랑으로 변할 거예요)
So I won't hesitate no more, no more
It cannot wait I'm sure (난 정말 기다릴 수 없어요)
There's no need to complicate (복잡하게 생각하지 말아요)
Our time is short (우리에게 주어진 시간은 짧으니까요)
This is our fate, I'm yours (이건 우리의 운명이에요, 전 당신의 것이니까요)
Scooch on over closer dear (가까이 다가와 보세요)
And I will nibble your ear (당신의 귀를 살짝 물 수 있도록)
I've been spending way too long checking my tongue in the mirror
(내 혀를 거울로 보기 위해 시간을 꽤 많이 허비했어요)
And bending over backwards just to try to see it clearer
(확실하게 보려고 구부리기까지 했어요)
But my breath fogged up the glass (내 숨결이 거울 안에 가득했고)
And so I drew a new face and I laughed (거기에 내 얼굴을 그리고는 웃어버렸죠)
I guess what I'll be saying is there ain't no better reason
(제가 지금 하는 말은 더 좋은 이유가 없을 거예요)
To rid yourself of vanities and just go with the seasons
(당신의 자존심을 버리고 그냥 이 순간을 따라가세요)
It's what we aim to do (이게 우리의 목표에요)
Our name is our virtue (우리의 이름이 곧 우리의 장점이에요)
But I won't hesitate no more, no more
It cannot wait, I'm yours
Well open up your mind and see like me
Open up your plans and damn you're free
Look into your heart and you'll find that the sky is yours
(당신의 마음속에는 사랑이 있고, 저 하늘이 당신의 것이라는 걸 알게 될 거예요)
So please don't please don't please don't (제발 그러지 마세요)
There's no need to complicate
'Cause our time is short
This oh this oh this is our fate I'm yours!
“저는 곧 세상을 떠납니다. 누군가 이걸 읽어주면 좋겠어요.” (0) | 2016.05.06 |
---|---|
인생에서 가장 행복 했던 순간 (0) | 2016.04.27 |
빈틈 (0) | 2016.04.23 |
더블클릭을 하시면 이미지를 수정할 수 있습니다 (0) | 2016.04.23 |
리더십이란 모범을 보이는 것이다. (0) | 2016.04.23 |