Posted
Filed under 분류없음
2017년 3월 11일 결혼 하려고 합니다.
청첩장을 찾던 중 우연히 바른손 카드 www.barunsoncard.com
문하게 되었습니다. 
그래서 샘플을 신청했고 , 
10가지 신청 했는대 바로 다음날 배송이 되었습니다. 

샘플마다 너무 깔끔 하고 , 이뻐서 어떤것을 
선택 해야 할지 고민 하고 있습니다. 
오늘 내일 고민해서 선택 해야 겠습니다.

2017/01/11 21:23 2017/01/11 21:23

blog.visualp.com

blog.visualp.com

blog.visualp.com

blog.visualp.com

blog.visualp.com

blog.visualp.com

blog.visualp.com

blog.visualp.com

blog.visualp.com

blog.visualp.com

blog.visualp.com

blog.visualp.com

blog.visualp.com

blog.visualp.com

blog.visualp.com

blog.visualp.com

blog.visualp.com

blog.visualp.com

blog.visualp.com

blog.visualp.com

blog.visualp.com

Posted
Filed under nginx

이미지 외부링크 차단하기

이미지 외부링크 차단하기 에 대한 설명이며
Nginx 기준입니다.
nginx.conf file에 아래의 정보를 추가하시면 됩니다.


localtion ~\.(jpg?g|png|gif)${

   valid_referers none blocked domain.com*.domain.com;
   if($invalid_referer){
       return403;
   }
}
2016/12/02 14:23 2016/12/02 14:23
Posted
Filed under JSP, JAVA

1. 맨 끝에 있는 콤마(,)를 제거하는 경우


<update id="updateAuthorIfNecessary" parameterType="domain.blog.Author">

UPDATE AUTHOR
<trim prefix="SET" suffixOverrides=",">
<if test="username != null">username=#{username},</if>
<if test="password != null">password=#{password},</if>
<if test="email != null">email=#{email},</if>
<if test="bio != null">bio=#{bio},</if>
</trim>
WHERE id=#{id}
</update>
 
맨앞에 SET을 붙이고 if안에 무엇이 들어가도 맨 끝에 있는 콤마를 지우겠다는 것이다.
 
 
 
2. 맨 앞에 있는 연산자를(AND 또는 OR) 제거하는 경우
 
 
<select id="selectInfo" parameterType="domain.blog.Author" resultType="authorResultMap">
 SELECT * FROM AUTHOR
 <trim prefix="WHERE" prefixOverrides="AND |OR">
<if test="username != null>AND username=#{username}</if>
<if test="password != null>OR password=#{password}</if>
<if test="email != null>AND email=#{email}</if>
</trim>
2016/12/01 15:08 2016/12/01 15:08
Posted
Filed under 웹표준
<input type="number" pattern="[0-9]*" inputmode="numeric" placeholder="">
2016/12/01 11:08 2016/12/01 11:08

blog.visualp.com

blog.visualp.com

blog.visualp.com

blog.visualp.com

blog.visualp.com

blog.visualp.com

blog.visualp.com

Posted
Filed under Mysql


-- Maria DB max connection 수 확인

SHOW VARIABLES LIKE '%max_connection%'

-- Maria DB에 접속되어 있는 client 정보 리스트

SHOW PROCESSLIST;

-- Maria DB max connection 수 조절

SET GLOBAL max_connections = 10000;

//status 관련 값
show status like '%CONNECT%';

Max_used_connections <--현재 연결된 접속수

Threads_connected  <-- 연결되었던 최대 접속수

2016/10/13 09:45 2016/10/13 09:45
Posted
Filed under C#

using System;

class Program {
    static void Main(string[] args) {
        System.AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionTrapper;
        throw new Exception("Kaboom");
    }

    static void UnhandledExceptionTrapper(object sender, UnhandledExceptionEventArgs e) {
        Console.WriteLine(e.ExceptionObject.ToString());
        Console.WriteLine("Press Enter to continue");
        Console.ReadLine();
        Environment.Exit(1);
    }
}

// c#에서 Console(콘솔) 어플리케이션에서 글로벌 에러 처리
   반복 작업시 유용하게 이용

 

 

2016/10/13 09:14 2016/10/13 09:14
Posted
Filed under PHP
config.inc.php
add to below end of line !~
$cfg['LoginCookieValidity']=3600*24*365;
2016/05/19 17:20 2016/05/19 17:20
Posted
Filed under Linux
1. 톰켓 클러스터링 설정(config tomcat clustering)
[참고]
http://khaidoan.wikidot.com/tomcat-cluster-session-replication-without-multicasting
참고 하여 설정 함

ip 기반으로 서버 분산 처리 하는 경우
한 서버에 여러 개의 톰켓을 세팅 하는 방법은 검색하면 쉽게 해결 할 수 있음
본 글에서는 서로다른  ip주소 톰켓 을 세션 클러스터링 하기 위해서 ~


 <Manager className="org.apache.catalina.ha.session.DeltaManager"
             expireSessionsOnShutdown="false"
             notifyListenersOnReplication="true" />
바로 이부분이 아이피 기반 설정을 하기 위해서 필요함 Manager
톰켓 메니저의 자세한 설명은 tomcat.apache.org에 방문하면 확인 할 수 있음.

domain <--부분은 서로 일치 해야하며 , 
port <-- 서로다른 서버 임으로 4100포트로 통일

HOST 엘리먼트의 CONTEXT엘리먼트 PATH는 일치 해야함
session은 context기반으로 생성 됨으로 


붉은 색으로 표시 된 부분이 설정의 핵심임 UNIQUE아이디는 서로 달라야 함

LocalMember 은 자신의 서버 정보를 입력하면 되고

Member  은 원격지 서버의 정보를 입력 하면됨


마지막으로 

배포하는 어플리케이션의 web.xml에는 
<distributable />엘리먼트를 추가한다.


이렇게 하면 우선 서버 설정은 끝 
NGINX에서 로드벨런싱 세팅

server {
 
    listen       80;
    server_name  ssogate.fourfree.com;
    client_max_body_size 100M;
 
        location / {
                proxy_redirect     off;
                proxy_set_header   Host             $host;
                proxy_set_header   X-Real-IP        $remote_addr;
                proxy_set_header   X-Forwarded-For  $remote_addr;
                proxy_pass http://tomcat;
        }
 
        location ~^/ssogate2/* {
                proxy_redirect     off;
                proxy_set_header   Host             $host;
                proxy_set_header   X-Real-IP        $remote_addr;
                proxy_set_header   X-Forwarded-For  $remote_addr;
                proxy_pass http://tomcat2;
        }
}

ssogate.fourfree.com 서버의  nginx 설정 입니다.
ssogate.fourfree.com <-http://tomcat;
ssogate.fourfree.com/ssogate2/ <-- http://tomcat2;
으로 접근 하도록 설정 함 니다.

비록 서브 도메인이나 / 서로다른 도메인을 가지고 session을 공유 한것은 아니지만
사이트 내에서 덩치가 큰 서비스를 분리해 주기 위해서 tomcat 클러스터링을 이용했습니다.

소규모 사이트에서는 괜찮은 방법 같아 보입니다. sso 솔루션을 구매 하거나 josso를 이용해서 구축 해야 하지만 .
간단하게 session을 공유 할 수 있습니다. 
이방식으로 사이트 개발 후 서버에 배포 하려고 합니다 .~




server.xml1 설정
---------------------------------------------
 <Host name="ssogate.fourfree.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
        <!--
                <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->
                <Alias>ssogate.fourfree.com</Alias>
                <Context path="/" docBase="/home/homepage/public_html" reloadable="true" workDir="/home/homepage/public_html/WEB-INF/classes" distributable="true"  className="org.apache.catalina.ha.context.ReplicatedContext"  sessionCookieDomain=".fourfree.com"  >
 
                <Manager className="org.apache.catalina.ha.session.DeltaManager"
             expireSessionsOnShutdown="false"
             notifyListenersOnReplication="true" />
 
 
                </Context>
 
                <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
           channelSendOptions="8">
 
    <Manager className="org.apache.catalina.ha.session.DeltaManager"
             expireSessionsOnShutdown="false"
             notifyListenersOnReplication="true" />
 
    <Channel className="org.apache.catalina.tribes.group.GroupChannel">
      <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                address="1.220.141.43"
                port="4100"
                autoBind="100"
                selectorTimeout="5000"
                maxThreads="6" />
 
      <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
        <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender" />
      </Sender>
 
      <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector" />
 
      <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor" />
 
      <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor" />
 
      <Interceptor className="org.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor">
 
        <LocalMember className="org.apache.catalina.tribes.membership.StaticMember"
                                                port="4100"
                                                securePort="-1"
                                                host="ssogate.fourfree.com"
                                                domain="tomcat-cluster"
                                                uniqueId="{15,1,2,3,4,5,6,7,8,9,10,11,12,13,14,0}"/>
 
        <Member className="org.apache.catalina.tribes.membership.StaticMember"
                host="ssogate2.fourfree.com"
                port="4100"
                securePort="-1"
                domain="tomcat-cluster"
                uniqueId="{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}" />


      </Interceptor>
    </Channel>
 
    <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
           filter="" />
 
    <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve" />
 
    <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener" />
  </Cluster>
</Host>



=============================================================================================================================
server.xml2 설정
<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="C:\Users\visualp\Desktop\java\sts\workspace-sts-3.6.2.RELEASE\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\ROOT" path="" reloadable="false"/>
 -->
 <Alias>ssogate.fourfree.com</Alias>
 <Alias>ssogate2.fourfree.com</Alias>
 <Context docBase="C:\Users\visualp\Desktop\java\sts\workspace-sts-3.6.2.RELEASE\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\homepage" path="/" reloadable="true" source="org.eclipse.jst.jee.server:homepage" distributable="true"
className="org.apache.catalina.ha.context.ReplicatedContext"
sessionCookieDomain=".fourfree.com"
 >
 
<Manager 
className="org.apache.catalina.ha.session.DeltaManager" 
expireSessionsOnShutdown="false" 
notifyListenersOnReplication="true"
/>
 
 </Context>
 
 
<Cluster 
channelSendOptions="6" 
channelStartOptions="3" 
className="org.apache.catalina.ha.tcp.SimpleTcpCluster" defaultMode="true">
 
 
 
<Manager 
className="org.apache.catalina.ha.session.DeltaManager" 
expireSessionsOnShutdown="false" 
notifyListenersOnReplication="true"
/>
 
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender" />
</Sender>
<Receiver 
address="61.32.203.30" 
autoBind="0" 
domain="tomcat-cluster"
className="org.apache.catalina.tribes.transport.nio.NioReceiver" 
maxThreads="6" 
port="4100" 
selectorTimeout="5000"
/>
<!-- <Interceptor className="com.dm.tomcat.interceptor.DisableMulticastInterceptor" /> -->
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpPingInterceptor" staticOnly="true"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector" />
<Interceptor className="org.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor">
 
<LocalMember className="org.apache.catalina.tribes.membership.StaticMember"
port="4100"
securePort="-1"
host="ssogate2.fourfree.com"
domain="tomcat-cluster"
uniqueId="{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}"/>
 
 
<Member className="org.apache.catalina.tribes.membership.StaticMember" 
port="4100" 
securePort="-1"
host="ssogate.fourfree.com" 
domain="tomcat-cluster"
uniqueId="{15,1,2,3,4,5,6,7,8,9,10,11,12,13,14,0}" />
/>
 
</Interceptor>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor" />
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve" 
filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;" 
/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener" />
</Cluster>
</Host>




2016/04/08 15:11 2016/04/08 15:11
Posted
Filed under Linux


형식

upstream 이름 {
    [ip_hash;]
    server host 주소:포트 [옵션];
    .....
}

옵션

옵션으로 올 수 있는 값은 아래와 같다.

  • ip_hash : 같은 방문자로부터 도착한 요청은 항상 같은 업스트림 서버가 처리 할 수 있게 한다.
  • weight=n : 업스트림 서버의 비중을 나타낸다. 이 값을 2로 설정하면 그렇지 않은 서버에 비해 두배 더 자주 선택된다.
  • max_fails=n : n으로 지정한 횟수만큼 실패가 일어나면 서버가 죽은 것으로 간주한다.
  • fail_timeout=n : max_fails가 지정된 상태에서 이 값이 설정만큼 서버가 응답하지 않으면 죽은 것으로 간주한다.
  • down : 해당 서버를 사용하지 않게 지정한다. ip_hash; 지시어가 설정된 상태에서만 유효하다.
  • backup : 모든 서버가 동작하지 않을 때 backup으로 표시된 서버가 사용되고 그 전까지는 사용되지 않는다.

예제

예를들면 아래와 같다.

upstream backend {
    ip_hash;
    server 192.168.125.142:9000 weight=3;
    server 192.168.125.143:9000;
    server 192.168.125.144:9000 max_fails=5 fail_timeout=30s;
    server unix:/var/run/php5-fpm.sock backup;
}

위의 설정을 풀어보면 아래와 같다.

같은 IP는 같은 업스트림 서버에 접속한다.
(ip_hash) 192.168.125.142 서버는 다른 서버 대비 3배 더 자주 사용된다.
192.168.125.144 서버는 30초 동안 응답하지 않는 상태가 5번 지속되면 죽은 것으로 간주하고 더 이상 요청을 보내지 않는다.
같은 호스트에 설치되서 소켓을 통해서 통신하는 FastCGI 에플리케이션은 백업용도이기 때문에 평소에는 사용하지 않다가 나머지 서버들이 불능상태가 되었을 때 자동으로 활성화된다.

2016/03/30 09:20 2016/03/30 09:20
Posted
Filed under JSP, JAVA

1. Servlet 3.1 deployment descriptor

Java EE 7 XML schema, namespace is http://xmlns.jcp.org/xml/ns/javaee/

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
</web-app>


2. Servlet 3.0 deployment descriptor

Java EE 6 XML schema, namespace is http://java.sun.com/xml/ns/javaee

<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
</web-app>

3. Servlet 2.5 deployment descriptor

Java EE 5 XML schema, namespace is http://java.sun.com/xml/ns/javaee

<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">

</web-app

>


4. Servlet 2.4 deployment descriptor

J2EE 1.4 XML schema, namespace is http://java.sun.com/xml/ns/j2ee

<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">

  <display-name>Servlet 2.4 Web Application</display-name>
</web-app>


5. Servlet 2.3 deployment descriptor

J2EE 1.3 DTDs schema. This web.xml file is too old, highly recommend you to upgrade it.

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Servlet 2.3 Web Application</display-name>
</web-app>

[원문]: http://www.mkyong.com/web-development/the-web-xml-deployment-descriptor-examples/

2016/03/23 15:54 2016/03/23 15:54