PageSourceSearch

https://f-lab.ai/_next/static/chunks/pages/mentoring-courses/ios-1f63a3a2b5d0d9b9.js

js f-lab.ai collected 2026-10-05 13:48:23 UTC 29,119 bytes, 1 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6330],{95093:function(n,t,e){(window.__NEXT_P=window.__NEXT_P||[]).push(["/mentoring-courses/ios",function(){return e(53065)}])},53065:function(n,t,e){"use strict";e.r(t),e.d(t,{__N_SSP:function(){return tB},default:function(){return t$}});var i=e(52903),r=e(2784),o=e(6837),l=e(14607),u=e(76424),c=e(6281),d=e(43142),a=e(73079),s=e(53476),p=e(81994),f=e(93529),b=e(99385),h=e(40146),g=e(31646),x=e(91535),Z=e(79047),_=e(35033),m=e(95440),v=e(90153),w=e(32921),k=e(76750),y=e(18305),S=e(83506),I=e(17436),C=e(2426),X=e(2190),B=e(96916),$=e(30090),L=e(27533),E=e(75680),M=e(96714),A=e(57186),N=e(81333),H=e(67862),F=e(265),V=e(28165),P=e(11198),T=e(12065);function Y(){let n=(0,H._)(["\n  display: flex;\n  flex-direction: column;\n  row-gap: 80px;\n  align-items: center;\n  justify-content: center;\n\n  padding: 140px 16px 110px;\n\n  color: ",";\n\n  background-color: ",";\n\n  "," {\n    row-gap: 48px;\n    padding: 72px 16px;\n  }\n"]);return Y=function(){return n},n}function U(){let n=(0,H._)(["\n  display: flex;\n  flex-direction: column;\n  row-gap: 12px;\n  align-items: center;\n  justify-content: center;\n\n  padding: 0 0 22px;\n\n  text-align: center;\n\n  "," {\n    row-gap: 16px;\n    padding: 0;\n  }\n"]);return U=function(){return n},n}function j(){let n=(0,H._)(["\n  color: white;\n\n  ","\n\n  "," {\n    ","\n    word-break: keep-all;\n    white-space: pre-line;\n  }\n"]);return j=function(){return n},n}function D(){let n=(0,H._)(["\n  ","\n  word-break: keep-all;\n  white-space: pre-line;\n\n  "," {\n    ","\n    white-space: normal;\n  }\n"]);return D=function(){return n},n}function G(){let n=(0,H._)(["\n  display: flex;\n  column-gap: 24px;\n  justify-content: center;\n\n  width: 100%;\n  max-width: 1032px;\n\n  "," {\n    display: none;\n  }\n"]);return G=function(){return n},n}function O(){let n=(0,H._)(["\n  position: relative;\n  width: 240px;\n  height: fit-content;\n"]);return O=function(){return n},n}function z(){let n=(0,H._)(["\n  position: absolute;\n  z-index: 10;\n  top: 0;\n  left: 28px;\n\n  width: 5px;\n  height: 100%;\n\n  background-color: ",";\n"]);return z=function(){return n},n}function R(){let n=(0,H._)(["\n      background-color: ",";\n    "]);return R=function(){return n},n}function Q(){let n=(0,H._)(["\n  position: relative;\n\n  display: flex;\n  flex-direction: column;\n  row-gap: 4px;\n  justify-content: center;\n\n  width: 100%;\n  height: 96px;\n  padding: 0 0 0 59px;\n\n  border-radius: 10px;\n\n  text-align: left;\n\n  ","\n"]);return Q=function(){return n},n}function J(){let n=(0,H._)(["\n  position: absolute;\n  z-index: 11;\n  top: 50%;\n  left: 22px;\n  transform: translateY(-50%);\n\n  width: 17px;\n  height: 17px;\n\n  background-color: ",";\n  border-radius: 50%;\n"]);return J=function(){return n},n}function K(){let n=(0,H._)(["\n  position: absolute;\n  z-index: 11;\n  top: 50%;\n  left: 13px;\n  transform: translateY(-50%);\n\n  width: 35px;\n  height: 35px;\n\n  opacity: ",";\n  background-color: ",";\n  border-radius: 50%;\n"]);return K=function(){return n},n}function q(){let n=(0,H._)(["\n  transition: color 0.3s ease-in-out;\n  ","\n  color: ",";\n"]);return q=function(){return n},n}function W(){let n=(0,H._)(["\n  ","\n  color: ",";\n"]);return W=function(){return n},n}function nn(){let n=(0,H._)(["\n  flex: 1;\n  height: fit-content;\n"]);return nn=function(){return n},n}function nt(){let n=(0,H._)(["\n  position: relative;\n\n  display: none;\n\n  width: 100%;\n  height: fit-content;\n  padding: 0 0 0 35px;\n\n  "," {\n    display: block;\n  }\n"]);return nt=function(){return n},n}function ne(){let n=(0,H._)(["\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 7px;\n\n  width: 6px;\n\n  background-color: ",";\n"]);return ne=function(){return n},n}function ni(){let n=(0,H._)(["\n  position: absolute;\n  top: 28px;\n  left: -35px;\n\n  width: 20px;\n  height: 20px;\n\n  background-color: ",";\n  border-radius: 50%;\n"]);return ni=function(){return n},n}function nr(){let n=(0,H._)(["\n  position: absolute;\n  top: 21px;\n  left: -42px;\n\n  width: 35px;\n  height: 35px;\n\n  opacity: ",";\n  background-color: ",";\n  border-radius: 50%;\n"]);return nr=function(){return n},n}function no(){let n=(0,H._)(["\n  display: flex;\n  flex-direction: column;\n  row-gap: 15px;\n  width: 100%;\n"]);return no=function(){return n},n}function nl(){let n=(0,H._)(["\n      grid-template-rows: minmax(75px, auto) 1fr;\n    "]);return nl=function(){return n},n}function nu(){let n=(0,H._)(["\n  position: relative;\n  width: 100%;\n\n  border-radius: 16px;\n  background-color: ",";\n\n  display: grid;\n  grid-template-columns: 1fr;\n  grid-template-rows: minmax(75px, auto) 0fr;\n\n  transition: grid-template-rows 0.3s ease-in-out;\n\n  ","\n"]);return nu=function(){return n},n}function nc(){let n=(0,H._)(["\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n\n  padding: 20px 24px 20px 20px;\n\n  text-align: left;\n"]);return nc=function(){return n},n}
1function nd(){let n=(0,H._)(["\n  display: flex;\n  flex-direction: column;\n"]);return nd=function(){return n},n}function na(){let n=(0,H._)(["\n  ","\n  color: white;\n"]);return na=function(){return n},n}function ns(){let n=(0,H._)(["\n  ","\n  color: ",";\n"]);return ns=function(){return n},n}function np(){let n=(0,H._)(["\n      transform: rotate(180deg);\n    "]);return np=function(){return n},n}function nf(){let n=(0,H._)(["\n  width: 24px;\n  height: 24px;\n  transition: transform 0.3s ease-in-out;\n\n  ","\n"]);return nf=function(){return n},n}function nb(){let n=(0,H._)(["\n  background-color: ",";\n\n  overflow: hidden;\n  min-height: 0;\n\n  width: 100%;\n  padding: ",";\n"]);return nb=function(){return n},n}function nh(){let n=(0,H._)(["\n      background-color: ",";\n      border-radius: 16px;\n      padding: 32px;\n    "]);return nh=function(){return n},n}function ng(){let n=(0,H._)(["\n  display: flex;\n  flex-direction: column;\n\n  ","\n"]);return ng=function(){return n},n}function nx(){let n=(0,H._)(["\n  display: flex;\n  flex-direction: column;\n  gap: 8px;\n  margin-bottom: 16px;\n"]);return nx=function(){return n},n}function nZ(){let n=(0,H._)(["\n  ","\n  color: ",";\n"]);return nZ=function(){return n},n}function n_(){let n=(0,H._)(["\n  ","\n  color: white;\n  margin: 0;\n"]);return n_=function(){return n},n}function nm(){let n=(0,H._)(["\n      ","\n    "]);return nm=function(){return n},n}function nv(){let n=(0,H._)(["\n  ","\n  color: rgba(255, 255, 255, 0.7);\n  margin: 0 0 4px;\n  word-break: keep-all;\n\n  ","\n"]);return nv=function(){return n},n}function nw(){let n=(0,H._)(["\n  width: 100%;\n  height: 1px;\n  margin: 16px 0;\n  background-color: rgba(255, 255, 255, 0.1);\n"]);return nw=function(){return n},n}function nk(){let n=(0,H._)(["\n  display: grid;\n  grid-template-columns: 170px 1fr;\n  gap: 24px;\n  padding: 8px 0;\n"]);return nk=function(){return n},n}function ny(){let n=(0,H._)(["\n  display: flex;\n  flex-direction: column;\n  gap: 8px;\n  padding: 8px 0;\n"]);return ny=function(){return n},n}function nS(){let n=(0,H._)(["\n  display: flex;\n  flex-direction: column;\n  gap: 8px;\n"]);return nS=function(){return n},n}function nI(){let n=(0,H._)(["\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: 8px;\n"]);return nI=function(){return n},n}function nC(){let n=(0,H._)(["\n  display: flex;\n  flex-wrap: wrap;\n  gap: 4px;\n"]);return nC=function(){return n},n}function nX(){let n=(0,H._)(["\n  ","\n  color: ",";\n"]);return nX=function(){return n},n}function nB(){let n=(0,H._)(["\n    background-color: rgba(37, 99, 235, 0.2);\n    color: ",";\n  "]);return nB=function(){return n},n}function n$(){let n=(0,H._)(["\n    background-color: rgba(34, 197, 94, 0.2);\n    color: #22c55e;\n  "]);return n$=function(){return n},n}function nL(){let n=(0,H._)(["\n    background-color: rgba(255, 159, 67, 0.15);\n    color: ",";\n  "]);return nL=function(){return n},n}function nE(){let n=(0,H._)(["\n  display: inline-flex;\n  align-items: center;\n  padding: 2px 10px;\n  border-radius: 4px;\n  ","\n  ","\n"]);return nE=function(){return n},n}function nM(){let n=(0,H._)(["\n  display: flex;\n  flex-direction: column;\n  gap: 6px;\n"]);return nM=function(){return n},n}function nA(){let n=(0,H._)(["\n  ","\n  color: rgba(255, 255, 255, 0.7);\n  margin: 0;\n  word-break: keep-all;\n  line-height: 1.6;\n"]);return nA=function(){return n},n}function nN(){let n=(0,H._)(["\n  display: flex;\n  gap: 8px;\n  ","\n  color: rgba(255, 255, 255, 0.7);\n  word-break: keep-all;\n  line-height: 1.6;\n"]);return nN=function(){return n},n}function nH(){let n=(0,H._)(["\n  flex-shrink: 0;\n  &::before {\n    content: '•';\n  }\n"]);return nH=function(){return n},n}function nF(){let n=(0,H._)(["\n  display: inline-flex;\n  align-items: center;\n  gap: 4px;\n  width: fit-content;\n  padding: 6px 14px;\n  margin-top: 4px;\n  border: 1px solid ",";\n  border-radius: 20px;\n  color: ",";\n  ","\n  text-decoration: none;\n\n  &:hover {\n    background-color: rgba(37, 99, 235, 0.1);\n  }\n"]);return nF=function(){return n},n}function nV(){let n=(0,H._)(["\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 100%;\n  padding: 14px;\n  margin-top: 16px;\n  border: 1px solid ",";\n  border-radius: 12px;\n  ","\n  color: ",";\n  text-decoration: none;\n\n  &:hover {\n    background-color: rgba(37, 99, 235, 0.1);\n  }\n"]);return nV=function(){return n},n}let nP=n=>{let{content:t,variant:e="web"}=n,o="mobile"===e;
1return(0,i.BX)(ti,{isMobile:o,children:[!o&&(0,i.BX)(tr,{children:[(0,i.tZ)(to,{children:t.subtitle}),(0,i.tZ)(tl,{children:t.title})]}),t.description&&(0,i.tZ)(tu,{isMobile:o,children:t.description}),(0,i.tZ)(tc,{}),t.items.map((n,e)=>{var l,u,c;return(0,i.BX)(r.Fragment,{children:[o?(0,i.BX)(ta,{children:[(0,i.BX)(tp,{children:[(0,i.tZ)(tb,{highlight:n.labelHighlight,children:n.label}),null===(l=n.badges)||void 0===l?void 0:l.map(n=>(0,i.tZ)(tg,{variant:n.variant,children:n.text},n.text))]}),n.description&&(0,i.tZ)(tZ,{children:n.description}),null===(u=n.bullets)||void 0===u?void 0:u.map((n,t)=>(0,i.BX)(t_,{children:[(0,i.tZ)(tm,{}),n]},t)),n.link&&(0,i.BX)(tv,{href:n.link.url,rel:"noopener noreferrer",target:"_blank",children:["ⓘ ",n.link.text]})]}):(0,i.BX)(td,{children:[(0,i.BX)(ts,{children:[(0,i.tZ)(tb,{highlight:n.labelHighlight,children:n.label}),n.badges&&(0,i.tZ)(tf,{children:n.badges.map(n=>(0,i.tZ)(tg,{variant:n.variant,children:n.text},n.text))})]}),(0,i.BX)(tx,{children:[n.description&&(0,i.tZ)(tZ,{children:n.description}),null===(c=n.bullets)||void 0===c?void 0:c.map((n,t)=>(0,i.BX)(t_,{children:[(0,i.tZ)(tm,{}),n]},t)),n.link&&(0,i.BX)(tv,{href:n.link.url,rel:"noopener noreferrer",target:"_blank",children:["ⓘ ",n.link.text]})]})]}),e<t.items.length-1&&(0,i.tZ)(tc,{})]},e)}),t.bottomLink&&(0,i.tZ)(tw,{href:t.bottomLink.url,rel:"noopener noreferrer",target:"_blank",children:t.bottomLink.text})]})};var nT=()=>{let[n,t]=(0,r.useState)("1"),[e,o]=(0,r.useState)([]),l=tk.find(t=>t.id===n),u=n=>{o(t=>t.includes(n)?t.filter(t=>t!==n):[...t,n])};return(0,i.BX)(nY,{children:[(0,i.BX)(nU,{children:[(0,i.tZ)(nj,{children:"모든 것이 준비된\n12주 맞춤 커리큘럼"}),(0,i.tZ)(nD,{children:"기술 학습, 프로젝트, 구직 스킬, 지원 전략까지 모든 재료가 준비되어 있습니다.\n아래는 실력 완성 솔루션 기준의 기본 흐름이며, 취업 직행은 이력서\xb7모의면접\xb7실제 지원 중심으로,\n기술 심화는 원하는 기술 스택 중심으로 12주를 재구성합니다."})]}),(0,i.BX)(nG,{children:[(0,i.BX)(nO,{children:[(0,i.tZ)(nz,{}),tk.map(e=>(0,i.BX)(nR,{isSelected:n===e.id,onClick:()=>t(e.id),children:[(0,i.tZ)(nQ,{}),(0,i.tZ)(nJ,{isSelected:n===e.id}
1),(0,i.tZ)(nq,{children:e.subtitle}),(0,i.tZ)(nK,{isSelected:n===e.id,children:e.title})]},e.id))]}),(0,i.tZ)(nW,{children:l&&(0,i.tZ)(nP,{content:l,variant:"web"})})]}),(0,i.BX)(n0,{children:[(0,i.tZ)(n1,{}),(0,i.tZ)(n6,{children:tk.map(n=>{let t=e.includes(n.id);return(0,i.BX)(n4,{isSelected:t,children:[(0,i.tZ)(n5,{}),(0,i.tZ)(n2,{isSelected:t}),(0,i.BX)(n3,{"aria-expanded":t,onClick:()=>u(n.id),children:[(0,i.BX)(n7,{children:[(0,i.tZ)(n9,{children:n.subtitle}),(0,i.tZ)(n8,{children:n.title})]}),(0,i.tZ)(tn,{isSelected:t})]}),(0,i.tZ)(tt,{isSelected:t,children:(0,i.tZ)(nP,{content:n,variant:"mobile"})})]},n.id)})})]})]})};let nY=P.Z.div(Y(),F.$_["inverted-text-body"],F.$_["inverted-bg-2"],(0,F.cy)("768")),nU=P.Z.div(U(),(0,F.cy)("768")),nj=P.Z.h2(j(),(0,F.Se)(32),(0,F.cy)("768"),(0,F.Se)(24)),nD=P.Z.p(D(),(0,F.oN)(20),(0,F.cy)("768"),(0,F.oN)(16)),nG=P.Z.div(G(),(0,F.cy)("768")),nO=P.Z.div(O()),nz=P.Z.div(z(),F.$_.brand_5),nR=P.Z.button(Q(),n=>n.isSelected&&(0,V.iv)(R(),F.$_.brand_9)),nQ=P.Z.div(J(),F.$_.brand_5),nJ=P.Z.div(K(),n=>n.isSelected?.5:0,F.$_.brand_5),nK=P.Z.span(q(),(0,F.Se)(18),n=>n.isSelected?F.$_.gray_1:F.$_.gray_7),nq=P.Z.span(W(),(0,F.IV)(14),F.$_.brand_5),nW=P.Z.div(nn()),n0=P.Z.div(nt(),(0,F.cy)("768")),n1=P.Z.div(ne(),F.$_.brand_5),n5=P.Z.div(ni(),F.$_.brand_5),n2=P.Z.div(nr(),n=>n.isSelected?.5:0,F.$_.brand_5),n6=P.Z.div(no()),n4=P.Z.div(nu(),F.$_.brand_9,n=>n.isSelected&&(0,V.iv)(nl())),n3=P.Z.button(nc()),n7=P.Z.div(nd()),n8=P.Z.span(na(),(0,F.Se)(18)),n9=P.Z.span(ns(),(0,F.Se)(12),F.$_.brand_5),tn=(0,P.Z)(T.RiI,{shouldForwardProp:n=>"isSelected"!==n})(nf(),n=>n.isSelected&&(0,V.iv)(np())),tt=P.Z.div(nb(),F.$_.brand_9,n=>n.isSelected?"0 20px 20px":"0"),te="#FF9F43",ti=P.Z.div(ng(),n=>!n.isMobile&&(0,V.iv)(nh(),F.$_.brand_9)),tr=P.Z.div(nx()),to=P.Z.span(nZ(),(0,F.Se)(14),F.$_.brand_5),tl=P.Z.h4(n_(),(0,F.Se)(24)),tu=P.Z.p(nv(),(0,F.oN)(16),n=>n.isMobile&&(0,V.iv)(nm(),(0,F.oN)(14))),tc=P.Z.div(nw()),td=P.Z.div(nk()),ta=P.Z.div(ny()),ts=P.Z.div(nS()),tp=P.Z.div(nI()),tf=P.Z.div(nC()),tb=P.Z.span(nX(),(0,F.Se)(16),n=>n.highlight?te:"white"),th={blue:(0,V.iv)(nB(),F.$_.brand_5),green:(0,V.iv)(n$(
1)),orange:(0,V.iv)(nL(),te)},tg=P.Z.span(nE(),(0,F.IV)(12),n=>th[n.variant]),tx=P.Z.div(nM()),tZ=P.Z.p(nA(),(0,F.oN)(15)),t_=P.Z.div(nN(),(0,F.oN)(15)),tm=P.Z.span(nH()),tv=P.Z.a(nF(),F.$_.brand_3,F.$_.brand_3,(0,F.IV)(14)),tw=P.Z.a(nV(),F.$_.brand_3,(0,F.IV)(16),F.$_.brand_3),tk=[{id:"1",subtitle:"시작 전",title:"멘토님 매칭 & 사전 학습",items:[{label:"멘토님 매칭",description:"멘토링을 시작하기 전, 내가 원하는 피드백 스타일과 진행 방식, 가능한 시간대를 입력합니다. 설정한 조건을 기반으로 멘티와 가장 잘 맞는 멘토님이 자동으로 추천되며, 멘토님의 경험\xb7성향\xb7약력을 비교해보고 직접 선택할 수 있습니다.\n\n만약 멘토님과 맞지 않는다고 느껴지면 자유롭게 멘토님 변경도 가능합니다."},{label:"사전 학습",description:"시작 전 준비 사항과 교재를 미리 내부 시스템에서 안내드리고 있으며, 안내받은 대로 교재를 이용한 학습 등 준비 사항을 실행합니다."},{label:"커뮤니티 활동 & 세미나",description:"F-Lab 커뮤니티에서는 매주 세미나, 커뮤니티 교류 등 다양한 프로그램이 진행되고 있기에 이 활동에 미리 참여해가며 성장해나가실 수 있습니다."}]},{id:"2",subtitle:"1주차",title:"시작 진단 & 방향 설정",description:"멘토님과 서로 알아가며 목표와 현재 상태를 정확히 파악하고, 남은 기간을 어떻게 쓸지 함께 그려봅니다.",items:[{label:"목표\xb7상태 진단",labelHighlight:!0,badges:[{text:"1:1 진단",variant:"orange"}],description:"멘토링에서 이루고자 하는 목표와 바라는 방향을 확인하고, 기술 지식\xb7프로젝트 경험\xb7이력서를 기준으로 현재 상태를 객관적으로 진단합니다."},{label:"멘토링 방향 설정",labelHighlight:!0,badges:[{text:"맞춤 진행",variant:"orange"}],description:"진단 결과를 바탕으로 실력 완성 / 취업 직행 / 기술 심화 중 나에게 맞는 방향을 잡습니다. 멘토님이 진단 결과를 근거로 방향을 제안하고 진행하며 상황에 맞게 조정해나가며, 최종 선택은 언제나 멘티가 합니다."}]},{id:"3",subtitle:"2~3주차",title:"이론 학습 & 이력서",description:"내 평가를 높이기 위한 이론 학습과 이력서 피드백을 진행합니다. 멘토링 시간 외에도 슬랙과 깃허브를 통해 자유롭게 소통할 수 있으며, 멘토링 내용뿐 아니라 회사 생활이나 커리어와 관련된 고민도 편하게 질문할 수 있습니다.",items:[{label:"이론 학습",description:"Swift 언어의 핵심 원리, 객체지향과 프로토콜 지향 프로그래밍(POP), 디자인 패턴, Apple의 Human Interface Guidelines(HIG) 등 iOS 개발의 근간이 되는 이론을 책을 기반으로 깊이 있게 학습합니다. 많은 개발자들이 코딩은 많이 해보지만 이론 학습을 소홀히 하여 자신의 결과물에 대한 근거를 대지 못하기 때문입니다. 깊이 파고들며 학습하기에 이 구간에서는 진도가 느리게 느껴질 수 있지만, 이 깊이가 이후 프로젝트의 수준과 면접에서의 대답을 결정합니다. 단 멘티의 상황에 따라 필요하다면 바로 프로젝트를 시작합니다."},{label:"꼬리 질문 멘토링",description:"멘티가 학습해 온 내용에 대해 멘토님이 꼬리 질문 방식으로 다양한 시각을 불어넣어줍니다. 이를 통해 한 가지 개념을 가지고 다양한 방식으로 생각하는 방법을 배우게 되고, 자연스럽게 면접 대비가 되어 추후 합격률을 높일 수 있게 됩니다."},{label:"이력서 피드백",description:"자신이 여태까지 해왔던 것들과 F-Lab에서 수행한 것들을 효과적으로 어필하기 위한 이력서 피드백을 진행합니다. 이력서 피드백은 이론 학습 기간 뿐 아니라 전체 기간 동안 지속적으로 받을 수 있습니다."}],bottomLink:{text:"왜 이론을 공부해야 하나요?",url:"https://f-lab.kr/blog/problem-defining-ability"}},{id:"4",subtitle:"4~5주차",title:"프로젝트 기반 구축",description:"학습한 이론을 실제 코드에 녹이며 고수준의 개발 프로세스를 경험합니다. GitHub을 활용한 협업과 상시 코드 리뷰를 통해, 구현에 그치지 않고 더 나은 코드와 구조를 고민하는 습관을 기릅니다. 프로젝트를 진행하면서, 이론 학습은 멈추지 않고 병행합니다.",items:[{label:"자유 주제 프로젝트",bullets:["독창성 있는 포트폴리오로 만들기 위해 주제는 멘티가 정합니다.","UIKit 또는 SwiftUI를 기본으로 하되, 멘토님과 멘티가 기술 스택을 유연하게 토론하여 정할 수 있습니다.","멘토님은 멘티가 정해온 주제로 진행하지만 빅테크 수준으로 서비스 퀄리티를 높일 수 있는 방법을 제시합니다. 이를 통해 개성 있지만 수준은 높은 포트폴리오를 만들 수 있습니다.","멘토님의 가이드에 따라 멘티가 코드를 구현하면 GitHub를 통한 라인별 코드 리뷰를 제공하며 멘토링 시간에도 추가 피드백을 하며 퀄리티를 높여갑니다."]},{label:"앱 아키텍처 설계와 사고력 트레이닝",bullets:["MVC, MVVM, Clean Architecture 등 iOS 앱 아키텍처를 설계해보며 구조적 사고력을 키웁니다.","같은 요구사항에도 다르게 적용할 수 있는 다양한 아키텍처 패턴을 비교하며 트레이드 오프를 체화시킵니다.","멘토님에게 논리적으로 설명하고 왜 합리적인지 설득하고 피드백 받는 과정을 반복하며 실력 향상은 물론 면접에서 어떻게 기술 대화를 해야 하는지도 익혀갑니다.","HIG를 준수하면서도 사용자 경험을 극대화하는 UI/UX 설계를 트레이닝합니다."]}]},{id:"5",subtitle:"6~10주차",title:"프로젝트 심화 / AI 적용",description:'여러 기능들을 구현해보며 같은 기능을 만들더라도 얼마나 잘 만들 수 있는지 상위 1% 개발자의 시선으로 고도화해나갑니다. 보통 이 단계에서 "iOS 개발에 이런 깊이가 있는 줄 몰랐다"라는 평을 많이 듣습니다.',items:[{label:"다양한 기능 확장",bullets:["프로젝트 주제에 맞ê²
1Œ 실제 사용하는 기능들을 만들어나갑니다.","기능의 기획이나 비즈니스 요구사항에 대해서도 멘토님의 피드백을 들을 수 있으며, 요구사항에 따라 기술의 활용 여부를 어떻게 판단해야 할지 CS 레벨까지 깊은 고민을 하게 됩니다."]},{label:"LLM 활용 기능 개발",bullets:["AI 시대에 필수적인 LLM을 실제 서비스에 접목하는 경험을 합니다.","LLM API 연동 & 교체가 용이하도록 LLM 연동 모듈 추상화","원하는 기능을 정확하게 구현하기 위한 프롬프트/플로우 설계와 관리","사용자 체감 속도 개선 등 모바일 환경에서의 UX ê³ ë ¤","Combine/async-await를 활용한 스트리밍 응답 처리 및 비동기 전략 수립"]},{label:"심화 기술 적용",bullets:["비동기 프로그래밍(RxSwift, Combine), CoreData, App Security, 아키텍처 심화 등 고급 기술을 프로젝트에 적용해갑니다.","단순 적용이 아니라 하나하나 적용할 때마다 멘토님의 가이드와 꼬리 질문, 학습 자료를 통해 깊게 이해하며 개발합니다.","적용 기술은 자유롭게 멘토님과 토론해가며 선택할 수 있습니다."]}]},{id:"6",subtitle:"11~12주차",title:"인프라 / 자동화 / 튜닝",description:"앱을 실제 배포하고, 자동화\xb7테스트\xb7성능 최적화까지 iOS 엔지니어로서의 역량을 넓힙니다.",items:[{label:"배포 & CI/CD",bullets:["Fastlane, Xcode Cloud, GitHub Actions 등을 활용해 빌드\xb7테스트\xb7배포 과정을 자동화합니다.","App Store 심사 대응과 배포 전략(TestFlight, 단계적 출시 등)을 경험합니다.","자동화 도구에 AI를 접목하는 등 다양한 방법으로 반복되는 업무를 자동화하는 방법을 익힙니다."]},{label:"테스트 작성",bullets:["XCTest, Quick/Nimble 등을 활용한 단위 테스트와 UI 테스트를 작성합니다.","테스트가 요구사항 명세서 역할을 하도록 작성하는 방법을 익힙니다.","TDD(테스트 주도 개발)를 통해 안정적이고 유지보수성 높은 코드를 작성하는 습관을 기릅니다."]},{label:"성능 최적화 & 모니터링",bullets:["Instruments를 활용하여 메모리 릭, CPU 사용량, 렌더링 성능 등을 프로파일링합니다.","앱 사이즈 최적화, 이미지 캐싱 전략, 네트워크 요청 최적화 등 실질적인 성능 개선을 경험합니다.","크래시 리포팅과 APM 도구를 활용한 실시간 모니터링으로 앱 안정성을 높이는 방법을 익힙니다."]}]},{id:"7",subtitle:"멘토링 종료 후",title:"평생 성장 케어",items:[{label:"지속되는 네트워킹 기회",badges:[{text:"평생 제공",variant:"green"}],description:"F-Lab에는 구글, 아마존, 네카라쿠배 등 업계 최상위 기업 출신 개발자 400명 이상을 포함한 총 2,000명 규모의 커뮤니티가 조성되어 있습니다. 멘토링 수료 후에도 정기적인 해커톤\xb7사이드 프로젝트, 네트워킹 파티, 온/오프라인 모각코에 참여할 수 있습니다. 잘하는 사람들과 꾸준히 교류하며 자극받고 성장할 수 있는 환경을 제공합니다."},{label:"개발 콘텐츠 제공",badges:[{text:"평생 제공",variant:"green"}],description:"수료생이라면 언제든 기술\xb7커리어 세미나, Q&A 세션, 북세미나, 자체 발행 아티클 등 다양한 성장을 위한 활동들에 계속 무료로 참여할 수 있습니다. 이를 통해 최신 기술 트렌드와 커리어 인사이트를 놓치지 않고 꾸준히 쌓을 수 있습니다."},{label:"멘토링 연장 할인 혜택",description:"더 많은 학습을 희망하시거나 추가 프로젝트가 필요하다면, 대폭 할인된 가격과 유연한 옵션으로 수월하게 멘토링을 이어갈 수 있습니다."}]}];var ty=n=>{let{courseCode:t,courseDetailInfosModel:e,destinationComponent:r,followingNavigation:o,noAvailableItems:l}=n;return(0,i.BX)("div",{children:[o,(0,i.tZ)(X.Z,{courseCode:t}),(0,i.tZ)(L.Z,{techExamples:"AI 활용, SwiftUI, 성능 최적화 등"}),(0,i.tZ)(nT,{}),(0,i.tZ)(S.Z,{}),(0,i.tZ)(I.Z,{}),(0,i.tZ)(M.Z,{}),(0,i.tZ)($.Z,{}),(0,i.tZ)(E.Z,{}),(0,i.tZ)(C.Z,{courseCode:t}),(0,i.tZ)(k.Z,{}),(0,i.tZ)(y.Z,{}),(0,i.tZ)(v.ZP,{theme:"black"}),(0,i.tZ)(A.Z,{courseCode:t}),(0,i.tZ)(m.Z,{}),(0,i.tZ)(B.Z,{}),(0,i.tZ)(w.Z,{}),(0,i.tZ)(_.Z,{courseCode:t,courseDetailInfos:e,destinationComponent:r,noAvailableItems:l}),(0,i.tZ)(N.Z,{})]})},tS=e(81968),tI=e(7060),tC=e(81944);let tX=n=>{let{courseDetailInfos:t}=n,e=(0,tC.Cs)((0,tC.gr)((0,tC.gC)(t))),c=e.find(n=>(0,a.R)({startMonth:n.startMonth,startYear:n.startYear}))||e[0],_=e.find(n=>!(0,a.R)({startMonth:n.startMonth,startYear:n.startYear}))||e[2],{destinationComponent:m,scrollToComponent:v}=(0,o.a)(),w=(0,s.sJ)(f.G),[k]=(0,s.FV)(d.Y),y=(0,b.e)(8,async()=>
1{if((null==w?void 0:w.purchaser)&&"true"===localStorage.getItem("isCouponLogin")&&(localStorage.removeItem("isCouponLogin"),l.Z.getInstance().sendCustomEvent("coupon_send_to_purchaser",{userId:null==k?void 0:k.userId})),!(null==w?void 0:w.purchaser))try{return(await (0,p.U)()).data.data||void 0}catch(n){console.error(n)}});(0,r.useEffect)(()=>{l.Z.getInstance().sendCustomEvent("view_course_detail",{course:"ios",courseItems:e,floatButtonMessage:x.T}),l.Z.getInstance().sendCustomEvent("view_course_ios")},[]);let S=t.length<=0;return(0,g.Z)({page:"detail"}),(0,i.BX)(i.HY,{children:[(0,i.tZ)(tI.Z,{courseCode:"ios",detailInfo:c,earlyBirdEndDate:_.applicationEndDate,noAvailableItems:S,scrollToComponent:v,즉시_시작_상품:c}),(0,i.tZ)(tS.Z,{}),(0,i.tZ)(ty,{courseCode:"ios",courseDetailInfosModel:e,destinationComponent:m,followingNavigation:(0,i.tZ)(h.Z,{}),noAvailableItems:S}),(0,i.tZ)(u.Z,{}),(0,i.tZ)(Z.Z,{coupon:y,courseCode:"ios",courseInfo:c,description:x.T,destinationComponent:m,scrollToComponent:v})]})};tX.getLayout=function(n){return(0,i.tZ)(c.Z,{children:n})};var tB=!0,t$=tX},40146:function(n,t,e){"use strict";var i=e(67862),r=e(52903),o=e(2784),l=e(265),u=e(35033),c=e(6281),d=e(28165),a=e(11198),s=e(14607),p=e(90153),f=e(75680),b=e(2426),h=e(2190);function g(){let n=(0,i._)(["\n  position: sticky;\n  z-index: 1001;\n  top: ","px;\n\n  @media (max-width: 768px) {\n    top: ","px;\n  }\n"]);return g=function(){return n},n}function x(){let n=(0,i._)(["\n  width: 100%;\n  height: 51px;\n  background-color: black;\n\n  @media (max-width: 768px) {\n    height: 47px;\n  }\n"]);return x=function(){return n},n}function Z(){let n=(0,i._)(["\n  position: absolute;\n  top: 0;\n  left: 0;\n\n  display: flex;\n  gap: 4px;\n  align-items: center;\n  justify-content: center;\n\n  width: 100%;\n  height: fit-content;\n  padding-top: 10px;\n\n  background: #15181b66;\n  backdrop-filter: blur(24px);\n"]);return Z=function(){return n},n}function _(){let n=(0,i._)(["\n      border-bottom: 1px solid ",";\n    "]);return _=function(){return n},n}function m(){let n=(0,i._)(["\n  display: flex;\n  flex: 1;\n  align-items: center;\n  justify-content: center;\n\n  max-width: 240px;\n  padding: 10px 4px;\n\n  transition: color 0.3s ease-in-out;\n\n  color: ",";\n  white-space: nowrap;\n  ","\n  ","\n\n  @media screen and (max-width: 768px) {\n    ","\n  }\n"]);return m=function(){return n},n}t.Z=()=>{let{isShowGNB:n}=(0,c.a)(),[t,e]=(0,o.useState)(""),i=(n,t)=>{let e=document.getElementById(n);e&&e.scrollIntoView({behavior:"smooth"}),s.Z.getInstance().sendCustomEvent("click_detail_page_section_nav_item",{section:t})};return(0,o.useEffect)(()=>{let n=()=>{let n=window.scrollY+window.innerHeight/2,t="";
1S.forEach(e=>{let i=document.getElementById(e.id);i&&n>=i.offsetTop&&(t=e.id)}),e(t)};return window.addEventListener("scroll",n),n(),()=>window.removeEventListener("scroll",n)},[]),(0,r.BX)(r.HY,{children:[(0,r.tZ)(v,{isShowGNB:n,children:(0,r.tZ)(k,{children:S.map(n=>(0,r.tZ)(y,{className:"section",isActive:t===n.id,onClick:()=>{i(n.id,n.title)},children:n.title},n.id))})}),(0,r.tZ)(w,{})]})};let v=a.Z.div(g(),n=>{let{isShowGNB:t}=n;return t?60:0},n=>{let{isShowGNB:t}=n;return t?60:0}),w=a.Z.div(x()),k=a.Z.div(Z()),y=a.Z.button(m(),n=>{let{isActive:t}=n;return t?l.$_.white:l.$_.gray_4},n=>{let{isActive:t}=n;return t?(0,l.Se)(18):(0,l.IV)(18)},n=>{let{isActive:t}=n;return t&&(0,d.iv)(_(),l.$_.white)},n=>{let{isActive:t}=n;return t?(0,l.Se)(14):(0,l.IV)(14)}),S=[{id:h.m,title:"커리큘럼"},{id:b.O,title:"멘토 소개"},{id:f.C,title:"혜택"},{id:p.Qo,title:"후기"},{id:u.F,title:"신청하기"}]}},function(n){n.O(0,[6525,6577,7163,6095,960,8613,9462,800,4055,153,2921,7994,1840,2426,7550,3505,9580,7186,1760,4805,2888,9774,179],function(){return n(n.s=95093)}),_N_E=n.O()}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.