<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>pybi</title>
    <link>https://pybi.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Tue, 23 Jun 2026 14:27:35 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>pybi</managingEditor>
    <item>
      <title>python - pyinstaller 로 실행파일 만들기</title>
      <link>https://pybi.tistory.com/63</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;※&amp;nbsp;참고&amp;nbsp;※ &lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://blog.naver.com/beyond_metadata&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://blog.naver.com/beyond_metadata&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1674659066867&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Metadata : 네이버 블로그&quot; data-og-description=&quot;Metadata..&quot; data-og-host=&quot;blog.naver.com&quot; data-og-source-url=&quot;https://blog.naver.com/beyond_metadata&quot; data-og-url=&quot;https://blog.naver.com/beyond_metadata&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bloAZS/hyRoHgS3WQ/pKweN21BKoeFSUfP5OfAFk/img.png?width=204&amp;amp;height=204&amp;amp;face=0_0_204_204&quot;&gt;&lt;a href=&quot;https://blog.naver.com/beyond_metadata&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://blog.naver.com/beyond_metadata&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bloAZS/hyRoHgS3WQ/pKweN21BKoeFSUfP5OfAFk/img.png?width=204&amp;amp;height=204&amp;amp;face=0_0_204_204');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Metadata : 네이버 블로그&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Metadata..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;blog.naver.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;pyinstaller를 사용하면 python 스크립트를 가지고 실행 파일로 만들 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 pyinstaller를 설치해준다.&lt;/p&gt;
&lt;pre id=&quot;code_1674537392713&quot; class=&quot;cmake&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pip install pyinstaller&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음으로 pyinstaller ${파일명}.py를 실행시키면 파이썬 프로그램이 깔려있지 않아도 실행 가능한 파일들이 나온다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;dist/build 라는 폴더가 생기고 해당 폴더 안에 파일들이 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1674537392713&quot; class=&quot;nginx&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pyinstaller ${파일명}.py&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 실행파일(exe파일)로 만들어보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-F 나 --onefile 옵션을 입력하면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1674537392713&quot; class=&quot;jboss-cli&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pyinstaller --onefile ${파일명}.py&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 하면 build 폴더 안에 실행 가능한 파일이 만들어진다. (파일의 사이즈는 어떤 라이브러리들을 가져다 썼는지에 따라 차이가 많이 날 수 있다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음으로 콘솔창이 실행되지 않도록 하려면 '-w' 또는 '--windowed' 옵션을 이용하면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1674537392713&quot; class=&quot;jboss-cli&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pyinstaller -w --onefile ${파일명}.py&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로 실행파일의 icon을 파이썬 기본 이미지가 아니라 내가 원하는 이미지로 바꾸고 싶으면 ico파일로 변환한 후 (구글에 ico 파일 변환을 검색하면 사이트가 나옴) ico 이미지 이름을 적용하면 된다. (--icon=${이미지파일명}.ico)&lt;/p&gt;
&lt;pre id=&quot;code_1674537392714&quot; class=&quot;jboss-cli&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pyinstaller -w --icon=${이미지파일명}.ico --onefile ${파일명}.py&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;끝!&lt;/p&gt;</description>
      <category>Python/Do Something</category>
      <author>pybi</author>
      <guid isPermaLink="true">https://pybi.tistory.com/63</guid>
      <comments>https://pybi.tistory.com/63#entry63comment</comments>
      <pubDate>Tue, 24 Jan 2023 14:16:35 +0900</pubDate>
    </item>
    <item>
      <title>python(selenium) - 대표 포털 사이트(네이버,구글,daum,zum,bing) 자동 검색하기</title>
      <link>https://pybi.tistory.com/62</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;※&amp;nbsp;참고&amp;nbsp;※ &lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://blog.naver.com/beyond_metadata&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://blog.naver.com/beyond_metadata&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1674659076759&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Metadata : 네이버 블로그&quot; data-og-description=&quot;Metadata..&quot; data-og-host=&quot;blog.naver.com&quot; data-og-source-url=&quot;https://blog.naver.com/beyond_metadata&quot; data-og-url=&quot;https://blog.naver.com/beyond_metadata&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bloAZS/hyRoHgS3WQ/pKweN21BKoeFSUfP5OfAFk/img.png?width=204&amp;amp;height=204&amp;amp;face=0_0_204_204&quot;&gt;&lt;a href=&quot;https://blog.naver.com/beyond_metadata&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://blog.naver.com/beyond_metadata&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bloAZS/hyRoHgS3WQ/pKweN21BKoeFSUfP5OfAFk/img.png?width=204&amp;amp;height=204&amp;amp;face=0_0_204_204');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Metadata : 네이버 블로그&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Metadata..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;blog.naver.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;python selenium을 통해 대표 포털 사이트(네이버,구글,daum,zum,bing) 자동 검색하기를 해보고자 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;selenium은 4버전 이상으로 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. Naver&lt;/h3&gt;
&lt;pre id=&quot;code_1674537375479&quot; class=&quot;pgsql&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time

url = 'https://www.naver.co.kr'

options = webdriver.ChromeOptions()
options.add_argument('start-maximized')
driver = webdriver.Chrome('chromedriver.exe', options=options)
driver.get(url)

driver.find_element(By.CSS_SELECTOR,'.input_text').send_keys('파이썬')
driver.find_element(By.CSS_SELECTOR,'.btn_submit').click()

time.sleep(2)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 구글&lt;/h3&gt;
&lt;pre id=&quot;code_1674537375480&quot; class=&quot;pgsql&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time

url = 'https://www.google.co.kr'

options = webdriver.ChromeOptions()
options.add_argument('start-maximized')
driver = webdriver.Chrome('chromedriver.exe', options=options)
driver.get(url)

driver.find_element(By.CSS_SELECTOR,'.gLFyf').send_keys('파이썬')
driver.find_element(By.CSS_SELECTOR,'.gLFyf').send_keys(Keys.ENTER)   

time.sleep(2)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. 다음&lt;/h3&gt;
&lt;pre id=&quot;code_1674537375480&quot; class=&quot;pgsql&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time

url = 'https://www.daum.net/'

options = webdriver.ChromeOptions()
options.add_argument('start-maximized')
driver = webdriver.Chrome('chromedriver.exe', options=options)
driver.get(url)

driver.find_element(By.CSS_SELECTOR,'.tf_keyword').send_keys('파이썬')
driver.find_element(By.CSS_SELECTOR,'.ico_pctop').send_keys(Keys.ENTER)  

time.sleep(2)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. zum&lt;/h3&gt;
&lt;pre id=&quot;code_1674537375481&quot; class=&quot;pgsql&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time

url = 'https://zum.com/'

options = webdriver.ChromeOptions()
options.add_argument('start-maximized')
driver = webdriver.Chrome('chromedriver.exe', options=options)
driver.get(url)

driver.find_element(By.ID,'search-input').send_keys('파이썬')
driver.find_element(By.CSS_SELECTOR,'.search').send_keys(Keys.ENTER) 

time.sleep(2)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5. bing&lt;/h3&gt;
&lt;pre id=&quot;code_1674537375481&quot; class=&quot;pgsql&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time

url = 'https://www.bing.com/'

options = webdriver.ChromeOptions()
options.add_argument('start-maximized')
driver = webdriver.Chrome('chromedriver.exe', options=options)
driver.get(url)

driver.find_element(By.CSS_SELECTOR,'.sb_form_c').click()
driver.find_element(By.ID,'sb_form_q').send_keys('파이썬')
driver.find_element(By.CSS_SELECTOR,'.search_svg').click()      

time.sleep(2)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이상으로 대표 사이트 자동 접속 및 명령어 검색을 마친다.&lt;/p&gt;</description>
      <author>pybi</author>
      <guid isPermaLink="true">https://pybi.tistory.com/62</guid>
      <comments>https://pybi.tistory.com/62#entry62comment</comments>
      <pubDate>Tue, 24 Jan 2023 14:16:18 +0900</pubDate>
    </item>
    <item>
      <title>python - random을 활용해서 load 분배, 원하는 비율만큼 함수 실행</title>
      <link>https://pybi.tistory.com/61</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;※&amp;nbsp;참고&amp;nbsp;※ &lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://blog.naver.com/beyond_metadata&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://blog.naver.com/beyond_metadata&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1674659083462&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Metadata : 네이버 블로그&quot; data-og-description=&quot;Metadata..&quot; data-og-host=&quot;blog.naver.com&quot; data-og-source-url=&quot;https://blog.naver.com/beyond_metadata&quot; data-og-url=&quot;https://blog.naver.com/beyond_metadata&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bloAZS/hyRoHgS3WQ/pKweN21BKoeFSUfP5OfAFk/img.png?width=204&amp;amp;height=204&amp;amp;face=0_0_204_204&quot;&gt;&lt;a href=&quot;https://blog.naver.com/beyond_metadata&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://blog.naver.com/beyond_metadata&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bloAZS/hyRoHgS3WQ/pKweN21BKoeFSUfP5OfAFk/img.png?width=204&amp;amp;height=204&amp;amp;face=0_0_204_204');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Metadata : 네이버 블로그&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Metadata..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;blog.naver.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번편은 random.choice를 활용한 load 분배를 해보려고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;X라는 리스트에 네이버, 카카오, 구글이 있다고 가정했을 때 랜덤한 값을 뽑으러면 random.choice(X)를 하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 네이버, 카카오, 구글을 5:3:2의 비율로 뽑고 싶다면 어떻게 하면 될까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;방법이야 많겠지만 아래처럼도 할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 주소 옆에 capa(비율)을 설정해보자.&lt;/p&gt;
&lt;pre id=&quot;code_1674537359370&quot; class=&quot;prolog&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import random

url = [
    ['네이버',5],
    ['카카오',3],
    ['구글',2],
]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 뒤에 url_total 이라는 변수를 만들고 미리 지정한 숫자만큼 변수에 데이터를 담는다&lt;/p&gt;
&lt;pre id=&quot;code_1674537359370&quot; class=&quot;stylus&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;url_total = []
for i in url:
    for j in range(0,i[1]):
        url_total.append(i[0])
print(url_total)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇게 되면 새로 생성한 url_total이라는 변수에는 앞에서 설정한 capa(비율)만큼 데이터가 담기게 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1674537359371&quot; class=&quot;scheme&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;['네이버', '네이버', '네이버', '네이버', '네이버', '카카오', '카카오', '카카오', '구글', '구글']&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런 다음에 random.choice를 사용하면 원하는 비율로 랜덤한 값을 선택할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1674537359371&quot; class=&quot;lisp&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;print(random.choice(url_total))&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇다면 정말 비율대로 선택하는지 확인하기 위해 아래처럼 반복문을 돌려보고 count를 측정해보자.&lt;/p&gt;
&lt;pre id=&quot;code_1674537359371&quot; class=&quot;stylus&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;total_cnt = []
for i in range(100):
    url = [
        ['네이버',5],
        ['카카오',3],
        ['구글',2],
    ]

    url_total = []
    for i in url:
        for j in range(0,i[1]):
            url_total.append(i[0])
    total_cnt.append(random.choice(url_total))

print(total_cnt.count(&quot;네이버&quot;))
print(total_cnt.count(&quot;카카오&quot;))
print(total_cnt.count(&quot;구글&quot;))&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래도 처음 설정한 5:3:2 비율과 비슷하게 나왔다. (횟수를 1000번으로 하면 조금 더 비율에 맞게 수렴한다.)&lt;/p&gt;
&lt;pre id=&quot;code_1674537359372&quot; class=&quot;angelscript&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;49
30
21&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에는 미리 설정한 비율만큼 함수를 돌리고 싶다면 어떻게 할까? 방법이야 많겠지만 이런 방법을 어떠할까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;random.randint를 통해서 원하는 int를 만들고 if 함수를 줘서 원하는 비율을 선택할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1674537359372&quot; class=&quot;angelscript&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import random

persent_value = random.randint(0,10)

if persent_value &amp;lt; 2 :
    print(1)
elif persent_value &amp;lt; 6 :
    print(2)
else :
    print(3)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;잘 되는지 아까와 같은 방식으로 검증해보자.&lt;/p&gt;
&lt;pre id=&quot;code_1674537359372&quot; class=&quot;gradle&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import random

total_cnt = []
for i in range(1000):
    persent_value = random.randint(1,10)
    if persent_value &amp;lt; 6 :
        total_cnt.append('첫번째함수')
    elif persent_value &amp;lt; 9 :
        total_cnt.append('두번째함수')
    else :
        total_cnt.append('세번째함수')

print(total_cnt.count(&quot;첫번째함수&quot;))
print(total_cnt.count(&quot;두번째함수&quot;))
print(total_cnt.count(&quot;세번째함수&quot;))&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;함수가 대략 5:3:2 정도의 비율로 실행된 것을 알 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1674537359372&quot; class=&quot;angelscript&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;498
298
204&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뭐 더 좋은 방법도 많겠지만 문득 떠오른 방법은 이것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;끝!&lt;/p&gt;</description>
      <category>Python/Do Something</category>
      <author>pybi</author>
      <guid isPermaLink="true">https://pybi.tistory.com/61</guid>
      <comments>https://pybi.tistory.com/61#entry61comment</comments>
      <pubDate>Tue, 24 Jan 2023 14:16:01 +0900</pubDate>
    </item>
    <item>
      <title>python(selenium) - 크롤링 기본 사용법</title>
      <link>https://pybi.tistory.com/60</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;※&amp;nbsp;참고&amp;nbsp;※ &lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://blog.naver.com/beyond_metadata&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://blog.naver.com/beyond_metadata&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1674659090086&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Metadata : 네이버 블로그&quot; data-og-description=&quot;Metadata..&quot; data-og-host=&quot;blog.naver.com&quot; data-og-source-url=&quot;https://blog.naver.com/beyond_metadata&quot; data-og-url=&quot;https://blog.naver.com/beyond_metadata&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bloAZS/hyRoHgS3WQ/pKweN21BKoeFSUfP5OfAFk/img.png?width=204&amp;amp;height=204&amp;amp;face=0_0_204_204&quot;&gt;&lt;a href=&quot;https://blog.naver.com/beyond_metadata&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://blog.naver.com/beyond_metadata&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bloAZS/hyRoHgS3WQ/pKweN21BKoeFSUfP5OfAFk/img.png?width=204&amp;amp;height=204&amp;amp;face=0_0_204_204');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Metadata : 네이버 블로그&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Metadata..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;blog.naver.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;python selenium을 활용한 크롤링에 대해서 알아보고자 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;크롤링은 다들 많이 들어봤을거라고 생각한다. 크롬 등 웹에서 반복적으로 수행하는 일을 자동화 할수도 있고, 특정 게시글의 제목을 다 추출한다던가, 그림을 추출한다던가 응용하면 웹에서 반복적으로 수행해야 하는 일들을 자동화하기에 좋다. (이전 글중에 appium 을 통한 스마트폰 자동화랑 비슷하다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 selenuim을 설치해보자.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;s&gt;이번편은 기본에 대해서 배울 것이므로 특별한 버전 없이 설치해도 무방하다.&lt;/s&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(신규 버전부터는 find_element_by_css_selector 등 기본적인 내용이 많이 바뀌었다. pip list로 selenium 버전이 4 이상이라면 3버전으로 설치하는것이 좋다 또는 pip list --outdated)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1674537336050&quot; class=&quot;cmake&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pip install selenium&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그다음에 해야 할일은 크롬 웹드라이버를 설치하는 것이다. 크롬 드라이버는 구굴에 '크롬 드라이버' 라고 검색해도 되고 아래 페이지를 참고해서 다운 받아도 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;a href=&quot;https://chromedriver.chromium.org/downloads&quot;&gt;https://chromedriver.chromium.org/downloads&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1674537336051&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;ChromeDriver - WebDriver for Chrome - Downloads&quot; data-og-description=&quot;Current Releases If you are using Chrome version 109, please download ChromeDriver 109.0.5414.74 If you are using Chrome version 108, please download ChromeDriver 108.0.5359.71 If you are using Chrome version 107, please download ChromeDriver 107.0.5304.62&quot; data-og-host=&quot;chromedriver.chromium.org&quot; data-og-source-url=&quot;https://chromedriver.chromium.org/downloads&quot; data-og-url=&quot;https://chromedriver.chromium.org/downloads&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cQE0Pt/hyRgvgwaRl/VpXqkj9plTkaiQiJ9d1yZ0/img.png?width=1000&amp;amp;height=1000&amp;amp;face=0_0_1000_1000&quot;&gt;&lt;a href=&quot;https://chromedriver.chromium.org/downloads&quot; data-source-url=&quot;https://chromedriver.chromium.org/downloads&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cQE0Pt/hyRgvgwaRl/VpXqkj9plTkaiQiJ9d1yZ0/img.png?width=1000&amp;amp;height=1000&amp;amp;face=0_0_1000_1000');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;ChromeDriver - WebDriver for Chrome - Downloads&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Current Releases If you are using Chrome version 109, please download ChromeDriver 109.0.5414.74 If you are using Chrome version 108, please download ChromeDriver 108.0.5359.71 If you are using Chrome version 107, please download ChromeDriver 107.0.5304.62&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;chromedriver.chromium.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;페이지에 접속하면 여러가지 버전이 있는데 현재 내 PC에 설치된 크롬 드라이버 버전과 같아야 제대로 동작한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버전 확인 방법은 크롬 &amp;gt; 설정 &amp;gt; Chrome 정보에 가면 알 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1498&quot; data-origin-height=&quot;362&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/N2NDv/btrWS3G3mUY/CcFz14pG11kXBsBAXDXRa0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/N2NDv/btrWS3G3mUY/CcFz14pG11kXBsBAXDXRa0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/N2NDv/btrWS3G3mUY/CcFz14pG11kXBsBAXDXRa0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FN2NDv%2FbtrWS3G3mUY%2FCcFz14pG11kXBsBAXDXRa0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1498&quot; height=&quot;362&quot; data-origin-width=&quot;1498&quot; data-origin-height=&quot;362&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 크롭 버전이 자동으로 업데이트 될 수 있으니, 자동 버전 업데이트를 꺼두어도 좋다. (이전 글을 참고하자)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://pymin.tistory.com/60&quot;&gt;2023.01.13 - [기타] - 구글 크롬 드라이버 자동 업데이트 금지&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1674537336051&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;구글 크롬 드라이버 자동 업데이트 금지&quot; data-og-description=&quot;구글 크롬 드라이버가 자동 업데이트 되면 신규 기능에 의한 버그가 발생할 수도 있고, 기존에 사용하던 크롬 드라이버랑 호환이 안맞는 프로그램이 생길수도 있다. 이에 크롬 드라이버 자동 업&quot; data-og-host=&quot;pymin.tistory.com&quot; data-og-source-url=&quot;https://pymin.tistory.com/60&quot; data-og-url=&quot;https://pymin.tistory.com/60&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/DmQxK/hyRgtJLy87/g9swQ4EoKTWQcUMvk9goZK/img.png?width=800&amp;amp;height=380&amp;amp;face=0_0_800_380,https://scrap.kakaocdn.net/dn/bJlqiC/hyRgnCMq2c/oTs1bskvuRT8Xi8bk5cxw0/img.png?width=800&amp;amp;height=380&amp;amp;face=0_0_800_380,https://scrap.kakaocdn.net/dn/bgF8Yp/hyRgnJy1AX/rsbUbjjZXbQKMZ6EjEEtx1/img.png?width=1409&amp;amp;height=671&amp;amp;face=0_0_1409_671&quot;&gt;&lt;a href=&quot;https://pymin.tistory.com/60&quot; data-source-url=&quot;https://pymin.tistory.com/60&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/DmQxK/hyRgtJLy87/g9swQ4EoKTWQcUMvk9goZK/img.png?width=800&amp;amp;height=380&amp;amp;face=0_0_800_380,https://scrap.kakaocdn.net/dn/bJlqiC/hyRgnCMq2c/oTs1bskvuRT8Xi8bk5cxw0/img.png?width=800&amp;amp;height=380&amp;amp;face=0_0_800_380,https://scrap.kakaocdn.net/dn/bgF8Yp/hyRgnJy1AX/rsbUbjjZXbQKMZ6EjEEtx1/img.png?width=1409&amp;amp;height=671&amp;amp;face=0_0_1409_671');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;구글 크롬 드라이버 자동 업데이트 금지&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;구글 크롬 드라이버가 자동 업데이트 되면 신규 기능에 의한 버그가 발생할 수도 있고, 기존에 사용하던 크롬 드라이버랑 호환이 안맞는 프로그램이 생길수도 있다. 이에 크롬 드라이버 자동 업&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;pymin.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음으로 다운로드 받은 크롬 드라이버를 파이썬을 실행시킬 폴더 위치에 옮겨주면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 selenium을 통해서 크롬 드라이버를 실행시키고, 기본 기능에 대해 하나하나 알아보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 원하는 주소로 접속&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;webdriver.Chrome 을 통해서 크롬 드라이버를 시작하고, get을 통해서 원하는 페이지로 이동할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1674537336052&quot; class=&quot;pgsql&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from selenium import webdriver
import time

options = webdriver.ChromeOptions()

driver = webdriver.Chrome('chromedriver.exe', options=options)
driver.get('https://www.google.co.kr')

time.sleep(10)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에는 url 주소를 url이라는 변수에 담고 실행해보자. (이번엔 네이버로 했으며 형태는 동일하다)&lt;/p&gt;
&lt;pre id=&quot;code_1674537336052&quot; class=&quot;pgsql&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from selenium import webdriver
import time

options = webdriver.ChromeOptions()
url = 'https://www.naver.co.kr'

driver = webdriver.Chrome('chromedriver.exe', options=options)
driver.get(url)

time.sleep(10)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2.&amp;nbsp; 원하는 창 크기 설정&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;options를 설정하면 크롬 드라이버를 통해서 띄워지는 창의 옵션을 원하는 대로 선택이 가능하다.&lt;/p&gt;
&lt;pre id=&quot;code_1674537336052&quot; class=&quot;clean&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;### 창 크기 등 각종 옵션
options = webdriver.ChromeOptions()
# options.add_argument('window-size=1920,1080')
# options.add_argument('headless')
# options.add_argument('start-maximized')&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 새탭 열기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새 탭을 열고 싶다면 driver.execute_script 을 사용하면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1674537336052&quot; class=&quot;pgsql&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from selenium import webdriver
import time

options = webdriver.ChromeOptions()
options.add_argument('start-maximized')
url = 'https://www.naver.co.kr'

driver = webdriver.Chrome('chromedriver.exe', options=options)
driver.get(url)

driver.execute_script('window.open(&quot;https://google.co.kr&quot;);')   #새 탭 열기
time.sleep(10)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4. 데이터 접근 방법&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특정 데이터에 접근하기 위해서는 여러 가지 방법이 있다. 나중에 예제에서 다루겠지만 크롬 F12를 눌러서 html 을 확인해가면서 다루어보면 좋다.&lt;/p&gt;
&lt;pre id=&quot;code_1674537336052&quot; class=&quot;reasonml&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;driver.find_element_by_xpath('/html/body/div[2]/div[2]/div[1]/div/div[3]/form/fieldset/button/span[2]') #xpath 로 접근
driver.find_element_by_class_name('ico_search_submit')  #class 속성으로 접근
driver.find_element_by_id('ke_kbd_btn') #id 속성으로 접근
driver.find_element_by_link_text('회원가입')    #링크가 달려 있는 텍스트로 접근
driver.find_element_by_css_selector('#account &amp;gt; div &amp;gt; a')   #css 셀렉터로 접근
driver.find_element_by_name('join') #name 속성으로 접근
driver.find_element_by_partial_link_text('가입')  #링크가 달려 있는 엘레먼트에 텍스트 일부만 적어서 해당 엘레먼트에 접근
driver.find_element_by_tag_name('input')    #태그 이름으로 접근
driver.find_element_by_tag_name('input').find_element_by_tag_name('a')  #input 태그 하위태그인 a 태그에 접근
driver.find_element_by_xpath('/html/body/div[2]/div[2]/div[1]/div/div[3]/form/fieldset/button/span[2]').find_element_by_name('join') #xpath 로 접근한 엘레먼트의 안에 join 이라는 속성을 가진 tag 엘레먼트에 접근&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;5. 엘리먼트 클릭 방법&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1674537336053&quot; class=&quot;less&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;###엘레먼트 클릭
driver.find_element_by_id('ke_kbd_btn').click()
driver.find_element_by_css_selector('gLFyf.gsfi').click()&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;6. 텍스트 입력과 삭제&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1674537336053&quot; class=&quot;less&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;###텍스트 입력
driver.find_element_by_id('ke_awd2_btn').send_keys('텍스트 입력')
driver.find_element_by_css_selector('gLFyf.gsfi').send_keys('min')

##텍스트 삭제
driver.find_element_by_id('ke_awd2_btn').clear()&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;7. 단축키 입력 및 컨트롤 + v&lt;/p&gt;
&lt;pre id=&quot;code_1674537336053&quot; class=&quot;clean&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from selenium.webdriver.common.keys import Keys

##단축키 입력
from selenium.webdriver.common.keys import Keys

## 컨트롤+V
driver.find_element_by_id('ke_kbd_btn').send_keys(Keys.CONTROL + 'v')&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;8. 경고창&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1674537336053&quot; class=&quot;clean&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;##경고창 이동
driver.switch_to.alert
##경고창 수락 / 거절
from selenium.webdriver.common.alert import Alert
Alert(driver).accept()    #경고창 수락 누름
Alert(driver).dismiss()   #경고창 거절 누름
print(Alert(driver).text  # 경고창 텍스트 얻음&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;9. 스크롤 이동 및 클릭&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1674537336053&quot; class=&quot;reasonml&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;##스크롤 이동
브라우저 스크롤 최하단으로 이동
driver.execute_script('window.scrollTo(0, document.body.scrollHeight);')

## CSS 셀렉터로 클릭
driver.execute_script(&quot;document.querySelector('body &amp;gt;  div.modal-options__buttons &amp;gt; button.btn.btn-primary').click();&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;10. 스크롤을 특정 엘리먼트로 이동&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1674537336054&quot; class=&quot;reasonml&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;## 스크롤 특정 엘리먼트로 이동
element = driver.find_element_by_css_selector('div &amp;gt; a')
driver.execute_script('arguments[0].scrollIntoView(true);', element)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;11. 브라우저 뒤로가기/앞으로가기&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1674537336054&quot; class=&quot;applescript&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;## 브라우저 뒤로가기, 앞으로가기
driver.back() #뒤로가기
driver.forward() #앞으로가기&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;12. 크롬 탬 간 이동&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1674537336054&quot; class=&quot;css&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;## 텝 이동
driver.window_handles[0] #브라우저 탭 객체를 리스트로 반환. [0] 은 인덱싱. 첫번재 탭을 의미
driver.switch_to.window(driver.window_handles[0]) #첫번째 탭으로 이동
driver.switch_to.window(driver.window_handles[1]) #두번째 탭으로 이동
driver.switch_to.window(driver.window_handles[2]) #세번째 탭으로 이동&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;13. 종료&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1674537336054&quot; class=&quot;clean&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;## 종료
driver.close() #현재 탭 닫기
driver.quit()  #브라우저 닫기&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Python/Do Something</category>
      <author>pybi</author>
      <guid isPermaLink="true">https://pybi.tistory.com/60</guid>
      <comments>https://pybi.tistory.com/60#entry60comment</comments>
      <pubDate>Tue, 24 Jan 2023 14:15:41 +0900</pubDate>
    </item>
    <item>
      <title>구글 크롬 드라이버 자동 업데이트 금지</title>
      <link>https://pybi.tistory.com/59</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;※&amp;nbsp;참고&amp;nbsp;※ &lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://blog.naver.com/beyond_metadata&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://blog.naver.com/beyond_metadata&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1674659096637&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Metadata : 네이버 블로그&quot; data-og-description=&quot;Metadata..&quot; data-og-host=&quot;blog.naver.com&quot; data-og-source-url=&quot;https://blog.naver.com/beyond_metadata&quot; data-og-url=&quot;https://blog.naver.com/beyond_metadata&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bloAZS/hyRoHgS3WQ/pKweN21BKoeFSUfP5OfAFk/img.png?width=204&amp;amp;height=204&amp;amp;face=0_0_204_204&quot;&gt;&lt;a href=&quot;https://blog.naver.com/beyond_metadata&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://blog.naver.com/beyond_metadata&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bloAZS/hyRoHgS3WQ/pKweN21BKoeFSUfP5OfAFk/img.png?width=204&amp;amp;height=204&amp;amp;face=0_0_204_204');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Metadata : 네이버 블로그&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Metadata..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;blog.naver.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구글 크롬 드라이버가 자동 업데이트 되면 신규 기능에 의한 버그가 발생할 수도 있고, 기존에 사용하던 크롬 드라이버랑 호환이 안맞는 프로그램이 생길수도 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이에 크롬 드라이버 자동 업데이트를 취향에 맞게 On/Off 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Win&amp;nbsp;+&amp;nbsp;R&amp;nbsp;입력&amp;nbsp;후&lt;br /&gt;taskschd.msc&amp;nbsp;입력&amp;nbsp;후&amp;nbsp;엔터&lt;br /&gt;&lt;br /&gt;작업 스케줄러 화면이 나타나며 아래 두개의 이름이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GoogleUpdateTaskMachineCore&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GoogleUpdateTaskMachineUA&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1409&quot; data-origin-height=&quot;671&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dmjore/btrWKyy951C/gKCswXzyiDRcCTjDeGIPRK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dmjore/btrWKyy951C/gKCswXzyiDRcCTjDeGIPRK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dmjore/btrWKyy951C/gKCswXzyiDRcCTjDeGIPRK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdmjore%2FbtrWKyy951C%2FgKCswXzyiDRcCTjDeGIPRK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1409&quot; height=&quot;671&quot; data-origin-width=&quot;1409&quot; data-origin-height=&quot;671&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2개의 항목에 대해 '사용 안함' 으로 설정하면 된다. (다시 On할수도 있으니 삭제하지는 말자)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>기타/기타</category>
      <author>pybi</author>
      <guid isPermaLink="true">https://pybi.tistory.com/59</guid>
      <comments>https://pybi.tistory.com/59#entry59comment</comments>
      <pubDate>Thu, 19 Jan 2023 19:52:10 +0900</pubDate>
    </item>
    <item>
      <title>3GPP - 규격에서 쓰이는 단어들에 대한 의미 (shall, should 등)</title>
      <link>https://pybi.tistory.com/58</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;규격에서 쓰이는 단어들에 대한 의미이다. shall은 mandatory..&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1. shall&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;shall indicates&amp;nbsp;a&amp;nbsp;mandatory&amp;nbsp;requirement&amp;nbsp;to&amp;nbsp;do&amp;nbsp;something&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;shall&amp;nbsp;not indicates&amp;nbsp;an&amp;nbsp;interdiction&amp;nbsp;(prohibition)&amp;nbsp;to&amp;nbsp;do&amp;nbsp;something&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2. should&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;should indicates a recommendation to do something&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;should&amp;nbsp;not indicates&amp;nbsp;a&amp;nbsp;recommendation&amp;nbsp;not&amp;nbsp;to&amp;nbsp;do&amp;nbsp;something&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;3. may&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;may indicates&amp;nbsp;permission&amp;nbsp;to&amp;nbsp;do&amp;nbsp;something&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;need&amp;nbsp;not indicates&amp;nbsp;permission&amp;nbsp;not&amp;nbsp;to&amp;nbsp;do&amp;nbsp;something&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;4. can&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;can indicates&amp;nbsp;that&amp;nbsp;something&amp;nbsp;is&amp;nbsp;possible&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;cannot indicates&amp;nbsp;that&amp;nbsp;something&amp;nbsp;is&amp;nbsp;impossible&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;The&amp;nbsp;constructions&amp;nbsp;&quot;can&quot;&amp;nbsp;and&amp;nbsp;&quot;cannot&quot;&amp;nbsp;are&amp;nbsp;not&amp;nbsp;substitutes&amp;nbsp;for&amp;nbsp;&quot;may&quot;&amp;nbsp;and&amp;nbsp;&quot;need&amp;nbsp;not&quot;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;5. will&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;will indicates that something is certain or expected to happen as a result of action taken by an agency the behaviour of which is outside the scope of the present document&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;will not indicates that something is certain or expected not to happen as a result of action taken by an agency the behaviour of which is outside the scope of the present document&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;6. might&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;might indicates a likelihood that something will happen as a result of action taken by some agency the behaviour of which is outside the scope of the present document&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;might not indicates a likelihood that something will not happen as a result of action taken by some agency the behaviour of which is outside the scope of the present document&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;7. is&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;is (or&amp;nbsp;any&amp;nbsp;other&amp;nbsp;verb&amp;nbsp;in&amp;nbsp;the&amp;nbsp;indicative&amp;nbsp;mood)&amp;nbsp;indicates&amp;nbsp;a&amp;nbsp;statement&amp;nbsp;of&amp;nbsp;fact&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;is&amp;nbsp;not (or&amp;nbsp;any&amp;nbsp;other&amp;nbsp;negative&amp;nbsp;verb&amp;nbsp;in&amp;nbsp;the&amp;nbsp;indicative&amp;nbsp;mood)&amp;nbsp;indicates&amp;nbsp;a&amp;nbsp;statement&amp;nbsp;of&amp;nbsp;fact&lt;/span&gt;&lt;/p&gt;</description>
      <category>기타/LTE, 5G</category>
      <author>pybi</author>
      <guid isPermaLink="true">https://pybi.tistory.com/58</guid>
      <comments>https://pybi.tistory.com/58#entry58comment</comments>
      <pubDate>Thu, 19 Jan 2023 19:51:52 +0900</pubDate>
    </item>
    <item>
      <title>3GPP - 5G Core 주요 규격들</title>
      <link>https://pybi.tistory.com/57</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;758&quot; data-origin-height=&quot;216&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cfJ8Tc/btrWJwhDMmh/wNiblLFkHrXMBm860kkzVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cfJ8Tc/btrWJwhDMmh/wNiblLFkHrXMBm860kkzVk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cfJ8Tc/btrWJwhDMmh/wNiblLFkHrXMBm860kkzVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcfJ8Tc%2FbtrWJwhDMmh%2FwNiblLFkHrXMBm860kkzVk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;758&quot; height=&quot;216&quot; data-origin-width=&quot;758&quot; data-origin-height=&quot;216&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;● 3GPP TS 23.501 V18.0.0 (2022-12)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;System architecture for the 5G System (5GS); (Stage 2)&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;●&lt;span&gt;&amp;nbsp;&lt;/span&gt;3GPP TS 23.502 V18.0.0 (2022-12)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Procedures&amp;nbsp;for&amp;nbsp;the&amp;nbsp;5G&amp;nbsp;System&amp;nbsp;(5GS);&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;(Stage 2)&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;●&lt;span&gt;&amp;nbsp;&lt;/span&gt;3GPP TS 23.503 V18.0.0 (2022-12)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Policy&amp;nbsp;and&amp;nbsp;charging&amp;nbsp;control&amp;nbsp;framework&amp;nbsp;for&amp;nbsp;the&amp;nbsp;5G&amp;nbsp;System&amp;nbsp;(5GS);&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;(Stage 2)&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;●&lt;span&gt;&amp;nbsp;&lt;/span&gt;3GPP TS 23.247 V18.0.0 (2022-12)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Architectural&amp;nbsp;enhancements&amp;nbsp;for&amp;nbsp;5G&amp;nbsp;multicast-broadcast&amp;nbsp;services;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;(Stage 2)&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;●&lt;span&gt;&amp;nbsp;&lt;/span&gt;3GPP TS 23.548 V18.0.0 (2022-12)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5G System Enhancements for Edge Computing; (Stage 2)&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;●&lt;span&gt;&amp;nbsp;&lt;/span&gt;3GPP TS 29.501 V18.0.0 (2022-12)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Principles and Guidelines for Services Definition; (Stage 3)&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;●&lt;span&gt;&amp;nbsp;&lt;/span&gt;3GPP TS 29.502 V18.1.0 (2022-12)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5G&amp;nbsp;System;&amp;nbsp;Session&amp;nbsp;Management&amp;nbsp;Services;&amp;nbsp;(Stage&amp;nbsp;3)&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;●&lt;span&gt;&amp;nbsp;&lt;/span&gt;3GPP&amp;nbsp;TS&amp;nbsp;29.503&amp;nbsp;V18.0.0&amp;nbsp;(2022-12)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5G System; Unified Data Management Services; (Stage 3)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>기타/LTE, 5G</category>
      <author>pybi</author>
      <guid isPermaLink="true">https://pybi.tistory.com/57</guid>
      <comments>https://pybi.tistory.com/57#entry57comment</comments>
      <pubDate>Thu, 19 Jan 2023 19:51:35 +0900</pubDate>
    </item>
    <item>
      <title>3GPP - Change History, CR(Change Request)</title>
      <link>https://pybi.tistory.com/56</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;3GPP 규격 마지막을 보면 Change History가 있다. 규격은 Release 버전이 올라갈수록 진화하는데 말 그대로 어떤 내용들이 바뀌었는지 기록하는 것이다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; width=&quot;643&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td colspan=&quot;8&quot; width=&quot;643&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Change history&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width=&quot;53&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Date&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;53&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Meeting&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;73&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;TDoc&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;38&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;CR&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;28&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Rev&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;28&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Cat&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;321&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Subject/Comment&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;47&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;New version&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width=&quot;53&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;12-2017&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;53&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;SP#78&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;73&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;-&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;38&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;-&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;28&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;-&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;28&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;-&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;321&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;MCC Editorial Update after TSG&amp;nbsp;SA#78 Approval&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;47&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;15.0.0&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width=&quot;53&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;03-2018&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;53&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;SP#79&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;73&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;SP-180090&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;38&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;0002&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;28&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;28&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;F&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;321&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Using NRF for UPF discovery&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;47&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;15.1.0&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width=&quot;53&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;03-2018&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;53&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;SP#79&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;73&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;SP-180097&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;38&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;0003&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;28&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;28&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;F&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;321&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Configuration information the UE may exchange with the SMF during the lifetime of a PDU Session&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;47&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;15.1.0&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Change History에는 간단하게 제목만 있기 때문에 상세 내용을 보려면 별도의 CR 문서를 확인해야 한다. Meeting 명을 검색하거나 TDoc을 검색해도 되고 규격명(xx.xxx)을 그냥 검색한 후 확인할 수도 있다. 아래 2가지 방법에 대해서 알아보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 첫번째 방법으로 구글에 Meeting명을 검색해보자. 구글에 '3GPP SP#79' 이런식으로 검색하면 링크가 뜨고 링크에 들어가면 해당 Meeting때 진행된 각종 규격이 나온다. 거기서 원하는 3GPP 규격을 클릭해서 들어가보자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;660&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ckF231/btrWKbc9R9L/Oxay424kqgE8EkPv8fsp8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ckF231/btrWKbc9R9L/Oxay424kqgE8EkPv8fsp8K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ckF231/btrWKbc9R9L/Oxay424kqgE8EkPv8fsp8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FckF231%2FbtrWKbc9R9L%2FOxay424kqgE8EkPv8fsp8K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;660&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;660&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 아래처럼 각종 CR들이 나오고, 원하는 CR 넘버를 검색하면 WG TDoc까지 확인할 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;465&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAT8FZ/btrWK4kjJwv/A5NYGDVlDKlDTaMovWQQf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAT8FZ/btrWK4kjJwv/A5NYGDVlDKlDTaMovWQQf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAT8FZ/btrWK4kjJwv/A5NYGDVlDKlDTaMovWQQf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAT8FZ%2FbtrWK4kjJwv%2FA5NYGDVlDKlDTaMovWQQf1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;465&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;465&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 해당 내용을 클릭해서 워드 파일을 다운로드 받으면 어떤 부분이 변경된 것인지 상세 내용을 확인할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;813&quot; data-origin-height=&quot;554&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cLqvoa/btrWI8IeIkw/o0RcpXObEabVum5KGKQMNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cLqvoa/btrWI8IeIkw/o0RcpXObEabVum5KGKQMNK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cLqvoa/btrWI8IeIkw/o0RcpXObEabVum5KGKQMNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcLqvoa%2FbtrWI8IeIkw%2Fo0RcpXObEabVum5KGKQMNK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;813&quot; height=&quot;554&quot; data-origin-width=&quot;813&quot; data-origin-height=&quot;554&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 방법으로 그냥 구글에 3GPP xx.xxx를 검색한다. 그러면 제일 위에 Specification # 23.501 - 3GPP 가 검색된다. 그것을 누르면 아래와 같은 화면이 나오고 Versions로 가서 원하는 버전에 해당하는 'CR' 버튼을 누르면 바로 해당 CR 내용을 확인할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;660&quot; data-origin-height=&quot;661&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIscCW/btrWLi3JSAu/AvItkrShPMHiYr6lPwKs0K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIscCW/btrWLi3JSAu/AvItkrShPMHiYr6lPwKs0K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIscCW/btrWLi3JSAu/AvItkrShPMHiYr6lPwKs0K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIscCW%2FbtrWLi3JSAu%2FAvItkrShPMHiYr6lPwKs0K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;660&quot; height=&quot;661&quot; data-origin-width=&quot;660&quot; data-origin-height=&quot;661&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;*3GPP 문서에 Change History가 많으면 다 보기가 쉽지 않다. 이때는 아래 Cat(Category) 이라고 적힌 부분을 보면 그나마 도움이 될 듯 하다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; width=&quot;643&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td colspan=&quot;8&quot; width=&quot;643&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Change history&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width=&quot;53&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Date&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;53&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Meeting&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;73&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;TDoc&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;38&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;CR&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;28&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Rev&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;28&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Cat&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;321&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Subject/Comment&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;47&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;New version&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width=&quot;53&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;12-2017&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;53&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;SP#78&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;73&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;-&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;38&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;-&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;28&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;-&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;28&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;-&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;321&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;MCC Editorial Update after TSG&amp;nbsp;SA#78 Approval&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;47&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;15.0.0&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width=&quot;53&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;03-2018&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;53&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;SP#79&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;73&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;SP-180090&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;38&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;0002&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;28&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;28&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;F&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;321&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Using NRF for UPF discovery&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;47&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;15.1.0&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width=&quot;53&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;03-2018&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;53&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;SP#79&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;73&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;SP-180097&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;38&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;0003&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;28&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;28&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;F&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;321&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Configuration information the UE may exchange with the SMF during the lifetime of a PDU Session&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width=&quot;47&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;15.1.0&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Cat의 종류는 A, B, C, D, F가 있고 각각의 설명은 아래와 같다.F(Correction)보단 B(addition of feature)나 다른것이 좀 더 색다른 변화가 있지 않을까 싶다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;F&amp;nbsp;&amp;nbsp;(correction)&lt;br /&gt;A&amp;nbsp;&amp;nbsp;(mirror&amp;nbsp;corresponding&amp;nbsp;to&amp;nbsp;a&amp;nbsp;change&amp;nbsp;in&amp;nbsp;an&amp;nbsp;earlier&amp;nbsp; release)&lt;br /&gt;B&amp;nbsp;&amp;nbsp;(addition&amp;nbsp;of&amp;nbsp;feature),&amp;nbsp;&lt;br /&gt;C&amp;nbsp;&amp;nbsp;(functional&amp;nbsp;modification&amp;nbsp;of&amp;nbsp;feature)&lt;br /&gt;D&amp;nbsp;&amp;nbsp;(editorial&amp;nbsp;modification)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;끝!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>기타/LTE, 5G</category>
      <author>pybi</author>
      <guid isPermaLink="true">https://pybi.tistory.com/56</guid>
      <comments>https://pybi.tistory.com/56#entry56comment</comments>
      <pubDate>Thu, 19 Jan 2023 19:51:16 +0900</pubDate>
    </item>
    <item>
      <title>5G Network Functions and Entities</title>
      <link>https://pybi.tistory.com/55</link>
      <description>&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Network Functions and entities&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;The&amp;nbsp;5G&amp;nbsp;System&amp;nbsp;architecture&amp;nbsp;consists&amp;nbsp;of&amp;nbsp;the&amp;nbsp;following&amp;nbsp;network&amp;nbsp;functions&amp;nbsp;(NF):&lt;br /&gt;- Authentication&amp;nbsp;Server&amp;nbsp;Function&amp;nbsp;(AUSF).&lt;br /&gt;- Access&amp;nbsp;and&amp;nbsp;Mobility&amp;nbsp;Management&amp;nbsp;Function&amp;nbsp;(AMF).&lt;br /&gt;- Data&amp;nbsp;Network&amp;nbsp;(DN),&amp;nbsp;e.g.&amp;nbsp;operator&amp;nbsp;services,&amp;nbsp;Internet&amp;nbsp;access&amp;nbsp;or&amp;nbsp;3rd&amp;nbsp;party&amp;nbsp;services.&lt;br /&gt;- Unstructured&amp;nbsp;Data&amp;nbsp;Storage&amp;nbsp;Function&amp;nbsp;(UDSF).&lt;br /&gt;- Network&amp;nbsp;Exposure&amp;nbsp;Function&amp;nbsp;(NEF).&lt;br /&gt;- Network&amp;nbsp;Repository&amp;nbsp;Function&amp;nbsp;(NRF).&lt;br /&gt;- Network&amp;nbsp;Slice&amp;nbsp;Admission&amp;nbsp;Control&amp;nbsp;Function&amp;nbsp;(NSACF).&lt;br /&gt;- Network&amp;nbsp;Slice-specific&amp;nbsp;and&amp;nbsp;SNPN&amp;nbsp;Authentication&amp;nbsp;and&amp;nbsp;Authorization&amp;nbsp;Function&amp;nbsp;(NSSAAF).&lt;br /&gt;- Network&amp;nbsp;Slice&amp;nbsp;Selection&amp;nbsp;Function&amp;nbsp;(NSSF).&lt;br /&gt;- Policy&amp;nbsp;Control&amp;nbsp;Function&amp;nbsp;(PCF).&lt;br /&gt;- Session&amp;nbsp;Management&amp;nbsp;Function&amp;nbsp;(SMF).&lt;br /&gt;- Unified&amp;nbsp;Data&amp;nbsp;Management&amp;nbsp;(UDM).&lt;br /&gt;- Unified&amp;nbsp;Data&amp;nbsp;Repository&amp;nbsp;(UDR).&lt;br /&gt;- User&amp;nbsp;Plane&amp;nbsp;Function&amp;nbsp;(UPF).&lt;br /&gt;- UE&amp;nbsp;radio&amp;nbsp;Capability&amp;nbsp;Management&amp;nbsp;Function&amp;nbsp;(UCMF).&lt;br /&gt;- Application&amp;nbsp;Function&amp;nbsp;(AF).&lt;br /&gt;- User&amp;nbsp;Equipment&amp;nbsp;(UE).&lt;br /&gt;- (Radio)&amp;nbsp;Access&amp;nbsp;Network&amp;nbsp;((R)AN).&lt;br /&gt;- 5G-Equipment&amp;nbsp;Identity&amp;nbsp;Register&amp;nbsp;(5G-EIR).&lt;br /&gt;- Network&amp;nbsp;Data&amp;nbsp;Analytics&amp;nbsp;Function&amp;nbsp;(NWDAF).&lt;br /&gt;- CHarging&amp;nbsp;Function&amp;nbsp;(CHF).&lt;br /&gt;- Time&amp;nbsp;Sensitive&amp;nbsp;Networking&amp;nbsp;AF&amp;nbsp;(TSN&amp;nbsp;AF).&lt;br /&gt;- Time&amp;nbsp;Sensitive&amp;nbsp;Communication&amp;nbsp;and&amp;nbsp;Time&amp;nbsp;Synchronization&amp;nbsp;Function&amp;nbsp;(TSCTSF).&lt;br /&gt;- Data&amp;nbsp;Collection&amp;nbsp;Coordination&amp;nbsp;Function&amp;nbsp;(DCCF).&lt;br /&gt;- Analytics&amp;nbsp;Data&amp;nbsp;Repository&amp;nbsp;Function&amp;nbsp;(ADRF).&lt;br /&gt;- Messaging&amp;nbsp;Framework&amp;nbsp;Adaptor&amp;nbsp;Function&amp;nbsp;(MFAF).&lt;br /&gt;- Non-Seamless&amp;nbsp;WLAN&amp;nbsp;Offload&amp;nbsp;Function&amp;nbsp;(NSWOF).&lt;br /&gt;NOTE: The&amp;nbsp;functionalities&amp;nbsp;provided&amp;nbsp;by&amp;nbsp;DCCF&amp;nbsp;and/or&amp;nbsp;ADRF&amp;nbsp;can&amp;nbsp;also&amp;nbsp;be&amp;nbsp;hosted&amp;nbsp;by&amp;nbsp;an&amp;nbsp;NWDAF.&lt;br /&gt;- Edge&amp;nbsp;Application&amp;nbsp;Server&amp;nbsp;Discovery&amp;nbsp;Function&amp;nbsp;(EASDF).&lt;br /&gt;The&amp;nbsp;5G&amp;nbsp;System&amp;nbsp;architecture&amp;nbsp;also&amp;nbsp;comprises&amp;nbsp;the&amp;nbsp;following&amp;nbsp;network&amp;nbsp;entities:&lt;br /&gt;- Service&amp;nbsp;Communication&amp;nbsp;Proxy&amp;nbsp;(SCP).&lt;br /&gt;- Security&amp;nbsp;Edge&amp;nbsp;Protection&amp;nbsp;Proxy&amp;nbsp;(SEPP).&lt;br /&gt;The&amp;nbsp;functional&amp;nbsp;descriptions&amp;nbsp;of&amp;nbsp;these&amp;nbsp;Network&amp;nbsp;Functions&amp;nbsp;and&amp;nbsp;entities&amp;nbsp;are&amp;nbsp;specified&amp;nbsp;in&amp;nbsp;clause&amp;nbsp;6.&lt;br /&gt;- Non-3GPP&amp;nbsp;InterWorking&amp;nbsp;Function&amp;nbsp;(N3IWF).&lt;br /&gt;- Trusted&amp;nbsp;Non-3GPP&amp;nbsp;Gateway&amp;nbsp;Function&amp;nbsp;(TNGF).&lt;br /&gt;- Wireline&amp;nbsp;Access&amp;nbsp;Gateway&amp;nbsp;Function&amp;nbsp;(W-AGF).&lt;br /&gt;- Trusted&amp;nbsp;WLAN&amp;nbsp;Interworking&amp;nbsp;Function&amp;nbsp;(TWIF).&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-ad-creative-wrap=&quot;outer&quot;&gt;
&lt;div data-ad-creative-wrap=&quot;inner&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>기타/LTE, 5G</category>
      <author>pybi</author>
      <guid isPermaLink="true">https://pybi.tistory.com/55</guid>
      <comments>https://pybi.tistory.com/55#entry55comment</comments>
      <pubDate>Thu, 19 Jan 2023 19:50:57 +0900</pubDate>
    </item>
    <item>
      <title>3GPP - 설명 및 종류</title>
      <link>https://pybi.tistory.com/54</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;보통 3GPP 검색시 3gpp xx.xxx 라고 구글링하면 아래처럼 Specification을 확인할 수 있다. 3GPP에 대해 조금 더 자세히 알아보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;658&quot; data-origin-height=&quot;665&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pwmQ5/btrWIYy8vdU/kZDU1tgBdkDlgFKfU7Ksx0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pwmQ5/btrWIYy8vdU/kZDU1tgBdkDlgFKfU7Ksx0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pwmQ5/btrWIYy8vdU/kZDU1tgBdkDlgFKfU7Ksx0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpwmQ5%2FbtrWIYy8vdU%2FkZDU1tgBdkDlgFKfU7Ksx0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;658&quot; height=&quot;665&quot; data-origin-width=&quot;658&quot; data-origin-height=&quot;665&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;1. 전체 구조&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3GPP는 PCG (Project Co-ordination Group)과 TSG (Technical Specification Groups)가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PCG는 최상위 의결기구고, PCG 아래에 여러개의 TSG 그룹을 두고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555;&quot;&gt;TSG는 Radio Access Network, Core network, Service and system aspects, Terminals, GSM/EDGE LAN, Core network and terminals로 구성되어 있으며, TSG는 필요시 더 하위 그룹 개념인 WG을 만들게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;2. 표준화 과정&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;초기 스터디를 통해 기술 보고서 (TR) 작성 &amp;rarr; 추가되는 기능에 대한 타당성 조사 (Work Item 생성) &amp;rarr; 기술적 내용과 상업성을 고려하여 &quot;Feature&quot; 정의 &amp;rarr; &quot;Building Block&quot;으로 세분화 &amp;rarr; 기능들을 더 작은 &quot;Work Task&quot;로 세분화 &amp;rarr;&lt;br /&gt;&amp;nbsp;세분화 된 Work Task를 기초로 Work Item에 대한 연구 &amp;rarr; TCG가 Work Item을 승인 &amp;rarr; 3GPP 워크 프로그램을 통해 개별 회원, 파트너의 반대가 없으면 &amp;rarr; PCG에 의해 채택&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span&gt;3. TSG/WG 문서 형태&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;x m i n n z z z z&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;x : 해당되는 TSG를 표시 (R, N, S, T, G, C)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;m : WG을 표시 (보통 1, 2, 3...), TSG 자체인 경우는 &quot;P&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;i : 보통은 &quot;-&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;nn : 연도&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;zzzz : 문서의 고유 숫자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;4. 표준 문서 종류&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1) TS (Technical Specification)&lt;/b&gt;&lt;br /&gt;3GPP&amp;nbsp;회의에서&amp;nbsp;논의되어&amp;nbsp;채택된&amp;nbsp;규격은&amp;nbsp;최종적으로&amp;nbsp;TS에&amp;nbsp;포함되게&amp;nbsp;된다.&amp;nbsp;고유&amp;nbsp;표준번호가&amp;nbsp;할당되며&amp;nbsp;title&amp;nbsp;마지막에는&amp;nbsp;TS의&amp;nbsp;release&amp;nbsp;정보가&amp;nbsp;부가되게&amp;nbsp;된다.&amp;nbsp;또한,&amp;nbsp;기고문과&amp;nbsp;CR에&amp;nbsp;의해&amp;nbsp;업데이트&amp;nbsp;될&amp;nbsp;수&amp;nbsp;있어서&amp;nbsp;하나의&amp;nbsp;TS에도&amp;nbsp;다수의&amp;nbsp;버전이&amp;nbsp;존재할&amp;nbsp;수&amp;nbsp;있으며,&amp;nbsp;그&amp;nbsp;버전은&amp;nbsp;아래와&amp;nbsp;같은&amp;nbsp;규칙을&amp;nbsp;따른다.&lt;br /&gt;&lt;br /&gt;x.y.z&lt;br /&gt;x : 1 (정보 제공을 위해 TSG에 제출), 2 (승인을 위해 TSG에 제출) 3이상 (&quot;Change Control&quot;에 의해 TSG가 승인)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1 presented&amp;nbsp;to&amp;nbsp;TSG&amp;nbsp;for&amp;nbsp;information;&lt;br /&gt;2 presented&amp;nbsp;to&amp;nbsp;TSG&amp;nbsp;for&amp;nbsp;approval;&lt;br /&gt;3 or&amp;nbsp;greater&amp;nbsp;indicates&amp;nbsp;TSG&amp;nbsp;approved&amp;nbsp;document&amp;nbsp;under&amp;nbsp;change&amp;nbsp;control.&lt;br /&gt;y : 기술의 개선, 정정, 업데이트 (the second digit is incremented for all changes of substance, i.e. technical enhancements, corrections, updates, etc.)&lt;br /&gt;z : 편집에 의해 변경된 경우 (the third digit is incremented when editorial only changes have been incorporated in the document)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2) TR (Technical Report)&lt;/b&gt;&lt;br /&gt;단순히 option과 alternative를 분석하는 문서이다. TS와 달리 구속력이 없으며, 단지 특정 이슈, alternative 및 제안 사항을 검토한 것으로 일정 기간동안 유효하며, 최종적으로 TS로 될 수도, 폐기될 수도 있다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3) CR (Change Request)&lt;/b&gt;&lt;br /&gt;TS 및 TR에 기제된 내용에 대하여 변경 혹인 수정을 요구하는 문서로 넓은 의미의 기고문에 속한다.&lt;/p&gt;</description>
      <category>기타/LTE, 5G</category>
      <author>pybi</author>
      <guid isPermaLink="true">https://pybi.tistory.com/54</guid>
      <comments>https://pybi.tistory.com/54#entry54comment</comments>
      <pubDate>Thu, 19 Jan 2023 19:50:40 +0900</pubDate>
    </item>
  </channel>
</rss>