2020년 5월 26일 화요일

android layout으로 Width를 구해보자

2020년 5월 15일 금요일

쓰레드 오류와 해결 접근

쓰레드 오류가 났다
어렴풋이 알고 있었지만 오늘은 개념을 잡아보려고 한다.
우선 간단히 쓰레드란 ?
위키백과에 나온 정의는 ..
프로세스 내에서 실행되는 흐름의 단위를 말한다. 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있다. 이러한 실행 방식을 멀티스레드(multithread)라고 한다. 
 안드로이드에서는 MainThread에서 UI를 처리한다. 그렇기에 따른 쓰레드에서 UI를 실행하는 일은 없도록 해야한다. 내가 배웠던 방식중에 하나는 asynctask가 있었다. 이 이야기는 간략하게나마 포스팅을 했고 , 최근에는 Handler라는 방식을 알게 되었다.
handler는 UI 변경 시 sendMessage로 메세지 큐에 넣는다
필요 시 루퍼가 차례로 메세지를 꺼내 handlerMessage 메인쓰레드에게 넘겨주는 RUN()을 실행한다.





참고
https://devfarming.tistory.com/3
https://brunch.co.kr/@mystoryg/84
http://blog.naver.com/PostView.nhn?blogId=ssarang8649&logNo=220947884163
https://developer.android.com/reference/android/os/Handler#postAtTime(java.lang.Runnable,%20long)

2020년 5월 5일 화요일

Observer and Observable 차이

Observer

  • interface





Observable

  • class


참고 : https://www.javaworld.com/article/2077258/observer-and-observable.html

2020년 4월 29일 수요일

drawable

  • 비트맵 파일
  • 나인 패치(크기 조절 가능한 비트맵)
  • 상태 목록
  • 셰이프
  • 드로어블 애니메이션
  • 기타 드로어블

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

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;

특이한 접근이 있다 선언 이후에 $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() 거꾸로
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
  • 신라면
  • 13
  • 750
Row number 1
  • 열라면
  • 20
  • 600
Row number 2
  • 틈새라면
  • 5
  • 900
결과 값이 출력된다. 

PHP 반복문

PHP 반복문은
while 
while(condition){
          code
}


do..while

do {
       code} while (condition);


for
for (init i;  counter & condition  ; increment counter) {
    cod 
}


foreach 

foreach ($array as $value) {
  code

}


다른 프로그래밍(Java나 C#)과 비교해서  반복문 사용에는 큰 차이점은 없는 것 같다...

2020년 4월 22일 수요일

php 변수 영역

local global static 이 3가지다.

global변수를 함수내에서 다룰려면 $GLOBAL['index']
라던가
global 변수  이런 선언이 필요하다



© 특히하고 특별한
Maira Gall