분류 전체보기
-
[기타] ePub (electronic publication)카테고리 없음 2020. 1. 19. 04:18
EPUB(Electronic publication) - 국제 디지털 출판 포럼(IDPF)에서 제정한 개방형 자유 전자서적 표준. - HTML과 CSS의 일부분을 차용한 오픈된 파일포맷 표준, 새로나온 epub 3 버전은 HTML5 + CSS3을 기반으로 한다. - DRM은 표준이 없으나 Adobe DRM이 업계 표준, 그러나 국내에선 보안문제, 비싼 라이센스 비용 때문에 국내 DRM을 사용한다. - PDF보단 HTML에 가까움, 웹기반 ePub 뷰어를 만들기도 쉽다. 지원기기 Windows - 나모, 리디북스, 유페이퍼, Calibre(오픈소스), EPUB File Reader Android - Moon Reader, 깃든 리더, 리디북스, 구글 플레이 북 IOS - Apple Books, 깃든 리더 M..
-
돔과 가상돔의 개념 및 차이점카테고리 없음 2019. 12. 23. 02:42
돔 (DOM; Document Object Model, 문서객체모델) 기존에 React나 Vue와 같은 SPA(Single Page Application) 을 위한 프레임워크(or 라이브러리) 가 나오기 전까지는, 자바스크립트로 인한 HTML에 동적인 변경이 있을 경우 전체 페이지를 검색해(DOM Tree를 검색해서) 해당 부분을 교체 한 후 전체 페이지에 대해 재 렌더링을 해주었다. 아주아주 간단한 코드로 예시를 들어보자. let node = document.getElementById("myNode"); 위 코드의 document가 DOM 객체라 볼 수 있는데, 기존에는 위와같이 HTML 구조 전체를 가지고 있는 document라는 객체를 이용해 해당 HTML 문서를 동적으로 수정할 수 있었다. SPA..
-
[Error] Native module ~~ tried to override ~~ for module name ~~Dev/React Native 2019. 11. 10. 00:34
아.. Expo kit으로 Eject 시킨 후에 삽질을 많이 하게 된다. 제목과 같은 에러를 발견하게 되면 두가지 처리를 해주자. 1. ${ProjectRoot}/android/app/src/main/java/host/exp/exponent/MainApplication.java 의 getPackages() 함수의 리턴값이 중복되는지 확인하고 중복되는 값을 제거해주자. (import 선언문도 중복되어 있을 수 있으니 같이 확인해보자.) 2. ~~ 해당 라이브러리의 ${ProjectRoot}/node_modules/${Lib}/android/src/main/java/com/reactnativecommunity/${Lib}/${Lib}Module.java 맨 마지막에 아래와 같은 메서드를 추가해주자.. @Ov..
-
React Native Expo Eject 정리 (to ExpoKit)Dev/React Native 2019. 11. 2. 03:50
토이프로젝트를 하다가, kakao-login, naver-login 연동을 하기위해 여러가지 실험과 삽질들을 하게되었다. WebView로 해결하는 방법이 있었지만 나중에 또 이런 상황이 올 수 있을 것 같아 Native 모듈을 쓰기 위해 그냥 Expo에서 Eject 하기로 결정했다. Google 로그인이나, Facebook 로그인 같은 경우에는 굳이 Eject 하지 않아도 진행이 가능한 것 같은데, 아무래도 비교적 최신 기술이기 때문에 우리나라는 지원이 조금 늦는 듯 하다. 어쨌거나, 중간에 잘못될 수도 있기에 git 저장소에 커밋을 해두고 안전하게 진행했다. - expo Eject 명령 실행 IOS Identifier 값과 Android Package 값을 입력하는 절차가 있다. 해당 식별자 들은 Ap..
-
자바스크립트 - 객체지향 프로그래밍 - Class 만들기Dev/Javascript 2019. 10. 25. 23:37
자바스크립트는 프로토타입 기반 객체지향 언어이기 때문에 Java와 같은 언어처럼 클래스가 없습니다. 그러나 프로토타입 체인과 생성자함수를 이용하면 클래스와 같은 기능을 하는 함수를 만들 수 있습니다. 이번엔 자바스크립트의 특성을 이용해 클래스를 만드는 makeClass 함수를 만들어보도록 하겠습니다. - makeClass는 상속받을 객체를 인자로 받아 부모 함수를 상속받는 자식 클래스를 만듭니다. 만들고자 하는 함수의 활용은 다음과 같습니다. var SuperClass = makeClass(obj); var SubClass = SuperClass.makeClass(obj); 함수 makeClass는 다음과같이 구성됩니다. function makeClass(obj) { /* 1. 자식클래스 생성 2. 생성..
-
자바스크립트 - 객체지향 프로그래밍 - 캡슐화 (2)Dev/Javascript 2019. 10. 25. 21:44
이전 포스팅에서 자바스크립트의 기본적인 캡슐화 구현 방법을 알아보았습니다. 이번엔, 여러 유명 자바스크립트 라이브러리에서 사용하는 캡슐화 패턴을 알아보도록 할게요. - 모듈패턴 var Person = function(arg) { var name = arg ? arg : "junyoung"; return { getName: function() { return name; }, setName: function(arg) { name = arg; } }; }; var me = Person(); console.log(me.getName()); 위의 코드를 보면 Person 함수를 호출하여 객체를 리턴받는 것을 볼 수 있죠. (이전 예제는 new로 인스턴스를 생성합니다) 리턴되는 객체에는 Person 함수의 지역변수..
-
자바스크립트 - 객체지향 프로그래밍 - 캡슐화 (1)Dev/Javascript 2019. 10. 25. 20:56
자바스크립트의 캡슐화를 알아보기 전, 객체지향 프로그래밍에서의 캡슐화부터 간단히 짚고 넘어가도록 하겠습니다. - 객체지향 프로그래밍에서의 캡슐화란 ? 비슷한, 관련된 역할을 하는 속성과 메소드들을 하나의 틀(클래스 등) 안에 담는 것을 의미합니다. - 캡슐화를 왜 할까요? 결론부터 말씀드리면 가장 중요한 이유는 정보은닉 때문입니다. 정보은닉이란, 객체에 대한 구체적인 정보를 노출시키지 않도록 하기 위한 기법입니다. - 예를들면? 사원의 속성 중에 "월급" 이라는 속성이 있다고 합시다. 만약 Public으로 누구나 "월급"이라는 속성에 접근할 수 있다면, 사원.월급 = -500000 와 같은 현실세계에선 불가능한 코드를 작성할 수 있게 되죠. 그러나, 캡슐화를 해서 월급이라는 속성을 직접적으로 접근을 못하..