It's Repository

blog.selpa.co.kr

포토로그



이클립스 톰켓 추가 안될때 개발 이야기

이클립스에서 Tomcat Server를 추가하려고 할때

next 버튼이 안눌러지는 경우가 있다.


해당 워크스페이스에 들어가서  

.metadata\.plugins\org.eclipse.core.runtime\.settings

 

폴더 밑
org.eclipse.wst.server.core.prefs

org.eclipse.jst.server.tomcat.core.prefs

 

이 2개의 파일들을 지워주고

 

이클립스를 재시작 해보면 끝


^^~




아이피 대역 검사 방법 개발 이야기

숫자로 바꿔서 사이값인지 비교한다.

아이피 192.168.0.1 을   
3232235577L 

아이피 192.168.0.57 을 
3232235778L

바꿔서 비교한다.

192168000001
192168000057

로 바꿔서 해도 될듯한다. 확인은 안해봤다 ㅋ~

---------------------------------------------
// example : 192.168.1.2
public long ipToLong(String ipAddress) {

// ipAddressInArray[0] = 192
String[] ipAddressInArray = ipAddress.split("\\.");

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

int power = 3 - i;
int ip = Integer.parseInt(ipAddressInArray[i]);

// 1. 192 * 256^3
// 2. 168 * 256^2
// 3. 1 * 256^1
// 4. 2 * 256^0
result += ip * Math.pow(256, power);

}

return result;

}

public long ipToLong2(String ipAddress) {

long result = 0;

String[] ipAddressInArray = ipAddress.split("\\.");

for (int i = 3; i >= 0; i--) {

long ip = Long.parseLong(ipAddressInArray[3 - i]);

// left shifting 24,16,8,0 and bitwise OR

// 1. 192 << 24
// 1. 168 << 16
// 1. 1 << 8
// 1. 2 << 0
result |= ip << (i * 8);

}

return result;
}

public String longToIp(long i) {

return ((i >> 24) & 0xFF) + 
                   "." + ((i >> 16) & 0xFF) + 
                   "." + ((i >> 8) & 0xFF) + 
                   "." + (i & 0xFF);

}

public String longToIp2(long ip) {
StringBuilder sb = new StringBuilder(15);

for (int i = 0; i < 4; i++) {

// 1. 2
// 2. 1
// 3. 168
// 4. 192
sb.insert(0, Long.toString(ip & 0xff));

if (i < 3) {
sb.insert(0, '.');
}

// 1. 192.168.1.2
// 2. 192.168.1
// 3. 192.168
// 4. 192
ip = ip >> 8;

}

return sb.toString();
}

[오라클] 뷰 권한 ORA-01720 oracle/mysql

B 유저가 A 유저에게 A-table 셀렉트 부여를 받고 B-view를 생성하였다.

B 유저는 다시 C 유저에게 B-view 셀렉트를 부여 하려고 하니

부여가 되지 않았다.

원인은 조금 생각해보면 이해 할수 있었지만


문제는 

첨에 B유저 생성시 A유저를 복제하였는지

B-view 에 C유저 권한이 있었다는것이였다.

이상해서 C유저의 권한을 삭제하고 재생성하려니 오류가 있어서 확인하게 되었다.


해결책은

A 유저가 B유저에게  A-table 셀렉트 부여 및 권한을 받으면 된다.

GRANT SELECT ON SELPA.TN_CONFM TO SELPA2; 가 아닌

GRANT SELECT ON SELPA.TN_CONFM TO SELPA2 WITH GRANT OPTION; 를 부여

말 그대로 셀렉트 부여 뿐만 아니라 권한부여 인듯 하다.

그래서 다시 C유저에게 셀렉트 부여가 가능한듯 하다

-끝-



[오라클] 컬럼명으로 도메인 검증하기 oracle/mysql

select 
T.COLUMN_NAME
, count (T.COLUMN_NAME)
from 
(
SELECT 
distinct COLUMN_NAME, DATA_TYPE, DATA_LENGTH
FROM ALL_TAB_COLUMNS 
WHERE OWNER = 'SELPA'
order by COLUMN_NAME asc
) T group by T.COLUMN_NAME HAVING COUNT(T.COLUMN_NAME) > 1

[오라클] 테이블스페이스 생성 oracle/mysql

먼저 오라클이 테이블스페이스는 2종류가 있다

default tablespace
temporary tablespace

0. 오라클 버전정보 확인
select * from v$version


1. 내정보 확인
select * from user_users


2. 기존 테이블스페이스 및 저장소 위치를 확인한다.
SELECT FILE_NAME, TABLESPACE_NAME, AUTOEXTENSIBLE, MAXBYTES, INCREMENT_BY 
FROM DBA_DATA_FILES;


3. 테이블스페이스를 생성한다.
CREATE TABLESPACE SELPA_DATA
DATAFILE 'D:\ORADATA\SELPA_DATA.DBF' SIZE 1G
AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED
LOGGING
ONLINE
PERMANENT
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT AUTO
FLASHBACK ON;


CREATE TABLESPACE SELPA_IDX
DATAFILE 'D:\ORADATA\SELPA_IDX.DBF' SIZE 1G
AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED
LOGGING
ONLINE
PERMANENT
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT AUTO
FLASHBACK ON;


4. 유저의 테이블스페이스를 변경한다.
alter user SELPA default tablespace SELPA_DATA;


-끝-

추가1 : 1개의 테이블스페이스가 여러개의 데이터 파일을 가질수 있는가?  정답은 그렇다.

alter tablespace selpa  add datafile 'D:\ORADATA\SELPA_DATA_02.DBF' size 1G; 
이럴경우 데이터가 여러개의 데이터파일에 존재하며 1개의 데이터파일이 깨지만 전체 데이터 파일을 사용할수 없다.
물론 데이터가 많을경우 속도는 빠르다.

추가2 : 기존 생성된 테이블과 인덱스의 테이블스페이스 변경은 가능한가? 정답은 그렇다.
<TABLE>
ALTER TABLE 테이블명 MOVE TABLESPACE 테이블스페이스명;

<INDEX>
ALTER INDEX 인덱스명 REBUILD TABLESPACE 테이블스페이스명;

<LOBINDEX, LOBSEGMENT> - 데이터타입이 lob 이면 자동으로 인덱스가 생성됨.
ALTER TABLE 테이블명 MOVE LOB(컬럼명) STORE AS (TABLESPACE 테이블스페이스명)

<아래처럼 스그림트로 쉽게 뽑아 낼수 있음>
SELECT 'alter table ' || SEGMENT_NAME || ' move tablespace SELPA_DATA;' FROM USER_SEGMENTS where SEGMENT_TYPE = 'TABLE';



java interceptor 예제 JAVA

<bean id="commonInterceptor" class="com.acc.interceptor.CommonInterceptor" />

<bean id="commonAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">  
<property name="advice" ref="commonInterceptor" />  
<property name="pattern" value=".*Controller.*" />
</bean>    







-------------------------------
package goo.interceptor;

import java.lang.reflect.Method;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.multipart.support.DefaultMultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;

import goo.service.GooService;
import goo.service.GooVO;

public class CommonInterceptor implements MethodInterceptor {
@Autowired
private GooService gooService;
@Override
public Object invoke(MethodInvocation invocation) throws Throwable
{
    Class[] params = invocation.getMethod().getParameterTypes();
   
    HttpServletRequest request = null;
    HttpServletResponse response = null;
    DefaultMultipartHttpServletRequest multipartRequest = null;
   
    if(params != null)
    {
    /* request, response 찾기 */
    for(int i=0, cnt=params.length; i<cnt; i++)
    {
    Object param = invocation.getArguments()[i];

    if(param == null) continue;
    if("DefaultMultipartHttpServletRequest".equals(param.getClass().getSimpleName()))
    {
    multipartRequest = (DefaultMultipartHttpServletRequest)invocation.getArguments()[i];
    request = (HttpServletRequest)multipartRequest.getRequest();
    }
    if(ReflectionUtil.hasInterfaceBySimpleName(param.getClass(), "HttpServletRequest"))
    {
    request = (HttpServletRequest)invocation.getArguments()[i];
    }
   
    if(ReflectionUtil.hasInterfaceBySimpleName(param.getClass(), "HttpServletResponse"))
    {
    response = (HttpServletResponse)invocation.getArguments()[i];
    }
    }
    }
   
    /* 공통 사용 정의 */
    if(request != null)
    {
    request.setAttribute("PATH", request.getContextPath());
    }
   
    /* 권한 체크 */
    if(params != null)
    {
    for(int i=0, cnt=params.length; i<cnt; i++)
    {
    Object param = invocation.getArguments()[i];
    if(param == null) continue;
   
    if(mediapotService == null || request == null) return new ModelAndView("block");
   
    GooVO gooVO = gooService.selectMediapotAuth(Util.getIp(request));
   
    if(collectionVO == null) return new ModelAndView("block");
   
    Method setId = ReflectionUtil.getMethodByName(param.getClass(), "setId");
   
    /* 0일 경우 전체 권한 있음 */
    if(setId != null) setId.invoke(param, gooVO.getId());
    }
    }

    Object obj = null;
try
{
obj = invocation.proceed();
}
catch(Exception e)
{
throw e;
}

return obj;
}
}

부트스트랩 전체선택 / 전체해제

<script src="/plugins/iCheck/icheck.min.js" type="text/javascript"></script>
<link href="/plugins/iCheck/all.css" rel="stylesheet" type="text/css" />


function selectItem(checkYn){ if("Y" == checkYn) $("input[name=itmIds]").iCheck("check"); else $("input[name=itmIds]").iCheck("uncheck");}




<input type="checkbox" class="flat-red" name="itmIds" id="itmIds" value="127" />

메뉴번호로 메뉴 링크 가져오기 (forward) - 2depth 용 전자정부프레임워크

<생성 Controller.java>
-----------------------------------------------------------
@RequestMapping("/let/cmm/letMenuLink.do")
public String selectpage(
Map<String, Object> commandMap
, HttpServletRequest request 
, ModelMap model) throws Exception {
String menuUrl = "";
String tmpUniqId = "";
LoginVO user = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
if(EgovUserDetailsHelper.isAuthenticated() && user!=null){
tmpUniqId = user.getUniqId();
}
String menuNoStr = (String) commandMap.get("menuNo");
int menuNo = Integer.parseInt(menuNoStr);
MenuManageVO menuVO = new MenuManageVO();
menuVO.setMenuNo(menuNo);
menuVO.setTmpUniqId(tmpUniqId);
menuUrl = menuManageService.selectMenuURL(menuVO);
if("/".equals(menuUrl.trim())){
EgovMap resultMap = menuManageService.selectTopMenuURL(menuVO);
log.debug(resultMap);
menuUrl = (String) resultMap.get("url");
}
return "forward:" + menuUrl;
}
-----------------------------------------------------------



<EgovMenuManageServiceImpl.java>
-----------------------------------------------------------
기존 서비스
public String selectMenuURL(MenuManageVO menuVO) throws Exception {
return menuManageDAO.selectLastMenuURL(menuVO);
}
추가서비스
public EgovMap selectTopMenuURL(MenuManageVO menuVO) throws Exception {
return menuManageDAO.selectTopMenuURL(menuVO);
}
-----------------------------------------------------------


<MenuManageDAO.java>
-----------------------------------------------------------
추가 DAO
      public EgovMap selectTopMenuURL(MenuManageVO menuVO) throws Exception{
return (EgovMap) selectByPk("menuManageDAO.selectTopMenuURL", menuVO);
}
-----------------------------------------------------------



<EgovMainMenu_SQL_Oracle.xml>
-----------------------------------------------------------
      추가 SQL
<select id="menuManageDAO.selectTopMenuURL" parameterClass="MenuManageVO" resultClass="egovMap">
<![CDATA[ 
select * from (
SELECT 
M.MENU_NO
, M.MENU_NM
, M.MENU_ORDR
, M.PROGRM_FILE_NM
, P.URL
FROM
LETTNMENUINFO M
, LETTNMENUCREATDTLS MC
, LETTNPROGRMLIST P
where 
1 = 1
and M.MENU_NO = MC.MENU_NO
and P.PROGRM_FILE_NM = M.PROGRM_FILE_NM
and MC.AUTHOR_CODE = (SELECT C.AUTHOR_CODE from LETTNEMPLYRSCRTYESTBS C WHERE  C.SCRTY_DTRMN_TRGET_ID = #tmpUniqId#)
and M.UPPER_MENU_NO = #menuNo#
order by M.menu_ordr asc
) T where rownum = 1
]]> 
</select>

스마트에디터 단일 업로드만 사용하기

popup.zip/editer/se2/photo_uploader/popup/attach_photo.js

문서의 44번째 라인 true 를 false 로 변경하면 모든 브라우저에서 단일 업로드만 됨


<attach_photo.js>
-------------------------------------------------------------

//File API 지원 여부로 결정
function checkDragAndDropAPI(){
try{
if( !oNavigator.ie ){
if(!!oNavigator.safari && oNavigator.version <= 5){
bSupportDragAndDropAPI = false;
}else{
//bSupportDragAndDropAPI = true;
bSupportDragAndDropAPI = false;
}
} else {
bSupportDragAndDropAPI = false;
}
}catch(e){
bSupportDragAndDropAPI = false;
}
}

전자정부프레임워크 2.7 버그 목록 전자정부프레임워크

궁금하네..

◆ 게시물 보기에서 수정시 수정자를 jsp에서 보여주는데 수정자를 sql 에서 가져오지 않는다.

1 2 3 4 5 6 7 8 9 10 다음