Session을 다루다 추가로 궁금한 것이 있어 여기에 남겨봅니다. 프로젝트에서 SessionHandlerInterface 구현체로 DatabaseSessionHandler 클래스를 사용하는 모습을 볼 수 있고, 이 클래스의 public functoin gc($maxlifetime) 메소드는 만료된 세션을 제거하는 용도로 사용하는 것을 알 수 있었습니다. 시스템 안에서 자동으로 gc($maxlifetime) 메소드가 호출 될 것으로 보이는데요. 이 경우 gc($maxlifetime) 메소드가 호출 될 때 파라미터로 전달되는 $maxlifetime 값(아규먼트)의 경우 php.init에 설정된 session_maxlifetime가 대입되는 것이 맞는지 궁금합니다. (물론 php.ini 설정을 PHP 코드로 하여금 변경할 수 있겠지만요.)
안녕하세요 선생님 휴일인데 죄송합니다. 저는 강의를 듣기전에 미리 한번 먼저 해보고 하는 방식으로 공부중입니다. 다만 로그인이나 프로필 수정쪽은 FBV를 사용해서 직접 구현을 하셔서 이번 비밀번호 변경도 FBV로 구현을 하겠구나 생각하고 AUTH앱의 PasswordChangeForm과 FBV로 구현해보고 강의를 수강하였습니다. 선생님께서는 CBV로 구현을 하셔서 질문드립니다. CBV와 FBV를 다양하게 쓰는 예를 보여주시려고 사용하신건가요? 아니면 CBV는 AUTH앱의 passwordchangeVIew를 가져오면 기능들이 갖춰져 있기 때문에 편리하고 더 효율적이기 때문에 사용하신건가요? 아니면 그냥 아래 처럼 맞는지는 모르겠지만 함수로 구현해도 상관은 없는건가요? 처음 질문이라 좀 요점이 없는것 같은데 죄송합니다. @login_required def password_change ( request ): if request.method == 'POST' : form = ChangeForm(request.POST) if form.is_valid(): form.save() messages.success(request, "비밀번호 변경 성공" ) else : form = ChangeForm() return render(request, "accounts/password_change_form.html" ,{ 'form' :form,})
선생님 수업 잘듣고 있습니다 다름이 아니라 검색기능 수업중에서 select 의 value 와 keyword의 value 자바스크립트로 self.location.href를 이용하여 get방식으로 값을 넘기는 내용이 있습니다 약 48분 정도쯤에 있는 내용이구요 select 값의 value를 0, 1, 2, 3, 4 로 설정해놓아서 이중에서 하나의 값을 넘기는데요 get방식으로 넘길때, 숫자가 넘어가는게 아니라 false가 넘어가는데 도저히 해결이 안되네요 get방식 값이 http://192.168.1.13:9000/list?search=false&keyword=%ED%8C%8C%EC%9D%B4%EC%8D%AC 이렇게 나옴니다 search = 숫자 이렇게 나와야 하는데 false가 들어가니 해결이 안되네요 영상에는 잘되는데 저는 잘안되서 이후 강의에 있는 선생님이 수업자료로 첨부하신 코드를 가져와서 실행해도 안됩니다 ㅠㅠ
안녕하세요. 프로젝트 강의를 통해 만든 결과물을 실제 리눅스 서버쪽으로 배포를 해보려고 합니다. 서버환경은 아래와 같습니다. ----------------[서버 Spec] ---------------- OS: CentOS 7.9 PHP: PHP 7.3 DB: MariaDB 10.4.17 Web Server: Apache 2.4 ---------------- ---------------- ------------ 서버의 일반 계정을 생성 한 후 아파치 가상호스트(VirtualHost) 설정 파일을 통해 아래와 같이 설정해 보았는데, 500 ERROR 페이지로 전환되고 있어 아파치 에러 로그를 보며 해답을 찾아보아도 해결을 못하고 있습니다. 옛 레거시 PHP 같은 경우 위의 가상호스트 설정만으로도 정상적으로 홈페이지가 열렸는데요. 이 프로젝트가 잘 열리기 위한 추가 설정이 필요한지 궁금합니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 1) 선언과 정의의 차이를 알고 싶습니다. 선언은 영어로는 declaration 이고, 정의는 definition인데 , 선언과 정의를 혼용해서 쓰는 것 같습니다. 2) list 선언 a = [] 와 b = list () 의 각각 id 값이 다릅니다. 비어있으니 동일한 값으로 생각되어, `동시 선언`으로 동일한 id 값이어야 하지 않나요?? 3) python의 function 객체라서 함수에도 id가 있다고 하는데, 다른 프로그래밍 언어에는 없는 건가요?? function 객체라서 있다는 게 잘 모르겠습니다.
AttributeError: 'NoneType' object has no attribute 'get_text' 오류가 발생했습니다. 해당 오류는 none 값일때 어떻게 해야 하는지 결정되지 않았을 때 발생하는 오류로 알고 있는데 제가 크롤링 하는 사이트 특성상 없는 값이 있을 수 있습니다. (입력을 안했을 경우가 있습니다.) 아래 소스에서 for item in itmes : print ( item .find( "h2" , attrs ={ "class" : "camp_tt" }).get_text()) print ( item .find( "li" , attrs ={ "class" : "addr" }).get_text()) print ( item .find( "li" , attrs ={ "class" : "call_num" }).get_text()) print () print ( item .find( "li" , attrs ={ "class" : "call_num" }).get_text()) 의 부분이 문제 입니다. 해당 값은 없는 값이 있을 수 있는데 이럴 경우 오류 처리를 어떻게 해야 하나요?
안녕하세요, 강의를 보며 프로젝트 예제 코드를 따라 타이핑 하면서 궁금한 것이 있어 질문드립니다. 아마 '36-메인(Index)' 강의에서 Post 클래스를 사용함에 있어 생겼었떤 궁금증과 동일할 거 같습니다. '회원가입' 처리를 위해 UserController::store 정적 메소드에서 'POST' 방식으로 넘어온 'email', 'password' 데이터를 User 객체의 프로퍼티(멤버변수)로 설정하는 코드를 볼 수 있었습니다. 하지만 실제 User 클래스에서는 가령 public $email, public $password와 같이 프로퍼티(멤버변수)가 선언되어 있지 않았는데요. 이게 어떻게 가능하게 된건지 원리가 궁금합니다. P.S 저는 Java(SpringFramework)도 함께 공부를 진행중에 있습니다.(실무에서 Java, PHP 둘 다 쓰기에...) Java에서 클래스의 성질과 비슷하다라고 생각하니 이번 강의에서 보여주셨던 코드가 동작하는게 이해가 가지 않더라구요. 미리 답변 감사드립니다.
안녕하세요, 프로젝트 '인증' 파트에서 로그인 시 입력하게 되는 이메일과 비밀번호를 AuthController, AuthService를 통해 처리하는 것을 확인 할 수 있었습니다. 저는 현재 PHP 8.0.0 버전으로 코딩을 진행하고 있습니다. 다만, AuthService::login 로직에서 password_verify(string, hash)가 항상 false로 결과 값이 반환되는 것을 확인했습니다. 처음에는 예제 코드를 타이핑하는데 오탈자가 있었나 확인해 보았지만 그런 경우는 없었습니다. 이와 동일한 이슈에 대해 찾아보았으나 여러 개 있었고, 그 중 PHP 8 환경에서의 이슈를 다룬 블로그를 발견했습니다. ( https://blog.naver.com/PostView.nhn?blogId=gwi01304&logNo=222269515571 ) PHP 버전 업데이트가 되면서 해당 함수의 동작 방식이 달라진 것인지 알 수 있을까요? 혹시 몰라서 저의 깃헙 레포지토리 URL을 여기에 공유해 드리겠습니다. GitHub URL: https://github.com/painkill2r/php-oop-project ============================================= 추가적으로 password_verify(string, hash) 함수의 동작 원리에 대해 궁금합니다. PHP Manual에서도 내부 동작 원리가 어떻게 되는지는 기재되어 있지 않더라구요. 첫 번째 인자로 주어진 string 값을 내부적으로 password_hash() 함로 암호화(?)하고, 이를 두 번째 인자와 비교하는게 맞을까요?
안녕하세요, '로그아웃' 구현 부분에서 세션을 비우는 처리에 대해 질문드립니다. 만약, 운영중인 사이트를 이용한다고 가정했을 때 아래와 같이 대부분이 로그인 및 로그아웃 절차가 진행된다고 생각합니다. 1. 홈페이지 로그인: 세션에 유저 데이터 생성 2. 홈페이지 이용 3. 브라우저를 닫거나 로그아웃 버튼 클릭: 세션이 완전이 사라지거나, 세션은 있되 세션에서 유저 정보가 비워짐 3번 항목에서 보통 PHP에서 세션을 비울 때(삭제할 때) 아래 두 함수를 쓰는 모습을 볼 수 있었는데요. 1. session_destory() => 전체 세션을 삭제(예로 세션 저장소(파일시스템의 세션 파일 또는 DB의 세션 관리 Table의 세션 데이터)) 2. session_unset() => 세션에서 변수만 삭제(CODE E) $_SESSION = array();) 이 외 세션에서 '유저' 정보만 비우는 경우(CODE EX) $_SESSION['user'] = array();)에는 어떤 경우가 있는지 알 수 있을까요?
안녕하십니까? 파이썬 공부중인 학생입니다. 도저히 어떻게 해결 해야 할지 모르겠어서 질문 남깁니다. 1. data=[{'A':'0000','B':1234}, {'A':'0200','B':151}, {'A':'0300','B':11},{'A':'0400','B':2014},{'A':'1600','B':32}] 가 있습니다. 2. 이 데이터를 data = pd.DataFrame(data) 로 정의하여 새롭게 만듭니다. 3. 아래(맨밑) 와 같은 엑셀 포맷을 excel_format = load_workbook('엑셀포맷.xlsx',data_only=True) 로 불러왔습니다. 4. 불러온 포맷을 data의 값으로 자동으로 채워주고 싶습니다. 하지만 1. data 를 보시면 'A':'0100' 값과 또 중간에 'A':0500~1500까지의 B 값이 없습니다. 이러한 부분을 B를 0 으로 채워주고 'A':'0000','A':'0200','A':'0300','A':'0400','A':'1600'처럼 B값이 있는값들은 그에 맞게 B값을 채워주고싶습니다. load_ws.cell(1,2,350) 이런식으로 일일이 없는값은 0으로 채우고 있는값은 데이터를 보고 채울순있겠지만 꼭 자동화로 되도록 코드를 작성하고싶습니다. 긴 글 읽어주셔서 너무 감사합니다.
안녕하세요. '/' URL에 대한 라우트 선언 시 궁금한 점이 있어 질문드립니다. 강의 08:45 부분에서 '/' URL을 처리할 Handler로 '\App\Controllers\IndexController::index'와 같이 선언하는 것을 볼 수 있었습니다. IndexController 클래스의 index() 메소드가 정적 메소드로 선언되어 있으므로 '::'를 사용하는 것은 이해가 되었는데요. '괄호()'를 생략했음에도 오류 없이 동작하는 이유에 대해 궁금합니다. '\App\Controllers\IndexController::index()'와 같이 설정한 경우 오히려 에러가 출력되더라구요. 위 문법과 관련한 관련 자료도 있다면 공유 부탁드립니다. 감사합니다.
파이참 툴을 이용해서 파이썬 공부를 하는 중인데, 라이브러리에서 기본으로 제공되는 sort() 함수에서 key 매개변수를 사용하려 할 때마다 저렇게 오류가 발생합니다. 헌데 문제는 검색을 아무리 해봐도 정보가 잘 나오지 않았다는 점입니다 ㅠㅠ. 이 밖에 중복순열을 이용하려 할 때에도 비슷한 오류가 발생합니다. 분명 순열 관련된 라이브러리를 import 해서 사용하는 중인데( from itertools import product ), 왜 이러는지 도저히 잘 모르겠어서 질문 남기게 되었습니다. 부디 조언 부탁드립니다.
안녕하세요, Sessions 강의를 듣고 궁궁한 것이 생겨 질문드립니다. 강의 내용에서는 SessionHandlerInterface의 구현체 클래스를 선언하여 사용하는 것으로 보이는데요. index.php의 예제 코드 실행시 처음 생성되는 SESSION 데이터가 있으면 sessions 테이블에 세션 정보가 INSERT 되는 것으로 확인이 되었습니다. 하지만 sessions 테이블의 id 컬럼의 값이 자동으로 들어가지는 것을 확인할 수 있었는데요. 이 id은 PHPSESSID에서 가져오는 것 같은데, 그 과정에 대해 알 수 있을까요?
안녕하세요, 라우팅 강의를 듣고 난 후 궁금한 점이 생겨 질문드립니다. 예제 코드에서 '/', '/posts/{id}'라는 라우팅을 설정해 주셨는데요. 로컬 환경에서 학습한다는 기준으로 PHP 내장서버를 실행시켜 localhost:8000/index.php, localhost:8000/src/Database/Adaptor.php 등으로 접속했을 때에도 이에 대한 접근 불가 설정을 하지 않았으므로 접근이 허용되는 문제가 있었습니다. 이를 해결 하기 위한... 즉, 개발자가 정의한 URL 패턴 외 .php가 붙은 확장자로는 접근이 불가하게 설정할 수 있는 방법이 있을까요?
안녕하세요, Composer 강의를 학습하던 중 예제 코드들을 Git에 형상관리를 하려고 합니다. 다만, Composer 설정 후 생성되는 .vender 폴더, composer.json, composer.lock.json 파일의 경우 Git으로 형상관리를 시키는게 맞는지, 아니면 이들은 Ignore 설정을 통해 형상관리에서 제외시키는게 맞는지 궁금합니다.
알고리즘 문제는 혼자 생각하고 해결하는 과정이 중요한 것을 알기에 정말 최대한 저혼자 2시간동안 디버깅을 해보았지만 무엇이 잘못된 것인지 모르겠어서 질문 남깁니다. 조합만들기 식으로 풀어봤는데 제가 생각하기에 논리상으로는 맞는것 같은데 계속 답이 이상하게 나옵니다. 한번만 코드 검토 부탁드립니다... import sys sys.stdin= open ( "input.txt" , "rt" ) def DFS (v , money): global maxMoney if maxMoney<money: maxMoney=money if v>n: return for i in range (v , n+ 1 ): DFS(v+sch[i][ 0 ] , money+sch[i][ 1 ]) if __name__== '__main__' : n = int ( input ()) ch=[ 0 ]*(n+ 1 ) sch=[(- 1 , - 1 )] maxMoney=- 1 for _ in range (n): # t는 걸리는 시간(일), p 는 보수 t , p = map ( int , input ().split()) sch.append((t , p)) DFS( 1 , 0 ) print (maxMoney)
RUN python manage.py collectstatic --noinput 위 명령어를 입력하고 설정을 했으나 아래와 같은 메시지가 뜨는데요 ㅠㅠ 선생님께서 설정해주신 부분과 상당히 유사하게 진행하고 있는데 왜 그런지 궁금합니다. 혹시 추측이 가능한 부분이 있으실까요? # 오류 # 디렉토리 구조 # settings.py