<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Where The Streets Have No Name</title>
    <link>https://highheat.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Tue, 9 Jun 2026 18:08:53 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>highheat</managingEditor>
    <item>
      <title>linq.js</title>
      <link>https://highheat.tistory.com/731</link>
      <description>&lt;h1&gt;JavaScript에서 C# LINQ처럼 데이터 다루기 - linq.js 정리&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;업무 시스템이나 프론트엔드 개발을 하다 보면 배열 데이터에 대해 조회, 정렬, 그룹화, 집계 같은 처리를 많이 하게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JavaScript에서는 기본적으로 &lt;code&gt;map&lt;/code&gt;, &lt;code&gt;filter&lt;/code&gt;, &lt;code&gt;reduce&lt;/code&gt; 같은 메서드를 제공하지만,&lt;br /&gt;복잡한 데이터 처리에서는 코드가 길어지고 가독성이 떨어지는 경우가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이럴 때 사용할 수 있는 라이브러리 중 하나가 &lt;code&gt;linq.js&lt;/code&gt;이다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h1&gt;1. linq.js란?&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;linq.js는 .NET의 LINQ(Language Integrated Query)를 JavaScript에서 사용할 수 있도록 만든 라이브러리이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;배열, 객체, 문자열 등의 데이터를 &lt;code&gt;Enumerable&lt;/code&gt; 객체로 감싼 뒤 다음과 같은 메서드를 체이닝 방식으로 사용할 수 있다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Where&lt;/li&gt;
&lt;li&gt;Select&lt;/li&gt;
&lt;li&gt;GroupBy&lt;/li&gt;
&lt;li&gt;Join&lt;/li&gt;
&lt;li&gt;OrderBy&lt;/li&gt;
&lt;li&gt;Sum&lt;/li&gt;
&lt;li&gt;Average&lt;/li&gt;
&lt;li&gt;Distinct&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, JavaScript 데이터를 SQL이나 C# LINQ처럼 선언적으로 다룰 수 있게 해주는 도구라고 볼 수 있다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h1&gt;2. 현재 기준 저장소&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;linq.js는 원래 &lt;code&gt;neuecc/linq.js&lt;/code&gt; 프로젝트로 시작되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 원본 저장소는 2019년에 archive 되었고 현재는 유지보수되지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재는 &lt;code&gt;mihaifm/linq&lt;/code&gt; fork를 기준으로 사용하는 것이 좋다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;설치&lt;/h2&gt;
&lt;pre class=&quot;cmake&quot;&gt;&lt;code&gt;npm install linq&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;ES Module 방식&lt;/h2&gt;
&lt;pre class=&quot;capnproto&quot;&gt;&lt;code&gt;import Enumerable from &quot;linq&quot;;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;CommonJS 방식&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CommonJS 환경에서는 버전 3 사용이 안내되어 있다.&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;npm install linq@3&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;ebnf&quot;&gt;&lt;code&gt;const Enumerable = require(&quot;linq&quot;);&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h1&gt;3. 기본 사용법&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;linq.js의 기본 흐름은 다음과 같다.&lt;/p&gt;
&lt;pre class=&quot;css&quot;&gt;&lt;code&gt;Enumerable.from(데이터)
  .where(조건)
  .select(변환)
  .toArray();&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예제:&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;import Enumerable from &quot;linq&quot;;

const result = Enumerable.from([1, 2, 3, 4, 5, 6])
  .where(x =&amp;gt; x % 2 === 0)
  .select(x =&amp;gt; x * 10)
  .toArray();

console.log(result);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행 결과:&lt;/p&gt;
&lt;pre class=&quot;json&quot;&gt;&lt;code&gt;[20, 40, 60]&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h1&gt;4. JavaScript 기본 배열 메서드와 비교&lt;/h1&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;JavaScript 기본 방식&lt;/h2&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;const users = [
  { id: 1, name: &quot;Kim&quot;, dept: &quot;IT&quot;, age: 30 },
  { id: 2, name: &quot;Lee&quot;, dept: &quot;HR&quot;, age: 25 },
  { id: 3, name: &quot;Park&quot;, dept: &quot;IT&quot;, age: 35 }
];

const result = users
  .filter(user =&amp;gt; user.dept === &quot;IT&quot;)
  .map(user =&amp;gt; user.name);

console.log(result);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과:&lt;/p&gt;
&lt;pre class=&quot;json&quot;&gt;&lt;code&gt;[&quot;Kim&quot;, &quot;Park&quot;]&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;linq.js 방식&lt;/h2&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;import Enumerable from &quot;linq&quot;;

const result = Enumerable.from(users)
  .where(user =&amp;gt; user.dept === &quot;IT&quot;)
  .select(user =&amp;gt; user.name)
  .toArray();

console.log(result);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과:&lt;/p&gt;
&lt;pre class=&quot;json&quot;&gt;&lt;code&gt;[&quot;Kim&quot;, &quot;Park&quot;]&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단순한 &lt;code&gt;filter&lt;/code&gt;, &lt;code&gt;map&lt;/code&gt; 정도는 JavaScript 기본 메서드가 더 간단하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 다음과 같은 처리가 많아지면 linq.js가 더 읽기 쉬워질 수 있다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;GroupBy&lt;/li&gt;
&lt;li&gt;Join&lt;/li&gt;
&lt;li&gt;OrderBy&lt;/li&gt;
&lt;li&gt;Distinct&lt;/li&gt;
&lt;li&gt;Sum&lt;/li&gt;
&lt;li&gt;Average&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h1&gt;5. 정렬(OrderBy)&lt;/h1&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;const users = [
  { name: &quot;Kim&quot;, dept: &quot;IT&quot;, age: 30 },
  { name: &quot;Lee&quot;, dept: &quot;HR&quot;, age: 25 },
  { name: &quot;Park&quot;, dept: &quot;IT&quot;, age: 35 }
];

const result = Enumerable.from(users)
  .orderBy(user =&amp;gt; user.dept)
  .thenByDescending(user =&amp;gt; user.age)
  .select(user =&amp;gt; ({
    name: user.name,
    dept: user.dept,
    age: user.age
  }))
  .toArray();

console.log(result);&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h1&gt;6. 그룹화(GroupBy)&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;부서별 인원 수를 구하는 예제이다.&lt;/p&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;const users = [
  { id: 1, name: &quot;Kim&quot;, dept: &quot;IT&quot; },
  { id: 2, name: &quot;Lee&quot;, dept: &quot;HR&quot; },
  { id: 3, name: &quot;Park&quot;, dept: &quot;IT&quot; }
];

const result = Enumerable.from(users)
  .groupBy(
    user =&amp;gt; user.dept,
    user =&amp;gt; user,
    (dept, group) =&amp;gt; ({
      dept,
      count: group.count()
    })
  )
  .toArray();

console.log(result);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과:&lt;/p&gt;
&lt;pre class=&quot;groovy&quot;&gt;&lt;code&gt;[
  { dept: &quot;IT&quot;, count: 2 },
  { dept: &quot;HR&quot;, count: 1 }
]&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h1&gt;7. 합계(Sum)&lt;/h1&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;const orders = [
  { item: &quot;A&quot;, qty: 2, price: 1000 },
  { item: &quot;B&quot;, qty: 1, price: 3000 },
  { item: &quot;C&quot;, qty: 5, price: 500 }
];

const total = Enumerable.from(orders)
  .sum(order =&amp;gt; order.qty * order.price);

console.log(total);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과:&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;7500&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h1&gt;8. Join 예제&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 배열을 조인하는 예제이다.&lt;/p&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;const users = [
  { id: 1, name: &quot;Kim&quot;, deptId: &quot;D01&quot; },
  { id: 2, name: &quot;Lee&quot;, deptId: &quot;D02&quot; },
  { id: 3, name: &quot;Park&quot;, deptId: &quot;D01&quot; }
];

const departments = [
  { id: &quot;D01&quot;, name: &quot;개발팀&quot; },
  { id: &quot;D02&quot;, name: &quot;인사팀&quot; }
];

const result = Enumerable.from(users)
  .join(
    departments,
    user =&amp;gt; user.deptId,
    dept =&amp;gt; dept.id,
    (user, dept) =&amp;gt; ({
      userName: user.name,
      deptName: dept.name
    })
  )
  .toArray();

console.log(result);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과:&lt;/p&gt;
&lt;pre class=&quot;groovy&quot;&gt;&lt;code&gt;[
  { userName: &quot;Kim&quot;, deptName: &quot;개발팀&quot; },
  { userName: &quot;Lee&quot;, deptName: &quot;인사팀&quot; },
  { userName: &quot;Park&quot;, deptName: &quot;개발팀&quot; }
]&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h1&gt;9. 지연 평가(Lazy Evaluation)&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;linq.js의 중요한 특징 중 하나는 lazy evaluation(지연 평가)이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;where&lt;/code&gt;, &lt;code&gt;select&lt;/code&gt; 같은 중간 연산은 즉시 실행되지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제로는 &lt;code&gt;toArray()&lt;/code&gt;, &lt;code&gt;first()&lt;/code&gt;, &lt;code&gt;count()&lt;/code&gt; 같은 최종 연산이 호출될 때 평가된다.&lt;/p&gt;
&lt;pre class=&quot;sas&quot;&gt;&lt;code&gt;const query = Enumerable.from([1, 2, 3, 4, 5])
  .where(x =&amp;gt; {
    console.log(&quot;where:&quot;, x);
    return x % 2 === 0;
  })
  .select(x =&amp;gt; {
    console.log(&quot;select:&quot;, x);
    return x * 10;
  });

console.log(&quot;아직 실행 안 됨&quot;);

const result = query.toArray();

console.log(result);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 구조 덕분에 중간 배열 생성을 줄일 수 있다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h1&gt;10. JavaScript 기본 기능과의 차이&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JavaScript 자체도 이미 강력한 배열 메서드를 제공한다.&lt;/p&gt;
&lt;pre class=&quot;lasso&quot;&gt;&lt;code&gt;array.filter(...)
array.map(...)
array.reduce(...)
array.find(...)
array.some(...)
array.every(...)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 단순 배열 처리만 한다면 굳이 linq.js가 필요하지 않을 수도 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 다음과 같은 경우에는 유용하다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;C# LINQ에 익숙한 개발자가 JavaScript를 다룰 때&lt;/li&gt;
&lt;li&gt;SQL 스타일 데이터 처리를 선호할 때&lt;/li&gt;
&lt;li&gt;GroupBy, Join, Sum 같은 처리가 많은 경우&lt;/li&gt;
&lt;li&gt;업무 시스템에서 조회 데이터를 가공하는 경우&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h1&gt;11. 주의할 점&lt;/h1&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1) 최신 JavaScript 기능과 비교 필요&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최근 JavaScript는 기본 배열 메서드가 매우 강력하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단순 데이터 처리라면 기본 메서드만으로도 충분한 경우가 많다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2) 번들 크기 고려&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프론트엔드 프로젝트에서는 라이브러리 추가에 따른 번들 크기 증가를 고려해야 한다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3) 모듈 방식 확인 필요&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최신 npm 패키지는 ES Module 기준이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Node.js 환경에서는 CommonJS 여부를 확인해야 한다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h1&gt;12. 정리&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;linq.js는 JavaScript에서 C# LINQ 스타일의 데이터 처리를 가능하게 해주는 라이브러리이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단순 배열 처리라면 JavaScript 기본 메서드가 더 간단할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 다음과 같은 상황에서는 상당히 유용하다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;복잡한 데이터 가공&lt;/li&gt;
&lt;li&gt;그룹화 및 집계&lt;/li&gt;
&lt;li&gt;SQL 스타일 처리&lt;/li&gt;
&lt;li&gt;업무 시스템 데이터 변환&lt;/li&gt;
&lt;li&gt;C# 개발자의 JavaScript 작업&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히 ERP, 통계 화면, 조회 데이터 가공처럼&lt;br /&gt;JSON 데이터를 화면용으로 재구성하는 작업에서 꽤 편리하게 사용할 수 있다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h1&gt;참고 링크&lt;/h1&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;원본 프로젝트&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/neuecc/linq.js&quot;&gt;https://github.com/neuecc/linq.js&lt;/a&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;현재 유지보수 fork&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/mihaifm/linq&quot;&gt;https://github.com/mihaifm/linq&lt;/a&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;npm&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.npmjs.com/package/linq&quot;&gt;https://www.npmjs.com/package/linq&lt;/a&gt;&lt;/p&gt;</description>
      <category>Developement/Web</category>
      <category>linq.js</category>
      <author>highheat</author>
      <guid isPermaLink="true">https://highheat.tistory.com/731</guid>
      <comments>https://highheat.tistory.com/731#entry731comment</comments>
      <pubDate>Tue, 12 May 2026 12:35:33 +0900</pubDate>
    </item>
    <item>
      <title>CFP Quarterfinal: Texas Longhorns vs. Arizona State Sun Devils</title>
      <link>https://highheat.tistory.com/750</link>
      <description>&lt;iframe src=&quot;https://www.youtube.com/embed/qmgF-YWXyxE?si=vUotkcfyEQfRQYJF&quot; width=&quot;560&quot; height=&quot;315&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;</description>
      <category>NFL</category>
      <author>highheat</author>
      <guid isPermaLink="true">https://highheat.tistory.com/750</guid>
      <comments>https://highheat.tistory.com/750#entry750comment</comments>
      <pubDate>Sun, 27 Apr 2025 20:28:25 +0900</pubDate>
    </item>
    <item>
      <title>U2 Live in Concert - Sphere, Las Vegas - February 9, 2024</title>
      <link>https://highheat.tistory.com/749</link>
      <description>&lt;iframe src=&quot;https://www.youtube.com/embed/Wrbc7Zpz3sk?si=W8JqC8JcpB2r2lcA&quot; width=&quot;560&quot; height=&quot;315&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;</description>
      <category>Music</category>
      <category>sphere</category>
      <category>u2</category>
      <author>highheat</author>
      <guid isPermaLink="true">https://highheat.tistory.com/749</guid>
      <comments>https://highheat.tistory.com/749#entry749comment</comments>
      <pubDate>Tue, 18 Feb 2025 12:15:53 +0900</pubDate>
    </item>
    <item>
      <title>MVP Josh Allen</title>
      <link>https://highheat.tistory.com/748</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1738909182.jpg&quot; data-origin-width=&quot;1179&quot; data-origin-height=&quot;1458&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWoXRi/btsMagwedvG/vesgMZLB1ZenbQLW21ZtC1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWoXRi/btsMagwedvG/vesgMZLB1ZenbQLW21ZtC1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWoXRi/btsMagwedvG/vesgMZLB1ZenbQLW21ZtC1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWoXRi%2FbtsMagwedvG%2FvesgMZLB1ZenbQLW21ZtC1%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;1179&quot; height=&quot;1458&quot; data-filename=&quot;1738909182.jpg&quot; data-origin-width=&quot;1179&quot; data-origin-height=&quot;1458&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;iframe src=&quot;https://www.youtube.com/embed/x7G9LxKTh10?si=IfTpaH3aROg2SF6z&quot; width=&quot;560&quot; height=&quot;315&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;iframe src=&quot;https://www.youtube.com/embed/_n4mah-lgss?si=DNpoIlEUj0wxZ8r9&quot; width=&quot;560&quot; height=&quot;315&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;</description>
      <category>NFL</category>
      <category>josh allen</category>
      <category>MVP</category>
      <category>NFL</category>
      <author>highheat</author>
      <guid isPermaLink="true">https://highheat.tistory.com/748</guid>
      <comments>https://highheat.tistory.com/748#entry748comment</comments>
      <pubDate>Fri, 7 Feb 2025 15:21:55 +0900</pubDate>
    </item>
    <item>
      <title>빌스 승리!!!</title>
      <link>https://highheat.tistory.com/747</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1737344029.jpg&quot; data-origin-width=&quot;850&quot; data-origin-height=&quot;1063&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nDR5o/btsLRFwCMbw/cvcxb2lSEniAGBzbn0KM7K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nDR5o/btsLRFwCMbw/cvcxb2lSEniAGBzbn0KM7K/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nDR5o/btsLRFwCMbw/cvcxb2lSEniAGBzbn0KM7K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnDR5o%2FbtsLRFwCMbw%2Fcvcxb2lSEniAGBzbn0KM7K%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;850&quot; height=&quot;1063&quot; data-filename=&quot;1737344029.jpg&quot; data-origin-width=&quot;850&quot; data-origin-height=&quot;1063&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>NFL</category>
      <category>go bills</category>
      <author>highheat</author>
      <guid isPermaLink="true">https://highheat.tistory.com/747</guid>
      <comments>https://highheat.tistory.com/747#entry747comment</comments>
      <pubDate>Mon, 20 Jan 2025 12:47:41 +0900</pubDate>
    </item>
    <item>
      <title>윈도우환경의 vscode에서 빌드시 bash에서 실행</title>
      <link>https://highheat.tistory.com/746</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;msys2를 설치하고 윈도우에서 gcc로 개발환경을 구성하다가 맞지하는 문제입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;`pkg-config --cflags --libs gtk4`&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 task.json에서 args에 추가해서 빌드중 에러가 발생합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해결책은 기본 쉘인 cmd.exe 대신 msys2에 있는 bash.exe를 이용해서 실행하는것입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1726191021873&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{
	&quot;label&quot;: &quot;Build GTK4 App in MSYS2 shell&quot;,
    &quot;type&quot;: &quot;shell&quot;,
    &quot;command&quot;: &quot;C:/msys64/usr/bin/bash.exe&quot;,  // MSYS2 쉘 실행
    &quot;args&quot;: [
    	&quot;-c&quot;,  // 쉘 명령 실행
        &quot;gcc -fdiagnostics-color=always -g '${file}' -o '${fileDirname}/${fileBasenameNoExtension}.exe' $(pkg-config --cflags --libs gtk4)&quot;
    ],
    &quot;group&quot;: &quot;build&quot;,
    &quot;problemMatcher&quot;: [&quot;$gcc&quot;],
    &quot;options&quot;: {
    	&quot;cwd&quot;: &quot;${workspaceFolder}&quot;  // 작업 디렉토리 설정
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Developement/C, C++, C#</category>
      <category>MSYS2</category>
      <category>vscode</category>
      <author>highheat</author>
      <guid isPermaLink="true">https://highheat.tistory.com/746</guid>
      <comments>https://highheat.tistory.com/746#entry746comment</comments>
      <pubDate>Fri, 13 Sep 2024 10:32:10 +0900</pubDate>
    </item>
    <item>
      <title>Pycharm에서 conda 인터프리터 설정</title>
      <link>https://highheat.tistory.com/745</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;344&quot; data-origin-height=&quot;667&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KfAKQ/btsIt5xH78w/AlUpIs3pos7Wm4Q7qCOgh0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KfAKQ/btsIt5xH78w/AlUpIs3pos7Wm4Q7qCOgh0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KfAKQ/btsIt5xH78w/AlUpIs3pos7Wm4Q7qCOgh0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKfAKQ%2FbtsIt5xH78w%2FAlUpIs3pos7Wm4Q7qCOgh0%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;344&quot; height=&quot;667&quot; data-origin-width=&quot;344&quot; data-origin-height=&quot;667&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;File -&amp;gt; Settings를 선택&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;986&quot; data-origin-height=&quot;736&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJd2co/btsIuquRfQs/4h7HvnPjapYKAo3L1f80k1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJd2co/btsIuquRfQs/4h7HvnPjapYKAo3L1f80k1/img.png&quot; data-alt=&quot;Python Interpreter -&amp;amp;gt; Add Interpreter&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJd2co/btsIuquRfQs/4h7HvnPjapYKAo3L1f80k1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJd2co%2FbtsIuquRfQs%2F4h7HvnPjapYKAo3L1f80k1%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;986&quot; height=&quot;736&quot; data-origin-width=&quot;986&quot; data-origin-height=&quot;736&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Python Interpreter -&amp;gt; Add Interpreter&lt;/figcaption&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;1121&quot; data-origin-height=&quot;701&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nwrj8/btsIuGYwwHS/30fmKoDfeXDntulHPsas1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nwrj8/btsIuGYwwHS/30fmKoDfeXDntulHPsas1k/img.png&quot; data-alt=&quot;Conda Environment -&amp;amp;gt; Conda Executable에서 conda.exe선택 -&amp;amp;gt; Use existing environment에서 사용할 가상환경 선택&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nwrj8/btsIuGYwwHS/30fmKoDfeXDntulHPsas1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fnwrj8%2FbtsIuGYwwHS%2F30fmKoDfeXDntulHPsas1k%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;1011&quot; height=&quot;633&quot; data-origin-width=&quot;1121&quot; data-origin-height=&quot;701&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Conda Environment -&amp;gt; Conda Executable에서 conda.exe선택 -&amp;gt; Use existing environment에서 사용할 가상환경 선택&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Developement/Python</category>
      <category>conda</category>
      <category>pycharm</category>
      <author>highheat</author>
      <guid isPermaLink="true">https://highheat.tistory.com/745</guid>
      <comments>https://highheat.tistory.com/745#entry745comment</comments>
      <pubDate>Wed, 10 Jul 2024 14:32:58 +0900</pubDate>
    </item>
    <item>
      <title>Pantera - Becoming</title>
      <link>https://highheat.tistory.com/743</link>
      <description>&lt;iframe src=&quot;https://www.youtube.com/embed/rVZXQistEUk?si=S9clFDiIzQ2Qa0xn&quot; width=&quot;560&quot; height=&quot;315&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;br&gt;
&lt;iframe src=&quot;https://www.youtube.com/embed/sSh_oEHXjs0?si=8FyfWRiVHKtuykxv&quot; width=&quot;560&quot; height=&quot;315&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;</description>
      <category>Music</category>
      <category>becoming</category>
      <category>pantera</category>
      <author>highheat</author>
      <guid isPermaLink="true">https://highheat.tistory.com/743</guid>
      <comments>https://highheat.tistory.com/743#entry743comment</comments>
      <pubDate>Thu, 31 Aug 2023 21:27:49 +0900</pubDate>
    </item>
    <item>
      <title>U2 New Year's Day live 1983 Germany</title>
      <link>https://highheat.tistory.com/742</link>
      <description>&lt;iframe src=&quot;https://www.youtube.com/embed/rEtY8LQozMM?si=r6FDG3w38rlREqCO&quot; width=&quot;560&quot; height=&quot;315&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;</description>
      <category>Music</category>
      <category>new year's day</category>
      <category>u2</category>
      <author>highheat</author>
      <guid isPermaLink="true">https://highheat.tistory.com/742</guid>
      <comments>https://highheat.tistory.com/742#entry742comment</comments>
      <pubDate>Thu, 31 Aug 2023 21:22:36 +0900</pubDate>
    </item>
    <item>
      <title>Dave Lombardo -- War Ensemble -- Yankee Stadium</title>
      <link>https://highheat.tistory.com/741</link>
      <description>&lt;iframe src=&quot;https://www.youtube.com/embed/3ivOfkqFmxg?si=1myQjQxG8dBxY4Ep&quot; width=&quot;560&quot; height=&quot;315&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;</description>
      <category>Music</category>
      <category>dave lombardo</category>
      <category>Slayer</category>
      <category>War Ensemble</category>
      <author>highheat</author>
      <guid isPermaLink="true">https://highheat.tistory.com/741</guid>
      <comments>https://highheat.tistory.com/741#entry741comment</comments>
      <pubDate>Thu, 31 Aug 2023 21:15:07 +0900</pubDate>
    </item>
  </channel>
</rss>