<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>호짱의 개발 블로그</title>
    <link>https://khanorder.tistory.com/</link>
    <description>프로그래밍, 디자인, 그리고 좋아하는 것들</description>
    <language>ko</language>
    <pubDate>Tue, 7 Apr 2026 20:10:03 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>HoZang</managingEditor>
    <image>
      <title>호짱의 개발 블로그</title>
      <url>https://t1.daumcdn.net/cfile/tistory/2757B35054EC7B340F</url>
      <link>https://khanorder.tistory.com</link>
    </image>
    <item>
      <title>[SSL] 우분투에서 certbot 설치 및 nginx 연동</title>
      <link>https://khanorder.tistory.com/entry/install-ubuntu-certbot-nginx</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;[SSL]&amp;nbsp;우분투에서&amp;nbsp;certbot&amp;nbsp;설치&amp;nbsp;및&amp;nbsp;nginx&amp;nbsp;연동&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1736398734265&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo apt install certbot python3-certbot-nginx&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Server/HTTPS (SSL|TLS)</category>
      <category>certbot</category>
      <category>https</category>
      <category>nginx</category>
      <category>SSL</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/420</guid>
      <comments>https://khanorder.tistory.com/entry/install-ubuntu-certbot-nginx#entry420comment</comments>
      <pubDate>Thu, 9 Jan 2025 14:00:21 +0900</pubDate>
    </item>
    <item>
      <title>[PostgreSQL] 데이터베이스 연결 수 확인 쿼리</title>
      <link>https://khanorder.tistory.com/entry/PostgreSQL-database-connection-count-query</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[PostgreSQL]&amp;nbsp;데이터베이스&amp;nbsp;연결&amp;nbsp;수&amp;nbsp;확인&amp;nbsp;쿼리&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1729838615406&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select  * from
(select count(*) used from pg_stat_activity) q1,
(select setting::int res_for_super from pg_settings where name=$$superuser_reserved_connections$$) q2,
(select setting::int max_conn from pg_settings where name=$$max_connections$$) q3;&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Database/PostgreSQL</category>
      <category>connection number</category>
      <category>count connection</category>
      <category>database connection count</category>
      <category>db connection count</category>
      <category>PostgreSQL</category>
      <category>SQL</category>
      <category>데이터베이스 연결 수 확인</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/419</guid>
      <comments>https://khanorder.tistory.com/entry/PostgreSQL-database-connection-count-query#entry419comment</comments>
      <pubDate>Fri, 25 Oct 2024 15:44:45 +0900</pubDate>
    </item>
    <item>
      <title>[Windows] 원격데스크톱(MSTSC) Ctrl + Alt +Del 단축키 실행</title>
      <link>https://khanorder.tistory.com/entry/Windows-%EC%9B%90%EA%B2%A9%EB%8D%B0%EC%8A%A4%ED%81%AC%ED%86%B1MSTSC-Ctrl-Alt-Del-Short-Cut</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[Windows]&amp;nbsp;원격데스크톱(MSTSC)&amp;nbsp;Ctrl&amp;nbsp;+&amp;nbsp;Alt&amp;nbsp;+Del&amp;nbsp;단축키&amp;nbsp;실행&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ctrl + Alt + End&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;원격데스크톱(MSTSC)을 사용중에 Ctrl + Alt + Del 단축키를 입력하려고 하면&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;이럴 땐 Ctrl + Alt + End를 누르면 원격 컴퓨터에서 Ctrl + Alt + Del 단축키와 똑같이 실행된다.&lt;/p&gt;</description>
      <category>OS/Windows</category>
      <category>Ctrl+Alt+Del</category>
      <category>mstsc</category>
      <category>원격데스트톱</category>
      <category>윈도우즈 강제종료</category>
      <category>윈도우즈 로그아웃</category>
      <category>작업관리자</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/418</guid>
      <comments>https://khanorder.tistory.com/entry/Windows-%EC%9B%90%EA%B2%A9%EB%8D%B0%EC%8A%A4%ED%81%AC%ED%86%B1MSTSC-Ctrl-Alt-Del-Short-Cut#entry418comment</comments>
      <pubDate>Tue, 8 Oct 2024 09:14:22 +0900</pubDate>
    </item>
    <item>
      <title>[Next.js] Next.js with nestjs</title>
      <link>https://khanorder.tistory.com/entry/Nextjs-with-nestjs</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[Next.js]&amp;nbsp;Next.js&amp;nbsp;with&amp;nbsp;nestjs&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 Next.js로 프로젝트 생성&lt;/p&gt;
&lt;pre id=&quot;code_1727766200201&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;npx create-next-app@latest&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;663&quot; data-origin-height=&quot;158&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bH3P8L/btsJRW7yNXH/ygxR49GYWz3TvTh9q6V6Uk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bH3P8L/btsJRW7yNXH/ygxR49GYWz3TvTh9q6V6Uk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bH3P8L/btsJRW7yNXH/ygxR49GYWz3TvTh9q6V6Uk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbH3P8L%2FbtsJRW7yNXH%2FygxR49GYWz3TvTh9q6V6Uk%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;663&quot; height=&quot;158&quot; data-origin-width=&quot;663&quot; data-origin-height=&quot;158&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;nestjs 수동 설치&lt;/p&gt;
&lt;pre id=&quot;code_1727767251461&quot; class=&quot;typescript&quot; data-ke-language=&quot;typescript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 개발도구 nestjs/cli 설치
npm i -g @nestjs/cli

# 필수 패키지 수동 설치
npm i @nestjs/core @nestjs/common @nestjs/config @nestjs/platform-express rxjs reflect-metadata
npm i -D @types/express cross-env&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;nestjs 기본 코드 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;src/server/app.module.ts&lt;/p&gt;
&lt;pre id=&quot;code_1727787908469&quot; class=&quot;typescript&quot; data-ke-language=&quot;typescript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import { Module } from '@nestjs/common';
import { AppController } from './controllers/app.controller.js';
import { AppService } from './services/app.service.js';

@Module({
    imports: [],
    controllers: [AppController],
    providers: [AppService],
})
export class AppModule {}&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;src/server/controllers/api.controller.ts&lt;/p&gt;
&lt;pre id=&quot;code_1727787970016&quot; class=&quot;typescript&quot; data-ke-language=&quot;typescript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import { Controller, Get } from '@nestjs/common';
import { AppService } from '../services/app.service.js';

@Controller()
export class ApiController {
    constructor(private readonly appService: AppService) {}

    @Get('/api')
    getApi(): string {
        return this.appService.getHello();
    }
}&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;src/server/services/app.service.ts&lt;/p&gt;
&lt;pre id=&quot;code_1727788003345&quot; class=&quot;typescript&quot; data-ke-language=&quot;typescript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import { Injectable } from '@nestjs/common';

@Injectable()
export class AppService {
    getHello(): string {
        return 'Hello World!';
    }
}&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;src/main.ts&lt;/p&gt;
&lt;pre id=&quot;code_1727789536867&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import { NestFactory } from '@nestjs/core';
import { AppModule } from './server/app.module.js';
import { NextServer } from 'next/dist/server/next';
import express, {NextFunction, Request, Response} from 'express';
import next from 'next';
import {ExpressAdapter} from &quot;@nestjs/platform-express&quot;;
import http from &quot;http&quot;;

async function bootstrap() {

    let appNext: NextServer|null = null;

    const options = 'development' === process.env.NODE_ENV ? { protocol: 'https', dev: true, hostname: &quot;&quot;, port: 443 } : { protocol: 'https', hostname: &quot;&quot;, port: 443 };

    try {
        appNext = next(options);
    } catch (error) {
        console.error(error);
        throw error;
    }

    try {
        const handle = appNext.getRequestHandler();
        const server = express();

        const app = await NestFactory.create(AppModule, new ExpressAdapter(server));
        app.use((req: Request, res: Response, next: NextFunction) =&amp;gt; {
            if (req.url.startsWith('/_next/static')) {
                next();
            } else if (req.url.startsWith('/_next/webpack')) {
                next();
            } else {
                return next();
            }
        });
        app.use((req: Request, res: Response, next: NextFunction) =&amp;gt; {
            if (req.path.startsWith(&quot;/api&quot;)) {
                next();
            } else {
                return handle(req, res);
            }
        });
        await app.init();

        appNext.prepare()
            .then(() =&amp;gt; {
                server.set('port', 3000);

                const httpServer = http.createServer(server);
                httpServer.listen(3000);
            })
            .catch((errorAppNext) =&amp;gt; {
                console.error(errorAppNext.stack);
                process.exit(1);
            });
    } catch (error) {
        console.error(error);
    }
}

bootstrap();&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;tsconfig는 next.js파일 기본으로 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;tsconfig.json&lt;/p&gt;
&lt;pre id=&quot;code_1727789714590&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{
  &quot;compilerOptions&quot;: {
    &quot;lib&quot;: [&quot;dom&quot;, &quot;dom.iterable&quot;, &quot;esnext&quot;],
    &quot;allowJs&quot;: true,
    &quot;skipLibCheck&quot;: true,
    &quot;strict&quot;: true,
    &quot;noEmit&quot;: true,
    &quot;esModuleInterop&quot;: true,
    &quot;module&quot;: &quot;esnext&quot;,
    &quot;moduleResolution&quot;: &quot;bundler&quot;,
    &quot;resolveJsonModule&quot;: true,
    &quot;isolatedModules&quot;: true,
    &quot;emitDecoratorMetadata&quot;: true,
    &quot;experimentalDecorators&quot;: true,
    &quot;jsx&quot;: &quot;preserve&quot;,
    &quot;incremental&quot;: true,
    &quot;paths&quot;: {
      &quot;@/*&quot;: [&quot;./src/*&quot;]
    }
  },
  &quot;include&quot;: [&quot;next-env.d.ts&quot;, &quot;**/*.ts&quot;, &quot;**/*.tsx&quot;],
  &quot;exclude&quot;: [&quot;node_modules&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;nestjs에 사용할 tsconfig.server.json 별도로 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;tsconfg.server.json&lt;/p&gt;
&lt;pre id=&quot;code_1727789736947&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{
  &quot;compilerOptions&quot;: {
    &quot;module&quot;: &quot;esnext&quot;,
    &quot;moduleResolution&quot;: &quot;node&quot;,
    &quot;jsx&quot;: &quot;react-jsx&quot;,
    &quot;declaration&quot;: true,
    &quot;removeComments&quot;: true,
    &quot;emitDecoratorMetadata&quot;: true,
    &quot;experimentalDecorators&quot;: true,
    &quot;allowSyntheticDefaultImports&quot;: true,
    &quot;target&quot;: &quot;ES6&quot;,
    &quot;lib&quot;: [&quot;ES6&quot;, &quot;dom&quot;, &quot;dom.iterable&quot;, &quot;esnext&quot;],
    &quot;sourceMap&quot;: true,
    &quot;outDir&quot;: &quot;./dist&quot;,
    &quot;baseUrl&quot;: &quot;./&quot;,
    &quot;incremental&quot;: true,
    &quot;skipLibCheck&quot;: true,
    &quot;strictNullChecks&quot;: false,
    &quot;noImplicitAny&quot;: false,
    &quot;strictBindCallApply&quot;: false,
    &quot;forceConsistentCasingInFileNames&quot;: false,
    &quot;noFallthroughCasesInSwitch&quot;: false
  }
}&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;package.json에 추가 사항&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;nestjs는 기본 셋팅이 commonjs로 되어있는데 nextjs는 esm 셋팅이라서 여기에 맞춰 설정한 해주고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;디버깅 모드 실행 시 nestjs 디버깅 명령어로 실행하되&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서 추가한 tsconfig.server.json 파일을 컴파일러 옵션 파일로 지정해준다.&lt;/p&gt;
&lt;pre id=&quot;code_1727790483601&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{
  ...
  &quot;type&quot;: &quot;module&quot;,
  &quot;scripts&quot;: {
    &quot;dev&quot;: &quot;nest start --path tsconfig.server.json --watch&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;이제 프로젝트를 디버깅모드로 실행해보자.&lt;/p&gt;
&lt;pre id=&quot;code_1727790747729&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;npm run dev&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;http://localhost:3000&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;588&quot; data-origin-height=&quot;381&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uioWw/btsJS6uyssL/2oRLZC86Gbzi5KGL1zhS2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uioWw/btsJS6uyssL/2oRLZC86Gbzi5KGL1zhS2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uioWw/btsJS6uyssL/2oRLZC86Gbzi5KGL1zhS2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuioWw%2FbtsJS6uyssL%2F2oRLZC86Gbzi5KGL1zhS2k%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;588&quot; height=&quot;381&quot; data-origin-width=&quot;588&quot; data-origin-height=&quot;381&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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;http://localhost:3000/api&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;560&quot; data-origin-height=&quot;284&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CqVHO/btsJS6H61WT/xYYMlcXBfiGIf6tVLwnKLk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CqVHO/btsJS6H61WT/xYYMlcXBfiGIf6tVLwnKLk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CqVHO/btsJS6H61WT/xYYMlcXBfiGIf6tVLwnKLk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCqVHO%2FbtsJS6H61WT%2FxYYMlcXBfiGIf6tVLwnKLk%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;560&quot; height=&quot;284&quot; data-origin-width=&quot;560&quot; data-origin-height=&quot;284&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컨트롤에서 라우팅 한 부분은 nestjs로 그 외에 경로는 next.js에서 라우팅한 페이지로 잘 나온다.&lt;/p&gt;</description>
      <category>Programming Framework/Next.js</category>
      <category>NestJS</category>
      <category>Next.js</category>
      <category>next.js api nestjs</category>
      <category>next.js backend nestjs</category>
      <category>next.js with nestjs</category>
      <category>nextjs + nestjs</category>
      <category>nextjs with nestjs</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/417</guid>
      <comments>https://khanorder.tistory.com/entry/Nextjs-with-nestjs#entry417comment</comments>
      <pubDate>Tue, 1 Oct 2024 19:32:27 +0900</pubDate>
    </item>
    <item>
      <title>[JWT] ssh-keygen openssl key 생성</title>
      <link>https://khanorder.tistory.com/entry/JWT-ssh-keygen-openssl-key</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[JWT] ssh-keygen&amp;nbsp;openssl&amp;nbsp;key&amp;nbsp;생성&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1727162827708&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# private key pem 파일 생성
ssh-keygen -t rsa -b 4096 -m pem -f private.pem&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;pre id=&quot;code_1727162874553&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# public key pem 파일 생성
openssl rsa -in private.pem -pubout &amp;gt; public.pem&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Server/JWT</category>
      <category>JWT</category>
      <category>OpenSSL</category>
      <category>PEM</category>
      <category>RS256</category>
      <category>RSA</category>
      <category>ssh-keygen</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/416</guid>
      <comments>https://khanorder.tistory.com/entry/JWT-ssh-keygen-openssl-key#entry416comment</comments>
      <pubDate>Tue, 24 Sep 2024 16:29:24 +0900</pubDate>
    </item>
    <item>
      <title>[PostgreSQL] 자동증가 값 초기화</title>
      <link>https://khanorder.tistory.com/entry/PostgreSQL-%EC%9E%90%EB%8F%99%EC%A6%9D%EA%B0%80-%EA%B0%92-%EC%B4%88%EA%B8%B0%ED%99%94</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[PostgreSQL]&amp;nbsp;자동증가&amp;nbsp;값&amp;nbsp;초기화&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SELECT SETVAL('{테이블명}_{컬럼명}_seq', 1, FALSE);&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;확인하는 방법은 pgAdmin 기준으로&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Schememas =&amp;gt; public =&amp;gt; Sequences 메뉴로 가면 시퀀스 항목을 볼 수 있다.&lt;/p&gt;</description>
      <category>Database/PostgreSQL</category>
      <category>PostgreSQL</category>
      <category>reset auto increment</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/415</guid>
      <comments>https://khanorder.tistory.com/entry/PostgreSQL-%EC%9E%90%EB%8F%99%EC%A6%9D%EA%B0%80-%EA%B0%92-%EC%B4%88%EA%B8%B0%ED%99%94#entry415comment</comments>
      <pubDate>Thu, 12 Sep 2024 18:13:10 +0900</pubDate>
    </item>
    <item>
      <title>[PostgreSQL] the environment variable comspec does not seem to point to the cmd.exe</title>
      <link>https://khanorder.tistory.com/entry/PostgreSQL-the-environment-variable-comspec-does-not-seem-to-point-to-the-cmdexe</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[PostgreSQL]&amp;nbsp;the&amp;nbsp;environment&amp;nbsp;variable&amp;nbsp;comspec&amp;nbsp;does&amp;nbsp;not&amp;nbsp;seem&amp;nbsp;to&amp;nbsp;point&amp;nbsp;to&amp;nbsp;the&amp;nbsp;cmd.exe&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;There&amp;nbsp;has&amp;nbsp;been&amp;nbsp;an&amp;nbsp;error.&amp;nbsp;The&amp;nbsp;environment&amp;nbsp;variable&amp;nbsp;COMSPEC&amp;nbsp;does&amp;nbsp;not&amp;nbsp;seem&amp;nbsp;to&amp;nbsp;point&amp;nbsp;to&amp;nbsp;the&amp;nbsp;cmd.exe&amp;nbsp;or&amp;nbsp;there&amp;nbsp;is&amp;nbsp;a&amp;nbsp;trailing&amp;nbsp;semicolon&amp;nbsp;present.&amp;nbsp;Please&amp;nbsp;fix&amp;nbsp;this&amp;nbsp;variable&amp;nbsp;and&amp;nbsp;restart&amp;nbsp;installation.&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;PostgreSQL 설치 중 위와 같은 오류가 나왔을 때 해결방법&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;a href=&quot;https://babyadventure.tistory.com/57&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://babyadventure.tistory.com/57&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1726120034922&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;Windows 11 PostgreSQL 설치 오류&quot; data-og-description=&quot;PostgreSQL을 공부하기 위해 공식 홈페이지에서 설치파일을 다운받았지만 모든 버전의 설치파일이 아래와 같은 메시지를 띄우며 실행되지 못했다. There has been an error. The environment variable COMSPEC does n&quot; data-og-host=&quot;babyadventure.tistory.com&quot; data-og-source-url=&quot;https://babyadventure.tistory.com/57&quot; data-og-url=&quot;https://babyadventure.tistory.com/57&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/c7QXEF/hyWZmy1GX9/g6UVGm6rZJAoOCf8Mjkjd0/img.png?width=800&amp;amp;height=272&amp;amp;face=0_0_800_272,https://scrap.kakaocdn.net/dn/cC90wK/hyWZf0XrUH/iduo2DBHwFfQHZjUbIGQuk/img.png?width=800&amp;amp;height=272&amp;amp;face=0_0_800_272,https://scrap.kakaocdn.net/dn/cxllbU/hyWZbRMlW2/HmXSVaUjtbbgSwGAlJrhk1/img.png?width=897&amp;amp;height=306&amp;amp;face=0_0_897_306&quot;&gt;&lt;a href=&quot;https://babyadventure.tistory.com/57&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://babyadventure.tistory.com/57&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/c7QXEF/hyWZmy1GX9/g6UVGm6rZJAoOCf8Mjkjd0/img.png?width=800&amp;amp;height=272&amp;amp;face=0_0_800_272,https://scrap.kakaocdn.net/dn/cC90wK/hyWZf0XrUH/iduo2DBHwFfQHZjUbIGQuk/img.png?width=800&amp;amp;height=272&amp;amp;face=0_0_800_272,https://scrap.kakaocdn.net/dn/cxllbU/hyWZbRMlW2/HmXSVaUjtbbgSwGAlJrhk1/img.png?width=897&amp;amp;height=306&amp;amp;face=0_0_897_306');&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;Windows 11 PostgreSQL 설치 오류&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;PostgreSQL을 공부하기 위해 공식 홈페이지에서 설치파일을 다운받았지만 모든 버전의 설치파일이 아래와 같은 메시지를 띄우며 실행되지 못했다. There has been an error. The environment variable COMSPEC does n&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;babyadventure.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;</description>
      <category>Database/PostgreSQL</category>
      <category>comspec</category>
      <category>error</category>
      <category>postgresql install</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/414</guid>
      <comments>https://khanorder.tistory.com/entry/PostgreSQL-the-environment-variable-comspec-does-not-seem-to-point-to-the-cmdexe#entry414comment</comments>
      <pubDate>Thu, 12 Sep 2024 14:47:50 +0900</pubDate>
    </item>
    <item>
      <title>[Linux] 사용자 루트 폴더 격리</title>
      <link>https://khanorder.tistory.com/entry/Linux-%EC%82%AC%EC%9A%A9%EC%9E%90-%EB%A3%A8%ED%8A%B8-%ED%8F%B4%EB%8D%94-%EA%B2%A9%EB%A6%AC</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;[Linux]&amp;nbsp;사용자&amp;nbsp;루트&amp;nbsp;폴더&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;a href=&quot;https://help.ishosting.com/en/how-to-restrict-ssh-user-access-to-a-specific-directory&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://help.ishosting.com/en/how-to-restrict-ssh-user-access-to-a-specific-directory&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1726110522063&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;How to Restrict SSH User Access to a Specific Directory?&quot; data-og-description=&quot;There are many reasons for granting user permissions only to certain directories, especially for web servers. But the main reason is security. You can use chroot (change root) to restrict user access&quot; data-og-host=&quot;help.ishosting.com&quot; data-og-source-url=&quot;https://help.ishosting.com/en/how-to-restrict-ssh-user-access-to-a-specific-directory&quot; data-og-url=&quot;https://help.ishosting.com/en/how-to-restrict-ssh-user-access-to-a-specific-directory&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://help.ishosting.com/en/how-to-restrict-ssh-user-access-to-a-specific-directory&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://help.ishosting.com/en/how-to-restrict-ssh-user-access-to-a-specific-directory&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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;How to Restrict SSH User Access to a Specific Directory?&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;There are many reasons for granting user permissions only to certain directories, especially for web servers. But the main reason is security. You can use chroot (change root) to restrict user access&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;help.ishosting.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;&lt;a href=&quot;https://www.tecmint.com/restrict-ssh-user-to-directory-using-chrooted-jail/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.tecmint.com/restrict-ssh-user-to-directory-using-chrooted-jail/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1726110529899&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;Restrict SSH User Access to Home Directory Using Chrooted Jail&quot; data-og-description=&quot;In this article, we will explain to you how to restrict SSH user access to a specific directory using chrooted jail in Linux systems.&quot; data-og-host=&quot;www.tecmint.com&quot; data-og-source-url=&quot;https://www.tecmint.com/restrict-ssh-user-to-directory-using-chrooted-jail/&quot; data-og-url=&quot;https://www.tecmint.com/restrict-ssh-user-to-directory-using-chrooted-jail/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/br0Bxq/hyWZfml8Yt/ydFoII4rLJBXoihUTmLcKK/img.png?width=720&amp;amp;height=340&amp;amp;face=0_0_720_340,https://scrap.kakaocdn.net/dn/gFR6c/hyW2Xj2YE8/9k3KapYkel9KNGC76wEJ60/img.png?width=720&amp;amp;height=340&amp;amp;face=0_0_720_340,https://scrap.kakaocdn.net/dn/claEmc/hyW217QqBY/qslPX2CtN4bSUPfwfAZ7Jk/img.png?width=987&amp;amp;height=311&amp;amp;face=0_0_987_311&quot;&gt;&lt;a href=&quot;https://www.tecmint.com/restrict-ssh-user-to-directory-using-chrooted-jail/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.tecmint.com/restrict-ssh-user-to-directory-using-chrooted-jail/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/br0Bxq/hyWZfml8Yt/ydFoII4rLJBXoihUTmLcKK/img.png?width=720&amp;amp;height=340&amp;amp;face=0_0_720_340,https://scrap.kakaocdn.net/dn/gFR6c/hyW2Xj2YE8/9k3KapYkel9KNGC76wEJ60/img.png?width=720&amp;amp;height=340&amp;amp;face=0_0_720_340,https://scrap.kakaocdn.net/dn/claEmc/hyW217QqBY/qslPX2CtN4bSUPfwfAZ7Jk/img.png?width=987&amp;amp;height=311&amp;amp;face=0_0_987_311');&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;Restrict SSH User Access to Home Directory Using Chrooted Jail&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;In this article, we will explain to you how to restrict SSH user access to a specific directory using chrooted jail in Linux systems.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.tecmint.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;</description>
      <category>OS/Linux</category>
      <category>isolation user</category>
      <category>jail user</category>
      <category>Linux</category>
      <category>ubuntu</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/413</guid>
      <comments>https://khanorder.tistory.com/entry/Linux-%EC%82%AC%EC%9A%A9%EC%9E%90-%EB%A3%A8%ED%8A%B8-%ED%8F%B4%EB%8D%94-%EA%B2%A9%EB%A6%AC#entry413comment</comments>
      <pubDate>Thu, 12 Sep 2024 12:09:26 +0900</pubDate>
    </item>
    <item>
      <title>[Java] boolean 멤버의 Getter 네이밍 문제</title>
      <link>https://khanorder.tistory.com/entry/Java-boolean-%EB%A9%A4%EB%B2%84%EC%9D%98-Getter-%EB%84%A4%EC%9D%B4%EB%B0%8D-%EB%AC%B8%EC%A0%9C</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[Java] boolean 멤버의 Getter 네이밍 문제&lt;/b&gt;&lt;/h2&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;boolean 속성의 멤버 변수의 경우 isSuccess와 같이 isXXXX 의 형태로 멤버 변수를 이름을 짖는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 경우 Lombok으로 getter setter가 생성될 경우 멤버 변수는 success로 변경되고 getter가 isSuccess로 지동 네이밍된다.&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;이렇게 getter가 자동 생성된 객체를 json과 같은 serialize 방식으로 변환할경우 해당 멤버 변수는 success로 변환된다.&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;해당변수만 getter을 getIsSuccess와 같이 getIsXXXXX 의 형태로 수동 선언해준다.&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;</description>
      <category>Programming Language/Java</category>
      <category>boolean</category>
      <category>getter</category>
      <category>is 네이밍</category>
      <category>Java</category>
      <category>lombok</category>
      <category>Spring</category>
      <category>Spring Boot</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/412</guid>
      <comments>https://khanorder.tistory.com/entry/Java-boolean-%EB%A9%A4%EB%B2%84%EC%9D%98-Getter-%EB%84%A4%EC%9D%B4%EB%B0%8D-%EB%AC%B8%EC%A0%9C#entry412comment</comments>
      <pubDate>Tue, 10 Sep 2024 22:06:30 +0900</pubDate>
    </item>
    <item>
      <title>[GIT] 전체 브랜치 Pull</title>
      <link>https://khanorder.tistory.com/entry/git-pull-all-branch</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt; [GIT]&amp;nbsp;전체&amp;nbsp;브랜치&amp;nbsp;Pull &lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1724977403728&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git branch -r \
  | grep -v '\-&amp;gt;' \
  | sed &quot;s,\x1B\[[0-9;]*[a-zA-Z],,g&quot; \
  | while read remote; do \
      git branch --track &quot;${remote#origin/}&quot; &quot;$remote&quot;; \
    done
git fetch --all
git pull --all&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;</description>
      <category>VCS/GIT</category>
      <category>branch</category>
      <category>git</category>
      <category>git pull all branch</category>
      <category>Pull</category>
      <category>전체 브렌치 pull</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/411</guid>
      <comments>https://khanorder.tistory.com/entry/git-pull-all-branch#entry411comment</comments>
      <pubDate>Fri, 30 Aug 2024 09:24:22 +0900</pubDate>
    </item>
    <item>
      <title>[Node.js] NVM 수동 설치</title>
      <link>https://khanorder.tistory.com/entry/Nodejs-NVM-custom-install</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[Node.js]&amp;nbsp;NVM&amp;nbsp;수동&amp;nbsp;설치&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;윈도우즈에서 nvm을 설치할 때 인스톨러를 사용하지 않고 수동으로 설치할 경우&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;settings.txt 파일을 직접 생성하고 내용을 입력해줘야한다.&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;nvm이 설치된 폴더에 settings.txt 파일을 생성 후&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;root: D:\Program Files\nvm&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (nvm 폴더 경로)&lt;br /&gt;path: C:\Program Files\nodejs&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(node 바로 가기가 생성될 경로)&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;각자 설치된 경로에 맞게 위 내용을 입력 후 nvm을 실행하면 정상 실행된다.&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;저의 경우 인스톨러 기본 설치 경로에 한글이 포함되어있어서 nvm이 정상적으로 실행되지 않아서&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수동 설치방법을 선택했다.&lt;/p&gt;</description>
      <category>Programming Language/Node.js | JS</category>
      <category>node.js</category>
      <category>nvm settings</category>
      <category>nvm 수동설치</category>
      <category>nvm 한글 깨짐</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/410</guid>
      <comments>https://khanorder.tistory.com/entry/Nodejs-NVM-custom-install#entry410comment</comments>
      <pubDate>Thu, 11 Jul 2024 10:55:26 +0900</pubDate>
    </item>
    <item>
      <title>[Java] Base64 encode/decode</title>
      <link>https://khanorder.tistory.com/entry/Java-Base64-encode-decode</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;[Java]&amp;nbsp;Base64&amp;nbsp;encode/decode&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1717039117019&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//...
import java.util.Base64;
//...

public class Application {

	public static void main(String[] args)
	{
    	var text = &quot;테스트&quot;;
		var bytes = text.getBytes();
		var base64 = Base64.getEncoder().encodeToString(bytes);
		var decodedBytes = Base64.getDecoder().decode(bytes);
		var decodedText = new String(decodedBytes);
	}

}&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;</description>
      <category>Programming Language/Java</category>
      <category>BASE64</category>
      <category>decode</category>
      <category>Encode</category>
      <category>Java</category>
      <category>Spring Boot</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/408</guid>
      <comments>https://khanorder.tistory.com/entry/Java-Base64-encode-decode#entry408comment</comments>
      <pubDate>Thu, 30 May 2024 12:19:12 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter] Container 넓이 100%</title>
      <link>https://khanorder.tistory.com/entry/Flutter-Container-width-100</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;[Flutter]&amp;nbsp;Container&amp;nbsp;넓이&amp;nbsp;100%&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1716946418240&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;...

@override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        width: double.infinity,

...&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Programming Framework/Flutter</category>
      <category>container</category>
      <category>DART</category>
      <category>Flutter</category>
      <category>width 100%</category>
      <category>최대넓이</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/407</guid>
      <comments>https://khanorder.tistory.com/entry/Flutter-Container-width-100#entry407comment</comments>
      <pubDate>Wed, 29 May 2024 10:35:33 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter] Container 넓이, 높이 최대값 설정</title>
      <link>https://khanorder.tistory.com/entry/Flutter-Container-max-width-max-height</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;[Flutter]&amp;nbsp;Container&amp;nbsp;넓이&amp;nbsp;최대값&amp;nbsp;설정&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1716946227335&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;...
@override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        constraints: const BoxConstraints(maxWidth: 300, maxHeight: 300),

...&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Programming Framework/Flutter</category>
      <category>container</category>
      <category>DART</category>
      <category>Flutter</category>
      <category>maxHeight</category>
      <category>maxWidth</category>
      <category>최대넓이</category>
      <category>최대높이</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/406</guid>
      <comments>https://khanorder.tistory.com/entry/Flutter-Container-max-width-max-height#entry406comment</comments>
      <pubDate>Wed, 29 May 2024 10:31:41 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter] Container 가운데 정렬하기</title>
      <link>https://khanorder.tistory.com/entry/Flutter-Container-Alignment-Center</link>
      <description>&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;[Flutter]&amp;nbsp;Container&amp;nbsp;가운데&amp;nbsp;정렬하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;넓이가 지정된 Container를 디스플레이하면 좌측정렬된 상태로 나온다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;682&quot; data-origin-height=&quot;642&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpDuMf/btsHFK2dZFn/lmhVhDye7bfhnNLSW9aB6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpDuMf/btsHFK2dZFn/lmhVhDye7bfhnNLSW9aB6K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpDuMf/btsHFK2dZFn/lmhVhDye7bfhnNLSW9aB6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpDuMf%2FbtsHFK2dZFn%2FlmhVhDye7bfhnNLSW9aB6K%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;682&quot; height=&quot;642&quot; data-origin-width=&quot;682&quot; data-origin-height=&quot;642&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;pre id=&quot;code_1716800788752&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;...

@override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        width: 300,
        height: 300,
        decoration: const BoxDecoration(
          color: Colors.lightBlueAccent,
        ),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ElevatedButton(
              onPressed: () =&amp;gt; {},
              child: const Text(&quot;Button&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;이럴 때 Center 위젯으로 감싸주면 Container 위젯이 가운데 정렬되어 디스플레이 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;697&quot; data-origin-height=&quot;841&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pLCdi/btsHFI4qntO/na2EzOBdSQH6xDyrxuCSn1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pLCdi/btsHFI4qntO/na2EzOBdSQH6xDyrxuCSn1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pLCdi/btsHFI4qntO/na2EzOBdSQH6xDyrxuCSn1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpLCdi%2FbtsHFI4qntO%2Fna2EzOBdSQH6xDyrxuCSn1%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;697&quot; height=&quot;841&quot; data-origin-width=&quot;697&quot; data-origin-height=&quot;841&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1716945952312&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Container(
          width: 300,
          height: 300,
          decoration: const BoxDecoration(
            color: Colors.lightBlueAccent,
          ),
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              ElevatedButton(
                onPressed: () =&amp;gt; {},
                child: const Text(&quot;Button&quot;)
              )
            ],
          ),
        ),
      )
    );
  }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Programming Framework/Flutter</category>
      <category>Alignment</category>
      <category>center</category>
      <category>container</category>
      <category>Flutter</category>
      <category>가운데정렬</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/405</guid>
      <comments>https://khanorder.tistory.com/entry/Flutter-Container-Alignment-Center#entry405comment</comments>
      <pubDate>Wed, 29 May 2024 10:27:16 +0900</pubDate>
    </item>
    <item>
      <title>[Dart] byte array 표현 및 데이터를 포함한 선언</title>
      <link>https://khanorder.tistory.com/entry/Dart-byte-array-declare-with-data</link>
      <description>&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;[Dart]&amp;nbsp;byte&amp;nbsp;array&amp;nbsp;표현&amp;nbsp;및&amp;nbsp;데이터를&amp;nbsp;포함한&amp;nbsp;선언&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1716800788752&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'dart:typed_data';

...

Uint8List example = Uint8List.fromList([0, 1, 2, ..., x]);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Programming Language/Dart</category>
      <category>Byte Array</category>
      <category>DART</category>
      <category>Flutter</category>
      <category>Uint8Array</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/404</guid>
      <comments>https://khanorder.tistory.com/entry/Dart-byte-array-declare-with-data#entry404comment</comments>
      <pubDate>Mon, 27 May 2024 18:08:07 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter] getApplicationCacheDirectory 폴더 위치</title>
      <link>https://khanorder.tistory.com/entry/Flutter-getApplicationCacheDirectory-folder</link>
      <description>&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;[Flutter]&amp;nbsp;getApplicationCacheDirectory&amp;nbsp;폴더&amp;nbsp;위치&lt;/h3&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; - /data/user/0/{패키지명}/cache&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;- C:\Users\{유저명}\AppData\Local\{CompanyName}\{ProjectName}&lt;/p&gt;</description>
      <category>Programming Framework/Flutter</category>
      <category>android</category>
      <category>cache folder</category>
      <category>DART</category>
      <category>Flutter</category>
      <category>getapplicationcachedirectory</category>
      <category>Windows</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/403</guid>
      <comments>https://khanorder.tistory.com/entry/Flutter-getApplicationCacheDirectory-folder#entry403comment</comments>
      <pubDate>Mon, 27 May 2024 17:33:33 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter] Windows App getApplicationCacheDirectory 경로 변경</title>
      <link>https://khanorder.tistory.com/entry/Flutter-Windows-App-package-pathprovider-getApplicationCacheDirectory</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;[Flutter]&amp;nbsp;Windows&amp;nbsp;App&amp;nbsp;getApplicationCacheDirectory&amp;nbsp;경로&amp;nbsp;변경&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;%프로젝트폴더%\windows\runner\Runner.rc 파일을 열면&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;80~100 줄 사이에 아래와 같은 내용이 보인다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CompanyName에 해당 하는 부분을 원하는 이름으로 바꿔주면 된다.&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;CompanyName은 path_provider패키지의 getApplicationCacheDirectory 함수를 사용할 때 캐시폴더 경로에 영향을 준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;getApplicationCacheDirectory 함수는 C:\User\UserName\AppData\Local\CompanyName\ProjectName 경로를 반환한다.&lt;/p&gt;
&lt;pre id=&quot;code_1716796418746&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;...

BEGIN
    BLOCK &quot;StringFileInfo&quot;
    BEGIN
        BLOCK &quot;040904e4&quot;
        BEGIN
            VALUE &quot;CompanyName&quot;, &quot;com.example&quot; &quot;\0&quot;
            VALUE &quot;FileDescription&quot;, &quot;project_name&quot; &quot;\0&quot;
            VALUE &quot;FileVersion&quot;, VERSION_AS_STRING &quot;\0&quot;
            VALUE &quot;InternalName&quot;, &quot;project_name&quot; &quot;\0&quot;
            VALUE &quot;LegalCopyright&quot;, &quot;Copyright (C) 2024 com.example. All rights reserved.&quot; &quot;\0&quot;
            VALUE &quot;OriginalFilename&quot;, &quot;project_name.exe&quot; &quot;\0&quot;
            VALUE &quot;ProductName&quot;, &quot;project_name&quot; &quot;\0&quot;
            VALUE &quot;ProductVersion&quot;, VERSION_AS_STRING &quot;\0&quot;
        END
    END
    BLOCK &quot;VarFileInfo&quot;
    BEGIN
        VALUE &quot;Translation&quot;, 0x409, 1252
    END
END

...&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Programming Framework/Flutter</category>
      <category>cache</category>
      <category>Company</category>
      <category>DART</category>
      <category>Flutter</category>
      <category>getapplicationcachedirectory</category>
      <category>package</category>
      <category>path_provider</category>
      <category>TEMP</category>
      <category>Windows</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/402</guid>
      <comments>https://khanorder.tistory.com/entry/Flutter-Windows-App-package-pathprovider-getApplicationCacheDirectory#entry402comment</comments>
      <pubDate>Mon, 27 May 2024 16:59:15 +0900</pubDate>
    </item>
    <item>
      <title>[Dart] late와 nallable 그리고 final 차이</title>
      <link>https://khanorder.tistory.com/entry/Dart-late-nallable-final</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;[Dart] late와 nallable 그리고 final 차이&lt;/h2&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;아래와 같이 선언할 때 UserC 클래스는 선언과 동시에 member 변수 name의 값을 지정해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 UserA와 UserC 클래스는 선언 후에 name 변수를 입력해도 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UserB의 경우에는 name 변수를 계속 수정 가능하지만 UserA의 경우에는 선언 후에 원하는 시기에 값을 입력하고,&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;dart 프로그래밍에서 late 접두사는 클래스의 멤버 변수를 선언할 경우 초기화는 지연시키고 불변성은 유지하고 싶은 때 사용할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1716705296044&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class UserA {
  late final String name;
}

class UserB {
  String? name;
}

class UserC {
  UserC({required this.name});
  final String name;
}

main() {
  var userA = UserA();
  var userB = UserB();
  var userC = UserC(name: 'nameC');
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Programming Language/Dart</category>
      <category>DART</category>
      <category>final</category>
      <category>init</category>
      <category>Late</category>
      <category>nullable</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/400</guid>
      <comments>https://khanorder.tistory.com/entry/Dart-late-nallable-final#entry400comment</comments>
      <pubDate>Sun, 26 May 2024 15:55:40 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter] Yaml 파일 Decode/DeSerialize(Yaml 객체화)</title>
      <link>https://khanorder.tistory.com/entry/Flutter-Yaml-Decode-DeSerialize</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;[Flutter]&amp;nbsp;Yaml&amp;nbsp;파일&amp;nbsp;Decode/DeSerialize(Yaml&amp;nbsp;객체화)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 코드는 yaml 파일로부터 읽어온 데이터를 GetIt ServiceLocator에 저장 하는 과정까지의 코드이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;http 통신에 사용할 서버 정보를 yaml파일로 설정하기 위한 예시이다.&lt;/p&gt;
&lt;pre id=&quot;code_1716698262153&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:get_it/get_it.dart';
import 'package:hello_world/services/config_service.dart';
import &quot;package:flutter/services.dart&quot; as services;
import &quot;package:yaml/yaml.dart&quot;;

Future&amp;lt;void&amp;gt; serviceConfig() async {
  final String data = await services.rootBundle.loadString('server.yaml');
  final YamlMap mapData = loadYaml(data);
  final Server server = Server.fromYaml(mapData);
  final ConfigService configService = ConfigService(server: server);

  GetIt.I.registerSingleton&amp;lt;ConfigService&amp;gt;(configService);
}

class Server {
  const Server({
    required this.protocol,
    required this.host
  });

  final String protocol;
  final String host;

  factory Server.fromYaml(YamlMap yaml) =&amp;gt; Server(
      protocol: yaml['protocol'] ?? '',
      host: yaml['host'] ?? ''
  );
}

class ConfigService {
  ConfigService({required this.server});

  final Server server;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Programming Framework/Flutter</category>
      <category>Asset</category>
      <category>config</category>
      <category>DART</category>
      <category>Flutter</category>
      <category>getit</category>
      <category>resorce</category>
      <category>script</category>
      <category>service locator</category>
      <category>Setting</category>
      <category>YAML</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/399</guid>
      <comments>https://khanorder.tistory.com/entry/Flutter-Yaml-Decode-DeSerialize#entry399comment</comments>
      <pubDate>Sun, 26 May 2024 13:40:50 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter] Splash Screen(앱 시작 화면) 만들기</title>
      <link>https://khanorder.tistory.com/entry/Flutter-Splash-Screen</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;[Flutter]&amp;nbsp;Splash&amp;nbsp;Screen(앱&amp;nbsp;시작&amp;nbsp;화면)&amp;nbsp;만들기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 flutter_native_splash 패키지를 설치한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1716685256370&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;flutter pub add flutter_native_splash&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;패키지 설치 후 pubspec.yaml 파일에 설정값을 입력하거나&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;flutter_native_splash.yaml 파일을 만들어서 설정값을 입력해도 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1716685562911&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;flutter_native_splash:
	color: &quot;#ffffff&quot;
    image: assets/images/logo.png
    
    # 안드로이드12버전 이상은 따로 설정 해줘야 한다.
    android_12:
    	image: assets/images/android12_log.png
    
    # 그 외에 빌드 환경별로 설정 할 수 있다.
    # image는 가운데 앱 로고, brand_image는 하단 브랜드 로고이다.
    
    #color_android: &quot;#42a5f5&quot;
    #color_dark_android: &quot;#042a49&quot;
    #color_ios: &quot;#42a5f5&quot;
    #color_dark_ios: &quot;#042a49&quot;
    #color_web: &quot;#42a5f5&quot;
    #color_dark_web: &quot;#042a49&quot;
    #image_android: assets/splash-android.png
    #image_dark_android: assets/splash-invert-android.png
    #image_ios: assets/splash-ios.png
    #image_dark_ios: assets/splash-invert-ios.png
    #image_web: assets/splash-web.gif
    #image_dark_web: assets/splash-invert-web.gif
    #background_image_android: &quot;assets/background-android.png&quot;
    #background_image_dark_android: &quot;assets/dark-background-android.png&quot;
    #background_image_ios: &quot;assets/background-ios.png&quot;
    #background_image_dark_ios: &quot;assets/dark-background-ios.png&quot;
    #background_image_web: &quot;assets/background-web.png&quot;
    #background_image_dark_web: &quot;assets/dark-background-web.png&quot;
    #branding_android: images/logo.png
    #branding_dark_android: assets/dart_dark-android.png
    #branding_ios: assets/brand-ios.png
    #branding_dark_ios: assets/dart_dark-ios.png
    #branding_web: assets/images/logo.png
    #branding_dark_web: assets/dart_dark-web.gif&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1716685705844&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;dart run flutter_native_splash:create

// 설정 파일을 별도로 사용했다면 파일 경로를 인자로 입력해줘야 한다.
dart run flutter_native_splash:create --path=flutter_native_splash.yaml

// 설정값을 지우는 명령어
dart run flutter_native_splash:remove&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;다음은 앱 코드에 Splash Screen 코드를 추가한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1716685926113&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;void main() {
  var widgetsBinding = WidgetsFlutterBinding.ensureInitialized();
  FlutterNativeSplash.preserve(widgetsBinding: widgetsBinding);
  runApp(const MyApp());
  
  // Splash Screen은 자동으로 사라지지 않는다.
  // 앱이 실행된 후 Splash Screen이 사라지길 원하는 시점에 아래 코드를 추가하자.
  // FlutterNativeSplash.remove();
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State&amp;lt;MyApp&amp;gt; createState() =&amp;gt; _MyAppState();
}

class _MyAppState extends State&amp;lt;MyApp&amp;gt; {

  @override
  void initState() {
    super.initState();
    FlutterNativeSplash.remove();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Splash screen sample',
      theme: ThemeData(
          colorScheme: ColorScheme.fromSeed(seedColor: Colors.blue),
          useMaterial3: true
      ),
      home: HomeScreen(),
    );
  }
}&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;a href=&quot;https://pub.dev/packages/flutter_native_splash&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://pub.dev/packages/flutter_native_splash&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1716709728487&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;flutter_native_splash | Flutter package&quot; data-og-description=&quot;Customize Flutter's default white native splash screen with background color and splash image. Supports dark mode, full screen, and more.&quot; data-og-host=&quot;pub.dev&quot; data-og-source-url=&quot;https://pub.dev/packages/flutter_native_splash&quot; data-og-url=&quot;https://pub.dev/packages/flutter_native_splash&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/QiC0l/hyWdsYZ2FB/OfkWmjZn9UrgT8Y9s7k8c0/img.png?width=1280&amp;amp;height=640&amp;amp;face=0_0_1280_640,https://scrap.kakaocdn.net/dn/21VgV/hyV9Tqn5MN/RrvdpPGVxokyPLEoxQJ9nk/img.png?width=1280&amp;amp;height=640&amp;amp;face=0_0_1280_640&quot;&gt;&lt;a href=&quot;https://pub.dev/packages/flutter_native_splash&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://pub.dev/packages/flutter_native_splash&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/QiC0l/hyWdsYZ2FB/OfkWmjZn9UrgT8Y9s7k8c0/img.png?width=1280&amp;amp;height=640&amp;amp;face=0_0_1280_640,https://scrap.kakaocdn.net/dn/21VgV/hyV9Tqn5MN/RrvdpPGVxokyPLEoxQJ9nk/img.png?width=1280&amp;amp;height=640&amp;amp;face=0_0_1280_640');&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;flutter_native_splash | Flutter package&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Customize Flutter's default white native splash screen with background color and splash image. Supports dark mode, full screen, and more.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;pub.dev&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;</description>
      <category>Programming Framework/Flutter</category>
      <category>DART</category>
      <category>Flutter</category>
      <category>Splash Screen</category>
      <category>랜딩화면</category>
      <category>로딩화면</category>
      <category>시작화면</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/398</guid>
      <comments>https://khanorder.tistory.com/entry/Flutter-Splash-Screen#entry398comment</comments>
      <pubDate>Sun, 26 May 2024 10:14:38 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter] GetIt 패키지를 이용한 Service Locator 전역 상태 관리</title>
      <link>https://khanorder.tistory.com/entry/Flutter-GetIt-package-Service-Locator-global-state</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;[Flutter]&amp;nbsp;GetIt&amp;nbsp;패키지를&amp;nbsp;이용한&amp;nbsp;Service&amp;nbsp;Locator&amp;nbsp;전역&amp;nbsp;상태&amp;nbsp;관리&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1f22; color: #bcbec4;&quot;&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;class UserService extends ChangeNotifier {
  UserService();

  User? get user =&amp;gt; _user;

  User? _user;

  set user(User? user) {
    _user = user;
    // 값 변경을 알려주는 notifyListeners 추가.
    notifyListeners();
  }
}

void main() {
  // GetIt을 이용해서 전역상태 관리를 할 객체 Service Locator 등록
  GetIt.I.registerSingleton&amp;lt;UserService&amp;gt;(UserService());
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State&amp;lt;MyApp&amp;gt; createState() =&amp;gt; _MyAppState();
}

class _MyAppState extends State&amp;lt;MyApp&amp;gt; {

  final _userService = GetIt.I&amp;lt;UserService&amp;gt;();

  @override
  void initState() {
    super.initState();
    // statefull widget의 상태를 초기화 할 때
    // service locator listener에 현재 widget 상태변경 알림 추가
    // ChangeNotifier를 상속한 service locator의 notifyListeners가 동작할 때
    // 현재 widget의 state도 업데이트 된다.
    _userService.addListener(() =&amp;gt; setState(() {}));
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'ServiceLocatorState',
      theme: ThemeData(
          colorScheme: ColorScheme.fromSeed(seedColor: Colors.blue),
          useMaterial3: true,
          fontFamily: &quot;NanumBarunGothic&quot;
      ),
      home: HomeScreen(title: 'Z Talk', products: products)
    );
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;</description>
      <category>Programming Framework/Flutter</category>
      <category>DI</category>
      <category>Flutter</category>
      <category>getit</category>
      <category>IOC</category>
      <category>읜존성 주입</category>
      <category>전역 상태관리</category>
      <category>제어 역전</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/397</guid>
      <comments>https://khanorder.tistory.com/entry/Flutter-GetIt-package-Service-Locator-global-state#entry397comment</comments>
      <pubDate>Sat, 25 May 2024 23:29:42 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter] JsonSerialize(encode / decode)</title>
      <link>https://khanorder.tistory.com/entry/Flutter-JsonSerialize-encode-decode</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;[Flutter]&amp;nbsp;JsonSerialize(encode&amp;nbsp;/&amp;nbsp;decode)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클래스 맴버로 toJson, fromJson 메서드를 만들어 준 후&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;dart:convert 라이브러리의 jsonEncode, jsonDecode 함수로 변환해준다.&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;a href=&quot;https://api.flutter.dev/flutter/dart-convert/jsonEncode.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://api.flutter.dev/flutter/dart-convert/jsonEncode.html&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1716532245867&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;jsonEncode function - dart:convert library - Dart API&quot; data-og-description=&quot;jsonEncode function String jsonEncode(Object? object, {Object? toEncodable(Object? nonEncodable )?} ) Converts object to a JSON string. If value contains objects that are not directly encodable to a JSON string (a value that is not a number, boolean, strin&quot; data-og-host=&quot;api.flutter.dev&quot; data-og-source-url=&quot;https://api.flutter.dev/flutter/dart-convert/jsonEncode.html&quot; data-og-url=&quot;https://api.flutter.dev/flutter/dart-convert/jsonEncode.html&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://api.flutter.dev/flutter/dart-convert/jsonEncode.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://api.flutter.dev/flutter/dart-convert/jsonEncode.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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;jsonEncode function - dart:convert library - Dart API&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;jsonEncode function String jsonEncode(Object? object, {Object? toEncodable(Object? nonEncodable )?} ) Converts object to a JSON string. If value contains objects that are not directly encodable to a JSON string (a value that is not a number, boolean, strin&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;api.flutter.dev&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;json_serializable 패키지를 사용하는 방법도 있는데 다른 언어(C#, Java, javascript)들 처럼 간편하진 않다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;@JsonSerializable 어노테이션을 선언 한 후 json_serializable 패키지 명령어로 utility code( _$클래스명ToJson, _$클래스명FromJson )를 생성해서 위와 같은 방식으로 toJson, fromJson에 생성된 utiltiy code의 함수를 반환해주는 방식이다.&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;a href=&quot;https://docs.flutter.dev/data-and-backend/serialization/json&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://docs.flutter.dev/data-and-backend/serialization/json&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1716532547269&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;JSON and serialization&quot; data-og-description=&quot;How to use JSON with Flutter.&quot; data-og-host=&quot;docs.flutter.dev&quot; data-og-source-url=&quot;https://docs.flutter.dev/data-and-backend/serialization/json&quot; data-og-url=&quot;https://docs.flutter.dev/data-and-backend/serialization/json&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bfk22P/hyV9Ncdgzk/Z2dLWPMd5nvPioh7hSteoK/img.png?width=937&amp;amp;height=461&amp;amp;face=0_0_937_461,https://scrap.kakaocdn.net/dn/gQti8/hyV921xjb1/fD4CakKIffJJ6VxZrltJU1/img.png?width=588&amp;amp;height=242&amp;amp;face=0_0_588_242&quot;&gt;&lt;a href=&quot;https://docs.flutter.dev/data-and-backend/serialization/json&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.flutter.dev/data-and-backend/serialization/json&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bfk22P/hyV9Ncdgzk/Z2dLWPMd5nvPioh7hSteoK/img.png?width=937&amp;amp;height=461&amp;amp;face=0_0_937_461,https://scrap.kakaocdn.net/dn/gQti8/hyV921xjb1/fD4CakKIffJJ6VxZrltJU1/img.png?width=588&amp;amp;height=242&amp;amp;face=0_0_588_242');&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;JSON and serialization&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;How to use JSON with Flutter.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;docs.flutter.dev&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;</description>
      <category>Programming Framework/Flutter</category>
      <category>DART</category>
      <category>Flutter</category>
      <category>JSON</category>
      <category>json decode</category>
      <category>json encode</category>
      <category>json serialize</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/396</guid>
      <comments>https://khanorder.tistory.com/entry/Flutter-JsonSerialize-encode-decode#entry396comment</comments>
      <pubDate>Fri, 24 May 2024 15:46:10 +0900</pubDate>
    </item>
    <item>
      <title>[Java] 테스트 코드 실행 없이 빌드</title>
      <link>https://khanorder.tistory.com/entry/Java-build-without-test</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;[Java]&amp;nbsp;테스트&amp;nbsp;코드&amp;nbsp;실행&amp;nbsp;없이&amp;nbsp;빌드&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1716522023611&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;gradle build -x test&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;</description>
      <category>Programming Language/Java</category>
      <category>build</category>
      <category>Gradle</category>
      <category>Java</category>
      <category>without test</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/395</guid>
      <comments>https://khanorder.tistory.com/entry/Java-build-without-test#entry395comment</comments>
      <pubDate>Fri, 24 May 2024 12:38:40 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter] SliverList 고정되는 항목 만들기</title>
      <link>https://khanorder.tistory.com/entry/Flutter-CustomScrollView-SliverList-SliverPersistentHeader</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;[Flutter]&amp;nbsp;SliverList&amp;nbsp;중&amp;nbsp;고정되는&amp;nbsp;항목&amp;nbsp;만들기&lt;/h2&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-filename=&quot;sliver_list_pinned_header.gif&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ca04jB/btsHx1jaFTt/n1uMeIkwU2ZJ7tF6hTdKuk/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ca04jB/btsHx1jaFTt/n1uMeIkwU2ZJ7tF6hTdKuk/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ca04jB/btsHx1jaFTt/n1uMeIkwU2ZJ7tF6hTdKuk/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/ca04jB/btsHx1jaFTt/n1uMeIkwU2ZJ7tF6hTdKuk/img.gif&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;720&quot; data-filename=&quot;sliver_list_pinned_header.gif&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SliverPersistentHeader widget의 pnned 요소를 true로 해서&amp;nbsp; CustomScrollView widget의 slivers에 추가해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SliverPersistentHeader는 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;스크롤 될 때&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; ScrollView 상단에서 고정되는걸 볼 수 있다.&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1f22; color: #bcbec4;&quot;&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;class _MyHomePageState extends State&amp;lt;MyHomePage&amp;gt; {

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        children: [
          Expanded(
            child: CustomScrollView(
              slivers: [
                SliverPersistentHeader(
                    pinned: true,
                    delegate: SliverPinnedHeaderDelegate(
                        minHeight: 50,
                        maxHeight: 50,
                        child: Container(
                          color: Colors.white,
                          child: ListTileTheme(
                            child: ListTile(
                              title: Text('SubTitle_01'),
                            ),
                          ),
                        )
                    )
                ),
                SliverList(
                  delegate: SliverChildBuilderDelegate(
                      childCount: widget.products.length,
                          (context, index) {
                        return ShoppingListItem(product: widget.products[index], inCart: _shoppingCart.contains(widget.products[index]), onCardChanged: _handleCartChanged);
                      }
                  ),
                ),
                SliverPersistentHeader(
                    pinned: true,
                    delegate: SliverPinnedHeaderDelegate(
                        minHeight: 50,
                        maxHeight: 50,
                        child: Container(
                          color: Colors.white,
                          child: ListTileTheme(
                            child: ListTile(
                              title: Text('SubTitle_02'),
                            ),
                          ),
                        )
                    )
                ),
                SliverList(
                  delegate: SliverChildBuilderDelegate(
                      childCount: widget.products.length,
                          (context, index) {
                        return ShoppingListItem(product: widget.products[index], inCart: _shoppingCart.contains(widget.products[index]), onCardChanged: _handleCartChanged);
                      }
                  ),
                ),
              ],
            ),
          )
        ],
      ),
    );
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;</description>
      <category>Programming Framework/Flutter</category>
      <category>custom scroll view</category>
      <category>DART</category>
      <category>Flutter</category>
      <category>sliver  pinned header</category>
      <category>sliver list</category>
      <category>sliver persistent header</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/394</guid>
      <comments>https://khanorder.tistory.com/entry/Flutter-CustomScrollView-SliverList-SliverPersistentHeader#entry394comment</comments>
      <pubDate>Thu, 23 May 2024 10:52:30 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter] ListView 오류 Vertical viewport was given unbounded height.</title>
      <link>https://khanorder.tistory.com/entry/Flutter-ListView-Vertical-viewport-was-given-unbounded-height</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;[Flutter]&amp;nbsp;ListView&amp;nbsp;오류&amp;nbsp;Vertical&amp;nbsp;viewport&amp;nbsp;was&amp;nbsp;given&amp;nbsp;unbounded&amp;nbsp;height.&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The&amp;nbsp;following&amp;nbsp;assertion&amp;nbsp;was&amp;nbsp;thrown&amp;nbsp;during&amp;nbsp;performResize(): &lt;br /&gt;Vertical&amp;nbsp;viewport&amp;nbsp;was&amp;nbsp;given&amp;nbsp;unbounded&amp;nbsp;height. &lt;br /&gt;&lt;br /&gt;Viewports&amp;nbsp;expand&amp;nbsp;in&amp;nbsp;the&amp;nbsp;scrolling&amp;nbsp;direction&amp;nbsp;to&amp;nbsp;fill&amp;nbsp;their&amp;nbsp;container.&amp;nbsp;In&amp;nbsp;this&amp;nbsp;case,&amp;nbsp;a&amp;nbsp;vertical&amp;nbsp;viewport&amp;nbsp;was&amp;nbsp;given&amp;nbsp;an&amp;nbsp;unlimited&amp;nbsp;amount&amp;nbsp;of&amp;nbsp;vertical&amp;nbsp;space&amp;nbsp;in&amp;nbsp;which&amp;nbsp;to&amp;nbsp;expand.&amp;nbsp;This&amp;nbsp;situation&amp;nbsp;typically&amp;nbsp;happens&amp;nbsp;when&amp;nbsp;a&amp;nbsp;scrollable&amp;nbsp;widget&amp;nbsp;is&amp;nbsp;nested&amp;nbsp;inside&amp;nbsp;another&amp;nbsp;scrollable&amp;nbsp;widget. &lt;br /&gt;&lt;br /&gt;If&amp;nbsp;this&amp;nbsp;widget&amp;nbsp;is&amp;nbsp;always&amp;nbsp;nested&amp;nbsp;in&amp;nbsp;a&amp;nbsp;scrollable&amp;nbsp;widget&amp;nbsp;there&amp;nbsp;is&amp;nbsp;no&amp;nbsp;need&amp;nbsp;to&amp;nbsp;use&amp;nbsp;a&amp;nbsp;viewport&amp;nbsp;because&amp;nbsp;there&amp;nbsp;will&amp;nbsp;always&amp;nbsp;be&amp;nbsp;enough&amp;nbsp;vertical&amp;nbsp;space&amp;nbsp;for&amp;nbsp;the&amp;nbsp;children.&amp;nbsp;In&amp;nbsp;this&amp;nbsp;case,&amp;nbsp;consider&amp;nbsp;using&amp;nbsp;a&amp;nbsp;Column&amp;nbsp;or&amp;nbsp;Wrap&amp;nbsp;instead.&amp;nbsp;Otherwise,&amp;nbsp;consider&amp;nbsp;using&amp;nbsp;a&amp;nbsp;CustomScrollView&amp;nbsp;to&amp;nbsp;concatenate&amp;nbsp;arbitrary&amp;nbsp;slivers&amp;nbsp;into&amp;nbsp;a&amp;nbsp;single&amp;nbsp;scrollable. &lt;br /&gt;&lt;br /&gt;The&amp;nbsp;relevant&amp;nbsp;error-causing&amp;nbsp;widget&amp;nbsp;was:&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;ListView ListView:file:///... ...&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;ListView 위젯을 하위 위젯으로 사용할 때 이런 오류가 나온다면 SizedBox 위젯으로 감싸준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1f22; color: #bcbec4;&quot;&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;...
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: &amp;lt;Widget&amp;gt;[
            SizedBox(
              height: 200,
              child: ListView(
                padding: const EdgeInsets.symmetric(vertical: 8),
                children: widget.products.map((product) {
                  return ShoppingListItem(product: product, inCart: _shoppingCart.contains(product), onCardChanged: _handleCartChanged);
                }).toList(),
              ),
            ),
          ],
        ),
      ),
    );
  }
...&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;</description>
      <category>Programming Framework/Flutter</category>
      <category>DART</category>
      <category>Flutter</category>
      <category>ListView</category>
      <category>SizedBox</category>
      <category>vertical viewport was given unbounded height.</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/393</guid>
      <comments>https://khanorder.tistory.com/entry/Flutter-ListView-Vertical-viewport-was-given-unbounded-height#entry393comment</comments>
      <pubDate>Fri, 17 May 2024 10:21:59 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter] 우측 상단 'DEBUG' 배너 제거하기</title>
      <link>https://khanorder.tistory.com/entry/Flutter-remove-DEBUG-banner</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;[Flutter]&amp;nbsp;상단&amp;nbsp;'DEBUG'&amp;nbsp;배너&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;323&quot; data-origin-height=&quot;142&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vtTYQ/btsHqmBCx9z/NgkA3fKmFfcYqRny6akH9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vtTYQ/btsHqmBCx9z/NgkA3fKmFfcYqRny6akH9K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vtTYQ/btsHqmBCx9z/NgkA3fKmFfcYqRny6akH9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvtTYQ%2FbtsHqmBCx9z%2FNgkA3fKmFfcYqRny6akH9K%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;323&quot; height=&quot;142&quot; data-origin-width=&quot;323&quot; data-origin-height=&quot;142&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;MaterialApp 위젯 인자중에 debugShowCheckedModeBanner 값을 false로 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1f22; color: #bcbec4;&quot;&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;MaterialApp(
    title: 'Hello World',
    debugShowCheckedModeBanner: false,
  );
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&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;331&quot; data-origin-height=&quot;177&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dhQjZI/btsHqttJy54/nc0hokRukfuA6FPsYXyvuk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dhQjZI/btsHqttJy54/nc0hokRukfuA6FPsYXyvuk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dhQjZI/btsHqttJy54/nc0hokRukfuA6FPsYXyvuk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdhQjZI%2FbtsHqttJy54%2Fnc0hokRukfuA6FPsYXyvuk%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;331&quot; height=&quot;177&quot; data-origin-width=&quot;331&quot; data-origin-height=&quot;177&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Programming Framework/Flutter</category>
      <category>DART</category>
      <category>debug banner</category>
      <category>debugshowcheckedmodebanner</category>
      <category>Flutter</category>
      <category>MaterialApp</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/392</guid>
      <comments>https://khanorder.tistory.com/entry/Flutter-remove-DEBUG-banner#entry392comment</comments>
      <pubDate>Thu, 16 May 2024 18:57:10 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter] IntelliJ Device Manager 버튼 안 보일 때 활성화 방법</title>
      <link>https://khanorder.tistory.com/entry/Flutter-IntelliJ-enable-Device-Manager-button</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;[Flutter]&amp;nbsp;IntelliJ&amp;nbsp;Device&amp;nbsp;Manager&amp;nbsp;버튼&amp;nbsp;안&amp;nbsp;보일&amp;nbsp;때&amp;nbsp;활성화&amp;nbsp;방법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Settings &amp;gt; Languages &amp;amp; Frameworks &amp;gt; Android SDK 설정 화면으로 이동&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용할 SDK버전을 다운로드 하여 선택해 주거나, 이미 설치된 SDK 폴더 지정.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IntlliJ 재시작.&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;984&quot; data-origin-height=&quot;735&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dZ1wTy/btsHqIYdotv/8cAxE2FOSdKLLhKRDZXPEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dZ1wTy/btsHqIYdotv/8cAxE2FOSdKLLhKRDZXPEk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dZ1wTy/btsHqIYdotv/8cAxE2FOSdKLLhKRDZXPEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdZ1wTy%2FbtsHqIYdotv%2F8cAxE2FOSdKLLhKRDZXPEk%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;984&quot; height=&quot;735&quot; data-origin-width=&quot;984&quot; data-origin-height=&quot;735&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;활성화 됐다.&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;670&quot; data-origin-height=&quot;429&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dJqDOZ/btsHrwJG9Cd/pgXnKX0Td9kUgBgxwpHuBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dJqDOZ/btsHrwJG9Cd/pgXnKX0Td9kUgBgxwpHuBk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dJqDOZ/btsHrwJG9Cd/pgXnKX0Td9kUgBgxwpHuBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdJqDOZ%2FbtsHrwJG9Cd%2FpgXnKX0Td9kUgBgxwpHuBk%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;670&quot; height=&quot;429&quot; data-origin-width=&quot;670&quot; data-origin-height=&quot;429&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Programming Framework/Flutter</category>
      <category>adroid sdk</category>
      <category>android</category>
      <category>DART</category>
      <category>device manager</category>
      <category>Flutter</category>
      <category>intellij</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/391</guid>
      <comments>https://khanorder.tistory.com/entry/Flutter-IntelliJ-enable-Device-Manager-button#entry391comment</comments>
      <pubDate>Thu, 16 May 2024 16:14:33 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter] 플러터 웹 디버깅 포트 지정</title>
      <link>https://khanorder.tistory.com/entry/Flutter-web-debug-port</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;[Flutter]&amp;nbsp;플러터&amp;nbsp;웹&amp;nbsp;디버깅&amp;nbsp;포트&amp;nbsp;지정&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Additional run args 에 --web-port 옵션으로 원하는 포트를 지정&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;818&quot; data-origin-height=&quot;693&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oeuqw/btsHqcxLx52/tO8rMvOL3pEGMHCyckKmAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oeuqw/btsHqcxLx52/tO8rMvOL3pEGMHCyckKmAk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oeuqw/btsHqcxLx52/tO8rMvOL3pEGMHCyckKmAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Foeuqw%2FbtsHqcxLx52%2FtO8rMvOL3pEGMHCyckKmAk%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;818&quot; height=&quot;693&quot; data-origin-width=&quot;818&quot; data-origin-height=&quot;693&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Programming Framework/Flutter</category>
      <category>additional run args</category>
      <category>Configuration</category>
      <category>DART</category>
      <category>Debug</category>
      <category>Flutter</category>
      <category>intellij</category>
      <category>port</category>
      <category>run</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/390</guid>
      <comments>https://khanorder.tistory.com/entry/Flutter-web-debug-port#entry390comment</comments>
      <pubDate>Tue, 14 May 2024 18:27:18 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter] IntelliJ 프로젝트 생성 시 Unable to find git in your PATH</title>
      <link>https://khanorder.tistory.com/entry/Flutter-IntelliJ-create-project-Unable-to-find-git-in-your-PATH</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;[Flutter]&amp;nbsp;IntelliJ&amp;nbsp;프로젝트&amp;nbsp;생성&amp;nbsp;시&amp;nbsp;Unable&amp;nbsp;to&amp;nbsp;find&amp;nbsp;git&amp;nbsp;in&amp;nbsp;your&amp;nbsp;PATH&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Unable to find git in your PATH 오류가 나오면서 프로젝트 생성이 실패한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background-color: #ffffff; color: #333333; text-align: left;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;git config --global --add safe.directory '*'&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[참조] &lt;a title=&quot;https://github.com/flutter/flutter/issues/123995&quot; href=&quot;https://github.com/flutter/flutter/issues/123995&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/flutter/flutter/issues/123995&lt;/a&gt;&lt;/p&gt;</description>
      <category>Programming Framework/Flutter</category>
      <category>create project</category>
      <category>DART</category>
      <category>error</category>
      <category>Flutter</category>
      <category>git</category>
      <category>intellij</category>
      <category>Unable to find git in your PATH</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/389</guid>
      <comments>https://khanorder.tistory.com/entry/Flutter-IntelliJ-create-project-Unable-to-find-git-in-your-PATH#entry389comment</comments>
      <pubDate>Tue, 14 May 2024 17:58:49 +0900</pubDate>
    </item>
    <item>
      <title>[SQL Server] How to change MSSQL Server data folder on Linux</title>
      <link>https://khanorder.tistory.com/entry/SQL-Server-How-to-change-MSSQL-Server-data-folder-on-Linux</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[SQL Server] How to change MSSQL Server data folder on Linux&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1678257114818&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# stop the mssql server service
systemctl stop mssql-server

# make your own new mssql data folder and log folder
mkdir /data/mssql/data
mkdir /data/mssql/log

# check the mssql binary path
ls /opt/mssql/bin

# change the mssql data folder
sudo /opt/mssql/bin/mssql-conf set filelocation.defaultdatadir /data/mssql/data

# change the mssql log folder
sudo /opt/mssql/bin/mssql-conf set filelocation.defaultlogdir /data/mssql/log

#copy all file in the default data and log folder to your own new data and log folder
sudo cp -r /var/opt/mssql/data/* /data/mssql/data
sudo cp -r /var/opt/mssql/log/* /data/mssql/log

#change ownership of data and log files
sudo chown -R mssql:mssql /data/mssql

#restart the mssql server service
systemctl start mssql-server&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Database/MS SQL Server</category>
      <category>custom data folder</category>
      <category>data folder</category>
      <category>MSSQL</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/388</guid>
      <comments>https://khanorder.tistory.com/entry/SQL-Server-How-to-change-MSSQL-Server-data-folder-on-Linux#entry388comment</comments>
      <pubDate>Wed, 8 Mar 2023 15:33:16 +0900</pubDate>
    </item>
    <item>
      <title>[SQL Server] How to use MSSQL Server custom port on Linux</title>
      <link>https://khanorder.tistory.com/entry/SQL-Server-How-to-use-MSSQL-Server-custom-port-on-Linux</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[SQL&amp;nbsp;Server]&amp;nbsp;How&amp;nbsp;to&amp;nbsp;use&amp;nbsp;MSSQL&amp;nbsp;Server&amp;nbsp;custom&amp;nbsp;port&amp;nbsp;on&amp;nbsp;Linux&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1678256373913&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# Default port is 1433
# I will set 1434 on port
sudo /opt/mssql/bin/mssql-conf set network.tcpport 1434

# And restart mssql-server service.
systemctl restart mssql-server&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Database/MS SQL Server</category>
      <category>custom port</category>
      <category>MSSQL</category>
      <category>sqlserver</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/387</guid>
      <comments>https://khanorder.tistory.com/entry/SQL-Server-How-to-use-MSSQL-Server-custom-port-on-Linux#entry387comment</comments>
      <pubDate>Wed, 8 Mar 2023 15:24:02 +0900</pubDate>
    </item>
    <item>
      <title>[MariaDB] 저장 위치 변경</title>
      <link>https://khanorder.tistory.com/entry/MariaDB-change-db-data-directory</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[MariaDB]&amp;nbsp;저장&amp;nbsp;위치&amp;nbsp;변경&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1672129270896&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;MariaDB [(none)]&amp;gt; select @@datadir;

-- 디비 데이터 저장 디렉토리 위치 확인&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1672129370807&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;systemctl stop mariadb
// 마리아 디비 종료
sudo mkdir /data/mysql
// 새 디비 저장공간 디렉토리 생성
chown -R mysql:mysql /data/mysql
// 생성한 디렉토리에 mysql 권한 부여
sudo rsync -av /var/lib/mysql /data/mysql
// rsync를 사용해서 새 디렉토리에 디비 데이터 파일 복사&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1672129501964&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/etc/mysql/mariadb.conf.d/50-server.cnf
// 위 파일 수정

datadir = /data/mysql&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1672129758440&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;systemctl start mariadb
// 또는
systemctl start mysql

// [Warning] Can't create test file /home/mysql/beta.lower-test
위와 비슷한 오류와 함께 디비 서비스가 시작이 안된다면

/etc/systemd/system/mysql.service
// 파일에서 아래 부분 수정
ProtectHome=false

systemctl daemon-reload
// 데몬 서비스 리로드 후 mariadb 서비스 다시 시작
systemctl start mariadb&lt;/code&gt;&lt;/pre&gt;</description>
      <category>change data folder</category>
      <category>MariaDB</category>
      <category>MySQL</category>
      <category>저장폴더 변경</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/385</guid>
      <comments>https://khanorder.tistory.com/entry/MariaDB-change-db-data-directory#entry385comment</comments>
      <pubDate>Tue, 27 Dec 2022 17:30:03 +0900</pubDate>
    </item>
    <item>
      <title>[Express] session cookie가 생성되지 않는경우</title>
      <link>https://khanorder.tistory.com/entry/Express-can-not-set-session-cookie</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;[Express]&amp;nbsp;session&amp;nbsp;cookie가&amp;nbsp;생성되지&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;express session 설정 부분에서 쿠키에 도메인 명을 입력해주자.&lt;/p&gt;
&lt;pre id=&quot;code_1659079257757&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{
    .
    .
    cookie: {
        .
        .
        domain: 'your_domain_name.com'
        .
        .
    }
    .
    .
}&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;대부분의 nodejs 웹 앱의 경우 nginx나 apache와 같은 웹서버와 함께 리버스 프록시 서버로 서비스하게 된다.&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;pre id=&quot;code_1659079418505&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;app.set('trust proxy', true);&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Programming Framework/Express</category>
      <category>Cookie</category>
      <category>express</category>
      <category>nodejs</category>
      <category>Session</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/376</guid>
      <comments>https://khanorder.tistory.com/entry/Express-can-not-set-session-cookie#entry376comment</comments>
      <pubDate>Fri, 29 Jul 2022 16:36:55 +0900</pubDate>
    </item>
    <item>
      <title>[MariaDB] MariaDB can't create test file lower-test</title>
      <link>https://khanorder.tistory.com/entry/MariaDB-cant-create-test-file-lower-test</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;[MariaDB]&amp;nbsp;MariaDB&amp;nbsp;can't&amp;nbsp;create&amp;nbsp;test&amp;nbsp;file&amp;nbsp;lower-test&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;Linux에서 MariaDB를 설치한 후 데이터 저장 폴더 경로를 변경하는 과정에서 MariaDB can't create test file lower-test 라는 오류 메세지와 함께 MariaDB 서비스가 시작되지 않는 경우가 있다.&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;원인은 리눅스 서비스파일 설정에 home 폴더 경로에 대한 권한을 막는 기능이 MariaDB 서비스 파일에 추가되어있고, 필자의 경우 데이터 저장 경로를 home 폴더 하위의 폴더로 변경했기 때문에 이런 오류가 발생했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1659059317711&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vim /usr/lib/systemd/system/mariadb.service


# Prevent accessing /home, /root and /run/user
ProtectHome=false&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본 값은 true로 되어있을 것이다 false로 변경해주자.&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_1659061833033&quot; class=&quot;properties&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;systemctl daemon-reload
systemctl resart mariadb&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서비스 설정을 불러온 후 MariaDB 서비스를 재시작해주면 된다.&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;그런데 MariaDB 업데이트 시 같은 현상이 발생한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1659062000240&quot; class=&quot;vala&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;systemctl edit mariadb


# nano editor로 설정화면이 열린다.
# 아래 내용 추가 후 저장


[Service]
ProtectHome=false

# Ctrl + O, Alt + D, Ctrl + X


# 변경된 서비스을 설정 불러온다.
systemctl daemon-reload
&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;p.s. 위 설정은 두고 MariaDB 데이터 저장경로를 home 폴더 경로 이 외의 위치로 바꿔줘도 된다.&lt;/p&gt;</description>
      <category>Database/MariaDB | Mysql</category>
      <category>can't create test file lower-test</category>
      <category>data folder</category>
      <category>Home Folder</category>
      <category>MariaDB</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/375</guid>
      <comments>https://khanorder.tistory.com/entry/MariaDB-cant-create-test-file-lower-test#entry375comment</comments>
      <pubDate>Fri, 29 Jul 2022 10:50:48 +0900</pubDate>
    </item>
    <item>
      <title>[MariaDB|MySql] 이벤트 스케쥴러 설정</title>
      <link>https://khanorder.tistory.com/entry/MariaDB-MySql-event-scheduler</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;[MariaDB|MySql]&amp;nbsp;이벤트&amp;nbsp;스케쥴러&amp;nbsp;설정&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;my.cnf 또는 my.ini 파일에&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1657867394194&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;event_scheduler = ON&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;
&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;mariadb 또는 mysql 접속 후&lt;/p&gt;
&lt;pre id=&quot;code_1657867464975&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SHOW VARIABLES LIKE 'event%';&lt;/code&gt;&lt;/pre&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;event_scheduler&amp;nbsp; |&amp;nbsp; ON&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>Database/MariaDB | Mysql</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/373</guid>
      <comments>https://khanorder.tistory.com/entry/MariaDB-MySql-event-scheduler#entry373comment</comments>
      <pubDate>Fri, 15 Jul 2022 15:46:10 +0900</pubDate>
    </item>
    <item>
      <title>[API] 로또 당첨번호 조회</title>
      <link>https://khanorder.tistory.com/entry/won-lotto-numbers</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;API&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;a href=&quot;http://www.dhlottery.co.kr/common.do?method=getLottoNumber&amp;amp;drwNo=회차번호&quot;&gt;www.dhlottery.co.kr/common.do?method=getLottoNumber&amp;amp;drwNo=회차번호&amp;nbsp;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1648697534159&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{
    &quot;returnValue&quot;:&quot;success&quot;, // 요청결과
    &quot;drwNoDate&quot;:&quot;2004-10-30&quot;, // 날짜 
    &quot;totSellamnt&quot;:56561977000, // 총상금액 
    &quot;firstWinamnt&quot;:3315315525, // 1등 상금액 
    &quot;firstPrzwnerCo&quot;:4, // 1등 당첨인원 
    &quot;firstAccumamnt&quot;:0, 
    &quot;drwtNo1&quot;:1, // 로또번호 1 
    &quot;drwtNo2&quot;:7, // 로또번호 2 
    &quot;drwtNo3&quot;:11, // 로또번호 3 
    &quot;drwtNo4&quot;:23, // 로또번호 4 
    &quot;drwtNo5&quot;:37, // 로또번호 5 
    &quot;drwtNo6&quot;:42, // 로또번호 6 
    &quot;bnusNo&quot;:6, // 로또 보너스 번호 
    &quot;drwNo&quot;:100 // 로또회차
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Programming/API</category>
      <category>API</category>
      <category>lottery</category>
      <category>당첨번호</category>
      <category>로또</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/368</guid>
      <comments>https://khanorder.tistory.com/entry/won-lotto-numbers#entry368comment</comments>
      <pubDate>Thu, 31 Mar 2022 12:16:54 +0900</pubDate>
    </item>
    <item>
      <title>로또뽑기</title>
      <link>https://khanorder.tistory.com/entry/%EB%A1%9C%EB%98%90%EB%BD%91%EA%B8%B0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://libretool.com/hitLotto&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;https://libretool.com/hitLotto&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;opengraph&quot; data-og-title=&quot;Hit Lotto - LibreTool&quot; data-ke-align=&quot;alignCenter&quot; data-og-description=&quot;Hit Lotto - LibreTool, hit lotto, perfect lotto, it's rainy lotto, aim lotto number&quot; data-og-host=&quot;libretool.com&quot; data-og-source-url=&quot;https://libretool.com/hitLotto&quot; data-og-url=&quot;https://libretool.com/hitLotto&quot;&gt;
 &lt;a href=&quot;https://libretool.com/hitLotto&quot; target=&quot;_blank&quot; data-source-url=&quot;https://libretool.com/hitLotto&quot;&gt;
  &lt;div class=&quot;og-image&quot;&gt;&lt;/div&gt;
  &lt;div class=&quot;og-text&quot;&gt;
   &lt;p class=&quot;og-title&quot;&gt;Hit Lotto - LibreTool&lt;/p&gt;
   &lt;p class=&quot;og-desc&quot;&gt;Hit Lotto - LibreTool, hit lotto, perfect lotto, it's rainy lotto, aim lotto number&lt;/p&gt;
   &lt;p class=&quot;og-host&quot;&gt;libretool.com&lt;/p&gt;
  &lt;/div&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt;&lt;br&gt;요즘 회사 프로젝트중 next.js 기반으로 작업하고 있어서 공부할겸 겸사겸사 하나 만들어 봤습니다.&lt;br&gt;&lt;br&gt;좀 더 수정하고 추가할 기능이 많지만 시간 날 때마다 조금식 작업할 예정이에요.&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;2135&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ejx4bH/btrxKhWoZtw/S4cj1jFlYiwj8LQrzJn22K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ejx4bH/btrxKhWoZtw/S4cj1jFlYiwj8LQrzJn22K/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ejx4bH/btrxKhWoZtw/S4cj1jFlYiwj8LQrzJn22K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fejx4bH%2FbtrxKhWoZtw%2FS4cj1jFlYiwj8LQrzJn22K%2Fimg.jpg&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;1080&quot; height=&quot;2135&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;2135&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;</description>
      <category>Programming Framework/Next.js</category>
      <category>libretool</category>
      <category>Lotto</category>
      <category>Next.js</category>
      <category>랜덤로또</category>
      <category>로또</category>
      <category>로또1등</category>
      <category>번호뽑기</category>
      <category>번호샌성</category>
      <category>번호추천</category>
      <category>복권</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/366</guid>
      <comments>https://khanorder.tistory.com/entry/%EB%A1%9C%EB%98%90%EB%BD%91%EA%B8%B0#entry366comment</comments>
      <pubDate>Sun, 27 Mar 2022 00:40:50 +0900</pubDate>
    </item>
    <item>
      <title>[HTTPS] mkcert를 활용한 localhost 환경에서 SSL 설정</title>
      <link>https://khanorder.tistory.com/entry/HTTPS-mkcert-localhost-SSL-setting</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[HTTPS]&amp;nbsp;mkcert를&amp;nbsp;활용한&amp;nbsp;localhost&amp;nbsp;환경에서&amp;nbsp;SSL&amp;nbsp;설정&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;chocolatey 설치&lt;/p&gt;
&lt;pre id=&quot;code_1690615858659&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# Get-ExecutionPolicy 실행
$ Get-ExecutionPolicy

# Restricted라면 AllSigned나 Bypass로 설정
# ExcutionPolicy를 AllSigned로 설정
$ Set-ExecutionPolicy AllSigned

# ExcutionPolicy를 Bypass로 설정
$ Set-ExecutionPolicy Bypass -Scope Process

# 설치!
$ Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

# 확인
$ choco&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;mkcert 설치&lt;/p&gt;
&lt;pre id=&quot;code_1690615884759&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;choco install mkcert&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;
&lt;pre id=&quot;code_1690616013764&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;mkcert localhost domain2.localhost

Created a new certificate valid for the following names  
 - &quot;localhost&quot;
 - &quot;domain2.localhost&quot;
 
 The certificate is at &quot;./localhost+1.pem&quot; and the key at &quot;./localhost+1-key.pem&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;&lt;a href=&quot;https://pstudio411.tistory.com/entry/%EC%9D%B8%EC%A6%9D%EC%84%9C-%EB%B0%9C%EA%B8%89-%EB%B0%9B%EA%B8%B0-%EC%9C%84%ED%95%9C-mkcert&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://pstudio411.tistory.com/entry/%EC%9D%B8%EC%A6%9D%EC%84%9C-%EB%B0%9C%EA%B8%89-%EB%B0%9B%EA%B8%B0-%EC%9C%84%ED%95%9C-mkcert&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1644990049215&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;인증서 발급 받기 위한 mkcert&quot; data-og-description=&quot;mkcert 라는 프로그램으로 로컬 환경(내 컴퓨터) 에서 신뢰할 수 있는 인증서를 만들 수 있는 간단한 도구이다. CA(인증기관)의 인증서를 발급받아 자체적으로 관리하는 것은 복잡한 명령, 전문 지&quot; data-og-host=&quot;pstudio411.tistory.com&quot; data-og-source-url=&quot;https://pstudio411.tistory.com/entry/%EC%9D%B8%EC%A6%9D%EC%84%9C-%EB%B0%9C%EA%B8%89-%EB%B0%9B%EA%B8%B0-%EC%9C%84%ED%95%9C-mkcert&quot; data-og-url=&quot;https://pstudio411.tistory.com/entry/%EC%9D%B8%EC%A6%9D%EC%84%9C-%EB%B0%9C%EA%B8%89-%EB%B0%9B%EA%B8%B0-%EC%9C%84%ED%95%9C-mkcert&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/eC12es/hyNqzULrJo/szkLs7hMLRZVWl1PBXVaZ1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/9KGln/hyNqGGk4R1/ixxgdezKt7jNBEm7YmtfMk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/U6fi7/hyNqCKI7Yf/fBSBTIjNI6TsKauOrFCCQK/img.jpg?width=729&amp;amp;height=389&amp;amp;face=0_0_729_389&quot;&gt;&lt;a href=&quot;https://pstudio411.tistory.com/entry/%EC%9D%B8%EC%A6%9D%EC%84%9C-%EB%B0%9C%EA%B8%89-%EB%B0%9B%EA%B8%B0-%EC%9C%84%ED%95%9C-mkcert&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://pstudio411.tistory.com/entry/%EC%9D%B8%EC%A6%9D%EC%84%9C-%EB%B0%9C%EA%B8%89-%EB%B0%9B%EA%B8%B0-%EC%9C%84%ED%95%9C-mkcert&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/eC12es/hyNqzULrJo/szkLs7hMLRZVWl1PBXVaZ1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/9KGln/hyNqGGk4R1/ixxgdezKt7jNBEm7YmtfMk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/U6fi7/hyNqCKI7Yf/fBSBTIjNI6TsKauOrFCCQK/img.jpg?width=729&amp;amp;height=389&amp;amp;face=0_0_729_389');&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;인증서 발급 받기 위한 mkcert&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;mkcert 라는 프로그램으로 로컬 환경(내 컴퓨터) 에서 신뢰할 수 있는 인증서를 만들 수 있는 간단한 도구이다. CA(인증기관)의 인증서를 발급받아 자체적으로 관리하는 것은 복잡한 명령, 전문 지&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;pstudio411.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;&lt;a href=&quot;https://dev.to/everylearning/localhost-ssl-55oe&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://dev.to/everylearning/localhost-ssl-55oe&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1644990062910&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;localhost에 인증서(SSL) 설정하기&quot; data-og-description=&quot;로컬에서 개발을 진행할 때 SSL문제로 테스트에 문제가 되는 경우가 있습니다. 그래서 로컬에도 SSL을 적용할 수 있는 방법들이 추가되고 있습니다. ...&quot; data-og-host=&quot;dev.to&quot; data-og-source-url=&quot;https://dev.to/everylearning/localhost-ssl-55oe&quot; data-og-url=&quot;https://dev.to/everylearning/localhost-ssl-55oe&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bANi2d/hyNqueOKfH/QikFSIMrH8HNObgG934H0K/img.png?width=1128&amp;amp;height=600&amp;amp;face=0_0_1128_600&quot;&gt;&lt;a href=&quot;https://dev.to/everylearning/localhost-ssl-55oe&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://dev.to/everylearning/localhost-ssl-55oe&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bANi2d/hyNqueOKfH/QikFSIMrH8HNObgG934H0K/img.png?width=1128&amp;amp;height=600&amp;amp;face=0_0_1128_600');&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;localhost에 인증서(SSL) 설정하기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;로컬에서 개발을 진행할 때 SSL문제로 테스트에 문제가 되는 경우가 있습니다. 그래서 로컬에도 SSL을 적용할 수 있는 방법들이 추가되고 있습니다. ...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;dev.to&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;</description>
      <category>Server/HTTPS (SSL|TLS)</category>
      <category>choco</category>
      <category>chocolatey</category>
      <category>https</category>
      <category>localhost</category>
      <category>mkcert</category>
      <category>SSL</category>
      <category>tls</category>
      <category>Windows</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/354</guid>
      <comments>https://khanorder.tistory.com/entry/HTTPS-mkcert-localhost-SSL-setting#entry354comment</comments>
      <pubDate>Wed, 16 Feb 2022 14:43:11 +0900</pubDate>
    </item>
    <item>
      <title>[SQL Server] MSSQL CLI Backup</title>
      <link>https://khanorder.tistory.com/entry/SQL-Server-Linux-CLI-BackUp</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[SQL&amp;nbsp;Server]&amp;nbsp;MSSQL&amp;nbsp;CLI&amp;nbsp;Backup&lt;/b&gt;&lt;/h2&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;a href=&quot;https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-backup-and-restore-database?view=sql-server-ver15&quot;&gt;https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-backup-and-restore-database?view=sql-server-ver15&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1718692504775&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;Backup and restore SQL Server databases on Linux - SQL Server&quot; data-og-description=&quot;Learn how to backup and restore SQL Server databases on Linux. Also learn how to backup and restore with SQL Server Management Studio (SSMS).&quot; data-og-host=&quot;learn.microsoft.com&quot; data-og-source-url=&quot;https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-backup-and-restore-database?view=sql-server-ver15&quot; data-og-url=&quot;https://learn.microsoft.com/en-us/sql/linux/sql-server-linux-backup-and-restore-database?view=sql-server-ver16&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/Q2o2L/hyWlh57F33/tnX9xYAmX9xNNSeS0TDRek/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-backup-and-restore-database?view=sql-server-ver15&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-backup-and-restore-database?view=sql-server-ver15&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/Q2o2L/hyWlh57F33/tnX9xYAmX9xNNSeS0TDRek/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&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;Backup and restore SQL Server databases on Linux - SQL Server&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Learn how to backup and restore SQL Server databases on Linux. Also learn how to backup and restore with SQL Server Management Studio (SSMS).&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;learn.microsoft.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;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Linux backup sh 파일 설정&lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1718692080877&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;dateTimeString=$(date '+%Y-%m-%d_%H%M%S')
backupPath=/data/mssql/backup
if ! [ -d $backupPath ]
then
    mkdir -p &quot;${backupPath}&quot;
fi
dbName=
dbUser=
dbPassword=
backFile=${dbName}_${dateTimeString}.bak

/opt/mssql-tools18/bin/sqlcmd -S localhost -C -U ${dbUser} -P ${dbPassword} -Q &quot;BACKUP DATABASE [${dbName}] TO DISK = N'${backupPath}/${backFile}' WITH NOFORMAT, NOINIT, NAME = '${dbName}-full', SKIP, NOREWIND, NOUNLOAD, STATS = 10&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Windows backup bat 파일 설정&lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1718692299569&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;set hour=%time:~0,2%
if &quot;%hour:~0,1%&quot; == &quot; &quot; set hour=0%hour:~1,1%
set min=%time:~3,2%
if &quot;%min:~0,1%&quot; == &quot; &quot; set min=0%min:~1,1%
set secs=%time:~6,2%
if &quot;%secs:~0,1%&quot; == &quot; &quot; set secs=0%secs:~1,1%

::Korean
set year=%date:~0,4%
set month=%date:~5,2%
if &quot;%month:~0,1%&quot; == &quot; &quot; set month=0%month:~1,1%
set day=%date:~8,2%
if &quot;%day:~0,1%&quot; == &quot; &quot; set day=0%day:~1,1%

::English
::set year=%date:~-4%
::set month=%date:~4,2%
::if &quot;%month:~0,1%&quot; == &quot; &quot; set month=0%month:~1,1%
::set day=%date:~7,2%
::if &quot;%day:~0,1%&quot; == &quot; &quot; set day=0%day:~1,1%

set dbName=
set datetimstr=%year%%month%%day%_%hour%%min%%secs%
set backupdir=D:\Database\Backup
set filename=Backup_%dbName%_%datetimstr%.bak
set filepath=%backupdir%\%filename%
if not exist %backupdir% mkdir %backupdir%
sqlcmd -E -S &quot;127.0.0.1&quot; -Q &quot;backup database %dbName% to disk='%filepath%'&quot;&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Database/MS SQL Server</category>
      <category>backup</category>
      <category>backup db</category>
      <category>cli</category>
      <category>Linux</category>
      <category>mssql-server</category>
      <category>sql-server</category>
      <category>sqlcmd</category>
      <category>Windows</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/332</guid>
      <comments>https://khanorder.tistory.com/entry/SQL-Server-Linux-CLI-BackUp#entry332comment</comments>
      <pubDate>Tue, 24 Aug 2021 16:11:24 +0900</pubDate>
    </item>
    <item>
      <title>[App] 윈도우즈용 파일/폴더 검색 프로그램 Everything</title>
      <link>https://khanorder.tistory.com/entry/App-%EC%9C%88%EB%8F%84%EC%9A%B0%EC%A6%88%EC%9A%A9-%ED%8C%8C%EC%9D%BC%ED%8F%B4%EB%8D%94-%EA%B2%80%EC%83%89-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8-Everything</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;a href=&quot;https://www.voidtools.com/ko-kr/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[App]&amp;nbsp;윈도우즈용&amp;nbsp;파일/폴더&amp;nbsp;검색&amp;nbsp;프로그램&amp;nbsp;Everything&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;Everything.Search.Window.png&quot; data-origin-width=&quot;659&quot; data-origin-height=&quot;564&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d1VIg1/btqDoUuKCFv/PxWeOVJsgaWpL5hVonxnZK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d1VIg1/btqDoUuKCFv/PxWeOVJsgaWpL5hVonxnZK/img.png&quot; data-alt=&quot;윈도우즈용&amp;amp;amp;nbsp;파일/폴더&amp;amp;amp;nbsp;검색&amp;amp;amp;nbsp;프로그램&amp;amp;amp;nbsp;Everything&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d1VIg1/btqDoUuKCFv/PxWeOVJsgaWpL5hVonxnZK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd1VIg1%2FbtqDoUuKCFv%2FPxWeOVJsgaWpL5hVonxnZK%2Fimg.png&quot; data-filename=&quot;Everything.Search.Window.png&quot; data-origin-width=&quot;659&quot; data-origin-height=&quot;564&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;윈도우즈용&amp;nbsp;파일/폴더&amp;nbsp;검색&amp;nbsp;프로그램&amp;nbsp;Everything&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;얼마나 좋은지 써보면 뙇&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.voidtools.com/ko-kr/&quot;&gt;https://www.voidtools.com/ko-kr/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1583815698685&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;voidtools&quot; data-og-description=&quot;Everything 실시간 파일/폴더 검색 작은 설치파일 깔끔하고 단순한 UI 빠른 파일 색인 빠른 검색 최저 자원 사용 쉬운 파일 공유 실시간 갱신 등등... Everything 1.4.1.965 다운로드 32비트 설치파일 64비트 설치파일 32비트 휴대용 압축파일 64비트 휴대용 압축파일 변경 이력새 기능구버전라이선스SHA256지원 언어도움말&quot; data-og-host=&quot;www.voidtools.com&quot; data-og-source-url=&quot;https://www.voidtools.com/ko-kr/&quot; data-og-url=&quot;https://www.voidtools.com/ko-kr/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.voidtools.com/ko-kr/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.voidtools.com/ko-kr/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;voidtools&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;Everything 실시간 파일/폴더 검색 작은 설치파일 깔끔하고 단순한 UI 빠른 파일 색인 빠른 검색 최저 자원 사용 쉬운 파일 공유 실시간 갱신 등등... Everything 1.4.1.965 다운로드 32비트 설치파일 64비트 설치파일 32비트 휴대용 압축파일 64비트 휴대용 압축파일 변경 이력새 기능구버전라이선스SHA256지원 언어도움말&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.voidtools.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>유용한 프로그램(Utilities)</category>
      <category>Everything</category>
      <category>search engine</category>
      <category>고속검색</category>
      <category>광속검색</category>
      <category>빠른검색</category>
      <category>에브리딩</category>
      <category>파일/폴더 검색</category>
      <category>파일검색</category>
      <category>폴더검색</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/222</guid>
      <comments>https://khanorder.tistory.com/entry/App-%EC%9C%88%EB%8F%84%EC%9A%B0%EC%A6%88%EC%9A%A9-%ED%8C%8C%EC%9D%BC%ED%8F%B4%EB%8D%94-%EA%B2%80%EC%83%89-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8-Everything#entry222comment</comments>
      <pubDate>Tue, 10 Mar 2020 13:50:38 +0900</pubDate>
    </item>
    <item>
      <title>[Search] 티스토리 구글 검색 Sitemap 색인 등록</title>
      <link>https://khanorder.tistory.com/entry/Tistory-Sitemap-Google-Search-Console</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot;&gt;티스토리&amp;nbsp;구글&amp;nbsp;검색&amp;nbsp;Sitemap&amp;nbsp;색인&amp;nbsp;등록&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;sitemap.png&quot; data-origin-width=&quot;730&quot; data-origin-height=&quot;412&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AHXpu/btqxEjNHoum/swceEbu6wbYeKjkZypBSs1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AHXpu/btqxEjNHoum/swceEbu6wbYeKjkZypBSs1/img.png&quot; data-alt=&quot;사이트맵(Sitemap)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AHXpu/btqxEjNHoum/swceEbu6wbYeKjkZypBSs1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAHXpu%2FbtqxEjNHoum%2FswceEbu6wbYeKjkZypBSs1%2Fimg.png&quot; data-filename=&quot;sitemap.png&quot; data-origin-width=&quot;730&quot; data-origin-height=&quot;412&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;사이트맵(Sitemap)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;이 글 앞에 티스토리 블로그를 구글 웹마스터에 연동하는 설명을 했습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://khanorder.tistory.com/entry/Google-Search-console-SEO&quot;&gt;https://khanorder.tistory.com/entry/Google-Search-console-SEO&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1566306101364&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot;&gt;&lt;a href=&quot;http://baejangho.com/entry/Google-Search-console-SEO&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-original-url=&quot;https://khanorder.tistory.com/entry/Google-Search-console-SEO&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/chPOqa/hyCw2ldJ1M/b65kviFVzKDQ0C5XbMTkp1/img.png?width=792&amp;amp;height=509&amp;amp;face=0_0_792_509,https://scrap.kakaocdn.net/dn/bC4VrC/hyCvjvlyWy/rvuMYnWGWrRuUkMND0UIck/img.png?width=747&amp;amp;height=319&amp;amp;face=0_0_747_319,https://scrap.kakaocdn.net/dn/dkuIaT/hyCxaDxZtX/TavKbR71xvYkq5N6IxYMAK/img.png?width=776&amp;amp;height=255&amp;amp;face=0_0_776_255');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;[Search] 티스토리 구글 검색 등록(Google Search console)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;티스토리 구글 검색 등록 구글 웹마스터 도구(Google Search Console) 검색 최적화 블로그나 웨사이트를 구글 검색엔진에 최적화해서, 구글 검색에 보다 잘 노출되게 해주는 서비스이다. 그렇습니다. Search cons..&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;baejangho.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;위 글에 이어서 블로그나 홈페이지의 페이지 정보를 담은 &lt;b&gt;사이트맵 XML 파일을 생성&lt;/b&gt;하고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;구글 웹마스터 도구에 등록해서 여러분 &lt;b&gt;블로그의 게시물이 구글 검색에 좀 더 잘 노출되도록&lt;/b&gt; 해보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;사이트맵 파일은 &lt;a href=&quot;http://www.web-site-map.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;b&gt;XML Sitemap Generator&lt;/b&gt;&lt;/a&gt; 사이트를 통해서 생성합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;유/무료 사이트맵 생성 사이트들이 많지만 그 중에 저는&amp;nbsp;&lt;b&gt;&lt;a href=&quot;http://www.web-site-map.com/&quot;&gt;http://www.web-site-map.com/&lt;/a&gt;&lt;/b&gt;&amp;nbsp;이곳을 이용합니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;먹통은 사이트도 있고 생성해주는 페이지를 많이 제한하는 사이트도 있지만&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;개인적 경험으로는 무료 사이트 중 여기가 가장 안정적이었습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;811&quot; data-origin-height=&quot;572&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bj4NHu/btqJpiquwAE/BKJROEsKFSYD7Tjkf6jO2K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bj4NHu/btqJpiquwAE/BKJROEsKFSYD7Tjkf6jO2K/img.png&quot; data-alt=&quot;http://web-site-map.com&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bj4NHu/btqJpiquwAE/BKJROEsKFSYD7Tjkf6jO2K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbj4NHu%2FbtqJpiquwAE%2FBKJROEsKFSYD7Tjkf6jO2K%2Fimg.png&quot; data-origin-width=&quot;811&quot; data-origin-height=&quot;572&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;http://web-site-map.com&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;링크를 따라 이동하셔서 이런 화면이 나오면 사이트맵을 생성할 블로그 혹은 홈페이지 주소를&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;위 이미지 붉은줄로 표시한 부분 적어줍니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;그리고 &lt;b&gt;'Get free XML Sitemap'&lt;/b&gt; 버튼을 눌러서 사이트맵 생성을 시작합니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;631&quot; data-origin-height=&quot;829&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5WoWV/btqJphE77Bg/9jTfpYY8rGatOJ3kaVEEvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5WoWV/btqJphE77Bg/9jTfpYY8rGatOJ3kaVEEvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5WoWV/btqJphE77Bg/9jTfpYY8rGatOJ3kaVEEvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5WoWV%2FbtqJphE77Bg%2F9jTfpYY8rGatOJ3kaVEEvK%2Fimg.png&quot; data-origin-width=&quot;631&quot; data-origin-height=&quot;829&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;사이트맵 생성 설정화면입니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;b&gt;Page changing frequency&lt;/b&gt;는 &lt;b&gt;Always&lt;/b&gt;로 설정해주시고, 캡챠 코드 입력하신 후&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;b&gt;'Create free XML Sitemap'&lt;/b&gt; 버튼 클릭하시면 사이트맵 &lt;b&gt;XML파일 생성&lt;/b&gt;이 시작됩니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;625&quot; data-origin-height=&quot;310&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqjFMX/btqJxadqV09/YuUUYIpurDwBt4bW9eySPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqjFMX/btqJxadqV09/YuUUYIpurDwBt4bW9eySPk/img.png&quot; data-alt=&quot;사이트맵 생성중&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqjFMX/btqJxadqV09/YuUUYIpurDwBt4bW9eySPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqjFMX%2FbtqJxadqV09%2FYuUUYIpurDwBt4bW9eySPk%2Fimg.png&quot; data-origin-width=&quot;625&quot; data-origin-height=&quot;310&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;사이트맵 생성중&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;사이트맵을 생성하는데 시간이 조금 걸립니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;컴퓨터가 꺼지거나 절전모드로 들어가지 않게하고 기다립니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;사이트맵 XML파일 생성이 완료되면 다운로드 받습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;파일 이름은 상관없습니다. xml 확장자만 유지해줍니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;구글 웹마스터 도구를 포함한 검색엔진 등록관리 도구들은&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;검색등록한 해당 사이트 주소경로의 XML파일만 사이트맵 파일로 등록할 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;제 블로그의 경우 &lt;a href=&quot;http://khanorder.tistory.com/sitemap.xml&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;http://khanorder.tistory.com/sitemap.xml&lt;/a&gt;&amp;nbsp;와 같은 형식의 주소여야 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;그런데 티스토리 블로그는 위의 예시와 같이 내가 원하는 이름의 .xml 경로 페이지를 만들 수 없습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;그래서 편법적으로 &lt;b&gt;게시물 첨부파일로 사이트맵 XML을 등록&lt;/b&gt;한 후&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;첨부파일 주소를 사이트맵 주소로 사용&lt;/b&gt;하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;그런데 최근에 티스토리 글작성 에디터가 업데이트 되었습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;새 에디터에서 등록된 첨부파일은&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;블로그와 다른 주소 경로를 사용고있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;그래서 &lt;b&gt;구 에디터에서 글을 작성하고 첨부파일 등록&lt;/b&gt;을 해줘야합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;우선 &lt;b&gt;에디터 설정을 구 에디터로 변경&lt;/b&gt;하겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1161&quot; data-origin-height=&quot;592&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kL62x/btqJlt7pAP5/jcUAb7CUcvzQj0VH3dEPyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kL62x/btqJlt7pAP5/jcUAb7CUcvzQj0VH3dEPyk/img.png&quot; data-alt=&quot;티스토리 구 에디터 사용설정&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kL62x/btqJlt7pAP5/jcUAb7CUcvzQj0VH3dEPyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkL62x%2FbtqJlt7pAP5%2FjcUAb7CUcvzQj0VH3dEPyk%2Fimg.png&quot; data-origin-width=&quot;1161&quot; data-origin-height=&quot;592&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;티스토리 구 에디터 사용설정&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;에디터 설정을 했다면 이제 글쓰기 화면으로 갑니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;사이트 맵 파일만 사용하면 되기 때문에 게시글 이름은 어떻게 하든 상관없습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;279&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GkKjC/btqxECGfYKO/YK4WCkeMSAu4wkEHA3XR6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GkKjC/btqxECGfYKO/YK4WCkeMSAu4wkEHA3XR6k/img.png&quot; data-alt=&quot;티스토리 구 에디터에서 파일 등록 버튼을 클릭&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GkKjC/btqxECGfYKO/YK4WCkeMSAu4wkEHA3XR6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGkKjC%2FbtqxECGfYKO%2FYK4WCkeMSAu4wkEHA3XR6k%2Fimg.png&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;279&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;티스토리 구 에디터에서 파일 등록 버튼을 클릭&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;에디터 상단 메뉴에 파일 등록 버튼을 클릭하면 파일 등록 팝업창이 나옵니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;Drag &amp;amp; Drop해도 되고 파일 선택상자 열어서 검색해서 파일을 선택해도 됩니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;452&quot; data-origin-height=&quot;572&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b512Yv/btqxCPtkMUX/gW1A62MEKuDp5GJiuInlN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b512Yv/btqxCPtkMUX/gW1A62MEKuDp5GJiuInlN1/img.png&quot; data-alt=&quot;파일등록 팝업&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b512Yv/btqxCPtkMUX/gW1A62MEKuDp5GJiuInlN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb512Yv%2FbtqxCPtkMUX%2FgW1A62MEKuDp5GJiuInlN1%2Fimg.png&quot; data-origin-width=&quot;452&quot; data-origin-height=&quot;572&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;파일등록 팝업&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;570&quot; data-origin-height=&quot;212&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MKFqS/btqxBQlR9Jn/aOxCd7vnbCYeoqkLws2SWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MKFqS/btqxBQlR9Jn/aOxCd7vnbCYeoqkLws2SWk/img.png&quot; data-alt=&quot;사이트맵 파일 첨부파일로 등록&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MKFqS/btqxBQlR9Jn/aOxCd7vnbCYeoqkLws2SWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMKFqS%2FbtqxBQlR9Jn%2FaOxCd7vnbCYeoqkLws2SWk%2Fimg.png&quot; data-origin-width=&quot;570&quot; data-origin-height=&quot;212&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;사이트맵 파일 첨부파일로 등록&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;593&quot; data-origin-height=&quot;268&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgIGbV/btqxAc3M2pB/LagOPU4gsjOFiaYFsbGff1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgIGbV/btqxAc3M2pB/LagOPU4gsjOFiaYFsbGff1/img.png&quot; data-alt=&quot;티스토리 구 에디터 우측상단 비공개 선택&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgIGbV/btqxAc3M2pB/LagOPU4gsjOFiaYFsbGff1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgIGbV%2FbtqxAc3M2pB%2FLagOPU4gsjOFiaYFsbGff1%2Fimg.png&quot; data-origin-width=&quot;593&quot; data-origin-height=&quot;268&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;티스토리 구 에디터 우측상단 비공개 선택&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;내용에 의미가있는 글은 아니므로 비공개로 저장하겠습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;440&quot; data-origin-height=&quot;345&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/21st4/btqxEPejjwy/i2ln4UzuX7tzUJKBf9Cq30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/21st4/btqxEPejjwy/i2ln4UzuX7tzUJKBf9Cq30/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/21st4/btqxEPejjwy/i2ln4UzuX7tzUJKBf9Cq30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F21st4%2FbtqxEPejjwy%2Fi2ln4UzuX7tzUJKBf9Cq30%2Fimg.png&quot; data-origin-width=&quot;440&quot; data-origin-height=&quot;345&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;저장 확인 팝업이 나오면 '저장' 버튼을 클릭합니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;428&quot; data-origin-height=&quot;615&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dMtMZ1/btqxDuhRrvY/ZALbIG6HkubORWltEfwQyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dMtMZ1/btqxDuhRrvY/ZALbIG6HkubORWltEfwQyk/img.png&quot; data-alt=&quot;등록한 사이트맵 파일 주소 복사&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dMtMZ1/btqxDuhRrvY/ZALbIG6HkubORWltEfwQyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdMtMZ1%2FbtqxDuhRrvY%2FZALbIG6HkubORWltEfwQyk%2Fimg.png&quot; data-origin-width=&quot;428&quot; data-origin-height=&quot;615&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;등록한 사이트맵 파일 주소 복사&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;방금 등록한 &lt;b&gt;사이트맵 게시물 페이지에서 첨부파일 링크를 '우클릭' 팝업 메뉴에서 '링크 주소 복사' 를 클릭&lt;/b&gt;해서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;등록한 사이트맵 파일의 주소를 복사합니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;그러면&amp;nbsp;&lt;/span&gt;http://khanorder.tistory.com/attachment/cfile22.uf@991388465D5BFCFA12992E.xml&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;이런 형태의 블로그 주소로 시작되는 첨부파일 주소경로를 사용할 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;이제 이 주소를 구글 웹마스터 도구 사이트맵 목록에 등록하면 됩니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1182&quot; data-origin-height=&quot;666&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/S5j0c/btqxDuIXJJP/rFwoF3h6mKYb4SmHb1woqK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/S5j0c/btqxDuIXJJP/rFwoF3h6mKYb4SmHb1woqK/img.png&quot; data-alt=&quot;구글 웹마스터 도구 사이트맵 등록 화면&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/S5j0c/btqxDuIXJJP/rFwoF3h6mKYb4SmHb1woqK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FS5j0c%2FbtqxDuIXJJP%2FrFwoF3h6mKYb4SmHb1woqK%2Fimg.png&quot; data-origin-width=&quot;1182&quot; data-origin-height=&quot;666&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;구글 웹마스터 도구 사이트맵 등록 화면&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;위 그림은 저의 구글 웹마스터 도구에 사이트맵 등록화면입니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;저는 이미 등록한 사이트맵들이 있어서 목록에 몇개의 사이트맵 주소가 있습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;복사한 주소에서 앞 부분 블로그 주소만 지우고 나머지 경로만 입력하신 후 제출하면 됩니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center; font-size: 1.12em;&quot;&gt;&lt;b&gt;이제 여러분의 블로그가 구글 검색에서 보다 돋보일 거에요!&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;이상 구글 웹 마스터 도구에 사이트맵 XML 파일 등록에 대한 설명이었습니다.&lt;/p&gt;</description>
      <category>Blog | Search</category>
      <category>sitemap xml generator</category>
      <category>sitemap.xml</category>
      <category>tistory google sitemap</category>
      <category>Tistory Sitemap</category>
      <category>사이트맵 XML</category>
      <category>사이트맵 xml 생성</category>
      <category>티스토리 구글 검색 sitemap 등록</category>
      <category>티스토리 사이트맵 등록</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/168</guid>
      <comments>https://khanorder.tistory.com/entry/Tistory-Sitemap-Google-Search-Console#entry168comment</comments>
      <pubDate>Tue, 20 Aug 2019 23:31:52 +0900</pubDate>
    </item>
    <item>
      <title>[Search] 티스토리 구글 검색 등록(Google Search console)</title>
      <link>https://khanorder.tistory.com/entry/Google-Search-console-SEO</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot;&gt;티스토리&amp;nbsp;구글&amp;nbsp;검색&amp;nbsp;등록&lt;/h2&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;구글 웹마스터 도구(Google Search Console) 검색 최적화&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;블로그나 웨사이트를 구글 검색엔진에 최적화해서, 구글 검색에 보다 잘 노출되게 해주는 서비스이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;776&quot; data-origin-height=&quot;255&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nXGZF/btqxB7thTu1/pr9WaeXCr3URw9cDDFoEVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nXGZF/btqxB7thTu1/pr9WaeXCr3URw9cDDFoEVK/img.png&quot; data-alt=&quot;구글 웹마스터 도구&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nXGZF/btqxB7thTu1/pr9WaeXCr3URw9cDDFoEVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnXGZF%2FbtqxB7thTu1%2Fpr9WaeXCr3URw9cDDFoEVK%2Fimg.png&quot; data-origin-width=&quot;776&quot; data-origin-height=&quot;255&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;구글 웹마스터 도구&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;그렇습니다.&lt;b&gt; Search console은 구글신의 검색결과에 더 돋보이게 해준다&lt;/b&gt;고 합니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;그럼 여러분 블로그를 구글 검색에서 돋보이게 해봅시다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;위 검색 링크를 클릭해서 이동하면 이런 화면이 나옵니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1129&quot; data-origin-height=&quot;845&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dNMWK7/btqxBPGljTu/H9k9HmZ59GrtynpadszpD1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dNMWK7/btqxBPGljTu/H9k9HmZ59GrtynpadszpD1/img.png&quot; data-alt=&quot;구글 웹 마스터 도구(Google Search Console) 메인화면&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dNMWK7/btqxBPGljTu/H9k9HmZ59GrtynpadszpD1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdNMWK7%2FbtqxBPGljTu%2FH9k9HmZ59GrtynpadszpD1%2Fimg.png&quot; data-origin-width=&quot;1129&quot; data-origin-height=&quot;845&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;구글 웹 마스터 도구(Google Search Console) 메인화면&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;시작하기를 눌러 넘어 가겠습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;465&quot; data-origin-height=&quot;562&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/F7pn2/btqxC68tu72/vHjrXQ95fbuKCVRmc3LRR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/F7pn2/btqxC68tu72/vHjrXQ95fbuKCVRmc3LRR1/img.png&quot; data-alt=&quot;구글 계정으로 로그인&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/F7pn2/btqxC68tu72/vHjrXQ95fbuKCVRmc3LRR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FF7pn2%2FbtqxC68tu72%2FvHjrXQ95fbuKCVRmc3LRR1%2Fimg.png&quot; data-origin-width=&quot;465&quot; data-origin-height=&quot;562&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;구글 계정으로 로그인&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;구글 계정으로 로그인이 안되어 있으면 로그인 화면이 나옵니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;계정이 없으시면 만들어서 로그인 해주시구요.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;783&quot; data-origin-height=&quot;731&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbT3Tv/btqxC6ACcJX/RtJemzWuwK9LGVKy5h7heK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbT3Tv/btqxC6ACcJX/RtJemzWuwK9LGVKy5h7heK/img.png&quot; data-alt=&quot;Google Search Console 시작화면&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbT3Tv/btqxC6ACcJX/RtJemzWuwK9LGVKy5h7heK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbT3Tv%2FbtqxC6ACcJX%2FRtJemzWuwK9LGVKy5h7heK%2Fimg.png&quot; data-origin-width=&quot;783&quot; data-origin-height=&quot;731&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;Google Search Console 시작화면&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;이제 시작화면입니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;우측을 &lt;b&gt;URL 입력상자에 블로그 주소를 적어주세요.&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;좌측은 설명처럼&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;도메인 기준으로 모든 하위 도메인 사이트를 검색 최적화 등록하는 메뉴입니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;이 포스팅에선 생략하고, 단일 URL 기준으로 등록하는 방법을 설명하겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;주소를 입력하고 '계속' 버튼을 클릭하시면&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;784&quot; data-origin-height=&quot;249&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OAV7T/btqxytD27GF/imvzL5kjKYXi0ZA1OIxG00/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OAV7T/btqxytD27GF/imvzL5kjKYXi0ZA1OIxG00/img.png&quot; data-alt=&quot;인증 확인 중...&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OAV7T/btqxytD27GF/imvzL5kjKYXi0ZA1OIxG00/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOAV7T%2FbtqxytD27GF%2FimvzL5kjKYXi0ZA1OIxG00%2Fimg.png&quot; data-origin-width=&quot;784&quot; data-origin-height=&quot;249&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;인증 확인 중...&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;정상적은 주소인지 확인합니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;그러면 다시 홈페이지에 소유권을 확인하는 화면이 나옵니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;661&quot; data-origin-height=&quot;1179&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lq0OB/btqxCP0cmnV/09MDbblNKKS6343EMcTxFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lq0OB/btqxCP0cmnV/09MDbblNKKS6343EMcTxFk/img.png&quot; data-alt=&quot;소유권 확인, HTML 태그방식을 사용합니다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lq0OB/btqxCP0cmnV/09MDbblNKKS6343EMcTxFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flq0OB%2FbtqxCP0cmnV%2F09MDbblNKKS6343EMcTxFk%2Fimg.png&quot; data-origin-width=&quot;661&quot; data-origin-height=&quot;1179&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;소유권 확인, HTML 태그방식을 사용합니다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;인증코드가 담긴 HTML 파일, HTML 태그, 이미 등록된 Google 애널리틱스 계정 등 여러가지 방법으로 인증가능합니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;저는 &lt;b&gt;HTML 태그 방식으로 메타 태그를 추가해서 소유권 확인을 진행&lt;/b&gt;하겠습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;위 그림에 &lt;b&gt;빨간색 네모 상자로 표시한 부분의 HTML &amp;lt;meta ... ... ... /&amp;gt; 태그를 복사&lt;/b&gt;합니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;이제 여러분의 블로그 관리자 화면으로 갑니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;좌측 메뉴 중에서 &lt;b&gt;'스킨편집'&lt;/b&gt;을 클릭합니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;225&quot; data-origin-height=&quot;864&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bppxT1/btqxyhKCpfT/jJe4JKGAjkCo5XtzWmEkH1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bppxT1/btqxyhKCpfT/jJe4JKGAjkCo5XtzWmEkH1/img.png&quot; data-alt=&quot;좌측메뉴 &amp;amp;amp;gt; 꾸미기 &amp;amp;amp;gt; 스킨편집&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bppxT1/btqxyhKCpfT/jJe4JKGAjkCo5XtzWmEkH1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbppxT1%2FbtqxyhKCpfT%2FjJe4JKGAjkCo5XtzWmEkH1%2Fimg.png&quot; data-origin-width=&quot;225&quot; data-origin-height=&quot;864&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;좌측메뉴 &amp;gt; 꾸미기 &amp;gt; 스킨편집&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;스킨 편집 화면이 새창 또는 새탭으로 열리면, 우측 스킨편집 부분에서 &lt;b&gt;'HTML 편집'&lt;/b&gt;을 클릭합니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1249&quot; data-origin-height=&quot;631&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ngu4P/btqxB7GMBmx/jlmZLrUEnKQKGCcDzMNS10/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ngu4P/btqxB7GMBmx/jlmZLrUEnKQKGCcDzMNS10/img.png&quot; data-alt=&quot;티스트로 스킨 편집 화면&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ngu4P/btqxB7GMBmx/jlmZLrUEnKQKGCcDzMNS10/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNgu4P%2FbtqxB7GMBmx%2FjlmZLrUEnKQKGCcDzMNS10%2Fimg.png&quot; data-origin-width=&quot;1249&quot; data-origin-height=&quot;631&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;티스트로 스킨 편집 화면&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;그러면 스킨 편집창 오른쪽 영역이 HTML 편집기로 바뀝니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;HTML 코드가 나오는데 &amp;lt;head&amp;gt;태그 아래 &amp;lt;/head&amp;gt; 태그 위의 영역 중&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;다른 태그(&amp;lt;&amp;gt;&amp;lt;/&amp;gt; 형태)와 겹치지 않는 적당한 위치에 좀 전에 복사해온 소유권 확인 &amp;lt;meta&amp;gt; 태그를 붙여넣어줍니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;HTML을 잘 몰르시는 분들은 아래 사진처럼&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&amp;lt;meta name=&quot;viewport&quot; ... ... maximum-scale=1.0&quot; /&amp;gt; 태그 다음 줄에 붙여넣기&lt;/b&gt; 해줍니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;747&quot; data-origin-height=&quot;319&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QvpAg/btqxygros7K/OUKDLib8Z8dJkOwjOqBXjk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QvpAg/btqxygros7K/OUKDLib8Z8dJkOwjOqBXjk/img.png&quot; data-alt=&quot;HTML 편집기에서 복사해온 소유권 확인 meta 태그 복사 붙여넣기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QvpAg/btqxygros7K/OUKDLib8Z8dJkOwjOqBXjk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQvpAg%2Fbtqxygros7K%2FOUKDLib8Z8dJkOwjOqBXjk%2Fimg.png&quot; data-origin-width=&quot;747&quot; data-origin-height=&quot;319&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;HTML 편집기에서 복사해온 소유권 확인 meta 태그 복사 붙여넣기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;그리고 까먹지 말고 &lt;b&gt;'적용'&lt;/b&gt; 버튼을 클릭해줍시다. 단축키 &lt;b&gt;Ctrl + S&lt;/b&gt;로도 적용할 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;488&quot; data-origin-height=&quot;286&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6PEKi/btqxC6HnihX/FX1xxAq4OAUxEuQblabbC1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6PEKi/btqxC6HnihX/FX1xxAq4OAUxEuQblabbC1/img.png&quot; data-alt=&quot;HTML을 수정했으면 적용해줍니다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6PEKi/btqxC6HnihX/FX1xxAq4OAUxEuQblabbC1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6PEKi%2FbtqxC6HnihX%2FFX1xxAq4OAUxEuQblabbC1%2Fimg.png&quot; data-origin-width=&quot;488&quot; data-origin-height=&quot;286&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;HTML을 수정했으면 적용해줍니다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;이제 태그를 복사해온 화면으로 다시 돌아가서 &lt;b&gt;'확인'&lt;/b&gt; 버튼을 클릭해줍니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;612&quot; data-origin-height=&quot;408&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bO1mcC/btqxC52OFED/IohWkW0IM3UDaxzbDph6s0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bO1mcC/btqxC52OFED/IohWkW0IM3UDaxzbDph6s0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bO1mcC/btqxC52OFED/IohWkW0IM3UDaxzbDph6s0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbO1mcC%2FbtqxC52OFED%2FIohWkW0IM3UDaxzbDph6s0%2Fimg.png&quot; data-origin-width=&quot;612&quot; data-origin-height=&quot;408&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;677&quot; data-origin-height=&quot;325&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dvSwlN/btqxytD3Liv/dGZJ7mn2LbniLIcCN8Kdtk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dvSwlN/btqxytD3Liv/dGZJ7mn2LbniLIcCN8Kdtk/img.png&quot; data-alt=&quot;소유권 확인 완료&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dvSwlN/btqxytD3Liv/dGZJ7mn2LbniLIcCN8Kdtk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdvSwlN%2FbtqxytD3Liv%2FdGZJ7mn2LbniLIcCN8Kdtk%2Fimg.png&quot; data-origin-width=&quot;677&quot; data-origin-height=&quot;325&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;소유권 확인 완료&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;이제 소유권이 확인됐습니다. &lt;b&gt;'속성으로 이동'&lt;/b&gt; 버튼을 클릭하면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;방금 등록한 &lt;b&gt;사이트의 '개요' 화면&lt;/b&gt;으로 넘어갑니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;792&quot; data-origin-height=&quot;509&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tSx3J/btqxCPeP3tl/IZK3eiEtmGmm8u3BEDqih0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tSx3J/btqxCPeP3tl/IZK3eiEtmGmm8u3BEDqih0/img.png&quot; data-alt=&quot;Google Search Console&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tSx3J/btqxCPeP3tl/IZK3eiEtmGmm8u3BEDqih0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtSx3J%2FbtqxCPeP3tl%2FIZK3eiEtmGmm8u3BEDqih0%2Fimg.png&quot; data-origin-width=&quot;792&quot; data-origin-height=&quot;509&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;Google Search Console&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;'개요' 화면으로 오시면 검색 결과, 클릭 수, 유효 페이지, 등 다양한 정보를 보실 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;다음은 구글 검색에 잘 노출되게 하기위해 여러분의 &lt;b&gt;사이트(블로그)의 정보를 구글 검색에 '색인'&lt;/b&gt; 해줘야합니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;그러려면 여러분들이 &lt;b&gt;블로그에 작성한 글, 구성한 페이지들의 정보가 담긴 sitemap XML 파일&lt;/b&gt;을&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;위 그림의 &lt;b&gt;'Sitemaps' 메뉴에서 등록&lt;/b&gt;하면 &lt;b&gt;구글 검색에 '색인'&lt;/b&gt;됩니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;sitemap XML 파일 생성과 등록 방법은 이어지는 포스팅에서 설명하겠습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://baejangho.com/entry/Tistory-Sitemap-Google-Search-Console&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;티스토리 블로그 사이트맵 구글 검색 등록&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://baejangho.com/entry/Tistory-Sitemap-Google-Search-Console&quot;&gt;http://baejangho.com/entry/Tistory-Sitemap-Google-Search-Console&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1566311649232&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot;&gt;&lt;a href=&quot;http://baejangho.com/entry/Tistory-Sitemap-Google-Search-Console&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-original-url=&quot;http://baejangho.com/entry/Tistory-Sitemap-Google-Search-Console&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bd7NoK/hyCw2MkHE6/O4YcKfnMGBHsWGrBKd5TO0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/cdctgI/hyCvlGKxDQ/IHgTEVeYXVjOV8mrJlCRj0/img.png?width=1161&amp;amp;height=592&amp;amp;face=0_0_1161_592,https://scrap.kakaocdn.net/dn/wbImJ/hyCw5bdWm1/sAbeDYNDFeSIKf1N7lDjqK/img.png?width=811&amp;amp;height=572&amp;amp;face=0_0_811_572');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;[Search] 티스토리 구글 검색 Sitemap 색인 등록&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;티스토리 구글 검색 Sitemap 색인 등록 이 글 앞에 티스토리 블로그를 구글 웹마스터에 연동하는 설명을 했습니다. https://khanorder.tistory.com/entry/Google-Search-console-SEO [Search] 티스토리 구글 검색..&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;baejangho.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Blog | Search</category>
      <category>Google search console</category>
      <category>Google Search Optimiztion</category>
      <category>Google Web Master Tool</category>
      <category>Search engine optimization</category>
      <category>SOE</category>
      <category>구글 검색 최적화</category>
      <category>구글 서치 콘솔</category>
      <category>구글 웹 마스터 도구</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/165</guid>
      <comments>https://khanorder.tistory.com/entry/Google-Search-console-SEO#entry165comment</comments>
      <pubDate>Mon, 19 Aug 2019 22:26:31 +0900</pubDate>
    </item>
    <item>
      <title>[PHP] 시드 암호화 알고리즘(KISA SEED Encryption algorithm)</title>
      <link>https://khanorder.tistory.com/entry/KISA-SEED-Encryption-algorithm</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot;&gt;한국인터넷 진흥원 시드 암호화 알고리즘&lt;/h2&gt;
&lt;h2 style=&quot;text-align: center;&quot;&gt;KISA&amp;nbsp;SEED&amp;nbsp;Encryption algorithm&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmJ9nU/btqxyt3BWv9/bakJWY5c8zkiKbdvcVGVh1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmJ9nU/btqxyt3BWv9/bakJWY5c8zkiKbdvcVGVh1/img.png&quot; data-alt=&quot;KISA SEED 암호화 알고리즘&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmJ9nU/btqxyt3BWv9/bakJWY5c8zkiKbdvcVGVh1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmJ9nU%2Fbtqxyt3BWv9%2FbakJWY5c8zkiKbdvcVGVh1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;KISA SEED 암호화 알고리즘&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;프로젝트를 진행하던 중 타 회사에서 개발중인 시스템과 정보를 공유해야할 일이 있었는데,&lt;/p&gt;
&lt;p&gt;그 때 KISA SEED 암호화 알고리즘을 사용하게되었던 경험을 정리했습니다.&lt;/p&gt;
&lt;p&gt;암호화 알고리즘 소스와 개발 매뉴얼 다운로드 페이지입니다.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://seed.kisa.or.kr/kisa/Board/17/detailView.do&quot;&gt;https://seed.kisa.or.kr/kisa/Board/17/detailView.do&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1565968952964&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot;&gt;&lt;a href=&quot;https://seed.kisa.or.kr/kisa/Board/17/detailView.do&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-original-url=&quot;https://seed.kisa.or.kr/kisa/Board/17/detailView.do&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;KISA 암호이용활성화 - 암호알고리즘 소스코드&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;한국인터넷진흥원(KISA)에서는 128비트 블록암호 SEED를 쉽게 활용할 수 있도록, ECB, CBC, CTR, CCM, GCM 운영모드에 대한 소스코드를 배포하고 있습니다. 언어 : C/C++, Java, ASP, JSP, PHP 다음글 2019-01-31 이전글 2019-01-31&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;seed.kisa.or.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;링크에 암호화 알고리즘 소스 다운로드 페이지로 가서 다운로드 받으셨나요?&lt;/p&gt;
&lt;p&gt;언어별로, 운영모드(CBC, CTR, GCM 등) 별로 소스코드가 있습니다.&lt;/p&gt;
&lt;p&gt;그러면 그냥 다운로드 받은 소스코드의 함수를 실행하면되지 뭐 때문에 이 글을 적는가?&lt;/p&gt;
&lt;p&gt;아마 다운로드한 소스코드의 encrypt, decrypt 함수를 실행하면 암호화, 복호화가 정상적으로 안될겁니다.&lt;/p&gt;
&lt;p&gt;예전이 이 소스코드 실행하다가 맨붕했던 기억나네요... ... 그래서 이렇게 사용방법을 공유해봅니다.&lt;/p&gt;
&lt;p&gt;참고로 예제로 보여드릴 코드는 CBC운영모드를 기준으로 했습니다.&lt;/p&gt;
&lt;p&gt;우선 다운로드 받은 소스코드의 함수를 실행하면 정상 작동안하는 이유는 SEED 암호화 알고리즘은 128비트 블록 암호화 알고리즘입니다.&lt;/p&gt;
&lt;p&gt;위 링크에 같이 첨부된 개발 메뉴얼 PDF파일을 읽어보면&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLQiGP/btqxx1sXDiQ/fw02ZB4NMJ1Gm0XztKKDi1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLQiGP/btqxx1sXDiQ/fw02ZB4NMJ1Gm0XztKKDi1/img.png&quot; data-alt=&quot;SEED 암호화 알고리즘 개발 메뉴얼 중&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLQiGP/btqxx1sXDiQ/fw02ZB4NMJ1Gm0XztKKDi1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLQiGP%2Fbtqxx1sXDiQ%2Ffw02ZB4NMJ1Gm0XztKKDi1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;SEED 암호화 알고리즘 개발 메뉴얼 중&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;암호화할 데이터를 128비트 단위로 블럭화 해야합니다.&lt;/p&gt;
&lt;p&gt;그러니까 마지막 블럭의 크기가 128비트가 안되면 나머지 크기만큼 패딩을 해서 128비트 블럭을 만들라는 말이겠죠?&lt;/p&gt;
&lt;p&gt;그래서 개발 매뉴얼 PDF 내용중 고려사항에서 좀 더 뒤로 가면 패딩방법 3가지를 설명하주고 있습니다.&lt;/p&gt;
&lt;p&gt;직접 패딩하란 소리죠. ㅎ ㅏㅎ ㅏㅎ ㅏ 하긴 암호화 알고리즘 만들어 준게어디야... 라고 작업 당시에 생각했는데&lt;/p&gt;
&lt;p&gt;최근에 Java로 작업하게 되서 Java 소스를 살펴보니 패딩처리까지 되어있더군요.&lt;/p&gt;
&lt;p&gt;나머지 다른 언어들은 확인하지 못했지만 정말 치사하단 생각이 들더라구요. ㅜ_ㅡ 지못미 PHP&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;어쨋든 PDF에 패딩이 필요하다니까 해야하겠죠. 그런데 내용이 좀...&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nl77y/btqxu4EFCi2/k4r2oXyjxA38A72Bz8b920/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nl77y/btqxu4EFCi2/k4r2oXyjxA38A72Bz8b920/img.png&quot; data-alt=&quot;SEED 암호화 알고리즘 블럭 패딩 설명&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nl77y/btqxu4EFCi2/k4r2oXyjxA38A72Bz8b920/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fnl77y%2Fbtqxu4EFCi2%2Fk4r2oXyjxA38A72Bz8b920%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;SEED 암호화 알고리즘 블럭 패딩 설명&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;그냥 작성된 소스코드 좀 주시면 안될까요? 하...&lt;/p&gt;
&lt;p&gt;그래서 구글링을 해서 패딩작업을 한 소스를 찾았습니다.&lt;/p&gt;
&lt;p&gt;참고한 소스의 출처를 적으려니 너무 오래되서 어디서 참고했는지 기억이 잘 안나네요.&lt;/p&gt;
&lt;p&gt;죄송하지만 출처를 좀 생략하고 다른 곳에서 참고했다는 것만 밝히겠습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1565971766801&quot; class=&quot;php&quot; data-enlighter-language=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?php
require_once ('KISA_SEED_CBC.php');

class KISA_SEED_CBC_HANDLE
{
	private static $g_bszUser_key = [ &quot;f1&quot;, &quot;96&quot;, &quot;ff&quot;, &quot;18&quot;, &quot;28&quot;, &quot;c8&quot;, &quot;ef&quot;, &quot;cc&quot;, &quot;ab&quot;, &quot;1a&quot;, &quot;fd&quot;, &quot;8d&quot;, &quot;8c&quot;, &quot;b9&quot;, &quot;a4&quot;, &quot;34&quot; ];
	private static $g_bszIV = [ &quot;78&quot;, &quot;69&quot;, &quot;81&quot;, &quot;ab&quot;, &quot;4a&quot;, &quot;4c&quot;, &quot;2c&quot;, &quot;a8&quot;, &quot;a9&quot;, &quot;99&quot;, &quot;67&quot;, &quot;81&quot;, &quot;77&quot;, &quot;a1&quot;, &quot;cc&quot;, &quot;bb&quot; ];
	private static $SeedBlockSize = 16;
	private static $PADDING_VALUE = 0x0F;

	public function addPadding($source, $blockSize) {
		$paddingResult = $source;
		$paddingCount = $blockSize - (count($source) % $blockSize);
		if (!$paddingCount) {
			for($i=0;$i&amp;lt;self::$SeedBlockSize;$i++) {
				$paddingResult[] = self::$PADDING_VALUE;
			}
		} else {
			for($i=0;$i&amp;lt;$paddingCount;$i++) {
				$paddingResult[] = 0x0A;
			}
		}

		return $paddingResult;
	}

	public function removePadding($source, $blockSize) {
		$paddingResult = $source;
		$byte_length = count($source);
		$lb_start = $byte_length - $blockSize - 1;
		$is_padding = false;
		$padding_start = 0;
		for ($i = $lb_start; $i &amp;lt; $byte_length; $i++) { 
			if ($source[$i] == 10) {
				$is_padding = true;
				$padding_start = $i;
				break;
			}
		}
		for ($i = $padding_start; $i &amp;lt; $byte_length; $i++) {
			array_pop($paddingResult);
		}

		return $paddingResult;
	}

	public function encrypt($str) {

		$planBytes = array_slice(unpack('c*', $str), 0);
		$planBytes = $this-&amp;gt;addPadding($planBytes, self::$SeedBlockSize);
		$keyBytes = self::$g_bszUser_key;
		$IVBytes = self::$g_bszIV;
		
		for($i = 0; $i &amp;lt; 16; $i++)
		{
			$keyBytes[$i] = hexdec($keyBytes[$i]);
			$IVBytes[$i] = hexdec($IVBytes[$i]);
		}

		if (count($planBytes) == 0) {
			return $str;
		}
		$ret = null;
		$bszChiperText = null;
		$pdwRoundKey = array_pad(array(),32,0);

		$bszChiperText = KISA_SEED_CBC::SEED_CBC_Encrypt($keyBytes, $IVBytes, $planBytes, 0, count($planBytes));

		$r = count($bszChiperText);

		for($i=0;$i&amp;lt; $r;$i++) {
			$ret.= ($ret ? &quot;,&quot; : &quot;&quot;) . sprintf(&quot;%02X&quot;, $bszChiperText[$i]);
		}
		return $ret;
	}

	public function decrypt($str) {
		$planBytes = [];
		$keyBytes = self::$g_bszUser_key;
		$IVBytes = self::$g_bszIV;
		
		for($i = 0; $i &amp;lt; 16; $i++)
		{
			$keyBytes[$i] = hexdec($keyBytes[$i]);
			$IVBytes[$i] = hexdec($IVBytes[$i]);
		}

		$hex_arr = explode(&quot;,&quot;, $str);

		foreach ($hex_arr as $hex) {
			$dec = hexdec($hex);
			$planBytes[] = $dec;
		}

		if (count($planBytes) == 0) {
			return $str;
		}

		$pdwRoundKey = array_pad(array(),32,0);

		$bszPlainText = null;

		$planBytresMessage = &quot;&quot;;
		$bszPlainText = KISA_SEED_CBC::SEED_CBC_Decrypt($keyBytes, $IVBytes, $planBytes, 0, count($planBytes));
		for($i=0;$i&amp;lt; sizeof($bszPlainText);$i++) {
			$planBytresMessage .=  sprintf(&quot;%02X&quot;, hexdec($bszPlainText[$i])).&quot;,&quot;;
		}

		$decryptHexStr = substr($planBytresMessage,0,strlen($planBytresMessage)-1);
		$decryptHex = explode(&quot;,&quot;, $decryptHexStr);

		$dec_data = call_user_func_array(&quot;pack&quot;, array_merge(array(&quot;c*&quot;), $decryptHex));
		return $dec_data ? trim($dec_data) : &quot;&quot;;
	}

}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;끝으로 클래스 속성값으로 선언해준 암호화 seed 값은 원하는 16진수 값으로 넣으시면 됩니다.&lt;/p&gt;</description>
      <category>Programming Language/PHP</category>
      <category>KISA SEED CBC</category>
      <category>KISA SEED CCM</category>
      <category>KISA SEED CTR</category>
      <category>KISA SEED ECB</category>
      <category>KISA SEED GCM</category>
      <category>PHP 암호화 알고리즘</category>
      <category>국산 암호화 알고리즘</category>
      <category>키사 암호화</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/164</guid>
      <comments>https://khanorder.tistory.com/entry/KISA-SEED-Encryption-algorithm#entry164comment</comments>
      <pubDate>Sat, 17 Aug 2019 01:17:51 +0900</pubDate>
    </item>
    <item>
      <title>Codeigniter3 XSS filtering issue</title>
      <link>https://khanorder.tistory.com/entry/Codeigniter3-XSS-filtering-issue</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tbcBV/btqxrXkIVMH/1gzKdmWuIqM4xuu4s6oCs1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tbcBV/btqxrXkIVMH/1gzKdmWuIqM4xuu4s6oCs1/img.jpg&quot; data-alt=&quot;XSS Cross-site Scripting&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tbcBV/btqxrXkIVMH/1gzKdmWuIqM4xuu4s6oCs1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtbcBV%2FbtqxrXkIVMH%2F1gzKdmWuIqM4xuu4s6oCs1%2Fimg.jpg&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;XSS Cross-site Scripting&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot;&gt;Codeigniter3&amp;nbsp;XSS&amp;nbsp;filtering&amp;nbsp;issue&lt;/h2&gt;
&lt;p&gt;회사에서 이 전에 진행한 프로젝트에서 Codeigniter 3 Framework를 사용하였는데,&amp;nbsp;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;이 사이트의 HTML을 사용하는 영역을 제외하고는 Input Class에서 XSS filtering을 한 후 Parameter 값을 사용했습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;그런데 이 사이트 사용자 중 한 분에게 입력한 내용이 일부 사라졌다는 오류 제보를 받았습니다.&lt;/p&gt;
&lt;p&gt;확인해보니 Codeigniter 3(이하 &lt;span style=&quot;color: #333333;&quot;&gt;CI3&lt;/span&gt;)에서 XSS filtering을 할 때 특정 문자열 패턴이 HTML로 인식되서 사라지는 현상이었고, 원인은&amp;nbsp;&lt;b&gt;'% 33', '% 40'&lt;/b&gt; 와같이 엔퍼센트 특수 문자 뒤에 한칸 띄우고 숫자가 2개 이상 오는 패턴일 때&amp;nbsp;&lt;span style=&quot;color: #333333;&quot;&gt;XSS방어 기능이&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;이 패턴을 HTML entity로 인식하고 제거해버리는 것이었습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;CI3 가이드 문서를 보면 CI의 XSS filtering 기능은 매우 강력하게 작용하으므로 전역적으로 사용하지 말라고 나와있습니다.&lt;/p&gt;
&lt;p&gt;하지만 제 생각에는 이런 오류라면 부분적으로 사용한다고 하더라도 안심하고&amp;nbsp;&lt;span style=&quot;color: #333333;&quot;&gt;CI XSS filtering 기능을 적용하기에는 문제가 있다고 생각이 들었습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;사용자가 입력하는 불특정한 데이터를 XSS filtering 기능에 맞기기에는 데이터 자체가 훼손될 수 있기 때문이죠.&lt;/p&gt;
&lt;p&gt;실제로 그 이유로 불편함을 제보 받았구요.&lt;/p&gt;
&lt;p&gt;짧은 영어로 stackoverflow에 질문을 해보니&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://stackoverflow.com/questions/56572511/some-text-was-removed-while-xss-filtering-in-codeigniter&quot;&gt;https://stackoverflow.com/questions/56572511/some-text-was-removed-while-xss-filtering-in-codeigniter&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1565701796056&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/56572511/some-text-was-removed-while-xss-filtering-in-codeigniter&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-original-url=&quot;https://stackoverflow.com/questions/56572511/some-text-was-removed-while-xss-filtering-in-codeigniter&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/FjPzB/hyCpOnR3D5/pyNq9YIFeN1EIQAKCdzbzK/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Some text was removed while xss filtering in codeigniter&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;Removed text is '% 33', '% 40'. (single quote is not included) $text = &quot;% 33&quot;; $xss_text = $this-&amp;gt;input-&amp;gt;post($text, TRUE); echo $xss_text; // result is 3 and @&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;stackoverflow.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;고맙게도 댓글로 도움을 주신분이 XSS filtering 쓰지 말라고하면서 XSS filtering 기능의 문제에 대해서 설명한 링크를 알려주더라구요.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://stackoverflow.com/questions/5337143/codeigniter-why-use-xss-clean&quot;&gt;https://stackoverflow.com/questions/5337143/codeigniter-why-use-xss-clean&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1565701793247&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/5337143/codeigniter-why-use-xss-clean&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-original-url=&quot;https://stackoverflow.com/questions/5337143/codeigniter-why-use-xss-clean&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/U7gX0/hyCpMp2BUa/zy8JRjS4iGU0v6cWYXO8RK/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;CodeIgniter - why use xss_clean&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;if I'm sanitizing my DB inserts, and also escaping the HTML I write with htmlentities($text, ENT_COMPAT, 'UTF-8') - is there any point to also filtering the inputs with xss_clean? What other benefits&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;stackoverflow.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot;&gt;그러면 XSS 방어는 포기?&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;그러면 XSS 방어는 어떻게 해야할까?&lt;/b&gt; 에 대해서 생각을 해야하는데요.&lt;/p&gt;
&lt;p&gt;위에 두 번째 링크의 질문에 대한 답변 글 중 Useful 점수가 가장 높은 글 내용의 결론은&lt;/p&gt;
&lt;p&gt;&lt;b&gt;'XSS는 출력(output)의 문제이지 입력(input)의 문제가 아니다'&lt;/b&gt;&amp;nbsp;라는 것입니다.&lt;/p&gt;
&lt;p&gt;그러니 input parameter에서 filtering 하기보다는 Output할 때 escape해주는 것이 좋은 방법입니다.&lt;/p&gt;
&lt;p&gt;글을 적으면서 확인해보니 CI3 가이드 문서에도 XSS 이스케이프는 output에서 진행하라는 안내가 있었습니다.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.ciboard.co.kr/user_guide/kr/libraries/input.html&quot;&gt;http://www.ciboard.co.kr/user_guide/kr/libraries/input.html&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1565703565307&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot;&gt;&lt;a href=&quot;http://www.ciboard.co.kr/user_guide/kr/libraries/input.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-original-url=&quot;http://www.ciboard.co.kr/user_guide/kr/libraries/input.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Input Class ‐ 코드이그나이터 3.0 한글매뉴얼&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;CodeIgniter는 POST, COOKIE 혹은 SERVER 아이템을 가져오기 위해서 3가지 헬퍼함수를 제공합니다. 각 아이템들을 직접 가져오는 것보다($_POST['something']) 헬퍼를 사용하면 더 좋은 이유는, 헬퍼가 아이템이 세팅되어 있는지를 먼저 체크하고 세팅되어있지 않다면 FALSE를 반환하기 때문입니다. 아이템이 존재하는지 먼저 검사하고 처리할 필요가 없어집니다. 다시말하면, 일반적으로 여러분안 아래와 같이 프로그램할 것입니다: $&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.ciboard.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;개인적으로도 이 생각에 동의합니다. 하지만 웹 애플리케이션(Web application)에 출력되는 모든 데이터를 escape하는 일은 &lt;span style=&quot;color: #333333;&quot;&gt;상당히&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;번거로운 일입니다.&lt;span style=&quot;color: #333333;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1565703929971&quot; class=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?php $variable = &quot;&amp;lt;p&amp;gt;호짱의 개발 블로그&amp;lt;/p&amp;gt;&quot;; ?&amp;gt;
&amp;lt;?=htmlentities($variable)?&amp;gt;
&amp;lt;?=htmlspecialcharacters($variable)?&amp;gt;
// 출력
// &amp;lt;p&amp;gt;호짱의 개발블로그&amp;lt;/p&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;PHP 내장 함수로 escape처리를 하려면 아마 모든 문자열을 이런식으로 출력해줘야하니까요.&lt;/p&gt;
&lt;p&gt;그런데 &lt;a href=&quot;https://twig.symfony.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Twig(&lt;/a&gt;&lt;a href=&quot;https://twig.symfony.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://twig.symfony.com/)&lt;/a&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;같은&amp;nbsp;&lt;/span&gt;View 페이지 Template engine을 사용하면 escape를 좀 더 간단하게 처리할 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1565704194589&quot; class=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{{ var }}
{{ var|escape }}
{{ var|e }}         {# shortcut to escape a variable #}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;PHP 스크립트 시작 태그인 &amp;lt;?php 태그를 사용하지 않아도되서 View 페이지 코드를 작성할 때 HTML과 함께 사용하기도 더 편리하고 위 코드처럼 escape처리 뿐만아니라 일반적인 문자열 출력도 훨씬 간편해집니다.&lt;/p&gt;
&lt;p&gt;이 링크는 CI3에서 Twig를 상용할 수있게 해놓은 Library Github 저장소입니다.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/kenjis/codeigniter-ss-twig&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/kenjis/codeigniter-ss-twig&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1565704397373&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot;&gt;&lt;a href=&quot;https://github.com/kenjis/codeigniter-ss-twig&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-original-url=&quot;https://github.com/kenjis/codeigniter-ss-twig&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cg8Lcd/hyCpFR4a5p/AvgWZVwipNX8WoClK21nM0/img.jpg?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;kenjis/codeigniter-ss-twig&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;A Simple and Secure Twig integration for CodeIgniter 3.x - kenjis/codeigniter-ss-twig&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;PHP에서 View Template engine은 Twig만 있는건 아닙니다.&lt;/p&gt;
&lt;p&gt;Laravel Framework에 내장된 Blade Template engine도 있는데요.&lt;/p&gt;
&lt;p&gt;Blade도 CI3에서 사용할 수있습니다.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://khanorder.tistory.com/entry/ci-blade&quot;&gt;https://khanorder.tistory.com/entry/ci-blade&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1565704517014&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot;&gt;&lt;a href=&quot;https://khanorder.tistory.com/entry/ci-blade&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-original-url=&quot;https://khanorder.tistory.com/entry/ci-blade&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/eeFc8g/hyCpJmBaw8/Kha8kiHS1fq7poqkHzR151/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;코드이그나이터에서 블레이드 템플렛 사용하기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;코드이그나이터에서 블레이드 템플렛 사용하기 우선 블레이드를 라라벨 없이 사용가능한 컴포넌트를 받아 오토로드 합니다. 컴포저가 설치됐다는 가정 하에 커멘드라인에서 컴포넌트 설치. composer require dunca..&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;khanorder.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;제가 작성한 CI3에서 Blade Template engine 사용법에 대한 글입니다.&lt;/p&gt;
&lt;p&gt;Blade에서도 Twig처럼 간결하고 쉽게 문자열을 escape하고 출력할 수있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1565704741784&quot; class=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// blade는 기본 출력이 escape
{{ $variable }}
 
// escape 없이 출력할려면 이렇게
{!! $variable !!}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이렇게 말이죠~&lt;/p&gt;
&lt;p&gt;이상 CI3 XSS filtering 기능의 문제점과 좀 더 안전하고 편안한 XSS 방어 방법으로 View Template engine을 통한 문자열 escape 방법에 대해 적어봤습니다.&lt;/p&gt;</description>
      <category>Programming Framework/CodeIgniter</category>
      <category>ci3 codeigniter xss filter error</category>
      <category>ci3 codeigniter xss filter issue</category>
      <category>php blade 블레이드</category>
      <category>php escape 이스케이프</category>
      <category>php twig 트위그</category>
      <category>php view template engine</category>
      <category>코드이그나이터 XSS 필터링 문제</category>
      <category>코드이그나이터 문제점</category>
      <category>코드이그나이터 오류</category>
      <category>템플레이트 엔진</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/163</guid>
      <comments>https://khanorder.tistory.com/entry/Codeigniter3-XSS-filtering-issue#entry163comment</comments>
      <pubDate>Tue, 13 Aug 2019 00:33:44 +0900</pubDate>
    </item>
    <item>
      <title>[IntelliJ] 2019.2 업데이트 후 언어셋 오류 해결</title>
      <link>https://khanorder.tistory.com/entry/IntelliJ-2019-2-update-issue</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot;&gt;2019.2&amp;nbsp;업데이트&amp;nbsp;후&amp;nbsp;언어셋&amp;nbsp;오류&amp;nbsp;해결&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;IntelliJ 설치 후 한글이 깨지는 현상을 해결하는 방법을 지난 번에 포스팅했는데요.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://khanorder.tistory.com/entry/IntelliJ-resolve-garbled-korean-problem&quot;&gt;https://khanorder.tistory.com/entry/IntelliJ-resolve-garbled-korean-problem&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1565618504474&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot;&gt;&lt;a href=&quot;https://khanorder.tistory.com/entry/IntelliJ-resolve-garbled-korean-problem&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-original-url=&quot;https://khanorder.tistory.com/entry/IntelliJ-resolve-garbled-korean-problem&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bJhsfv/hyCpNIpa7N/CbAufM6A3Ytcn6l9nKVOe1/img.png?width=152&amp;amp;height=169&amp;amp;face=0_0_152_169,https://scrap.kakaocdn.net/dn/RdZ7m/hyCnHJOrmG/AyUVeseCTOEGVkyk1I8sQK/img.png?width=1090&amp;amp;height=719&amp;amp;face=0_0_1090_719,https://scrap.kakaocdn.net/dn/tyGnZ/hyCnssn12f/YV6sPBL8HB12RKOwLKOQq0/img.png?width=1098&amp;amp;height=711&amp;amp;face=0_0_1098_711');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;[IntelliJ] 한글깨짐 해결 UTF-8 Encoding 설정&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;[IntelliJ] 한글깨짐 해결 UTF-8 Encoding 설정 1. IntelliJ 가상머신 Encoding 설정 IntelliJ 실행시 사용되는 가상머신 Encoding 설정. Windows 환경에서 기본 설정으로 IntelliJ를 설치할 경우를 기준으로 C:\P..&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;khanorder.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그런데 저는 업데이트 후 이 설정이 정상적으로 인식이 안되는 현상이 있었습니다.&lt;/p&gt;
&lt;p&gt;위 링크에 첫 번째 설정이 문제였는데요.&lt;/p&gt;
&lt;p&gt;문제는 .vmoptions 파일은 IntelliJ가 설치된 폴더에도 있지만&lt;/p&gt;
&lt;p&gt;OS 사용자 설정폴더에있는 IntelliJ 개인 설정 폴더에도 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kxI4J/btqxpduyCTD/m005DLoRKVimqHKBxCdlLK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kxI4J/btqxpduyCTD/m005DLoRKVimqHKBxCdlLK/img.png&quot; data-alt=&quot;C:\Users\Account\.IntelliJIdea2019.2\config\idea64.exe.vmoptions&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kxI4J/btqxpduyCTD/m005DLoRKVimqHKBxCdlLK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkxI4J%2FbtqxpduyCTD%2Fm005DLoRKVimqHKBxCdlLK%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;/&gt;&lt;/span&gt;&lt;figcaption&gt;C:\Users\Account\.IntelliJIdea2019.2\config\idea64.exe.vmoptions&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;만일 저처럼 업데이트 후에 .vmoptions 파일 설정이 되어있는데도 한글 깨짐문제가 발생한다면,&lt;/p&gt;
&lt;p&gt;Windows 기준으로 사용자 개인설정 파일 폴더에 있는 .vmoptions파일을 확인해보세요.&lt;/p&gt;
&lt;p&gt;여기는 적용이 안되어있을겁니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;아 그리고 제가 첨부한 스크린샷 이미지에는 2019.2 버전 폴더인데&lt;/p&gt;
&lt;p&gt;2019.1 버전에서 업데이트 한 경우라면&lt;/p&gt;
&lt;p&gt;개인설정 폴더가 2019.1로 되어있을 겁니다.&lt;/p&gt;
&lt;p&gt;그래서 실제 설치된 폴더의 .vmoptions 파일을 수정해도 아무 효과가 없었던것 같아요.&lt;/p&gt;</description>
      <category>IDE/IntelliJ</category>
      <category>IntelliJ 2019.1</category>
      <category>IntelliJ 2019.2</category>
      <category>IntelliJ update issue</category>
      <category>IntelliJ 한글 깨짐</category>
      <category>인텔리J 업데이트 오류</category>
      <category>인텔리제이 한글 깨짐</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/162</guid>
      <comments>https://khanorder.tistory.com/entry/IntelliJ-2019-2-update-issue#entry162comment</comments>
      <pubDate>Mon, 12 Aug 2019 22:59:12 +0900</pubDate>
    </item>
    <item>
      <title>[IntelliJ] 메소드 구분선 표시(Show method separators)</title>
      <link>https://khanorder.tistory.com/entry/Show-method-separators</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot;&gt;메소드&amp;nbsp;구분선&amp;nbsp;표시(Show&amp;nbsp;method&amp;nbsp;separators)&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1008&quot; data-origin-height=&quot;710&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dL1m84/btqxmMpf4nc/SOJcwbfKLrKMi918fJwuJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dL1m84/btqxmMpf4nc/SOJcwbfKLrKMi918fJwuJk/img.png&quot; data-alt=&quot;File &amp;amp;amp;gt; Settings (Ctrl + Alt + S), Editor &amp;amp;amp;gt; General &amp;amp;amp;gt; Appearance&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dL1m84/btqxmMpf4nc/SOJcwbfKLrKMi918fJwuJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdL1m84%2FbtqxmMpf4nc%2FSOJcwbfKLrKMi918fJwuJk%2Fimg.png&quot; data-origin-width=&quot;1008&quot; data-origin-height=&quot;710&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;File &amp;gt; Settings (Ctrl + Alt + S), Editor &amp;gt; General &amp;gt; Appearance&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;설정하고 나면&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;870&quot; data-origin-height=&quot;750&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mY60Q/btqxoQEs2XO/HUM8XcDelEKcxetz1U4yF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mY60Q/btqxoQEs2XO/HUM8XcDelEKcxetz1U4yF1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mY60Q/btqxoQEs2XO/HUM8XcDelEKcxetz1U4yF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmY60Q%2FbtqxoQEs2XO%2FHUM8XcDelEKcxetz1U4yF1%2Fimg.png&quot; data-origin-width=&quot;870&quot; data-origin-height=&quot;750&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;메소드 사이에 구분선이 생겨서 가독성이 좋아집니다~&lt;/p&gt;</description>
      <category>IDE/IntelliJ</category>
      <category>intellij</category>
      <category>method separator</category>
      <category>꿀팁</category>
      <category>메</category>
      <category>메소드 구분선</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/161</guid>
      <comments>https://khanorder.tistory.com/entry/Show-method-separators#entry161comment</comments>
      <pubDate>Fri, 9 Aug 2019 15:53:34 +0900</pubDate>
    </item>
    <item>
      <title>[JSP] EUC-KR 캐릭터셋 한글 깨짐현상 해결방법</title>
      <link>https://khanorder.tistory.com/entry/JSP-euc-kr-GET-parameter-encoding</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot;&gt;EUC-KR&amp;nbsp;캐릭터셋&amp;nbsp;한글&amp;nbsp;인코딩 깨짐 해결방법&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;EUC-KR 언어셋 환경에서 GET 방식으로 한글 문자를 전송할 경우 글자가 깨집니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;이럴 땐 URL encoding을 한 후 전송해서, 전송 받은 데이터를 8859_1 인코딩 바이트 코드로 받은 후&lt;/p&gt;
&lt;p&gt;받은 byte code 값을 String 객체를 사용해서 euc-kr 언어셋으로 재생성 해주면됩니다~!&lt;/p&gt;
&lt;pre id=&quot;code_1565267374706&quot; class=&quot;java&quot; data-enlighter-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 전송할 때

String send_str = URLEncoder.encode(&quot;호짱&quot;, &quot;euc-kr&quot;);

// 물론 위 값을 html a 태그 등에 파마미터로 붙여서 전송&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1565267455692&quot; class=&quot;java&quot; data-enlighter-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 전송된 문자열 데이터를 받을 때

String get_str = new String(request.getParameter(&quot;send_str&quot;).getBytes(&quot;8859_1&quot;),&quot;euc-kr&quot;);&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Programming Language/Java</category>
      <category>euckr 한글 깨짐</category>
      <category>jsp euc-kr get 값 한글 깨짐</category>
      <category>jsp euc-kr 한글 깨짐</category>
      <category>jsp get 값 한글 깨짐</category>
      <category>jsp 한글 깨짐</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/160</guid>
      <comments>https://khanorder.tistory.com/entry/JSP-euc-kr-GET-parameter-encoding#entry160comment</comments>
      <pubDate>Thu, 8 Aug 2019 16:14:42 +0900</pubDate>
    </item>
    <item>
      <title>[IntelliJ] 자동완성 설정 Live Templates</title>
      <link>https://khanorder.tistory.com/entry/IntelliJ-Live-Templates</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot;&gt;[IntelliJ]&amp;nbsp;자동완성 설정&amp;nbsp;Live&amp;nbsp;Templates&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;IntelliJ에서 기본 자동완성 단축키는 &lt;b&gt;Ctrl + Space&lt;/b&gt;로 Eclipse와 같습니다.&lt;/p&gt;
&lt;p&gt;그런데 자동 완성 기능은 전체 Class명이나 Method명에서 검색되는 반면에&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Live Templates&lt;/b&gt; 기능은 미리 지정된 단축문과 관련있는 Class, Method로 완성됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;660&quot; data-origin-height=&quot;321&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EszcB/btqw7bJQGR5/BO1U4SERBNRoXrSkswokfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EszcB/btqw7bJQGR5/BO1U4SERBNRoXrSkswokfK/img.png&quot; data-alt=&quot;입력중인 키워드의 연관된 Live Templates&amp;amp;amp;nbsp;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EszcB/btqw7bJQGR5/BO1U4SERBNRoXrSkswokfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEszcB%2Fbtqw7bJQGR5%2FBO1U4SERBNRoXrSkswokfK%2Fimg.png&quot; data-origin-width=&quot;660&quot; data-origin-height=&quot;321&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;입력중인 키워드의 연관된 Live Templates&amp;nbsp;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;현재 커서 위치에서 사용될것 같은 &lt;b&gt;Live Templates&lt;/b&gt;를 보여주는 &lt;span style=&quot;color: #333333;&quot;&gt;단축키는 &lt;b&gt;Ctrl + J&lt;/b&gt;입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;646&quot; data-origin-height=&quot;465&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/exQgXk/btqw5fTIUIS/CMtL18pi3RH5zFo5ZTuOKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/exQgXk/btqw5fTIUIS/CMtL18pi3RH5zFo5ZTuOKk/img.png&quot; data-alt=&quot;공백인 커서 위치에서 Ctrl + J 키를 눌렀을 때&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/exQgXk/btqw5fTIUIS/CMtL18pi3RH5zFo5ZTuOKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FexQgXk%2Fbtqw5fTIUIS%2FCMtL18pi3RH5zFo5ZTuOKk%2Fimg.png&quot; data-origin-width=&quot;646&quot; data-origin-height=&quot;465&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;공백인 커서 위치에서 Ctrl + J 키를 눌렀을 때&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Eclipse를 사용할 때 특정 키워드를 입력후&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;자동완성 단축키(Ctrl + Space)를 입력하면&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Class나 Method를 자동완성 해주는 기능과 동일합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(예:&amp;nbsp;&lt;/span&gt;'sysout' 입력 후 Ctrl + Space 누르면 'System.out.println()' 자동완성)&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;참고로 IntelliJ에서 '&lt;b&gt;System.out.println()'&lt;/b&gt; Method의 단축 키워드는 &lt;b&gt;'sout'&lt;/b&gt; 이고&lt;/p&gt;
&lt;p&gt;Eclipse &lt;b&gt;'foreach'&lt;/b&gt;에 해당하는 &lt;b&gt;for (Object el : ) { ... }&lt;/b&gt; 형태의 단축 키워드는 &lt;b&gt;'iter'&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p&gt;IntelliJ의 기본 단축 키워드가 마음에 안들면 수정하거나 추가해서 사용할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;File &amp;gt; Settings &lt;b&gt;단축키&lt;/b&gt;(Ctrl + S)&lt;/b&gt; 설정 화면에서 &lt;b&gt;Editor &amp;gt; Live Templates&lt;/b&gt;에서 추가, 수정, 삭제할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1098&quot; data-origin-height=&quot;711&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMlUBt/btqw4oKdUtM/3o673O38tLxnKWwwa5zcZK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMlUBt/btqw4oKdUtM/3o673O38tLxnKWwwa5zcZK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMlUBt/btqw4oKdUtM/3o673O38tLxnKWwwa5zcZK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMlUBt%2Fbtqw4oKdUtM%2F3o673O38tLxnKWwwa5zcZK%2Fimg.png&quot; data-origin-width=&quot;1098&quot; data-origin-height=&quot;711&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;우측에 '+' 버튼을 눌러서 Live Template를 &lt;b&gt;추가할 group&lt;/b&gt;을 생성하거나 현재 &lt;b&gt;group&lt;/b&gt;중에 &lt;b&gt;Live Template를 추가&lt;/b&gt;하고&lt;/p&gt;
&lt;p&gt;단축 키워드 &lt;b&gt;Abbreviation&lt;/b&gt;, 완성될 &lt;b&gt;Template text&lt;/b&gt;를 입력한 후&lt;/p&gt;
&lt;p&gt;아래 &lt;b&gt;change&lt;/b&gt; 버튼을 눌러서 사용될 영역을 지정해주면됩니다.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;(영역 지정을 안해주면 Ctrl + J를 눌러도 안 나옵니다.)&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;보통 Java 코드가 작성되는 영역은 &lt;b&gt;Java 트리에 Statement&lt;/b&gt;를 체크해주세요~&lt;/p&gt;</description>
      <category>IDE/IntelliJ</category>
      <category>auto complete</category>
      <category>IntelliJ Ctrl + Space</category>
      <category>IntelliJ Ctrl + 스페이스</category>
      <category>IntelliJ Live Templates</category>
      <category>IntelliJ 자동완성</category>
      <category>IntelliJ 컨트롤 + Space</category>
      <category>IntelliJ 컨트롤 + 스페이스</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/159</guid>
      <comments>https://khanorder.tistory.com/entry/IntelliJ-Live-Templates#entry159comment</comments>
      <pubDate>Sun, 28 Jul 2019 16:51:21 +0900</pubDate>
    </item>
    <item>
      <title>[IntelliJ] SQL dialect detection (SQL 경고 끄기)</title>
      <link>https://khanorder.tistory.com/entry/IntelliJ-SQL-dialect-detection</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot;&gt;[IntelliJ]&amp;nbsp;SQL&amp;nbsp;dialect&amp;nbsp;detection&lt;/h2&gt;
&lt;p&gt;IntelliJ 3일차 mybatis mapper xml 파일을 여는 순간 온통 경고 화면이 뜬다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cRiY5Z/btqw7wzxDlh/NakI3qX1sIuCZbMJLB5wRK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cRiY5Z/btqw7wzxDlh/NakI3qX1sIuCZbMJLB5wRK/img.png&quot; data-alt=&quot;IntelliJ 설치 후 mybatis mapper xml 파일 화면&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cRiY5Z/btqw7wzxDlh/NakI3qX1sIuCZbMJLB5wRK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcRiY5Z%2Fbtqw7wzxDlh%2FNakI3qX1sIuCZbMJLB5wRK%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;/&gt;&lt;/span&gt;&lt;figcaption&gt;IntelliJ 설치 후 mybatis mapper xml 파일 화면&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;sql dialect ? sql 방언? 특정 database의 명령어가 발견되었다는 뜻인가?&lt;/p&gt;
&lt;p&gt;경고화면 부분에서 &lt;b&gt;Alt + Enter&lt;/b&gt; 키를 눌러서 &lt;b&gt;Edit inspection profile setting 화면을 열어서 해당 경고를 꺼도된다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그런데 이 방법보다. 현재 사용중인 Database를 IDEA에 지정해주면 경고도 사라지고 해당 Database에 맞는 코드검증도 해준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/02S09/btqw553KLgv/kF1UWElDj4Un4K9Zqs8GR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/02S09/btqw553KLgv/kF1UWElDj4Un4K9Zqs8GR0/img.png&quot; data-alt=&quot;Settings창의 SQL Dialects 지정 화면&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/02S09/btqw553KLgv/kF1UWElDj4Un4K9Zqs8GR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F02S09%2Fbtqw553KLgv%2FkF1UWElDj4Un4K9Zqs8GR0%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;/&gt;&lt;/span&gt;&lt;figcaption&gt;Settings창의 SQL Dialects 지정 화면&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;File &amp;gt; Settings&lt;/b&gt; 또는 &lt;b&gt;Ctrl + Alt + S&lt;/b&gt;를 눌러서 &lt;b&gt;Settings&lt;/b&gt; 창을 열고, 좌측메뉴 &lt;b&gt;Languages &amp;amp; Frameworks&lt;/b&gt; &amp;gt; &lt;b&gt;SQL Dialects&lt;/b&gt; 메뉴에서 사용중은 Database를 지정해주면된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;IDEA &lt;b&gt;전역 기본값&lt;/b&gt;부터 &lt;b&gt;프로젝트 기본값&lt;/b&gt;, 그리고 &lt;b&gt;경로에 따라서도 지정&lt;/b&gt;할 수 있다.&lt;/p&gt;</description>
      <category>IDE/IntelliJ</category>
      <category>IntelliJ mariadb 경고 끄기</category>
      <category>IntelliJ mssql 경고 끄기</category>
      <category>IntelliJ mysql 경고 끄기</category>
      <category>IntelliJ oracle 경고 끄기</category>
      <category>IntelliJ SQL Dialects</category>
      <category>IntelliJ sql 경고 끄기</category>
      <author>HoZang</author>
      <guid isPermaLink="true">https://khanorder.tistory.com/156</guid>
      <comments>https://khanorder.tistory.com/entry/IntelliJ-SQL-dialect-detection#entry156comment</comments>
      <pubDate>Fri, 26 Jul 2019 12:00:49 +0900</pubDate>
    </item>
  </channel>
</rss>