양보의미
2025년 11월 5일 11:50분
package com.jesusbornd.genesis;
/*
* Genesis_13_Chapter_Lv1.java
* [KO] Lv1 입문(새 스타일): 창세기 13장 — 대표 구절 4개(KRV+ESV) + 한 줄 요약 + 한 줄 적용
* [EN] Lv1 Beginner (new style): Genesis 13 — 4 Key Verses (KRV+ESV) + One-line Summary + One-line Practice
*
* Variation (Java): LinkedHashMap로 순서 보존, StringBuilder 버퍼링 출력, switch 표현식으로 섹션 라벨 생성
*/
import java.util.LinkedHashMap;
import java.util.Map;
public class Genesis_13_Chapter_Lv1 {
// ---- Key verses in insertion order / 입력 순서 유지 ----
private static final LinkedHashMap<String, String[]> VERSES = new LinkedHashMap<>();
static {
VERSES.put("창세기 13:8–9 / Genesis 13:8–9",
new String[]{
"아브람이 롯에게 이르되… 우리가 서로 다투지 말자… 네 앞에 온 땅이 있지 아니하냐 네가 좌하면 나는 우하고 네가 우하면 나는 좌하리라",
"Then Abram said to Lot… Let there be no strife between you and me… Is not the whole land before you? If you take the left hand, then I will go to the right…"
});
VERSES.put("창세기 13:10–11 / Genesis 13:10–11",
new String[]{
"롯이 요단 들을 바라본즉… 여호와의 동산 같았더라… 이에 롯이… 요단 들을 택하고…",
"And Lot lifted up his eyes and saw that the Jordan Valley was well watered… like the garden of the LORD… So Lot chose for himself all the Jordan Valley…"
});
VERSES.put("창세기 13:14–15 / Genesis 13:14–15",
new String[]{
"롯이 떠난 후에 여호와께서 아브람에게 이르시되… 네가 보는 이 모든 땅을 내가 너와 네 자손에게 주리니 영원히 이르리라",
"The LORD said to Abram, after Lot had separated from him… all the land that you see I will give to you and to your offspring forever."
});
VERSES.put("창세기 13:18 / Genesis 13:18",
new String[]{
"아브람이… 헤브론의 마므레 상수리 수풀에 이르러 거주하며 거기서 여호와를 위하여 제단을 쌓았더라",
"So Abram moved his tent… to the oaks of Mamre, which are at Hebron, and there he built an altar to the LORD."
});
}
private static final String SUMMARY_KO =
"다툼을 피하려는 아브람의 겸손한 양보(13:8–9)와 눈에 보이는 비옥함을 택한 롯(13:10–11) 대비 속에, "
+ "하나님은 아브람에게 땅과 후손의 약속을 재확인하시고(13:14–15), 그는 제단으로 응답한다(13:18).";
private static final String SUMMARY_EN =
"Contrasting Abram’s peace-seeking humility (13:8–9) with Lot’s sight-based choice (13:10–11), "
+ "God reaffirms land and offspring to Abram (13:14–15), and he responds with an altar (13:18).";
private static final String PRACTICE_KO =
"오늘 ‘양보 1가지’로 평화를 세우고, 보이는 이익보다 약속을 붙드는 기도 1분, 제단(예배)의 마음으로 감사 1문장.";
private static final String PRACTICE_EN =
"Build peace with one act of deference; pray 1 minute to cling to promise over optics; write one line of altar-hearted thanks.";
private enum Section { TITLE, SUMMARY, PRACTICE }
private static String label(Section s) {
return switch (s) {
case TITLE -> "[창세기 13장 | KRV & ESV]\n[Genesis 13 | KRV & ESV]\nLv1: 분리의 지혜 - 시선과 약속 - 제단의 응답\n";
case SUMMARY -> "[요약 / Summary]";
case PRACTICE -> "[적용 / Practice]";
};
}
public static void main(String[] args) {
StringBuilder out = new StringBuilder();
// Title
out.append(label(Section.TITLE)).append('\n');
// Verses
for (Map.Entry<String, String[]> e : VERSES.entrySet()) {
out.append(e.getKey()).append('\n');
out.append("KRV: ").append(e.getValue()[0]).append('\n');
out.append("ESV: ").append(e.getValue()[1]).append('\n').append('\n');
}
// Summary
out.append(label(Section.SUMMARY)).append('\n');
out.append("KO: ").append(SUMMARY_KO).append('\n');
out.append("EN: ").append(SUMMARY_EN).append('\n').append('\n');
// Practice
out.append(label(Section.PRACTICE)).append('\n');
out.append("KO: ").append(PRACTICE_KO).append('\n');
out.append("EN: ").append(PRACTICE_EN).append('\n');
System.out.print(out.toString());
}
}
#### Genesis_13_Chapter_Lv1.py
#### [KO] 새 스타일: TypedDict로 타입 명시 + 템플릿 함수(format_map) + "\n".join 일괄 출력
#### [EN] New style: TypedDict typing + template format_map + join-based flush
from typing import TypedDict, List, Dict
class Verse(TypedDict):
ref: str
krv: str
esv: str
def title_lines() -> List[str]:
return [
"[창세기 13장 | KRV & ESV]",
"[Genesis 13 | KRV & ESV]",
"Lv1: Wisdom to Separate - Sight vs Promise - Altar Response",
""
]
def sample_verses() -> List[Verse]:
return [
{"ref": "창세기 13:8–9 / Genesis 13:8–9",
"krv": "아브람: 우리가 다투지 말자… 네가 좌하면 나는 우, 네가 우하면 나는 좌.",
"esv": "Abram: Let there be no strife… If you take the left, I will go right; if you take the right, I will go left."},
{"ref": "창세기 13:10–11 / Genesis 13:10–11",
"krv": "롯은 요단 들의 비옥함을 보고 선택함.",
"esv": "Lot lifted his eyes, saw the fertile Jordan Valley, and chose it for himself."},
{"ref": "창세기 13:14–15 / Genesis 13:14–15",
"krv": "여호와: 네가 보는 모든 땅을 너와 네 자손에게 영원히 주리라.",
"esv": "The LORD: All the land you see I give to you and your offspring forever."},
{"ref": "창세기 13:18 / Genesis 13:18",
"krv": "아브람, 헤브론에서 제단을 쌓음.",
"esv": "Abram built an altar to the LORD at Hebron."},
]
SUMMARY = {
"KO": ("아브람의 양보로 평화를 세우고(13:8–9), 롯은 눈에 보이는 비옥함을 따르나(13:10–11), "
"하나님은 약속을 재확인하시며(13:14–15), 아브람은 제단으로 응답한다(13:18)."),
"EN": ("Abram secures peace by yielding (13:8–9); Lot follows visible fertility (13:10–11); "
"God reaffirms promise (13:14–15); Abram answers with an altar (13:18).")
}
PRACTICE = {
"KO": "양보 1가지로 다툼을 멈추고, 약속을 붙드는 1분 기도, 감사 1문장.",
"EN": "Stop strife with one deference; pray 1 minute to hold the promise; write one line of thanks."
}
def block(label_ko: str, label_en: str, ko: str, en: str) -> List[str]:
tpl = "{label_ko}\nKO: {ko}\nEN: {en}\n"
return [tpl.format_map({"label_ko": label_ko, "ko": ko, "en": en}).rstrip()]
def render() -> str:
lines: List[str] = []
lines += title_lines()
for v in sample_verses():
lines.append(v["ref"])
lines.append(f'KRV: {v["krv"]}')
lines.append(f'ESV: {v["esv"]}')
lines.append("") # blank
lines += block("[요약 / Summary]", "[Summary]", SUMMARY["KO"], SUMMARY["EN"])
lines.append("") # spacing
lines += block("[적용 / Practice]", "[Practice]", PRACTICE["KO"], PRACTICE["EN"])
return "\n".join(lines)
def main() -> None:
print(render())
if __name__ == "__main__":
main()
← 목록으로
Comments
아브람의 양보는 손해가 아니라, 믿음의 선택이었네요(13:8–9). 롯은 눈에 보이는 들을 택했지만, 아브람은 약속을 바라보았습니다(13:10–15). 오늘 나는 제단으로 응답하며, 보이는 복보다 말씀의 약속을 붙듭니다. 🌿⛺