2015년 6월 30일 화요일

scp 명령어를 이용한 파일 복사 및 전송

(맨날 까먹어; 할때마다 까먹어;)

출처: HostWay - 서버운영가이드

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

scp 명령어를 이용한 파일 복사 및 전송

  ssh에서 제공되는 scp 명령어를 통해 로컬서버↔원격서버 로의 파일을 간단하게 전송할 수 있다.

 1. 사용방법
    1) 원격 서버 → 로컬 서버로 파일 전송
        # scp [옵션] [계정명]@[원격지IP주소]:[원본 경로 및 파일] [전송받을 위치]

        예제1) IP 111.222.333.444 서버의 abc라는 계정으로 /home/abc/index.html 파일을 로컬서버 /home/me/ 디렉토리에 전송 받기
                    # scp abc@111.222.333.444:/home/abc/index.html /home/me/

    2) 로컬 서버 → 원격 서버로 파일 전송
        # scp [옵션] [원본 경로 및 파일] [계정명]@[원격지IP주소]:[전송할 경로]

        예제2) 로컬서버 /home/me/wow.html 파일을 IP 111.222.333.444 서버의 /home/abc/ 디렉토리에 전송 하기
                   # scp /home/me/wow.html abc@111.222.333.444:/home/abc/

    3) ssh포트를 기본 22번으로 사용하고 있지 않는 서버로의 전송

        예제3) 2222번인 SSH포트를 사용한다면 아래와 같이 –P 옵션과 포트번호를 넣어준다.
                  # scp –P 2222 abc@111.222.333.444:/home/abc/index.html /home/me/
                  # scp –P 2222 /home/me/wow.html abc@111.222.333.444:/home/abc/

        [주의사항]
        옵션중에 –P와 –p가 있으니 대/소문자 확인을 하여야 한다.
        -P : 포트번호를 지정함
        -p : 원본파일 수정/사용시간 및 권한을 유지함
        -r : 하위 디렉토리 및 파일 모두 복사함

Air Swimmers - 날아다니는 니모&상어ㅋ

드럽게 쓸데없는데 격렬하게 갖고 싶음. ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ



날아다니는 니모&상어




오얏나무 이(李) 유래

이(李)씨의 성을 최초로 쓴 이는 중국의 성인 중 하나인 노자인데 그의 이름은 李耳 이었단다. 
태어날 때 오얏나무 아래서 태어났다 하여 나무 木자 아래 子를 넣어 오얏나무 李자를 만들었다고 한다.

왜 오얏리라 하는지.. 이제야 정확히 알게되었다. ㅎㅎ


디스크 용량확인

df (disk free): 디스크의 남은 공간 확인


사용법:
df [Option] [FileSystem | File]

* Option
- k : Kilobyte
-m : Megabyte

예제:
df -k : KiloByte
df -m : MegaByte
df . : 현재 디랙터리가 포함된 파티션의 남은공간 확인

du : 특정 디렉토리의 디스크의 사용량 확인


사용법:
du [Option] [Files]

* Option
-a : 디랙터리 내 모든 파일크기 확인
-s : 총 사용량 표시
-k : KiloByte
-h : 최적단위로 표시

예제:
du -a : 디랙터리 내 모든파일 확인
du -s * : 현재 디랙터리만의 사용량 확인 
'du -h --max-depth=N *'와 같이 N깊이 사용량 확인이 가능함.

# du -sh /root
970M    /root

2015년 6월 24일 수요일

리비도 (Libido)

두산백과

리비도

Libido ]
요약
정신분석학 용어로 성본능()·성충동()의 뜻.
이 말은 보통 말하는 성욕, 다시 말해 성기()와 성기의 접합을 바라는 욕망과는 다른, 넓은 개념이다. S.프로이트는 리비도가 사춘기에 갑자기 나타나는 것이 아니라 태어나면서부터 서서히 발달하는 것이라고 생각하였다.

성본능은 구순기(항문기()를 통해 발달하다가 5세경 절정에 이른 후, 억압을 받아 잠재기에 이르고, 사춘기에 다시 성욕으로 나타난다고 한다. 그러나 리비도는, 중도에서 발달이 중지되기도 하고[], 완전히 발달했다가 거꾸로 되돌아가는 경우도 있다[退]. 이상성욕이나 신경증()이 이에 속한다.

또한 리비도는 대상에 주입()되어 축적되는데, 이러한 리비도를 대상() 리비도라고 한다. 우정, 부자간의 정, 연애 같은 것이 이에 속한다. 그리고 자아()에게 주입된 리비도를 자아 리비도 또는 나르시시즘적 리비도라 한다. 자기의 건강상태를 이상스러울 정도로 걱정하는 상태, 말하자면 심기증() 같은 것이 그것이다.

리비도가 충족되기를 바라다가 충족되지 않을 때는 불안으로 변한다. 또한 리비도는 승화되어 정신활동의 에너지가 되기도 한다. 프로이트는 처음에 리비도를 자기보존 본능과 대립되는 것으로 보았으나, 나중에는 이 둘을 결합, 에로스(영원의 결합을 구하는 본능)라고 하여 죽음의 본능, 즉 삶을 파괴하려는 본능과 대립시켰다.

2015년 6월 19일 금요일

Aggregation Framework Examples at MongoDB with C

출처: http://api.mongodb.org/c/current/aggregate.html

Aggregation Framework Examples


#include <mongoc.h>
#include <stdio.h>

static void
print_pipeline (mongoc_collection_t *collection)
{
   mongoc_cursor_t *cursor;
   bson_error_t error;
   const bson_t *doc;
   bson_t *pipeline;
   char *str;

   pipeline = BCON_NEW ("pipeline", "[",
      "{", "$group", "{", "_id", "$state", "total_pop", "{", "$sum", "$pop", "}", "}", "}",
      "{", "$match", "{", "total_pop", "{", "$gte", BCON_INT32 (10000000), "}", "}", "}",
   "]");

   cursor = mongoc_collection_aggregate (collection, MONGOC_QUERY_NONE, pipeline, NULL, NULL);

   while (mongoc_cursor_next (cursor, &doc)) {
      str = bson_as_json (doc, NULL);
      printf ("%s\n", str);
      bson_free (str);
   }

   if (mongoc_cursor_error (cursor, &error)) {
      fprintf (stderr, "Cursor Failure: %s\n", error.message);
   }

   mongoc_cursor_destroy (cursor);
   bson_destroy (pipeline);
}

int
main (int argc,
      char *argv[])
{
   mongoc_client_t *client;
   mongoc_collection_t *collection;

   mongoc_init ();

   client = mongoc_client_new ("mongodb://localhost:27017");
   collection = mongoc_client_get_collection (client, "test", "zipcodes");

   print_pipeline (collection);

   mongoc_collection_destroy (collection);
   mongoc_client_destroy (client);

   mongoc_cleanup ();

   return 0;
}





홍콩의 두 십대, 화장실 문 손잡이에 박테리아 만연을 방지하는 천재적인 방식 발명 (by ITCLE 2015/06/19)

출처: ITCLE.com & Business Insider



홍콩의 두 십대, 화장실 문 손잡이에 박테리아 만연을 방지하는 천재적인 방식 발명해

(2 teens invented a genius way to stop the spread of bacteria on bathroom door handles)

비즈니스 인사이더는 오늘 홍콩의 두 십대가 화장실 문 손잡이에 박테리아 만연을 방지하는 천재적인 방식을 발명했다고 전했다. 사이먼 웡 (17세)과 마이클 리 (18세)는 이 저렴하고 기발한 화장실 문 손잡이를 5월 12일 인텔 국제 과학 엔지니어링 박람회에 출품했다.
이 문 손잡이는 박테리아를 죽이는 광물질인 티타늄 이산화물로 코팅되는데, 이는 페인트와 선스크린에 사용되는 것이다. 이는 박테리아가 손잡이 표면에서 자라는 것을 방지해 준다. 그러나 티타늄 이산화물은 자외선에서 가장 잘 죽기 때문에, 웡과 리는 자외선이 방사되는 장치를 손잡이에 내장시켯다.
손잡이 자체는 투명한 유리관으로 되어 있고, 손잡이 전체에 자외선을 방사하도록 한쪽 끝에 강력힌 LED를 장착했다. 자외선이 비추면 티타늄 이산화물은 박테리아를 죽이기 시작한다.
그러나 문제는 LED는 전원을 필요로 하고, 자외선을 계속 방사하기 위해서, 웡과 리는 문에 변속장치를 부착했고, 문을 열고 닫을 때마다 기어들의 운동이 전력으로 변환된다. 따라서 이는 작동하기 위해 외부 전원을 필요없이 LED에 전력을 제공한다.
이는 이 디자인에 많은 부품들을 필요로 하는 것 같아 보이지만, 웡과 리는 이 자가살균 용 문 손잡이 시스템을 생산하는 단가가 오직 $13 정도라고 예상했다.



구글, 데이터센터 기술 '비밀주의' 풀렸나? (by ZDNet Korea 2015/06/19)

출처: ZDNet Korea

구글, 데이터센터 기술 '비밀주의' 풀렸나

임민철 기자2015.06.19
  • 글자 작게
  • 글자 크게
구글이 자사 클라우드플랫폼(GCP)에 적용된 최신 네트워크 아키텍처 '주니퍼패브릭'을 공개했다. 자체 개발한 하드웨어와 소프트웨어, 기존에 데이터센터 인프라에 적용했던 SDN 기술 등을 응용한 결과물로 묘사됐다.


2015년 6월 18일 목요일

MongoDB에서 최고값 가져오기 with C (SQL의 MAX와 동일)

최고값 구하는거때매 한참 해맸네. 뭔가 지원되겠거니 편해볼라고 기대한 내 잘못이지;;

case SQL:
SELECT MAX(sid) FROM {TABLE NAME};

case MongoDB:
 
#include <bson.h>
#include <mongoc.h>

#define MGDOID "sid"

// MongoDB에서 최고값 가져오기
unsigned long GetMaxFromMongoDB()
{
 mongoc_client_t *client;
 mongoc_collection_t *collection;
 mongoc_cursor_t *cursor;

 bson_t *pipeline;
 bson_iter_t iter;
 const bson_t *doc;
 const bson_value_t *value;

 unsigned long ans;
 
 // for debug
 clock_t cStartClock;
 cStartClock = clock();

 //mongoDB 초기화
 mongoc_init();
 client = mongoc_client_new(MONGO_SERVER);

 if (!client) {
  fprintf(stderr, "[MongoDB] Failed to parse URI.\n");
  return 0;
 }

  //MongoDB - Collection 연결
 collection = mongoc_client_get_collection (client, MONGO_DBNAME, MONGO_COLLECTION);

 pipeline = BCON_NEW ("pipeline", "[",
      "{", "$project", "{", MGDOID, BCON_INT32(1), "}", "}",
      "{", "$sort", "{", MGDOID, BCON_INT32(-1), "}", "}",
   "{", "$limit", BCON_INT32(1), "}",
   "]");

 cursor = mongoc_collection_aggregate(collection, MONGOC_QUERY_NONE, pipeline, NULL, NULL);
 
 while (mongoc_cursor_next(cursor, &doc)) {
  if(bson_iter_init(&iter, doc)) {
   while (bson_iter_next(&iter)) {
    if( strncmp(bson_iter_key(&iter), MGDOID, 3) == 0) {
     value = bson_iter_value (&iter);
//fprintf(stderr, "[%" PRId64 "]\n", value->value.v_int64);
     ans = (long)value->value.v_int64;
    }
   }
  }
 }
 bson_destroy(pipeline);

 mongoc_collection_destroy (collection);
 mongoc_client_destroy (client);
 mongoc_cleanup();

 cStartClock = (clock() - cStartClock);
 fprintf(stderr, "> GET MAX ID From MongoDB[%ld]: %2.8f sec.\n", ans, cStartClock / (double)CLOCKS_PER_SEC);

 return ans;
}


printf & int64_t

For int64_t type:
int64_t t;
printf(“%” PRId64 “\n”, t);
For uint64_t type:
uint64_t t;
printf(“%” PRIu64 “\n”, t);
you can also use PRIx64 to print in hexadecimal.
These macros are defined in inttypes.h

MAPPING SQL TO MONGODB (Sample)

출처: http://search.cpan.org/~mongodb/MongoDB-v0.704.5.0/lib/MongoDB/Examples.pod

MAPPING SQL TO MONGODB ^

For developers familiar with SQL, the following chart should help you see how many common SQL queries could be expressed in MongoDB.
These are Perl-specific examples of translating SQL queries to MongoDB's query language. To see the JavaScript (or other languages') mappings, seehttp://dochub.mongodb.org/core/sqlToMongo.
In the following examples, $db is a MongoDB::Database object which was retrieved by using get_database. See MongoDB::MongoClient for more.
CREATE TABLE USERS (a Number, b Number)
    Implicit, can be done explicitly.
INSERT INTO USERS VALUES(1,1)
    $db->get_collection( 'users' )->insert( { a => 1, b => 1 } );
SELECT a,b FROM users
    $db->get_collection( 'users')->find( { } )->fields( { a => 1, b => 1 });
SELECT * FROM users
    $db->get_collection( 'users' )->find;
SELECT * FROM users WHERE age=33
    $db->get_collection( 'users' )->find( { age => 33 } )
SELECT a,b FROM users WHERE age=33
    $db->get_collection( 'users' )->find( { age => 33 } )->fields( { a => 1, b => 1 });
SELECT * FROM users WHERE age=33 ORDER BY name
    $db->get_collection( 'users' )->find( { age => 33 } )->sort( { name => 1 } );
<SELECT * FROM users WHERE age33>>
    $db->get_collection( 'users' )->find( { age => { '$gt' => 33 } } );
<SELECT * FROM users WHERE age<33>
    $db->get_collection( 'users' )->find( { age => { '$lt' => 33 } } );
SELECT * FROM users WHERE name LIKE "%Joe%"
    $db->get_collection( 'users' )->find( { name => qr/Joe/ } );
SELECT * FROM users WHERE name LIKE "Joe%"
    $db->get_collection( 'users' )->find( {name => qr/^Joe/ } );
<SELECT * FROM users WHERE age33 AND age<=40>>
    $db->get_collection( 'users' )->find( { age => { '$gt' => 33, '$lte' => 40 } } );
SELECT * FROM users ORDER BY name DESC
    $db->get_collection( 'users' )->find->sort( { name => -1 } );
CREATE INDEX myindexname ON users(name)
    $db->get_collection( 'users' )->ensure_index( { name => 1 } );
CREATE INDEX myindexname ON users(name,ts DESC)
    $db->get_collection( 'users' )->ensure_index( Tie::IxHash->new( name => 1, ts => -1 ) );
In this example, we must use Tie::IxHash to preserve the ordering of the arguments to ensureIndex.
SELECT * FROM users WHERE a=1 and b='q'
    $db->get_collection( 'users' )->find( {a => 1, b => "q" } );
SELECT * FROM users LIMIT 10 SKIP 20
    $db->get_collection( 'users' )->find->limit(10)->skip(20);
SELECT * FROM users WHERE a=1 or b=2
    $db->get_collection( 'users' )->find( { '$or' => [ {a => 1 }, { b => 2 } ] } );
SELECT * FROM users LIMIT 1
    $db->get_collection( 'users' )->find->limit(1);
EXPLAIN SELECT * FROM users WHERE z=3
    $db->get_collection( 'users' )->find( { z => 3 } )->explain;
SELECT DISTINCT last_name FROM users
    $db->run_command( { distinct => "users", key => "last_name" } );
SELECT COUNT(*y) FROM users
    $db->get_collection( 'users' )->count;
<SELECT COUNT(*y) FROM users where age 30>>
    $db->get_collection( 'users' )->find( { "age" => { '$gt' => 30 } } )->count;
SELECT COUNT(age) from users
    $db->get_collection( 'users' )->find( { age => { '$exists' => 1 } } )->count;
UPDATE users SET a=1 WHERE b='q'
    $db->get_collection( 'users' )->update( { b => "q" }, { '$set' => { a => 1 } } );
UPDATE users SET a=a+2 WHERE b='q'
    $db->get_collection( 'users' )->update( { b => "q" }, { '$inc' => { a => 2 } } );
DELETE FROM users WHERE z="abc"
    $db->get_database( 'users' )->remove( { z => "abc" } );


2015년 6월 17일 수요일

"프로그래머시절 몰래 내 머그컵을 씻어줬던 CEO"


출처: 광파리 Facebook

넷플릭스. TV 시장을 흔들기 시작한 미국 스타트업. 창업자/CEO인 리드 해스팅스가 재밌는 일화를 밝혔습니다. 스탠포드 졸업 후 스타트업에서 프로그래머로 일했는데, 여느 프로그래머처럼 책상이 지저분했다고. 그런데 머그 컵이 종종 깨끗이 씻어져 있었다고 합니다.
어느 날 일찍 출근했더니 CEO가 화장실에서 해스팅스의 머그컵을 씼고 있었대요. "그동안 내 머그 컵을 씻은 사람이 당신이었나요?" "맞아요". "왜 씼었나요?" "당신을 위해 해줄 수 있는 게 이거밖에 없어서요. 당신은 회사를 위해 많은 일을 하잖아요".
머그컵 씻는 CEO. 리더는 때로는 이래야 하나 봅니다. 이런 대통령, 이런 장관, 이런 사장을 보고 싶습니다. 이런 센터장이 되고 싶습니다.






2015년 6월 16일 화요일

데이터마이닝관련 참고사이트

배달의 분석 그리고 사용자 예측

https://medium.com/@xissy/68d3eb6c2fdd

은전한닢

http://eunjeon.blogspot.kr/

오타교정 동의어 연관단어 정보

http://blog.indf.net/category/Dev

벡터연산 - 분해,내적,외적,합,곱

http://mrw0119.tistory.com/12

word2vec

http://mayo.hatenablog.com/entry/2014/07/11/111432

MicroService란?

http://channy.creation.net/articles/microservices-by-james_lewes-martin_fowler#fn-a4158f7f

Lucene-Solr 관련 참고사이트


Solr Search Relevancy

http://www.solrtutorial.com/solr-search-relevancy.html

Solr Wiki

https://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters
https://cwiki.apache.org/confluence/display/solr/Apache+Solr+Reference+Guide

오픈소스 검색엔진 랭킹

http://db-engines.com/en/ranking/search+engine

Using CustomScoreQuery For Custom Solr/Lucene Scoring

http://java.dzone.com/articles/using-customscorequery-custom

Build your own Custom Lucene query and scorer

http://opensourceconnections.com/blog/2014/01/20/build-your-own-custom-lucene-query-and-scorer/

Class Similarity

http://lucene.apache.org/core/3_0_3/api/core/org/apache/lucene/search/Similarity.html

Class TFIDFSimilarity

https://lucene.apache.org/core/4_6_0/core/org/apache/lucene/search/similarities/TFIDFSimilarity.html

FunctionQuery

https://wiki.apache.org/solr/FunctionQuery

Custom Solr FunctionQueries

http://www.solrtutorial.com/custom-solr-functionquery.html

Solr relevancy function queries

http://lucidworks.com/blog/solr-relevancy-function-queries/

Solr 문서 공부용 번역글(1) 

http://hist0134.blog.me/220304831540

Solr KMA


Solr vs ElasticSearch 벤치마킹


2015년 6월 15일 월요일

[메르스] 삼성의료원 메세지

문자메세지 전문:
안녕하십니까?
삼성서울병원입니다.
금번 메르스 사태로 인하여 저희
병원 진료를 보시는 환자분들께
심려를 끼쳐드려 심심한 사과의
말씀을 드립니다.
불가피하게 6월15일부터
6월24일까지 진료를 제한하기로
하였습니다.
향후 진료일정과 관련하여
병원에서 연락드릴 예정입니다.
다시 한 번 사과드립니다.

자격증 따 봤자 의미가 없다고?

(2013.05.06. 22:55 작성)
무의미한 일이라 해서 무조건 할 필요가 없다고 생각해?
무의미하지만 가치가 있다고 하면 어때?
무의미하더라도 가치가 있다면 해볼만하지 않아?
─ 자격증 많이 따 봤자 의미가 없는거 아니냐는 질문을 받고..

(보통 자격증에 대해 논하는 사람은, 이미 그 자격증을 취득하고 있다는게 함정이란다.)

스노우크래프트 (2009)

(2009.01.16. 10:34 작성)

추억의 게임. ㅎㅎ

( 헉.. 오늘 알았다. 블로거는 파일첨부가 안되는구나;; ㅠㅠ 젝일!! 링크걸어야지. )


다운로드: http://blogattach.naver.net/28bd348790c5cc103ed9bf89b5592b5bf1a656b96a/data41/2009/1/16/168/snowcraft-jujac.exe?type=attachment


++ 스노우크래프트 ++



<사용법>
마우스 - 공격 및 컨트롤@ 마우스로 빨간색 캐릭터 3마리중 한마리를 마우스 왼쪽버튼으로 꾹 누르신다음, 손을 떼시면 눈이 던져집니다.@ 오래 누를수록 멀리나가고, 짧게 누르면 최단거리로 다갑니다.@ 마우스로 캐릭터를 클릭한후 드래그 해서 캐릭터를 움직입니다.

레드얼럿3 각 진영 테크트리 (2008)

(2008.11.26. 16:34 직성)

이 누님들을 차마 버리지못해서 ... 네이버블로그서 가져옴.. 백업.. ㅋㅋㅋㅋㅋㅋㅋㅋㅋ

출처 에바의 잡다구리 블로그 | 에바
원문 http://blog.naver.com/eva__1/90036249338CCL

베타 해본 인간들에겐 별 의미는 없군염.
좌측 누님들에게나 눈이 가지.