<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>kkkd-max.log</title>
        <link>https://velog.io/</link>
        <description>안녕하세요~ </description>
        <lastBuildDate>Tue, 18 May 2021 04:10:03 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>kkkd-max.log</title>
            <url>https://images.velog.io/images/kkkd-max/profile/6ad496fe-031b-4e1f-9201-ac09b2f743e0/download.jpeg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. kkkd-max.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/kkkd-max" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[docker 및 docker-compose 헷갈리는 용어 사용법 정리]]></title>
            <link>https://velog.io/@kkkd-max/docker-%EB%B0%8F-docker-compose-%ED%97%B7%EA%B0%88%EB%A6%AC%EB%8A%94-%EC%9A%A9%EC%96%B4-%EC%82%AC%EC%9A%A9%EB%B2%95-%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@kkkd-max/docker-%EB%B0%8F-docker-compose-%ED%97%B7%EA%B0%88%EB%A6%AC%EB%8A%94-%EC%9A%A9%EC%96%B4-%EC%82%AC%EC%9A%A9%EB%B2%95-%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Tue, 18 May 2021 04:10:03 GMT</pubDate>
            <description><![CDATA[<p>docker: <em>docker에서 사용하는 문법</em>
docker-compose: <em>docker-compose에서 사용하는 문법</em>
사용 docker compose version : 3
밑에서 사용하는 docker compose 파일이란 docker-compose.yml파일을 의미합니다.</p>
<h3 id="arg-args">ARG, args</h3>
<p>docker: ARG
docker-compose: args</p>
<ul>
<li><p>주의할점은 build라는 key 내부에 존재하는 커맨드라는점</p>
<blockquote>
<p>build:
  context: .
  args:</p>
<pre><code>  - number:1</code></pre></blockquote>
</li>
<li><p>빌드 시에만 사용가능한 환경 변수들을 설정</p>
<ul>
<li>Dockerfile등에서 사용 가능하다</li>
<li>Dockerfile에서 사용시 예제<blockquote>
<p>ARG number
RUN echo &quot;number: $number&quot;</p>
</blockquote>
</li>
</ul>
</li>
<li><p>docker compose에서 정의 시 key:value 쌍으로 기입 또는 리스트로 기입 가능
  -docker compose에서 정의 이후에 Dockerfile안에서 ARG로 정의해줘야 사용가능함</p>
<blockquote>
<p>args:
  number: 1 # key:value쌍
 or
args:</p>
</blockquote>
<ul>
<li>number=1</li>
<li>number2=aaa13a</li>
</ul>
<blockquote>
<p>#Dockerfile
ARG number
ARG numer2</p>
</blockquote>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[javascript 탐구]]></title>
            <link>https://velog.io/@kkkd-max/javascript-%ED%83%90%EA%B5%AC</link>
            <guid>https://velog.io/@kkkd-max/javascript-%ED%83%90%EA%B5%AC</guid>
            <pubDate>Fri, 07 May 2021 02:10:40 GMT</pubDate>
            <description><![CDATA[<p>이전에 javascript 언어를 쓰기 시작했을때, 생활코딩과 두꺼운서적(프론트엔드 개발자를 위한 자바스크립트 프로그래밍)으로 javascript에 대해 스터디 후 사용했는데, 그 당시에 es5까지는 알지도 못했다.
나중에 es5를 사용하고 나서야 조금씩 서치하며 알아봤는데 더 본격적으로 정리를 해두는게 좋을것같아서 포스팅해본다.</p>
<h1 id="javascript와-ecmascript">javascript와 ECMAScript</h1>
<p><em>* 프론트엔드 개발자를 위한 자바스크립트 프로그래밍(2013) 서적을 참고하여 작성하였습니다.</em></p>
<h2 id="javascript의-역사">javascript의 역사</h2>
<p>&#39;넷스케이프&#39;라는 회사에서 &#39;넷스케이프 내비게이터 2&#39;(웹 브라우저 제품)의 출시와 함께 브라우저와 서버 모두에서 사용 가능한 Mocha(LiveScript)라는 스크립트 언어를 개발함. 이때 마이크로소프트(구 마이크로시스템즈)와 협력했고, 넷스케이프 내비게이터2 출시 전 LiveScript의 이름을 javascript로 바꾸었음(java의 인기에 편승하기 위함)
-&gt; <strong>javascript 1.0</strong></p>
<p>넷스케이프가 &#39;넷스케이프 네비게이터3&#39;과함께 버전up된 자바스크립트를 포함
-&gt; <strong>javascript 1.1</strong></p>
<p>마이크로소프트는 &#39;인터넷 익스플로러&#39; 추진. &#39;인터넷 익스플로러 3&#39;에도 자바스크립트를 포함. 넷스케이프와 저작권 문제를 피하기 위해 이름을 달리함.
-&gt; <strong>JScript</strong></p>
<p>두 회사의 다른 버전인 자바스크립트로 인하여 표준화를 결정함. ECMA(유럽 컴퓨터 제작자 협회)에 javascript 1.1을 제안. &#39;TC39&#39;라는 프로그래머팀을 구성하여 javascript 1.1을 손질하여 ECMA-262 표준 생성. 이 표준으로 정의된 스크립트가 있음.
-&gt; <strong>ECMAScript</strong></p>
<p>(아직 작성 미완인 글입니다)</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[ODBC이용한 tibero connection]]></title>
            <link>https://velog.io/@kkkd-max/node-jdbc-DB-connection-%EB%B0%8F-query-%EC%9A%94%EC%B2%AD</link>
            <guid>https://velog.io/@kkkd-max/node-jdbc-DB-connection-%EB%B0%8F-query-%EC%9A%94%EC%B2%AD</guid>
            <pubDate>Thu, 06 May 2021 04:30:15 GMT</pubDate>
            <description><![CDATA[<h1 id="odbc이용한-tibero-connection">odbc이용한 tibero connection</h1>
<p>(가능하다면 query요청까지!)</p>
<h2 id="자료조사">자료조사</h2>
<ul>
<li><p><a href="https://github.com/kimwj9792/Tibero-Online-Judge">Tibero Online Judge</a>
node js에서 odbc를 활용하여 tibero를 이용한 시스템 github</p>
</li>
<li><p><a href="https://www.npmjs.com/package/odbc">npm odbc </a>
odbc 패키지 문서</p>
</li>
<li><p><a href="https://www.npmjs.com/package/node-odbc">npm node-odbc</a>
node-odbc 패키지 문서</p>
</li>
</ul>
<h2 id="시도기">시도기</h2>
<h3 id="1-문서-훓어보기">1. 문서 훓어보기</h3>
<p>odbc와 node-odbc 의 문서에서 사용법을 알아보고자 예시를 보는데,
db connection에 필요하다고 생각되는 ip, port, name, pwd를 대체 어느 부분에서 삽입하는지 알수가 없다..</p>
<blockquote>
<p>let con = new odbc.Connection()
    .connect(connectionString);</p>
</blockquote>
<blockquote>
<p>// run query
con.executeQuery((res, err) =&gt; 
    {<br>        if( err != null )
        {
            console.log( err );
        }
    },
    &quot;CREATE TABLE tblTest( myColumn int )&quot;
);</p>
</blockquote>
<p> &lt;node-odbc 문서발췌&gt;</p>
<p> connectionString이라는것이 db 접속정보인걸까? 
 odbc의 문서에 보면 내가 생각하는 정보처럼 보이지는 않는다.</p>
<blockquote>
<p>  const connection1 = await odbc.connect(&#39;DSN=MYDSN&#39;);
    // connection1 is now an open Connection</p>
</blockquote>
<blockquote>
<pre><code>// or using a configuration object
const connectionConfig = {
    connectionString: &#39;DSN=MYDSN&#39;,
    connectionTimeout: 10,
    loginTimeout: 10,
}
const connection2 = await odbc.connect(connectionConfig);
// connection2 is now an open Connection</code></pre></blockquote>
<p>&#39;DSN=MYDSN&#39; 또는 connectionString, connectionTimeout, loginTimeout항목으로 이루어진 config 이다..
좀더 문서 내용을 확인해 보자</p>
<h3 id="connectionstring">connectionString</h3>
<blockquote>
<p>connectionString: The connection string to connect to the database, usually by naming a DSN. Can also be a configuration object with the following properties:
connectionString REQUIRED: The connection string to connect to the database
connectionTimeout: How long before an idle connection will close, in seconds
loginTimeout: How long before the connection process will attempt to connect before timing out, in seconds.
{OPTIONAL} callback: The function called when .connect has finished connecting. If no callback function is given, .connect will return a native JavaScript Promise. Callback signature is:
error: The error that occured in execution, or null if no error
connection: The Connection object if a successful connection was made</p>
</blockquote>
<p>connect 메소드의 파라미터로 들어가는 항목에 대한 문서이다.</p>
<p>connectionString: database에 연결하기위한 연결 문자열로, 보통 DSN의 네이밍이 쓰임. config object로도 작성이 가능함.</p>
<ul>
<li>connectionString은 위의 내용중 전자에 해당하는 property</li>
<li>connectionTimeout은 idle을 얼마나 대기하다 닫을것인지(단위 second)</li>
<li>loginTimeout : 연결 전 connection 시도 중 timeout을 얼마나 시간지나고 낼건지(단위 second)
callback (optional) : connect작업이 끝나고 시행할 콜백함수.</li>
</ul>
<p>DSN name으로 연결이 가능한것? 내가 생각하던 그 직접적인 특정 db 연결과 다른 connect인 것 일까??
DSN name에 대해 더 알아보자</p>
<h3 id="dsn">DSN</h3>
<p>DSN: Data source name
Data source가 데이터를 가져오는 프로세스에서 직접 연결을 지원하지 않는 경우 DSN을 만들어서 data source에 연결하고 데이터를 가져와야한다? <a href="https://www2.microstrategy.com/producthelp/Current/MSTRWeb/WebHelp/Lang_1042/Content/Creating_a_DSN.htm">출처</a>
클라이언트 app이 데이터베이스를 찾고 연결하는데 사용되는 포인터 이름이라고 한다. DSN을 통해서 host name, ip address, instance name, db name 정보를 얻는다고함.
DSN이 ODBC 드라이버를 사용해서 db 연결을 한다고함. <em>이러면 결국 odbc와 필연적인 용어인듯..?</em>
ODBC 드라이버에 들어있는 유틸리티로 database에 대한 DSN을 만들 수 있다고함.. 그걸로 연결을 설정하고 db또는 freeform 스크립트를 통해 데이터를 가져올수 있다함.
<em>DSN생성하는 방법을 알아보면 해결이 될라나..??</em></p>
<h3 id="odbc-설치-for-dsn">ODBC 설치 (for dsn)</h3>
<p>우선 연결할 DBMS는 tibero이므로 <a href="https://technet.tmaxsoft.com/upload/download/online/tibero/pver-20150504-000001/tibero_cli/ch05.html#d5e12680">tibero의 매뉴얼</a>을 참고함
tibero 설치는 <a href="https://velog.io/@kkkd-max/tibero6-%EC%84%A4%EC%B9%98">이전 포스트</a>를 참고</p>
<h4 id="0-iodbc-파일-다운로드">0. iodbc 파일 다운로드</h4>
<blockquote>
<p><a href="http://iodbc.org/">http://iodbc.org/</a></p>
</blockquote>
<p>download에 있는 tar.gz파일을 받으면된다. 최신말고 좀 이전 버전의 link는 not found여서 최신 것을 받았다.(3.52.14)</p>
<h4 id="1-기본-환경-설정">1. 기본 환경 설정</h4>
<p>1-1. $TB_HOME/client/lib 에서 libtbodbc.so파일 존재하는지 확인</p>
<blockquote>
<p>file libtbodbc.so</p>
</blockquote>
<p>상단 커맨드로 확인가능</p>
<p>1-2. LD_LIBRARY_PATH에 해당 경로를 추가하라는데, 난 이미 있었음.</p>
<h4 id="2-iodbc-설치">2. iODBC 설치</h4>
<p><em>여기서부터 막힌다..</em></p>
<p>64bit이기때문에 컴파일 옵션을 추가해주어야하는데,
HP-UX머신과 AIX 머신으로 갈린다.</p>
<blockquote>
<p>uname -a</p>
</blockquote>
<p>상단 커맨드로 자신이 어느 머신인지 확인 가능한데, 난 linux다.. <a href="https://m.blog.naver.com/PostView.nhn?blogId=morynoajin&amp;logNo=40116657887&amp;proxyReferer=https:%2F%2Fwww.google.com%2F">참고</a> <del>둘중 무엇을 사용해야하는가?</del></p>
<p>서치해보니 CFAGS를 linux에서는 -m64  로 주면된다.</p>
<p>결론적으로</p>
<blockquote>
<p>./configure --prefix=/home/유저네임/원하는위치 --sysconfdir=/etc CC=/usr/bin/gcc CFLAGS=&quot;-m64&quot;</p>
</blockquote>
<p>prefix옵션을 안주면 usr/local이 default로 입력됨.
이렇게 해서 configure 실행</p>
<blockquote>
<p>make
sudo make install</p>
</blockquote>
<p>make install에서 계속 오류가 나서, --prefix를 지우고 다시 configure을 실행했음.
make install은 sudo를 안주니까 오류났음.
<img src="https://images.velog.io/images/kkkd-max/post/83f01379-6a92-41c5-8237-758ff19293ca/image.png" alt="">
끝나면 해당 요약이 나옴</p>
<h4 id="3-iodbc-설치-확인">3. iODBC 설치 확인</h4>
<blockquote>
<p>file libtbodbc.so
file libiodbcinst.so.2.1.18</p>
</blockquote>
<p>로 확인할수있다는데 된건지 모르겠다.. 특히 두번째 파일은 어디있는지도 모르겠음;;</p>
<h4 id="4-iodbc환경-설정">4. iODBC환경 설정</h4>
<p>그다음은 환경설정 파일을 수정해주어야하는데,</p>
<blockquote>
<p>cd /etc</p>
</blockquote>
<p>로 /etc디렉토리에 들어간다.
(방금 make를 실행한 폴더X!!! /etc공간 따로있음~!</p>
<p>이미 존재하는 odbc.ini파일과 odbcinst.ini파일을 수정해줌</p>
<blockquote>
<p>;
;   odbc.ini
;
[ODBC Data Source]
Tibero6     = Tibero 6 ODBC Driver
[ODBC]
Trace       = 1
TraceFile   = /tmp/odbc.trace
[Tibero6]
Driver      = /home/tibero6/client/lib/libtbodbc.so
Description = Tibero6 ODBC Datasource
SID         = tibero ; tbdsn.tbr 파일에 설정한 DSN 정보
User        = tibero
Password    = tmax</p>
</blockquote>
<blockquote>
<p>;
;   odbcinst.ini
;
[Tibero 6 ODBC Driver]
Description = ODBC Driver for Tibero 6
Driver      = /home/tibero6/client/lib/libtbodbc.so
UsageCount  = 1</p>
</blockquote>
<p>그다음 odbc드라이버와 odbc데이터소스를 iodbc관리자에 등록</p>
<blockquote>
<p>iodbc-config --odbc.ini --odbcinst.ini</p>
</blockquote>
<p>근데 이거 실행해도 뜨는 메시지가.. 된건지 모르겠음.</p>
<h4 id="5-데이터베이스-접속-확인">5. 데이터베이스 접속 확인</h4>
<p>포맷은 iodbctest &quot;DSN={dsn};UID={user};PWD={pwd}&quot;이렇게이고, 필자는 하단으로 수행성공!!</p>
<blockquote>
<p>iodbctest &quot;DSN=Tibero6;UID=tibero;PWD=tmax&quot;</p>
</blockquote>
<p>아주잘된다 ! 굿!!</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[DB]ODBC]]></title>
            <link>https://velog.io/@kkkd-max/DBODBC</link>
            <guid>https://velog.io/@kkkd-max/DBODBC</guid>
            <pubDate>Tue, 04 May 2021 09:00:45 GMT</pubDate>
            <description><![CDATA[<h1 id="odbc-스터디">ODBC 스터디</h1>
<h2 id="odbc-개념">ODBC 개념</h2>
<p><img src="https://images.velog.io/images/kkkd-max/post/5279bb3a-641b-474a-a1d9-e920a949d94c/image.png" alt=""></p>
<ul>
<li>ODBC : Open DataBase Connectivity</li>
<li>마이크로소프트가 만든 database에 접근하기 위한 소프트웨어의 표준 규격</li>
<li>모든 DBMS에 독립적인 데이터베이스 어플리케이션을 작성하기 위한 API의 집합</li>
<li>특정 DBMS 사용자가 ODBC 드라이버를 통해 다른 DBMS를 사용할 수 있게함</li>
<li>DBMS에 연결할때, ODBC 드라이버 manager로 드라이버를 호출 후, SQL을 이용하여 DBMS와 교신하는 방식</li>
<li>사용자와 각 DB 엔진 사이를 연결하여 공통된 interface로 각각의 다른 데이터베이스 엔진에 접근할 수 있게 해주는 것</li>
</ul>
<p>*각 DBMS 규격에 따라 지원하지않는 odbc 기능이 있을 수 있음.
*ODBC 함수 <a href="https://docs.microsoft.com/en-us/sql/odbc/reference/syntax/odbc-function-summary?redirectedfrom=MSDN&amp;view=sql-server-ver15">링크</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[2021 웹 개발자 로드맵 ]]></title>
            <link>https://velog.io/@kkkd-max/2021-%EC%9B%B9-%EA%B0%9C%EB%B0%9C%EC%9E%90-%EB%A1%9C%EB%93%9C%EB%A7%B5-frontend-%EC%9C%84%EC%A3%BC</link>
            <guid>https://velog.io/@kkkd-max/2021-%EC%9B%B9-%EA%B0%9C%EB%B0%9C%EC%9E%90-%EB%A1%9C%EB%93%9C%EB%A7%B5-frontend-%EC%9C%84%EC%A3%BC</guid>
            <pubDate>Tue, 04 May 2021 04:57:58 GMT</pubDate>
            <description><![CDATA[<h1 id="2021-web-developer-roadmap">2021 web developer roadmap</h1>
<p>*출처 : <a href="https://github.com/kamranahmedse/developer-roadmap">https://github.com/kamranahmedse/developer-roadmap</a>
-web 개발자가 되길 희망할때, 어떤 것을 먼저 배워야할지 혼란스러울 대학생들을 위해서 만들어진 것이라고 한다.
-트렌디 함에 대해서 고려한 것은 아니라고함.
-내 수준을 점검해보면서 어떤 기술 스택들이 2021에 나와 있는지 살펴보고자 한다 ㅎㅎ </p>
<h2 id="0-2021-웹-개발자-web-developer-in-2021">0. 2021 웹 개발자 (web developer in 2021)</h2>
<p><img src="https://images.velog.io/images/kkkd-max/post/0994a345-a460-46e7-ae8e-55f0cdf6cbb9/image.png" alt=""></p>
<p>front-end / back-end / DevOps(back-end path) 크게는 3가지로 분류가 되어 시작한다.
사진에는 가려져있는데, </p>
<blockquote>
<p>노란색 박스는 Personal Recommendation!(개인적 추천!)
주황색 박스는 Available Options(가능한 선택지)</p>
</blockquote>
<p>라고 한다.</p>
<p>Reauired for any path (모든 코스에 요구되는사항)으로는</p>
<blockquote>
<p>Git -version constol (버전관리)
Basic Terminal Usage (기초 터미널 사용법)
Data Structures &amp; Algorithms (자료구조 및 알고리즘)
SOLID, KISS, YAGNI (하단에서 설명)
GITHub (버전관리 시스템)
Licenses (라이센스)
Semantic Versioning (유의적 버전)
SSH (Secure Shell Protocal)
HTTP / HTTPS and APIs 
Design Patterns (디자인 패턴)
Character Encodings (문자 인코딩)</p>
</blockquote>
<h3 id="1-git-github">1. Git, GITHub..</h3>
<p>버전관리는 협업할때 필수이기도 하고,
혼자 작업할때도 제대로 관리가되면 나중에 참고할때 편하다.
github이나 gitlab등 형상관리 시스템을 사용하면 tagging이나 branch, issue 등을 사용하며 협업과 history관리에 굿!</p>
<h3 id="2-basic-terminal-usage">2. Basic Terminal Usage</h3>
<p>터미널은 직접 써보면서 배우는게 최고인듯하다
처음엔 cd랑 ls도 낯설었는데 이제 완전 익숙해짐!
개발할때 패키지 관리를 계속 해줘야하니 하다보면 늘기도 하고, 워낙 구글링해보면 잘나와있어서 그냥 그대로 따라해봐도 된다 </p>
<h3 id="3-data-structures--algorithms">3. Data Structures &amp; Algorithms</h3>
<p>지식 공부이기도 하면서, 배우기만 해서는 완전히 알 수 없는 것같다.
실제로 개발이나 코딩테스트로 직접 코드를 짜보면서 완전히 이해 &amp; 써먹게 되는 부분인듯</p>
<h3 id="4-solid-kiss-yagni">4. SOLID, KISS, YAGNI</h3>
<p>이 3가지 모두 처음 보았다.. 처음엔 논문 사이트인줄?? <a href="https://d33p.tistory.com/18">참고 글</a></p>
<h4 id="4-1-solid">4-1. SOLID</h4>
<blockquote>
<ul>
<li>S : SRP(Single Responsibility Principle), 하나의 클래스(또는 모듈, 함수..)는 하나의 기능만 제공해야 한다. 여러 기능이 하나의 클래스 등에 구현되어있으면 고칠때 어려움</li>
<li>O : OCP(Open Closed Principle) , OOP에서 개체(클래스, 모듈, 함수..)들은 확장성에 대해선 열려있어야하지만, 수정에 대해선 닫혀있어야 한다. -&gt; 코드 수정없이도 확장될 수 있도록 작성되어야함</li>
<li>L : LSP(Liskov Substitution Principle), 데이터 타입 S가 데이터 타입 T의 하위 타입이라고 할때, S가 사용되더라도 T보다 성능(정확도, 업무 수행능력..)이 떨어져선안된다. </li>
<li>I : ISP(Interface Segregation Principle), 전체 인터페이스를 보여주기보다 관심이 있는 부분만큼만 인터페이스가 공개되도록 한다.</li>
<li>D : DIP(Dependency Inversion Principle), 하이레벨과 로우레벨에 대해 종속성이 있으면 안됨, 추상적인 것은 구체적인것에 의존X, 세부적인 것(클래스..)은 추상적인 것에 의존한다.</li>
</ul>
</blockquote>
<p>몇가지는 들어봤는데 몇개는 또 처음듣는다..
S..알지만 하다보면 스파게티 되어버리는듯 ㅠ 귀찮더라도 세분화해서 관리하는게 좋을듯!!
하나씩 보다보니.. 초보자에겐 SOLID원칙 지키기 너무 어려울듯하다.. 그렇기에 더더 신경써야할듯함</p>
<h4 id="4-2-kiss">4-2 KISS</h4>
<blockquote>
<p>Keep It Simple, Stupid.</p>
</blockquote>
<p>단순하게 할것..</p>
<h4 id="4-3-yagni">4-3 YAGNI</h4>
<blockquote>
<p>You Ain&#39;t Gonna Need It</p>
</blockquote>
<p>직역하면 너는 아직 이게 안필요해..인데, 정말 필요하지 않으면 기능을 먼저 만들지 말라는 것같다. 정작 필요할때 다시보면 고치게돼서가 이유인듯.</p>
<h3 id="5-licenses">5. Licenses</h3>
<p>본인이 개발하는 제품의 라이센스를 말하기보단, 사용하게될 패키지들의 라이센스를 알고 사용하자는 느낌이 아닐까 싶다. 
오픈소스인줄알고 맘껏 사용해서 꾸렸다가, 여러 제한이 있던 거면 난감할듯 ㅠㅠ 
나도 라이센스쪽은 어떤 것들이 어떤 제한이 있는지 아직 잘 몰라서 나중에 정리해봐야할듯</p>
<h3 id="6-semantic-versioning">6. Semantic Versioning</h3>
<p>유의적 버전은 이 <a href="https://semver.org/lang/ko/">사이트</a>를 참고해보면 알 수 있는데, 제품에 버저닝을 할때 해당 규격을 사용하면 좋다.</p>
<blockquote>
<p>1.2.3 version 이라고 할때,
1은 주버전: 이전 버전(0.1.2ver라던가..)과 호환이 안됨
2는 부버전 : 1버전에 새 기능이 추가됨
3은 수버전 : 1버전에 버그를 수정함</p>
</blockquote>
<p>이런 식으로 포맷 &amp; 의미를 정해둔 것이다.</p>
<h3 id="7-ssh">7. SSH</h3>
<p>&#39;쉘로 붙는다&#39;라고 하면 항상 ssh를 쓰는 것인데, ssh를 사용하면 접근가능한 pc에 접속해서 데이터를 이것저것 만져볼 수 있다. 마치 그 pc에서 터미널을 연 것과 동일하게 사용됨.(원격제어)</p>
<p>접속한 pc에 있는 데이터를 본 내 pc에 전송할 수도 있음.(데이터 전송)
접속하기위해선 username이랑 ip, password가 있으면됨</p>
<h3 id="8-http--https-and-apis">8. HTTP / HTTPS and APIs</h3>
<p>HTTP 프로토콜을 말하는듯 하다.
웹개발은 보통 server에 어떤 데이터를 요청하고, 받아온 데이터를 가공하여 view단에 뿌려주는 식으로 작업이 되는데, 이때 API를 사용하여 요청하고, http 프로토콜을 사용하여 주고받게된다.
이것도 다음에 포스팅해보자</p>
<h3 id="9-design-patterns">9. Design Patterns</h3>
<p>이건 따로 공부하지 않으면 잘 모른다..
그냥 개발 언어의 문법을 아는 걸로는 부족..ㅠㅠ 이걸 나는 회사에 들어와서야 알았다ㅎ
알고리즘이랑도 많이 다르고.. 기술적이라기보다는.. 유지보수를 위함이 큰것같음!</p>
<h3 id="10-character-encodings">10. Character Encodings</h3>
<p>문자 인코딩은 server단이랑 front단이랑 항상 동일하게 맞춰져 있어야 한다.
만약 둘이 다르게오면, 인코딩관련해서 넘흐 복잡해짐~~
또한 개발환경에 대해서도, 인코딩을 맞추지않으면 코드가 다 깨지기도 한다..
기본적으론 브라우저에 데이터를 표시하는 방법을 뜻한다고함.</p>
<p><del>후일담</del>
웹 로드맵 빠르게 훓고, frontend roadmap까지 같이 작성하고자했는데,
생각보다 내용이 많았다.. frontend는 다음포스팅으로!</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[공부해서 포스팅해보고싶은 list]]></title>
            <link>https://velog.io/@kkkd-max/%EA%B3%B5%EB%B6%80%ED%95%B4%EC%84%9C-%ED%8F%AC%EC%8A%A4%ED%8C%85%ED%95%B4%EB%B3%B4%EA%B3%A0%EC%8B%B6%EC%9D%80-list</link>
            <guid>https://velog.io/@kkkd-max/%EA%B3%B5%EB%B6%80%ED%95%B4%EC%84%9C-%ED%8F%AC%EC%8A%A4%ED%8C%85%ED%95%B4%EB%B3%B4%EA%B3%A0%EC%8B%B6%EC%9D%80-list</guid>
            <pubDate>Tue, 04 May 2021 04:15:13 GMT</pubDate>
            <description><![CDATA[<h1 id="공부해서-포스팅해보고싶은-list">공부해서 포스팅해보고싶은 list</h1>
<p>세마포어
-tibero 설치를 해보다보니 파라미터 설정을 해주어야했는데, 대부분 세마포어 관련이라고 한다. 세마포어.. 들어만 봤지 제대로 모름..ㅠ 공부해보자</p>
<p>네트워크
-데이터 통신 / 네트워크 수업때 배웠던 내용들을 다시 접하게되니 생소한건 없는데도 정확히 모르겠다 ㅠ 제대로 정리해서 포스팅해보자</p>
<p>운영체제
-쉽게 배우는 운영체제 서적을 혼자 스터디했었는데, 포스팅하면서 정리해보자</p>
<p>라이센스
-오픈소스들 이용하려면 라이센스관련 기본지식 필요해보임</p>
<p>HTTP/ HTTPS and APIs
-사용은 많이 해봤는데, 이 개념에 대해 좀더 자세히 알면 좋을듯</p>
<p>Character Encodings
-문자 인코딩.. 관련해서 삽질해본 경험은 있는데 , 이것도 한번 알아보자</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[linux] tibero6 설치]]></title>
            <link>https://velog.io/@kkkd-max/tibero6-%EC%84%A4%EC%B9%98</link>
            <guid>https://velog.io/@kkkd-max/tibero6-%EC%84%A4%EC%B9%98</guid>
            <pubDate>Tue, 04 May 2021 02:14:03 GMT</pubDate>
            <description><![CDATA[<h1 id="국산-db-tibero-설치기">국산 DB tibero 설치기</h1>
<ul>
<li>다운로드 파일 출처: 테크넷(Technet, <a href="https://technet.tmaxsoft.com/ko/front/main/main.do">링크</a>)</li>
<li>참고 설치 안내서 (<a href="https://technet.tmaxsoft.com/upload/download/online/tibero/pver-20150504-000001/index.html">링크</a>)</li>
<li>설치 환경 : linux (ubuntu 18.04.5 LTS)</li>
</ul>
<p>테크넷에서 tibero6 파일을 받은뒤, (hotfix말고 오리지널 6 version 다운)
설치 안내에 따라 linux 콘솔 모드로 설치를 따라해보았다.</p>
<p>linux에서도 인스톨러를 사용할 수 있다는데 찾을수가 없었음(tar.gz파일만 존재할뿐..)</p>
<h3 id="1-압축해제">1. 압축해제</h3>
<p>다운 받은 파일을 </p>
<blockquote>
<p>tar -zxvf (파일명) </p>
</blockquote>
<p>커맨드로 압축해제~</p>
<h3 id="2-환경변수-설정">2. 환경변수 설정</h3>
<p>.bashrc 파일에 </p>
<blockquote>
<p>export TB_HOME=/home/tibero/tibero6
export TB_SID=tibero
export LD_LIBRARY_PATH=$TB_HOME/lib:$TB_HOME/client/lib
export PATH=$PATH:$TB_HOME/bin:$TB_HOME/client/bin</p>
</blockquote>
<p>를 추가해주었다.
*본 설명서에는 tibero/Tibero 폴더에서 해당 작업을 진행하여 TB_HOME을 다르게 설정해주었음. (내 작업환경은 그냥 tibero 폴더)</p>
<p><del>(이 과정에서 bashrc 실수로 지워버려서 멘붕.. 하지만 구글링 속 멋진 분들이 더 좋은 bashrc 파일을 올려주신게 있어서 오히려 clean &amp; upgrade 됐다, <a href="http://wiki.kldp.org/HOWTO/html/Adv-Bash-Scr-HOWTO/sample-bashrc.html">사용한 링크</a>)</del></p>
<h3 id="3-라이선스-파일">3. 라이선스 파일</h3>
<p>테크넷 좌하단에 있는 데모 라이센스 신청하여 발급~
<img src="https://images.velog.io/images/kkkd-max/post/438435c3-438e-4ec1-8768-2bede00fcb44/image.png" alt=""></p>
<h3 id="4-tip파일-생성-여기서부터-막힘">4. tip파일 생성 &gt;&gt;여기서부터 막힘..</h3>
<p>설명서에 있는대로 gen_tip.sh커맨드를 사용했는데 tip파일이 안만들어진다..</p>
<blockquote>
<p>~/tibero/tibero6/config &gt; ./gen_tip.sh
./gen_tip.sh: 6: .: base_env.sh: not found</p>
</blockquote>
<p>base_env.sh를 못찾는다.. 파일을 까보니 시작부터 base_env.sh파일을 찾는데.. 왜 내가 다운받은 파일엔 없는가?
<del>구글링 해보니 .bashrc가 아니라 profile에서 환경변수 작업을 했어야하는걸까? (<a href="https://m.blog.naver.com/PostView.nhn?blogId=songsunsang&amp;logNo=110146647105&amp;proxyReferer=https:%2F%2Fwww.google.com%2F">링크</a>)
profile에도 똑같이해보자</del>
.profile, .bash_profile에 모두 환경변수를 설정해주어봐도 그대로 안됨..
설치 전 준비사항의 파라미터를 설정해주지 않아서 그런것일까?
<strong>==&gt; 해결법 하단의 0번 아래에 있어요~</strong></p>
<h3 id="0-커널-파라미터와-shell-limits-파라미터-설정">0. 커널 파라미터와 shell limits 파라미터 설정</h3>
<h4 id="0-1-etcsysctlconf">0-1. /etc/sysctl.conf</h4>
<p>세마포어 관련하여 설정을 해주어야하는것같다. 이는 oracle에서 설정해주는 방법과 비슷한듯?
(<a href="https://m.blog.naver.com/PostView.nhn?blogId=kwonkise&amp;logNo=220343046879&amp;proxyReferer=https:%2F%2Fwww.google.com%2F">참고한 블로그</a>)</p>
<blockquote>
<p>#tibero
kernel.sem = 10000 32000 10000 10000
kernel.shmall = 4503599627366400
kernel.shmmax = 18446744073692774399
kernel.shmmni = 4096
fs.file-max = 6815744
net.ipv4.ip_local_port_range = 1024 65000</p>
</blockquote>
<p>그런데 저장이 안된다..
read-only라면서 !를 붙이라더니.. q!를 실행하면, E212: Can&#39;t open file for writing이 뜬다..  --&gt; 이 커맨드 (:w !sudo tee % &gt; /dev/null , <a href="https://iamrealizer.tistory.com/47">출처</a> )로 해결 </p>
<h4 id="0-2-etcsecuritylimitsconf">0-2. /etc/security/limits.conf</h4>
<p>참고글과 저장 방법은 위와 동일..</p>
<blockquote>
<p>#tibero
nofile = 65536
nproc = 16384</p>
</blockquote>
<p>0을 진행해도.. 4의 문제가 해결이 안된다..ㅠ 
다운받은 파일을 뒤져보니, bin파일안에 base_env.sh라는 파일이 존재함.
해당 파일의 주소를 못잡아서 생긴문제인것일까?
분명.. path에서도 $TB_HOME/bin을 잘 잡아주고있는데... 대체 무엇이 문제일까.
문제를 알 것 같다. TB_HOME을 home/tibero/tibero6으로 해놓았는데.. home을 못찾고있는듯하다.
<strong>문제 해결--&gt;&gt;
환경변수에서 home/사용유저명/tibero/tibero6으로 해두었어야했음..
이 문제에 직면하신 분들은 반드시 echo $TB_HOME과 cd $TB_HOME으로 제대로 설정해놓았는지 확인해보시길..</strong></p>
<p>이제야 4번 통과.. 0번의 작업이 필요하긴 했을까?</p>
<blockquote>
</blockquote>
<p>Running client/config/gen_esql_cfg.sh
Done.</p>
<p>gen_tip.sh이 성공했다.</p>
<h3 id="5-기동">5. 기동</h3>
<p>이제 TB_HOME의 bin폴더에서, tbboot와 tbdown, tbsql을 실행할 수 있다.</p>
<p>처음은 nomount 모드로 기동 필요</p>
<blockquote>
<p>tbboot nomount</p>
</blockquote>
<p>db내부 연결할때는 tbsql 사용
(sys사용자로 접속)</p>
<blockquote>
<p>tbsql sys/tibero</p>
</blockquote>
<p>tibero라는 database도 새로 만들었다.(몇초정도 기다려야함)
SQL&gt; </p>
<blockquote>
<p>create database &quot;tibero&quot; ;</p>
</blockquote>
<p>sql문을 나갈때는 quit 커맨드 사용.</p>
<p>이제 database를 만들었으니 tbboot로만 기동</p>
<blockquote>
<p>~/tibero/tibero6/bin &gt; tbboot
Listener port = 8629
Tibero 6<br>TmaxData Corporation Copyright (c) 2008-. All rights reserved.
Tibero instance started up (NORMAL mode).</p>
</blockquote>
<p>굿 너무너무 잘된다 ㅠㅠ </p>
<h3 id="6-role-system-user-view-package-생성">6. role, system user, view, package 생성</h3>
<p>설명서에 계속 나와있는 것을 따라가 실행해보면, 해당 것들을 생성할 수 있다고 한다.</p>
<p>TB_HOME의 scripts 폴더로 가서 system.sh를 실행.
sys와 syscat 계정의 기본 암호는 tibero, syscat이라고..</p>
<h3 id="7-끝">7. 끝!</h3>
<p><del>후일담</del>
드디어 tibero를 제대로 설치해보게 되었다.
이전에도 한번 시도하다가 막힌적이있는데,
완전히 성공해서 뿌듯 ㅠㅠ
중간에 삽질이있었지만.. 몰랐던것들을 배운것같다.</p>
<p>끝까지 봐주셔서 감사합니다~ 많은 도움되시길</p>
]]></description>
        </item>
    </channel>
</rss>