기본 콘텐츠로 건너뛰기

2014의 게시물 표시

sql 개행문자 제거

sql에서 텍스트를 조회한 뒤에 엑셀이나 다른데로 옮길경우 줄바꿈이 되는 경우가 있다. 문장내에 'CR', 'LF'가 들어있어서 발생한다. LF : Line Feed CR : Carriage Return 그럼 해결방법은 LF나 CR을 다른 문자로 바꿔주면 해결 . select '가나다라마바사 아자차카타파하' from dual; select replace(replace( '가나다라마바사 아자차카타파하' ,chr( 10 ), '' ),chr( 13 ), '' ) from dual;

==, equals() 차이 - JAVA

== : 자료형이 동일 하고 값도 같아야함.  equals : 값만 같으면 됨.  String a = new String ( "asdf" ); String b = "asdf" ; System . out . println(a == b); //false System . out . println(a . equals(b)); //true javascript에서역시  == 는 자료형이 같아야함.  그래서 보통 '==' 대신에 ' indexOf '를 많이 사용 if(indexOf("{탐색할문자열})<-1)  다시,, 좀 많이 무지했다... 아예 틀리지 않았지만, 너무 단정지었다. 그리고 또 틀릴수도 있겠지만 다시 한번 단정지어본다. ==  : 변수에 할당되어있는 값이 같아야함. Object 객체는 레퍼런스타입이다. 레퍼런스 타입은 value가 아닌 객체의 값이 바인딩 되어있는 주소를 가지고 있으므로 Object에서 '==' 는 주의해서 사용해야 한다. Object.equals()  : Object 객체의 기본함수이다. 따라서 상속받은 클래스마다 처리방식이 다를 수 있다. Int vs Integer int와 integer에서 == 은 다른 결과를 보여준다. int value1 = 10000 ; int value2 = 10000 ; if ( value1 == value2 ) System . out . println ( "value1 == value2" ) ; if ( value1 != value2 ) System . out . println ( "value1 != value2" ) ; Integer ivalue1 = 10000 ; Integer ivalue2 = 10000 ; if ( ivalue1 == ivalue

angular.js 기본문법.

1. angular.js angular.js 다운 및 공식사이트: https://www.angularjs.org/ 대략적인 소감을 약간 극단적으로 표현한다면. jquery나 jstl이 html을 찍접댄다고한다면, angular.js는 html을 통으로 가지고 노는 느낌. 2. 기본문법. <html ng-app = "phonecatApp" > <head> ... <script src = "bower_components/angular/angular.js" ></script> <script src = "js/controllers.js" ></script> </head> <body ng-controller = "PhoneListCtrl" > <ul> <li ng-repeat = "phone in phones" > <span> {{phone.name}} </span> <p> {{phone.snippet}} </p> </li> </ul> </body> </html> 여기서 일반적인html코드와 다른 부분은 ng-app, ng-controller, ng-repeat, {{}} 이정도 이다. 이부분만 이해해도 대충 helloworld는 찍은 것 같다. angular.js 는 말그대로 라이브러리고, controller.js는 파일이름 그대로 현재 html에서 angular.js로 작성해야될 controller이다. ng-app 이 html에서 angular가 적용되는 영역이다. 이영역은 각각의 ng-controller 에 의해 구성된다. <li ng-repeat = &

web design trend 2015

웹 ui는 미적인 측면 뿐만아니라, 사람들의 성향에 좌지우지 된다. 이왕이면 조금더 편하고, 조금더 이쁜걸로. 내년 트렌드 역시 작년 이맘때 쯤 올라오던 2014년 디자인 트렌드와 크게 다르지는 않다. 전체적인 느낌은, 간결해졌고, 보기 좋아졌으며, 모바일페이지와 비슷한 ux 경험이 반영 되어있다. (출처 : http://www.elegantthemes.com/blog/resources/web-design-trends-to-look-out-for-in-2015) 1. Responsive or Go Home 역시 반응형웹. 몇년째 계속 화두다. 당연히 필요하다. 사용자가 어디에 있건 어떤 디바이스를 다루건간에 서비스는 계속 이루어져야 한다. 반면, 개발자입장에서는 css를 두벌 이상으로 만들어야 한다. 미디어쿼리가 좀더 좋아지던가, 브라우져가 좀더 좋아지던가. 2. Ghost Buttons 고스트버튼, 버튼 이미지를 배경이미지로 하고, 테두리만 두른 형태. 사용자의 행동이 필요한곳에 강제적인 느낌을 덜 주기 위해 사용한다고함. 확실히 무조건 눌러야 한다는 압박감은 덜한것같다. 3. Bigger Emphasis on Typography 타이포그라피. 사진보다는 글이 명확하다. 다만 한글폰트는 가짓수가 별로 없어서. 손글씨 이미지형태가 많아질듯 4. Large, Beautiful Background Images & Videos 크고 이쁜 사진을 배경으로. 역시 간결하다. 사진은 그림이 가지지 못한 느낌이 있다. 영상이 배경이 될수는 있지만, 브라우저와 데이터 요금에 부담을 줄것이다. 5. Scrolling Over Clicking 스크롤은 오직 우측과 하단에 상태바만 보여줬지만, 스크롤이란 ux행위 자체에 기능과 디자인이 붙었다. ui가 발전하는 공식. button onclick, onchage가 아니라, scroll up,down 이런 이벤트

[java] 파일업로드 구현시 참고사항

 1. 입력화면 1-1. <form enctype="multipart/form-data" > 기본 form에 enctype="multipart/form-data" 부분을 추가. 1-2. <input type="file">  파일업로드 기본 input 이다. 브라우저마자 약간 다를수는 있다. 이대로 쓰는게 가장 좋긴하지만 보통 파일선택 버튼을 이미지로 바꾸고, 파일명을 버튼 앞쪽으로 옮기는걸 많이하는데, 이렇게 되면 신경써야 하는 부분이 많아진다. 요새는 이부분에 대한 javascript 라이브러리들이 좀 많은것 같다. 대충 bootstrap 위주로 검색하자마자 나온거 2가지 첨부. http://gregpike.net/demos/bootstrap-file-input/demo.html http://markusslima.github.io/bootstrap-filestyle/ 2. 업로드처리 2-1 mulipartrequest multipart/form-data 로 인코딩된 form데이터를 받으려면 httpservletrequest가 아닌 multipartrequest로 받아준다. MultipartRequest multi = new MultipartRequest (request, savePath, sizeLimit, "euc-kr" , new DefaultFileRenamePolicy ()); 2-2 파일저장 방식 저장방법은 크게 두가지다. blob 처럼 db에 바로 저장을 하거나, 어딘가에 파일서버를 두고 db에는 파일 위치를 저장하는 저장하는 방식. blob이 경우 쿼리로 바로 뽑으면되서, 구현이 조금 더 쉬울거 같긴하다. 후자의 경우는 nas나 파일서버가 별도로 필요해서 조금 더 복잡도가 올라가지만 DB비용이나 부하를 생각하면 후자가 좋을것 같기도 하다. 2-3 파일폴더 & 파일명 정

arraylist, linkedlist 차이 - java

linkedlist와 arraylist의 가장큰 차이는 linkedlist 는 각 원소마다 앞,뒤 원소의 위치값 을 가지고 있고, arraylist 는 index 가 있다. 이러한 각각의 특징은 조회,삽입,삭제시에 성능상의 차이를 발생시킨다. 조회(get)   조회시에 arraylist는 index가 있기 때문에, 조회가 한번에 가능하다, elementData[index] = element; 그러나 linkedlist의 경우 처음부터 하나씩 다 타고들어가야 되기때문에 뒤에있는 놈을 찾을 수록 오래걸린다. 삽입(add)  arraylist는 마지막에 추가할경우 자체적으로 확장을 하면되고 elementData[size++] = e; 중간에 삽입이 되는 경우는 해당 위치를 기준으로 arraycopy를 진행한다. System .arraycopy(elementData, index, elementData, index + 1, size - index); elementData[index] = element; 삭제(remove)  arraylist 같은경우에는 내부적으로 remove 해야되는 item을 제외하고 삽입처럼 arraycopy를 시도한다. 반면 linkedlist는 삽입과 마찬가지로 해당 item을 찾아 제거하고, 앞뒤 원소의 위치값만 조정해주면 된다. 해당 함수들의 실제 수행시간은 대충 아래처럼 나온다고한다.   조회시에는 arraylist가 우위 지만,   삽입/삭제 시에는 linkedlist가 뛰어난 성능 을 보여준다.  즉 대량의 삽입삭제가 빈번하게 발생하는 곳에서는 linkedlist를  db에서 단순히 조회만 할 경우에는 arraylist를 사용하면 된다. 참조 : http://www.programcreek.com/2013/03/arraylist-vs-linkedlist-vs-vector/ http://grepcode.com/file/repository.grepcode.com/java/ro

css 셀렉터 (jquery)

css selector 기본 문법. # : id 기준 #para1 {.....} (none) : 모든 element p {.....} . : class 이름 .center {.....} 약간 응용해서  만약 <p> elements 들 중에 class name이 center인것만 취하고 싶을 경우 p.center {.....} <span> elements 중 부모가 <p> elements 인경우 p > span {.....} 대강 이정도만 알고 있어도 기본적으로 css와 jquery에서 select하는게 답답함은 줄어들것이다. jquery의 경우는 일반적으로 css와 동일하다.  $('#paran1') - id $('p') - elements $(.center) - class 예제 :  http://jsfiddle.net/VCAHh/2/

mybatis 기본문법

select 기본 <select id="selectPerson" parameterType="int" resultType="hashmap"> SELECT * FROM PERSON WHERE ID = #{id} </select> 변수 설정은 #{} and #{id} and id like '%'||#{id}||'%' -- concat if문  <if test=""> -  예제도 그렇지만 보통 null 체크할때 많이 쓴다. <select id="findActiveBlogWithTitleLike" resultType="Blog"> SELECT * FROM BLOG WHERE state = ‘ACTIVE’ <if test="title != null"> AND title like #{title} </if> </select> choose,when,otherwise   - 게시판에서 전체/제목/내용에 따라 검색방법을 달리할때 처럼     해당 변수가 조회타입 (?)의 성격을 가질때 사용하면 좋을듯. <select id="findActiveBlogLike" resultType="Blog"> SELECT * FROM BLOG WHERE state = ‘ACTIVE’ <choose> <when test="title != null"> AND title like #{title} </when> <when test="author != null and author.name != null"> AND author_name like

javascript 배열 파라미터는 call by reference

javascript 함수 맹글다가 오랜만에 재밌는거 발견. (이제는 진짜 자바스크립트 책 정독한번 해야겠다.. ㅎ) 요새 코딩하면서 콜바이 밸류냐 레퍼런스냐에 대한 생각을 뜸하고 있었는데, 오늘 발견!! (그나마 이럴때 등록금이 조금 덜어까운듯 ㅋ) c에서는 변수이름을 던지냐, 주소값을 던져서 call by value 인지 reference 인지 구분을 했다. 그런데 javascript 에서는 변수타입에 따라 정해진다. 태어날때부터 정해진거라는 생각이 드니 뭔가 씁쓸하긴 하다.   - number, string, boolean 타입들은 call by value   - array, object, date 타입들은 call by reference var param = 1 ; test (param); function test (param){ var tmp = param; console .log ( "before int tmp : " + tmp); tmp = tmp + 1 ; console .log ( "after int tmp : " + tmp); console .log ( "after int param : " + param); } console .log ( "quit int param : " + param); 보통 이렇게하면 결과값은 1,2,1,1 의 순서가 나온다. 그런데 array 연산의 경우 조금 다르다 var params = [ 1 , 2 , 3 ] testarr(params); function testarr (params){ var tmparr = params; console .log ( "before int tmparr : " + tmparr); tmparr[ 2 ] = 1 ;

jsp에서 xls 다운로드

보통 jsp 페이지를 만들때는 페이지 맨 윗줄에 아래처럼 적어준다. < % @ page language = "java" contentType = "text/html; charset=UTF-8" pageEncoding = "UTF-8" % > 그런데 보통의 jsp가 아닌 excel로 다운 받을 수 있는 jsp 페이지를 작성할때는 contentType을 아래처럼 변경을 해주어야 한다. < % @ page language = "java" contentType = "application/vnd.ms-excel;charset=UTF-8" % > 그리고 나머지는 이렇게. <% String file_name = "download" ; String ExcelName = new String(file_name.getBytes(), "UTF-8" )+ ".xls" ; response.setContentType( "application/vnd.ms-excel" ); response.setHeader( "Content-Disposition" , "attachment; filename=" +ExcelName); response.setHeader( "Content-Description" , "JSP Generated Data" ); response.setHeader( "Pragma" , "no-cache" ); String table = request.getParameter( "table" ); %> <html> <head> </head> <body> <%=t

chart.js

Chart.js 특징  . 깔끔하고 보기좋음.  . html5 기반. (canvas 사용, IE9 이상)  . 6가지 타입 제공 (Line, Bar, Radar, Pola area, Pie, Doughnut)  . 애니메이션 제공  . http://www.chartjs.org/ Downloadlink :  https://github.com/nnnick/Chart.js Line 타입사용법.  Data structure var data = { labels : [ "January" , "February" , "March" , "April" , "May" , "June" , "July" ], datasets : [ { fillColor : "rgba(220,220,220,0.5)" , strokeColor : "rgba(220,220,220,1)" , pointColor : "rgba(220,220,220,1)" , pointStrokeColor : "#fff" , data : [ 65 , 59 , 90 , 81 , 56 , 55 , 40 ] }, { fillColor : "rgba(151,187,205,0.5)" , strokeColor : "rgba(151,187,205,1)" , pointColor : "rgba(151,187,205,1)" , pointStrokeColor : "#fff" , data : [ 28 , 48 , 40 , 19 , 96 , 27 , 100 ] } ] } .label : x축 라벨 .

unicef tab project

당신이 스마트폰을 10분동안 멀리하면 물이 부족한 아이에게 1일동안 마실수 있는 물을 기부할 수 있습니다. UNICEF Tap Project 방법은 스마트폰에서 아래 url을 방문해서 간단한 tutorial을 따라하면 바로 참여할 수 있다. http://tap.unicefusa.org/mobile 아이들을 돕기 위해 핸드폰을 사용하지 않는 사람이 현재 603명. 오늘 하루 동안 349.6일치 물 수집 최고기록 17000분.. 17000/60 =  약283시간, 약 12일. 이번 프로젝트의 스폰서는 조르지오알마니. 이런 착한 일 회사는 기억해 둘 필요가 있다.

spritz - 읽기속도를 2배 늘리는 기술

속독 을 배우지 않아도 글을 빨리 읽을 수 있는 방법이 생겼다. 이사람들이 주장하는 바는 이렇다. 문장을 읽을때 시간이 오래 걸리는 이유는 눈이 문장을 따라 이동 하기 때문. 문장을 한눈에 보기 편한  단어단위로 쪼개고,  기준색을 정해 시선을 고정시켜  읽는 다면 그 속도는 훨씬 빨라질 것이다. 이쪽에서 좀더 자세히 테스트를 진행해볼 수 있다.  http://learn2spritz.com/ 모든 디스플레이 장치에서 사용하긴 어려울 수 도 있지만, 스마트 워치 같은 소형기기에서는 탁월할 수도 있을것 같다. 오랜만에 뭔가 좀 재밌는 기술(?)

[오라클] sid, service name 값 확인

sqlgate나 sqldeveloper같은 툴에서 db에 연결할때,  종종 sid와 service name를 입력해야 한다. 간단하게 설명하면, sid 는 각 인스턴스 별 id service name 은 전체 id 고로 DB장비가 2대로 구성이 되어있으면, 각 sid는 달라도, service name은 같을 수 있다. 자세한 설명은 -> http://blog.naver.com/myshyz/50037204012 sid, service name 확인하는 쿼리 select name from v$database; select instance from v$thread;

쉘 스크립트 기초 예제 (선언, 조건문, 변수)

꽤 잛은 주기로 실행되는 cron이 있는데, 앞놈이 실행중이면 SKIP하는 cron을 예제로 스크립트 기초(?) 정리 #!/bin/sh PS_CHECK= `ps -ef | grep {프로세스구분자} | wc -l` echo $PS_CHECK if [ "$PS_CHECK" -gt 1 ] ; then exit fi ./run_cronScript.sh #!/bin/sh 해당 스크립트를 어떤 쉘에서 실행하는지를 설정. PS_CHECK= `ps -ef | grep {프로세스구분자} | wc -l` PS_CHECK가 변수임. 변수선언할때 var, int, String 같은 별도의 변수타입을 선언이 필요 없다. 변수와 value 사이 (=) 앞뒤에 공백이 있어서는 안된다. 시작과 끝 기호는 (')가 아니라 (`)거임. 숫자 1 앞에 있는 버튼 if [ "$PS_CHECK" -gt 1 ] ; then exit fi if문은 fi문으로 끝난다. if문의 조건문은 []를 사용하는데, 괄호 앞,끝에는 공백이 존재해야 한다. 변수를 사용할때는 앞에 ($)를 붙인다. 잡설. 코딩을 어느정도 하다보면 새로운 언어라 하더라도, 어떤 기능을 하는 함수인지 감은 대충 오곤한다. 그런나 막상 작성(write)을 하려면 엄한곳에서 애먹는 경우가 있다. 쉘 스크립트에서는 (=) 앞뒤 공백, (`), if문 안에 공백에 주의하자.