아 오늘은 아침에 중간평가를 봤다. 스위프트 문법 문제였는데… 31문제 중에 6문제 틀려서 82점이었다 ._. 평균을 알 수 없으니 내가 잘한 건지 모르겠음 생각보다 많이 틀렸다 ._, 반성하고 각성하라
중간평가 이후엔 예제 진행하면서 수업하고...
사실 중간중간 프로젝트 생각하느라 한숨만 쉬고...
음 그래서 오늘은 수업을 10분 일찍 끝내고 팀원분들이랑 디코에서 프로젝트 얘기를 했다.
채팅으로 진행하면 백만년 걸릴 것 같아서 마이크 켜자고 했는데 다들 따라와 주셔서 감사했다!!!
주제만 생각해보자고 한 게 어젠데 다들 하나 이상으로 생각해 오셔서 나도 수업 내내 주제만 생각해서 다행이다 싶었다.
여기서 잠깐 내가 주제를 고를 때 제일 중요하게 생각한 기준이
1. 앱을 완성할 수 있을만한 주제(기간이 짧아서 중요한 기능이 너무 많으면 안 됨)
2. 가능한 수업에서 배운 내용들 위주로 구현할 수 있을 것(놀랍게도 swift 배운 지 이제 한 달)
3. 한 사람이 하나의 기능 구현(The '지옥에서 올라온 프로젝트 관리자' 'Git'과는 아직 내외 중)
이었고, 그래서 내가 준비한 주제는?
칸반보드ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
노션 기본 템플릿에도 있고 소공에서 신나게 배웠던 애자일 그것ㅋㅋㅋㅋㅋㅋㅋㅋㅋ
하......
어쩌다 이렇게 됐냐면... 2~3번이 제일 컸다. 'TabView 써서 (할 일/진행 중/완료)로 나눠서 각자 구현하면 되는 거 아닌가...?' 란 생각으로(실환가) 낸 주제였는데... 투표했더니 이게 돼버렸다(환장)
난... 일기장 앱... 좋다고 생각했는데 ._.
결국 팀장이자 주제 낸 사람으로서 화면 공유해서 미리 노션으로 만들어놓은 칸반보드를 보여드리고...ㅋㅎ
앞으로 어떤 기능을 구현할지 각자 생각해서 공유하고, UI 구성을 미리 정하는 게 좋지 않나 하는 말씀을 드리고 피그마 능력자 분들에게 수요일 UI 수업 전까지 구상해 보자는 회의를 짧게... 한 25분 정도 한 것 같다. 금요일이라 나도 일이 있기도 했고..ㅎ
후... 회의 진행하는 거 굉장히 힘들었다. 침묵이 생기면 뭐라도 오디오를 채워야 할 것 같은 부담감... 역시 나는 팀장이나 PM이 시키는 대로 하는 게 맞는 것 같아...!!!! 그래도 이런 기회가 아니면 내가 언제 이런 리더?를 해보나 싶다. 난 자리를 깔아줘야 하는 타입이라... 좋은 경험... 이겠지?? 흑
못난 팀장을 둔 팀원들에게 한없이 미안할 뿐이다.
아니다 자신감을 가져야 한다 나는 체고의 팀장!!!!!
그러므로 날 팀장, 그것도 팀 배정표 일빠따로 보이는 1팀 팀장자리에 앉힌 사람을 찾아서 피의 복수를 하겟다는 다짐은 여기서만 묻어놓는ㄴ다...☆
크흑.. 내일은 집들이가 있으므로 이쯤에서 줄인다.
+ 라고 끝났으면 좋았는데, 웃긴 일이 있어서 더 써야겠음
1. 우리 아부지... 손님들이 자꾸 동?안이라는데, 이젠 하다하다 내가 아부지 와이프냔 소리를 들었다. 그 손님들은 오늘부로 내가 블랙리스트에 올렸다. 이쪽은 진짜 복수한다. 내가 ** 이 나이에(이하생략
2. 엄마가 자꾸 차 조수석 잠금 풀리기 전에 열라 그래서 고장 나고 안 열리는 문을 내가 연지 한 달도 안 돼서 엄마가 또 잠가놨는데, 전에 열었던 게 생각나서 '아 기대 안 하고 당겼더니 열리면 좋겠네ㅋㅋ' 하고 아무 생각 없이? 문을 당겼더니 열렸다. 진짜.
'딸깍' 하고 열린 문 사이로 아부지랑 눈이 마주쳤고... ㄹㅇ 아부지 표정이 (OㅇO) 이랬다곸ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
import Foundation
let inp = readLine()!.components(separatedBy: [" "]).map { $0 }
let (s1, a) = (inp[0], Int(inp[1])!)
var resultStr: String = ""
for _ in 0 ..< a {
resultStr += s1
}
print(resultStr)
다른 코드
import Foundation
let inp = readLine()!.components(separatedBy: [" "]).map { $0 }
let (s1, a) = (inp[0], Int(inp[1])!)
print(String(repeating: s1, count: a))
- 챗 gpt의 해설
이 코드는 사용자로부터 문자열과 숫자를 입력 받아서 입력한 문자열을 입력한 숫자만큼 반복해서 출력하는 기능을 수행합니다.
import Foundation: Foundation 프레임워크를 가져옵니다. 이 프레임워크는 Swift에서 문자열 다루기와 같은 작업을 수행하는 데 도움이 됩니다.
let inp = readLine()!.components(separatedBy: [" "]).map { $0 }: readLine() 함수를 사용하여 사용자로부터 입력을 받습니다. 입력은 공백으로 구분된 문자열과 숫자여야 합니다. components(separatedBy: [" "])를 사용하여 입력된 문자열을 공백을 기준으로 나눕니다. map { $0 }를 사용하여 나눠진 문자열을 배열로 만듭니다.
(s1, a) = (inp[0], Int(inp[1])!): inp 배열의 첫 번째 요소는 문자열이므로 s1에 저장하고, 두 번째 요소는 숫자로 변환하여 a에 저장합니다. 이때 Int() 함수를 사용하여 문자열을 정수로 변환합니다. 사용자가 유효한 숫자를 입력하지 않으면 오류가 발생할 수 있으므로 !를 사용하여 옵셔널 해제를 수행합니다.
String(repeating: s1, count: a): 입력한 문자열 s1을 입력한 숫자 a번 만큼 반복하여 새로운 문자열을 생성합니다.
print(...): 생성된 문자열을 출력합니다.
4번 추가 해설
네, String(repeating: s1, count: a) 부분은 문자열을 반복해서 생성하는 역할을 합니다. 이것은 Swift의 String 클래스의 생성자를 사용하여 수행됩니다.
repeating: 반복할 문자열을 지정합니다. 이 경우에는 입력된 문자열 s1이 사용됩니다.
count: 반복 횟수를 지정합니다. 이 경우에는 입력된 숫자 a가 사용됩니다.
따라서 String(repeating: s1, count: a)는 입력된 문자열 s1을 입력된 숫자 a번 반복하여 새로운 문자열을 생성합니다. 이후 print 함수를 사용하여 생성된 문자열을 출력합니다.
점심에 너무 졸려서 30분만 자고 일어나서 밥 먹어야지 했는데 일어나 보니 오빠 놈이 지는 양념삼겹살 혼자 꿔 처먹고 나한테는 웬 치즈떡이나 먹으라 그래서 어이가 돌아가실 뻔했다. 니는 오빠인 거에 감사해라 동생이었음 허리를 거꾸로 접어버렸을
오후에는 실습을... 했다. 헬난이도
챗 gpt 멱살을 붙들고 오류 대파티를 벌였는데, 얘도 인간이 참 답답했을 것이다. 인간시대의 끝이 도래했다고 하면 어쩌지. 물론 얘는 3.5라 아직 멍청해서 못할 것이다.
원래 실습 시간에 강사님이 보여주시면 따라 치곤 했는데, 오늘은 짜놓은 코드랑 너무 달라져서 그냥 보기만 했다... 아니 실습 설명에 파일 따로 만들라그래서 다 분리해 놨는데 합쳐서 보여주시면 저는 어떡하나요(억울)
내일은 오후에 실습 대신 UI 강의가 있다고 한다. 내일은 점심시간에 자지 말고 커피 사 와야겠다... 집 근처 1리터 아메리카노는 2,000원인데 포장하면 500원 할인해서 1,500원이다. 엄마한테 얘네는 이렇게 팔아서 뭐 먹고살지 하니까 엄마가 모든 사람들이 너처럼 커피만 먹지는 않는다고 했다. 그리고 옆에 있던 동생 "난 생딸기라떼만 먹는데" 생딸기라떼는 5,500원이다. 그래 너가 1리터의 희망이다.
어제 멘토링에서는 현직자이신 멘토님께 질문 폭격을 했다. 물론 나 말고 다른 멘티분들이... 궁금한 게 참 많기도 하다 싶었다. 그래서 나도 안 하면 아쉬울 거 같아서 그냥 코테나 기술면접 같은 거 여쭤봤다. 코테 준비는 무엇보다 꾸준함이 중요하다 하셨고, 기술면접은 swift 문법을 아는 게 중요하다고 하셨던 것 같다 < ? 어제 적은 거 노션에 있으니 그쪽 참고
그래서 거의 11시에 끝났고... 멘토님도 멘토링 초반에 이렇게 질문 많은 건 처음이시라고. 물론 질문은 많은 게 좋다고 하셨다.
앞으로 강의 열심히 들으면서 멘토링도 열심히 하는 걸로...
아 그리고 더는 미룰 수 없다 너의 알고리즘
내 프로그래머스 계정이... 있나...? 휴면 메일 왔던 거 같은데(눈물
+) 요즘 쉬는 시간 점심시간에 자면 자꾸 일어나서 수업 들어야 되는 꿈 꾼다... 테러블 호러블
멘토링 날짜가 정해져서 팀원분들이랑 어떤 방향으로 진행할지 회의를...^^ 어제에 이어서 1시간 정도...?
아 심심한 귀를 위해 스듀 영상 틀어놨더니 하고 싶어 져서 끄고 왔다. 더 이상 미룰 수 없다 너의 복습
1. 버튼
- 버튼 모양은 텍스트 뷰, 라벨 슈 또는 이미지 뷰와 함께 다양한 수정자로 커스터마이징 할 수 있음
- 세그먼트 컨트롤: 여러 옵션 중 하나를 선택할 수 있도록 하는 iOS 앱의 사용자 인터페이스 요소(출처: 챗 GPT).
- @State 변수를 사용하여 사용자가 선택한 세그먼트를 추적함.
- 버튼 || 세그먼트 컨트롤의 선택에 따라 @State 변수의 값을 변경하여 사용자 인터페이스를 동적으로 업데이트할 수 있음 (<< 이거 되게 신기하더라. 안드로이드 스튜디오 할 때 되게 씨름했던 것 같은데)
- .onChange 수정자로 변경사항에 따라 추가 코드 실행
2. 텍스트
- Swift에서 텍스트 수집은 텍스트 필드, 보안 필드, 텍스트 에디터 세 가지 뷰로 이루어짐.
- 텍스트 필드: 한 줄 입력
- 보안 필드: 입력된 텍스트 마스킹 처리
- 텍스트 에디터: 여러 줄 입력
- 기타 사용할 수 있는 수정자는 책이나 공식문서 참고
여기까지 쓰고 생각난 게 왜 강의 들으면서 필기한건 안 보고 이러고 있는 거지? 그야 강의 시간엔 코드만 따라쳤..으니까
아니 그래도 쓴 게 있긴 한데 이미 늦었다
3. 멘토링
문제의 멘토링... 팀 목표랑 멘토링에서 바라는 점 정하는데 참... 채팅으로만 대화하려니까 힘들었다. 오죽했으면 내가 마이크를 켜고 얘기했을까... 솔직히 답답해 돌아가실 뻔... 그나마 내가 팀장이 아닌 게 다행이지. 사다리는 아직 날 버리지 않았다. 아무튼... 책 5 챕터를 각자 공부하고 최대 일요일까지 정리 자료를 공유하기로 했다 ^o^
아무래도 실습 위주로 진행 중이라 개념 같은 건 정리하기 애매하다. 저거 강의자료 보고 정리한 건데
그럼 코드를 치면 되지 않느냐? 지금 맥북이 아니라 곤란; 언제쯤 맥북에 프로페셔널 해질까... 뉴비는 오늘도 슬프다.