git checkout HEAD~1

일단, 이렇게 치면 작업 사본만 1단계 전 커밋으로 .  해당하는 숫자만큼 과거로 

git checkout HEAD~10

이러면 10단계 과거.

git checkout master

마스터 브랜치로 돌아오는 명령어다. master 브랜치가 아닌 브랜치명을 적어도 상관없다. 


특정 커밋 돌아가기

ommit 해시값이 있다. 해당 커밋의 고유번호. 

git checkout 8553f2

최신 버전으로 돌아오고 싶다면

git checkout master

참고

http://mytory.net/archives/10078


tomcat에서 waspool 설정시


tomcat의 Server.xml 에 resource를 수정하게 되는데


기존의

<Resource auth="Container" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" name="UserDatabase" pathname="conf/tomcat-users.xml" type="org.apache.catalina.UserDatabase"/>


을 지우지 않고


<Resource auth="Container" defaultAutoCommit="false" driverClassName="org.mariadb.jdbc.Driver" factory="org.apache.commons.dbcp.BasicDataSourceFactory" initialSize="2" maxActive="10" maxIdle="5" maxWait="15000" minIdle="2" name="jdbc/atvbo" password="1234" type="javax.sql.DataSource" url="jdbc:mysql://localhost:3306/atv" username="root" validationQuery="SELECT 1"/>


위와 같이 추가하게되면


 javax.naming.NameNotFoundException


발생 하게된다.


그럴 경우 기존 resource를 지우거나 주석 처리하고 새로운 리소스를 추가하여야 한다.


WAS POOL 세팅 완성 코드


<?xml version="1.0" encoding="UTF-8"?>

<!--

  Licensed to the Apache Software Foundation (ASF) under one or more

  contributor license agreements.  See the NOTICE file distributed with

  this work for additional information regarding copyright ownership.

  The ASF licenses this file to You under the Apache License, Version 2.0

  (the "License"); you may not use this file except in compliance with

  the License.  You may obtain a copy of the License at


      http://www.apache.org/licenses/LICENSE-2.0


  Unless required by applicable law or agreed to in writing, software

  distributed under the License is distributed on an "AS IS" BASIS,

  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

  See the License for the specific language governing permissions and

  limitations under the License.

--><!-- Note:  A "Server" is not itself a "Container", so you may not

     define subcomponents such as "Valves" at this level.

     Documentation at /docs/config/server.html

 --><Server port="8005" shutdown="SHUTDOWN">

  <Listener className="org.apache.catalina.startup.VersionLoggerListener"/>

  <!-- Security listener. Documentation at /docs/config/listeners.html

  <Listener className="org.apache.catalina.security.SecurityListener" />

  -->

  <!--APR library loader. Documentation at /docs/apr.html -->

  <Listener SSLEngine="on" className="org.apache.catalina.core.AprLifecycleListener"/>

  <!-- Prevent memory leaks due to use of particular java/javax APIs-->

  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>

  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>

  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>


  <!-- Global JNDI resources

       Documentation at /docs/jndi-resources-howto.html

  -->

  <GlobalNamingResources>

    <!-- Editable user database that can also be used by

         UserDatabaseRealm to authenticate users

    -->

    <!-- <Resource auth="Container" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" name="UserDatabase" pathname="conf/tomcat-users.xml" type="org.apache.catalina.UserDatabase"/> -->

   <!-- WAS POOL 설정 -->

    <!-- 개발서버 -->

  

  <!-- 로컬서버 -->

    <Resource auth="Container" defaultAutoCommit="false" driverClassName="org.mariadb.jdbc.Driver" factory="org.apache.commons.dbcp.BasicDataSourceFactory" initialSize="2" maxActive="10" maxIdle="5" maxWait="15000" minIdle="2" name="jdbc/프로젝트 이름" password="1234" type="javax.sql.DataSource" url="jdbc:mysql://localhost:3306/atv" username="root" validationQuery="SELECT 1"/>

    

 

  </GlobalNamingResources>


  <!-- A "Service" is a collection of one or more "Connectors" that share

       a single "Container" Note:  A "Service" is not itself a "Container",

       so you may not define subcomponents such as "Valves" at this level.

       Documentation at /docs/config/service.html

   -->

  <Service name="Catalina">


    <!--The connectors can use a shared executor, you can define one or more named thread pools-->

    <!--

    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"

        maxThreads="150" minSpareThreads="4"/>

    -->



    <!-- A "Connector" represents an endpoint by which requests are received

         and responses are returned. Documentation at :

         Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)

         Java AJP  Connector: /docs/config/ajp.html

         APR (HTTP/AJP) Connector: /docs/apr.html

         Define a non-SSL/TLS HTTP/1.1 Connector on port 8080

    -->

    <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

    <!-- A "Connector" using the shared thread pool-->

    <!--

    <Connector executor="tomcatThreadPool"

               port="8080" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443" />

    -->

    <!-- Define a SSL/TLS HTTP/1.1 Connector on port 8443

         This connector uses the NIO implementation that requires the JSSE

         style configuration. When using the APR/native implementation, the

         OpenSSL style configuration is required as described in the APR/native

         documentation -->

    <!--

    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"

               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"

               clientAuth="false" sslProtocol="TLS" />

    -->


    <!-- Define an AJP 1.3 Connector on port 8009 -->

    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>



    <!-- An Engine represents the entry point (within Catalina) that processes

         every request.  The Engine implementation for Tomcat stand alone

         analyzes the HTTP headers included with the request, and passes them

         on to the appropriate Host (virtual host).

         Documentation at /docs/config/engine.html -->


    <!-- You should set jvmRoute to support load-balancing via AJP ie :

    <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">

    -->

    <Engine defaultHost="localhost" name="Catalina">


      <!--For clustering, please take a look at documentation at:

          /docs/cluster-howto.html  (simple how to)

          /docs/config/cluster.html (reference documentation) -->

      <!--

      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

      -->


      <!-- Use the LockOutRealm to prevent attempts to guess user passwords

           via a brute-force attack -->

      <Realm className="org.apache.catalina.realm.LockOutRealm">

        <!-- This Realm uses the UserDatabase configured in the global JNDI

             resources under the key "UserDatabase".  Any edits

             that are performed against this UserDatabase are immediately

             available for use by the Realm.  -->

        <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>

      </Realm>


      <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">


        <!-- SingleSignOn valve, share authentication between web applications

             Documentation at: /docs/config/valve.html -->

        <!--

        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />

        -->


        <!-- Access log processes all example.

             Documentation at: /docs/config/valve.html

             Note: The pattern used is equivalent to using pattern="common" -->

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t &quot;%r&quot; %s %b" prefix="localhost_access_log" suffix=".txt"/>

   

      <Context docBase="프로젝트 기본이름" path="/프로젝트 이름" reloadable="true" source="org.eclipse.jst.jee.server:ATVweb">

      <ResourceLink global="jdbc/프로젝트이름" name="jdbc/프로젝트이름" type="javax.sql.DataSource"/>

      </Context>      

            

      </Host>

    </Engine>

  </Service>

</Server>


----------------------------------------------------------------------------------------------------------------------

참고 

http://www.linux-sxs.org/internet_serving/c619.html

카카오 쓰레기다.


https://developers.kakao.com/


8080포트에서는 서비스 지원을 안한다.


카카오 init 등록하고 사용하면됨


// 카카오 로그인, 카카오API 사용자 정보들고오기

Kakao.Auth.login({

success :function(response) {

Kakao.Auth.getStatus(function(response){

console.log("state : " +response);

if(response.status === "connected"){

Kakao.API.request({

url:'/v1/user/me',

success : function(respose) {

var data= {

user_id : response.user.id.toString(),

type : "K"

}

fn_login(data);

fn_kakao_logout();

},

fail : function(err) {

console.log(err);

return false;

}

});

}

});

},

fail : function(err) {

console.log(err);

fn_kakao_logout();

return false;

}

});


// 카카오 로그아웃

Kakao.Auth.logout(function(response){

console.log(response + "logout.");

})


// 카카오톡 공유


Kakao.Link.sendTalkLink({

   label: '',   // 제목

   image: { 

    // 80 * 80 이상 500KB 이하 제한

       src: ,   // 이미지경로

       width: '800',

       height: '600'

   },

   webButton: {

   text: "",  // 링크제목

   url:      // 앱 설정의 웹 플랫폼에 등록한 도메인의 URL  

// ex ) www.google.com 만 되면 하위 주소도됨 www.google.com/post/1

 }

});


카카오톡이나 카카오스토리나 동영상을 공유하려면 동영상썸네일이 있어야한다.

비디오 태그자체를 썸네일로 몬쓴다. 

그래서 공유세팅할대 url은 동영상 url로 사용하지만 src은 동영상 썸네일 이미지를 사용하면된다.


//  카카오 스토리 공유


Kakao.Story.share({

url: ,  해당 주소

text :   글 제목

});


카카오 스토리 공유는 결국 페이스북의 open graph 를 이용하는거다.



'Programming > javascript' 카테고리의 다른 글

IOS safari 세션 문제  (0) 2017.01.25
[javascript] 엘리먼트 사이즈 구하기  (0) 2017.01.10
[javascript] 웹 브라우저, 모바일 디바이스 구분하기  (0) 2016.11.04
동영상 video tag  (0) 2016.08.19
페이스북 SDK  (0) 2016.08.19

웹에서는 html5 video 태그를 쓰면 잘먹는다.


하지만 아이폰(사파리), 안드로이드(크롬) 에서는

video 태그를 쓸 경우, 썸네일이 나오지 않는경우가 생긴다 (사파리)


안드로이드는 video 태그의 옵션중 controls를 쓰면 보이기는하는데

모바일 웹이 안드로이드만 있는게 아니니 결론적으로 못쓴다.

일일이 userAgent 메서드로 체크를 해서 하면되긴되는데

여기서 또 문제가 카카오 공유했을시 클릭을하면 카카오톡 자체에서 카카오 웹뷰를 띄우는데 

동영상 썸네일이 나오지 않고 플레이버튼만 나온다.


결론적으로 위와 같이 사용해서는 안된다는 결론이다. 내입장에서 나중에 더많이 찾아보면 나올수도 있겠지만..


그래서

video.js 를 사용하면된다. 일단은 아파치 라이센스라 무료


http://docs.videojs.com/


    <link href="http://vjs.zencdn.net/5.0.2/video-js.css" rel="stylesheet">

    <script src="http://vjs.zencdn.net/ie8/1.1.0/videojs-ie8.min.js"></script>

    <script src="http://vjs.zencdn.net/5.0.2/video.js"></script>


위 플러그인만 추가하고


<video class="" id="" controls preload="none" poster="" data-setup="{}">

<source src="" type="video/mp4">

</video>


위와 같이 사용하면된다


poster 태그안에 동영상의 썸네일을 꼭 추가해줘야 처음 화면이 설정된다.



이렇게 사용하면 웹 이든 아이폰 안드로이드 웹뷰 뭐 다된다.

'Programming > javascript' 카테고리의 다른 글

IOS safari 세션 문제  (0) 2017.01.25
[javascript] 엘리먼트 사이즈 구하기  (0) 2017.01.10
[javascript] 웹 브라우저, 모바일 디바이스 구분하기  (0) 2016.11.04
카카오 SDK  (0) 2016.08.19
페이스북 SDK  (0) 2016.08.19

페이스북SDK는 비동기 방식이다


FB.login 로그인 메서드를 사용할때


FB.getLoginStatus를 먼저 체크하고 FB.login 을 사용하면 익스플로러에서는 반응을 못한다.(크롬에선 가능, 사파리 되따가안됬따가)


그래서


// 로그인만

   FB.login(function(response) {

    // 페북 로그인 상태 확인 connected. 사용자가 Facebook에 로그인하고 앱에 로그인

    // not_authorized. 사용자가 Facebook에 로그인했지만 앱에 로그인 안함

        console.log(response);

        //statusChangeCallback(response);

            var data = {

            accessToken : response.authResponse.accessToken,

            user_id : response.authResponse.userID,


            }

            fn_login(data);


            if (response.status != 'connected') {

            return ;

            }

        }, {scope: 'public_profile'});


로그인만 사용하던가 아니면 로그인후 getLoginStatus 를 체크 하면된다.


// 로그인 후 상태 체크

// 페북 로그인

    FB.login(function(response) {

        

    // 페북 로그인 상태 확인 connected. 사용자가 Facebook에 로그인하고 앱에 로그인

    // not_authorized. 사용자가 Facebook에 로그인했지만 앱에 로그인 안함

        FB.getLoginStatus(function(response) {

        // 콜백 connected 이면 공유 팝업 실행

//            statusChangeCallback(response, sharePopup(href, hp_id));

            console.log("FB.login: " + response);

            console.log(hp_id);

            if (response.status != 'connected') {

            return false;

            }

        });

    }, {scope: 'public_profile'});



etc..


//페북 로그인 상태 콜백

function statusChangeCallback(response) {

  if (response.status === 'connected') {


  } else if (response.status === 'not_authorized') {

      alert("로그인해야 이용가능한 기능입니다.");

  } else {

      alert("로그인해야 이용가능한 기능입니다.");

  }

}


//공유하기

FB.ui(

{

method:'share',

href : url,

},function(response) {

//공유결과 리턴

console.log(response)

if(response === null || response == undefined) {

console.log('공유안함');

} else {

console.log('공유완료');


}

 

});


'Programming > javascript' 카테고리의 다른 글

IOS safari 세션 문제  (0) 2017.01.25
[javascript] 엘리먼트 사이즈 구하기  (0) 2017.01.10
[javascript] 웹 브라우저, 모바일 디바이스 구분하기  (0) 2016.11.04
카카오 SDK  (0) 2016.08.19
동영상 video tag  (0) 2016.08.19

+ Recent posts