본문으둜 κ±΄λ„ˆλ›°κΈ°

🐀 25λ…„ 6μ›” 회고

μ•½ 19λΆ„
Ju young Lee
A contribution-driven developer

μ„œλ‘ β€‹

6μ›” 1,2μ£Όμ°¨λŠ” 고민이 μƒλ‹Ήνžˆ λ§Žμ•˜λ˜ ν•œ 주이닀.

더 λ§Žμ€ λ‹€μ–‘ν•œ 문제λ₯Ό λ§Œλ‚˜κ³  싢은데,,, ν˜„μž¬ ν”„λ‘œμ νŠΈλ‚˜ μ—¬λŸ¬ 상황이 κ°‘μžκΈ° λ‚˜μ—κ²Œ μž‘κ²Œ λŠκ»΄μ Έμ„œ μ˜¨μ „νžˆ μ§‘μ€‘ν•˜μ§€ λͺ»ν–ˆλ‹€. 이런 상황에도 맀일 κ°μ‚¬ν•˜λ €κ³  ν–ˆμŒμ—λ„ λΆˆκ΅¬ν•˜κ³  갈망이 μžˆμ—ˆλ˜ 것 κ°™λ‹€.

ν•˜μ§€λ§Œ 6μ›” 2μ£Όμ°¨ μ‚¬μ—…ν•˜λŠ” 친ꡬ, 개발자 μ„ λ°°λ‹˜λ“€κ³Ό 컀피챗을 ν•˜λ©΄μ„œ λŠλ‚€ 것은 κ²°κ΅­ "λ„Œ 고객의 문제λ₯Ό ν•΄κ²°ν•΄μ€€ κ²½ν—˜μ΄ μžˆμ–΄?"λΌλŠ” μ§ˆλ¬Έμ— λŒ€ν•œ 닡변을 μ°ΎλŠ” 것이 μ€‘μš”ν•˜λ‹€λŠ” κ²ƒμœΌλ‘œ μˆ˜λ ΄ν–ˆλ‹€.

ν˜„μž¬ λ‹€λ‹ˆκ³  μžˆλŠ” νšŒμ‚¬μ—μ„œ 더 일을 μž˜ν•΄μ•Ό ν•œλ‹€λŠ” 것을 λ‹€μ‹œ λŠκΌˆλ‹€.

"λ‚˜λŠ” μ–Όλ§ˆλ‚˜ 고객을 μ‹ κ²½μΌλŠ”κ°€..."

"λ‚˜λŠ” 고객을 μ΄ν•΄ν•˜κΈ° μœ„ν•΄ μ–Όλ§ˆλ‚˜ λ…Έλ ₯ν–ˆλŠ”κ°€..."

νšŒκ³ ν•΄λ³΄λ©°, 6μ›” 3μ£Όμ°¨λΆ€ν„°λŠ” κΈ°μˆ μ„ ν™œμš©ν•˜μ—¬ 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 데 더 μ˜ˆλ―Όν•œ 감각으둜 λ‚˜μ•„κ°€λ €κ³  ν–ˆλ‹€.

이런 λ§₯락으둜 μ›”κ°„ 레포트 κΈ°λŠ₯을 μ œμ•ˆν•˜μ˜€κ³  κ°œλ°œν•˜κΈ° μ‹œμž‘ν–ˆκ³  이후 μƒˆλ‘œμš΄ 길이 열리기 μ‹œμž‘ν–ˆλ‹€.

"그러던 μ–΄λŠλ‚  두 ꡰ데의 μ„œλ₯˜ 합격을 λ°›κ²Œ 됐닀." 어라??

6μ›” Action Point​

  • μ›”κ°„ 리포트 생성 및 μ €μž₯ κΈ°λŠ₯ κ΅¬ν˜„ν•˜κΈ°
  • ν“¨λž© λ””μžμΈ μ‹œμŠ€ν…œ 업무 ν”„λ‘œμ„ΈμŠ€ μ •μ°©
  • 객체 μ§€ν–₯의 μ˜€ν•΄μ™€ μ§„μ‹€ 읽고 생각 정리
  • λ‹¨μœ„ ν…ŒμŠ€νŠΈ 기술 μ±… 읽고 생각 정리 -> ν”„λ‘ νŠΈμ—”λ“œ κ°€μž₯ λ§Œλ§Œν•œ λ‘œμ§λΆ€ν„° λ‹¨μœ„ ν…ŒμŠ€νŠΈ μ μš©ν•˜μž!
  • Next.js μŠ€ν„°λ””λ₯Ό 톡해 Insight μ •λ¦¬ν•΄μ„œ κ³΅μœ ν•˜κΈ° (생각없이 μŠ€ν„°λ”” κΈˆμ§€)
  • λ„€νŠΈμ›Œν¬ 곡뢀λ₯Ό 톡해 사고λ₯Ό ν™•μž₯μ‹œμΌœλ³΄μž
  • XSS에 λŒ€ν•΄ ν•™μŠ΅ 및 κ²°κ³Όλ¬Ό 정리
  • CSRF에 λŒ€ν•΄ ν•™μŠ΅ 및 κ²°κ³Όλ¬Ό 정리
  • OAuth에 λŒ€ν•΄ 깊이 ν•™μŠ΅ 및 κ²°κ³Όλ¬Ό 정리

κ³„νšν•˜μ§„ μ•Šμ•˜μ§€λ§Œ ν•΄λ‚Έ 것

  • 더 κΈ°μ—¬ν•  수 μžˆλŠ” ν™˜κ²½μœΌλ‘œ 이직

κ³΅λΆ€λŠ” λ‹Ήμž₯ ν•„μš”ν•˜μ§€ μ•Šλ‹€κ³  μƒκ°ν•΄μ„œ μš°μ„ μˆœμœ„λ₯Ό λ―Έλ€„λ’€λ”λ‹ˆ... μ²΄ν¬ν•˜μ§€ λͺ»ν•œ 것듀이 λ§Žλ‹€. ν•˜μ§€λ§Œ κ°€μž₯ μΉ˜μ—΄ν•˜κ²Œ μ‚° ν•œ λ‹¬μ΄μ—ˆλ‹€.

두 ꡰ데 μ΅œμ’… 합격을 ν•˜κ³  λŠλ‚€μ μ€ 정말 고객의 문제λ₯Ό ν•΄κ²°ν•΄λ³΄λŠ” κ²½ν—˜μ€ μ²œν•˜ 무엇보닀 κ·€ν•˜κ΅¬λ‚˜λ₯Ό λŠκΌˆλ‹€. 이젠 미친 듯이 고객을 μ΄ν•΄ν•˜λŠ” 데 μ§‘μ€‘ν•˜λ €κ³  ν•œλ‹€. κ²°κ΅­ ν•œ λͺ…이라도 고객은 고객이닀.

본둠​

μ›”κ°„ 리포트 κΈ°λŠ₯ 기획 및 κ°œλ°œβ€‹

이게 무엇인가 싢을 것 κ°™μ•„ κ°„λ‹¨ν•˜κ²Œ 뢈릿포인트둜 λ‹Ήμ‹œ 상황을 정리해보렀고 ν•œλ‹€.

μš°μ„  λΉ λ₯΄κ²Œ λ§Œλ“  ν”„λ‘œν† νƒ€μž…λΆ€ν„° μ‚΄νŽ΄λ³΄μž.

μ™œ 이 κΈ°λŠ₯을 μ œμ•ˆν•˜κ³  κ΅¬ν˜„ν•˜κ²Œ λλ‚˜β€‹

  • Problem

    • 가상 μžμ‚° κΈ‰λ“±λ½μœΌλ‘œ 인해 고객 문의 폭주, μ‘λŒ€λ‘œ 인해 λ™λ£Œλ“€ μž μ„ μžμ§€ λͺ»ν•˜λŠ” 문제 λ°œμƒ!
  • Action

    • 고객의 λΆˆλ§Œμ— λŒ€ν•΄ μ„ μ œ λŒ€μ‘ν•˜λŠ” λ°©μ‹μœΌλ‘œ μ›”κ°„ 리포트 κΈ°λŠ₯ μ œμ•ˆ (과거에 μ‹œλ„ν–ˆλ‹€κ°€ μ§€μ†ν•˜μ§€ λͺ»ν–ˆλ˜ κΈ°λŠ₯)
      • ν•˜μ§€λ§Œ 고객이 λ§Žμ•„, 일일이 μ›”κ°„ 리포트 λ°œν–‰ν•˜λŠ” 것이 ν˜„μ‹€μ μœΌλ‘œ μ–΄λ ΅λ‹€λŠ” 의견
        • κ·Έλ ‡λ‹€λ©΄ λŒ€μ‹œλ³΄λ“œ λ‚΄μ—μ„œ μžλ™ν™” κΈ°λŠ₯ μ œμ•ˆ 및 κ΅¬ν˜„
  • Result

    • μ›”κ°„ 리포트 κΈ°λŠ₯을 톡해 리포트 생성 μ‹œκ°„ 480λΆ„ => 2λΆ„ (99.6% κ°μ†Œ)
    • 결과적으둜 고객 μ‘λŒ€ λΉˆλ„ μ „μ›” λŒ€λΉ„ 평균 30건 => 12건 (60% κ°μ†Œ)

κΈ°λŠ₯ κΈ°νšβ€‹

κΈ°νšμ„ μ‹œμž‘ν•΄λ³΄μ•˜λ‹€.

1. μ›”κ°„ 리포트λ₯Ό μž‘μ„±ν•˜λŠ” μ–΄λ–€ 정보가 ν¬ν•¨λ˜μ–΄μ•Ό ν•˜λŠ” κ±°μ§€?

μš°μ„  과거의 νžˆμŠ€ν† λ¦¬λ₯Ό 찾아보기 μ‹œμž‘ν–ˆκ³  과거에 μ›”κ°„ 리포트 pptλ₯Ό λ™λ£Œμ—κ²Œ λ°›μ•˜λ‹€. κ·Έλž˜μ„œ λ™μ μœΌλ‘œ μ²˜λ¦¬ν•  것듀과 μ •μ μœΌλ‘œ μ²˜λ¦¬ν•  것듀을 λΆ„λ¦¬ν•˜κ³  데이터λ₯Ό μ •λ¦¬ν•˜κΈ° μ‹œμž‘ν–ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ„ μž‘μ„±ν•˜κΈ΄ μ–΄λ ΅μ§€λ§Œ μ•„μ£Ό κ°„λ‹¨ν•˜κ²Œ 정리해보면, 우리 사내 ν™œμ„± κ³„μ’ŒλŠ” κ½€ λ§Žλ‹€. μš°μ„  λ¦¬ν¬νŠΈλŠ” κΈ°κ΄€κ³Ό 1λŒ€1 λ§€μΉ­λ˜λŠ” 것이 μ•„λ‹ˆλΌ 각 κΈ°κ΄€ μ•„λž˜μ— μžˆλŠ” κ³„μ’Œλ“€κ³Ό 1λŒ€1 λ§€ν•‘λ˜λŠ” 것을 λ°œκ²¬ν–ˆλ‹€.

ν•˜λ‚˜μ˜ κ³„μ’Œλ₯Ό μƒμ„±ν•œ μ΄ν›„λ‘œ 수읡 κ·Έλž˜ν”„, 수읡과 κ΄€λ ¨λœ 데이터λ₯Ό λ³΄μ—¬μ€˜μ•Ό ν•œλ‹€. 그런데 이 λ°μ΄ν„°λŠ”? μ–΄λ–»κ²Œ 확보할 것인가... λŒ€μ‹œλ³΄λ“œ 내에 흩뿌렀져 μžˆμ–΄μ„œ ν”„λ‘ νŠΈμ—μ„œ 쑰합을 ν•΄μ•Ό ν•œλ‹€.

2. μ–΄λ–»κ²Œ λ§Œλ“€μ–΄μ•Ό μ‚¬μš©ν•  λ•Œ νŽΈν•˜κ³  μ¦‰μ‹œ λ™λ£Œλ“€μ΄ μ‚¬μš©ν•  수 μžˆμ„κΉŒ?

κ°€μž₯ μ‰¬μ›Œμ•Ό ν•œλ‹€. ν•œλˆˆμ— νŒŒμ•…λ˜μ–΄μ•Ό ν•œλ‹€.

음... 이게 κ°€μž₯ μ–΄λ €μ› λŠ”λ° μš°μ„  이 κΈ°λŠ₯이 μ‹€μ œ 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 데 도움이 λ˜λŠ”μ§€ νŒŒμ•…ν•˜κΈ° μœ„ν•œ 단계이기에 막 λ©‹μ§€κ²Œ λ§Œλ“€ ν•„μš”κ°€ μ—†μ—ˆκ³  정말 도움이 λ˜λŠ”μ§€λ§Œ νŒŒμ•…ν•˜λ©΄ 됐닀. κ·Έλž˜μ„œ μœ„μ™€ 같이 λ§Œλ“€μ—ˆλ‹€.

κ°„λ‹¨ν•œ ν”Œλ‘œμš°λŠ” λ‹€μŒκ³Ό κ°™μ•˜λ‹€.

report Tab 클릭 --> κ³„μ’Œ 선택 -> export

μš°μ„  κ³„μ’Œλ₯Ό 선택해야 ν–ˆκ³  그리고 export ν•  수 μžˆλŠ” λ²„νŠΌμ΄ ν•„μš”ν•˜λ‹€κ³  μƒκ°ν–ˆλ‹€.

Q. κ·Έλ ‡λ‹€λ©΄ export된 결과물은 μ–΄λ–€ 포맷으둜 export λ˜μ–΄μ•Ό ν•˜λŠ”μ§€ κ³ λ―Όμ΄μ—ˆλ‹€.

μš°μ„  PDF둜 λ³€ν™˜λ˜λ„λ‘ κ΅¬ν˜„ν–ˆλ‹€. κ·Έλ ‡κ²Œ κ΅¬ν˜„ν•˜λ‹ˆ λ¬Έμ œκ°€ 생각보닀 λ³΅μž‘ν•΄μ‘Œλ‹€. pdf둜 λ³€ν™˜ν•˜λ„λ‘ ν•˜λ‹ˆ μ™„λ²½ν•˜κ²Œ κ΅¬ν˜„ν•΄μ•Ό λ˜λŠ” 것을 λ°œκ²¬ν–ˆλ‹€. μ™œλƒν•˜λ©΄ μˆ˜μ •ν•˜κΈ°κ°€ μ–΄λ ΅κΈ° λ•Œλ¬Έμ΄μ—ˆλ‹€. 그리고 pdf둜 λ³€ν™˜ν•  λ•Œ CSSκ°€ 반영이 μ•ˆ λ˜λŠ” λ¬Έμ œκ°€ λ°œμƒν–ˆλ‹€. κ·Έλž˜μ„œ ν•˜λ£¨μ •λ„ κ³ μƒν–ˆμ—ˆλ‹€. κ³Όκ°ν•˜κ²Œ λ‹€μ‹œ 생각해보기 μ‹œμž‘ν–ˆλ‹€. μ›ν•˜λŠ” 결과물은 pdfμ΄μ§€λ§Œ μš°μ„  λ°μ΄ν„°λ§Œ 볡사할 수 μžˆλ„λ‘ ppt ν˜•μ‹μœΌλ‘œ export λ˜λ„λ‘ ν•  수 μžˆμ„κΉŒ? μ‹Άμ–΄μ„œ μ‹œλ„ν•΄λ΄€λŠ”λ° μš°μ„  pptx μ‰½κ²Œ λ³€ν™˜ν•  수 μžˆλŠ” 라이브러리λ₯Ό μ°Ύμ•˜κ³  μ‚¬μš©ν•΄λ³΄λ‹ˆ μš°μ„  이게 λ§žλ‹€λŠ” 생각이 λ“€μ—ˆλ‹€. 그리고 결과적으둜 이게 더 μœ μš©ν–ˆλ‹€.

κ΅¬ν˜„ν•˜λ‹€ λ³΄λ‹ˆ λ‚΄κ°€ λ§Œλ“œλŠ” 것은 월별 λ¦¬ν¬νŠΈλΌλŠ” κ²ƒμž„μ„ λ‹€μ‹œ μžκ°ν–ˆλ‹€... κ·Έ 말인 μ¦‰μŠ¨ νŠΉμ • κ³„μ’Œμ˜ μ›ν•˜λŠ” 월을 선택할 수 μžˆμ–΄μ•Ό ν•˜κ³  ν•΄λ‹Ή μ›”μ˜ λ°μ΄ν„°λ§Œ ν•„ν„°ν•΄μ„œ κ·Έλž˜ν”„μ™€ ν…Œμ΄λΈ”λ‘œ ν‘œν˜„ν•΄μ•Ό ν•œλ‹€λŠ” 것이닀. 어라... μ‘°κΈˆμ”© λ³΅μž‘ν•΄μ§€κΈ° μ‹œμž‘ν–ˆλ‹€.

κ·Έλž˜μ„œ ν”Œλ‘œμš°κ°€ μˆ˜μ •λλ‹€.

report Tab 클릭 --> κ³„μ’Œ 선택 --> μ›” 선택 -> export

그런데 μΆ”κ°€μ μœΌλ‘œ μ‚¬μš©ν•˜λŠ” μž…μž₯μ—μ„œλŠ” 눈으둜 데이터가 λ§žλŠ”μ§€ 미리 ν™•μΈν•˜κ³  싢을 수 μžˆμ„ 것 κ°™μ•˜λ‹€. κ·Έλž˜μ„œ λ™λ£Œμ—κ²Œ λ¬Όμ–΄λ³΄λ‹ˆ 확인할 수 있으면 μ’‹κ² λ‹€λŠ” ν”Όλ“œλ°±μ„ μ¦‰μ‹œ 받을 수 μžˆμ—ˆλ‹€.

κ·Έλž˜μ„œ 또 ν”Œλ‘œμš°κ°€ 좔가됐닀.

report Tab 클릭 --> κ³„μ’Œ 선택 --> μ›” 선택 -> ν•΄λ‹Ή 리포트 λ‚΄λΆ€ νŽ˜μ΄μ§€μ— λ Œλ”λ§ ν˜Ήμ€ export

λ‚΄κ°€ μƒκ°ν–ˆλ˜ 것은 이게 μ•„λ‹Œλ° 생각보닀 κΈ°λŠ₯이 λ³΅μž‘ν•΄ λ³΄μ˜€λ‹€. ν˜Έμ–Έμž₯λ‹΄ν•˜κ²Œ 1μ£ΌμΌλ§Œμ— κ²°κ³Όλ₯Ό λ³΄μ΄κ² λ‹€λŠ” 말이 거짓이 될 것 κ°™λ‹€λŠ” λŠλ‚Œμ΄ λ“€μ—ˆλ‹€. ν•˜μ§€λ§Œ 이게 있으면 λ™λ£Œμ—κ²Œ 도움될 것 κ°™μ•„μ„œ κΈ΄μž₯은 λμ§€λ§Œ 더 μ„€λ œλ‹€.

κΈ°λŠ₯ κ°œλ°œβ€‹

1. κ·Έλž˜μ„œ κ΅¬ν˜„μ€ μ–΄λ–»κ²Œ ν•  건데??

μš°μ„  κ·Έλž˜ν”„λŠ” 생각보닀 κΈˆλ°©λλ‹€.

export const AumChartForReport = () => {

const { isMobile } = useDevice();

const { data: accountList } = useSuspenseQuery(AccountQueries.getAdminAndStaffAccountsQuery());
const uniqueStrategies = getUniqueFieldValues(accountList, 'strategy');
const { getFilteredAums } = useHistoricalAumWithStore();
const result = queryTotalEquityByDate(getFilteredAums());
const sortedList = result.sort((a, b) => a.timestamp - b.timestamp);

const { filteredData, timeRange, handleTimeRange } = useDurationFilter(
sortedList,
(item) => item.timestamp,
);

const { data: organizationList } = useSuspenseQuery(OrganizationQueries.getAdminOrgQuery());

const { filters, handleStrategy, handleOrganization } = useFilterByDomain();

return (
...
)
}

λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ€ μ™„λ²½ν•˜μ§€ μ•Šμ§€λ§Œ μ–΄λŠ 정도 μ»€μŠ€ν…€ ν›…μœΌλ‘œ 뢄리λ₯Ό μ‹œλ„ ν–ˆλ‹€. κ·Έλž˜μ„œ ν•΄λ‹Ή ν›…λ§Œ λ³΅μ‚¬ν•΄μ„œ μƒˆλ‘œμš΄ View μ»΄ν¬λ„ŒνŠΈλ₯Ό λ§Œλ“€μ–΄λ³΄λ‹ˆ λ°”λ‘œ λ™μž‘ν•˜λŠ” 것을 ν™•μΈν–ˆλ‹€.

였호!!?

그리고 ν•΄λ‹Ή κ·Έλž˜ν”„λ₯Ό html2canvasλΌλŠ” 라이브러리둜 DOM을 μ΄λ―Έμ§€λ‘œ λ³€ν™˜ν•΄μ„œ ppt에 λ‚˜νƒ€λ‚˜λ„λ‘ ν–ˆλ‹€.

그럼 ν•˜λ‹¨ ν…Œμ΄λΈ”κ³Ό 그에 λ§žλŠ” λ°μ΄ν„°λŠ”?

생각보닀 이 뢀뢄도 μˆ˜μ›”ν–ˆλ‹€. 기쑴에 수읡λ₯  νŠΈλž˜ν‚Ή κΈ°λŠ₯을 κ΅¬ν˜„ν•˜λ©΄μ„œ κ΅¬ν˜„ν–ˆλ˜ λ‘œμ§μ„ μž¬ν™œμš©ν•  수 μžˆμ—ˆλ‹€. λ‹Ήμ‹œμ—λŠ” 수읡λ₯ μ„ μ„ νƒν•œ λ‚ μ§œ κΈ°μ€€, 일, μ›”, 연도 λ³„λ‘œ κ³„μ‚°ν•˜λŠ” λ‘œμ§μ„ λ‹€λ₯Έ λ°μ„œ μ‚¬μš©ν• μ§€ λͺ°λžμ§€λ§Œ λ‹Ήμ‹œ κ³ λ―Όν•˜λ©΄μ„œ κ΅¬ν˜„ν•œ 게 도움이 많이 되고 μžˆλ‹€. μ—­μ‹œ ν•¨μˆ˜μ˜ μΈμžλŠ” 3개 μ΄ν•˜λ‘œ 쒁히고 λ‚΄λΆ€μ—μ„œλ„ ν•œ κ°€μ§€ 일만 ν•˜λ„λ‘ ν•˜κ³  λͺ…μ„λ‹˜μ˜ 클린 μ½”λ”μ—μ„œ λ‚˜μ˜¨ command와 queryλ₯Ό λΆ„λ¦¬ν•˜μ—¬ ν•¨μˆ˜λ₯Ό λ§Œλ“œλŠ” 게 ν•΅μ‹¬μ΄μ—ˆλ˜ 것 κ°™λ‹€.

  • commandλŠ” λ‚΄λΆ€μ—μ„œ μƒνƒœλ₯Ό λ³€κ²½ν•˜κ³  Return 값이 μ—†λŠ” ν•¨μˆ˜
  • queryλŠ” λ‚΄λΆ€μ—μ„œ μƒνƒœλ₯Ό λ³€κ²½ν•˜μ§€ μ•Šκ³  Return 값을 κ°–λŠ” ν•¨μˆ˜

도메인 지식을 μš”κ΅¬ν•˜λŠ” 둜직이라 κ°„λ‹¨νžˆ κ³΅μœ ν•΄λ³΄λ©΄,

const PerformanceSection = ({
filteredDailiesBySelectedMonth,
filteredDailiesFromInception,
}: {
filteredDailiesBySelectedMonth: Dashboard['dailies'];
filteredDailiesFromInception: Dashboard['dailies'];
}) => {
const earliestDailyFromInception = getEarliestTimestamp(filteredDailiesFromInception);
const earliestDailyFromMonth = getEarliestTimestamp(filteredDailiesBySelectedMonth);
const latestDaily = getLatestTimestamp(filteredDailiesFromInception);

const returnValue = calcReturnMonthAndYearToDate({
dailies: filteredDailiesBySelectedMonth,
selectedDate: dayjs.unix(latestDaily.updatedTimestamp).toDate(),
key: "month",
});

const mdd = calculateMaxDrawdown(filteredDailiesBySelectedMonth);
const inceptionMdd = calculateMaxDrawdown(filteredDailiesFromInception);

return (
...
)
}

ν•΄λ‹Ή ν•¨μˆ˜λ“€μ€ λ‹€ 계산 ν•¨μˆ˜μ΄λ‹€. κ·Έλž˜μ„œ λ‹¨μœ„ ν…ŒμŠ€νŠΈλ‘œ 둜직이 잘 λ™μž‘ν•˜λŠ”μ§€ κ²€μ¦ν•˜κ³  있고 κ·Έλž˜μ„œ μ•ˆμ‹¬ν•˜κ³  λ™λ£Œμ—κ²Œ μˆ˜μΉ˜λŠ” λ‘œμ§λŒ€λ‘œ λ™μž‘ν•œλ‹€κ³  말할 수 있게 됐닀.

이런 λ°©μ‹μœΌλ‘œ μž¬ν™œμš©ν•˜λ‹ˆ 생각보닀 κ΅¬ν˜„μ΄ μ–΄λ ΅μ§€ μ•Šμ•˜λ‹€.

pptxgenjsλ₯Ό ν™œμš©ν•΄μ„œ 화면에 λ³΄μ΄λŠ” ν…Œμ΄λΈ”μ΄ ν”Όν”Όν‹°λ‘œ exportν•  λ•Œλ„ λ™μΌν•˜κ²Œ λ‚˜νƒ€λ‚˜λ„λ‘ ν–ˆλ‹€.

4. μ–΄λ–»κ²Œ κ°œμ„ ν•˜λ©΄ μ’‹μ„κΉŒ? (미래 λ™λ£Œμ—κ²Œ 전달 μ˜ˆμ •)

μš°μ„  μ§€κΈˆμ€ 머리속에 μžˆλŠ” μ•„μ΄λ””μ–΄λ§Œ κ΅¬ν˜„ν•΄λ†“μ€ μƒνƒœμ΄λ‹€.

λ¨Όμ €λŠ” μ§€κΈˆμ€ PPT둜 exportν•΄μ„œ 이λ₯Ό pdf둜 볡사 λΆ™μ—¬λ„£κΈ°ν•΄μ„œ κ³ κ°μ—κ²Œ 월별 리포트λ₯Ό λ³΄λ‚΄μ§€λ§Œ μ•„μ˜ˆ PDF둜 λ‚˜μ˜€λ„λ‘ ν•  수 μžˆμ„ 것 κ°™λ‹€. ν•˜μ§€λ§Œ 생각보닀 λ Œλ”λ§μ΄ μ œλŒ€λ‘œ μ•ˆ λ˜λŠ” λ¬Έμ œκ°€ λ°œμƒν•  수 μžˆλ‹€. 이럴 κ²½μš°λŠ” μ„œλ²„μ—μ„œ ν•΄λ‹Ή κΈ°λŠ₯을 κ΅¬ν˜„ν•΄μ„œ ν•΄κ²°ν•  수 μžˆμ„ 것 κ°™λ‹€. κ°€λ Ή puppeteerλ₯Ό μ‚¬μš©ν•˜λ©΄ μ„œλ²„μ—μ„œ Chromium을 ν™œμš©ν•˜μ—¬ κΈ°λŠ₯을 κ΅¬ν˜„ν•  수 μžˆμ„ 것 κ°™λ‹€. 그러면 더 μ •ν™•ν•˜κ²Œ μ΄λ―Έμ§€λ‚˜ DOM을 PDF둜 λ°”κΏ€ 수 μžˆμ§€ μ•Šμ„κΉŒ 생각해본닀.

μœ μ €κ°€ μ ‘κ·Όν•  수 μžˆλŠ” νŽ˜μ΄μ§€μ— 월별 리포트 자체λ₯Ό λ³΄μ—¬μ€˜λ„ μ°Έ 쒋을 것 κ°™λ‹€κ³  μƒκ°ν•œλ‹€.

μ§€κΈˆμ€ 웹이라 ν‘Έμ‹œ μ•Œλ¦Όμ„ κ΅¬ν˜„ν•  수 μ—†λ‹€. PWA둜 ν•˜λ©΄ κ°€λŠ₯은 ν•˜κ² μ§€λ§Œ 고객듀이 μ›ν•˜μ§€ μ•ŠμŒμ„ λ°œκ²¬ν•΄μ„œ κ·Έλ ‡κ²ŒλŠ” ν•˜μ§€ λͺ»ν–ˆλ‹€. κ·Έλ ‡λ‹€λ©΄ κ°„λ‹¨ν•œ 앱을 λ§Œλ“€μ–΄μ„œ ν‘Έμ‹œ μ•Œλ¦Όμ„ 톡해 리포트λ₯Ό μ œκ³΅ν•˜λŠ” 방식도 μ–΄λ–¨κΉŒ μ‹Άλ‹€. 이게 고객듀이 μ›ν•˜λŠ” κ²ƒμΌκΉŒ κ³ λ―Όν•΄λ³Έλ‹€.

νƒœμ–΄λ‚˜μ„œ 첫 이직 λ¬΄μ‚¬νžˆ Clear​

24λ…„ 6μ›” 13일에 ν“¨μ³λ¦¬μ¦˜λž©μŠ€λΌλŠ” λ„ˆλ¬΄ κ°μ‚¬ν•œ νšŒμ‚¬λ₯Ό λ§Œλ‚˜ μž…μ‚¬ν•˜κ²Œ 됐닀. λ‹Ήμ‹œ DND IT μ—°ν•© 동아리 κ²½ν—˜, 개인 ν”„λ‘œμ νŠΈκ°€ μžˆμ—ˆμ§€λ§Œ 싀무 κ²½ν—˜μ΄ μ—†λŠ” λ‚˜λ₯Ό λ―Ώμ–΄μ£Όκ³  기회λ₯Ό μ€€ νšŒμ‚¬λ‹€. 정말 νž˜λ“€ λ•Œ κ·Έ 기얡을 상고해보면 감사λ₯Ό μžƒμ„ μˆ˜κ°€ 없을 것 κ°™λ‹€.

그둜 λΆ€ν„° 1년이 μ§€λ‚œ μ§€κΈˆ κ°‘κ°€μ§€ 더 κΈ°μ—¬ν•  수 μžˆλŠ” λ™μ‹œμ— 개인적으둜 λ§Žμ€ μ„±μž₯을 ν•  수 μžˆλŠ” νšŒμ‚¬μ˜ 문이 μ—΄λ Έκ³  μ΅œμ’… 였퍼λ₯Ό λ°›κ²Œ 됐닀. 싀은 이직의 이유 쀑 κ°€μž₯ 큰 μ΄μœ λŠ” 더 κΈ°μ—¬ν•  수 μžˆλŠ” ν™˜κ²½μ΄κΈ° λ•Œλ¬Έμ΄λ‹€. 이직할 νšŒμ‚¬λŠ” 자체 ν”Œλž«νΌ μ„œλΉ„μŠ€ νšŒμ‚¬λ‘œ κΈ°μ—¬ν•  수 μžˆλŠ” 것듀이 면접을 톡해 λ“€μ–΄λ§Œ 봐도 5κ°€μ§€μ˜€λ‹€. λ„μ €νžˆ λ§€λ ₯적이지 μ•Šμ„ 수 μ—†μ—ˆλ‹€. λ„ˆλ¬΄ κ°μ‚¬ν•˜λ‹€.

μ§„μ‹¬μœΌλ‘œ κ°μ‚¬ν–ˆκ³  κ·Έ λ§ˆμŒμ„ 7μ›”μ΄ˆμ— 잘 ν‘œν˜„ν•˜κ³  λ§ˆλ¬΄λ¦¬ν•˜λ €κ³  ν•œλ‹€. 7월은 λ‚΄ μΈμƒμ—μ„œ κ°€μž₯ μ°¨λΆ„ν•˜κ³  즐거운 ν•œ 달이 될 것 κ°™λ‹€. κΈ°λŒ€ν•΄λ³Έλ‹€.

μΈμˆ˜μΈκ³„μ„œ μž‘μ„± 쀑인데 쑰금 더 잘 써보자!!

img alt="refacts"

결둠​

이번 ν•œ 달간 μΌν•˜λ©° μ—¬λŸ¬ κ²½ν—˜μ„ ν•˜λ©° κ°œλ°œμ—λŠ” λ§Žμ€ μ‹œκ°„μ„ μ‚¬μš©ν•˜μ§€ λͺ»ν–ˆμ§€λ§Œ λŠλ‚€ 것은 κ²°κ΅­ κΈ°μ—¬ 쀑심적 사고가 μ€‘μš”ν•¨μ„ λŠκΌˆλ‹€.

μ§‘μ—μ„œλ„ νšŒμ‚¬μ—μ„œλ„ λ‚˜μ—κ²Œλ„ 슀슀둜 κΈ°μ—¬ν•˜λŠ” 삢을 μ‚΄μ•„μ•Όκ² λ‹€κ³  닀짐해본닀. 더 적극적으둜 더 μ£Όλ„μ μœΌλ‘œ μ‚΄μ•„λ‚΄μ•Όκ² λ‹€.

7μ›”μ—λŠ” μ§€λ‚œ 1λ…„κ°„ ν–ˆλ˜ 것듀을 정리해보고 λΆ€μ‘±ν–ˆλ˜ 것듀을 λ³΅κΈ°ν•˜λ©° λ‹€μŒ μŠ€ν…μ„ μ€€λΉ„ν•˜λŠ” μ‹œκ°„μ„ 가져보렀고 ν•œλ‹€. μΈμƒμ—μ„œ λ„ˆλ¬΄ κ·€ν•œ μ‹œκ°„μΌ 것 κ°™λ‹€. λΆ€λͺ¨λ‹˜κ³Ό κ·Έκ°„ λͺ» λ΅€λ˜ μΉœμ²™λ“€ μ€μ‚¬λ‹˜λ“€μ„ 찾아롐 μ˜ˆμ •μ΄λ‹€.

λͺ¨λ‘ 각자의 μœ„μΉ˜μ—μ„œ νŒŒμ΄νŒ…

7μ›” Action Point​

개발 κ΄€λ ¨

  • ν˜„μž¬ 개인적으둜 μ§„ν–‰ν•˜κ³  μžˆλŠ” 카페 μ‹€μ‹œκ°„ 정보 쑰회 ν”„λ‘œμ νŠΈ ν™”λ©΄ κ΅¬ν˜„
  • λ©΄μ ‘μ—μ„œ λ¬Όμ–΄λ΄€λ˜ DDD κ³΅λΆ€ν•΄μ„œ λΈ”λ‘œκ·Έ μ •λ¦¬ν•˜λ©° μ΄ν•΄ν•˜κΈ°

일상 κ΄€λ ¨

  • ν“¨λž© μΈμˆ˜μΈκ³„ 및 마무리 μ§€ν˜œλ‘­κ²Œ ν•˜κΈ°
  • 1λ…„ κ°„ ν–ˆλ˜ 것듀 μ •λ¦¬ν•˜μ—¬ κ²½λ ₯ κΈ°μˆ μ„œμ— μ •λ¦¬ν•˜κΈ°
  • κ±΄κ°•ν•œ λ£¨ν‹΄μœΌλ‘œ νœ΄μ‹ν•˜λ©° 1kg κ°λŸ‰ν•˜κΈ°
  • λΆ€λͺ¨λ‹˜ λͺ¨μ‹œκ³  생일에 즐거운 μ‹œκ°„ 보내기