এইটা একটা টেস্ট।
# Solution 2:
class Solution:
def findClosestNumber(self, nums: List[int]) -> int:
return min(nums, key=lambda x: (abs(x), -x))
এইখানে আমি ব্যাখ্যা দিবো।
হ্যাঁ, আপনি অবশ্যই এটি করতে পারবেন। ওয়ার্ডপ্রেস থেকে ডাটা ব্যাকাপ নিয়ে পরে জ্যাংগো (Django), ফ্লাস্ক (Flask), নেক্সট.জেএস (Next.js) বা যেকোনো কাস্টম সাইটে মাইগ্রেশন করা একটি খুবই সাধারণ এবং স্মার্ট কাজ।
তবে ভবিষ্যতে যাতে কোনো ঝামেলা না হয় এবং কোডগুলো নতুন সাইটেও “কোড এডিটরের মতো” (Syntax Highlighting সহ) দেখায়, সেজন্য আপনাকে ওয়ার্ডপ্রেসে ডাটা সেভ করার সময়ই কিছু স্ট্যান্ডার্ড নিয়ম মানতে হবে।
নিচে ধাপে ধাপে পুরো প্রক্রিয়াটি আলোচনা করা হলো:
ধাপ ১: ওয়ার্ডপ্রেসে কোড সেভ করার সঠিক নিয়ম
ওয়ার্ডপ্রেসের সাধারণ এডিটরে কোড পেস্ট করলে অনেক সময় ডাটাবেসে এলোমেলো HTML তৈরি হয়, যা পরে পার্স (Parse) করা কঠিন হয়ে যায়। তাই আপনাকে কোডগুলোকে স্ট্যান্ডার্ড ফরম্যাটে সেভ করতে হবে। এর দুটি ভালো উপায় আছে:
উপায় ক: মার্কডাউন (Markdown) ব্যবহার করা (সবচেয়ে recommended) আপনি ওয়ার্ডপ্রেসে Markdown সাপোর্ট করে এমন প্লাগিন (যেমন: Jetpack Markdown বা Classic Editor এর সাথে Markdown ব্লক) ব্যবহার করতে পারেন। তখন কোডটি ডাটাবেসে এভাবে সেভ হবে:
```python
def hello_world():
print("Hello")
```
সুবিধা: মার্কডাউন থেকে যেকোনো সাইটে ডাটা নেওয়া সবচেয়ে সহজ।
উপায় খ: স্ট্যান্ডার্ড HTML ট্যাগ ব্যবহার করা আপনি যদি সাধারণ এডিটর বা Code Syntax Block / Enlighter প্লাগিন ব্যবহার করেন, তবুও নিশ্চিত করবেন যেন কোডটি নিচের স্ট্যান্ডার্ড HTML ফরম্যাটে সেভ হয়:
<pre><code class="language-python">
def hello_world():
print("Hello")
</code></pre>
ধাপ ২: ওয়ার্ডপ্রেস থেকে ব্যাকাপ (Export) নেওয়া
ওয়ার্ডপ্রেস থেকে ডাটা নেওয়ার জন্য আপনি তিনটি পদ্ধতি ব্যবহার করতে পারেন:
- WordPress REST API (সেরা পদ্ধতি): আপনার সাইটের
yourdomain.com/wp-json/wp/v2/postsURL-এ গেলেই সব পোস্ট JSON ফরম্যাটে পেয়ে যাবেন। এখান থেকে সরাসরি জ্যাংগোতে ডাটা ইমপোর্ট করা যাবে। - Markdown Export: WP2Markdown বা ExitWP এর মতো প্লাগিন/টুল ব্যবহার করে সব পোস্টকে
.md(Markdown) ফাইল হিসেবে ডাউনলোড করে নিতে পারেন। - XML Export: ওয়ার্ডপ্রেসের
Tools > Exportথেকে XML ফাইল নামিয়ে পরে Python (BeautifulSoup) দিয়ে পার্স করে নিতে পারেন।
ধাপ ৩: জ্যাংগো (Django) বা নতুন সাইটে ইমপোর্ট করা
ধরে নিই আপনি ডাটাগুলো জ্যাংগো ডাটাবেসে নিয়ে এসেছেন।
- আপনি যদি Markdown ফরম্যাটে ডাটা রাখেন, তবে জ্যাংগোতে
markdownবাmistuneলাইব্রেরি ব্যবহার করে খুব সহজেই সেটিকে HTML-এ কনভার্ট করে ফ্রন্টএন্ডে পাঠাতে পারবেন। - আপনি যদি HTML ফরম্যাটে রাখেন, তবে সরাসরি ডাটাবেসে
TextFieldহিসেবে রেখে টেমপ্লেটে{{ post.content|safe }}দিয়ে রেন্ডার করতে পারবেন।
ধাপ ৪: নতুন সাইটে কোড এডিটরের মতো দেখানো (Frontend Rendering)
আপনার জ্যাংগো সাইটের ব্যাকএন্ড শুধু HTML ট্যাগ (<pre><code>) আউটপুট দেবে। কিন্তু সেটাকে VS Code বা Sublime Text এর মতো সুন্দর করে (রঙিন করে) দেখানোর কাজ করবে Frontend CSS/JS Library।
এর জন্য আপনি আপনার নতুন সাইটের HTML Template-এ নিচের যেকোনো একটি লাইব্রেরি যুক্ত করে নেবেন:
১. Prism.js (সবচেয়ে জনপ্রিয় এবং হালকা)
আপনার HTML <head> ট্যাগে এগুলো যুক্ত করুন:
<!-- Prism.js এর CSS (থিম হিসেবে Dracula বা Monokai দিতে পারেন) -->
<link href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism-tomorrow.min.css" rel="stylesheet" />
<!-- Prism.js এর JS -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/prism.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-python.min.js"></script>
কাজের ধরন: Prism.js পেজ লোড হওয়ার সময় <pre><code class="language-python"> ট্যাগগুলো খুঁজে বের করবে এবং অটোমেটিক কোড এডিটরের মতো সিনট্যাক্স হাইলাইট (Syntax Highlight) করে দেবে।
২. Highlight.js (অটো ডিটেকশন সুবিধা)
যদি আপনার কোডের ভেতরে class="language-python" নাও থাকে, তবুও এটি অটোমেটিক বুঝে নিতে পারে কোডটি কোন ল্যাঙ্গুয়েজের।
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/atom-one-dark.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script>
💡 কিছু গুরুত্বপূর্ণ টিপস (Pro-Tips):
১. Copy Code Button: নতুন সাইটে কোড ব্লকের পাশে একটা “Copy” বাটন যুক্ত করতে পারেন। Prism.js এবং Highlight.js উভয়েরই এ ধরনের প্লাগিন/এক্সটেনশন আছে, যা ইউজারদের কোড কপি করতে সাহায্য করে।
২. Dark Mode Theme: কোড এডিটরের ফিল দিতে চাইলে CSS থিম হিসেবে Dracula, Monokai, One Dark, বা Tomorrow Night ব্যবহার করবেন।
৩. Raw Data Save করুন: ওয়ার্ডপ্রেসে কখনোই কোডের স্টাইল ইনলাইন (Inline CSS) দিয়ে কাস্টমাইজ করবেন না। সবসময় Raw Code সেভ করবেন, স্টাইলিং-এর কাজ ফ্রন্টএন্ডের লাইব্রেরিকে করতে দিন।
সারসংক্ষেপ:
ওয়ার্ডপ্রেসে পোস্ট করার সময় কোডগুলোকে <pre><code class="language-xxx"> ট্যাগে বা Markdown ফরম্যাটে রাখবেন। ব্যাকাপ নিয়ে জ্যাংগোতে আনার পর, ফ্রন্টএন্ডে Prism.js বা Highlight.js ব্যবহার করলেই কোডগুলো হুবহু কোড এডিটরের মতো সুন্দর দেখাবে।