안드레 카파시(Andrej Karpathy)와 더불어

초보 병아리들을 위한 강의에 정말 진심인 또 한 명의 명장, 앤드류 응(Andrew Ng) 아저씨 !!!

 

이번에는 파이썬 그것도 그냥 파이썬이 아니라 AI 파이썬 강의를 가지고 찾아오셨다.

- https://www.deeplearning.ai/short-courses/ai-python-for-beginners/

 

 

살짝 아쉬운 점은 한국어 더빙 또는 한글 자막이 있으면 좋았겠지만,

영어 자막 정도로 만족해야 한다. (훌륭한 무료 강의인데, 이것만으로도 감지덕지!)

 

 

출석부 도장 쾅!

 

 

동영상 녹화 강의 단점을 해소하기 위한 AI Chatbot을 제공해준다.

아쉽게도 한글은 안되고 영어로만 된단다.

 

Python 공부와 영어 공부를 한 번에 해결할 수 있다! (원영적 사고!)

 

 

강의를 꾸준하게 듣게 하기 위해 여러가지 수단을 동원하는 듯~ ^^

 

 

가장 멋진 부분 !!!

실습을 하는 환경도 하나의 화면에 같이 제공을 해준다 !!!

 

 

그냥 일반적은 그런 Python 초보 강의가 아니다.

"AI Python" 제목을 달고 있는 강의이다.

 

어떤 차이가 있냐고?

실습 프로젝트 자체가 다르다.

 

Custom Recipe Generator(맞춤형 레시피 생성기): Create an AI-powered tool that generates unique recipes based on available ingredients. You’ll use variables, f-strings, and AI prompts to craft personalized culinary creations.

 

- Smart To-Do List(스마트 할 일 목록): Build an intelligent task manager that not only stores your to-do items but also prioritizes them using AI. You’ll apply your knowledge of lists, dictionaries, and decision-making code to enhance productivity.

 

- Travel Blog Analyzer(여행 블로그 분석기): Develop a program that reads travel blog entries and uses AI to extract key information like restaurant names and popular dishes. This exercise showcases your ability to work with files and leverage AI for text analysis.

 

- Dream Vacation Planner(꿈의 여행 일정 설계자): Create a sophisticated itinerary generator that takes a multi-city trip plan and uses AI to suggest daily activities, including restaurant recommendations. You’ll work with CSV files, dictionaries, and AI prompts to build this comprehensive travel tool.

 

- Data Visualization Project(데이터 시각화 프로젝트): Using popular Python libraries like matplotlib, you’ll create visual representations of data. This could involve plotting price trends of used cars or visualizing travel statistics from your vacation planner.

 

- Web Data Extraction(웹 데이터 추출): Use the BeautifulSoup library to scrape web pages and extract useful information, opening up a world of data for your projects.

 

- Real-time Data Application(실시간 데이터 응용 프로그램): Build a program that interacts with web APIs to fetch and process real-time data, such as current weather information or live currency exchange rates.

 

 

AI와 Python에 관심이 있는 초보자들을 대상으로 하고 있는 훌륭한 강의이다.

이 모든 것이 무료로 제공되는데도 공부를 하지 않는 다면 .... 반성해야 한다!!!

 

반응형

 

옛날에 한 번 만들었다가 방치 끝에 삭제를 당해버린 서버의 부활 프로젝트 !!! ^^

 

"오라클 클라우드"를 처음 들어보신 분도 계실 수 있는데,

나름 어느 정도의 시장은 갖고 있는 ... 우리나라 리전도 갖고 있는 클라우드 플랫폼이다.

 

https://www.oracle.com/kr/cloud/

 

 

다른 클라우드들과 마찬가지로

계정 등록을 할 때 신용카드 정보가 필요하다. (1달라인가? 결제하고 곧바로 취소된다)

 

가입을 까막득한 옛날에 했다보니 기억이 가물거려서.... ^^

 

가입 후 화면을 보면 다음과 같다.

 

 

밑에 내려보면 "리소스 실행" 부분에 "VM 인스턴스 생성" 카드가 보인다.

이것을 선택하면 된다.

 

 

기본 이미지가 Orable Linux인데... 다른 배포판을 고를 수도 있다.

 

 

눈치빠른 분은 이미 파악하셨겠지만, 고를 수 있다고 해서 모두 무료가 아니다.

회색 뱃지가 붙어있는 것을 잘 확인해야 한다.

 

나는 익숙한 우분투로 골라봤다.

 

 

 SSH 키 생성해서 내려받는 방법도 있지만,

내가 사용하는 작업용 우분투에 이미 있는 Public-Key를 등록하는 방식으로 진행해봤다.

 

 

갖고 있는 Public-Key 복사해서 넣어줬다.

이렇게 하면 내 작업용 우분투에서 바로 오라클 서버로 접속할 수 있게 된다.

 

 

열심히 생성중이다.

확인해야 할 것은 "공용 IP 주소" 와 "사용자 이름"이다.

 

 

그냥 "ssh ubuntu@ip" 방식으로 접속하면 된다.

 

 

Disk 용량은 위에서 보듯이 50GB가 주어진 것을 알 수 있고,

메모리 용량은 다음과 같이 확인해볼 수 있다.

 

 

무료임에도 1GB를 주는 것은 대단한거다.

하지만, 뭣 좀 해보려면 좀 부족한 것도 사실이니.... swap을 잡아줘보자.

 

ubuntu@instance-20230626-2355:~$ free -h
                      total        used        free         shared    buff/cache   available
Mem:          964Mi       201Mi       168Mi       1.0Mi       594Mi       627Mi
Swap:            0B          0B             0B

ubuntu@instance-20230626-2355:~$ sudo fallocate -l 2G /swapfile

ubuntu@instance-20230626-2355:~$ sudo chmod 600 /swapfile

ubuntu@instance-20230626-2355:~$ sudo mkswap /swapfile
Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=6be33865-5c3a-4cce-bca3-96b4e1880438

ubuntu@instance-20230626-2355:~$ sudo swapon /swapfile

ubuntu@instance-20230626-2355:~$ sudo swapon --show
NAME      TYPE SIZE USED PRIO
/swapfile file   2G   0B   -2

ubuntu@instance-20230626-2355:~$ free -h
                     total        used          free        shared   buff/cache   available
Mem:          964Mi       202Mi       165Mi       1.0Mi       596Mi       626Mi
Swap:         2.0Gi          0B            2.0Gi

 

위 명령어들을 따라해보면 2GB 사이즈의 swap 메모리를 만들어줄 수 있다.

하지만, 재부팅하게 되면 사라지니... 재부팅해도 유지될 수 있도록 추가 작업을 해주자.

 

ubuntu@instance-20230626-2355:~$ sudo nano /etc/fstab

 

아래 한 줄 추가해주면 된다. (탭으로 구분하는 것 잊지 말고!)

 

 

추가로... 우리는 대한민국 사람이니, 타임존을 맞춰주자.

 

ubuntu@instance-20230626-2355:~$ sudo timedatectl set-timezone Asia/Seoul

ubuntu@instance-20230626-2355:~$ timedatectl
                          Local time: Tue 2023-06-27 00:32:32 KST
                    Universal time: Mon 2023-06-26 15:32:32 UTC
                            RTC time: Mon 2023-06-26 15:32:32    
                           Time zone: Asia/Seoul (KST, +0900)    
System clock synchronized: yes                        
                        NTP service: active                     
                   RTC in local TZ: no

 

굳이 왜 이렇게까지 하냐면.... ^^

예전에 이렇게 만들어놓고 잊어먹어서.... 접속을 하지 않다가.... 결국은 삭제를 당했기에....

 

 

파이썬 환경을 만들어보자.

 

ubuntu@instance-20230626-2355:/srv/workspace/python-gmail$ sudo apt install python3

ubuntu@instance-20230626-2355:/srv/workspace/python-gmail$ sudo apt install python-is-python3

ubuntu@instance-20230626-2355:/srv/workspace/python-gmail$ sudo apt install python3-pip

ubuntu@instance-20230626-2355:/srv/workspace/python-gmail$ pip install requests

 

아래 소스코드를 저장해놓자.

 

#!/usr/bin/env python3
"""
Send email via Gmail SMTP
"""

__author__ = "whatwant"
__version__ = "0.1.0"
__license__ = "BEER-WARE"

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from requests import get


def send_email(sender_email, receiver_email, app_password, subject, text, html):
    message = MIMEMultipart("alternative")
    message["Subject"] = subject
    message["From"] = sender_email
    message["To"] = receiver_email

    part1 = MIMEText(text, "plain")
    part2 = MIMEText(html, "html")

    message.attach(part1)
    message.attach(part2)

    with smtplib.SMTP_SSL("smtp.gmail.com", 465) as server:
        server.login(sender_email, app_password)
        server.sendmail(sender_email, receiver_email, message.as_string())


def get_ip():
    ip = get("https://api.ipify.org").text
    return ip


if __name__ == "__main__":
    sender_email = "whatwant@whatwant.com"
    receiver_email = "whatwant@gmail.com"
    app_password = "xxxxxx"

    subject = "This is a lucky email from Python"
    text = f"My public IP address : {get_ip()}"
    html = f"<html><body><p>{text}</p></body></html>"

    send_email(sender_email, receiver_email, app_password, subject, text, html)

 

위 코드를 실행하면 다음과 같이 메일이 온다.

 

 

하루에 한 번씩 보내도록 하자 ^^

 

만날 헷갈리는 crontab ... 예쁜 사이트의 도움을 받자.

 

https://crontab.guru/

 

crontab 등록을 해보자.

 

ubuntu@instance-20230626-2355:/srv/workspace/python-gmail$ crontab -e

 

 

이제, 매일 새벽 4시에 메일을 보내준다 ^^

반응형

+ Recent posts