나는 내가 빛나는 벌레인 줄 알았어요
한 번도 의심한 적 없었죠
몰랐어요 난 내가 버러지만도 못하단 것을
그래도 괜찮아 나는 눈이 나쁘니까..

나는 내가 하늘에서 떨어진 벌레인 줄 알았어요
공중을 날아다니는 작은 벌레
몰랐어요 난 내가 새똥이라는 것을
그래도 괜찮아 나는 코가 막혔으니까..


Posted by 우라질레이터


눈 온다.
출근하려 집에서 나올때보다 더 온다.

회사에 도착해서
창문 밖을 보니
더 많이 내리는거 같다.

지구 냉방화의 시작인건가?

Posted by 우라질레이터

비만은 질병입니다.

(2025년 3월 15일)
식욕억제제를 처방받았다.

오늘 몸무게 103.9 kg..

(2025년 3월 19일)
식욕억제제 복용 3일째..

이 약은
복용자(환자)의 식욕을 억제시켜
음식을 먹고싶은 마음을 줄이거나 없애는 효과가 있다고 한다.

처방전으로만 구입가능한 이 약은
전문의약품으로 분류되어 있고
뇌에 직접 영향을 주는 작용으로
장기간 복용시 중독증상이 나타날 수 있으며
성격이 예민해지거나
잠을 잘 못잘 수 있다고 함..

그런데..
내 식욕은..
여전히 활활활.. ^^

Posted by 우라질레이터

출석수업

My Life/2025년 2025. 3. 15. 10:46

Posted by 우라질레이터

1. (양식)부동산임대차 계약 명의변경 및 승계계약서

(양식)부동산임대차 계약 명의변경 및 승계계약서.hwp
0.01MB

 

2. (양식)주택임대차 표준계약서

(양식)주택임대차 표준계약서.hwp
0.11MB

 

3. (양식) 임대차계약서.docx

(양식) 임대차계약서.docx
0.02MB

Posted by 우라질레이터

에피쿠로스

My Life/2025년 2025. 2. 25. 07:14


출처 : Chat GPT

에피쿠로스(Epicurus, 기원전 341~270)는 고대 그리스의 철학자로, 쾌락주의(헤도니즘)의 한 형태인 **에피쿠로스 학파(Epicureanism)**를 창시했습니다. 그는 행복한 삶을 위해 쾌락을 추구하되, 이성을 통해 절제하고 고통을 피하는 것이 중요하다고 주장했습니다.

에피쿠로스 철학의 핵심 개념

1. 쾌락주의(헤도니즘)

에피쿠로스는 **"최고의 선은 쾌락"**이라고 주장했습니다.

그러나 여기서 말하는 쾌락은 단순한 감각적 즐거움이 아니라 정신적 평온(아타락시아, ἀταραξία)과 고통의 부재(aponia, ἀπονία) 상태를 의미합니다.

2. 쾌락의 종류

동적인 쾌락: 욕망을 충족할 때 느끼는 즉각적인 기쁨 (예: 배고플 때 음식을 먹는 것)
정적인 쾌락: 욕망이 충족된 후 찾아오는 안정된 기쁨 (예: 배부름에서 오는 만족감)
그는 정적인 쾌락이 더 중요하다고 강조했습니다.

3. 욕망의 분류

에피쿠로스는 욕망을 세 가지로 나누었습니다.

1. 자연적이고 필수적인 욕망: 생존을 위한 것 (예: 음식, 물, 쉼) → 만족해야 함

2. 자연적이지만 필수적이지 않은 욕망: 사치스러운 즐거움 (예: 고급 음식, 예술) → 절제 필요

3. 자연적이지도, 필수적이지도 않은 욕망: 명예, 부, 권력 → 피해야 함
4. 죽음과 신에 대한 관점

죽음: "우리가 존재할 때 죽음은 없고, 죽음이 올 때 우리는 존재하지 않는다." → 죽음을 두려워할 필요 없음

신: 신은 존재하지만 인간의 삶에 간섭하지 않음 → 종교적 두려움에서 벗어나야 함

5. 행복한 삶을 위한 4가지 처방 (테트라파르마코스, τετραφάρμακος)

1. 신을 두려워하지 말라.
2. 죽음을 걱정하지 말라.
3. 좋은 것은 쉽게 얻을 수 있다.
4. 고통은 참을 수 있다.

에피쿠로스 철학의 영향

에피쿠로스 학파는 스토아 학파와 함께 헬레니즘 시대의 대표적인 철학 사조였습니다. 그의 철학은 근대 합리주의와 실존주의, 심리학, 윤리학에도 영향을 주었습니다.

현대적 해석

오늘날 에피쿠로스의 철학은 미니멀리즘, 웰빙, 정신적 평온을 추구하는 삶과 연결되기도 합니다. 물질적 풍요보다는 소박한 삶 속에서 정신적 만족을 찾는 태도를 강조하는 점에서 현대인들에게도 시사하는 바가 큽니다.

Posted by 우라질레이터

엄마

My Life/2025년 2025. 2. 19. 13:00

Posted by 우라질레이터

(1) 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">
<!-- 
Solme ECM
-->

<configuration>

<settings>
<setting name="mapUnderscoreToCamelCase" value="true" />
<setting name="jdbcTypeForNull" value="NULL" />
</settings>
<!-- Mybatis Intercept -->
<plugins>
    <plugin interceptor="solme.ecm.system.MybatisInterceptor" />
</plugins>
 
</configuration>

 

(2) MybatisInterceptor.java

package xxxx.xxxx.xxxx;

import java.util.HashMap;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import org.apache.log4j.Logger;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.binding.MapperMethod.ParamMap;
import org.apache.ibatis.executor.Executor;
import org.apache.ibatis.executor.statement.StatementHandler;
import org.apache.ibatis.mapping.BoundSql;
import org.apache.ibatis.mapping.MappedStatement;
import org.apache.ibatis.mapping.ParameterMapping;
import org.apache.ibatis.plugin.Interceptor;
import org.apache.ibatis.plugin.Intercepts;
import org.apache.ibatis.plugin.Invocation;
import org.apache.ibatis.plugin.Plugin;
import org.apache.ibatis.plugin.Signature;
import org.apache.ibatis.reflection.MetaObject;
import org.apache.ibatis.reflection.SystemMetaObject;
import org.apache.ibatis.session.ResultHandler;
import org.apache.ibatis.session.RowBounds;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.sql.Connection;

/**
 * Mybatis Interceptor
 * - Mybatis sql호출시 intercept해서 세션정보를 공통으로 추가 
 * - intercept method는 "prepare"보다는 "update"/"query" 권고 :  prepare는 결국 update 또는 query를 호출함
 * @author : 황상규
 * @date : 2025.02.14 
 */

@Intercepts({
    @Signature(type = Executor.class, method = "update", args = {MappedStatement.class, Object.class}),
    @Signature(type = Executor.class, method = "query", args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class})    
    //@Signature(type = StatementHandler.class, method = "prepare", args = {Connection.class, Integer.class} )
})
public class MybatisInterceptor implements Interceptor {

private final static Logger logger = Logger.getLogger(MybatisInterceptor.class);

    @Override
    public Object intercept(Invocation invocation) throws Throwable {
        Object[] args = invocation.getArgs();
        if (args != null && args.length > 1) {
            //--------------------------------------------------------
            // (1) 웹 요청이 아닌 경우(ex 배치프로그램) : 웹 요청 정보(HttpServletRequest, HttpSession) 사용 불가
            if(RequestContextHolder.getRequestAttributes() == null) {
               return invocation.proceed();
            }
            //--------------------------------------------------------
            // (2) 웹 요청 : 세션에서 값 가져오기
            ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
            HttpServletRequest request = attr.getRequest();
            HttpSession session = request.getSession(false); // 세션이 없으면 null 반환

            String ssUserId = null;
            String ssLanguage = null;
            
            if (session != null) {
                UserInfo userInfo = (UserInfo) session.getAttribute("userInfo");
                if (auth != null) {                 
                        ssUserId = userInfo.getUserId();
                        ssLanguage = userInfo.getLanguage();
                }
            }
            // 세션 값 또는 쿠키 값을 공통 파라미터로 추가
            ssLanguage = ssLanguage == null? "KO":ssLanguage;
            
            //---------------------------------------------------------------
            Object parameterObject = null;
            BoundSql boundSql = null;
            String queryID = null;
            String queryString = null;
            String interceptsMethod = "update_query"; // prepare, update or query
            
            switch(interceptsMethod) {
             //---------------------------------------------------
             // (1) method = "prepare"
            case "prepare" : 
            
                // MyBatis의 StatementHandler 가져오기
                StatementHandler statementHandler = (StatementHandler) invocation.getTarget();
                parameterObject = statementHandler.getBoundSql().getParameterObject();
                // MyBatis 내부 객체에 접근하기 위해 MetaObject 사용
                MetaObject metaObject = SystemMetaObject.forObject(statementHandler);
                MappedStatement mappedStatement = (MappedStatement) metaObject.getValue("delegate.mappedStatement");
                // SQL ID 가져오기
                queryID = mappedStatement.getId();
                
                // BoundSql 가져오기 (실제 SQL 쿼리 포함)
                boundSql = statementHandler.getBoundSql();
                queryString = boundSql.getSql(); // 실행될 SQL 문장
                
                // 기존 파라미터 가져오기
                parameterObject = boundSql.getParameterObject();
                
                // 파라미터가 null이면 새로운 HashMap 생성
                if (parameterObject == null) {
                 parameterObject = new HashMap<String, Object>();
                    // MyBatis 내부적으로 parameterObject를 대체할 수 있도록 설정
                    metaObject.setValue("delegate.boundSql.parameterObject", parameterObject);
                }
                
                // 파라미터가 null이면 새로운 HashMap 생성                
                if (parameterObject instanceof Map) {                     
                    Map<String, Object> paramMap = (Map<String, Object>) parameterObject;
                    paramMap.put("ssUserId", ssUserId);
                    paramMap.put("ssLanguage", ssLanguage);     
                }
                else if (parameterObject instanceof Domain) {
                 invokeSetterIfExists(parameterObject, "ssUserId", ssUserId);
                 invokeSetterIfExists(parameterObject, "ssLanguage", ssLanguage);
                }
             break;
             //---------------------------------------------------
            // (2) method = "update" or "query"
            case "update_query" : 
            case "update" : 
            case "query" : 
            default : 
             queryID = ((MappedStatement) invocation.getArgs()[0]).getId();
            
                parameterObject = invocation.getArgs()[1];
                
                if(parameterObject != null) {
                boundSql = ((MappedStatement) invocation.getArgs()[0]).getBoundSql(parameterObject);
                queryString = boundSql.getSql();
                }
                // 파라메터 유형별 설정
                if (parameterObject instanceof Map) {        
                    Map<String, Object> paramMap = (Map<String, Object>) parameterObject;
                    paramMap.put("ssUserId", ssUserId);
                    paramMap.put("ssLanguage", ssLanguage);                
                }                 
                else if (parameterObject instanceof Domain) {
                 invokeSetterIfExists(parameterObject, "ssUserId", ssUserId);
                 invokeSetterIfExists(parameterObject, "ssLanguage", ssLanguage);                               
                }
                else if (parameterObject instanceof String) {
                 Map<String, Object> paramMap = new HashMap<>();
                 paramMap.put("value",  parameterObject);
                    paramMap.put("ssUserId",  ssUserId);
                    paramMap.put("ssLanguage",  ssLanguage); 
                 invocation.getArgs()[1] = paramMap; // 복호화등 
                }
                else if (parameterObject == null) {
                 Map<String, Object> paramMap = new HashMap<String, Object>();
                 paramMap.put("ssUserId", ssUserId);
                    paramMap.put("ssLanguage", ssLanguage); 
                    invocation.getArgs()[1] = paramMap; // 새로운 Map을 매개변수로 설정
                }
                parameterObject = invocation.getArgs()[1];
             break;
            }        
            System.out.println("**********************************************");
            System.out.println("**********************************************");
            System.out.println("***************[START]*******************************");
            System.out.println(queryID);
            if(parameterObject != null) {
             System.out.println(parameterObject.getClass().getName().toLowerCase() + " : " + parameterObject.getClass());
            }            
            System.out.println(parameterObject);
            System.out.println("**************[END]********************************");
            System.out.println("**********************************************");
            
        }
        return invocation.proceed();
    }

    @Override
    public Object plugin(Object target) {
        return Plugin.wrap(target, this);
    }

    @Override
    public void setProperties(Properties properties) {
    }
    //----------------------------------------
/**
 * domain(Object) setter invoke
 * @param domain Object
 * @param fieldName String
 * @param value Object
 * @return
 * @throws Exception
 */
    private void invokeSetterIfExists(Object domain, String fieldName, Object value) {
        try {
            // setter 메서드명
            String methodName = "set" + Character.toUpperCase(fieldName.charAt(0)) + fieldName.substring(1);
          // 해당 클래스의 모든 메서드 조회
            Method[] methods = domain.getClass().getMethods();
            for (Method method : methods) {
                // 메서드 이름이 setter 이름과 일치
                if (method.getName().equals(methodName) && method.getParameterCount() == 1) {
                    Class<?> paramType = method.getParameterTypes()[0]; // 첫 번째 파라미터 타입 확인
                    // value가 해당 타입으로 변환 가능하면 setter 호출
                    if (value == null || paramType.isAssignableFrom(value.getClass())) {
                        method.invoke(domain, value);
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace(); // 기타 예외 처리 (디버깅 목적)
        }
    }
}

 

(3) 파라메터 유형별 SQL내 변수명

파라메터 Type 내용() 파라메터 변수명
Map selectMap(Map paramMap);  
selectString(@Param("userId") String userId); 설정명 : ex) “userId”
selectList(List var1); list 또는 collection
selectString(String var1, String var2); param1, param2
Domain
(Value Object)
selectDomain(UserInfo userinfo);       
int update( UserInfo  userinfo );  
String selectString(String userId); value 또는 param1
null selectNull();  
Posted by 우라질레이터

urajilation@gmail.com
우라질레이터

달력

태그목록