2012년 11월 22일 목요일

블랙 프라이데이 구매대행 정보

블랙 프라이데이 구매대행 가격정보


이번 블랙프라이데이에는 해외구매 한 번 해보려고 매일 뒤지고 있는데 그 중에 쓸만한 것들만 모아봤습니다. 배송비, 관세, 부가세(10%) 포함해도 국내에서 구매하는 것보다 월등히 싼 제품만 추려봤습니다. 물론 대부분 국내에서 A/S가 불가하기 때문에 이 점 참고하셔야 합니다. 컴퓨터부품은 관세가 없는 것으로 알고 있습니다.

1. Logitech Wireless Gaming Headset G930 - 69.99$ (국내 정식수입품 없음. 구매대행으로 최저 150,000원선)

2. Logitech Wireless Gaming Mouse G700 - 49.99$ / 국내 최저가 - 95,000원

3. Microsoft Xbox 360 Wireless Controller for Windows - 44.99$ / 국내 무선패드만 판매 최저가 - 39,000원
*국내에서는 무선수신기 포함 무선패드는 더이상 판매하지 않습니다. 이전에 약 6~7만원선에서 구매가 가능했던 것으로 기억합니다.

4. Logitech Wireless Performance Mouse(M950) - 44.99$ / 국내 최저가 - 105,000원

5. Logitech G19 - 104.99$ / 국내 최저가 - 225,000원

6. EVGA P67 SLI - 74.99$
*국내 미출시. 그래도 p67보드 최고 스펙에 8만원돈이면 거저 사는 가격.

7. CORSAIR Hydro Series H100i Water Cooler(H100후속) - 114.99$ / 국내 유통중인 H100의 최저가 - 180,000

8. G.SKILL Sniper Gaming Series 32GB(4 x 8GB) - 109.99$ / 국내유통중인 G.SKILL 8G(4G x 2) DDR3 14900 CL9 SNIPER SR KIT GSK 가격이 79,000원 -_-

9. CORSAIR Hydro Series H80 - 89.99$ / 국내 최저가 - 145,000원

G930과 G19, 마우스 제품들은 해외구매를 고려해볼만한 가격인 것 같고 램 역시 초기불량이 별로 많지 않은 편이기에 부담없이 구매하기에 좋은 가격인 것 같습니다.(미국의 경우 오버용 램이 대체적으로 국내에 비해 아주 많이 싸더군요.) 일체형 수냉쿨러의 경우 가격차이는 꽤 나지만 뽑기운이 많이 작용하기에 고려를 많이 해야할 듯 합니다. 

보통 배송대행할 경우에 배송비는 왠만한 컴퓨터 부품 기준으로 10,000~25,000원 정도 하는것 같고 물건값에 부가세10%붙여서 계산하시면 대략 가격이 나옵니다. 여기저기 뒤적거리다보니 그래픽카드나 HDD, SSD, CPU의 경우는 조금 할인을 하긴 하는데 A/S를 감안하면국내에서 사는 편이 낫습니다.

블랙 프라이데이 아이패드 구매해볼까?

블랙 프라이데이 아이패드 구매해볼까?

블랙 프라이데이 아이패드 구매하려는 데 미국내로 배송지 주소가 안되나???



적자(red ink)`가 `흑자(black ink)`로 전환될 정도로 많은 제품이 판매된다는 데서 유래한 미국 최대 쇼핑 대목 `블랙 프라이데이`에 미국은 물론이고 국내 소비자 관심도 집중되고 있다. 한미 자유무역협정(FTA) 발효로 부가세 면제금액이 200달러까지 확대됐고, 배송대행 등 다양한 경로를 통한 국내 배송이 가능해지면서 해외사이트 인터넷 쇼핑 유혹이 커졌다. 

◇인터넷 쇼핑 이렇게 

올해는 미국 현지에서도 연말 쇼핑시즌 온라인 판매가 크게 늘어날 전망이다. 시장조사업체 컴스코어는 11월과 12월 미국 인터넷 쇼핑 규모가 434억달러로 지난해 같은 기간보다 17% 증가할 것으로 22일 예측했다. 퀄컴은 지난 12일 미국 내 스마트폰(스마트패드 포함) 사용자 1500명을 대상으로 한 여론조사에서 응답자 27%가 선물을 구입하는 데 스마트기기를 사용할 것이라고 응답했다. 

전문가은 다양한 사이트에서 할인 판매가 진행되고 쿠폰 등을 통해 추가 할인이 가능한 만큼 신중한 인터넷 쇼핑을 주문했다. 이를 위해서는 인터넷 쇼핑을 돕는 다양한 사이트와 스마트폰 애플리케이션(앱)을 잘 활용해야 한다. 

가장 종합적인 정보를 제공해주는 사이트는 `블랙프라이데이닷에프엠(blackfriday.fm)`이다. 블랙 프라이데이 일반 정보부터 유통업체별 세일 일정, 품목별 가격비교까지 가능하다. 쇼핑리스트를 작성하면 구입할 선물 총액까지 계산해준다. `딜뉴스닷컴(dealnews.com)`도 유용하다. 

어떤 선물을 해야 할지 모를 때는 `원트풀(WANTFUL)`과 같은 선물 추천 사이트가 도움을 준다. 양식에 따라 선물 받을 사람의 간단한 특징을 입력하면 어울리는 선물 리스트 16개가 담긴 카탈로그를 보내준다. `프라이스블링크(PriceBlink)` 앱은 미국 내 4000개가 넘는 매장과 인터넷 사이트 가격을 비교해준다. `디사이드닷컴(decide.com)`은 원하는 제품이 가장 싸게 팔리는 시간을 알려준다. 다양한 쿠폰 사이트 및 앱을 이용하면 비용을 절약할 수 있다. 

◇전자제품 살 땐 

전자제품은 블랙 프라이데이에 가장 많이 팔리는 선물 아이템 가운데 하나다. 외신에 따르면 애플은 한국 시각 23일 오후 5시 `단 하루의 애플 쇼핑 이벤트`를 진행할 계획이다. 아이폰은 대상에서 제외되며 아이패드, 아이팟, 맥 컴퓨터 등을 할인된 가격에 구입할 수 있다. 올해 판매 품목은 아직 공개되지 않았다. 

전자제품 전문 사이트는 `테크바겐스닷컴(techbargains.com)`이 있다. 전자제품 가격비교와 쿠폰 다운로드까지 한자리에서 해결할 수 있다. 미국 소비자가전협회(CEA) 설문조사에 따르면 미국 성인들이 올 연말 가장 받고 싶어하는 선물은 스마트패드(16%), TV(10%), 스마트폰(8%) 순이었다. 미국유통재단(NRF)은 어린이들이 가장 받고 싶어 하는 전자제품으로 엑스박스360과 닌텐도 Wii U, 아이패드를 꼽았다. 

MySQL 현재 접속자 보기 및 MYSQL 모니터링 방법


MySQL Database의 경우 Oracle 이나 MS SQL Server에 비해서 대용량의 자료를 처리하는 경우가 적기에 튜닝에 필요성이 적은 것 같습니다. 그러나 웹이라는 환경은 많은 사용자가 동시에 접속을 할 수 있기에 항상 모니터링과 최적화는 기본이라고 생각합니다. 
본 강좌에서는 기본적인 모니터링 방법과 Connection과 Memory 부분에 대한 튜닝 방법을 소개하도록 하겠습니다.

출처 : http://www.albumbang.com/board/board_view.jsp?board_name=free&no=139

가. 모니터링 및 초기화 명령어
  • show status - MySQL 데이타베이스의 현재 상황
  • show Processlist - MySQL 프로세스 목록
  • show variables - 설정 가능한 모든 변수 목록
  • flush logs - MySQL의 로그파일 초기화
  • flush status - MySQL 상태정보 초기화
  • flush thread - 쓰레드 캐시에 저장된 쓰레드 초기화
  • flush tables - MySQL에 캐싱된 테이블 초기화
  • flush privileges - 권한정보 재 설정
나. Connection 튜닝
1. status 
  • Aborted_clients - 클라이언트 프로그램이 비 정상적으로 종료된 수
  • Aborted_connects - MySQL 서버에 접속이 실패된 수
  • Max_used_connections - 최대로 동시에 접속한 수
  • Threads_cached - Thread Cache의 Thread 수
  • Threads_connected - 현재 연결된 Thread 수
  • Threads_created - 접속을 위해 생성된 Thread 수
  • Threads_running - Sleeping 되어 있지 않은 Thread 수
2. system variables
  • wait_timeout - 종료전까지 요청이 없이 기다리는 시간 ( TCP/IP 연결, Shell 상의 접속이 아닌 경우 )
  • thread_cache_size - thread 재 사용을 위한 Thread Cache 수로써, Cache 에 있는 Thread 수보다 접속이 많으면 새롭게 Thread를 생성한다.
  • max_connections - 최대 동시 접속 가능 수
그외에 status 또는 system variables 값은 참고의 Mysql 메뉴얼을 참조해 주십시요.
mysql> show variables like '%max_connection%';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 100   |
+-----------------+-------+
1 row in set (0.00 sec)

mysql> show status like '%connect%';
+----------------------+---------+
| Variable_name        | Value   |
+----------------------+---------+
| Aborted_connects     | 3782    |
| Connections          | 2961108 |
| Max_used_connections | 90      |
| Threads_connected    | 1       |
+----------------------+---------+
4 rows in set (0.01 sec)

mysql> show status like '%clients%';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| Aborted_clients | 2160  |
+-----------------+-------+
1 row in set (0.00 sec)

mysql> show status like '%thread%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| Delayed_insert_threads | 0     |
| Slow_launch_threads    | 0     |
| Threads_cached         | 7     |
| Threads_connected      | 1     |
| Threads_created        | 1364  |
| Threads_running        | 1     |
+------------------------+-------+
6 rows in set (0.00 sec)

Cache Miss Rate(%) =  Threads_created / Connections * 100
Connection Miss Rate(%) = Aborted_connects / Connections * 100
Connection Usage(%) = Threads_connected / max_connections * 100

위의 경우는 Cache Miss Rate(%) = 0.05%, Connection Miss Rate(%) = 0.12%, Connection Usage(%) = 1%
3. 튜닝
  • Connection Usage(%)가 100% 라면 max_connections 수를 증가시켜 주십시요. Connection 수가 부족할 경우 Too Many Connection Error 가 발생합니다.
  • DB 서버의 접속이 많은 경우는 wait_timeout 을 최대한 적게 (10~20 정도를 추천) 설정하여 불필요한 연결을 빨리 정리하는 것이 좋습니다. 그러나 Connection Miss Rate(%) 가 1% 이상이 된다면 wait_timeout 을 좀 더 길게 잡는 것이 좋습니다.
  • Cache Miss Rate(%) 가 높다면 thread_cache_size를 기본값인 8 보다 높게 설정하는 것이 좋습니다. 일반적으로 threads_connected 가 Peak-time 시 보다 약간 낮은 수치로 설정하는 것이 좋습니다.
  • MySQL 서버는 외부로 부터 접속 요청을 받을 경우 인증을 위해 IP 주소를 호스트네임으로 바꾸는 과정을 수행하여 접속시에 불필요한 부하가 발생하게 됩니다. skip-name-resolve를 설정하시고 접속시에 IP 기반으로 접속을 하게 되면 hostname lookup 과정을 생략하게 되어 좀 더 빠르게 접속을 하실 수 있습니다.
다. Memory 튜닝
1. status
  • key_block_unused - Key Cache에서 사용되고 있지 않은 Block 수
  • key_reads - Key Block 읽기 요청시 Disk을 읽은 수
  • key_read_requests - Key Block 읽기 요청수
2. system variables
  • key_buffer_size - 인덱스를 메모리에 저장하는 버퍼의 크기
  • table_cache - 전체 쓰레드가 사용할 오픈 가능한 테이블 수
  • myisam_sort_buffer_size - 테이블 repair,Alter table,load data에 사용되는 버퍼 메모리 크기
  • join_buffer_size - 조인을 위한 메모리 버퍼 크기
  • record_buffer - 순차적인 검색을 위해 사용되는 메모리 버퍼 크기
  • record_rnd_buffer - order by 절을 사용할 경우 디스크 사용을 피하기 위하여 사용하는 메모리 버퍼 크기
  • sort_buffer - order by 와 group by에 사용되는 메모리 버퍼 크기
  • tmp_table_size - group by 시 디스크를 사용하지 않고 임시 테이블을 만들기 위해 사용되는 메모리 크기
  • key_cache_block_size - block 의 크기(bytes, 기본값 1024)
mysql> show status like '%key%';
+------------------------+-----------+
| Variable_name          | Value     |
+------------------------+-----------+
| Com_preload_keys       | 0         |
| Com_show_keys          | 2945      |
| Handler_read_key       | 365020739 |
| Key_blocks_not_flushed | 0         |
| Key_blocks_unused      | 222601    |
| Key_blocks_used        | 231960    |
| Key_read_requests      | 847204435 |
| Key_reads              | 4195954   |
| Key_write_requests     | 25034738  |
| Key_writes             | 16452136  |
+------------------------+-----------+
10 rows in set (0.00 sec)


Key Buffer Usage = 1 - ((Key_blocks_unused × key_cache_block_size) / key_buffer_size)Key_reads/Key_read_requests Rate(%) =  Key_reads/Key_read_requests * 100
Key_reads/Key_read_requests Relative Rate(%) = (1- ^Key_reads/^Key_read_requests) * 100

* ^Key_Reads = Current Key_Rreads - Previous Key_Reads

3. 튜닝
  • key_buffer_size는 총 메모리 크기의 25% 정도의 크기로 설정하는 것이 좋습니다.
  • Key_reads/Key_read_requests Rate(%)은 일반적으로 1%보다 적습니다. 1% 보다 높다면 Key Cache가 아닌 디스크를 읽은 경우가 많다고 판단할 수 있습니다. 또한 Key_reads/Key_reads_requests Relative Rate(%) 값이 지속적으로 90% 이상일 경우는 key_buffer_size가 효율적으로 설정되어 있다고 생각하시면 됩니다. 하지만 데이터베이스가 엄청나게 크거나 여러 데이터를 골고루 많이 읽는 데이터베이스라면 아무리 많은 양의 키 캐시를 설정해도 90% 이상의 적중률을 얻을 수는 없습니다.
라. 적용
system variables은 my.cnf 또는 my.ini 파일을 수정 후 MySQL Server 를 재시작 해 주십시요.
[www@smson www]$ vi /etc/my.cnf  # The MySQL server
[mysqld]
port            = 3306
socket          = /tmp/mysql.sock
skip-locking
skip-name-resolve
key_buffer = 256M
max_allowed_packet = 1M
table_cache = 256
sort_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
thread_cache = 8
query_cache_size= 16M
# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 8
wait_timeout = 120

~~~

[root@smson mysql]# /usr/local/mysql/share/mysql/mysql.server restart


마. 참고



DB Connection Pool 이란?


1. DB Connection Pool 이란?
대부분의 사람들이 DB Connection Pool이란 것을 알고 있을 것이다. 보통의 경우에는 DB에 연결을 하고 결과를 가져온 후에
연결을 끊어 버리게 된다. DB에 연결하는 과정은 시간이 많이 소요되는 Cost가 비싼 연산이다. 물론 퍼포먼스도 많이 떨어진다.
이러한 문제점을 해결하기 위해 DB Connection Pool 이라는 것을 사용한다.
DB Connection Pool이란 DB Connection Pool 매니저가 일정의 컨넥션을 연결하고 있다가, 요청이 들어오면 컨넥션을 할당을 해주고 없으면 기다리게 한다. 요청한 클라이언트는 컨넥션을 다쓰면 다시 반납하는 구조로 이루어 진다.
따라서 속도면이나 퍼포먼스 부분에서  조금은 향상을 바랄수 있을 것이다.
 
1)조건
WAS : 톰캣 4.1.X 이상
J2SDK : 1.4.X 이상
OS:원도우,리눅
JDBC드라이버:mysql-connector-java-3.0.16-ga-bin.jar
 
2)세팅
 
해당 톰캣의 COMMON/LIB에 DBCP에 관련된 다음의 3가지 라이브러리가 존재하는지 검사
commons-collections.jar,commons-dbcp-1.1.jar,commons-pool-1.1.jar
 
해당 콤캣의 COMMON/LIB에 MYSQL관련 라이브러리를 넣어준다.
mysql-connector-java-3.0.16-ga-bin.jar
 
conf/server.xml을 수정한다. JNDI 네임설정
이부분이 주석처리를 해체하고 그안에 아래 내용을 넣는다.
 
scope="Shareable" type="javax.sql.DataSource"/> 
           

                
           url
           jdbc:mysql://localhost/접속db명 
           
  

              
           maxIdle   
           10 
           
 
               
          
           maxActive   
           30 
            
                    
     
  driverClassName   
  org.gjt.mm.mysql.Driver 
  
 
  
     
  username    
  접속id명 
  
 

     
  password     
  접속패스워드 
 
 
     
  maxWait   
  10000 
   

     
  removeAbandoned   
  true 
 
  
     
  removeAbandonedTimeout   
  60 
 

     
  logAbandoned   
  true 
  
  
       
  factory
  org.apache.commons.dbcp.BasicDataSourceFactory 
  
     
  
 
각 context 의 WEB-INF/web.xml 파일을 설정한다.mysql의경우 따로 해야한다.
안에 아래 내용을 넣는다.
    
      MySQL DataSource   
      dbcp이름명   
      javax.sql.DataSource   
      Container 
   
 
3)소스
모든세팅이 끝나면 아파치와 톰캣을 재가동합니다.
 
 


<%@ page import="javax.sql.*,java.sql.*,javax.naming.*" contentType="text/html;charset=euc-kr" %>
<%
Connection con = null;
 
//방법1
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource) envCtx.lookup("dbcp명");
 
//방법2
Context ic = new InitialContext();
DataSource ds = (DataSource) ic.lookup("java:comp/env/jdbc/mysql"); 

  con = ds.getConnection();
  Statement Stmt = con.createStatement();
  ResultSet Rs = Stmt.executeQuery("SELECT * from user;");
  Rs.next();
  out.println("회원수 : " + Rs.getString(1) + " 명"); 
%>
 
* tomcat 에서 JNDI 관련 에러메시지별 대처 방법
- Cannot load JDBC driver class 'com.mysql.jdbc.Driver', cause: com.mysql.jdbc.Driver 또는
       Null Pointer Exception '', cause: No suitable driver
   ==> 해당 jdbc 드라이버(위의경우 mysql 드라이버) 가 없기 때문입니다.
          해당 드라이버 파일을 $CATALINA_HOME/common/lib 디렉토리로 복사합니다.
    - Name xxxx is not bound in this Context
    ==> server.xml 과 web.xml 에서 해당 JNID가 설정되지 않은 경우입니다.
        server.xml 과 web.xml 에 JNDI resource 를 설정하고 이름을 동일하게 설정하도록 합니다.

mysql connection 수 보기 ERROR 1040 (08004): Too many connections

ERROR 1040 (08004): Too many connections 에러발생시 해결법~

mysql> set global max_connections=300;
(mysql 을 재시작 안해도 max_connections 값이 바로 적용된다.)

또 다른 방법으로 
mysql 설정파일(my.ini 또는 my.cnf )을 다음과 같이 설정해주면 된다.
[mysqld]
  max_connections = 300
설정파일 변경 후에는 mysql 재시작이 필요하다.

■ max_connections에 대한 설명
MySQL은 [ 최대 접속수 + 1 ]의 접속을 허용한다. "1"은 관리자 권한 접속을 나타낸다. 
문제가 발생했을 경우 관리자가 접속할 수 있게 하기 위해서이다.

시스템에 접속수가 폭주해서 접속이 안되는 경우가 발생한다. (ERROR 1040 (08004): Too many connections)
이런 상황에서 일시적으로 접속수를 증가시킴으로써 에러를 해결하자~.

■ MySQL 접속수 관련 상태를 확인하는 방법
mysql> show variables like '%max_connect%';     
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| max_connect_errors | 10000 |
| max_connections    | 100   |
+--------------------+-------+

mysql> show status like '%CONNECT%';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| Aborted_connects         | 200   |
| Connections              | 300   |
| Max_used_connections     | 101   |   ==> 현재 연결된 접속수
| Ssl_client_connects      | 0     |
| Ssl_connect_renegotiates | 0     |
| Ssl_finished_connects    | 0     |
| Threads_connected        | 101   |   ==> 연결되었던 최대 접속수
+--------------------------+-------+
7 rows in set (0.00 sec)

mysqladmin 실행해서 확인하는 방법
./mysqladmin -u root -p processlist
./mysqladmin -u  root -p variables | grep max_connections

apple ipad mini 아이패드 미니 디자인 보니 과연 애플이구나!

아이패드 미니 디자인 보니 과연 애플이구나!

Apple ipad mini

극강의 휴대성과 콤팩트함 때문에 당분간 아이패드 미니의 인기는 지속될 것 같습니다. 무엇보다 사람들이 생각하지 못한 사이즈의 제품을 만들어 성공시킨 애플의 발상이 기발하네요. 애플은 정말 아직 감이 살아있네요. 







2012년 11월 20일 화요일

javascript editor web javascript 실행기

javascript editor web  javascript 실행기


http://www.w3schools.com/js/tryit.asp?filename=tryjs_events

http://www.w3schools.com 사이트에서 javascript 실행을 할 수 있다.
자바스크립트 데모를 만들어서 미리 실행할 수 있다.

2012년 11월 19일 월요일

2012년 11월 18일 일요일

Retrieve items from a View with CAML in Javascript Client Object model [SharePoint 2010]

Retrieve items from a View with CAML in Javascript Client Object model  [SharePoint 2010]



This is a simple code that took me a lot of time to write because of the complexity of the famous Javascript Client Object model i guess. 

So here is the complete code to get items from one particular view using CAMl query in Javascript Client Object model. 

<script type="text/ecmascript" language="ecmascript">

function runCode()

{

var context = new SP.ClientContext.get_current();

var list = context.get_web().get_lists().getByTitle("ListName ");

var view = list.get_views().getByTitle("ViewName");

context.load(view);

context.executeQueryAsync(

function (sender, args) { alert(view.get_viewQuery()); getItemsFromList("Projects", "<View><Query>" + view.get_viewQuery() + "</Query></View>") },

function (sender, args) { alert("error: " + args.get_message()); }

);

}

function getItemsFromList(listTitle, queryText)

{

var context = new SP.ClientContext.get_current();

var list = context.get_web().get_lists().getByTitle(listTitle);

var query = new SP.CamlQuery();

query.set_viewXml(queryText);

var items = list.getItems(query);

context.load(items);

context.executeQueryAsync(

function()

{

var listEnumerator = items.getEnumerator();

var i = 0;

while (listEnumerator.moveNext())

{

i++;

}

alert("items retrieved: " + i);

},

function(sender, args) {alert("error in inner request: " + args.get_message());}

);

}
</script>

<input id="Button1" type="button" value="Run Code" onclick="runCode()" />

Just relace ListName and ViewName in above code.

Update - See the updated post for detailed code on getting the item iteself
Retrieve items from view using SPquery\Caml sharepoint 2010