프로그래밍 썸네일형 리스트형 10주차 공통모듈개발 9주차에 PHP 코드와 데이터베이스를 연결하는 작업, 외부에서 들어온 데이터를 데이터베이스에 저장하고 조작하는 작업 외에 CRUD를 각각의 단일한 형태가 아닌 독립적이면서 유기적인 모듈형태로 개발하는 작업을 학습한다. CRUD C : create R : read U : update D : delete 중에서 오늘은 delete에 해당하는 데이터 삭제에 대해 배운다. MYDB.php delete.html 삭제 번호를 클릭하세요. //이 메세지가 가장 위에 뜨게 됨. //TR은 하나의 행. 번호 [1] //a 태그 : 하이퍼링크 [2] [3] [4] [5] [6] list.php //php에는 html 코드가 들어갈 수 없기 때문에 php를 닫는다. 번호 성 이름 연령 해서 xampp를 작동시킨 후, htt.. 더보기 과제 2 제출해야 될 파일 4개 Eve.max Eve_highpoly.fbx Eve_lowpoly.fbx Eve_3dsmax_screenshot.jpg 1. 이브 샘플 파일을 참고로 각자의 이브를 제작하세요. Highpoly와 Lowpoly의 Tris 수가 달라야 하고, 모델링의 Shape이나 UV 형태도 각자 달라야 합니다. 각자 자신만의 Eve를 LOD0으로 제작하세요. 2. Highpoly는 Turbosmooth를 이용한 Subdivision 기법으로 제작하세요. 3. Lowpoly는 Highpoly의 Base mesh를 이용해서 제작하세요. Lowpoly의 Tris 수는 5,000개 ~6,000개로 제작. 가능하면 사각 폴리곤 위주로 제작. (삼각 폴리곤은 최소로) 4. Lowpoly 는 UV를 unwra.. 더보기 1103 Mixin, Stacking with Traits Base : Interface Core : Functionality (trait or concrete class) Custom : Modifications Stack 구현하기 1. BASE trait Stack[A] { def get():(A,Stack[A]) def put(x:A):Stack[A] } 2. CORE 피자에 해당 class BasicIntStack protected (xs: List[Int]) extends Stack[Int] { override val toString = "Stack:" + xs.toString def this() = this(Nil) //empty stack protected def mkStack(xs: List[Int]): Stack[Int] = new BasicIn.. 더보기 1101 Inheritance vs. Composition 코드 reuse 관점에서 상속은 좀 비효율적임 + 상속을 받게 되면 가독성도 떨어지고, 코드를 잘못 이해할 가능성이 높아짐. 상속 말고 코드를 reuse하게 해주는 방법 => Composition abstract class Iter[A] { def getValue: Option[A] def getNext: Iter[A] } class ListIter[A](val list: List[A]) extends Iter[A] { def getValue = list.headOption def getNext = new ListIter(list.tail) } abstract class Dict[K,V] { def add(k: K, v: V): Dict[K,V] def find(k: K): Option[V] } Q: H.. 더보기 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 - 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 를 크롬 주소창에 입력하면 확인할 수 있다고 하셨는데 나는 아무리해도 안됐음 수업 끝나고 교수님께 질문하러 갔는데 교수님도 맥은 잘 모르시겠다면서 나에게 맥에 윈도우를 깔아보라고 권유하셨다 ^ㅁ^..... 저도 그러고싶은데 용량이 없서여 수업 끝났는데 계속 붙잡고 있기가 좀 죄송해서 교수님껜 내가 구글 검색으로 해결해보겠다고 용맹하게 말하고 교수님 퇴근시켜드림 ^__^ 암튼 그래서 끝나고 집도 안가고 폭풍구글링을 해봄 이게 해결책인지는.. 더보기 이전 1 2 3 4 5 6 다음