반응형
반응형

실패는 무엇인가?
단지 교육일 뿐이다.
무엇인가 더 나아지는 첫 걸음이다.
다음 승리에 가까이 다가서는 것이다.
(물론 당신이 1,000% 노력할 경우)
- 데브라 벤튼, 'CEO처럼 행동하라'에서


우리가 실패를 예찬(?)할 때는
과감한 도전의 결과인 새로운 실수나 실패를 용인하고 장려하는 것이지,
같은 실수를 계속 반복하는 것을 용인하는 것이 아니라는 사실을 알아야 합니다.
사소한 실수를 계속 반복하는 것은 프로의식 결여에서 비롯되는 것으로
쉽게 용서받기 어려운 최악의 실수에 다름 아닙니다.

반응형
반응형

비가 많이 왔지만 월요일부터 금주(酒) 계속 진행 중

 

반응형

'LIFE (일상다반사)' 카테고리의 다른 글

Marmot screaming on Blackcomb Mountain  (0) 2021.09.08
야 개 짖는 소리 좀 안 나게 하라  (0) 2021.09.08
2021.09.05 서울시친환경농장  (0) 2021.09.06
미생 마지막회  (0) 2021.09.01
이봐, 해보기나 했어?  (0) 2021.08.16
반응형



한여름 어머니 몸에서 배어 나온 땀 냄새 같은
저 쿱쿱한 냄새
진한 내음으로 떠다니는 시간 붙잡고
차분히 기다리라는 쉰내

마누라는 나를 위해 찌개를 끓인다
오랜 식음에 익숙해진 나
감기약 대체용으로 돼지고기 몇 점
송송 썰어 부글부글 익어가는 얼큰한 약

나른한 시간
차분히 삶의 실체를 알려주는
마음을 정리해 주는 냄새


- 이종범의 시《김치찌개》전문 -


* 우리 음식 가운데
가장 친숙한 것이 김치찌개입니다.
냄새만으로도 군침이 돕니다. 아무리 입맛이
없어도 좋습니다. 우울한 날, 의욕을 잃은 날도
괜찮습니다. 아내나 엄마가 끓여주는 김치찌개
하나면 밥 한 그릇 뚝딱입니다. 볼에 화색이 돌고
기운이 납니다. 마음도 편안해집니다.
언제나 효과가 좋은 치유제입니다.

반응형

'아침편지' 카테고리의 다른 글

'자동차 연료통'이 아니다  (0) 2021.09.10
우리가 서점을 찾는 이유  (0) 2021.09.09
'엄마에게 너무 화가 나요'  (0) 2021.09.07
진정성을 담은 고백  (0) 2021.09.06
나로부터 끝나고, 나로부터 시작한다  (0) 2021.09.06
반응형

HTML5 웹에서 마이크 녹음 기능

 

 

 

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>마이크 테스트</title>
</head>

<body>
    <input type=checkbox id="chk-hear-mic"><label for="chk-hear-mic">마이크 소리 듣기</label>
    <button id="record">녹음</button>
    <button id="stop">정지</button>
    <div id="sound-clips"></div>
    <script>
        const record = document.getElementById("record")
        const stop = document.getElementById("stop")
        const soundClips = document.getElementById("sound-clips")
        const chkHearMic = document.getElementById("chk-hear-mic")

        const audioCtx = new(window.AudioContext || window.webkitAudioContext)() // 오디오 컨텍스트 정의

        const analyser = audioCtx.createAnalyser()
        //        const distortion = audioCtx.createWaveShaper()
        //        const gainNode = audioCtx.createGain()
        //        const biquadFilter = audioCtx.createBiquadFilter()

        function makeSound(stream) {
            const source = audioCtx.createMediaStreamSource(stream)

            source.connect(analyser)
            //            analyser.connect(distortion)
            //            distortion.connect(biquadFilter)
            //            biquadFilter.connect(gainNode)
            //            gainNode.connect(audioCtx.destination) // connecting the different audio graph nodes together
            analyser.connect(audioCtx.destination)

        }

        if (navigator.mediaDevices) {
            console.log('getUserMedia supported.')

            const constraints = {
                audio: true
            }
            let chunks = []

            navigator.mediaDevices.getUserMedia(constraints)
                .then(stream => {

                    const mediaRecorder = new MediaRecorder(stream)
                    
                    chkHearMic.onchange = e => {
                        if(e.target.checked == true) {
                            audioCtx.resume()
                            makeSound(stream)
                        } else {
                            audioCtx.suspend()
                        }
                    }
                    
                    record.onclick = () => {
                        mediaRecorder.start()
                        console.log(mediaRecorder.state)
                        console.log("recorder started")
                        record.style.background = "red"
                        record.style.color = "black"
                    }

                    stop.onclick = () => {
                        mediaRecorder.stop()
                        console.log(mediaRecorder.state)
                        console.log("recorder stopped")
                        record.style.background = ""
                        record.style.color = ""
                    }

                    mediaRecorder.onstop = e => {
                        console.log("data available after MediaRecorder.stop() called.")

                        const clipName = prompt("오디오 파일 제목을 입력하세요.", new Date())

                        const clipContainer = document.createElement('article')
                        const clipLabel = document.createElement('p')
                        const audio = document.createElement('audio')
                        const deleteButton = document.createElement('button')

                        clipContainer.classList.add('clip')
                        audio.setAttribute('controls', '')
                        deleteButton.innerHTML = "삭제"
                        clipLabel.innerHTML = clipName

                        clipContainer.appendChild(audio)
                        clipContainer.appendChild(clipLabel)
                        clipContainer.appendChild(deleteButton)
                        soundClips.appendChild(clipContainer)

                        audio.controls = true
                        const blob = new Blob(chunks, {
                            'type': 'audio/ogg codecs=opus'
                        })
                        chunks = []
                        const audioURL = URL.createObjectURL(blob)
                        audio.src = audioURL
                        console.log("recorder stopped")

                        deleteButton.onclick = e => {
                            evtTgt = e.target
                            evtTgt.parentNode.parentNode.removeChild(evtTgt.parentNode)
                        }
                    }

                    mediaRecorder.ondataavailable = e => {
                        chunks.push(e.data)
                    }
                })
                .catch(err => {
                    console.log('The following error occurred: ' + err)
                })
        }
    </script>
</body></html>
반응형
반응형

당신의 아들을 사랑한다면 덕을 물려주십시오.
재물과 복은 아울러 따라갈 것입니다.
재물을 물려주면 덕과 재물이 모두 위험해지지요.
재물이라는 것은 온갖 죄악이 담기는 그릇입니다.
어린 아들이 많은 재물을 끼고 있는 것은 마치 사내가 예리한 칼을 지닌 것과 같습니다.
자기를 죽이고 남을 해치는 것을 모두 면치 못할 것입니다.
- 판투하, ‘칠극’에서


‘현재의 복을 누리는 것은 마치 등잔불 켜는 것과 같아
시간이 지날수록 기름이 줄어든다.
장래의 복을 배양하는 것은 마치 기름을 더 붓는 것과 같아
기름을 부어줄수록 그 등불은 오래간다.’
석시현문에 나오는 글입니다.
덕이 재물을 이긴다 했습니다.
재물 대신 덕을 물려주는 것이야말로 장래의 복을 배양하는 것이라 할 수 있습니다.

반응형
반응형

 

 

말문이 터지면서
속마음이 조금씩 드러나기 시작했습니다.
"언제부터인가 제가 이 세상에 혼자인 것만 같고
비참했어요. 그런데 어른이 되어 생각해 보니,
우리 가족은 내가 힘들 때 공감이란 것을 전혀
해주지 않았던 것 같아요. 자식이 힘들어하면
먼저 내 딸의 마음을 알아주고 편도 들어주고,
해야 하지 않나요? 그런데 한 번도
내 편을 안 들어줬어요. 엄마에게
너무 화가 나요."


- 배재현의《나는 가끔 엄마가 미워진다》 중에서 -


* 엄마는
전능자도 수호천사도 아닙니다.
그러나 아들딸들에게 엄마는 특별합니다.
어떤 경우에도 내 편이 되어주는 사람, 모두가
등 돌릴 때 마지막까지 남아 나를 지켜줄 사람,
말 못하는 내 마음을 알아주고 읽어줄 사람,
뜻 모를 외로움과 화를 풀어주는 사람도
엄마입니다. 엄마도 할 말이 있습니다.
그러나 궁극으로는 엄마가 전능자의
열쇠를 쥐고 있습니다.  

 

반응형

'아침편지' 카테고리의 다른 글

우리가 서점을 찾는 이유  (0) 2021.09.09
김치찌개  (0) 2021.09.08
진정성을 담은 고백  (0) 2021.09.06
나로부터 끝나고, 나로부터 시작한다  (0) 2021.09.06
15초 명상법  (0) 2021.09.03

+ Recent posts