<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های Mohammad Safa Kamali</title>
        <link>https://virgool.io/feed/@safakamali</link>
        <description>من برنامه نویس پایتون هستم و به دنیای برنامه نویسی علاقه ی بسیاری دارم.</description>
        <language>fa</language>
        <pubDate>2026-04-15 06:44:15</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/152892/avatar/hnB8AS.png?height=120&amp;width=120</url>
            <title>Mohammad Safa Kamali</title>
            <link>https://virgool.io/@safakamali</link>
        </image>

                    <item>
                <title>استفاده از React همراه با JSX بدون Node.js</title>
                <link>https://virgool.io/@safakamali/%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-react-%D9%87%D9%85%D8%B1%D8%A7%D9%87-%D8%A8%D8%A7-jsx-%D8%A8%D8%AF%D9%88%D9%86-nodejs-gmpcst6uhfvd</link>
                <description>سلام،محمد صفا کمالی، هستم و بلاخره بعد 2 سال اومدم تا یک یک چیزی که سعی کردم در موردش کنجکاوی کنم رو براتون بنویسم و با هم سعی کنیم ببینیم چطوری می تونیم از React.js بدون Node.js استفاده کنیم و همچنین بتونیم از JSX هم استفاده کنیم.در ضمن عید 1403 رو هم بهتون تبریک میگم، امیدوارم سال خوبی رو داشته باشید. 😂خوب، اول یک توضیحی در مورد React Js بدیم تا دوستانی که اطلاع ندارند با خبر بشن (البته اگر با طراحی وب و جاوا اسکریپت آشنا باشید، قطعا اسمش به گوشتون خورده و باهاش آشنا هستین و شایدم خیلی حرفه ای هستید ...)ریکت (React) یک کتابخانه ی جاوااسکریپت فرانت اند برای جاوا اسکریپت هست که به ما کمک می کنه رابط کاربری های پویا و تعاملی بسازیم. و برای استفاده از ریکت نیاز به Node.JS داریم.ولی ما اینجاییم که از Node.js استفاده نکنیم و خودمون رو به چالش بکشیم و ببینیم چه مشکلاتی برامون به وجود میاد.خوب، ابتدا من ابتدا یک فایل index.html ساختم و خواستم لایبری React رو بهش اضافه کنم.بعد از یکم تحقیق فهمیدم برای این کار باید دو لایبری react و react-dom رو به این فایل اضافه کنم، که لینک هاش این ها هستن:https://cdnjs.cloudflare.com/ajax/libs/react/18.2.0/umd/react.production.min.js
https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.2.0/umd/react-dom.production.min.jsبا این تگ های اسکریپت اضافشون کردم:&lt;script src=&amp;quothttps://cdnjs.cloudflare.com/ajax/libs/react/18.2.0/umd/react.production.min.js&amp;quot integrity=&amp;quotsha512-8Q6Y9XnTbOE+JNvjBQwJ2H8S+UV4uA6hiRykhdtIyDYZ2TprdNmWOUaKdGzOhyr4dCyk287OejbPvwl7lrfqrQ==&amp;quot crossorigin=&amp;quotanonymous&amp;quot referrerpolicy=&amp;quotno-referrer&amp;quot&gt;
&lt;script src=&amp;quothttps://cdnjs.cloudflare.com/ajax/libs/react-dom/18.2.0/umd/react-dom.production.min.js&amp;quot integrity=&amp;quotsha512-MOCpqoRoisCTwJ8vQQiciZv0qcpROCidek3GTFS6KTk2+y7munJIlKCVkFCYY+p3ErYFXCjmFjnfTTRSC1OHWQ==&amp;quot crossorigin=&amp;quotanonymous&amp;quot referrerpolicy=&amp;quotno-referrer&amp;quot&gt;خوب، در واقع ما هسته ی React رو اضافه کردیم. الان ما می تونیم کد React بنویسیم ولی نمی تونیم از سینتکس JSX استفاده کنیم و همچین چیزی داشته باشیم:JSXبدون JSX کار خیلی سخت میشه و خوانایی کد هم به شدن میاد پایین. ما نمی خوایم این بشه برای همین سعی می کنیم JSX رو هم به فایل Html سادمون اضافه کنیم. برای اضافه کردن JSX از Babel کمک می گیریم که لینکش رو تونستم گیر بیارم (خیلی کار مهمی کردم، باور کنید:). با این تگ اضافش می کنیم:&lt;script src=&amp;quothttps://unpkg.com/@babel/standalone/babel.min.js&amp;quot&gt;الان ما می تونیم کد React بنویسیم، فعلا یک تگ script به آخر صفحه اضافه می کنیم و همونطور می دونید برای نشون دادن یک یک کامپوننت یا المنت باید از ریکت بخوایم تا اون رو توی یک المنت توی صفحه نشون بده:که نتیجش چیزی جز این نشد 😁خب، به تظرتون ما کجا رو اشتباه کردیم؟ منم اول برام سوال شد ولی بعد که یک خورده توی Stackoverflow و ... گشتم فهمیدم ما باید به تگ اسکریپت بگیم که محتوی تو شامل JSX هم هست و باید با Babel اجرا بشی:&lt;script type=&amp;quottext/babel&amp;quot&gt; ... بعد از انجام این کار حاصل رو مشاهده می کنیــــــــــــم:خوب، همونطور که می دونید می ریم که یک خورده پروژه رو مرتب سازی کنیم،من دارم از Flask برای بک اند پروژه استفاده می کنم، برای همین فولدر های static و template رو ایراد نگیرید.بقیشم که توضیحی نمی خواد.فقط لازم هست هر فایلی که می خوایم import کنیم رو توی index.html به صورت text/babel اضافه کنیم.چون بدون node.js نمیشه از import استفاده کرد.یک پروژه ساده توی این مخزن گیتهاب گذاشتم می تونید برید و نگاه کنید. https://github.com/safakamali/flask-react-withoutnode.js-env ممنون که تا اینجا همراه من بودید، انشالله بعدا این مطلب رو اپدیت می کنم و این پروژه ی بالا رو هم شرح میدم.</description>
                <category>Mohammad Safa Kamali</category>
                <author>Mohammad Safa Kamali</author>
                <pubDate>Tue, 21 May 2024 09:19:02 +0330</pubDate>
            </item>
                    <item>
                <title>نسخه ی جدید سیگنال باز، UI بهتر</title>
                <link>https://virgool.io/@safakamali/new-signalbaz-jf2x0ccvekhg</link>
                <description>سلام.در پست قبلی در مورد بعضی از پروژه هام صحبت کردم و توی اون گفتم که یک پروژه ای رو هنوز دارم روش کار می کنم. می تونید این پست رو هم بخونید: https://vrgl.ir/SeXYR امروز تونستم بلاخره اولین نسخه از این پروژه رو منتشر کنم. سلام می کنیم به نسخه ی جدید سایت سیگنال بازانصافا خیلی رو این پروژه کار کردم. این پروژه بازنویسی شده ی سیگنال باز قبلی بود که به خاطر داشتن مشکلات اساسی تصمیم گرفتم دوباره باز نویسیش بکنم.یکی از چیز های مهم توی این نسخه UI خیلی بهتر هست. کاملا رسپانسیو و البته زیبا ... ?یک پنل ادمین هم براش تهیه کردم که عکسش رو براتون می گذارم:پنل ادمین سیگنال بازچیز خیلی خفنی نیست و کار راه بنداز که هست.هنوز داشبوردش رو هنوز کامل نکردم:نگران نباشید ...ممنون که این مطلب رو هم با من همراه بودید. تا مطلبی دیگر بدرود ...</description>
                <category>Mohammad Safa Kamali</category>
                <author>Mohammad Safa Kamali</author>
                <pubDate>Wed, 07 Sep 2022 22:13:11 +0430</pubDate>
            </item>
                    <item>
                <title>پروژه های من که در پشت صحنه، در حال آماده شدن هستند.</title>
                <link>https://virgool.io/@safakamali/%D9%BE%D8%B1%D9%88%DA%98%D9%87-%D9%87%D8%A7%DB%8C-%D9%85%D9%86-%DA%A9%D9%87-%D8%AF%D8%B1-%D9%BE%D8%B4%D8%AA-%D8%B5%D8%AD%D9%86%D9%87-%D8%AF%D8%B1-%D8%AD%D8%A7%D9%84-%D8%A2%D9%85%D8%A7%D8%AF%D9%87-%D8%B4%D8%AF%D9%86-%D9%87%D8%B3%D8%AA%D9%86%D8%AF-dflaceflwlae</link>
                <description>به شهر خلق ایده ها خوش آمدیدسلام.امروز می خواهم توی این مطلب در مورد یک سری پروژه صحبت کنم که این چند وقت درگیرشون بودم.بدون معطلی بریم که شروع کنیم ...سایت شخصیمسایت شخصیمفقط در این مورد این رو می تونم بگم:بعد از مدت ها از بی هویتی در اومدیم ??سعی کردم خیلی اوکی بشه که می تونید نظرتون رو درباره اش برام بنویسید.safakamali.irطراحی سایت پدر!nnnnقبل از اینکه سایت خودم رو طراحی کنم سایت پدرم رو طراحی کردم و این باعث شد به فکر طراحی سایت جدید برای خودم باشم.aum.irطراحی یک صفحه برای فروش دامنهاین پروژه نیست. ولی طراحی کردم. اگر کسی بخره (غیر ممکن ?) پنجاه میلیونش مال من می شه ??.چند روز دیگه میره رو اینترنت. (آیدی داخل تصویر مال من نیست و من صاحب دامنه نیستم)مینی مخزن در گیت هاب https://github.com/safakamali/basic-flask-app این هم پروژه نیست ولی یک وب اپلیکیشن ساده برای فلسک هست و از دوباره کاری جلوگیری می کنه.یک پروژه ی دیگه هم خیلی وقته در حال ساخت هست که انشالله به زودی معرفیش می کنم.ممنون که تا اینجا من رو همراهی کردید و صفحه رو نبستید. امیدوارم روزی از این دست مطالب بیشتری با شما به اشتراک بگذارم. تا مطلب بعدی خدانگهدار ... https://vrgl.ir/JyWA3  https://vrgl.ir/mnU2v  https://vrgl.ir/gYLH5 </description>
                <category>Mohammad Safa Kamali</category>
                <author>Mohammad Safa Kamali</author>
                <pubDate>Sun, 24 Jul 2022 18:47:46 +0430</pubDate>
            </item>
                    <item>
                <title>شروع مقدماتی برای Python Flask با کاپیتان کد (3)</title>
                <link>https://virgool.io/captaincode/%D8%B4%D8%B1%D9%88%D8%B9-%D9%85%D9%82%D8%AF%D9%85%D8%A7%D8%AA%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-python-flask-%D8%A8%D8%A7-%DA%A9%D8%A7%D9%BE%DB%8C%D8%AA%D8%A7%D9%86-%DA%A9%D8%AF-3-jotfxeaqaikl</link>
                <description>سلام.بعد از مدت زیادی دوباره اومدیم با کایپتان کد، قسمت سوم از سری شروع مقدماتی برای Python Flaskجلسه ی قبلی اومدیم و این دو کار رو یاد گرفتیم:استفاده از Template ها و ریختن قالب در فایل جداگانهمبحث Static و استفاده از استایل جداگانهتوی این قسمت می خواهیم در مورد این ها صحبت کنیم:استفاده از Url variablesانجام عملیات redirect یا تغییر مسیرشاید این ها به ظاهر ساده بیان ولی به وقتی واردشون بشید، جالب میشه!بریم که شروع کنیم ...یکی از قابلیتی که فلسک داره اینه که ما می تونیم یک قسمتی از ادرس route رو متغیر کنیم. این مثلا کجا ها استفاده می شه؟ الان می گم.برای مثال این ادرس صفحه ی &quot;همه ی مطالب&quot; یک سایت هست:https://example.com/posts/ما می خواهیم کاری کنیم که اگر نام هر مطلب بعد / آخر قرار بگیرد اون مطلب از دیتابیس خونده بشه و به کاربر نمایش داده بشه. مثال:https://example.com/posts/make-site-with-pythonمی تونیم برای همین مثال توی کدمون یک روت تعریف کنیم، فقط ما چون دیتابیس نداریم یک صفحه ی شبیه به صفحه ی مطالب ارسال می کنیم و عنوان رو توی اون قرار می دیم. یک لیست هم برای مطالبی که وجود دارند به صورت دستی تعریف می کنیم.add to app.py:@app.route(&#039;/posts/&lt;post_name&gt;&#039;)
def posts(post_name):
    all_posts = [&#039;make-site-with-python&#039;, &#039;how-to-make-cake&#039;, &#039;all-os-can-show-gui&#039;, &#039;captain code coding&#039;]
    if post_name in all_posts:
        post_name = post_name.replace(&amp;quot-&amp;quot, &amp;quot &amp;quot)
        return render_template(&amp;quotposts.html&amp;quot, name=post_name, content=f&amp;quotThis is content of &lt;b&gt;{post_name}&lt;/b&gt; post&amp;quot)
    else:
        return &amp;quotPost Not Found!&amp;quottemplates/posts.html:&lt;!doctype html&gt;
&lt;html lang=&amp;quoten&amp;quot&gt;
&lt;head&gt;
    &lt;meta charset=&amp;quotUTF-8&amp;quot&gt;
    &lt;meta name=&amp;quotviewport&amp;quot
          content=&amp;quotwidth=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0&amp;quot&gt;
    &lt;meta http-equiv=&amp;quotX-UA-Compatible&amp;quot content=&amp;quotie=edge&amp;quot&gt;
    &lt;link rel=&amp;quotstylesheet&amp;quot href=&amp;quot/static/styles/styles.css&amp;quot&gt;
    &lt;title&gt;{{ name }}&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;h1&gt;{{ name }}&lt;/h1&gt;
&lt;p&gt;
    {{ content|safe }}
&lt;/p&gt;

&lt;/body&gt;
&lt;/html&gt;همونطور که دیدید از &lt;&gt; استفاده کردیم تا بتوانیم یک متغیر رو توی url بسازیم. بعد برای فانکشنِ روت، یک ورودی گرفتیم و از اون طریق نام مطلب رو بدست آوردیم. بقیه اش هم خیلی ساده و واضح هست. خودتون بلدید.همه کد ها هر قسمت رو توی یک مخزن در گیت هاب ذخیره کردم. می تونید از قسمت انتخاب برنچ جلسه رو انتخاب کنید و پروژه رو تا توی اون قسمت ببینید. https://github.com/safakamali/flask-beginner-course از این قسمت می تونید جلسه رو انتخاب کنید.انجام عملیات redirect یا تغییر مسیربیاین برای این موضوع قدم به قدم پیش بریم:1) from flask import Flask, render_template, redirect, url_for2) کاری کنیم که اگر مطلب مساوی با captain code coding بود، ما را به صفحه ی درباره بفرست.@app.route(&#039;/posts/&lt;post_name&gt;&#039;)
def posts(post_name):
    all_posts = [&#039;make-site-with-python&#039;, &#039;how-to-make-cake&#039;, &#039;all-os-can-show-gui&#039;, &#039;captain-code-coding&#039;]
    if post_name == all_posts[3]: # captain code coding
        return redirect(url_for(&#039;about&#039;))
    elif post_name in all_posts:
        post_name = post_name.replace(&amp;quot-&amp;quot, &amp;quot &amp;quot)
        return render_template(&amp;quotposts.html&amp;quot, name=post_name, content=f&amp;quotThis is content of &lt;b&gt;{post_name}&lt;/b&gt; post&amp;quot)
    else:
        return &amp;quotPost Not Found!&amp;quotتوضیحات: تابع redirect یک ادرس می گیره و ما رو به اون صفحه ریدایرکت می کنه. ولی ما برای اینکه کارمون نظم داشته باشه و بعد راحت تر باشیم، از url_for استفاده کردیم. در url_for نام روت توی برنامه مون رو میدیم و متغیر های url رو هم میدیم و برای ما یک ریدایریکت اساسی و خلاصه ... درست می کنه.خودتون تست کنید!بعدا در پروژه ها از این زیاد استفاده می کنیم برای مثال بخش ثبت نام یا ورود.این قسمت هم به پایان رسید ...همون طور که گفتم یک مخزن کد توی گیتهاب ساختم و کد های هر جلسه رو توی اون می گذارم. این پیشنهاد دوست عزیز امیرمحمد پوراسمی بود. می تونید این مخزن رو ⭐ کنید تا همیشه در دسترستون باشه. https://github.com/safakamali/flask-beginner-course اگر سوال یا پیشنهادی دارید می تونید توی نظرات مطرح کنید. اگر هم مطلب جاییش اشکال داشت باز هم همینطور. اگر مطلب رو دوست داشتید ❤️ و اگر می خواهید این دوره رو دنبال کنید، انتشارات کاپیتان کد رو دنبال کنید.</description>
                <category>Mohammad Safa Kamali</category>
                <author>Mohammad Safa Kamali</author>
                <pubDate>Sat, 23 Jul 2022 23:29:54 +0430</pubDate>
            </item>
                    <item>
                <title>شروع مقدماتی برای Python Flask با کاپیتان کد (2)</title>
                <link>https://virgool.io/captaincode/%D8%B4%D8%B1%D9%88%D8%B9-%D9%85%D9%82%D8%AF%D9%85%D8%A7%D8%AA%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-python-flask-%D8%A8%D8%A7-%DA%A9%D8%A7%D9%BE%DB%8C%D8%AA%D8%A7%D9%86-%DA%A9%D8%AF-2-udssbh8r7q23</link>
                <description>سلامجلسه ی قبل رفتیم و یک سایت خیلی خیلی ساده ساختیم و خلاصه راه افتادیم؛ ولی این قسمت قراره یکم پیشرفته تر کار کنیم و به طور اساسی یک قالب HTML رو به کاربر نمایش بدیم. بریم که شروع کنیم ...ما توی کد جلسه ی قبل اومدیم و مستقیم یک کد HTML رو برگردوندیم. ولی این کار، اصلا کار درستی نیست! ما باید بریم و توی یک فایل جداگانه (Template) این ها رو بگذاریم و توی اون هر چی متغیر داریم رو جایگذاری کنیم. چون اگر این کار رو نکنیم، هم از یک سری امکانات محروم می شیم و هم کدمون کثیف میشه. در ادامه منظورم رو می فهمید.اول باید یک پوشه با نام templates بسازیم. این جا قراره قالب ها یا همون Template ها رو ایجاد کنیم. برای هر صفحه، ما یک قالب ایجاد می کنیم. حالا می خوایم یک قالب برای صفحه ی اصلی درست کنیم پس می ریم یک فایل توی پوشه قالب ها با نام home.html می سازیم و توش یک قالب ساده برای صفحه ی اصلی می سازیم.&lt;body&gt;

&lt;header&gt;
  &lt;h1&gt;Captain Code&lt;/h1&gt;
&lt;/header&gt;
&lt;main&gt;
    &lt;p&gt;
        &lt;a href=&amp;quothttp://localhost&amp;quot&gt;Home&lt;/a&gt;
        &lt;a href=&amp;quothttp://localhost/about&amp;quot&gt;About&lt;/a&gt;
        &lt;a href=&amp;quothttp://localhost/login&amp;quot&gt;Login&lt;/a&gt;
        &lt;a href=&amp;quothttp://localhost&amp;quot&gt;SignUp&lt;/a&gt;
    &lt;/p&gt;
&lt;/main&gt;
&lt;footer&gt;
    &lt;p&gt;
        Open Source!
    &lt;/p&gt;
&lt;/footer&gt;
&lt;/body&gt;حالا توی فایل app.py از این با استفاده از فانکشن render_template اون رو فراخونی می کنیم. ورودی اول نام فایل قالب رو می دیم و بعد Context ها رو می دیم. در ادامه ی مطلب با Context هم آشنا می شیم.from flask import Flask, render_template

app = Flask(__name__)

@app.route(&#039;/&#039;)
def home():
    return render_template(&amp;quothome.html&amp;quot)

app.run(&#039;localhost&#039;, 80, debug=True)الان با اجرا کردن سایت خروجی رو می بینیم ?خروجی!خوب الان اگر بخوایم مثلا متن فوتر رو از توی یک متغیر پایتون بخونیم باید چه کار کنیم؟ بگذارید اصلا یک صفحه ی جدید برای همین کار بسازیم. دیگه این جا رو توضیح نمی دم چون خودتون یاد دارید.کد قالب (about.html)&lt;!DOCTYPE html&gt;
&lt;html lang=&amp;quoten&amp;quot&gt;
&lt;head&gt;
    &lt;meta charset=&amp;quotUTF-8&amp;quot&gt;
    &lt;title&gt;Home Page&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;

Hello Mohammad

&lt;/body&gt;
&lt;/html&gt;کد اصلی (app.py) ^from flask import Flask, render_template

app = Flask(__name__)

@app.route(&#039;/&#039;)
def home():
    return render_template(&amp;quothome.html&amp;quot)

@app.route(&#039;/about&#039;)
def about():
    return render_template(&#039;about.html&#039;)

app.run(&#039;localhost&#039;, 80, debug=True)خوب ما می خوایم بجای متن اینکه بگه سلام محمد، به هر اسمی که ما بهش بدیم سلام کنه. برای این کار اول باید یک Context توی render_template بگذاریم:render_template(&#039;about.html&#039;, name=&#039;ali&#039;)اگر بخواهیم چند تا context بدیم میتونیم کاما (,) بگذاریم و context بعدی ...حالا می خواهیم از قابلیت های Template استفاده کنیم.به جای محمد این رو قرار بدید (توی قالب):{{ name }}به همین سادگیماجرا به این ختم نمیشه. یک عالمه قابلیت های دیگه Template ها دارن که من نمی تونم الان توی این مطلب بگمشون. مطلب بعدی میریم و با این قابلیت ها بیشتر آشنا می شیم.همچنان مطلب ادامه دارد ...خوب از این مبحث بگذریم به این می رسیم که ما چجوری باید فایل های css و جاوااسکریپت رو قرار بدیم؟برای این کار ما یک پوشه با نام static می سازیم. محتویات این پوشه به سادگی از طرف کاربر قابل استفاده هستند. یعنی اگر شما یک پوشه با نام Styles داخل پوشه ی static داشته باشید، می تونید از فایل mainstyle.css توش این شکلی استفاده کنید: http://localhost/static/styles/mainstyles.css* نکته: localhost در واقع همان ادرس اصلی سایت شما هستحالا می تونیم از استایل ها در صفحه وب استفاده کنیم:خروجی با استایلبرای این جلسه کافیه. در صورتی که می خواهید این آموزش رو پیگیری کنید کاپیتان کد رو دنبال کنید.در صورتی که خوشتون اومده از این سری ❤️ کنید...._.._.__ کاپیتان کد __._.._...</description>
                <category>Mohammad Safa Kamali</category>
                <author>Mohammad Safa Kamali</author>
                <pubDate>Sat, 18 Jun 2022 18:11:44 +0430</pubDate>
            </item>
                    <item>
                <title>شروع مقدماتی برای Python Flask با کاپیتان کد (1)</title>
                <link>https://virgool.io/captaincode/%D8%B4%D8%B1%D9%88%D8%B9-%D9%85%D9%82%D8%AF%D9%85%D8%A7%D8%AA%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-python-flask-%D8%A8%D8%A7-%DA%A9%D8%A7%D9%BE%DB%8C%D8%AA%D8%A7%D9%86-%DA%A9%D8%AF-1-m8e6jvzce9na</link>
                <description>سلام.شاید تا حالا اسم میکرو فریموورک فلسک رو شنیده باشید. امروز با هم اومدیم برای کسایی که می خواهند Flask رو شروع بکنند و به اصطلاح راه بیفتند، چند آموزش کلی ارائه دهیم. بریم که با هم شروع کنیم ...این قسمت 1 از این مطالب هست.یک موردی رو باید قبل آموزش در مورد فلسک بهتون بگم. همون طور که می دونید همه میگن فلسک برای پروژه های بزرگ (مثلا یک سایت آموزش گرافیک) مناسب نیست. و من هم تا حدی همین نظر رو دارم. امکان پذیر هست و تقریبا به مشکلی نمی خورید ولی اگه برای پروژه های بزرگ از Django استفاده کنید بعدا خیلی راحت تر هستید. چون در Flask آخر به یک عالمه فانکشن در یک فایل بر می خورید و این اصلا چیز جالبی نیست. فلسک برای وب اپ های کوچیک، سایت هایی که بخش های خیلی زیادی ندارند، مناسب است. فعلا لازم نیست در مورد این نگران باشید. ابتدا فلسک رو یاد بگیرید که ساده هست؛ بعد از چند تا پروژه زدن میرید و جنگو رو شروع می کنید. این شکلی جنگو براتون راحت تر می شه (می دونم جنگو اولش خیلی سخته).برای نصب Flask می تونید از این دستور استفاده کنید:python -m pip install flaskاول از همه یک پوشه می سازیم و توی اون یک فایل به نام app.py می سازیم.این فایل قراره هسته ی سایت ما باشه و کد های پایتونی مربوط به سایت توی این فایل قرار می گیرند.حالا باید توی فایل app.py، فلسک رو ایمپورت و ازش یک اپ بسازیم:from flask import Flask
app = Flask(__name__)در اینجا App داره به سایت ما اشاره می کنه.حالا می خوایم یک ادرس به نام hello داشته باشیم* که وقتی بهش درخواست ارسال کردیم بگه Hello User!* localhost/homeروت ها در واقع به زبان ساده یعنی یک مسیر از سایت. در این جا home یک روت هست. حالا وقتشه که روت رو تعریف کنیم:@app.route(&#039;/home&#039;)
def home():
    return &amp;quotHello User!&amp;quotو با این دستور میگیم که که سایت رو روی هاست لوکال و پورت 8000 قرار بده.و با اجرا کردن app.py خروجی رو می بینیم ?Hello User!سوال: اگر بخواهیم این پیام در صفحه ی اصلی سایت (localhost:8000) نمایش داده شود باید چه کار کنیم؟جواب: باید نام روت را &quot;/&quot; قرار دهیم. به همین سادگی.این الان یک متن ساده بود. ما می تونیم از HTML هم استفاده کنیم. (در هر سایتی باید ازش استفاده کنیم)فقط لازم به جای متن برگشت داده شده از یک کد HTML استفاده کنیم.برای مثال من در این جا روت یک روت دیگه برای صفحه ی اصلی درست کردم با HTML.from flask import Flask

app = Flask(__name__)

@app.route(&#039;/home&#039;)
def home():
    return &amp;quot&amp;quot&amp;quot
&lt;body style=&amp;quotbackground-color: orange;&amp;quot&gt;
&lt;p style=&amp;quotcolor: white;&amp;quot&gt;
Hello User! &lt;b&gt; with Style
&lt;/p&gt;
&lt;/body&gt;
&amp;quot&amp;quot&amp;quot

app.run(&#039;localhost&#039;, 8000)یک صفحه ی HTMLالان باید برنامه رو متوقف و دوباره اجراش کنیم تا تغییرات انجام بشن. ولی بهتره در زمان توسعه ی سایت در app.run برنامه رو روی حالت دیباگ بگذارید:app.run(&#039;localhost&#039;, 8000, debug=True)یکی از مزایای این حالت در زمان توسعه اینه که وقتی تغییراتی انجام بدید و ذخیره کنید برنامه بروز می شه.برای این جلسه کافیه. در جلسه ی بعد می ریم و کار با Template ها یاد می گیریم و با پوشه Static و ... آشنا می شیم.امیدوارم از این مطلب خوشتون بیاد و به کارتون بیاد. می تونید ❤️ هم کنید. اگر می خواهید بقیه آموزش ها رو دنبال کنید کاپیتان کد رو دنبال کنید. تا مطلب بعدی بدرود ...__*_کاپیتان کد_*__</description>
                <category>Mohammad Safa Kamali</category>
                <author>Mohammad Safa Kamali</author>
                <pubDate>Tue, 14 Jun 2022 20:22:55 +0430</pubDate>
            </item>
                    <item>
                <title>ساخت لودینگ ساده و زیبا (HTML و CSS) با کاپیتان کد</title>
                <link>https://virgool.io/captaincode/captaincode-loadingpage-u8k9snabxuif</link>
                <description>لودینگ شاد!سلام.امروز می خوایم توی اولین مطلب با هم یک لودینگ پیچ جالب مثل این?، برای سایتمون طراحی کنیم. می تونید این رو برای وقتی که سایتتون هنوز کامل لود نشده بگذارید.بزن بریم ...اول از همه من دو تا فایل می سازم به نام های loading.html و style.css.قراره توی فایل css، استایل ها مربوط به لودینگ رو قرار بدیم. ( خودتون می دونید چه شکلی باید تنظیم کنید )حالا میایم ساختار و به اصطلاح خود Loading رو می نویسیم:&lt;div class=&amp;quotloading&amp;quot&gt;
&lt;div class=&amp;quotloading-item&amp;quot&gt;&lt;/div&gt;
&lt;div class=&amp;quotloading-item&amp;quot&gt;&lt;/div&gt;
&lt;div class=&amp;quotloading-item&amp;quot&gt;&lt;/div&gt;
&lt;div class=&amp;quotloading-item&amp;quot&gt;&lt;/div&gt;
&lt;/div&gt;یک بدنه ساختیم و درونش توپ ها رو قرار دادیم.خوب کد HTML ما تمام شد! حالا باید بریم و استایل ها رو بنویسیم.استایل هااول از همه با بدنه ی Loading رو وسط صفحه قرار بدیم..loading {
position: absolute;
top: 50%;
left: 50%;
display: flex;
justify-content: center;
align-items: center;
transform: translate(-50%, -50%);
}حالا مییایم به همه ی توپ ها استایل می دیم تا حداقل شبیه دایره باشن ?.نکته: loading-item استایل هایی هست که برای همه ی توپ ها یکسان هست..loading .loading-item {
width: 20px;
height: 20px;
border-radius: 50%;
margin: 2px;
background-color: red;
}تا الان:توپک های افسرده!حالا وقت ایجاد انیمیشنه. سخت نیست، نگران نباشید!ابتدا انیمیشن رو تعریف می کنیم:@keyframes loading-item {
0% {
transform: translateY(0);
}
50% {
transform: translateY(-100px);
}
100% {
transform: translateY(0);
}
}این انیمیشن کاری می کنه که اول المنت هیچی به بالا نرفته باشه. بعد -100 تا میره. بعد در آخر دوباره بر می گرده سر جاش.حالا به کد یکسان همه ی توپ ها این ها رو اضافه می کنیم:animation-name: loading-item;
animation-duration: 1.5s;
animation-iteration-count: infinite; نام انیمیشن، مدت زمان اجرای انیمیشن و تعداد اجرا انیمیشن رو تنظیم کردیم ...اگه الان به خروجی نگاه کنید متوجه دو چیز می شید: رنگ توپ ها و این که همه ی توپ ها همزمان بالا و پایین میرن.با این کد ها می توانیم به راحتی این مشکل رو حل کنیم..loading .loading-item:nth-child(1) {
background-color: rgb(252, 47, 47);
animation-delay: 0ms;
}

.loading .loading-item:nth-child(2) {
background-color: rgb(47, 71, 252);
animation-delay: 100ms;
}

.loading .loading-item:nth-child(3) {
background-color: rgb(15, 182, 79);
animation-delay: 200ms;
}

.loading .loading-item:nth-child(4) {
background-color: rgb(245, 245, 14);
animation-delay: 300ms;
}با نگاه کردن به این ها متوجه می شید که اومدیم با استفاده از nth-child هر کدوم از توپ ها رو انتخاب کردیم و به هر کدوم یک پس زمینه و تاخیر برای شروع انیمیشن می دیم.کار Loading ما تموم شد. می توانید بعضی از چیز هاش رو تغییر بدید:لودینگ قرمزامیدوارم خوشتون بیاد. تا مطلب دیگر بدرود ......_.__ کاپیتان کد  __._...</description>
                <category>Mohammad Safa Kamali</category>
                <author>Mohammad Safa Kamali</author>
                <pubDate>Mon, 13 Jun 2022 17:11:59 +0430</pubDate>
            </item>
                    <item>
                <title>مسیر یادگیری برنامه نویسی برای علاقه مندان</title>
                <link>https://virgool.io/@safakamali/%D9%85%D8%B3%DB%8C%D8%B1-%DB%8C%D8%A7%D8%AF%DA%AF%DB%8C%D8%B1%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%B9%D9%84%D8%A7%D9%82%D9%87-%D9%85%D9%86%D8%AF%D8%A7%D9%86-sdocgu8j8vq6</link>
                <description>سلام.امروز می خواهم در مورد مسیر یاد گیری برنامه نویسی صحبت کنم. این مطلب رو دارم برای کسانی می نویسم که دوست دارند برنامه نویسی را یاد بگیرند ولی نمی داند از کجا باید شروع کنند و از چه راهی رو بروند.پس حرفه ای ها پاشید برید. برید دیگه چرا نگاه من می کنید؟؟! (: ?انتخاب هدفبرنامه نویسی یک حرف کلی هست. شما ابتدا باید این رو مشخص کنید که اخر می خواهید چه چیزی را ایجاد کنید. می خواهید برنامه ی موبایل بنویسید یا می خواهید یک سایت را طراحی کنید یا ...چون ما پلتفرم های مختلفی داریم (وب، موبایل، کامپیوتر و ...) و شما باید انتخاب کنید که می خواهید روی چه پلتفرمی کار کنید. در اینجا پلتفرم های اصلی رو براتون توضیح دادمقالب: نام پلتفرم | پلتفرم های زیر مجموعه | عنوان های شغلی | نمونه برنامه های مشهور | نمونه زبان های برنامه نویسیوب | ندارد |توسعه دهنده ی وب (web developer) یا طراح وب (Web designer) | سایت دیجیکالا، سایت ویرگول | PHP، پایتون، جاوا اسکریپت، پایتون، فلاتر موبایل | اندروید، IOS | برنامه نویس اندروید(android developer) یا IOS Developer | اسنپ، پیام رسان گپ | جاوا، کاتلین، Swift، فلاترکامپیوتر | ویندوز، لینوکس، Mac OS | برنامه نویس کامپیوتر (Computer programmer) یا مهندس نرم افزار ( Software engineer) | پایتون، سی شارپ، سیخوب، با مطالعه ی این ها متوجه می شوید که چیزی که از برنامه نویس در ذهن شما هست چی هست.اگر دقت کنید بعضی از زبان ها در چند پلتفرم وجود دارند. در ضمن همه ی زبان ها این ها نیستند.شاید الان حرفه ای هایی که باز هم به حرف من گوش نکردند و همچنان دارند مطلب رو می خوانند با خود بگویند: فلاتر که زبان نیست. و ... . ولی من الان دارم ساده توضیح می دهم وگرنه بعضی از این ها فریم وورک (framework) هستند و نیاز به زبان خودشان دارند.دوستانی که مبتدی (مخاطبان اصلی این مطلب) حرف های این باکس را ندیده بگیرند و فعلا خود را درگیر این نکنند تا گیج نشوند. به موقع اش خودتون این رو درک می کنید.مسیر یادگیریمن توی اینجا می خواهم در مورد نقشه ی راه هر کدوم از این پلتفرم ها صحبت کنم. می توانید فقط قسمت پلتفرم خود را بخوانید ولی خواندن دیگر بخش ها هم خالی از لطف نیست.وبوب درحال حاضر برترین پلتفرم هست. امروزه وب در زندگی مردم نقش مهمی داره. از گرفتن غذا تا نوشتن پست توی ویرگول و ...یک چیزی مهم که توی برنامه نویسی وب هست اینه کی سایت ها دو تا طرف دارن: یکی اسمش هست فرانت اند. یکی اسمش هست بک اند.فرانت اند در واقع اون چیزی هست که ما در سایت ها می بینیم یعنی ظاهر یک سایت.بک اند یعنی اون چیزی که ما نمی بینیم و در واقع پشت صحنه داره انجام می شود. یعنی پردازش های سایت.مثلا وقتی شما توی یک سایتی ثبت نام می کنید اطلاعات به بک اند فرستاده می شود و سپس اطلاعات وارد دیتابیس سایت می شود. در بک اند میشه از زبان های زیادی استفاده کرد ولی همیشه فرانت اند به زبان های HTML و CSS و Javascript هست.در مورد زبان های بک اند هم پایتون، پی اچ پی، لاراول (زیر دسته ی پی اچ پی) چیز هایی هستند که من دوست دارم.حتما در مورد این ها در جاهای دیگه تحقیق کنید چون من نمی توانم همش رو همین جا بگویم. (بک اند، فرانت اند، زبان ها)موبایلهمه ی برنامه هایی که ما روی گوشیمان نصب می کنیم در این پلتفرم قرار می گیرند. مثل اینستاگرام، تلگرام و ...شما می توانید از تکنولوژی های جاوا، کاتلین، فلاتر و ... استفاده کنید. باز هم تحقیق کنید.بهتر است چیزی را انتخاب کنید که بشود برای چند پلتفرم زیرمجموعه ی موبایل برنامه بنویسید (Cross Platform).کامپیوترهر چی که شما روی لپتاپ یا کامپیوتر نصب می کنید جز این دسته هستند.پایتون یکی از بهترین زبان ها برای این دسته هست. کلا پایتون یکی از بهترین زبان ها هست که هم توی وب و هم توی کامپیوتر قوی هست. برای کار هایی همچون آنالیز داده و ... هم حرف ندارد. البته نباید از قدرت سی شارپ هم غافل شد. ولی سی شارپ نسبت به پایتون سخت تر است. ولی باز هم یک زبان ساده هست نسبت به جاوا ?.منابع برای یادگیریدر اینجا که آخرین هست می خواهم از نظر خودم چند منبع آموزش برنامه نویسی رو براتون لیست کنم.تاپ لرنراکتسون لرندانشجو یاراین جا چهار تا از بهترین منابع رو براتون معرفی کردم که می توانید از اون ها استفاده کنید.ممنون که تا اینجا همراه من بودید و به من این فرصت رو دادید که سهمی از پیشرفت جامعه داشته باشم.حتما نظرات خودتون رو درباره این مطلب بنویسید. اگر هم جایی از نظرتون ایراد داشت بهم بگویید.با لایک کردن این مطلب خستگی نوشتن این مطلب را از بین ببرید . =&gt;❤️تا مطالب دیگر خدانگهدار.محمد صفا کمالی - http://safakamali.irگیتهاب: https://github.com/safakamaliتلگرام: @kamalisafa</description>
                <category>Mohammad Safa Kamali</category>
                <author>Mohammad Safa Kamali</author>
                <pubDate>Wed, 30 Mar 2022 18:08:37 +0430</pubDate>
            </item>
                    <item>
                <title>با پیشرفت، کوچکتر می شوم!</title>
                <link>https://virgool.io/@safakamali/%D8%A8%D8%A7-%D9%BE%DB%8C%D8%B4%D8%B1%D9%81%D8%AA-%DA%A9%D9%88%DA%86%DA%A9%D8%AA%D8%B1-%D9%85%DB%8C-%D8%B4%D9%88%D9%85-shogzktjuk1u</link>
                <description>سلام.من امروز می خواهم در این مطلب یکی از تجربیات شخصی خودم رو بیان کنم.شاید عنوان این مطلب برای شما عجیبب باشه ولی برای من نه.  من یک سری چیز ها رو در مورد پیشرفت خودم درک کردم که گفتم حیفه که با شما هم اشتراک نگذارم. (نگران نباشید. نمی خواهم از خود تعریف کنم)من تا حالا از وقتی که با برنامه نویسی آشنا شدم، در حال یادگیری مهارت های جدیدی از جمله (فلاتر، HTML/CSS/JS، ...) هستم. ...--- استوپ!بیایید ابتدا یک مثال بزنم: شاید شما هم دیده اید که وقتی بعضی از بچه های فامیل با کامپیوتر آشنا می شوند؛ بعد از دو روز می گویند من کامپیوتر را بلدم، من حرفه ام، من هکرم، من برنامه نویسم، و ...من هم اوایل همین قضیه رو داشتم. ولی ...--- ادامه! من هر چه بیشتر آشنا می شدم، تازه می فهمیدم که من زیاد بلد نیستم. چون این دنیا ی کامپیوتر و برنامه نویسی تا بینهایت ادامه داره ...ولی من در اون زمان نمی دونستم که این قدر چیز وجود داره و فقط فکر می کردم همین قدری که من بلدم وجود داره!.راستش الان که بر خیلی از تکنولوژی ها مسلط شدم، خیلی از نکات رو می دونم، و خلاصه تجربه ام زیاد شده، می فهمم که چه قدر کم بلدم، و به اون موقع ی خودم می خندم. شاید این جمله ی &quot;تجربه ام زیاد شده&quot; هم روزی تغییر کرد. چون الان هم من به خیلی از چیز ها تسلط ندارم. برای درک این تصویر رو ببینید:همین طور که می بینید من تقریبا 0 هستم دربرابر این دنیافکر کنم الان دیگه معنی عنوان رو درک کرده باشید.نتیجه گیری1-هیچ وقت نگوییم که من همه چیز را بلدم.2-به کم که بلدیم راضی نشیم و همیشه در حال یادگیری باشیم.و این پست را لایک کنیم ❤️ببخشید (:ممنون که این پست رو خوندید، حتما نظراتتون رو در این باره بنویسید.خداحافظ</description>
                <category>Mohammad Safa Kamali</category>
                <author>Mohammad Safa Kamali</author>
                <pubDate>Tue, 29 Mar 2022 19:42:30 +0430</pubDate>
            </item>
                    <item>
                <title>مواردی که می توانند ویندوز 11 را به اوج برسانند.</title>
                <link>https://virgool.io/@safakamali/%D9%85%D9%88%D8%A7%D8%B1%D8%AF%DB%8C-%DA%A9%D9%87-%D9%85%DB%8C-%D8%AA%D9%88%D8%A7%D9%86%D9%86%D8%AF-%D9%88%DB%8C%D9%86%D8%AF%D9%88%D8%B2-11-%D8%B1%D8%A7-%D8%A8%D9%87-%D8%A7%D9%88%D8%AC-%D8%A8%D8%B1%D8%B3%D8%A7%D9%86%D9%86%D8%AF-wswf7wbsrlhg</link>
                <description>سلام.ویندوز 11 می تواند از بسیاری جهات بهتر باشد. در لیست زیر انتقادات و مشکلات ویندوز 11 از نظر من امده است. به نظر من اگر این ها درست شود ویندوز 11 بهترین نسخه از سیستم عامل ویندوز خواهد شد.ضعیف بودن از نظر Drag and drop: مثلا نتوانستن پین کردن یک ایتم به تسکبار.:(منو ی استارت ضعیف: منوی استارت ویندوز 10 کاربردی تر از ویندوز 11 هست.نداشتن پیش نمایش موارد داخل پوشه در file explorer: اگر دقت کنید می فهمید که نمی توانید محتوای داخل پوشه را به صورت پیش نمایش ببینید.از نظر من این ایده جذاب می باشد: https://youtu.be/xmIBrP3zATAلطفا نظرتون رو درباره ی این ها بنویسید.</description>
                <category>Mohammad Safa Kamali</category>
                <author>Mohammad Safa Kamali</author>
                <pubDate>Mon, 14 Mar 2022 16:40:20 +0330</pubDate>
            </item>
                    <item>
                <title>روز برنامه نویسان مبارک</title>
                <link>https://virgool.io/@safakamali/%D8%B1%D9%88%D8%B2-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%D8%A7%D9%86-%D9%85%D8%A8%D8%A7%D8%B1%DA%A9-lrmjz2fwjgp3</link>
                <description>به نام خداسلام.امروز گفتم بیایم و به همه ی برنامه نویسان در این پست تبریک بگویم. امروز 11 September هست و روز برنامه نویس.من بخاطر امروز من می خواهم بخاطر این روز بزرگ یکی از برنامه هایم را با تخفیف بسیار به شما بدهم. من یک برنامه ی Safa Library Manager ساخته ام و قیمت ان را 40 هزار تومان گذاشته ام. ولی به مناسبت این روز قیمت این برنامه فقط 10 هزار تومان هست. اگر این برای معرفی این برنامه یک برنامه ی مدیریت کتابخانه ی پایتون هست که به صورت گرافیکی ساخته شده است. اگر شما برنامه نویس پایتون هستید می دانید برای مدیریت کتابخانه ها در پایتون باید از ترمینال کمک بگیرید ولی این برنامه همین کار را به صورت گرافیکی برایتان انجام می دهد.عکس هایی از این برنامه:نمایی از برنامهدیدن توضیحات کتابخانه با یک کلیک!رنگ های سفارشیبرای خرید می توانید در تلگرام به ایدی @kamalisafa پیام بدهید.دوباره روز برنامه نویس رو به همه ی برنامه نویسان تبریک می گویم.</description>
                <category>Mohammad Safa Kamali</category>
                <author>Mohammad Safa Kamali</author>
                <pubDate>Mon, 13 Sep 2021 13:38:08 +0430</pubDate>
            </item>
                    <item>
                <title>متغیر گذاری درون یک متن!</title>
                <link>https://virgool.io/@safakamali/%D9%85%D8%AA%D8%BA%DB%8C%D8%B1-%DA%AF%D8%B0%D8%A7%D8%B1%DB%8C-%D8%AF%D8%B1%D9%88%D9%86-%DB%8C%DA%A9-%D9%85%D8%AA%D9%86-ukoqoqegndxa</link>
                <description>به نام خدامقدمهسلام.برای شما تا حال پیش اومده که یک متن داشته باشید و درون اون متغیر بذارید؟ مثلا شما یک متن دارید مثل این متن:Name: AliLast Name: Ali ZadeGozinehaTamome?: Are Natars!حالا شما 100 تا نفر رو دارید و بخواهید برای هرکدام از این ها یک متن مانند همین بنویسید. خب مطمئنا شما می روید و برنامه ی Notpad رو باز می کنید و این کار رو انجام میدید ?. ولی حالا فرض کنید این متن خیلی طولانی باشه (خیلی خیلی) آیا باز هم همین کار رو می کنید؟ ...من اومدم برای این مشکل یک برنامه نوشتم که بتوانیم با ان این کار رو انجام بدهیم. شاید الان خوب متوجه نشوید ولی برای این که متوجه بشوید می رویم این کار رو با هم انجام می دهیم. (متغیر گذاشتن درون متن)راستی یک چیزی رو هم بگم: اینکه من این پروژه رو بصورت اوپن سورس برای شما گذاشته ام. این برنامه با زبان برنامه نویسی پایتون ساخته شده است. من لینک گیت هاب پروژه رو زیر پست می گذارم. اگر کاربردی برایتان داشت می توانید آن را دانلود کنید.انجام عملی کاراول از همه متن مان را در قسمت متن نرم افزار می گذاریم. من همون متنی رو می گذارم که بالا گذاشتم.بعد باید بیایم و قسمت هایی رو که بسته به متن تغییر می کند رو متغیر گذاری کنیم. سینتکس متغیر گذاری در این نرم افزار این شکلیه:{VariableName}ما به این شکل متغیر گذاری می کنیم:بعدش باید متغیر ها رو در نرم افزار تعریف کنیم. با استفاده از قسمت Variable میشه با متغیر ها کار کرد و با استفاده از قسمت Add Variable می شود یک متغیر تعریف کرد.و با دکمه Add متغیر gt رو هم اضافه می کنیم.در نهایت روی دکمه ی Export میزنیم و در فایل result.txt خروجی رو مشاهده می کنیم.و برای 100 نفر دیگر هم همین کار رو می کنیم. ولی دفعات بعد فقط لازمه متغیر ها رو ویرایش کنید.یک سوال: من اشتباهی دستم خورد و یک متغیر ساختم. چه کار کنم؟پاسخ:  متغیر مورد نظر رو انتخاب کنید و روی دکمه ی Delete بزنید.یک سوال دیگر: من مقدار یک متغیر رو اشتباه وارد کردم؛ چطور اون رو تغییر بدهم؟پاسخ: متغیر مورد نظر رو انتخاب کنید و روی دکمه Edit بزنید. و سپس مقدار را تغییر دهید.یک چیزی رو فهمیدید؟؟؟؟ من پاسخ این دو سوال رو با این نرم افزار درست کردم! ?کار ما تموم شدراستی شاید بگویید چرا زیر برنامه نوشته Safasoft؟اگر من رو دنبال کرده باشید می دانید که من یک پست با نام چگونه برنامه نویس شدم؟ گذاشتم. ولی توی اون به این نکته اشاره نکردم که ما یک تیم داریم به نام صفاسافت!خداحافظ.لینک سایت سیگنال باز: سیگنال باز</description>
                <category>Mohammad Safa Kamali</category>
                <author>Mohammad Safa Kamali</author>
                <pubDate>Mon, 06 Sep 2021 13:56:10 +0430</pubDate>
            </item>
                    <item>
                <title>درباره ی من و چگونه برنامه نویس شدم</title>
                <link>https://virgool.io/@safakamali/%D8%AF%D8%B1%D8%A8%D8%A7%D8%B1%D9%87-%DB%8C-%D9%85%D9%86-khevxnlrjupm</link>
                <description>به نام خدامقدمهاین پست با پست های دیگه ای که گذاشتم کمی فرق می کنه. این دفعه می خواهم برای شما از خودم بگویم و اینکه چگونه توانستم یک برنامه نویس حرفه ای شوم و خلاصه تجربه ام رو با شما عزیزان در میان بگذارم تا شما راه هایی کن من تست کردم و به بن بست رسیدم رو شما نروید!آشنایی با کامپیوترمن وقتی هفت ساله بودم پدرم برایم یک کامپیوتر قدیمی که ویندوز 7 داشت اورد سرعت اون خیلی پایین بود و حتی اینترنت هم نداشت. ولی من با همان خیلی حال می کردم. من اول حتی با ویندوز هم آشنا نبودم. ولی این قدر باهاش ور (آره وَر) رفتم که خیلی از چیز ها رو یاد گرفتم البته پدرم هم مهندس کامپیوتر بود و به من کمک کرد.آشنایی با برنامه نویسیمن دایی ام برنامه نویسی اندروید می کرد و با زبان Java مسلط بود. برای همین من هروقت پیش دایی ام می رفتم می دیدم که او برنامه نویسی می کند و برنامه می سازد. من هم علاقه مند به برنامه نویسی شدم. تا جایی که حتی با Paint عکس برنامه می ساختم.شبیه به این ( نقاشی)چون من زبان انگلیسی بلد نبودم نمی توانستم زبان های برنامه نویسی را یاد بگیرم (البته فکر می کردم).یک روز دایی ام به من گفت یک نرم افزار که با اون می تونی برنامه بسازی و فارسی هم هست برایت پیدا کردم!اگر نوشته های من را خوانده باشید و مرا دنبال کرده باشید الان می گویید اسکرچ!بله اون نرم افزار اسکرچ بود. من با اسکرچ برنامه می ساختم و اون رو یاد می گرفتم. دایی ام به من در یادگیری کمک کرد و خودم هم چون علاقه خیلی خیلی خیلی زیاد به برنامه نویسی داشتم و خواهم داشت اون رو یاد گرفتم. و چندین پروژه ساختم که می توانید ان ها را در سایت اسکرچ پیدا کنید ( در کادر جستجو ی اسکرچ Mohammad safa رو بنویسید)شروع کار با پایتونیک روز با خودم گفتم ای کاش می توانستم کدنویسی عین دایی ام کنم. دو تا تکنولوژی ها توی سرم بود:یونیتی و پایتونرفتم و به دایی ام زنگ زدم و گفتم: &quot; می خواهم یک زبان برنامه نویسی را یاد بگیرم. گفتم این دو مدنظرم هست.&quot; دایی ام گفت برو سمت پایتون.فکر کنم این موقع من 9-8 سال داشتمپدرم برایم یک دوره ی آموزش پایتون پیدا کرد و من با اشتیاق فراوان آن را می دیدم و یاد میگرفتم. البته خیلی چیز ها هم از اینترنت یاد گرفتم. این موقع بابایم برای کامپیوتر یک دانگل خریده بود که می توانست کامپیوتر را به مودم وصل کند. من بعد از مدتی مبانی برنامه نویسی پایتون را یاد گرفتم و یک مدتی دوره ی پایتون رو ادامه ندادم و در این مدت به هر مشکلی که می رسیدم از اینترنت کمک می گرفتم.همین موقع هم بود که در سایت ویرگول ثبت نام کردم و مطلب گذاشتم.من هنوز اون کامپیوتر قدیمی رو داشتم و با اون خیلی کار ها می کردم. خیلی ها فکر می کنند برای شروع حتما باید سیستم قوی و پر سرعت داشته باشند ولی من با اون خیلی چیز ها رو یاد گرفتم. پدرم به من خیلی کمک کرد و من را قوی کرد.پدرم که دید من خیلی تلاش می کنم فکر کرد برایم یک کامپیوتر قوی تر بیاورد. رفت و از مدرسه شان یک کامپیوتر امانت گرفت. من با اون خیلی پیشرفت کردم. بعد از مدتی پدرم به فکر افتاد یک لپتاپ قوی برایم بخرد. چون این کامپیوتر امانت بود.الان دیگه من 10 سال داشتم.پدرم برایم 11 میلیون پول داد و یک لپتاپ غول (ZBock HP) خرید! الان که من دارم برای شما این پست را می نویسم دارم با همین لپتاپ کار می کنم.خلاصه من رفتم و طراحی وب را یاد گرفتم و با پایتون سایت سیگنال باز را ساختم. و خیلی چیز های وب رو هم از طریق اون یاد گرفتم.همه با انگلیسی، برنامه نویسی را یاد می گیرند. ولی من از برنامه نویسی انگلیسی را یاد گرفتم.این بود خلاصه پیشرفت منفکر نکنید اگر انگلیسی بلد نیستید یعنی نمی توانید برنامه نویسی و کد نویسی را یاد بگیرید. نمی گوییم در یاد گیری بی تاثیر است. ولی بدون بر خلاف نظر خیلی ها من می گویم امکان پذیر است چون خود آن راه را رفته ام و به نتیجه خورده ام. ولی با هم می گویم انگلیسی نیاز به کلاس دارد. پیشنهاد من به شما این است که طراحی وب (HTML, CSS, JS) رو یاد بگیرید چون هم محبوبه، هم یادگیریش ساده است و هم خیلی خیلی کاربرد داره و به دردتون می خوره.فکر نکنید که من خوش شانس بوده ام که به این دانش رسیده ام. این کار من طی 3 ســـال انجام شده است.ممنون که حوصله به خرج دادید و وقتتون رو در اختیار من گذاشتید. امیدوارم توانسته باشم به شما کمکی کنم.به سایت شخصی من هم سری بزنید.ببخشید یکم خود تعریفی شد.محمد صفا کمالی - ۱۴۰۰/۰۵/۲۱</description>
                <category>Mohammad Safa Kamali</category>
                <author>Mohammad Safa Kamali</author>
                <pubDate>Thu, 12 Aug 2021 12:35:41 +0430</pubDate>
            </item>
                    <item>
                <title>چاپ شکلک در پایتون</title>
                <link>https://virgool.io/@safakamali/%DA%86%D8%A7%D9%BE-%D8%B4%DA%A9%D9%84%DA%A9-%D8%AF%D8%B1-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-pbdpm6xvyusj</link>
                <description>سلام با اموزش چاپ شکلک در پایتون در خدمت شما هستم.اگر شما الان دارید این مطلب رو می خونید پس حتما از قدرتمند بودن پایتون خبر دارید. توی این نوشته می خواهم به یکی از ترفند ها و قابلیت این زبان برنامه نویسی قدرتمند اشاره کنمشما برای چاپ شکلک باید از \U در string استفاده کنید. مثلا کد زیر را در نظر بگیرید.print(&amp;quot\U0001f600&amp;quot)کد زیر یک شکلک خنده را چاپ می کند.عدد 600 شماره ی شکلک هست. خودتان می توانید این عدد را تغیر دهید؛ مثلا 605خوب فقط می خواستم این ترفند رو به شما یاد بدهم.تا مطلب بعدی خدانگهدار ...</description>
                <category>Mohammad Safa Kamali</category>
                <author>Mohammad Safa Kamali</author>
                <pubDate>Mon, 08 Mar 2021 23:42:12 +0330</pubDate>
            </item>
                    <item>
                <title>اموزش پایتون (قسمت سوم)</title>
                <link>https://virgool.io/coderlife/%D8%A7%D9%85%D9%88%D8%B2%D8%B4-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D9%82%D8%B3%D9%85%D8%AA-%D8%B3%D9%88%D9%85-xp4yswqguvgs</link>
                <description>سلام به همه ی دوستانبا قسمت سوم اموزش پایتون در کنار شما هستم.جلسه ی قبل درمورد دستور input و متغیر ها صحبت کردیم.توی این جلسه می خواهیم به یک مبحث ساده ولی با ارزش برنامه نویسی بپردازیم، تایپ ها !تایپ چیست؟تایپ به نوع یک مفدار گفته می شود. در واقع من تا الان از کلماتی همچون نوشته،عدد و ... استفاده می کردم.ولی از این جلسه به بعد که قرار هست با تایپ ها آشنا بشویم، یکم تخصصی تر صحبت می کنم.مثلا به نوشته ها (کلمه ی تخصصی خودم!) می گویند string با همان strتایپ String :استرینگ تایپ نوشته ها می باشد. تایپ استرینگ به صورت رشته حساب می شود. مثلا ما وقتی که پیام Hello World رو چاپ می کنیم درواقع داریم یک string رو چاپ می کنیم.در زبان برنامه نویسی پایتون به استرینگ، str می گویندتایپ integer:اینتیجر تایپ اعداد می باشد که داخل ان فقط کاراکتر های عددی(عدد ها ) قرار می گیرند.این نوع تایپ هیچ نیازی به کتیشن یا دابل کتیشن ندارند.در ضمن اینتیجر در پایتون int است.تایپ Float :فلوت (فولوت نه !) برای اعداد اعشاری مورد استفاده قرار می گیرد. این تایپ مانند اینتیجر است است ولی فرق آن در اعشار بودنش است.فلوت هیچ مخفف ندارد. دستورش همان خودش است.تایپ ها خیلی بیشتر از ان هستند که من بتوانم ان ها را در یک جلسه بگویم ولی در جلسات اینده بقیه ی تایپ ها رو هم خواهم گفت.شما می توانید با استفاده از مخفف نام تایپ در پایتون کار هایی را هم انجام بدهید.مثلا به کد های زیر دقت کنید:int(&amp;quot1&amp;quot)این کد می اید و مقداری که ما به ان دادیم را به عدد تبدیل می کند.str(1)این کد بر عکس کد بالایی است. این کد 1 را تبدیل به &quot;1&quot; می کند.فلوت هم همین طور اگر ما به ان یک عدد صحیح(اینتیجر) رو بدهیم مثل 1 ان به ما عدد 1.0 می دهد.خوب برای این جلسه کفایت می کند. جلسه ی بعدی هم درمورد همین مبحث صحبت خواهم کرد.اگر سولی دارید د قسمت نظرات به من بگویید تا من پاسخ گوی شما عزیزان باشم.تا جلسه ی دیگر خدانگهدار</description>
                <category>Mohammad Safa Kamali</category>
                <author>Mohammad Safa Kamali</author>
                <pubDate>Tue, 15 Dec 2020 19:13:35 +0330</pubDate>
            </item>
                    <item>
                <title>اموزش پایتون (قسمت دوم)</title>
                <link>https://virgool.io/@safakamali/%D8%A7%D9%85%D9%88%D8%B2%D8%B4-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D9%82%D8%B3%D9%85%D8%AA-%D8%AF%D9%88%D9%85-lkovlyscpopb</link>
                <description>سلام دوستانبا قسمت دوم اموزش پایتون در خدمت شما هستم.توی جلسه ی قبل در مورد دستور print و کاربرد ان صحبت کردیم.توی این جلسه قرار هست با دستور input آشنا شویم. + تعریف متغیراحتمالا الان از خودتان می پرسید کار این دستور چیست؟کار این دستور این است که ...بگذارید با یک مثال پیش برویم. مثلا شما می خواهید برنامه ای بنویسید که نام ما را بگیرد و قبل ان کلمه ی Hello را بگذارد. این شکلی ما یک برنامه داریم که میتواند به هرکسی سلام کند.آن قسمتی که ما می خواستیم نام کاربر را از او بپرسیم باید از دستور input استفاده کنیم.دستور input به این شکل است:input()این دستور فقط منتظر می ماند کاربر چیزی را وارد کند.ولی برای استفاده از آن باید ابتدا آن را توی یک متغیر ریخت سپس از نام متغیر استفاده کرد.متغیر ها حافظه ای هستند که ما میتوانیم داده ای را درون ان ذخیره کنیم.(مانند یک عملیات ریاضی و ...)ساختار تعریف متغیر در پایتون به این شکل است.{Name} = {Value}به جای {Name} باید نام متغیر نوشته شود و به جای {Value} باید مقدار متغیر ریخته شود.حالا که تعریف متغیر را یاد گرفتیم، باید دستور input را درون یک متغیر قرار بدهیم.name = input()من در این جا نام متغیر رو name گذاشتم ولی شما می توانید نام دیگر انتخاب نمایید. ولی مناسب ترین نام برای این متغیر این نام هستش.قبل اینکه از به کاربر اجازه ی نوشتن بدهیم باید از کاربر بخواهیم که نام خود را بنویسد.print(&amp;quotplees enter your name:&amp;quot)
name = input(&amp;quot&gt;&amp;quot)من برای اینکه کاربر بفهمد که باید چیزی را تایپ کند داخل پرانتز input یک رشته &lt; قرار دادم یعنی &quot;&lt;&quot;.حالا خروجی این می شود.plees enter your name:&gt;حالا کاربر باید نام خود را وارد کند و اینتر را بزند.حالا باید بگوییم قبل اسم کلمه ی Hello را بگذارد.برای این کار این کد را به برنامه اضافه می کنیم.print(&amp;quotHello &amp;quot + name)ما در این جا گفتیم که بیا Hello را به الاوه ی متغیر name کن. متغیر name همان متغیری هست که نام کاربر در ان قرار دارد.نکته : حتما بعد کلمه ی Hello یک فاصله بگذاریم تا اسم به Hello نچسبد.تمام، کد ما پایانی ما به این شکل است:print(&amp;quotplees enter your name:&amp;quot)
name = input(&amp;quot&gt;&amp;quot)
print(&amp;quotHello &amp;quot+name)دیگه الان احتمالا ادامه ی جمله ی من رو فهمیده باشید.تا جلسه ی دیگر خدا نگهدار.</description>
                <category>Mohammad Safa Kamali</category>
                <author>Mohammad Safa Kamali</author>
                <pubDate>Mon, 14 Dec 2020 14:10:57 +0330</pubDate>
            </item>
                    <item>
                <title>اموزش اسکرچ(جلسه ی دوم)</title>
                <link>https://virgool.io/@safakamali/%D8%A7%D9%85%D9%88%D8%B2%D8%B4-%D8%A7%D8%B3%DA%A9%D8%B1%DA%86-%D8%AC%D9%84%D8%B3%D9%87-%DB%8C-%D8%AF%D9%88%D9%85-yo0wfhh8s1wk</link>
                <description>سلام دوستانتوی جلسه ی پیش درمورد محیط اسکرچ صحبت کردیم. توی این جلسه از اموزش اسکرچ می خواهم درباره ی قسمت رویداد ها و کد های ان صحبت کنم.ما توی قسمت رویداد ها یک سری کد ها داریم که که زمان کد ها انجام شدن کد های دیگر را کنترل می کنند. اولین کدی که باید هر اسکرچر(برنامه نویس اسکرچ)باید یاد بگیره کد &quot;وقتی روی پرچم کلیک شد&quot; هستش. شما می توانید این کد را از قسمت رویداد ها مانند تصویر زیر پیدا کنید.همان طور که از اسمش هم معلومه یعنی وقتی که روی پرچم کلیک شود. شما می توانید با استفاده با این کد کد های دیگر را کنترل کنید. یعنی کدی که می خواهید در ان موقع انجام شود را زیر ان بگذارید. فعلا ما کد دیگری یاد نداریم. پس بهتر است فعلا خودتان را درگیر این کار ها نکنید.کد بعدی که می خواهم اموزش بدهم کد &quot;وقتی کلید # فشرده شد&quot; است. شما میتوانید با استفاده از این کد رویدادی یک کد را کنترل کنید. شما به جای علامت # می توانید کلید مورد نظر را انتخاب نمایید.مثلا کدی بنویسید که وقتی کلید فاصله فشرده شد یک اهنگ که خودتان مشخص می کنید پخش شود.خوب، این جلسه ی ما هم به پایان میرسد.حالا برای اینکه ذوقتان برای یادگیری اسکرچ بیشتر شود پیشنهاد می کنم به سایت اسکرچ بروید و در کادر جستجو نام &quot;mohammadsafa&quot; جستجو کنید تا پروژه هایی که من ساخته ام را ببینید.این هم ادرس سایت اسکرچ: https://scratch.mit.eduتا جلسه ی دیگر خداحافظ</description>
                <category>Mohammad Safa Kamali</category>
                <author>Mohammad Safa Kamali</author>
                <pubDate>Fri, 22 May 2020 13:41:49 +0430</pubDate>
            </item>
                    <item>
                <title>شروع کار با پایتون</title>
                <link>https://virgool.io/@safakamali/%D8%B4%D8%B1%D9%88%D8%B9-%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-qd0kdhibchro</link>
                <description>سلام دوستان در این مطلب قصد دارم اموزش اولیه ی پایتون را درس بدهم.در مورد پایتونپایتون یک زبان برنامه نویسی ساده و جذاب است. پایتون خوانایی بسیار زیادی دارد و باعث شده است ترفداران زیادی پیدا کند. این زبان در کشور هلند به وجود امد.امروزه شرکت های زیادی از این زبان برنامه نویسی استفاده می کنند.اولین کدی که شما باید در پایتون یاد بگیرید کد print هستشکد print یک متن را تایپ می کند. برای گفتن متنی که دلمان می خواهد ان را تایپ کنیم از علامت کوتیشن (&quot; &quot;) استفاده می کنیم مانند:print &amp;quotHello&amp;quotخروجی برنامه به این صورت است:Helloما اگر از کوتیشن استفاده کنیم دقیق همان چیزی که نوشته شده است را می نویسد ولی اگر از پرانتز استفاده کنیم دنبال متغیر یا جواب ان می گردد مانند:print (2+2)خروجی برنامه به این شکل است:                                                                                                                                                        4                                                                                                                                                        کد بعدی ساخت یک متغیر است. متغیر را این گونه تعریف می کنند:       چیزی که داخل ان متغیر است=ناممانند:a=5حالا یک نمونه ی استفاده از متغیر را برایتان می نویسم:a=5
print(2+a)جواب این شکلی است:                                                                                                                                                       7امید وارم از این اموزش استفاده ی لازم رابرده باشیدخدا نگهدار</description>
                <category>Mohammad Safa Kamali</category>
                <author>Mohammad Safa Kamali</author>
                <pubDate>Wed, 25 Mar 2020 22:03:31 +0430</pubDate>
            </item>
                    <item>
                <title>اموزش اسکرچ(اول)</title>
                <link>https://virgool.io/@safakamali/%D8%A7%D9%85%D9%88%D8%B2%D8%B4-%D8%A7%D8%B3%DA%A9%D8%B1%DA%86%D8%A7%D9%88%D9%84-ytqalewy5nlv</link>
                <description>اموزش اسکرچ(اول)در این جلسات می خواهم شما را با برنامه ی اسکرچ اشنا کنم.در این جلسه می خواهم درباره ی محیط اسکرچ صحبت کنم. وقتی اسکرچ را نصب کردید. باید با محیط برنامه نویسی اسکرچ اشنا شوید.محیط اسکرچهمان طور که در تصویر میبینید در سمت راست محلی برای سر هم کردن کد ها هستش که با کشیدن کد ها از منو ی وسط می توان کد ها را به این قسمت منتقل کرد. بعد در قسمت سرهم کردن کد ها می اییم و ان ها را به هم به صوزت پازلی می چسبانیم.همان طور که در تصویر مشخص شده در این قسمت محل ازمایش برنامه و جا به جا کردن و لایه دادن(زیر و رو دادن) به شکلک است. راستی یک چیزی به شما بگم؟:اسکرچ یک برنامه نویس گرافیکی هستش و هیچ نیازی به کد نویسی ندازه!در این قسمت هم شما می توانید شکلک و پس زمینه اضافه کنید و تنظیمات مربوط به شکلک ها را انجام بدهید. سعی کنید اول با محیط اسکرچ اشنا شوید بعد به دنبال کد های ان بروید.تا اموزشی دیگر خدانگهدار</description>
                <category>Mohammad Safa Kamali</category>
                <author>Mohammad Safa Kamali</author>
                <pubDate>Sun, 22 Mar 2020 18:27:28 +0430</pubDate>
            </item>
            </channel>
</rss>