<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>때로는 까칠하게..</title>
    <link>https://kka7.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Tue, 11 Aug 2026 01:20:55 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>까칠코더</managingEditor>
    <image>
      <title>때로는 까칠하게..</title>
      <url>https://tistory1.daumcdn.net/tistory/2233646/attach/9d1e159ade844e7a83f89a9804d8cf7d</url>
      <link>https://kka7.tistory.com</link>
    </image>
    <item>
      <title>Xcode 시뮬레이터 먹통으로 마우스 및 키보드 입력 불가</title>
      <link>https://kka7.tistory.com/713</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;Xcode 시뮬레이터 먹통으로 마우스 및 키보드 입력 불가&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Xcode로 개발중에 시뮬레이터가 멈추거나 시뮬레이터 실행은 되는데 Mac에서 마우스나 키보드로 입력이 안되는 경우가 발생할때가 있습니다. 보통은 시뮬레이터나 Xcode 재시작하거나 아예 Mac을 재시작하면 해결되곤 하는데요.&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;h3 data-ke-size=&quot;size23&quot;&gt;1. Xcode 시뮬레이터 강제종료 명령어&amp;nbsp;&lt;/h3&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;Apple 공식 CLI인 simctl을 통해서 실행중인 모든 가상 기기를 정상으로 shutdown 상태로 전환합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1786327883531&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;xcrun simctl shutdown all&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Mac OS에서 시뮬레이터 앱을 정상종료(SIGTERM) 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1786327976849&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;killall Simulator&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Xcode와 시뮬레이터 간 통신(IPC) 및 시뮬레이터 생명주기를 관장하는 핵심 데몬을 강제 종료합니다. 종료시 launchd에 의해 자동 재시작되면 데드락이 해제됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1786328073147&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;killall -9 com.apple.CoreSimulator.CoreSimulatorService&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Xcode에서 빌드된 앱을 시뮬레이터 런타임에 실행하고 디버거를 연결하는 도우미 프로세스를 초기화 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1786328158559&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;killall -9 SimulatorTrampoline&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;macOS 호스트 환경과 가장 iOS 내부 OS간 입출력 이벤트를 전달하는 브릿지 데몬을 강제 종료하여 동기화를 리셋합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1786328232447&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;killall -9 CoreSimulatorBridge&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;2. 단계별 시뮬레이터 먹통 초기화 방법&lt;/h3&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;/ul&gt;
&lt;pre id=&quot;code_1786328352298&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;xcrun simctl shutdown all
killall Simulator
killall -9 com.apple.CoreSimulator.CoreSimulatorService
killall -9 SimulatorTrampoline
killall -9 CoreSimulatorBridge&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&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;/ul&gt;
&lt;pre id=&quot;code_1786328629080&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;xcrun simctl erase all&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CoreSimulator 캐시 및 DerivedData 삭제&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1786328661818&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;rm -rf ~/Library/Developer/CoreSimulator/Caches
rm -rf ~/Library/Developer/Xcode/DerivedData&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;Xcode 및 CoreSimulatorService 데몬 완전 재시작&lt;/p&gt;
&lt;pre id=&quot;code_1786328710238&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;killall -9 com.apple.CoreSimulator.CoreSimulatorService
open -a Xcode&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;3. 키보드만 입력이 안될때&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시뮬레이터 내부 텍스트 필드에 Mac 키보드 입력이 전달되지 않는 경우에는 다음과 같은 확인 필요합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Mac의 키보드 입력을 시뮬레이터 가상 기기로 전달하는 설정이 꺼진 경우 발생합니다. (I/O -&amp;gt; Keyboard -&amp;gt; Connect Hardware Keyboard 체크)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해결방법 : &lt;b&gt;하드웨어 키보드 연결 옵션 해제 : Cmd + Shift + K&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;시뮬레이터 가상 온스크린 키보드와 호스트 입력 상태가 꼬였을때 발생합니다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해결방법 : &lt;b&gt;소프트웨어 온스크린 키보드 토글 : Cmd + K&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Mac의 현재 입력기가 한글(2벌식 등) 모드일 때 시뮬레이터 텍스트 필드 뷰가 이벤트를 수신하지 못하는 현상&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해결방법 :&amp;nbsp;&lt;b&gt;macOS 한영/입력기 동기화 오류: 입력기를 영문(U.S)로 전환&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;호스트 Mac과 시뮬레이터 기기간 키보드 이벤트 전달 브릿지 데몬이 응답 없는 상태&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해결방법 :&amp;nbsp;&lt;b&gt;coreSimulatorBridge 데몬 리셋&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1786329185281&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;killall -9 CoreSimulatorBridge&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;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Xcode 시뮬레이터 먹통은 주로 CoreSimulatorBridge 데몬의 오류가 주요 원인이고, 강제 재시작으로 해결할 수 있습니다.&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;</description>
      <category>개발/iOS</category>
      <category>CoreSimulator</category>
      <category>xcode</category>
      <category>xcode오류</category>
      <category>시뮬레이터먹통</category>
      <author>까칠코더</author>
      <guid isPermaLink="true">https://kka7.tistory.com/713</guid>
      <comments>https://kka7.tistory.com/713#entry713comment</comments>
      <pubDate>Mon, 10 Aug 2026 11:41:32 +0900</pubDate>
    </item>
    <item>
      <title>Electron과 Tauri 비교 : 성능, 메모리, 사용법 및 도입 가이드</title>
      <link>https://kka7.tistory.com/712</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;Electron과 Tauri 비교 : 성능, 메모리, 사용법 및 도입 가이드&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹 기술(HTML, CSS, JavaScript)을 활용해 데스크톱 애플리케이션을 개발할 때 가장 대표적으로 검토되는 프레임워크는 Eletron과 Tauri입니다. 기존 시장을 독접하던 Eletron의 무거운 리소스 점유율 문제를 해결하기 위해 경량화된 Rust 기반의 Tauri가 부상하면서 두 기술 간의 선택 고민이 커지고 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. Electron과 Tauri의 핵심 아키텍쳐&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Electron (Chromium + Node.js 번들링)&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;구조 : 애플리케이션 번들 내에 전체 Chromium 브라우저 엔진과 Node.js 런타임을 통째로 내장하여 패키징 합니다.&lt;/li&gt;
&lt;li&gt;프로세스 : UI를 담당하는 Renderer 프로세스(Chromium)와 시스템 제어를 담당하는 Main 프로세스(Node.js)가 IPC 통신으로 작동합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Tauri (OS 네이티브 WebView + Rust 백앤드)&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;구조 : 자체 브라우저 엔진을 내장하지 않고, 운영체제에 이미 설치된 네이티브 WebView (Windwos: WebView2, macOS : WKWebView, Linux: WebKitGTX)를 활용합니다.&lt;/li&gt;
&lt;li&gt;백앤드 : 백앤드 런타임으로 Node.js 대신 메모리 안전성과 성능이 뛰어난 Rust 런타임을 사용합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 바이너리 크기, 메모리 사용량 비교&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 동일한 HelloWorld 수준의 기본앱을 빌드했을때의 리소스 수치 비교입니다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 17.6356%; text-align: center;&quot;&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 38.7984%; text-align: center;&quot;&gt;&lt;b&gt;Electron&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 43.5659%; text-align: center;&quot;&gt;&lt;b&gt;Tauri&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 17.6356%;&quot;&gt;설치 파일 번들 용량&lt;/td&gt;
&lt;td style=&quot;width: 38.7984%;&quot;&gt;80 ~ 120 MB&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 43.5659%;&quot;&gt;8 ~ 10 MB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 17.6356%;&quot;&gt;메모리(RAM) 점유율&lt;/td&gt;
&lt;td style=&quot;width: 38.7984%;&quot;&gt;150 ~ 300 MB&lt;/td&gt;
&lt;td style=&quot;width: 43.5659%;&quot;&gt;30 ~ 50 MB&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;h3 data-ke-size=&quot;size23&quot;&gt;3. 프레임워크별 환경 설정 및 기본 사용 방법&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Electron 기본 사용법 (Node.js 기반)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JavaScript&lt;/p&gt;
&lt;pre id=&quot;code_1786073879213&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// main.js (Main 프로세스)
const { app, BrowserWindow, ipcMain } = require('electron');

function createWindow() {
  const win = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      nodeIntegration: false,
      contextIsolation: true
    }
  });

  win.loadFile('index.html');
}

app.whenReady().then(createWindow);

// JS &amp;lt;-&amp;gt; Node.js IPC 바인딩
ipcMain.handle('get-system-info', async () =&amp;gt; {
  return process.platform;
});&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;Tauri 기본 사용법 (Rust + Web 프론트앤드)&lt;/h4&gt;
&lt;pre id=&quot;code_1786073922739&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# Tauri 프로젝트 초기화 CLI
npx create-tauri-app&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;Rust&lt;/p&gt;
&lt;pre id=&quot;code_1786073949473&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// src-tauri/src/main.rs (Rust 백엔드 커맨드 정의)
#![cfg_attr(not(debug_assertions), windows_subsystem = &quot;windows&quot;)]

// Frontend에서 호출 가능한 Rust 커맨드 작성
#[tauri::command]
fn greet(name: &amp;amp;str) -&amp;gt; String {
    format!(&quot;Hello, {}! Rust에서 반환된 응답입니다.&quot;, name)
}

fn main() {
    tauri::Builder::default()
        .invoke_handler(tauri::generate_handler![greet])
        .run(tauri::generate_context!())
        .expect(&quot;Tauri 앱 실행 실패&quot;);
}
```&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JavaScript&lt;/p&gt;
&lt;pre id=&quot;code_1786074000229&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// src/App.js (Frontend JS에서 Rust 명령어 호출)
import { invoke } from '@tauri-apps/api/core';

async function callRust() {
  const response = await invoke('greet', { name: 'Developer' });
  console.log(response);
}&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;4. 서비스 도입 사례&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 16.3566%; text-align: center;&quot;&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 38.9147%; text-align: center;&quot;&gt;&lt;b&gt;Electron&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 44.7286%; text-align: center;&quot;&gt;&lt;b&gt;Tauri&amp;nbsp;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 16.3566%;&quot;&gt;도입 서비스&lt;/td&gt;
&lt;td style=&quot;width: 38.9147%;&quot;&gt;&lt;span&gt;VS Code, &lt;br /&gt;1Password 8 (Electron UI + Rust Core), &lt;br /&gt;Slack, &lt;br /&gt;Discord, &lt;br /&gt;Notion, &lt;br /&gt;Figma Desktop, &lt;br /&gt;Obsidian, &lt;br /&gt;채널톡 (Channel.io), &lt;br /&gt;리디 (RIDI PC 뷰어), &lt;br /&gt;밀리의 서재 (PC 뷰어), ...&amp;nbsp;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 44.7286%;&quot;&gt;&lt;span&gt;GitButler, &lt;br /&gt;Spacedrive, &lt;br /&gt;Bloop, &lt;br /&gt;CrabNebula&lt;/span&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;h3 data-ke-size=&quot;size23&quot;&gt;5. 프로젝트별 프레임워크 선택 의사 결정 체크리스트&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Electron 도입이 유리한 경우&amp;nbsp;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;NPM 생태계 의존성 : Node.js 전용 C++ 애드온 라이브러리나 대규모 NPM 패키지를 다수 활용해야 하는 경우&lt;/li&gt;
&lt;li&gt;빠른 MVP 개발 속도 :&amp;nbsp; 개발팀에 Rust 경험자가 없고, JavaScript/TypeScript 기반으로 즉시 데스크톱 앱을 출시해야 하는 경우&lt;/li&gt;
&lt;li&gt;구형 레거시 호환성 : 특정 OS 버전이나 구형 렌더링 호환성을 Chromium 통째로 번들링으로 통일해야 하는 경우&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Tauri 도입이 유리한 경우&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;리소스 최적화 : 10MB 미만의 작은 설치 파일과 30MB 수준의 최저 메모리(RAM) 점유율이 핵심 스펙인 경우&lt;/li&gt;
&lt;li&gt;강력한 보안 및 백앤드 성능 : 시스템 파일 파싱, 암호화 처리 등 고성능 백앤드 연동(Rust)과 샌드박스 보관이 필요한 경우&lt;/li&gt;
&lt;li&gt;크로스 플랫폼 확장성 : 하나의 코드베이스로 데스크톱(Windows/macOS/Linux)뿐만 아니라 iOS 및 Android 모바일 타겟까지 확장하려는 경우&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;6. 배포 및 자동 업데이트(Auto-Update) 생태계 비교&lt;/h3&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;Electron 의 배포 생태계&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;외부 툴링 의존 : 빌드 및 수동 패키징을 위해 electron-builder 또는 electron-forge를 사용합니다.&lt;/li&gt;
&lt;li&gt;업데이트 관리 : electron-updater 패키지를 조합하여 자체 S3나 GitHub Releases 서버 구축이 필요합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Tauri의 배포 생태계&amp;nbsp;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;자체 인브라 내장 : tauri.conf.json 설정에 자동 업데이트(Auto-Updater)기능이 기본 포함되어 있습니다.&lt;/li&gt;
&lt;li&gt;클라우드 연동 : 전용 멀티 플랫폼 자동 빌드, 업데이트 관리 서비스읜 CrabNebula 인프라와 즉시 결합이 가능합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;7. 상세 스팩 비교&lt;/h3&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: 181px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;Electron&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;Tauri (V2 기준)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;백엔드 런타임&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;Node.js&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;Rust&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;렌더링 엔진&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;Chromium 엔진 내장 (통째 번들링)&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;OS 네이티브 WebView 공유&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;지원 플랫폼&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;데스크톱 (Windows, macOS, Linux)&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;데스크톱 + 모바일 (iOS, Android)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;빌드 파일 크기&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;약 80MB ~ 150MB&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;약 3MB ~ 10MB&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;RAM 메모리 소모&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;높음 (150MB ~ 300MB+)&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;매우 낮음 (30MB ~ 50MB)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;자동 업데이트&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;electron-updater 서드파티 사용&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;내장 Updater 및 CrabNebula&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;보안 체계&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;개발자 설정 의존&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;Default-Deny 샌드박스&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;진입 장벽&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;낮음 (JavaScript/Node.js)&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;보통~높음 (Rust 학습 필요)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;생태계 및 플러그인&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;압도적으로 거대함&lt;/td&gt;
&lt;td style=&quot;height: 19px;&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;h4 data-ke-size=&quot;size20&quot;&gt;8. 핵심 요약&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;거대한 NPM 생태계와 빠른 개발 속도가 최우선이라면 Electron이 유리하며, 설치 파일 용량과 RAM 소모 최소화, 고성능 메모리 보안 및 모바일 확장성까지 중요하다면 Tauri를 도입하는 것이 적합니다.&lt;/p&gt;</description>
      <category>개발/Web &amp;amp; Backend</category>
      <category>electron</category>
      <category>Node.js</category>
      <category>rust</category>
      <category>Tauri</category>
      <category>vscode</category>
      <category>크로스플랫폼</category>
      <author>까칠코더</author>
      <guid isPermaLink="true">https://kka7.tistory.com/712</guid>
      <comments>https://kka7.tistory.com/712#entry712comment</comments>
      <pubDate>Fri, 7 Aug 2026 13:24:40 +0900</pubDate>
    </item>
    <item>
      <title>iOS AppIntents 아키텍쳐: 온디바이스 AI 및 Siri에 앱 로직 연동하기</title>
      <link>https://kka7.tistory.com/711</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;iOS AppIntents 아키텍쳐: 온디바이스 AI 및 Siri에 앱 로직 연동하기&amp;nbsp;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Apple Intelligence 및 Siri와 같은 온디바이스 AI 시스템이 사용자의 의도를 파악하여 특정 애브이 기능을 직접 실행하려면, 앱 내부 로직을 시스템이 이해할 수 있는 형식으로 노출해야 합니다. 기존의 복잡한 SiriKit 자원 파일(Intent Definition) 대신 Swift 언어의 선언적 문법을 활용하는 AppIntents 프레임워크가 iOS 앱 연동의 표준 아키텍처로 자리 잡았습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 기존 SiriKit의 한계와 AppIntents 프레임워크의 도입&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 SiriKit은 별도의 .intentdefinition 파일 설정과 자동생성 코드에 의존하여 코드 유지 보수가 까다로웠습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;선언적 Swift 코드&lt;/b&gt; : AppIntents는 Swift 프로토콜 기반으로 동작하여 뷰 코드 및 도메인 로직과 동일한 코드 베이스 내에서 선언적으로 정의 됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Apple Intelligence 결합&lt;/b&gt; :&amp;nbsp; 단순 음성 명령을 넘어 온디바이스 AI 시스템이 앱 내부 엔티티(Entity)와 인텐트(Intent)를 인식하도록 지원합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. AppIntents 아키텍처 핵심 구성 요소&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AppIntents 시스템은 3가지 기본 프로토콜로 구성됩니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;AppIntent&lt;/b&gt; : 앱이 수행할 수 있는 작업 단위(동작)를 정의합니다. (예: &quot;주문하기&quot;, &quot;메모 작성하기&quot;)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;AppEntity&lt;/b&gt; : 작업의 대상이 되는 앱 내부 데이터 모델을 다룹니다. (예: &quot;상품&quot;, &quot;노트 객체&quot;)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;AppShortcutsProvider&lt;/b&gt; : Siri 및 단축어 앱에 자동으로 등록될 기본 음성 명령 패턴을 선언합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. AppIntent 구현 및 비즈니스 로직 연동 실무 예제&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특정 동작을 수행하는 AppIntent를 Swift 코드로 구현하는 방식입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1785983032289&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import AppIntents

// 1. 시스템에 노출할 동작(Intent) 정의
struct CreateNoteIntent: AppIntent {
    // 시스템 Siri 및 단축어 앱에 표시될 제목
    static var title: LocalizedStringResource = &quot;새 노트 작성&quot;
    static var description = IntentDescription(&quot;지정된 제목으로 새 노트를 생성합니다.&quot;)

    // 사용자 또는 온디바이스 AI가 전달할 파라미터 정의
    @Parameter(title: &quot;노트 제목&quot;)
    var noteTitle: String

    // Intent 실행 시 호출되는 핵심 로직
    @MainActor
    func perform() async throws -&amp;gt; some IntentResult &amp;amp; ReturnsValue&amp;lt;String&amp;gt; {
        // 앱 내부 도메인 서비스 호출
        let newNoteId = try await NoteService.shared.create(title: noteTitle)
        
        // 실행 결과 및 성공 메시지 반환
        return .result(value: &quot;노트 '\(noteTitle)'이(가) 성공적으로 생성되었습니다.&quot;)
    }
}

// 2. Siri 자동 음성 명령 등록 프로토콜 정의
struct NoteAppShortcuts: AppShortcutsProvider {
    static var appShortcuts: [AppShortcut] {
        AppShortcut(
            intent: CreateNoteIntent(),
            phrases: [
                &quot;\(.applicationName)에서 \(\.$noteTitle) 작성해 줘&quot;,
                &quot;\(.applicationName)에 새 노트 추가&quot;
            ],
            shortTitle: &quot;노트 작성&quot;,
            systemImageName: &quot;square.and.pencil&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;4. SiriKit vs AppIntents 비교&amp;nbsp;&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 16.5891%; text-align: center;&quot;&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 38.9147%; text-align: center;&quot;&gt;&lt;b&gt;기존 SiriKit 방식&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 44.4961%; text-align: center;&quot;&gt;&lt;b&gt;AppIntents 프레임워크 방식&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 16.5891%;&quot;&gt;설정 방식&lt;/td&gt;
&lt;td style=&quot;width: 38.9147%;&quot;&gt;.intentdefinition GUI 파일 매핑&lt;/td&gt;
&lt;td style=&quot;width: 44.4961%;&quot;&gt;Pure Swift 선언적 프로토콜 코드&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 16.5891%;&quot;&gt;AI 연동성&lt;/td&gt;
&lt;td style=&quot;width: 38.9147%;&quot;&gt;고정된 도메인 카테고리만 지원&lt;/td&gt;
&lt;td style=&quot;width: 44.4961%;&quot;&gt;Apple Intelligence 온디바이스 인지 연동&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 16.5891%;&quot;&gt;단축어 자동 등록&lt;/td&gt;
&lt;td style=&quot;width: 38.9147%;&quot;&gt;사용자가 수동 등록 필요&lt;/td&gt;
&lt;td style=&quot;width: 44.4961%;&quot;&gt;AppShortcutsProvider 로 자동 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 16.5891%;&quot;&gt;유지보수성&lt;/td&gt;
&lt;td style=&quot;width: 38.9147%;&quot;&gt;생성된 코드와 실제 로직 분리로 복잡&lt;/td&gt;
&lt;td style=&quot;width: 44.4961%;&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;h3 data-ke-size=&quot;size23&quot;&gt;5. 핵심 요약&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AppIntents 아키택쳐를 도입하면 코드베이스의 이원화 없이 Swift 코드만으로 앱의 핵심 로직을 온디바이스 AI, Siri, 단축어 시스템에 안전하게 노출할수 있습니다.&lt;/p&gt;</description>
      <category>개발/iOS</category>
      <category>appintents</category>
      <category>appleintelligence</category>
      <category>IOS18</category>
      <category>iOS개발자</category>
      <category>iOS아키텍처</category>
      <category>SiriKit</category>
      <category>Siri연동</category>
      <category>swiftUI</category>
      <category>WWDC</category>
      <category>단축어</category>
      <author>까칠코더</author>
      <guid isPermaLink="true">https://kka7.tistory.com/711</guid>
      <comments>https://kka7.tistory.com/711#entry711comment</comments>
      <pubDate>Thu, 6 Aug 2026 11:31:05 +0900</pubDate>
    </item>
    <item>
      <title>Swift 6 Strict Concurrency 대응: SwiftData ModelActor 비동기 파싱 및 저장 가이드</title>
      <link>https://kka7.tistory.com/710</link>
      <description>&lt;h1 data-heading=&quot;Swift 6 Strict Concurrency 대응: SwiftData ModelActor 비동기 파싱 및 저장 가이드&quot;&gt;Swift 6 Strict Concurrency 대응: SwiftData ModelActor 비동기 파싱 및 저장 가이드&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SwiftData 환경에서 네트워크 API로 받아온 대용량 JSON 데이터를 DB에 파싱하고 저장할 때 메인 스레드(@MainActor)를 사용하면 뷰 레이아웃 멈춤(UI Freeze) 현상이 일어납니다. 반면, 일반 백그라운드 Task에서 메인 뷰의 ModelContext를 그대로 넘겨 사용하면 Swift 6의 엄격한 동시성 검사(Strict Concurrency) 환경에서 데이터 레이스 및 스레드 충돌 에러가 발생합니다. SwiftData에서 제공하는 ModelActor 프로토콜을 사용하면 독립된 액터 스레드 격리 안에서 백그라운드 데이터 파싱 및 저장을 동시성에 안전하게 처리할 수 있습니다. ModelActor 작성 패턴 및 적용 방식은 다음과 같습니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-heading=&quot;1. SwiftData &amp;#96;@MainActor&amp;#96; 한계와 백그라운드 작업의 필요성&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;1. SwiftData &amp;#96;@MainActor&amp;#96; 한계와 백그라운드 작업의 필요성&quot; data-ke-size=&quot;size26&quot;&gt;1. SwiftData @MainActor 한계와 백그라운드 작업의 필요성&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SwiftUI 뷰 계층에서 기본 주입되는 ModelContext는 메인 스레드에 격리(@MainActor)되어 있습니다.&lt;/p&gt;
&lt;pre class=&quot;reasonml&quot;&gt;&lt;code&gt;// 메인 스레드에서 대용량 데이터를 처리할 경우 UI가 멈춤
func fetchAndSaveHeavyData() async {
    let items = await api.fetchLargeData()
    for item in items {
        context.insert(Item(from: item)) // UI 프레임 드롭 발생
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네트워크로부터 대량의 레코드를 수신하여 데이터베이스에 저장해야 할 경우, 메인 뷰 스레드가 블로킹되는 문제를 방지하기 위해 반드시 별도의 백그라운드 액터 스레드에서 DB 커밋을 수행해야 합니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-heading=&quot;2. &amp;#96;ModelActor&amp;#96; 프로토콜의 역할과 작동 원리&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;2. &amp;#96;ModelActor&amp;#96; 프로토콜의 역할과 작동 원리&quot; data-ke-size=&quot;size26&quot;&gt;2. ModelActor 프로토콜의 역할과 작동 원리&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ModelActor는 Swift 6 액터(Actor) 모델을 기반으로 동작하는 SwiftData 전용 인프라 프로토콜입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;독립된 ModelContext 보유&lt;/b&gt;: ModelActor 내부에는 뷰 스레드와 격리된 별도의 ModelContext와 ModelExecutor가 자동으로 생성됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;액터 스레드 격리&lt;/b&gt;: 모든 데이터 삽입, 조회, 삭제 및 save() 작업이 액터 내부 큐에서 순차적(Serial)으로 실행되므로 데이터 레이스가 방지됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-heading=&quot;3. &amp;#96;ModelActor&amp;#96; 구현 및 비동기 백그라운드 DB 처리 실무 예제&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;3. &amp;#96;ModelActor&amp;#96; 구현 및 비동기 백그라운드 DB 처리 실무 예제&quot; data-ke-size=&quot;size26&quot;&gt;3. ModelActor 구현 및 비동기 백그라운드 DB 처리 실무 예제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ModelActor 프로토콜을 채택한 전용 백그라운드 데이터 핸들러 래퍼를 생성합니다.&lt;/p&gt;
&lt;pre class=&quot;reasonml&quot;&gt;&lt;code&gt;import Foundation
import SwiftData

// 1. ModelActor 프로토콜을 채택하는 백그라운드 액터 정의
@ModelActor
actor DataBackgroundHandler {
    // 2. 백그라운드 데이터 파싱 및 저장 메서드 구현
    func insertBatchItems(from rawDataList: [RawItemDTO]) throws {
        for dto in rawDataList {
            let newItem = Item(id: dto.id, name: dto.name)
            modelContext.insert(newItem)
        }
        
        // 3. 백그라운드 전용 context에서 변경사항 즉시 저장
        try modelContext.save()
    }
}

// 4. SwiftUI 또는 ViewModel에서 비동기로 호출
@MainActor
final class ViewModel: ObservableObject {
    private let modelContainer: ModelContainer

    init(modelContainer: ModelContainer) {
        self.modelContainer = modelContainer
    }

    func syncServerData() async {
        let rawData = await networkClient.downloadJSON()
        
        // 백그라운드 액터 생성 시 공유 ModelContainer 전달
        let backgroundHandler = DataBackgroundHandler(modelContainer: modelContainer)
        
        do {
            // 메인 뷰 멈춤 없이 백그라운드 스레드에서 안전하게 DB 저장
            try await backgroundHandler.insertBatchItems(from: rawData)
        } catch {
            print(&quot;DB 저장 실패: \(error)&quot;)
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-heading=&quot;4. 일반 ModelContext 사용 vs ModelActor 패턴 비교 요약&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;4. 일반 ModelContext 사용 vs ModelActor 패턴 비교 요약&quot; data-ke-size=&quot;size26&quot;&gt;4. 일반 ModelContext 사용 vs ModelActor 패턴 비교 요약&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;일반 View ModelContext&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;ModelActor 패턴 방식&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;실행 스레드&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;메인 스레드 (@MainActor) 격리&lt;/td&gt;
&lt;td&gt;&lt;b&gt;독립된 백그라운드 액터 스레드&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;대용량 DB 작업 시&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;UI 프레임 드롭 및 랙 발생&lt;/td&gt;
&lt;td&gt;&lt;b&gt;메인 뷰 멈춤 없이 비동기 처리&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Swift 6 동시성 검사&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;백그라운드 Task 전달 시 에러 발생&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Strict Concurrency 안전하게 통과&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;주요 사용 목적&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;UI 뷰 데이터 바인딩 및 즉시 읽기&lt;/td&gt;
&lt;td&gt;&lt;b&gt;네트워크 대량 동기화 및 DB 파싱 백엔드&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(출처: Apple Developer Documentation - SwiftData ModelActor)&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-heading=&quot;5. 핵심 요약&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;5. 핵심 요약&quot; data-ke-size=&quot;size26&quot;&gt;5. 핵심 요약&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SwiftData의 ModelActor 패턴을 도입하면 대용량 DB 저장 및 파싱 작업을 메인 스레드 멈춤 없이 처리할 수 있으며, Swift 6 Strict Concurrency 환경에 부합하는 안전한 백그라운드 데이터 파이프라인을 구축할 수 있습니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;#SwiftData&quot;&gt;#SwiftData&lt;/a&gt; &lt;a href=&quot;#ModelActor&quot;&gt;#ModelActor&lt;/a&gt; &lt;a href=&quot;#Swift6&quot;&gt;#Swift6&lt;/a&gt; &lt;a href=&quot;#StrictConcurrency&quot;&gt;#StrictConcurrency&lt;/a&gt; &lt;a href=&quot;#iOS개발자&quot;&gt;#iOS개발자&lt;/a&gt; &lt;a href=&quot;#Swift동시성&quot;&gt;#Swift동시성&lt;/a&gt; &lt;a href=&quot;#iOS데이터베이스&quot;&gt;#iOS데이터베이스&lt;/a&gt; &lt;a href=&quot;#AppArchitecture&quot;&gt;#AppArchitecture&lt;/a&gt; &lt;a href=&quot;#SwiftUI&quot;&gt;#SwiftUI&lt;/a&gt;&lt;/p&gt;</description>
      <category>개발/Swift</category>
      <author>까칠코더</author>
      <guid isPermaLink="true">https://kka7.tistory.com/710</guid>
      <comments>https://kka7.tistory.com/710#entry710comment</comments>
      <pubDate>Wed, 5 Aug 2026 10:09:07 +0900</pubDate>
    </item>
    <item>
      <title>SwiftUI iOS 18 신기능: @Entry 매크로로 커스텀 EnvironmentValues 한 줄로 정의하기</title>
      <link>https://kka7.tistory.com/709</link>
      <description>&lt;h1 data-heading=&quot;SwiftUI iOS 18 신기능: @Entry 매크로로 커스텀 EnvironmentValues 한 줄로 정의하기&quot;&gt;SwiftUI iOS 18 신기능: @Entry 매크로로 커스텀 EnvironmentValues 한 줄로 정의하기&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;iOS 18부터 SwiftUI의 EnvironmentValues 확장 방식이 크게 단순화되었습니다. 기존에는 뷰 계층 구조 전체에 전달할 커스텀 환경 변수를 정의하기 위해 EnvironmentKey 프로토콜을 선언하고 getter와 setter 연산 프로퍼티를 일일이 작성해야 했습니다. iOS 18에 새롭게 도입된 @Entry 매크로를 사용하면 이러한 보일러플레이트 코드 없이 선언적으로 환경 변수를 작성할 수 있습니다. 기존 방식과의 코드 구조 비교 및 실무 적용 패턴은 다음과 같습니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-heading=&quot;1. 기존 &amp;#96;EnvironmentKey&amp;#96; 정의 방식의 불편함&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;1. 기존 &amp;#96;EnvironmentKey&amp;#96; 정의 방식의 불편함&quot; data-ke-size=&quot;size26&quot;&gt;1. 기존 EnvironmentKey 정의 방식의 불편함&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;iOS 18 이전에는 커스텀 키를 선언하기 위해 커스텀 타입을 정의한 후, EnvironmentValues에 연산 프로퍼티를 연결하는 장황한 코드가 필요했습니다.&lt;/p&gt;
&lt;pre class=&quot;swift&quot;&gt;&lt;code&gt;// 1. EnvironmentKey 프로토콜을 구현하는 타입 생성
private struct CustomThemeKey: EnvironmentKey {
    static let defaultValue: String = &quot;Light&quot;
}

// 2. EnvironmentValues 확장 및 getter/setter 구현
extension EnvironmentValues {
    var customTheme: String {
        get { self[CustomThemeKey.self] }
        set { self[CustomThemeKey.self] = newValue }
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 방식은 단 하나의 커스텀 환경 변수를 추가하기 위해서도 불필요한 전용 struct와 키 매핑 구문을 매번 새로 작성해야 하는 보일러플레이트(Boilerplate) 문제가 있었습니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-heading=&quot;2. iOS 18+ &amp;#96;@Entry&amp;#96; 매크로를 활용한 한 줄 선언&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;2. iOS 18+ &amp;#96;@Entry&amp;#96; 매크로를 활용한 한 줄 선언&quot; data-ke-size=&quot;size26&quot;&gt;2. iOS 18+ @Entry 매크로를 활용한 한 줄 선언&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;iOS 18에서는 @Entry 매크로가 도입되어 EnvironmentValues 확장 내부에 기본값(Default Value)과 함께 변수를 선언하는 것만으로 키 생성과 Accessor 매핑이 자동 완료됩니다.&lt;/p&gt;
&lt;pre class=&quot;dart&quot;&gt;&lt;code&gt;// iOS 18+ @Entry 매크로 적용 방식
extension EnvironmentValues {
    @Entry var customTheme: String = &quot;Light&quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;보일러플레이트 제거&lt;/b&gt;: 별도의 EnvironmentKey 타입을 만들지 않아도 컴파일러가 매크로를 통해 전용 키 타입 및 연산 프로퍼티를 자동 생성합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;기본값 지정&lt;/b&gt;: 변수 선언 시 할당한 초깃값이 환경 변수의 기본값(defaultValue)으로 자동 지정됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-heading=&quot;3. 커스텀 EnvironmentValues 정의 및 뷰 적용 실무 예제&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;3. 커스텀 EnvironmentValues 정의 및 뷰 적용 실무 예제&quot; data-ke-size=&quot;size26&quot;&gt;3. 커스텀 EnvironmentValues 정의 및 뷰 적용 실무 예제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;@Entry 매크로로 정의한 커스텀 환경 변수는 기존과 동일하게 .environment() 수정자 및 @Environment 프로퍼티 래퍼를 사용해 뷰 계층에 적용할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;swift&quot;&gt;&lt;code&gt;import SwiftUI

// 1. 커스텀 환경 변수 선언
extension EnvironmentValues {
    @Entry var userRole: String = &quot;Guest&quot;
}

// 2. 하위 뷰에서 환경 변수 읽기
struct ProfileView: View {
    @Environment(\.userRole) private var userRole

    var body: some View {
        Text(&quot;현재 사용자 권한: \(userRole)&quot;)
    }
}

// 3. 상위 뷰에서 커스텀 환경 변수 주입
struct ContentView: View {
    var body: some View {
        ProfileView()
            .environment(\.userRole, &quot;Admin&quot;)
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-heading=&quot;4. 기존 방식 vs &amp;#96;@Entry&amp;#96; 매크로 비교 요약&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;4. 기존 방식 vs &amp;#96;@Entry&amp;#96; 매크로 비교 요약&quot; data-ke-size=&quot;size26&quot;&gt;4. 기존 방식 vs @Entry 매크로 비교 요약&lt;/h2&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: 95px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;기존 방식 (iOS 17 이하)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;@Entry 매크로 방식 (iOS 18+)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;코드 구조&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;EnvironmentKey 타입 선언 + EnvironmentValues 확장&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;EnvironmentValues 확장 내 @Entry 선언&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;작성 코드량&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;최소 8~10줄 이상&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;단 1줄&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;기본값 설정&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;EnvironmentKey.defaultValue에 명시&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;변수 초깃값 할당으로 자동 지정&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;가독성 및 유지보수&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;불필요한 전용 struct 타입 양산&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;선언 직관성 대폭 향상&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(출처: Apple Developer Documentation - EnvironmentValues &amp;amp; @Entry)&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-heading=&quot;5. 핵심 요약&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;5. 핵심 요약&quot; data-ke-size=&quot;size26&quot;&gt;5. 핵심 요약&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;iOS 18의 @Entry 매크로는 SwiftUI 환경 변수 작성 시 반복되던 보일러플레이트 코드를 단 한 줄로 축소하여 뷰 계층 간 상태 전달 코드의 가독성과 개발 생산성을 획기적으로 향상시킵니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;#SwiftUI&quot;&gt;#SwiftUI&lt;/a&gt; &lt;a href=&quot;#iOS18&quot;&gt;#iOS18&lt;/a&gt; &lt;a href=&quot;#Entry매크로&quot;&gt;#Entry매크로&lt;/a&gt; &lt;a href=&quot;#EnvironmentValues&quot;&gt;#EnvironmentValues&lt;/a&gt; &lt;a href=&quot;#EnvironmentKey&quot;&gt;#EnvironmentKey&lt;/a&gt; &lt;a href=&quot;#SwiftUI신기능&quot;&gt;#SwiftUI신기능&lt;/a&gt; &lt;a href=&quot;#WWDC&quot;&gt;#WWDC&lt;/a&gt; &lt;a href=&quot;#Swift매크로&quot;&gt;#Swift매크로&lt;/a&gt; &lt;a href=&quot;#iOS개발자&quot;&gt;#iOS개발자&lt;/a&gt;&lt;/p&gt;</description>
      <category>개발/SwiftUI</category>
      <author>까칠코더</author>
      <guid isPermaLink="true">https://kka7.tistory.com/709</guid>
      <comments>https://kka7.tistory.com/709#entry709comment</comments>
      <pubDate>Wed, 5 Aug 2026 10:05:54 +0900</pubDate>
    </item>
    <item>
      <title>우리나라 AI 정책의 두 축: 소버린 AI(자주적 AI) 및 모두의 AI 핵심 개념 정리</title>
      <link>https://kka7.tistory.com/708</link>
      <description>&lt;h1 data-heading=&quot;우리나라 AI 정책의 두 축: 소버린 AI(자주적 AI) 및 모두의 AI 핵심 개념 정리&quot;&gt;우리나라 AI 정책의 두 축: 소버린 AI(자주적 AI) 및 모두의 AI 핵심 개념 정리&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;글로벌 인공지능 패권 경쟁이 심화됨에 따라 대한민국 정부와 기술 생태계는 '소버린 AI(Sovereign AI)'와 '모두의 AI'를 핵심 국가 전략으로 추진하고 있습니다. 소버린 AI는 해외 빅테크에 대한 디지털 종속을 막기 위한 기술적 자주권 확보를 의미하며, 모두의 AI는 인공지능의 혜택을 전 국민이 누릴 수 있도록 접근성을 보장하는 정책적 방향성을 뜻합니다. 두 정책의 세부 개념과 차이점은 다음과 같습니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-heading=&quot;1. 소버린 AI(Sovereign AI)의 정의와 필요성&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;1. 소버린 AI(Sovereign AI)의 정의와 필요성&quot; data-ke-size=&quot;size26&quot;&gt;1. 소버린 AI(Sovereign AI)의 정의와 필요성&lt;/h2&gt;
&lt;h3 data-heading=&quot;빅테크 기술 종속 방지와 데이터 주권 확보&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-heading=&quot;빅테크 기술 종속 방지와 데이터 주권 확보&quot; data-ke-size=&quot;size23&quot;&gt;빅테크 기술 종속 방지와 데이터 주권 확보&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;정의&lt;/b&gt;: 소버린 AI는 외국의 빅테크 기업(OpenAI, Google, Microsoft 등)의 클라우드나 API에 완전히 의존하지 않고, 자국의 데이터, 인프라, 인재, 기술 모델을 통해 독자적인 인공지능 생태계를 통제하는 역량을 의미합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;필요성&lt;/b&gt;: 국가 안보 관련 민감 정보 및 산업 데이터의 해외 유출을 방지하고, 특정 국가나 기업의 수출 규제 및 서비스 가격 정책 변화에 따른 종속 리스크를 차단하기 위함입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-heading=&quot;소버린 AI의 핵심 3요소&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-heading=&quot;소버린 AI의 핵심 3요소&quot; data-ke-size=&quot;size23&quot;&gt;소버린 AI의 핵심 3요소&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&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;: AI 모델의 학습, 자체 파인튜닝, 에이전트 배포 등 전체 운영 프로세스를 국내 법률 및 기술적 경계 안에서 자율 통제합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;문화&amp;middot;언어 주권&lt;/b&gt;: 한국어 고유의 어휘와 역사, 사회적 맥락 및 법적 규범을 정확히 이해하는 독립된 초거대 언어모델(LLM)을 보유합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-heading=&quot;2. 모두의 AI 정책의 주요 개념과 목표&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;2. 모두의 AI 정책의 주요 개념과 목표&quot; data-ke-size=&quot;size26&quot;&gt;2. 모두의 AI 정책의 주요 개념과 목표&lt;/h2&gt;
&lt;h3 data-heading=&quot;AI 디지털 격차 해소 및 보편적 접근권 제공&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-heading=&quot;AI 디지털 격차 해소 및 보편적 접근권 제공&quot; data-ke-size=&quot;size23&quot;&gt;AI 디지털 격차 해소 및 보편적 접근권 제공&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;정의&lt;/b&gt;: 모두의 AI는 인공지능 기술이 특정 대기업이나 일부 전문가만의 소유가 되지 않고, 소상공인, 중소기업, 일반 국민 누구나 자유롭게 활용할 수 있도록 지원하는 공공적 정책 체계입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;추진목적&lt;/b&gt;: 디지털 격차가 AI 활용 격차로 이어지는 사회적 불평등을 방지하고 국가 차원의 AI 활용 역량을 동반 상향하는 것을 목표로 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-heading=&quot;국민 1인 1 공공 AI 에이전트 서비스 활용&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-heading=&quot;국민 1인 1 공공 AI 에이전트 서비스 활용&quot; data-ke-size=&quot;size23&quot;&gt;국민 1인 1 공공 AI 에이전트 서비스 활용&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;보편적 접근 지원&lt;/b&gt;: 국산 AI 서비스 이용 바우처 및 저비용 AI 인프라를 제공하여 일반 이용자의 진입 장벽을 낮춥니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;공공 서비스 연계&lt;/b&gt;: 복지 지원금 안내, 청년 주택 지원, 취업 및 행정 절차 신청을 대신 처리해 주는 공공 지능 기반의 '공공 AI 에이전트' 서비스를 구축합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-heading=&quot;3. 소버린 AI vs 모두의 AI 비교 요약&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;3. 소버린 AI vs 모두의 AI 비교 요약&quot; data-ke-size=&quot;size26&quot;&gt;3. 소버린 AI vs 모두의 AI 비교 요약&lt;br /&gt;&lt;br /&gt;&lt;/h2&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;소버린 AI (Sovereign AI)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;모두의 AI (AI for All)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;정책 목표&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;해외 종속 방지 및 &lt;b&gt;기술&amp;middot;데이터 주권 확보&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;AI 접근성 보장 및 &lt;b&gt;국민 보편적 혜택 제공&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;주요 대상&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;AI 반도체, 데이터센터, 자국산 LLM 개발사&lt;/td&gt;
&lt;td&gt;일반 국민, 소상공인, 중소기업, 공공기관&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;핵심 요소&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;데이터 레지던시, 자국 데이터, 독립 인프라&lt;/td&gt;
&lt;td&gt;공공 AI 에이전트, AI 바우처, 보편적 복지&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;역할 및 관계&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;독자적 AI 기술 생태계 구축 (인프라)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;기술의 사회적 보급 및 대중화 (활용)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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-heading=&quot;4. 핵심 요약&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;4. 핵심 요약&quot; data-ke-size=&quot;size26&quot;&gt;4. 핵심 요약&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대한민국의 AI 전략은 인프라와 데이터의 기술적 자주권을 확보하는 '소버린 AI'와 이를 전 국민의 일상 속에 보급하여 활용 가치를 극대화하는 '모두의 AI'가 상호보완적 두 축을 이루고 있습니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;#소버린AI&quot;&gt;#소버린AI&lt;/a&gt; &lt;a href=&quot;#모두의AI&quot;&gt;#모두의AI&lt;/a&gt; &lt;a href=&quot;#AI주권&quot;&gt;#AI주권&lt;/a&gt; &lt;a href=&quot;#SovereignAI&quot;&gt;#SovereignAI&lt;/a&gt; &lt;a href=&quot;#인공지능정책&quot;&gt;#인공지능정책&lt;/a&gt; &lt;a href=&quot;#과학기술정보통신부&quot;&gt;#과학기술정보통신부&lt;/a&gt; &lt;a href=&quot;#국산LLM&quot;&gt;#국산LLM&lt;/a&gt; &lt;a href=&quot;#AI에이전트&quot;&gt;#AI에이전트&lt;/a&gt; &lt;a href=&quot;#AI인프라&quot;&gt;#AI인프라&lt;/a&gt; &lt;a href=&quot;#디지털격차&quot;&gt;#디지털격차&lt;/a&gt;&lt;/p&gt;</description>
      <category>AI</category>
      <author>까칠코더</author>
      <guid isPermaLink="true">https://kka7.tistory.com/708</guid>
      <comments>https://kka7.tistory.com/708#entry708comment</comments>
      <pubDate>Wed, 5 Aug 2026 09:51:07 +0900</pubDate>
    </item>
    <item>
      <title>2026년 근로장려금 소득 기준 완화 및 최대 지급액(180~360만 원) 인상 총정리</title>
      <link>https://kka7.tistory.com/707</link>
      <description>&lt;h1 data-heading=&quot;2026년 근로장려금 소득 기준 완화 및 최대 지급액(180~360만 원) 인상 총정리&quot;&gt;2026년 근로장려금 소득 기준 완화 및 최대 지급액(180~360만 원) 인상 총정리&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기획재정부가 2026년 8월 3일 발표한 '2026년 세제개편안'에 따르면, 저소득 가구의 근로 의욕을 고취하고 소득 지원을 강화하기 위해 근로장려금(EITC)의 소득 요건이 완화되고 최대 지급액이 상향 조정됩니다. 개편안에 따른 단독, 홑벌이, 맞벌이 가구별 소득 기준 및 지급액 변경 사항은 다음과 같습니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-heading=&quot;1. 2026년 근로장려금 가구 유형별 소득 요건 완화 기준&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;1. 2026년 근로장려금 가구 유형별 소득 요건 완화 기준&quot; data-ke-size=&quot;size26&quot;&gt;1. 2026년 근로장려금 가구 유형별 소득 요건 완화 기준&lt;/h2&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;b&gt;단독가구&lt;/b&gt;: 기존 연 2,200만 원 이하에서 &lt;b&gt;연 2,600만 원 이하&lt;/b&gt;로 기준이 완화됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;홑벌이가구&lt;/b&gt;: 기존 연 3,200만 원 이하에서 &lt;b&gt;연 3,700만 원 이하&lt;/b&gt;로 기준이 완화됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;맞벌이가구&lt;/b&gt;: 기존 연 3,800만 원 이하에서 &lt;b&gt;연 5,200만 원 이하&lt;/b&gt;로 소득 한도가 대폭 상향 조정됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-heading=&quot;2. 가구 유형별 최대 지급액 인상 내역&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;2. 가구 유형별 최대 지급액 인상 내역&quot; data-ke-size=&quot;size26&quot;&gt;2. 가구 유형별 최대 지급액 인상 내역&lt;/h2&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;b&gt;단독가구&lt;/b&gt;: 최대 지급액이 현행 165만 원에서 &lt;b&gt;180만 원&lt;/b&gt;으로 15만 원 인상됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;홑벌이가구&lt;/b&gt;: 최대 지급액이 현행 285만 원에서 &lt;b&gt;310만 원&lt;/b&gt;으로 25만 원 인상됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;맞벌이가구&lt;/b&gt;: 최대 지급액이 현행 330만 원에서 &lt;b&gt;360만 원&lt;/b&gt;으로 30만 원 인상됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-heading=&quot;3. 2026년 근로장려금 개편 전후 비교&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;3. 2026년 근로장려금 개편 전후 비교&quot; data-ke-size=&quot;size26&quot;&gt;3. 2026년 근로장려금 개편 전후 비교&lt;/h2&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;가구 유형&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;개편 전 기준&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;개편 후 기준 (2026년 세제개편안)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;총소득 기준 요건&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;단독가구&lt;/td&gt;
&lt;td&gt;2,200만 원 이하&lt;/td&gt;
&lt;td&gt;&lt;b&gt;2,600만 원 이하&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;홑벌이가구&lt;/td&gt;
&lt;td&gt;3,200만 원 이하&lt;/td&gt;
&lt;td&gt;&lt;b&gt;3,700만 원 이하&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;맞벌이가구&lt;/td&gt;
&lt;td&gt;3,800만 원 이하&lt;/td&gt;
&lt;td&gt;&lt;b&gt;5,200만 원 이하&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;최대 지급액&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;단독가구&lt;/td&gt;
&lt;td&gt;165만 원&lt;/td&gt;
&lt;td&gt;&lt;b&gt;180만 원&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;홑벌이가구&lt;/td&gt;
&lt;td&gt;285만 원&lt;/td&gt;
&lt;td&gt;&lt;b&gt;310만 원&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;맞벌이가구&lt;/td&gt;
&lt;td&gt;330만 원&lt;/td&gt;
&lt;td&gt;&lt;b&gt;360만 원&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(출처: 기획재정부 2026년 세제개편안 보도자료, 대한민국 정책브리핑)&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-heading=&quot;4. 핵심 요약&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;4. 핵심 요약&quot; data-ke-size=&quot;size26&quot;&gt;4. 핵심 요약&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2026년 근로장려금 개편안은 소득 한도를 넓혀 수급 대상을 확대하고, 가구별 최대 지급액을 최대 360만 원까지 상향하여 서민 및 저소득 가구의 가계 소득 보전을 목표로 합니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;#근로장려금&quot;&gt;#근로장려금&lt;/a&gt; &lt;a href=&quot;#2026근로장려금&quot;&gt;#2026근로장려금&lt;/a&gt; &lt;a href=&quot;#근로장려금소득기준&quot;&gt;#근로장려금소득기준&lt;/a&gt; &lt;a href=&quot;#근로장려금지급액&quot;&gt;#근로장려금지급액&lt;/a&gt; &lt;a href=&quot;#근로장려금신청&quot;&gt;#근로장려금신청&lt;/a&gt; &lt;a href=&quot;#세제개편안&quot;&gt;#세제개편안&lt;/a&gt; &lt;a href=&quot;#기획재정부&quot;&gt;#기획재정부&lt;/a&gt; &lt;a href=&quot;#서민지원정책&quot;&gt;#서민지원정책&lt;/a&gt;&lt;/p&gt;</description>
      <category>생활정보</category>
      <author>까칠코더</author>
      <guid isPermaLink="true">https://kka7.tistory.com/707</guid>
      <comments>https://kka7.tistory.com/707#entry707comment</comments>
      <pubDate>Wed, 5 Aug 2026 09:46:14 +0900</pubDate>
    </item>
    <item>
      <title>자취 직장인 필수 확인: 2026년 월세 세액공제 한도 및 맞벌이 부부 공제 개편</title>
      <link>https://kka7.tistory.com/706</link>
      <description>&lt;h1 data-heading=&quot;자취 직장인 필수 확인: 2026년 월세 세액공제 한도 및 맞벌이 부부 공제 개편&quot;&gt;자취 직장인 필수 확인: 2026년 월세 세액공제 한도 및 맞벌이 부부 공제 개편&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기획재정부가 2026년 8월 3일 발표한 '2026년 세제개편안'에는 무주택 서민 및 청년층의 주거비 부담을 완화하기 위한 월세 세액공제 한도 확대와 맞벌이 부부의 주택 임차자금 공제 개선안이 포함되었습니다. 주거비 세제 혜택의 주요 변경 내용을 정리합니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-heading=&quot;1. 월세 세액공제 연간 한도 상향 (1,000만 원 &amp;rarr; 1,200만 원)&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;1. 월세 세액공제 연간 한도 상향 (1,000만 원 &amp;rarr; 1,200만 원)&quot; data-ke-size=&quot;size26&quot;&gt;1. 월세 세액공제 연간 한도 상향 (1,000만 원 &amp;rarr; 1,200만 원)&lt;/h2&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;b&gt;공제 한도 확대&lt;/b&gt;: 현행 연간 1,000만 원 한도에서 &lt;b&gt;연간 1,200만 원&lt;/b&gt;으로 공제 한도가 200만 원 확대됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;절세 효과&lt;/b&gt;: 월세 지출이 많은 세입자의 경우, 확대된 한도에 따라 소득공제 감면 혜택을 추가로 받을 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-heading=&quot;2. 청년 세액공제율 17% 우대 적용 조건&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;2. 청년 세액공제율 17% 우대 적용 조건&quot; data-ke-size=&quot;size26&quot;&gt;2. 청년 세액공제율 17% 우대 적용 조건&lt;/h2&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;b&gt;청년층 우대 적용&lt;/b&gt;: 총급여 및 종합소득 수준과 관계없이 청년 수급자에 대해 &lt;b&gt;17%의 세액공제율&lt;/b&gt;을 적용합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;혜택 적용 대상&lt;/b&gt;: 만 19세 이상 만 34세 이하의 무주택 청년 세입자가 대상입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-heading=&quot;3. 맞벌이 부부 임차대출 중복 소득공제 허용&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;3. 맞벌이 부부 임차대출 중복 소득공제 허용&quot; data-ke-size=&quot;size26&quot;&gt;3. 맞벌이 부부 임차대출 중복 소득공제 허용&lt;/h2&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;b&gt;각자 공제 허용&lt;/b&gt;: 주거지가 분리된 무주택 맞벌이 부부의 경우, 각자 명의로 받은 전세자금 대출(주택임차차입금) 원리금 상환액에 대해 부부 각각 소득공제를 신청할 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;결혼 페널티 해소&lt;/b&gt;: 기존 1세대 1공제 제한으로 인해 발생하던 페널티를 완화하여 실질적인 주거비 부담을 줄입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-heading=&quot;4. 월세 세액공제 및 주거 세제 개편 전후 비교&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;4. 월세 세액공제 및 주거 세제 개편 전후 비교&quot; data-ke-size=&quot;size26&quot;&gt;4. 월세 세액공제 및 주거 세제 개편 전후 비교&lt;/h2&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;개편 전&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;개편 후 (2026년 세제개편안)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;월세 세액공제 연 한도&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;1,000만 원&lt;/td&gt;
&lt;td&gt;&lt;b&gt;1,200만 원&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;청년층 공제율&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;소득 구간에 따라 15% / 17% 차등&lt;/td&gt;
&lt;td&gt;&lt;b&gt;청년 소득 무관 17% 우대 적용&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;맞벌이 부부 임차대출 공제&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;1세대 내 1인만 신청 가능&lt;/td&gt;
&lt;td&gt;&lt;b&gt;별거 맞벌이 부부 각자 명의 공제 인정&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(출처: 기획재정부 2026년 세제개편안 보도자료, 대한민국 정책브리핑)&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-heading=&quot;5. 핵심 요약&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;5. 핵심 요약&quot; data-ke-size=&quot;size26&quot;&gt;5. 핵심 요약&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2026년 주거 세제 개편안은 월세 세액공제 한도를 1,200만 원으로 확대하고 청년 공제율을 17%로 고정 우대하며, 별거 맞벌이 부부의 전세대출 중복 공제를 허용하여 주거비 절세 혜택을 대폭 강화했습니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;#월세세액공제&quot;&gt;#월세세액공제&lt;/a&gt; &lt;a href=&quot;#2026세제개편안&quot;&gt;#2026세제개편안&lt;/a&gt; &lt;a href=&quot;#월세공제한도&quot;&gt;#월세공제한도&lt;/a&gt; &lt;a href=&quot;#청년월세공제&quot;&gt;#청년월세공제&lt;/a&gt; &lt;a href=&quot;#맞벌이부부전세대출&quot;&gt;#맞벌이부부전세대출&lt;/a&gt; &lt;a href=&quot;#주택임차차입금&quot;&gt;#주택임차차입금&lt;/a&gt; &lt;a href=&quot;#연말정산월세&quot;&gt;#연말정산월세&lt;/a&gt; &lt;a href=&quot;#기획재정부&quot;&gt;#기획재정부&lt;/a&gt;&lt;/p&gt;</description>
      <category>생활정보</category>
      <author>까칠코더</author>
      <guid isPermaLink="true">https://kka7.tistory.com/706</guid>
      <comments>https://kka7.tistory.com/706#entry706comment</comments>
      <pubDate>Wed, 5 Aug 2026 09:44:42 +0900</pubDate>
    </item>
    <item>
      <title>Xcode 27 / Swift 6.3 SPM 동적 라이브러리(Dynamic Framework) 링킹 충돌 원인과 해결 방법</title>
      <link>https://kka7.tistory.com/705</link>
      <description>&lt;h1 data-heading=&quot;Xcode 27 / Swift 6.3 SPM 동적 라이브러리(Dynamic Framework) 링킹 충돌 원인과 해결 방법&quot;&gt;Xcode 27 / Swift 6.3 SPM 동적 라이브러리(Dynamic Framework) 링킹 충돌 원인과 해결 방법&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Xcode 27 및 Swift 6.3 환경에서 Swift Package Manager(SPM)를 통해 외부 라이브러리를 추가하거나 멀티 모듈 프로젝트를 구성할 때 duplicate symbol, objc-class-ref, 또는 앱 실행 시 dyld: Library not loaded 링킹 에러가 발생하는 사례가 증가하고 있습니다. 이는 메인 앱 타깃과 확장 타깃(Widget, Notification Service Extension 등)이 동적 라이브러리를 중복 링킹하면서 발생하는 구조적 문제입니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-heading=&quot;Static vs Dynamic 링킹 방식 및 Xcode 27 변경점&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;Static vs Dynamic 링킹 방식 및 Xcode 27 변경점&quot; data-ke-size=&quot;size26&quot;&gt;Static vs Dynamic 링킹 방식 및 Xcode 27 변경점&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SPM 패키지의 Package.swift에서 라이브러리 타입을 명시하지 않으면 기본적으로 Static 형태로 빌드됩니다. 그러나 해당 라이브러리를 메인 앱과 앱 익스텐션 타깃 모두에서 참조할 경우 Xcode 27 빌드 시스템에서 링킹 충돌이 발생합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구분 Static Library (.static) Dynamic Framework (.dynamic)&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;바인딩 시점&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;컴파일/빌드 타임에 바이너리에 포함&lt;/td&gt;
&lt;td&gt;앱 실행 시(Runtime) 동적 로딩&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;다중 타깃 참조 시&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;각 타깃 바이너리마다 코드 중복 복사 발생&lt;/td&gt;
&lt;td&gt;메인 앱 바이너리에 1회 임베드 후 공유&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;대표 발생 에러&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;Duplicate symbol _OBJC_CLASS_$_...&lt;/td&gt;
&lt;td&gt;dyld: Library not loaded / Image Not Found&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Xcode 27 권장&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;단일 타깃 전용 라이브러리&lt;/td&gt;
&lt;td&gt;메인 앱 + Extension 공통 참조 라이브러리&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-heading=&quot;1. 문제 상황: 다중 타깃 링킹 충돌 에러 패턴&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;1. 문제 상황: 다중 타깃 링킹 충돌 에러 패턴&quot; data-ke-size=&quot;size26&quot;&gt;1. 문제 상황: 다중 타깃 링킹 충돌 에러 패턴&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메인 앱 타깃과 위젯 익스텐션 타깃이 동일한 SPM 라이브러리를 각각 링킹하도록 설정되어 있으면 아래와 같은 빌드 및 런타임 오류가 나타납니다.&lt;/p&gt;
&lt;pre class=&quot;groovy&quot;&gt;&lt;code&gt;// 컴파일 타임 에러 예시 (Static 중복 링킹)
error: duplicate symbol '_OBJC_CLASS_$_SharedUtility' in:
    /Users/.../Build/Products/Debug-iphonesimulator/MainApp.o
    /Users/.../Build/Products/Debug-iphonesimulator/WidgetExtension.o

// 런타임 에러 예시 (Dynamic Embed 설정 오류)
dyld[1234]: Library not loaded: @rpath/SharedFramework.framework/SharedFramework
  Referenced from: &amp;lt;UUID&amp;gt; /var/containers/Bundle/Application/.../WidgetExtension
  Reason: tried: '/usr/lib/swift/SharedFramework.framework' (no such file)
&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-heading=&quot;2. 해결 방안: SPM 및 Xcode 타깃 링킹 재구성&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;2. 해결 방안: SPM 및 Xcode 타깃 링킹 재구성&quot; data-ke-size=&quot;size26&quot;&gt;2. 해결 방안: SPM 및 Xcode 타깃 링킹 재구성&lt;/h2&gt;
&lt;h3 data-heading=&quot;방안 1: &amp;#96;Package.swift&amp;#96; 라이브러리 타입 명시적 선언&quot; data-ke-size=&quot;size23&quot;&gt;방안 1: Package.swift 라이브러리 타입 명시적 선언&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자체 제작한 모듈이거나 사내 SPM 패키지인 경우 Package.swift 내의 products 정의에서 라이브러리 타입을 .dynamic으로 명시합니다.&lt;/p&gt;
&lt;pre class=&quot;dts&quot;&gt;&lt;code&gt;// Package.swift
import PackageDescription

let package = Package(
    name: &quot;SharedCore&quot;,
    platforms: [.iOS(.v17)],
    products: [
        // type: .dynamic 옵션을 통해 런타임 동적 라이브러리로 빌드 지정
        .library(
            name: &quot;SharedCore&quot;,
            type: .dynamic,
            targets: [&quot;SharedCore&quot;]
        ),
    ],
    targets: [
        .target(
            name: &quot;SharedCore&quot;,
            dependencies: []
        ),
    ]
)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-heading=&quot;방안 2: Xcode Build Target의 Embed 설정 최적화&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-heading=&quot;방안 2: Xcode Build Target의 Embed 설정 최적화&quot; data-ke-size=&quot;size23&quot;&gt;방안 2: Xcode Build Target의 Embed 설정 최적화&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서드파티 오픈소스 SPM 라이브러리(Package.swift 수정이 불가능한 경우)는 Xcode 프로젝트의 Frameworks, Libraries, and Embedded Content 설정을 분리해야 합니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;메인 앱 타깃 (Main App Target)&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SPM 라이브러리를 추가하고 &lt;b&gt;Embed &amp;amp; Sign&lt;/b&gt;으로 설정합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;익스텐션 타깃 (Widget / Extension Target)&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;동일한 SPM 라이브러리를 추가하되 &lt;b&gt;Do Not Embed&lt;/b&gt;로 지정합니다.&lt;/li&gt;
&lt;li&gt;이렇게 설정하면 메인 앱 번들에 동적 프레임워크가 1회 포함되고, 익스텐션은 런타임 시 메인 앱의 @executable_path/Frameworks 또는 @loader_path/Frameworks 경로를 통해 해당 라이브러리를 참조합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-heading=&quot;3. Build Settings 추가 체크리스트&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;3. Build Settings 추가 체크리스트&quot; data-ke-size=&quot;size26&quot;&gt;3. Build Settings 추가 체크리스트&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;Runpath Search Paths (LD_RUNPATH_SEARCH_PATHS) 확인&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;익스텐션 타깃의 Build Settings에서 Runpath Search Paths에 다음 경로가 포함되어 있는지 확인합니다.&lt;/li&gt;
&lt;li&gt;@executable_path/Frameworks&lt;/li&gt;
&lt;li&gt;@executable_path/../../Frameworks (App Extension의 메인 프레임워크 탐색 경로)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Other Linker Flags (OTHER_LDFLAGS) 정리&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;타깃 빌드 옵션에서 불필요하게 명시된 -all_load 또는 -force_load 플래그가 SPM 라이브러리와 중복 링킹을 유발하지 않는지 점검합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-heading=&quot;핵심 요약&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;핵심 요약&quot; data-ke-size=&quot;size26&quot;&gt;핵심 요약&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Xcode 27 / Swift 6.3 환경에서 메인 앱과 App Extension이 동일한 SPM 라이브러리를 참조할 때 Static/Dynamic 링킹 설정 미숙으로 충돌이 발생합니다.&lt;/li&gt;
&lt;li&gt;메인 앱과 익스텐션에서 동시 참조하는 라이브러리는 Dynamic 형태로 구성해야 합니다.&lt;/li&gt;
&lt;li&gt;메인 앱 타깃에는 Embed &amp;amp; Sign을 지정하고, 익스텐션 타깃에는 Do Not Embed로 설정하여 런타임 참조 공유 방식을 적용합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;#Xcode27&quot;&gt;#Xcode27&lt;/a&gt; &lt;a href=&quot;#Swift6_3&quot;&gt;#Swift6_3&lt;/a&gt; &lt;a href=&quot;#SPM&quot;&gt;#SPM&lt;/a&gt; &lt;a href=&quot;#SwiftPackageManager&quot;&gt;#SwiftPackageManager&lt;/a&gt; &lt;a href=&quot;#DynamicFramework&quot;&gt;#DynamicFramework&lt;/a&gt; &lt;a href=&quot;#LinkerError&quot;&gt;#LinkerError&lt;/a&gt; &lt;a href=&quot;#iOS개발&quot;&gt;#iOS개발&lt;/a&gt; &lt;a href=&quot;#Xcode트러블슈팅&quot;&gt;#Xcode트러블슈팅&lt;/a&gt;&lt;/p&gt;</description>
      <category>개발/Swift</category>
      <author>까칠코더</author>
      <guid isPermaLink="true">https://kka7.tistory.com/705</guid>
      <comments>https://kka7.tistory.com/705#entry705comment</comments>
      <pubDate>Tue, 4 Aug 2026 10:25:22 +0900</pubDate>
    </item>
    <item>
      <title>2026년 부동산 세제 개편안 핵심 정리: 종부세&amp;middot;양도세 기준 및 주요 변경 사항</title>
      <link>https://kka7.tistory.com/704</link>
      <description>&lt;h1 data-heading=&quot;2026년 부동산 세제 개편안 핵심 정리: 종부세&amp;middot;양도세 기준 및 주요 변경 사항&quot;&gt;2026년 부동산 세제 개편안 핵심 정리: 종부세&amp;middot;양도세 기준 및 주요 변경 사항&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기획재정부가 2026년 8월 3일 발표한 '2026년 세제개편안'에 따르면, 부동산 세제 산정 기준이 기존의 '주택 수' 중심에서 '주택 가액' 및 '실제 거주 여부' 중심으로 전면 개편됩니다. 주요 개편 내용은 종합부동산세(종부세) 공제 확대 및 세율 단순화, 양도소득세(양도세) 장기보유특별공제의 거주 요건 강화입니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-heading=&quot;1. 종합부동산세(종부세) 주요 개편 내용&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;1. 종합부동산세(종부세) 주요 개편 내용&quot; data-ke-size=&quot;size26&quot;&gt;1. 종합부동산세(종부세) 주요 개편 내용&lt;/h2&gt;
&lt;h3 data-heading=&quot;1세대 1주택자 기본공제 상향&quot; data-ke-size=&quot;size23&quot;&gt;1세대 1주택자 기본공제 상향&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;기본공제액 조정&lt;/b&gt;: 1세대 1주택 실거주자의 종부세 기본공제 금액이 현행 공시가격 12억 원에서 &lt;b&gt;14억 원&lt;/b&gt;(시가 기준 약 20억 원 상당)으로 상향 조정됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;과세 대상 축소&lt;/b&gt;: 시가 20억 원 이하의 1세대 1주택 보유자는 종부세 과세 대상에서 제외됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-heading=&quot;다주택자&amp;middot;비거주 주택 및 세율 체계 개편&quot; data-ke-size=&quot;size23&quot;&gt;다주택자&amp;middot;비거주 주택 및 세율 체계 개편&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;비거주&amp;middot;다주택자 기본공제&lt;/b&gt;: 비거주 주택 및 다주택자의 기본공제는 현행 &lt;b&gt;9억 원&lt;/b&gt;(시가 기준 약 13억 원)으로 유지됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;주택 수 차등 세율 폐지&lt;/b&gt;: 기존에 보유 주택 수에 따라 구분되던 중과세율 체계가 폐지되며, 주택 수와 상관없이 &lt;b&gt;주택 가액 합산액&lt;/b&gt;을 기준으로 세율이 일원화됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;초고가 주택 과세 강화&lt;/b&gt;: 시가 40억~50억 원을 초과하는 초고가 주택에 대해서는 구간별 과세 표준 세율이 강화됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-heading=&quot;거주 기간 중심 세액공제 전환&quot; data-ke-size=&quot;size23&quot;&gt;거주 기간 중심 세액공제 전환&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&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;: 2028년부터는 보유 기간 공제가 축소되고, 실제 거주 기간에 따른 세액공제(최대 50%) 위주로 적용됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-heading=&quot;2. 양도소득세 주요 개편 내용&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;2. 양도소득세 주요 개편 내용&quot; data-ke-size=&quot;size26&quot;&gt;2. 양도소득세 주요 개편 내용&lt;/h2&gt;
&lt;h3 data-heading=&quot;비거주 기간 장기보유특별공제 배제&quot; data-ke-size=&quot;size23&quot;&gt;비거주 기간 장기보유특별공제 배제&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&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;: 실거주하지 않는 1주택 또는 다주택 보유자의 양도소득세 부담이 증가합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-heading=&quot;1세대 1주택자 실거주 공제 유지&quot; data-ke-size=&quot;size23&quot;&gt;1세대 1주택자 실거주 공제 유지&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;실거주자 혜택 보존&lt;/b&gt;: 1세대 1주택자가 10년 이상 보유 및 실거주를 충족할 경우 현행과 동일하게 &lt;b&gt;최대 80%&lt;/b&gt;의 장기보유특별공제율이 그대로 유지됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-heading=&quot;3. 부동산 세제 개편 전후 주요 내용 비교&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;3. 부동산 세제 개편 전후 주요 내용 비교&quot; data-ke-size=&quot;size26&quot;&gt;3. 부동산 세제 개편 전후 주요 내용 비교&lt;/h2&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;개편 전&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;개편 후 (2026년 세제개편안)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;과세 핵심 기준&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;주택 수 중심&lt;/td&gt;
&lt;td&gt;주택 가액 및 실거주 여부 중심&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;종부세 1주택 기본공제&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;공시가격 12억 원 (시가 약 17억 원)&lt;/td&gt;
&lt;td&gt;&lt;b&gt;공시가격 14억 원&lt;/b&gt; (시가 약 20억 원)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;종부세 다주택 기본공제&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;공시가격 9억 원&lt;/td&gt;
&lt;td&gt;&lt;b&gt;공시가격 9억 원&lt;/b&gt; (유지)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;종부세 세율 구조&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;주택 수에 따른 차등 중과세&lt;/td&gt;
&lt;td&gt;&lt;b&gt;주택 가액 기준 일원화&lt;/b&gt; (단, 초고가주택 강화)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;종부세 세액공제&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;보유 기간 + 거주 기간 (최대 80%)&lt;/td&gt;
&lt;td&gt;&lt;b&gt;거주 기간 중심&lt;/b&gt;으로 단계적 전환 (2028년~)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;양도세 장기보유특별공제&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;보유 기간별 공제 인정&lt;/td&gt;
&lt;td&gt;&lt;b&gt;비거주 기간 공제 배제&lt;/b&gt; (실거주 10년 시 80% 유지)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(출처: 기획재정부 2026년 세제개편안 보도자료, 대한민국 정책브리핑)&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-heading=&quot;4. 핵심 요약&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;4. 핵심 요약&quot; data-ke-size=&quot;size26&quot;&gt;4. 핵심 요약&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2026년 부동산 세제 개편안은 실거주 목적의 1세대 1주택자에 대한 세제 부담을 완화하는 동시에, 비거주 주택 및 초고가 주택에 대한 과세를 강화하여 실거주 중심의 시장 구조 유도를 목표로 합니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;#부동산세제개편&quot;&gt;#부동산세제개편&lt;/a&gt; &lt;a href=&quot;#종합부동산세&quot;&gt;#종합부동산세&lt;/a&gt; &lt;a href=&quot;#종부세기본공제&quot;&gt;#종부세기본공제&lt;/a&gt; &lt;a href=&quot;#양도소득세&quot;&gt;#양도소득세&lt;/a&gt; &lt;a href=&quot;#장기보유특별공제&quot;&gt;#장기보유특별공제&lt;/a&gt; &lt;a href=&quot;#1세대1주택&quot;&gt;#1세대1주택&lt;/a&gt; &lt;a href=&quot;#기획재정부&quot;&gt;#기획재정부&lt;/a&gt; &lt;a href=&quot;#부동산세금&quot;&gt;#부동산세금&lt;/a&gt; &lt;a href=&quot;#2026세제개편안&quot;&gt;#2026세제개편안&lt;/a&gt; &lt;a href=&quot;#실거주요건&quot;&gt;#실거주요건&lt;/a&gt;&lt;/p&gt;</description>
      <category>부동산</category>
      <author>까칠코더</author>
      <guid isPermaLink="true">https://kka7.tistory.com/704</guid>
      <comments>https://kka7.tistory.com/704#entry704comment</comments>
      <pubDate>Tue, 4 Aug 2026 10:21:59 +0900</pubDate>
    </item>
  </channel>
</rss>