<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Bits of .NET</title>
	<atom:link href="http://blog.ercanopak.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.ercanopak.com</link>
	<description>Daily micro-tips for C#, SQL, performance, and scalable backend engineering.</description>
	<lastBuildDate>Sun, 12 Jul 2026 09:13:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.1</generator>

<image>
	<url>http://blog.ercanopak.com/wp-content/uploads/2018/06/cropped-EO_LOGO_32-32x32.png</url>
	<title>Bits of .NET</title>
	<link>http://blog.ercanopak.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>C#: Use Using Statements for Resource Management</title>
		<link>http://blog.ercanopak.com/c-use-using-statements-for-resource-management-2/</link>
					<comments>http://blog.ercanopak.com/c-use-using-statements-for-resource-management-2/#respond</comments>
		
		<dc:creator><![CDATA[ErcanOPAK]]></dc:creator>
		<pubDate>Sun, 12 Jul 2026 09:13:14 +0000</pubDate>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[IDisposable]]></category>
		<category><![CDATA[resources]]></category>
		<category><![CDATA[Using]]></category>
		<guid isPermaLink="false">http://blog.ercanopak.com/c-use-using-statements-for-resource-management-2/</guid>

					<description><![CDATA[📦 Using = Resource Management Resources leak without cleanup. Using statements ensure disposal. Files, connections, streams — auto-cleanup. ❌ Manual Cleanup var file = File.Open("file.txt"); try { // Use file } finally { file.Dispose(); } ✅ Using Statement using var file = File.Open("file.txt"); // Use file - auto-disposed 📝 Using Examples // File operations using [&#8230;]]]></description>
										<content:encoded><![CDATA[<div style='background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%); padding: 60px 50px; border-radius: 24px; margin: 40px 0 50px 0; box-shadow: 0 20px 60px rgba(0,0,0,0.3);'>
<h2 style='margin: 0 0 25px 0; font-size: 2.8em; font-weight: 800; color: white;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4e6.png" alt="📦" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Using = Resource Management</h2>
<p style='font-size: 1.4em; line-height: 1.6; margin: 0; color: #e0e0e0;'>Resources leak without cleanup. <strong style='color: white;'>Using statements</strong> ensure disposal. Files, connections, streams — auto-cleanup.</p>
</p></div>
<div style='display: grid; grid-template-columns: 1fr 1fr; gap: 30px; margin: 50px 0;'>
<div style='background: #f8fafc; padding: 30px; border-radius: 20px; border: 1px solid #e2e8f0;'>
<h4 style='margin: 0 0 15px 0; font-size: 1.5em; color: #1e293b;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Manual Cleanup</h4>
<pre style='background: #0f172a; color: #e2e8f0; padding: 20px; border-radius: 12px; margin: 15px 0 0 0;'>var file = File.Open("file.txt");
try {
    // Use file
}
finally {
    file.Dispose();
}</pre>
</p></div>
<div style='background: #f8fafc; padding: 30px; border-radius: 20px; border: 1px solid #e2e8f0;'>
<h4 style='margin: 0 0 15px 0; font-size: 1.5em; color: #1e293b;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Using Statement</h4>
<pre style='background: #0f172a; color: #e2e8f0; padding: 20px; border-radius: 12px; margin: 15px 0 0 0;'>using var file = File.Open("file.txt");
// Use file - auto-disposed</pre>
</p></div>
</p></div>
<div style='background: #f8fafc; padding: 35px; border-radius: 20px; margin: 30px 0; border: 1px solid #e2e8f0;'>
<h4 style='color: #1e293b; margin: 0 0 15px 0; font-size: 1.5em; font-weight: 700;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4dd.png" alt="📝" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Using Examples</h4>
<pre style='background: #0f172a; color: #e2e8f0; padding: 25px; border-radius: 14px; margin: 20px 0; overflow-x: auto;'>// File operations
using var fileStream = File.OpenRead("data.txt");
using var reader = new StreamReader(fileStream);
var content = reader.ReadToEnd();

// Database connections
using var connection = new SqlConnection(connectionString);
using var command = new SqlCommand("SELECT * FROM Users", connection);
connection.Open();
using var reader = command.ExecuteReader();
while (reader.Read()) {
    // Process data
}

// Multiple using statements
using (var file1 = File.OpenRead("file1.txt"))
using (var file2 = File.OpenRead("file2.txt"))
{
    // Use both files
}

// Using with HttpClient
using var client = new HttpClient();
var response = await client.GetAsync("https://api.example.com/data");

// Custom IDisposable
public class CustomResource : IDisposable
{
    private bool _disposed = false;
    
    public void UseResource()
    {
        if (_disposed) throw new ObjectDisposedException(nameof(CustomResource));
        // Use resource
    }
    
    public void Dispose()
    {
        if (!_disposed)
        {
            // Cleanup
            _disposed = true;
        }
    }
}

// Using with custom resource
using var resource = new CustomResource();
resource.UseResource();</pre>
</p></div>
<div style='background: #d4edda; padding: 35px; border-radius: 20px; margin: 50px 0; border-left: 6px solid #28a745;'>
<h4 style='color: #155724; margin: 0 0 20px 0; font-size: 1.7em; font-weight: 700;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Using Tips</h4>
<ul style='color: #155724; font-size: 1.1em; line-height: 2.2; margin: 0; padding-left: 25px;'>
<li>Use for any IDisposable resource</li>
<li>Automatic cleanup (even with exceptions)</li>
<li>Use declaration syntax (C# 8+)</li>
<li>Avoid nesting when possible</li>
<li>Consider using with try-catch when needed</li>
</ul></div>
<blockquote style='background: linear-gradient(135deg, #e8eaf6 0%, #c5cae9 100%); border-left: 8px solid #5c6bc0; padding: 45px; margin: 60px 0 30px 0; border-radius: 24px;'>
<p style='font-size: 1.4em; line-height: 1.7; margin: 0; color: #1a237e; font-style: italic; font-weight: 500;'>&#8220;Using ensures resource cleanup. Files, connections, streams — auto-disposed. Essential for robust C#.&#8221;</p>
<footer style='margin-top: 25px; color: #283593; font-size: 1em; font-weight: 600;'>— Senior Developer</footer>
</blockquote>
]]></content:encoded>
					
					<wfw:commentRss>http://blog.ercanopak.com/c-use-using-statements-for-resource-management-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>C#: Use Lambda Expressions for Concise Code</title>
		<link>http://blog.ercanopak.com/c-use-lambda-expressions-for-concise-code-2/</link>
					<comments>http://blog.ercanopak.com/c-use-lambda-expressions-for-concise-code-2/#respond</comments>
		
		<dc:creator><![CDATA[ErcanOPAK]]></dc:creator>
		<pubDate>Sun, 12 Jul 2026 09:13:10 +0000</pubDate>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Anonymous Functions]]></category>
		<category><![CDATA[Lambda]]></category>
		<category><![CDATA[linq]]></category>
		<guid isPermaLink="false">http://blog.ercanopak.com/c-use-lambda-expressions-for-concise-code-2/</guid>

					<description><![CDATA[⚡ Lambda Expressions = Concise Code Anonymous methods are verbose. Lambda expressions are concise. One-liners for LINQ, delegates, events. ❌ Anonymous Method Func square = delegate(int x) { return x * x; }; ✅ Lambda Expression Func square = x => x * x; 📝 Lambda Examples // Basic syntax (parameters) => expression (parameters) => [&#8230;]]]></description>
										<content:encoded><![CDATA[<div style='background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%); padding: 60px 50px; border-radius: 24px; margin: 40px 0 50px 0; box-shadow: 0 20px 60px rgba(0,0,0,0.3);'>
<h2 style='margin: 0 0 25px 0; font-size: 2.8em; font-weight: 800; color: white;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a1.png" alt="⚡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Lambda Expressions = Concise Code</h2>
<p style='font-size: 1.4em; line-height: 1.6; margin: 0; color: #e0e0e0;'>Anonymous methods are verbose. <strong style='color: white;'>Lambda expressions</strong> are concise. One-liners for LINQ, delegates, events.</p>
</p></div>
<div style='display: grid; grid-template-columns: 1fr 1fr; gap: 30px; margin: 50px 0;'>
<div style='background: #f8fafc; padding: 30px; border-radius: 20px; border: 1px solid #e2e8f0;'>
<h4 style='margin: 0 0 15px 0; font-size: 1.5em; color: #1e293b;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Anonymous Method</h4>
<pre style='background: #0f172a; color: #e2e8f0; padding: 20px; border-radius: 12px; margin: 15px 0 0 0;'>Func<int, int> square = 
    delegate(int x) { return x * x; };</pre>
</p></div>
<div style='background: #f8fafc; padding: 30px; border-radius: 20px; border: 1px solid #e2e8f0;'>
<h4 style='margin: 0 0 15px 0; font-size: 1.5em; color: #1e293b;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Lambda Expression</h4>
<pre style='background: #0f172a; color: #e2e8f0; padding: 20px; border-radius: 12px; margin: 15px 0 0 0;'>Func<int, int> square = x => x * x;</pre>
</p></div>
</p></div>
<div style='background: #f8fafc; padding: 35px; border-radius: 20px; margin: 30px 0; border: 1px solid #e2e8f0;'>
<h4 style='color: #1e293b; margin: 0 0 15px 0; font-size: 1.5em; font-weight: 700;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4dd.png" alt="📝" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Lambda Examples</h4>
<pre style='background: #0f172a; color: #e2e8f0; padding: 25px; border-radius: 14px; margin: 20px 0; overflow-x: auto;'>// Basic syntax
(parameters) => expression
(parameters) => { statements }

// Examples
x => x * x                    // Single parameter
(x, y) => x + y              // Multiple parameters
() => DateTime.Now           // No parameters
x => { return x * x; }       // Statement lambda

// With LINQ
var adults = users.Where(u => u.Age >= 18);
var sorted = numbers.OrderBy(n => n);
var projected = users.Select(u => new { u.Name, u.Age });
var grouped = users.GroupBy(u => u.City);

// Event handlers
button.Click += (sender, e) => 
    Console.WriteLine("Button clicked");

// Func and Action
Func<int, int, int> add = (a, b) => a + b;
Action<string> print = s => Console.WriteLine(s);

// Expression-bodied members
public string Name => firstName + " " + lastName;
public int Sum() => a + b;

// Multiple statements
Func<int, int> calculate = x =>
{
    var y = x * 2;
    return y + 5;
};

// Discard parameter
button.Click += (_, _) => HandleClick();

// Tuple returns
Func<int, int> getMultiplied = x => x switch
{
    > 10 => x * 2,
    > 5 => x * 3,
    _ => x
};</pre>
</p></div>
<div style='background: #d4edda; padding: 35px; border-radius: 20px; margin: 50px 0; border-left: 6px solid #28a745;'>
<h4 style='color: #155724; margin: 0 0 20px 0; font-size: 1.7em; font-weight: 700;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Lambda Tips</h4>
<ul style='color: #155724; font-size: 1.1em; line-height: 2.2; margin: 0; padding-left: 25px;'>
<li>Keep lambdas short and readable</li>
<li>Use meaningful parameter names</li>
<li>Use discard _ for unused parameters</li>
<li>Avoid side effects in expressions</li>
<li>Use with LINQ for readability</li>
</ul></div>
<blockquote style='background: linear-gradient(135deg, #e8eaf6 0%, #c5cae9 100%); border-left: 8px solid #5c6bc0; padding: 45px; margin: 60px 0 30px 0; border-radius: 24px;'>
<p style='font-size: 1.4em; line-height: 1.7; margin: 0; color: #1a237e; font-style: italic; font-weight: 500;'>&#8220;Lambdas make code concise. Perfect for LINQ and events. Essential for modern C#.&#8221;</p>
<footer style='margin-top: 25px; color: #283593; font-size: 1em; font-weight: 600;'>— C# Developer</footer>
</blockquote>
]]></content:encoded>
					
					<wfw:commentRss>http://blog.ercanopak.com/c-use-lambda-expressions-for-concise-code-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>SQL: Use GROUP BY for Data Aggregation</title>
		<link>http://blog.ercanopak.com/sql-use-group-by-for-data-aggregation/</link>
					<comments>http://blog.ercanopak.com/sql-use-group-by-for-data-aggregation/#respond</comments>
		
		<dc:creator><![CDATA[ErcanOPAK]]></dc:creator>
		<pubDate>Sun, 12 Jul 2026 09:13:05 +0000</pubDate>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[aggregation]]></category>
		<category><![CDATA[Analysis]]></category>
		<category><![CDATA[group by]]></category>
		<guid isPermaLink="false">http://blog.ercanopak.com/sql-use-group-by-for-data-aggregation/</guid>

					<description><![CDATA[📊 GROUP BY = Data Aggregation Raw data is too detailed. GROUP BY summarizes data. Counts, sums, averages — powerful analysis. 📝 GROUP BY Basics -- Count by category SELECT category, COUNT(*) as product_count FROM products GROUP BY category; -- Sum by customer SELECT customer_id, SUM(total) as total_spent, COUNT(*) as order_count FROM orders GROUP BY [&#8230;]]]></description>
										<content:encoded><![CDATA[<div style='background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%); padding: 60px 50px; border-radius: 24px; margin: 40px 0 50px 0; box-shadow: 0 20px 60px rgba(0,0,0,0.3);'>
<h2 style='margin: 0 0 25px 0; font-size: 2.8em; font-weight: 800; color: white;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4ca.png" alt="📊" class="wp-smiley" style="height: 1em; max-height: 1em;" /> GROUP BY = Data Aggregation</h2>
<p style='font-size: 1.4em; line-height: 1.6; margin: 0; color: #e0e0e0;'>Raw data is too detailed. <strong style='color: white;'>GROUP BY</strong> summarizes data. Counts, sums, averages — powerful analysis.</p>
</p></div>
<div style='background: #f8fafc; padding: 35px; border-radius: 20px; margin: 30px 0; border: 1px solid #e2e8f0;'>
<h4 style='color: #1e293b; margin: 0 0 15px 0; font-size: 1.5em; font-weight: 700;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4dd.png" alt="📝" class="wp-smiley" style="height: 1em; max-height: 1em;" /> GROUP BY Basics</h4>
<pre style='background: #0f172a; color: #e2e8f0; padding: 25px; border-radius: 14px; margin: 20px 0; overflow-x: auto;'>-- Count by category
SELECT 
    category,
    COUNT(*) as product_count
FROM products
GROUP BY category;

-- Sum by customer
SELECT 
    customer_id,
    SUM(total) as total_spent,
    COUNT(*) as order_count
FROM orders
GROUP BY customer_id;

-- Average by department
SELECT 
    department,
    AVG(salary) as avg_salary
FROM employees
GROUP BY department;

-- Multiple groups
SELECT 
    year,
    month,
    SUM(total) as monthly_sales
FROM orders
GROUP BY year, month
ORDER BY year, month;</pre>
</p></div>
<div style='background: #f8fafc; padding: 35px; border-radius: 20px; margin: 30px 0; border: 1px solid #e2e8f0;'>
<h4 style='color: #1e293b; margin: 0 0 15px 0; font-size: 1.5em; font-weight: 700;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3af.png" alt="🎯" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Advanced GROUP BY</h4>
<pre style='background: #0f172a; color: #e2e8f0; padding: 25px; border-radius: 14px; margin: 20px 0; overflow-x: auto;'>-- GROUP BY with HAVING
SELECT 
    customer_id,
    SUM(total) as total_spent,
    COUNT(*) as order_count
FROM orders
GROUP BY customer_id
HAVING SUM(total) > 1000
AND COUNT(*) > 5;

-- GROUP BY with ROLLUP
SELECT 
    department,
    YEAR(hire_date) as year,
    COUNT(*) as employee_count
FROM employees
GROUP BY ROLLUP(department, YEAR(hire_date));

-- GROUP BY with CUBE
SELECT 
    department,
    job_title,
    COUNT(*) as employee_count
FROM employees
GROUP BY CUBE(department, job_title);

-- GROUP BY with GROUPING SETS
SELECT 
    department,
    job_title,
    COUNT(*) as employee_count
FROM employees
GROUP BY GROUPING SETS (
    (department, job_title),
    (department),
    (job_title),
    ()
);

-- Multiple aggregate functions
SELECT 
    category,
    COUNT(*) as count,
    SUM(price) as total_value,
    AVG(price) as avg_price,
    MIN(price) as min_price,
    MAX(price) as max_price
FROM products
GROUP BY category;</pre>
</p></div>
<div style='background: #fff3cd; padding: 35px; border-radius: 20px; margin: 50px 0; border-left: 6px solid #ffc107;'>
<h4 style='color: #856404; margin: 0 0 20px 0; font-size: 1.7em; font-weight: 700;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> GROUP BY Tips</h4>
<ul style='color: #856404; font-size: 1.1em; line-height: 2.2; margin: 0; padding-left: 25px;'>
<li>Use for data analysis</li>
<li>Use HAVING for group filtering</li>
<li>Use multiple columns for detailed grouping</li>
<li>Use ROLLUP for subtotals</li>
<li>Index grouped columns for performance</li>
</ul></div>
<blockquote style='background: linear-gradient(135deg, #e0f7fa 0%, #b2ebf2 100%); border-left: 8px solid #00bcd4; padding: 45px; margin: 60px 0 30px 0; border-radius: 24px;'>
<p style='font-size: 1.4em; line-height: 1.7; margin: 0; color: #006064; font-style: italic; font-weight: 500;'>&#8220;GROUP BY summarizes data. Counts, sums, averages. Essential for data analysis.&#8221;</p>
<footer style='margin-top: 25px; color: #00838f; font-size: 1em; font-weight: 600;'>— Data Analyst</footer>
</blockquote>
]]></content:encoded>
					
					<wfw:commentRss>http://blog.ercanopak.com/sql-use-group-by-for-data-aggregation/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>.NET Core: Master Routing for Clean URLs</title>
		<link>http://blog.ercanopak.com/net-core-master-routing-for-clean-urls/</link>
					<comments>http://blog.ercanopak.com/net-core-master-routing-for-clean-urls/#respond</comments>
		
		<dc:creator><![CDATA[ErcanOPAK]]></dc:creator>
		<pubDate>Sun, 12 Jul 2026 09:13:00 +0000</pubDate>
				<category><![CDATA[Asp.Net Core]]></category>
		<category><![CDATA[.Net Core]]></category>
		<category><![CDATA[mvc]]></category>
		<category><![CDATA[routing]]></category>
		<category><![CDATA[URLs]]></category>
		<guid isPermaLink="false">http://blog.ercanopak.com/net-core-master-routing-for-clean-urls/</guid>

					<description><![CDATA[🗺️ Routing = Clean URLs URLs matter. Routing maps URLs to code. Clean, semantic, SEO-friendly. 📝 Routing Basics // Program.cs var app = builder.Build(); // Basic routing app.MapGet("/", () => "Hello World!"); app.MapGet("/users", () => new[] { new { Id = 1, Name = "Alice" } }); app.MapGet("/users/{id:int}", (int id) => new { Id = [&#8230;]]]></description>
										<content:encoded><![CDATA[<div style='background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%); padding: 60px 50px; border-radius: 24px; margin: 40px 0 50px 0; box-shadow: 0 20px 60px rgba(0,0,0,0.3);'>
<h2 style='margin: 0 0 25px 0; font-size: 2.8em; font-weight: 800; color: white;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f5fa.png" alt="🗺" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Routing = Clean URLs</h2>
<p style='font-size: 1.4em; line-height: 1.6; margin: 0; color: #e0e0e0;'>URLs matter. <strong style='color: white;'>Routing</strong> maps URLs to code. Clean, semantic, SEO-friendly.</p>
</p></div>
<div style='background: #f8fafc; padding: 35px; border-radius: 20px; margin: 30px 0; border: 1px solid #e2e8f0;'>
<h4 style='color: #1e293b; margin: 0 0 15px 0; font-size: 1.5em; font-weight: 700;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4dd.png" alt="📝" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Routing Basics</h4>
<pre style='background: #0f172a; color: #e2e8f0; padding: 25px; border-radius: 14px; margin: 20px 0; overflow-x: auto;'>// Program.cs
var app = builder.Build();

// Basic routing
app.MapGet("/", () => "Hello World!");
app.MapGet("/users", () => new[] { new { Id = 1, Name = "Alice" } });
app.MapGet("/users/{id:int}", (int id) => new { Id = id, Name = $"User {id}" });
app.MapPost("/users", (User user) => Results.Created($"/users/{user.Id}", user));
app.MapPut("/users/{id:int}", (int id, User user) => Results.Ok(user));
app.MapDelete("/users/{id:int}", (int id) => Results.NoContent());

// Route constraints
app.MapGet("/users/{id:int}", (int id) => ...);
app.MapGet("/users/{name:alpha}", (string name) => ...);
app.MapGet("/users/{id:guid}", (Guid id) => ...);

// Route parameters
app.MapGet("/blog/{year:int}/{month:int}", (int year, int month) => ...);

// Route groups
var apiGroup = app.MapGroup("/api");
apiGroup.MapGet("/users", GetUsers);
apiGroup.MapGet("/users/{id:int}", GetUser);
apiGroup.MapPost("/users", CreateUser);

// Fallback route
app.MapFallback(() => Results.NotFound());</pre>
</p></div>
<div style='background: #f8fafc; padding: 35px; border-radius: 20px; margin: 30px 0; border: 1px solid #e2e8f0;'>
<h4 style='color: #1e293b; margin: 0 0 15px 0; font-size: 1.5em; font-weight: 700;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3af.png" alt="🎯" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Advanced Routing</h4>
<pre style='background: #0f172a; color: #e2e8f0; padding: 25px; border-radius: 14px; margin: 20px 0; overflow-x: auto;'>// Controller routing
[ApiController]
[Route("api/[controller]")]
public class UsersController : ControllerBase
{
    [HttpGet]
    public IActionResult GetUsers() { ... }
    
    [HttpGet("{id:int}")]
    public IActionResult GetUser(int id) { ... }
    
    [HttpPost]
    public IActionResult CreateUser([FromBody] User user) { ... }
    
    [HttpPut("{id:int}")]
    public IActionResult UpdateUser(int id, [FromBody] User user) { ... }
    
    [HttpDelete("{id:int}")]
    public IActionResult DeleteUser(int id) { ... }
}

// Route with optional parameter
[HttpGet("{id?}")]
public IActionResult GetUser(int? id) { ... }

// Route with default value
[HttpGet("{page=1}")]
public IActionResult GetUsers(int page) { ... }

// Route constraints
[HttpGet("{id:int}"]

// Route ordering
[HttpGet("popular")]  // Must come before "{id}"

// Custom routes
app.MapGet("/stats/{*path}", (string path) => ...);</pre>
</p></div>
<div style='background: #fff3cd; padding: 35px; border-radius: 20px; margin: 50px 0; border-left: 6px solid #ffc107;'>
<h4 style='color: #856404; margin: 0 0 20px 0; font-size: 1.7em; font-weight: 700;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Routing Tips</h4>
<ul style='color: #856404; font-size: 1.1em; line-height: 2.2; margin: 0; padding-left: 25px;'>
<li>Use clean, semantic URLs</li>
<li>Use route constraints for validation</li>
<li>Group related endpoints</li>
<li>Use fallback for 404 handling</li>
<li>Order specific routes before generic</li>
</ul></div>
<blockquote style='background: linear-gradient(135deg, #e8eaf6 0%, #c5cae9 100%); border-left: 8px solid #5c6bc0; padding: 45px; margin: 60px 0 30px 0; border-radius: 24px;'>
<p style='font-size: 1.4em; line-height: 1.7; margin: 0; color: #1a237e; font-style: italic; font-weight: 500;'>&#8220;Routing creates clean URLs. Maps URLs to code. Essential for web development.&#8221;</p>
<footer style='margin-top: 25px; color: #283593; font-size: 1em; font-weight: 600;'>— .NET Developer</footer>
</blockquote>
]]></content:encoded>
					
					<wfw:commentRss>http://blog.ercanopak.com/net-core-master-routing-for-clean-urls/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Git: Use Reset to Undo Local Changes</title>
		<link>http://blog.ercanopak.com/git-use-reset-to-undo-local-changes/</link>
					<comments>http://blog.ercanopak.com/git-use-reset-to-undo-local-changes/#respond</comments>
		
		<dc:creator><![CDATA[ErcanOPAK]]></dc:creator>
		<pubDate>Sun, 12 Jul 2026 09:12:55 +0000</pubDate>
				<category><![CDATA[Git]]></category>
		<category><![CDATA[Local Changes]]></category>
		<category><![CDATA[reset]]></category>
		<category><![CDATA[Undo]]></category>
		<guid isPermaLink="false">http://blog.ercanopak.com/git-use-reset-to-undo-local-changes/</guid>

					<description><![CDATA[↩️ Git Reset = Undo Local Changes Made a mistake? Git reset undoes local changes. Soft, mixed, hard — choose wisely. 📝 Reset Types # Soft Reset git reset --soft HEAD~1 # Moves HEAD back # Changes stay in staging # Mixed Reset (default) git reset --mixed HEAD~1 git reset HEAD~1 # Moves HEAD back [&#8230;]]]></description>
										<content:encoded><![CDATA[<div style='background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%); padding: 60px 50px; border-radius: 24px; margin: 40px 0 50px 0; box-shadow: 0 20px 60px rgba(0,0,0,0.3);'>
<h2 style='margin: 0 0 25px 0; font-size: 2.8em; font-weight: 800; color: white;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/21a9.png" alt="↩" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Git Reset = Undo Local Changes</h2>
<p style='font-size: 1.4em; line-height: 1.6; margin: 0; color: #e0e0e0;'>Made a mistake? <strong style='color: white;'>Git reset</strong> undoes local changes. Soft, mixed, hard — choose wisely.</p>
</p></div>
<div style='background: #f8fafc; padding: 35px; border-radius: 20px; margin: 30px 0; border: 1px solid #e2e8f0;'>
<h4 style='color: #1e293b; margin: 0 0 15px 0; font-size: 1.5em; font-weight: 700;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4dd.png" alt="📝" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Reset Types</h4>
<pre style='background: #0f172a; color: #e2e8f0; padding: 25px; border-radius: 14px; margin: 20px 0; overflow-x: auto;'># Soft Reset
git reset --soft HEAD~1
# Moves HEAD back
# Changes stay in staging

# Mixed Reset (default)
git reset --mixed HEAD~1
git reset HEAD~1
# Moves HEAD back
# Changes stay in working directory

# Hard Reset
git reset --hard HEAD~1
# Moves HEAD back
# Changes are lost (careful!)

# Reset to specific commit
git reset --hard commit-hash

# Unstage files (mixed)
git reset HEAD file.txt

# Discard changes (hard)
git reset --hard HEAD
git checkout -- file.txt

# Undo reset (reflog)
git reflog
git reset --hard HEAD@{1}</pre>
</p></div>
<div style='background: #f8fafc; padding: 35px; border-radius: 20px; margin: 30px 0; border: 1px solid #e2e8f0;'>
<h4 style='color: #1e293b; margin: 0 0 15px 0; font-size: 1.5em; font-weight: 700;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3af.png" alt="🎯" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Reset Examples</h4>
<pre style='background: #0f172a; color: #e2e8f0; padding: 25px; border-radius: 14px; margin: 20px 0; overflow-x: auto;'># Undo last commit (keep changes)
git reset --soft HEAD~1
git status
# Changes still staged

# Undo last commit (unstage changes)
git reset HEAD~1
# Changes in working directory

# Undo last commit (lose changes)
git reset --hard HEAD~1
# Changes lost

# Undo multiple commits
git reset --hard HEAD~3

# Undo to specific commit
git log --oneline
# abc1234 Latest commit
# def5678 Previous commit
git reset --hard def5678

# Undo git add
git reset HEAD file.txt
git reset              # All files

# Undo git add (alternative)
git restore --staged file.txt

# Undo file changes
git checkout -- file.txt
git restore file.txt

# Undo git reset (reflog)
git reflog
# abc1234 HEAD@{0}: reset: moving to HEAD~1
# def5678 HEAD@{1}: commit: Latest commit
git reset --hard def5678</pre>
</p></div>
<div style='background: #d4edda; padding: 35px; border-radius: 20px; margin: 50px 0; border-left: 6px solid #28a745;'>
<h4 style='color: #155724; margin: 0 0 20px 0; font-size: 1.7em; font-weight: 700;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Reset Tips</h4>
<ul style='color: #155724; font-size: 1.1em; line-height: 2.2; margin: 0; padding-left: 25px;'>
<li>Use &#8211;soft to keep changes</li>
<li>Use &#8211;hard carefully (loses changes)</li>
<li>Use git reflog to undo reset</li>
<li>Use for local, unpushed commits</li>
<li>Don&#8217;t reset shared branches</li>
</ul></div>
<blockquote style='background: linear-gradient(135deg, #e0f7fa 0%, #b2ebf2 100%); border-left: 8px solid #00bcd4; padding: 45px; margin: 60px 0 30px 0; border-radius: 24px;'>
<p style='font-size: 1.4em; line-height: 1.7; margin: 0; color: #006064; font-style: italic; font-weight: 500;'>&#8220;Git reset undoes local changes. Soft, mixed, hard — choose wisely. Essential for Git workflow.&#8221;</p>
<footer style='margin-top: 25px; color: #00838f; font-size: 1em; font-weight: 600;'>— Git User</footer>
</blockquote>
]]></content:encoded>
					
					<wfw:commentRss>http://blog.ercanopak.com/git-use-reset-to-undo-local-changes/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Ajax: Use Axios for HTTP Requests</title>
		<link>http://blog.ercanopak.com/ajax-use-axios-for-http-requests/</link>
					<comments>http://blog.ercanopak.com/ajax-use-axios-for-http-requests/#respond</comments>
		
		<dc:creator><![CDATA[ErcanOPAK]]></dc:creator>
		<pubDate>Sun, 12 Jul 2026 09:12:50 +0000</pubDate>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[Axios]]></category>
		<category><![CDATA[client]]></category>
		<category><![CDATA[http]]></category>
		<guid isPermaLink="false">http://blog.ercanopak.com/ajax-use-axios-for-http-requests/</guid>

					<description><![CDATA[📡 Axios = HTTP Client Fetch is basic. Axios is feature-rich. Interceptors, error handling, automatic JSON. 📝 Axios Setup # Install npm install axios # Basic GET import axios from 'axios'; axios.get('https://api.example.com/data') .then(response => console.log(response.data)) .catch(error => console.error(error)); # POST axios.post('https://api.example.com/data', { name: 'Alice', email: 'alice@example.com' }) .then(response => console.log(response.data)) .catch(error => console.error(error)); # Async/Await [&#8230;]]]></description>
										<content:encoded><![CDATA[<div style='background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%); padding: 60px 50px; border-radius: 24px; margin: 40px 0 50px 0; box-shadow: 0 20px 60px rgba(0,0,0,0.3);'>
<h2 style='margin: 0 0 25px 0; font-size: 2.8em; font-weight: 800; color: white;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4e1.png" alt="📡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Axios = HTTP Client</h2>
<p style='font-size: 1.4em; line-height: 1.6; margin: 0; color: #e0e0e0;'>Fetch is basic. <strong style='color: white;'>Axios</strong> is feature-rich. Interceptors, error handling, automatic JSON.</p>
</p></div>
<div style='background: #f8fafc; padding: 35px; border-radius: 20px; margin: 30px 0; border: 1px solid #e2e8f0;'>
<h4 style='color: #1e293b; margin: 0 0 15px 0; font-size: 1.5em; font-weight: 700;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4dd.png" alt="📝" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Axios Setup</h4>
<pre style='background: #0f172a; color: #e2e8f0; padding: 25px; border-radius: 14px; margin: 20px 0; overflow-x: auto;'># Install
npm install axios

# Basic GET
import axios from 'axios';

axios.get('https://api.example.com/data')
    .then(response => console.log(response.data))
    .catch(error => console.error(error));

# POST
axios.post('https://api.example.com/data', {
    name: 'Alice',
    email: 'alice@example.com'
})
.then(response => console.log(response.data))
.catch(error => console.error(error));

# Async/Await
try {
    const response = await axios.get('https://api.example.com/data');
    console.log(response.data);
} catch (error) {
    console.error(error);
}

# Global defaults
axios.defaults.baseURL = 'https://api.example.com';
axios.defaults.headers.common['Authorization'] = 'Bearer token';
axios.defaults.timeout = 10000;</pre>
</p></div>
<div style='background: #f8fafc; padding: 35px; border-radius: 20px; margin: 30px 0; border: 1px solid #e2e8f0;'>
<h4 style='color: #1e293b; margin: 0 0 15px 0; font-size: 1.5em; font-weight: 700;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3af.png" alt="🎯" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Axios Features</h4>
<pre style='background: #0f172a; color: #e2e8f0; padding: 25px; border-radius: 14px; margin: 20px 0; overflow-x: auto;'>// Interceptors
axios.interceptors.request.use(config => {
    config.headers.Authorization = `Bearer ${token}`;
    return config;
});

axios.interceptors.response.use(
    response => response,
    error => {
        if (error.response?.status === 401) {
            // Handle unauthorized
        }
        return Promise.reject(error);
    }
);

// Cancel requests
const controller = new AbortController();
axios.get('/api/data', { signal: controller.signal });
controller.abort();

// Concurrent requests
const [users, posts] = await Promise.all([
    axios.get('/api/users'),
    axios.get('/api/posts')
]);

// Create instance
const api = axios.create({
    baseURL: 'https://api.example.com',
    timeout: 1000,
    headers: {'X-Custom-Header': 'foobar'}
});

// Progress tracking
axios.post('/api/upload', formData, {
    onUploadProgress: progressEvent => {
        const percent = (progressEvent.loaded / progressEvent.total) * 100;
        console.log(`Upload: ${percent}%`);
    }
});

// Automatic JSON transformation
axios.post('/api/data', { name: 'Alice' }); // No need to stringify</pre>
</p></div>
<div style='background: #fff3cd; padding: 35px; border-radius: 20px; margin: 50px 0; border-left: 6px solid #ffc107;'>
<h4 style='color: #856404; margin: 0 0 20px 0; font-size: 1.7em; font-weight: 700;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Axios Tips</h4>
<ul style='color: #856404; font-size: 1.1em; line-height: 2.2; margin: 0; padding-left: 25px;'>
<li>Use interceptors for auth and logging</li>
<li>Use instances for different APIs</li>
<li>Use async/await for readability</li>
<li>Cancel requests when needed</li>
<li>Handle errors globally</li>
</ul></div>
<blockquote style='background: linear-gradient(135deg, #e8eaf6 0%, #c5cae9 100%); border-left: 8px solid #5c6bc0; padding: 45px; margin: 60px 0 30px 0; border-radius: 24px;'>
<p style='font-size: 1.4em; line-height: 1.7; margin: 0; color: #1a237e; font-style: italic; font-weight: 500;'>&#8220;Axios is a powerful HTTP client. Interceptors, error handling, automatic JSON. Essential for API calls.&#8221;</p>
<footer style='margin-top: 25px; color: #283593; font-size: 1em; font-weight: 600;'>— Fullstack Developer</footer>
</blockquote>
]]></content:encoded>
					
					<wfw:commentRss>http://blog.ercanopak.com/ajax-use-axios-for-http-requests/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>JavaScript: Understand Hoisting</title>
		<link>http://blog.ercanopak.com/javascript-understand-hoisting/</link>
					<comments>http://blog.ercanopak.com/javascript-understand-hoisting/#respond</comments>
		
		<dc:creator><![CDATA[ErcanOPAK]]></dc:creator>
		<pubDate>Sun, 12 Jul 2026 09:12:46 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Hoisting]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[scope]]></category>
		<category><![CDATA[Variables]]></category>
		<guid isPermaLink="false">http://blog.ercanopak.com/javascript-understand-hoisting/</guid>

					<description><![CDATA[📤 Hoisting = Declaration Lifting Variables behave strangely. Hoisting explains it. Declarations lifted, assignments stay. 📝 Hoisting Examples // var hoisting console.log(x); // undefined (not error) var x = 5; // Equivalent to: var x; console.log(x); // undefined x = 5; // function hoisting sayHello(); // "Hello" function sayHello() { console.log('Hello'); } // function expression [&#8230;]]]></description>
										<content:encoded><![CDATA[<div style='background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%); padding: 60px 50px; border-radius: 24px; margin: 40px 0 50px 0; box-shadow: 0 20px 60px rgba(0,0,0,0.3);'>
<h2 style='margin: 0 0 25px 0; font-size: 2.8em; font-weight: 800; color: white;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4e4.png" alt="📤" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Hoisting = Declaration Lifting</h2>
<p style='font-size: 1.4em; line-height: 1.6; margin: 0; color: #e0e0e0;'>Variables behave strangely. <strong style='color: white;'>Hoisting</strong> explains it. Declarations lifted, assignments stay.</p>
</p></div>
<div style='background: #f8fafc; padding: 35px; border-radius: 20px; margin: 30px 0; border: 1px solid #e2e8f0;'>
<h4 style='color: #1e293b; margin: 0 0 15px 0; font-size: 1.5em; font-weight: 700;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4dd.png" alt="📝" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Hoisting Examples</h4>
<pre style='background: #0f172a; color: #e2e8f0; padding: 25px; border-radius: 14px; margin: 20px 0; overflow-x: auto;'>// var hoisting
console.log(x); // undefined (not error)
var x = 5;

// Equivalent to:
var x;
console.log(x); // undefined
x = 5;

// function hoisting
sayHello(); // "Hello"
function sayHello() {
    console.log('Hello');
}

// function expression (not hoisted)
sayGoodbye(); // Error: not a function
var sayGoodbye = function() {
    console.log('Goodbye');
};

// let and const (temporal dead zone)
console.log(y); // ReferenceError
let y = 5;

// Temporal Dead Zone (TDZ)
// let/const are hoisted but not initialized
{
    // TDZ starts
    console.log(z); // ReferenceError
    let z = 10;
    // TDZ ends
}

// var vs let
console.log(a); // undefined
var a = 5;

console.log(b); // ReferenceError
let b = 5;

// Hoisting in functions
var name = 'Global';
function showName() {
    console.log(name); // undefined (not 'Global')
    var name = 'Local';
    console.log(name); // 'Local'
}
showName();

// Best Practice
// Declare variables at top of scope
// Use let and const instead of var
// Avoid relying on hoisting</pre>
</p></div>
<div style='background: #f8fafc; padding: 35px; border-radius: 20px; margin: 30px 0; border: 1px solid #e2e8f0;'>
<h4 style='color: #1e293b; margin: 0 0 15px 0; font-size: 1.5em; font-weight: 700;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3af.png" alt="🎯" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Hoisting Rules</h4>
<pre style='background: #0f172a; color: #e2e8f0; padding: 25px; border-radius: 14px; margin: 20px 0; overflow-x: auto;'># var
- Hoisted
- Initialized as undefined
- Function scope

# let/const
- Hoisted
- Not initialized (TDZ)
- Block scope

# function declarations
- Fully hoisted
- Available anywhere

# function expressions
- Not hoisted
- Treated as variable

# Arrow functions
- Not hoisted
- Treated as variable

# Class declarations
- Hoisted
- TDZ applies

# Examples
// Class hoisting
const obj = new MyClass(); // ReferenceError
class MyClass {}

// Arrow function (not hoisted)
arrowFunc(); // TypeError
var arrowFunc = () => console.log('Hi');

// Function in block
if (true) {
    function foo() { return 1; }
} else {
    function foo() { return 2; }
}
console.log(foo()); // Varies by browser (avoid this)

// Best practices
- Use let/const instead of var
- Declare variables at top
- Avoid hoisting confusion
- Use function declarations for hoisting</pre>
</p></div>
<div style='background: #fff3cd; padding: 35px; border-radius: 20px; margin: 50px 0; border-left: 6px solid #ffc107;'>
<h4 style='color: #856404; margin: 0 0 20px 0; font-size: 1.7em; font-weight: 700;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Hoisting Tips</h4>
<ul style='color: #856404; font-size: 1.1em; line-height: 2.2; margin: 0; padding-left: 25px;'>
<li>Use let and const instead of var</li>
<li>Declare variables at top of scope</li>
<li>Understand TDZ for let/const</li>
<li>Function declarations are hoisted</li>
<li>Avoid relying on hoisting</li>
</ul></div>
<blockquote style='background: linear-gradient(135deg, #e0f7fa 0%, #b2ebf2 100%); border-left: 8px solid #00bcd4; padding: 45px; margin: 60px 0 30px 0; border-radius: 24px;'>
<p style='font-size: 1.4em; line-height: 1.7; margin: 0; color: #006064; font-style: italic; font-weight: 500;'>&#8220;Hoisting explains variable behavior. Declarations lifted, assignments stay. Essential for JavaScript understanding.&#8221;</p>
<footer style='margin-top: 25px; color: #00838f; font-size: 1em; font-weight: 600;'>— JavaScript Developer</footer>
</blockquote>
]]></content:encoded>
					
					<wfw:commentRss>http://blog.ercanopak.com/javascript-understand-hoisting/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>HTML: Use Web Storage for Client-Side Data</title>
		<link>http://blog.ercanopak.com/html-use-web-storage-for-client-side-data-2/</link>
					<comments>http://blog.ercanopak.com/html-use-web-storage-for-client-side-data-2/#respond</comments>
		
		<dc:creator><![CDATA[ErcanOPAK]]></dc:creator>
		<pubDate>Sun, 12 Jul 2026 09:12:41 +0000</pubDate>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[LocalStorage]]></category>
		<category><![CDATA[SessionStorage]]></category>
		<category><![CDATA[Web Storage]]></category>
		<guid isPermaLink="false">http://blog.ercanopak.com/html-use-web-storage-for-client-side-data-2/</guid>

					<description><![CDATA[💾 Web Storage = Client-Side Data Need to store data in browser? Web Storage persists data. Preferences, sessions, carts. 📝 Storage Methods // LocalStorage (persistent) localStorage.setItem('key', 'value'); const value = localStorage.getItem('key'); localStorage.removeItem('key'); localStorage.clear(); // SessionStorage (session only) sessionStorage.setItem('key', 'value'); const value = sessionStorage.getItem('key'); sessionStorage.removeItem('key'); sessionStorage.clear(); // Store objects const user = { name: 'Alice', age: [&#8230;]]]></description>
										<content:encoded><![CDATA[<div style='background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%); padding: 60px 50px; border-radius: 24px; margin: 40px 0 50px 0; box-shadow: 0 20px 60px rgba(0,0,0,0.3);'>
<h2 style='margin: 0 0 25px 0; font-size: 2.8em; font-weight: 800; color: white;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4be.png" alt="💾" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Web Storage = Client-Side Data</h2>
<p style='font-size: 1.4em; line-height: 1.6; margin: 0; color: #e0e0e0;'>Need to store data in browser? <strong style='color: white;'>Web Storage</strong> persists data. Preferences, sessions, carts.</p>
</p></div>
<div style='background: #f8fafc; padding: 35px; border-radius: 20px; margin: 30px 0; border: 1px solid #e2e8f0;'>
<h4 style='color: #1e293b; margin: 0 0 15px 0; font-size: 1.5em; font-weight: 700;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4dd.png" alt="📝" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Storage Methods</h4>
<pre style='background: #0f172a; color: #e2e8f0; padding: 25px; border-radius: 14px; margin: 20px 0; overflow-x: auto;'>// LocalStorage (persistent)
localStorage.setItem('key', 'value');
const value = localStorage.getItem('key');
localStorage.removeItem('key');
localStorage.clear();

// SessionStorage (session only)
sessionStorage.setItem('key', 'value');
const value = sessionStorage.getItem('key');
sessionStorage.removeItem('key');
sessionStorage.clear();

// Store objects
const user = { name: 'Alice', age: 30 };
localStorage.setItem('user', JSON.stringify(user));
const userData = JSON.parse(localStorage.getItem('user'));

// Check if exists
if (localStorage.getItem('key') !== null) {
    // Key exists
}

// Get all keys
const keys = Object.keys(localStorage);
for (let key of keys) {
    console.log(key, localStorage.getItem(key));
}

// Event listener (other tabs)
window.addEventListener('storage', function(e) {
    console.log('Storage changed:', e.key, e.newValue);
});</pre>
</p></div>
<div style='background: #f8fafc; padding: 35px; border-radius: 20px; margin: 30px 0; border: 1px solid #e2e8f0;'>
<h4 style='color: #1e293b; margin: 0 0 15px 0; font-size: 1.5em; font-weight: 700;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3af.png" alt="🎯" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Practical Examples</h4>
<pre style='background: #0f172a; color: #e2e8f0; padding: 25px; border-radius: 14px; margin: 20px 0; overflow-x: auto;'>// Theme preference
function saveTheme(theme) {
    localStorage.setItem('theme', theme);
}
function getTheme() {
    return localStorage.getItem('theme') || 'light';
}

// Form data persistence
function saveFormData(formData) {
    sessionStorage.setItem('formData', JSON.stringify(formData));
}
function getFormData() {
    const data = sessionStorage.getItem('formData');
    return data ? JSON.parse(data) : {};
}

// Shopping cart
const cart = [
    { id: 1, name: 'Product 1', price: 99 },
    { id: 2, name: 'Product 2', price: 149 }
];
localStorage.setItem('cart', JSON.stringify(cart));
const savedCart = JSON.parse(localStorage.getItem('cart') || '[]');

// User session
function saveSession(user) {
    sessionStorage.setItem('session', JSON.stringify(user));
}
function getSession() {
    const session = sessionStorage.getItem('session');
    return session ? JSON.parse(session) : null;
}
function clearSession() {
    sessionStorage.removeItem('session');
}

// Remember me
function rememberMe(email) {
    if (email) {
        localStorage.setItem('rememberEmail', email);
    } else {
        localStorage.removeItem('rememberEmail');
    }
}</pre>
</p></div>
<div style='background: #fff3cd; padding: 35px; border-radius: 20px; margin: 50px 0; border-left: 6px solid #ffc107;'>
<h4 style='color: #856404; margin: 0 0 20px 0; font-size: 1.7em; font-weight: 700;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Storage Tips</h4>
<ul style='color: #856404; font-size: 1.1em; line-height: 2.2; margin: 0; padding-left: 25px;'>
<li>5-10 MB storage limit</li>
<li>String data only (use JSON)</li>
<li>Not secure (plain text)</li>
<li>Same-origin policy</li>
<li>Not for sensitive data</li>
</ul></div>
<blockquote style='background: linear-gradient(135deg, #e8eaf6 0%, #c5cae9 100%); border-left: 8px solid #5c6bc0; padding: 45px; margin: 60px 0 30px 0; border-radius: 24px;'>
<p style='font-size: 1.4em; line-height: 1.7; margin: 0; color: #1a237e; font-style: italic; font-weight: 500;'>&#8220;Web Storage saves data in browser. Preferences, sessions, carts. Essential for client-side apps.&#8221;</p>
<footer style='margin-top: 25px; color: #283593; font-size: 1em; font-weight: 600;'>— Frontend Developer</footer>
</blockquote>
]]></content:encoded>
					
					<wfw:commentRss>http://blog.ercanopak.com/html-use-web-storage-for-client-side-data-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>CSS: Use Filter Effects for Visual Magic</title>
		<link>http://blog.ercanopak.com/css-use-filter-effects-for-visual-magic/</link>
					<comments>http://blog.ercanopak.com/css-use-filter-effects-for-visual-magic/#respond</comments>
		
		<dc:creator><![CDATA[ErcanOPAK]]></dc:creator>
		<pubDate>Sun, 12 Jul 2026 09:12:36 +0000</pubDate>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[Effects]]></category>
		<category><![CDATA[filters]]></category>
		<category><![CDATA[images]]></category>
		<guid isPermaLink="false">http://blog.ercanopak.com/css-use-filter-effects-for-visual-magic/</guid>

					<description><![CDATA[🎨 Filter Effects = Visual Magic Images need effects. CSS filters apply visual effects. Blur, brightness, contrast — no Photoshop needed. 📝 Filter Functions /* Blur */ filter: blur(5px); filter: blur(2px); /* Brightness */ filter: brightness(0.8); filter: brightness(1.2); filter: brightness(200%); /* Contrast */ filter: contrast(1.5); filter: contrast(200%); /* Grayscale */ filter: grayscale(100%); filter: grayscale(0.5); /* [&#8230;]]]></description>
										<content:encoded><![CDATA[<div style='background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%); padding: 60px 50px; border-radius: 24px; margin: 40px 0 50px 0; box-shadow: 0 20px 60px rgba(0,0,0,0.3);'>
<h2 style='margin: 0 0 25px 0; font-size: 2.8em; font-weight: 800; color: white;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3a8.png" alt="🎨" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Filter Effects = Visual Magic</h2>
<p style='font-size: 1.4em; line-height: 1.6; margin: 0; color: #e0e0e0;'>Images need effects. <strong style='color: white;'>CSS filters</strong> apply visual effects. Blur, brightness, contrast — no Photoshop needed.</p>
</p></div>
<div style='background: #f8fafc; padding: 35px; border-radius: 20px; margin: 30px 0; border: 1px solid #e2e8f0;'>
<h4 style='color: #1e293b; margin: 0 0 15px 0; font-size: 1.5em; font-weight: 700;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4dd.png" alt="📝" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Filter Functions</h4>
<pre style='background: #0f172a; color: #e2e8f0; padding: 25px; border-radius: 14px; margin: 20px 0; overflow-x: auto;'>/* Blur */
filter: blur(5px);
filter: blur(2px);

/* Brightness */
filter: brightness(0.8);
filter: brightness(1.2);
filter: brightness(200%);

/* Contrast */
filter: contrast(1.5);
filter: contrast(200%);

/* Grayscale */
filter: grayscale(100%);
filter: grayscale(0.5);

/* Hue Rotate */
filter: hue-rotate(90deg);
filter: hue-rotate(180deg);

/* Invert */
filter: invert(100%);
filter: invert(0.8);

/* Opacity */
filter: opacity(0.5);
filter: opacity(80%);

/* Saturate */
filter: saturate(2);
filter: saturate(0.5);

/* Sepia */
filter: sepia(100%);
filter: sepia(0.8);

/* Multiple filters */
filter: blur(2px) brightness(1.2) saturate(1.5);

/* Drop shadow */
filter: drop-shadow(2px 2px 4px rgba(0,0,0,0.5));</pre>
</p></div>
<div style='background: #f8fafc; padding: 35px; border-radius: 20px; margin: 30px 0; border: 1px solid #e2e8f0;'>
<h4 style='color: #1e293b; margin: 0 0 15px 0; font-size: 1.5em; font-weight: 700;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3af.png" alt="🎯" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Practical Examples</h4>
<pre style='background: #0f172a; color: #e2e8f0; padding: 25px; border-radius: 14px; margin: 20px 0; overflow-x: auto;'>/* Hover effects */
.image:hover {
    filter: blur(2px) brightness(0.8);
}

/* Card hover */
.card:hover img {
    filter: scale(1.1) brightness(0.9);
}

/* Dark overlay */
.image-dark {
    filter: brightness(0.6) contrast(1.2);
}

/* Vintage effect */
.vintage {
    filter: sepia(0.8) saturate(0.5) contrast(1.1);
}

/* Neon glow */
.neon {
    filter: drop-shadow(0 0 10px #ff6b6b) brightness(1.2);
}

/* Blur background */
.hero-blur {
    filter: blur(8px);
    transform: scale(1.1);
}

/* Color pop */
.color-pop {
    filter: saturate(1.5) contrast(1.2);
}

/* Instagram-like filters */
/* Clarendon */
.clarendon {
    filter: contrast(1.2) brightness(1.1) saturate(1.3);
}

/* Gingham */
.gingham {
    filter: brightness(1.1) saturate(0.9) sepia(0.2);
}

/* Moon */
.moon {
    filter: grayscale(0.8) contrast(1.2) brightness(0.9);
}</pre>
</p></div>
<div style='background: #fff3cd; padding: 35px; border-radius: 20px; margin: 50px 0; border-left: 6px solid #ffc107;'>
<h4 style='color: #856404; margin: 0 0 20px 0; font-size: 1.7em; font-weight: 700;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Filter Tips</h4>
<ul style='color: #856404; font-size: 1.1em; line-height: 2.2; margin: 0; padding-left: 25px;'>
<li>Use for hover effects</li>
<li>Use for image enhancements</li>
<li>Combine multiple filters</li>
<li>Use drop-shadow for realistic shadows</li>
<li>Use sparingly for performance</li>
</ul></div>
<blockquote style='background: linear-gradient(135deg, #e0f7fa 0%, #b2ebf2 100%); border-left: 8px solid #00bcd4; padding: 45px; margin: 60px 0 30px 0; border-radius: 24px;'>
<p style='font-size: 1.4em; line-height: 1.7; margin: 0; color: #006064; font-style: italic; font-weight: 500;'>&#8220;CSS filters apply visual effects. Blur, brightness, contrast. Essential for image styling.&#8221;</p>
<footer style='margin-top: 25px; color: #00838f; font-size: 1em; font-weight: 600;'>— Web Designer</footer>
</blockquote>
]]></content:encoded>
					
					<wfw:commentRss>http://blog.ercanopak.com/css-use-filter-effects-for-visual-magic/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Windows 11: Unlock God Mode for All Settings</title>
		<link>http://blog.ercanopak.com/windows-11-unlock-god-mode-for-all-settings/</link>
					<comments>http://blog.ercanopak.com/windows-11-unlock-god-mode-for-all-settings/#respond</comments>
		
		<dc:creator><![CDATA[ErcanOPAK]]></dc:creator>
		<pubDate>Sun, 12 Jul 2026 09:12:31 +0000</pubDate>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[God Mode]]></category>
		<category><![CDATA[Power User]]></category>
		<category><![CDATA[windows 11]]></category>
		<guid isPermaLink="false">http://blog.ercanopak.com/windows-11-unlock-god-mode-for-all-settings/</guid>

					<description><![CDATA[👑 God Mode = All Settings Settings are scattered. God Mode brings them all together. One folder, all controls. 📝 Enable God Mode # Create God Mode Folder 1. Right-click on Desktop 2. New → Folder 3. Name the folder: GodMode.{ED7BA470-8E54-465E-825C-99712043E01C} # Access God Mode - Double-click folder - See all settings # What's Inside [&#8230;]]]></description>
										<content:encoded><![CDATA[<div style='background: linear-gradient(135deg, #0f2027 0%, #203a43 100%); padding: 60px 50px; border-radius: 24px; margin: 40px 0 50px 0; box-shadow: 0 20px 60px rgba(0,0,0,0.3);'>
<h2 style='margin: 0 0 25px 0; font-size: 2.8em; font-weight: 800; color: white;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f451.png" alt="👑" class="wp-smiley" style="height: 1em; max-height: 1em;" /> God Mode = All Settings</h2>
<p style='font-size: 1.4em; line-height: 1.6; margin: 0; color: #e0e0e0;'>Settings are scattered. <strong style='color: white;'>God Mode</strong> brings them all together. One folder, all controls.</p>
</p></div>
<div style='background: #f8fafc; padding: 35px; border-radius: 20px; margin: 30px 0; border: 1px solid #e2e8f0;'>
<h4 style='color: #1e293b; margin: 0 0 15px 0; font-size: 1.5em; font-weight: 700;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4dd.png" alt="📝" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Enable God Mode</h4>
<pre style='background: #0f172a; color: #e2e8f0; padding: 25px; border-radius: 14px; margin: 20px 0; overflow-x: auto;'># Create God Mode Folder
1. Right-click on Desktop
2. New → Folder
3. Name the folder:
   GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}

# Access God Mode
- Double-click folder
- See all settings

# What's Inside
- Administrative Tools
- Action Center
- Backup and Restore
- Color Management
- Credential Manager
- Date and Time
- Devices and Printers
- Ease of Access
- File Explorer Options
- Fonts
- Internet Options
- Keyboard
- Mouse
- Network and Sharing
- Performance Options
- Power Options
- Programs and Features
- Regional Settings
- Security and Maintenance
- Sound
- Speech Recognition
- System
- Taskbar and Navigation
- User Accounts
- Windows Defender</pre>
</p></div>
<div style='background: #f8fafc; padding: 35px; border-radius: 20px; margin: 30px 0; border: 1px solid #e2e8f0;'>
<h4 style='color: #1e293b; margin: 0 0 15px 0; font-size: 1.5em; font-weight: 700;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3af.png" alt="🎯" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Using God Mode</h4>
<pre style='background: #0f172a; color: #e2e8f0; padding: 25px; border-radius: 14px; margin: 20px 0; overflow-x: auto;'># Quick Access
- Pin to Quick Access
- Fast access to settings

# Search
- Search within God Mode
- Find settings fast

# Organization
- Grouped by category
- Alphabetical order
- Easy navigation

# Hidden Settings
- Access hidden settings
- Advanced controls
- Expert options

# Tips
- Pin to taskbar
- Create shortcut
- Use for troubleshooting
- Access rarely used settings
- Faster than Control Panel

# Common Uses
- Change power settings
- Manage user accounts
- Configure network
- Adjust performance
- Set default programs</pre>
</p></div>
<div style='background: #d4edda; padding: 35px; border-radius: 20px; margin: 50px 0; border-left: 6px solid #28a745;'>
<h4 style='color: #155724; margin: 0 0 20px 0; font-size: 1.7em; font-weight: 700;'><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> God Mode Tips</h4>
<ul style='color: #155724; font-size: 1.1em; line-height: 2.2; margin: 0; padding-left: 25px;'>
<li>Keep on desktop for quick access</li>
<li>Use for system administration</li>
<li>Find hidden settings</li>
<li>Search for specific settings</li>
<li>Pin to Quick Access</li>
</ul></div>
<blockquote style='background: linear-gradient(135deg, #e8eaf6 0%, #c5cae9 100%); border-left: 8px solid #5c6bc0; padding: 45px; margin: 60px 0 30px 0; border-radius: 24px;'>
<p style='font-size: 1.4em; line-height: 1.7; margin: 0; color: #1a237e; font-style: italic; font-weight: 500;'>&#8220;God Mode brings all settings together. One folder, all controls. Essential for power users.&#8221;</p>
<footer style='margin-top: 25px; color: #283593; font-size: 1em; font-weight: 600;'>— Power User</footer>
</blockquote>
]]></content:encoded>
					
					<wfw:commentRss>http://blog.ercanopak.com/windows-11-unlock-god-mode-for-all-settings/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
