Repository: im-d-team/Dev-Docs
Branch: master
Commit: 785fb0814164
Files: 248
Total size: 1.4 MB
Directory structure:
gitextract_vbaffuo6/
├── .github/
│ └── workflows/
│ └── action.yml
├── .mergify.yml
├── Android/
│ └── application fundamentals.md
├── Browser/
│ ├── BrowserXY.md
│ ├── Cookie.md
│ ├── Cookie_Store.md
│ ├── FOUC.md
│ ├── HTTP2_Websocket.md
│ ├── IndexedDB_WebSQL.md
│ ├── Layer_Model.md
│ ├── WebWorker.md
│ ├── Worklet.md
│ ├── 웹 브라우저의 작동 원리.md
│ └── 최신_브라우저의_내부_살펴보기.md
├── CS/
│ ├── Binding.md
│ ├── Bomb-Lab(1).md
│ ├── Call-By-Sharing.md
│ ├── Counting-sort.md
│ ├── Graph.md
│ ├── Memory.md
│ ├── Radix-sort.md
│ ├── aspect-oriented-programming.md
│ ├── cohension&coupling.md
│ ├── compression.md
│ ├── dependency-inversion-principle.md
│ ├── grasp.md
│ ├── information_theory.md
│ ├── integer_representation.md
│ ├── interface-segregation-principle.md
│ ├── liskov_substitution_principle.md
│ ├── methods_in_IPC.md
│ ├── non-blocking.md
│ ├── non-linear-search.md
│ ├── open-closed-principle.md
│ ├── soc.md
│ ├── srp.md
│ ├── union-find.md
│ ├── 페이징과 세그먼테이션.md
│ └── 플로이드-와샬-알고리즘.md
├── CSS/
│ ├── CJK.md
│ ├── WebToMobile.md
│ └── safe-area.md
├── Database/
│ ├── DB Connection Pool.md
│ ├── Query Builder ( Knex.js).md
│ └── Types of Databases.md
├── Deprecated/
│ ├── AMD와 CommonJS.md
│ ├── Async-Await.md
│ ├── B_EventLoop.md
│ ├── B_Module.md
│ ├── CORS(Cross-Origin Resource Sharing).md
│ ├── CSS 애니메이션 vs JS 애니메이션.md
│ ├── CallByReference.md
│ ├── EventLoop.md
│ ├── EventLoop_Advanced.md
│ ├── Funtional.md
│ ├── Higher_Order_Functions.md
│ ├── Javascript_BuildTool.md
│ ├── Module.md
│ ├── Promise1.md
│ ├── Promise2.md
│ ├── Reactive.md
│ ├── Repaint와 Reflow.md
│ ├── WebWorker.md
│ ├── animation.md
│ ├── setState.md
│ ├── 기본적인 렌더링 최적화 방법.md
│ ├── 웹 브라우저의 작동 원리.md
│ └── 점진적향상_우아한하향.md
├── Design_Pattern/
│ ├── Composite.md
│ ├── JSP model.md
│ ├── MSA.md
│ ├── MVC1, MVC2.md
│ ├── MVC_MVP_MVVM.md
│ ├── Memoization.md
│ ├── RxJS.md
│ ├── Singleton.md
│ └── Throttle and Debounce.md
├── ECMAScript/
│ ├── ArrowFunction.md
│ ├── Destructuring_Assignment.md
│ ├── ECMA2019.md
│ ├── ES6-module-in-Browser.md
│ ├── Generator와 async-await.md
│ ├── Includes_IndexOf.md
│ ├── Iteration_Protocol.md
│ ├── ModulePattern_class.md
│ ├── Number_isNaN.md
│ ├── Spread_Operator.md
│ └── Tagged_Template_Literals.md
├── Git/
│ └── gitBy_.git.md
├── HTML/
│ ├── ARIA.md
│ ├── DOM API.md
│ ├── DOM.md
│ ├── HTML-Templating.md
│ ├── Head_Meta.md
│ ├── Standard&QuirksMode.md
│ ├── WebM&WebP.md
│ ├── input태그의_value바꾸기(input태그의_dirty flag).md
│ ├── preload&prefetch.md
│ └── 웹 컴포넌트(Web Component).md
├── Java/
│ ├── ArrayList vs LinkedList 그리고 Vector.md
│ ├── Comparable vs Comparator.md
│ ├── Dependency Injection(DI).md
│ ├── JSP와 Servlet처리.md
│ ├── JVM(Java Virtual Machine).md
│ ├── Java Garbage Collection(GC).md
│ ├── Mybatis.md
│ ├── Set.md
│ ├── String, StringBuilder, StringBuffer.md
│ ├── String,StringBuilder, StringBuffer차이.md
│ ├── Upcasting과 Downcasting.md
│ ├── WAS.md
│ ├── copy-object.md
│ ├── date-api-in-java.md
│ └── junit-setup.md
├── Javascript/
│ ├── Ajax.md
│ ├── Animation.md
│ ├── B_Async.md
│ ├── B_Call_Apply_Bind.md
│ ├── B_Callback.md
│ ├── B_Class.md
│ ├── B_Function.md
│ ├── B_Type.md
│ ├── Build Tool.md
│ ├── CallStack.md
│ ├── Closure.md
│ ├── Control_CSSOM.md
│ ├── DocumentFragment.md
│ ├── Event Delegation.md
│ ├── InsertAdjacentHTML.md
│ ├── JavaScript의 this.md
│ ├── Javascript_Engine.md
│ ├── Javascript_메모리관리.md
│ ├── Javascript의_동작원리-변수객체(VariableObject).md
│ ├── Javascript의_동작원리-실행컨텍스트(Execution Contexts).md
│ ├── Jest.md
│ ├── Learning_more_about_this.md
│ ├── Module.md
│ ├── MouseEvent.md
│ ├── Object.create&Object.assign.md
│ ├── Observer.md
│ ├── Optional_Chaining.md
│ ├── PromisePattern.md
│ ├── Prototype_Chain.md
│ ├── Proxy.md
│ ├── Reduce.md
│ ├── Redux State 정규화.md
│ ├── Regular_Expressions.md
│ ├── Scope.md
│ ├── Some_Every.md
│ ├── Storybook.md
│ ├── Sync&Async_Multi&Single_Thread.md
│ ├── TimeInJS.md
│ ├── Variable.md
│ ├── WebRTC.md
│ ├── Web_Storage_API.md
│ ├── ajax(2).md
│ ├── bind.md
│ ├── object.md
│ ├── object_create_pattern-constructor.md
│ ├── object_생성패턴.md
│ ├── prototype(2).md
│ ├── prototype.md
│ ├── scope_this.md
│ ├── throttling과 rAF.md
│ ├── tricks_of_js.md
│ ├── underscore와 lodash그리고 Native.md
│ ├── window.history.md
│ ├── 논리연산자.md
│ ├── 렉시컬_속이기(eval).md
│ ├── 배열 내장함수.md
│ ├── 상태관리 라이브러리.md
│ ├── 이벤트 루프(Event Loop).md
│ ├── 클래스(class).md
│ ├── 클로저.md
│ └── 함수 선언.md
├── LICENSE
├── Language/
│ ├── Currying.md
│ ├── Lamda.md
│ ├── Reactive.md
│ ├── XML_JSON.md
│ ├── 고차함수(High Order Function).md
│ └── 함수형 프로그래밍.md
├── ML/
│ └── 머신러닝이란.md
├── Network/
│ ├── 3-way handshaking & 4-way handshaking.md
│ ├── CORS.md
│ ├── DHCP&DNS.md
│ ├── Flow control.md
│ ├── HTTP3.md
│ ├── IP.md
│ ├── JSend.md
│ ├── OSI7 Layer.md
│ ├── REST API.md
│ ├── REST.md
│ ├── SOAP API.md
│ ├── Subnetmask.md
│ ├── Switch.md
│ ├── TCP & UDP.md
│ ├── TypesOfIP.md
│ ├── comet.md
│ ├── congestion control.md
│ ├── get&post.md
│ ├── http-caching.md
│ ├── 로드밸런싱 & 클러스터링.md
│ └── 사용자 인증 방식(Cookie, Session & oAuth 2.0 & JWT).md
├── Node.js/
│ ├── make_meta_file.md
│ └── nodejs의_특징.md
├── OpenCV/
│ └── 이미지전처리.md
├── Performance/
│ ├── DeadLock(교착상태).md
│ ├── HTTP2.0의 필요성.md
│ ├── Reflow Repaint.md
│ ├── Throttling vs Debouncing.md
│ ├── requestAnimationFram(rAF).md
│ ├── 기본적인 렌더링 최적화 방법.md
│ ├── 서버 사이드 렌더링(SSR).md
│ └── 점진적향상_우아한하향.md
├── README.md
├── React/
│ ├── Component, Props, State.md
│ ├── Composition.md
│ ├── Element와 Component.md
│ ├── ImmutableState.md
│ ├── React Server Components.md
│ ├── React.memo.md
│ ├── React의 Lifecycle Event.md
│ ├── SWR.md
│ ├── Virtual DOM.md
│ └── props와 state.md
├── Rules/
│ ├── Commit.md
│ └── Markdown.md
├── Security/
│ ├── HTTPS와 SSL.md
│ ├── Response_Header_Security.md
│ ├── SQL_Injection.md
│ └── 리만가설과 소수정리.md
├── Tool/
│ ├── Chrome_80_DevTool.md
│ ├── Framework vs Library.md
│ └── Package Manager.md
├── Typescript/
│ ├── 인터페이스(Interface).md
│ ├── 정적 타이핑.md
│ ├── 제네릭(Generic).md
│ └── 클래스(class).md
├── Vue/
│ └── Vue_LifeCycle.md
├── WPF/
│ └── wpf.md
└── assets/
├── IndexDB/
│ ├── TodoList/
│ │ ├── index.html
│ │ ├── js/
│ │ │ ├── indexDB.js
│ │ │ └── todo.js
│ │ └── todoStyle.css
│ └── index2.html
└── TEST/
├── bigfile.html
└── window.history.demo.html
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/workflows/action.yml
================================================
name: "Pull Request Action"
on:
pull_request:
types: [opened]
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Create link
uses: Im-D/Im-Bot/packages/pr-supporter@master
with:
myToken: ${{ secrets.GITHUB_TOKEN }}
- name: Create reviewRequest
uses: Im-D/Im-Bot/packages/pr-reviewer@master
with:
myToken: ${{ secrets.GITHUB_TOKEN }}
- name: Create Link at README file
uses: Im-D/Im-Bot/packages/update-readme@master
with:
myToken: ${{ secrets.GITHUB_TOKEN}}
linkLocTarget: '### 📅 History'
================================================
FILE: .mergify.yml
================================================
pull_request_rules:
- name: Automatic merge on review
# https://doc.mergify.io/examples.html#require-all-requested-reviews-to-be-approved
conditions:
- "#approved-reviews-by>=4"
- "#changes-requested-reviews-by=0"
- base=master
- label=approval + 3
actions:
merge:
method: merge
delete_head_branch: {}
- name: Add Label needs author response
conditions:
- "#changes-requested-reviews-by>=1"
actions:
label:
add: ["needs author response"]
remove: ["needs review"]
- name: Remove Label needs author response
conditions:
- "#changes-requested-reviews-by=0"
actions:
label:
add: ["needs review"]
remove: ["needs author response"]
- name: Add Label approval + 1
conditions:
- "#approved-reviews-by=1"
actions:
label:
add: ["approval + 1"]
- name: Add Label approval + 2
conditions:
- "#approved-reviews-by=2"
actions:
label:
add: ["approval + 2"]
remove: ["approval + 1"]
- name: Add Label approval + 3
conditions:
- "#approved-reviews-by=3"
actions:
label:
add: ["approval + 3"]
remove: ["approval + 2"]
================================================
FILE: Android/application fundamentals.md
================================================
# 안드로이드 (Android)
Android 앱은 Kotlin, Java, C++ 언어를 사용하여 작성할 수 있습니다. Android SDK(Software Development Kit) 도구는 모든 데이터 및 리소스 파일과 함께 코드를 컴파일하여 하나의 **APK(Android PacKage)** 를 만듭니다. Android Package는 접미사가 .apk인 아카이브 파일입니다. 한 개의 APK 파일에는 Android 앱의 모든 콘텐츠가 들어 있으며, Android로 구동하는 기기가 앱을 설치할 때 바로 이 파일을 사용합니다.
Android 시스템은 **최소 권한의 원리( Principle of least privilege )** 를 구현합니다. 다시 말해, 각 앱은 기본적으로 자신의 작업을 수행하기 위해 **필요한 구성 요소에만 액세스 권한을 가지고 그 이상은 허용되지 않습니다.** 이렇게 하면 대단히 안전한 환경이 구성되어 앱이 시스템에서 권한을 부여받지 못한 부분에는 액세스할 수 없게 됩니다.
앱이 다른 앱과 데이터를 공유하고 시스템 서비스에 액세스하는 방법은 여러 가지가 있습니다. 그 중에서 '권한'을 살펴보도록 하겠습니다. 앱은 사용자의 연락처, SMS 메시지, 마운트 가능한 저장소(SD 카드), 카메라, 블루투스를 비롯한 여러 가지 기기 데이터에 액세스할 '권한'을 요청할 수 있습니다. 사용자는 이러한 **권한(Permission)** 을 명시적으로 부여해야 합니다.
> 권한(Permission) 부여하는 방법
앱은 앱 매니페스트에
#### Activity Life Cycle
### 2) Services
Service는 **백그라운드**에서 오래 실행되는 작업을 수행할 수 있는 애플리케이션 구성 요소이며 **사용자 인터페이스를 제공하지 않습니다.**
- [포그라운드] 사용자가 다른 앱에 있는 동안에 *백그라운드에서 음악을 재생*한다.
- [백그라운드] 사용자와 액티비티 간의 상호작용을 차단하지 않고 *네트워크를 통해 데이터를 가져온다*.
- [바인드] 다른 구성 요소(예: 액티비티)가 서비스를 시작한 다음 실행되도록 두거나 자신에게 *바인딩*하여 상호작용한다. (라이브 배경화면, 알림 리스너, 화면 보호기, 입력 메서드, 접근성 서비스 및 여러 가지 기타 핵심 서비스 기능)
시작된 서비스는 작업이 완료될 때까지 해당 서비스를 계속 실행하라고 **시스템**에 지시합니다.
```xml
#### 암시적 인텐트 수신하기
앱이 수신할 수 있는 암시적 인텐트가 어느 것인지 알리려면,
` 태그 바로 위에 위치시키곤 한다. 하지만 이를 `
`태그 안으로 위치시킴으로써 `FOUC`를 개선할 수 있다. 하지만 이 방법으로는 웹 폰트나 `@import`를 사용한 CSS로 인한 `FOUC` 발생을 막을 수는 없다. ### FOUC 발생 위치의 컴포넌트 숨기기 `@import` 사용으로 인한, 웹 폰트로 인한 `FOUC`발생을 막기 위해서는 `FOUC`가 발생하는 위치의 컴포넌트를 숨겼다가 웹 폰트 혹은 참조(`@import`) CSS의 로딩이 완료되면 보여주는 방법이 있다. 물론, 숨기는 것은 한 예시일 뿐이고 로딩바를 보여준다거나 스켈레톤 UI를 보여준다거나 할 수 있다. ```html