<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>chlwdgusdkzkdlqm</title>
    <link>https://fisherman5527.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Tue, 14 Apr 2026 19:07:43 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>fisherman5527</managingEditor>
    <item>
      <title>성경 암송</title>
      <link>https://fisherman5527.tistory.com/52</link>
      <description>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;UTF-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot; /&gt;
  &lt;title&gt;총신 신대원 성경 암송 연습기&lt;/title&gt;
  &lt;style&gt;
    body {
      font-family: 'Arial', sans-serif;
      text-align: center;
      margin: 20px;
    }
    .hidden {
      display: none;
    }
    .buttons button, #next-practice-button, #next-test-button, #restart-test {
      margin: 10px;
      padding: 10px 20px;
      font-size: 16px;
      background-color: blue;
      color: yellow;
      border: none;
      border-radius: 4px;
      cursor: pointer;
    }
    .verse-display {
      font-size: 1.2em;
      margin: 20px;
    }
    .input-area {
      width: 80%;
      padding: 10px;
      font-size: 1em;
    }
    .incorrect {
      color: red;
    }
    #footer {
      margin-top: 40px;
      font-weight: bold;
    }
  &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;div id=&quot;container&quot;&gt;
    &lt;h1&gt;총신 신대원 성경 암송 연습기&lt;/h1&gt;
    &lt;div class=&quot;buttons&quot;&gt;
      &lt;button onclick=&quot;showPractice()&quot;&gt;연습하기&lt;/button&gt;
      &lt;button onclick=&quot;showTest()&quot;&gt;테스트하기&lt;/button&gt;
    &lt;/div&gt;

    &lt;div id=&quot;practice-section&quot; class=&quot;hidden&quot;&gt;
      &lt;h2&gt;연습하기&lt;/h2&gt;
      &lt;div id=&quot;practice-verse&quot; class=&quot;verse-display&quot;&gt;&lt;/div&gt;
      &lt;textarea id=&quot;practice-input&quot; class=&quot;input-area&quot; rows=&quot;3&quot; placeholder=&quot;여기에 타이핑하세요...&quot;&gt;&lt;/textarea&gt;
      &lt;div id=&quot;practice-feedback&quot;&gt;&lt;/div&gt;
      &lt;button id=&quot;next-practice-button&quot; onclick=&quot;nextPractice()&quot;&gt;다음&lt;/button&gt;
    &lt;/div&gt;

    &lt;div id=&quot;test-section&quot; class=&quot;hidden&quot;&gt;
      &lt;h2&gt;테스트하기&lt;/h2&gt;
      &lt;div id=&quot;test-reference&quot; class=&quot;verse-display&quot;&gt;&lt;/div&gt;
      &lt;textarea id=&quot;test-input&quot; class=&quot;input-area&quot; rows=&quot;3&quot; placeholder=&quot;여기에 입력하세요...&quot;&gt;&lt;/textarea&gt;
      &lt;div id=&quot;test-feedback&quot;&gt;&lt;/div&gt;
      &lt;div id=&quot;test-instructions&quot;&gt;10문제 시험 후 결과가 공개됩니다.&lt;/div&gt;
      &lt;button id=&quot;next-test-button&quot; onclick=&quot;submitAndNextTest()&quot;&gt;제출 후 다음&lt;/button&gt;
      &lt;button id=&quot;restart-test&quot; class=&quot;hidden&quot; onclick=&quot;restartTest()&quot;&gt;다시 시작하기&lt;/button&gt;
    &lt;/div&gt;

    &lt;div id=&quot;footer&quot;&gt;만든이: 최정현 전도사&lt;/div&gt;
  &lt;/div&gt;

  &lt;script&gt;
    const verses = [
      { reference: &quot;요엘 2:28&quot;, text: &quot;그 후에 내가 내 영을 만민에게 부어 주리니 너희 자녀들이 장래 일을 말할 것이며 너희 늙은이는 꿈을 꾸며 너희 젊은이는 이상을 볼 것이며&quot; },
      { reference: &quot;호세아 6:1&quot;, text: &quot;오라 우리가 여호와께로 돌아가자 여호와께서 우리를 찢으셨으나 도로 낫게 하실 것이요 우리를 치셨으나 싸매어 주실 것임이라&quot; },
      { reference: &quot;에스라 7:10&quot;, text: &quot;에스라가 여호와의 율법을 연구하여 준행하며 율례와 규례를 이스라엘에게 가르치기로 결심하였었더라&quot; },
      { reference: &quot;미가 6:8&quot;, text: &quot;사람아 주께서 선한 것이 무엇임을 네게 보이셨나니 여호와께서 네게 구하시는 것은 오직 정의를 행하며 인자를 사랑하며 겸손하게 네 하나님과 함께 행하는 것이 아니냐&quot; }
      { reference: &quot;미가 6:8&quot;, text: `보이셨나니 여호와께서 네게 구하시는 것은 오직 정의를 행하며 인자를 사랑하며 겸손하게 네 하나님과 함께 행하는 것이 아니냐` },
  { reference: &quot;잠 9:10&quot;, text: `여호와를 경외하는 것이 지혜의 근본이요 거룩하신 자를 아는 것이 명철이니라` },
  { reference: &quot;삼상 12:23&quot;, text: `나는 너희를 위하여 기도하기를 쉬는 죄를 여호와 앞에 결단코 범하지 아니하고 선하고 의로운 길을 너희에게 가르칠 것인즉` },
  { reference: &quot;살후 2:3&quot;, text: `누가 어떻게 하여도 너희가 미혹되지 말라 먼저 배교하는 일이 있고 저 불법의 사람 곧 멸망의 아들이 나타나기 전에는 그 날이 이르지 아니하리니` },
  { reference: &quot;갈 2:20&quot;, text: `내가 그리스도와 함께 십자가에 못 박혔나니 그런즉 이제는 내가 사는 것이 아니요 오직 내 안에 그리스도께서 사시는 것이라 이제 내가 육체 가운데 사는 것은 나를 사랑하사 나를 위하여 자기 자신을 버리신 하나님의 아들을 믿는 믿음 안에서 사는 것이라` },
  { reference: &quot;사 7:14&quot;, text: `그러므로 주께서 친히 징조를 너희에게 주실 것이라 보라 처녀가 잉태하여 아들을 낳을 것이요 그의 이름을 임마누엘이라 하리라` },
  { reference: &quot;약 2:22&quot;, text: `네가 보거니와 믿음이 그의 행함과 함께 일하고 행함으로 믿음이 온전하게 되었느니라` },
  { reference: &quot;고후 5:15&quot;, text: `그가 모든 사람을 대신하여 죽으심은 살아 있는 자들로 하여금 다시는 그들 자신을 위하여 살지 않고 오직 그들을 대신하여 죽었다가 다시 살아나신 이를 위하여 살게 하려 함이라` },
  { reference: &quot;아 8:6&quot;, text: `너는 나를 도장 같이 마음에 품고 도장 같이 팔에 두라 사랑은 죽음 같이 강하고 질투는 스올 같이 잔인하며 불길 같이 일어나니 그 기세가 여호와의 불과 같으니라` },
  { reference: &quot;욥 1:21&quot;, text: `이르되 내가 모태에서 알몸으로 나왔사온즉 또한 알몸이 그리로 돌아가올지라 주신 이도 여호와시요 거두신 이도 여호와시오니 여호와의 이름이 찬송을 받으실지니이다 하고` },
  { reference: &quot;전 12:1&quot;, text: `너는 청년의 때에 너의 창조주를 기억하라 곧 곤고한 날이 이르기 전에, 나는 아무 낙이 없다고 할 해들이 가깝기 전에` },
  { reference: &quot;딤후 3:16&quot;, text: `모든 성경은 하나님의 감동으로 된 것으로 교훈과 책망과 바르게 함과 의로 교육하기에 유익하니` },
  { reference: &quot;갈 5:16&quot;, text: `내가 이르노니 너희는 성령을 따라 행하라 그리하면 육체의 욕심을 이루지 아니하리라` },
  { reference: &quot;고전 1:18&quot;, text: `십자가의 도가 멸망하는 자들에게는 미련한 것이요 구원을 받는 우리에게는 하나님의 능력이라` },
  { reference: &quot;롬 12:2&quot;, text: `너희는 이 세대를 본받지 말고 오직 마음을 새롭게 함으로 변화를 받아 하나님의 선하시고 기뻐하시고 온전하신 뜻이 무엇인지 분별하도록 하라` },
  { reference: &quot;신 6:4&quot;, text: `이스라엘아 들으라 우리 하나님 여호와는 오직 유일한 여호와이시니` },
  { reference: &quot;잠 3:5&quot;, text: `너는 마음을 다하여 여호와를 신뢰하고 네 명철을 의지하지 말라` },
  { reference: &quot;렘 5:1&quot;, text: `너희는 예루살렘 거리로 빨리 다니며 그 넓은 거리에서 찾아보고 알라 너희가 만일 정의를 행하며 진리를 구하는 자를 한 사람이라도 찾으면 내가 이 성읍을 용서하리라` },
  { reference: &quot;롬 8:29&quot;, text: `하나님이 미리 아신 자들을 또한 그 아들의 형상을 본받게 하기 위하여 미리 정하셨으니 이는 그로 많은 형제 중에서 맏아들이 되게 하려 하심이니라` },
  { reference: &quot;엡 2:20&quot;, text: `너희는 사도들과 선지자들의 터 위에 세우심을 입은 자라 그리스도 예수께서 친히 모퉁잇돌이 되셨느니라` },
  { reference: &quot;출 34:6&quot;, text: `여호와께서 그의 앞으로 지나시며 선포하시되 여호와라 여호와라 자비롭고 은혜롭고 노하기를 더디하고 인자와 진실이 많은 하나님이라` },
  { reference: &quot;딤전 4:16&quot;, text: `네가 네 자신과 가르침을 살펴 이 일을 계속하라 이것을 행함으로 네 자신과 네게 듣는 자를 구원하리라` },
  { reference: &quot;사 53:5&quot;, text: `그가 찔림은 우리의 허물 때문이요 그가 상함은 우리의 죄악 때문이라 그가 징계를 받으므로 우리는 평화를 누리고 그가 채찍에 맞으므로 우리는 나음을 받았도다` },
  { reference: &quot;빌 4:9&quot;, text: `너희는 내게 배우고 받고 듣고 본 바를 행하라 그리하면 평강의 하나님이 너희와 함께 계시리라` },
  { reference: &quot;눅 9:23&quot;, text: `또 무리에게 이르시되 아무든지 나를 따라오려거든 자기를 부인하고 날마다 제 십자가를 지고 나를 따를 것이니라` },
  { reference: &quot;시 1:1&quot;, text: `복 있는 사람은 악인들의 꾀를 따르지 아니하며 죄인들의 길에 서지 아니하며 오만한 자들의 자리에 앉지 아니하고` },
  { reference: &quot;살전 5:14&quot;, text: `또 형제들아 너희를 권면하노니 게으른 자들을 권계하며 마음이 약한 자들을 격려하고 힘이 없는 자들을 붙들어 주며 모든 사람에게 오래 참으라` },
  { reference: &quot;사 9:6&quot;, text: `이는 한 아기가 우리에게 났고 한 아들을 우리에게 주신 바 되었는데 그의 어깨에는 정사를 메었고 그의 이름은 기묘자라, 모사라, 전능하신 하나님이라, 영존하시는 아버지라, 평강의 왕이라 할 것임이라` },
  { reference: &quot;삼상 15:22&quot;, text: `사무엘이 이르되 여호와께서 번제와 다른 제사를 그의 목소리를 청종하는 것을 좋아하심 같이 좋아하시겠나이까 순종이 제사보다 낫고 듣는 것이 숫양의 기름보다 나으니` },
  { reference: &quot;마 16:18&quot;, text: `또 내가 네게 이르노니 너는 베드로라 내가 이 반석 위에 내 교회를 세우리니 음부의 권세가 이기지 못하리라` },
  { reference: &quot;막 10:45&quot;, text: `인자가 온 것은 섬김을 받으려 함이 아니라 도리어 섬기려 하고 자기 목숨을 많은 사람의 대속물로 주려 함이니라` },
  { reference: &quot;롬 6:10&quot;, text: `그가 죽으심은 죄에 대하여 단번에 죽으심이요 그가 살아 계심은 하나님께 대하여 살아 계심이니` },
  { reference: &quot;히 4:15&quot;, text: `우리에게 있는 대제사장은 우리의 연약함을 동정하지 못하실 이가 아니요 모든 일에 우리와 똑같이 시험을 받으신 이로되 죄는 없으시니라` },
  { reference: &quot;골 1:27&quot;, text: `하나님이 그들로 하여금 이 비밀의 영광이 이방인 가운데 얼마나 풍성한지를 알게 하려 하심이라 이 비밀은 너희 안에 계신 그리스도시니 곧 영광의 소망이니라` },
  { reference: &quot;계 1:8&quot;, text: `주 하나님이 이르시되 나는 알파와 오메가라 이제도 있고 전에도 있었고 장차 올 자요 전능한 자라 하시더라` },
  { reference: &quot;창 1:26&quot;, text: `하나님이 이르시되 우리의 형상을 따라 우리의 모양대로 우리가 사람을 만들고 그들로 바다의 물고기와 하늘의 새와 가축과 온 땅과 땅에 기는 모든 것을 다스리게 하자 하시고` },
  { reference: &quot;말 4:2&quot;, text: `내 이름을 경외하는 너희에게는 공의로운 해가 떠올라서 치료하는 광선을 비추리니 너희가 나가서 외양간에서 나온 송아지 같이 뛰리라` },
  { reference: &quot;벧전 2:9&quot;, text: `그러나 너희는 택하신 족속이요 왕 같은 제사장들이요 거룩한 나라요 그의 소유가 된 백성이니 이는 너희를 어두운 데서 불러 내어 그의 기이한 빛에 들어가게 하신 이의 아름다운 덕을 선포하게 하려 하심이라` },
  { reference: &quot;요 15:5&quot;, text: `나는 포도나무요 너희는 가지라 그가 내 안에, 내가 그 안에 거하면 사람이 열매를 많이 맺나니 나를 떠나서는 너희가 아무 것도 할 수 없음이라` },
  { reference: &quot;행 20:24&quot;, text: `내가 달려갈 길과 주 예수께 받은 사명 곧 하나님의 은혜의 복음을 증언하는 일을 마치려 함에는 나의 생명조차 조금도 귀한 것으로 여기지 아니하노라` },
  { reference: &quot;요일 1:3&quot;, text: `우리가 보고 들은 바를 너희에게도 전함은 너희로 우리와 사귐이 있게 하려 함이니 우리의 사귐은 아버지와 그의 아들 예수 그리스도와 더불어 누림이라` },
  { reference: &quot;슥 9:9&quot;, text: `시온의 딸아 크게 기뻐할지어다 예루살렘의 딸아 즐거이 부를지어다 보라 네 왕이 네게 임하시나니 그는 공의로우시며 구원을 베푸시며 겸손하여서 나귀를 타시나니 나귀의 작은 것 곧 나귀 새끼니라` },
  { reference: &quot;겔 36:26&quot;, text: `또 새 영을 너희 속에 두고 새 마음을 너희에게 주되 너희 육신에서 굳은 마음을 제거하고 부드러운 마음을 줄 것이며` },
];

    let currentPracticeIndex = 0;
    let currentTestVerses = [];
    let currentTestIndex = 0;
    let correctAnswers = 0;
    let results = [];

    function showPractice() {
      document.getElementById('practice-section').classList.remove('hidden');
      document.getElementById('test-section').classList.add('hidden');
      currentPracticeIndex = 0;
      nextPractice();
    }

    function showTest() {
      document.getElementById('test-section').classList.remove('hidden');
      document.getElementById('practice-section').classList.add('hidden');
      startTest();
    }

    function nextPractice() {
      if (currentPracticeIndex &gt;= verses.length) currentPracticeIndex = 0;
      const verse = verses[currentPracticeIndex];
      document.getElementById('practice-verse').innerText = verse.reference + &quot;: &quot; + verse.text;
      document.getElementById('practice-input').value = &quot;&quot;;
      document.getElementById('practice-feedback').innerText = &quot;&quot;;
      document.getElementById('practice-input').focus();
      currentPracticeIndex++;
    }

    function createBlankedVerse(verseText) {
      const words = verseText.split(&quot; &quot;);
      const totalWords = words.length;
      const revealCount = Math.max(1, Math.floor(totalWords * 0.1));
      const blankedWords = words.map((word, idx) =&gt; idx &lt; revealCount ? word : &quot;___&quot;);
      return {
        blankedText: blankedWords.join(&quot; &quot;),
        originalText: verseText
      };
    }

    function startTest() {
      currentTestVerses = [];
      correctAnswers = 0;
      currentTestIndex = 0;
      results = [];
      document.getElementById('restart-test').classList.add('hidden');

      for (let i = 0; i &lt; 10; i++) {
        const randomVerse = verses[Math.floor(Math.random() * verses.length)];
        currentTestVerses.push(randomVerse);
      }
      nextTest();
    }

    function nextTest() {
      if (currentTestIndex &gt;= currentTestVerses.length) {
        finishTest();
        return;
      }
      const verse = currentTestVerses[currentTestIndex];
      const { blankedText, originalText } = createBlankedVerse(verse.text);
      verse.blankedText = blankedText;
      verse.originalText = originalText;

      document.getElementById('test-reference').innerHTML = `&lt;div&gt;${verse.reference}&lt;/div&gt;&lt;div&gt;${blankedText}&lt;/div&gt;`;
      document.getElementById('test-input').value = &quot;&quot;;
      document.getElementById('test-feedback').innerHTML = &quot;&quot;;
      document.getElementById('test-input').focus();
    }

    function levenshteinDistance(a, b) {
      const dp = Array.from({ length: a.length + 1 }, () =&gt; Array(b.length + 1).fill(0));
      for (let i = 0; i &lt;= a.length; i++) dp[i][0] = i;
      for (let j = 0; j &lt;= b.length; j++) dp[0][j] = j;
      for (let i = 1; i &lt;= a.length; i++) {
        for (let j = 1; j &lt;= b.length; j++) {
          if (a[i - 1] === b[j - 1]) {
            dp[i][j] = dp[i - 1][j - 1];
          } else {
            dp[i][j] = 1 + Math.min(dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]);
          }
        }
      }
      return dp[a.length][b.length];
    }

    function submitAndNextTest() {
      const userInput = document.getElementById('test-input').value.trim();
      const verse = currentTestVerses[currentTestIndex];
      const normalize = str =&gt; str.replace(/\s+/g, '').toLowerCase();
      const isSimilar = (a, b) =&gt; {
        const distance = levenshteinDistance(normalize(a), normalize(b));
        const maxLen = Math.max(normalize(a).length, normalize(b).length);
        return (1 - distance / maxLen) &gt;= 0.9;
      };

      const feedback = {
        reference: verse.reference,
        correct: isSimilar(userInput, verse.text),
        userInput: userInput,
        correctText: verse.text
      };

      if (feedback.correct) correctAnswers++;
      results.push(feedback);
      currentTestIndex++;
      nextTest();
    }

    function finishTest() {
      let resultHTML = `&lt;div&gt;테스트가 끝났습니다. ${correctAnswers}/10 정답을 맞추셨습니다.&lt;/div&gt;`;
      results.forEach(result =&gt; {
        if (result.correct) {
          resultHTML += `&lt;div&gt;${result.reference}: ${result.correctText}&lt;/div&gt;`;
        } else {
          resultHTML += `&lt;div&gt;&lt;span class=&quot;incorrect&quot;&gt;${result.reference}: ${result.correctText}&lt;/span&gt;&lt;br&gt;입력: &lt;span class=&quot;incorrect&quot;&gt;${result.userInput}&lt;/span&gt;&lt;/div&gt;`;
        }
      });
      document.getElementById('test-feedback').innerHTML = resultHTML;
      document.getElementById('restart-test').classList.remove('hidden');
    }

    function restartTest() {
      startTest();
    }

    document.getElementById('practice-input').addEventListener('keydown', function (event) {
      if (event.key === 'Enter') {
        event.preventDefault();
        nextPractice();
      }
    });

    document.getElementById('test-input').addEventListener('keydown', function (event) {
      if (event.key === 'Enter') {
        event.preventDefault();
        submitAndNextTest();
      }
    });
  &lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <author>fisherman5527</author>
      <guid isPermaLink="true">https://fisherman5527.tistory.com/52</guid>
      <comments>https://fisherman5527.tistory.com/52#entry52comment</comments>
      <pubDate>Tue, 14 Oct 2025 13:50:26 +0900</pubDate>
    </item>
  </channel>
</rss>