<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های امیرحسین بیدار</title>
        <link>https://virgool.io/feed/@amirhosein_bidar</link>
        <description>یه کله با یه عالمه سوال ( برنامه نویس وب نیمچه حرفه ای )</description>
        <language>fa</language>
        <pubDate>2026-06-17 05:07:31</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/64320/avatar/sjFTXA.jpeg?height=120&amp;width=120</url>
            <title>امیرحسین بیدار</title>
            <link>https://virgool.io/@amirhosein_bidar</link>
        </image>

                    <item>
                <title>الستیک سرچ (elastic search) مسیله این است...</title>
                <link>https://virgool.io/@amirhosein_bidar/%D8%A7%D9%84%D8%B3%D8%AA%DB%8C%DA%A9-%D8%B3%D8%B1%DA%86-elastic-search-%D9%85%D8%B3%DB%8C%D9%84%D9%87-%D8%A7%DB%8C%D9%86-%D8%A7%D8%B3%D8%AA-b53w2myjmhzn</link>
                <description>توی این پست میخوام یکم در مورد الستیک سرچ که یه ابزار برای تحلیل و بررسی داده های عظیمه حرف بزنم و یه مقدار روش کار کردن باهاش و ابزارایی که بهش وصل میشن  رو توضیح بدم پس اگه میخواید با ابزار های big data آشنا بشید این پست میتونه شروع خوبی براتون باشه.بزارید از اول توضیح بدیمالستیک سرچ چیه ؟الستیک سرچ  برنامه ای متن باز برای تحلیل و بررسی هر نوع داده شامل متن , عدد و داده های جغرافیایی و ... هست که در واقع بهشتی برای اونها که با بیگ دیتا سر و کار محسوب میشه چون برای همین کار طراحی و توسعه داده شده زبانی که باهاش کار میکنه جاوا هست و بر روی کتابخونه lucene توسعه داده شده.در واقع الستیک سرچ هسته اصلی اکوسیستم elastic هست که شامل ابزار های زیادی از جمله kibana  و logstash , beats و ... میشه که اکثرشون به صورت مسقیم یا غیر مستقیم به هسته اصلی(elastic search) وصل میشن و کارشون رو انجام میدن همه این ابزارها روش هایی رو برای راحت تر کردن کار با elasticsearch ارایه میدن که در ادامه در مورد همشون حرف میزنم الستیک سرچ یه کتابخونه برای زبان برنامه نویسی یا حتی پلتفرم برنامه نویسی هم نیست کاملا یه ابزار مستقله که روش کار کردن خودش رو داره و باید باهاش خیلی کار کرد تا جزییاتش دست آدم بیاد و با توجه به قدرت مند بودنش مسلما تنظیمات و کار کردش یه مقدار پیچیدس و صبر و حوصله زیادی از آدم میبره مخصوصا اگه بخوایم با داکر ازش استفاده کنیم ( ۲ روز طول کشید تنظیمات درست داکرش رو پیاده کنم :)) )برای کار با این برنامه واقعا خفن! باید از  rest api هایی که در اختیار ما قرار میده استفاده کنیم و مثل هر برنامه عادی که با متودولوژی rest  ساخته میشه اطلاعات رو با put اپدیت کنید , با delete پاک کنید و ... این قسمتش برای کسایی که مثل من  از قبل چند تا برنامه با rest ساختن خیلی آشنا و ساده میاد ولی قسمت جالبش موقع سرچ در داخل دیتاها و به اصلاح query زدن هست که خیلی جالب پیاده شده و خیلی آدم رو یاد Graph QL میندازه ولی Graph QL نیست و با توجه به نیاز الستیک سرچ کاستومایز شده این قسمت که چطور از روش های مختلف استفاده کردن تا در نهایت به یک راه حل جامع برسند من رو واقعا به وجد میاره چطور کار میکنه ؟اسلتیک سرچ درواقع یک موتور تحلیل داده محسوب میشه ولی میتونه اطلاعات رو به خوبی در خودش نگه داره و حتی برای جلوگیری از ازبین رفتن اطلاعات میتونه به صورت اتوماتیک از اونها بک اپ بیگیره همچنین توی سرور های مختلط توضیع بشه وقتی دیتا خیلییییی بزرگ بودن بتونه اطلاعات رو تقسیم کنه تا سرعت کار بالا بره  سیستم کلی ذخیره سازی داده به این صورت هست که به کل سرور های elasticsearch که ما ران کردیم تا یه وظیفه مشخص انجام بدن cluster گفته میشه و به هر کدوم از اون سرور ها node گفته میشه همچنین اطلاعات اصلی در قسمتی به اسم shard ذخیره میشن ( بهش primary data هم میگن) و همیشه بک اپ هایی از داده های اصلی توی node های دیگه وجود داره تا موقع از دست دادن node اصلی بقیه node ها بتونن کار خودشون رو ادامه بدن مثل تصویر پایین دیگه چی دار ؟یه محیط گرافیکی به اسم kibana هم داره که برای مستقیم کار کردن با الستیک سرچ هست و خیلی هم خوشگل طراحی و پیاده شده انصافا من پسندیدم!همچنین برنامه ای فوق العاده به اسم logstash هست که اطلاعات مورد نیازمون رو از لاگ های apache , nginx یا فایل های csv و  یا حتی مستقیما از دیتابیس سرور مثلا mysql یا postgresql جمع میکنه و اون های رو به فرمت json ( که فرمت قابل فهم الستیک سرچ هست) تبدیل میکنه و به الستیک سرچ میفرسته .حتی خیلی از اطلاعات رو به صورت اتوماتیک خودش از داده های اصلی تولید میکنه مثلا میتونه با استفاده از ip های موجود در لاگ های آپاچی موقعیت مکانی و جغرافیایی یوز هامون رو مشخص کنه... البته درسته مخصوص الستیک سرچ ساخته شده ولی خیلی جاهای دیگه هم میشه ازش استفاده کرد بعلاوه اینها مجموعه ای از برنامه ها به اسم beats هست که برای جمع آموری اطلاعات در لحظه هستن مهم ترینشون filebeat هست که از تنظیماتش یه سری فایل رو براش مشخص میکنیم که رصد کنه و خودش به صورت اتوماتیک هر موقع فایل توسط برنامه های خارجی تغییر کرد یه نسخه از فایل رو به  logstash میفرسته تا اطلاعات جدید روی elastic search اپدیت بشن سخن آخریادگیری یه همچین ابزارهایی واقعا فانه و دیدگاه تازه ای رو به روش های پیاده سازی نرم افزار به آدم میده که چه طور میشه یه نیاز کلی رو به قسمت های کوچیک تقسیم کرد و هر قسمت رو جداگانه توسعه داد  هر چند شاید این ابزار هنوز به دردمون نخور و بیش از حد نیازمون باشن ولی آشنا بودن با آنها باعث میشه موقع تصمیم گیری برای پیشبرد پروژه هامون بدونیم چطور میخوایم عمل کنیم تنظیمات داکرتون رو میتونید از لینک زیر بردارید و با docker-compose اولین سرورتون رو بیاری https://gist.github.com/amirhoseinBK/baca25030a64b30197011c5da8b214dd</description>
                <category>امیرحسین بیدار</category>
                <author>امیرحسین بیدار</author>
                <pubDate>Sat, 06 Feb 2021 14:36:22 +0330</pubDate>
            </item>
                    <item>
                <title>Django way s2, Database Mocking ep1</title>
                <link>https://virgool.io/CodeLovers/django-way-s2-database-mocking-ep1-fnmublonshsz</link>
                <description>https://realpython.com/django-pytest-fixtures/ عکس از خب یه  بخش دیگه از روش های بهتر کار کردن با جنگو رو قصد دارم در اینجا با شما بررسی کنیم قبل از هرچیزی یه توضیح در مورد اسم این نمونه پست ها بدم شماره اول که بعد از s نوشته شده شماره پست هست شماره ای که بعد از ep نوشته شده تعداد پستایی که تا الان در مورد یه مبحث خواص پست گزاشتم میتونید از اینجا : Django way (روشهای بهتر کار کردن با جنگو)  پست قبلی رو بخونیداین مبحث هم به احتمال زیاد در چند بخش ادامه پیدا کنهاول از همه طرح مسيله :امروزه برنامه ها رشد خیلی زیادی کردن و در تولید یک برنامه باید سرعت در توسعه و stable بودن کد ها رو کنار هم پیاد کرد برای همین متدولوژی های مختلفی برای پیش بردن یک پروژه ارايه شده که در اکثر اونها تست کردن کد ها و coverage گرفتن از اونها حرف اول رو میزنه مسلما جنگو هم از این قضیه هم نقش خودش رو ایفا کرده و روش هایی برای آسون کردن تست نویسی درست کرده من توی این پست از rest framework استفاده میکنمخب بریم ببینیم که چطور یه تست کوچیک میشه برای api خودمون بنویسیم:به فرض داریم :# ./product/models.py
from django.db import models
class Product(models.model):
   name = models.CharField(max_length=250)
   description = models.TextField(max_length=250, blank=True, null=True)
   image = models.ImageField(blank=True, null=True)
   price = models.FloatField()

# ./product/api/serializer.py
from rest_framework import serializers
from product.models import Product

class ProductSerializer(serializers.ModelSerializer):
     class Meta:
        model = Prodcut
        fields = &#039;__all__&#039;


# ./product/api/views.py
from .serializer import ProductSerializer
from from product.models import Product
from rest_framework import viewsets

class ProductViewSet(viewsets.ModelViewSet):
      serializer_class = ProductSerializer
      query_set = Product.objects.all()

# ./prodcut/urls.py
from rest_framework.routers import SimpleRouter
from .api import views as api_views

urlpatterns = [
]

product_router = SimpleRouter()
product_router.register(&#039;product&#039;, api_views.ProductViewSet, basename=&#039;product&#039;)
api_patterns = product_router.urls
خب حالا برنامه ما حاضره و در حالت عادی میخوایم تستش کنیم مسلما تستمون یه چیزی شبیه این میشه : #./prodcut/tests.py
from rest_framework.test import APITestCase

class ProductTestView(APITestCase):
      @classmethod
      def setUpTestData(cls): 
         cls.product_1 = Product.objects.create(
            name=&amp;quotXbox one&amp;quot,
            description=&amp;quoti need xbox one please&amp;quot,
            price=800000000,
       )
      cls.product_2 = Product.objects.create(
            name=&amp;quotPS4&amp;quot,
           description=&amp;quoti need Ps4 right now&amp;quot,
            price=3100000000,
      ) 
      cls.product_3 = Product.objects.create( 
            name=&amp;quotneed for speed&amp;quot, 
            description=&amp;quotneed for speed most wanted&amp;quot,
            price=5000
        )
       # and....
    
    def test_get_product_list(self):
         response = self.client.get(self.url)
         assert response.data[&#039;result&#039;][0][&#039;name&#039;]==&amp;quotXbox one&amp;quot
         self.assertEqual(response.status_code, 200)
         self.assertEqual(response.data[&#039;count&#039;],10)
         خوب فکر کنم تا اینجاش فهمیدید چه زخمی خوردیم تازه برنامه ما کوچیک هست که تونستیم به همین مقدار کد تمومش کنیم( تازه عکسم من به دیتام اضافه نکردم چون واقعا دردسره) توی دنیای واقعی با دیتا های واقعی هیچ وقت همه چیز به سادگی دو تا فیلد توی مدلامون نیست...  کدای تستمون فوق العاده کثیف و بهم ریخته دیتا های تکراری و... اصلا یه وضعی که موقع دیدنش چشم آدم خون میاد.  حالا فرض کن بچه های فرانت یه سری دیتا فیک بخوان تا کاراشون رو تست کنن دیگه نور علی نورراه حل:در این مواقع که ما نیاز به دیتای فیک داریم از  تکنیک Database Mocking  استفاده میکنیم  به نقل از این منبع : https://wiki.genexus.com/ تکنیک Database Mocking روشی برای شبیه سازی دیتابیس اصلی به همراه تعدادی رکورد برای انجام تست های مورد نیاز است یکی از راحت ترین روش ها در پایتون برای Database Mocking استفاده از ماژول factory_boy و faker هست که کار را فوق العاده راحت میکنن همچنین ماژول factory_boy مدل های جنگو رو به صورت درونی ساپورت میکنه و توی داکیومنتش هم مثال های خوبی داره که راحت میتونی باهاش کارتون رو راه بندازید ماژول  faker هم برای ساختن دیتا هم فیک و الکی از lorem_ipsum تا رمز و پسور فیک و حتی اسم شهر و کشور رو میشه باهاش تولید کرد البته factory_boy به صورت درونی ماژول faker رو هم ساپورت میکنه و نیازی نیست که به صورت مستقیم از faker استفاده بشه.  ( یه فکت جالب در مورد ماژول factory_boy اینه که موقع ساخت این ماژول از تکنیک های یه ماژول قدیمی تر به توی زبان روبی به اسم factory_girl استفاده شده :)))) )ماژول factory_boy چطور کار میکنه :برای کار با این ماژول بهتره که توی پوشه اپمون یه فایل به اسم factories.py بسازیم و کدمون رو اینجوری بنویسیم:#./product/factories.py

import factory
from factory import django
from .models import Product

class ProductFactory(django.DjangoModelFactory):
        name = factory.Faker(&#039;name&#039;)
        image = django.ImageField(color=&#039;blue&#039;) 
        description =  factory.Faker(&amp;quottext&amp;quot, max_nb_chars=200)
        price = factory.Faker(&amp;quotrandom_int&amp;quot, min=1000, max=9999999)

        class Meta:
                 model = Productخب حالا برای ساخت دیتا توی تستمون این کارو میکنیم :#./prodcut/tests.py
from rest_framework.test import APITestCase
from .factories import ProductFactory

class ProductTestView(APITestCase):
      @classmethod
      def setUpTestData(cls): 
          cls.prodcuts = ProductFactory.create_batch(10)             
    
       def test_get_product_list(self):
             response = self.client.get(self.url)
             assert response.data[&#039;result&#039;][0][&#039;name&#039;] == self.product[0].name
             self.assertEqual(response.status_code, 200)
             self.assertEqual(response.data[&#039;count&#039;],10)
         همون طور که دیدید همه چیز راحت و زیبا و بسیار تمیز شد همه چیز سر جای خودشه و موقع عوض شدن api به خاطر به هم ریختن تست هامون گریه نمیکنیم :))این اولین بخش از قسمتای کار با ماژول factory boy بود چند قسمت دیگه هم در موردشون حرف خواهم زد اگه دوست داشتید میتونید منو فالو کنید تا بقیه قسمت ها رو راحت پیدا کنید</description>
                <category>امیرحسین بیدار</category>
                <author>امیرحسین بیدار</author>
                <pubDate>Mon, 01 Feb 2021 13:42:58 +0330</pubDate>
            </item>
                    <item>
                <title>Django way (روشهای بهتر کار کردن با جنگو) , S1</title>
                <link>https://virgool.io/CodeLovers/django-way-%D8%B1%D9%88%D8%B4%D9%87%D8%A7%DB%8C-%D8%A8%D9%87%D8%AA%D8%B1-%DA%A9%D8%A7%D8%B1-%DA%A9%D8%B1%D8%AF%D9%86-%D8%A8%D8%A7-%D8%AC%D9%86%DA%AF%D9%88-s1-yeyqxurdklih</link>
                <description>توی این سری پست ها قصد دارم که یه سری روش های راحت تر کار کردن ( یا تمیز تر کار کردن یا هر چیزی که به نظرم باحال باشه )  با فریمورک محبوب جنگو رو به اشتراک بزارم و اینم قسمت اوله امیدوارم که براتون جالب باشه همچنین شما هم میتونید نظراتتون و روش هایی که بلدید رو هم با من به اشتراک بزارید خیلی خوشحال میشم. :) فکر کنم برای قسمت اول از یه سری روش های آسون و جالب استفاده کنیم خوب باشه اولین مورد برای امروز : روش مدیریت ثابت ها:منظور از ثابت ها در این مورد اعداد یا رشته های هستن که توی برنامه ما تغییر نمیکنن همچنین اونقدر هم عمومی نیستند که در فایل settings.py قرار بگیرند سوال اینه که کجا باید بزاریمش ؟ به طور معمول توی مدل ها تعریفش میکنن اینطور:# ./car/models.py
from django.db import models

class Car(models.Model):
    RED = &#039;red&#039;
    BLUE = &#039;blue&#039;
    WHITE = &#039;white&#039;
    BLACK = &#039;black&#039;
    COLORS = (
         (RED, &amp;quotًRed&amp;quot),
         (BLUE, &amp;quotBlue&amp;quot),
        (WHITE, &amp;quotWhite&amp;quot),
        (BLACK, &amp;quotBlack&amp;quot),
    )
    color = models.CharField(max_length=80, choices=COLORS)
    name = models.CharField(max_length=255)
    company = models.CharField(max_length=255)خب این روش خوبه... کار رو راه میندازه... ولی جالب نیست!!! یه مقدار کثیف کاریه... توی کلاس مدلمون الکی کد زدیم و همه چیز یکم قاطی شده به جای این کار میشه ثابت هامون رو توی فایل apps.py تعریق کنیم و از اونجا import کنیمشون اینطوری:# ./car/apps.py 
from django.apps import AppConfig

class CarConfig(AppConfig):
   name = &#039;product&#039;
   RED = &#039;red&#039;
   BLUE = &#039;blue&#039;
   WHITE = &#039;white&#039; 
   BLACK = &#039;black&#039;
   COLORS = (
      (RED, &amp;quotًRed&amp;quot),
      (BLUE, &amp;quotBlue&amp;quot),
      (WHITE, &amp;quotWhite&amp;quot),
      (BLACK, &amp;quotBlack&amp;quot),
    )

--------------------------------------------------------------------------------------------

# ./car/models.py
from django.db import models
from .apps import CarConfig as conf

class Car(models.Model):
    color = models.CharField(max_length=80, choices=conf.COLORS)
    name = models.CharField(max_length=255)
    company = models.CharField(max_length=255)
این روش به نظر تمیز تر میاد D: فایل ثابت هامون از فایل کد هامون جدا شد و همه چیز جای خودشه </description>
                <category>امیرحسین بیدار</category>
                <author>امیرحسین بیدار</author>
                <pubDate>Fri, 29 Jan 2021 22:25:19 +0330</pubDate>
            </item>
                    <item>
                <title>کنکور ، کلمه ای که ازش متنفرم 2</title>
                <link>https://virgool.io/@amirhosein_bidar/%DA%A9%D9%86%DA%A9%D9%88%D8%B1-%DA%A9%D9%84%D9%85%D9%87-%D8%A7%DB%8C-%DA%A9%D9%87-%D8%A7%D8%B2%D8%B4-%D9%85%D8%AA%D9%86%D9%81%D8%B1%D9%85-2-athwaoztchdh</link>
                <description>خب امروز پارت دوم تجربیاتم رو در مورد درس خوندن و گذروندن این مدت زمان سخت رو مینویسم امیدوارم کمکی باشه که بتونید اشتباهات من رو تکرار نکنید و حداقل راحت تر بتونید این مدت رو بگذرونید 1. روش خودتون رو پیدا کنید و به دیگران توجه نکنید هر کس راه و روش خودش رو برای درس خوندن داره و با اون به نتیجه میرسه یه نفر ترجیه میده که 6 ساعت پشت سر هم مثلا فیزیک بخونه و در آخر 1 ساعت استراحت کنه یکی هم ترجیح میده که 1 ساعت بخونه و 10 دقیقه استراحت کنه اهمیتی نداره که کدوم رو انتخاب میکنید روشی رو انتخاب کنید که باهاش راحتین مورد بعدی که خیلللللی مهمه و من مدت خیلی زیادی از وقتم رو سرش تلف کردم اینه که سعی نکنید به خودتون فشار بیارید حتما شما هم خیلی شنیدید که کسایی که تو کنکور موفق شدن روزی 15 تا 18 ساعت درس میخوندن البته که این حرف مفتی بیش نیست شما اگه تایم های استراحت و حواس پرتی ها و ... رو کم کنید فوقش بشه 10 الی 12 ساعت مفید درس خوندن باز هم تاکید میکنم به این حرف ها اصلا توجه نکنید  سعی کنید روش خودتون رو پیدا کنید و کیفیت رو مبنای خودتون قرار بدین نه کمیت ، روش های مختلف رو امتحان کنید و نتیجه رو برای خودتون ارزیابی کنید ببینین با کدوم راحتین و تاثیر بهتری داره بعضی از افراد ترجیح میدن صبح عمومی بخونن و بعد از ظهر ها دروس تخصصی بعضی ها برعکسن ، بعضی ترجیح میدن روزی فقط یک یا دو تا از درس ها رو بخونن بعضی ها دوست دارن 4 یا 5 تا درس رو توی بازه ها زمانی مختلف بخونن همش به شما بستگی داره که چطور انجامش بدید و چطور بازده بهتری دارید  یه تجربه هم بگم  من شخصا سعی کردم که ساعات درس خوندم رو افزایش بدم اما نتیجه کاملا برعکس داد که هیچ حتی باعث شد من کلا از درس زده بشم و تا روز ها هیچ کتابی نخونم حنی دروس رو که بهشون علاقه دارم هم ول کردم بازم میگم به خودتون فشار نیارید2. بهتره کلاس های کنکور نرید بنا به تجربه ای که من داشتم اگه احساس میکنید که پایتون توی درسی ضعیف هست و کلا یه درس رو درک نمیکنید اون موقع هست که باید برید و کلاس های آموزشی ثبت نام کنید که پایتون قوی بشه در غیر این صورت وقتتون رو با رفتن سر کلاس کنکور تلف میکنید شما همون روش ها رو میتونید با جستوجو توی اینترنت و پیدا کردن جزوه های رایگان که کم هم نیستن و بعضی هاشون واقعا خوب هستن و یا خریدن جزوه اون شخص یاد بگیرید اما اگه میرید که با دوستان دور هم باشید خب اون یه بحث جداس :))  3. ناله و فغان در مورد وضع مالی ، نداشتن امکانات ، معلم خوب ، مدرسه خوب و ... رو بزارید کنار لطفا من کاملا موافقم که پول و امکانت مناسب تو همه چیز از جمله کنکور حرف اول رو میزنه هر کس هم مخالفه بهتره بره آمار های کنکور رو ببینه که نفرات برتر همیشه از منطقه 1 و بعضی وقتا 2 هستن در حالی که منطقه 3 بیشتر از اونها شرکت کننده داره به نظرتون دانش آموزای منطقه 3 ناتوانن یا مشکل جسمی یا ذهنی دارن نه مسلمه که این طور نیست من خودم توی منطقه 3 تو یه روستا زندگی میکنم و خیلی برام سخته که میبینم استعداد ها فقط به خاطر اینکه کسی درکشون نمیکنه و کسی توانایی حمایت ازشون رو نداره حیف و تلف میشن خودم تعدادیشون رو با چشم های خودم دیدم  که وقتی یه مقدار بهشون امید و حمایت داده شده چه کار هایی که نکردن (اگه خواستین کارایی که کردن رو بهتون میگم )  اما در آخر به این نتیجه رسیدن که حالا من این کارو کردم که چی؟ این یه فاجعه عظیمه ولی در آخر وقتی چیزی وجود نداره حسرت خوردن به خاطرش فقط وقت آدم رو تلف میکنه و انرژی انسان رو میگیره من نمیخوام بهتون امید الکی بدم بگم که آره  اگه درس بخونید همه چیز اکی خواهد شد اگه کنکورتون رو خوب بدید و یه دانشگاه خوب قبول بشید شما قرار که آینده درخشانی داشته باشید نه این تازه اول راهه و قرار سخت تر هم بشه من از رشته های تجربی اطلاعی ندارم اما میدونم رشته های مهندسی نقش زیادی  توی یادگیری دانشجو ندارن در آخر خود دانشجو هست که باید بره و از هر جا که شده یاد بگیره.سعی کنید منابع جایگزین پیدا کنید به لطف تلگرام و اینترنت میشه این خلع رو مقداری پر کنید با یه مقدار گشتن توی سرچ تلگرام میتونید کانال هایی رو پیدا کنید که کتابهای رایگان رو میزارن و یا نمونه سوال هایی که میتونید به عنوان تست ازشون استفاده کنید و خوتون رو ارزیابی کنید یا میتونید از جزوه های رایگان استفاده کنید  باز هم میگم جز ناله ها رو بزارید کنار به اینا باشه من از همتون پر ترم  خیلی هاتون نصف مشکلات من رو نداشتید 4. اشکال نداره که بعضی وقتا رو مود درس خوندن نباشیدخیلی طبیعیه که بعضی وقتا اصلا حال حوصله درس نداشته باشید و به هر کسی که از درس و کتاب حرف بزنه تو دلتون فحش بدید این موقع ها سعی کنید فکرتون رو به چیز های دیگه ای منحرف کنید تا اعصابتون آروم بگیره مثلا بیاید از تجربیاتتون بنویسی :)) یا نقاشی بکشید یا برید بیرون با دوستاتون حرف بزنید یا ورزش کنید یا برید قبرستون ( شوخی نمیکنم وقتی حوصلم سر میره میرم قبرستون منظره قبرستون ما خیلی قشنگه مخصوصا موقع غروب) یه نکته دیگه سعی کنید یه همراه با خودتون داشته باشید همیشه وقتی کسی کنارتون باشه که مسیری رو طی کنید کار ها حداقل از لحاظ ذهنی راحت تر میشه یه دوست داشته باشید که با هم درس بخونید یا بعد از اینکه درس خوندید برید بیرون 1 ساعت حرف بزنید اگه رو مود نبودید اون روز رو به خودتون فرصت بدید که ریکاوری بشید و فردا از اول شروع کنید ( اما سعی کنید از یه روز بیشتر نشه ) هر چند من به دلیل دور بودن روستا مون نمیتونم دوستای مدرسم رو ببینم اما همیشه وقتی این رو امتحان کردم حداقل فرداش حالم بهتر بوده5. اگه نتایج امتحانتون مورد انتظار نبود اصلا ناراحت نشیدخیلی وقتا معمولا اوایل درس خوندن و تست زدن پیش میاد که امتحان میدید اما نتیجه خیلی ضعیف میشه و به خوتون میگید گند زدی عزیزم در واقع این طور نیست امتحان رو یه گوی شانسی در نظر بگیرید که از احتمال داره از هر مبحث یه سوال بده شما تمام کتاب رو خوندید و مرور کردید نیاز نیست اگه امتحانتون رو خراب کردید دوباره برید کل کتاب رو بخونید ( اشتباهی که من کردم ) شما فقط توی همون یه مبحث مشکل دارید فکر کنید 100 تا مبحث که هر کدوم 3 یا 4 تا نکته داره و از شانس شما دقیقا از همون 10 تا مبحثی سوال اومده که شما خوب نخوندید یا فکر میکردید بی اهمیته مثلا شما توی مبحث سقوط آزاد فیزیک 3 تست هاش رو خراب کردی و خوب نزدی آیا باید برید کل فصل 1 فیزیک 3 یعنی سینماتیک رو بخونید ؟ نه اصلا شما اون درس رو بلدید فقط چند تا نکته رو جا انداختید حرف آخر   کنکور یک روش مسخره ارزیابی هست که هیچ  نتیجه ای جز استرس خستگی سرخوردگی و تلف شدن استعداد و جوونی دانش آموز ها نداره تنها فرو کردن یک مشت مهملات توی مغز به زور پتک که معلوم نیست کجای زندگی به درد میخوره  ، آیا منی که قراره کامپیوتر بخونم یا دوستم که قرار هست که دکتر بشه کجای زندگیش قراره زبان عربی به دردش بخوره یا کجای زندگیش قراره که از شعر حافظ جملات 4 جزیی با مفعول و مسند پیدا کنه ؟ آیا اصلا کتاب دینی ما هدفش اینه که ما آیاتش رو حفظ کنیم یا هدفش اینه که ما انسان باشیم ؟ حتی خیلی از دروس تخصص هم به دردمون نمیخوره جالبش اینجاست که حتی معلم های ما هم خودشون جواب رو نمیدونن سال های طلایی عمر ما به جای اینکه صرف علم و دانش حقیقی بشه صرف این ممیشه که کدوم روش تستی باعث میشه که سریع تر به جواب برسیم دیدگاهمون فقط شده چی بخونیم که برای کنکور بهتر باشه مسابقات علمی و عملی و ورزشی رو کنسل کردیم که فقط 2 تا تست برای کنکور بیشتر بزنیم و مهم تر از همه از علایق و کار های مفیدت بزن برای یه آینده مبهم که معلوم نیست تهش چیه و با همه اینها بجنگ و در آخر وقتی نتیجه مورد رضایت رو نگرفتی بیان بگن تو تلاش نکردی تو خنگی تو در آینده هیچی نمیشی . به قول یکی از دوستان انسان ها تاوان اشتباه همدیگه رو دارن پس میدن بعضی ها با این موضوع راحت کنار میان بعضی ها مثل من راحت کنار نمیان     اما چه میشه کرد؟ جز اینکه روحیه خودمون رو حفظ کنیم و سعی کنیم و قدر داشته هامون رو بیشتر بدونیم در واقع جدای از بحث این چالش احمقانه انسان ها وقتی توی سختی قرار میگیرن قدر زندگی و لحظاتشون رو بیشتر میدونند سعی میکنند بیشتر توجه کنند سعی میکنند کمتر مقایسه کنند و بیشتر برای خواسته هاشون تلاش کنند  و کمتر به حرف بقیه گوش میدن به هر حال این حقیقت زندگی هست و قراره یه روز باهاش مواجه بشیم چه الان چه یه روز دیگه اما کاش میتونستیم که تو این مدت بیشتر مفید باشیم و کار های با اهمیت تری از صرف درس خوندن و حفظ کردن داشته باشیم ، آرزوی من این هست که حداقل نسل بعد مجبور نباشن از راهی که ما رفتیم بگذره اگه نظر پیشنهاد انتقاد دلتنگی فحش یا تجربه ای دارید که فکر میکنید کمک میکنه خیلی خوشحال میشم به اشتراک بزارید</description>
                <category>امیرحسین بیدار</category>
                <author>امیرحسین بیدار</author>
                <pubDate>Fri, 07 Aug 2020 14:10:23 +0430</pubDate>
            </item>
                    <item>
                <title>کنکور  ، کلمه ای که ازش متنفرم ( تجربیات من در مورد کنکور )</title>
                <link>https://virgool.io/@amirhosein_bidar/%DA%A9%D9%86%DA%A9%D9%88%D8%B1-%DA%A9%D9%84%D9%85%D9%87-%D8%A7%DB%8C-%DA%A9%D9%87-%D8%A7%D8%B2%D8%B4-%D9%85%D8%AA%D9%86%D9%81%D8%B1%D9%85-%D8%AA%D8%AC%D8%B1%D8%A8%DB%8C%D8%A7%D8%AA-%D9%85%D9%86-%D8%AF%D8%B1-%D9%85%D9%88%D8%B1%D8%AF-%DA%A9%D9%86%DA%A9%D9%88%D8%B1-mc3clbxfgtvd</link>
                <description>حقیقتش میخواستم چند  تا نوشته در مورد کامپیوتر بزارم ولی چون امسال باید کلا درس بخونم  اصلا وقت نکردم مطالعه ای در اون مورد داشته باشم و بعد از یه مدت احساس کردم که بهتره تجربیاتم رو در مورد این چالش که رو به روی هر دانش آموز هست بنویسم تا بلکه شما از تجربیات من درس بگیرید و اشتباه های من رو تکرار نکنید. توی این نوشته که بخش اوله تجربیاتم هست نمیخوام فعلا از  روش درس خوندن حرف بزنم  درس خودن پیش نیاز هایی داره که اول باید اون ها حل بشه تا بتونید  عملکرد خوب و قابل قبولی داشته باشید 1 . سیستم آموزش پرورش درب و داغون ایران رو با بقیه سیستم های مقایسه نکنید راستش هر وقت دارم به این موضوع فکر میکنم یاد یه  جمله میفتم که میگه کنکور قرار بود راهی ساده برای آزمودن توانایی های تحصیلی دانش آموزان باشه ولی توی گند زدن به بهترین سال های اونها بهتر عمل کرده از شما خواهش میکنم که اصلا به این موضوع فکر نکنید و وقتی این فکر به ذهنتون اومد یه کار دیگه بکنید که از ذهنتون بپره شما هیچ کاری جز غصه خوردن در این رابطه نمیتونید بکنید و وقتی نمیتونیم چیزی رو تغییر بدیم فکر کردن و حرص خوردن در موردش بی فایدس پس ولش کنید اگه براتون انگیزس  میتونید این طور فکر کنید که اونقدر پیشرفت میکنم که تغییرش میدم تا اون طور که درسته کار کنه 2 . مشکلات روحی و ذهنی و خانوادگی تون رو حل کنید  باور کنید این مشکلی هست که خیلی از ما داریم که البته بخشیش به خاطر مشکل قبلیه  ( ? ) و مقدار زیادیش هم به خاطر خودمون  یا شرایط محیطی و ... هست یه ذهن که دایم داره به خانوادش یا مشکلاتش یا شرایط بازار دلار و طلا فکر میکنه نمی تونه درس بخونه اگه بخونه هم بازده مناسبی نداره  اصلا فکر نکنید که میتونید به تنهایی از پس این مشکلات بر بیاد باور کنید ( سال های زیادی درگیر این موضوعات بودم پس میدونم چی میگم ) انسان ها توی حل مشکلات بقیه خیلی بهتر از مشکلات خودشون  عمل میکنند پس از یک  روانشناس خوب کمک بگیرید ( توجه کنید که حتما از یه فرد حرفه ای کمک بگیرید نه دوستتون یا دختر همسایه یا جزوه های خاله جونتون !! ) حداقل یه بار امتحان کنید ضرری نداره معمولا توی آموزش و پرورش منطقه ها یه واحد مشاوره هست که میتونه خیلی بهتون کمک کنه  البته با احترام به جامعه روانشناسی ممکنه دوست عزیزی که بهمون مشاوره میده مشاوره خاله زنکی باشه      ( به قول یکی از دوستان ) اگه احساس کردید که مشاور حال شما رو خوب نمیکنه و باعث نمیشه احساس بهتری پیدا کنید دنبال یه فرد دیگه بگردید هیچ اجباری توی این کار نیست که از یه فرد خاص مشاوره بگیرید  مثل پزشک ها که جسم رو درمان میکنند روانشناس ها هم روح و ذهن رو درمان میکنند و ذهن هم مثل بدن گاهی دچار سرماخوردگی و بیماری های مختلف میشه پس اگه نسخه های یه پزشک جواب نداد میتونید برید از یکی دیگه بخواید درمانتون کنه   3 .  کمک بخواید و حرف بزنید و ورزش کنید ..... زندگی کنید سعی کنید در طول روز مدتی رو با دوستای صمیمی ( لطفا توی این سال سمت gf و bf نرید ) و مخصوصا خانواده  حرف بزنید سعی نکنید همش درس بخونید چون بعد از مدتی زده میشید  ( مخصوصا شما درون گرای گرامی من خودم درون گرام ) ولی برنامه ریزی داشته باشید که به مدت مناسب درس بخونید روشی که برای من مناسبه برنامه ریزی روزانه  هر روز که از خواب بیدار میشم و صبحونم رو میخورم هست هیچ اجباری توی این کار نیست که کی انجام بدیمش و چطور چون معمولا خوب برنامه ریزی میکنیم مشکل اصلی توی خوب انجام دادنه هر روز یه مدت ورزش کنید چون باعث میشه روحیتون رو حفظ کنید و این موضوع خییییلی مهمه با اینکه خیلی طرفدار جملات انگیزشی نیستم ولی اگه جواب میده امتحانش کنید این مدت سخته میگذره و من هم موافقم ولی بلاخره باید انجام بشه پس بهتره از لذت ببرید 4 . عبادت نقش زیادی در حفظ روحیه داره خب میدونم شاید بعضی از شما بگید چرت و پرت نگو  اما حقیقت داره جدا از بحث های ایدیولوژیکی و فلسفی و دینی عبادت  واقعا باعث میشه روحیه بهتری پیدا کنید هم چنین چون معمولا باید یه مدت خاص اجرا بشن توی اجرای زمانبندی و انجام کارها تون کمک زیادی میکنه 5 . اشکال نداره گاهی دپرس بشی یا گریه کنی هر انسانی ممکنه زیر فشار خیلی زیادی که بهش وارد میشه کم بیاره و این مدت فشار فوق العاده زیاد عصبی و روحی به انسان وارد میشه من خودم به خاطر شدت فشار عصبی میخواستم ترک تحصیل کنم با این که توی 12 سال معمولا جزو دانش آموزای برتر مدرسه بودم  بدونید  که اگه گاهی گریه کنید اصلا نشانه ضعف و یا ناتوانی شما نیست نشونه اینه که داری تمام تلاشت رو میکنی تا بتونی مشکلات رو حل کنی و به چیزی که میخوای برسی و این ارزشمنده حرف آخر    شاید فکر کنید الان من به موقع درس میخونم به موقع میخوابم  به موقع ورزش میکنم و همه چیزم اکیه در واقع اینطور نیست من هنوزم مشکلاتی دارم که سعی میکنم حلشون کنم و گاهی تعادل زندگی از روالی که دوست دارم بیرون میاد ولی مهم اینه که بتونیم اون رو دوباره به حالت قبل برگردونیم مهم اینه که به درد ها و رنجهامون معنی بدیم مهم اینه که هر اتفاقی میفته بازم ادامه بدیم ... درسته که  من از کلمه کنکور هنوز هم متنفرم ولی اون چیزی که ما رو نکشه قوی ترمون میکنه به امید خدا توی چند تا نوشته بعدی بقیه تجربیاتم رو هم  مینویسم  </description>
                <category>امیرحسین بیدار</category>
                <author>امیرحسین بیدار</author>
                <pubDate>Thu, 16 Apr 2020 04:11:37 +0430</pubDate>
            </item>
                    <item>
                <title>کمک در مورد گیت !</title>
                <link>https://virgool.io/@amirhosein_bidar/%DA%A9%D9%85%DA%A9-%D8%AF%D8%B1-%D9%85%D9%88%D8%B1%D8%AF-%DA%AF%DB%8C%D8%AA-gvqtlxl44zmr</link>
                <description>چند ماهیه  که هر چی سرویس , مخزن درست حسابی برای کنترل نسخه و git  هست فیلتر شده قبلا میشد از dns شکن استفاده کرد ولی اونم مثل اینکه از کار افتاده لطفا زیر این پست هر روش یا کاری که به نظرتون میرسه ( از دور زدن یا محاجرت کردن یا vpn یا vps و ... ) توی هر سیستم عامل که میدونید زیر این پست کامنت کنید شاید به بقیه یه کمکی بشه که ببینن چی کار باید بکنن </description>
                <category>امیرحسین بیدار</category>
                <author>امیرحسین بیدار</author>
                <pubDate>Sat, 14 Sep 2019 19:03:00 +0430</pubDate>
            </item>
                    <item>
                <title>مار های ناهمزمان! ( async in python )</title>
                <link>https://virgool.io/justforfun/%D9%85%D8%A7%D8%B1-%D9%87%D8%A7%DB%8C-%D9%86%D8%A7%D9%87%D9%85%D8%B2%D9%85%D8%A7%D9%86-async-in-python-z6afpf4xhnzz</link>
                <description>این مقاله در مورد روش های ناهمزمانی هست که توی پایتون میشه پیاده کرد البته بیشتر سعی کردم رو مفاهیم و دلیل استفاده از این روش و مزیت ها و معایب هاشون تمرکز کنم تا آموزش پیاده سازی اون ها کدهای مثال ها هم به زبان پایتون هست چون خودم پایتون بلدم :)) و اینکه درکش راحت تر از بقیه زبان هاست. مسلما این مقاله خالی از عیب نیست و من هم متخصص نیستم پس هر جا مشکل داشت حتما بگیداز اول شروع میکنیم اصلا این async (ناهمزمانی) و sync (همزمانی) که ما میگیم یعنی چی ؟ یه مثال خیلی خوب و گیرا همه چیز رو روشن میکنه.  فرض کنید من رفتم به یه رستوران ایتالیایی و درخواست  آبگوشت  میدم اگه در مدتی که آبگوشت حاضر میشه من جلو پیشخوان وایسم و هیچ کاری نکنم من در واقع یه کار sync انجام دادم اگه تا وقتی که آبگوشت من حاضر میشه کار دیگه ای کنم مثلا قلیونی بکشم و وقتی که غذا حاضر شد صدام کردن و من رفتم آبگوشتم رو گرفتم من در واقع یه کار async انجام دادم البته میشه یه حرکت دیگه هم زد و اون اینه که یکی از دوستای بیکارمون رو بگیم وایسا جلو پیشخوان وقتی حاضر شد برامون بیار بعد خودمون بریم دوباره پی قلیونمون ! این حات هم async هست.خب فکر کنم متوجه شده باشید منظورم چیه حالا همین مثال تو دنیای برنامه نویسی خیلی پیدا میشه از وایستادن برای جواب ریکوست یا ریسپانس تو نت بگیر تا جواب یه پردازش سنگین تصویر یا یه الگوریتم پیچیده و ... روش هایی که تو پایتون وجود داره زیادن و اون هایی که من در موردشون اطلاع دارم عبارت اند از : MultiProcessing ( چند پردازشی )MultiThreading ( چند نخی )  AsyncIO  (خروج و ورود ناهمزمان ( این دیگه چه اسمیه!! ) )  ( خ و ناهم ) MQ or message queue ( صف پیام )این اخریه کلا به پایتون ربط نداره اما برای ناهمزمانی توی بعضی پروژه ها به کار میره تو این مقاله در موردش حرف نمیزنم شاید در آینده در موردش نوشتم خودتون به عنوان مشق شب در موردش تحقیق کنیم همه چی رو که من نباید بگم مرسی ا‌َهMultiProcessing:کلا من دوست دارم همه چیز رو از اول شروع کنم :))) پس میریم دنبال multiprocessing و کلا چی هست؟در روش multiprocessing ما از هسته های سی پی یو و سیستم زمان بندی سیستم عامل استفاده میکنیم به این صورت که ما چند process ایجاد میکنیم و سیستم عامل هم به صورت عادلانه وقتی که یکی از process نیاز به پردازش داشت اون process رو به یکی از هسته ها میفرسه تا  کاراش رو بکنه هر process فضا و اطلاعات خودش رو داره و process های مختلف نمیتونن اطلاعاتی که دارن رو با بقیه process ها به اشتراک بزارن یه مثال سادش تو پایتون اینه:( تو این مکان به صورت عجیبی من نمیتونم کد ها رو بزارم و سایت ویرگول ارور 403 میده پس خودتون برید مثالش رو تو نت ببینید )تو این روش  سیستم عامل هر process که ساخته شده رو به صورت عادلانه از cpu بهره مند میکنه و اونهارو موقعی که نیاز بود یا نوبتشون شده بود به یکی از هسته های cpu میفرسته که کارشون رو بکنن و برنامه شما parallel ( موازی ) میشه  و مسلما سرعتش هم بیشتر میشه در اینجا یه نکته وجود داره وقتی cpu شما یک هسته ای باشه دیگه کدای شما موازی اجرا نمیشه اما نیاز نیست اصلا نگران باشید چون شما روی شانه های غول ها وایستادید پس سیستم عامل همه کارارو براتون انجام میده و در هر زمان یکی از process هارو اجرا میکنه این موقع دیگه کد شما موازی نیست بهش میگن concurrency  نکته : در انگلیسی concurrency = synchronism ولی در برنامه نویسی concurrency ≠ synchronismMultiThreading:ثرد ها در واقع همون بچه process ها هستن که داخلی یک process ایجاد میشن و همون کار process رو انجام میدن و سیستم عامل هم برای زمان بندی تو اجرای اون ها بین process ها فرقی نمیزاره اماااااااااااااا یه فرق بزرگ و چند تا فرق کوچیک این وسط هست اولیش اینه که دیتاها تو ثرد ها میتونن به اشتراک گذاشته بشن به این شکل نگاه کنید:همون طور که اون بالا میبینید همه thread ها به اطلاعات اشراک گذاشته شده دسترسی دارن فرق های کوچیکشون هم اینه که thread ها رم کمتری مصرف میکنن و زمانی که طول میکشه ساخته بشن کمتره ولی در عوض  process ها کار باهاشون راحت تره و سرعتشون هم یه مقدار از thread ها بیشتره یه مثال تو پایتون این هست :import threading 
import time 
import random   

def worker(number):    
    sleep = random.randrange(1, 10)     
    import threading   
     
for i in range(5):        
    t = threading.Thread(target=worker, args=(i,))     
    t.start()  
   
print(&amp;quotAll Threads are queued, let&#039;s see when they finish!&amp;quot)خیلی شبیه کدای multiprocessing هستن نه ؟ ولی هر کی که سیبیل که داره بابای من نیست :)))) این دوتا کد در باطن اصلا شبیه هم نیستن اصلا Cpython ( نسخه پیشفرض پایتون) نمیتونه موازی سازی با threading رو انجام بده! فقط یکی از اون ثرد ها هر لحظه اجرا میشه یه لحظه وایسا چی؟؟؟؟؟؟؟؟؟؟؟ پس اونا چی بود گفتی ؟؟؟ گرفتی مارو حاجی ؟خب برای درکه این مطلب باید یه playback بزنیم به وقتی که میخواستن Cpython رو درست کنن و از اول شروع کنیم ( بازم از اول :))) )داستان از اینجا شروع میشه که دوستان عزیزی که میخواستن Cpython رو بسازم میخواستن هرچی لایبرری C دم دستشون هست بیارن وصل کنن به python و اکستنشن های اضافی هم در آینده راحت نوشته بشن اما یه مشکل وجود داشت ۱- بیشتر لایبرری های سی thread safe نیستن ۲- نوشتن کدی که thread safe باشه دقت و تجربه و زمان بیشتری میخواد ( کلا سخته ) پس گفتن حاجی بیخیال ورداشتن یه قفل گنده زدن رو چیزی که ساختن گذاشتن اسمش رو هم گذاشتن ( GIL (Global Interpreter Lock و تادددددامممم مشکل حل شد نکته : تحقیق در مورد thread safe  بر عهده دانش آموز استخب یه سوال چرا میشه موازی سازی با multiprocessing کرد ولی نمیشه با multithreading کرد؟ جوابش تو تفاوت اصلی این دوتاس همون اطلاعات اشتراک گذاشته شده مشکل thread safe رو ایجاد میکنن از اونجا که توی multiprocessing اصلا این ویژگی نیست پس کلا این مشکل هم ایجاد نمیشه پس استفاده ازش بلا مانع هستشاعر در این لحظه میگوید: شت ! خب حالا که نمیتونیم از این ویژگی خفن استفاده کنیم باید چیکار کنیم؟۳ حرکت میتونیم بزنیم اولی اینکه این کار رو بسپاریم به یه چیزی خارج از از Cpython یا از یه نسخه پایتون استفاده کنیم که GIL نداره یا برای سر بار کمتر از Green thread استفاده کنیمآخریه چی هست؟ در واقع شبیه سازی کار ثردها روی یه ثرد هست یعنی شما میتونی هر بخش از کدت رو در هر لحظه اجرا کنی اما نمیتونی همزمان اجرا کنی یعنی همون thread با GIL که تو پایتون هست ( thread های پایتون واقعیین) اما چون thread ها توسط لایبری ها  ساخته میشن هم سرعت ساخته شدنشون بیشتره هم رم کمتری میگرن  هم سرعت سویچشون بیشتره اما خب کار باهاش یکم سخت تره (یه خرده)اینم یه شکل که درک کار GIL رو راحت میکنهAsyncIO : اسینک آی ا‌ٌ   در واقع خیلی جدید نیست قبلا یه پروژه third-party بوده ولی الان بخشی از پایتون شده و خیلی هم محبوب هست   این کاری که asyncio انجام میده کار جدیدی هم نیست توی زبان ها و فریمورک های دیگه هم وجود داره مثلا nodejs خب اصلا این asyncio چی هست ؟ چی کار میکنه ؟ و وقتی multithreading و multiprocessing هست چرا اصلا از این استفاده کنیم ؟ اسینک آی ا‌ٌ چیز خوبیه :))) (اگه خوب نبود که ۲ تا keyword براش توی پایتون نمیدادن ) یه کتابخونه برای ایجاد  concurrency توی برنامه های شما هست و از اسمش هم معلوم هست برای io طراحی شده مثلا وقتی میخواید ۱۰ تا ریکویست بزنید دیگه لازم نیست یه ریکویست بزنید بعد منتظر جواب بمونید بعد دوباره یکی دیگه بزنید و  ... همه اون ها رو یه جا ایجاد میکنید بعد منتظر جواب میمونید و وقتی جواب اومد یه event ران میشه که بقیه کد شما رو اجرا میکنه و همه این ها روی یه thread یا process انجام میشهیه مثال: import asyncio
import datetime
import random

async def my_sleep_func():
    await asyncio.sleep(random.randint(0, 5))

async def display_date(num, loop):
    end_time = loop.time() + 50.0    
    while True:
        print(&amp;quotLoop: {} Time: {}&amp;quot.format(num, datetime.datetime.now()))
        if (loop.time() + 1.0) &gt;= end_time:
                break
        await my_sleep_func()
        
loop = asyncio.get_event_loop()

asyncio.ensure_future(display_date(1, loop))
asyncio.ensure_future(display_date(2, loop))

loop.run_forever()الان سوال سوم  واقعا چرا ؟ جواب : بخاطر GIL ( مثل اینکه همه چیز تقصیر اینه) واقعا وقتی از ویژگی موازی سازی ثرد ها نمیتونیم استفاده کنیم که برای این طراحی شدن اصلا چرا ازشون استفاده کنیم؟ مسلمه asyncio رم خیلی کمتری مصرف میکنه و محدودیتی هم توی ایجاد event نداره اما greenthread هم هست که هم میشه تعداد زیادی thread توشون spawn کرد و رم کمی هم مصرف میکنن پس اونا چی ؟ خب تفاوتشون توی محدودیت این green thread هاست از اونجا که اینا همون شبیه سازیه thread واقعی هستن پس محدودیت های thread های اون ها رو هم دارن مثل thread safe  بودن یا ارتباط نداشتن thread ها به هم دیگه ( مثلا کال کردن یه متد توی یه ثرد از یه ثرد دیگه) و پیچیده شدن کد ها و ... از اونجا که asyncio به صورت رادیکالی متفاوت پیاده سازی شده پس اون مشکل ها رو نداره و شما میتونید با خیال راحت کاراتون رو بکنید به همین راحتی امیدوارم که مفید واقع شده باشه و جالب باشه براتون در ادامه لیستی از کلمات کلیدی میدم که خواستید سرچ کنید توی این موضوع به درد میخوره asyncio , celery , MQ , rabbitmq , sub pub ,  multithreading , multiprocessing , thread safe  , sync ,  concurrency , greenlet , greenthread , gunicorn , uwsgi منابع :https://labs.getninjas.com.br/go-vs-cpython-visual-comparison-of-concurrency-and-parallelism-d29a1ebec20a#targetText=AsyncIO%20and%20Gevent%2Dish%20options,controls%20the%20green%20thread%20switching.http://masnun.rocks/2016/10/06/async-python-the-different-forms-of-concurrency/سایت medium ,   ویکی پدیا و stackoverflow و quora و هر چی دم دستم اومده...اینم اگه دوست دارید بیشتر در مورد thread ها بخونید :https://virgool.io/@GreatBahram/once-for-ever-parallelism-1-iqyzjwqmks0n </description>
                <category>امیرحسین بیدار</category>
                <author>امیرحسین بیدار</author>
                <pubDate>Sat, 14 Sep 2019 00:32:02 +0430</pubDate>
            </item>
                    <item>
                <title>جنگو , مسئله اینست ...</title>
                <link>https://virgool.io/@amirhosein_bidar/%D8%AC%D9%86%DA%AF%D9%88-%D9%85%D8%B3%D8%A6%D9%84%D9%87-%D8%A7%DB%8C%D9%86%D8%B3%D8%AA-jmrjekpeax0n</link>
                <description>جنگو یکی از فریمورک های قدرتمند دنیای وب هست که طرفدار های زیادی هم داره اما مثل هر فریمورک و برنامه دیگه ای مزیت ها و معایب خاص خودش رو داره اگه تصمیم گرفتید که از جنگو استفاده کنید بهتره یه مقدار بیشتر فکر کنید و اگر هم تصمیم گرفتید استفاده نکنید بازم بهتره بیشتر فکر کنید... :)  دوست دارم تجربه ۲ سال کارم با django و ورود به دنیای وبسایت ها با این فریمورک و خوبی ها و دردسراش رو درموردشون حرف بزنم .   دوست دارم اول از بدیاش بگم بهتره تازه واردا سمتش نرن من خودم با جنگو شروع کردم دلیل اول اینکه جنگو با پایتون نوشته شده و پایتون یه زبان همه منظورس و مخصوص وب طراحی نشده در نتیجه برای برخی از کار ها دردسر های زیادی ایجاد میشه. به عنوان مثال آپلود فایل یادمه اون اول ها که داشتم جنگو رو یاد میگرفتم ۱ ماه روی این موضوع گیج بودم که فایل چطوری آپلود میشه بعدا که تو php یه برنامه کوچیک ساختم که به راحتی میشد فایل ها رو آپلود کرد خیلی تعجب کردم !! مگه داریم مگه میشه :Dیا باید وقت شروع کردن مفاهیمی مثل mvc و model ها و template ها یا ده ها مفهوم دیگه رو یاد بگیرن که این باعث زده شدنشون از فریمورک میشه در حالی که اینا اصلا تقصیر جنگو نیست اون ابزار ها دست یه آدم کار بلد یا کسی که قبلا یه وبسایت کوچیک با php زده خیلی کار ها میکنند اما واسه تازه واردا , فقط گیج کننده ان.واسه فریلنسری خوب نیست اره حرف تلخیه مخصوصا تو ایران اما درسته دلیل خوبیم داره پروژهای فریلنسری معمولا اونقدر بزرگ یا پیچیده نیست نیاز به توسعه برنامه های با ایده های جدید و راه حل های متفاوت نداره یا نیاز به مقیاس پذیری در آینده نداره درسته که معمولا سرعت تحویل پروژه براشون مهمه و جنگو هم برای راحتی و سرعت توسعه ساخته شده اما این سرعت رو با اون سرعت مد نظر فریلنسری اشتباه نگیرید جنگو سرعت خیلی زیادی در توسعه برنامه هایی با ویژگی و راه حل های جدید که قبلا وجود نداشتن و  در ذهن شما خطور کرده رو داره برای ساختن پروژه های معمولی  که قبلا نمونه هاش زیاد هست بهتره از وردپرس یا جومولا یا  ... استفاده کنید با اون ها میتونید به نتایج سریعتر و حتی  بهتر برسید .همچنین این پروژه ها معمولا بودجه کم یا متوسطی دارن جدا از این که اون وقت و انرژی که جنگو برای ساخت اونها از شما میگیره زیاده هزینه های نگهداری وبسایت های  جنگو بیشتر از نمونه های مشابه شه دردسر اصلی تازه موقع آماده شدن برای نمایش عمومی ظاهر میشهنمیتونم از شدت استرسی که موقع انجام یه کانفیگ اشتباه رو nginx انجام دادم و کل سایت پایین اومد بهم وارد شد بگم مسئله جنگو نیست مسئله آماده کردن جنگو برای نشون دادن نبوغ و مهارت شما به دیگرانه یعنی همون کانفیگ های nginx و uWSGI یا Gunicorn  و برنامه های دیگه که شما از اونها مجبورید استفاده کنید هست که بعضی وقتا گریه آدم رو در میاره  درسته که gunicorn کانفیگاش راحت تر از uwsgi هست ولی واقعا نه اونقدر   , این یکی دیگه از دلایلی هست که میگم نباید تازه واردا سمتش برن من با اینکه چند بار با uWSGI و nginx کار کردم هنوزم چیز زیادی در مورد اونها نمیدونم. همچنین بر خلاف جنگو منابع خوب و جالبی در مورد این ابزار ها زیاد نیست حداقل برای uWSGI که همین طوره و خود نویسنده document اصلی اون به این مسیله اعتراض میکنه. اگه بدنتون میخاره برای مسایل تکنیکی و کار کردن با برنامه های لینوکسی یه نگاه به document رسمی uWSGI بندازید :)))خوب دیگه بیخیال بدی هاش بشیم چون یکمی دلم پر بود زیاد  نوشتم حالا بریم دنبال خوبیهاش سرعت توسعه بالاس در نتیجه برای استارتاپ ها خوبسرعت یکی از مسیله های مهم استارتاپ هاست اون ها  معمولا رو ایده هایی کار میکنند که میخوان به روش خودشون و به شکل جدیدی حل بشه خب بهتون تبریک میگم جنگو واسه شما ساخته شده پایتون یه سینکس خیلی راحت و جالب داره و اگه قبلا تجربه ای داشته باشید به راحتی میتونید یه نمونه اولیه از اونچیزی که تو ذهنتونه بسازید این داستان که اینستاگرام تو ۸ هفته درسته شده ( نسخه اولیش ) واقعا میتونه اتفاق بیفته اگه شما جنگو رو بلد باشد   یه جامعه فعال داره واقعا نشده تا الان دنبال کدی بگردم و یا مشکلی با جنگو پیش بیاد که کسی در موردش چیزی نپرسیده یا کد یا اپی براش وجود نداشته باشه جنگو واقعا یه جامعه فعال تو سراسر جهان داره هر چند تو ایران  افراد کمی رو دیدم که ازش استفاده کنن (به نسبت بقیه فریمورک ها) ولی  در بقیه دنیا افراد خیلی زیادی هستن و دارن باهاش کار میکنن و برنامه های قدرتمندی باهاش درست میکنندوقتی یادگرفتی که کارارو با دیدگاه جنگو پیش ببری تازه کارا راحت میشه اوایل کار زیاد روش کار کرد جنگو رو درک نمیکردم و فکر میکردم بیشتر ابزاری که تو اون استفاده میشن اضافی هستن و میشه بدون اون ها هم کار کرد البته درست فکر میکردم ولی این قسمتش رو یادم رفته بود که اون ابزار ها باعث راحت تر شدن کار ها میشه و دیگه نیاز نیست من چرخ رو دوباره بسازم این فلسفه اصلی جنگو هست که باعث میشه سرعت کار بالا تر بره و همه چیز سریع تر تموم بشهراستش اوایل من جنگو رو انتخاب کردم چون سرعتش نسبتا خوب هست و سرعت توسعش هم زیاده در مورد مورد دوم درست فکر میکردم اما تصورم از مورد اول اشتباه بود ( نه اینکه سرعتش کمه , تصور من اشتباه بود) سرعت برنامه رو پروژه تایین میکنه خیلی از پروژه ها نیازی به یه فریمورک خفن با سرعت فضایی نداره در واقعه هر چقدر به سرعت بیشتر نزدیک بشیم مجبوریم بودجمون رو افزایش بدیم و از سرعت توسعه کم کنیم و حتی سرعت توسعه هم فقط بستگی به فریمورک و زبانی که استفاده میکنید نداره عوامل دیگه ای مثل مهارت برنامه نویس ها و نحوه زمان بندی و تقسیم کار ها و حتی روحیه هم تاثیرات زیادی روی سرعت توسعه داره  امیدوارم جالب باشه نظرتون رو دوست دارم بدونم</description>
                <category>امیرحسین بیدار</category>
                <author>امیرحسین بیدار</author>
                <pubDate>Sun, 11 Aug 2019 18:04:19 +0430</pubDate>
            </item>
            </channel>
</rss>