간만에 안드로이드를 할 때마다 요즘 골치입니다.

XP에서 emulator를 띄우는 법입니다.


이런 에러 메시지를 만나게 됩니다.

Starting emulator for AVD 'avd18'

Failed to create pbuf surface for FB 0x3004

emulator: WARNING: Could not initialize OpenglES emulation, using software renderer.

extension WGL_ARB_make_current_read was not found

extension WGL_EXT_swap_control was not found

Failed to allocate memory: 8

This application has requested the Runtime to terminate it in an unusual way.

Please contact the application's support team for more information.



제가 해결한 방법입니다. .android 폴더 아래 avd 경로로 이동합니다.

C:\Documents and Settings\Administrator\.android\avd\avd18.avd

config.ini 파일을 엽니다.



hw.ramSize=576 이라고 되어 있는 라인에 MB 를 덧붙여줍니다.




저장하고 다시 에뮬레이터를 실행해봅니다.

배치처리 (Batch Layer)  


지속적으로 제기된 일괄(배치) 기능에 대한 요구를 지원하기 위해 실행환경, 개발환경, 운영환경 으로 이루어진 일괄(배치) 프레임워크가 추가되었습니다.  





표준프레임워크 배치 실행환경은 3개 레이어(Core, Support, Execution Layer)로 구성되며, 일괄 (배치) 처리를 위한 기반 환경을 제공합니다.  



모바일 화면처리 (Mobile Presentation Layer)  


모바일 화면처리는 모바일 웹 애플리케이션을 위한 자바스크립트 프레임워크인 jQueryMobile을 포함하고 있습니다. 




모바일 디바이스 API (Mobile Device API Layer)  


모바일 디바이스 API는 아이폰, 안드로이드 앱으로 모바일 웹 애플리케이션을 패키징하고, 가속도계, 위치정보, 주소록 같은 디바이스의 기능을 자바스크립트로 제어하도록 지원합니다.





디바이스 API는 가장 많이 사용되는 폰갭(phonegap)을 포함하고 있습니다.



파일 첨부합니다.

hsqldb 로 돌아가는 소스입니다.



egovm.zip


Ceylon (http://ceylon-lang.org) 언어는 Java와 JavaScript 두 가지 플랫폼을 지원합니다. JVM 또는 node.js 플랫폼에서 동작하는 진정한 일타쌍피 언어이죠.

이 실험적인 언어의 기능(Feature)이 정해졌다고 합니다.

http://www.theserverside.com/news/thread.tss?thread_id=77418 (Gavin King이 직접 쓴 뉴스)

http://www.infoq.com/news/2013/09/ceylon-beta


Ceylon은 C, Java언어를 아시는 분들은 아주 잘 읽힙니다. html도 구조대로 프로그래밍을 하고 동적으로 생성해줍니다.

Table table = Table {

    title = "Squares";

    rows = 5;

    Border {

        padding = 2;

        weight = 1;

    };

    Column {

        heading = "x";

        width = 10;

        String content(Integer row) {

            return row.string;

        }

    },

    Column {

        heading = "x^2";

        width=10;

        String content(Integer row) {

            return (row^2).string;

        }

    }

};


하이버네이트로 자바 표준인 JPA도 이끌어낸 Gavin이라 이 분이 만든 Ceylon이 어떤 반향을 일으킬 것 같습니다. 특히나 메이저 언어가 된 자바스크립트와 전혀 다른 언어 자바를 통합시켰으니까요.


15분이면 Ceylon 언어를 탐험하실 수 있습니다. 

http://ceylon-lang.org/documentation/current/introduction/

영어가 안되서 당황하시면 안 됩니다. ^^;

표준프레임워크의 자동생성된 샘플은 hsqldb를 기본적으로 이용하고 있습니다. 2.6부터는 hsqldb서버를 따로 실행하지 않고, 바로 실행합니다.


datasource 설정부터 찾아보겠습니다.

ctrl+shift+R(맥은 cmd+shift+R)로 Open Resource 창을 엽니다. *data라고 검색어를 입력하면 context-datasource.xml 파일이 보입니다. 선택해서 파일을 엽니다.


<jdbc:embedded-database> 설정이 HSQL을 지정하고 있습니다. db파일의 위치는 classpath상에 있고, db/sampledb.sql 입니다. sampledb.sql 파일을 선택하고 ctrl+shift+R 단축키를 입력하면 sampledb.sql 파일을 쉽게 열 수 있습니다.


src/main/resources 폴더 아래 db 폴더가 있고, 그 아래 sampledb.sql 파일이 있습니다. 파일을 열어서 sql 내역을 살펴보겠습니다.


CREATE MEMORY TABLE SAMPLE(...) 과 같은 SQL을 볼 수 있습니다. 


메모리 DB를 사용하면 테스트를 용이하게 할 수 있는 장점이 있습니다. 딱 거기까지입니다. 익숙하게 다루기까지는 연습이 많이 필요할 것 같습니다.




맥에서 java8 현재 RC1을 사용하고 있는데, jsp가 컴파일이 안 되는 이슈가 있네요.


HTTP Status 500 - Unable to compile class for JSP: An error occurred at line: 1 in the generated java file The type java.util.Map$Entry cannot be resolved. It is indirectly referenced from required .class files Stacktrace:


type Exception report

message Unable to compile class for JSP: An error occurred at line: 1 in the generated java file The type java.util.Map$Entry cannot be resolved. It is indirectly referenced from required .class files Stacktrace:

description The server encountered an internal error (Unable to compile class for JSP: An error occurred at line: 1 in the generated java file The type java.util.Map$Entry cannot be resolved. It is indirectly referenced from required .class files Stacktrace:) that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: 1 in the generated java file
The type java.util.Map$Entry cannot be resolved. It is indirectly referenced from required .class files

Stacktrace:
	org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:102)
	org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:331)
	org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:469)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:378)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
	org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

note The full stack trace of the root cause is available in the Apache Tomcat/7.0.28 logs.


Apache Tomcat/7.0.28

환장했습니다.

이클립스에서 톰캣의 런타임 JRE를 java7으로 강제 지정하니 잘 동작합니다.
ctrl+3 에서 runtime 으로 검색하고 Preferences > Runtime Environments 선택합니다.


톰캣을 선택하고 Edit... 버튼을 클릭합니다.


JRE: 항목이 Java SE 8로 되어 있군요. SE(시)8


Workbench default JRE 는 이클립스 워크스페이스에서 기본 지원하는 버전을 사용하는데, 그냥 맘편하게 Java SE 7 으로 지정하는 것도 나쁘지 않습니다. 기본환경이 언제 저를 배신할 지 모르기 때문이죠.


정식 Java SE 8이 나오면 제대로 잘 되기를 바래봅니다.

아, 오라클



jQuery.browser는 브라우저 정보를 보여줍니다. 1.8.x 까지는 존재했었는데, 1.9.x에서는 없어졌군요.


jquery-migrate.min.js 를 추가하면 1.9.x 이상에서도 보입니다만, console로 보면 deprecated(후지게 되었으니, 가능하면 쓰지마세요.) 메시지가 나옵니다. 


1.9.x 이상에서 사용할 경우 아래의 추가된 코드에 주석을 제거하면 됩니다.



참고: https://github.com/jquery/jquery-migrate/


가장 많이 사용되는 자바스크립트 라이브러리 jQuery가 2.x대로 업그레이드 되었습니다. 

1.x대 버전과 똑같은 API를 사용하는 특징이 있어서, 호환성이 그대로 유지됩니다만,

1.x대 버전과 가장 큰 차이점은 더 이상 ie 6,7,8 버전을 지원하지 않는다는 것입니다.


이 글을 쓰는 시점에 최신 배포되는 1.10.2.js 의 크기는 266.80KB 입니다. 

http://code.jquery.com/jquery-1.10.2.js


똑같은 기능을 하지만, ie6,7,8을 지원하지 않는 2.0.3.js는 다음과 같이 크기가 236.47KB입니다.

http://code.jquery.com/jquery-2.0.3.js


10% 정도의 코드량이 감소했습니다. 압축된 버전도 90KB 대 81KB로 약 10%정도의 차이가 납니다.

http://code.jquery.com/jquery-1.10.2.min.js

http://code.jquery.com/jquery-2.0.3.min.js


호환성을 위해서 이전 버전을 지원할 것이냐, 깔끔하게 털고 갈 것이냐의 결정은 언제나 어렵습니다. jQuery쪽에서도 2.x 사용에 대한 조건이 있습니다. 

"Since IE 6/7/8 are still relatively common, we recommend using the 1.x version unless you are certain no IE 6/7/8 users are visiting the site." from: http://jquery.com/download/

"IE 6/7/8 버전이 여전히 보편적이기 때문에, 사이트에 IE 6/7/8 사용자가 안 올 것이라는 확신이 없다면 1.x 버전 사용을 권장합니다."


쉽지 않은 작업을 잘 해내는 듯한 팀입니다.

https://github.com/jquery?tab=members

현재 46명의 개발자들이 협업을 하고 있습니다.


jQuery를 만든 친구, John Resig은 jeresig 아이디를 씁니다.

mixpanel 이라는 곳에서 제공하는 통계입니다. 참고할만 합니다.

출시 3일만에 46%까지 올라갔네요.


https://mixpanel.com/trends/#report/ios_7




via: https://www.facebook.com/chanjin65/posts/657047097646357


업무처리 (Business Logic Layer)  


업무처리 레이어는 업무 프로그램의 업무 로직을 담당하는 레이어로서, 업무 흐름 제어, 에러 처리 등의 기능을 제공합니다.  

<그림> 업무처리 레이어 구성  



업무처리 레이어는 Spring Web Flow, Spring 이상 2가지 오픈소스를 사용합니다.  

프로세스 제어(Process Control)을 담당하는 웹 플로우는 페이지 흐름(flow)의 정의와 수행을 처리합니다.  

에러 처리(Exception Handling)는 표준프레임워크 기반의 시스템 개발시 Exception에 따라서 특정 로직을 실행하여 Exception에 따라 적절한 대응을 할 수 있습니다.  



데이터처리 (Persistence Layer)  

데이터처리 레이어는 데이터를 다루는 역할을 전담하며, 데이터베이스에 대한 연결 및 영속성 처리, 선언적인 트랜잭션 관리를 제공합니다. 데이터처리 레이어의 구성은 다음과 같습니다.  

<그림> 데이터처리 레이어 구성  



데이터소스(DataSource)와 트랜잭션(Transaction)은 스프링을 사용합니다.  
데이터 접근(Data Access)는 iBatis를 사용하고 있으며, SQL Mapper를 통해서 XML로 정의된 SQL을 활용합니다.  
ORM(Object-Relational Mapping)은 하이버네이트(Hibernate)를 사용하고 있습니다. 하이버네이트는 자바 객체와 관계형 데이터 모델 간의 매핑을 위한 도구이며, 자동 생성된 쿼리 서비스를 지원하는 강력한 고성능의 퍼시스턴스 프레임워크입니다.


연계통합 (Integration Layer)  

연계통합 레이어는 다른 시스템과 데이터 교환을 지원하는 역할을 합니다. 연계통합 레이어의 구성은 다음과 같습니다.  

<그림> 연계통합 레이어 구성  



Naming Service, Integration Service, Web Service 등 총 3개 서비스를 제공합니다.  
네이밍 서비스(Naming Service)는 스프링을 이용합니다.  
인테그레이션 서비스(Integration Service)는 표준프레임워크 기반의 시스템이 다른 시스템과의 연계를 위해 사용하는 Interface의 표준을 정의한 것입이다.  
웹 서비스(Web Service)는 아파치 CXF를 사용합니다. 공개되어 있는 웹 서비스를 호출하고, 처리 결과를 돌려줍니다. 개발한 업무 모듈을 웹 서비스로 공개할 수 있도록 프록시(Proxy) 등을 제공하고, 완성된 웹 서비스로 공개합니다.

+ Recent posts