ফেন্সড কোড ব্লক
ফেন্সড কোড ব্লক মার্কডাউনের এক্সটেন্ডেড সিনট্যাক্সের একটি গুরুত্বপূর্ণ অংশ, যা বেসিক কোড ব্লকের চেয়ে আরও শক্তিশালী কোড প্রদর্শন ক্ষমতা প্রদান করে, যার মধ্যে সিনট্যাক্স হাইলাইটিং, লাইন নম্বর, ফাইল নাম এবং অন্যান্য উন্নত ফিচার রয়েছে।
বেসিক ফেন্সড কোড ব্লক
তিনটি ব্যাকটিক
তিনটি ব্যাকটিক ``` ব্যবহার করে কোড ব্লক তৈরি করুন:
```
function hello() {
console.log("Hello, World!");
}
```রেন্ডার্ড আউটপুট:
function hello() {
console.log("Hello, World!");
}তিনটি টিল্ড
তিনটি টিল্ড ~~~ ব্যবহার করেও কোড ব্লক তৈরি করা যায়:
~~~
function hello() {
console.log("Hello, World!");
}
~~~রেন্ডার্ড আউটপুট:
function hello() {
console.log("Hello, World!");
}সিনট্যাক্স হাইলাইটিং
প্রোগ্রামিং ভাষা নির্দিষ্ট করুন
সিনট্যাক্স হাইলাইটিং সক্ষম করতে ওপেনিং মার্কারের পরে ভাষার নাম নির্দিষ্ট করুন:
```javascript
function fibonacci(n) {
if (n <= 1) return n;
return fibonacci(n - 1) + fibonacci(n - 2);
}
console.log(fibonacci(10)); // 55
```রেন্ডার্ড আউটপুট:
function fibonacci(n) {
if (n <= 1) return n;
return fibonacci(n - 1) + fibonacci(n - 2);
}
console.log(fibonacci(10)); // 55সাধারণ ভাষার উদাহরণ
Python
```python
def quicksort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quicksort(left) + middle + quicksort(right)
# উদাহরণ ব্যবহার
numbers = [3, 6, 8, 10, 1, 2, 1]
print(quicksort(numbers))
```রেন্ডার্ড আউটপুট:
def quicksort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quicksort(left) + middle + quicksort(right)
# উদাহরণ ব্যবহার
numbers = [3, 6, 8, 10, 1, 2, 1]
print(quicksort(numbers))TypeScript
```typescript
interface User {
id: number;
name: string;
email: string;
isActive: boolean;
}
class UserService {
private users: User[] = [];
async createUser(userData: Omit<User, 'id'>): Promise<User> {
const newUser: User = {
id: Date.now(),
...userData
};
this.users.push(newUser);
return newUser;
}
async getUserById(id: number): Promise<User | undefined> {
return this.users.find(user => user.id === id);
}
}
```রেন্ডার্ড আউটপুট:
interface User {
id: number;
name: string;
email: string;
isActive: boolean;
}
class UserService {
private users: User[] = [];
async createUser(userData: Omit<User, 'id'>): Promise<User> {
const newUser: User = {
id: Date.now(),
...userData
};
this.users.push(newUser);
return newUser;
}
async getUserById(id: number): Promise<User | undefined> {
return this.users.find(user => user.id === id);
}
}Go
```go
package main
import (
"fmt"
"net/http"
"log"
)
type Server struct {
port string
}
func NewServer(port string) *Server {
return &Server{port: port}
}
func (s *Server) Start() error {
http.HandleFunc("/", s.handleHome)
http.HandleFunc("/api/health", s.handleHealth)
fmt.Printf("Server starting on port %s\n", s.port)
return http.ListenAndServe(":"+s.port, nil)
}
func (s *Server) handleHome(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Welcome to Go Server!")
}
func (s *Server) handleHealth(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
fmt.Fprintf(w, `{"status": "healthy"}`)
}
func main() {
server := NewServer("8080")
log.Fatal(server.Start())
}
```রেন্ডার্ড আউটপুট:
package main
import (
"fmt"
"net/http"
"log"
)
type Server struct {
port string
}
func NewServer(port string) *Server {
return &Server{port: port}
}
func (s *Server) Start() error {
http.HandleFunc("/", s.handleHome)
http.HandleFunc("/api/health", s.handleHealth)
fmt.Printf("Server starting on port %s\n", s.port)
return http.ListenAndServe(":"+s.port, nil)
}
func (s *Server) handleHome(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Welcome to Go Server!")
}
func (s *Server) handleHealth(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
fmt.Fprintf(w, `{"status": "healthy"}`)
}
func main() {
server := NewServer("8080")
log.Fatal(server.Start())
}উন্নত ফিচার
লাইন হাইলাইটিং
কিছু মার্কডাউন প্রসেসর নির্দিষ্ট লাইন হাইলাইট করা সমর্থন করে:
```javascript {2,4-6}
function calculateTotal(items) {
let total = 0; // এই লাইন হাইলাইট করা হয়েছে
for (const item of items) { // এই লাইনগুলি হাইলাইট করা হয়েছে
total += item.price * item.quantity;
} // হাইলাইট শেষ
return total;
}
```লাইন নম্বর প্রদর্শন
কোড লাইন নম্বর প্রদর্শন করুন:
```python:line-numbers
def binary_search(arr, target):
left, right = 0, len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1
```ফাইল নাম শিরোনাম
কোড ফাইল নাম প্রদর্শন করুন:
```typescript title="userService.ts"
export class UserService {
private apiUrl = '/api/users';
async getUsers(): Promise<User[]> {
const response = await fetch(this.apiUrl);
return response.json();
}
async createUser(user: CreateUserDto): Promise<User> {
const response = await fetch(this.apiUrl, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(user)
});
return response.json();
}
}
```কোড ব্লক Diff প্রদর্শন
কোড পরিবর্তন দেখান:
```diff
function calculateTax(amount) {
- return amount * 0.05; // পুরানো ট্যাক্স রেট
+ return amount * 0.08; // নতুন ট্যাক্স রেট
}
+ // নতুন ফাংশন
+ function calculateDiscount(amount, percentage) {
+ return amount * (percentage / 100);
+ }
```রেন্ডার্ড আউটপুট:
function calculateTax(amount) {
- return amount * 0.05; // পুরানো ট্যাক্স রেট
+ return amount * 0.08; // নতুন ট্যাক্স রেট
}
+ // নতুন ফাংশন
+ function calculateDiscount(amount, percentage) {
+ return amount * (percentage / 100);
+ }কনফিগারেশন ফাইল উদাহরণ
JSON কনফিগারেশন
```json
{
"name": "my-app",
"version": "1.0.0",
"scripts": {
"start": "node server.js",
"dev": "nodemon server.js",
"build": "webpack --mode production",
"test": "jest"
},
"dependencies": {
"express": "^4.18.2",
"mongoose": "^7.0.3",
"jsonwebtoken": "^9.0.0"
},
"devDependencies": {
"nodemon": "^2.0.22",
"jest": "^29.5.0",
"webpack": "^5.82.0"
}
}
```রেন্ডার্ড আউটপুট:
{
"name": "my-app",
"version": "1.0.0",
"scripts": {
"start": "node server.js",
"dev": "nodemon server.js",
"build": "webpack --mode production",
"test": "jest"
},
"dependencies": {
"express": "^4.18.2",
"mongoose": "^7.0.3",
"jsonwebtoken": "^9.0.0"
},
"devDependencies": {
"nodemon": "^2.0.22",
"jest": "^29.5.0",
"webpack": "^5.82.0"
}
}YAML কনফিগারেশন
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-app
labels:
app: web-app
spec:
replicas: 3
selector:
matchLabels:
app: web-app
template:
metadata:
labels:
app: web-app
spec:
containers:
- name: web
image: nginx:1.21
ports:
- containerPort: 80
env:
- name: NODE_ENV
value: production
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"
```রেন্ডার্ড আউটপুট:
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-app
labels:
app: web-app
spec:
replicas: 3
selector:
matchLabels:
app: web-app
template:
metadata:
labels:
app: web-app
spec:
containers:
- name: web
image: nginx:1.21
ports:
- containerPort: 80
env:
- name: NODE_ENV
value: production
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"SQL কোয়েরি
```sql
-- users টেবিল তৈরি করুন
CREATE TABLE users (
id SERIAL PRIMARY KEY,
username VARCHAR(50) UNIQUE NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- ইনডেক্স তৈরি করুন
CREATE INDEX idx_users_email ON users(email);
CREATE INDEX idx_users_username ON users(username);
-- সক্রিয় ব্যবহারকারী কোয়েরি করুন
SELECT
u.id,
u.username,
u.email,
COUNT(p.id) as post_count
FROM users u
LEFT JOIN posts p ON u.id = p.user_id
WHERE u.created_at >= NOW() - INTERVAL '30 days'
GROUP BY u.id, u.username, u.email
HAVING COUNT(p.id) > 0
ORDER BY post_count DESC
LIMIT 10;
```রেন্ডার্ড আউটপুট:
-- users টেবিল তৈরি করুন
CREATE TABLE users (
id SERIAL PRIMARY KEY,
username VARCHAR(50) UNIQUE NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- ইনডেক্স তৈরি করুন
CREATE INDEX idx_users_email ON users(email);
CREATE INDEX idx_users_username ON users(username);
-- সক্রিয় ব্যবহারকারী কোয়েরি করুন
SELECT
u.id,
u.username,
u.email,
COUNT(p.id) as post_count
FROM users u
LEFT JOIN posts p ON u.id = p.user_id
WHERE u.created_at >= NOW() - INTERVAL '30 days'
GROUP BY u.id, u.username, u.email
HAVING COUNT(p.id) > 0
ORDER BY post_count DESC
LIMIT 10;শেল স্ক্রিপ্ট এবং কমান্ড
Bash স্ক্রিপ্ট
```bash
#!/bin/bash
# ডেপ্লয়মেন্ট স্ক্রিপ্ট
set -e
APP_NAME="my-app"
DEPLOY_DIR="/var/www/${APP_NAME}"
BACKUP_DIR="/var/backups/${APP_NAME}"
CURRENT_DATE=$(date +%Y%m%d_%H%M%S)
echo "Starting deployment of ${APP_NAME}..."
# ব্যাকআপ তৈরি করুন
if [ -d "$DEPLOY_DIR" ]; then
echo "Creating backup at ${BACKUP_DIR}/${CURRENT_DATE}"
mkdir -p "$BACKUP_DIR"
cp -r "$DEPLOY_DIR" "${BACKUP_DIR}/${CURRENT_DATE}"
fi
# সার্ভিস বন্ধ করুন
echo "Stopping service..."
sudo systemctl stop $APP_NAME || true
# নতুন ভার্সন ডেপ্লয় করুন
echo "Deploying new version..."
rm -rf "$DEPLOY_DIR"
mkdir -p "$DEPLOY_DIR"
tar -xzf "${APP_NAME}.tar.gz" -C "$DEPLOY_DIR"
# ডিপেন্ডেন্সি ইনস্টল করুন
echo "Installing dependencies..."
cd "$DEPLOY_DIR"
npm ci --production
# সার্ভিস শুরু করুন
echo "Starting service..."
sudo systemctl start $APP_NAME
sudo systemctl enable $APP_NAME
echo "Deployment complete!"
```রেন্ডার্ড আউটপুট:
#!/bin/bash
# ডেপ্লয়মেন্ট স্ক্রিপ্ট
set -e
APP_NAME="my-app"
DEPLOY_DIR="/var/www/${APP_NAME}"
BACKUP_DIR="/var/backups/${APP_NAME}"
CURRENT_DATE=$(date +%Y%m%d_%H%M%S)
echo "Starting deployment of ${APP_NAME}..."
# ব্যাকআপ তৈরি করুন
if [ -d "$DEPLOY_DIR" ]; then
echo "Creating backup at ${BACKUP_DIR}/${CURRENT_DATE}"
mkdir -p "$BACKUP_DIR"
cp -r "$DEPLOY_DIR" "${BACKUP_DIR}/${CURRENT_DATE}"
fi
# সার্ভিস বন্ধ করুন
echo "Stopping service..."
sudo systemctl stop $APP_NAME || true
# নতুন ভার্সন ডেপ্লয় করুন
echo "Deploying new version..."
rm -rf "$DEPLOY_DIR"
mkdir -p "$DEPLOY_DIR"
tar -xzf "${APP_NAME}.tar.gz" -C "$DEPLOY_DIR"
# ডিপেন্ডেন্সি ইনস্টল করুন
echo "Installing dependencies..."
cd "$DEPLOY_DIR"
npm ci --production
# সার্ভিস শুরু করুন
echo "Starting service..."
sudo systemctl start $APP_NAME
sudo systemctl enable $APP_NAME
echo "Deployment complete!"সাধারণ ত্রুটি এবং সমাধান
1. ব্যাকটিক সংখ্যা মismatch
❌ ত্রুটি:
```javascript
function hello() {
console.log("Hello");
}
`` ← শুধুমাত্র দুটি ব্যাকটিক
✅ সঠিক:
```javascript
function hello() {
console.log("Hello");
}
``` ← তিনটি ব্যাকটিক2. ভুল ভাষা আইডেন্টিফায়ার
❌ ত্রুটি:
```js ← কিছু প্রসেসর চিনতে পারে না
function hello() {}
```
✅ সুপারিশকৃত:
```javascript ← পূর্ণ নাম ব্যবহার করুন
function hello() {}
```3. নেস্টেড কোড ব্লক
❌ সমস্যা: ``` সহ কোড প্রদর্শন করা যায় না
✅ সমাধান: তিনটি ব্যাকটিক দেখাতে চারটি ব্যাকটিক ব্যবহার করুন
````markdown
```javascript
console.log("hello");
```
### 4. বিশেষ ক্যারেক্টার হ্যান্ডলিং
````markdown
```markdown
<!-- মার্কডাউন কোড ব্লকে মার্কডাউন সিনট্যাক্স প্রদর্শন করুন -->
\```javascript ← ব্যাকটিক এস্কেপ করুন
code here
\```
```সমর্থিত ভাষার তালিকা
প্রোগ্রামিং ভাষা
| ভাষা | আইডেন্টিফায়ার | এলিয়াস |
|---|---|---|
| JavaScript | javascript | js |
| TypeScript | typescript | ts |
| Python | python | py |
| Java | java | |
| C++ | cpp | c++, cxx |
| C# | csharp | cs |
| Go | go | golang |
| Rust | rust | rs |
| PHP | php | |
| Ruby | ruby | rb |
| Swift | swift | |
| Kotlin | kotlin | kt |
মার্কআপ এবং কনফিগারেশন ভাষা
| ভাষা | আইডেন্টিফায়ার | ব্যবহার |
|---|---|---|
| HTML | html | ওয়েব মার্কআপ |
| CSS | css | স্টাইলশিট |
| XML | xml | ডেটা এক্সচেঞ্জ |
| JSON | json | ডেটা ফরম্যাট |
| YAML | yaml, yml | কনফিগারেশন ফাইল |
| TOML | toml | কনফিগারেশন ফাইল |
| Markdown | markdown, md | ডকুমেন্টেশন |
ডেটা এবং কোয়েরি ভাষা
| ভাষা | আইডেন্টিফায়ার | ব্যবহার |
|---|---|---|
| SQL | sql | ডেটাবেস কোয়েরি |
| GraphQL | graphql | API কোয়েরি |
| R | r | পরিসংখ্যান কম্পিউটিং |
| MATLAB | matlab | নিউমেরিক্যাল কম্পিউটিং |
শেল এবং স্ক্রিপ্ট
| ভাষা | আইডেন্টিফায়ার | ব্যবহার |
|---|---|---|
| Bash | bash, sh | Unix Shell |
| PowerShell | powershell, ps1 | Windows Shell |
| Batch | batch, bat | Windows Batch |
| Dockerfile | dockerfile | কন্টেইনার কনফিগারেশন |
সেরা অনুশীলন
1. উপযুক্ত ভাষা আইডেন্টিফায়ার চয়ন করুন
✅ সুপারিশকৃত: সঠিক ভাষা আইডেন্টিফায়ার ব্যবহার করুন
```typescript
interface User {
id: number;
name: string;
}
```
❌ সুপারিশ করা হয় না: ভুল আইডেন্টিফায়ার ব্যবহার করুন
```javascript ← এটি TypeScript কোড
interface User {
id: number;
name: string;
}
```2. অর্থপূর্ণ মন্তব্য যোগ করুন
✅ সুপারিশকৃত: ব্যাখ্যামূলক মন্তব্য অন্তর্ভুক্ত করুন
```python
def fibonacci(n):
"""n-তম ফিবোনাচ্চি সংখ্যা গণনা করুন"""
if n <= 1:
return n
return fibonacci(n-1) + fibonacci(n-2)
```
❌ সুপারিশ করা হয় না: ব্যাখ্যা ছাড়া কোড
```python
def fib(n):
if n <= 1:
return n
return fib(n-1) + fib(n-2)
```3. কোড সংক্ষিপ্ত রাখুন
✅ সুপারিশকৃত: মূল লজিক দেখান
```javascript
// ব্যবহারকারী প্রমাণীকরণ মিডলওয়্যার
function authenticate(req, res, next) {
const token = req.headers.authorization;
if (!token) {
return res.status(401).json({ error: 'No token provided' });
}
// যাচাইকরণ লজিক...
next();
}
```
❌ সুপারিশ করা হয় না: খুব বেশি অপ্রাসঙ্গিক কোড
```javascript
// অনেক অপ্রাসঙ্গিক কোড বাদ দেওয়া হয়েছে...
```4. ফাইল নাম শিরোনাম ব্যবহার করুন
✅ সুপারিশকৃত: ফাইল নাম দেখান
```javascript title="middleware/auth.js"
export function authenticate(req, res, next) {
// প্রমাণীকরণ লজিক
}
```
✅ সুপারিশকৃত: কনফিগ ফাইল নাম দেখান
```json title="package.json"
{
"name": "my-app",
"version": "1.0.0"
}
```ব্যবহারিক অ্যাপ্লিকেশন সিনারিও
1. API ডকুমেন্টেশন
## ব্যবহারকারী লগইন API
**রিকোয়েস্ট উদাহরণ:**
```bash
curl -X POST https://api.example.com/auth/login \
-H "Content-Type: application/json" \
-d '{
"email": "user@example.com",
"password": "password123"
}'
```
**রেসপন্স উদাহরণ:**
```json
{
"success": true,
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"user": {
"id": 1,
"email": "user@example.com",
"name": "ঝাং সান"
}
}
}
```
**এরর রেসপন্স:**
```json
{
"success": false,
"error": {
"code": "INVALID_CREDENTIALS",
"message": "ভুল ইমেইল বা পাসওয়ার্ড"
}
}
```2. ইনস্টলেশন গাইড
## এনভায়রনমেন্ট সেটআপ
### 1. Node.js ইনস্টল করুন
**macOS (Homebrew ব্যবহার করে):**
```bash
# Homebrew ইনস্টল করুন (যদি না থাকে)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Node.js ইনস্টল করুন
brew install node
# ইনস্টলেশন যাচাই করুন
node --version
npm --version
```
**Ubuntu/Debian:**
```bash
# প্যাকেজ লিস্ট আপডেট করুন
sudo apt update
# Node.js এবং npm ইনস্টল করুন
sudo apt install nodejs npm
# ইনস্টলেশন যাচাই করুন
node --version
npm --version
```
**Windows (Chocolatey ব্যবহার করে):**
```powershell
# Chocolatey ইনস্টল করুন (এডমিনিস্ট্রেটর হিসেবে চালান)
Set-ExecutionPolicy Bypass -Scope Process -Force;
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072;
iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
# Node.js ইনস্টল করুন
choco install nodejs
# ইনস্টলেশন যাচাই করুন
node --version
npm --version
```3. কোড তুলনা
## রিফ্যাক্টরিংয়ের আগে এবং পরে
**আগে (কলব্যাক হেল):**
```javascript
function getUserData(userId, callback) {
getUser(userId, function(err, user) {
if (err) {
callback(err);
return;
}
getPosts(user.id, function(err, posts) {
if (err) {
callback(err);
return;
}
getComments(posts[0].id, function(err, comments) {
if (err) {
callback(err);
return;
}
callback(null, { user, posts, comments });
});
});
});
}
```
**পরে (async/await):**
```javascript
async function getUserData(userId) {
try {
const user = await getUser(userId);
const posts = await getPosts(user.id);
const comments = await getComments(posts[0].id);
return { user, posts, comments };
} catch (error) {
throw error;
}
}
```HTML আউটপুট
ফেন্সড কোড ব্লক HTML এ রূপান্তরিত হয়:
```javascript
function hello() {
console.log("Hello");
}
```হয়ে যায়:
<pre><code class="language-javascript">function hello() {
console.log("Hello");
}
</code></pre>সম্পর্কিত সিনট্যাক্স
- বেসিক কোড ব্লক - ইনডেন্টেড কোড ব্লক
- ইনলাইন কোড - ব্যাকটিক কোড
- এক্সটেন্ডেড সিনট্যাক্স ওভারভিউ - আরও এক্সটেনশন
অনুশীলন
নিম্নলিখিত কোড ব্লক তৈরি করার চেষ্টা করুন:
- একটি JavaScript ফাংশন কোড ব্লক
- একটি Python স্ক্রিপ্ট কোড ব্লক
- একটি JSON কনফিগারেশন কোড ব্লক
- একটি Bash স্ক্রিপ্ট কোড ব্লক