본문 바로가기

전체 글

PART 2 - Object-Oriented Programming (1) Sub Type Polymorphism A가 B의 subtype이면 A가 B보다 더 구체적인 것. (B를 그대로 상속 받고 --> 다음 A가 자체적으로 더 구체화 한게 있다는 의미로 받아드리면 됨) 따라서 B에 대해서 정의된 모든 함수에 대해서 A도 사용해도 된다. (B에 정의된 것은 모두 A에 기본적으로 정의되어 있기 때문이다.) simplification using Argument Members class MyList[A](v:A, nxt:Option[MyList[A]]){ val value:A = v val next:Option[MyList[A]] = nxt } class MyList[A](val value:A, val next:Option[MyList[A]]){ } type T1 = {val a:.. 더보기
Structure Type 슬라이드에 있는 이 예시 코드가 조금 헷갈린다. 함수 g는 Foo 에 대해서 받겠다고 했는데 왜 g(foo)를 하는지??? /* 결론 : Foo type의 정의 요소만 갖추면 (그 이상 요소를 갖더라도) Foo type의 연산 등을 모두 이용할 수 있다. Q. 그럼 여기서 누가 subtype인가? foo와 sun은 Foo의 subtype이다 Foo의 자식 느낌... Foo에서 파생되었다고 생각하자 */ /** * Structure type (Record Type) */ val gn = 0 object foo { val a = 3;def b = a+1 def f(x:Int) = b+x+gn;def f(x:String) = "hello" + x } object sun{ val a = 5; val b = 10.. 더보기
Currying & Closure 완전 이해하기 def sum(f:Int=>Int)(a:Int,b:Int)={ def sumF(a:Int,b:Int):Int = if(an) _ sumLinear(1,10) def sumLinear = sum((n)=>n) _ 여기에서 언더바를 사용하지 않으면 에러가 뜨는데, 여기에서 에러가 뜨는 이유는 closure의 문제 보단 sum(f)(a,b) 인자 생략의 문제인 것 같다!!! 어떤 인자가 올 자리라는 것을 표시하는 의미에서 _ 를 붙여야한다. 위의 sum def에서sumF는 언더바를 붙이든 안붙이든 에러가 생기지 않는다. 이는 inference를 해주기 때문이다. def 안에 def 가 있을 때 더보기
PART 1 - Exception & Handling , DataType (0929) java, C++에 있는 개념이고 에러 처리를 깔끔하게 할 수 있다는 장점이 있다/ class factRangeException(val arg:Int) extends Exception def fact(n:Int):Int = if (n { println("fact range error: " + e.arg) } } 이 코드를 실행하면 출력 값으로 6 fact range error: -90 이 나온다. DataType 에 대해서 알아보자 Types는 introduction operations과 eloimination이 필요하다. Introduction : how to construct elements of the type Elimination : how to use elements of the type 기본 .. 더보기
PART 1 - Currying (0926) currying이란 -> 커링을 이용하면 parameter 가 여러 개인 함수를 parameter의 개수가 더 적거나 같은 새로운 함수로 만들 수 있다. 커링을 사용할 때 주의할 점은 첫 번째 파라미터가 아니라면 _에 타입을 명시해야된다는 것이다. 이는 타입추론이 되지 않기 때문이다. def plus(i:Int)(j:Int):Int = i+j val plusFive:(Int)=>Int = plus(5)(_) //Plust함수의 첫번째 파라미터가 5로 고정되어있는 새로운 함수를 선언한 것 println(plusFive(10)) //15 def sum(f:Int=>Int, a:Int, b:Int):Int = if(an,a,b) def sumSquare(a:Int,b:Int) = sum((n)=>n*n,a,b.. 더보기
MAC 으로 XAMPP / MySQL 오늘의 수확 *** xampp -> volumn -> explore 을 누르면 lampp 폴더로 들어가게 해주고 그 안에서 htdocs를 찾을 수 있다. *** 교수님 피셜 vscode로 php 파일을 만든 뒤 htdocs에 저장하고 localhost/dbtest1.php 를 크롬 주소창에 입력하면 확인할 수 있다고 하셨는데 나는 아무리해도 안됐음 수업 끝나고 교수님께 질문하러 갔는데 교수님도 맥은 잘 모르시겠다면서 나에게 맥에 윈도우를 깔아보라고 권유하셨다 ^ㅁ^..... 저도 그러고싶은데 용량이 없서여 수업 끝났는데 계속 붙잡고 있기가 좀 죄송해서 교수님껜 내가 구글 검색으로 해결해보겠다고 용맹하게 말하고 교수님 퇴근시켜드림 ^__^ 암튼 그래서 끝나고 집도 안가고 폭풍구글링을 해봄 이게 해결책인지는.. 더보기
7주차 - MySql 로 직접 테이블 생성해보기 iterm2를 실행하고 mysql.server start 명령어를 입력해서 mysql을 실행한다. 그 다음은 전이랑 똑같이 mysql -uroot -p 를 입력해서 비밀번호를 입력하면 된다. mysql.server start //접속됨 mysql -uroot -p //비밀번호 입력 후 시작, 엔터를 누르면 됨 use sampledb; //db선택, 세미클론 빼지 말기 이제 테이블을 생성하면 되는데 테이블 생성과정에서 애를 먹었다.. 변수를 desc로 둬서 일단 계속 syntax오류가 떴고 거짓말 안하고 거의 20번은 실행해본듯 ;;;;; 슬라이드에 나와있는 desc -> memo로 변수 이름만 변경해줬더니 잘 작동한다. CREATE TABLE product (pid MEDIUMINT UNSIGNED NO.. 더보기
7주차 데이터조작 1. 린스타트업 이론 기초 1-1. 고객인터뷰 중요 포인트 스타트업은 터음에 시장 최전선에서 고객인터뷰를 진행하고 데이터를 확보할 것. (설문조사나 포커스그룹 인터뷰보단) 설문조사는 이미 물어야 할 질문이 있어서.. 초기학습은 개방형질문이 좋음. 리서치, 현장조사 관련 경험이 중요함. 제품 설명이 아니라 학습을 중심으로 대화의 틀을 잡는다. -> SNS나 온라인 미디어의 영향으로 고객의 needs가 빠르게 변해감. ex) 스티브잡스, 아마존 고객에게 무엇을 원하는지 묻지말고 행동만을 살펴볼 것. -> 환불을 보증하겠다고 하고 여러분의 제품을 선지불이나 부분지불을 권해볼 것. (한국 시장에서 반응이 좋았던 기법) 특히 환불보증부 서비스를 진행하면 초기에 현금흐름에도 도움을 주니 사용할 만하다. 다양한 가망.. 더보기