Syntax | سینتکس – Telegram
با توجه به سوالاتتون، یه سری نکات درباره payload بگم

Access token
تو قسمت payload اطلاعاتی که از کاربر تو قسمت پروفایلش نشون میدیم رو قرارش میدیم
رول های کاربر رو توی یک آرایه قرارش میدیم. برای مثال این کاربر فقط رول پیشفرض رو داره پس اگه اندپوینتی پرمیشن ادمین داشته باشه نمیتونه درسترسی داشته باشه.(چک کردن پرمیشن هارو از طریق middleware انجامش میدیم)

Refresh token
تو قسمت payload مقداری که بتونیم به کاربر دسترسی داشته باشیم رو ذخیره می کنیم. برای مثال UserId
بعد با استفاده از Userid سمت دیتابیس درخواست می زنیم و user رو میگیریم. بعدش یه access token جدید میسازیم.(با توجه به شرایط احراز هویت پروژمون ممکنه در کنار access token یه refresh token جدیدم بسازیم)

نکته مهم اینه access token رو مدت زمانشو کم بذارید.
داخل payload رفرش توکن آنچنان نیاز نیست چیزی جز userId و expireTime قرار بدید.
در نهایت اگه رمزنگاری کنید دیگه کسی جز خودتون نمیتونه اطلاعات توکن رو ببینه.

#JWT

@Syntax_fa
👍8
تو وب سایت Leetcode چجوری شروع به حل مسئله کنیم؟

این بخش leetcode یکی اومده ۷۵ تا مسئله رو معرفی کرده که بیسیک الگوریتم رو پوشش میده هدفش هم اینه توی مصاحبه شوکه نشی.
میتونی از این هفتادو پنج تا مسئله شروع کنی:
https://leetcode.com/discuss/general-discussion/460599/blind-75-leetcode-questions

[Amir]

#Leetcode #algorithms

@Syntax_fa
🔥11👍1
TERAPÎ-Pela Dûr(Gitar Cover)
👍2🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
میگن بالاترین سطح زبان، ادل لول هستش😁

#Fun

@Syntax_fa
🤣131
توضیح کوتاه درباره برخی از انواع تست نویسی

Unit testing
کلمه Unit به معنی واحد و تک و تنها هستش.
ما برای نوشتن تست برای یک بخش واحد از unit test استفاده میکنیم. برای مثال ما یک فانکشن داریم که کارش محاسبه مالیات بر اساس مقدار درآمد هستش. برای نوشتن تست برای این فانکشن واحد از unit test استفاده میکنیم.

Integration testing
بعضی وقتا خروجی مدنظر ما با کار کردن چند بخش واحد با هم دیگه بدست میاد.
برای مثال سبد خرید رو در نظر بگیرید. باید اول از همه چک کنیم ببینیم توی انبار موجود هستش یا نه بعدش موجودی حساب کاربر رو چک کنیم و خیلی کار های دیگه.
تو همچین شرایطی ما میایم از integration test استفاده میکنیم.

Load testing
برای اینکه مطمئن بشیم سیستم ما در حالت نرمال میتونه جوابگو ریکوئست ها باشه از load test استفاده میکنیم.

Stress testing
توی load testing سیستممون رو توی شرایط نرمال تست میکنیم. اما همیشه شرایط نرمال نیست و بعضی وقتا ممکنه سیستم ما زیر فشار بیشتری باشه.
برای تست کردن اینکه سیستم ما در شرایط سنگین و استرسی چجوری عمل میکنه از Stress test استفاده میکنیم.

مطلعه بیشتر تو این لینک

#Test

@Syntax_fa
👍8
سوال هایی که سطح دانش شما رو مشخص می کنه!

یکی از ساده ترین روش ها برای محک زدن دانشتون، سوال پیچ کردن خودتون هستش.
این کار در دراز مدت باعث میشه سطح دانش شما نسبت به قبل خیلی بیشتر بشه.
خب بیاید چند نوع از این سوالا رو بررسی کنیم.

چیه؟
سوال سطحی که از یک جونیور توقع میره باهاش زیاد سر و کله بزنه این نوع سوال ها هستش.
برای مثال:
فریم ورک چیه؟
داکر چیه؟
رشته چیه؟
فرق بین همروندی و موازی سازی چیه؟

این نوع سوالات شمارو با مفاهیم برنامه نویسی بصورت سطحی آشنا میکنه

اما یه سطح بالاتر سوال هایی هست که درباره چیستی اون ابزار و مفهومه
برای مثال:
چرا از داکر استفاده میکنیم؟
چرا از لاگر ها استفاده میکنیم؟
چرا از میدلور استفاده میکنیم؟
چرا همروندی نیازه؟

در نهایت سوال هایی که پاسخ دادن بهشون، به شما درک عمیقی میدن، سوال هایی هستش که درباره چگونگی کار کردن اون ابزار پرسیده میشه.
برای مثال:
کانتینر چجوری کار میکنه؟
چجوری یک تایپ دیتا از نوع رشته توی حافظه ذخیره میشه؟
فرق بین hypervisor و روش container چی هستش؟
همروندی چجوری باعث پرفورمنس بهتر تو شرایطی که IO داریم میشه؟

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

#Note

@Syntax_fa
👍234🔥1
ساختار پیشنهادی کامیونیتی گولنگ برای پروژه ها

https://github.com/golang-standards/project-layout

یکی از اشتباهات خیلیا اینه طبق تجربیات قبلیشون با فلان زبان و ابزار، میان تو یه زبان دیگه به همون روش قبل پیادش می کنن. تو golang standard project layout به همین اشاره کرده که بعضیا از دنیا جاوا میان و طبق یکی از پترن های پر استفادشون تو گولنگم میخوان به همون شکل ساختار پروژشون رو بسازن، ولی خب این تو جامعه گولنگ پیشنهاد نمیشه.

#Project_layout

@Syntax_fa
👍71
اگر این روزها PDF مقاله(انگلیسی) میخونید، از مرورگر Microsoft Edge استفاده کنید، چرا؟ در ادامه به ۴ مورد اشاره می‌کنم:

۱- میتونید قسمت‌های مختلف متن رو با چندین رنگ ‌های‌لایت کنید ولی حتما بعدش Ctrl+S رو بزنید که ذخیره بشه.

۲- برای متن‌ها میتونید کامنت بزارید.

۳- مترجم هم داره، هرقسمت از متن رو انتخاب کنید،‌ براتون به هر زبانی ترجمه میکنه.

۴- و درنهایت یک فیچر جذاب، امکان استفاده از هوش‌مصنوعی Copilot در کنار مقاله. به این صورت که به مقاله دسترسی داره، میتونید هر قسمتی که متوجه نشدید رو ازش بپرسید و بگید براتون بیشتر توضیح بده یا....

امیدوارم براتون مفید باشه.

[amir motaheri]

#Note

@Syntax_fa
👍15
سیزده وب سایت پر بازدید دنیا
سرچ انجین duckduckgo رشد خوبی رو داشته
یچیز باحال تر اینکه از بین این 13 تا 8 تاش فیلتره یا اینکه هم فیلتره و هم تحریمیم از اونطرف

#Fun

@Syntax_fa
👍10
#نکات_قرارداد

۱) قرارداد حتماً باید نوشته بشه، اصلا روی حرف و ... هیچ چیزی قبول نکنید

۲) متن قرارداد رو حتماً بطور کامل بخونید، شما موظف نیستید همون لحظه که قرار داد بهتون داده میشه تا ۵ دقیقه بعد امضا بزنید.
(شخصاً یک نسخه از قرارداد و ضمیمه‌هاش رو می‌‌خوام که زودتر برام ارسال بشه و ۱-۲ روز مهلت خوندن به خودم میدم)

۳) بدون قرارداد کتبی هیچ کجا کار نکنید، مگر اینکه مبلغ رو قبل از شروع کار براتون واریز کنند
همه دوستان می‌دونند، شخصاً ممکنه با یک جا هم به توافق برسم.
اما اگر طرف قبل از قرارداد تسک بفرسته، دیگه باهاش همکاری نمی‌کنم، چون ۲ حالت بیشتر نداره
۳-۱ ) یا با هدف کلاهبرداری و از زیر موارد توافق شده فرار کردن قرارداد کتبی به شما تحویل نمی‌ده
۳-۲ ) یا اینکه یک پروژه ۱ ساله گرفته، خواسته با نیروی ۵ میلیونی کار رو در بیاره و حالا توی ماه‌های آخر هست و شدیداً نیاز به خروجی داره پس از ۱ روز هم نمی‌گذره که خب اینجا هم باید فرار کنید.

۴- یک نسخه از قرارداد رو همیشه تحویل بگیرید و پیش خودتون نگهدارید

۵- به تاریخ‌هایی که بیش از مدت قرارداد هست توجه کنید؛ توی ایران متن قرارداد هارو خیلی از شرکت‌ها به وکیل‌ها می‌سپارند و ازونجایی که ۹۹٪ وکیل‌ها برای قراردادهای کامیپوتری و فنی آماده نیستن متون مزخرف زیاد دیده میشه

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

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

اما مسئله این هست، هیچ شرکتی حق نوشتن این موضوع رو نداره.
شما حق استفاده از تجربیاتت رو داری و این یعنی بعد از کار توی هر شرکتی می‌تونی به یک شرکت با بیزینس مشابه بری و اونجا شروع به فعالیت کنی (دستمزد، برخورد یا هرچیزی)
اما طبق NDA شما حق انتقال دانش در مورد فیچرها، جزئیات عملکرد داخلی و ... که بعد از تحقیقات فراوان شرکت قبلی بهش رسیده و تجربه شخصی شما نیست رو به شرکت جدید ندارید.
حتی اگر این موضوع توی متن قرارداد شما نباشه، و اینکار‌ رو بکنید شرکت می‌تونه از شما شکایت کنه و ۹۹.۹٪ موارد هم رأی دادگاه برای شرکت هست.

۶- هر چیزی که از شرکت تحویل می‌گیرید و یا به شرکت تحویل می‌دید
بخصوص تحت عنوان ضمانت نامه، باید حتماً توی ضمیمه‌ای از قرارداد باشه و حتماً مهر و امضا مسئول شرکت رو هم داشته باشه.
مهمتر از اون باید اعلام بشه چه زمان و تحت چه شرایطی این ضمانت می‌تونه به اجرا گذاشته بشه و چه زمان و تحت چه شرایطی این ضمانت باید پس داده بشه.


در نهایت حتماً، حتماً، حتماً از قرارداد و ضمیمه‌های اون باید همیشه ۲ نسخه کاملاً رسمی (مهر، سربرگ، امضا، و ....) وجود داشته باشه
نسخه‌ای دست شما و نسخه‌ی دیگری برای شرکت.

اگر مورد دیگری در آینده یادم افتاد، حتماً به این پیام اضافه می‌کنم.

پای هینت
https://news.1rj.ru/str/pyHints
15👍5🔥2
چه تفاوتی بین mutable datatype با immutable datatype هست؟

دیتاتایپ های mutable میتونن ادیت بشن و در زمان ران تایم تغییر کنن مثل لیست و دیکشنری.

ولی دیتاتایپ های Immutable نمیتونن ادیت بشن و موقع ران تایم برنامه نمیتونن تغییر کنن. مثل String و تاپل

#python_interview

@Syntax_fa
👍6
Forwarded from Syntax | سینتکس (Alireza-fa)
bytes buffer and string builder

یکی از انواع داده ای که در اکثر زبان‌های برنامه نویسی وجود دارد و در استفاده از آن باید دقت داشته باشیم نوع string است.

قطعه کد زیر را در نظر بگیرید:
    var query string = "select "
query += "name, family "
query += "from "
query += "users "
query += "where 1 = 1 "
query += "and name = `ali` "
db.Execute(query)


زمانی که نیاز داریم تا مقدار یک رشته را تغییر دهیم نوشتن به این روش اشتباه می‌باشد. دلیل آن در این نهفته است که هر دفعه که شما این رشته را تغییر می‌دهید فارغ از متغیر پیشین یک فضای جدید در حافظه برای آن رزرو می‌شود. بنابراین این قطعه کد memory efficient نیست.

در بسیاری از زبان‌ها برای چنین مسایلی از string builder استفاده می‌شود. در گو هم string builder را داریم و هم bytes.Buffer.

این ساختارها از byte slice در پشت صحنه استفاده می‌کنند و تغییرات را روی آرایه داخلی اعمال میکنند. در نتیجه نیاز به رزرو فضاهای زیاد ندارند و memory efficient‌تر خواهند بود.

strings.Builder :
    var sbQuery strings.Builder
sbQuery.WriteString("select ")
sbQuery.WriteString("name, family ")
sbQuery.WriteString("from ")
sbQuery.WriteString("users ")
sbQuery.WriteString("where 1 = 1 ")
sbQuery.WriteString("and name = `ali` ")
db.Execute(query)

bytes.Buffer :
    var btQuery bytes.Buffer = bytes.Buffer{}
btQuery.WriteString("select ")
btQuery.WriteString("name, family ")
btQuery.WriteString("from ")
btQuery.WriteString("users ")
btQuery.WriteString("where 1 = 1 ")
btQuery.WriteString("and name = `ali` ")
db.Execute(query)

حالا تابع indent را در نظر بگیرید این تابع قرار است تغییرات زیادی را در خطوط مختلف یک رشته (byte array json) اعمال نماید. پس مناسب است از بافر استفاده شود و به همین خاطر تابع مورد نظر یک bytes.Buffer دریافت می‌کند و خروجی را در آن قرار می‌دهد.

تفاوت bytes.Buffer و strings.Builder در این است که bytes.Buffer عمومی‌تر می‌باشد ولی strings.Builder برای رشته استفاده می‌شود.



برای تمرین هر کدوم از بچه‌ها که میتونه یک بنچمارک بنویسه و در یک حلقه بزرگ مقدار موجود در یک رشته رو تغییر بده و همین کار رو یکبار با استفاده از bytes Buffer و strings Builder هم انجام بده و نتیجه مصرف memory رو با ما به اشتراک بذاره

#string

@Syntax_fa
👍5
آرگومان های یک فانکشن توی پایتون بصورت ولیو پاس داده میشه یا بصورت رفرنس؟

همه چی توی پایتون آبجکت هستش و همه ی value ها بصورت رفرنس توی آبجکت نگه داشته میشن.
پس آرگومان ها بصورت رفرنس پاس داده میشن و اگه mutable datatype باشه میشه تغییری در مقدار پاس داده شده بوجود آورد و اما اگه immutable datatype باشه نمیشه.


#Python_interview

@Syntax_fa
👍7
This media is not supported in your browser
VIEW IN TELEGRAM
چارلی چاپلین در پایان فیلم "دیکتاتور بزرگ"

🔘صحنه‌ای که او از نقش کمدی خودش بیرون می‌آید و بدون واسطه و خارج از نقش با تماشاگر صحبت می‌کند

بیش از ابزار، به انسانیت نیاز داریم

@Syntax_fa
10❤‍🔥1👍1
من تو خواب هامم فقیرم
دیشب خواب دیدم رفتیم روی دامین localhost.com دارم NGINX کانفیگ میکنم😂😂😂😂

لینوکسی

#Fun

@Syntax_fa
🤣22👍1
برای apis documentation کدومو انتخاب می کنید؟
Anonymous Poll
48%
Postman
7%
Dapperdox
45%
Swagger
چگونه در لینکدین دیده شوید

آپ رو بزن #up

#Fun

@Syntax_fa
🤣26👍6👎1