반응형

▶ 웹 프로그래밍의 여러가지 구성 요소 

 

웹 서버 : 각 클라이언트에게 서비스를 제공하는 컴퓨터

클라이언트 : 네트워크로 서버에 접속한 후 서버로부터 서비스를 제공받는 컴퓨터

HTTP 프로토콜 : Hyper Text Transfor Protocol의 약자로, www 서비스를 제공하는 통신규약

HTML : Hyper Text Markup Language의 약자로, www 서비스를 제공하기 위한 표준 언어

자바스크립트 : HTML 웹 페이지의 여러가지 동적인 기능을 제공하는 스크립트 언어

CSS(Style Sheet) : HTML 문서에서 서체나 색상, 정렬 등 세부적인 HTML 페이지의 디자인에 관련된 여러가지 기능 제공

 

 

 

▶ 정적 웹 프로그래밍 

 

˙특징?

  ① 사용자에게 고정된 정보만 제공 

  ② 정보 수정 시 관리자가 직접 HTML 소스를 수정하여 사용자에게 정보 제공

 

 

 

▶ 동적 웹 프로그래밍 

˙특징?

클라이언트의 요청이 있을 때마다 DB에 접근하여 실시간 정보를 클라이언트에게 제공

 

처음으로 동적인 방식으로 프로그램을 제공하는 기능은 CGI(Common Gate Interface, 공용 게이트웨이 인터페이스) 이었다.

˙CGI의 특징?

① 초기 웹 프로그램에서 사용하는 방식

② 프로세스 방식으로 실행

서버의 부하 심함 → 이러한 문제로 나온 것이 JSP, ASP, PHP와 같은 동적 웹 프로그래밍 기술

 

 

 

▶ JSP 

˙JSP의 특징?

프로세스 방식이 아닌 스레드 방식으로 실행

클라이언트의 요구를 처리하는 기능은 최초 한번만 메모리에 로드

클라이언트가 동일한 기능을 요구하면 기존에 사용한 기능을 재사용

 

반응형
반응형

▶ JSP (Java Server Page , 자바 서버 페이지)란? 

 

웹 브라우저를 통해 인터넷에 접속하고, 그 홈페이지에서 어떤 요소를 클릭하여 다른 웹페이지로 이동하게 된다.

대부분 미리 서버에 등록해 두었다가 웹 브라우저가 서버에 특정 데이터를 요청하면 이를 웹 브라우저로 전송하여 보여준다.

이를 가능하게 하는 기술 중 하나이다.

 

 

 

▶ 프로그램 발전 과정 

 

˙클라이언트 PC 기반 프로그램의 문제점?

① 프로그램에 기능이 추가되거나 자주 변경되면 수시로 사용자 PC마다 프로그램을 업데이트 또는 새로 설치해야 함

② 프로그램에 정보가 들어있다면 정보가 쉽게 노출될 수 있어 보안에 취약함

 

→ 문제점을 해결하기 위해 등장 한 것이 클라이언트 - 서버 기반 프로그램

 

 

 

▶ 클라이언트 - 서버 기반 프로그램   

 

기존 클라이언트가 수행하는 모든 기능을 서버에서 수행

따라서 클라이언트는 처리할 데이터를 서버에 전달하고, 서버가 처리한 결과를 받아 화면에 출력하는 역할만 수행

 

클라이언트-서버 프로그램은 기능이 변경되어도 모두 서버에서 처리하면 되기 때문에 클라이언트 프로그램을 수정할 필요가 없고 보안도 우수

 

˙클라이언트 - 서버 기반 프로그램의 한계?

기능만 변경하는 것 쉽게 가능하지만, 화면 변경 시에는 추가 작업 필요

 

 

 

▶ 웹 기반 프로그램   

사용자가 사용하는 프로그램의 기능이나 화면이 바뀌면 서버에서 모두 처리

따라서 클라이언트가 특별히 수행해야 할 작업이 없고, 모든 기능을 서버에서 처리하므로 보안 우수

 

 → JSP, ASP, PHP 같은 웹 기술 + 데이터베이스 연동 시 실시간으로 클라이언트 요청 처리 가능 

반응형
반응형

▶  참고 지식  ◀

 

https://ko.wikipedia.org/wiki/%EC%9C%A0%ED%81%B4%EB%A6%AC%EB%93%9C_%ED%98%B8%EC%A0%9C%EB%B2%95

 

유클리드 호제법 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 유클리드 호제법(-互除法, Euclidean algorithm) 또는 유클리드 알고리즘은 2개의 자연수 또는 정식(整式)의 최대공약수를 구하는 알고리즘의 하나이다. 호제법이란

ko.wikipedia.org

 

▶  문제 설명  ◀

 

두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요.

배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다.

예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다.

 

 

▶  제한 사항  ◀

 

˙두 수는 1이상 1000000이하의 자연수입니다.

 

class Solution {
    public int[] solution(int n, int m) {
        int[] answer = new int[2];
        int num1 = 0;
        int num2 = 0;
        if(n>m){
        	num1 = n;
        	num2 = m;
        }else{
        	num1 = m;
        	num2 = n;
        }
        
    	int div1 = num1; 
    	int div2 = num2; 
    	while(true){
    		if(div1%div2 == 0){
    			answer[0] = div2;
    			break;
    		}
    		int temp = div1;
    		div1 = div2;
    		div2 = temp%div2;
    		
    	}
        	
        answer[1] = num1 * num2 / answer[0];
        return answer;
    }
    
}
반응형
반응형

▶  문제 설명  ◀

 

사용언어 : JAVA

 

점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다.

다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다.

학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있습니다.

예를 들어, 4번 학생은 3번 학생이나 5번 학생에게만 체육복을 빌려줄 수 있습니다.

체육복이 없으면 수업을 들을 수 없기 때문에 체육복을 적절히 빌려 최대한 많은 학생이 체육수업을 들어야 합니다.

전체 학생의 수 n, 체육복을 도난당한 학생들의 번호가 담긴 배열 lost,

여벌의 체육복을 가져온 학생들의 번호가 담긴 배열 reserve가 매개변수로 주어질 때,

체육수업을 들을 수 있는 학생의 최댓값을 return 하도록 solution 함수를 작성해주세요.

 

 

▶  제한 사항  ◀

 

˙전체 학생의 수는 2명 이상 30명 이하입니다.

˙ 체육복을 도난당한 학생의 수는 1명 이상 n명 이하이고 중복되는 번호는 없습니다.

˙ 여벌의 체육복을 가져온 학생의 수는 1명 이상 n명 이하이고 중복되는 번호는 없습니다.

˙ 여벌 체육복이 있는 학생만 다른 학생에게 체육복을 빌려줄 수 있습니다.

˙ 여벌 체육복을 가져온 학생이 체육복을 도난당했을 수 있습니다.

     이때 이 학생은 체육복을 하나만 도난당했다고 가정하며, 남은 체육복이 하나이기에 다른 학생에게는 체육복을 빌려줄 수 없습니다.

 

class Solution {
    public int solution(int n, int[] lost, int[] reserve) {
    	int answer = n - lost.length;
    	
    	for(int i=0; i<reserve.length; i++){
    		for(int j=0; j<lost.length; j++){
    			if(reserve[i] == lost[j]){
    				reserve[i] = -1;
    				lost[j] = -1;
    				answer += 1;
    				break;
    			}
    		}
    	}
    	
    	for(int i=0; i<reserve.length; i++){
    		for(int j=0; j<lost.length; j++){
    			if(reserve[i] - 1 == lost[j] || reserve[i] + 1 == lost[j]){
    				answer++;
    				reserve[i] = -1;
    				lost[j] = -1;
    			}
    		}
    	}
        return answer;
    }
}
반응형
반응형

안녕하세요. 오늘은 파이썬과 Oracle을 이용하여 데이터 베이스를 가져오는 방법을 소개해드리겠습니다.

 

 

˙사전 준비 

 

Oracle 에서 접속할 계정의 이름 비밀번호, 호스트 이름, 포트번호, SID를 알고 있어야 합니다.

 

 

 

˙테이블 정보 

 

<TABLE1>

저는 이름이 TABLE1인 테이블을  가지고 오겠습니다.

 

 

 

˙코드 설명 

 

import cx_Oracle 

sql =   """
        select col1, col2 
        from table1
        """
conn = cx_Oracle.connect('python/python@localhost:1521/xe')
# conn = cx_Oracle.connect('접속이름/비밀번호@호스트이름:포트번호/SID)
cs = conn.cursor()
rs = cs.execute(sql)

cx_Oracle 모듈을 import 하고 sql 에 자신이 실행하고 싶은 sql 문장을 적습니다.

그 후 Oracle과 접속하여 sql문을 실행합니다.

 

col1 = []
col2 = []

for record in rs:
    col1.append(record[0])
    col2.append(record[1])
print("col1 : ", col1)
print("col2 : ", col2)

sql 결과를 for문을 이용하여 가져옵니다.

이때 컬럼 별로 정보를 저장하고 싶으면 배열에 각각 저장 할 수 있습니다.

 

 

 

˙실행 결과 

 

각각의 컬럼의 정보가 배열에 담긴 것을 확인할 수 있습니다.

 

 

 

˙전체 코드 

 

import cx_Oracle 

sql =   """
        select col1, col2 
        from table1
        """
conn = cx_Oracle.connect('python/python@localhost:1521/xe')
cs = conn.cursor()
rs = cs.execute(sql)

col1 = []
col2 = []

for record in rs:
    col1.append(record[0])
    col2.append(record[1])
print("col1 : ", col1)
print("col2 : ", col2)

 

반응형
반응형

▶  문제 설명  ◀

 

사용언어 : JAVA

 

행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다.

2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.

 

▶  제한 사항  ◀

 

˙행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.

 

import java.util.ArrayList;
class Solution {
    public int[][] solution(int[][] arr1, int[][] arr2) {
    	int[][] answer = new int[arr1.length][arr1[0].length];

    	for(int i=0; i<arr1.length; i++){
    		ArrayList<Integer> temp = new ArrayList<Integer>();
    		
    		for(int j=0; j<arr1[i].length; j++){
    			int a = arr1[i][j] + arr2[i][j];
    			answer[i][j] = a;
    		}
    		
       	}
		return answer;
    }
}

 

반응형
반응형

 

안녕하세요. 오늘은 파이썬을 통해 이메일 보내는 법을 소개해드리겠습니다.

 

 

˙사전준비 

 

저는 네이버 계정을 사용하였는데 먼저 메일로 들어가서 하단의 환경설정으로 들어갑니다.

그 후 POP3/IMAP 설정 으로 들어가 사용함으로 체크해줍니다.

 

 

 

˙코드 설명 

 

import smtplib                             
from email.mime.text import MIMEText

먼저 메일을 보내기 위한 SMTP 모듈을 import 해줍니다.

 

smtpName = "smtp.naver.com"                 
smtpPort = smtp 포트 번호                          

sendEmail = "나의 네이버 계정"
password = "나의 네이버 비밀번호"
recvEmail = "받는 사람 이메일"

 

아까 환경설정을 해주었던 네이버 메일 페이지 하단에 보면 smtp 포트 번호를 적어주시고,

보내는 사람, 비밀번호, 받는 사람을 적어주시면 됩니다.

 

title = "파이썬~~"                                 
content = "안녕하세용"                                

메일의 제목과 내용을 입력합니다.

 

msg = MIMEText(content)                       
msg['From'] = sendEmail
msg['To'] = recvEmail
msg['Subject'] = title

읽어들인 파일의 텍스트를 MIME 객체화 합니다.

 

s = smtplib.SMTP(smtpName , smtpPort)         
s.starttls()                                  
s.login(sendEmail , password)                 
s.sendmail(sendEmail, recvEmail, msg.as_string())  
s.close()                                     

메일 서버로 연결 후 이메일을 보내고, 서버 연결을 종료합니다.

 

받는 사람의 메일로 가보면 성공적으로 전송된 것을 확인하실 수 있습니다.

 

 

 

˙전체 코드 

import smtplib                             
from email.mime.text import MIMEText

smtpName = "smtp.naver.com"                  
smtpPort = 포트번호                              

sendEmail = "나의 네이버 계정"
password = "나의 네이버 비밀번호"
recvEmail = "받는 사람 이메일"

title = "파이썬~~"                                
content = "안녕하세용"                                

msg = MIMEText(content)                      
msg['From'] = sendEmail
msg['To'] = recvEmail
msg['Subject'] = title                   

s = smtplib.SMTP(smtpName , smtpPort)         
s.starttls()                                
s.login(sendEmail , password)                 
s.sendmail(sendEmail, recvEmail, msg.as_string()) 
s.close()                                     
반응형
반응형

안녕하세요 ! 오늘은 SQLD 합격 후기를 공유하려고 합니다.

제가 사용했던 책과 공부 방법을 소개하겠습니다. 😃

 

 

▶  준비 기간 

 

약 한달 소요.

 

시간날 때 마다 틈틈히 공부하였습니다.

하루에 3~4시간 할 때도 있었고, 바쁠 때는 못한 날도 있었습니다. 참고해주세요!

 

 

▶  사용 교재  

 

www.aladin.co.kr/shop/wproduct.aspx?ISBN=K792737462&start=pnaver_02

 

국가공인 SQLD 자격검정 핵심노트

SQL 전문가 가이드 2020 개정판 목차를 따른 최초의 수험서다. 2020 개정판 집필진이 집필 의도에 맞는 예상 문제를 직접 출제하고 해설하였으므로 SQLD와 SQLP 자격 취득을 목표로 공부하는 응시자들

www.aladin.co.kr

www.aladin.co.kr/shop/wproduct.aspx?ISBN=8988474848&start=pnaver_02

 

SQL 자격검정 실전문제

SQL 자격검정 실전문제는 국가공인 SQL 전문가 및 국가공인 SQL 개발자 자격시험 대비 수험서로 SQL 전문가 가이드에서 다루고 있는 데이터 모델링의 이해, SQL기본 및 활용, SQL 고급 활용 및 튜닝 등

www.aladin.co.kr

 

 

▶  공부 방법  

 

저는 SQLD 자격검정 핵심노트 책으로 먼저 공부했습니다.

제가 공부한 두 책 모두 다 개념적인 설명은 없기 때문에 문제를 통하여 습득해야 합니다.

아예 SQL을 모르시는 분들은 개념적인 것들은 파악하시고 공부하시는게 더 좋을 듯 합니다.

저는 대충 SQL의 개념을 알고 있었지만 문제를 풀어보니 대부분 몰랐던 부분이었습니다. 

문제를 풀어보고 해설을 보며 이해하고 모르는 개념을 찾아보는 방식으로 3회독 정도를 했습니다. ( 죽어도 모르는 부분은 패스~ )

그리고 남은 시간 동안은 SQL 자격검정 실전문제를 풀면서 기출문제를 익혔습니다.

 

 

▶  합격 점수  ◀

1과목 16점, 2과목 70점 총 86점으로 비교적 안정적인 점수로 합격하였습니다.

객관식도 개념과 함수 이름만 알고 있으면 다 쓸 수 있는 문제여서 거의 다 썼습니다.
당연한 얘기지만 개념에 충실하고 문제유형만 파악하면 무난하게 합격하실 수 있습니다!!

 

 

▶  후기 및 TIP  ◀

 

시험 자체의 난이도는 높은 편은 아니라 비전공자도 공부하면 충분히 합격할 수 있습니다.

하지만 개념을 정확하게 파악하지 못하면 문제를 접했을 때 많이 헷갈릴 거 같아 개념을 정확히 아시는 것을 추천합니다.

처음에는 익숙하지 않더라도 문제를 계속 접하게 되면 자연스럽게 개념과 문제유형을 파악하게 됩니다.

 

개인적으로 교재는 어느정도 개념을 아시는 분들이면 SQL 자격검정 실전문제를 추천드립니다.

왜냐하면 이 책에서 똑같이 나온 문제도 있었고 문제유형이 똑같기 때문에 이 문제집을 마스터 하신다면 분명 합격 하실 수 있습니다.

SQL이 처음이신 분들은 인강이나 인터넷 자료를 찾아보면서 문제를 풀어보시는 것을 추천드립니다.

 

SQL 자격검정 핵심노트도 좋지만 문제의 유형이 조금 다르고 초판이라 오타가 많습니다.

그래도 저는 용어 이름과 쓰임에 대해 정확하게 알 수 있어서 도움이 많이 되었습니다.

다들 자신의 상황에 맞게 교재를 선택하여 공부하시면 될 것 같습니다.

 

반응형

'나의 기록' 카테고리의 다른 글

2020 정보처리기사 실기 합격 후기  (1) 2021.03.24

+ Recent posts