{"id":4133,"date":"2026-06-07T10:57:23","date_gmt":"2026-06-07T10:57:23","guid":{"rendered":"https:\/\/tian-jian.org\/tj-field-school\/?post_type=toolbox&#038;p=4133"},"modified":"2026-06-07T10:58:48","modified_gmt":"2026-06-07T10:58:48","slug":"marinetraffic-%e8%88%b9%e5%8f%aa%e8%bf%bd%e8%b8%aa","status":"publish","type":"toolbox","link":"https:\/\/tian-jian.org\/tj-field-school\/toolbox\/marinetraffic-%e8%88%b9%e5%8f%aa%e8%bf%bd%e8%b8%aa\/","title":{"rendered":"MarineTraffic \u8239\u8236\u8ffd\u8e2a"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">MarineTraffic \u662f\u6d77\u4e8b\u8abf\u67e5\u5831\u5c0e\u7684\u57fa\u790e\u5de5\u5177\uff0c\u5ee3\u6cdb\u904b\u7528\u65bc\u8ffd\u8e64\u5236\u88c1\u898f\u907f\u3001\u975e\u6cd5\u6355\u9b5a\u3001\u6d77\u4e0a\u5f37\u8feb\u52de\u52d5\u3001\u74b0\u5883\u72af\u7f6a\u3001\u96e3\u6c11\u8239\u96bb\u52d5\u614b\u53ca\u6d77\u4e0a\u4e8b\u6545\u8abf\u67e5\u3002\u7121\u8ad6\u662f\u76e3\u6e2c\u5317\u97d3\u6cb9\u8f2a\u7684\u300c\u6697\u8239\u300d\u884c\u70ba\u3001\u8ffd\u8e64\u4fc4\u7f85\u65af\u300c\u5f71\u5b50\u8239\u968a\u300d\u904b\u8f38\u88ab\u76dc\u70cf\u514b\u862d\u7ce7\u98df\uff0c\u9084\u662f\u63ed\u9732\u6f01\u8239\u4e0a\u7684\u4eba\u53e3\u8ca9\u904b\u8207\u5974\u5f79\u884c\u70ba\uff0cMarineTraffic \u7684 AIS \u6578\u64da\u90fd\u80fd\u63d0\u4f9b\u95dc\u9375\u7684\u6642\u9593\u8207\u4f4d\u7f6e\u8b49\u64da\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin=\"\">\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Noto+Serif+TC:wght@400;600;700&amp;family=Noto+Sans+TC:wght@400;500;600&amp;family=IBM+Plex+Mono:wght@500;600&amp;display=swap\" rel=\"stylesheet\">\n\n<div id=\"tjfs-slider-wrap\">\n\n<style>\n#tjfs-slider-wrap {\n  --teal:      #3dabb1;\n  --teal-dark: #2d8389;\n  --gold:      #ae8c11;\n  --gold-bg:   rgba(174,140,17,0.92);\n  --text:      #1e1e1e;\n  --muted:     #666;\n  --border:    #e2e2da;\n  --bg-card:   #ffffff;\n  --bg-foot:   #fafaf7;\n  --radius:    4px;\n  font-family: 'Noto Sans TC', sans-serif;\n  max-width: 960px;\n  margin: 0 auto;\n  box-sizing: border-box;\n}\n#tjfs-slider-wrap *, #tjfs-slider-wrap *::before, #tjfs-slider-wrap *::after {\n  box-sizing: border-box;\n}\n#tjfs-card {\n  background: var(--bg-card);\n  border-radius: var(--radius);\n  box-shadow: 0 2px 20px rgba(0,0,0,0.11);\n  overflow: hidden;\n}\n#tjfs-header {\n  display: flex;\n  align-items: center;\n  gap: 16px;\n  padding: 16px 22px;\n  border-bottom: 1px solid var(--border);\n  flex-shrink: 0;\n  flex-wrap: nowrap;\n  overflow: hidden;\n}\n#tjfs-tag {\n  display: inline-block;\n  background: var(--teal);\n  color: #fff;\n  font-family: 'IBM Plex Mono', monospace;\n  font-size: 20px;\n  font-weight: 500;\n  letter-spacing: 0.18em;\n  text-transform: uppercase;\n  padding: 8px 16px 7px;\n  border-radius: 3px;\n  flex-shrink: 0;\n  line-height: 1.4;\n}\n#tjfs-title {\n  font-family: 'Noto Serif TC', serif;\n  font-size: 24px;\n  font-weight: 700;\n  color: var(--text);\n  line-height: 1.2;\n  margin: 0;\n  white-space: nowrap;\n}\n#tjfs-subtitle {\n  font-size: 17px;\n  color: var(--muted);\n  margin: 0;\n  line-height: 1.4;\n  font-weight: 300;\n  letter-spacing: 0.01em;\n  display: inline;\n}\n#tjfs-progress-track {\n  height: 3px;\n  background: #dde8e8;\n}\n#tjfs-progress-fill {\n  height: 100%;\n  background: var(--teal);\n  transition: width 0.35s ease;\n}\n#tjfs-body {\n  display: flex;\n  transition: opacity 0.2s ease;\n}\n#tjfs-body.tjfs-fading { opacity: 0; }\n#tjfs-img-pane {\n  flex: 0 0 58%;\n  position: relative;\n  background: #111;\n  cursor: zoom-in;\n  overflow: hidden;\n}\n#tjfs-img-pane img {\n  width: 100%;\n  height: 100%;\n  object-fit: cover;\n  display: block;\n  transition: opacity 0.3s ease;\n}\n#tjfs-img-pane img.tjfs-unloaded { opacity: 0; }\n#tjfs-step-badge {\n  position: absolute;\n  top: 12px;\n  left: 12px;\n  background: var(--teal);\n  color: #fff;\n  font-family: 'IBM Plex Mono', monospace;\n  font-size: 10px;\n  font-weight: 600;\n  letter-spacing: 0.08em;\n  padding: 3px 10px;\n  border-radius: 2px;\n  text-transform: uppercase;\n  z-index: 2;\n}\n#tjfs-callout {\n  position: absolute;\n  bottom: 14px;\n  right: 14px;\n  background: var(--gold-bg);\n  color: #fff;\n  font-size: 12px;\n  font-weight: 500;\n  line-height: 1.5;\n  padding: 6px 11px;\n  border-radius: 3px;\n  max-width: 68%;\n  z-index: 2;\n  display: none;\n}\n#tjfs-callout.tjfs-visible { display: block; }\n#tjfs-text-pane {\n  flex: 1;\n  display: flex;\n  flex-direction: column;\n  padding: 20px 20px 16px;\n  border-left: 1px solid var(--border);\n  overflow: hidden;\n}\n#tjfs-step-label {\n  font-family: 'IBM Plex Mono', monospace;\n  font-size: 10px;\n  font-weight: 600;\n  color: var(--teal);\n  letter-spacing: 0.12em;\n  text-transform: uppercase;\n  margin-bottom: 10px;\n}\n#tjfs-slide-text {\n  font-size: 14px;\n  line-height: 1.85;\n  color: var(--text);\n  overflow-y: auto;\n  flex: 1;\n  padding-right: 4px;\n}\n#tjfs-slide-text::-webkit-scrollbar { width: 3px; }\n#tjfs-slide-text::-webkit-scrollbar-track { background: #f0f0ea; }\n#tjfs-slide-text::-webkit-scrollbar-thumb { background: var(--teal); border-radius: 2px; }\n#tjfs-slider-wrap .ht { color: var(--teal-dark); font-weight: 600; }\n#tjfs-slider-wrap .hg { color: var(--gold); font-weight: 600; }\n#tjfs-footer {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  padding: 10px 18px;\n  border-top: 1px solid var(--border);\n  background: var(--bg-foot);\n  flex-wrap: wrap;\n  gap: 8px;\n}\n#tjfs-dots {\n  display: flex;\n  gap: 6px;\n  flex-wrap: wrap;\n}\n.tjfs-dot {\n  width: 9px; height: 9px;\n  border-radius: 50%;\n  border: none;\n  background: #ccc;\n  cursor: pointer;\n  padding: 0;\n  transition: background 0.2s, transform 0.2s;\n}\n.tjfs-dot.tjfs-active  { background: var(--teal); transform: scale(1.3); }\n.tjfs-dot.tjfs-done    { background: var(--teal); opacity: 0.5; }\n#tjfs-nav {\n  display: flex;\n  align-items: center;\n  gap: 8px;\n}\n#tjfs-counter {\n  font-family: 'IBM Plex Mono', monospace;\n  font-size: 11px;\n  color: var(--muted);\n  min-width: 42px;\n  text-align: center;\n}\n.tjfs-btn {\n  border: none;\n  padding: 6px 14px;\n  font-size: 13px;\n  font-weight: 600;\n  border-radius: 3px;\n  cursor: pointer;\n  transition: background 0.2s, opacity 0.2s;\n  font-family: 'Noto Sans TC', sans-serif;\n  letter-spacing: 0.02em;\n}\n.tjfs-btn:disabled { opacity: 0.3; cursor: default; }\n#tjfs-btn-download { background: var(--gold); color: #fff; }\n#tjfs-btn-download:hover { background: #8f7210; }\n#tjfs-btn-prev { background: #fff; color: var(--teal); border: 1.5px solid var(--teal); }\n#tjfs-btn-prev:hover:not(:disabled) { background: #eef7f8; }\n#tjfs-btn-next { background: var(--teal); color: #fff; }\n#tjfs-btn-next:hover:not(:disabled) { background: var(--teal-dark); }\n#tjfs-lightbox {\n  display: none;\n  position: fixed;\n  inset: 0;\n  background: rgba(0,0,0,0.88);\n  z-index: 999999;\n  align-items: center;\n  justify-content: center;\n  cursor: zoom-out;\n}\n#tjfs-lightbox.tjfs-open { display: flex; }\n#tjfs-lightbox img {\n  max-width: 92vw;\n  max-height: 90vh;\n  border-radius: 3px;\n  box-shadow: 0 8px 40px rgba(0,0,0,0.5);\n}\n#tjfs-lb-close {\n  position: absolute;\n  top: 18px; right: 22px;\n  color: #fff;\n  font-size: 28px;\n  cursor: pointer;\n  line-height: 1;\n  opacity: 0.8;\n  background: none;\n  border: none;\n  padding: 0;\n}\n#tjfs-lb-close:hover { opacity: 1; }\n#tjfs-modal-overlay {\n  display: none;\n  position: fixed;\n  inset: 0;\n  background: rgba(0,0,0,0.55);\n  z-index: 99999;\n  align-items: center;\n  justify-content: center;\n}\n#tjfs-modal-overlay.tjfs-open { display: flex; }\n#tjfs-modal-box {\n  background: #fff;\n  border-radius: 6px;\n  padding: 28px 28px 22px;\n  max-width: 540px;\n  width: 92vw;\n  box-shadow: 0 8px 40px rgba(0,0,0,0.22);\n  position: relative;\n}\n#tjfs-modal-box h3 {\n  font-family: 'Noto Serif TC', serif;\n  font-size: 17px;\n  color: var(--text);\n  margin: 0 0 6px;\n}\n#tjfs-modal-box p {\n  font-size: 13px;\n  color: var(--muted);\n  margin: 0 0 14px;\n}\n#tjfs-modal-text {\n  width: 100%;\n  height: 200px;\n  font-size: 13px;\n  line-height: 1.7;\n  padding: 10px;\n  border: 1.5px solid var(--border);\n  border-radius: 3px;\n  resize: none;\n  font-family: 'Noto Sans TC', sans-serif;\n  color: var(--text);\n}\n#tjfs-modal-footer {\n  display: flex;\n  gap: 10px;\n  margin-top: 14px;\n  justify-content: flex-end;\n}\n#tjfs-modal-copy {\n  background: var(--teal);\n  color: #fff;\n  border: none;\n  padding: 7px 18px;\n  border-radius: 3px;\n  font-size: 13px;\n  font-weight: 600;\n  cursor: pointer;\n  font-family: 'Noto Sans TC', sans-serif;\n}\n#tjfs-modal-copy:hover { background: var(--teal-dark); }\n#tjfs-modal-close-btn {\n  background: #fff;\n  color: var(--muted);\n  border: 1.5px solid var(--border);\n  padding: 7px 16px;\n  border-radius: 3px;\n  font-size: 13px;\n  cursor: pointer;\n  font-family: 'Noto Sans TC', sans-serif;\n}\n#tjfs-modal-close-btn:hover { background: #f5f5f0; }\n<\/style>\n\n<div id=\"tjfs-card\">\n  <div id=\"tjfs-header\">\n    <span id=\"tjfs-tag\">\u6307\u5357<\/span>\n    <span id=\"tjfs-title\">MarineTraffic<\/span>\n    <span id=\"tjfs-subtitle\">\u5168\u7403\u8239\u8236\u5373\u6642\u8ffd\u8e64\u5e73\u53f0\uff0c\u900f\u904eAIS\u4fe1\u865f\u76e3\u6e2c\u8239\u8236\u52d5\u614b<\/span>\n  <\/div>\n  <div id=\"tjfs-progress-track\">\n    <div id=\"tjfs-progress-fill\"><\/div>\n  <\/div>\n  <div id=\"tjfs-body\">\n    <div id=\"tjfs-img-pane\">\n      <img decoding=\"async\" id=\"tjfs-slide-img\" src=\"\" alt=\"\">\n      <div id=\"tjfs-step-badge\"><\/div>\n      <div id=\"tjfs-callout\"><\/div>\n    <\/div>\n    <div id=\"tjfs-text-pane\">\n      <div id=\"tjfs-step-label\"><\/div>\n      <div id=\"tjfs-slide-text\"><\/div>\n    <\/div>\n  <\/div>\n  <div id=\"tjfs-footer\">\n    <div id=\"tjfs-dots\"><\/div>\n    <div id=\"tjfs-nav\">\n      <span id=\"tjfs-counter\"><\/span>\n      <button class=\"tjfs-btn\" id=\"tjfs-btn-download\">\u4e0b\u8f09\u8aaa\u660e\u6587\u5b57<\/button>\n      <button class=\"tjfs-btn\" id=\"tjfs-btn-prev\">\u2190 \u4e0a\u4e00\u6b65<\/button>\n      <button class=\"tjfs-btn\" id=\"tjfs-btn-next\">\u4e0b\u4e00\u6b65 \u2192<\/button>\n    <\/div>\n  <\/div>\n<\/div>\n\n<div id=\"tjfs-lightbox\">\n  <button id=\"tjfs-lb-close\">\u2715<\/button>\n  <img decoding=\"async\" id=\"tjfs-lb-img\" src=\"\" alt=\"\">\n<\/div>\n\n<div id=\"tjfs-modal-overlay\">\n  <div id=\"tjfs-modal-box\">\n    <h3>\u4e0b\u8f09\u8aaa\u660e\u6587\u5b57<\/h3>\n    <p>\u8907\u88fd\u4ee5\u4e0b\u6587\u5b57\uff0c\u53ef\u8cbc\u5165\u6587\u4ef6\u6216\u7ffb\u8b6f\u5de5\u5177\u4f7f\u7528\u3002<\/p>\n    <textarea id=\"tjfs-modal-text\" readonly=\"\"><\/textarea>\n    <div id=\"tjfs-modal-footer\">\n      <button id=\"tjfs-modal-close-btn\">\u95dc\u9589<\/button>\n      <button id=\"tjfs-modal-copy\">\u8907\u88fd\u5168\u6587<\/button>\n    <\/div>\n  <\/div>\n<\/div>\n\n<\/div>\n\n<script>\n(function() {\n\nvar TJFS_SLIDES = [\n  {\n    label: \"STEP 01\",\n    badge: \"\u6b65\u9a5f 1 \u2500\u2500 \u8a3b\u518a\u5e33\u6236\",\n    img: \"https:\/\/tian-jian.org\/tj-field-school\/wp-content\/uploads\/2026\/06\/Screenshot-2026-03-17-at-22.34.34-scaled-1.png\",\n    callout: \"\u25bc \u9ede\u64ca\u300cSign Up\u300d\u8a3b\u518a\",\n    html: '\u524d\u5f80 <span class=\"ht\">marinetraffic.com<\/span>\uff0c\u9032\u5165\u5168\u7403\u6700\u5927\u7684\u8239\u8236\u8ffd\u8e64\u5e73\u53f0\u3002\u9996\u9801\u4e92\u52d5\u5f0f\u5730\u5716\u986f\u793a\u5168\u7403\u8239\u8236\u5206\u5e03\uff0c\u9ede\u64ca\u4efb\u610f\u8239\u8236\u5716\u6a19\u67e5\u770b\u57fa\u672c\u4fe1\u606f\u3002\u53f3\u4e0a\u89d2\u300cSign Up\u300d\u514d\u8cbb\u8a3b\u518a\u89e3\u9396\u8239\u8236\u641c\u7d22\u3001\u8266\u968a\u8ffd\u8e64\u53ca\u4e09\u5929\u6b77\u53f2\u822a\u8de1\u529f\u80fd\u3002',\n    plain: '\u6b65\u9a5f\u4e00\uff1a\u9032\u5165\u9996\u9801\u8207\u8a3b\u518a\\n\\n\u524d\u5f80 marinetraffic.com\uff0c\u9032\u5165\u5168\u7403\u6700\u5927\u7684\u8239\u8236\u8ffd\u8e64\u5e73\u53f0\u3002\u9996\u9801\u4e92\u52d5\u5f0f\u5730\u5716\u986f\u793a\u5168\u7403\u8239\u8236\u5206\u5e03\uff0c\u9ede\u64ca\u4efb\u610f\u8239\u8236\u5716\u6a19\u67e5\u770b\u57fa\u672c\u4fe1\u606f\u3002\u53f3\u4e0a\u89d2\u300cSign Up\u300d\u514d\u8cbb\u8a3b\u518a\u89e3\u9396\u8239\u8236\u641c\u7d22\u3001\u8266\u968a\u8ffd\u8e64\u53ca\u4e09\u5929\u6b77\u53f2\u822a\u8de1\u529f\u80fd\u3002'\n  },\n  {\n    label: \"STEP 02\",\n    badge: \"\u6b65\u9a5f 2 \u2500\u2500 \u641c\u7d22\u8239\u8236\",\n    img: \"https:\/\/tian-jian.org\/tj-field-school\/wp-content\/uploads\/2026\/06\/Screenshot-2026-03-17-at-22.43.29-scaled-1.png\",\n    callout: \"\u25bc \u9ede\u64ca\u300cVessels\u300d\u9078\u55ae\",\n    html: '\u9ede\u64ca\u9802\u90e8\u300c<span class=\"ht\">Vessels<\/span>\u300d\u9078\u55ae\u9032\u5165\u8239\u8236\u641c\u7d22\u9801\u9762\u3002\u53ef\u900f\u904e\u8239\u8236\u540d\u7a31\u3001<span class=\"hg\">IMO\u7de8\u865f<\/span>\u3001MMSI\u7de8\u865f\u6216\u547c\u865f\u641c\u7d22\uff0c\u7d50\u5408\u5678\u4f4d\u3001\u8239\u65d7\u570b\u3001\u8239\u8236\u985e\u578b\u7be9\u9078\u3002IMO\u7de8\u865f\u7d42\u8eab\u4e0d\u8b8a\uff0c\u5373\u4f7f\u66f4\u540d\u6216\u66f4\u63db\u8239\u65d7\u570b\u4ecd\u53ef\u8ffd\u8e64\u6b77\u53f2\u3002',\n    plain: '\u6b65\u9a5f\u4e8c\uff1a\u641c\u7d22\u76ee\u6a19\u8239\u8236\\n\\n\u9ede\u64ca\u9802\u90e8\u300cVessels\u300d\u9078\u55ae\u9032\u5165\u8239\u8236\u641c\u7d22\u9801\u9762\u3002\u53ef\u900f\u904e\u8239\u8236\u540d\u7a31\u3001IMO\u7de8\u865f\u3001MMSI\u7de8\u865f\u6216\u547c\u865f\u641c\u7d22\uff0c\u7d50\u5408\u5678\u4f4d\u3001\u8239\u65d7\u570b\u3001\u8239\u8236\u985e\u578b\u7be9\u9078\u3002IMO\u7de8\u865f\u7d42\u8eab\u4e0d\u8b8a\uff0c\u5373\u4f7f\u66f4\u540d\u6216\u66f4\u63db\u8239\u65d7\u570b\u4ecd\u53ef\u8ffd\u8e64\u6b77\u53f2\u3002'\n  },\n  {\n    label: \"STEP 03\",\n    badge: \"\u6b65\u9a5f 3 \u2500\u2500 \u67e5\u770b\u8a73\u60c5\",\n    img: \"https:\/\/tian-jian.org\/tj-field-school\/wp-content\/uploads\/2026\/06\/Screenshot-2026-03-17-at-22.46.36-scaled-1.png\",\n    callout: \"\u25bc \u9ede\u64ca\u300cPast Track\u300d\",\n    html: '\u9ede\u64ca\u641c\u7d22\u7d50\u679c\u9032\u5165\u8239\u8236\u8a73\u60c5\u9801\u9762\u3002\u986f\u793a\u8239\u8236\u7167\u7247\u3001\u5efa\u9020\u5e74\u4efd\u8207\u5730\u9ede\u3001\u8239\u6771\u8207\u71df\u904b\u5546\u4fe1\u606f\u3001\u5c3a\u5bf8\u8207\u8f09\u91cd\u5678\u4f4d\u3001\u51fa\u767c\u6e2f\u8207\u76ee\u7684\u6e2f\u3001\u5373\u6642\u901f\u5ea6\u8207\u5403\u6c34\u6df1\u5ea6\u3002\u9ede\u64ca\u300c<span class=\"ht\">Past Track<\/span>\u300d\u53ef\u67e5\u770b\u8fd1\u671f\u822a\u8de1\uff0c\u514d\u8cbb\u5e33\u6236\u53ef\u986f\u793a\u4e09\u81f3\u56db\u5929\u5167\u79fb\u52d5\u8ecc\u8de1\u3002',\n    plain: '\u6b65\u9a5f\u4e09\uff1a\u67e5\u770b\u8239\u8236\u8a73\u60c5\\n\\n\u9ede\u64ca\u641c\u7d22\u7d50\u679c\u9032\u5165\u8239\u8236\u8a73\u60c5\u9801\u9762\u3002\u986f\u793a\u8239\u8236\u7167\u7247\u3001\u5efa\u9020\u5e74\u4efd\u8207\u5730\u9ede\u3001\u8239\u6771\u8207\u71df\u904b\u5546\u4fe1\u606f\u3001\u5c3a\u5bf8\u8207\u8f09\u91cd\u5678\u4f4d\u3001\u51fa\u767c\u6e2f\u8207\u76ee\u7684\u6e2f\u3001\u5373\u6642\u901f\u5ea6\u8207\u5403\u6c34\u6df1\u5ea6\u3002\u9ede\u64ca\u300cPast Track\u300d\u53ef\u67e5\u770b\u8fd1\u671f\u822a\u8de1\uff0c\u514d\u8cbb\u5e33\u6236\u53ef\u986f\u793a\u4e09\u81f3\u56db\u5929\u5167\u79fb\u52d5\u8ecc\u8de1\u3002'\n  },\n  {\n    label: \"STEP 04\",\n    badge: \"\u6b65\u9a5f 4 \u2500\u2500 \u8b58\u5225\u53ef\u7591\u884c\u70ba\",\n    img: \"https:\/\/tian-jian.org\/tj-field-school\/wp-content\/uploads\/2026\/06\/Screenshot-2026-03-17-at-22.46.36-scaled-1.png\",\n    callout: \"\",\n    html: '\u8abf\u67e5\u8239\u8236\u9700\u7559\u610f\u5371\u96aa\u4fe1\u865f\uff1a\u300c<span class=\"hg\">\u6697\u8239<\/span>\u300d\uff08\u95dc\u9589AIS\u767c\u5c04\u5668\uff0c\u822a\u8de1\u51fa\u73fe\u65b7\u9ede\uff09\u3001\u983b\u7e41\u66f4\u63db\u8239\u65d7\u570b\u3001\u516c\u6d77\u8239\u5c0d\u8239\u8f49\u904b\uff08<span class=\"ht\">STS Transfer<\/span>\uff09\u3001\u822a\u8de1\u7a7f\u8d8a\u9678\u5730\uff08AIS\u6578\u64da\u7be1\u6539\uff09\u53ca\u8239\u8236\u540d\u7a31\u6216\u6240\u6709\u6b0a\u983b\u7e41\u8b8a\u66f4\uff0c\u5747\u70ba\u5236\u88c1\u898f\u907f\u6216\u975e\u6cd5\u6d3b\u52d5\u5178\u578b\u7279\u5fb5\u3002',\n    plain: '\u6b65\u9a5f\u56db\uff1a\u8b58\u5225\u53ef\u7591\u884c\u70ba\\n\\n\u8abf\u67e5\u8239\u8236\u9700\u7559\u610f\u5371\u96aa\u4fe1\u865f\uff1a\u300c\u6697\u8239\u300d\uff08\u95dc\u9589AIS\u767c\u5c04\u5668\uff0c\u822a\u8de1\u51fa\u73fe\u65b7\u9ede\uff09\u3001\u983b\u7e41\u66f4\u63db\u8239\u65d7\u570b\u3001\u516c\u6d77\u8239\u5c0d\u8239\u8f49\u904b\uff08STS Transfer\uff09\u3001\u822a\u8de1\u7a7f\u8d8a\u9678\u5730\uff08AIS\u6578\u64da\u7be1\u6539\uff09\u53ca\u8239\u8236\u540d\u7a31\u6216\u6240\u6709\u6b0a\u983b\u7e41\u8b8a\u66f4\uff0c\u5747\u70ba\u5236\u88c1\u898f\u907f\u6216\u975e\u6cd5\u6d3b\u52d5\u5178\u578b\u7279\u5fb5\u3002'\n  },\n  {\n    label: \"STEP 05\",\n    badge: \"\u6b65\u9a5f 5 \u2500\u2500 \u76e3\u6e2c\u6e2f\u53e3\",\n    img: \"https:\/\/tian-jian.org\/tj-field-school\/wp-content\/uploads\/2026\/06\/Screenshot-2026-03-17-at-22.49.43.png\",\n    callout: \"\u25bc \u9ede\u64ca\u300cPorts\u300d\u9078\u55ae\",\n    html: '\u9ede\u64ca\u9802\u90e8\u300c<span class=\"ht\">Ports<\/span>\u300d\u9078\u55ae\u641c\u7d22\u4e26\u76e3\u6e2c\u7279\u5b9a\u6e2f\u53e3\u8239\u8236\u9032\u51fa\u3002\u986f\u793a\u7576\u524d\u5728\u6e2f\u8239\u8236\u6578\u91cf\u3001\u9810\u8a08\u62b5\u9054\u8239\u8236\u3001\u904e\u53bb\u4e00\u500b\u6708\u5230\u8a2a\u8a18\u9304\u3002\u53ef\u8a2d\u5b9a\u8b66\u5831\uff0c\u7576\u7279\u5b9a\u8239\u8236\u9032\u51fa\u76ee\u6a19\u6e2f\u53e3\u6642\u81ea\u52d5\u901a\u77e5\u3002\u5c0d\u8abf\u67e5\u53d7\u5236\u88c1\u570b\u5bb6\u8cbf\u6613\u6d3b\u52d5\uff0c\u76e3\u6e2c\u4e3b\u8981\u6e2f\u53e3\u8239\u8236\u52d5\u614b\u662f\u91cd\u8981\u5207\u5165\u9ede\u3002',\n    plain: '\u6b65\u9a5f\u4e94\uff1a\u8ffd\u8e64\u6e2f\u53e3\u6d3b\u52d5\\n\\n\u9ede\u64ca\u9802\u90e8\u300cPorts\u300d\u9078\u55ae\u641c\u7d22\u4e26\u76e3\u6e2c\u7279\u5b9a\u6e2f\u53e3\u8239\u8236\u9032\u51fa\u3002\u986f\u793a\u7576\u524d\u5728\u6e2f\u8239\u8236\u6578\u91cf\u3001\u9810\u8a08\u62b5\u9054\u8239\u8236\u3001\u904e\u53bb\u4e00\u500b\u6708\u5230\u8a2a\u8a18\u9304\u3002\u53ef\u8a2d\u5b9a\u8b66\u5831\uff0c\u7576\u7279\u5b9a\u8239\u8236\u9032\u51fa\u76ee\u6a19\u6e2f\u53e3\u6642\u81ea\u52d5\u901a\u77e5\u3002\u5c0d\u8abf\u67e5\u53d7\u5236\u88c1\u570b\u5bb6\u8cbf\u6613\u6d3b\u52d5\uff0c\u76e3\u6e2c\u4e3b\u8981\u6e2f\u53e3\u8239\u8236\u52d5\u614b\u662f\u91cd\u8981\u5207\u5165\u9ede\u3002'\n  }\n];\n\nvar tjfsCur = 0;\n\nfunction tjfsFixHeight() {\n  var wrap = document.getElementById('tjfs-slider-wrap');\n  var body = document.getElementById('tjfs-body');\n  if (!wrap || !body) return;\n  var cardW = wrap.offsetWidth;\n  var h = (cardW * 0.58) * (4 \/ 5);\n  h = Math.max(260, Math.min(h, 520));\n  body.style.height = h + 'px';\n}\n\nfunction tjfsRender() {\n  var s = TJFS_SLIDES[tjfsCur];\n  var body = document.getElementById('tjfs-body');\n  body.classList.add('tjfs-fading');\n  setTimeout(function() {\n    var img = document.getElementById('tjfs-slide-img');\n    img.classList.add('tjfs-unloaded');\n    img.src = s.img;\n    img.alt = s.badge;\n    img.onload = function() { img.classList.remove('tjfs-unloaded'); };\n    img.onerror = function() { img.classList.remove('tjfs-unloaded'); };\n    document.getElementById('tjfs-step-badge').textContent = s.badge;\n    var callout = document.getElementById('tjfs-callout');\n    callout.textContent = s.callout;\n    if (s.callout && s.callout.trim() !== '') {\n      callout.classList.add('tjfs-visible');\n    } else {\n      callout.classList.remove('tjfs-visible');\n    }\n    document.getElementById('tjfs-step-label').textContent = s.label;\n    document.getElementById('tjfs-slide-text').innerHTML = s.html;\n    document.getElementById('tjfs-slide-text').scrollTop = 0;\n    document.getElementById('tjfs-progress-fill').style.width =\n      ((tjfsCur + 1) \/ TJFS_SLIDES.length * 100) + '%';\n    document.getElementById('tjfs-counter').textContent =\n      (tjfsCur + 1) + ' \/ ' + TJFS_SLIDES.length;\n    document.getElementById('tjfs-btn-prev').disabled = tjfsCur === 0;\n    var btnNext = document.getElementById('tjfs-btn-next');\n    if (tjfsCur === TJFS_SLIDES.length - 1) {\n      btnNext.textContent = '\u5b8c\u6210 \u2713';\n      btnNext.disabled = true;\n    } else {\n      btnNext.textContent = '\u4e0b\u4e00\u6b65 \u2192';\n      btnNext.disabled = false;\n    }\n    var dotsEl = document.getElementById('tjfs-dots');\n    dotsEl.innerHTML = '';\n    TJFS_SLIDES.forEach(function(_, i) {\n      var d = document.createElement('button');\n      d.className = 'tjfs-dot' +\n        (i === tjfsCur ? ' tjfs-active' : i < tjfsCur ? ' tjfs-done' : '');\n      d.title = '\u6b65\u9a5f ' + (i + 1);\n      (function(idx) {\n        d.addEventListener('click', function() { tjfsCur = idx; tjfsRender(); });\n      })(i);\n      dotsEl.appendChild(d);\n    });\n    body.classList.remove('tjfs-fading');\n  }, 200);\n}\n\nfunction tjfsGo(dir) {\n  var next = tjfsCur + dir;\n  if (next < 0 || next >= TJFS_SLIDES.length) return;\n  tjfsCur = next;\n  tjfsRender();\n}\n\ndocument.getElementById('tjfs-btn-prev').addEventListener('click', function() { tjfsGo(-1); });\ndocument.getElementById('tjfs-btn-next').addEventListener('click', function() { tjfsGo(1); });\n\ndocument.getElementById('tjfs-img-pane').addEventListener('click', function() {\n  var src = document.getElementById('tjfs-slide-img').src;\n  if (!src) return;\n  document.getElementById('tjfs-lb-img').src = src;\n  document.getElementById('tjfs-lightbox').classList.add('tjfs-open');\n});\ndocument.getElementById('tjfs-lb-close').addEventListener('click', function(e) {\n  e.stopPropagation();\n  document.getElementById('tjfs-lightbox').classList.remove('tjfs-open');\n});\ndocument.getElementById('tjfs-lightbox').addEventListener('click', function(e) {\n  if (e.target === this) {\n    document.getElementById('tjfs-lightbox').classList.remove('tjfs-open');\n  }\n});\n\ndocument.getElementById('tjfs-btn-download').addEventListener('click', function() {\n  var all = TJFS_SLIDES.map(function(s) { return s.plain; }).join('\\n\\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n');\n  document.getElementById('tjfs-modal-text').value = all;\n  document.getElementById('tjfs-modal-overlay').classList.add('tjfs-open');\n});\ndocument.getElementById('tjfs-modal-close-btn').addEventListener('click', function() {\n  document.getElementById('tjfs-modal-overlay').classList.remove('tjfs-open');\n});\ndocument.getElementById('tjfs-modal-overlay').addEventListener('click', function(e) {\n  if (e.target === this) {\n    document.getElementById('tjfs-modal-overlay').classList.remove('tjfs-open');\n  }\n});\ndocument.getElementById('tjfs-modal-copy').addEventListener('click', function() {\n  var ta = document.getElementById('tjfs-modal-text');\n  ta.select();\n  document.execCommand('copy');\n  var btn = document.getElementById('tjfs-modal-copy');\n  btn.textContent = '\u5df2\u8907\u88fd \u2713';\n  setTimeout(function() { btn.textContent = '\u8907\u88fd\u5168\u6587'; }, 2000);\n});\n\ntjfsFixHeight();\nwindow.addEventListener('resize', tjfsFixHeight);\ntjfsRender();\n\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>MarineTraffic \u662f\u5168\u7403\u6700\u5927\u7684\u4f20\u64ad\u8ffd\u8e2a\u5e73\u53f0\uff0c\u662f\u6d77\u4e8b\u8abf\u67e5\u5831\u5c0e\u7684\u57fa\u790e\u5de5\u5177\u3002<\/p>\n","protected":false},"featured_media":4138,"template":"","toolbox-type":[],"class_list":["post-4133","toolbox","type-toolbox","status-publish","has-post-thumbnail","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/tian-jian.org\/tj-field-school\/wp-json\/wp\/v2\/toolbox\/4133","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tian-jian.org\/tj-field-school\/wp-json\/wp\/v2\/toolbox"}],"about":[{"href":"https:\/\/tian-jian.org\/tj-field-school\/wp-json\/wp\/v2\/types\/toolbox"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tian-jian.org\/tj-field-school\/wp-json\/wp\/v2\/media\/4138"}],"wp:attachment":[{"href":"https:\/\/tian-jian.org\/tj-field-school\/wp-json\/wp\/v2\/media?parent=4133"}],"wp:term":[{"taxonomy":"toolbox-type","embeddable":true,"href":"https:\/\/tian-jian.org\/tj-field-school\/wp-json\/wp\/v2\/toolbox-type?post=4133"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}