2011. 8. 19. 11:42 카테고리 없음
CODENARC
Tool > Static Analysis
저자 : Chris Mair
홈페이지  : http://codenarc.sourceforge.net/


CodeNarc analyzes Groovy code for defects, bad practices, inconsistencies, style issues and more.

[LICENSE] Apache License V2.0  


[requirement]
groovy 1.7
java 1.5 or later
log4j 1.2.13 or later


eclipse plugin 
Supported Eclipse versions: 3.5, 3.6 and 3.7
http://codenarceclipse.sourceforge.net/ 
posted by smplnote
2011. 8. 17. 08:17 카테고리 없음
마이플랫폼 재설치 방법입니다.

1.기존에 설치되어 있는 마이플랫폼 관련 파일 삭제

  프로그램 추가/제거 > MiPlatform_InstallBase320 / MiPlatform_InstalEngine320U /
 MiPlatform_SetupDeveloper320U / MiPlatform_Updater320 : 등 관련 파일 모두 삭제 

2.캐쉬지우기 (C:\Documents and Settings\[사용자윈도우계정]\Local Settings\Compatible LocalLow\TOBESOFT) TOBESOFT 폴더 삭제

3.PC재부팅

4.XX 로그인 > 나의시스템 > ITO > 서비스지원 > 서비스지원 전체보기 : 클릭시, 마이플랫폼 자동 재설치 
설치할수 있는 사이트에서 알아서 자동 재설치.
 
5.마이플랫폼.rar 첨부파일의 [ MiPlatform_FixUACProblem320U.msi ] 저장 후, 설치
안해도 되더라..
 

posted by smplnote
2011. 8. 17. 08:13 1300K
웹 접근성 웹 표준 완벽 가이드
국내도서>컴퓨터/인터넷
저자 : 짐 대처(Jim Thatcher),숀 로튼 헨리(Shawn Lawton Henry),마이클 R. 버크스(Michael R. Burks),앤드류 커크패트릭(Andrew Kirkpatrick),크리스티앙 하일만(Christian Heilmann)
출판 : 에이콘출판사 2011.07.22
상세보기

웹 접근성을 준수하기 위한 접근 방법
- 처음부터 시작하라 
- 문제점을 이해하는 것에서부터 시작하라 : 이해하지 않은 경우 비효과적인 노력을 들일 경우가 있다.
  * 지침을 곧바로 적용하고 평가도구의 결과를 보는 방법을 익히기 전에 먼저 쟁점들을 이해하라. 장애인들이 웹을 어떻게 사용하는지에 관한 기초를 익혀라. p98
- 장애인을 프로젝트에 참여시키라 : 동기유발, 효율성, 효과성
- 접근성과 사용성 간의 관계를 이해하라
   사용성 문제들은 능력에 상관없이 모든 사용자에게 영향을 미친다.
   접근성 문제들은 장애인들의 웹사이트에 대한 접근을 줄인다. p105

- 지침의 중요한 역할을 이해하라
- 기존 웹사이트에서의 접근성 장애요소
    평가에 초점을 두라 
    평가 우선순위를 정하고 영역별로 수정하라
    장애 요소별로 수정해야 할 우선순위를 정하라 : 장애인에게 미치는 영향력, 수정을 위해 요구되는 노력 p111

웹 접근성에 대한 잘못된 오해
- 텍스트 전용 버전은 수용할 만한 해결책이다.
- 접근성을 준수한 사이트는 산뜻하지도 않고 재미도 없다.
- 접근성을 준수하려면 비용도 많이 들고 힘들다.
- 접근성을 전적으로 웹 개발자의 책임이다.  : + 콘텐츠 개발자들이 할 일이 더 많다.
- 접근성은 시각장애인을 위한 것이다.
- 평가도구는 접근성과 표준 준수 여부를 결정할 수 있다. : 관련 지식을 갖춘 인간이 평가할 필요가 있다.
- 지침은 접근성을 위해 충분하지 않다. 
 
비즈니스 관점에서 본 혜택
- 기술적인 혜택 : 웹표준의 혜택을 제공해줌 p126
   사이트 개발과 유지보수 시간 감소
   서버 부하량 감소
   상호 운용성 향상
   고급 기술 수용을 위한 준비
- 재정적 혜택
  검색엔진 최적화
  웹사이트 활용증진
  직접비용 절감 (유지보수, 서버구입비용, 멀티 장치용 사이트 개발 비용, 신기술 업그레이드 비용)

웹 접근성 표준 통합 사례 : 북캘리포니아 주립대 사례 http://www.ncsu.edu/it/access/webreg.html

HTML : 구조, CSS : 표현, JavaScript : 동작

/* 생각보다 두꺼워 읽을 시간이 없었다.. 한가할때 다시 찾아봐야 할듯  사례연구가 있으니 한번 쭉 따라가면 될까? * /
posted by smplnote
2011. 7. 15. 17:19 1300K
쉽고 빠르게 익히는 CSS3
국내도서>컴퓨터/인터넷
저자 : 제이슨 크랜포드 티그(Jason Cranford Teague) / 유윤선역
출판 : 위키북스 2011.04.15
상세보기



// if 전용 css 추가시. (특정버전 비교, 명시도 가능.. ) p.328 
<!--[if IE]>
  <link href="ie.css" rel="stylesheet">
<![endif]-->

css library / framework
blueprint : www.blueprintcss.org 

emastic : using em
code.google.com/p/emastic

typhgridphy
csswizardry.com/typogridphy

YUI grid : yahoo's css grid framework
developer.yahoo.com/yui/grids


css compression 
Minify CSS
Sww.minifycss.com/css-compressor 
* 동작방식이 달라질 수 있으므로 테스트 필요. 


모범개발방식
- 구조를 먼저잡고 표현을 나중에.
- 독타입 지정 
- 모든 스타일은 외부스타일로 관리
- 외부 스타일시트 수를 최소화
- 스타일 링크는 반드시 head안에 
- 개발은 FF, Chrome 등에서 테스트하고 IE에 맞게 수정한다. (웹표준 먼저)
- 배포전 CSS 최소화 
posted by smplnote
2011. 7. 14. 08:24 IT
// 예전에 쓴 자료 (2004) // 기록을 위해 남깁니다. 

클라이언트의 정보를 얻는 방법은

http request에서 제공되는 정보, client 스크립트(자바스크립트,VB스크립트)에서 제공해주는 정보, Form에서 전송되는 고객이 선택한 정보. 이 세가지가 일반적이고 그 이상의 정보를 얻기 위해서는 applet, activeX 등을 직접 제작해야  합니다.

 

1. 먼저 다국어와 로케일시간을 처리하는 방법을 보자면

단순한 쿠키세팅값을 읽어와 출력해주는 것입니다.

-----------
timeNameObj = new Array("사모아", "하와이",
 "알래스카", "태평양 표준시",
 "애리조나", "미국(중부)",
 "미국(동부)", "상파울로",
 "브라질리아", "중부-대서양",
 "아조레스", "런던",
 "로마", "아테네",
 "모스크바", "두바이",
 "이슬라마바드", "아스타나",
 "자카르타", "북경",
 "서울", "시드니",
 "마가단", "오클랜드");
timeObj = new Array("GMT-11","GMT-10","GMT-9","GMT-8","GMT-7","GMT-6","GMT-5","GMT-4","GMT-3","GMT-2","GMT-1","GMT","GMT+1",
 "GMT+2","GMT+3","GMT+4","GMT+5","GMT+6","GMT+7","GMT+8","GMT+9","GMT+10","GMT+11","GMT+12");

// body on Load시 호출
f unction init(){
  saveTimezone = getCookie("saveTimezone");
  for (i=0;i<24;i++) {
    if (saveTimezone==timeObj[i]) {
      xform.TIMEZONE2.value = timeNameObj[i] + " (" + timeObj[i] + ")";
    }
    else
      xform.TIMEZONE2.value = timeNameObj[20] + " (" + timeObj[20] + ")";
  }
}
----------------------

위의 내용을 설명하자면 자바스크립트 배열로 GMT시간을 저장해놓고

saveTimezone 이란 이름의 쿠키에 값이 있는경우 해당 값을 화면에 출력해주는 것입니다.

쿠키에 값이 없는 경우엔 디폴트로 20번 배열(한국)을 보여줍니다.

 

다국어 처리도 마찬가지군요

<select name="LANG">
  <OPTION value="en_US.EUC-KR" >영어</OPTION>
  <OPTION value="ko_KR.EUC-KR" selected>한국어</OPTION>
  <OPTION value="ja_JP.SJIS" >일본어</OPTION>
  <OPTION value="zh_CN.GB2312" >중국어</OPTION>
</select>

기본값을 영어로 하고 쿠키에 셋팅되어있는 값을 읽어 언어 로케일을 설정한뒤
이 값을 가지고 이후에 resource bundle에 적용하게 됩니다.

 

2. resource bundle을 사용하는 방법
 먼저 언어별 properties file을 생성. (test.properties, test_fr.properties, test_de.properties )
 
 java application에서 bundle 사용 코드 작성
 ---------------------
 ResourceBundle labels = null;
 
 String localeString = "fr"; // 프랑스어로 설정
 
 Locale currentLocale = new Locale(localeString);
 
 labels = ResourceBundle.getBundle("test",currentLocale);

 String value  = labels.getString("xxx");
 
 localeString = "de"; // 독일어로 변경
 
 labels = ResourceBundle.getBundle("test",currentLocale);

 보다 자세한 내용은 .. http://java.sun.com/jdc/TechTips/1998/tt0521.html#tip2

 

3. 그러나 실제로 web application의 경우 ResourceBundle 클래스를 바로 쓰지 않고
 struts 의 경우와 같이 MessageResources 클래스를 이용합니다.
 (struts site를 참조하세요 ) http://jakarta.apache-korea.org/struts/doc-1.0.2/userGuide/building_view.html

 

posted by smplnote
2011. 7. 8. 14:07 IT
Cross Platform을 위해 기존 파일 업로드 모듈을 변경하게 되었다. 

기존 ActiveX 모듈이 제공하는 기능은 다음과 같다.
- Drag & Drop 
- 첨부갯수, 용량제한 지원
- 이미지 업로드 연계 (게시판에서 전달한 인자를 이용하여 추가 업로드 수행)
- 첨부제외 파일 확장자 리스트 지원
- 업로드시 프로그레스 바 제공
- 다운로드시 일괄 파일저장 기능 제공 

우선 웹표준을 적용할때 제공할 수 없는 것을 정리해보면
- Drag & Drop ( 로컬 파일에 대해서는 보안위배사항)
- 용량제한 확인 불가 (역시 로컬 접근이 안되므로 서버 측에서 검사해야함)
- 이미지 업로드 연계 불가 ( file type 의 input 은 value 값이 readOnly 다. 역시 보안상의 이유)
- 프로그레스바 미제공 (이건 좀 찾아보면 나올지도... )
- 일괄파일 저장 기능 미지원 ( 이것도 좀 트릭을 쓰면 될지도... )

하여튼 이런저런 시간 낭비를 거쳐 마침내 대충 정리했다. 

적용 솔루션은 다음과 같다.
1. UI : jquery , multiple-file-upload plugin 
http://www.jquery.com 
http://www.fyneworks.com/jquery/multiple-file-upload
 
2. Server : com.oreilly.servlet
http://www.servlets.com/cos/

- 준비물 
jquery.js , jquery.MultiFile.js , WEB-INF/lib/cos.jar

- 등록 페이지
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.MultiFile.js"></script>
<script>
function upload(){
        var fileTags = document.body.getElementsByTagName('input');
var arr = new Array();
var cnt = 0;
for (var tg = 0; tg< fileTags.length; tg++) {
   var tag = fileTags[tg];
   if (tag.name =='Filename') {
    tag.name = tag.id;   // tag.name이 모두 Filename 으로 된 것을 바꾸도록 처리함 (MultiFile.js 의 버그? )
    }
}
        document.getElementById("
frmFile").submit(); 
}
function  onUploadDone(msg){
   alert(msg);
</script>
<!-- 업로드용 폼 --> 
<form name="frmFile" action="your_server_page" 
    id="frmFile" method="post" 
    target="upload_target" encoding="multipart/form-data" enctype="multipart/form-data">
    <!-- 업로드용 file input -->
    <input class="multi"  type="file"  id="Filename" name="Filename"
              accept="jpg|png|gif|tif|xls|doc|hwp|int|zip" style="width:400">
    <!-- 업로드 타겟용 frame --> 
    <iframe id="upload_target" name="upload_target" src="#" style="width:0;height:0;border:0px solid #fff;">
    <input  type="button" value="upload" onclick="upload();"/>
</iframe>

- 서버측
<%@ page language="java" contentType="text/html; charset=utf-8" import="com.oreilly.servlet.*" %>
<%
String fileDir = "/upload";
String encoding = "euc-kr";

int attachSize = 1; // Megabyte
String retVal = "":
if(request.getContentLength()>attachSize* 1024 * 1024){
        retVal = "upload file size is over";
}else{
        MultipartRequest mr = new MultipartRequest(request, fileDir, request.getContentLength(),
encoding,new DefaultFileRenamePolicy());
        Enumeration fileNames = mr.getFileNames();
        List fileInputNames = new ArrayList();
        while(fileNames.hasMoreElements()) {  
         String str = fileNames.nextElement().toString();
                fileInputNames.add(str);
        }
        for(int i=0;i<fileInputNames.size();i++){
                String inputName = (String)fileInputNames.get(i);
                String fileNm = mr.getFilesystemName(inputName);
                File file = mr.getFile(inputName);
                String orgFileName = mr.getOriginalFileName(inputName);
                retVal += fileName +" ";
        }
}
out.print("<script>parent.onUploadDone('" + retVal + "');</script>"); 
%>



[기타 기록사항]
- ajax form 비정상 작동 : ajax form 을 이용하려고 했으나 어떤 이유인지 모르지만 정상적으로 파일을 전달하지 못했다. 별수없이 iframe을 직접 작성했다. 
- multifile.js 의 name 동일성 문제 : id는 XXX1, XXX2 처럼 늘어나는데 name은 XXX, XXX 로 되는 버그가 있다. 
- file type의 input은 보안상의 이유로 value 값을 readonly로만 지원한다. 따라서 외부 게시판을 이용한 이미지 업로드 와 같은 기능은 적용할 수 없다.
- cos.jar 대신에 apache common-fileupload 를 이용하는 경우도 많은데, 내 경우에는 이미 기존에 cos.jar 를 잘 사용하고 있었고, 중복 파일에 대한 처리기능을 별도로 구현하기 귀찮고... 추가로 필요한 기능은 없어서 기존 코드를 그대로 재사용 했다.
 

 
posted by smplnote
2011. 7. 6. 08:03 1300K

삐뚤빼뚤해도 괜찮아
카테고리 만화 > 한국만화 > 웹툰
지은이 김진 (네이버웹툰, 2011년)
상세보기


미술교사 자원봉사 이야기

초등학교 아이들의 미술선생님을 하면서 했던 과정들을 아기자기하게 그려나갔다.
나름대로 흥미로운 주제를 고민하고, 노력하는 모습이 보기 좋았고
그림 뿐만 아니라 생생한 삶이 느껴졌다.

아이들의 그림 감상도 특별한 보너스다.

아이템들을 잘 기억해뒀다가 활용하는 것도 GOOD.

- 선생님 얼굴 그리기
- 만화캐릭터 그리기 ( 캐릭터와 나)
- 솜으로 눈 꾸미기 ( 그림 그리고 그위에 풀로 솜 붙이기) : 겨울
- 트리 장식하기  : 겨울
- 복주머니 그리고 새해소망쓰기 :1월
- 케이크 그리기
- 키우고 싶은 동물 그리기
- 과일의 겉과 속
- 이름으로 그림그리기
- 같은 색깔 물건 그리기
- 감정 표현하기 (화남, 슬픔, 즐거움 등 얼굴 그리기)
- 장래희망 그려보기
- 소원나무 그리기
- 내가 잘 하는 일
- 가면만들기 ( 만들고 싶은 얼굴 만들기)
- 복실복실 동물만들기 (공작)
- 종이 낚시 : 물고기 그림 만들고 실로 매달기
-  하늘과 바다에 뭐가 있을까?
- 변화하는 그림 : 종이접기 
- 합동으로 그림 그리기 

어떤 내용인지 감이 잘 안오면 관련 만화를 보시면 도움이 됩니다. 



posted by smplnote
2011. 6. 29. 18:34 1300K
스마트워크
카테고리 경제/경영 > 대학교재
지은이 김국현 (한빛미디어, 2011년)
상세보기


영국의 시인 콜리지는 아편에 취해 선잠이 들었다 깨어나는 순간 장대한 시상에 휩싸인다. 일어나자마자 주섬주섬 잉크와 종이를 챙겨 급히 써내려가기 시작하지만 갑자기 폴록(영국 남서부의 마을)으로부터 손님이 찾아온다. 허둥지둥 돌려보내고 나니 시상은 온데간데 없이 사라지고, 영문학 최초의 초현실주의 시라 칭송받는 쿠빌라이 칸 은 그렇게 미완성으로 끝나게 된다. 이 일화는 문인에게 집중이 얼마나 중요한지 이야기할 때 수없이 인용되었고, 폴록에서 온 사람(person from porlock)이라는 말은 거의 숙어가 되어 버렸다.
p207

추천 podcast
wall street journal tech news brifing
grammar girl quick and dirty tips for better writing
the economist
nyt's circuits with david pogue
forum network | public domain podcast
freakonomics radio
digital planet
this week in tech
businessweek - behind this week's cover story
the pipeline
harvard business ideacast
npr : planet money podcast

lifehacker.com
www.43folders.com


/**
 * 스스로를 부정하는 자기 계발서.
 * 많이 듣던 내용이라서 딱히 부담스럽지는 않았는데,
 * 아주 참신한 내용은 다소 부족한게 아쉬움... 
 */
posted by smplnote
2011. 6. 27. 08:23 project365



다음번 찍을때는 블럭은 빼야겠다.
모처럼 아내의 협조로 가족과의 산책중 찍은 호수공원 사진.
구름이는 작년 음악분수를 기억하고 있었다.  


posted by smplnote
2011. 6. 27. 08:19 구름이야기


posted by smplnote