Programming Language
[JavaScript] AJAX
[JavaScript] AJAX
2022.11.08Asynchronous JavaScript and XML 의 약자로, 비동기적으로 서버와 통신하는 방식을 의미한다. 지금까지는 서버로부터 정보를 전달받은 경우 페이지를 리로드해서 사용자에게 정보를 보여줘야 하지만, ajax 방식을 사용하면 페이지를 리로드 하지 않고도 정보를 보여줄 수 있다. 전체 페이지를 전부 다 로딩하지 않고 부분만 새로 로딩할 때 사용하는 방식이라고 생각하면 된다. 브라우저에서 이벤트가 발생하면 서버에게 HttpRequest를 전달한다. 서버는 받은 정보를 처리한 후 브라우저에게 처리 결과를 전달한다. 브라우저는 서버로부터 받은 정보를 바탕으로 자바스크립트를 사용해 해당되는 페이지를 업데이트한다. (https://www.w3schools.com/js/tryit.asp?filename..
[JavaScript] JQuery
[JavaScript] JQuery
2022.11.08제이쿼리는 자바스크립트 코드를 간결하게 축약시키 위해 사용된다. 제이쿼리를 사용해 작성된 코드는 어떤 브라우저에서도 동작함이 보장된다. 직접 다운로드해서 사용하는 방법과 구글 cdn을 사용하는 방법이 있는데, 구글 cdn을 사용하도록 하자. 이 방법이 로딩 시간을 더 짧게 만들어준다. 헤드 내부에서 스크립트를 정의할 때 위의 cdn을 사용하면 된다. selector 부분은 CSS 선택자 문법이 들어간다. selector 로 적용할 대상을 정하고, action() 으로 어떤 작업을 수행할 지 정한다. $(this).hide() : 현재 element를 숨긴다. $("p").hide() : p 태그를 숨긴다. 이런 식으로 자바스크립트만 사용 할 때 보다 훨씬 간결하게 사용할 수 있다. 아직 준비되지 않은 요..
[JavaScript] JSON
[JavaScript] JSON
2022.10.25JavaScript Object Notation의 약자로, 데이터를 교환하기 위한 format이다. JavaScript -> JSON / JSON -> JavaScript 두 방향으로 변환할 수 있어야 한다. JSON은 function / date / undefined를 다룰 수 없다. String, Number, Object, Array, Boolean, null {"name " : "asdf"} {"age" : 13} {"object" : {"name" : "a", "age" : "12" ... }} {"arr" : [1,2,3,4]} {"flag" : true} {"nulls" : null} JSON 타입의 데이터는 서버에 저장돼 관리되고, 클라이언트는 서버의 데이터를 가져와서 사용할 수 있어야 한..
[PHP] PHP 정리 (2)
[PHP] PHP 정리 (2)
2022.10.19get : 페이지를 북마크 할 때 사용될 수 있음. URL에 보낸 정보가 표시되니 민감한 정보는 보내지 말자. post : 정보 길이에 제한이 없음. 보통 post 방식을 사용함. 보안에도 좋음. form을 통해 전달된 데이터들을 php에서 처리할 때 값을 검증할 필요가 있음. 사용자가 form에다가 html태그들을 넣으면 비정상적으로 작동할 수 있기 때문. (예약어를 명령어로 인식하지 않고 보여주도록 해야 한다) $_SERVER["PHP_SELF"] : $_SERVER는 super global 중 하나고, PHP_SELF로 현재 작업하는 파일 이름을 제공한다. 즉, 위의 내용은 페이지 접속 시 적당한 내용으로 바뀐다. htmlspecialchars() 메서드를 통해 예약어를 명령어로 인식하지 않도록 설..
[C++] OOP (4) Type Casting
[C++] OOP (4) Type Casting
2022.10.19부모 타입의 포인터가 자식 타입의 객체를 가리키도록 해서 UpCasting을 구현할 수 있는데.. 자식 객체는 부모 객체보다 더 많은 정보를 가지고 있기 때문에 부모 타입의 포인터로 자식 타입만 가지고 있는 정보에 접근하는건 불가능하다. 부모 타입인 Car에는 money 메서드가 없지만, 자식 타입인 Bus에는 money 메서드가 있다. 따라서 Car* 타입으로는 자식 타입인 Bus의 정보에 접근 할 수 없다. foo 내부 함수를 바꿔보자. void foo(Car* car) { Bus* bus = static_cast(car); bus->money(); } Car* 타입을 Bus* 타입으로 바꿨다. (DownCasting) DownCasting은 위험할 수 있다. 위에서 언급했듯 부모보다 자식에 정보가 ..
[C++] OOP (3) Inheritance / 연산자 오버로딩
[C++] OOP (3) Inheritance / 연산자 오버로딩
2022.10.12C++ 은 Operation Overloading. 연산자 오버로딩을 지원한다. 출력과 입력 시 시프트 연산자와 함께 사용하는 cin과 cout도 연산자 오버로딩의 예시이다. 함수 오버로딩은 같은 이름의 함수를 정의하고 그 중 하나를 사용하는걸 말한다. 연산자 오버로딩도 본질은 다르지 않다. 연산자를 여러 개 정의하고 그 중 하나를 선택할 때 사용한다. 오버로딩이 불가능한 연산자도 있으니, 주의해서 사용하자. 연산자 오버로딩은 두 가지로 분류해서 사용한다. 1. 클래스 내부에서 연산자 오버로딩을 정의한다. 클래스 내부에서 정의할 경우 *this 가 사용된다. 즉, 오버로딩된 연산자의 선언부에서 첫 번째 인자는 user-defined type의 객체가 들어온다. this의 특성으로 해당 객체의 privat..
[PHP] PHP 정리 (1)
[PHP] PHP 정리 (1)
2022.10.11php는 script language. (js, python 처럼 컴파일 하지 않고 진행) php는 Server Side Script language. PHP : Hypertext Preprocessor // 재귀약자! .php 확장자 외국에서는 php를 많이 사용한다. 문법은 위와 같다. 대소문자를 구별하지 않는다. (변수는 구별함) 변수를 선언할 때도 자바스크립트처럼 타입을 따로 정의하지 않는다. ($color 처럼 $로 변수 선언) (Loosely Typed Language) . 이 연결 연산자 (concat) 주석은 # 혹은 // / * */ 모두 사용 가능 echo로 출력한다. 변수의 범위 1. local 2. global 3. static 함수 안에서는 global scope 변수에 접근할 수..
[JavaScript] 정리 (2)
[JavaScript] 정리 (2)
2022.10.09문자열 내부에서 \\로 \표현 let x = "a" let y = new String("a") x 는 string 타입, y는 object 타입. 단, x를 사용할 때는 자동으로 형변환돼서 x.length 사용 가능. string 메서드 1. slice : 자를 때 사용. 자바의 substring과 유사하지만, 파이썬처럼 인덱스에 음수를 넣을 수 있음 2. substring : slice와 비슷하지만, 인덱스에 음수를 넣을 수 없고 사용법이 좀 다름. (7,6) 이면 7부터 6글자를 자름 3. replace : 말 그대로 특정 부분을 대체. 첫 번째 요소만 대체함. 정규표현식 사용 가능. 4. trim : 공백제거. 파이썬의 strip과 비슷함 5. padStart : 길이를 지정하고, 부족한 부분을 특..
[C++] C++과 Java
[C++] C++과 Java
2022.10.05같은 객체지향언어이고 문법도 비슷하지만, 언어를 깊게 이해하기 위해서는 두 언어의 차이점을 알아야 한다. 우선 C++이 자바보다 먼저 나왔고, 자바는 C++의 뒤를 잇는 완전한 객체지향을 지향하는 언어이다. 즉, C++은 자바만큼 객체지향을 완벽하게 지원하지는 않는다고 생각할 수 있다. 객체의 생성자를 정의할 때 C++은 initialization list와 몸통부 사용할 수 있지만 자바에서는 initialization list를 지원하지 않는다. 원래 C++은 initialization list를 사용해 변수를 초기화하고 생성자의 몸통부를 통해 별도의 작업을 수행하라는 의도로 이렇게 설계됐지만, 자바를 설계할 때는 두 가지 작업을 한 번에 처리하는게 합리적이라고 판단해 initialization lis..
[C++] Memory Allocation / static
[C++] Memory Allocation / static
2022.10.05C와 비슷한 양상을 보인다. 스택 메모리, 힙 메모리, static 메모리로 구분된다. 메모리는 선형으로 구성돼있고 컴파일러의 판단으로 특정 부분은 스택 메모리로 사용되고 또 어떤 부분은 힙 메모리, static 메모리로 정하고 사용한다. 스택 메모리의 제일 처음에는 메인 메서드가 올라간다. 이후 메인 메서드가 함수를 호출함에 따라 메인 메서드 위로 여러 메서드들이 쌓이게 되고, 각각의 메서드들이 종료될 때 마다 스택 메모리에 선언됐던 정보들이 날아가고 메인 메서드가 종료되면 프로그램이 종료된다. (스택에 올라간 메서드에서 if - else / for / while 문법을 사용하면 또 다시 스택을 만들어진 후 해당 지역변수들이 올라가고, 문장이 마무리되면 스택에서 pop 된다.) C에서의 malloc 혹..
[JavaScript] DOM
[JavaScript] DOM
2022.10.03DOM : Document Object Model. 웹 페이지를 객체로 접근한다. 자바스크립트로 HTML DOM 요소에 접근해 값을 변경할 때 사용된다. 위의 계층 구조를 기억하자. 루트 - 엘리먼트 - 텍스트 / 노드들의 관계를 알아두자.+ attribute 텍스트 노드는 항상 자식이다. 크롤링 할 때 하던거처럼 DOM요소에 접근한다. nodeName / nodeValue / nodeType 잘 써먹기 appendChild 메서드로 텍스트와 태그를 붙일 수 있음 insertBefore 메서드로 부모의 특정 태그 앞에 태그를 붙일 수 있음 remove와 replace 사용해서 HTML조작 가능 nodelist는 인덱스로만 접근 가능, 배열은 id class값으로도 접근 가능 JS로 form validat..
[JavaScript] 정리 (1)
[JavaScript] 정리 (1)
2022.09.28body태그 마무리 전에 자바스크립트 script태그가 위치해야 한다. HTML이 다 로드되고 난 후 자바스크립트를 로드하는게 합리적이다. write 메서드는 새로 페이지를 만들어서 보여줌 print 메서드는 말그대로 프린트 let은 중복선언 불가능, var은 중복선언 가능 let이 좀 더 엄격함 정의 안하면 undefined 타입 let var 안써도 됨 그런데 let 쓰는게 좋음 콤마로 이어서 작성 가능 var로 재선언해도 원래 값을 잃어버리지는 않음 문자열 + 숫자 시 문자열로 통일하는데.. 순서가 중요. 5 + 5 + '5' = 105 이고, '5' + 5 + 5 = 555임 정수 실수 모두 Number타입으로 통일 자바스크립트 객체는 프로퍼티 형식으로 지원함. 기본 타입도 객체 타입으로 쉽게 변..