<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>ready-oun.log</title>
        <link>https://velog.io/</link>
        <description>https://readyoun.tistory.com/</description>
        <lastBuildDate>Thu, 11 Jan 2024 05:41:27 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>ready-oun.log</title>
            <url>https://velog.velcdn.com/images/ready-oun/profile/b315f538-6496-40ee-afdf-177fc8393ea4/image.jpg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. ready-oun.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/ready-oun" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[RDBMS (Relational DBMS, 관계형 DBMS)란? ]]></title>
            <link>https://velog.io/@ready-oun/RDBMS-Relational-DBMS-%EA%B4%80%EA%B3%84%ED%98%95-DBMS%EB%9E%80</link>
            <guid>https://velog.io/@ready-oun/RDBMS-Relational-DBMS-%EA%B4%80%EA%B3%84%ED%98%95-DBMS%EB%9E%80</guid>
            <pubDate>Thu, 11 Jan 2024 05:41:27 GMT</pubDate>
            <description><![CDATA[<h1 id="정의--기본구조--구성-요소">정의 / 기본구조 / 구성 요소</h1>
<h2 id="정의">정의</h2>
<p>표 형태로 데이터를 구조화하고 관리하는 데이터베이스</p>
<p>관계형 데이터베이스는 데이터를 테이블 형태로 구조화하는 방식
: 2차원 테이블을 사용하여 데이터를 정의하고 표현하는 데이터 모델</p>
<ul>
<li>여기서 데이터는 속성(Attribute)과 해당 속성에 대응하는 데이터 값(Attribute Value)으로 구성
즉, 데이터를 정리하고 설명하기 위해 <em>속성과 데이터 값 간의 관계</em>를 찾아내어 이를 <em>테이블 형태</em>로 나타낸다. 이 테이블은 <code>열(Column)</code>과 <code>행(Row)</code>으로 이뤄져 있으며, 각 열은 <code>데이터의 속성</code>을 나타내고 각 행은 <code>해당 속성에 대응하는 데이터 값</code>을 포함한다. </li>
</ul>
<h1 id="기본구조">기본구조</h1>
<blockquote>
<p>Database → Table → Column, Row</p>
</blockquote>
<ul>
<li><p>Database = 구조화된 데이터의 집합
: 데이터 저장, 검색, 수정, 삭제할 수 있게 해주는 시스템</p>
</li>
<li><p>Table = DB 내 데이터 저장소
: 행(Row)과 열(Column)의 격자 형태로 구성</p>
</li>
<li><p>Column = Attribute = Field (컬럼)
: 테이블 내의 특정 카테고리 또는 데이터 유형</p>
</li>
<li><p>Row = Record = Tuple (행)
: 테이블 내의 개별 데이터 항목으로, 각 행은 하나의 데이터 항목 또는 개체를 나타낸다. </p>
</li>
</ul>
<ol>
<li>스키마(Schema) 
: 데이터베이스 구조 정의. 테이블, 행, 열, 인덱스, 관계 등 데이터베이스 구조 명시. </li>
<li>SQL (Structured Query Langugage) 
: 데이터베이스에서 데이터 관리 위해 사용하는 표준 프로그래밍 언어. 데이터베이스에 질의, 업데이트, 삭제 등 작업 수행. </li>
<li>인덱스 (Index)
: DB에 데이터 검색 속도를 빠르게 하기 위해 사용하는 객체. 특정 열에 대한 포인터를 포함하여 데이터 건ㅁ색 시간 단축.</li>
<li>데이터베이스 관리 시스템(DBMS) 
: 데이터베이스를 관리하는 소프트웨어. 예시 종류 <a href="https://velog.io/@ready-oun/DBMS%EB%9E%80">링크</a> 참고</li>
<li>트랜잭션 (Transaction)
: 데이터베이스 상태를 변화시키는 하나의 작업 단위. 데이터 무결성을 유지하는 데 중요한 역할. </li>
</ol>
<blockquote>
<p>RDBMS는 데이터의 구조화와 안정성 측면에서 강력하며, 일반적인 업무 응용에 적합하다. 그러나 성능이나 유연성 등의 측면에서 고려해야 할 부분도 있다.</p>
</blockquote>
<h1 id="구성요소">구성요소</h1>
<ol>
<li>데이터 베이스 (학교)</li>
<li>테이블=모델 (학생, 교실, 선생님(급여), 행사, 급식, 동아리, 방과후활동, 과목, 시험, 비품)</li>
<li>행 : 하나의 데이터</li>
<li>열 : 컬럼<ol>
<li>(테이블) 학생 - (컬럼) 나이, 성별, 주소, 성적</li>
<li>교실 - 학생수, 평균성적 </li>
<li>선생님 - 나이, 성별, 주소, 급여</li>
</ol>
</li>
<li>키 : ID<ol>
<li>PK (Primary Key) id or pk<ol>
<li>테이블 내에서 중복이 절대 불가능 (고유값으로 사용이 가능)</li>
<li>행(=하나의 데이터)을 식별할 수 있는 유일한 값</li>
<li>유니크한 값이면 가능<ol>
<li>주민등록번호</li>
<li>국가 코드 (+82, +1, +86 …)</li>
<li>학번 (2010+119+09)</li>
<li>군번</li>
</ol>
</li>
</ol>
</li>
<li>FK (Foreign Key)<ol>
<li>다른 테이블의 기본키로 지정된 키</li>
</ol>
</li>
</ol>
</li>
</ol>
<h1 id="대표적인-rdbms">대표적인 RDBMS</h1>
<ol>
<li>MySQL: 개방 소스 RDBMS, 다양한 용도로 활용됨.</li>
<li>PostgreSQL: 객체 관계형 데이터베이스 시스템, 확장 가능하고 다양한 기능 제공.</li>
<li>Microsoft SQL Server: Microsoft에서 제공하는 RDBMS, 엔터프라이즈 급 데이터베이스 솔루션.</li>
<li>Oracle Database: 대규모 엔터프라이즈용 RDBMS, 뛰어난 성능과 안정성 제공.</li>
<li>SQLite: 경량 로컬 RDBMS, 임베디드 시스템과 모바일 애플리케이션에 활용.</li>
</ol>
<ul>
<li>MySQL과 PostgreSQL: 오픈 소스, 무료 사용 가능, 다양한 용도에 활용</li>
<li>Microsoft SQL Server와 Oracle Database: 주로 기업 환경에서 사용</li>
<li>SQLite: 경량 환경과 모바일 애플리케이션에 간단한 데이터베이스 요구에 사용</li>
</ul>
<h1 id="db-schema">DB Schema</h1>
<p>데이터베이스 스키마</p>
<ul>
<li>데이터베이스의 구조. 청사진이자 설계도.</li>
<li>논리적 스키마와 물리적 스키마가 있는데 논리적 스키마가 더 중요.</li>
<li>데이터베이스 내 테이블 간 어떻게 연결되었는지 보여준다. </li>
</ul>
<h1 id="sql-structured-query-language">SQL (Structured Query Language)</h1>
<ul>
<li>관계형 데이터베이스에서 데이터를 처리, 제어하는 데 사용하는 표준화된 언어 </li>
<li>주로 DBMS에서 상호 작용을 위해 설계</li>
</ul>
<ol>
<li><p>데이터 정의 언어(DDL - Data Definition Language)
: DB의 구조 정의 및 관리에 사용.
 <strong>주요 명령어:</strong></p>
<ol>
<li><code>CREATE</code> : DB 객체 생성 (<code>CREATE TABLE</code>, <code>CREATE INDEX</code> 등)</li>
<li><code>ALTER</code>: DB 객체 수정 (<code>ALTER TABLE</code> 등)</li>
<li><code>DROP</code>: DB 객체 삭제 (<code>DROP TABLE</code> 등)</li>
<li><code>TRUNCATE</code>: 테이블의 모든 레코드를 삭제하나, 테이블은 유지</li>
</ol>
</li>
<li><p>데이터 처리 언어 (DML - Data Manipulation Language)
: 데이터 검색, 삽입, 수정, 삭제에 사용.
 <strong>주요 명령어:</strong></p>
<ol>
<li><code>SELECT</code>: DB에서 정보 검색 </li>
<li><code>INSERT</code> : 새로운 이터를 테이블에 삽입</li>
<li><code>UPDATE</code>: 테이블의 기존 데이터 수정 </li>
<li><code>DELETE</code>: 테이블에서 데이터 삭제</li>
</ol>
</li>
<li><p>데이터 제어 언어(DCL - Data Control Language)
: 데이터베이스에 대한 액세스 제어에 사용.
 <strong>주요 명령어:</strong></p>
<ol>
<li><code>GRANT</code>: </li>
<li><code>REVOKE</code></li>
</ol>
</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[MySQL command 모음 ]]></title>
            <link>https://velog.io/@ready-oun/MySQL-command-%EB%AA%A8%EC%9D%8C</link>
            <guid>https://velog.io/@ready-oun/MySQL-command-%EB%AA%A8%EC%9D%8C</guid>
            <pubDate>Thu, 11 Jan 2024 04:52:02 GMT</pubDate>
            <description><![CDATA[<h1 id="골라쓰자">골라쓰자</h1>
<pre><code>Usage: mysql [OPTIONS] [database]
  -?, --help          Display this help and exit.
  -I, --help          Synonym for -?
  --auto-rehash       Enable automatic rehashing. One doesn&#39;t need to use
                      &#39;rehash&#39; to get table and field completion, but startup
                      and reconnecting may take a longer time. Disable with
                      --disable-auto-rehash.
                      (Defaults to on; use --skip-auto-rehash to disable.)
  -A, --no-auto-rehash
                      No automatic rehashing. One has to use &#39;rehash&#39; to get
                      table and field completion. This gives a quicker start of
                      mysql and disables rehashing on reconnect.
  --auto-vertical-output
                      Automatically switch to vertical output mode if the
                      result is wider than the terminal width.
  -B, --batch         Don&#39;t use history file. Disable interactive behavior.
                      (Enables --silent.)
  --bind-address=name IP address to bind to.
  --binary-as-hex     Print binary data as hex. Enabled by default for
                      interactive terminals.
  --character-sets-dir=name
                      Directory for character set files.
  --column-type-info  Display column type information.
  -c, --comments      Preserve comments. Send comments to the server. The
                      default is --comments (keep comments), disable with
                      --skip-comments.
                      (Defaults to on; use --skip-comments to disable.)
  -C, --compress      Use compression in server/client protocol.
  -#, --debug[=#]     This is a non-debug version. Catch this and exit.
  --debug-check       This is a non-debug version. Catch this and exit.
  -T, --debug-info    This is a non-debug version. Catch this and exit.
  -D, --database=name Database to use.
  --default-character-set=name
                      Set the default character set.
  --delimiter=name    Delimiter to be used.
  --enable-cleartext-plugin
                      Enable/disable the clear text authentication plugin.
  -e, --execute=name  Execute command and quit. (Disables --force and history
                      file.)
  -E, --vertical      Print the output of a query (rows) vertically.
  -f, --force         Continue even if we get an SQL error.
  --histignore=name   A colon-separated list of patterns to keep statements
                      from getting logged into syslog and mysql history.
  -G, --named-commands
                      Enable named commands. Named commands mean this program&#39;s
                      internal commands; see mysql&gt; help . When enabled, the
                      named commands can be used from any line of the query,
                      otherwise only from the first line, before an enter.
                      Disable with --disable-named-commands. This option is
                      disabled by default.
  -i, --ignore-spaces Ignore space after function names.
  --init-command=name Single SQL Command to execute when connecting to MySQL
                      server. Will automatically be re-executed when
                      reconnecting.
  --init-command-add=name
                      Add SQL command to the list to execute when connecting to
                      MySQL server. Will automatically be re-executed when
                      reconnecting.
  --local-infile      Enable/disable LOAD DATA LOCAL INFILE.
  -b, --no-beep       Turn off beep on error.
  -h, --host=name     Connect to host.
  --dns-srv-name=name Connect to a DNS SRV resource
  -H, --html          Produce HTML output.
  -X, --xml           Produce XML output.
  --line-numbers      Write line numbers for errors.
                      (Defaults to on; use --skip-line-numbers to disable.)
  -L, --skip-line-numbers
                      Don&#39;t write line number for errors.
  -n, --unbuffered    Flush buffer after each query.
  --column-names      Write column names in results.
                      (Defaults to on; use --skip-column-names to disable.)
  -N, --skip-column-names
                      Don&#39;t write column names in results.
  --sigint-ignore     Ignore SIGINT (CTRL-C).
  -o, --one-database  Ignore statements except those that occur while the
                      default database is the one named at the command line.
  --pager[=name]      Pager to use to display results. If you don&#39;t supply an
                      option, the default pager is taken from your ENV variable
                      PAGER. Valid pagers are less, more, cat [&gt; filename],
                      etc. See interactive help (\h) also. This option does not
                      work in batch mode. Disable with --disable-pager. This
                      option is disabled by default.
  -p, --password[=name]
                      Password to use when connecting to server. If password is
                      not given it&#39;s asked from the tty.
  -,, --password1[=name]
                      Password for first factor authentication plugin.
  -,, --password2[=name]
                      Password for second factor authentication plugin.
  -,, --password3[=name]
                      Password for third factor authentication plugin.
  -P, --port=#        Port number to use for connection or 0 for default to, in
                      order of preference, my.cnf, $MYSQL_TCP_PORT,
                      /etc/services, built-in default (3306).
  --prompt=name       Set the mysql prompt to this value.
  --protocol=name     The protocol to use for connection (tcp, socket, pipe,
                      memory).
  -q, --quick         Don&#39;t cache result, print it row by row. This may slow
                      down the server if the output is suspended. Doesn&#39;t use
                      history file.
  -r, --raw           Write fields without conversion. Used with --batch.
  --reconnect         Reconnect if the connection is lost. Disable with
                      --disable-reconnect. This option is enabled by default.
                      (Defaults to on; use --skip-reconnect to disable.)
  -s, --silent        Be more silent. Print results with a tab as separator,
                      each row on new line.
  -S, --socket=name   The socket file to use for connection.
  --server-public-key-path=name
                      File path to the server public RSA key in PEM format.
  --get-server-public-key
                      Get server public key
  --ssl-mode=name     SSL connection mode.
  --ssl-ca=name       CA file in PEM format.
  --ssl-capath=name   CA directory.
  --ssl-cert=name     X509 cert in PEM format.
  --ssl-cipher=name   SSL cipher to use.
  --ssl-key=name      X509 key in PEM format.
  --ssl-crl=name      Certificate revocation list.
  --ssl-crlpath=name  Certificate revocation list path.
  --tls-version=name  TLS version to use, permitted values are: TLSv1.2,
                      TLSv1.3
  --ssl-fips-mode=name
                      SSL FIPS mode (applies only for OpenSSL); permitted
                      values are: OFF, ON, STRICT
  --tls-ciphersuites=name
                      TLS v1.3 cipher to use.
  --ssl-session-data=name
                      Session data file to use to enable ssl session reuse
  --ssl-session-data-continue-on-failed-reuse
                      If set to ON, this option will allow connection to
                      succeed even if session data cannot be reused.
  --tls-sni-servername=name
                      The SNI server name to pass to server
  -t, --table         Output in table format.
  --tee=name          Append everything into outfile. See interactive help (\h)
                      also. Does not work in batch mode. Disable with
                      --disable-tee. This option is disabled by default.
  -u, --user=name     User for login if not current user.
  -U, --safe-updates  Only allow UPDATE and DELETE that uses keys.
  -U, --i-am-a-dummy  Synonym for option --safe-updates, -U.
  -v, --verbose       Write more. (-v -v -v gives the table output format).
  -V, --version       Output version information and exit.
  -w, --wait          Wait and retry if connection is down.
  --connect-timeout=# Number of seconds before connection timeout.
  --max-allowed-packet=#
                      The maximum packet length to send to or receive from
                      server.
  --net-buffer-length=#
                      The buffer size for TCP/IP and socket communication.
  --select-limit=#    Automatic limit for SELECT when using --safe-updates.
  --max-join-size=#   Automatic limit for rows in a join when using
                      --safe-updates.
  --show-warnings     Show warnings after every statement.
  -j, --syslog        Log filtered interactive commands to syslog. Filtering of
                      commands depends on the patterns supplied via histignore
                      option besides the default patterns.
  --plugin-dir=name   Directory for client-side plugins.
  --default-auth=name Default authentication client-side plugin to use.
  --binary-mode       By default, ASCII &#39;\0&#39; is disallowed and &#39;\r\n&#39; is
                      translated to &#39;\n&#39;. This switch turns off both features,
                      and also turns off parsing of all clientcommands except
                      \C and DELIMITER, in non-interactive mode (for input
                      piped to mysql or loaded using the &#39;source&#39; command).
                      This is necessary when processing output from mysqlbinlog
                      that may contain blobs.
  --connect-expired-password
                      Notify the server that this client is prepared to handle
                      expired password sandbox mode.
  --compression-algorithms=name
                      Use compression algorithm in server/client protocol.
                      Valid values are any combination of
                      &#39;zstd&#39;,&#39;zlib&#39;,&#39;uncompressed&#39;.
  --zstd-compression-level=#
                      Use this compression level in the client/server protocol,
                      in case --compression-algorithms=zstd. Valid range is
                      between 1 and 22, inclusive. Default is 3.
  --load-data-local-dir=name
                      Directory path safe for LOAD DATA LOCAL INFILE to read
                      from.
  --fido-register-factor=name
                      Specifies authentication factor, for which registration
                      needs to be done.
  --authentication-oci-client-config-profile=name
                      Specifies the configuration profile whose configuration
                      options are to be read from the OCI configuration file.
                      Default is DEFAULT.
  --oci-config-file=name
                      Specifies the location of the OCI configuration file.
                      Default for Linux is ~/.oci/config and %HOME/.oci/config
                      on Windows.
  --telemetry-client  Load the telemetry_client plugin.
  --plugin-authentication-webauthn-client-preserve-privacy
                      Allows selection of discoverable credential to be used
                      for signing challenge. default is false - implies
                      challenge is signed by all credentials for given relying
                      party.
  --register-factor=name
                      Specifies factor for which registration needs to be done
                      for.

Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /opt/homebrew/etc/my.cnf ~/.my.cnf
The following groups are read: mysql client
The following options may be given as the first argument:
--print-defaults        Print the program argument list and exit.
--no-defaults           Don&#39;t read default options from any option file,
                        except for login file.
--defaults-file=#       Only read default options from the given file #.
--defaults-extra-file=# Read this file after the global files are read.
--defaults-group-suffix=#
                        Also read groups with concat(group, suffix)
--login-path=#          Read this path from the login file.
--no-login-paths        Don&#39;t read login paths from the login path file.

Variables (--variable-name=value)
and boolean options {FALSE|TRUE}                       Value (after reading options)</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[MySQL / PostgreSQL / SQLite 설치]]></title>
            <link>https://velog.io/@ready-oun/MySQL-PostgreSQL-SQLite-%EC%84%A4%EC%B9%98</link>
            <guid>https://velog.io/@ready-oun/MySQL-PostgreSQL-SQLite-%EC%84%A4%EC%B9%98</guid>
            <pubDate>Thu, 11 Jan 2024 04:37:27 GMT</pubDate>
            <description><![CDATA[<h1 id="mysql">MySQL</h1>
<p><a href="https://dev.mysql.com/downloads/mysql/">https://dev.mysql.com/downloads/mysql/</a></p>
<ul>
<li>가입하고 Workbench 다운로드</li>
</ul>
<p>설치 단계별 가이드는 [블로그] (<a href="https://aday7.tistory.com/entry/MySQL-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%84%A4%EC%A0%95-%EB%8B%A8%EA%B3%84%EB%B3%84-%EC%99%84%EC%A0%84-%EA%B0%80%EC%9D%B4%EB%93%9C">https://aday7.tistory.com/entry/MySQL-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%84%A4%EC%A0%95-%EB%8B%A8%EA%B3%84%EB%B3%84-%EC%99%84%EC%A0%84-%EA%B0%80%EC%9D%B4%EB%93%9C</a>) 참고</p>
<ul>
<li><p>Workbench(GUI프로그램) 
<a href="https://www.mysql.com/products/workbench/">https://www.mysql.com/products/workbench/</a></p>
</li>
<li><p>homebrew install 
다른 <a href="https://velog.io/@haleyjun/MySQL-Mac%EC%97%90-MySQL-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0-M1%EC%B9%A9">velog</a> 참고</p>
</li>
</ul>
<h1 id="postgresql">PostgreSQL</h1>
<p>다운로드 : <a href="https://www.postgresql.org/">https://www.postgresql.org/</a></p>
<p>설치 가이드 [블로그] (<a href="https://backendcode.tistory.com/225">https://backendcode.tistory.com/225</a>)</p>
<h1 id="sqlite3">SQLite3</h1>
<p>Mac OS에는 설치를 따로 안 해도 이미 설치되어 있다..! 
터미널에서 sqlite3 를 입력해보자.</p>
<p>윈도우는 모르겠다. 여기서 다운받으면 될 듯.
<a href="https://www.sqlite.org/download.html">https://www.sqlite.org/download.html</a></p>
<p><a href="https://youtu.be/PC4phLbiZgk?si=Ews-7jwsVIBzqJ0A">영상</a>을 참고해서 터미널에 작성해봤다.</p>
<pre><code>Last login: Mon Jan  8 10:46:12 on ttys004
robin@imhuiyeon-ui-MacBookPro ~ % sqlite3
SQLite version 3.39.5 2022-10-14 20:58:05
Enter &quot;.help&quot; for usage hints.
Connected to a transient in-memory database.
Use &quot;.open FILENAME&quot; to reopen on a persistent database.
sqlite&gt; show databases;
Parse error: near &quot;show&quot;: syntax error
  show databases;
  ^--- error here
sqlite&gt; .databases
main: &quot;&quot; r/w
sqlite&gt; my.db
   ...&gt; create table tb1(one text, two int)
   ...&gt; insert into tb1 values(&quot;hello&quot;, 10);
Parse error: near &quot;my&quot;: syntax error
  my.db create table tb1(one text, two int) insert into tb1 values(&quot;hello&quot;, 10);
  ^--- error here
sqlite&gt; create table tb1(one text, two int);
sqlite&gt; insert into tb1 values(&quot;hello&quot;, 10);
sqlite&gt; select * from tb1
   ...&gt; ;
hello|10
sqlite&gt;</code></pre><p>&lt;입력 &amp; 엔터&gt;</p>
<ol>
<li>sqlite3 (실행)</li>
<li>.databases (데이터베이스 보여줘) </li>
<li>my.db (내 데이터베이스) </li>
<li>create table tb1(one text, two int); (테이블 추가할게 (이렇게))</li>
<li>insert into tb1 values(&quot;hello&quot;, 10); (테이블 값 이거 넣을게)</li>
<li>select * from tb1 (테이블의 aspects를 선택)</li>
<li>; (전체)
4에서 ;을 입력 안 해서 오류가 났었음.
위 순대로 입력하면,<pre><code>hello|10</code></pre>위 테이블 한 행이 생성된 걸 보여준다. </li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[DBMS란?]]></title>
            <link>https://velog.io/@ready-oun/DBMS%EB%9E%80</link>
            <guid>https://velog.io/@ready-oun/DBMS%EB%9E%80</guid>
            <pubDate>Thu, 11 Jan 2024 03:33:40 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>데이터베이스 Day 1</p>
</blockquote>
<h3 id="dbms-database-management-system-데이터베이스-관리-시스템">DBMS (Database Management System, 데이터베이스 관리 시스템)</h3>
<p>데이터 저장, 검색, 업데이트, 관리를 위한 소프트웨어 &#39;데이터베이스 관리 시스템&#39;</p>
<ul>
<li>대용량 데이터의 효율적인 처리와 접근을 가능하게 함. </li>
<li>데이터의 무결성, 보안, 백업 및 복구 기능 제공.</li>
</ul>
<p>[DB-Engines Ranking] (<a href="https://db-engines.com/en/ranking">https://db-engines.com/en/ranking</a>)
회사마다 서비스 특징에 따라 쓰는 DB가 달라지니 하나만 고집하는 건 금물. </p>
<h4 id="oracle-database">Oracle Database</h4>
<ul>
<li>대형 기업이나 복잡한 애플리케이션에 적합 (예. 은행, 금융권 등 해킹되면 x되는 곳)</li>
<li>비싼 라이선스 비용 - 단, 신뢰성과 서은ㅇ 매우 높음</li>
</ul>
<h4 id="mysql">MySQL</h4>
<ul>
<li>주로 웹 애플리케이션 및 소규모~중간 규모 프로젝트에서 사용</li>
<li>오픈소스에 사용이 쉬워서 소규모 앱에 인기 많음 (그래도 다 사용하려면 지불해야) </li>
<li>Php와 통합 용이해 웹 개발에 자주 쓰임(LEMP Stack)</li>
<li>비교적 가벼우면서 성능 좋음, 다양한 운영 체제 지원</li>
<li>대규모 DB와 고급 기능이 필요한 환경에는 다소 제한적</li>
</ul>
<h4 id="microsoft-sql-server">Microsoft SQL Server</h4>
<ul>
<li>주로 중대형 기업에서 사용</li>
<li>.NET과 같은 Microsoft 기술과 잘 통합</li>
<li>Windows 기반 시스템에 최적화 (특히 마소 환경에서 뛰어난 성능)</li>
<li>사용자 친화적 관리도구, 강력한 보안 기능 제공</li>
<li>데이터 웨어하우징, 비즈니스 인텔리저스, 데이터 분석에 유용한 기능 포함 </li>
</ul>
<h4 id="postgresql">PostgreSQL</h4>
<ul>
<li>복잡한 쿼리와 대규모 데이터베이스 관리가 필요한 경우에 적합</li>
<li>객체-관계형 DBMS =&gt; 확장 가능한 고급 기능 제공</li>
<li>오픈 소스</li>
<li>SQL 표준을 잘 준수함</li>
<li>복잡한 데이터 타입과 사용자 정의 함수 지원</li>
<li>거대한 데이터 세트와 복잡한 쿼리에 적합 =&gt; 높은 확장성과 성능 자랑 </li>
<li>MySQL 쓰면서 PostgreSQL도 써보기를 강력 추천*</li>
</ul>
<h4 id="mongodb">MongoDB</h4>
<ul>
<li>빅데이터를 겨냥하고 나온 DB: 실시간 분석, 대규모 데이터 처리가 필요한 애플리케이션에 적합</li>
<li>NoSQL 데이터베이스 중 하나: 문서 지향적 구조</li>
<li>스키마(Schema)가 없어 데이터 구조가 유연. 개발&amp;확장이 쉬움</li>
<li>JSON 형식의 문서 사용하여 데이터 저장, 데이터 샤딩(분산시키는 기술)을 기본적으로 지원</li>
<li>대용량 데이터 처리와 실시간 분석에 최적화
(= 로그데이터가 쌓이면 쌓일수록 실시간으로 빠르게 대응) </li>
</ul>
<h4 id="redis-remote-dictionary-server">Redis (Remote Dictionary Server)</h4>
<ul>
<li>NoSQL에 속함 </li>
<li>고성능 key-value(키-값) 저장소: 주로 캐싱, 세션 관리, 게임 리더보드, 실시간 애플리케이션 등에서 사용 (실시간은 아님, 푸시로 지속 요청 보내는 것) </li>
<li>인메모리 데이터 스토어: 매우 빠른 읽기와 쓰기 속도 제공 (데이터 유실이 조금 높을 수 있음) </li>
<li>간단한 키-값 구조부터 리스트, 세트, 해시, 정렬된 세트 등 다양한 데이터 타입 지원</li>
<li>데이터 지속성을 위해 디스크에 스냅샷을 저장하거나, 변경 사항을 기록 </li>
<li>마스터-슬레이브 복제, 자동 파티셔닝 기능 지원 =&gt; 뛰어난 확장성 </li>
</ul>
<h4 id="elasticsearch">Elasticsearch</h4>
<ul>
<li>분산 검색 엔진 : 복잡한 검색, 데이터 분석, 로그 및 데이터 집계에 사용</li>
<li>RESTful API 통해 데이터 인덱싱, 검색, 분석 기능 제공</li>
<li>JSON 형식 문서 인덱싱, 강력한 풀 텍스트 검색 기능</li>
<li>ELK (Elasticsearch, Logstash, Kibana) 스택으로 널리 사용: 엘라스틱서치의 데이터를 저장하고, 로그스태쉬로 불러와서, 키바나로 시각화한다. =&gt; 대용량 데이터에 적합 </li>
<li>높은 확장성과 실시간 분석능력 </li>
<li>트래픽을 관리해야 하는 게 관건이라*</li>
</ul>
<h4 id="sqlite">SQLite</h4>
<p>가볍다 ㅇㅇ </p>
<h4 id="snowflake">Snowflake</h4>
<ul>
<li>데이터 덩어리를 굉장히 빠르게 저장</li>
<li>Saas 클라우드 기반 데이터 웨어하우스 : 대규모 데이터 저장, 분석, 공유 ㅔ사용 </li>
<li>별도 하드웨어/소프트웨어 설치 없이 사용</li>
</ul>
<h4 id="cassandra">Cassandra</h4>
<ul>
<li>대규모 분산 데이터베이스 -&gt; 빅데이터 </li>
<li>대규모 온라인서비스, IoT, 시계열 데이터 등 처리에 적합</li>
</ul>
<h4 id="mariadb">MariaDB</h4>
<ul>
<li>모든 걸 다 유료로 서비스해버리는 오라클에 대항해서 나옴</li>
<li>MySQL의 포크 =&gt; 웹 기반 애플리케이션, 데이터 웨어하우징, 개인 및 소규모 기업용 데이터베이스로 사용 </li>
<li>오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)</li>
<li>MySQL과 높은 호환성.. 근데 결국 MySQL 쓰게 됨 </li>
</ul>
<h4 id="apache-hive">Apache Hive</h4>
<ul>
<li>데이터를 처리, 관리하는 데 받는 DB의 부담을 줄여주기 위한 <code>분산</code>을 Hadoop이 되게 잘해줌 =&gt; 그 하둡 안에서 돌아가는 데이터 웨어하우스 시스템: 대규모 데이터 세트 저장, 쿼리 및 분석에 사용</li>
<li>데이터가 큰 회사인지 알 수 있는 척도일 정도? </li>
</ul>
<h4 id="google-bigquery">Google BigQuery</h4>
<ul>
<li>Google Cloud Platform의 완전 관리형 엔터프라이즈 데이터 웨어하우스</li>
<li>대용량 데이터 분석 및 SQL 쿼리 실행에 사용</li>
<li>서버리스 (인프라 걱정 ㄴ)</li>
<li>BigQuery ML =&gt; SQL 붜리 내 머신러닝 모델 생성, 실행 가능</li>
<li>완전 관리형서비스 =&gt; 복잡한 인프라 관리 없이 즉각 분석 가능 </li>
</ul>
<blockquote>
<p>BE 개발자는 전체 서비스를 설계하는 아키텍처를 지향해야 함. 그 아키텍처가 되기 위해서는 프레임워크도 잘 알아야 하지만, 데이터베이스 시스템, 특징들에 대해 이해해야 한다. 그리고 그 각각의 DB의 특징에 맞는 RDBMS를 사용해야 한다. 서비스, 기업에 따라 자기 데이터베이스를 직접 만들기도 한다(예. 배달의민족).</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[데이터베이스(Database, DB) 개념과 데이터 모델(Data Model) 종류 4가지]]></title>
            <link>https://velog.io/@ready-oun/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4Database-DB-%EA%B0%9C%EB%85%90%EA%B3%BC-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%AA%A8%EB%8D%B8Data-Model-%EC%A2%85%EB%A5%98-4%EA%B0%80%EC%A7%80</link>
            <guid>https://velog.io/@ready-oun/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4Database-DB-%EA%B0%9C%EB%85%90%EA%B3%BC-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%AA%A8%EB%8D%B8Data-Model-%EC%A2%85%EB%A5%98-4%EA%B0%80%EC%A7%80</guid>
            <pubDate>Thu, 11 Jan 2024 02:56:31 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>데이터베이스 Day 1</p>
</blockquote>
<h3 id="데이터베이스database-db란">데이터베이스(Database, DB)란?</h3>
<blockquote>
<p>** 데이터 저장소**</p>
</blockquote>
<ul>
<li>효율적인 데이터 관리</li>
<li>데이터를 통합하여 관리</li>
<li>데이터 누락 및 중복 방지</li>
<li>여러 사용자가 실시간으로 데이터 사용 가능</li>
<li>DB라는 것이 있기 전에는 파일 형태로 데이터 관리<ul>
<li>파일 형태의 가장 큰 문제점
: 데이터를 업데이트하면 기존 버전의 데이터를 알 수 없음. </li>
</ul>
</li>
</ul>
<p>파일 시스템 | 네트워크 DBMS - 계층 DBMS | *관계 DBMS* - 객체 DBMS | 객체관계 DBMS | NoSQL DBMS - NewSQL DBMS 순으로 등장했으나, 현재까지 <strong>관계 DBMS</strong>가 많이 사용된다. 빅데이터 시대가 도래하면서 NoSQL이 많이 쓰이고, GPT 시대가 오면서 벡터 DB라는 것들이 널리 쓰인다. </p>
<h4 id="데이터-모델">데이터 모델</h4>
<p>데이터를 어떻게 저장하고 관리하는지 방법 차이 </p>
<ul>
<li><p>계층형 데이터 모델</p>
<ul>
<li>윈도우 파일 시스템의 <code>디렉터리 구조</code> 연상, 복잡한 구조 묘사 불가 </li>
<li>데이터를 트리 구조로 표현 
  -&gt; 각 레코드가 하나의 상위 레코드에 대한 하위 레코드 가짐 </li>
<li>상위 레코와 하위 레코드 간 부모-자식 관계 정의 
  -&gt; 주로 <code>트리 구조</code>로 표현된 조직도/파일 시스템과 같은 계층적인 데이터에 유용</li>
</ul>
</li>
<li><p>네트워크형 데이터 모델 </p>
<ul>
<li>계층형 단점 보완 -&gt; <code>자료간 연결(link)</code>을 <code>망(network)</code> 형태로 자유롭게 연결하도록 개선 -&gt; But <code>자료구조</code> 변경 시 디스크에 저장된 데이터의 물리적 구조를 재구성해야하는 번거로움이.. </li>
<li>계층형과 유사하나, 각 레코드가 여러 부모 레코드를 가질 수 있음 == 부모와 자식 간 관계가 복잡! </li>
<li>각 레코드 간 관계를 명시적으로 정의하며, 네트워크 형태의 그래프로 표현 -&gt; 주로 복잡한 데이터 관계를 다루는 데 사용 </li>
</ul>
</li>
<li><p>관계형 데이터 모델 
사용성이 뛰어남. 심플한데 속도가 빠르고 복잡한 구조를 나타낼 수 있어 대체불가.</p>
<ul>
<li>테이블 형태로 데이터 저장: 각 테이블은 레코드(행)와 필드(열)로 구성 -&gt; 테이블 간 관계 정의 및 관리</li>
<li>표 형태로 데이터 저장 &amp; SQL(Structured Query Language)을 사용하여 데이터 조작 </li>
<li>가장 널리 사용하는 데이터 모델 / 관계형 데이터베이스 시스템(RDBMS)에서 지원</li>
</ul>
</li>
<li><p>객체 지향형 데이터 모델(Object Oriented Model) </p>
<ul>
<li>객체 그 자체를 저장<ul>
<li>현실 세계의 개체(Entity)와 그들 간의 상호 작용을 모델링한다. 클래스와 객체 개념을 기반으로 한다. </li>
<li>데이터와 해당 동작을 함께 캡슐화하며, 객체 간의 관계를 강조한다. 소프트웨어 개발에서 객체 지향 프로그래밍 언어에서 주로 사용.</li>
<li>OO은 객체와 객체 간 관계를, 관계형은 테이블과 테이블 간 관계를 표현하는 데 차이. </li>
</ul>
</li>
</ul>
</li>
</ul>
<blockquote>
<p>관계형 데이터 베이스가 중요하게 활용된다. 이해하기 쉬운 2차원 표 형태로 데이터를 저장하면서 매우 복잡한 자료의 데이터를 정교하게 조합할 수 있어서. 백엔드에서 RDBMS를 이해하는 게 매우 중요하다. </p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[파이썬: 객체지향프로그래밍이란?]]></title>
            <link>https://velog.io/@ready-oun/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EC%9D%B4%EB%9E%80</link>
            <guid>https://velog.io/@ready-oun/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EC%9D%B4%EB%9E%80</guid>
            <pubDate>Thu, 14 Dec 2023 07:57:28 GMT</pubDate>
            <description><![CDATA[<h1 id="객체지향-프로그래밍">객체지향 프로그래밍</h1>
<h2 id="object-oriented-programming-oop">(Object-Oriented Programming, OOP)</h2>
<p>프로그램을 실제 세상에 가깝게 모델링하는 기법이다. 프로그램을 객체들의 모임으로 구성하고, 객체들 간의 상호 작용을 통해 프로그램을 구현하는 프로그래밍 패러다임이다. 절차적 프로그래밍(예. C언어)에 비하여 생산성이 높다. </p>
<p>OOP는 객체, 클래스인스턴스, 상속과 다형성이라는 주요 특징을 가진다. </p>
<blockquote>
<p>파이썬에서는 모든 것이 객체이다. </p>
</blockquote>
<p><strong>객체(Object)</strong>는 데이터와 그 데이터를 처리하는 메서드(함수)를 함께 묶어 놓은 것을 말한다. 예를 들어, 자동차 객체는 자동차의 속성(색상, 속도 등)과 동작(가속, 정지 등)을 포함한다.</p>
<p><strong>클래스(Class)</strong>는 그런 객체를 생성하기 위한 템플릿 또는 청사진이다. 클래스는 속성과 메서드로 구성되어 있으며, 객체를 생성하기 위한 설계도 역할을 한다. </p>
<p><strong>인스턴스(Instance)</strong>는 클래스를 기반으로 생성된 실제 객체라서 각각의 인스턴스가 클래스에서 정의된 속성과 메서드를 가진다.</p>
<p><strong>캡슐화(Encapsulation)</strong>는 객체의 속성과 메서드를 하나로 묶고, 외부에서의 직접적인 접근을 제한하는 것을 말한다. 그래서 객체 내부의 상세 구현을 숨기고, 필요한 부분만 노출하여 외부에서 사용 가능하게 한다.</p>
<p><strong>상속(Inheritance)</strong>는 기존 클래스에서 정의된 속성과 메서드를 다른 클래스에서 재사용하는 기능이다. 코드 재사용성을 높이고, 기존 클래스의 기능을 확장하여 새로운 클래스를 생성할 수 있다.</p>
<p><strong>다형성(Polymorphism)</strong>은 같은 이름의 메서드가 다른 클래스에서 다르게 동작하도록 하는 기능이다. 코드의 일관성을 유지하면서 다양한 객체를 다룰 수 있어 코드의 유연성을 높인다.  </p>
<h3 id="참고">참고.</h3>
<p><a href="https://wikidocs.net/85">https://wikidocs.net/85</a> 
<a href="https://www.youtube.com/watch?v=eMO3d5FtFTs">https://www.youtube.com/watch?v=eMO3d5FtFTs</a>
<a href="https://www.codestates.com/blog/content/%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%ED%8A%B9%EC%A7%95">https://www.codestates.com/blog/content/%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%ED%8A%B9%EC%A7%95</a>
<a href="https://lifelong-education-dr-kim.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EC%9D%98-5%EA%B0%80%EC%A7%80-%EC%A3%BC%EC%9A%94-%EA%B0%9C%EB%85%90">https://lifelong-education-dr-kim.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EC%9D%98-5%EA%B0%80%EC%A7%80-%EC%A3%BC%EC%9A%94-%EA%B0%9C%EB%85%90</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[초격차캠프 백엔드 2일차: 파이썬 변수 할당 개념, float 계산 오차 발생 이유, 슬라이싱]]></title>
            <link>https://velog.io/@ready-oun/%EB%B0%B1%EC%97%94%EB%93%9C-2%EC%9D%BC%EC%B0%A8-%ED%8C%8C%EC%9D%B4%EC%8D%AC</link>
            <guid>https://velog.io/@ready-oun/%EB%B0%B1%EC%97%94%EB%93%9C-2%EC%9D%BC%EC%B0%A8-%ED%8C%8C%EC%9D%B4%EC%8D%AC</guid>
            <pubDate>Fri, 08 Dec 2023 16:05:24 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/ready-oun/post/11831fcc-e347-43ef-a399-5e7b32ad86ae/image.png" alt=""></p>
<h2 id="1-파이썬-vs-c언어-변수-할당-개념">[1] 파이썬 vs C언어 변수 할당 개념</h2>
<blockquote>
<p>Python의 변수 할당 개념을 다른 언어와 비교해 설명해 주세요.</p>
</blockquote>
<p>x, y 같은 변수(Variables)에 이름 혹은 값을 지정해서 메모리 공간에 저장하는 개념이다.
x는 내가 이름을 지어주기 전까지는 이름이 없다. 이대로 출력하면 뭐 어쩌라고 정의된 게 없다고 에러만 뜬다. 그런데 여기에 10이라는 값을 혹은 &quot;개발자&quot;라는 이름을 정의해주면, x를 출력할 때 내가 할당 즉, 저장한 값 혹은 이름이 나온다. 
*None을 할당해서 빈 변수를 만들 수 있긴 하다. 그러면 아무 것도 출력되지 않는다!</p>
<p><strong>파이썬과 가장 대조적인 컴파일 대표 C언어와 비교해보자.</strong>
파이썬은 객체 지향(Object-Oriented Programming, OOP) 언어로, 변수에 객체를 할당하여 그 객체값 혹은 이름을 참조한다. 파이썬 내의 모든 것은 객체이다. </p>
<p>C 언어는 대표적인 절차지향(Procedure-Oriented Programming, POP) 기법을 활용한다. 컴퓨터의 처리구조와 유사해 실행 속도가 빠른 장점이 있다. </p>
<h3 id="1-정적-타이핑-vs-동적-타이핑">1. 정적 타이핑 vs 동적 타이핑</h3>
<p>C언어는 정적 타이핑 언어로, 변수를 선언할 때 명시적으로 타입을 지정해야 한다(=변수를 만들 때 미리 어느 데이터를 담을지 명시). 그에 반해, 파이썬은 동적 타이핑 언어로, 변수의 타입이 런타임에 동적으로 결정된다(미리 정하지 않아도 나중에 어떤 데이터를 넣어도 괜찮음). </p>
<h3 id="2-메모리-관리">2. 메모리 관리</h3>
<p>C언어는 개발자가 메모리 할당, 해제를 수동으로(=직접) 관리해야 한다. 내가 직접 방을 치우고 정돈해야 한다는 뜻. 
파이썬은 동적으로 메모리를 할당하고 가비지 컬렉션(Garbage Collection)에 의해 자동으로 해제된다. 청소 자동화 봇이 있다는 거다. </p>
<h3 id="3-레퍼런스-및-포인터">3. 레퍼런스 및 포인터</h3>
<p>C 언어는 포인터를 사용하여 메모리 주소를 직접 조작할 수 있다.변수가 직접 데이터 주소를 갖고 있어 값을 변경하면 그 주소값도 바뀌는 것과 같다.<br>파이썬은 변수는 값 대신에 객체에 대한 레퍼런스를 가지고 있다. 데이터의 주소값을 직접 알려주는 것보다 그 위치를 알려주는 것과 같다. 그래서 값을 바꾸면 주소값이 아닌 위치값이 변하는 거라고 볼 수 있다. </p>
<h3 id="4-여러-변수에-동시-할당">4. 여러 변수에 동시 할당</h3>
<p>C 언어는 여러 변수에 동시에 값을 할당하기 위해서는 여러 줄의 코드가 필요하다. 각 변수에 값을 따로 넣어줘야 해서 한 번에 많은 일을 하기 어렵다.
파이썬은 여러 변수에 동시에 값을 할당할 수 있어서 멀티 태스킹이 가능하다. C언어가 일대일만 가능한 메신저라면, 파이썬은 단톡으로 한번에 전달 가능하다고 볼 수 있다. </p>
<h3 id="-요약-">[ 요약 ]</h3>
<p>파이썬은 유연하고 편리한 문법을 제공하지만, C 언어는 더 직접적이고 저수준의 메모리 조작을 할 수 있다. C 언어는 정직하게 절차를 밟아가며 부지런하게 직접 일을 수행하는 반면 파이썬은 편리하게 많은 일을 자동으로 처리해서 (주관적인) 효율중시파 일잘러 프로그램으로 볼 수 있다. </p>
<h2 id="2-실수형float-계산-시-오차-발생-원인">[2] 실수형(float) 계산 시 오차 발생 원인</h2>
<blockquote>
<p>Python의 실수형(float) 계산 시 오차가 발생하는 이유에 대해 간단히 설명해 주세요.</p>
</blockquote>
<p>파이썬의 실수형(float)에서 발생하는 오차는 <u>부동 소수점 방식의 특성</u>으로 인해 발생한다. 컴퓨터에서 소수를 표현하는 방식은 이진 부동 소수점 표현법을 사용하는데, 이 방식은 정확한 십진 표현이 아니라 근사 값을 사용한다. </p>
<p>이진 부동 소수점 표현 방식, 유한한 비트 수, 소수의 이진 표현의 한계, 연산 순서에 따른 미세한 차이 등 원인 때문이다. </p>
<p>한 마디로, 컴퓨터가 사용하는 언어는 2진수라서 10진수가 수를 표현하는 방식과 다르다 보니 미세한 오차가 발생한다는 거다. 예로, 1/3을 소수로 표현하는 게 귀찮아서 0.3333... 으로 표현하는 것처럼, 컴퓨터도 특정한 소수를 정확히 표현하지 못할 때가 있다. </p>
<p>위 이유로 부동 소수점 연산에서는 정확한 값을 기대하기 어렵다. 따라서 실수형을 비교할 때는 어느 정도의 오차를 허용하는 방법을 사용하거나, <em>Decimal</em> 등과 같은 정확한 십진 연산을 지원하는 데이터 타입을 사용하는 것이 좋다. </p>
<h2 id="3-슬라이싱-개념">[3] 슬라이싱 개념</h2>
<blockquote>
<p>슬라이싱에 대해 간단히 설명해 주세요.</p>
</blockquote>
<p>파이썬에는 문자열, 리스트에서 원하는 값을 추출할 때 인덱싱(Indexing)과 슬라이싱(Slicing)을 활용한다.</p>
<p>인덱싱은 몇 번째인지 값을 아예 특정하는 반면, 슬라이싱은 시작점과 직전 기준을 지정해서 [어디부터:어디 &#39;전&#39;까지]를 슬라이스하는(잘라주는) 개념이다. 인덱싱이 출석번호를 하나만 부르는 거라면, 슬라이싱은 오늘 주번 몇 번부터 몇 번까지로 범위를 지정한다. </p>
<p>파이썬에서 순서는 1이 아닌 0부터 시작하는데(영국, 독일처럼 1층이 G층인 거라고 생각하자), &quot;python is my life&quot; 단어를 기준으로 순서를 매겨보자면 아래와 같다.</p>
<pre><code>p y t h o n _ i s _ m   y  _  l i f e
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
*점(.) 같은 부호나 공백도 개수에 포함한다. </code></pre><p>p가 첫 번째이므로 0번이고, 그 다음부터 순서대로 매긴다. 
x = &quot;python is my life&quot; 문장에서 python만 출력하고 싶을 때, 아래처럼 코드를 작성하면 된다.</p>
<pre><code>x = &quot;python is my life&quot; 
print(x[0:6])
&gt;&gt;&gt; python</code></pre><h2 id="참고">참고.</h2>
<ul>
<li><strong>파이썬 자습서</strong>
<a href="https://docs.python.org/ko/3/tutorial/introduction.html">https://docs.python.org/ko/3/tutorial/introduction.html</a>
<a href="https://docs.python.org/ko/3/tutorial/floatingpoint.html">https://docs.python.org/ko/3/tutorial/floatingpoint.html</a>
<a href="https://docs.python.org/ko/3/library/decimal.html">https://docs.python.org/ko/3/library/decimal.html</a></li>
<li><strong>위키독스</strong>
1) 파이썬 변수와 객체 <a href="https://wikidocs.net/2836">https://wikidocs.net/2836</a> 
2) 019 소수점을 정확하게 계산하려면? ― decimal.Decimal <a href="https://wikidocs.net/106276">https://wikidocs.net/106276</a>
3) 인덱싱 / 슬라이싱
<a href="https://wikidocs.net/193820">https://wikidocs.net/193820</a></li>
<li><strong>코딩도장</strong> | 6.1. 변수 만들기 <a href="https://dojang.io/mod/page/view.php?id=2176">https://dojang.io/mod/page/view.php?id=2176</a></li>
<li>P<strong>APARI ML/DL engineering Blog</strong> | Python 변수의 할당 원리 <a href="https://papari1123.github.io/python/Python_variable/">https://papari1123.github.io/python/Python_variable/</a></li>
<li><strong>위키피디아</strong> | 객체 지향 프로그래밍 <a href="https://ko.wikipedia.org/wiki/%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D">https://ko.wikipedia.org/wiki/%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D</a></li>
<li><strong>UsefulToKnow</strong> <a href="https://usefultoknow.tistory.com/entry/%EC%A0%88%EC%B0%A8%EC%A7%80%ED%96%A5Procedural-Programming-%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5Object-Oriented-Programming-%EC%9E%A5%EB%8B%A8%EC%A0%90-%EB%B0%8F-%EC%B0%A8%EC%9D%B4%EC%A0%90">https://usefultoknow.tistory.com/entry/%EC%A0%88%EC%B0%A8%EC%A7%80%ED%96%A5Procedural-Programming-%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5Object-Oriented-Programming-%EC%9E%A5%EB%8B%A8%EC%A0%90-%EB%B0%8F-%EC%B0%A8%EC%9D%B4%EC%A0%90</a></li>
<li><strong>RoundTable</strong> | “Python 변수할당의 개념”
<a href="https://rroundtable.github.io/FastPages/python/pointer/2019/08/03/Python-%EB%B3%80%EC%88%98%ED%95%A0%EB%8B%B9%EC%9D%98-%EA%B0%9C%EB%85%90.html">https://rroundtable.github.io/FastPages/python/pointer/2019/08/03/Python-%EB%B3%80%EC%88%98%ED%95%A0%EB%8B%B9%EC%9D%98-%EA%B0%9C%EB%85%90.html</a></li>
<li><strong>PlanB</strong> | [파이썬 튜토리얼] Indexing과 Slicing
<a href="https://planb.hashnode.dev/indexing-slicing">https://planb.hashnode.dev/indexing-slicing</a></li>
<li><strong>나도코딩</strong> | 1분 파이썬 - (10) 인덱스와 슬라이싱
<a href="https://youtu.be/LC5gZ9O7-YU?si=dNBVcIcK6nEdFj0F">https://youtu.be/LC5gZ9O7-YU?si=dNBVcIcK6nEdFj0F</a></li>
</ul>
<h5 id="오늘의-일기">오늘의 일기</h5>
<pre><code>다른 과제 혼자서 씨름하다가 시간 다 보냈다..
좀 있다 해야지 하면서 다른 것 좀 했더니 벌써 잘 시간이다. 미치겠음ㅋㅋ
AI의 도움을 받으면 훨씬 빨리 끝나는데, 
혼자 사고하는 힘을 좀 기르려다가 허리 나가는 중.
영작 공부할 때 번역기를 남용하면 실력이 잘 안 느는 것처럼 코딩도 그런 것일까 생각듦.
괜한 걱정이면 그냥 지체 않고 바로 chatgpt한테 헬프칠 텐데, 
약간의 힌트만 필요한 상태까지 도달하는 여정이 꽤 험난하다. 
</code></pre><pre><code># True / False

# 수익성 &gt;= 60
# 창의성 + 시장성 &gt;= 50
# (시장성 + 수익성)/2 &gt; 안정성

# 창의성 = 62
# 시장성 = 71
# 안정성 = 68
# 수익성 = 66

# 1. 66 &gt;= 60 True
# 2. 62 + 71 &gt;= 50 True
# 3. (71 + 66)/2 &gt; 68 True
# Total : 1 and 2 and 3 = True 나와야
# print(total)

~~~ 조건에 부합하면 합격잉게 True 나오게 해봐라는 문제인데,
나름 논리적으로 사고하려고 과정을 써봄.. 근데 그러고 어케 하더라 사고 멈춤.
특히 오늘 이거 마지막 문제 더 간결하게 할 방법 없나 고민하다가 시간 엄청 보냄 ㄱ-
다 나의 피가 되고 살이 되리라..(제발</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[백엔드 2일차: 파이썬 값 비교 시 is 를 쓰면 안 되는 이유]]></title>
            <link>https://velog.io/@ready-oun/%EB%B0%B1%EC%97%94%EB%93%9C-1%EC%A3%BC%EC%B0%A8-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EA%B0%92-%EB%B9%84%EA%B5%90-%EC%8B%9C-is-%EB%A5%BC-%EC%93%B0%EB%A9%B4-%EC%95%88-%EB%90%98%EB%8A%94-%EC%9D%B4%EC%9C%A0</link>
            <guid>https://velog.io/@ready-oun/%EB%B0%B1%EC%97%94%EB%93%9C-1%EC%A3%BC%EC%B0%A8-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EA%B0%92-%EB%B9%84%EA%B5%90-%EC%8B%9C-is-%EB%A5%BC-%EC%93%B0%EB%A9%B4-%EC%95%88-%EB%90%98%EB%8A%94-%EC%9D%B4%EC%9C%A0</guid>
            <pubDate>Fri, 08 Dec 2023 06:38:35 GMT</pubDate>
            <description><![CDATA[<h2 id="chapter-8">chapter 8</h2>
<h3 id="mission">!Mission!</h3>
<blockquote>
<p>값 비교에는 is를 쓰면 안 되는 이유를 찾아서 작성해 보자!</p>
</blockquote>
<p>다른 사람이 쓴 글을 읽고 내가 <u>이해</u>한 내용을 그대로 작성해 보자.</p>
<p>왜 1 == 1.0 을 입력했을 때에는
True가 출력되고,</p>
<p>1 is 1.0 을 입력했을 때에는
False가 출력될까?</p>
<p>is는 ==와 같은 역할을 하면서 다른 역할을 한다.
1과 1.0은 같은 값이지만, 타입이 다르다.</p>
<p>1은 정수이고, 1.0은 소수점을 가진 실수이다. 
둘의 값은 같지만, 객체가 완전히 동일하지 않다.</p>
<p>객체는 생성하면서 메모리에 저장되는데
이때 고유한 ID가 생기면서 메모리 주소값을 가진다.</p>
<p>is는 이때 고유 ID 번호를 비교해서
동일한 객체인지 확인한다.</p>
<ul>
<li>id함수로 둘의 ID를 뽑아보면, 
1의 ID는 &quot;140667464597744&quot;, </li>
</ul>
<p>1.0의 ID는 &quot;140667172295920&quot;로 추출된다. 
<img src="https://velog.velcdn.com/images/ready-oun/post/b6e02b7b-f6f3-4ef3-9403-140cf8d01148/image.png" alt="">
<img src="https://velog.velcdn.com/images/ready-oun/post/f97108d7-ef9a-42a3-8a91-7390265c3cfb/image.png" alt=""></p>
<p>따라서 값이 일치하는지 확인하려면,
is 가 아닌 ==를 써야 한다. 
<img src="https://velog.velcdn.com/images/ready-oun/post/cb240db2-f147-4398-979c-5c415fd1e90f/image.png" alt=""></p>
<h4 id="참고">참고.</h4>
<p><strong>위키독스</strong> 4. 파이썬 연산 3) 비교 연산
<a href="https://wikidocs.net/22216">https://wikidocs.net/22216</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[OZ코딩스쿨 초격차캠프 백엔드 1일차: 파이썬 CS 기초]]></title>
            <link>https://velog.io/@ready-oun/OZ%EC%B4%88%EA%B2%A9%EC%B0%A8%EC%BA%A0%ED%94%84-%EB%B0%B1%EC%97%94%EB%93%9C-1%EC%9D%BC%EC%B0%A8-%ED%8C%8C%EC%9D%B4%EC%8D%AC-CS-%EA%B8%B0%EC%B4%88</link>
            <guid>https://velog.io/@ready-oun/OZ%EC%B4%88%EA%B2%A9%EC%B0%A8%EC%BA%A0%ED%94%84-%EB%B0%B1%EC%97%94%EB%93%9C-1%EC%9D%BC%EC%B0%A8-%ED%8C%8C%EC%9D%B4%EC%8D%AC-CS-%EA%B8%B0%EC%B4%88</guid>
            <pubDate>Thu, 07 Dec 2023 10:05:07 GMT</pubDate>
            <description><![CDATA[<h2 id="1일차">1일차</h2>
<h3 id="chpater-01-선택과제">Chpater 01. 선택과제</h3>
<blockquote>
</blockquote>
<p>기술 면접에 자주 나오는 질문 3가지와 기본적으로 알아야 할 내용</p>
<blockquote>
</blockquote>
<h4 id="1--인터프리터-방식이란-">1. [ 인터프리터 방식이란? ]</h4>
<p>기계어로 목적 코드를 컴퓨터로 바로 실행하는 컴파일 방식(C언어 혹은 자바 등)과 달리 
인터프리터 방식은 코드를 번역한 후 바로 실행한다. </p>
<p><strong>주요 장점</strong>으로는 아래 2가지가 있다.</p>
<ol>
<li>코드를 한 줄씩 실행하면서 결과를 즉시 확인할 수 있다. 이는 디버깅하는 데 매우 용이하여 수정사항을 빠르게 확인할 수 있다.</li>
<li>코드를 더 쉽게 이해하고 수정할 수 있는 대화형 기능. 코드를 완전히 작성하지 않아도 작성한 부분까지만 테스트할 수 있다. </li>
</ol>
<h4 id="2--동적-타입--정적-타입-">2. [ 동적 타입 &amp; 정적 타입 ]</h4>
<ul>
<li>정적 타입(Static type checking): 자료형을 컴파일 타임에 결정</li>
<li>동적 타입(Dynamic type checking): 자료형을 런타임(실행 시점)에 결정</li>
<li>파이썬은 동적 타입이면서, 강타입
(자료형이 맞지 않을 시에 에러 발생, 암묵적 변환 지원X) 언어</li>
</ul>
<p>런타임 동안 진행되는 동적 타입은 자료형 정보를 처음에 정해주지 않아도 
단순하게 바로 변수를 선언할 수 있어 편리하다. </p>
<p>하지만, 규모가 커질수록 런타임 도중 
예상치 못한 오류 발생 확률이 높은 게 단점이다. </p>
<p>그리고 한 줄 씩 차례대로 기계어로 번역하므로 
속도가 느린 단점이 있다. </p>
<p>이러한 파이썬으로 정적 타입 방식의 코드를 작성하려면, 
파이썬 3.0+에서 Type Annotation(힌트) 기능을 활용할 수 있다. </p>
<p>인터프리터로 실행시키기 전에 <a href="https://docs.python.org/ko/3/library/typing.html">Typing</a> 모듈로 
미연에 타입 힌트들을 체크하는 방법이다.  </p>
<h4 id="3--프레스와-스레드-">3. [ 프레스와 스레드 ]</h4>
<p>프로세스(Process)와 스레드(Thread)는 
동시에 실행되는 &quot;코드의 단위&quot;를 가리킨다. </p>
<p>Process는 실행 중인 프로그램을 나타내는 개념이다. 
Thread는 프로세스 내에서 실행되는 독립적인 흐름이다. </p>
<p>프로세스는 독립적인 메모리 공간을 가지며, 
각각 별도의 주소 공간을 사용한다. 
따라서 한 프로세스의 변수나 자료 구조는 
다른 프로세스에 직접 접근할 수 없다. </p>
<p>그에 반해, 스레드는 같은 프로세스 내에서 동작하며,
해당 프로세스의 메모리 공간을 공유한다.
따라서 스레드 간 변수나 자료 구조에 직접 접근할 수 있다.</p>
<p>프로세스가 독립된 방에서 각자 일을 한다면,
스레드는 한 방 안에서 함께 일을 한다고 볼 수 있다.</p>
<p>[선택]</p>
<h4 id="4--파이썬-2버전-vs-3버전-">4. [ 파이썬 2버전 VS 3버전 ]</h4>
<p>파이썬 3버전은 2버전보다 문법을 간소화하고 이해하기 쉽게 만들었으며,
특히 문자열과 예외 처리 부분에서 향상된 기능을 제공한다.</p>
<p>파이썬 3 구문은 더 간단하고 이해하기 쉬운 반면,
파이썬 2 구문은 비교적 이해하기 어렵다.</p>
<p>3버전의 기본 문자열 저장은 유니코드인 반면,
2버전에서는 문자열을 ASCII로 처리하여 유니코드 문자열 값을 정의해야 한다.</p>
<p>3버전에서는 print가 함수로 변경되었으며, xrange 함수가 제거된 대신 range() 함수가 파이썬 2와 동일한 역할을 한다. </p>
<pre><code>Python 3: 문자열은 기본적으로 유니코드. &quot;u&quot;를 사용하지 않아도 됨.
Python 2: 유니코드 문자열은 &quot;u&quot;로 정의해야 함.
변수 변경:

Python 3: 변수 값은 변경되지 않음.
Python 2: 전역 변수 값이 for 루프 내에서 변경될 수 있음.
예외 처리:

Python 3: 예외는 괄호로 묶어야 함.
Python 2: 예외는 표기법으로 묶어야 함.
순서 비교 규칙:

Python 3: 단순화된 순서 비교 규칙.
Python 2: 더 복잡한 순서 비교 규칙.
반복 함수:

Python 3: 반복을 위해 range() 함수 사용.
Python 2: 반복에 xrange() 사용.```</code></pre><h4 id="5--파이썬-메모리-관리-">5. [ 파이썬 메모리 관리 ]</h4>
<p>파이썬은 데이터를 저장할 때 
메모리를 효율적으로 관리하기 위해 &#39;비공개 힙&#39;이라는 공간을 사용한다.</p>
<p>이 힙 안에 숫자, 문자열, 리스트 등 
모든 파이썬 객체와 데이터 구조를 저장한다.</p>
<p>이는 모두 파이썬 메모리 관리자에 의해 내부적으로 관리된다.</p>
<p>파이썬은 자동으로 메모리를 관리하며 
사용자는 메모리 블록에 직접 접근하거나 
C 할당자를 사용하지 않아야 한다.</p>
<p>그러나 이 방식은 순환 참조(Circular reference)와 같은
특정한 상황에서는 메모리 누수(memory leak)를 발생시킬 수 있다.</p>
<p>파이썬은 이를 방지하기 위해 
순환 참조 발생 시에만 동작하여 메모리 누수를 방지하는
가비지 컬렉션(Garbage Collection) 기능을 제공한다.</p>
<p>```</p>
]]></description>
        </item>
    </channel>
</rss>