یادداشت های یه برنامه نویس
280 subscribers
39 photos
3 videos
3 files
80 links
این کانال برای در میان گذاشتن یادداشت ها و تجربیات جالب در مورد برنامه نویسی هست امیدوارم دوست داشته باشین.

@one_programmer

https://t.me/one_programmer

ادمین @EngMohsen

Linkedin:https://www.linkedin.com/in/mohsen-rajabi72
Download Telegram
این کانال برای تبادل تجروبیات و کارهایی هست که تو مدت زمانی که کار میکردم بهش رسیدم امیدوارم ازش استفاده کنید 😉
@one_programmer
چند روزی بود در مورد JWT داشتم تحقیق میکردم. تو پروژه ایی که تو یه شرکت انجام میدادم باید از این روش استفاده میکردم. کمی در مورد تحقیق کردم به نظرم جالب اومد تجربه خودمو براتون میزارم. JWT یه استاندارد وب هست برای انتقال امن اطلاعات بین مقاصد مختلف توسط یک شئ
@one_programmer
https://telegram.me/one_programmer
یادداشت های یه برنامه نویس
چند روزی بود در مورد JWT داشتم تحقیق میکردم. تو پروژه ایی که تو یه شرکت انجام میدادم باید از این روش استفاده میکردم. کمی در مورد تحقیق کردم به نظرم جالب اومد تجربه خودمو براتون میزارم. JWT یه استاندارد وب هست برای انتقال امن اطلاعات بین مقاصد مختلف توسط یک…
دنیا وب داره به این سمت میره که با توکن کار کنه و کم کم سرویس ها به شکلی میشن که مفهوم کوکی و سشن برای چک کردن دسترسی کاربر بی معنی میشن. روش کلی توکن به این شکله که کاربر وقتی میخاد لاگین کنه اگه رمز عبور و نام کاربریش رو درست بزنه یه توکن براش ایجاد میشه که 3 قسمت میتونه داشته باشه قسمت اول میشه اطلاعات کاربر که لازم داریم مثل آیدی و نام به صورت رمز شده و قسمت دوم میشه تمام دامین هایی که کاربر دسترسی داره و یه قسمت سوم هم داره که نوع توکن و اسم الگوریتم رمز نگداری داخلش هست. وقتی این توکن تولید بشه به کاربر داده میشه اگه مرورگر باشه میتونیم داخل کوکی ذخیره کنیم اگه دستگاه اندروید باشه توکن به اندروید داده میشه در کنارش میتونیم کنار توکن Refresh Token هم داشته باشیم که بحثش طولانیه فقط در حد نام بردن گفتم . استفاده از روش توکن مزایا خیلی زیادی داره
1 - میتونیم یه قسمت اعتبار سنجی جدا داشته باشیم که رو دامین های مختلف و دستگاه های مختلف جواب بده بدون محدودیت
2 - دیگه نگران حملات csrf نیستیم
3 - سادگی کار میتونیم قسمت اعتبار سنجی رو جدا توسعه داده و رو یه سرور دیگه و دامین دیگه بزاریم
4 - استاندارد بودن
5 - سازگاری بهتر با موبایل
اگه براتون جالب بود میتونید در مورد JWT سرچ کنید
@one_programmer
https://telegram.me/one_programmer
با اینکه خیلی وقته به طور جددی PHP کار نکردم ولی اخبارش رو دنبال میکنم. در مورد PHP ورژن 7.1.0 که تازه ورژن آلفا هست مطالعه میکردم جالب بود دیدم PHP کم کم داره نوع های داده ایی رو میاره داخل خودش برای مثال برای تابع میشد خروجی void گذاشت. اتفاق جالب دیگه این بود که اگه میخواستید یه نوع متغییر تعریف کنید که بتونه null هم باشه باید اول علامت سوال بزارید به این شکل خروجی تابع یه عدد از یا null میتونه باشه
function add() :?int {

}
این حرکت میشه گفت تو سی شارپ برعکس هست یعنی علامت سوال بعد نوع متغییر میاد.
در کل بهبود های دیگه ایی هم داشته مثل اینکه تو catch میشه چند نوع استثنا رو گرفت و موارد دیگه. برای مطالعه میتونید در مورد PHP 7.1.0 تحقیق کنید.
@one_programmer
https://telegram.me/one_programmer
امروز میخام زمانبندی انجام کار با تکنیک پومودورو را معرفی کنم. این فن را در اواخر دههٔ ۱۹۸۰ میلادی به دنبال تحقیقات در زمینهٔ بهبود عادت‌های مطالعهٔ به وجود آمده است. استفاده از این روش باعث میشه که یه زمانبدی مناسب برای کار مورد نظر داشته باشید و ذهنتان متمرکز باشه و نتیجه بهتری از وقتتون داشته باشید. در این روش بهترین تیکه زمانی مفید برای انجام کار 25 ذقیقه است که برابر با مدت زمان لازم برای درست کردن سس پومودورو که یک سس ایتالیایی است.
برای استفاده از این روش در روز ابتدا کار های خود را تقسیم بندی که در همون حد 25 دقیقه بتوان انجام داد.
برای انجام کار ابتدا تایمر خود را روی 25 دقیقه در نظر بگیرید و کار را استارت بزنید و بعد اتمام 25 دقیقه باید یک استراحت 5 تا 10 دقیقه ایی بکنید بعد دوباره دور بعدی شروع میشه. بعد 4 پومودورو یک زنگ تفریح 15 تا 30 دقیقه ایی بکنید. سعی کنید در زمان تفریح چشمان خود را ببندید و سعی کنید حرکات کشی انجام بدید.
یکسری قوانین داره اینکه اگه وسط یک پومودورو همکارتون باهاتون کار داشت یک وقفه رخ میده و اون پومودور دیگه حساب نمیشه و باید از اول شروع کنید اون پومودورو.
اگر وقت پومودور یک کاری یادتون افتاد که باید انجام بدید روی کاغذی یادداشت کنید بعد پومودورو میتونید انجام بدید.
برای استفاده از این روش هم خودتون میتونید اینکار رو انجام بدید هم برنامه تحت ویندوز و مک داره میتونید دانلود کنید استفاده کنید. معمولا کنار صفحه فیکس میشه که اگه هم کسی باهاتون کار داشت میبینه که وسط یک پومودورو هستید پس میره بعدا میاد !
@one_programmer
https://telegram.me/one_programmer
مدت ها بود تو پروژه ها کوچیک وقتی حرف از سرچ میشد خب معمولا با یه Like سرو ته کار رو میاوردن ولی وقتی حرف از سایت بزرگ و دیتا بیشتر میشه دیگه نمیش از اون روش استفاده کرد.
چالشی که من باهاش درگیر بود که باعث شد یه تجربه خوب داشته باشم این بود که سایتی که داشتیم باهاش کارمیکردیم بازدید زیاد داشت و سرچی داشت که همزمان حداقل تو 4 تا جدول جستجو میکرد و اون جداول حاوی رکورد های زیادی بود حداقل چند هزار تا و ستون هایی که روش اون ها قرار بود سرچ بشه در کل نزدیک 8 ستون بود.
در ابتدا به دلیل کمبود زمان و نزدیک بودن Deadline پروژه مجبور شدیم با Like کار رو انجام بدیم، بعد تستی بالا اومدن پروژه این سرچ خیلی کند شده بود و داشت بیش از حد منابع مصرف میکرد. تو فاز دوم به پیشنهاد یکی از همکارا از Full Text Search خود دیتابیس استفاده کردیم. اینکار مشکل Performance ما رو حل کرد اما اونقدر هوشمند نبود برای مثال اگه کلمه ایی سرچ میشد نتایج رو بر اساس میزان مطابقت نمی آورد اگه میخواستید اینکارو کنه کارتون پیچیده میشد و سخت.
اولین مشکل این بود که در کنارش برای اینکه به نتیجه مطلوب برسی دستورات خیلی زیاد و پیچیده ایی داشت حالا این ها رو با join ها بنویسی مشکل دوم پشتیبانی نکردن کامل Orm ما از این قابلیت ها بود. دوباره مجبور بودیم سرچ رو عوض کنیم ایندفعه رفتیم سراغ Lucene . کتابخونه لوسین یک سرچ انجین هست که برای جاوا نوشته شده اما نسخه Net. هم داره منتها خیلی وقته آپدیت نشده دوستانی هم که از PHP استفاده میکنن میتونن از Solr استفاده کنن. وقتی از لوسین استفاده میکنین کل دیتاییس که میخواهید روی آن سرچ انجام دهید به او میدهید و لوسین یکسری فایل ایندکس از روی اون ها میسازه و وقتی میخاد سرچ انجام بده از روی فایل انجام میده.
در تست هایی که گرفتم برای چند هزار تا رکورد نزدیک 6 میلی ثانیه جواب داد رو سیستم معمولی. غیر از سرعت عالیه که داره خیلی هوشمند هست و نتایج رو بر اساس میزان مطابقت میاره و خیلی کانفیگ داره برای مثال برجسته کردن کلمه جستجو شده تو نتیجه یا امکان غلط گیر املایی کلمه مثل گوگل و انجام محاسبات آماری بر روی متون و....
در کل تجربه خوبی بود شما هم اگه دیتابیس بزرگی دارید یا دیتای زیاد دارید و سرچ تون کنده و اذییت میکنه و هوشمند نیست پیشنهاد میکنم این سرج رو بیایید به صورت یه سرویس جدا بنویسید و تو هر پروژه راحت استفاده کنید.
@one_programmer
https://telegram.me/one_programmer
سورس کنترل
واژه ایی که امروزه برای استخدام شدن لازم و حیاتی هست.
یادمه اولین دفعه ایی که این واژه رو شنیدم از شنیدنش خیلی خوشحال نشدم فکر میکردم الآن یه ابزاری هست که زیاد مفید نیست وقتمون هم میگیره. اما بزارید قبل سورس کنترل رو بگم :
برنامه نویس های سمت سرور دو نفر بودیم که داشتیم رو یه پروژه کار میکردیم این سینک نبودن کد هامون خیلی عذاب آور بود یه سری مواقع با یه تغییر پروژه کار نمیکرد ما هم نمیدونستیم اون تغییرات دقیقا کدوم فایلا بوده.
بلاخره وقتی پروژه بزرگ میشه این یه چیز طبیعیه، خلاصه کلی دنبال خطا بودیم آخرش پیدا میکردبم معلوم هم نبود کار کی بوده. مشکل زیاد بود مثلا وقتی یه ویژگی رو یکی اضافه میکرد باید به برنامه نویس دیگه میداد، ورژن بندی تقریبا غیر ممکن بود و خیلی موارد دیگه
این شد اومدیم سراغ سورس کنترل گیت
بعد اینکه یادگرفتیم سورس کنترل چیه چیکار میکنه خیلی کارمون بهتر شد اولش خیلی جالب بود برام که کوچیکترین تغییرات فایل رو متوجه میشه حتی یه space به انتهای یه خط، دیگه هر تغییرات کامل معلوم بود چی بوده چه کسی انجام داده، ورژن بندی منظم و درستی داشتیم، هر ویژگی که اضافه میشد به پروژه، سینک کردنش بین بقیه خیلی راحت بود و خیلی مزایا دیگه.
شرکت ها همه از سورس کنترل استفاده میکنن حتی شرکت های خیلی کوچیک، اگه تو خونه کار میکنید باز هم پیشنهاد میکنم از سورس کنترل استفاده کنید هم کارهاتون درست پیش میره هم برای استخدام کار کردن با یه سورس کنترل خوب رزومه خوبی براتون میشه.
برای دوستانی که محصولات ماکروسافت استفاده میکنن پیشنهاد میشه از سورس کنترلر tfs استفاده کنن، و برای بقیه دوستان بهترین پیشنهاد گیت هست.
هر دو رو هم میتونید تو خونه رو سیستم نصب کنید هم سایت هایی هستن که به صورت آنلاین این سرویس رو در اختیارتون میزارن مثل GitHub و Gitlab .

@one_programmer
https://telegram.me/one_programmer
وقتی پشت میز تو شرکت یا خونه هستید، چند تا نکته رو رعایت کنید
قوز نکنید
گردن رو صاف بگیرید
خیلی به مانیتور خیره نشوید
خیلی به مانیتور نزدیک نشوید
ارتفاع مانیتور رو طوری تنظیم کنید که موقع نگاه کردن مجبور به حرکت گردن نشوید و رو به روی چشمان شما باشد
سعی کنید موقع تایپ آرنج زاویه 90 درجه باشد.
غیر این موارد سعی کنید هر نیم ساعت یا 1 ساعت حداقل یک بار از جای خود بلند شوید یه دوری بزنید، آب بخورید، به دور دست نگاه کنید برای چشم خیلی مفیده، حرکت کششی بکنید.
یکی از همکارانم که خیلی وقته برنامه نویسی میکنه بعد یک مدت که این موارد و انجام نمیداد دچار درد گردن و کمر و مچ شد طوری که بعد چند ساعت کار درد وحشتناکی بهش وارد میشد در حد جیغ زدن !!
پس اگه تا الآن رعایت نمیکردید رعایت کنید چون اثرات بلند مدت داره.
نکته دیگه ایی که مهمه شغل شما برنامه نویسیه ازش پول در میارید، تو روز حداقل 9 ساعت پشت سیستم هستید و آینده کاریتون بهش بستگی داره قراره حالا حالا برنامه نویسی کنید، پس دنبال یک صندلی خوب باشید، قیمت اون رو در نظر نگیرید چون آینده شما رو میسازه، دنبال یک میز خوب باشید، در نهایت کل هزینه ممکنه 1/5 میلیون بشه یا کمتر ولی ارزش اون رو داره، یادتون نره در مورده آیندتون داره صحبت میشه
@one_programmer

https://telegram.me/one_programmer
وب سرویس
برنامه ها و اپلیکیشن ها برای سرویس دادن به هم، نیازه که وب سرویسی رو ارائه بدن که برنامه های دیگه بتونن ارتباط برقرار کنن و سرویس بگیرن یا سرویس بدن.
تکنولوژی که مدت ها استفاده میشد Soap بود که بر پایه زبان Xml کار میکرد و وابسته به تکنولوژی خاصی نبود، سیستم ها راحت باهاش ارتباط بر قرار میکردن.
اما تکنولوژی جدیدی که اومد کار کردن با فرمت جیسون (Json) بود، این فرمت ابتدا در جاوا اسکریپت مورد استفاده قرار میگرفت.
فرمت Json به این شکل هست که هر کلاینتی که این فرمت رو میگیره اون رو به مدلی که میخاد برمیگردونه یعنی سرور داده رو Serialize میکنه و کلاینت اون رو Dersialize میکنه.
در کنار فرمت Json استفاده از Restful Api ها هم رواج پیدا کرد که برای عملیات خاصی اکشن خاصی در نظر گرفته شده بود.
برای مثال برای Api پاک کردن محصول متد مورد استفاده از نوع Delete بود یا برای گرفتن اطلاعات یک محصول متد Get است، برای هر موجودیت یک کنترلر تعریف میشه که 4 عمل اصلی رو پوشش میده، توضیحات بیشتر رو تو پست های آینده میدم.
دو تکنولوژی محبوب مورد استفاده رو بیان کردم اما تکنولوژی که محبوب تر هست و بیشتر مورد استفاده میشه Json هست.
مزیتی که داره
- سریعتر بود
- سادگی در پیاده سازی
- محبوب تر بودن
- قابل فهم بودن

کار با json سریعتر از soap هست و این سرعت با افزایش داده موجود رابطه مستقیم داره، یعنی هر چی داده بیشتری انتقال داده بشه soap کندتر میشه.
اگر با Api های شرکت های بزرگ مثل گوگل و اینستاگرام و... کار کرده باشید می بینید که از جیسون (Json) استفاده میکنن.
توصیه میکنم در مورد Json و Restful Api ها مطالعه کنید و اگه قراره سرویسی ارائه بدید به موبایل یا هر کلاینتی، از این تکنولوژی استفاده کنید.
تو آینده قصد دارم چند تا پست در مورد Json و Restful بزارم که حالت آموزشی داشته باشه.
@one_programmer

https://telegram.me/one_programmer