전체 글 61

PHP 동작방식 - 생명주기

PHP 재단 소식 보다가 PHP internals Book을 정리한다고 해서 보게 되었습니다. 생명주기: 프로그램은 시작되고 어떤 것이 로딩되고 실행 후 끝나고 하는 생명주기가 있습니다. PHP The internals Book (PHP 내부 동작에 관한문서) 에 관련 내용이 자세하게 나와있습니다. PHP로 작성한 코드를 실행하는 환경은 크게 두 가지가 있습니다. 1) CLI (터미널에서 실행) 하나의 요청을 처리하는 환경, 2) 웹 서버와 SAPI 인터페이스를 통해 여러 웹 요청을 처리하는 환경입니다. 1. 의 경우 간단한데요 php -s 로 시작하는 php내장 개발 서버도 여기에 해당하죠 PHP 엔진에서 해당 프로그램을 실행 후 종료합니다. 2. 웹서비스를 하려면 PHP를 nginx , 아파치등 웹서..

PHP 2022.03.27

지구온난화와 프로그램

지구 온난화가 심각하죠 올겨울도 장난아니게 춥습니다. 파이썬과 PHP 성능 벤치마크를 보다가 이런 글을 봤습니다. 파이썬 창시자 귀도 반 로섬 "최대 약점인 속도 4년 내 최대 5배 향상 예정" - ZDNet korea 파이썬 창시자 귀도 반 로섬 "최대 약점인 속도 4년 내 최대 5배 향상 예정" 인기 프로그래밍언어 파이썬의 약점인 개발속도가 4년 내 최대 5배 빨라진다.최근 미국 지디넷에 따르면, 파이썬 창시자인 귀도 반 로섬은 파이썬 랭귀지 서밋 2021(Pyth... zdnet.co.kr MS에서 파이썬의 성능을 4년내 5배 향상시키겠다. 환경을위한 경영인 ESG 경영의 일환이기도 하고 실제로도 많은사람들이 빨라진 소프트웨어를 사용하면서 cpu등 전력소모가 줄면 도움이 되겠죠. PHP를 만든 라스..

PHP 8.1 의 변경점: 클래스 로딩 최적화

PHP 8.1 이 출시되었습니다. PHP 8.1 에는 Enum , Fiber 도입등 다양한것이 있지만 https://github.com/php/php-src/pull/6627 Inheritance cache by dstogov · Pull Request #6627 · php/php-src github.com PHP 프로세스 실행시 클래스 링킹과정을 캐시해서 파일이 변경되기전에 한번만 하게 바뀌었습니다. 5~8% 성능향상이 있다고 밝혔는데요 심포니와 같은 객체지향적으로 작성된 프레임워크들은 많은 클래스를 로딩하게됩니다. 클래스 참조 속도 향상과 링킹과정 캐시등으로 20%의 성능향상이 있네요 반면 절차지향적인 코드인 워드프레스는 3.5%정도로 성능향상이 미미합니다. 국내 CMS 인 그누보드도 성능향상은 미미..

PHP 2021.12.05

아이오닉 앵귤러를 써보면서 장점, 단점

.앵귤러를 쓰게 될줄은 꿈에도 몰랐습니다 사실 앵귤러는 전부터 꾸준히 점유율이 하락하고 있었고 신규로 쓰는곳이 있을까? 이런 생각이였거든요. 입사하고 보니 하이브리드앱이 앵귤러 JS와 앵귤러5 그리고 외주로 시작된 앵귤러10 이렇게 있네요 장점 - 앵귤러를 쓰기에 타입스크립트를 써야하고 아이오닉 프레임워크도 5버전은 비동기 컴포넌트위주로 되어있어 로딩이 개선되었습니다. 앵귤러의 RxJS 를 이용하여 스트림형태의 데이터를 구독하는 방식으로 쓸 수 있었습니다. - 리엑트에서는 RxJS는 리엑트의 생명주기랑 충돌되서 안맞다고 하더군요. 앵귤러의 주의사항은 AOT 컴파일을 하지않았을때 최적화 되지않아 속도가 상당히 느리다는 점이였습니다. AOT 컴파일을 하기위한 조건을 맞추려면 클래스 맴버변수를 public으로..

자바스크립트 2021.09.10

PHP 5.2에서 JSON_FORCE_OBJECT 대용

PHP json_encode 에는 다양한 옵션들이 있습니다. 그렇지만 PHP 5.3.3 버전 부터죠 회사에서 레거시 프로그램이 5.2 버전이라 json_encode 의 json_encode($data,JSON_FORCE_OBJECT); JSON_FORCE_OBJECT 를 못쓰고 있는데요. 아쉬운 딴에 json_decode(json_encode($data)); 로 쓰고 있습니다. 웹호스팅인상태라서 PHP 7 버전을 올리려면 서버를 멈춰야하는데 서버를 멈춰가면서 까지 하지는 마라더군요 사실 웹호스팅상태가 아니면 무중단 업그레이드 방법은 많은데 말이죠 아쉽습니다.

PHP 2021.07.05

PHP 에서 select 쿼리 결과값이 않나올 때

PHP mysqli 사용중에 일어난일 입니다. PHP 로 작업중에 mysql 콘솔에서 쿼리를 실행하면 결과가 나오는데 PHP에서 실행하면 row가 0 이 나왔습니다. xDebug로 디버깅하다보니 한글이 들어가면 안되더군요 바로 인코딩 문제였습니다. PHP mysqli로 연결할 때 mysqli_set_charset($conn,'utf8'); mysqli_set_charset()함수로 DB에 연결할 때 DB의 문자인코딩을 설정하면 됩니다. DB 문자열 설정일 euckr 이면 mysqli_set_charset($conn,'euckr'); 이 되겠죠 PHP뿐만 아닌 다른언어를 사용하더라도 발생할 수 있는 문제였습니다.

PHP 2021.06.28

PHP 연관배열과 autovivification - PHP 8.1

PHP 의 배열은 연관배열이며 autovivification기능이 있는데요 오토비비피케이션이란 변수를 배열로 자동으로 바꿔주는 기능입니다. Perl 언어에서 시작되어 PHP, Python 등이 영향을 받았습니다. 자바나 C++에도 특정 함수들을 이용하면 가능합니다만 PHP는 네이티브로 지원됩니다. 이번 PHP 8.1에서는 조금 바뀌는데 PHP 8.1에서는 변수가 false 값일 때 autovivification기능을 사용할 수없게 변경됩니다. 예) $answer = false; $answer['member'] = 'name'; 이렇게 false가 들어간 변수들은 연관배열로 쓸 수없게 됩니다.

PHP 2021.06.16

안드로이드 ID 가 변경되는 조건들 (android id) 정리

회사에서 기존 앱들 중에 사용자를 식별하기 위해 UUID 개념으로 안드로이드 ID를 쓰고있었습니다. Avoid using hardware identifiers. In most use cases, you can avoid using hardware identifiers, such as SSAID (Android ID), without limiting required functionality. android ID 는(ssaid 라고도 부르는) 구글에서 기기의 하드웨어 ID 대신 권장하고있는 식별자 입니다. 앱의 패키지 이름과 서명키에 해시값을 넣어서 생성되는 값입니다. android id는 변경될수 있기때문에 android id 를 이용해 사용자를 특정하려고 할때 주의가 필요합니다. -------- andr..

안드로이드 2021.04.14