2015년 7월 15일 수요일

에빙하우스의 망각곡선


에빙하우스의 망각곡선에 의하면, 인간은 학습한 이후 10분 부터 약 50퍼센트 가량의 기억을 잃는다.  이 망각을 극복하기 위해서는 반복이 필요하다고하며, 많은 학습법 관련 강의나 다양한 매체에서 언급한다. 이에 따르면10분 후 복습, 1일 후 복습, 일주일 후 복습, 한달 후 복습  이렇게 4번의 복습을 하는 것이 암기하기 위한 방법이라고 생각된다. 문제는 이것을 언제 복습해야하는지 복습을 했는지를 기록하는 것인데, 매일 새로운 것을 공부하고 모든 것에 대해 복습여부 기록하기가 힘드므로, 노트정리를 했다면, 노트정리 위에 날짜와 네개의 체크리스트 (ㅁㅁㅁㅁ) 를 만들어 순서대로 10분, 하루, 일주일, 한달 로 체크한다면, 복습을 했는지 체크할 수 있을 것이라고 방법을 생각했다. 책으로 하는 경우 일정 량을 지정하여, 그 시작부분에 같은 방식으로 할 수 있을 것이라고 생각된다.  방법은 생각 했으니, 이제 실천의 문제 뿐일 것이다.

아마추어 수학자가 읽어야 할 책



페이스북은 접은지 꽤 되었는데 구글링 하던 중에 생활코딩의 페북 페이지를 보아서 올린다.  이분의 말씀대로 수학에 흥미를 먼저 붙여야 수학을 자연스럽게 할 수 있을 것이라고 생각한다.

2015년 1월 6일 화요일

[C언어] 함수의 네가지 기본형태에 대한 이해


 Add(), ShowAddResult(), ReadNum(), HowToUseThisProg()
각각 반환과 인자전달의 유무가 다른 네개 형태의 사용법에 대한 코딩이다.
이렇게 작성하면 반환 값? 인자전달? 이라는 의문이 들 수도 있는데,

 인자란 함수 사용시에 사용하는 값, 반환 값은 일반적으로 함수내의 결과 값을 의미한다고 할 수 있다. 
 다른 말로하면, Add함수에서 int(정수) 형태의 num1과 num2 의 값을 받아들여 그것으로 함수가 갖는 계산을 한다고 할 수 있다. 물론 함수마다 어떤 계산일지는 다르겠지만,
 Add 에 한해서는 num1+num2의 계산이다. return num1+num2; 라고 되어있는데, 더하기와 동시에 그 값을 반환; 즉, Result =Add(int num1,int num2); 라고할 때 Result 값은 num1, num2 의 합이 되는 것이다. 더 쉽게 Result= Add(3,4); 라고 하면 Result 값에 3과 4의 합; 7을 Result에 대입하는 것이다.

 반환 값이 없는 경우에는 대표적인 경우가 ShowAddResult()처럼 함수내의 printf()함수가 있는 경우이다. printf()자체가 모니터로 반환한다는 의미로 볼 수 있다. (*깊이 들어가면 printf()함수는 글자열의 길이를 반환값으로 갖는 함수이다. 그 말은 즉, ShowAddResult()를 반환이 가능한 함수로 만들고 return printf(); 할 경우 문자열의 길이 값을 반환 하게도 만들 수 있다는 의미이다.) 괄호안의 말은 깊이 이해하지 않아도 되며, 이 문제를 쓴 저자는 함수를 간단히 설명하기 위해 사용한 것이므로, 인자만 받아서 반환하지 않는 함수로 사용할 수 있구나... 하고 이해하면 된다.

 세번 째의 ReadNum() 함수를 보면, 반환 값만 있다. ReadNum(); 이라고 선언한 것이 scanf("%d",&num); 을 간단히 하기위한 장치라고 할 수 있다. 물론 ReadNum()으로만 선언만 하면 결과 값을 컴퓨터에서만 가질 뿐 이걸 이용하기 위해서는 그림과 같이 num1=ReadNum(); 식으로 사용하면 ReadNum() scanf로 입력받은 값을 num1에 저장한다.

 마지막으로, HowToUseThisProg() 함수는 인자(입력)도 반환(출력)도 없다. 무엇인가 기본적으로 모니터상으로 보여주고 싶은 문구가 있을경우 printf("블라블라블라 \n"); 의 형태로 사용할 수도 있지만, HowToUseThisProg(); 선언만으로 같은 결과를 도출할 수 있다니 얼마나 간편하겠는가. (문자의 길이부터) 물론 함수선언이 차지하는 공간이 있긴 할테지..

 예제를 거의 가져온데다가 내 생각을 덧붙인 것 뿐이지만, C언어에서는 함수가 시작이고 끝이고 심지어 int main() 메인 함수또한 함수인 모든 함수 형태이므로 함수는 정말정말정말 중요해서, 블로그 글에 게시한다. 항상 4가지가 있다는 것을 기억하자.
 1. 인자와 반환 값이 있는경우        example)    Add()
 2. 인자는 있고 반환값이 없는경우                   ShowAddResult()
 3. 인자는 없고 반환값이 있는경우                   ReadNum()
 4. 인자도 반환값도 없는경우                          HowToUseThisProg()

References  <열혈C프로그래밍> -윤성우 저 오렌지미디어  214page SmartAddFunc.c




[C언어] if ~else if 문의 switch case 문 변화

문제는 
if(n>=0 && n<10) printf("0이상 10미만\n");
else if(n>=10 && n<20) printf("10이상 20미만\n");
else if(n>=20 && n<30) printf("20이상 30미만\n");
else printf("30이상\n");

의 형태의 if...else if 문을 억지로 switch case문으로 바꿔보라는 이야기 였다.
case 문의 특성상 범위조절이 아닌 값을 의미하므로 나의 경우는 위의 그림과 같이 일일히 자연수 case 를 전부 넣었지만 솔루션은 이 방법이 아니였다. 
 물론 나의 코드 작성 방법에도 문제가 있는데, 입력받은 값이 (물론 정수로 선언하긴 하였지만) float형태(소수형태) 일 경우 가 성립하지 않을 수 있다는 것이다.

 솔루션에서는 switch(n/10)으로 10으로 나누어 문제를 해결했다.
10으로 나눌경우 정수형 선언이기에 나머지가 떨어져 나가므로, 
복잡하게 안하고, 주석처럼 case 0: case 1: case 2: default: 만으로 해결 할 수 있게 된다.

참조한 책은 200p 문제 08-3 윤성우 저자의 <열혈 C프로그래밍> 오렌지미디어. 이다.
정말 C프로그래밍 책에서 추천할 만 하며, 생각해볼 수 있게 잘쓰여진 좋은 책이다. 2학년때 사서 현재까지 붙잡고 있지만, 열심히 하자는 마음가짐에 C기초를 단단히 잡고 싶어 다시 시작 하였다. 
 굉장히 빠른 스피드로 진행해 나가다가, 이문제에서 막혀서 블로그에 글을 올린다. 나중에도 기억하고 싶어서.


2014년 12월 29일 월요일

C언어_How to Pop Up 'Hello World' as C language on Macbook with Xcode. (맥북에서 C언어로 'Hello World' 띄우기)

*If you want to learn programming language which is C language, You have to install compiler on Macbook. (My development environment is macbook air 2009 mid.)
The method which is easy is what you install 'Xcode'. 
1. You can download Xcode on 'App store'.
(앱스토어에서 Xcode를 다운로드 합니다.)

2. run Xcode. (Xcode를 실행합니다.)








This is icon of Xcode.(이것이 Xcode 아이콘 입니다.)

3. (Click) Create a new Xcode project (를 클릭합니다.)


















4. OS X - Application - Command Line Tool -Next (순서대로 클릭)













5. Decide project name and organization name. You can use defaults except project name. Language have to C
(프로젝트 이름을 정한다. Language는 C 여야 하며, 나머지는 default 값을 해도 된다.)












6. Decide location of your project, then click Create.
(프로젝트가 위치할 폴더를 정하고 Create 버튼을 누른다.)















7. There is example code. Red box is running button which runs compiler. 
(이렇게 예제 프로그램이 작성되어 있으며, 빨간상자를 누르면 컴파일 및 실행을 할 수 있습니다.)



8. There is the other method 'Product - Run' to run. 
(Product-Run, 혹은 Command+R은 컴파일 및 실행하는 또다른 방법입니다.)


9. If a result is 'Hello World!', There is correct. 
(아래에 Hello World!라는 결과가 나오면 옳게 된 것입니다.)





2014년 12월 23일 화요일

Linux Mint Install Process on Macbook Air 2009 mid (리눅스 민트 설치과정 맥북 에어 2009 mid)

If you had macbook and want to install Linux Mint which doesn't care Mate or Cinnamon,  It maybe be solution.
I want to Dual OS Environment which are Mac OS X and Linux Mint
  1. Make Linux mint USB boot driver to see under the site http://purpleoksu.blogspot.kr/2014/12/how-to-install-linux-mint-on-macbook.html
  2. Have to Leave 40Gb for Linux mint on 'Disk Utility' Let me be clear decrease mac partition.
  3. Reboot and push the 'Alt+Option' button, then load Linux Mint USB.
  4. Make partition like this http://jsfl.tistory.com/9
    (*It maybe my especially case. Linux mint USB of my macbook doesn't recognize present of Mac OS X, so I chose 'other else' on processing of Linux installation)


    It has 3 areas which are 'Swap area', '/ area' '/home area' / is like C drive of Windows, /home is like D drive of Windows.
     If your Mac recognize present of Mac OS X and can choose Dual OS, your selection have to Dual OS. It case is easy way.
  5.  Install Linux mint
  6.  If you have broadcom LAN  It has problem which is kernel source.
    have to install bcmwl-kernel-source (Linux STA driver)
    It is in Linux USB Driver.  

    7. execute 'Driver Manager'
8. choose bcmwl-kernel-source (*your Linux USB is inserted on your PC)

2014년 12월 17일 수요일

How To make Linux Mint Mate USB Driver on Macbook Air 2009 mid (맥북에어 2009 mid에서 민트 마테 USB 만들기 )


References
http://www.everydaylinuxuser.com/2014/07/how-to-install-linux-mint-alongside-osx.html


1. Download  Linux Mint_Mate visit http://www.linuxmint.com/download.php
   (If you want to install the other version, you can. ex) cinnamon, KDE, Xfce)
2.  Open terminal and write under the sentence

hdiutil convert -format UDRW -o /Users/OKSU/Desktop/linuxmint.img /Users/OKSU/Desktop/linuxmint-17.1-mate-64bit.iso
Input (front directory is  img file name, back directory is Linux mint image location.
*'/Users/OKSU'  equal '~')
3.changed image name will be '.img.dmg '. Delete  '.dmg'
4. Terminal command diskutil list   , It finds   /dev/????  of USB   ???
Example)
Oksuui-MacBook-Air:~ OKSU$ diskutil list
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *121.3 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                  Apple_HFS Mac                     116.4 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
/dev/disk1  <- * There is USB in my case.
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *7.7 GB     disk1
   1:                        EFI EFI                     209.7 MB   disk1s1

   2:                  Apple_HFS Mint                    7.4 GB     disk1s2
5.  USB unmount in Terminal  (Sleep)
 diskutil unmountDisk /dev/disk[number]
6. Upload Image Files in Terminal 
sudo dd if=~/desktop/ubuntu.img of=/dev/disk[number] bs=1m 
need much times (1~10 mins)  ,then pop up message, click 'unmount'
7. Linux mint can't control apple partition, so you have to leave empty spaces to install Linux mint. I recommend 40GB
8. reboot and push the ALT+OPTION button, then load USB