본문 바로가기

Web Programming

(50)
EJB(Enterprise Java Bean) 개념 EJB(Enterprise Java Bean), 기업환경의 시스템을 구현하기 위한 서버 측 컴포넌트 모델이다. 일반적으로 업무 로직을 가지고 있는 서버 어플리케이션을 EJB라고 한다. Enterprise JavaBeans(EJB)는 독립한 부품이 아닌, 미국 Sun Microsystems사가 제창한 규약이다. EJB는 서버 어플리케이션의 개발을 용이하게해 다중다양한 Platform과 제품간의 이동성을 실현하기 위하여 비지니스로직과 시스템 서비스를 이용하는 로직을 분산해 그 사이의 규약을 규정하고 있다. 비지니스 로직을 탑제한 부품을 "Enterprise Bean"이라고 불린다. Database처리, Transaction처리등의 시스템 서비스를 이용한 로직을 감추고 있는 부품을 "컨테이너"라고 불린다..
셀레니움(Selenium) 자동화 툴 셀레니움(Selenium)이란? 웹 어플리케이션 테스트를 위한 포터블 프레임워크. 웹 테스트를 간단히하기 위한 도구 셀레니움 특징 셀레니움은 테스트 스크립트 언어를 학습할 필요 없이 기능 테스트를 만들기 위한 플레이백 도구를 제공한다. C#, Groovy, Java, Perl, Python, Ruby 등 많은 언어를 지원하며 테스트 도메인 특화 언어(Seleness)를 제공한다. 셀레니움의 효용성 우리가 실제 운용을 위해 만든 서비스 페이지에서의 시나리오가 회원가입을 하고 게시글을 작성하고 댓글을 작성해보고 등이라고 가정을 해보자. 해당 시나리오를 구현하기 위해 우리는 수많은(수십회) 정도의 클릭이 필요할 수 있다. 이런 시나리오에 대해서 셀레니움은 웹 드라이버를 통해 브라우저 동작을 컨트롤 할 수 있게..
Django 유저 Accounts 비밀번호 재설정 유저들이 비밀번호를 잊어버렸을 때 처리할 수 있는 다양한 방법 중에 일반적으로 재설정 이메일을 많이 활용한다. 그래서 User 모델에 email을 저장해두고 서버에 해당 이메일이 있을 경우 재설정 이메일을 발송하여 token 검사 후 실제 재설정이 가능하도록 구현하였다. 먼저 User 모델에 Email도 함께 저장한다. views.py 중 ... user = User.objects.create_user(username=request.POST['username'], email=mail_to, password=request.POST['password1']) 그리고 Accounts/views.py 에 password_reset 클래스를 작성한다. class MyPasswordResetView(PasswordR..
django crontab 장고 크론탭 웹 이든 어떠한 형태의 서버에서 주기적으로 배치 또는 실행이 필요한 작업들이 존재한다. 예를 들어, 서버에서 주기적으로 매주 월요일에 필요 없는 임시 파일들이라든지 여러 가지 파일들을 지워줄 때나 어느 정도의 시간이 지나 만료된 세션들을 종료한다든지 얼마든지 다양한 형태의 작업들이 필요로 되어진다. 이럴 때 필요한 것이 바로 크론탭이다. 크론탭은 서버 내의 특정 작업(또는 명령)을 특정 주기로 스스로 실행하도록 하는 것을 뜻한다. 당연히 Django에도 이러한 Crontab을 지원하는 모듈이 존재한다. 바로 django-crontab이다. 단, django-crontab은 리눅스 기반이기에 윈도우 환경에서는 동작되지 않는다! 먼저, 서버에서 모듈을 설치하여준다. pip install django-cron..
Ajax 통신하기 새로고침(Reload) 없이 통신하기 위해서 비동기 통신 방식인 Ajax를 활용할 수 있다. jquery를 가져오고 script를 통해 손쉽게 사용 가능하다. views.py from django.http import HttpResponse import json ... # ajax 통신 def check(request): room_type = request.POST.get('room_type', None) room_date = request.POST.get('room_date', None) # ajax 통신을 통해서 template에서 POST방식으로 전달 message= "통신 성공" print(room_type) print(room_date) context = { 'message': message, ..
Static 추가하기 # Settings.py에 설정 STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, 'static') # 해당 App 폴더 내에 Static 폴더 만들어 준 후 그 안에 다시 App 이름 작성(구분용) 그리고 css, js, img 파일들을 넣어준다 # 터미널 명령어 $ python manage.py collecstatic # template 파일 수정 {% load static %} ... ... ...
Django 회원가입 이메일 인증(SMTP) 많은 포털 사이트에서 회원가입 시 웹 메일 인증 시스템을 채택하고 있다. (현재는 대부분 보안성 때문에 기기 인증 등도 활용되고 있다고 한다...) 프로젝트를 진행하면서 해당 부분이 필요하게 되어 찾아보며 정리해봤다. 진행되는 로직은 크게 SMTP를 활용하여, User의 is_actvie 속성을 활용한다. SMTP 웹 메일을 통해 토큰을 날려주고, 해당 토큰을 인증하기 전 까지 is_active 속성을 False로 둔다. 그리고 토큰을 통해 인증을 하는 순간 is_active 속성을 True로 변경하여 User 객체를 인증한다. (즉, 토큰을 SMTP 프로토콜을 통해 날려준다) # SMTP 간이 전자 우편 전송 프로토콜(Simple Mail Transfer Protocol, SMTP)은 인터넷에서 이메일..
Like 좋아요 모델 추가하기 좋아요를 구현하기에 앞서 모델 M:N 관계를 숙지해야 한다. 다수 대 다수의 관계를 맺고 있는 좋아요는 M:N의 관계 이다. 쉽게 말해, 글 하나에 여러 개의 댓글이 구성하던 1:N 의 관계와 달리 여러 유저와 여러 개의 좋아요의 관계가 구성되기에 M:N 다수의 관계이다. 구현에 앞서, Blog, Comment, User 3개의 모델이 구성되어 있어야 한다. 먼저 model에 Like 모델을 다대다(ManyToManyField)를 활용한다 # project/blog/models.py # M:N을 위한 속성 class User(models.Model): ... likes = models.ManyToManyField( User, # User 모델과 Blog 모델을 M:N 관계로 두겠다. through = '..