일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 정규표현식
- spring cloud
- current_date
- upgrade
- 퀵소트
- update
- REACT
- try catch
- log4j2
- MySQL
- expire_logs_days
- Spring Batch
- npm
- nodejs
- Express
- git
- Effective Java
- migration
- log_bin
- REACTJS
- mysql 5.5
- Effective Java 3/e
- Regular expression
- regex
- java
- Chunk
- eslint
- spring
- Node
- JavaScript
- Today
- Total
목록전체 글 (160)
내 세상
JSX - Class Component에서 Render를 통해 return하는 코드 또는 Function Component에서 return하는 코드를 의미함. - Javascript의 확장 문법/XML과 유사 - 브라우저에서 실행되기 전에 코드가 번들링되는 과정에서 babel을 사용하여 일반 Javascript 형태로 변환됨 - babel을 통한 변환 전 code (Before) function App() { return ( Hello react ); } - babel을 통한 변환 후 code (After) function App() { return React.createElement("div", null, "Hello ", React.createElement("b", null, "react")); } ..
C++의 new, delete 사용 예시 #include int main() { // C스타일 메모리 할당 // C : void* => int* 로 암시적 변환 가능 // C++ : void* => int* 로 암시적 변환 불가능 int *p1 = static_cast(malloc(100)); // sizeof(int)*10 free(p1); // C++ 스타일 int *p2 = new int; delete p2; int* p2 = new int[10]; // 배열 버전, sizeof(int)*10; delete[] p2; // 해지 할때도 배열 버전의 delete 사용 int* p3 = new int[10]; delete p3; // 이렇게 한다면? // 표준 문서에서 어떻게 될거 라고 정의 한적이 없..
int main() { int n1 = 0; int* p1 = 0; // ok. 0은 정수 이지만 포인터로 암시적 형변환 된다. //int* p = 10; // error. 10은 정수라도 포인터로 변환될 수 없다. // C++11 스타일 // 포인터 초기화시에는 0 대신 nullptr을 사용하자 int n2 = nullptr; // erorr int* p2 = nullptr; // ok } #include void foo(void *p) { std::cout
C++ 스타일의 캐스팅 - static_cast - 표준 타입을 값으로 캐스팅 - 상속 관계 타입의 캐스팅 - lvalue => rvalue 변환 - void* => 다른 타입으로 변환 - reinterpret_cast - 메모리의 재해석 - 서로 다른 타입의 주소 변환 - 정수 포인터 사이 변환 - const_cast - 동일 타입의 const 속성을 제거하는 캐스팅 > #include #include // static_cast : 가장 일반적인 용도 // 1. 표준 타입을 값으로 캐스팅 // 2. 상속 관계 타입의 캐스팅 // 3. lvalue => rvalue 변환 // 4. void* => 다른 타입으로 변환 int main() { double d = 3.4; int n1 = d; // ok in..
C++11 반복문 #include int main() { int x[10] = { 1,2,3,4,5,6,7,8,9,10 }; // 전통적인 for문 for (int i = 0; i < 10; i++) std::cout
함수 호출 시 디폴트 파라미터 사용 주의 사항 #include // 디폴트 파라미터 : 인자를 전달하지 않으면 디폴트 값 사용 // 주의 사항 2가지 // 1. 함수를 선언과 구현으로 분리시에 디폴트 값은 // 선언 에만 표기해야 한다. // 2. 마지막 인자 부터 차례대로만 지정해야 한다. void goo(int a = 0, int b = 0, int c = 0) {} // ok void goo(int a, int b = 0, int c = 0) {} // ok void goo(int a = 0, int b , int c = 0) {} // error void goo(int a = 0, int b = 0, int c) {} // error, default는 오른쪽 끝부터 진행할 수 있음. goo(1);..
C 표준 입출력 - printf, scanf C++ 표준 입출력 - cin, cout - %d, %c, %f 등의 포맷 지정자 필요 없음. - &a, &b 처럼 주소를 보낼 필요 없음. #include // C++ 스타일 입출력 #include // setw와 같은 조정자 (iomaniplator) int main() { int n = 10; printf("n= %d\n", n); // C++ 방식의 출력 std::cout
namespace 문법 - 관련된 함수, 변수, 구조체 등을 묶는 도구 핵심 1. name의 요소에 접근하는 3가지 방법 2. using 지시어, 선언은 함수 안이나 밖에 있을 수 있음. 3. 가능한 완전한 이름을 사용하는 것이 좋음. #include namespace Video { void init() { printf("Video Init\n"); } } namespace Audio { void init() { printf("Audio Init\n"); } } using namespace Audio; // global space void init() { printf("System Init\n"); } void main() { // 방법1) 완전한 이름 사용 Audio::init(); Video::ini..
iHerb에서 직접 구매한 영양제 소개 드립니다 우선 배송 기간은 정확히 12월 23일에 주문하여 "12월 27일"에 4일만에 도착했습니다~ 인터넷에 "iHerb 쿠폰" 이라고 검색하면 나오는 쿠폰들 먹여서 샀어요. 1. Now Foods 실리마린, 아티초크 & 민들레 함유 밀크씨슬 추출물, 두 배 강도, 300mg, 200 식물성 캡슐 - 20,182원 - 밀크 시슬 추출물로 인한 간 기능 개선, 피로 회복, 숙취 회복 - 1일 2회 (설명서 상 1~3정) - 하루 권장 섭취량 700mg, 1정에 300mg 2. Solgar, 마그네슘, 비타민 B6 함유, 250 정 - 16,511원 - 눈 떨림 등 마그네슘 부족으로 인한 현상 완화 - 1일 3회 (식후 1정) 3. Nature's Way, Alive..
C 언어로 퀵소트 구현하기 아래 게시글의 Quick Sort 개념을 바탕으로 짠 소스인데, 사실상 굉장히 보기 불쾌합니다 후후..;;; 2019/05/01 - [Coding/Algorithms] - [Algorithms] Sort Special - Inserting, Counting, Quick, Heap [Algorithms] Sort Special - Inserting, Counting, Quick, Heap Inserting Sort - N 크기의 배열 - 두 번째 index부터 시작해서, 앞 부분에 자신보다 작은 값이 있을 때까지 지나가는 값을 (현재 위치+1)로 이동시킴 - 시간복잡도 O(N^2) Counting Sort - N 크기의 배열, K 크기.. sga8.tistory.com #defi..
아래의 예시는 MacOS에 OpenCV 3.4.2 버전을 설치하는 방법임. 이전 버전의 git history를 확인해야 하기 때문에 git clone을 진행함. git clone https://github.com/Homebrew/homebrew-core.git cd homebrew-core 위의 경로로 이동하여 아래의 명령어를 통해 commit id를 확인함. git --no-pager log --pretty=oneline -- Formula.opencv.rb | grep 3.4.2 아래의 결과를 확인할 수 있음. 664f1dfde0ac86efe5dde9b8e6aa358d61641d33 opencv: update 3.4.2 bottle. 06eae891074e0b879e742bf54560f89a11f18..
최근 몇 년 동안 REST(Representational State Transfer)가 전통적인 SOAP 기반의 웹 서비스에 대한 인기 있는 정보 중심의 대안으로 떠오르고 있음. SOAP는 전형적인 동작과 프로세싱에 집중하고 있으며, REST의 관심은 데이터 처리에 있음. REST의 기본 개념 REST에 접근할 때 자주하는 실수 중의 하나는 REST를 'URL을 이용하는 웹 서비스'라고 생각하는 것. 즉, REST를 SOAP과 같이 또 다른 RPC(Remote Procedure Call) 메커니즘으로 여긴다. → 사실상 거의 연관이 없음. But, REST는 SOAP의 수많은 XML 네임스페이스를 이용하지 않고 평범한 HTTP URL을 통해 호출됨. RPC - 서비스 지향적이고 액션과 동사에 초점을 맞춤..
11.1 스프링과 하이버네이트 통합 지연 로딩(lazy loading) : 우리가 필요로 하는 실제 데이터만 불러올 수 있음. 필요한 부분만 가져오는 것. 조기 인출(eager fetching) : 지연 로딩의 반대개념. 한 번의 쿼리로 전체 객체 구조를 가져올 수 있음. 캐스케이딩(cascading) : 테이블 변경 시 다른 테이블도 변경되어야 하는 경우가 있을 때 작동하는 것. → 객체 관계 매핑 (ORM: Object Relational Mapping) : 많은 양의 코드를 줄이고 개발 시간을 단축함. 스프링은 다수의 ORM 프레임 워크를 지원함 (Hibernate, iBATIS, Apache OJB, JDO, TopLink, JPA 등) 하이버네이트는 오픈 소스 퍼시스턴스 프레임워크 (+ cahc..
Web 기반 Appl.의 경우 state 관리, workflow, 검증은 매우 중요하게 고려되어야 할 사항이지만, HTTP protocol의 stateless 성격을 감안했을 때 쉽게 해결되지 않음. 스프링 Web FWK는 이런 문제들을 처리하는 데 도움을 줄 수 있도록 디자인되어있음. MVC 패턴을 기반으로 스프링 MVC는 스프링 FWK 자체와 긴밀한 연결없이 유연한 Web 기반 Appl.을 만드는 데 도움을 줌. Request, Dispatcher Servlet, Handler Mapping, Controller, View Resolver 등 DispatcherServlet 요청을 스프링 MVC Controller에 전달해 주는 것. (Controller는..
횡단 관심사(Cross-cutting concerns) 소프트웨어에서 로깅, 보안 트랜잭션 관리 같은 기능은 대부분의 애플리케이션에 공통적으로 나타나는 기능 DI - Appl. 객체 간 결합도를 낮추기 위함 AOP - 횡단 관심사와 이에 영향 받는 객체 간 결합도를 낮추기 위함 AOP (Aspect Object Programming) 기존 : 상속(inheritance), 위임(delegation)을 사용하여 공통 기능을 재사용함 → But, 상속은 객체의 정적 구조에 의존하므로 복잡하고 깨지기 쉬운 구조가 되기 십상 → 위임은 대상 객체에 대한 복잡한 호출로 인해 번거로움. 현재 : 횡단 관심사를 aspect라는 특별한 클래스로 모듈화함 첫 번째 장점 : 전체 코드 기반에 흩어져 있는 관심 사항이 하나..
스프링을 사용하는 Appl.에서는 각 객체가 자신의 일을 하기 위해 필요한 다른 객체를 직접 찾거나 생성할 필요가 없음. Container가 협업할 객체에 대한 reference를 주기 때문. 애플리케이션 객체 간의 이러한 연관관계 형성 작업이 바로 Dependecy Injection 개념의 핵심이며 보통 이를 wiring(와이어링)이라고 함. Wiring mechanism XML에서의 명시적 설정 Java에서의 명시적 설정 내재되어 있는 빈을 찾아 자동으로 wiring하기 자동으로 빈 와이어링하기 스프링은 두 가지 방법으로 auto wiring을 수행함. Component Scanning - Appl. context에서 생성되는 빈을 자동으로 발견함 Auto Wiring - 자동으로 빈 의존성을 충족시..