분류 전체보기 264

[Servlet] Servlet 개발 환경설정, 톰캣 연동, 시작하기

자바를 사용해볼겸 자바에서 많이 사용되는 JSP를 천천히 정리하려고 한다. 먼저 개발환경을 갖추고 JSP에 대해 간단하게 알아보자. 설치할 목록은 아래와 같다. 1. JDK -> 설치하고 환경 변수 설정을 해줘야 한다. cmd창을 열어 아래의 결과를 확인하자. 2. Tomcat 9.0 설치 -> 설치할때, Configuration에서 포트번호와 유저네임 및 비밀번호를 기호에 맞게 적으면 된다. 그리고 JVM 설정엔 JRE 혹은 JDK의 경로를 설정하면 된다. 3. 자바 개발환경인 이클립스를 설치하자. 필자는 ' ... Enterprise JAVA developer' 로 설치하였다. 4. Oracle DBMS 설치 -> Oracle Database 11g Express Edition 버전으로 설치를 진행하..

[C/C++] Thread

이번 시간에는 '쓰레드' 라고 하는것에 대해 알아본다. 이 개념은 '운영체제'를 들어봤다면 공부해봤을 내용이다. C/C++은 속도가 빠르기 때문에 하드웨어 내부에서 자주 사용하는 언어이다. 시작하기에 앞서 잠깐 운영체제 내용을 간단하게 살펴보고 가자. CPU 는 한 프로그램을 통째로 쭉 실행시키는 것이 아니라, 이 프로그램 조금, 저 프로그램 조금씩 골라서 차례를 돌며 실행시킨다. 이 CPU가 프로세스를 실행시킨다. CPU는 한 번에 한개의 연산을 수행한다. 하지만 컨텍스트 스위칭(Context Swithing)을 통해 여러가지 일들을 한써번에 할 수 있다. CPU 는 그냥 운영체제가 처리하라고 시키는 명령어들을 실행할 뿐, 어떤 프로그램을 실행시키고, 얼마 동안 실행 시키고, 또 다음에 무슨 프로그램으..

C , C++, C# 2020.01.19

[C/C++] Callable, std::function

Callable이란 호출할 수 있는 모든것을 나타낸다. C++에서도 함수를 호출하는데 여러 방법이 있는데 그것을 알아볼 것이다. 참고로 '()' 을 붙여서 사용한다. 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 31 32 33 34 35 36 37 38 39 40 41 42 #include #include #include class info { public: void operator()(int a, int b) { std::cout Colored by Color Scripter function은 위와 같이 사용할 수 있다. std::function f1 = fun1; std::function f2 = in..

C , C++, C# 2020.01.14

[C/C++] weak_ptr

weak_ptr은 객체가 존재하면서도 삭제가 가능한 포인터이다. 스마트 포인터 처럼 객체를 안전하게 참조할 수 있게 하지만, shared_ptr과는 다르게 참조 개수를 늘리지는 않는다. 따라서 설사 어떤 객체를 weak_ptr 가 가리키고 있다고 하더라도, 다른 shared_ptr 들이 가리키고 있지 않다면 이미 메모리에서 소멸되었을 것입니다. 그래서 weak_ptr을 사용할 때에는 원래 객체로 사용할 수 없고 shared_ptr로 변환해서 사용해야 한다. 이때 가리키고 있는 객체가 이미 소멸되었다면 빈 shared_ptr 로 변환되고, 아닐경우 해당 객체를 가리키는 shared_ptr 로 변환된다. 전체 코드는 아래와 같다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1..

C , C++, C# 2020.01.09

[C/C++] Shared_ptr

unique_ptr은 동적으로 할당된 객체를 관리하는 데 유용한 클래스이다. 하지만 소유권을 단 하나만 가질 수 있는 단점이 있다. 여러 객체가 하나의 동적 할당 객체를 소유한다면 이것을 삭제할 때 그 주체가 누구인지 불분명하다. shared_ptr 포인터 타입은 이런 경우를 위한 것이다. 특정 자원을 몇 개의 객체에서 가리키는지를 추적한 다음 그 수가 0 이 되야만 비로소 해제를 시켜주는 방식의 포인터이다. 내부 참조 카운트를 이용한 방법으로 적재된 객체에 대한 포인터를 유지하고 있는 객체의 수를 확인하고 범위를 벗어나는 마지막 shared 포인터만 적재 객체에 삭제를 호출한다. 전체코드는 아래와 같다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 2..

C , C++, C# 2020.01.06

[C/C++] unique_ptr

unique_ptr은 동적으로 할당된 객체를 유지할 경우 객체가 소멸하면 클래스가 자동으로 delete를 호출하기 때문에 쓸데없는 메모리가 나가는것을 막을 수 있다. unique 포인터는 가리키는 객체에 대한 소유권을 표현하며 해당 객체를 다시 사용하지 않을 경우 이와 관련된 메모리를 비우는 역할을 한다. 전체 코드는 아래와 같다. 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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 7..

C , C++, C# 2019.12.28

[Javascript]페이지 개발: API를 통한 날씨정보

이전까지 localstorage 사용과 배경화면을 처리하는 과정을 거쳤다. 마지막으로 날씨 정보를 불러와 웹 페이지에 표시해보도록 한다. 여기서는 데이터만 가져와 한번 만들어본다. 코드먼저 살펴보자 index.html 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 31 32 33 34 123 00:00 http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter weather.js 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ..

JavaScript 2019.12.28

[JavaScript] 페이지 개발: 배경처리

이전시간까지 localstorage를 이용한 내부 데이터를 처리하여 페이지를 조작해보았다. 이번에는 웹 페이지의 꽃인 UI를 만들텐데 배경화면으로 이쁘게 만들어 본다. 우선 전체코드는 아래와 같다. index.html 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 31 123 00:00 http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter background.js 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ..

JavaScript 2019.12.26

[C/C++] iterator (반복자)

STL을 사용하는 프로그래머라면 반복자는 간단하게라도 알고가야한다. 반복자가 어떻게 동작하는지 간단하게 보고가자 보통 vector v 가 있을때, 우리가 begin(), end() 를 사용할 수 있는 이유가 반복자 때문이다. 여기서 간단하게 순환 가능한 반복자를 만들어보자. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 class num_it { int i; public: explicit num_it(int position = 0) : i{ position } {} int operator*() const { return i; } // 반복자(*it)를 참조하면 정수 반환 num_it& operator++() { ++i; return *th..

C , C++, C# 2019.12.11

[C/C++] C++ 17 문법 unpacking(언패킹), 구조체 바인딩

C/C++로 알고리즘 문제를 풀면서 또는 c++ 코드인데 생소한 부분들을 많이 봐왔을 것이다. 그 중에서 문제를 풀때도 많이 사용되는 C++ 17 문법인 '언패킹(Unpacking)'에 대해 간단하게 알아보자. 내용은 간단하다. 다른 언어에서 쓰는 것처럼 '[...]' 를 사용하여 접근할 수 있다. 아래의 코드를 보자. 1 2 3 4 5 6 7 int main() { auto ans = make_pair(1,3); auto [a, b] = make_pair(1,3); //이와 같이 auto [변수이름,..] 으로 사용가능, 단 VS c++ 17 옵션켜야함 cout Colored by Color Scripter 출력결과는 직접 해보거나 계산해도 무방하다. &은 참조연산자로 값을 변경할 수 있다. 이것을 사..

C , C++, C# 2019.12.09