<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>마론미밍의 아뜰리에</title>
    <link>https://malonmiming.tistory.com/</link>
    <description>YOU WILL LIKE ME♡</description>
    <language>ko</language>
    <pubDate>Wed, 15 Apr 2026 05:37:12 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>마론미밍</managingEditor>
    <image>
      <title>마론미밍의 아뜰리에</title>
      <url>https://tistory1.daumcdn.net/tistory/2976096/attach/142719d3e460429583af59d704974820</url>
      <link>https://malonmiming.tistory.com</link>
    </image>
    <item>
      <title>[자바스크립트]  배열 작은수 5개를 제외한 수 오름차순으로 정렬</title>
      <link>https://malonmiming.tistory.com/284</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;문제&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;text-align: left;&quot;&gt;정수로 이루어진 리스트&amp;nbsp;&lt;/span&gt;num_list&lt;span style=&quot;text-align: left;&quot;&gt;가 주어집니다.&amp;nbsp;&lt;/span&gt;num_list&lt;span style=&quot;text-align: left;&quot;&gt;에서 가장 작은 5개의 수를 제외한 수들을 오름차순으로 담은 리스트를 return하도록 solution 함수를 완성해주세요.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;text-align: left;&quot;&gt;정답&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1721890063121&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(num_list) {
    return num_list.sort((a, b) =&amp;gt; a - b).splice(5);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/자바스크립트 문제 풀이</category>
      <category>Sort</category>
      <category>Splice</category>
      <category>자바스크립트</category>
      <author>마론미밍</author>
      <guid isPermaLink="true">https://malonmiming.tistory.com/284</guid>
      <comments>https://malonmiming.tistory.com/284#entry284comment</comments>
      <pubDate>Thu, 25 Jul 2024 16:23:38 +0900</pubDate>
    </item>
    <item>
      <title>[자바스크립트]  실수를 정수로 바꾸는 방법</title>
      <link>https://malonmiming.tistory.com/283</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;문제&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;text-align: left;&quot;&gt;실수&amp;nbsp;&lt;/span&gt;flo&lt;span style=&quot;text-align: left;&quot;&gt;가 매개 변수로 주어질 때,&amp;nbsp;&lt;/span&gt;flo&lt;span style=&quot;text-align: left;&quot;&gt;의 정수 부분을 return하도록 solution 함수를 완성해주세요.&lt;/span&gt;&lt;/span&gt;&lt;/p&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;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;text-align: left;&quot;&gt;정답&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1721890063121&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(flo) {

    const test = Math.floor(flo);
    console.log(test);
    return test;
}&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;/h4&gt;
&lt;pre id=&quot;code_1721891295044&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const solution = flo =&amp;gt; ~~flo;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/자바스크립트 문제 풀이</category>
      <category>floor</category>
      <category>실수를 정수로</category>
      <category>자바스크립트</category>
      <author>마론미밍</author>
      <guid isPermaLink="true">https://malonmiming.tistory.com/283</guid>
      <comments>https://malonmiming.tistory.com/283#entry283comment</comments>
      <pubDate>Thu, 25 Jul 2024 16:09:04 +0900</pubDate>
    </item>
    <item>
      <title>[자바스크립트] 문자열을 숫자로 변경해서 각 자리수의 합</title>
      <link>https://malonmiming.tistory.com/282</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;문제&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;text-align: left;&quot;&gt;한 자리 정수로 이루어진 문자열&amp;nbsp;&lt;/span&gt;num_str&lt;span style=&quot;text-align: left;&quot;&gt;이 주어질 때, 각 자리수의 합을 return하도록 solution 함수를 완성해주세요.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;text-align: left;&quot;&gt;정답&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1721890063121&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(num_str) {
   const a = num_str.split('')  //문자열을 '' 이용해서 배열로 변환시킨다.
   const b = a.map(Number)  // 배열에 있는 문자열을 숫자로 변경한다.
   return b.reduce((c,d)=&amp;gt;c+d);  // 배열의 숫자의 값을 더한다.
}&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;/h4&gt;
&lt;pre id=&quot;code_1721890313905&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(num_str) {
    return [...num_str].reduce((a, c) =&amp;gt; a + +c, 0)
}
// spread 연산자를 이용해 개별 배열 요소로 나눔.
// reduce 함수는 배열의 각 요소를 순회하면서 누적 합을 계산해. 
// 여기서 a는 누적값이고, c는 현재 배열 요소를 나타내.

// +c는 현재 배열 요소인 c를 숫자로 변환해. 예를 들어, '1'은 숫자 1로 변환됨.
// a + +c는 현재 누적값 a에 현재 요소 c를 숫자로 변환한 값을 더해.
// 초기값은 0이므로 reduce 함수는 첫 번째 요소부터 시작해 누적 합을 계산해.




// 새로운 배열을 반환하는 메소드
// spread operator, map, filter, slice, reduce 
// * splice는 원본데이터를 변경함&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/자바스크립트 문제 풀이</category>
      <category>map</category>
      <category>split</category>
      <category>문자열을 숫자로 변경해서 합</category>
      <category>자바스크립트</category>
      <author>마론미밍</author>
      <guid isPermaLink="true">https://malonmiming.tistory.com/282</guid>
      <comments>https://malonmiming.tistory.com/282#entry282comment</comments>
      <pubDate>Thu, 25 Jul 2024 15:50:34 +0900</pubDate>
    </item>
    <item>
      <title>[node] Express의 장점과 미들 웨어 설치</title>
      <link>https://malonmiming.tistory.com/281</link>
      <description>&lt;h3 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;Express의 장점&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;미들웨어 기반 아키텍처&lt;/b&gt;: 여러 미들웨어를 통해 요청과 응답을 처리.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;서드파티 미들웨어 통합&lt;/b&gt;: 기존 라이브러리 미들웨어를 플러그인처럼 사용하여 기능을 쉽게 확장.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;코어 비즈니스 로직에 집중&lt;/b&gt;: 반복적이고 번거로운 작업을 자동화하여 핵심 로직에 집중할 수 있음.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이 요약을 통해 Nodemon과 body-parser를 사용하여 개발 환경을 개선하고, Express의 미들웨어 기반 아키텍처의 장점을 활용하여 효율적으로 서버를 개발하는 방법을 이해할 수 있습니다.&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;Nodemon의 기능&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;자동 재시작&lt;/b&gt;: 파일이 변경될 때마다 서버를 자동으로 재시작.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;효율성 증가&lt;/b&gt;: 수동으로 서버를 재시작할 필요 없음.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Nodemon 설치&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1721712739405&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;npm install --save-dev nodemon&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;package.json에 start 스크립트 추가 &lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1721712792736&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&quot;scripts&quot;: {
  &quot;start&quot;: &quot;nodemon app.js&quot;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot;&gt;body-parser 기능&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;body-parser&lt;/b&gt;는 Express 애플리케이션에서 요청 본문을 파싱하여 req.body 객체에 데이터를 저장하는 미들웨어입니다.&lt;/li&gt;
&lt;li&gt;HTML 폼 데이터와 JSON 데이터를 파싱하는 데 주로 사용됩니다.&lt;/li&gt;
&lt;li&gt;body-parser&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot;&gt;는 이 요청 본문을 읽고, 사용하기 쉽게 JavaScript 객체로 변환해줍니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;파싱된 데이터는 이후의 미들웨어나 라우트 핸들러에서 쉽게 접근하고 사용할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;body-parser 설치&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1721712716348&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;npm install --save body-parser&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Express 애플리케이션에서 body-parser 설정&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1721712842666&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const express = require('express');
const bodyParser = require('body-parser');

const app = express();

// URL 인코딩된 데이터 파싱 (HTML 폼 데이터)
app.use(bodyParser.urlencoded({ extended: false }));
// extended: false는 Node.js 기본 querystring 모듈을 사용하여 쿼리 문자열을 파싱합니다.


// JSON 데이터 파싱
app.use(bodyParser.json());&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/node.js</category>
      <category>node express</category>
      <category>미들웨어</category>
      <category>익스프레스</category>
      <author>마론미밍</author>
      <guid isPermaLink="true">https://malonmiming.tistory.com/281</guid>
      <comments>https://malonmiming.tistory.com/281#entry281comment</comments>
      <pubDate>Tue, 23 Jul 2024 14:42:44 +0900</pubDate>
    </item>
    <item>
      <title>[node] 익스프레스 없이 http 요청하기</title>
      <link>https://malonmiming.tistory.com/280</link>
      <description>&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;HTTP 요청에서 데이터를 받는&amp;nbsp; 방법&lt;/h3&gt;
&lt;pre id=&quot;code_1721710215044&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const http = require(&quot;http&quot;); // 모듈 불러오기

//서버 생성
const server = http.createServer((req, res) =&amp;gt; {
  console.log(&quot;INCOMING REQUEST&quot;);
  console.log(req.method, req.url);
	
  // post 요청 처리
  if (req.method === &quot;POST&quot;) {
    let body = &quot;&quot;;
    
    // 데이터가 모두 수신된 후 처리  ++ body에 추가.
    req.on(&quot;end&quot;, () =&amp;gt; {
      // 클라이언트로부터 모든 data를 수신하면 실행한다.
      const userName = body.split(&quot;=&quot;)[1];
      res.end(&quot;&amp;lt;h1&amp;gt;&quot; + userName + &quot;&amp;lt;/h1&amp;gt;&quot;);
    });
    
    // body.split(&quot;=&quot;)는 body를 = 문자로 나눕니다. 예를 들어, body가 &quot;username=John&quot;이라면, 
    // split 결과는 [&quot;username&quot;, &quot;John&quot;]가 됩니다.
    // [1]은 리스트의 두 번째 요소를 선택합니다. 즉, &quot;John&quot;을 반환합니다.

    // 이 코드는 폼 데이터를 username 파라미터로 받아서 그 값을 HTML 응답으로 반환합니다. 
    // 만약 body가 빈 문자열이거나 올바른 형식이 아니라면 split(&quot;=&quot;)[1]는 오류를 발생시킬 수 있습니다. 
    // 이를 방지하기 위해서는 추가적인 유효성 검사가 필요합니다.
    //const userName = body.split(&quot;=&quot;)[1] || &quot;Unknown&quot;;

    // 데이터 수신중
    req.on(&quot;data&quot;, (chunk) =&amp;gt; {
      body += chunk;
    });
    // req.on(&quot;data&quot;, (data) =&amp;gt; (body += data));
    // data(chunk data)가 들어올 때마다 body에 chunk data를 넣는다.
    
   // get 요청처리
  } else {
    res.setHeader(&quot;Content-Type&quot;, &quot;text/html&quot;);
    res.end(
      '&amp;lt;form method=&quot;POST&quot;&amp;gt;&amp;lt;input type=&quot;text&quot; name=&quot;username&quot;&amp;gt;&amp;lt;button type=&quot;submit&quot;&amp;gt;Create User&amp;lt;/button&amp;gt;&amp;lt;/form&amp;gt;'
    );
  }
});
// 서버 포트 5001에서 대기
server.listen(5001);&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이 코드는 간단한 HTTP 서버를 설정합니다. 서버는 두 가지 유형의 요청을 처리합니다: POST와 GET.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;GET 요청&lt;/b&gt;: 서버는 HTML 폼을 반환합니다. 사용자가 폼을 제출하면 POST 요청이 전송됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;POST 요청&lt;/b&gt;: 서버는 요청 본문을 수신하고, 그 데이터를 처리합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;request.on의 이벤트&lt;/h4&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1. data : 데이터를 수신할 때 실행할 이벤트&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2. end : 클라이언트로부터 모든 데이터를 수신 완료했을 때 실행할 이벤트&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;3. error : 요청 처리 중 에러가 발생했을 때의 이벤트&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;express 를 이용해서 요청하기&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1721711931365&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 모듈가져오기
const express = require('express');
const bodyParser = require('body-parser');

// 익스프레스 앱 생성
const app = express();

// bodyParser 미들웨어 설정
app.use(bodyParser.urlencoded({ extended: false }));
//URL 인코딩된 데이터를 해석합니다. 이 미들웨어는 HTML 폼 데이터를 파싱하는 데 사용됩니다.

// POST 요청 처리
app.post('/user', (req, res, next) =&amp;gt; {
  res.send('&amp;lt;h1&amp;gt;User: ' + req.body.username + '&amp;lt;/h1&amp;gt;');
});
   // user 경로에 대한 POST 요청을 처리합니다.
   // 사용자가 폼을 제출하면, req.body.username에 접근하여 사용자 이름을 가져옵니다.
   // 가져온 사용자 이름을 &amp;lt;h1&amp;gt; 태그로 감싸서 응답으로 보냅니다. 

// GET 요청 처리:
app.get('/', (req, res, next) =&amp;gt; {
  res.send(
    '&amp;lt;form action=&quot;/user&quot; method=&quot;POST&quot;&amp;gt;&amp;lt;input type=&quot;text&quot; name=&quot;username&quot;&amp;gt;&amp;lt;button type=&quot;submit&quot;&amp;gt;Create User&amp;lt;/button&amp;gt;&amp;lt;/form&amp;gt;'
  );
});
//  경로에 대한 GET 요청을 처리합니다.
//  사용자에게 HTML 폼을 반환합니다. 사용자는 이 폼을 통해 사용자 이름을 입력하고 제출할 수 있습니다.

app.listen(5000);&lt;/code&gt;&lt;/pre&gt;</description>
      <category>IT/node.js</category>
      <category>Node</category>
      <category>node .end</category>
      <category>node .on</category>
      <category>node http</category>
      <author>마론미밍</author>
      <guid isPermaLink="true">https://malonmiming.tistory.com/280</guid>
      <comments>https://malonmiming.tistory.com/280#entry280comment</comments>
      <pubDate>Tue, 23 Jul 2024 14:13:47 +0900</pubDate>
    </item>
  </channel>
</rss>