<!-- Favicons -->
<link rel="apple-touch-icon-precomposed" href="/favicon.ico">
<link rel="icon" href="/favicon.ico">





http://hangaebal.blogspot.kr/2014/08/css-favicon-apple-touch-icon.html

1. STS로 Spring MVC Project 생성 후 접속 확인

- 한글이 깨져서 나오니 home.jsp 파일에
<%@ page language="java" contentType="text/html; charset=UTF-8"  %> 추가


2. pom.xml에 dependency 추가

(버전 확인 - http://mvnrepository.com/)
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.2.7</version>
</dependency>

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>1.2.2</version>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.31</version>
</dependency>

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>3.2.3.RELEASE</version>
</dependency>



3. root-context.xml에 bean 추가

<bean id="dataSource" class="org.apache.ibatis.datasource.pooled.PooledDataSource">
    <property name="driver" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/스키마이름"/>
    <property name="username" value="계정"/>
    <property name="password" value="암호"/>
</bean>

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

<bean id ="transactionManager"
    class= "org.springframework.jdbc.datasource.DataSourceTransactionManager" >
    <property name ="dataSource" ref= "dataSource"></property >
</bean >

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

</bean >



4. mybatis-config.xml 생성

(src/main/resources/mybatis/mybatis-config.xml)

<?xml version="1.0" encoding= "UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd" >

<configuration>
    <mappers >
        <mapper resource ="/mybatis/mapper-sample.xml"/>
    </mappers >
</configuration>



5. mapper-sample.xml 생성

(src/main/resources/mybatis/mapper-sample.xml)
<?xml version="1.0" encoding= "UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >

<mapper namespace= "userControlMapper" >
    <select id ="selectSample" parameterType="java.util.HashMap" resultType= "java.util.HashMap">
        SELECT *
        FROM TEST_USERS
        WHERE NAME = #{name}
    </select>

    <insert id ="insertTable01" parameterType="java.util.HashMap" >
        INSERT INTO TEST_USERS
        (NAME, EMAIL)
        VALUES
        ( #{name}, #{email} )
    </insert>

</mapper>



6. MySQL에 테스트 table과 data 준비

CREATE TABLE `스키마이름`.`TEST_USERS` (
    `NO` INT NOT NULL AUTO_INCREMENT,
    `NAME` VARCHAR(100) NULL,
    `EMAIL` VARCHAR(100) NULL,
    PRIMARY KEY (`NO`),
    UNIQUE INDEX `NO_UNIQUE` (`NO` ASC));

INSERT INTO TEST_USERS (NAME, EMAIL) VALUES ("han", "han@test.com");



7. HomeController.java 수정

@Controller
public class HomeController {

@Controller
public class HomeController {
    
    // <--- 추가 
    @Autowired
    private SqlSession sqlSession;
    // 추가 --->
    
    private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
    
    /**
    * Simply selects the home view to render by returning its name.
    */
    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String home(Locale locale, Model model) {
        logger.info("Welcome home! The client locale is {}.", locale);
        
        Date date = new Date();
        DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
        
        String formattedDate = dateFormat.format(date);
        
        model.addAttribute("serverTime", formattedDate );
        
        // <--- 추가 
        HashMap<String, String> input = new HashMap<String, String>();
        input.put("name", "han");
        List<HashMap<String, String>> outputs = sqlSession.selectList("userControlMapper.selectSample", input);
        System.out.println(outputs.toString());
        // 추가 --->
        
        return "home";
}
    
}



8. 브라우저로 server 접속 후 Console 출력 확인

- [{NO=1, EMAIL=han@test.com, NAME=han}]


참고 :
http://blog.naver.com/refreshin/150170189512








http://hangaebal.blogspot.kr/2014/08/spring-spring-tool-suitests-mysql.html



<!doctype HTML> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <title>KakaoLink Demo(Web Button) - Kakao Javascript SDK</title> <script src="https://developers.kakao.com/sdk/js/kakao.min.js"></script> </head> <body> <h3>카카오톡 링크는 카카오톡 앱이 설치되어 있는 모바일 기기에서만 전송 가능합니다.</h3> <a id="kakao-link-btn" href="javascript:;"> <img src="http://dn.api1.kage.kakao.co.kr/14/dn/btqa9B90G1b/GESkkYjKCwJdYOkLvIBKZ0/o.jpg" /> </a> <script> // 사용할 앱의 Javascript 키를 설정해 주세요. Kakao.init('YOUR APP KEY'); // 카카오톡 링크 버튼을 생성합니다. 처음 한번만 호출하면 됩니다. Kakao.Link.createTalkLinkButton({ container: '#kakao-link-btn', label: '카카오링크 샘플에 오신 것을 환영합니다.', image: { src: 'http://dn.api1.kage.kakao.co.kr/14/dn/btqaWmFftyx/tBbQPH764Maw2R6IBhXd6K/o.jpg', width: '300', height: '200' }, webButton: { text: '카카오 디벨로퍼스', url: 'https://dev.kakao.com/docs/js' // 앱 설정의 웹 플랫폼에 등록한 도메인의 URL이어야 합니다. } }); </script> </body> </html>



출처 :
https://developers.kakao.com/docs/js






http://hangaebal.blogspot.kr/2014/07/javascript-kakaotalk-share-url-url.html

*Twitter
- http://twitter.com/share

*Facebook
- http://facebook.com/sharer.php

*Facebook with parameter
- var facebook_url = 'http://www.facebook.com/sharer.php?'+
  'u='+encodeURIComponent('http://google.com/?q=bla')+
  '&amp;t='+encodeURIComponent('Some Page Title');

출처 :
http://stackoverflow.com/questions/7584197/sharer-link-with-parameter-in-url





http://hangaebal.blogspot.kr/2014/07/javascript-facebook-twitter-share-link.html


*Format 1
- http://line.me/R/msg/<CONTENT TYPE>/?<CONTENT KEY>

*Format 2
- line://msg/<CONTENT TYPE>/<CONTENT KEY>

출처 :
http://media.line.me/en/




http://hangaebal.blogspot.kr/2014/07/javascript-line-share-url-button-line.html

Execute all handlers and behaviors attached to the matched elements

.trigger( eventType [, extraParameters ] )





http://hangaebal.blogspot.kr/2014/07/jquery-execute-handler-trigger.html


process.on('uncaughtException', function (err) {
    console.log('Caught exception: ' + err);
});


http://nodeqa.com/nodejs_ref/1




http://hangaebal.blogspot.kr/2014/07/nodejs-error-handling.html


1. Node.js Install
http://www.nodejs.org/download/

2. go to Modules page
https://www.npmjs.org/ (click 'Modules' at nav)

3. find express
https://www.npmjs.org/package/express

4. install express
$ npm install -g express (-g is global)
(sudo or Administrator)

5. install express-generator
$ npm install -g express-generator (to use '$ express')

6. Create the app
$ express /tmp/foo && cd /tmp/foo

7. Install dependencies:
$ npm install

8. Start the server:
$ npm start




http://hangaebal.blogspot.kr/2014/07/nodejs-nodejs-express-install.html

if(navigator.userAgent.match(/(android)|(iphone)|(ipod)|(ipad)/i)) {

}

window.mobilecheck = function() {
var check = false;
(function(a){if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4)))check = true})(navigator.userAgent||navigator.vendor||window.opera);
return check; }



http://stackoverflow.com/questions/11381673/javascript-solution-to-detect-mobile-browser
http://detectmobilebrowsers.com/






http://hangaebal.blogspot.kr/2014/07/javascript-detect-mobile-browsers.html





http://jsperf.com/in-array-vs-inarray-vs-indexof/5




http://hangaebal.blogspot.kr/2014/07/javascript-inarray-vs-inarray-vs-indexof.html


+ Recent posts