- 비트맵 파일
- 나인 패치(크기 조절 가능한 비트맵)
- 상태 목록
- 셰이프
- 드로어블 애니메이션
- 기타 드로어블
2020년 4월 23일 목요일
android AsyncTask 왜 사용할까 ?
Main Thread?
UI Thread?
AsyncTask를 포스팅 하는데 저 위에 쓰레드들이 거슬린다.
그래서 찾아보니
안드로이드의 메인스레드는 주요 컴포넌트를 실해하는 곳이면서, UI Thread를 갱신하거나 수행하는 유일한 Thread 이다. 그래서 메인 스레드를 UI Thread라고 부르는 경우도 있다.
AsyncTask 아니 이놈은 왜? 써야할까
서칭하면 대부분 httpConnetction을 사용과 함께 십중팔구 AsyncTask를 사용한다.
AsyncTask 흐름과 구성 설명으로는 내 궁금증이 해소되지 않는다.
그렇기에 찾아봤다.
안드로이드 화면에서 View ViewGroup은 싱글스레드 모델을 원칙으로 돌아간다. 긴 시간이 걸리는 작업을 메인 Thread에서 담당한다면 애플리케이션 반응성이 떨어질 수 있고, 사용자의 불편함이 증가한다. 그래서 긴 작업에 대한 접근으로 여분의 스레드를 메인 Thread와 분리
해야 하고,메인 Thread와 다른 쓰레드간 통신하는 방법이 필요하게 된다.
HandlerThread, Thread 등을 관리해야 하는 코드를 작성해야 한다.
다만 AsyncTask를 사용하면 가독성도 높아질 수 있고 쓰레드에 대한 개념을 알고 사용하면 좋겠지만 잘 모르는 사람도 캡슐화가 잘 되어있어서 사용가능하다.
궁금증 해결 완료! !
참고
https://academy.realm.io/kr/posts/android-thread-looper-handler/
https://itmining.tistory.com/5
UI Thread?
AsyncTask를 포스팅 하는데 저 위에 쓰레드들이 거슬린다.
그래서 찾아보니
안드로이드의 메인스레드는 주요 컴포넌트를 실해하는 곳이면서, UI Thread를 갱신하거나 수행하는 유일한 Thread 이다. 그래서 메인 스레드를 UI Thread라고 부르는 경우도 있다.
AsyncTask 아니 이놈은 왜? 써야할까
서칭하면 대부분 httpConnetction을 사용과 함께 십중팔구 AsyncTask를 사용한다.
AsyncTask 흐름과 구성 설명으로는 내 궁금증이 해소되지 않는다.
그렇기에 찾아봤다.
안드로이드 화면에서 View ViewGroup은 싱글스레드 모델을 원칙으로 돌아간다. 긴 시간이 걸리는 작업을 메인 Thread에서 담당한다면 애플리케이션 반응성이 떨어질 수 있고, 사용자의 불편함이 증가한다. 그래서 긴 작업에 대한 접근으로 여분의 스레드를 메인 Thread와 분리
해야 하고,메인 Thread와 다른 쓰레드간 통신하는 방법이 필요하게 된다.
HandlerThread, Thread 등을 관리해야 하는 코드를 작성해야 한다.
다만 AsyncTask를 사용하면 가독성도 높아질 수 있고 쓰레드에 대한 개념을 알고 사용하면 좋겠지만 잘 모르는 사람도 캡슐화가 잘 되어있어서 사용가능하다.
궁금증 해결 완료! !
-끝-
참고
https://academy.realm.io/kr/posts/android-thread-looper-handler/
https://itmining.tistory.com/5
HTTP headers | Content-Type
3가지로 분류된다.
media type
charset
boundary
https://www.geeksforgeeks.org/http-headers-content-type/
PHP Superglobal
$GLOBALS
$x = 75;
$y = 25;
function addition() {
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
addition();
echo $z;
$y = 25;
function addition() {
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
addition();
echo $z;
특이한 접근이 있다 선언 이후에 $x $y와 같이 선언하지 않았음에도 $GLOBALS가
접근 가능하다.
이 부분은 $GLOBALS z 가 이미 global 영역 z가 선언 된 것이 아닐까
참고
https://www.w3schools.com/php/php_superglobals_globals.asp
PHP array 정렬
sort() - 알파벳 순서대로
rsort() - 위에 꺼 거꾸로
asrot() - key value 중 value 값으로 정렬
ksort - key 값으로 정렬
arsort() - asrot() 거꾸로
rsort() - 위에 꺼 거꾸로
asrot() - key value 중 value 값으로 정렬
ksort - key 값으로 정렬
arsort() - asrot() 거꾸로
krsort()
- ksort() 거꾸로PHP array (배열)
3종류가 있다.
Indexed arrays
$alphabet = array("A", "B", "C");
echo $alphabet[0] . $alphabet[1];
AB 값이 출력된다.
Associative arrays
$alphabet = array("A"=>"32", "B"=>33, "C"=>34);
echo $alphabet['A'] . "," . $alphabet['B'];
32,33 값이 출력된다.
Multidimensional arrays
$Ramen = array
(
array("신라면",13,"750"),
array("열라면",20,600),
array("틈새라면",5,900)
);
for ($row = 0; $row < count($Ramen); $row++) {
echo "<p><b>Row number $row</b></p>";
echo "<ul>";
for ($col = 0; $col < count($Ramen[0]); $col++) {
echo "<li>".$Ramen[$row][$col]."</li>";
}
echo "</ul>";
}
Row number 0
Indexed arrays
$alphabet = array("A", "B", "C");
echo $alphabet[0] . $alphabet[1];
AB 값이 출력된다.
Associative arrays
$alphabet = array("A"=>"32", "B"=>33, "C"=>34);
echo $alphabet['A'] . "," . $alphabet['B'];
32,33 값이 출력된다.
Multidimensional arrays
$Ramen = array
(
array("신라면",13,"750"),
array("열라면",20,600),
array("틈새라면",5,900)
);
for ($row = 0; $row < count($Ramen); $row++) {
echo "<p><b>Row number $row</b></p>";
echo "<ul>";
for ($col = 0; $col < count($Ramen[0]); $col++) {
echo "<li>".$Ramen[$row][$col]."</li>";
}
echo "</ul>";
}
Row number 0
- 신라면
- 13
- 750
- 열라면
- 20
- 600
- 틈새라면
- 5
- 900
결과 값이 출력된다.
PHP 변수 명명규칙
그러하다 !
- 변수는 $로 시작한다.(사용자 명시 없어도 타입을 자동으로 처리한다.)
# In PHP 7, type declarations were added 아마도 가독성과 실수 때문이리라
- 변수는 언더스코어 또는 일반 문자(영)로 시작한다.
- 변수명 첫 글자를 숫자로 시작할 수 없다.
- 변수명은 대소문자의 같은 이름은 서로 구별된다 ($age $Age는 서로 다른 변수 )
- 상수를 다루려면 $을 붙이면 안된다.
변수의 영역은 이렇게 존재한다.
local
global
static
android UI UX
UI에 대한 프로그램 추천
전반적인 black white UI 설명
https://material.io/design/color/dark-theme.html#properties
UI 움직임 페턴 설명 (app & user 상호작용)
https://material.io/design/material-studies/basil.html#motion
UI UX 모아놓은 사이트
https://monsterdesign.tistory.com/1630
화면찾기
https://medium.com/google-design/how-to-find-device-metrics-for-any-screen-62b9ad84d097
참고
https://www.mockplus.com/blog/post/android-ui-design-tool
한국어가 필요하다고 느끼시면 여기로 가시면 됩니닷
https://kairo96.gitbooks.io/android/content/ch2.4.1.html
Activity를 startActivity로 호출하는 경우 어디까지 호출될지 궁금하다
STOP()까지 호출 될 것 같다.
그렇다 그렇게 호출된다.
(호출되는 시점에 로그가 찍히도록 코드를 작성했음)
04-22 09:45:54.471 3627-3627/(패키지 이름)D/call onPause: OK
04-22 09:45:55.267 3627-3627/(패키지 이름) D/call onStop: OK
여기에서는 당연히 Destroy가 호출되지는 않는다.
그렇다면 어떻게 해야 Destroy를 호출할까 ?
StartActivity호출 후 finish()를 선언한다면 이런 Destroy 호출이 가능하다.
04-22 09:50:55.779 3885-3885/(패키지 이름) D/call Destroy: : OK
호출 메소드 설명을 간략하게 했다. 관심 있다면 읽어보자
사실 안드로이드를 만들고자 하는 독자들은 외우면 좋다. 나는 이해한답시고
자만하다 과제할 때 계속 들어가서 보곤 했다.
onCreate()
생성될 때 호출,사용자 인터페이스 초기화에 사용
onRestart()
엑티비티가 멈추고서 다시 시작되기 전 호출
onStart()
엑티비티가 사용자에게 보여지기 바로 직전에 호출
onResume()
엑티비티가 사용자와 상호작용하기 바로 전 호출
onPause()
다른 엑티비티가 보여질 때 호출, 데이터 저장 ,스레드 중지 등의 처리를 하기 적당
onStop()
엑티비티가 사용자에게 보여지지 않을 때 호출
메모리가 부족하다면 호출여부는 불투명
onDestroy()
엑티비티가 소멸될 때 호출됨
ex) finish() 메소드가 호출, 메모리 확보를 위해 호출
참고
https://kairo96.gitbooks.io/android/content/ch2.4.1.html
https://limkydev.tistory.com/32
https://brunch.co.kr/@mystoryg/80
2020년 4월 21일 화요일
코로나 조지기
https://www.ibs.re.kr/cop/bbs/BBSMSTR_000000000971/selectBoardArticle.do?nttId=18178
http://scienceon.hani.co.kr/?document_srl=283903
http://nifds.go.kr/brd/m_480/view.do?seq=13509&srchFr=&srchTo=&srchWord=&srchTp=&itm_seq_1=0&itm_seq_2=0&multi_itm_seq=0&company_cd=&company_nm=&page=1
http://scienceon.hani.co.kr/?document_srl=283903
http://nifds.go.kr/brd/m_480/view.do?seq=13509&srchFr=&srchTo=&srchWord=&srchTp=&itm_seq_1=0&itm_seq_2=0&multi_itm_seq=0&company_cd=&company_nm=&page=1
웹서버 대체 무엇인가
웹 서버
Cafe24를 이용한 프로젝트를 하면서도 사실 웹 서버에 대한 개념만 알고 있지
뭔가 뜬 구름 잡는 것 같아서 자세히 살펴보도록 한다.
우선 웹 서버는 서버 스크립트 파일을 실행하지 못한다.
그래서 CGI(Common Gateway Interface)를 사용하여 웹 서버는 php 파일을 처리합니다.
그렇게 하여 동적 웹페이지를 받을 수 있습니다.
사실 여기에서 이해과정 중 문제가 발생했다.
https://www.cafe24.com/?controller=product_page&type=basic&page=autoban
이 사이트에 들어가면 "php7 서버 환경에서는 cgi 사용이 불가능합니다." 이런 문구가 있는데
그렇다면 웹 서버 아파치 2가 있다 하더라도 php 실행이 안되는 것인가?
아니다 프로젝트에 ftp로 php를 전송해서 해당 URL에 php명을 붙여서
호출한 기억이 선명하다.
우선, 위 내용을 바탕으로 생긴 궁금증을 검색한 결과
아파치는 모듈을 통해 실행
또는
php가 cgi를 통해 실행
이 2가지 방법 중 하나로 실행되는 것 같다
아파치 모듈 사용법을 눈으로만 봤지 사용은 안해봐서 CGI와 무슨 차이인지는 모르겠다만
우선 이 2가지로 PHP를 처리할 수 있기에 CAFE 24 에서 CGI 사용 불가라는 내용이 있다 하더라도 php 실행이 되는 이유를 알 수 있다.
자세한건 또 시간이 나면 찾아보리다
참고
https://doorbw.tistory.com/29
https://stackoverrun.com/ko/q/4590516
2020년 4월 15일 수요일
패턴
생성(Creational)패턴
추상팩토리 패턴
빌더 패턴
프로토타입 패턴
사용 예 ( 몬스터 리스폰, NPC 아이템 창 구현..)
장점 : 다수의 객체 생성 시 비용을 줄일 수 있다.
단점 : class들이 clone함수를 구현해야 함
실글톤 패턴
구조패턴
어뎁터
장점: 호완성 문제로 같이 쓸 수 없는 Class를 사용할 수 있다
Composite
장점: 전체 부분의 관계를 갖는 객체들 사이의 관계를 정의할 때 유용
ex) 컴퓨터를 중심으로 (모니터, 마우스, 스피커 .. )
decoator
장점: 기본 기능에 추가할 기능이 많은 경우 유용
Facade
장점: 복잡한 소프트웨어를 사용할 수 있도록 간편한 인터페이스 제공
Flyweight
비용이 큰 자원이 중복되어 생성될 가능성이 높은 경우 좋음
Proxy
장점:원하던 작업을 수행하면서 부가적인 서비스 실행에 적합 ,객체 접근방법 제어
행위패턴
Interpreter
언어의 문법과 해석방법에 용이
ex)MySql 구문분석
Command
장점: 실행될 기능을 캡슐화하여 재사용성 향상
Iterator
장점: 집합객체 요소 접근/순회방법
Mediator
장점: 여러 객체들 사이에서 통신의 복잡함을 감소시켜준다.
Observer
장점: 일대다 관계에서 수정된 값이나 목표달성과 같은 알림을 보내는 데 유용.
State
장점: 객체에 따라 상황을 달리 할 수 있는 상황에서 유용
Strategy
장점: 전략 알고리즘을 쉽게 변화시킬 수 있음
Visitor
데이터 구조와 연산을 분리하여 데이터 구조 변경없이 데이터 연산을 추가할 수 있음
추상팩토리 패턴
빌더 패턴
프로토타입 패턴
사용 예 ( 몬스터 리스폰, NPC 아이템 창 구현..)
장점 : 다수의 객체 생성 시 비용을 줄일 수 있다.
단점 : class들이 clone함수를 구현해야 함
실글톤 패턴
구조패턴
어뎁터
장점: 호완성 문제로 같이 쓸 수 없는 Class를 사용할 수 있다
Composite
장점: 전체 부분의 관계를 갖는 객체들 사이의 관계를 정의할 때 유용
ex) 컴퓨터를 중심으로 (모니터, 마우스, 스피커 .. )
decoator
장점: 기본 기능에 추가할 기능이 많은 경우 유용
Facade
장점: 복잡한 소프트웨어를 사용할 수 있도록 간편한 인터페이스 제공
Flyweight
비용이 큰 자원이 중복되어 생성될 가능성이 높은 경우 좋음
Proxy
장점:원하던 작업을 수행하면서 부가적인 서비스 실행에 적합 ,객체 접근방법 제어
행위패턴
Interpreter
언어의 문법과 해석방법에 용이
ex)MySql 구문분석
Command
장점: 실행될 기능을 캡슐화하여 재사용성 향상
Iterator
장점: 집합객체 요소 접근/순회방법
Mediator
장점: 여러 객체들 사이에서 통신의 복잡함을 감소시켜준다.
Observer
장점: 일대다 관계에서 수정된 값이나 목표달성과 같은 알림을 보내는 데 유용.
State
장점: 객체에 따라 상황을 달리 할 수 있는 상황에서 유용
Strategy
장점: 전략 알고리즘을 쉽게 변화시킬 수 있음
Visitor
데이터 구조와 연산을 분리하여 데이터 구조 변경없이 데이터 연산을 추가할 수 있음
2020년 4월 4일 토요일
sql Nosql - > OLAP OLTP -> TP 모니터 -> ORB
http://blog.naver.com/PostView.nhn?blogId=skygrab&logNo=30102437276
https://technet.tmaxsoft.com/upload/download/online/tmax/pver-20140117-
000058/getting-started/ch01.html
https://ko.wikipedia.org/wiki/%EA%B0%9D%EC%B2%B4_%EC%9A%94%EC%B2%AD_%EB%B8%8C%EB%A1%9C%EC%BB%A4
http://blog.naver.com/PostView.nhn?blogId=skygrab&logNo=30102437276
https://technet.tmaxsoft.com/upload/download/online/tmax/pver-20140117-
000058/getting-started/ch01.html
https://ko.wikipedia.org/wiki/%EA%B0%9D%EC%B2%B4_%EC%9A%94%EC%B2%AD_%EB%B8%8C%EB%A1%9C%EC%BB%A4
피드 구독하기:
글 (Atom)