/bookathon_F

๐Ÿ—“ Checkable: ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ถ€์ŠคํŠธ์บ ํ”„ ์ถœ์„ํ˜„ํ™ฉ ์กฐํšŒํ•˜๊ธฐ

Primary LanguageSwift

Checkable : ๋ถ€์ŠคํŠธ์บ ํ”„ ์ถœ์„์กฐํšŒ ์–ดํ”Œ ๐Ÿ—“




์•„์ง๋„ 200์—ฌ๊ฐœ์˜ ๋Œ“๊ธ€๋“ค์„ ์Šคํฌ๋กคํ•˜๋ฉด์„œ ๋ถˆํŽธํ•˜๊ฒŒ ํ™•์ธํ•˜์‹œ๋‚˜์š”? ๐Ÿฅฒ
์ด์ œ ์•ฑ์—์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ถœ๊ฒฐ์‚ฌํ•ญ์„ ์กฐํšŒํ•˜์„ธ์š”! ๐Ÿ˜†

๐Ÿ’๐Ÿปโ€โ™€๏ธ ํŒ€์› & ์—ญํ•  ์†Œ๊ฐœ

[S013] ๊น€ํƒœํ›ˆ
@Modyhoon
[S036] ์ด๋‚˜์ •
@dailynj
[S045] ์ด์ง€์ˆ˜
@tmfrlrkvlek
ํฌ๋กค๋ง ์ฝ”๋“œ ์ž‘์„ฑ Firebase ์„ธํŒ… ํฌ๋กค๋ง ํ™˜๊ฒฝ ์„ธํŒ…(EC2 & Crontab)
Firebase ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ Firebase iOS ์—ฐ๋™ & UI ์ž‘์—… Firebase iOS ์—ฐ๋™ & UI ์ž‘์—…

๐Ÿ“ฑ ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

๐Ÿฅฒ ๊ธฐ์กด์˜ ์ถœ์ฒต์‹œ์Šคํ…œ

๋งค์ผ ์ฒดํฌํ•ด์•ผ ํ•˜๋Š” ์ถœ๊ฒฐ๊ด€๋ฆฌ ์ผ์ผํžˆ ํ™•์ธํ•ด์•ผํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€

โœ”๏ธ ์„œ๋น„์Šค ํ•ต์‹ฌ ๊ธฐ๋Šฅ

  1. ๋ถ€์ŠคํŠธ์บ ํ”„ ์ฒดํฌ์ธ, ์ฒดํฌ์•„์›ƒ ๊ธฐ๋ก ์กฐํšŒ (์บ˜๋ฆฐ๋” ํ˜•์‹)

    ์ถœ์„๋ถ€ ์˜ˆ์‹œ 1 ์ถœ์„๋ถ€ ์˜ˆ์‹œ 2
  2. ์ถœ๊ฒฐ ํ˜„ํ™ฉ ํ™•์ธ

    ์ถœ๊ฒฐ ํ˜„ํ™ฉ ์˜ˆ์‹œ 1 ์ถœ๊ฒฐ ํ˜„ํ™ฉ ์˜ˆ์‹œ 2
  3. ์‚ฌ์šฉ์ž์˜ ์•„์ด๋”” ์ €์žฅ (with userDefaults)


โš’ ํ”„๋กœํ† ํƒ€์ž…



โœ… ์‹œ์—ฐ ์˜์ƒ



๐Ÿ› SW ์•„ํ‚คํ…์ฒ˜ & ์‚ฌ์šฉ ๊ธฐ์ˆ /๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ


์„œ๋ฒ„ ์Šฌ๋ž™ ์Šค๋ ˆ๋“œ ํฌ๋กค๋ง(Link) DB APP
AWS EC2 Python FireStore iOS/Swift
Crontab SlackAPI FSCalendar

๐Ÿ—‚ DB Schema

์ž์„ธํžˆ ๋ณด๊ธฐ

Date

// Date: ๋‚ ์งœ
// CheckInOnly : ์ฒดํฌ์•„์›ƒ O - false, ์ฒดํฌ์•„์›ƒ X - true
// IsActive : Date Count ์œ ๋ฌด, True/False (19์‹œ์— True๋กœ ๋ณ€ํ™˜)

{
    Date: 2021-09-23,
    CheckInOnly: true,
    IsActive: false
}

AttendanceDetail

// Date : Date
// CamperId : CamperId
// CheckInTime :  10:00:01 | null
// CheckOutTime : 23:00:10 | null
// Attendance : True/False

{
    Date: 2021-09-23,
    CamperId: "S013",
    CheckInTime: 09:59:59,
    CheckOutTime: null,
    Attendence: true
}

CamperId

// CamperId : ๋ฒˆํ˜ธ
// Name : ์ด๋ฆ„
// Type : ์•ˆ๋“œ๋กœ์ด๋“œ(K), iOS(S), ์›น(J)

{
    CamperId: "S013",
    Name: "๊น€ํƒœํ›ˆ",
    Type: 'S'
}

Attendance

// CamperId : CamperId
// Count : ์ด ์ถœ์„ ํšŸ์ˆ˜ 

{
    CamperId: "S013",
    Count: 3
}


๐Ÿƒโ€โ™‚๏ธ Install & run

git clone https://github.com/boostcampwm-2021/bookathon_F.git

cd BoostAttendance
pod init
pod install # m1 ์นฉ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด arch -x86_64 pod install ์„ ์‹คํ–‰ํ•ด์ฃผ์„ธ์š”

๐Ÿงจ m1 ์นฉ์—์„œ pod install ์˜ค๋ฅ˜๊ฐ€ ๋‚œ๋‹ค๋ฉด -> arch -x86_64 pod install ์„ ์‹คํ–‰ํ•ด์ฃผ์„ธ์š”

๐Ÿงจ Firebase ์˜ค๋ฅ˜๊ฐ€ ๋‚œ๋‹ค๋ฉด -> ๋งํฌ

๐Ÿงจ CocoaPod ์˜ค๋ฅ˜๊ฐ€ ๋‚œ๋‹ค๋ฉด -> ๋งํฌ


๐Ÿฅ• ๊ฐœ๋ฐœ ์ค‘ ์–ด๋ ค์› ๋˜ ์ 

Lambda ์ตœ๋Œ€ ์šฉ๋Ÿ‰ ์ดˆ๊ณผ ๐Ÿ˜ข

๋ˆˆ๋ฌผ๊ฒจ์šด ๊ฐœ๋ฐœ ๊ณผ์ •๐Ÿ’ฆ

  1. gRPC ๋ชจ๋“ˆ์ด C๊ธฐ๋ฐ˜์ด์—ฌ์„œ Python์œผ๋กœ ์„ธํŒ…๋œ Lambda์—์„œ๋Š” ๋™์ž‘ ๋ถˆ๊ฐ€
  2. ๋„์ปค๋กœ ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•œ ํ›„ ํ•„์š”ํ•œ ํŒจํ‚ค์ง€ ์˜์กด์„ฑ๋งŒ ์ถ”์ถœ ์ฐธ๊ณ ์‚ฌ์ดํŠธ
  3. ์šฉ๋Ÿ‰์ด ์ปค zip ํŒŒ์ผ ์—…๋กœ๋“œ ๋ถˆ๊ฐ€๋Šฅ
  4. S3์— ์—…๋กœ๋“œ -> 50MB ์ดˆ๊ณผ๋กœ ์—๋Ÿฌ
  5. EC2๋กœ ์ „ํ™˜

ํŒŒ์ด์–ด๋ฒ ์ด์Šค ๊ธฐ๋ณธ ์šฉ๋Ÿ‰ ์ดˆ๊ณผ ๐Ÿ˜ฎ

์ฒดํฌ์ธ - ์ฒดํฌ์•„์›ƒ ์Šค๋ ˆ๋“œ์˜ ๋Œ“๊ธ€์ด ๊ฐ 200์—ฌ๊ฐœ์— ์ด๋ฆ„

์ค‘๋ณต์ฒดํฌ ๋กœ์ง ๋“ฑ DB์— ์ ‘๊ทผํ•˜๋Š” ์ฟผ๋ฆฌ์˜ ์–‘์ด ์ ์  ๋งŽ์•„์ง€๊ณ ,

๊ฒฐ๊ตญ ์‚ฌ์šฉ๋Ÿ‰ ์ดˆ๊ณผ๋กœ ๋ฌด๋ฃŒ ์š”๊ธˆ์ œ๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋จ ๐Ÿ˜ญ

๋ˆˆ๋ฌผ์„ ๋จธ๊ธˆ๊ณ  ์ƒˆ๋ฒฝ3์‹œ์— Blaze ์š”๊ธˆ์ œ ๊ฒฐ์ œ ๐Ÿ’ธ๐Ÿ’ธ๐Ÿ’ธ

์•ฝ 31๋งŒํšŒ์˜ ์ฝ๊ธฐ ํŠธ๋ž˜ํ”ฝ


XCode ๋ฒ„์ „์ด ๋‹ฌ๋ผ์„œ ์—ด์ง€ ๋ชปํ•˜๋Š” ์ด์Šˆ ๐Ÿ˜ฉ

XCode ์ตœ์‹ ๋ฒ„์ „์ธ 13.0 ํ™˜๊ฒฝ์—์„œ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๋ฅผ XCode 12.6 ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ํ•˜๋‹ˆ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ด์Šˆ ๋ฐœ์ƒ


์ดํ›„ ๊ณ„์†ํ•ด์„œ ์›์ธ์„ ์ฐพ์•„๋ณด๋‹ค๊ฐ€ XCode๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œ (13.0) ํ•˜๋‹ˆ ์ •์ƒ์ ์œผ๋กœ ํ”„๋กœ์ ํŠธ๊ฐ€ ์—ด๋ฆผ.

ํ˜‘์—…์„ ํ• ๋•Œ์—๋Š” ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๋จผ์ € ๋งž์ถ”๊ณ  ์‹œ์ž‘ํ•˜๋Š”๊ฒŒ ์ค‘์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๋‹ค์‹œ๊ธˆ ๋Š๋‚€ ๊ฒฝํ—˜