본문 바로가기

전체1128

웹페이지 구현에서 파라미터 처리할 때 마우스의 뒤로가기 버튼으로 인한 동작 처리하기 웹페이지를 구현할 때 화면에 세션의 정보를 이용하여 처리하는 로직을 넣을때 보통 JSP EL 로는 다음과 같이 처리를 생각할 것이다. //jsp EL 처리 var rcvParams = '${h_move_param}'; 그런데 이렇게 구현하고 마우스의 뒤로가기 버튼이나 백스페이스 버튼을 이용하여 돌아가면 웹브라우저는 서버에 요청을 처리하지 않고 높은 확률로 로컬의 히스토리 파일을 읽어서 처리한다. 따라서 내가 생각하는 처리방식과 다르게 동작할 수 있다. 이럴때는 jQuery를 이용하여 post 로 세션의 정보를 그때 그때 받아와서 처리하는 방식을 사용하는 것이 더 정확하다. $.post('${pageContext.request.contextPath}/com/getSessionData.json', funct.. 2013. 4. 30.
아이언맨3 시리즈의 마지막으로 손색이 없었음 적절한 반전도 있었고 ㅎㅎ 마지막 대규모 액션신은 진짜 멋졌음 2013. 4. 29.
아이언맨, 스파이더맨 넨드로이드 피규어 갖고십다... 아 너무 갖고 싶다.귀엽다. 가격은 6만원 정도 10cm 2013. 4. 29.
IE8의 Textarea 의 스크롤링 버그 IE8의 Textarea는 width를 %로 지정했을 때 textarea 안의 내용이 많아지면 스크롤이 더이상 진행되지 않는 오류가 존재한다. (참고링크) 이는 textarea의 change 이벤트 처리시 width와 col 속성을 제대로 가져오지 못해서 발생하는 버그라고 한다. 이문제를 해결하는 방법은 width, height 를 %로 주지말고 px 로 설정하는 방법과 textarea의 col, row 속성을 설정해주는 방법이 있다. 나는 이문제를 다음과 같이 해결하였다. .editor { width: 99.5%; padding-top: 3px; } // cols 속성을 width 보다 넉넉하게 설정 2013. 4. 26.
개발자 역량 확인하기 참고 도표 indiangeek 사이트에 공개된 개발자 역량 알아보기 참고 도표 재미로 한번 보려고 했으나... 나의 역량은 아직 고수가 되기에는 한참 못 미친다는 것을 다시 확인하였다. 좀더 노력하자꾸나... Programmer Competency MatrixNote that the knowledge for each level is cumulative; being at level n implies that you also know everything from the levels lower than n.Computer Science 2n (Level 0)n2 (Level 1)n (Level 2)log(n) (Level 3)Commentsdata structuresDoesn't know the difference be.. 2013. 4. 25.
.Net 의 오라클 커넥션을 이용할 때 select 문 처리중 delete 문을 이용하면 어떻게 될 까? .Net의 System.Data.OracleClient 를 이용하여 데이터를 select 하던 중 delete 문을 처리하면 오류가 생길까? 하나의 OracleConnection, OracleCommand, OracleDataReader 객체를 하나만 이용해서 처리했기 때문에 오류가 생길 것이라고 생각했었는데 테스트 해보니 문제가 없다. ㅎ 일단 테스트해본 row는 5000 row 인데 처리하는데 문제가 없는 것으로 보아 ExecuteReader() 명령이 한번에 5000개의 데이터를 다 가져와서 그렇거나, OracleCommand 객체를 이용하여 새로운 쿼리를 날리면 다른 세션을 생성해서 그런게 같다. 그리고 MSDN 예제에도 이런식으로 처리하는 예제가 있는 것으로 보아(같은 방식은 아니지만) 그냥 이.. 2013. 4. 25.
.Net에서 오라클 DB Select 하기 .Net에서 오라클에 Select 하는 쿼리는 다음과 같다. // DB연결 URL 생성 string oradb = ConfigurationManager.ConnectionStrings["stxerp"].ConnectionString; using (OracleConnection conn = new OracleConnection(oradb)) { // 커넥션 오픈 conn.Open(); // 커맨드 생성 using (OracleCommand cmd = new OracleCommand()) { cmd.Connection = conn; cmd.CommandText = "SELECT ia_key, empno ,deptcode ,apprstatecode FROM stx_ap_card_check_list2"; // .. 2013. 4. 25.
.Net ASP에서 Web.config의 appSettings, connectionStrings 활용하기 DB 주소, 아이디 등과 같이 개발 환경에 따라 값을 변경할 필요가 있는 정보를 ASP에서는 Web.config 파일에 설정하고 이를 파일에서 불러와서 사용하게 된다. 이럴때 사용하는 것이 Web.config 파일의 appSettings와 connectionSettings 설정이다. 위와같이 web.config 에 설정하고 ConfigurationManager 를 이용하여 값을 가져오면 된다. // 문자열을 이용하여 값을 가져온다. string oradb = ConfigurationManager.ConnectionStrings["stxerp"].ConnectionString; 2013. 4. 24.
.Net에서 오라클 DB에 데이터 insert와 트랜잭션 처리 우선 오라클 DB를 연결하기 위한 라이브러리를 참조한다. 프로젝트 -> 참조추가 항목을 이용하여 위의 System.Data.OracleClient 서비스를 참조한다. 참조시 주의 할 점은 이 라이브러리는 .Net 프레임워크 4이하이서만 유효하다. 상위에서는 더이상 지원을 하지 않는다. 상위버전에서는 오라클에서 제공하는 Orace Driver 를 다운로드 받아야 한다. // 오라클 커넥션 string string oradb = "Data Source=(DESCRIPTION=" + "(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=아이피)(PORT=1521)))" + "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=사용하는SID)));" + ".. 2013. 4. 24.
.Net 에서 웹의 XML 문서를 파싱하여 필요로 하는 노드만 검색하기 목적은 웹서비스로 XML 문서를 가져와서 파싱하여 필요로 하는 노드의 정보만 가져오는 것이다. 이를 위한 코드는 다음과 같다. // url 작성 string url = ConfigurationManager.AppSettings["approval_url"] + "?FormKey=" + formKey + "&EmpNo=" + ConfigurationManager.AppSettings["emp_no"]; ; // http 연결하여 xml 문서 가져오기 WebRequest wrGETURL = WebRequest.Create(url); using (StreamReader reader = new StreamReader(wrGETURL.GetResponse().GetResponseStream())) { // XML .. 2013. 4. 24.
Oracle.DataAccess 과 System.Data.OracleClient 의 차이 Oracle.DataAccess(ODA) 와 System.Data.OracleClient(SDO) 는 둘다 .Net 에서 오라클 DB 연결을 위한 라이브러리를 제공한다. SDO는 닷넷 프레임워크에서 기본적으로 제공되는 라이브러리이고 ODA는 오라클에서 제공해준다. SDO는 닷넷 프레임워크 4 까지는 지원 되었으나, 그 이상에서는 지원하지 않을 예정이라고 한다. 따라서 되도록 이면 ODA를 사용하는 것이 좋을 것같다. ODA 다운로드 하기로그인을 해야 다운로드 할 수 있다. 로그인을 한 후 진행하는 것이 좋겠다.* 설치후 컴퓨터를 재부팅 하는 것이 좋다. 재부팅을 하지 않으면 VS가 제대로 인식하지 못하는 것 같다.** 기존에 오라클을 설치 했다면 레지스트리, 환경변수 설정등에 영향이 갈 수 있으므로 주의.. 2013. 4. 23.
jQuery 2.0 릴리스 jQuery 2.0 릴리스 4월 18일 jQuery 2.0 이 릴리스 됐다. 1.9 버전의 최신 릴리스와 함께 공개 됐다. 1.x 대의 하위버전의 업그레이드를 위해서는 jQuery Migrate plugin 을 함게 이용하도록 하자. 2.x의 가장큰 차이점은 ie 6, 7, 8을 지원하지 않는다는 것이다. 요즘 jQuery 를 이용하여 웹사이트 개발하면서 가장 큰 불만이 ie 8 이하에서는 CSS도 그렇고 뭔가 다르게 동작한다는 것이다. 레이아웃도 깨지고, 오류도 나고, 다른 로직을 추가해야 되고... 요즘 개발하면서 그게 스트레스 였는데... jQuery 개발자들은 ie 6, 7, 8은 더이상 지원해주지 않겠다고 하다니... 완전 쿨하네.. 부럽다... 클라이언트들이 ie7 에서는 왜 안되냐고 물어볼때.. 2013. 4. 19.
창세기전 2 네이버캐스트(게임대백과) - 창세기전2유튜브-소프트맥스 공식 채널(창세기전 시리즈의 플레이 동영상) 네이버 캐스트를 보다 창세기전을 보니 갑자기 생각이 난다. 중2때였던거 같다. 친구가 재미있다고 빌려준 CD 1장이 나와 창세기전의 첫 만남이었다. 그리고 이올린과 흑태자의 폭풍도의 마지막 장면을 보면서 몰아치던 감동을 물결이 아직도 기억이난다. 그 후로는 소프트맥스의 팬이 되어 창세기전2, 창세기외전-서풍의 광시곡, 창세기외전-템페스트, 창세기전3, 창세기전3 파트2 까지 모든게임을 구매하고 매 겨울마다 한참을 빠져 지냈다. 그땐 참 즐거웠던거 같다. 오늘 맥주 한캔에 유튜브 사이트에 가서 플에이 동영상을 보며 추억에 잠겨 보아야 겠다. 폭풍도 정상의 흑태자, 이올린, 아스모데우스 2013. 4. 19.
GET 방식으로 호출시 '&', '+' 기호 전달하기 참고1, 참고2 GET 방식으로 파라미터 전달시 &와 + 기호는 전달되지 않는다. 로컬에서 데이터를 전달하는 시점에 + 기호를 공백으로 변경하여 전달한다. 따라서 기호를 무사히 서버로 전달하려면 기호를 인코딩 해주어야 한다. 이를 위한 방법은 + 를 %2B 와 같이 서버가 인식가능한 문자로 변경하여 전달하든지, encodeURIComponent 함수를 이용하여 인코딩 하는 방식이 있겠다. function replace(inum) { // 정규식을 이용한 문자 변경 inum = inum.replace(/&/g, "%26"); inum = inum.replace(/\+/g, "%2B"); return inum; } function replace(inum) { // 인코딩 함수 이용 return encodeU.. 2013. 4. 18.
오라클의 소스코드에 특정 문자열 검색하기 오라클을 유지보수 하다보면 사용자가 작성한 프로시저, 함수, 뷰등의 소스코드 중에서 특정 문자열을 검색하고 싶을 때가 있을 것이다. 이럴 때 이용할 수 있는 쿼리가 다음과 같다. SELECT * FROM all_source aas WHERE aas.NAME LIKE 'XXMSC%' -- object 명 AND aas.owner = 'APPS' -- owner 명 AND (upper(aas.text) LIKE '%CREATE_SOURCE_PGM%') -- 검색하고자 하는 문자열 이렇게 입력하면 문자열이 입력되어 있는 소스명, 타입, 라인번호를 반환해 준다. 2013. 4. 17.
오라클 over() 함수 참고1, 참고2, 참고3, 참고4 over 함수는 group by, order by 를 이용한 서브쿼리의 사용을 편리하게 하기 위해 사용하는 함수이다. 보통 over 함수는 단독으로 사용하기 보다는 count(), max(), min(), sum(), avg(), rank(), row_number() 등과 같은 분석 함수와 함께 사용된다. -- OVER 함수 이용 SELECT NAME, NO, SUM(NO) over(PARTITION BY NAME ORDER BY NAME) FROM ( SELECT 'A' AS NAME, '31' AS NO FROM dual UNION SELECT 'B', '32' FROM dual UNION SELECT 'B', '45' FROM dual UNION SELECT 'D'.. 2013. 4. 17.
오라클 ERP의 Forms 에서 마지막으로 시스템에 전송한 쿼리 확인하기 오라클 ERP의 Forms 에서 내가 마지막으로 시스템에 전송한 쿼리를 확인하고 싶을 때가 있다 .이럴때 다음처럼 Properties 에서 확인이 가능하다. Help -> Diagnostics -> Properties -> Item 항목으로 가면 팝업창이 나타난다. 여기에서 Object 를 Block으로 변경하고 Object 1 을 원하는 Block 으로 선택한 후, Property 를 Last Query로 선택하면 마지막으로 전달한 쿼리가 나타난다. 2013. 4. 17.
Man of Steel 공식 트레일러 3번째 완전 기대중잼나겠당 ㅎ 2013. 4. 17.
자바스크립트의 프로토타입을 이해하고 객체지향 구현하기 네이버 개발자센터 강좌 - JavaScript와 객체지향 프로그래밍 상세한 내용은 네이버의 강좌를 보면 좋을 것 같고, 아래와 같이 코드를 기반으로 이해를 해보자. 자바스크립트에서 객체지향을 구현하기 위해서 필요한 것이 프로토타입이다. 자바스크립트에서 객체지향을 구현하기 위해서 사용하는 것은 함수다. // Dog 객체 생성 var Dog = function() {}; // Dog 프로토 타입선언 Dog.prototype.bow = function() { alert('bow'); }; Dog.prototype.sit = function() { alert('sit'); }; // Cat 객체 생성 var Cat = function() {}; // Cat 프로토타입 선언 Cat.prototype = { sit.. 2013. 4. 16.
ContentNegotiatingViewResolver를 이용한 XML, JSON 뷰 만들기 ContentNegotiatingViewResolver를 이용하면 xml, json 뷰를 편하게 만들 수 있다. 서블릿 컨텍스트에 ContentNegotiatingViewResolver와 json뷰, xml 뷰 설정을 처리하도록 한다. json 뷰는 MappingJacksonJsonView를 이용하고, xml 뷰는 Jaxb2Marshaller를 이용하도록 한다. * 이 두가지 뷰외에도 다양한 뷰가 있다. 다른 뷰를 활용하는 방법도 찾아보면 좋을 것 같다. servlet-context.xml 은 다음과 같이 설정한다. sdk.spring.xml.model.XmlData 그러면 일단 설정은 완료 되었다. * Jaxb2Marshaller는 마샬링을 처리하려고 하는 Java 클래스를 꼭 지정해 주어야 한다. 그.. 2013. 4. 16.
[KB카드 WiseInfo 플러스] 문자 알림을 왜 이렇게 만든거지... 오늘 갑자기 아래와 같은 문자가 왔다. [KB카드 WiseInfo 플러스]고객님의신용정보변동내역발생. ARS 연결 또는 홈페이지확인 KB카드(1588-1688) 에 전화를 전화를 하니 KC라고 전화번호(02-708-1000)를 하나 알려준다. 여기에 전화를 해서 확인하니 최근에 신용카드 하나 해지를 한게 있는데 그걸 알려주더라. 여기서 왜 메시지를 저렇게 만들었을까?? 먼가 좀 더 사용자에게 직관적으로 알려 줄 수 있도록 만들 수는 없을까라는 생각을 하게 된다. 이런게 공돌이 감성 알림이 아닐까? 저 문자만 받고 알 수 있는게 아무것 도 없다. 문자 수신번호도 1666-1-3702 다 . 이거 완전 스팸이라고 생각할 수 밖에 없다. 서비스를 만들때 사용자가 이걸 받으면 어떻게 반응할 까도 생각을 하고 만.. 2013. 4. 16.
BASE 64 인코딩 Base 64란 8비트 데이터를 문자코드에 영향을 받지 않는 공통 ASCII 문자로 이루어진 6비트 데이터로 변환하는 것이다. 8bit 데이터 3개가 6bit 데이터 4개로 변환되는 것이다. 이 6bit 데이터는 ASCII 코드로 변환이 되고, 이를 이용하면 이기종간 문자코드가 달라도 데이터 처리가 가능하게 된다. 위키, 참고1, 참고2, 참고3 Java에서 Base64 인코딩을 처리하려고 하면 sun.misc.BASE64Decoder 를 이용하게 되는데 Java에서 sun 의 하위폴더에 들어있는 패키지를 이용하는 것은 권장하지 않는다고 한다. 따라서 되도록 이면 apache 등에서 제공해주는 라이브러리를 이용하는 것이 좋을 것 같다. (apache common 의 codec 참조) 일단 sun의 라이브.. 2013. 4. 15.
jQgrid의 지정한 칼럼, 지정한 열을 다른색으로 지정하기 사용자에게 해당칼럼이나 열의 정보를 강조하기 위해서 테이블의 배경색을 바꾸고 싶을 때는 다음처럼 처리한다. // 배경색상 css 선언 var cssGreen = {'background-color':'#6DFF6D'}; // 그리드 데이터의 ID 가져오기 var ids = $('#requestList').jqGrid('getDataIDs'); // 그리드 데이터 가져오기 var gridData = $("#requestList").jqGrid('getRowData'); // 데이터 확인후 색상 변경 for (var i = 0; i < gridData.length; i++) { // 데이터의 is_test 확인 if (gridData[i].is_test == 'Y') { // 열의 색상을 변경하고 싶을 때(c.. 2013. 4. 12.
AOP로 로그 남기기 소스코드 GitHub 링크가기 => 고고고 목적은 Aop를 이용하여 메소드 실행시점에 로그를 남기는 것이다. AOP를 이용하는 방법에는 어노테이션을 이용하는 방법과 XML 설정을 이용하는 두가지 방법이 있다. 각각의 방법을 모두 이용해 보도록 하자. 1. 어노테이션 이용하여 설정하기 어노테이션을 이용하기 위한 XML 설정은 위와 같다. 그리고 로거는 다음과 같이 설정 package sdk.spring.aop.logging; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; @Aspect public class LoggingAspect { @.. 2013. 4. 11.
Javascript의 Array 의 concat, $.extend 메소드 알아보기 참조링크 => 라셍님 블로그Javascript의 Array 타입이 제공해주는 기본 메소드 중에서 유용한 메소드인push, concat 에 대하여 알아보고, jQuery의 extend를 이하여 배열을 합친것과 concat의 차이점을 알아보자. 우선 기본적인 Array 타입의 형태를 알아보자.// 영화 Object 선언 var shiri = { name: '쉬리', year: '1998' }; var oldboy = { name: '올드보이', year: '2003' }; var myway = { name: '마이웨이', year: '2011' }; var masqurade = { name: '광해', year: '2012' }; var ironman3 = { name: '아이언맨3', year: '2013.. 2013. 4. 10.
주간, 월간 근무가능 일 수 구하기 trunc(date, 'd')와 last_day 를 이용해서 처리참조링크1참조링크2 -- 캘린더의 정보와 사용자 정보를 이용하여 주간 근무 가능일수 주회 -- 입력한 날짜를 trunc(date, 'd')로 시작일, trunc(date +7, 'd') -1 로 마지막일을 구해서 처리 SELECT COUNT(*) INTO p_workday_count FROM sfa_calendar sc ,sfa_user_master u WHERE sc.company_code = u.company_code AND u.sfa_user_id = v_user_id AND to_date(sc.cal_date, 'YYYYMMDD') BETWEEN trunc(v_date, 'd') AND trunc(v_date + 7, 'd') - 1.. 2013. 3. 27.
오라클 날짜 정보 가지고 놀기 주간 시수, 월간 시수 등의 데이터를 추출하기 위해서 날짜 데이터를 가지고 놀다 보니 다음의 몇가지만 알고 있어도 오라클의 날짜정보를 잘 이용할 수 있을 것 같다. add_month, +, -trunc, to_datelast_daybetween and이 정도만 숙지하고 있어도 데이터를 조작하는데 있어서 어려움은 없을 것 같다. -- 다음 날짜 -- result: 2013-03-28 오후 3:19:35 SELECT SYSDATE + 1 FROM dual; -- 다음 달 -- result: 2013-04-27 오후 3:20:33 SELECT add_months(SYSDATE, 1) FROM dual; -- 주차 -- result: 13 SELECT to_char(SYSDATE, 'IW') FROM dual;.. 2013. 3. 27.
광양 매화 축제 월요일 아침 9시 30분쯤에 출발해서 11시 30분쯤에 도착했는데 벌써 차가 만차다. 1시간 걸려서 주차를 하고 올라가는데.. 꽃은 정말 이뻣는데 이거머 내가 야시장을 구경하러 온건지 꽃을 구경하러 온건지... 도데체게 꽃을 구경할 수가 없다. -_-; 그리고 가다가 보니 하동IC에서 내려서 매화마을로 가기전에 섬징강을 건너는 다리가 있었는데 거기가 꽃이 더 예뻣던거 같다. 다음엔 그곳에서 구경하는게 더 좋을것 같다. 2013. 3. 26.
오라클의 주의 시작일 변경여부 확인 오라클의 주의 시작일을 조회해보니, 기본적으로는 월요일로 설정이 되어 있었다. 알아보니 오라클은 ISO Week 란 놈을 쓰는데, ISO Week 는 기본적으로 월요일이 주의 시작일으로 되어 있다. 따라서 to_char(sysdate, 'IW') 로 조회하면 월요일부터 주차를 계산해 준다. -- 주 출력(2013.03.26 기준 13) select to_char(SYSDATE-1, 'IW') FROM dual; NLS Settings 를 변경하지 않으면 이를 바꿀수가 없다. 그래서 우리가 쓰는 달력처럼 일요일을 주의 시작일료 계산하고 싶으면 처리시점에 +1을 해서 데이터를 처리해야 한다. 2013. 3. 26.
데이터를 주간 집계하기 목적: 입력한 시수를 주간으로 확인하고 싶다. 우선 입력된 데이터를 일자별로 그룹핑하고, 일자를 년도, 주차(주의 순번)으로 다시 그룹핑하여 처리 -- 년 출력 select to_char(SYSDATE, 'IYYY') FROM dual; -- 주 출력(2013.03.26 기준 13) select to_char(SYSDATE, 'IW') FROM dual; -- 년, 주로 그룹핑 SELECT to_char(wid_date, 'IYYY') ,to_char(wid_date, 'IW') ,tonnes FROM production WHERE to_char(wid_date, 'IYYY') = '2013' GROUP BY to_char(wid_date, 'IYYY') ,to_char(wid_date, 'IW'); 위.. 2013. 3. 26.