Ajax mobile 에서는 아래와 같은 형태로 loader 가 존재하는데 문제는 기본스타일이 구식이므로 커스텀이 필요한 경우가 많다. 


.ui-loader .ui-icon-loading {
  background-color: #000; 
  display: block;
  margin: 0;
  width: 2.75em;
  height: 2.75em;
  padding: .0625em;
  -webkit-border-radius: 2.25em;
  border-radius: 2.25em;
}

.ui-icon-loading {
  background: url(images/ajax-loader.gif);
  background-size: 2.875em 2.875em;
 }


위의 항목들중에 일부를 변경하여 쉽게 변경한다. 

보통 이미지를 바꾸고 싶어하므로 .ui-icon-loading 의 url 항목을 아래와 같이 변경한다 .


1. 

.ui-loader .ui-icon-loading { background-color: transparent; }


.ui-icon-loading { background: url("더_url.gif"); }



2. JQuery 모바일에서 이미 HTML으로 커스텀하에 지정하는 기능이 있는데 위의 경우보단 약간 까다롭다


자세한건 아래 링크를 참조해보자. 예제 소스를 보면 쉽게 따라 할수 있다.

http://demos.jquerymobile.com/1.4.5/loader/#CustomHTML



참조:

1. http://stackoverflow.com/questions/23849604/how-to-change-the-default-jquery-mobile-loading-icon

화면 영역에서 클릭한 영역마다 HTML 엘리멘트가 겹칠경우 겹치 영역에 따라 다른 이벤트를 처리하기 위해서는 이벤트 구분이 필요하다.


픽셀단위로 영역을 짜르는 경우는 해상도가 디바이스마다 다른 요즘환경에서는 사용하기 어려운 방법이기 때문에 

다른방법으로 영역을 잡는 방법이 있지 않을까 해서 자바스크립트 레퍼런스를 뒤지던중 아래와 같은 방법으로 처리하게되었다.


$("selector").click(function(evt) { var target = evt.originalEvent.target; if (target.nodeName == "CANVAS") { // 클릭한 영역이 캔버스일 경우 처리 } else if (target.nodeName == "DIV") { // 클릭한 영역이 DIV일 경우 처리 } });


기존 클릭 영역을 동적으로 계산하는 방식은 정확도가 매우 부정확했지만 이와 같은 방법으로 

다른 구준자를 넣어 동일한 엘리먼트들에 대해서도 다른 방식으로 처리하는 방식으로 응용할수 있지 않을까 생가한다 .

Spring Profiles를 통한 환경별 설정

Spring에서는 spring.profiles.active라는 프로퍼티를 이용해 현재 활성화된 프로파일(환경)을 지정할 수 있습니다. 이를 활용하면 개발(development), 운영(production), 로컬(local) 등 다양한 환경마다 다른 설정파일을 로드하거나 다양한 빈 설정을 적용할 수 있습니다.

주의사항

  • Maven Profile과는 별개의 개념이므로 혼동하지 않도록 주의하세요. Maven Profile은 빌드 시점에 적용되는 것이며, Spring Profile은 런타임 시점에 활성화되는 설정입니다.
    Maven Profile 설정은 관련 문서를 참고하세요.

프로파일 설정 방법

다음은 spring.profiles.active 값을 설정하는 여러 가지 방법입니다.

  1. 빌드 시 JVM 프로퍼티를 통한 설정

     java -jar -Dspring.profiles.active=dev my-app.jar

    위와 같이 실행 시에 -D 옵션으로 프로파일을 지정할 수 있습니다.

  2. web.xml을 통한 설정

    web.xml 파일 내 context-param을 통해 프로파일을 지정할 수 있습니다.

     <context-param>
         <param-name>spring.profiles.active</param-name>
         <param-value>production</param-value>
     </context-param>
  3. Tomcat 기동 스크립트(catalina.sh)에서 설정

    catalina.shJAVA_OPTS 설정에 프로파일을 추가합니다.

     JAVA_OPTS="$JAVA_OPTS -Dspring.profiles.active=local"
  4. Tomcat의 catalina.properties를 통한 설정

    catalina.properties 파일에 다음과 같이 추가할 수 있습니다. 이때 -D를 빼고 작성해야 합니다.

     spring.profiles.active=dev

중복된 설정에 대한 우선순위

경험적으로 확인한 결과, web.xml에 설정한 프로파일이 최우선적으로 적용됩니다. 즉, Tomcat 설정 파일 등에 프로파일이 지정되어 있더라도 web.xml이 우선하기 때문에, 웹 애플리케이션 내부에 지정된 프로파일이 있다면 외부 설정은 무시될 수 있습니다.

프로파일별 Properties 파일 로딩

spring.profiles.active에 따라 다른 properties 파일을 읽도록 설정할 수 있습니다. 예를 들어 development.properties, production.propertiesclasspath 아래에 두고, 활성화된 프로파일에 따라 알맞은 파일을 로드하도록 할 수 있습니다.

아래 예제에서는 PropertiesFactoryBean을 사용하여 활성화된 프로파일에 맞춰 프로퍼티를 동적으로 로딩합니다.

<bean id="config" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
    <property name="locations">
        <list>
            <value>classpath:/#{systemProperties['spring.profiles.active']}.properties</value>
        </list>
    </property>
</bean>

예를 들어, spring.profiles.active=dev로 설정되어 있다면 dev.properties 파일을 로딩하게 됩니다.

추가 팁: 로컬(Spring) 환경 설정을 Tomcat에서 사용할 경우

로컬 개발 환경에서 Tomcat을 이용해 어플리케이션을 기동하는 경우에도 spring.profiles.active를 적용할 수 있습니다. 이 경우 Eclipse IDE에서 Tomcat 실행 환경 설정을 통해 프로파일을 지정하거나, 위에서 언급한 catalina.sh, catalina.properties 등을 활용할 수 있습니다.

참고 자료:

  1. Setting spring.profile variable (StackOverflow)
  2. jdm.kr 블로그 포스팅

위와 같이 Spring Profiles를 활용하면 환경별로 서로 다른 설정을 간편하게 관리할 수 있으며, 개발-테스트-운영 환경 전환 시 유연한 대응이 가능합니다.

스프링을 사용하다보면 webapps 폴더안에 파일들에 대해 접근해야할 필요가 있다. 

Servletcontext 를 이용한 접근 방법이 있으나 이방법은 Servletcontext 에 의존적이라는 단점이 있다. 

특정 동작만을 위한 모듈을 덧붙일 경우 다른 방법이 필요한데 스프링에서는 이방법 또한 제공한다. 바로 코드로 보자 


import java.io.IOException;
import java.io.InputStream;

import org.springframework.context.ResourceLoaderAware;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;

public class ArbitraryResourceLoader implements ResourceLoaderAware {
    private ResourceLoader resourceLoader;

    public void test() throws IOException {
        Resource resource = resourceLoader.getResource("file:webapps/config.txt");
    	InputStream is = resource.getInputStream();
    	try{
    		int i=0;
            while((i=is.read())!=-1)
            {
               char c=(char)i;
               System.out.print(c);
            }
        }catch(IOException e){
        	 e.printStackTrace();
         }finally{
            
           if(is!=null)
            is.close();
         }
    }

	@Override
	public void setResourceLoader( ResourceLoader resourceLoader) {
		this.resourceLoader = resourceLoader;		
	}

}


그리고 빈설정 파일에 아래와 같이 설정해준다 class 경로 같은 경우는 자기자신의 프로젝트에 따라 바뀔것이다

<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:context="http://www.springframework.org/schema/context"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
 http://www.springframework.org/schema/context
 http://www.springframework.org/schema/context/spring-context-4.0.xsd">
 
	 <bean id="arbitraryResourceLoader" class="org.test.sample.ArbitraryResourceLoader"/>

</beans>


JavaConfig로도 쉽게 응용할수 있으리라 생각한다. 

프로젝트를 진행하다보면 파일안에 Properties 파일들을 저장해놓고 사용하는 일들이 자주 생긴다. 

가장 간단하게 사용하는 방법은 XML 혹은 JSON을 특정 경로에 넣고 파싱하는 방법이 있으나 설정파일을 사용하는 곳이 많아질 경우 복잡하다. 

스프링 프레임워크는 프레임워크 단에서 Properties 를 설정하는 방법을 가지고 있다.


Spring 설정 xml 안에 아래와 같은 설정을 추가한다. 

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation="http://www.springframework.org/schema/mvc 
      http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
      http://www.springframework.org/schema/beans 
      http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
      http://www.springframework.org/schema/context 
      http://www.springframework.org/schema/context/spring-context-3.2.xsd">
	<context:component-scan base-package="com.tutorialspoint" />

	 <!-- context:property-placeholder location="classpath:database.properties"  /!-->
	<context:property-placeholder location="/WEB-INF/*.properties" />

</beans>


그럼 자동으로 WEB-INF 경로 아래에 있는 *.properties 밸류들이 로드된다.


스프링 내에서 사용하기 위해선 아래와 같이 사용한다.

@Component
class MyClass {
  @Value("${my.property.name}")
  private String[] myValues;
}


만약 위의 설정 방법이 안된다면 수동으로 빈을 생성해준다. 


<bean id="myProperties"
      class="org.springframework.beans.factory.config.PropertiesFactoryBean">
  <property name="locations">
    <list>
      <value>classpath*:my.properties</value>
    </list>
  </property>
</bean>

그리고 Resource 파일을 이용해서 불러들인다. 

@Component
class MyClass {
  @Resource(name="myProperties")
  private Properties myProperties;

  @PostConstruct
  public void init() {
    // do whatever you need with properties
  }
}



* 추가 

Project 진행시에 보통 개발, 테스트, 프로덕션 서버별로 배포를 다르게한다. 

각각의 환경마다 다른 설정값을 가지므로 배포시마다 사용하는 property 의 이름을 변경해주는 것은 여간 귀찮은 일이 아니다

다행이 스프링에서는 Profile 이라고 환경마다 다른 설정을 사용할수 있는 기능이 이미 내장되어있다. 

경로 부분을 지정해주고 ${spring.profiles.active} 코드를 넣어주면 Profile에 따라 설정값이 다르게 쓰인다. 

아래는 예제코드를 보면 profile 을 사용하시는 분들이라면 바로 이해가 갈것이다. 

<context:property-placeholder location="classpath:${spring.profiles.active}.properties" />



참고: 

1. http://jijs.tistory.com/entry/spring-%EC%84%A4%EC%A0%95-xml%EA%B3%BC-%EC%86%8C%EC%8A%A4%EC%BD%94%EB%93%9C%EC%97%90%EC%84%9C-properties-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0

2. http://stackoverflow.com/questions/9259819/how-to-read-values-from-properties-file

3. http://nkjava.blogspot.kr/2013/07/springmvc-read-property-in-jsp.html

4. http://stackoverflow.com/questions/10669474/load-properties-file-in-spring-depending-on-profile

Scala IDE  를 받아서 압축을 푸는데 알수 없는 에러로 인해 계속 프로그램이 죽었는데 


구글링을 해보았더니 압축프로그램을 MAC 기본 내장에서 다른 프로그램으로 변경하니 실행이 잘되었다.


압축프로그램은 반디집을 이용하였다.



참고:

http://stackoverflow.com/questions/10876538/the-eclipse-executable-launcher-was-unable-to-locate-its-companion-launcher-jar

'Tools' 카테고리의 다른 글

Hyper-V 와 VirtualBox 쉽게 변경하기  (0) 2016.10.05
Eclipse Java doc comment 자동생성 단축키  (0) 2016.06.30

MyBatis를 Spring과 함께 사용할 경우, 기본 설정만으로도 대부분의 상황에 충분히 대응할 수 있습니다. 별도의 세부 설정이 필요한 경우를 제외하고는 디폴트 설정을 활용하는 편이 일반적입니다.

 

Spring에서는 MyBatis 설정을 자동으로 처리해주는 부분이 많기 때문에, SqlSessionFactoryBeanmapper 위치 정도만 지정한 뒤 사용하는 경우가 잦습니다. 예를 들어, Spring의 기본 설정 파일을 아래와 같이 작성한 뒤, 매퍼 파일들을 resources/mapper 혹은 resources/mybatis와 같은 디렉토리에 배치할 수 있습니다. 여기서는 mapper 폴더 아래에 mybatis-config.xml을 두는 예시를 들어보겠습니다.

 

예시 설정 (mapper-config.xml)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:mybatis="http://mybatis.org/schema/mybatis-spring"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
                           http://www.springframework.org/schema/beans/spring-beans.xsd
                           http://www.springframework.org/schema/context 
                           http://www.springframework.org/schema/context/spring-context.xsd">

    <!-- SqlSessionFactoryBean 설정 -->
    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <!-- MyBatis 기본 설정 파일 경로 지정 -->
        <property name="configLocation" value="classpath:/mapper/mybatis-config.xml"/>
        <!-- 매퍼 XML 파일 위치 지정 -->
        <property name="mapperLocations" value="classpath*:/mapper/**/*_SQL.xml"/>
    </bean>

    <!-- SqlSessionTemplate 설정 -->
    <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg index="0" ref="sqlSession"/>
    </bean>

    <!-- 매퍼 인터페이스 자동 스캐닝 설정 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="매퍼 인터페이스들이 위치한 패키지 경로"/>
    </bean>

</beans>

 

위 설정을 통해 Spring은 mybatis-config.xml을 기본 설정으로 사용하고, 해당 설정을 기반으로 매퍼 XML 파일(*_SQL.xml)들을 자동으로 로딩합니다. 또한, MapperScannerConfigurer를 이용해 매퍼 인터페이스를 빈으로 등록하므로, @Autowired 등을 통해 손쉽게 매퍼를 주입받아 사용할 수 있습니다.

mybatis-config.xml 예시

아래는 classpath:/mapper 디렉토리 하위에 mybatis-config.xml을 두고, 추가적인 설정(예: 타입 핸들러 등록)을 하는 예시입니다.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:mybatis="http://mybatis.org/schema/mybatis-spring"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
                           http://www.springframework.org/schema/beans/spring-beans.xsd
                           http://www.springframework.org/schema/context 
                           http://www.springframework.org/schema/context/spring-context.xsd">

    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation" value="classpath:/mapper/mybatis-config.xml"/>
        <property name="mapperLocations" value="classpath*:/mapper/**/*_SQL.xml"/>
    </bean>

    <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg index="0" ref="sqlSession"/>
    </bean>

    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="매퍼 인터페이스 패키지"/>
    </bean>

    <!-- 타입 핸들러 등록 예시 -->
    <typeHandlers>
        <typeHandler handler="org.mybatis.example.ExampleTypeHandler"/>
    </typeHandlers>

</beans>

위와 같이 설정을 완료하면 Spring과 MyBatis를 연동하는 과정이 간소화되며, 기본 설정과 자동화된 매퍼 스캔 기능을 통해 빠르고 간편한 개발 환경을 구축할 수 있습니다.

2년전 처음 맥을 사용하며 개발하면서 brew 를 통해서 프로그램들을 관리하면서 아주 많은 편리함을 느꼇다. 


현재 회사에서는 Windows 를 주로 이용해서 개발을 진행하는데 windows 에도 brew 같은 툴이 없나 살펴보니 chocolatey 같은 툴이 이미 나와 있었다.



https://chocolatey.org



기본적인 사용법은 brew 와 비슷한 형식으로 


커맨드 명령어로 프로그램을 설치하게 된다.


아래는 docker를 설치하기 위한 명령어다 



자세한 설치법을 알아보자.

MAC의 brew 를 연상시키면서 명령어 한줄로 설치가 가능하다. 자세한 순서는 아래와 같다. 


1. cmd 를 관리자 권한 실행



2. 아래 명령어 복사 붙여넣기

@powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"


이제 설치가 완료되었다. 


* chocolately 자체를 업데이트 할경우 아래명령어를 입력하면 자동으로 업데이트한다.


choco upgrade chocolatey 


필요한 패키지를 설치하기 위한 명령어를 알아보자. 


choco install 패키지이름


예)

choco install googlechrome

choco install jre8



패키지 삭제 명령어는 아래와 같다 .

choco uninstall  패키지 이름


예)

choco install googlechrome

choco install jre8


위 두명령어가 가장 자주 사용하는 명령어가 될겅디ㅏ.

더많은 명령어 관련은 아래 공식문서를 참조하자


https://chocolatey.org/docs

'ETC > Open Source' 카테고리의 다른 글

OpenCV 빌드시 파이썬 의존성 주의점  (0) 2016.10.27

Docker 를 사용하며 자주 사용하게 되는 기본 명령어 정리 

 

 

Docker 이미지 저장소 로그인

docker login <이미지 저장소 주소>

이미지 빌드

# 현재 폴더에 Dockerfile 이 있으릿
docker build --tag <이미지이름:이미지태그> . 

# Dockerfile 위치 임의 지정
docker build --tag <이미지이름:이미지태그> -f <Dockerfile 위치>

이미지 다운로드

docker pull 이미지 주소

현재 실행중인 컨테이너 리스트

docker container ls

 

컨테이너 로그 확인

docker log <컨테이너 ID>

# Tail 확인
docker log -f <컨테이너 ID>

프로젝트를 제작하며 사용하는 유용한 자바스크립트 라이브러리 모음 (2016-11-13 업데이트) 


Tabular: 테이블 표출

- 홈페이지: http://olifolkerd.github.io/tabulator/

- 사용법:https://www.sitepoint.com/dynamic-tables-json/


Kendo UI: 종합 UI  

- 홈페이지: http://www.telerik.com/kendo-ui


Flowchart.js: Flowchart 라이브러리

http://flowchart.js.org/


Fullcalendar

https://fullcalendar.io/



+ Recent posts