<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>이모저모 일상들</title>
    <link>https://jdk0.tistory.com/</link>
    <description>끄적이는 곳</description>
    <language>ko</language>
    <pubDate>Thu, 13 Aug 2026 09:03:26 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>카제인나트륨.</managingEditor>
    <image>
      <title>이모저모 일상들</title>
      <url>https://tistory1.daumcdn.net/tistory/4510195/attach/b48f7384d3d0463891b4789f4e4d44fa</url>
      <link>https://jdk0.tistory.com</link>
    </image>
    <item>
      <title>putty 자동 로그인</title>
      <link>https://jdk0.tistory.com/59</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;putty에서 자동 로그인하는 비밀번호가 없어져서 일일히 입력하는건 매우 귀찮다.&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;bat파일을 통해서 자동 로그인하는 방법&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;1. putty 링크 가져오기&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;440&quot; data-origin-height=&quot;235&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5qpzD/dJMcabE6VDv/vAkXPPM1Sgs3pdl6ZqcgkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5qpzD/dJMcabE6VDv/vAkXPPM1Sgs3pdl6ZqcgkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5qpzD/dJMcabE6VDv/vAkXPPM1Sgs3pdl6ZqcgkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5qpzD%2FdJMcabE6VDv%2FvAkXPPM1Sgs3pdl6ZqcgkK%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;440&quot; height=&quot;235&quot; data-origin-width=&quot;440&quot; data-origin-height=&quot;235&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 메모장 오픈&lt;/p&gt;
&lt;pre id=&quot;code_1785891767529&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@echo off
start &quot;&quot; &quot;putty경로&quot; -ssh 계정명@IP주소 -P 포트번호 -pw 비밀번호 -L 로컬포트:127.0.0.1:21&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작성후 bat파일 변환후 실행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;귀찮음과의 타협점이므로 보안은 능력껏 관리합시다!&lt;/p&gt;</description>
      <category>IT</category>
      <author>카제인나트륨.</author>
      <guid isPermaLink="true">https://jdk0.tistory.com/59</guid>
      <comments>https://jdk0.tistory.com/59#entry59comment</comments>
      <pubDate>Wed, 5 Aug 2026 10:06:27 +0900</pubDate>
    </item>
    <item>
      <title>SQL CSV 파일 데이터 가져오기</title>
      <link>https://jdk0.tistory.com/58</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;SET&amp;nbsp;NAMES&amp;nbsp;utf8mb4; &lt;br /&gt;&lt;br /&gt;DROP&amp;nbsp;TEMPORARY&amp;nbsp;TABLE&amp;nbsp;IF&amp;nbsp;EXISTS&amp;nbsp;tmp_detail; &lt;br /&gt;CREATE&amp;nbsp;TEMPORARY&amp;nbsp;TABLE&amp;nbsp;tmp_detail&amp;nbsp;( &lt;br /&gt;&amp;nbsp;&amp;nbsp;product_cd&amp;nbsp;&amp;nbsp;varchar(100), &lt;br /&gt;&amp;nbsp;&amp;nbsp;new_detail&amp;nbsp;&amp;nbsp;TEXT&amp;nbsp;COLLATE&amp;nbsp;'utf8mb4_unicode_ci' &lt;br /&gt;)&amp;nbsp;CHARACTER&amp;nbsp;SET&amp;nbsp;utf8mb4&amp;nbsp;COLLATE&amp;nbsp;utf8mb4_unicode_ci; &lt;br /&gt;&lt;br /&gt;LOAD DATA LOCAL INFILE '&lt;span style=&quot;color: #0593d3;&quot;&gt;경로&lt;/span&gt;' &lt;br /&gt;INTO&amp;nbsp;TABLE&amp;nbsp;tmp_detail &lt;br /&gt;CHARACTER&amp;nbsp;SET&amp;nbsp;euckr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;FIELDS&amp;nbsp;TERMINATED&amp;nbsp;BY&amp;nbsp;','&amp;nbsp;&amp;nbsp;ENCLOSED&amp;nbsp;BY&amp;nbsp;'&quot;'&amp;nbsp;&amp;nbsp;ESCAPED&amp;nbsp;BY&amp;nbsp;'&quot;' &lt;br /&gt;LINES&amp;nbsp;&amp;nbsp;TERMINATED&amp;nbsp;BY&amp;nbsp;'\r\n' &lt;br /&gt;IGNORE&amp;nbsp;1&amp;nbsp;LINES &lt;br /&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;(product_cd,&amp;nbsp;new_detail);&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SELECT&amp;nbsp;*&amp;nbsp;FROM&amp;nbsp;tmp_detail; &lt;br /&gt;UPDATE table_detail t &lt;br /&gt;JOIN&amp;nbsp;tmp_detail&amp;nbsp;x&amp;nbsp;ON&amp;nbsp;t.product_cd&amp;nbsp;=&amp;nbsp;x.product_cd &lt;br /&gt;SET&amp;nbsp;t.content&amp;nbsp;=&amp;nbsp;x.new_detail;&lt;/p&gt;</description>
      <category>DB/EXCEL</category>
      <author>카제인나트륨.</author>
      <guid isPermaLink="true">https://jdk0.tistory.com/58</guid>
      <comments>https://jdk0.tistory.com/58#entry58comment</comments>
      <pubDate>Tue, 11 Nov 2025 12:37:25 +0900</pubDate>
    </item>
    <item>
      <title>SQL 테이블 명세서 출력하기</title>
      <link>https://jdk0.tistory.com/57</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 데이터베이스 모든 테이블 출력&lt;/p&gt;
&lt;pre id=&quot;code_1761192522078&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT TABLE_NAME, TABLE_COMMENT
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = SCHEMA()
ORDER BY TABLE_NAME;&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;2. 데이터베이스 각 테이블의 컬럼 출력&lt;/p&gt;
&lt;pre id=&quot;code_1761192582725&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT
 ORDINAL_POSITION AS NO, TABLE_NAME, COLUMN_COMMENT,  COLUMN_NAME, COLUMN_TYPE,  IF(IS_NULLABLE = 'YES','','V') AS NOT_NULL, column_key
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = SCHEMA()
AND TABLE_NAME IN (
 SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = SCHEMA()
)
ORDER BY TABLE_NAME, ORDINAL_POSITION;&lt;/code&gt;&lt;/pre&gt;</description>
      <category>DB/SQL</category>
      <author>카제인나트륨.</author>
      <guid isPermaLink="true">https://jdk0.tistory.com/57</guid>
      <comments>https://jdk0.tistory.com/57#entry57comment</comments>
      <pubDate>Thu, 23 Oct 2025 13:11:09 +0900</pubDate>
    </item>
    <item>
      <title>[PHP | CI] Spreadsheet 엑셀 라이브러리</title>
      <link>https://jdk0.tistory.com/56</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. &lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;phpspreadsheet&lt;/span&gt; 설치&lt;/h3&gt;
&lt;pre id=&quot;code_1751262668859&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;composer require phpoffice/phpspreadsheet&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;2. 라이브러리 추가(코드이그나이터)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;- apllication/libraries에&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;Spreadsheet.php를 추가&lt;span style=&quot;color: #ee2323;&quot;&gt; (그대로 복붙!)&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1751262494363&quot; class=&quot;php&quot; data-ke-language=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;if (!defined('BASEPATH')) exit('No direct script access allowed');

// Composer autoload 포함
require_once APPPATH . '../vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Spreadsheet as PhpSpreadsheetObj; // 이름 충돌 방지
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\Style\Alignment;
use PhpOffice\PhpSpreadsheet\Style\Border;

class Spreadsheet {  

    // 엑셀 파일 읽기 (CSV 한글 대응 포함)
    public function readExcel($file_path)
    {
        $reader = IOFactory::createReaderForFile($file_path);

        // CSV 파일일 경우 인코딩 + 구분자 설정
        if ($reader instanceof \PhpOffice\PhpSpreadsheet\Reader\Csv) {
            $reader-&amp;gt;setInputEncoding('EUC-KR'); 
            $reader-&amp;gt;setDelimiter(&quot;\t&quot;);        
            $reader-&amp;gt;setEnclosure('&quot;');
        }

        $spreadsheet = $reader-&amp;gt;load($file_path);
        return $spreadsheet-&amp;gt;getSheet(0)-&amp;gt;toArray(null, true, true, true);
    }
    
    // 엑셀 파일 다운로드
    public function downloadExcel($data, $file_name = 'excel_file.xlsx')
    {
        // 데이터가 비어있으면 다운로드하지 않음
        if (empty($data)) {
            echo &quot;출력할 데이터 없음.&quot;;
            return;
        }

        // 새 스프레드시트 객체 생성
        $spreadsheet = new PhpSpreadsheetObj(); 

        // 첫 번째 시트 선택
        $sheet = $spreadsheet-&amp;gt;getActiveSheet();

        // 데이터를 시트에 작성 
        $rowIndex = 1;  // 엑셀의 첫 번째 행 
        foreach ($data as $row) {
            $columnIndex = 1;  // 첫 번째 열 
            foreach ($row as $cell) {
                $sheet-&amp;gt;setCellValueByColumnAndRow($columnIndex, $rowIndex, $cell);
				$cellCoordinate = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::stringFromColumnIndex($columnIndex) . $rowIndex;
				$sheet-&amp;gt;getStyle($cellCoordinate)-&amp;gt;applyFromArray([
					'alignment' =&amp;gt; [
						'horizontal' =&amp;gt; Alignment::HORIZONTAL_CENTER,
						'vertical'   =&amp;gt; Alignment::VERTICAL_CENTER,
					],
					'borders' =&amp;gt; [
						'allBorders' =&amp;gt; [
							'borderStyle' =&amp;gt; Border::BORDER_THIN,
							'color' =&amp;gt; ['argb' =&amp;gt; 'FF000000'],
						],
					],
				]);
                $columnIndex++;
            }
            $rowIndex++;
        }
		
		// 열 너비 자동 조절
		$columnCount = count($data[0]);  // 첫 행 기준 열 개수
		for ($col = 1; $col &amp;lt;= $columnCount; $col++) {
			$columnLetter = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::stringFromColumnIndex($col);
			$sheet-&amp;gt;getColumnDimension($columnLetter)-&amp;gt;setAutoSize(true);
		}

        // Excel 파일을 다운로드하도록 설정
        $writer = new Xlsx($spreadsheet);

        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        header('Content-Disposition: attachment;filename=&quot;' . $file_name . '&quot;');
        header('Cache-Control: max-age=0');

        // 파일 출력
        $writer-&amp;gt;save('php://output');
        exit; 
    }

}&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-1736924903824098&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;3. 사용방법&lt;/h3&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;1) 파일 내보내기&lt;/p&gt;
&lt;pre id=&quot;code_1751262756515&quot; class=&quot;php&quot; data-ke-language=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$this-&amp;gt;load-&amp;gt;library('spreadsheet');
		
1. 내보내기
$data = [
    ['이름', '나이', '직업'], // 첫번째 헤더
    ['홍길동', 30, '개발자'],
];

// 엑셀 다운로드 실행
$this-&amp;gt;spreadsheet-&amp;gt;downloadExcel($data, 'sample_data.xlsx');&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;2) 파일 읽기&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1751262784243&quot; class=&quot;php&quot; data-ke-language=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$sheet = $this-&amp;gt;spreadsheet-&amp;gt;readExcel('파일');
foreach ($sheet as $key =&amp;gt; $row) {
    echo $row['A'] // 이름.. 홍길동
    echo $row['B'] // 나이.. 30
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/PHP | CI</category>
      <category>codeigniter</category>
      <category>Composer</category>
      <category>Excel</category>
      <category>Spreadsheet</category>
      <category>엑셀</category>
      <author>카제인나트륨.</author>
      <guid isPermaLink="true">https://jdk0.tistory.com/56</guid>
      <comments>https://jdk0.tistory.com/56#entry56comment</comments>
      <pubDate>Mon, 30 Jun 2025 14:53:56 +0900</pubDate>
    </item>
    <item>
      <title>[javascript] new set 으로 중복 제거하기</title>
      <link>https://jdk0.tistory.com/55</link>
      <description>&lt;blockquote style=&quot;font-size: 25px; border-left: 5px solid black; color: black; background-color: #ffffff;&quot; data-ke-style=&quot;style2&quot;&gt;Set이란?&lt;/blockquote&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Set은 JavaScript에서 중복 없는 값들의 집합을 저장할 수 있는 구조입니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;배열과 비슷하지만, 다음과 같은 차이점이 있습니다.&lt;br /&gt;&lt;br /&gt;1. 중복된 값을 자동으로 제거 &lt;br /&gt;2. 삽입된 순서를 유지 &lt;br /&gt;3. 빠른 검색 (has) 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1746145512269&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const numbers = [1, 2, 2, 3, 4, 4];
const uniqueNumbers = new Set(numbers);
console.log(uniqueNumbers); // Set(4) {1, 2, 3, 4}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote style=&quot;font-size: 25px; border-left: 5px solid black; color: black; background-color: #ffffff;&quot; data-ke-style=&quot;style2&quot;&gt;관련 메서드&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 115px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;add(value)&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;값 추가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;delete(value)&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;값 삭제&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;has(value)&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;포함 여부 확인&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;clear()&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;모두 삭제&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;size&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;원소 개수 반환&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote style=&quot;font-size: 25px; border-left: 5px solid black; color: black; background-color: #ffffff;&quot; data-ke-style=&quot;style2&quot;&gt;예제&lt;/blockquote&gt;
&lt;pre id=&quot;code_1746145579749&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const tags = new Set();

tags.add('JavaScript');
tags.add('JavaScript'); // 중복 무시
tags.add('react');

console.log(tags.has('react')); // true
console.log(tags.size);       // 2&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;배열 중복 제거에 활용&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1746146039646&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const arr = ['apple', 'banana', 'apple', 'orange'];
const unique = [...new Set(arr)];
console.log(unique); // ['apple', 'banana', 'orange']&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;b&gt;※ 위의 const number와는 다르게 const unique에서는 [...](전개연산자) 처리를 하는 이유는?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;핵심은 Set은 배열처럼 생겼지만 배열은 아님. 즉 객체를 생성하는 것 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, Set &amp;rarr; Array로 변환하는 과정이 필요.&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;gt;이 부분은 오해하기 쉬운 포인트입니다. 실제로는 잘 나오는 게 아니라, Set 객체를 그대로 콘솔에 보여주는 것뿐입니다&lt;/p&gt;
&lt;pre id=&quot;code_1746148465899&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const uniqueNumbers = new Set([1, 2, 2, 3, 4, 4]);
console.log(uniqueNumbers);
// 결과: Set(4) {1, 2, 3, 4} &amp;larr; 배열 아님!

uniqueNumbers.forEach(n =&amp;gt; console.log(n)); // OK

uniqueNumbers[0]; // ❌ undefined

console.log([...uniqueNumbers]); // [1, 2, 3, 4]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;배열 중복 제거에 활용 - 객체형 배열일때&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1746148589547&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const users = [
  { id: 1, name: 'Tom' },
  { id: 2, name: 'Jerry' },
  { id: 1, name: 'Tom' }
];

const uniqueIds = new Set(users.map(u =&amp;gt; u.id));
console.log([...uniqueIds]); // [1, 2]&lt;/code&gt;&lt;/pre&gt;</description>
      <category>IT/javascript</category>
      <category>#set</category>
      <category>JavaScript</category>
      <category>new Set</category>
      <category>중복</category>
      <author>카제인나트륨.</author>
      <guid isPermaLink="true">https://jdk0.tistory.com/55</guid>
      <comments>https://jdk0.tistory.com/55#entry55comment</comments>
      <pubDate>Fri, 2 May 2025 10:17:22 +0900</pubDate>
    </item>
    <item>
      <title>마비노기 모바일 후기</title>
      <link>https://jdk0.tistory.com/54</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/z4GVn/btsM1n0P80l/GTgReysXikCYPGI4NmeVZk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/z4GVn/btsM1n0P80l/GTgReysXikCYPGI4NmeVZk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/z4GVn/btsM1n0P80l/GTgReysXikCYPGI4NmeVZk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fz4GVn%2FbtsM1n0P80l%2FGTgReysXikCYPGI4NmeVZk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;309&quot; data-start=&quot;111&quot; data-ke-size=&quot;size16&quot;&gt;RPG 게임을 안 한 지 몇 년이 지났지만, 마비노기 모바일이 출시된다는 광고를 보고 오랜만에 관심이 생겼습니다. 27일 자정이 되자마자 바로 플레이를 시작했습니다.&lt;br /&gt;예전에 마비노기와 마영전도 즐겨 했었지만, 그만둔 지는 10년을 훌쩍 넘었습니다. 덕분에 추억을 떠올리며, 동시에 선입견 없이 새로운 마음으로 게임을 즐길 수 있을 것 같았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote style=&quot;font-size: 25px; border-left: 5px solid black; color: black; background-color: #ffffff;&quot; data-ke-style=&quot;style2&quot;&gt;서버 및 직업&lt;/blockquote&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; 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;1320&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bntL6x/btsMZkShrrD/fUZs5k60NS8ZtKQFGXop01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bntL6x/btsMZkShrrD/fUZs5k60NS8ZtKQFGXop01/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bntL6x/btsMZkShrrD/fUZs5k60NS8ZtKQFGXop01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbntL6x%2FbtsMZkShrrD%2FfUZs5k60NS8ZtKQFGXop01%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;1320&quot; height=&quot;540&quot; data-origin-width=&quot;1320&quot; data-origin-height=&quot;540&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-end=&quot;372&quot; data-start=&quot;270&quot; data-ke-size=&quot;size16&quot;&gt;서버는 총 7개가 있는데, 저는 고민 끝에 '메이븐' 서버로 들어갔습니다. (특별한 이유는 없습니다.)&lt;br /&gt;그중에서도 '데이안', '아이라', '던컨'은 유저 수가 많고 활발한 분위기로 인기 서버로 보였습니다.&lt;/p&gt;
&lt;p data-end=&quot;372&quot; data-start=&quot;270&quot; 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;1320&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHOHVX/btsM02bR9uq/E3I6kzTVGYTkYRaIP1Kri1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHOHVX/btsM02bR9uq/E3I6kzTVGYTkYRaIP1Kri1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHOHVX/btsM02bR9uq/E3I6kzTVGYTkYRaIP1Kri1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHOHVX%2FbtsM02bR9uq%2FE3I6kzTVGYTkYRaIP1Kri1%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;1320&quot; height=&quot;540&quot; data-origin-width=&quot;1320&quot; data-origin-height=&quot;540&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1320&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bw3wSJ/btsM1iyKrse/HN4x8EiIgkYS8MQApUCGIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bw3wSJ/btsM1iyKrse/HN4x8EiIgkYS8MQApUCGIK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bw3wSJ/btsM1iyKrse/HN4x8EiIgkYS8MQApUCGIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbw3wSJ%2FbtsM1iyKrse%2FHN4x8EiIgkYS8MQApUCGIK%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;1320&quot; height=&quot;540&quot; data-origin-width=&quot;1320&quot; data-origin-height=&quot;540&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-end=&quot;491&quot; data-start=&quot;352&quot; data-ke-size=&quot;size16&quot;&gt;직업은 전사, 궁수, 마법사, 힐러, 음유시인까지 다섯 가지가 있습니다.&lt;br /&gt;각 직업의 스킬을 짧은 영상으로 보여줘서 어떤 스타일인지 감을 잡기 좋았어요.&lt;br /&gt;덕분에 뭘 고를지 고민하는 재미도 있고, 처음 시작할 때 꽤 친절하다는 느낌을 받았습니다.&lt;/p&gt;
&lt;p data-end=&quot;491&quot; data-start=&quot;352&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote style=&quot;font-size: 25px; border-left: 5px solid black; color: black; background-color: #ffffff;&quot; data-ke-style=&quot;style2&quot;&gt;던전 및 전투&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;

            &lt;figure class=&quot;unsupported component-kakaotv&quot; contenteditable=&quot;false&quot; style=&quot;background:#000;margin:16px 0;min-height:72px;padding:10px 16px;display:flex;align-items:center;justify-content:center;text-align:center;box-sizing:border-box;width:100%;max-width:100%;&quot;&gt;
                &lt;p contenteditable=&quot;false&quot; style=&quot;margin:0;color:#8a8a8a;font-size:13px;line-height:1.6;user-select:none;pointer-events:none;&quot;&gt;동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.&lt;/p&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;/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;1320&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WgSaC/btsMZthiwuu/vPtTGjOH23YoFctHAzBSDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WgSaC/btsMZthiwuu/vPtTGjOH23YoFctHAzBSDk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WgSaC/btsMZthiwuu/vPtTGjOH23YoFctHAzBSDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWgSaC%2FbtsMZthiwuu%2FvPtTGjOH23YoFctHAzBSDk%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;1320&quot; height=&quot;540&quot; data-origin-width=&quot;1320&quot; data-origin-height=&quot;540&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 data-ke-size=&quot;size16&quot;&gt;개인적으로 아쉬운 부분은 타겟변경이 쉬웠으면 합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIbwSQ/btsM0ce3LC2/JwfoqK3oxkWUDuogkAWjS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIbwSQ/btsM0ce3LC2/JwfoqK3oxkWUDuogkAWjS0/img.png&quot; data-origin-width=&quot;1320&quot; data-origin-height=&quot;540&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIbwSQ/btsM0ce3LC2/JwfoqK3oxkWUDuogkAWjS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIbwSQ%2FbtsM0ce3LC2%2FJwfoqK3oxkWUDuogkAWjS0%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;1320&quot; height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dNfoDg/btsMZfcvdEu/T7SnTKdm7GHp1cNc2jTeB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dNfoDg/btsMZfcvdEu/T7SnTKdm7GHp1cNc2jTeB0/img.png&quot; data-origin-width=&quot;1320&quot; data-origin-height=&quot;540&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dNfoDg/btsMZfcvdEu/T7SnTKdm7GHp1cNc2jTeB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdNfoDg%2FbtsMZfcvdEu%2FT7SnTKdm7GHp1cNc2jTeB0%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;1320&quot; height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nmC4b/btsM1PplK0E/01bVtmDKpKUs2R2BulBZgk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nmC4b/btsM1PplK0E/01bVtmDKpKUs2R2BulBZgk/img.png&quot; data-origin-width=&quot;1320&quot; data-origin-height=&quot;540&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.4186%; margin-right: 10px; margin-top: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nmC4b/btsM1PplK0E/01bVtmDKpKUs2R2BulBZgk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnmC4b%2FbtsM1PplK0E%2F01bVtmDKpKUs2R2BulBZgk%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;1320&quot; height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3TZOh/btsMZyiyrPr/HkpnDbbfXZWpbla3CQYke0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3TZOh/btsMZyiyrPr/HkpnDbbfXZWpbla3CQYke0/img.png&quot; data-origin-width=&quot;1320&quot; data-origin-height=&quot;540&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.4186%; margin-top: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3TZOh/btsMZyiyrPr/HkpnDbbfXZWpbla3CQYke0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3TZOh%2FbtsMZyiyrPr%2FHkpnDbbfXZWpbla3CQYke0%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;1320&quot; height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&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;1320&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/viWXQ/btsM1JvVqEJ/4D4ZfjsodhLZdOkZJ7jd4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/viWXQ/btsM1JvVqEJ/4D4ZfjsodhLZdOkZJ7jd4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/viWXQ/btsM1JvVqEJ/4D4ZfjsodhLZdOkZJ7jd4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FviWXQ%2FbtsM1JvVqEJ%2F4D4ZfjsodhLZdOkZJ7jd4k%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;1320&quot; height=&quot;540&quot; data-origin-width=&quot;1320&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1320&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uTpC2/btsMZz2Qvpy/rfnUMKTJRJrYIK3Wpbio4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uTpC2/btsMZz2Qvpy/rfnUMKTJRJrYIK3Wpbio4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uTpC2/btsMZz2Qvpy/rfnUMKTJRJrYIK3Wpbio4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuTpC2%2FbtsMZz2Qvpy%2FrfnUMKTJRJrYIK3Wpbio4K%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;1320&quot; height=&quot;540&quot; data-origin-width=&quot;1320&quot; data-origin-height=&quot;540&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;blockquote style=&quot;font-size: 25px; border-left: 5px solid black; color: black; background-color: #ffffff;&quot; data-ke-style=&quot;style2&quot;&gt;캐시샵&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1320&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EyEul/btsM1bzJgkQ/gS5vHAtWepKyC8IiQDwbb0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EyEul/btsM1bzJgkQ/gS5vHAtWepKyC8IiQDwbb0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EyEul/btsM1bzJgkQ/gS5vHAtWepKyC8IiQDwbb0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEyEul%2FbtsM1bzJgkQ%2FgS5vHAtWepKyC8IiQDwbb0%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;1320&quot; height=&quot;540&quot; data-origin-width=&quot;1320&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1320&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cd6nf3/btsM1Lgd0Li/roKkQucL4wv4IbcRd1Z2M0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cd6nf3/btsM1Lgd0Li/roKkQucL4wv4IbcRd1Z2M0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cd6nf3/btsM1Lgd0Li/roKkQucL4wv4IbcRd1Z2M0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcd6nf3%2FbtsM1Lgd0Li%2FroKkQucL4wv4IbcRd1Z2M0%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;1320&quot; height=&quot;540&quot; data-origin-width=&quot;1320&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1320&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biKXtg/btsMZWjf40E/MkOTA8M2NWsMUwHzXpKmyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biKXtg/btsMZWjf40E/MkOTA8M2NWsMUwHzXpKmyk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biKXtg/btsMZWjf40E/MkOTA8M2NWsMUwHzXpKmyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiKXtg%2FbtsMZWjf40E%2FMkOTA8M2NWsMUwHzXpKmyk%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;1320&quot; height=&quot;540&quot; data-origin-width=&quot;1320&quot; data-origin-height=&quot;540&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;현금과 캐시의 비율은 10:1정도 됩니다. 아직까지는 무과금으로 플레이하는데 무리는 없지만, 재미가 있다면 적당히 써 볼 생각입니다. 토탈 패키지의 누적 구매 보상을 받는 사람과 받지 않는 사람의 차이는 커질 것 같은 느낌입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote style=&quot;font-size: 25px; border-left: 5px solid black; color: black; background-color: #ffffff;&quot; data-ke-style=&quot;style2&quot;&gt;기타&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1320&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JwtX9/btsMZE32mOa/htrJTKIUnGOx1PTmdHcTlK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JwtX9/btsMZE32mOa/htrJTKIUnGOx1PTmdHcTlK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JwtX9/btsMZE32mOa/htrJTKIUnGOx1PTmdHcTlK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJwtX9%2FbtsMZE32mOa%2FhtrJTKIUnGOx1PTmdHcTlK%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;1320&quot; height=&quot;540&quot; data-origin-width=&quot;1320&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1320&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btcQCe/btsM1f9YGo2/zU0OPNB5J7KNIEUWBsnrlK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btcQCe/btsM1f9YGo2/zU0OPNB5J7KNIEUWBsnrlK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btcQCe/btsM1f9YGo2/zU0OPNB5J7KNIEUWBsnrlK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtcQCe%2FbtsM1f9YGo2%2FzU0OPNB5J7KNIEUWBsnrlK%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;1320&quot; height=&quot;540&quot; data-origin-width=&quot;1320&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1320&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SDpTv/btsM1mVjKk6/HikUO69POUzjp40wcUeoYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SDpTv/btsM1mVjKk6/HikUO69POUzjp40wcUeoYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SDpTv/btsM1mVjKk6/HikUO69POUzjp40wcUeoYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSDpTv%2FbtsM1mVjKk6%2FHikUO69POUzjp40wcUeoYK%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;1320&quot; height=&quot;540&quot; data-origin-width=&quot;1320&quot; data-origin-height=&quot;540&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;그래픽이나 적절한 더빙, 사운드도 좋다고 생각합니다.&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;플립5를 이용하고 있는데 그래픽 품질을 높게 설정해서 플레이하긴 하지만, 발열이나 배터리소모가 너무 심합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;팬층이 많고 기대감이 큰 만큼 비판하는 여론도 많은 것 같습니다만, 너무 단기적인 평가보다는 시간이 지나며 어떻게 개선되는지가 더 중요할 것 같다는 생각도 들었어요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나름 재미있게 플레이하는 한 유저로서 점차 개선되는 게임이 되었으면 좋겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;013&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/013.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/013.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>일상</category>
      <category>게임</category>
      <category>마비노기</category>
      <category>마비노기모바일</category>
      <category>모바일게임</category>
      <category>신작</category>
      <category>후기</category>
      <author>카제인나트륨.</author>
      <guid isPermaLink="true">https://jdk0.tistory.com/54</guid>
      <comments>https://jdk0.tistory.com/54#entry54comment</comments>
      <pubDate>Fri, 28 Mar 2025 16:45:16 +0900</pubDate>
    </item>
    <item>
      <title>[javascript] 자바스크립트 및 제이쿼리로 체크박스 값을 동적으로 출력하는 방법</title>
      <link>https://jdk0.tistory.com/53</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;체크박스를 선택할 때 체크박스 데이터를&amp;nbsp; 출력하는 법&lt;/p&gt;
&lt;p class=&quot;codepen&quot; style=&quot;height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;&quot; data-height=&quot;300&quot; data-theme-id=&quot;dark&quot; data-default-tab=&quot;result&quot; data-slug-hash=&quot;ByaYNXM&quot; data-pen-title=&quot;chekcboxoutput_vanila&quot; data-user=&quot;xyyhsawg-the-selector&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;See the Pen &lt;a href=&quot;https://codepen.io/xyyhsawg-the-selector/pen/ByaYNXM&quot;&gt; chekcboxoutput_vanila&lt;/a&gt; by sodium casein (&lt;a href=&quot;https://codepen.io/xyyhsawg-the-selector&quot;&gt;@xyyhsawg-the-selector&lt;/a&gt;) on &lt;a href=&quot;https://codepen.io&quot;&gt;CodePen&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;script src=&quot;https://public.codepenassets.com/embed/index.js&quot;&gt;&lt;/script&gt;</description>
      <category>checkbox</category>
      <category>JavaScript</category>
      <category>jquery</category>
      <category>체크박스</category>
      <author>카제인나트륨.</author>
      <guid isPermaLink="true">https://jdk0.tistory.com/53</guid>
      <comments>https://jdk0.tistory.com/53#entry53comment</comments>
      <pubDate>Mon, 17 Mar 2025 16:46:21 +0900</pubDate>
    </item>
    <item>
      <title>[PHP] 알면 좋은 배열 함수 array_map, array_filter, array_merge , array_diff, array_column, array_unique</title>
      <link>https://jdk0.tistory.com/52</link>
      <description>&lt;blockquote style=&quot;font-size: 25px; border-left: 5px solid black; color: black; background-color: #ffffff;&quot; data-ke-style=&quot;style2&quot;&gt;array_map()&lt;/blockquote&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; 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_1740651662162&quot; class=&quot;php&quot; data-ke-language=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$numbers = [1, 2, 3, 4];
$squared = array_map(function($n) { return $n * $n; }, $numbers);
print_r($squared);


결과
Array
(
    [0] =&amp;gt; 1
    [1] =&amp;gt; 4
    [2] =&amp;gt; 9
    [3] =&amp;gt; 16
)&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;blockquote style=&quot;font-size: 25px; border-left: 5px solid black; color: black; background-color: #ffffff;&quot; data-ke-style=&quot;style2&quot;&gt;array_filter ()&lt;/blockquote&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; 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_1740651727410&quot; class=&quot;php&quot; data-ke-language=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$numbers = [1, 2, 3, 4, 5];
$even_numbers = array_filter($numbers, function($n) { return $n % 2 == 0; });
print_r($even_numbers);


결과
Array
(
    [1] =&amp;gt; 2
    [3] =&amp;gt; 4
)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;응용&lt;/h2&gt;
&lt;pre id=&quot;code_1740651953074&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$code = &quot;select * from code where code in (101,102,103,104)&quot;; 결과를 가정

$code_101 =	array_filter($code, function($data){ return $data['code'] == '101'; });
$code_102 =	array_filter($code, function($data){ return $data['code'] == '102'; });
$code_103 =	array_filter($code, function($data){ return $data['code'] == '103'; });
$code_104 =	array_filter($code, function($data){ return $data['code'] == '104'; });&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;blockquote style=&quot;font-size: 25px; border-left: 5px solid black; color: black; background-color: #ffffff;&quot; data-ke-style=&quot;style2&quot;&gt;array_merge()&lt;/blockquote&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;두 개 이상의 배열을 합쳐서 하나의 배열로 반환&lt;/p&gt;
&lt;pre id=&quot;code_1740652010970&quot; class=&quot;php&quot; data-ke-language=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$array1 = [1, 2, 3];
$array2 = [4, 5, 6];
$merged = array_merge($array1, $array2);
print_r($merged);

결과
Array
(
    [0] =&amp;gt; 1
    [1] =&amp;gt; 2
    [2] =&amp;gt; 3
    [3] =&amp;gt; 4
    [4] =&amp;gt; 5
    [5] =&amp;gt; 6
)&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;blockquote style=&quot;font-size: 25px; border-left: 5px solid black; color: black; background-color: #ffffff;&quot; data-ke-style=&quot;style2&quot;&gt;array_diff()&lt;/blockquote&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;첫 번째 배열에서 다른 배열들과 겹치지 않는 값을 반환&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1740652065514&quot; class=&quot;php&quot; data-ke-language=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$array1 = [1, 2, 3, 4];
$array2 = [3, 4, 5, 6];
$diff = array_diff($array1, $array2);
print_r($diff);

결과
Array
(
    [0] =&amp;gt; 1
    [1] =&amp;gt; 2
)&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote style=&quot;font-size: 25px; border-left: 5px solid black; color: black; background-color: #ffffff;&quot; data-ke-style=&quot;style2&quot;&gt;array_column()&lt;/blockquote&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;다차원 배열에서 특정 열을 추출하여 새로운 배열을 반환&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;키를 추출한다면 array_keys(array)&lt;/p&gt;
&lt;pre id=&quot;code_1740652171115&quot; class=&quot;php&quot; data-ke-language=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$array = [
    ['id' =&amp;gt; 1, 'name' =&amp;gt; 'Alice'],
    ['id' =&amp;gt; 2, 'name' =&amp;gt; 'Bob'],
    ['id' =&amp;gt; 3, 'name' =&amp;gt; 'Charlie']
];
$names = array_column($array, 'name');
print_r($names);

결과
Array
(
    [0] =&amp;gt; Alice
    [1] =&amp;gt; Bob
    [2] =&amp;gt; Charlie
)&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;blockquote style=&quot;font-size: 25px; border-left: 5px solid black; color: black; background-color: #ffffff;&quot; data-ke-style=&quot;style2&quot;&gt;array_unique()&lt;/blockquote&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;배열의 모든 값을 더하여 합계를 반환&lt;/p&gt;
&lt;pre id=&quot;code_1740652245378&quot; class=&quot;php&quot; data-ke-language=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$array = [1, 2, 2, 3, 4, 4, 5];
$unique = array_unique($array);
print_r($unique);

결과
Array
(
    [0] =&amp;gt; 1
    [1] =&amp;gt; 2
    [3] =&amp;gt; 3
    [4] =&amp;gt; 4
    [6] =&amp;gt; 5
)&lt;/code&gt;&lt;/pre&gt;</description>
      <category>IT/PHP | CI</category>
      <category>php</category>
      <category>배열</category>
      <category>배열함수</category>
      <category>코드이그나이터</category>
      <author>카제인나트륨.</author>
      <guid isPermaLink="true">https://jdk0.tistory.com/52</guid>
      <comments>https://jdk0.tistory.com/52#entry52comment</comments>
      <pubDate>Thu, 27 Feb 2025 19:32:08 +0900</pubDate>
    </item>
    <item>
      <title>레더 프랙치기</title>
      <link>https://jdk0.tistory.com/51</link>
      <description>&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;1050&quot; data-origin-height=&quot;1400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NmXqS/btsMvRBysfy/EonaN0NbTDhZ3q8Ns00s20/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NmXqS/btsMvRBysfy/EonaN0NbTDhZ3q8Ns00s20/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NmXqS/btsMvRBysfy/EonaN0NbTDhZ3q8Ns00s20/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNmXqS%2FbtsMvRBysfy%2FEonaN0NbTDhZ3q8Ns00s20%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;700&quot; height=&quot;933&quot; data-origin-width=&quot;1050&quot; data-origin-height=&quot;1400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3년전 레더 프랙을 구매했었는데 훌쩍 커버렸다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래쪽 해머들에게 조명도 가리고 냅두다가는 더더욱 무지막지하게 클 것 같은데 프랙을 쳐야할 순간이 드디어 왔다는 것을 깨달았다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수족관 쇼핑몰에보면 &lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;연산호용 가위를 팔긴 하지만, 가격이 좀 비싼편이었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1만원에서 2만원사이 정도 본것 같은데 저는 네이버쇼핑에서 의료용 가위를 검색해서 샀어요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1054&quot; data-origin-height=&quot;855&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bda2HN/btsMs9322j8/Y044SmfuVHaXv3qbU0TFN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bda2HN/btsMs9322j8/Y044SmfuVHaXv3qbU0TFN1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bda2HN/btsMs9322j8/Y044SmfuVHaXv3qbU0TFN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbda2HN%2FbtsMs9322j8%2FY044SmfuVHaXv3qbU0TFN1%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;800&quot; height=&quot;649&quot; data-origin-width=&quot;1054&quot; data-origin-height=&quot;855&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&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;&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;1400&quot; data-origin-height=&quot;1050&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cuXsHr/btsMtnvs7wt/cNDYRnCHlMTMLDfmcQfeB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cuXsHr/btsMtnvs7wt/cNDYRnCHlMTMLDfmcQfeB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cuXsHr/btsMtnvs7wt/cNDYRnCHlMTMLDfmcQfeB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcuXsHr%2FbtsMtnvs7wt%2FcNDYRnCHlMTMLDfmcQfeB0%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;1400&quot; height=&quot;1050&quot; data-origin-width=&quot;1400&quot; data-origin-height=&quot;1050&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제는 프랙베이스에서 성형락에 이동을 해버리는 바람에 꺼내서 자를 수가 없어서 통째로 잘라내야 했습니다. 유튜브나 등등 다른곳에서 참고할땐 다들 리프딥도 사용하고 그랬지만.. 저것은 도저히 꺼낼수가 없었습니다. 그래서 가위만 열탕소독만 하고 바로 잘라내었습니다. 처음하면서 정신없다보니 사진 찍을 겨를이 없었네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dCi3hl/btsMuxc1usf/mJ9YgHkRgzp84cuifE3uT0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dCi3hl/btsMuxc1usf/mJ9YgHkRgzp84cuifE3uT0/img.png&quot; data-origin-width=&quot;389&quot; data-origin-height=&quot;373&quot; data-is-animation=&quot;false&quot; style=&quot;width: 57.4918%; margin-right: 10px;&quot; data-widthpercent=&quot;58.17&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dCi3hl/btsMuxc1usf/mJ9YgHkRgzp84cuifE3uT0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdCi3hl%2FbtsMuxc1usf%2FmJ9YgHkRgzp84cuifE3uT0%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;389&quot; height=&quot;373&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c3KMvn/btsMvyWwwVx/1hxgVkdgj1t8jesBjvB3z1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c3KMvn/btsMvyWwwVx/1hxgVkdgj1t8jesBjvB3z1/img.png&quot; data-origin-width=&quot;1050&quot; data-origin-height=&quot;1400&quot; data-is-animation=&quot;false&quot; style=&quot;width: 41.3454%;&quot; data-widthpercent=&quot;41.83&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c3KMvn/btsMvyWwwVx/1hxgVkdgj1t8jesBjvB3z1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc3KMvn%2FbtsMvyWwwVx%2F1hxgVkdgj1t8jesBjvB3z1%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;1050&quot; height=&quot;1400&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vlK1H/btsMvBTh10n/AIVUL62kacfHej3llaYHWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vlK1H/btsMvBTh10n/AIVUL62kacfHej3llaYHWk/img.png&quot; data-origin-width=&quot;1400&quot; data-origin-height=&quot;1050&quot; data-is-animation=&quot;false&quot; style=&quot;width: 63.2558%; margin-right: 10px; margin-top: 10px;&quot; data-widthpercent=&quot;64&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vlK1H/btsMvBTh10n/AIVUL62kacfHej3llaYHWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvlK1H%2FbtsMvBTh10n%2FAIVUL62kacfHej3llaYHWk%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;1400&quot; height=&quot;1050&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2SmGQ/btsMtqyR3xc/UotETZgPgMDN4uyvQkQwsk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2SmGQ/btsMtqyR3xc/UotETZgPgMDN4uyvQkQwsk/img.png&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;400&quot; data-is-animation=&quot;false&quot; data-filename=&quot;blob&quot; width=&quot;500&quot; height=&quot;667&quot; style=&quot;width: 35.5814%; margin-top: 10px;&quot; data-widthpercent=&quot;36&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2SmGQ/btsMtqyR3xc/UotETZgPgMDN4uyvQkQwsk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2SmGQ%2FbtsMtqyR3xc%2FUotETZgPgMDN4uyvQkQwsk%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;300&quot; height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빠르게 철사를 레더에 뚫고 아서 프랙베이스에 본드를 이용해서 철사를 고정해놓았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자르고 보니 버섯 머리 잘라놓은 것 같아요&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1400&quot; data-origin-height=&quot;1050&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GK8oT/btsMtrxS2L7/UQYKsVVdBWAh4IAfxQuCD1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GK8oT/btsMtrxS2L7/UQYKsVVdBWAh4IAfxQuCD1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GK8oT/btsMtrxS2L7/UQYKsVVdBWAh4IAfxQuCD1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGK8oT%2FbtsMtrxS2L7%2FUQYKsVVdBWAh4IAfxQuCD1%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;1400&quot; height=&quot;1050&quot; data-origin-width=&quot;1400&quot; data-origin-height=&quot;1050&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;프랙 작업을 진행하고 3~4시간 지나니 팁도 피고 나름 건강한 것 같습니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;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;+1주일이 지날때 머리부분은 점점 오므려졌습니다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1050&quot; data-origin-height=&quot;1400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbq4Hy/btsMvyCjCbR/6RgiI8zbU5kjQZB9EmRpFK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbq4Hy/btsMvyCjCbR/6RgiI8zbU5kjQZB9EmRpFK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbq4Hy/btsMvyCjCbR/6RgiI8zbU5kjQZB9EmRpFK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbbq4Hy%2FbtsMvyCjCbR%2F6RgiI8zbU5kjQZB9EmRpFK%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;1050&quot; height=&quot;1400&quot; data-origin-width=&quot;1050&quot; data-origin-height=&quot;1400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;+2주일이 지나니 팁은 아직 나오지 않지만, 머리부분이 점점 커지는 것 같습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1050&quot; data-origin-height=&quot;1400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmhcCS/btsMu9Js7Zw/hptQWCEJWE1Y88kLw7fD90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmhcCS/btsMu9Js7Zw/hptQWCEJWE1Y88kLw7fD90/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmhcCS/btsMu9Js7Zw/hptQWCEJWE1Y88kLw7fD90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmhcCS%2FbtsMu9Js7Zw%2FhptQWCEJWE1Y88kLw7fD90%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;1050&quot; height=&quot;1400&quot; data-origin-width=&quot;1050&quot; data-origin-height=&quot;1400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;+한달정도 지나니 팁이 서서히 올라오기 시작했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1050&quot; data-origin-height=&quot;1400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIY6MN/btsMKE9Yyrn/Sak1rJ7dE77b8jSlyhKhq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIY6MN/btsMKE9Yyrn/Sak1rJ7dE77b8jSlyhKhq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIY6MN/btsMKE9Yyrn/Sak1rJ7dE77b8jSlyhKhq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIY6MN%2FbtsMKE9Yyrn%2FSak1rJ7dE77b8jSlyhKhq0%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;1050&quot; height=&quot;1400&quot; data-origin-width=&quot;1050&quot; data-origin-height=&quot;1400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>일상</category>
      <category>레더</category>
      <category>산호</category>
      <category>프랙</category>
      <category>해수</category>
      <category>해수어항</category>
      <author>카제인나트륨.</author>
      <guid isPermaLink="true">https://jdk0.tistory.com/51</guid>
      <comments>https://jdk0.tistory.com/51#entry51comment</comments>
      <pubDate>Mon, 24 Feb 2025 21:19:59 +0900</pubDate>
    </item>
    <item>
      <title>[javascript] form 유효성 검증 상남자답게 배열로 작성하기</title>
      <link>https://jdk0.tistory.com/50</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;설명할 것이 딱히 없는 내용이라 불필요한 글은 쓰지 않겠습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1739945146995&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function proc(){
    const fields = [
            { id: &quot;title&quot;, message: &quot;제목을 입력해주세요.&quot; },
            { id: &quot;writer&quot;, message: &quot;작성자를 입력해주세요.&quot; },
            { id: &quot;writer_email&quot;, message: &quot;이메일을 입력해주세요.&quot; },
            { id: &quot;content&quot;, message: &quot;내용을 입력해주세요.&quot; }
    ];

    for (const field of fields) {
        const el = document.querySelector(`#${field.id}`);
        if (!el.value.trim()) {
            alert(field.message); // 해당 필드에 맞는 알럿 메시지 출력
            el.focus();
            return false;
        }
    }
	
	 // 이메일 유효성 검사 추가
    const emailField = document.querySelector(&quot;#writer_email&quot;);
    const emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;

    if (!emailPattern.test(emailField.value.trim())) {
        alert(&quot;올바른 이메일 형식을 입력해주세요.&quot;);
        emailField.focus();
        return 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;&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 class=&quot;codepen&quot; style=&quot;height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;&quot; data-height=&quot;300&quot; data-theme-id=&quot;dark&quot; data-default-tab=&quot;result&quot; data-slug-hash=&quot;JojGWwJ&quot; data-pen-title=&quot;폼검증&quot; data-user=&quot;xyyhsawg-the-selector&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;See the Pen &lt;a href=&quot;https://codepen.io/xyyhsawg-the-selector/pen/JojGWwJ&quot;&gt; 폼검증&lt;/a&gt; by sodium casein (&lt;a href=&quot;https://codepen.io/xyyhsawg-the-selector&quot;&gt;@xyyhsawg-the-selector&lt;/a&gt;) on &lt;a href=&quot;https://codepen.io&quot;&gt;CodePen&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;
&lt;script src=&quot;https://public.codepenassets.com/embed/index.js&quot;&gt;&lt;/script&gt;
&lt;/p&gt;</description>
      <category>IT/javascript</category>
      <category>JavaScript</category>
      <category>유효성</category>
      <category>유효성 검사</category>
      <category>자바스크립트</category>
      <author>카제인나트륨.</author>
      <guid isPermaLink="true">https://jdk0.tistory.com/50</guid>
      <comments>https://jdk0.tistory.com/50#entry50comment</comments>
      <pubDate>Wed, 19 Feb 2025 15:07:08 +0900</pubDate>
    </item>
  </channel>
</rss>