boss from hell : pushover (easy)

boss's pet     : in the doghouse

brown nose   : badmouth, cut down   (왜 brown nose 일까? 그것은 Kiss my ass와 연관있다.. )

by the numbers(왕 꼼꼼....ㅡ.ㅡ;;) : loose cannon

career track : mommy track

company track : entrepreneur

cook the books (stealing, lying) : blow the whistle

happy camper : moody

have your act together(Don't make mistake) : disorganized

iead person : detail person(by the numbers)

lone wolf : team player (company man)

queen bee (almost for women) : worker bee

self starter : watch the clock

share the credit : steal the credit

top dog (best ) : low man on the totem pole

workaholic : slacker

 

Posted by '김용환'
,

 

 

 

 

 

북미에서 사용되는 물건이라고 한다.

 

영어 선생님이 집안에서 garbage disposal system은 한국에 없는 거라고 하면서 우리 나라 집 문화에 대해서 이해가 안간다는 풍으로 말하길래.. 먼가 쳐다보았다.

 

 

 

 

분쇄기가 달려 있어서 조각조각 쓰레기를 나눠주는 것이라고 한다.

이렇게 하면 최대한 분해를 시켜주니, 시간을 줄일 수 있고, 청소를 빨리 끝낼 수 있는 장치가 있다는 것이다.

한번도 본적이 없지만, 문서로 봤을 때는 아마도 키친에 있는 것이니... 거의 음식물 찌꺼기 위주가 아닌가 싶다.

 

요즘 한국에 이런 장치를 가진 기계가 들어오고 있다고 한다..

 

 

 

출처  : http://www.plumbersurplus.com/Buying-Guides/Garbage-Disposer/17

 

What is a Garbage Disposer?

A garbage disposal, waste disposal unit, or garburator is a device, usually electrically-powered, installed under a kitchen sink between the sink's drain and the trap which shreds food waste into pieces small enough to pass through plumbing. Indispensable in the modern kitchen, a garbage disposal helps make food preparation and cleanup easy and fast.

How Garbage Disposals Work

Attached to the underside of a kitchen sink’s drain, a garbage disposal works by shredding food scraps fed down the drain with the flow of water or the push of a garbage disposer accessory. When turned on the garbage disposer uses its motor to spin a turntable that pushes the particles in the unit to the outside of the chamber where is comes into contact with a grinding ring. The action of the spinning turntable forcing the particles into the grinding ring shreds the particles into small enough pieces to flow through holes in the turntable and grinding ring and into the plumbing. Dishwasher drain water can also be run through the garbage disposal so that any large particles are chewed up and drained away.

Types of Garbage Disposers

There are two general types of disposers: continuous feed models and batch feed models. Most models you're likely to find are continuous feed models; the idea here is that you run the water and start the disposer running before you put any scraps in the chamber. In other words, continuous feed models are typically not designed to have to start stationary with scraps in the disposer. Starting the disposer with scraps already in the chamber could cause it to jam. Batch feed models are designed to be activated by turning a stopper after loading the disposal with garbage. Once that batch of scraps is disposed of, more can be added and the process repeated.

Garbage Disposer Tips

* Use cold water when grinding food (hot water can melt fats and clog the mechanism and the pipes).
* Do not overfill the disposer.
* Do not pour bleach, drain cleaners, or other chemicals into the unit.
* Do not grind overly fibrous materials, bones, or coffee grounds (check the owners manual) or materials like glass, metal, or rubber.
* Run water before and after you use the disposal.

 

 

또한 외국에서는 집을 매매 할 때, 이런 기계가 있는지 없는지에 따라서 가격에 영향을 미친다고 하니, 잘 봐두는 것도 괜찮을 거 같다.

 

 

부동산광고

출처 : http://www.suitesonmiami.com/suites.htm

 

 

Downstairs unit is approx 1000 sq.ft. Extremely spacious unit for those who wish to stretch out.

Bedroom has a country flair, with a full master bath, and walk-in closet

Living / diningroom has full glass walls looking directly onto the pool

Kitchen has extra amenities including garbage disposal and dishwasher. Breakfast bar completes this spacious kitchen

Library area is completed with a daybed for relaxed afternoon reading

'영어앤영문권' 카테고리의 다른 글

Our Iceberg is melting에서 8가지 성공 단계  (0) 2008.04.09
직장에서 쓰는 용어  (0) 2008.04.05
굳은 얼굴  (0) 2008.04.05
죄송합니다. 나는 회의중입니다.  (0) 2008.04.05
찬호 박 근황  (0) 2008.02.19
Posted by '김용환'
,

굳은 얼굴

영어앤영문권 2008. 4. 5. 12:20

외국사람이 한국에 와서 많이 놀라는 것중의 하나가 바로 한국사람의 굳은 얼굴이라고 한다.

마치 화난 사람들인줄 알았다고 하는데.

 

 

ㅎㅎㅎ

 

 

이와 관려된 영어는 다음과 같다.

 

Keeping a diginity face

 

Keeping a straight face

 

saving my face

 

 

 

 

잠깐 구글링을 해보니 이렇게 공부가 된다.

 

keep a straight face

to look serious and not laugh, although you are in a funny situation or are saying something funny or stupid. I can never play jokes on people because I can't keep a straight face.

 

keep a straight face

to avoid showing any emotion, esp. amusement. I thought it would be funny to tell him he failed the course, but it was hard to keep a straight face when I was talking to him.

 

 

 

 

 

'영어앤영문권' 카테고리의 다른 글

직장에서 쓰는 용어  (0) 2008.04.05
garbage disposal system(unit )  (0) 2008.04.05
죄송합니다. 나는 회의중입니다.  (0) 2008.04.05
찬호 박 근황  (0) 2008.02.19
미얀마 사태 - 야후  (1) 2007.09.29
Posted by '김용환'
,

보통 회의중이라는 단어를

 

I'm on a meeting 이라는 단어를 사용할 수 있겠지만.

 

 

Native 선생님의 말로는

 

I'm in a meeting이 굉장히 이해할 수 있는 말이란다.~~

 

 

 

 

'영어앤영문권' 카테고리의 다른 글

직장에서 쓰는 용어  (0) 2008.04.05
garbage disposal system(unit )  (0) 2008.04.05
굳은 얼굴  (0) 2008.04.05
찬호 박 근황  (0) 2008.02.19
미얀마 사태 - 야후  (1) 2007.09.29
Posted by '김용환'
,

java jstl에서 c.tld 파일

web 2008. 4. 5. 08:26

머 다 아는 거지만, 오랜만에 jsp 코딩때문에 해맸다.

c.tld 파일이 없다라는 에러였다..

 

 

과거에는 jsp에서 jstl 의 core 를 사용하려면

 

  1. WEB-INF/web.xml에 deployment descriptor에 추가


  1.      <taglib>
           <taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
           <taglib-location>/WEB-INF/tlds/c.tld</taglib-location>
         </taglib>

 

다음과 같은 작업을 했었다.

 

하지만, jstl standard (standard-1.1.2.jar)를 classpath로 잡으면 . 굳이 web.xml에 포함하지 않아도 된다.

 

그 이유는 standard-1.1.2.jar파일의 META-INF 디렉토리 안에. 각종 TLD 파일이 존재하는데. 그중에 c.tld 파일이 존재한다.

그래서, 굳이 tomcat의 web.xml파일안에 태그 라이브러리 선언이 없어도 된다.

 

 

Posted by '김용환'
,

 

log4j:ERROR JDBCAppender::flush_buffer(), :
java.sql.SQLException: Communications link failure during commit(). Transaction resolution unknown.
        at com.mysql.jdbc.Connection.commit(Connection.java:2155)
        at org.apache.log4j.jdbcplus.JDBCLogger.freeConnection(JDBCLogger.java:455)
        at org.apache.log4j.jdbcplus.JDBCLogger.append(JDBCLogger.java:758)
        at org.apache.log4j.jdbcplus.JDBCAppender.flush_buffer(JDBCAppender.java:847)
        at org.apache.log4j.jdbcplus.JDBCAppender.append(JDBCAppender.java:827)
        at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:221)
        at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:57)
        at org.apache.log4j.Category.callAppenders(Category.java:194)
        at org.apache.log4j.Category.forcedLog(Category.java:379)
        at org.apache.log4j.Category.log(Category.java:844)
        at org.apache.commons.logging.impl.Log4JLogger.error(Log4JLogger.java:193)
        at org.quartz.core.JobRunShell.run(JobRunShell.java:204)
        at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:520)

 

이런 에러가 나왔다. log4j에서 로그를 쌓다가 에러가 이렇게 나왔다. 소스를 보아하니..

아래와 같이 나온다..

 

 

 

 } catch (SQLException sqlException) {
- if (SQLError.SQL_STATE_COMMUNICATION_LINK_FAILURE
- .equals(sqlException.getSQLState())) {
- throw SQLError.createSQLException(
- "Communications link failure during commit(). Transaction resolution unknown.",
- SQLError.SQL_STATE_TRANSACTION_RESOLUTION_UNKNOWN);
- }
-
- throw sqlException;
- } finally {

 

 

SQLError.SQL_STATE_COMMUNICATION_LINK_FAILURE

이것인가 본데..

 

mysql이 빡빡한 쿼리로 쌓여 있어서 소켓이 깨지거 같다.

log4j에서 case by case로 넣는 부분을 AsyncAppender로 변경

그리고, logDB에서 시간이 걸리지 않도록 테이블 튜닝을 했다..

 

그 이후, 문제가 발생되지 않고 있다..

 

Posted by '김용환'
,

대단한 내용은 아닌데. 간단한 팁이라 할 수 있겠다.

 

한 테이블이 있는데, indexing이 3개가 걸려있어서 40만개의 row을 삭제하려고 하니. 시간이 무진장 걸렸다.

 

너무 걸려서 뒤에 딸려오는 쿼리들을 위해서 killed되었다.

 

결국 방법은?

 

limit을 써서 적당하게 쪼개는 것이 좋겠다.

 

mysql> delete from lgt_logdata where projectname = "google_music" limit 1000;

 

또는 perl같은 스크립트를 사용하여 적당하게 sleep을 해주면서 처리해주는 센스도 좋을 듯..

 

 

 

 

 

 

Posted by '김용환'
,

 

mysql의 plan 를 떴다.

mytop에서 뜰 수 있고, mysql 내부에서 뜰 수 있다.

이에 대한 설명은 다음과 같다.

 

출처 : blog.empas.com/ing1560/read.html?a=26448819

 

 - table : 테이블 명
- type : 조인의 타입
    system : 테이블이 하나의 레코드만 가지는 경우
    const : 테이블에 조건을 만족하는 레코드가 하나일 때, 상수 취급
    eq_ref : 인덱스가 UNIQUE이거나 PRIMARY KEY인 경우의 조인으로 const를 제외한 조인 중 가장 좋은 형태
    ref : eq_ref와 다른 점은 UNIQUE가 아닐 경우 사용한다는 것.
    range : 조건에 레코드의 범위가 주어진 조인.
    index : all 형태와 비슷하며, 인덱스를 사용한다.
    all : 모든 레코드를 스캔한다.
- possible_keys : 테이블에서 사용 할 수 있는 키(인덱스)
- key : possible_keys에 나온 키 중에서 실제로 사용한 키
- key_len : 키의 길이
- ref : 인덱스를 사용할 때 어떤 컬럼과 조건이 맞아야 하는지
- rows : 조건을 만족하는 레코드를 찾기 위해 몇개의 레코드를 검사해야 하는지
- Extra : 부가적인 정보
    distinct : 조건을 만족하는 레코드를 찾았을 때 같은 조건을 만족하는 또 다른 레코드가 있는지 검사하지 않음.
    not exist : left join 조건을 만족하는 하나의 레코드를 찾았을 때 다른 레코드의 조합은 더 이상 검사하지 않는다.
    range checked for each record : 최적의 인덱스가 없는 차선의 인덱스를 사용한다는 의미.
    using filesort : mysql이 정렬을 빠르게 하기 위해 부가적인 일을 한다.
    unsing index : select 할때 인덱스 파일만 사용
    using temporary : 임시 테이블을 사용한다. order by 나 group by 할때 주로 사용
    where used : 조건을 사용한다는 의미.

 

 

 

참고로 오라클에서 plan 정보 뜨기 정보이다.

출처 : http://www.phplab.co.kr/cms/board/bod_view.php?code=dbms&no=26&pageID=2&item=&find=&flg=

 

1. Plan Table 생성

ORACLE_HOME은 C:\ORANT인경우 
 
테이블 PLAN_TABLE을 생성하는 SQL문은
C:\ORANT\RDBMS80\ADMIN 디렉토리의 UTLXPLAN.SQL입니다. 
 
실행을 시키면 아래와 같이 실행되게 됩니다.

<pre>SQL> SHOW USER 사용자는 "SCOTT" 입니다.
SQL> @C:\ORAWIN95\RDBMS80\ADMIN\UTLXPLAN.SQL
테이블이 생성되었습니다.
SQL>


2. DESC PLAN_TABLE
Name                         Type
--------------------- -----
STATEMENT_ID          VARCHAR2(30)  //사용자가 지정한 제목
TIMESTAMP              DATE               //실행계획이 수립된 날짜와 시간
REMARKS                 VARCHAR2(80) //사용자가 부여한 주석(comments)
OPERATION               VARCHAR2(30) //AND-EQUAL, INDEX, SORT등과 같은 실행 연산자
OPTIONS                   VARCHAR2(30) //BY ROWID, JOIN, FULL 등과 같은 실행 옵션
OBJECT_NODE          VARCHAR2(128) //사용한 데이터베이스 링크
OBJECT_OWNER        VARCHAR2(30) //객체를 생성한 소유자
OBJECT_NAME          VARCHAR2(30) //테이블, 인덱스, 클러스터 등의 객체의 이름
OBJECT_INSTANCE    NUMBER(38)   //SQL문의 FROM절에 기술된 객체를 좌에서 우로부여한 번호
OBJECT_TYPE           VARCHAR2(30) //UNIQUE, NON-UNIQUE INDEX 등의 객체의 종류
OPTIMIZER                VARCHAR2(255) //CHOOSE, RULE, FIRST_ROWS 등의 현재 옵티마이저 모드
SEARCH_COLUMNS    NUMBER
ID                              NUMBER(38) //수립된 각 실행단계에 붙여진 일련번호
PARENT_ID                 NUMBER(38) //부모단계의 일련번호
POSITION                   NUMBER(38) //부모아이디를 가지고있는 자식아이디간의 처리순
COST                         NUMBER(38)
CARDINALITY               NUMBER(38)
BYTES                        NUMBER(38)
OTHER_TAG                VARCHAR2(255)
PARTITION_START       VARCHAR2(255)
PARTITION_STOP         VARCHAR2(255)
PARTITION_ID              NUMBER(38)
OTHER                       LONG

 

3. EXPLAIN PLAN 실행
 
EXPLAIN PLAN을 생성하는 Syntax는 아래와 같습니다.
 
   EXPLAIN PLAN [SET statement_id = 'description']
        [into TABLE_NAME]
        FOR sql_statement
 
 
 
위의 구문을 사용한 예를 살펴 보겠습니다.
 
  SQL> EXPLAIN PLAN SET STATEMENT_ID = 'TEMP_1'
  2  INTO PLAN_TABLE FOR
  3  SELECT A.EMPNO, A.ENAME, NVL(A.SAL,0), B.DNAME
  4  FROM   EMP A, DEPT B
  5  WHERE A.EMPNO = 10
  6  AND   A.DEPTNO = B.DEPTNO
  7  /

Explained.

SQL>

 

4. PLAN_TABLE 확인
 
앞에서 실행한 EXPLAIN PLAN에 대한 PLAN_TABLE의 확인은 아래와 같이 합니다.
 
  SQL> SELECT ename, job, sal, dname
             FROM emp, dept
           WHERE emp.deptno = dept.deptno
            AND not exists
              (SELECT *
                  FROM salgrade
               WHERE emp.sal BETWEEN losal AND hisal)

 ID   P_ID OPERATION                 OPTIONS              OBJECT_NAME    
 ---- ---- ---------------------- ------------------ --------------------
  0          SELECT STATEMENT                                              
  1    0       FILTER                                                   
  2    1         NESTED LOOP                                
  3    2           TABLE ACCESS        FULL                EMP           
  4    2           TABLE ACCESS        BY ROWID         DEPT
  5    4             INDEX UNIQUE SCAN                      PK_DEPT

  6    1         TABLE ACCESS        FULL                  SALGRADE

 

실행계획 생성결과를 이진트리로 표현하면

                     1 

              |             |          

             2              6

       |           |  

       3           4

                    | 

                    5

 

1 FILTER : ID 2번에서 ACCESS 한 결과로ID 6번의 결과를 FILTER

2 NESTED LOOPS : ID 3번에서ACCESS한 결과로 ID 4번에서ACCESS한 결과를 NESTEDLOOP JOIN

6 TABLE ACCESS FULL salgrade :salgrade TABLE을 FULL SCAN

3 TABLE ACCESS FULLemp : emp TABLE을FULL SCAN

4 TABLE ACCESS BY ROWID dept :dept TABLE을 pk_dept에서 읽은rowid로 ACCESS

5 INDEX UNIQUE SCAN pk_dept : pk_dept INDEX를UNIQUE SCAN

 

하나의 SQL 문장에 대한 실행계획을 만들어 결과를 분석하였습니다. 그런데,
이렇게 하나 하나의 문장에 대해서 실행계획을 생성하지 않고, 시스템 전체 혹은 하나의
세션에서 발생하는 모든 SQL 문에 대한 실행계획을 알고자 할 경우에는 Trace File을
만들어서 분석합니다.
 
  생성된 trace file은 생성된 그 자체로는 우리가 분석할 수 없어서 분석할 수 있도록 tkprof라는
tool을 사용해서 분석할 수 있습니다. 또한 SQL*PLUS에서 실행계획의 간략한 정보만
볼 수도 있습니다.


 

Posted by '김용환'
,

mytop으로 본 풀 쿼리 스캔의 악영향이다.

mysql은 테이블 lock을 기본적으로 하기 때문에, 다리 쿼리들을 블럭시킨다. 만약 풀쿼리가 분마다 들어오고, 기타 쿼리들이 쌓인다면.. 문제는 자명하다..

 

만약 mysql은 다른 서비스와 동작시키지 말아야 하며, 중형서버로 증설하지 않도록 해야 한다.

 


      Id      User         Host/IP         DB      Time    Cmd Query or State                                                   
      --      ----         -------         --      ----    --- ----------                                                       
  562670    dejava 211.218.152.101  dejavalog       199  Query SELECT projectname, count(projectname) count FROM lgt_logdata WHER
  562689    dejava 211.218.152.192  dejavalog       118  Query DELETE FROM lgt_logdata WHERE logid = -1                         
  562664    dejava   220.73.147.74  dejavalog       110  Query INSERT INTO lgt_logdata (PROJECTNAME, SERVERNAME, USERID, LOGDT, L
  562678    dejava 211.218.152.109  dejavalog       107  Query INSERT INTO lgt_logdata (PROJECTNAME, SERVERNAME, USERID, LOGDT, L
  562690    dejava   220.73.147.73  dejavalog       104  Query INSERT INTO lgt_logdata (PROJECTNAME, SERVERNAME, USERID, LOGDT, L
  562691    dejava   218.145.30.64  dejavalog       102  Query INSERT INTO lgt_logdata (PROJECTNAME, SERVERNAME, USERID, LOGDT, L
  562692    dejava   121.156.75.37  dejavalog        94  Query INSERT INTO lgt_logdata (PROJECTNAME, SERVERNAME, USERID, LOGDT, L
  562694    dejava 211.218.152.187  dejavalog        75  Query INSERT INTO lgt_logdata (PROJECTNAME, SERVERNAME, USERID, LOGDT, L
  562695    dejava   220.73.147.30  dejavalog        61  Query INSERT INTO lgt_logdata (PROJECTNAME, SERVERNAME, USERID, LOGDT, L
  562696    dejava  121.156.75.109  dejavalog        53  Query INSERT INTO lgt_logdata (PROJECTNAME, SERVERNAME, USERID, LOGDT, L
  562698    dejava 211.218.152.186  dejavalog        34  Query INSERT INTO lgt_logdata (PROJECTNAME, SERVERNAME, USERID, LOGDT, L
  562705    dejava   220.73.147.74  dejavalog        13  Query INSERT INTO lgt_logdata (PROJECTNAME, SERVERNAME, USERID, LOGDT, L
  562346      root       localhost  dejavalog         0  Query show full processlist                                            

 

'DB' 카테고리의 다른 글

mysql에서 delete를 빨리 해보기  (0) 2008.04.03
mysql에서 plan 정보 보기  (0) 2008.04.02
mytop mysql 모니터링 툴!  (0) 2008.04.02
ORA-00900 에러 와 validationQuery  (0) 2008.03.06
RAC 구축  (0) 2008.03.06
Posted by '김용환'
,

mytop mysql 모니터링 툴!

DB 2008. 4. 2. 22:46

mytop : mysql 모니터링에서는 정말 최고의 툴이 아닌가 싶다.

 

/root/.mytop 수정

  user=root
  pass=
  host=localhost
  db=test
  delay=5
  port=3306
  socket=
  batchmode=0
  header=1
  color=1
  idle=1

 

short 키 설명

? : 설명이 나온다.

 

 

너무 정보가 많아서 보기 힘들면, sleep을 뺀 나머지 정보를 보여준다.

mytop 에서 i를 누린다.

 

 MySQL on localhost (4.1.10-log)                                                                         up 41+10:09:05 [13:28:30]
 Queries: 68.4M  qps:   20 Slow:    2.1k         Se/In/Up/De(%):    11/39/02/02
             qps now:    2 Slow qps: 0.0  Threads:  351 (   3/   7) 00/40/00/00
 Cache Hits: 1.6M  Hits/s:  0.5 Hits now:   0.0  Ratio: 21.2% Ratio now:  0.0%
 Key Efficiency: 99.8%  Bps in/out:  1.1k/425.5   Now in/out: 230.3/ 5.1k

      Id      User         Host/IP         DB      Time    Cmd Query or State                                                   
      --      ----         -------         --      ----    --- ----------                                                       
  562607    dejava 211.218.152.101  dejavalog        73  Query SELECT projectname, count(projectname) count FROM lgt_logdata WHER
  562615    dejava 211.218.152.192  dejavalog        11  Query DELETE FROM lgt_logdata WHERE logid = -1                         
  562346      root       localhost  dejavalog         0  Query show full processlist       

 

또한 plan도 뜰 수 있는데.

 

e 를 누르고, id를 넣어서 리턴하면, plan정보가 뜬다.

 

이런 식으로 정보를 볼 수 있어서 모니터링이 편하다.

 

자세한 것은 이곳을 보길~

 

http://jeremy.zawodny.com/mysql/mytop/mytop.html

 

 

'DB' 카테고리의 다른 글

mysql에서 plan 정보 보기  (0) 2008.04.02
풀 쿼리 스캔의 악영향  (0) 2008.04.02
ORA-00900 에러 와 validationQuery  (0) 2008.03.06
RAC 구축  (0) 2008.03.06
오라클 테이블 내용 복구하기  (0) 2008.02.18
Posted by '김용환'
,