ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2024-03-18
    스파르타/TIL(Today I Learned) 2024. 3. 18. 23:52

    오늘은 일단 전체적으로는 spark강의를 계속 들었다 진도상으로는 이제 정말 spark에 관련된 부분의 이론을 들었다(여전히 이론 부분 강의하나 덜 듣긴 했지만.. 내일 마저 다 들을듯하다) 간단히 이야기를 적자면 우선 2주차 실습내용부터 듣기 시작해서 쭉 들었는데 실습하면서 윈도우에서는 하는 것이 제약되는 부분이 많을 것 같다는 것을 느꼈다 아마 이부분에 대해서는 우선적으로 튜터님께 여쭤보고 비슷한 것으로 대체해서 감만 잡아보거나 그전에 말씀해주셨던 WSL2방식이 끌리는 것 같아서 비용이 따로 들지 않는다면 그것부터 시도해보지 않을까 예상된다, 그외에 슬랙API를 통해서 코드 내용에 해당하는 메시지를 슬랙으로 메시지 보내는 것을 실습중에 따라 해보았는데 뭔가 유용하게 쓸 수 있지 않을까 싶어서 블로그에 우선적으로 기록해두려고 한다

    우선 슬랙메시지보내는 것을 함수로 짜둔 것을 외부 터미널 등에서 실행시켜줘야해서 터미널에서 다른 디스크에 있는 디렉토리로 바꿔야하는 과정이 필요했는데 매번 까먹고 가물가물하게 기억나서 찾아보게 되는 탓에 이번에 같이 기록해두려고 한다

    더보기

    윈도우 터미널에서 다른 디스크 디렉토리로 이동

     

    네, 맞아요! 윈도우 터미널(명령 프롬프트 또는 PowerShell)에서 현재 디렉토리를 C:\\\\Users\\\\kssg1에서 F:\\\\sparta_python\\\\spark로 변경하고 싶다면, cd 명령어를 사용하여 디렉토리를 변경할 수 있어요. 명령어는 다음과 같이 입력하면 돼요.

    cd F:\\sparta_python\\spark

    이 명령어는 현재 작업 디렉토리를 F:\\\\sparta_python\\\\spark로 변경합니다. 명령어를 올바르게 입력했음에도 불구하고 디렉토리가 변경되지 않는다면, 몇 가지 확인해볼 사항이 있어요:

    1. 경로의 정확성: F:\\\\sparta_python\\\\spark 경로가 정확한지, 해당 경로가 실제로 존재하는지 확인해 보세요. 오타가 없는지도 잘 살펴보아야 해요.
    2. 드라이브 변경: 명령 프롬프트에서는 cd 명령어로 다른 드라이브로 이동할 때, 드라이브 문자만 변경되고 실제 디렉토리 경로는 변경되지 않을 수 있어요. 이런 경우, 드라이브를 변경하려면 먼저 드라이브 문자(F:)를 입력하고, 그 다음 cd 명령어를 사용해야 해요. 예를 들어:
    3. F: cd sparta_python\\\\spark
    4. 명령어 사용 환경: PowerShell과 명령 프롬프트(CMD)에서는 기본적으로 같은 cd 명령어를 사용하지만, 작은 차이점이 있을 수 있어요. 사용하고 있는 환경에 맞는 문서나 가이드를 참조하는 것이 좋아요.

    위의 단계를 따랐음에도 문제가 해결되지 않는다면, 경로에 특수 문자가 포함되어 있는지, 혹은 다른 시스템 관련 문제가 있는지 확인해볼 필요가 있어요. 추가적인 도움이 필요하다면, 더 자세한 상황을 알려주세요!

     

    위의 \에 관련하여 왜인지 이상하게 복사가 되어서 막 2, 4배로 되었는데

    핵심적으로는

    cd F:\sparta_python\spark

    F:
    cd sparta_python\spark

     이런 식으로 해주면 될 것 같다

     

    더보기

    슬랙 API이용 알림 메시지 보내기

     

    일단 슬랙 워크스페이스 슬랙 공간 하나 만들어주고 (이건 안알려줘도 자료가 너무 많아서 생략)

    그 다음에 Incoming Webhooks 이런 것을 하나 만들 것임 얘는 뭐냐면 슬랙으로 뭔가 알림을 줄 수 있는 도구라고 생각하면 될 것 같음 여기까지 오는 것 그냥 구글에 Slack API치면 바로 들어오는 그 화면임

    get started하고 your apps들어가고 없으면 create app하면 되고 그냥 scratch로 해가지고 만들면 됨, 워크 스페이스의 경우에는 이제 어떤 slack 공간예를 들면 소속되어있는 회사에서 워크스페이스를 하나만들 것 여기서 자세히 얘기하기엔 시간이 너무 없어서 패스

    만들어졌다고 가정하고 따로 설정해줄 것 거의 없음 채널도 원하는대로 만들어주면 됨 튜터님은 개인적으로 아무도 못들어오는 채널하나 만들고 거기서 테스트 많이 하신다고 하심 회사슬랙에서도

    Incoming Webhooks 하나 추가해주기 이렇게 하면 웹url이 하나 생성된 것

    이 과정을 통해 만들어진 url을 사용

    import json
    import requests
    
    def post_to_slack(message):
        webhook_url = #주소
        slack_data = json.dumps({'text': message})
        response = requests.post(
            webhook_url, data=slack_data,
            headers={'Content-Type': 'application/json'}
        )
        if response.status_code != 200:
            raise ValueError(
                'Request to slack returned an error %s, the response is:\\n%s'
                % (response.status_code, response.text)
            )
    
    post_to_slack('hello')
    

    이 코드는 파이썬에서 Slack API를 사용하여 특정 Slack 채널에 메시지를 보내는 기능을 구현한 것입니다. 세부적으로 설명해 드리겠습니다:

    1. 라이브러리 불러오기:
      • json: JSON 데이터를 다루기 위한 파이썬 내장 라이브러리입니다. 여기서는 메시지 데이터를 JSON 형식으로 변환하는 데 사용됩니다.
      • requests: HTTP 요청을 보내는 데 사용되는 외부 라이브러리입니다. Slack의 웹훅 URL로 데이터를 POST 요청하는 데 사용됩니다.
      • import json
        import requests
        
        
    1.  
    2. post_to_slack 함수 정의:
      • 이 함수는 message라는 매개변수를 받아 Slack에 메시지를 보내는 역할을 합니다.
      • def post_to_slack(message):
        
        
    3. 웹훅 URL 설정:
      • Slack에서 제공하는 웹훅 URL을 문자열로 저장합니다. 이 URL은 Slack 앱 설정에서 생성할 수 있으며, 이 URL로 POST 요청을 보내면 해당 Slack 채널에 메시지가 전송됩니다.
      • webhook_url = '#주소'
        
        
    4. 메시지 데이터 준비:
      • 보내고자 하는 메시지(message)를 JSON 형식으로 변환합니다. Slack API는 메시지 데이터를 JSON 형식으로 요구하기 때문입니다.
      • slack_data = json.dumps({'text': message})
        
        
    5. HTTP POST 요청 전송:
      • requests.post() 함수를 사용하여 Slack의 웹훅 URL로 JSON 데이터를 포함한 POST 요청을 보냅니다.
      • headers에 'Content-Type': 'application/json'를 명시하여, 요청 본문이 JSON 형식임을 알립니다.
      • response = requests.post(
            webhook_url, data=slack_data,
            headers={'Content-Type': 'application/json'}
        )
        
        
    6. 응답 상태 코드 확인:
      • Slack으로부터 받은 응답의 상태 코드를 확인합니다. 정상적으로 메시지가 전송되면 상태 코드 200을 받습니다.
      • 만약 200이 아닌 다른 코드를 받았다면, 오류 메시지를 포함하여 ValueError를 발생시킵니다. 이는 요청이 제대로 처리되지 않았음을 알립니다.
      • if response.status_code != 200:
            raise ValueError(
                'Request to slack returned an error %s, the response is:\\\\n%s'
                % (response.status_code, response.text)
            )
        
        
    7. 함수 호출:
      • 마지막으로, 'hello'라는 메시지를 Slack에 보내기 위해 post_to_slack 함수를 호출합니다.
      • post_to_slack('hello')
        
        

    이 코드는 Slack의 Incoming Webhooks를 사용하여 메시지를 쉽게 보낼 수 있게 해주며, 필요에 따라 메시지 내용이나 웹훅 URL을 변경하여 다양한 채널에 메시지를 보낼 수 있습니다.

    내용은 다음과 같고 그외는 아직 내용정리가 안되서 블로그에는 일단 보류하겠다

    원래는 주말에 다듣고 오전중에 튜터님이 계시니 질문할려고 했는데 몸상태가 안좋은 것도 있고 여러 이유탓에 주말동안 너무 안들어놔서 후딱 다듣고 질문을 드리기엔 시간이 너무 부족해서 1시 되기 5분전쯤에 간단히 확인할 부분이라도 먼저 여쭤보려고 했는데 이미 퇴근하시고 안계셔서 못여쭤봤다..ㅠ 그래도 내일 저녁에 다시 계시니 최대한 빨리 강의를 마저들으면(현재 3주차 이론부분 하나랑 실습부분 3개?정도 남았는데 이정도면 열심히 집중해서 들으면 오후중에 (저녁시간 전에)다듣지 않을까 생각이 되서 다듣고 질문 정리해서 질문드릴 예정이다)

    추가로 원래 계획으로는 주말중에 강의까지 다듣고 TIL 미흡하게 작성한 부분 보안 및 프로젝트 보완, 이력서 작성 및 희망 회사 탐색해볼려고 했는데 다 못해서 계획이 많이 틀어졌다..ㅠ 그래서 일단 강의 다듣고 질문하고, 이력서 우선적으로 간단히 작성해보고 그외 질문해서 바로 해볼만한 부분들 바로 해보고 좀 큰 껀덕지라 시간 할당은 좀 많이 해줘야할 것 같은 부분 중요도에따라 다시 판단하여 먼저 시간 할당해서 해보거나 아니면 다른 TIL부분이나 프로젝트 보완 부분 등 우선적으로 하고 진행할 예정이다

    그리고 오늘 오전 팀모임은 별 내용이 크게 없었던 것 같지만(그래도 꽤나 서로 주고 받은 내용이 조금 있지 않았나 생각하고) 오후에 모인 것에서는 이것 저것 정보 공유도 많이하고 서로 의견 등 교환도 많이하고 서로 다른 사람은 어떻게 생각하고 있는지 상황 등 궁금한 점 등과 튜터님들에게 질문하고 도움 받는 것 관해서 경험 등에 대해서 이야기를 많이 나누고 주로 내가 알고 있는 tip 등 많이 공유해드렸던 것 같다, 그리고 코드도 서로 공유하고 할 일이 많지 않을까 생각되서 전에 만들어뒀던 레포지토리에 3분을 다 초대드렸다 아쉽지만 이번에는 조금 정신없이 그냥 생각 나는대로 말해서 대화나눈 내용에 대해 따로 정리하지는 못하였다(따로 관련이 없는 잡담이 아닌 내용들로만 거의 1시간 반? 정도 얘기를 나눈 것 같았는데 기록하지 못해서 아쉬웠다)

    그리고 내일은 드디어 고대되었던 수준별 학습반 강의가 있는 날이다 아마 사전 공지해주셨던 내용으로는 Relational database(RDB)에서 데이터 추출(관련 모듈 sql alchemy)를 배울 것 같다

    그리고 내일 오후 2시에 최종프로젝트 팀편성에 관련해서 조사한 부분 제출기간이다 사실 블로그에는 안적어도 될듯하지만 뭔가 지금 신경쓸 부분들이 많아서 잊어버릴 수 있으니 기억차 블로그에도 한번 기록을 남긴다

    이 외에는 딱히 더 적을 내용이 떠오르지 않아 여기서 마무리 짓도록 하겠다

    '스파르타 > TIL(Today I Learned)' 카테고리의 다른 글

    2024-03-20  (0) 2024.03.20
    2024-03-19  (0) 2024.03.20
    2024-03-15(수정필요)  (0) 2024.03.15
    2024-03-14(수정필요)  (0) 2024.03.14
    2024-03-13  (0) 2024.03.14
Designed by Tistory.