2016년 6월 29일 수요일

“자주 욱하고 있다면 자존감 낮은 것” - [인터뷰]'못 참는 아이 욱하는 부모' 낸 오은영 박사

“자주 욱하고 있다면 자존감 낮은 것”

[인터뷰]'못 참는 아이 욱하는 부모' 낸 오은영 박사

원문: 한국일보 오은영박사 인터뷰

소아·청소년 정신과 전문의 오은영 박사는 아이의 부정적 감정을 인정하고
수긍해주는 것이 욱하지 않는 아이로 키우기 위한 육아의 제1 원칙이라고 말했다.
"공부를 한다는 건 설령 꼴등을 하더라도 열심히 해보는 경험을 해보는 것이다.
최선을 다해서 열심히 해보는 경험은 인생의 기본 자세이자 자산이다."
신상순 선임기자 ssshin@hankookilbo.com


“내가 자주 욱한다면, ‘나는 왜 자존감이 낮을까?’에 대해서 반드시 생각해 봐야 한다. 이 말에 ‘내가 무슨 자존감이 낮아? 내가 얼마나 잘났는데?’라는 생각이 들면서 화가 난다면 자존감이 낮을 가능성이 높다.”
...

아이가 자주 욱한다면 어릴 때부터 아이의 분노, 화, 울음, 신경질 등 부정적 감정을 부모가 수긍을 안 해줬기 때문일 수 있다. 그냥 인정해 줘야 한다. 옳다는 게 아니라 ‘네가 화났다는 걸 알겠어’라고 인정하는 것이다. 공감만으로도 분노는 크게 완화된다.
...

절대로 아이에게 욱하면 안 된다. 아이들을 친절하고 다정하게 대해야 하는 건 만고의 진리다. 문제는 아이에게 반드시 지침을 줘야 한다는 것이다. ‘Firm and Warm’, 단호하지만 다정한 태도로 지침을 주는 것이다.

‘우리 딸, 약 먹을까요?’ 틀렸다. 그건 선택의 문제도 아니고, 아이에게 결정권이 있는 문제도 아니다. ‘약 먹어라’고 말해야 한다. 지침이란 내가 좋아하든 싫어하든, 동의하든 안 하든, 컨디션이 좋든 나쁘든 상관없이 그냥 따르는 것이다. 이걸 헷갈리는 부모들이 너무 많다.”











2016년 6월 24일 금요일

바다에서 이런 예쁜녀석을 보게되었다면? - 위티피드

바다에 갔는데.. 
아래와 같은 예쁘게 생긴 녀석을 보게된다면?

이렇게 생긴넘. 우와~ 이쁘당~ㅋㅋ
아무튼 그래서 그넘을 만졌다면?
찔러봤다면?
문질러봤다면?

사진만으로도 엄청 쓰려보이는;; ㅠㅠ

그렇다. 독이 있단다. 저렇게 된단다. ㅠㅠ+
엄청 아파보이지? 

이넘 이름은 ‘작은부레관해파리(Portuguese man of war)’. 
생긴 것이 마치 포르투갈의 18세기 전함 같다고 해서 붙여진 이름이란다.

곧 휴가철. 바다로들 많이 가겠지?
조심하자. ㅋㅋㅋㅋ






2016년 6월 17일 금요일

Python이 진짜 강점을 나타낼 수 있는 분야는? (코딩도장)

Python이 진짜 강점을 나타낼 수 있는 분야는?

출처: 코딩도장

c/c++이 주 사용 언어인 나는 최근 제 2의 언어로써 Python을 채택하려고 하는데 그 목적은 프로그램의 개발속도를 높이자는 것이다.

c/c++은 참으로 강력한 언어이다. 이 언어로는 못하는 일이 없으며 거의 대부분의 제품은 이 언어로 개발 되는 듯하다.
그러나 이 언어는 프로그램 개발이 그리 용의하지 않다. 많은 경험이 필요하다.

좀 놀면서 편하게 coding할 수있는 언어가 필요하다.
그래서 python을 학습하려고 한다.

그런데 python을 학습하기 앞서 다음과 같은 의문이 생겼다.
python은 매번 보기 안좋은 시꺼먼 consol 해석기를 켜놓고 실행시켜야 하는가 ?
이 언어로 c/c++ 로 할수있는 일을 어느 정도로 할 수 있는가 ? (성능은 고려하지 말고)
python이 진정으로 매력을 나타낼 수 있는 일은 어떤 일인가. 내가 알건데 python은 문자열 처리를 위한 간단한 업무에서 좋다고 한다.
python으로 제품을 만들어 판매할 수있는가. 있다면 왜 python 으로 만든 제품이 흔하지 않은가. (나는 개인적으로 아직 한번도 보지 못했다.)
#python #c++ #c

2012/02/14 19:17
작성자: 박철



4개의 풀이가 있습니다.

1>

python은 매번 보기 안좋은 시꺼먼 consol 해석기를 켜놓고 실행시켜야 하는가 ?
말씀하신 파이썬 인터프리터는 간단한 테스트시에만 사용합니다. 보통은 파이썬 스크립트 파일을 작성한 후 파일을 실행시킵니다.

이 언어로 c/c++ 로 할수있는 일을 어느 정도로 할 수 있는가 ? (성능은 고려하지 말고)
제가 c/c++ 에 대해서 잘 알지 못하기 때문에 정확히 말씀드리기 어렵지만 성능을 고려하지 않는다는 단서가 있다면 대부분 할 수 있지 않을까? 라는 생각이 드네요.
또한 파이썬과 c/c++은 함께 사용할 수 있습니다. 파이썬을 글루(Glue)언어라고도 부르는 이유가 여기 있습니다. c, c++ 로 만든 프로그램을 파이썬에서 약간의 노력만으로 쉽게 사용할 수 있습니다. 보통 성능이 요구되는 쪽은 c, 그 외의 것은 파이썬.. 뭐 이런 조합이 많이 사용되는 것 같습니다.
간단한 예제 - http://docs.python.org/extending/extending.html#a-simple-example

python이 진정으로 매력을 나타낼 수 있는 일은 어떤 일인가. 
내가 알건데 python은 문자열 처리를 위한 간단한 업무에서 좋다고 한다.
파이썬을 활용할 수 있는 곳이 많기 때문에 무엇에 가장 좋다고 꼬집어 말하기 힘들군요.. 저 같은 경우에는 산출물 작성시에도 파이썬을 사용하고 이런저런 간단한 유틸리티성 프로그램을 만들때에도 파이썬을 많이 활용하는 편입니다.
하지만 파이썬의 대세는 뭐니뭐니 해도 웹 쪽이 아닐까 싶네요. 파이썬으로 만들어진 웹 프레임워크를 이용하여 개발되는 온라인 서비스들이 무척 많습니다.

python으로 제품을 만들어 판매할 수있는가. 있다면 왜 python 으로 만든 제품이 흔하지 않은가. (나는 개인적으로 아직 한번도 보지 못했다.)
위키피디아에 파이썬 관련한 소프트웨어가 잘 정리되어 있습니다.
http://en.wikipedia.org/wiki/List_of_Python_software
Dropbox, Mercurial등 눈에 띄는 것이 몇개 보이네요..
그리고 구글이 Gmail, Google-Groups, Google Maps등에서 backend 웹 어플리케이션으로 파이썬을 사용한다고 하네요.
그리고 결정적으로 지금 보고 계시는 코드잡이 바로 파이썬으로 만들어진 django기반에서 돌고 있습니다. ^^
2012/02/15 10:09
작성자: 길가의풀

2>

저희 온라인 게임은 Python으로 개발되었습니다. 엔진 Core는 C++로 작성되었지만, Python 바인딩되어있어서 AI나 클라이언트 로직이 다 Python으로 작성되어 있습니다. 그래서 무척 빠르고 쉬운 개발을 할 수 있습니다.
http://www.panda3d.org/

2012/02/16 02:37
작성자: gyedo
이걸보니 파이썬의 대세는 웹이 아니라 게임이군요 ^^ - 길가의풀, 2012/02/16 08:54
사실 대세는 아니고, 이런 것도 할 수 있다죠 ^^; - gyedo, 2012/02/16 09:06
와~~ 좋은 정보 감사드립니다. ^^ - 오랑캐꽃, 2012/02/16 15:05
앗 판다3d 네요. 예전에 학원다닐 때 빠른 프로토타입 개발이란 주제로 외부 강연 오신분이 소개해 주셨었던 기억이 나네요. - 책읽는아이, 2012/02/17 18:59


3>

(답변과 관계 없는 개인적인 생각입니다만, 서로 다른 질문은 하나씩 나눠서 따로 올리는 게 답변이나 토론에 더 이로울 것 같습니다.)

Ⅰ) 파이썬 기본 해석기(interactive interpreter)는 그다지 쓸만한 건 아닙니다(없는 것보다는 낫습니다). 보통은 IPython 같이 좀 더 잘 정리된 셸을 쓰는 게 더 좋습니다. IPython 같은 경우 SAGE라고 하는, 파이썬을 기반으로 매쓰매티카 같은 컴퓨터 대수학 시스템(CAS)을 구현하는 곳에서 만들었는데 이 때문에 별의별 기능이 다 들어 있습니다. 제가 이런 류의 셸을 많이 쓰는 건 아니라서 (유닉스 셸에 익숙해서 readline만 있으면 충분합니다) 실제로 뭘 쓰는 게 좋은지는 좀 찾아 보셔야 하겠습니다.

Ⅱ) 속도를 고려하지 않는다면 뭐든지 할 수 있고, 속도가 필요하다면 PyPy를 쓰시면 됩니다. 기본적으로 C/C++로 코드를 투자하는 만큼 성능 향상이 이루어지지 않는다면 파이썬을 쓰는 게 유리합니다. (I/O 같이 언어 구현 성능에 별 영향을 안 주는 곳에서는 이미 C/C++가 많이 힘을 잃었고요, PyPy 같은 경우 C/C++랑 비교해서 많아야 3~5배 느린 경우가 태반이니까요.)
파이썬으로 프로토타이핑을 한 뒤에 필요한 부분만 C/C++로 대체하는 방법도 있습니다. 특히 파이썬 2.5 이후로 ctypes 외부 함수 라이브러리(FFI)가 기본으로 들어 가면서 옛날에 C 모듈을 만들어서 외부 라이브러리랑 통신해야 했던 걸 순수 파이썬만으로도 대부분 할 수 있게 되었습니다. 이를테면 그래픽이나 사운드, 멀티미디어 등의 기능을 거의 모두 순수 파이썬으로 구현한 pyglet 같은 것들이 있지요. (처음에 OpenGL 바인딩을 파이썬만으로 짠 걸 보고 경악했던 기억이 있습니다...) 네트워크 쪽에서는 Twisted가 독보적인 위치를 차지하고 있고, 웬만한 프로토콜은 순수 파이썬 구현이 모두 존재합니다(예를 들어서 SSH 클라이언트 라이브러리인 paramiko가 순수 파이썬 구현입니다).
Ⅲ) "파이썬으로 할 수 있다"가 아니라 "파이썬으로 하는 게 유리하다"는 쪽을 생각한다면, 대부분의 웹 프로그래밍과, 프로토타이핑이 중요한 대부분의 업무에서 유리한 것 같습니다. 저 같은 경우 C/C++ 같은 언어로 해야 할 일을 파이썬으로 먼저 샘플로 만들어 보고 나중에 C/C++로 바꾸는 경우도 많고, 심지어 파이썬으로 만든 게 충분히 좋아서 그대로 가는 경우도 많았습니다. 파이썬 말고 루비 같은 언어도 이런 장점을 대부분 지니고 있지만, 파이썬의 경우 라이브러리의 품질이 분야에 상관 없이 전반적으로 충분히 좋아서 임의의 용도로 쓰기에 더 나은 듯 합니다. 다만 파이썬을 외부 배포를 위해 패키징할 경우 (특히 윈도의 경우) 몇 가지 주의해야 할 점이 있다는 걸 아셨으면 합니다.

Ⅳ) 오픈 소스 소프트웨어에서는 매우 흔한 일이고요, 오픈 소스 소프트웨어가 아닌 판매용 독점(propietary) 소프트웨어를 기준으로 생각해도 여러 사례가 있습니다. 지금은 코렐이 인수한 Paint Shop Pro가 파이썬을 스크립팅 언어로 쓰고(Maya도 비슷한 걸로 기억합니다), 비트토런트의 옛 클라이언트가 파이썬으로 작성되어 있었습니다. (앞에서 말한 프로토타이핑의 성공적인 사례라 할 수 있습니다.) 게임 업계에서도 파이썬을 많이 쓰는데, 대부분 스크립팅 또는 약간 더 드물게 서버 소프트웨어로 씁니다만 이브 온라인 같이 클라이언트에까지 파이썬을 쓰는 경우도 있습니다. (스택리스 파이썬이라고 하는 특수 구현을 쓰긴 합니다.)

2012/02/18 21:33

작성자: 아라크넹
아, 답변에 까먹었습니다만 문자열 처리는 파이썬도 많이 쓰지만 펄을 쓰는 경우도 많습니다. 자연어 처리(NLP) 분야에서는 현재 파이썬과 펄의 사용이 대략 반반 정도 되는 것 같습니다. - 아라크넹, 2012/02/18 21:34

4>

조금 여담이지만, 파이썬을 이용할 경우 하둡등 분산 처리 시스템과 연동도 쉬울뿐만 아니라, 파이썬 자체가 강력한 수학, 통계 라이브러리를 가지고 있기 때문에, 빅데이터 분석 과제에 자주 사용하는 편입니다... ㅎ

2013/09/23 16:37

작성자: Lee OJoun





파이썬에서 C모듈을 이용하기

"파이썬에서 C모듈을 이용하기"

*출처 : http://joyholic.kr/122


파이썬은 그 자체가 C로 작성되었다.

이런 맥락에서 생각해보면 파이썬에서 C모듈을 사용할수도 있을뿐 아니라 C에서 파이썬 모듈을 사용할수도 있을것 같다. -> 이말은 사실이다.

본론으로 들어가기전에 파일의 확장자에 대해 살포시 살펴보기로 하자.

파일의 확장자는 그 파일의 속성과 종류를 손쉽게 알려주는 역할을 한다. (이는 어떻게 보면 있어도 되고 없어도 되는 존재이며, 관습적으로 사용하게 된다.)

우리가 흔히 알고 있는 확장자로는 'exe', 'txt', 'jpg', 'mp3' 등 수없이 많다.
  • lib : 정적 라이브러리 파일, 일반적으로 C, C++ 라이브러리다.
  • dll : 동적 라이브러리 파일
  • pyd : 파이썬이 사용하는 C 라이브러리

여기서는 C로 작성된 코드를 이용하여 pyd를 만들고 이 pyd를 이용해서 C 모듈을 이용하는 방법에 대해서 살펴본다.

1. 파이썬 코드에서 import를 하면 일어나는 일


파이썬에서 특정한 모듈을 사용하기 위해 import문을 이용하여 모듈을 지정한다. 파이썬이 사용하고 로드하는 모듈은 아래의 순서로 찾고 그와 일치하면 모듈을 초기화한 후에 지역 이름공간에 이름을 정의한다.
  • 기본적으로 탑재되어 있는 모듈들 : ex)socket, time 등
  • C로 만들어진 dll 파일(윈도에서는 pyd 파일)
  • 자체 제작한 파이썬 모듈

그러면 파이썬에서 import는 어떤 매커니즘으로 동작하는가? 이것을 함 알아보자.
import mylib

위의 코드를 수행할때 파이썬은 mylib 모듈을 로드하기 위해 다음의 절차에 따라 검색한다.
  1. sys.modules 에 등록되어 있는지 확인한다. 등록되어 있으면 로드한다.
  2. (1)에서 존재하지 않으면 sys.path의 디렉토리를 검색하면서 mylib 모듈을 찾는다.
다시 한번 요약하면, 외부 모듈을 import 하게되면 파이썬은
  1. 모듈이름과 일치하는 모듈을 찾는다.
  2. 모듈을 초기화 한다.
  3. 모듈이름을 지역이름공간에 할당한다.

2. 파이썬에서 이용할 C 모듈 만들기

여기서 우리는 우리가 만든 C 모듈을 파이썬에서 사용하고 싶다. 즉,
import (우리가 만든 C 모듈) 하고 싶다 이 말이다.

우리가 C로 만든 모듈을 파이썬에서 이용하고자 할때 역시 위에서 서술한 import 절차에 따라 모듈을 찾고 로드하게 된다.

우리가 유의해야 할 곳은 바로 모듈을 초기화 하는 부분이다. 나머지 절차는 파이썬이 다 알아서 해준다.

파이썬에서 사용하는 C모듈은 리눅스에서는 .so 확장자 형태로, 윈도에서는 .pyd 확장자 형태로 빌드되어 파이썬 패키지 디렉토리의 Lib/site-package 디렉로리로 복사되므로서 사용가능하게 된다.
  1. C로 소스코드를 작성한다.
  2. 작성한 C 소스코드를 컴파일하여 파이썬이 이용가능한 .so (리눅스에서) 및 .pyd(윈도용) 파일로 빌드한다.
  3. .so 및 .pyd 파일을 파이썬 디렉토리의 Lib/site-package로 복사한다.

그러면 하나의 실제 C모듈을 만들어 적용하므로서 설명해보자.

파이썬이 C 모듈을 import 하게되면 초기화를 위해 "init+모듈이름" 으로 된 함수를 호출한다. 모듈이름이 mylib 이면 initmylib()을 호출한다는 말이다.

그러므로 우리의 C 소스에는 위에서 설명한 초기화를 위한 함수 init+모듈이름 으로 된 함수가 존재해야만 한다.

예제로 만들 모듈은 입력한 문자열을 pylog.txt 라는 파일에 기록하는 모듈이다. 주석을 달았으므로 주석을 참조하도록 한다.

// mylib.c
#include "Python.h"
#include <stdio.h>
static PyObject *ErrorObject;
// 실제 동작하는 함수
static PyObject* write_log(PyObject *self, PyObject *args) // 인자는 이와같이 고정된다.
{
  char* msg;
  FILE *fp;
  if(!PyArg_ParseTuple(args, "s", &msg))
    return NULL;
  fp = fopen("c:\\pylog.txt", "wt+");
  fprintf(fp, msg);
  fclose(fp);
  return Py_BuildValue("i", 0);
}

/* methods 구조체 배열에 지정되는 정보는 {"실제사용할 메쏘드명", 메쏘드명에 대응하는 실제 동작하는 함수명, 인자 종류} */
static struct PyMethodDef methods[] =
{
  {"wlog", write_log, METH_VARARGS},
  {NULL, NULL}
};

//
void initmylib()
{
  PyObject* m;
  // Py_InitModule("모듈명", 이모듈에 적용된 메쏘드들을 담을 구조체배열 포인터)
  m = Py_InitModule("mylib", methods);
  ErrorObject = Py_BuildValue("s", "error");
}

위의 C 코드를 컴파일하기 위해 setup.py 함수를 작성해야 한다.

# setup.py
from distutils.core import setup, Extension
setup(name = "mylib",
  version = "1.0",
  description = "print log",
  author = "Samsjang",
  author_email = "samsjang@cdnetworks.co.kr",
  url = "http://www.cdnetworks.co.kr",
  ext_modules = [Extension("mylib", ["mylib.c"])]
)

위의 소스에서 ext_modules에는 적용할 모듈명과 그 모듈의 구현코드를 기록한다. 나머지 부분의 기타 정보를 기록해둔 메타정보에 불과하다.

리눅스 및 윈도에서 아래와 같이 빌드하고 설치한다.
python setup.py install

위의 명령은 리눅스에서는 gcc를 호출하며, 윈도에서는 visual C++ 컴파일러가 구동되면서 빌드한 후 파이썬 디렉토리의 Lib/site-packages 디렉토리에 mylib.so 또는 mylib.pyd 파일이 생성된다.

자 그럼 C모듈인 mylib 모듈을 실제 파이썬 코드에서 적용해보자.

# test.py
import mylib
if __name__ == '__main__':
mylib.wlog('I love U')

위의 결과는 C:\\pylog.txt 파일에 "I love U" 라는 글을 남긴다.



2016년 6월 14일 화요일

朴대통령 "구조조정·노동개혁, 회피하면 국가 경제 파탄"....??

박근혜씨, 뭔가 말투가 달라진 듯?


朴대통령 "구조조정·노동개혁, 회피하면 국가 경제 파탄"

원문: http://media.daum.net/politics/president/newsview?newsid=20160613104345004 (news1)

"기업·채권단, '사즉생' 각오로 자구 노력..보완 대책으로 피해 최소화"
"구조조정·규제개혁, 정부 혼자서 할 수 없어..국회 도움 절실히 필요"



응?! 지금.. 대한민국은 구조조정, 노동개혁 안해서 파탄나는건가??

아무튼, 개가짖던 소가울던, 그에 대한 댓글들은 냉담할 뿐.

댓글 짜깁기했냐고? 
직접가서 보시오. 난 그냥 보이는대로 캡춰했을뿐이니. ㅠㅠ 












이런 상황을 알고나 있는걸까..? 
알면서 그런다면, 그게 더 나쁜거 아닌가?






2016년 6월 9일 목요일

정밀도와 재현율 (Precision & Recall) - wikipedia



정밀도와 재현율

위키백과, 우리 모두의 백과사전.
이진 분류 기법(binary classification)을 사용하는 패턴 인식과 정보 검색 분야에서, 정밀도는 검색된 결과들 중 관련 있는 것으로 분류된 결과물의 비율이고, 재현율은 관련 있는 것으로 분류된 항목들 중 실제 검색된 항목들의 비율이다. 따라서 정밀도와 재현율 모두 관련도(Relevance)의 측정 기준 및 지식을 토대로 하고 있다.

정의[편집]

정보 검색 분야에서, 정밀도와 재현율은 검색된 문서(retrieved documents; 웹 검색 엔진에 의해 생성된 문서들) 및 관련 있는 문서(relevant documents; 웹 문서들 중 찾고자 하는 주제와 실제로 관련 있는 것들)에 의해 정의된다.

정밀도[편집]

정보 검색 분야에서 정밀도(precision)는 검색된 문서들 중 관련 있는 문서들의 비율이다.

재현율[편집]

정보 검색 분야에서 재현율(recall)은 관련 있는 문서들 중 실제로 검색된 문서들의 비율이다.

정의[편집]

실제 정답
TrueFalse
실험 결과PositiveTrue PositiveFalse Positive
(Type I error)
NegativeFalse Negative
(Type II error)
True Negative
통계적 분류 분야에서 정밀도(precision)와 재현율(recall)은 다음과 같이 정의된다:[1]
여기서 재현율은 sensitivity로도 불리며, 정밀도는 positive predictive value(PPV)로 불리기도 한다; 통계적 분류 분야에서 사용되는 다른 기준으로 True Negative Rate(Specificity)와 정확도(Accuracy) 등이 있다.[1]