누구나 딱 15분! 한페이지 코딩만으로 플러터 API 연동 실시간 뉴스 모바일 앱 만들기

이글만 보기

[본교 소식] 플러터(Flutter) 파이어베이스(Firebase)연동 모바일 쇼핑몰 만들기 안내

플러터(Flutter)는 손쉽게 iOS, 안드로이드 앱을 만들 수 있는 모바일 개발의 미래입니다.
이를 이용해 백앤드로 파이어베이스(Firebase)와 연동 한 모바일 쇼핑몰 앱을 만들어 봅니다.

1. 강좌 소개

플러터를 이용해 쇼핑몰 앱을 따라 만드는 강의 입니다. 이를 통해 여러분들은 백앤드로 파이어베이스 rest api를

이용해 풀 스택 앱을 배우게 됩니다.

2.강의 대상

이제 막 플러터 SDK를 설치해서 뭔가 따라서 만들어 보고 싶으신 분.

좀 더 자유자재로 플러터를 통해 표현을 배우고 싶으신 분

기타 누구나

3. 강좌 관련 특징

쇼핑몰 제작의 과정을 플러터의 기본 제공 데모 앱을 통해 차근차근 만들게 됩니다.

또한 서버 쪽 연결을 파이어베이스를 통해 하게 됩니다.

 

* 개발의 처음 방향을 모방일로 하시고 싶으신 분은 먼저 플러터 SDK를 설치하셔야 합니다.

다음 강의(밑바닥 부터 시작하는 모바일 앱 제작 – 안드로이드 , 아이폰 앱 Flutter와 Firebase로 만들기)의

“1.플러터 설치와 개발환경 구성”을 수강하시면 됩니다.

 

 

강의 보러 가기(샵투스쿨 본교)

 

 

이글만 보기

[django 개발 toolBox] 뽕뽑는 강의 - 장고 포럼 (게시판) 설치하기

 

자료 문서

 

미디어든 쇼핑몰이든 테크놀로지의 핵심 중 하나는 커뮤니티용 포럼 소프트웨어 입니다.

장고 게시판을 통해 커뮤니티 서비스를 무료로 운용 가능하게 하는 프로그램입니다.

여러분은 레고 처럼 장고 게시판을 뚝딱 만들게 됩니다.

 

게시판 설치 과정은 다음의 순서를 따릅니다.

 

1.관련 프로그램 설치

 

2.setting.py 에서 다음의 부분 업데이트

  • INSTALLED_APPS
  • TEMPLATES
  • MIDDLEWARE
  • STATICFILES_DIRS
  • CACHES

 

3.장고 HAYSTACK 설정

 

HAYSTACK_CONNECTIONS

 

4.마이그레이션

 

 

5.urls.py 업데이트

 

 

6.게시판 어드민에서 사용 설정

 

이글만 보기

Django - 기존 프로젝트에 Application 추가 작업

Application 추가 작업 순서

1. 어플리케이션 추가

        python manage.py startapp 앱이름

여기서는 blog 라는 이름으로 앱을 추가합니다.

따라서 python manage.py startapp blog 가 됩니다.

 

        

2. settings.py에 앱 등록

        INSTALLED_APPS = [

               '앱이름',

                ...,

        ]

        

    3. template 만들어 주기

생성된 앱 플더에 templaes 폴더를 만들고 그 하단에 생성한 앱 이름으로 폴더를 만든다.

 

        templates/앱이름

   

    4. Model 정의 

*from django.db import models을 상속받아 사용해야 함.

예시)

from django.db import models
from django.utils import timezone
from django.urls import reverse
from django.contrib.auth.models import User
from tinymce import HTMLField
from taggit.managers import TaggableManager


# Create your models here.
class blogPost(models.Model):
    author = models.ForeignKey(User,on_delete=models.CASCADE)
    title = models.CharField(max_length=130)
    text = HTMLField()
    tags = TaggableManager()
    #text = models.TextField()
    created_date = models.DateTimeField(default=timezone.now)

    def get_absolute_url(self):
        return reverse("blogs:post_detail", kwargs={"pk": self.pk})
    def __str__(self):
        return self.title

    5. admin.py에 모듈 추가

예시

from django.contrib import admin
from .models import blogPost

admin.site.register(blogPost)

    6. db migration 작업 .
먼저 make migrations 다음에 물리 db 생성 작업을 한다.

터미날에서 다음의 순서로 명령 수행

python manage.py makemigrations

python manage.py migrate

 

   

    7. 프로젝트 수준의 urls.py 에서 (settings.py가 있는곳) 앱 경로 등록

예)

urlpatterns = [
    path('', include('blog.urls',namespace='blogs')),
   

] 

   

    8. views.py에서 핸들러 함수 구현(요청처리, 모델작업)

예시)

from blog.models import *

class PostDetailView(DetailView):
    context_object_name = 'post'
    template_name = 'blog/post_detail.html'
    model = blogPost

   

    9. 화면이 필요한 경우, 해당 template 작업

위의 예시의 경우 blog앱의 templates 폴더 하단의 blog폴더에서 post_detail.html 을 작업 해 줌.

    10. 앱 수준의 url 작업 

예시)

from django.urls import path
from blog.views import PostDetailView

app_name = 'blogs'

urlpatterns = [

    path('blog/<int:pk>/',PostDetailView.as_view(),name='post_detail'),

]

 

 

 

 

이글만 보기

[django 개발 toolBox]장고 Taggit을 이용한 태그 기능 구현하기2

지난 시간에는 태그를 이용해 블로그를 연결했습니다.

이번에는 이 곳의 개별 강의와 강좌들도 블로그와 함께 태그로 연결하겠습니다.

이 작업을 위해 우리는 별도의 views를 생성해야 합니다.

쿼리의 매개변수 또는 인수로 태그를 사용하고 뷰 내부에서 일치하는 모든 블로그및 개별강의와 강좌들에 반환하게 하도록 하면 됩니다.

동영상을 통해 실제 작업을 보겠습니다.

 

 

관련: [django toolBox]파이썬 장고 Taggit을 이용한 태그 검색 기능 구현하기 1

이글만 보기

[django 개발 toolBox]장고 admin 페이지 이쁘게 만들기- Django Grappelli 설치하기

Admin 페이지를 간단하게 꾸미는 장고 패키지 중에서 

Django Grappelli 를 설치하는것을 안내해 드립니다.

 

*장고 개발 toolBox는 여러분의 장고 개발시 필요한 유용한 도구들을

찾아 소개해 드립니다.

이글만 보기

[django toolBox] 샵투스쿨 분교 서버에 올려 django paypal 에 실제 페이팔 어카운트 적용 방법

여러분이 서버에 샵투스쿨 장고 캠퍼스를 서비스 할때를 위한 안내입니다.

기본적으로 서버는 https 를 사용하셔야 합니다.

먼저 settings와 작업한 signals에서 페이팔 이메일을 여러분의 실제 돈을 받을 이메일로 바꿉니다.

그리고 settings의 PAYPAL_TEST 항목을 False로 바꿉니다.

다음과 같은 오류의 경우

PayPal Error: Things don't appear to be working at the moment. Please try again later

이때 여러분 console상에서 다음과 같은 메세지가 나오는 것은 여러분 페이팔 어카운트에서 작업해 주셔야 합니다.

이 경우 동영상의 안내를 따라 주시기 바랍니다.

paypal.standard.models:275: This method (or branch) is not covered by automated tests. It is therefore very vulnerable to being accidentally broken by future versions of django-paypal. Please contribute tests to ensure future functionality!

 

 

이글만 보기

[django toolBox] 장고 DEBUG = FALSE 에서 정적 파일과 미디어 읽기

settings.py에서 작업하실때는 디버그의 기본은 debug=True 입니다. 그러나

실제로 서비스를 할때는 보안상 debug=False 로 해서 끕니다. 그러나 이때부터 Django는 더 이상 정적 파일을 처리하지 않습니다.

여러분 호스팅 환경의 웹 서버(Apache 등)가 이를 처리해야 합니다.

그러나 간단하게 다음과 같은 방법도 사용이 가능합니다.

다음의 안내를 따르시면 됩니다. 

1.먼저 debug = False와 Allowed_HOSTS 처리를 합니다. 예시에서는  ALLOWED_HOSTS가 * 이지만, 실제 사용할때는

반드시 여러분의 도메인을 사용합니다. (로칼에서 테스트할때는 locahost또는 IP)

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False

ALLOWED_HOSTS = ['*']

 

2 settings.py 에서 STATIC_ROOT 와 MEDIA_ROOT 경로를 정의합니다.

 

STATIC_URL = '/static/'

MEDIA_URL = '/media/'

  

if DEBUG:

  STATICFILES_DIRS = [os.path.join(BASE_DIR'static')]

else:

  STATIC_ROOT = os.path.join(BASE_DIR'static')

  

MEDIA_ROOT = os.path.join(BASE_DIR'media')

 

3. 그리고 루트 수준의 urls.py에서(settings.py가 있는 폴더) 정적 URL에서  STATIC_ROOT 와 MEDIA_ROOT 에 연결되도록 다음과 같이 정의합니다.

 
from django.conf.urls import url

from django.conf import settings

from django.views.static import serve

  

urlpatterns = [

  url(r'^media/(?P<path>.*)$'serve,{'document_root'settings.MEDIA_ROOT}),

  url(r'^static/(?P<path>.*)$'serve,{'document_root'settings.STATIC_ROOT}),

]

 

 

또한 여러분은 장고를 실제 서비스 하기 전에 다음의 배포 전 체크리스트를 확인해 보실 것을 추천드립니다.

배포 전 체크리스트(장고 공식 문서)

 

이글만 보기

[django toolBox]파이썬 장고 Taggit을 이용한 태그 검색 기능 구현하기 1

해시태그(hashtag)는 메타데이터 태그로, 해시 기호(#) 뒤에 특정 단어를 쓰면 그 단어에 대한 글을 모아 분류해서 볼 수 있게 합니다.

관련된 내용물을 묶어주는 역할을 해 사용자들이 관심 있는 주제의 내용물을 쉽게 찾을 수 있도록 도와주는데요,

여기서는 이 태그 기능을  django-taggit 을 이용해 손쉽게 구현해 봅니다.

 

작업 목표: 이 사이트에는 강좌, 레슨, 블로그 등이 있다. 이것을 같은 주제로 태그로 연결하게 할 것이다. 하나의 앱의 태그만 아니라 즉 여러앱을 태그로 연결하는 것이다.

 

설치

pip install django-taggit

settings.py

INSTALLED_APPS에 taggit 추가.

# Application definition


INSTALLED_APPS = [
    'taggit'#taggit 추가
]

모델에 필드 추가 예시. 블로그의 경우

 
from taggit.managers import TaggableManager
 
class blogPost(models.Model):
    author = models.ForeignKey(User,on_delete=models.CASCADE)
    title = models.CharField(max_length=30)
    text = HTMLField()
    tags = TaggableManager() #태그 추가
    created_date = models.DateTimeField(default=timezone.now)

    def get_absolute_url(self):
        return reverse("blogs:post_detail"kwargs={"pk"self.pk})
    def __str__(self):
        return self.title

마이그레잇

python manage.py migrate

 

우리는 여러 앱에서 태그를 사용하게 할것이므로 context_processors.py 이용 태그를 글로벌 하게 사용가능하게 해야 한다.

 

 context-processors 는 HttpRequest를 인수로 사용하고 사전형(dict) 반환해준다. 

 

코드의 예시를 보자. 위에서 말한 내용처럼 HttpRequest를 인수로 받으며 우리가 작업할 tag를 dict형을 반환하는 간단한 함수를 제작한다.

 

from taggit.models import Tag

def tags(request):
  return {'tags': Tag.objects.all()}

생성한 함수를 어디서든 불러올 수 있어야하므로 settings.py의 template(template변수로 사용할 것이므로)의 options 아래의 context_processors에 넣어준다.

'OPTIONS': {
            'context_processors': [
                
                'blog.context_processors.tags',#장고 태그 작업 중
                
           ],

태그 입력을 위한 forms.py 작업 예시

 

 

class PostForm(forms.ModelForm):

    text = forms.CharField(
        widget=TinyMCEWidget(
            attrs={'required'False'cols'30'rows'10}
        )
    )

    class Meta:
        modelblogPost
        fields = ['title','text','tags']
        help_texts = {
            'title''글의 제목을 입력하세요',
            'text''글을 적어 주세요',
            'tags''태그 - 관련 주제를 콤마(,)로 구분해 입력해 주세요'
        }
    
    def save_form(selfrequestinstanceformchange):
        user = request.user 
        instance = form.save(commit=False)
        if not change or not instance.author:
            instance.author = user
        instance.modified_by = user
        instance.save()
        form.save_m2m()
        return instance

 

추가로 태그 쿼리를 위한 views.py 작업의 예시도 추가하니 참고해 주세요.

 



class PostListView(ListView):
    context_object_name = 'posts'
    template_name = 'blog/post_list.html'
    #ordering = ['-created_date']
    #model = blogPost

    def get_queryset(self):
        queryset = blogPost.objects.all().order_by('-created_date')
        tag = self.request.GET.get('tag')
        if tag:
            queryset = queryset.filter(tags__name=tag)
        return queryset


 

 

html에 추가

 

이제 준비는 다 끝났다 그대로 가져와 사용만 하면 된다.

 
          <div class="tags">
            {% for tag in tags %}
              <a href="{% url 'blogs:post_list' %}?tag={{tag.name}}"> {{tag.name}}</a>            
            {% endfor %}
          </div>

실전 과제: 이 태그로 이루어진 블로그 외에 강좌와 레슨도 모두 연결해 보세요. 예를 들어 장고라는 태그를 클릭하면

이 블로그 페이지에 블로그와 강좌, 레슨이 모두 연결되어 나오는 로직을 구현해 보세요.

직접 한번 해 보신 후 다음의 2편을 보시길 추천드립니다.

 

이글만 보기

[django toolBox]장고 django-allauth 2 회원가입 이메일 인증 처리

회원가입 인증 이메일을 처리 과정을 장고 올오뜨를 이용해 간단하게 구현해 봅니다.

Django SMTP 설정 

EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = '123@gmail.com'
EMAIL_HOST_PASSWORD = '123'
EMAIL_PORT = 587

 

 django-allauth 셋팅

 

ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_EMAIL_VERIFICATION = "mandatory"
 
 
 

 

이글만 보기

[django toolBox]장고 django-allauth 1 이용 google login 구현 (Sign in with Google Django) - Django Social Authentication

이글만 보기

완전 무료 호스팅! 운영도 무료 ! 샵투 울트라 쇼핑몰!

대부분 닭장 호스팅 환경들이 미래를 위한 제시를 못하고,

아마존 aws 이나 구글 cloud 이용하면 생각보다 어렵고 ..

트래픽이나 서비스에 대한 추가 요금으로 배움을 위한 투자로 이용하기엔 돈이 자꾸 나가..

씩씩 거리며 계정 막아버리면, 또 어디서 복잡해 정리 못한 서비스가 있어 또 돈이 나가 ㅠㅠ

누구냐! 내 홈피 들어간 인간들이 이러면서 그냥 씩씩거리며 몽땅 정리하신 경험들 많죠?

그런 분들을 위해 만들었습니다.

 

완전 무료 . 운영도 무료!

 

무료로 쇼핑몰을 만드세요!

 

누구나 쉽게 설치방법 따라 하기만 하면 무료 호스팅으로 무료 쇼핑몰을 가집니다.!

더구나 강의도 있어서 직접 개발까지 하면서 미래 지향적으로 갈 수 있습니다!

모든 소스에 대한 설명을 통해 끔임없이 강의와 함께 배우는 샵투울트라 쇼핑몰 !

업데이트를 통한 고도화된 발전도 영원히 계속된다 !!

 

 

유튜브 강의로 따라만들기

 

결과물 보기 : 울트라 쇼핑몰

 

소스코드

https://github.com/shop2world/ultrashop

이글만 보기

[django toolBox] 장고 mailchimp 연동하기

[django toolBox] 장고 mailchimp 연결하기

 

1.html 입력 폼

 
                        <h4>뉴스레터</h4>
                        <form action="/newsletter/" method="POST" class="footer-newslatter">
                        {% csrf_token %}
                            <input type="email" placeholder="이메일 입력" name="newsemail">
                            <button type="submit" class="site-btn">구독하기</button>
                            <p>*최신 기술 뉴스를 받아보세요</p>
                        </form>

 

2.Views

from django.conf import settings
from mailchimp_marketing import Client
from mailchimp_marketing.api_client import ApiClientError
   

# Mailchimp Settings
api_key = settings.MAILCHIMP_API_KEY
server = settings.MAILCHIMP_DATA_CENTER
list_id = settings.MAILCHIMP_EMAIL_LIST_ID

# 메일침프 구독 
def subscribe(newsemail):
    

    mailchimp = Client()
    mailchimp.set_config({
        "api_key"api_key,
        "server"server,
    })

    member_info = {
        "email_address"newsemail,
        "status""subscribed",
    }

    try:
        response = mailchimp.lists.add_list_member(list_idmember_info)
        print("response: {}".format(response))
    except ApiClientError as error:
        print("An exception occurred: {}".format(error.text))

def newsletter(request):
    if request.method == "POST":
        newsemail = request.POST['newsemail']
        subscribe(newsemail)
        messages.success(request"뉴스레터 이메일 구독에 감사합니다!"# 구독감사메세지

    return redirect('courses:home')

 

3.연결

from django.urls import path

from users.views import newsletter

urlpatterns = [    
    path('newsletter/'newslettername='newsletter'),
]

 

4.장고 메일침프 설치

pip install mailchimp-marketing

 

5.settings.py

# MAILCHIMP CREDENTIALS
MAILCHIMP_API_KEY = ""
MAILCHIMP_DATA_CENTER = ""
MAILCHIMP_EMAIL_LIST_ID = ""

이글만 보기

[django toolBox] 메일폼 보내기 contact form 만들기 (모델 없이 views와 gmail 또는 메일건 mailgun 이용)

[django toolBox] 는 장고 사용에 필요한 기능들을 군더더기 없이 짧고 간편하게 설명합니다.

 

django를 이용해 신청서나 폼메일등에서 Gmail의 smtp로 메일을 발송하는 방법을 소개합니다.

 

장고를 이용한 폼메일로 이번에는 model을 만들지 말고 바로 이메일만 보내보도록 하겠습니다.

또 gmail 에 이어서 mailgun을 smtp로 사용하는 것도 배우게 됩니다.

만약 model 을 이용한 폼메일 제작은 [django toolBox] Gmail의 smtp를 백엔드로 이용하여 메일 보내기 contact form 만들기 (모델 이용)

을 참고해 주세요.

1.먼저 gmail의 보안수준을 낮게 설정해야 합니다.

https://myaccount.google.com/lesssecureapps

 

2.settings.py 수정

 

EMAIL_HOST='smtp.gmail.com'
EMAIL_HOST_USER='123@gmail.com'
EMAIL_HOST_PASSWORD='123123123'
EMAIL_PORT = 587

 

3.html 폼 입력 받기

 
          <!-- contact form -->
          <form action="/question/" method="post" class="signup-form">{% csrf_token %}
            <input type="text" placeholder="성함" name="name">
            <input type="text" placeholder="이메일" name="e-mail">
            <textarea placeholder="하실말씀" name="text">      
            </textarea>
            <button class="site-btn">문의</button>
          </form>

4.view만들기

def 문의뷰(request):
    if request.method == 'POST':
        name = request.POST.get('name')
        email = request.POST.get('e-mail')
        text = request.POST.get('text')
        
        message = '안녕하세요! 샵투 스쿨입니다.문의가 접수 되었습니다! 빠른시간내에 답변 드리겠습니다!'
        send_mail(
            '안녕하세요, 샵투스쿨 문의 요청이 접수 되었습니다.',
            message,
            '보낸사람@gmail.com',
            [email],
            fail_silently=False,
        )
        send_mail(
            'shop2',
            '누군가 문의 요청했습니다. 문의 정보: ' + name + ' , ' + email + ' , ' + text + ' , ' + '.',
            '보낸사람@gmail.com',
            ['벋는사람@gmail.com'],
            fail_silently=False,
        )
        messages.info(requestf'요청이 성공적으로 접수 되었습니다. 이메일을 확인 해 주세요.')
    return redirect('courses:home')    

 

5. urls 연결하기

 

urlpatterns = [
      path('question/'문의뷰name='question')
]

 

 

6.메일건 

EMAIL_USE_TLS = True
EMAIL_HOST='smtp.mailgun.org'
EMAIL_HOST_USER='postmaster@mg.도메인.co' #도메인 등록한 경우
EMAIL_HOST_PASSWORD='1234'
EMAIL_PORT = 587

이글만 보기

[django toolBox] Gmail의 smtp를 백엔드로 이용하여 메일 보내기 contact form 만들기 (모델 이용)

[django toolBox] 는 장고 사용에 필요한 기능들을 군더더기 없이 짧고 간편하게 설명합니다.

 

django를 이용해 신청서나 폼메일등에서 Gmail의 smtp로 메일을 발송하는 방법을 소개합니다.

gmail의 보안수준을 낮게 설정하기

https://myaccount.google.com/lesssecureapps

 

settings.py 수정

 

EMAIL_HOST='smtp.gmail.com'
EMAIL_HOST_USER='123@gmail.com'
EMAIL_HOST_PASSWORD='123123123'
EMAIL_PORT = 587

 

 

이글만 보기

[django toolBox] 파이썬 장고(Django)와 MySQL 연동하기

[django toolBox] 는 장고 사용에 필요한 기능들을 군더더기 없이 짧고 간편하게 설명합니다.

 

- 파이썬 장고(Django)와 MySQL 연동하기

장고의 SQlite 은 파일 형식으로 간편하고 중소형 서비스까지 무난히 감당할 만한 강력한 DB입니다.

그러나 별도의 DB서버가 필요한 MySql을 신뢰하시는 분들도 많기에 장고에서 간단히 MySQL을 적용해 봅니다.

여기서는 SQlite에서 MySQL로 데이터를 이전 하는 부분은 설명하지 않고

초기 부터 MySQL을 사용하실 분이라는 것을 전제로 설명합니다.

또한 이미 MySQL 서버를 운영중이시라는 것을 전제로 합니다.

 

1.커넥트 설치

pip install mysqlclient

 

2.setting.py 작업

 

DATABASES = {
    'default': {
        #'ENGINE': 'django.db.backends.sqlite3',
        #'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        'ENGINE''django.db.backends.mysql'#DB 종류
        'NAME''shop2world'#연결할 MySQL 데이터베이스 이름
        'USER''샵투'# 해당 DB 접속 계정
        'PASSWORD''12345678910'#해당 접속 계정 비밀번호
        'HOST''localhost'#My SQL 서버 주소
        'PORT' : '3306'#포트명
    }
}

3.마이그레잇

python manage.py makemigrations

python manage.py migrate

이글만 보기

어정쩡하게 음악 하려면 시작을 말라

코로나 이후 음악인은 고난의 길이다.

2년가까이 지속되는 모든 공연의 축소와 그에 따른 연주기회의 상실이 이유다.

코로나 전에도 음악의 길은 힘들었다.

쉼없는 매일의 연주로 턱받침으로 눌린 턱의 굳은 살과

손가락은 바이올린 현의 은가루가 검게 문신처럼 밖혀 아무리 딱아도 지워지지 않곤 했다.

 

음악이라는 시간예술이라는 특성상 그 한 순간을 위해 다 쏟아 부어야 했기에

육체적으로 고단한 하루 하루 였지만 그래도 공연을 한다는 열정과 사람들과의 교감으로

피곤해도 피곤한 줄 몰랐다.

신기할 정도로 신나는 날들이었다.

하지만 이젠 그 공연을 한다는 행위조차도 필수가 아니라서 사라져 버린

세상이 된것이다.

안타깝게도 몬트리올심포니의 단원 중에도 파마씨에서 일하는 점원등의 다른 일을 찾아야 하는 경우도 있다.

더구나 그들 음악인생에서 최고의 경력을 만들어야 할 나이 인데 말이다.

이때 홍난파의 노래가 들려온다.

“반 타고 꺼질진댄 아예 타지 말으시오/ 차라리 아니 타고 생나무로 있으시오/ 탈진댄 재 그것조차 마저 탐이 옳소이다” 사랑에 대한 열정만으로 들리지 않았다.

‘어정쩡하게 음악 하려면 시작을 말라’는 준엄한 경고처럼 들렸다.

가끔 학부모들이 진학상담을 할 때 말한다.

“우리 아이가 공부를 못해서 그러는데 한 1~2년 연습하면 대학 갈 수 있는 악기가 무엇인가요?”

 

오래되었지만 변하지 않는 생각들이다.

하프 사면 대학간다.... 무슨 악기는 몇개월 배우면 대학간다..

공부 못하면 예체능을 해야 된다는 생각은 도대체 어디서 생겨나 아직도 이어질까.

이것은 지금도 예체능을 천시하는 사람과 함께 어떤 스테레오타입을 만들고 ,

거기에 더 해 또 탈레반 처럼 아예 음악 자체를 못하게 하는 것들도 있다.

홍난파의 말은  그래서 또한 모두에게 말해주는 말이다.

어정쩡하게 음악 하려면 시작을 말라.

기억속의 '도'가 '도'가 아니더라도 아름다운 음악은 영원히 새롭게 만들어진다.

음악은 고난을 극복하는 힘이고, 이 힘을 만드는 음악인이 이때 진정 가치를 발휘할 것이다.

음악의 힘이면 놀랄만큼 힘이 나고 사람들을 도울 수 있게 할 것이다.

 

이글만 보기

우리가 알던 콘서트의 역사와 코로나

사실 우리가 클래식 음악을 콘서트홀에서 듣게 된것은 낭만주의 후기 부터였다.

그 이전의 실험적인 도전으로 미리 입장료를 받는 시도 등이 있었으나 현재와 같은 체계를 가진 것은 100여년 정도 였다.

그 이전에는 주로 소수의 사람들을 대상으로 왕이나 귀족들만 감상할 수 있었던것.

이것을 대중화 하는데 결정적 계기가 된것이 콘서트홀에서의 음악회였다.

코로나는 이제 대중화에 콘서트홀이라는 장소 변수가 빠지게 될것이고 다시 과거처럼 소규모의 음악회가 코로나 이후의 음악 연주의 형태로 자리잡을것 같다.

또한 IT.BT(바이오기술)에 이어 CT(문화기술)가 제 4차 산업혁명시대를 열어갈 것이다.

코로나로19로 가속된 문화기술로, 공연을 온라인으로 소비하는 차원은 상당기간 존속할 비대면 사회의 한 문화현상이 될것이다.

과거 엔터테인먼트는 오락,여흥, 연예같은 수준이었으나 이시대엔 기예와 감성, 예술성을 뽐내는 최고의 활동으로 CT로 거듭날것이다.

 

 

 

이글만 보기