es
Feedback

¡No caigas en manos de tramposos! Telemetrio encuentra y marca estos canales 👉 Si quieres ver la etiqueta, suscríbete

Syntax | سینتکس

Syntax | سینتکس

Ir al canal en Telegram
Buy Ad
3 260
Suscriptores
-224 horas
+67 días
-630 días
Archivo de publicaciones
Repost from Normal Developer
میبینید که یه سایت ساده لیارا بنچ C گرفته در مقابل یه سایت که تصویر هم زیاد داره روی هتزنر بنچ A گرفته! @Normal_Developer
+1
میبینید که یه سایت ساده لیارا بنچ C گرفته در مقابل یه سایت که تصویر هم زیاد داره روی هتزنر بنچ A گرفته! @Normal_Developer

Repost from Normal Developer
ممکنه شما هم برای هاستینگ سایت یا اپلیکیشنتون از لیارا (liara.ir) استفاده کنید. حدودا از سال ۱۴۰۰ سرویسای دم دستی که لازم داشتم رو میبردم روی لیارا یا حداقل نسخه اولیه رو اونجا ران میکردم. سایت شخصی خودم رو هم اونجا ران کردم چون میخواستم از قابلیت های آماده ش استفاده کنم و زیاد روی تنظیم زیرساخت زمان نذارم و بیشتر روی توسعه تمرکز کنم. ولی تو چند ماه اخیر واقعا با لیارا مشکل پیدا کردم و برام نه صرفه داره که ازش استفاده کنم و نه کیفیتشون مثل قبل خوبه. تو ماه های جدید برای هر قابلیتی دارن یه قیمتی میدن. فرض کنید یه سایت ساده با مثلا پایتون با کمترین منابع ران کنید روی لیارا. ببینیم چقد در میاد: هزینه PaaS ماهانه: ۹۹ هزار تومن (512 مگابایت رم - ۰.۵ هسته پردازنده- ۵ گیگ حافظه) هزینه بسته امکاناتی: ۷۴ هزار تومن (برنزی) هزینه دیتابیس پستگرس: ۹۹ هزار تومن (۵۱۲ مگابایت رم - ۰.۵ هسته پردازنده - ۵ گیگ فضای ذخیره سازی) جمعا: ۲۷۲ هزار تومن ماهانه معادل حدود 4.5 دلار در ماه حالا اگه شما بخواید یه سرور مجازی بگیرید از یه دیتاسنتر خوب مث هتزنر یا OVH هم حدود ۵ دلار در ماه هزینه داره. ولی منابعی که مثلا هتزنر دراختیارتون قرار میده میشه ۴ گیگابایت رم، ۲ هسته پردازنده، ۴۰ گیگ فضا! به اضافه اینکه کیفیت زیرساختی خیلی بهتری داره. در ادامه بنچمارک GTMetrics از یه سرویس نسبتا پرتصویر و عکس که روی هتزنر دارم و سایت شخصی خودم که هیچی نداره رو میذارم. @Normal_Developer

Docker in Docker (DinD) به اجرای Docker در داخل یک کانتینر اشاره دارد. یک مثال کاربردی اش پایپ‌لاین CI/CD است: - در برخی مواقع ممکن است پروژه ما برای اجرا و تست نیاز به یک سری backing service ها مثل redis و ... داشته باشد. در این صورت ترفندی که می زنیم را می توان اینطور بیان کرد که داخل کانتینر، کانتینر های مورد نیاز پروژه مان را آپ می کنیم. مثال:
ci.yml
name: CI

on:
  pull_request:
    types: [opened, edited, reopened, synchronize, ready_for_review]
    branches: [main]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Setup python
        uses: actions/setup-python@v5
        with:
          python-version: '3.12'
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install -r requirements/test.txt

      - name: dockerUp
        run: sudo make docker-test-up

      - name: Test
        run: make test

      - name: dockerDown
        run: sudo make docker-test-down
و داخل فایل Makefile:
.PHONY: test

ROOT=$(realpath $(dir $(lastword $(MAKEFILE_LIST))))

test:
  python manage.py test

docker-test-up:
  docker compose -f $(ROOT)/docker-compose-test.yml up -d

docker-test-down:
  docker compose -f $(ROOT)/docker-compose-test.yml down
چالش DinD در موارد بیشتر 1. امنیت: - اجرای Docker در Docker می‌تواند خطرات امنیتی به همراه داشته باشد، زیرا کانتینر داخلی به Docker Host دسترسی دارد. 2. پیچیدگی شبکه: - کانفیگ شبکه می‌تواند پیچیده شود، به ویژه اگر نیاز به ارتباط بین کانتینرهای داخلی و خارجی باشد. 3. عملکرد: - ممکن است عملکرد ضعیف‌تری نسبت به اجرای Docker به صورت مستقیم روی سرور داشته باشد. نحوه استفاده برای استفاده از Docker in Docker، می‌توانید از ایمیجی مانند docker:dind استفاده کنید. یک نمونه ساده از اجرای DinD به صورت زیر است:
docker run --privileged --name dind-container -d docker:dind
استفاده از فلگ --privileged ضروری است تا کانتینر به منابع سیستم دسترسی کامل داشته باشد. جایگزین‌ها در بسیاری از موارد، استفاده از روش‌های جایگزین مانند Docker خارج از کانتینر یا استفاده از ابزارهایی مانند Kubernetes می‌تواند مشکلات مربوط به DinD را حل کند و امنیت بیشتری فراهم کند. #DinD @Syntax_fa

Linter & pylint لینتر ابزاری است که برای تحلیل کد استفاده می‌شود تا مشکلات احتمالی در کد را شناسایی کند. این ابزارها به توسعه‌دهندگان کمک می‌کنند تا با شناسایی خطاهای سینتکس، استانداردهای کدنویسی و مسائلی مانند memory leak و ... را شناسایی کنند و کیفیت کد را بهبود بخشند. کاربردهای Linter 1. شناسایی خطاهای سینتکسی: لینتر می‌توانند خطاهای سینتکسی را قبل از اجرای کد شناسایی کنند. 2. بهبود خوانایی کد: با پیشنهادهایی برای رعایت استانداردهای کدنویسی می دهد، خوانایی کد را افزایش می‌دهند. 3. کاهش باگ‌ها: با شناسایی مسائل بالقوه، به کاهش تعداد باگ‌ها کمک می‌کنند. 4. یکنواختی کد: با اطمینان از رعایت استانداردهای یکسان در سراسر پروژه، یکنواختی کد را حفظ می‌کنند. معرفی Pylint پای لینت یک ابزار Linter برای زبان Python است که به تحلیل کد Python می‌پردازد تا مشکلات مختلفی مانند خطاهای سینتکسی عدم رعایت استانداردهای PEP 8 و مسائل منطقی را شناسایی کند. ویژگی‌های Pylint - شناسایی خطاهای نحوی و منطقی: Pylint می‌تواند خطاهای نحوی و منطقی را در کد شناسایی کند. - پیشنهاد برای بهبود کد: با ارائه پیشنهادهایی برای بهبود کد، توسعه‌دهندگان را در نوشتن کدهای تمیزتر و بهینه‌تر یاری می‌دهد. - پشتیبانی از استانداردهای PEP 8: با بررسی کد نسبت به استانداردهای PEP 8، به رعایت بهترین شیوه‌های کدنویسی کمک می‌کند. - گزارش‌دهی جامع: گزارش‌های کاملی از مشکلات موجود در کد ارائه می‌دهد که شامل امتیازدهی به کیفیت کد نیز می‌باشد. مثال نحوه استفاده از pylint:
pip install pylint
بعد از نصب کردن با دستور
pylint .
تمامی کد های پروژه را بررسی می کند. خیلی مواقع نیاز است که لینتر ها و تنظیماتشان را تغییر بدهیم. برای اینکار دستور زیر را میزنیم تا فایل کانفیگ لینتر ساخته شود:
pylint --generate-rcfile > .pylintrc
در فایل .pylintrc می توانید بر حسب نیاز خودتان برخی از لینتر هارا غیر فعال کنید یا تنظیماتشان را تغییر دهید. نحوه استفاده کاربردی از لینتر: میتوانید در github workflow از لینتر استفاده کنید و اگر مشکلی شناسایی شد اکشن با خطا مواجه شود. همچنین می توانید از ابزار pre commit استفاده کنید و لینتر را تعریف کنید تا هر زمانی که کامیت جدیدی زده میشود بررسی کند اگر خطایی وجود دارد جلوی کامیت را بگیرد. #linter #pylint #python @Syntax_fa

Repost from Normal Developer
شرکت SpaceX در موفقیتی تاریخی، تونسته بوستر Super Heavy رو روی برجی که از اون پرتاب شده بود، روی دو بازوی مکانیکی این برج با دقت فوق العاده ای فرود بیاره! @normal_developer

🔍 بررسی استراتژی جداسازی عملیات چک کردن وجود و بازیابی اطلاعات از دیتابیس دو رویکرد اصلی در این زمینه در نظر داریم: 1️⃣ جداسازی مسئولیت‌ها: در این روش، دو متد جداگانه داریم: - check_user_exists(user_id) - get_user_by_id(user_id) مزایا: ✅ رعایت Single responsibility(SRP) ✅ خوانایی و وضوح بیشتر کد ✅ امکان استفاده مجدد از هر متد به صورت مستقل معایب: ❌ افزایش تعداد کوئری‌های ارسالی به دیتابیس 2️⃣ ترکیب عملیات در یک متد: در این روش، یک متد واحد داریم: - get_user(user_id) مزایا: ✅ کاهش تعداد کوئری‌های ارسالی به دیتابیس ✅ بهبود کارایی معایب: ❌ احتمال نقض اصل Single responsibility ❌ کاهش خوانایی و وضوح کد 🤔 حالا سوال این است: کدام رویکرد بهتر است؟ پاسخ: بستگی دارد! باید فاکتورهایی مانند نیازهای پروژه، الگوهای استفاده، و اولویت‌های تیم را در نظر گرفت. اما یک راه حل میانه هم وجود دارد: 3️⃣ رویکرد میانه: در این روش، یک متد اصلی داریم که می‌تواند مبنای سایر عملیات باشد:
class UserService:
    @staticmethod
    def get_user(user_id: int) -> Optional[User]:
        try:
            return User.objects.get(id=user_id)
        except User.DoesNotExist:
            return None

    @staticmethod
    def check_user_exists(user_id: int) -> bool:
        return UserService.get_user(user_id) is not None

    @staticmethod
    def get_user_or_raise(user_id: int) -> User:
        user = UserService.get_user(user_id)
        if user is None:
            raise ObjectDoesNotExist(f"User with id {user_id} does not exist")
        return user
این رویکرد مزایای هر دو روش را ترکیب می‌کند: ✅ تنها یک کوئری به دیتابیس زده می‌شود ✅ اصل مسئولیت تکی تا حد زیادی رعایت می‌شود ✅ انعطاف‌پذیری بیشتری در استفاده داریم ✅ کد خوانا و قابل نگهداری است شما کدام رویکرد را ترجیح می‌دهید؟ @Syntax_fa

درود خدمت سینتکسی های گرامی. تیم سینتکس نیازمند فرانت‌اند دولوپر با تجربه با مشخصات ذکر شده در زیر می‌باشد: - دارای روحیه تیمی - مسلط به JS - مسلط به ریسپانسیو/adaptive دیزاین - مسلط به یکی از فریم‌ورک‌های NextJS یا nuxt - آشنایی با یکی از کتابخونه‌های انیمیشن مانند GSAP - تکنیک های بهینه سازی وب - روحیه یادگیری بالا، خلاقیت و انعطاف‌پذیری در صورت تمایل به عضویت در تیم سینتکس به عنوان فرانت‌اند دولوپر، به آیدی زیر پیام دهید: @FalahiDevPV

فرانت کاری توی چنل هست که بتونه این ui رو در بیاره؟😏

کتاب django in production رو دادم به notebook llm و یه پادکست ساخته برامون که این کتاب درمورد چیا صحبت میکنه و یه دید کلی میده نسبت به کتاب. پ.ن: سرویس notebook llm خلاصه مقاله یا کتابی که بهش دادید رو مثل یه پاکست که دو نفر دارن درمورد اون مقاله صحبت میکنن درمیاره! SOURCE @Syntax_Fa

کتاب django in production رو دادم به notebook llm و یه پادکست ساخته برامون که این کتاب درمورد چیا صحبت میکنه و یه دید کلی میده نسبت به کتاب. @normal_developer

کتاب django in production رو دادم به notebook llm و یه پادکست ساخته برامون که این کتاب درمورد چیا صحبت میکنه و یه دید کلی میده نسبت به کتاب. @normal_developer

https://flutter-tutorial-b68fa.web.app/ سلام دوستان خسته نباشید لطفا با اعداد ارقام بگید سرعت لود وبسایت چقدره نتتون هم درست باشه

پست موقت : سلام روز همگیتون بخیر باشه رفقا . لطفا به لینک زیر برید و سرعت لود شدن وبسایت بار اول و بار دوم رو زیر پست کامنت کنید . دم همتون گرم🔥 https://flutter-tutorial-b68fa.web.app/

⭐️ بنیاد دیسترو | حامی جهان اپن سورس دیسترو یک بنیاد برای حمایت از دنیای متن‌باز است که به تولید و نظارت بر پروژه‌های مفید بر
⭐️ بنیاد دیسترو | حامی جهان اپن سورس دیسترو یک بنیاد برای حمایت از دنیای متن‌باز است که به تولید و نظارت بر پروژه‌های مفید برای جوامع توسعه‌دهنده در سراسر جهان می‌پردازد. با ایجاد ایده‌های جدید، پیاده‌سازی ایده‌های مختلف، و انتشار رایگان آن‌ها در جهان، دیسترو گامی در جهت توسعه جوامع متن‌باز ایران برداشته است. بزودی دیسترو در کنار شما عزیزان فعالیت خود را گسترده‌تر خواهد کرد. جهت اطلاعات بیشتر به گیتهاب دیسترو مراجعه و اساسنامه بنیاد را مطالعه نمایید. @DistroFDN github.com/distrofdn/distrofdn #open_source @Syntax_fa

انتخاب شما کدومه ؟
Anonymous voting

فرانت اند (۲): توضیحات : Design size: 1440 x 1024 Desktop size : 1366 x 738 توی این دیزاین هم برخی آیتم هارو scale کردیم اما تفاوت قابل توجه در فونت ها و ویجت هایی که parent فونت ها هستن وجود داره . ما تو این دیزاین size فونت هارو برای تمام desktop size ها ثابت قرار دادیم و مقدار ویجت والد رو بر اساس padding فونت ها بدست آوریم که خروجی شده این ویدیو

فرانت اند (۲): توضیحات : Design size: 1440 x 1024 Desktop size : 1366 x 738 توی این دیزاین هم برخی آیتم هارو scale کردیم اما تفاوت قابل توجه در فونت ها و ویجت هایی که parent فونت ها هستن وجود داره ما تو این دیزاین size فونت هارو برای تمام desktop size ها ثابت قرار دادیم و مقدار ویجت والد رو بر اساس padding فونت ها بدست آوریم که خروجی شده این ویدیو

فرانت اند (۱) توضیحات : رفقا دیزاین سایز هر دو فرانت اند 1440 در 1024 هست ، اندازه desktop که فرانت اند نشون میده ۱۳۶۶ در ۷۳۸ هست . اینجا برای اینکه آیتم ها ظاهر خودشون رو در هر نوع desktop حفظ کنه از scale کردن استفاده کردیم (بعضی جاها کل آیتم scale شده ، بعضی جاها برخی قسمت ها) . طراحی فونت ها براساس متریال دیزاین هست و چون desktop ما از design size کوچیک تره ،برای اینکه ظاهر مینیمال و جذاب خودشو حفظ کنه از تمام فونت ها 2px کم کردیم و خروجی نهایی این شده

فرانت اند (۱) توضیحات : رفقا دیزاین سایز هر دو فرانت اند 1440 در 1024 هست ، اندازه desktop که فرانت اند نشون میده ۱۳۶۶ در ۷۳۸ هست . اینجا برای اینکه آیتم ها ظاهر خودشون رو در هر نوع desktop حفظ کنه از scale کردن استفاده کردیم (بعضی جاها کل آیتم scale شده ، بعضی جاها برخی قسمت ها) . طراحی فونت ها براساس متریال دیزاین هست و چون desktop ما از design size کوچیک تره ،برای اینکه ظاهر مینیمال و جذاب خودشو حفظ کنه از تمام فونت ها 2px کم کردیم و خروجی نهایی این شده