Syntax | سینتکس – Telegram
چرا CQRC

توضیح پست بعدی

#CQRC

@Syntax_fa
7
Syntax | سینتکس
چرا CQRC توضیح پست بعدی #CQRC @Syntax_fa
مقداری باید تاریخ کاری رو ورق بزنیم و برگردیم به عقب به اون روزهایی که یک نرم افزار بود و یک دیتابیس یک دیتابیس بود و کلی عملیات از یک طرف داده ها روی دیتابیس نوشته میشد و از یک طرف داده ها خونده میشد فکر کنید یک نرم افزار انبار در گذشته مینوشتیم یک برنامه با یک دیتابیس اسم دیتابیس هم مهم نیست #sqlserver یا #postgersql یا #oracle یا #nosql فرقی نمیکنه حالا در نظر بگیرید این انبار کالاهای ورودی رو داره با هندهلد و بارکد ثبت میکنه و یک محموله بزرگ داریم مثلا انبار دارو چندین نفر در حال ثبت داده هستند از طرف دیگر داروخانه درخواست تحویل کالا رو به انبار میفرسته و از طرف دیگه چندین مدیر داریم که گزارش میگیرن فکر کنید گزارشهای سنگین پی در پی میاد سمت دیتابیس دوستان این مثالها در مقیاس بسیار کوچیکه و فقط برای درک موضوع طرح میشن در ابعاد واقعی داستان متفاوته تو همین شرایط فکر کنید یک گزارش سنگین در حال انجامه روی یک تیبل و همون لحظه یک درخواست ثبت رکورد میاد و همون لحظه در خواست ویرایش چند رکورد میاد و گزارش همچنان فعاله در این صورت در سطح دیتابیس همزمانی پیش میاد که در مباحث دیتابیس کاملا توضیح دادم خوب چه کنیم ؟ چطور به داد کاربران و دیتابیس برسیم یک دیزاین پترن یا الگو چاره کار بود اسمش رو گذاشتن #cqrs جدا کردن کوئری و کامند یعنی دستورات برنامه رو به دو قسمت به شرح زیر تقسیم کنیم: #کامند: دستوراتی که وضعیت دیتابیس رو تغییر میده که شامل افزودن حذف و ابدیت میباشد #کوئری: دستوراتی که وضعیت رو تغییر نمیده و فقط خواندن اطلاعات میباشد برای این الگو راه کارهای زیادی وجود داره که یک راه کار استفاده از دو دیتابیس یکی برای نوشتن و دیگری برای خوندنه مثلا اگر فقط میخواید از #sqlserver استفاده کنید میتونید با استراتژی (Always On availability group)AG دو دیتابیس داشته باشید یکی برای نوشتن و دیگری برای خوندن یا اینکه از دیتا بیسهای متفاوت استفاده کنید سینک کردن دیتا بین دو دیتابیس خواندنی و نوشتنی باید به دقت حل شود برای نمونه در #netcore میتونیم از دیزاین #IMediatR بهره ببریم و در #springboot هم میتونیم خودمون پیاده سازی کنیم یا از #axonframework استفاده کنیم این الگو برای سیستمهایی خوبه که درخواستهای زیادی دارن این فقط یک الگو و الگوهای دیگری هم هست ولی جوابش رو پس داده

لینک:
https://www.linkedin.com/posts/activity-7158741967705632768-IGhG?utm_source=share&utm_medium=member_android

#CQRC

@Syntax_fa
😍6👍32
پایتون یاد بگیرم یا نه؟

خیلی از دوستان پیوی از من همچین سوالاتی می کنن:
۱. میخوام برنامه نویسی رو شروع کنم. با چه زبانی شروع کنم بهتره؟
۲. پایتون بازار کارش خوبه؟
۳. جنگو بازار کارش خوبه؟
۴. پایتون سمت وب خوبه یاد بگیرم یا برم سمت یک زبان دیگه؟
۵. چی یاد بگیرم سریع تر میتونم استخدام بشم؟
...

ممنون میشم توی کامنت نظراتتون رو نسبت به سوالات این شکلی بگن تا افراد تازه کار بتونن استفاده کنن

نظرات خوبو در ادامه پست می کنم


#Question

@Syntax_fa
👍9🔥1
Forwarded from </AminAli>
7👍1🤨1
گفتگو خیلی خوبیه بنظرم حتما گوش بدید
کتاب آزاد زبان برنامه نویسی گو (فارسی)

اگه به زبان برنامه نویسی گولنگ علاقه دارید، یکی از بهترین منابع فارسی این کتاب هستش.
تو فصل های مختلف از مباحث مقدماتی تا پیشرفته گفته شده.
همچنین تو فصل جدید «شبکه بلاکچین» قراره آموزش داده بشه

لینک وب سایت:
https://book.gofarsi.ir/

همچنین گیت هاب حتما ستاره بدید تا حمایت شه:
https://github.com/GoFarsi/book

#Book #Golang

@Syntax_fa
🔥7
اگه قرار باشه زبان برنامه نویسیه جدید یاد بگیری، کدوم یک از موارد زیر رو انتخاب می کنی؟
Anonymous Poll
25%
Python
13%
Rust
9%
C#
20%
Golang
10%
Js
6%
Java
9%
C / C++
1%
Swift
7%
Kotlin
👍8
الگو Monitor در Synchronization

توضیح مانیتور در ویکی‌پدیا:
https://en.wikipedia.org/wiki/Monitor_(synchronization)

خب اگه به لینک بالا سر زده باشید احتمالا هیچی نفهمیدید از بس که میپیچونه. پس به توضیح ساده ای که میدم دقت کنید.

این الگو زمانی استفاده میشه که ما بخوایم ترد ها بدون درگیر کردن و یا مصرف منابع در حالت خواب بروند تا زمانی که ما آنها را بیدار کنیم و به ادامه کارشان بپردازند.

یک مانتیور در حالت ساده یک قفل mutex دارد و یک شرط

زمانی که شرط برقرار نباشد ترد ها به حالت خواب می روند تا زمانی که شرط برقرار شود و ما از طریقی سیگنال بفرستیم تا دوباره شرط را چک کنند.

چالش:
در هر زبانی که کار میکنید. سعی کنید الگو Monitor را با حل یک مسئله ساده پیاده سازی کنید

مسئله پیشنهادی:
قرار است یک کاری را زمانی که تعداد یوزر ها به 100 نفر رسید انجام دهید و قبل از آن هر کسی که جوین می شود در حالت انتظار باقی می ماند تا تعداد به صد نفر برسد.
(هر یوزر مساوی با یک ترد هستش)

#Monitor_concurrency

@Syntax_fa
👍7
برای ریسیت کردن free trial برنامه های Jetbrains توی لینوکس از روش زیر می تونید استفاده کنید:

echo "Resetting trial period for $product"
echo "removing evaluation key..."

rm -rf ~/.config/$product*/eval

# Above path not working on latest version. Fixed below

rm -rf ~/.config/JetBrains/$product*/eval

echo "removing all evlsprt properties in options.xml..."

sed -i 's/evlsprt//' ~/.config/$product*/options/other.xml

# Above path not working on latest version. Fixed below

sed -i 's/evlsprt//' ~/.config/JetBrains/$product*/options/other.xml

echo

done

echo "removing userPrefs files..."

rm -rf ~/.java/.userPrefs


#Jetbrains

@Syntax_fa
🔥7
Syntax | سینتکس
پایتون یاد بگیرم یا نه؟ خیلی از دوستان پیوی از من همچین سوالاتی می کنن: ۱. میخوام برنامه نویسی رو شروع کنم. با چه زبانی شروع کنم بهتره؟ ۲. پایتون بازار کارش خوبه؟ ۳. جنگو بازار کارش خوبه؟ ۴. پایتون سمت وب خوبه یاد بگیرم یا برم سمت یک زبان دیگه؟ ۵. چی یاد…
یکی از نظرات خوب دوستان:

این سوالات رو افراد ب شدت مبتدی یا افرادی ک تازه میخان شروع کنن میپرسن ک طبیعیه. این صنعت از بیرون مثل ی اقیانوس عمیق و ناشناخته میمونه و خیلیی می بینم ک هنر جو ها ب جای دل رو ب دریا زدن و پا تو آب گذاشتن بیرون وایمیسن و وقت گرانبهاشون رو ب این فکرها و پرسشها میگذرونن!

جواب اینه که برنامه نویسی قبل از اینکه ب زبان و فریمورک برسه شامل مهارتهای دیگه ای میشه ک خیلی مهم نیس تو چ زبانی هستی . ک مهمترین این مهارت ها حل مساله و طراحی الگوریتم ه. تربیت یک ذهن فنی مهندسی و بدست آوردن دید و منطق برنامه نویسی.

پیشنهادم ب هنر جوهای تازه کار اینه که اصلن ب ادامه ی مسیر فکر نکنن و فقط بپرن تو آب - با پایتون ک یکی از ساده ترین و در عین حال قدرمتند ترین زبانهای امروزه شروع کنن و مساله حل کنن - توی اینترنت و کتابهایی مثل الگوریتم و فلوچارت کلی مساله ی خوب پیدا میکنن ک میتونن تو زبان پایتون حل کنن و ی تیر و دو نشون بزنن.

هم پایتون یاد بگیرن و هم ذهنشون رو مثل ی برنامه نویس حرفه ای پرورش بدن و با الگوریتمهای پایه و نحوه ی تفکر مثل کامپیوتر و حرف زدن با ماشین آشنا بشن

و چون پایتون رو انتخاب کردن برای شروع در ادامه آپشنهای زیادی دارن. از بکند وب تا هوش مصنوعی و ...

و وقتی این مرحله رو رد کنین دیگه یاد گرفتن ی فریم ورک جدید یا ی زبان جدید براتون خیلی ساده میشه و میتونین توی زمینه های مختلف بسته ب علاقتون فعالیت کنین.

پس وسواس و مته ب خشخاش گذاشتن رو بیخیال شین و بپرین تو آب!!

#Question

@Syntax_fa
9👍6
This media is not supported in your browser
VIEW IN TELEGRAM
اچ تی ام اکس چیست؟

اچ تی ام اکس به شما امکان دسترسی مستقیم به AJAX، CSS Transitions، WebSockets و رویدادهای ارسال شده از سرور را در HTML با استفاده از ویژگی ها می دهد، بنابراین می توانید رابط های کاربری مدرن را با سادگی و قدرت فرامتن بسازید.

https://htmx.org/docs

#HTMX

@Syntax_fa
👍61
Canary

کانری دیپلویمنت روشی برای انتشار نرم‌افزار است که در آن یک بخش کوچک از کاربران به نسخه جدید یک سرویس یا نرم‌افزار منتقل می‌شوند تا اشکالات احتمالی در نسخه جدید شناسایی شود

در این روش یک درصد کوچکی از کاربران به عنوان "کانری" انتخاب می‌شوند تا نسخه جدید نرم‌افزار یا سرویس را تجربه کنند. اگر هیچ مشکلی پیدا نشود، بقیه کاربران هم به تدریج به نسخه جدید منتقل می‌شوند

اما اگر مشکلاتی در نسخه جدید پیدا شود، تنها کانری‌ها تحت تاثیر قرار می‌گیرند و بقیه کاربران همچنان از نسخه قبلی استفاده می‌کنند. بنابراین احتمال خسارت وارده به تمام کاربران کاهش می‌یابد

برای مثال فرض کنید یک وب‌سایت خبری می‌خواهد نسخه جدید سیستم مدیریت محتوای آن را پیاده و راه‌اندازی کند. با استفاده از روش کانری دیپلویمنت، ابتدا تنها 1 درصد از کاربران به صورت تصادفی به نسخه جدید منتقل می‌شوند

اگر مشکلی پیش نیاید، مقدار بیشتری از کاربران هم به تدریج به نسخه جدید انتقال پیدا می‌کنند. اما اگر مشکلی مانند خرابی سایت یا عدم دسترسی به محتوا پیش بیاید، تنها همان درصدی که به عنوان کانری منتقل شدند تحت تاثیر قرار می‌گیرند

#Canary

@Syntax_fa
🔥4👌3👍2
با چند تا مثال regex رو یاد بگیر‌(قسمت اول)

1. پترن ما این هستش که توی متن hello داشته باشه:
Pattern := "hello"


2. به بزرگ و کوچیک بودن حروف حساس نباشه:
برای این موارد یه سری flag هایی رو regex در اختیار ما قرار داده. برای اینکه به بزرگ و کوچک بودن حروف حساس نباشه از فلگ i استفاده می کنیم:
Pattern := "(?i)Hello"


3. اول متن با hello شروع بشه و به بزرگ و کوچیک بودن حروف حساس نباشه:
Pattern := "(?i)^hello"

برای اینکار اول الگو از ^ استفاده میکنیم.

4. اول هر خط با hello شروع بشه:
تو مثال قبلی گفتیم اول متن hello باشه اما اینبار اول هر خط رو میخوایم حساب کنیم. برای اینکار از فلگ m استفاده می کنیم که به معنی این است روی چند تا خط ^ و $ رو اعمال کن. همچنین از فلگ g که مخفف global هست، استفاده میکنیم‌ که بعد از پیدا کردن اولین نتیجه return نکنه و بره بقیه متن رو هم بگرده(توی هر زبان به یه شکلی فلگ هارو میدیم)

نکته:
اگه بخوایم بجای اینکه اول رشته با الگو ما تطابق داشته باشه، آخر خط و یا رشته رو چک کنیم، بجای ^ آخر الگو میایم $ قرار میدیم:
pattern := "hello$"


5. کاراکتر اول h باشد، کاراکتر دوم هرچیزی باشه فرقی نمیکنه و کاراکتر های بعدی llo باشد:
Pattern := "h.llo"

با استفاده نقطه مشخص میکنیم هر کاراکتری باشه فرقی نمیکنه.

6. فقط حروف کوچک انگلیسی:
Pattern:= [a-z]

داخل براکت میتونیم مشخص کنیم که چه کاراکتر هایی توی الگو ما هستش. ما اینجا میتونستیم تمامی حروف کوچک انگلیسی را بنویسیم(abcdefghi...) اما بجایش به این صورت نوشتیم که از a تا z باشد.

7. حروف انگیسی باشد و به بزرگ و کوچک بودن حساس نباشد. همچنین اعداد 0 تا 9 را هم داشته باشد:
Pattern := "(?i)[a-z0-9]"

همچنین میتوانیم از فلگ استفاده نکنیم و داخل براکت مشخص کنیم حروف بزرگ هم هستش:
Pattern := [a-zA-Z0-9]


#Regex

@Syntax_fa
🔥102👍2👎1
سمبل های پر استفاده در برنامه نویسی

#Symbol

@Syntax_fa
👍10👎1
Syntax | سینتکس
اگه قرار باشه زبان برنامه نویسیه جدید یاد بگیری، کدوم یک از موارد زیر رو انتخاب می کنی؟
طبق نظر دوستان و همونطور که میشد حدس زد این روزا زبان golang و rust خیلی محبوب هستند و اکثرا وقتی ازشون بپرسی دوست داری کدوم زبانو یاد بگیری یکی از این دوتارو بر اساس فیلد کاریشون انتخاب می کنن

همچنین زبان JS و C sharp بعد از Go و Rust انتخاب ملت بود

نسبت به یادگیری Java کسی آنچنان شوقی نشون نداده

یه نکته رو بگم:
خیلیا میگن دوست دارم فلان کارو بکنم ولی اینکه واقعا انجامش بدن بستگی به این داره چقدر اون چیز حیاتی بشه. پس خیلی وقتا میخوام گفتنا هیچوقت عملی نمیشن.

نکته بعدی درباره پایتون هستش:
تا اونجا میدونم هشتاد درصد ممبرا پایتون کارن
نظرسنجی این بود زبان دومی که انتخاب میکنید چیه
اما خیلیا حتی زبان دومم زدن پایتون و میخوان دوبار پایتونو یاد بگیرن (تعصبشو میکشن😁)

#pool #Fun

@Syntax_fa
😁11
ساختار یک HTTP Request

#Note #HTTP

@Syntax_fa
👍61
This media is not supported in your browser
VIEW IN TELEGRAM
ویژن پرو چقدر خوبه

#Fun

@Syntax_fa
👌12😍1
Forwarded from CodeCrafters (Behzad Azadi)
چرا conda استفاده کنیم؟؟؟


اول اینکه نوع پایتون رو هم خودش براتون بالا میاره حین ساخت محیط و شما دیگه درگیر پیچیدگی و هندل کردن نصب و مدیریت چند نسخه مختلف پایتون نمیشید و حتی کار کردنش باهاش از pyenv راحت تره و عوض کردن نسخه پایتونش هم راحت تره

conda create -n MyENV python=3.8
دوم اینکه محیطی که براتون میسازه رو داخل home شما و در دایرکتوری مخصوص خودش میسازه و نه در مسیر جاری شما خب این مزیتش این هست که شما راحت هرجا باشید میتونید ۱-سریع فعال و ۲-غیرفعال و یا محیط خودتون رو تغییر بدید و یا بدون دغدغه نسبت به محل قرارگیریش محیط جدید بسازید و ۳-حذف هم کنید و بین محیط‌های مختلف راحت سویچ کنید

1- conda activate my_env

2- conda deactivate

3- conda env remove -n MyENV
مورد بعدی هم اینکه:
۱-نصب پکیج هم داخلش راحته
۲-و علاوه بر خودش میتونید از pip هم استفاده کنید
۳- همچنین بروز رسانی پکیج
1- conda install PackName

2- pip install PackName

3- conda update PackName
۱-لیست پکیج‌های نصب شده رو هم میتونید ببینید
۲-و یا یک فایل حاوی ادرس‌های آن جهت نصب بسازید
۳-و یا بصورت yaml براتون قرار میده که از دو بخش تشکیل شده پکیج‌هایی که خودش نصب کرده و پکیج‌هایی که با pip نصب شده

1- conda list

2- conda list --explicit

3- conda env --export > requirements.yml
که بالطبع میتونید اون رو هم در یک محیط دیگه نصب کنید
conda create -f requirements.yml

conda create -n MyENV -f requirements.yml
گفتیم همه محیط‌ها رو در یک مسیر قرار میده که با دستور زیر هم میتونید لیست همه محیط هاتون رو ببینید

conda env list
۱- اگه بخواید یک‌محیط رو‌حذف کنید ۲-یا یک پکیج رو حذف کنید
1- conda env remove -n MyENV --all

2- conda remove PackName
برای دیدن اطلاعات مربوط به محیط تون
conda info
جهت تست و بررسی سلامت محیط
conda doctor
جهت تغییر نام محیط با شرط فعال نبودن محیط تون
conda rename 
۱-جستجوی پکیج با نمایش تاریخچه تگ آن
۲-مشاهده وابستگی های آن
۳-مشاهده پکیج‌ها استفاده کننده آن
1- conda search PackName

2- conda repoquery depends PackName

3- conda repoquery whoneeds PackName
ادغام محیط شل با conda
conda init bash
پاک کردن پکیج‌های نا استفاده
conda clean
برای کانفیگ از قبیل محیط نصب، پکیج‌ها محدودیت دانلود و ...
conda config

conda config --help

موضوع جالب اینکه هنگام نصب پکیج تمام وابستگی‌ها رو اجرایی میکنه و نصب و حتی اگه نیاز به نسخه دیگری از پایتون باشه اون رو downgraid میکنه که منجر میشه تا حد ممکن براتون خطایی رخ نده و دردسر نکشید


داخل کامنت ها هم نحوه نصبش رو در اوبونتو میزارم


@code_crafters
👍10👎1
دوست داشتم اولین پستم توی کانال رو به معرفی Larry Tesler اختصاص بدم؛ که اتفاقا کمتر کسی هم این مرد بزرگ رو می‌شناسه. ایشون آقای لارنس تسلر هستند، برنامه نویس کامپیوتر که «copy and paste» رو ابداع کردن و اگر بگیم در ذخیره‌ی عُمر جامعه برنامه‌نویسان موثر بودن اغراق نکردیم. در واقع اگر این آقا نبودن، هنوز باید باید کل پایانامه، تحقیقات و کدهامون رو خط به خط تایپ می‌کردیم! :))))

Syntax
16🏆3😁2👍1👏1