전체 글 63

그누보드 6 과 비동기와 동기

Fastapi 는 파이썬 ASGI 서버 스펙을 준수하는 프레임워크다ASGI - 비동기 서버 게이트웨이 인터페이스 즉 요청을 비동기로 처리한다.그렇지만 그누보드6 은 DB커넥션은 동기식으로 되어있어서 쿼리실행구간에서 병목현상이 있다.   Asyc blocking 이다.그래서 부하가 높으면 커넥션 손실이 일어나고 사이트가 멈추게된다.물론 부하가 높으면 프로그램이 멈출 수 야 있지만 성능측정을 해보니 그누보드 6은 그누보드 5보다 성능이 떨어진다.DB 커넥션부터 비동기를지원하는 라이브러리로 바꾸고 sqlalchemy 에서 쿼리호출하는 부분도 비동기로 바꿔야된다.

부산 어린이대공원 코끼리의 죽음

대구코끼리를 보며 생각났다어릴적 부산동물원의 추억들이... 부산 서면은 참 다양한게 많았다한국에서 제일 오랜된서점인 영광도서, 하야리아부대도있었고 (지금은 시민공원이되었다.)어린이 대공원 , 성지곡수원지, 놀이동산, 삼광사 등등... 그 중에서 내가 자주 간곳은 부산어린이대공원에있는 동물원이였다.동물원에가면 언제나 대형동물들이 반가웠다그시절에는 코끼리에게 먹이를 줄 수가있었는데 과자랑 바나나를 잘먹었다커다랗지만 코로 잘받아먹는모습이 귀여웠다.그로부터 몇년후 코끼리가 나이들어 죽었다는 소식을 들어서 한참을 울었다.그 뒤로 동물원에는 코끼리가 살던 빈집만 덩그라니있었다.2010년대 쯤 부산시가 운영난을 겪으며 민간에 위탁하더니 지금은 그곳도 운영하지를 않는데,부산은 동물원이 없는 도시가 되고말았다.  문득 ..

일상 2023.10.12

장고 어드민 NoReverseMatch 에러

오늘의 오류 되시겠다 NoReverseMatch at /admin/content/content/add/ Reverse for 'content_content_change' with arguments '('',)' not found. 1 pattern(s) tried: ['admin/content/content/(?P.+)/change/\\Z'] 장고어드민에는 기본적으로 테이블의 모든 필드가 다표시되는데 그걸 커스텀하는과정에서 기본키 입력칸을 뺐더니 저장할때 저런에러메시지가 나온거였다. 2시간은 그냥 날린거같다. class ContentAdmin(admin.ModelAdmin): """ 내용관리 관리자 커스텀 """ list_display = [] # 추가, 변경시 화면에서 제외할 필드 # exclude =..

대댓글과 답글 구성에 방법에 대한 생각

최근에 제품을 리뉴얼 하면서 대댓글과 답글 쪽을 손볼일이 생겼다. 기존 그누보드 5 에서는 경로열거 방식을 사용하여 한자리씩 A~Z 까지 26개의 제한된 대댓글만 가능하다 요즘 사이트들을 보면 대댓글 대신 맨션을 쓰기도 하지만 대댓글로 한다고 해도 대댓글 26개제한은 너무적다. 대댓글 알고리즘들 대댓글, 답글은 크게 업데이트 방식과 업데이트 안하는 방식, 반업데이트 형으로 나뉜다 SQL 안티 패턴이라는 책을 보면 DB 를 이용해 계층형으로 데이터를 저장하는 5가지 방법이 소개되어있다. 항목별 쉽다 어렵다가 있는데 플젝진행하면서 성능을 측정하면서 각각이 뭔지 좀더 와닿았다 자식조회 : 페이징 없이 부모로부터 자식들을 전부 호출하는것 트리조회: 트리조회 페이징을 하거나 중간부터 조회할 때 트리조회가 필요하다..

PHP 사용 분야

PHP 는 처음에 웹을 위한 템플릿 , 홈페이지 도구로 출발했으나현재는 튜링완전한 범용 언어로서 웹 뿐만아닌 CLI , GUI 앱을 제작하는 것도 가능합니다.또한 PHP 4.4 부터는 객체지향이 도입되어 5.3 에서는 패키지를 구분짓는 네임스페이스가 생겼습니다. 어떤 이는 pygame 처럼 C 의 SDL 을 래핑하여 게임을 만들거나 에뮬레이터를 제작하기도 하죠https://www.youtube.com/watch?v=A1wWRXh6kwY php 와 sdl 로 제작된 닌텐도 nes 에뮬레이터 PHP 를 cli 즉 터미널용으로 실행할때는 cron을 통한 배치작업이나 컴포저같은 라이브러리 관리툴을제작할 수있고 주력으로 쓰이는 분야는 웹입니다.PHP 의 대표적인 프레임워크는 라라벨, 심포니가 있으며CMS 로는 워..

PHP 2022.11.20

php 사용자에게 도움되는 사이트

https://modernpug.github.io/php-the-right-way/ PHP: The Right Way 한국어판쉽게 읽을 수 있는 PHP의 베스트 프랙티스, 코딩 표준, 권위있는 튜토리얼로의 링크를 제공합니다.modernpug.github.ioPHP The right way https://refactoring.guru/ko/design-patterns/catalog 디자인 패턴 목록 refactoring.guruPHP 를 비롯한 다양한 언어로 작성된 디자인 패턴 예시들입니다. https://laravel.kr/docs 라라벨 9.x라라벨 한글 메뉴얼 9.xlaravel.kr https://psr.kkame.net/ Introduction - 한글판 PHP Standards Recommend..

PHP 2022.11.20

코드이그나이터 4 REST API 주의점

코드이그나이터 4는 네임스페이스와 라우터에서 REST API를 지원합니다. 라우터 코드이그나이터 4를 설치하면 3과 마찬가지로 함수이름을 이용해서 라우팅이 됩니다. 자동라우터라고 합니다. app/config/Routes.php 파일에 $routes->setAutoRoute(true); 자동라우터 기능이 켜져있을때는 REST API 컨트롤러의 HTTP 메소드로 설정해도 우회방법이 생깁니다. Routes.php $routes->resource('City'); //컨트롤러 클래스를 등록 $routes->post('/', 'City::show'); //연결할 url과 메소드를 string 으로 넘김. show같이 보여주는건 보통 GET메소드를 씁니다. 여기서는 확인을 위해 post를 썼습니다. City 컨트롤러..

PHP 2022.04.14

스프링 보안 취약점 spring4shell

자바 9 jre9 이상에서 스프링프레임워크 환경에서 제로데이 취약점이 발견되었습니다. https://blog.alyac.co.kr/4601 새로운 Spring Java 프레임워크 제로데이, 원격 코드 실행 허용해 New Spring Java framework zero-day allows remote code execution Spring Core Java 프레임워크의 새로운 제로데이 취약점인 'Spring4Shell'이 공개되었습니다. 해당 취약점은 애플리케이션에서 인증되지 않은.. blog.alyac.co.kr https://tanzu.vmware.com/security/cve-2022-22963 cve-2022-22963 이 그것 인데요 특정 조합에서는 공격자가 post 요청만으로 원격으로 악성 js..

그누보드 보안 SQL 인젝션 방어하기

그누보드는 sql 쿼리를 문자열 그대로 취급하기에 sql 인젝션 공격 문제가 있습니다.SQL 인젝션 공격을 막기 위해서는 prepared statement 쿼리 일명 바인딩쿼리를 써야합니다.변수자리에 ? 를 넣고 나중에 값을 채우는 방식이라 SQL 인젝션 공격을 막는 확실한 방법입니다.예시)$query = 'select wr_id, wr_num, wr_subject from g5_write_free where wr_id =  ? '; 그누보드 자유게시판에서 게시글 id 가 1 인 글을 불러오는 쿼리입니다.wr_id = ?   //  그누보드에서 쓰는방법common.php 는 많은 일을 합니다.DB 연결, 확장, 라이브러리, 게시물 처리, POST, GET 문자열을 변수화시키는 것들 등등 common.ph..

PHP 2022.03.30