[jQuery] Safari 4, Opera 10, Chrome에서 jQuery 동작 안하는 문제

View Comments

프로젝트를 진행하면서 여러가지 어려움을 겪긴 하지만 하다보면 어이없는 상황도 있다.

이번 경우가 그런 경우인지는 모르지만 조금은 어이없는 경우.

웹 화면의 깜빡임을 최소화하고 Form을 submit하고 난 후 하얀 배경에 경고창만 떨렁 나오는 걸 막기 위해 jQuery Form을 사용하는데

이걸 이용해 로그인하는 화면에서 Safari 4, Opera 10, Chrome에서 동작을 안하는 문제가 생겼다.

IE와 파이어폭스에서는 정상 동작하는데 왜 그런지를 몰라서 한참이나 이리저리 손보고 있었는데 코드를 잘못 짰는가 싶어 살펴보기도 하고

이리 저리 수정을 해봐도 도통 답이 안나온다. jQuery 사용한 페이지 대부분이 Safari 4, Opera 10, Chrome에서 작동 불능이 되었다.

구글 검색을 해봐도 그 문제에 대해선 못찾다가 jQuery 버전을 가장 최신인 1.3.2 버전을 사용중이었는데 버전을 낮춰보기로 했다.

1.3대 버전 보다는 그 전의 1.2.6 버전을 써보기로 해서 다운받아 적용해보니 1.3.2에서 안되던 Safari 4, Opera 10, Chrome에서 정상 작동한다.

1.3.2 버전에서 뭔가 버그가 있는지는 모르겠지만 어쨌든 해결이 됐으니 다행이지 그래도 안되면 어떡하나 싶다.

이거 말고도 웹접근성 맞추는 것때문에 고생인데 힘들구나~

[수정]

1.2.6을 쓰니 기존 라디오 셀렉트 부분에서 문제가 생긴다. 1.3.1 버전을 사용하니 모든게 해결. 근데 잘 모르겠네....휴~

* 이 포스트는 blogkorea [블코채널 : 프로그램에 대한 개발팁 및 유용한 정보 공유합시다.] 에 링크 되어있습니다.

댓글0 Comments (+add yours?)

트랙백0 Tracbacks (+view to the desc.)

[FF, Jeus, CSS] Jeus-WebToB 환경의 CSS가 파이어폭스에서 적용안되는 문제

View Comments

현재 개발중인 관공서 홈페이지에서 조금은 황당한 오류를 경험했다.

일반적인 톰캣 서버에서는 발생안하는 문제인데 디자인을 위한 CSS가 IE에서는 잘 되는데 파이어폭스나 크롬에서는 CSS 적용이 안되는 문제가 발생했다.

일단 이런 문제가 있으면 검색을 통해 찾아보는데 다음과 같은 내용이 검색된다.


위 내용에서 보면 제우스와 웹투비 환경에서의 설정문제인걸로 나온다.

문제해결을 위해선 제우스 홈디렉토리 아래 webserver폴더의 config 하위 폴더에 있는 http.m 설정파일을 수정해주어야 한다.

위의 블로그에선 http.m 설정파일의 MimeType 설정 내용 중 css 내용을 아래와 같이 변경해주라고 하는데

css         MimeType = "text/css",                      SvrType = HTML

위와 같이 해도 내가 개발중인 환경에선 해결이 되지 않는다.

결국 제우스를 관리해주는 엔지니어에게 문의하니 http.m 설정파일에서 아래와 같은 설정내용을 추가하니 해결이 된다.

htc         MimeType = "text/x-component",              SvrType = HTML (추가)
#txt        MimeType = "text/plain",                    SvrType = HTML (주석처리)

조금은 어이없게 해결이 되었는데 톰캣이나 다른 쪽에선 별다른 설정없이 되는 걸 왜 저렇게 설정을 해줘야 돌아가게 해두었는지 모르겠다.

개발프로젝트마다 환경이 다르겠지만 저런 건 기본적으로 되어야되는 문제가 아닌가 싶다.

현재로선 제우스와 웹투비와 같이 돌아가는 환경에서만 발생되는 문제인지 제우스만 돌렸을 때는 정상적으로 되는지는 확인 못함.

일단 해결은 되었으니 다행이긴 한데 좀 어이없는 문제.

* 이 포스트는 blogkorea [블코채널 : 프로그램에 대한 개발팁 및 유용한 정보 공유합시다.] 에 링크 되어있습니다.

8 Comments (+add yours?)

트랙백0 Tracbacks (+view to the desc.)

[JAVA, WSDL] 기상청 웹서비스를 이용한 기상정보 조회

View Comments

이번 관공서 프로젝트를 진행하던 중 기상정보를 조회할 수 있는 기능이 들어가야되서 기상청에서 제공하는 웹서비스를 이용하게 됐다.

WSDL이라는 XML형태로 제공되는 웹서비스 기술언어를 이용하는데 이번 프로젝트에서 처음 접해보는 거라 적용하는데 애를 먹어서

다음 번에 비슷한 작업을 하게 될 경우를 대비해서 정리해 본다.

기상청 웹서비스는 현재 개인에게는 서비스는 하지 않고 관공서나 방재관련쪽에만 서비스를 한다고 한다. (관련 Q&A)

혹시나 관공서쪽 프로젝트를 하면서 기상청 웹서비스를 이용하고자 한다면 기상청에 웹서비스 이용신청서를 작성하여 서비스 이용에 필요한 아이디와 패스워드를 발급받아야 이용 가능하다.

WSDL로 제공되는 기상청 웹서비스는 WSDL 형태로 제공이되고 현재 사용할 프로젝트에 적용하기 위해선 언어에 맞는 Client Stub으로 변환할 필요가 있다.

참여중인 프로젝트는 JAVA를 이용하기에 JAVA에서 쓰기 위한 Client Stub으로 변환하는 방법에 대해서만 정리한다.

   WSDL을 Client Stub으로 변환  

WSDL을 이용하여 Client Stub으로 변환하기 위해서 기상청 시스템 담당자로부터 전달받은 메뉴얼은 작년에 작성된 문서이고 정작 중요한 부분이 설명이 안되어 있어서 그대로 보고 변환하고자 하기엔 어렵다.

JAVA에서 WSDL을 변환하는 유틸은 AXIS 라이브러리를 쓰기도 하고 WAS에서 제공하는 유틸을 사용하기도 한다.

현재 프로젝트에서는 jeus를 사용하기때문에 jeus에서 제공하는 유틸을 이용하기로 한다.

jeus가 설치되어있지 않다면 TmaxSoft 테크넷에서 Trial버전을 다운받아 설치한다. 회원 로그인을 해야만 다운로드가 가능하다.

jeus를 설치하고 jeus 홈 디렉토리의 samples 폴더 아래에 ant_task란 폴더에 보면 wsdl2java란 예제 폴더가 있고 그 안에 genclient 폴더에 보면

build.xml이 있는데 그 파일과 samples 폴더 아래의 common 폴더를 이용하면 된다.

build.xml의 내용을 보면

<?xml version="1.0" encoding="UTF-8"?>
<project name="SurfaceService" default="build" basedir=".">
    <property name="is.app-client.module" value="true"/>
    <import file="./common/common-build.xml"/> -- common-buil.xml의 경로는 자신에게 맞는 경로로 변경
    <taskdef name="wsdl2java" classname="jeus.util.ant.webservices.Wsdl2JavaTask">
        <classpath refid="jeus.libraries.classpath"/>
    </taskdef>
    <target name="-pre-compile">
        <mkdir dir="${build.classes.dir}"/>
        <wsdl2java destDir="${build.classes.dir}"
            verbose="true"
            mode="gen:client"
            doCompile="true" -- true이면 JAVA 소스와 컴파일된 파일이 생성되고 false이면 JAVA소스만 생성
            noDataBinding="false"
            package="kma.websky.client.stub.forecast" -- 변환된 JAVA소스가 담길 package 정의
            wsdl="http://websky.kma.go.kr/services/SurfaceService?wsdl"> -- 변환할 서비스의 WSDL 주소
            <classpath refid="jeus.libraries.classpath"/>
            <classpath refid="classpath"/>
        </wsdl2java>
    </target>
</project>

위 표시된 부분을 자신의 프로젝트에 맞게 변경하여 cmd창에서 위 build.xml파일이 위치한 경로에서 jant를 실행하면 아래 그림과 같이 실행된다.

참고로 기상청 웹서비스 목록은 http://websky.kma.go.kr/ 사이트에서 확인 가능하고 위에서 사용된 WSDL은 지상 웹 서비스이다.

build

WSDL을 JAVA로 변환하기 위한 build


이렇게 변환을 하고 나면 build.xml이 위치한 폴더에 build 폴더와 dist란 폴더가 생성이 되고 build 폴더에는 build.xml에서 정의한 package 경로에 변환된 소스들이 생성이 되고 dist 폴더에는 해당 소스를 압축한 jar 파일이 생성된다.

생성된 것들 중 편한대로 사용하면 된다. jar파일을 이용하고자 하면 WEB-INF 폴더의 lib폴더에 jar파일을 넣어서 사용하면 되고 JAVA소스를 이용하고자 한다면 src폴더아래에 두고 사용하면 된다.

   변환된 Client Stub 사용에 필요한 라이브러리  

Client Stub으로 변환 후 프로젝트에 사용하고자 한다면 변환된 JAVA소스에서 사용하는 관련 라이브러리도 필요하다.

아래 목록이 그 라이브러리들이다.

bootstrap.jar
FastInfoset.jar
javax.jms.jar
jaxrpc-api.jar
jaxrpc-impl.jar
jaxrpc-spi.jar
jaxws-rt.jar
jeus.jar
jeusapi.jar
jeusutil.jar
jeus-ws.jar
saaj-impl.jar

 - 참고1 : 빨간색으로 표시된 jar 파일은 아래 첨부파일을 다운받아 사용하면 된다.

 - 참고2 : 빨간색의 굵게 표시된 JAR파일을 제외하고 나머지 jar 파일은 JEUS 설치 후 JEUS 홈디렉토리 아래 \lib\system 폴더 하위에 존재한다.

   소스에 적용하기  

기상청에서 제공하는 많은 웹서비스들이 있고 각 서비스마다 조회 가능한 기상정보들이 많기 때문에 다 쓸 필요는 없고 필요한 서비스만 가져다 쓰면 된다.

해당 웹서비스의 WSDL을 JAVA 소스로 변환하여 프로젝트에 추가한 후 아래와 같이 사용하면 된다.
/**
* 기상청 웹서비스 관련 Util Class
*/
public class KmaWeatherUtil {
private static SurfaceServiceImplService_Impl impl = null;
private static SurfaceServiceImpl_Stub service = null;

/**
* Default Constructor
*/
public KmaWeatherUtil() {
impl = new SurfaceServiceImplService_Impl();
service = (SurfaceServiceImpl_Stub)impl.getSurfaceService();

service._setProperty(javax.xml.rpc.Stub.USERNAME_PROPERTY, "발급받은 ID");
service._setProperty(javax.xml.rpc.Stub.PASSWORD_PROPERTY, "발급받은 Password");
}

/**
* 주어진 지점코드와 시간의 현재 기상정보를 받아온다.
* @param station_id
* @param time
* @return
* @throws RemoteException
*/
public CurrentWeatherModel getCurrentWeatherInfo(String station_id, String time) throws RemoteException {
return service.getCurrentWeather(station_id, time);
}
}

// 실제 사용하는 부분
// 143은 대구의 지역코드이고 2번째 인자는 String 형태(yyyyMMddHH)의 시간이며 null은 현재 시간
KmaWeatherUtil kmaWtUtil = new KmaWeatherUtil();
CurrentWeatherModel curWtInfo = kmaWtUtil.getCurrentWeatherInfo("143", null);
위 소스에서 getCurrentWeatherInfo 함수는 현재 시간의 기상정보를 가져오고 필요한 파라메터는 조회하고자 하는 위치코드(station_id)와 조회를 원하는 시간(time)을 넘겨주면 되고 현재 시간의 기상정보를 얻을려면 null값을 넘겨주면 된다.

JSP에서 표시되는 결과는 아래 그림과 같이 나온다.

결과


이상으로 변환에 대한 정리를 마친다. 현재 프로젝트에서 사용하는 건 현재 기상정보만을 사용하기때문에 함수 하나로 간단하게 되지만 서비스하고자 하는 기능이 많다면 좀 더 복잡해질거라 본다.

* 이 포스트는 blogkorea [블코채널 : 프로그램에 대한 개발팁 및 유용한 정보 공유합시다.] 에 링크 되어있습니다.

26 Comments (+add yours?)

트랙백0 Tracbacks (+view to the desc.)

구글 날씨 API용 국내 주요 시/군 코드 정리

View Comments

http://www.google.co.kr/ig/api?weather=해당 시/군의 영문명


위 주소는 구글에서 제공하는 날씨 정보를 얻기 위한 날씨 API용 주소이다.

원하는 시/군의 영문명을 입력하면 XML형태의 데이터로 결과를 출력해준다.

예를 들어 대구의 날씨를 알고 싶다면 다음과 같이 입력해주면

1. http://www.google.co.kr/ig/api?weather=Daegu
2. http://www.google.co.kr/ig/api?weather=Taegu

1,2번 아무거나 넣으면 된다. 내가 알기론 2번의 영문명은 예전에 사용하던 것이고
1번이 변경된 영문명인 걸로 안다.


결과는 다음과 같이 나온다.

View Result



이렇게 나오는 XML 결과를 가지고 원하는 언어(Java, ASP.Net, Flex 등)에서 가져다 사용하면 된다.

그런데 사용을 할려고 하면 대도시 같은 명칭은 대부분 쉽게 찾아 사용할 수 있는데

작은 시/군에 대한 영문명은 구글에서 어떻게 정의를 해두었는지를 몰라서

시/군에 대한 데이터를 가지고 올라치면 여기저기 찾아봐야한다.

난 구글 Analystics에 있는 블로그 접속 지역이 영문으로 나오길래 그걸 참고해서

일일히 노가다로 직접 쳐서 결과 나오는 걸 보고 다음과 같이 정리를 해두었다.

이래야 나중에 사용할 때 쉽게 사용을 하지 ㅋ

근데 더 있을건데 더 이상은 잘 모르겠다. 나중에 또 찾게 되면 그때 다시 수정을 해야겠다.

국내 주요 시/군 영문명


6 Comments (+add yours?)

트랙백1 Tracbacks (+view to the desc.)

[AIR] 구글 날씨 API를 이용한 날씨 정보 유틸

View Comments


이번에 프로젝트 투입이 되면서 처음 접하게 된 언어가 있다. 바로 Adobe사의 Flex란 언어이다.

그동안 자바, JSP로만 웹 개발만 해오다 새로운 걸 접하니 생소하고 두렵기도 하고 해서 예제로 배우는 Adobe FLEX란 책을 구매하여 공부하는 중이다.

그런데 구글 날씨 API를 이용한 날씨 정보 유틸은 이 책에 제일 뒤쪽 부록으로 간략하게 설명이 되어 있는 AIR란 걸 이용하여 만들었다.

에어(AIR)란 Adobe사에서 아폴로(Apollo)란 이름으로 진행했던 프로젝트의 정식 명칭이다.
에어는 윈도우 데스크탑 버전의 RIA 어플리케이션을 작동하게 하기 위한 운영체제 호환, 디바이스 호환이 가능한 런타임이다.
기존의 FLEX가 웹브라우저에서 동작하는 어플리이케이션이고 로컬 자원에 접근하기가 힘든 반면
에어는 웹브라우저가 아닌 윈도우에서 실행이 되고 로컬 자원에 접근할 수 있다는 장점이 있다.

대강 에어가 이렇다는 걸 상기하고 기존 플렉스(FLEX)를 개발해봤던 사람이면 에어 어플리케이션을 쉽게 제작 가능하다.

왜냐하면 실행되는 환경이 다를 뿐 개발 방식은 똑같기 때문이다. 설명은 여기까지 하고 구글 날씨 API를 이용하여 개발한 소스를 첨부한다.

▼ 개발 소스 보기


위 소스로 만든 어플리케이션의 실행화면은 다음 그림을 참고하기 바란다.

사용자 삽입 이미지

그림을 보면 콤보박스에서 조회하고자 하는 도시를 선택을 하면 현재의 날씨 정보를 텍스트박스에 보여주고 오른편에 이미지로 나타내준다.

그 아래에는 오늘 날씨 정보와 3일치의 날씨 정보를 나타내준다.

날씨 정보에 대한 소스는 이전 글(구글 날씨 API용 국내 주요 시/군 코드 정리)를 참고하기 바란다.

실제로 저 허접한 유틸을 돌려보고 싶은 사람이 있다면 다음 첨부파일을 다운받아 설치하면 간단하게 사용이 가능하다.
설치하는 건 다른 일반 윈도우 어플리케이션과 비슷하다.

다만 테스트용 인증서로 배포버전을 만든 거라 경고문이 뜨는 데 악성프로그램이 아니니 안심하고 설치하면 된다.

마음에 안들면 제어판->프로그램 추가/제거에서 JuneUtil이란 놈을 찾아 과감히 삭제하시길.


본인의 컴퓨터에 Adobe AIR Runtime이 설치되어 있다면 첨부파일로만 설치하여 사용이 가능하고 설치안되어 있는 분들은 Adobe AIR사이트에서 다운받아 설치하면 된다.

용량이 12MB로 큰 용량이 아니니 부담없이 설치해도 될 듯 하다.

에어 런타임 다운받기

※ 혹시나 본문의 소스보기가 힘들고 첨부파일을 설치하신 분은 해당 프로그램을 실행 후  마우스 오른쪽 버튼을 누르면 View Source란 메뉴를 통해서도 쉽게 소스를 볼 수가 있으니 참고바랍니다.

6 Comments (+add yours?)

트랙백1 Tracbacks (+view to the desc.)

PostgreSQL 설치하기

View Comments

회사에서 프로젝트 진행에 사용할 DBMS를 설치했다.

PostgreSQL이라고 중형 DBMS인데...예전에 들어보긴 했지만 써보는 건 이번이 처음이다.

오라클이랑 MySQL은 써봤는데 ㅋㅋ 별걸 다 써보는 구나.

일단 설치를 위해서 다음 링크에서 가장 최신 버전인 8.2.3버전을 받자~!

http://wwwmaster.postgresql.org/download/mirrors-ftp?file=%2Fbinary%2Fv8.2.3%2Fwin32%2Fpostgresql-8.2.3-1.zip

위 링크에서 태극기 그림의 아무링크나 클릭해서 다운받으면 되니 맘에 드는걸로 다운.

다운 후 압축을 풀어서 postgresql-8.2.msi를 선택해서 설치.

[설치 진행]

1. 언어는 English 선택

2. 설치옵션은 자신이 필요한 것들 선택해서 설치

3. Service Configuration 항목에서 계정관련 정보를 입력후 Next를 누르면 Account Name에 적은 사용자 계정이 없으면

   새로 생성할 것이냐고 묻는데 Yes, 다시 경고창이 뜨는데 암호가 취약하니 랜덤으로 생성할 거냐고 묻는데 그냥 No 선택

4. Initialise database cluster 항목에서 포트는 디폴트로 그냥 두고 Address는 그냥 체크해제.

   Locale은 Korean, Korea로 Encoding은 EUC-KR로 선택. Superuser 관련 정보를 입력 후 Next를 누르면

   어떤 컴퓨터에서는 다음과 같은 경고창이 나오는 컴퓨터가 있을 것이다.

사용자 삽입 이미지

위와 같은 경고창이 뜨는 이유는 Secondary Logon 서비스가 실행이 되지 않고 있어서 뜬다.

시작-실행창에서 services.msc를 실행 후 해당 서비스를 실행을 시킨 후 진행하면 정상적으로 설치가 된다.

사용자 삽입 이미지

나머지 옵션들은 디폴트로 두거나 필요한 옵션을 선택해서 설치를 하면 완료~!!

댓글0 Comments (+add yours?)

트랙백0 Tracbacks (+view to the desc.)

Keil C51 C Compiler

View Comments

http://www.keil.com/support/man/docs/c51/    :  C51 C Compiler Online User Manual

LCD TV 회사에 다닐 때 개발에 사용했던 컴파일러입니다.

생소한 이름이지만 C 언어 기반 언어인 듯 한데 자세한 건 LCD TV 제조회사에 오래 다니진 않아서 상세히는 모른다는;;

생소하긴 하지만 그렇다고 어렵지는 않아서 C언어를 할 줄 안다면 쉽게 접근 가능합니다.

위 링크는 개발할 때 참고할 수 있는 온라인 메뉴얼 등 컴파일러 사용에 도움이 되는 정보들이 있으니

해당 개발부분 담당하시는 분들은 참고하시면 되겠습니다 ^^;

댓글0 Comments (+add yours?)

트랙백0 Tracbacks (+view to the desc.)

EDID(Extended Display Identification Data)

View Comments

첨부파일 :



EDID에 대한 파일..

EDID가 대충 뭔지 말하자면 Display가 PC에게 Display 정보를 알려주기 위한 데이타.

제조사, 제조년월일, 시리얼번호, 지원해상도 등의 내용을 가지고 있는 데이타이고

Plug and Play를 지원하기 위해 만들어진 데이타.

댓글0 Comments (+add yours?)

트랙백0 Tracbacks (+view to the desc.)

Newer Entries Older Entries