달력

4

« 2024/4 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

'삽질예방'에 해당되는 글 46

  1. 2009.07.01 inline함수, 무명함수, 함수포인터
  2. 2009.07.01 matlab 구조체
  3. 2009.07.01 셀배열
  4. 2009.04.24 set_union
  5. 2009.01.20 워드 2007 팁
  6. 2008.03.22 통계패키지, R, 기초사용법
  7. 2008.03.20 useful C defines
  8. 2008.03.16 소팅하기.
  9. 2008.03.13 CGI VS Web App. Svr.
  10. 2008.03.12 VIM + ctags, C++용 자동완성

inline 함수( 단점: 수식 안에 파라미터가 아닌 변수 값을 넣을 수 없다)
그리고 feval의 사용법.

>> il_humps = inline('1./((x-.3).^2+.01) + 1./((x-.9).^ + .04) - 6','x');
>> il_humps
il_humps =
     Inline function:
     il_humps(x) = 1./((x-.3).^2+.01) + 1./((x-.9).^ + .04) - 6

>> il_humps(1)
ans =
   -2.9035

>> y = feval('sin', pi*(0:4)/4)
y =
         0    0.7071    1.0000    0.7071    0.0000

다음은 무명함수와 함수포인터를 사용하는 예제이다.

function tmpfunc()
    clc;
   
    a = 3;
 
    % impossible
    % myfunci = inline('sin(x)+a', 'x');
   
    % 무명함수를 정의하고 그것의 포인터를 넘긴다.
    myfunc = @(x) sin(x)+a;
   
    myfunc3 = @(x, y) x+y; % 인자가 두개인 경우의 예제
    myfunc3(3, 4)
   
    myeval_pointer = @myeval;  %% function pointer.
   
    a=0; % this won't change the function of 'myfunc'
   
    % 아래 함수 세개의 결과는 같다
    fprintf('myeval=%f\n', myeval(myfunc, 3));
    fprintf('feval=%f\n', feval(myfunc, 3));
    fprintf('myeval_pointer=%f\n', myeval_pointer(myfunc, 3));
   
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % 함수 포인터를 이용하여 이것을 배열에 넣고 사용하기! 매우 편리하겠지???

    myfunc2 = @(x) sin(x)+a; % now a is 0
    funary = {myfunc, myfunc2};
    funary{1}(3)
    funary{2}(3)
end

function ret = myeval(func, x)
    ret = func(x);
end


:
Posted by Kwang-sung Jun
2009. 7. 1. 19:17

matlab 구조체 삽질예방/Matlab2009. 7. 1. 19:17

구조체는 다음과 같이 쓴다. 원소를 더 추가하고 싶으면
circle(2).어쩌구.. 라고 쓰면 새로이 멤버가 추가된다.
>> circle.radius = 3.4;
>> circle.color='green';
>> circle.linestyle=':';
>> circle.center = [2.3 -1.2];
>> circle

circle =

1x1 struct array with fields:
    radius
    center
    color
    linestyle


다음과 같이 일괄적으로 구조체를 생성하는 방법도 있다.
>> values1 = {2.5 'sqrt(2)' 25.4};
>> values2 = {[0 1] [2.3 -1.2] [-1 0]};
>> values3 = {'--' ':' '-.'};
>> values4 = {'red', 'green', 'blue'};
>> values5 = {'yes', 'no', 'yes'};

circle = struct('radius', values1, 'center', values2, ...
'linestyle', values3, 'color', values4, 'filled',values5);


현재 circle구조체는 멤버가 셋이며 이 경우 다음과 같은 표현을 쓸 수 있다. 스트링을 이용하여 구조체의 멤버 접근을 일반적으로 할 수 있다는 것은 언젠가 편하게 쓰일 것 같다.

>> fldstr = 'color';
>> circle.(fldstr)

ans =
red

ans =
green

ans =
blue

fieldnames(circle) % 모든 필드 이름의 리스트를 리턴한다.


:
Posted by Kwang-sung Jun
2009. 7. 1. 19:12

셀배열 삽질예방/Matlab2009. 7. 1. 19:12

문자열은 배열 그대로 쓰면 공백들이 들어가서 불편하고, 다음과 같이 셀 배열을 이용한다.

>> strary(1) = {'abc'};
>> strary(2) = {'안녕친구들'};
>> strary
strary =
    'abc'    '안녕친구들'

>> strary(1)
ans =
    'abc'

>> strary{1}
ans =
abc

다음은 2행 3열의 셀 배열을 생성해 준다.

c = cell(2,3);


대부분 값의 대입과 값의 이용시에는
c{1,1} 와 같이 접근하면 된다.
그냥 c(1,1)이라고 하면 데이터 타입이 뭔지만 알려주는 역할을 하게 되고 값은 알려주지 않는다.

p.s.
"경우에 민감한(case-sensitive) 필드를 ...라 한다."....... 번역..... 진짜 한심한 수준의 번역이다..
:
Posted by Kwang-sung Jun
2009. 4. 24. 16:37

set_union 삽질예방/STL 교과서2009. 4. 24. 16:37

STL에 set을 가만 보면
우리가 원하는 연산이 없습니다.

합집합, 교집합, 차집합 연산이 바로 그것이죠
그런데 사실 그러한 연산들은 STL내에 알고리즘 형태로 어떤 컨테이너(예.벡터)에서도
사용할 수 있도록 제네릭하게 제공되고 있습니다.

set<string> a;
set<string> b;
set<string> c;

a.insert("abc");
a.insert("def");
b.insert("abc");
b.insert("123");

set_union(s.begin(), s.end(), b.begin(), b.end(), inserter(c, c.begin()));

for(set<string>::iterator it = c.begin(); it != c.end(); it++)
{
   cout << *it << endl;
}


결과는

123
abc
def


입니다.

set_union검색하시면, 차집합과 교집합을 어떻게 하는지도 나와있습니다.
일반화된 함수라 사용법이 조금 까다롭기에 혹시 도움이 될까 올립니다.

:
Posted by Kwang-sung Jun
2009. 1. 20. 02:11

워드 2007 팁 삽질예방/워드 20072009. 1. 20. 02:11

1. 자주 사용하는 내용 삽입하기(상용구)

자주쓰는 것을 블록지정한 후에

삽입 - 빠른문서요소 - ... 갤러리에 저장(Alt + F3)

사용할때는 이름 적고 F3으로 상용구 사용.


2. 가로줄 삽입

 - 페이지 레이아웃 - 페이지 테두리 - 페이지 테투리 탭 - 가로줄 삽입

3. 단락에 테두리하기

- 페이지 레이아웃 - 페이지 테두리 - 테투리 탭

4. 영어 문장 줄바꿈할 때 하이픈 자동으로 붙여 줄바꾸기

- 페이지 레이아웃 - 하이픈 넣기

5. 장 단위로 나누기

 - 페이지 레이아웃 - 나누기 - 구역나누기에 있는 것 중 아무거나
=> 각 구역 별로 서로 다른 머릿말을 넣을 수 있다.

6. 텍스트로 표 만들기

 - 탭 등으로 구분자만 정해주면 된다. 삽입 - 표 - 텍스트로 표 만들기
:
Posted by Kwang-sung Jun
R

.R의 스크립트로 실행하기

R CMD BATCH <filename>


table을 만든다.

movie <- read.table("movie.tab")


$을 이용해서 칼럼의 자료들을 벡터로 받아낼 수가 있다.
y <- movie$Rating


범위는 0부터 5까지 1간격으로.
hist(y, seq(0, 5, 1), prob=TRUE)


"SJ"는 왠만큼 무난한 band width를 보장한다.
lines(density(y, bw="SJ"))
plot(density(y, bw=1))

(아직은 위의 그래프를 그렸을 때 x좌표가 의미하는것이 무엇인지 잘 모르겠다.)

평균등을 보여준다.
summary(y)

:
Posted by Kwang-sung Jun
2008. 3. 20. 14:12

useful C defines 삽질예방/유용한 C defines2008. 3. 20. 14:12

__STRING(expr) expr에 해당하는 모든내용을 문자열로 치환해준다.
__FILE__, 파일명(const char*)
__LINE__, 라인넘버 (int)

#include <stdio.h>
#define DELTAKAM
...
printf("%s", __STRING(DELTAKAM));
printf("%s,%d", __FILE__, __LINE__);
...



출력

DELTAKAM
1.cpp,13



 

:
Posted by Kwang-sung Jun
2008. 3. 16. 22:11

소팅하기. 삽질예방/STL 교과서2008. 3. 16. 22:11

stl에서 소팅하기...



예를 들어 다음과 같은 벡터가 있다고 하자.

struct MovieRating {
    short movieId;
   char rating;
   unsigned int time;
};

vector<MovieRating> UserData;

이번 예에서는 시간적인 순서에 따라 정렬하고 싶은게다. 시간은 그냥
time()이 리턴하는 시간, 즉 seconds passed since epoch(대충 0년 이후 지금까지 몇초가 흘렀는지)가 기록되어있다.


bool CmpInc(MovieRating a, MovieRating b); // just adeclaration...
.
.
sort(UserData.begin(), UserData.end(), TimeCmpInc);
.
.

// increasing order, 오름차순, 갈수록 숫자가 커지도록...
bool CmpInc(MovieRating a, MovieRating b)
{
    return a.time < b.time;
}


음... 별다른설명 필요한가..



:
Posted by Kwang-sung Jun
2008. 3. 13. 19:04

CGI VS Web App. Svr. 삽질예방/웹 프로그래밍 개요2008. 3. 13. 19:04

CGI방식은 웹서버가 APP를 직접 호출하는 구조를 갖고 있다.

요청->|                       |  ABC 프로세스
요청->|    웹 서버            |  ABC 프로세스
요청->|                       |  ABC 프로세스
요청->|                       |  ABC 프로세스



이런식으로 웹서버에서 프로세스가 요청마다 하나씩 생겨서 수행하는 방식이다.

비효율적이고, 느리고, 서버에 부하가 크다.

반면

WAS(Web Application Server)방식은 다음과 같이 WAS서버가 여러 대 있을 수 있고,

요청->|                       | -> |            |
요청->|    웹 서버            | -> | WAS서버(*) | -> ABC 프로세스
요청->|                       | -> |            |
요청->|                       | -> |            |

웹 서버는 단순히 접속을 시켜주는 역할만 한다.
필요한 작업은 WAS서버에서 띄워놓은 프로그램에서 처리를 해주고
클라이언트가 실행 요청할 때마다 ABC프로세스내에서 스레드가 하나씩 생성되어
이를 각각 담당해준다.

:
Posted by Kwang-sung Jun
2008. 3. 12. 23:16

VIM + ctags, C++용 자동완성 삽질예방/vim2008. 3. 12. 23:16

http://hangang.tistory.com/tag/ctags

OmniCppComplete을 위한 태그 설정.(우리가 원하는 클래스별 자동완성을 가능하게해준다.)
ctags -R --c++-kinds=+p --fields=+iaS --extra=+q

,t도 유용(왼쪽에 리스트 만들어준다.)
,m도 유용(ma등으로 마킹했을때, 마킹한 부분이 화면에 표시.)

우왕ㅋ굳ㅋ
:
Posted by Kwang-sung Jun