<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>SalehTZ</title><link>http://salehtz.ir/</link><description>SalehTZ blog and website</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>mstalebizadeh@gmail.com (SalehTZ)</managingEditor><webMaster>mstalebizadeh@gmail.com (SalehTZ)</webMaster><copyright>This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.</copyright><lastBuildDate>Mon, 08 Dec 2025 14:30:44 +0330</lastBuildDate><atom:link href="http://salehtz.ir/index.xml" rel="self" type="application/rss+xml"/><item><title>Waydroid is FIRE: Native Android on Linux (X11 &amp; Wayland Guide)</title><link>http://salehtz.ir/waydroid_is_fire_native_android_on_linux/</link><pubDate>Mon, 08 Dec 2025 14:30:44 +0330</pubDate><author>Author</author><guid>http://salehtz.ir/waydroid_is_fire_native_android_on_linux/</guid><description><![CDATA[<p>Imagine running Android apps on your Linux desktop—not in a slow, heavy emulator, but <strong>natively</strong>, sharing your kernel with the host. The performance is absolutely <strong>FIRE</strong>.</p>]]></description></item><item><title>Bandit Level 11 to 12: Cracking the Caesar Cipher (ROT13)</title><link>http://salehtz.ir/bandit_11_12/</link><pubDate>Wed, 15 Oct 2025 13:45:10 +0200</pubDate><author>SalehTZ</author><guid>http://salehtz.ir/bandit_11_12/</guid><description><![CDATA[<h2 id="introduction">Introduction</h2>
<p>After decoding Base64, we now face our first real <strong>cipher</strong> in Bandit Level 11 to 12. The password isn&rsquo;t encoded for data transport; it&rsquo;s been deliberately obfuscated using a simple character-shifting algorithm.</p>
<p>This level introduces the <strong>Caesar cipher</strong>, one of the oldest and most well-known forms of encryption. We&rsquo;ll learn how to crack it with <code>tr</code>, a command-line utility for translating characters. 📜</p>
<hr>
<h2 id="the-challenge-level-11-goal">The Challenge: Level 11 Goal</h2>
<p>The level&rsquo;s objective is described as follows:</p>]]></description></item><item><title>Bandit Level 10 to 11: The Secret Language of Base64</title><link>http://salehtz.ir/bandit_10_11/</link><pubDate>Wed, 15 Oct 2025 13:42:18 +0200</pubDate><author>SalehTZ</author><guid>http://salehtz.ir/bandit_10_11/</guid><description><![CDATA[<h2 id="introduction">Introduction</h2>
<p>So far, we&rsquo;ve located files, filtered their contents, and even extracted text from binary data. Bandit Level 10 to 11 introduces a new core concept: <strong>data encoding</strong>. The password is in plain sight, but it&rsquo;s been transformed into a different format.</p>
<p>This level teaches us how to recognize and reverse Base64 encoding, a common method for representing binary data as text. 🧑‍💻</p>
<hr>
<h2 id="the-challenge-level-10-goal">The Challenge: Level 10 Goal</h2>
<p>The objective for this level is straightforward:</p>]]></description></item><item><title>Bandit Level 9 to 10: Sifting Through Binary Data with 'strings'</title><link>http://salehtz.ir/bandit_9_10/</link><pubDate>Wed, 15 Oct 2025 13:40:11 +0200</pubDate><author>SalehTZ</author><guid>http://salehtz.ir/bandit_9_10/</guid><description><![CDATA[<h2 id="introduction">Introduction</h2>
<p>In our journey so far, we&rsquo;ve dealt mostly with plain text files. Bandit Level 9 to 10 introduces a new type of challenge: extracting information from a <strong>binary file</strong>. These files are compiled for machines, not humans, and reading them with <code>cat</code> results in a mess of unreadable characters.</p>
<p>This level teaches us how to use the <code>strings</code> command, a specialized tool for finding and printing the sequences of readable text embedded within binary data. 🧐</p>]]></description></item><item><title>Introducing json2dartgen: Generate Dart Models from JSON Effortlessly 🚀</title><link>http://salehtz.ir/convert_json_to_model_flutter/</link><pubDate>Tue, 26 Aug 2025 14:17:08 +0330</pubDate><author>SalehTZ</author><guid>http://salehtz.ir/convert_json_to_model_flutter/</guid><description>If you’ve ever worked with APIs in Flutter, you know the pain: you get a massive JSON response, and now you need Dart models with `fromJson`, `toJson`, and maybe a `copyWith` method too.</description></item><item><title>What's New in Flutter 3.35.0</title><link>http://salehtz.ir/flutter_3_35_0/</link><pubDate>Sat, 16 Aug 2025 10:00:00 +0330</pubDate><author>SalehTZ</author><guid>http://salehtz.ir/flutter_3_35_0/</guid><description><![CDATA[<div class="featured-image">
                <img src="/images/posts/flutter_3_35.png" referrerpolicy="no-referrer">
            </div><!-- # Flutter 3.35.0 is Here — and I’m Proud to Be Part of It -->
<p>Flutter 3.35.0 has officially landed, bringing a host of improvements across <strong>web</strong>, <strong>desktop</strong>, <strong>accessibility</strong>, <strong>UI components</strong>, and <strong>tooling</strong>.</p>]]></description></item><item><title>How to Install Docker and Docker Compose on Ubuntu Server</title><link>http://salehtz.ir/ultimate_guide_to_install_docker/</link><pubDate>Sat, 26 Jul 2025 11:26:28 +0330</pubDate><author>SalehTZ</author><guid>http://salehtz.ir/ultimate_guide_to_install_docker/</guid><description><![CDATA[<p>Docker has revolutionized how developers build, ship, and run applications. By using containerization, it allows you to package an application with all of its dependencies into a standardized unit for software development. Whether you&rsquo;re setting up a simple project or deploying a complex backend like Appwrite, having Docker installed correctly is the essential first step.</p>
<p>This guide will walk you through the official and most straightforward method to install Docker Engine and Docker Compose on your Ubuntu 22.04 server.</p>]]></description></item><item><title>Deploying Appwrite on a VPS with Nginx: A Step-by-Step Guide</title><link>http://salehtz.ir/deploy_appwrite_to_vps_nginx/</link><pubDate>Sat, 26 Jul 2025 11:10:34 +0330</pubDate><author>SalehTZ</author><guid>http://salehtz.ir/deploy_appwrite_to_vps_nginx/</guid><description><![CDATA[<p>Self-hosting Appwrite gives you complete control over your backend infrastructure, data, and costs. It&rsquo;s a powerful solution for developers who want a flexible Backend-as-a-Service (BaaS) without vendor lock-in. However, a common challenge arises when you want to deploy Appwrite on a Virtual Private Server (VPS) that&rsquo;s already running other websites using an Nginx web server.</p>]]></description></item><item><title>Linux Command Line Cheat Sheet : 75 Essential Linux Commands</title><link>http://salehtz.ir/70-must_know_linux_commands/</link><pubDate>Mon, 23 Jun 2025 14:40:53 +0330</pubDate><author>SalehTZ</author><guid>http://salehtz.ir/70-must_know_linux_commands/</guid><description>&lt;p>The command line is where you get real control in Linux. It lets you dig into the system, automate tasks, and solve problems directly.&lt;/p></description></item><item><title>How to Deploy n8n with Docker and Nginx: The Ultimate Guide. (UPDATE: fix Connection lost issue)</title><link>http://salehtz.ir/how_to_deploy_n8n_on_server_nginx/</link><pubDate>Sat, 31 May 2025 15:15:54 +0330</pubDate><author>Author</author><guid>http://salehtz.ir/how_to_deploy_n8n_on_server_nginx/</guid><description>&lt;div class="featured-image">
                &lt;img src="/images/posts/n8n/n8n.png" referrerpolicy="no-referrer">
            &lt;/div>Learn how to deploy n8n using Docker and Nginx, and fix the common 'Connection lost' error with specific WebSocket configurations for stable workflow automation.</description></item></channel></rss>