• [리팩터링 카탈로그] 1-2. 함수 인라인하기

    [리팩터링 카탈로그] 1-2. 함수 인라인하기

    다형 메서드polymorphic method인지 확인한다. 인라인할 함수를 호출하는 곳을 모두 찾는다. 각 호출문을 함수 본문으로 교체한다. 하나씩 교체할 때마다 테스트한다. 함수 정의(원래 함수)를 삭제한다. 예시 Before: After: 출처 : 리팩터링 2판 – Chapter6

  • [리팩터링 카탈로그] 1-1. 함수 추출하기

    [리팩터링 카탈로그] 1-1. 함수 추출하기

    함수를 새로 만들고 목적을 잘 드러내는 이름을 붙인다(‘어떻게’가 아닌 ‘무엇을’ 하는지 드러나야한다). 추출할 코드를 원본함수에서 복사하여 새 함수에 붙여넣는다. 추출한 코드 중 원본 함수의 지역 변수를 참조하거나 추출한 함수의 유효범위를 벗어나는 변수는 없는지 검사한다. 있다면 매개변수로 전달한다. 변수를 다 처리했다면 컴파일한다. 원본 함수에서 추출한 코드 부분을 새로 만든 함수를 호출하는 문장으로 바꾼다(즉, 추출한 함수로 일을 […]

  • [리팩터링 카탈로그] 1. 기본적인 리팩터링

    [리팩터링 카탈로그] 1. 기본적인 리팩터링

    기본적인 리팩터링 함수 추출하기 함수 인라인하기 변수 추출하기 변수 인라인하기 함수 선언 바꾸기 변수 캡슐화하기 변수 이름 바꾸기 매개변수 객체 만들기 여러 함수를 클래스로 묶기 여러 함수를 변환 함수로 묶기 단계 쪼개기 출처 : 리팩터링 2판 – Chapter6

  • Intellij IDEA LiveReload 기능 사용하기

    1. dependency 추가 Maven Gradle 2. application.properties 추가 3. Intellij 환경설정 수정 Build project automatically 체크 4. Intellij Registry 수정 compiler.automake.allow.when.app.running 체크

  • PHP  생성자 오버로딩

    PHP 생성자 오버로딩

    PHP에서는 기본적으로 생성자 오버로딩이 되지 않는다.다른 방법으로는 func_get_args()를 이용한 방법과 팩토리 패턴을 이용한 방법이 있는데,func_get_args()를 이용하게 되면 인수를 검사기 위해 코드가 지저분해 질 수 있다.때문에 팩토리 패턴을 이용하는 방법을 추천한다. 팩토리 패턴을 이용

  • 드라이퍼스 모델(Dreyfus Model)

    드라이퍼스 모델(Dreyfus Model) 1 단계 : Novice 경험이 없기 때문에, 상황에 상관 없이 적용할 수 있는, 다시 말하면, 상황에 따라 적절하지 않을 수 있는, 조리법(recipes) 즉, context-free 한 규칙이 주어졌을 때 효과적으로 과업을 수행할 수 있다. 디버깅 기술 부족하다. 동일한 유형의 결함을 자주 반복한다. 계획을 따르지 않고 프로그램을 우연히 디버그한다. 디버깅에 상당한 시간을 소비합니다. 쉽게 […]

  • 도커 명령어

    Containers docker build -t friendlyhello . # Create image using this directory’s Dockerfile docker run -p 4000:80 friendlyhello # Run “friendlyname” mapping port 4000 to 80 docker run -d -p 4000:80 friendlyhello # Same thing, but in detached mode docker container ls # List all running containers docker container ls -a # List all containers, […]

  • [django-channels] 채널 요약

    채널이란 무엇입니까?   채널은 Django를 확장하여 두가지 중요한 기능을 허용하는 새로운 레이어를 추가합니다. 일반 뷰와 매우 유사한 방식으로 웹소켓 처리 Django와 동일한 서버에서 실행되는 백그라운드 작업 It allows other things too, but these are the ones you’ll use to start with. 어떻게? Django는 두 가지 프로세스 유형으로 구분됩니다.: HTTP 및 웹 소켓을 처리 뷰, 웹소캣 […]

  • TypeScript in 5 minutes

    TypeScript 설치 TypeScript 도구를 얻는 방법에는 크게 두 가지가 있습니다. npm을 통해 (Node.js 패키지 관리자) TypeScript의 Visual Studio 플러그인 설치 Visual Studio 2017 및 Visual Studio 2015 Update 3에는 기본적으로 TypeScript가 포함되어 있습니다. Visual Studio와 함께 TypeScript를 설치하지 않았다면 다운로드 할 수 있습니다. NPM 사용자의 경우 : npm install -g typescript 첫 번째 TypeScript 파일 만들기 편집기에서 다음 […]

  • php에서 암호화 mcrypt_encrypt를 사용하지 말고 Libsodium 또는 openssl_encrypt를 사용.

    php에서 암호화 mcrypt_encrypt를 사용하지 말고 Libsodium 또는 openssl_encrypt를 사용.

    mcrypt_encrypt를 사용하여 암호화 할 때, pkcs7 패딩 처리를 안해주면, openssl_decrypt나, 다른 언어 복호화에서 복호화가 불가능하다. 때문에 되도록 사용을 자제하고, 만약에 레거시 시스템에서 사용하게 되면, pkcs7 처리를 해줘야한다. https://ko.wikipedia.org/wiki/%EA%B3%B5%EA%B0%9C_%ED%82%A4_%EC%95%94%ED%98%B8_%ED%91%9C%EC%A4%80   예제 소스 <?php function pkcs7_pad($str) { $len = mb_strlen($str, ‘8bit’); $c = 16 – ($len % 16); $str .= str_repeat(chr($c), $c); return $str; } $message = […]