2020년 4월 22일 수요일

PHP 변수 명명규칙

그러하다 ! 
  • 변수는 $로 시작한다.(사용자 명시 없어도 타입을 자동으로 처리한다.) 
In PHP 7, type declarations were added 아마도 가독성과 실수 때문이리라
  • 변수는 언더스코어 또는 일반 문자(영)로 시작한다.
  • 변수명 첫 글자를 숫자로 시작할 수 없다.
  • 변수명은 대소문자의 같은 이름은 서로 구별된다 ($age $Age는 서로 다른 변수 )
  • 상수를 다루려면 $을 붙이면 안된다. 


변수의 영역은 이렇게 존재한다.
 local
 global
 static


안드로이드 기본 Layout 속성 의미정리



참고
https://www.tutorialspoint.com/android/android_ui_design.htm

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


액티비티 생명주기 (LifeCycle) : 네이버 블로그



한국어가 필요하다고 느끼시면 여기로 가시면 됩니닷
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

2020년 4월 19일 일요일

CGI란 무엇인가



1. 규약
2. 프로그램이나 SW (PERL)





참고
https://kldp.org/node/73386

웹서버 대체 무엇인가

웹 서버 

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
데이터 구조와 연산을 분리하여 데이터 구조 변경없이 데이터 연산을 추가할 수 있음



2020년 4월 14일 화요일

디자인 패턴

디자인 패턴의 4요소 

패턴 이름
 -설계의 의도를 표현
문제 
 -언제 패턴을 사용하는가를 서술
해법 
 -설계를 구성하는 요소들과 요소들과의 협력관계 서술
결과
 -디자인 패턴의 결과물과 장단점을 서술 


디자인 패턴의 종류로 -> 생성패턴, 구조패턴, 행위패턴

생성패턴 : 객체의 생성방식을 결정한다. 
구조패턴 : 객체를 조직화하는 일반적인 방법을 제시 
행위패턴 : 객체의 행위를 조직화 관리 , 연합한다.

사실 이렇게 글만 써놓고 보면 잘 와닿지 않는다. 

다음 글을 통해 자세히 살펴보자

2019년 12월 11일 수요일

cocos2d를 다루던 중 Sprite에서 에러를 맞이 하고 있는 당신에게


void GameScene::onTouchMoved(Touch* touch, Event* unused_event) {
          Vec2 location = touch->getLocation();
       
                   flightMove(location);
}


void GameScene::flightMove(Vec2 location) {
          if (beganTouchVec2 != location) {
                   Vec2 v2 = location - beganTouchVec2;
                   flight->setPosition(flight->getPosition()+ v2);
          }
          beganTouchVec2 = location;

}


이전 위치가 아니라 터치가 움직였다면 포지션을 바꿔주는 방법이었는데
요 moved 함수에 잘 못 넣었다가 크게 당했다.
조금만 생각해보면 flight객체가 지워지는 순간 애러가 발생하는 것을 ..
flight 객체가 지워지면 내가 작성했던 코드에서는  Gavaover 이미지가 띄워지고 모든 스케쥴이 중단된다. 리스너를 해체해줄까 이런 생각도 들었지만 조금 더 내 귀잖음이 나를 생각의 길로 이끌었다.

 한참 고민하다가 Unity에서 하던 방식이 생각났다.

좋았어

update 스케쥴을 선언하여

void GameScene::update(float delta) {
flightMove(onTouchMovedV2);
}
이렇게 바꾸었다. 물론 .. onTouchMovedV2 저기 위에 있는 location Vec2 값이다.
중요한건 이 에러를 검사 당일날 봤다는 것 ..
고치지 못했다 후 .. 그래도 내 학점과 바꿔서 답을 찾아 냈다 !

우린 답을 찾을 것이다. 늘 그랬듯이
-인터스텔라-

누가 내 머리도 update 해주면 안되냐




© 특히하고 특별한
Maira Gall