전체 글94 디자인 패턴(Design Pattern)이란? 객체지향 소프트웨어를 '잘' 설계한다는 것은 쉬운 일이 아닙니다. 게다가, 재사용할 수 있는 객체지향 소프트웨어를 만드는 것은 더 힘듭니다. 설계를 할 때에는 지금 당장 갖고 있는 문제를 해결할 수 있어야 하지만, 나중에 생길 수 있는 문제나 추가된 요구 사항들도 수용할 수 있도록 일반적이고 포괄적이어야 합니다. 이를 위해 설계할 때 고려사항으로 SOLID 원칙 등 객체지향적 소프트웨어 설계 방법론이 있고, 현업에서는 이에 따라 개발하기 위해 노력하고 있습니다. 개발의 경험이 쌓이다 보면 자신들이 전에 사용했던 코드와 유사한 기능을 구현해야 해서 이전의 코드를 들여다보는 경험을 종종 하게 됩니다. 그러다 전에 사용했던 해결책을 그대로 반복해서 사용하기도 하고, 변형해서 쓰기도 하고, 혹은 상황에 맞지 않.. 디자인패턴 2022. 4. 29. [DART] Dart의 기본 데이터 타입(2) (Booleans, Lists, Maps) Built-in Types in Dart 1.Booleans -Dart 에서는 참/거짓 형을 나타내기 위한 데이터 타입으로 'bool'을 사용한다. -bool 타입은 true/false의 boolean 리터럴 객체만 가질 수 있다. 2.Lists -거의 모든 프로그래밍 언어에서 집합을 나타내는 가장 흔한 타입은 '배열'(arrays)일 것이다. -Dart에서, 배열은 List 객체이므로, lists 라고 부른다. -Dart의 list 리터럴은 자바스크립트 배열 리터럴과 유사하다. var list = [1, 2, 3]; -독특하게도, 자바스크립트를 쓰면서 복사&붙여넣기를 하다 보면 아래와 같은 컴마 실수가 많이 나는데, Dart에서는 마지막 항목 뒤의 컴마가 아무 영향이 없다! var list = [ 'Car', 'Boat', 'Plane', ].. DART 2022. 4. 28. [MSSQL] 엑셀 데이터 가져오기와 에러 해결하기 MSSQL에서 엑셀 데이터를 가져와보자. (csv는 지원이 안된다고 함) 오늘 가져 올 파일 엑셀 데이터 가져오기 1) 데이터를 가져와 테이블을 생성 할 데이터베이스 우 클릭 2) 태스크(T) > 데이터 가져오기 3) 데이터 원본 > Microsoft Excel 클릭 4) 파일 경로 넣기 5) 파일 경로 넣기 6) 인증 로그인 후 생성할 DB를 입력한다. (나는 새로 만들어 줌) 7) 가져 올 시트를 선택 여기서 [dbo].[사용자테이블$]이라고 되어 있는 것을 클릭 하면 원하는 테이블 명으로 바꿀 수 있다. (만약 빼먹었다면 바꾸는 방법은 아래 있다.) 또한, 매핑 편집 버튼을 클릭하여 가져 올 컬럼과 데이터를 수정할 수 있다. 8) 즉시 실행을 클릭 후 Finish! 하면 끝 9) excel 가져오기.. DATABASE 2022. 4. 22. [MySQL] MySQL 쓰면서 하지 말아야 할 것 17가지 작게 생각하기 – 조만간 규모가 커질거라면 MySQL ecosystem을 봐야된다. – 그리고 캐싱 빡시게 안 하는 메이저 웹사이트는 없다. – develooper.com의 Hansen PT랑 Ilia 튜토리얼 볼 것 – 처음부터 확장 가능하게 아키텍처 잘 쪼개놔야된다. – 복제랑 파티셔닝 어떻게 할지 미리 계획 세워놔라. – 파일 기반 세션 좀 쓰지마 -_- – 그렇다고 너무 쓸데없이 크게 생각하지도 말 것 – 특히 성능하고 확장성 구분 못 하면 난감함 EXPLAIN 안 써보기 – SELECT 앞에 EXPLAIN 이라고 붙이기만 하면 되는 것을 (..) – 실행 계획 확인 – 타입 컬럼에 index 써있는거랑 Extra 컬럼에 index 써있는거랑 “매우 큰” 차이 있음 * 타입에 있으면 Full 인덱.. DATABASE 2022. 4. 19. [DART] Dart의 기본 데이터 타입(1) (int, double, String) Built-in Types in Dart 1) 숫자형 Numbers Dart에서 숫자를 표현하는 데이터 타입은 2가지가 있으며, int와 double 모두 num 타입의 서브타입이다. 1. int 정수형 - Integer는 소수점(decimal point)이 없는 숫자를 가리키며, 아래와 같이 표현한다. - 최대 크기는 플랫폼에 따라 다르지만, 64비트를 넘을 수 없다. var x = 1; var hex = 0xDEADBEEF; var exponent = 8e5; 2. double 실수형 - IEEE 754표준에 따르면, double형은 64비트의 부동소수점 (floating-point numbers) 숫자를 가리킨다. var y = 1.1; var exponents = 1.42e5; *변수를 int, double이 아닌 'num'으로도 선언할.. DART 2022. 4. 13. [DART] 상수와 final / const 키워드에 대하여 - Final and const 참고 : 아래의 설명은 타 개발 언어(C, Java 등)를 이미 숙지한 상태라고 가정 후 설명하는 것이다. 필자는 Java에 익숙하므로, 대부분의 설명이 Java와 비교하여 이루어 질 것이다. 모든 설명은 https://dart.dev/guides/language/language-tour 를 참고하며 개인적인 해석을 덧붙인 것이다. 틀린 부분이나 부족한 부분의 보충이 필요할 시 언제든 댓글을 달아주시길!! 1) 상수 Constant 상수란, '한 번 정의한 후에는 값이 고정되여 변경할 수 없는 메모리 공간'이라고 정의한다. 예를 들어, 일주일은 7일이고, 1년은 365일이라는 것은 변함이 없다. 이런 경우 상수로 선언해 주게 되면, 유지보수가 쉬워지며, 성능 향상의 효과도 있다. Dart에서는 변수에 c.. DART 2022. 4. 11. [DART] Dart의 변수와 초기화 - Variables in Dart 참고 : 아래의 설명은 타 개발 언어(C, Java 등)를 이미 숙지한 상태라고 가정 후 설명하는 것이다. 필자는 Java에 익숙하므로, 대부분의 설명이 Java와 비교하여 이루어 질 것이다. 모든 설명은 https://dart.dev/guides/language/language-tour 를 참고하며 개인적인 해석을 덧붙인 것이다. 틀린 부분이나 부족한 부분의 보충이 필요할 시 언제든 댓글을 달아주시길!! 1) 변수 Variables 먼저 변수란, 하나의 값을 저장할 수 있는 저장 공간이다. 쉽게 말하자면, '상자'라고 생각하면 된다. 아래의 코드는, 변수를 생성하고 초기화하고 있다. (Dart에서 var 타입은 타입 유추를 사용하는 것이다. 무엇이 담기느냐에 따라 상자의 타입이 달라지는 것 - 심지어 .. DART 2022. 4. 8. [DART] Dart의 중요 개념 - 항상 숙지할 것! - Important Concepts of Dart 참고 : 아래의 설명은 타 개발 언어(C, Java 등)를 이미 숙지한 상태라고 가정 후 설명하는 것이다. 필자는 Java에 익숙하므로, 대부분의 설명이 Java와 비교하여 이루어 질 것이다. 모든 설명은 https://dart.dev/guides/language/language-tour 를 참고하며 개인적인 해석을 덧붙인 것이다. 틀린 부분이나 부족한 부분의 보충이 필요할 시 언제든 댓글을 달아주시길!! Dart 언어를 배우면서, 아래의 사실/개념들을 항상 숙지할 것을 추천한다. 1)변수에 담을 수 있는 모든 것을 객체(Object)취급한다. 숫자들, 함수들, 그리고 null 도 객체이다. null을 제외하고, 모든 객체는 Object 클래스를 상속한다. 2)Dart는 데이터 타입이 자유롭지 않지만, .. DART 2022. 4. 7. [DART] Dart 프로그래밍의 기본 - A Basic Dart Program 참고 : 아래의 설명은 타 개발 언어(C, Java 등)를 이미 숙지한 상태라고 가정 후 설명하는 것이다. 필자는 Java에 익숙하므로, 대부분의 설명이 Java와 비교하여 이루어 질 것이다. 모든 설명은 https://dart.dev/guides/language/language-tour 를 참고하며 개인적인 해석을 덧붙인 것이다. 틀린 부분이나 부족한 부분의 보충이 필요할 시 언제든 댓글을 달아주시길!! Dart의 가장 기본적인 특징을 담고 있는 아래의 코드가 있다. // 함수를 정의한다. void printInteger(int aNumber) { print('The number is $aNumber.'); //콘솔에 프린트한다. } // 앱이 실행되는 main 함수 void main() { var n.. DART 2022. 4. 7. [DART] Dart를 공부하기에 앞서 - What is Dart Programming Language? 구글이 2011년 10월 공개한 언어로, javascript를 대체하기 위해 개발되었다고 한다. Dart의 공식 사이트인 https://dart.dev/ 에 접속하면 메인 화면에서 아래와 같은 문구를 볼 수 있다. Dart is a client-optimized language for fast apps on any platform 이 문장이 Dart가 지향하는 바를 가장 함축적으로 담고 있다고 본다. 모바일, 데스크탑, 서버, 웹, 앱의 다양한 플랫폼에서 사용 될 수 있으며, C 또는 JAVA 언어와 유사하여 다른 언어를 이미 알고 있는 개발자라면 'Dart 언어를 배울 필요가 없다.' 왜냐, 그냥 읽으면 이해할 수 있는 정도이기 때문이다. 그렇다면 왜 나는 Dart언어를 배우려고 하는 것일까? 바로, .. DART 2022. 4. 7. [에러] outside valid range for the datatype INTEGER 에러 발생 및 해결 사건의 발단 DataTable에서 데이터를 조회하는데, 10개씩 조회를 했으나 결과 행이 2개, 3개 밖에 나오지 않는 현상을 발견 서버 점검 톰캣 로그를 확인해 보니, 아래의 에러가 출력되고 있는 것을 확인하였음 ~~ is outside valid range for the datatype INTEGER 처음에는 DB 컬럼에 너무 큰 숫자가 들어갔나 싶어, 해당 컬럼(7번째 컬럼)의 data type을 확인하였다. >> data type은 BIGINT로, DB에 값이 잘 들어가 있었다. >> DB에 insert 하는 과정에서 일어난 에러가 아닌 것을 확인 >> 자바에서 해당 값을 select 해오는 과정에서 일어난 에러라고 추측 내부 테스트 해당 컬럼의 크기를 INTEGER의 최대 크기(2,147,483.. JAVA 2022. 3. 18. [JAVA] JAVA EMOJI PARSER / 이모지 제거 라이브러리의 한계와 극복하기 / 제로너비결합자(ZWJ) / 변형선택기의 함정 / 이모지의 결합 이모지 제거 라이브러리의 한계가 드러나고 말았다. 이모지................................... 저번 포스팅을 보면 알 수 있듯이 기존의 방법은, 이모지를 바이트 크기로 1차 걸러냄 > 이모지 라이브러리를 통해 2차로 파싱함 이였다. 하지만, 2차에 걸친 이모지 필터링에도 또 허점이 드러나고 말았는데, 이모지 라이브러리의 한계 1) 최근 버전의 라이브러리라고 할지라도, 이모지가 새로 생겨나는 속도를 따라가지 못함 2) 이모지의 확장으로 인한 폭 없는 접합자(zero width joiner, ZWJ)/ 변형 선택기(variation selectors)의 등장 >이모지를 DB에 저장할 때와 쿼리로 조회할 때 값이 계속 달라지고, 앞에 물음표가 붙는 경우가 생겨 정상적으로 조회가 되지 .. JAVA 2022. 3. 3. 이전 1 2 3 4 5 ··· 8 다음