Dev Perfects – Telegram
Dev Perfects
41 subscribers
9.23K photos
1.26K videos
468 files
13K links
بخوام خیلی خلاصه بگم
این کانال میاد مطالب کانالای خفن تو حوزه تکنولوژی و برنامه نویسی رو جمع میکنه

پست پین رو بخونید
https://news.1rj.ru/str/dev_perfects/455


ارتباط:
https://news.1rj.ru/str/HidenChat_Bot?start=936082426
Download Telegram
Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی (SeYeD.Dev)
خب بریم سراغ پیاده سازی یک سیستم خیلی ساده برای توضیح منطق چنین برنامه ای :
در سیستم های توزیع شده (یعنی رو خیلی سرور باشن) ممکنه یک یا چند کلاستر داشته باشیم، هر کلاستر هم خیلی سرور رو به هم وصل میکنه(مثلا ۵ هزارتا سرور)، خود کلاستر ها هم میشه به هم متصل کرد

وقتی شما از یک دیتابیس یا سیستم ذخیره فایل یا یک برنامه استفاده میکنی، یکسری قابلیت توزیع داره که فایل رو هم به صورت کامل هم به صورت تکه تکه شده ممکنه توی جاهای مختلف ذخیره کنه

فرض بگیرید شما یک فایل ۱ گیگابایتی توی تلگرام آپلود میکنی ، آیا فایل شما فقط یک گیگ از سرور های تلگرام رو اشغال کرده ؟ خیر ممکنه کمی بیشتر یا حتی چند برابر، چرا ؟ چون اگر یکی از سرور ها هاردش سوخت بتونن فایل شمارو از باقی سرور ها سر هم کنند، این عملیات هم خودکار توسط سیستم استوریج انجام میشه، برای مثال MinIO که بر پایه s3 هستش چنین سیستمی رو فراهم میکنه

پس در سیستم های توزیع شده اگر هارد بسوزه یا حتی چندین سرور برقشون قطع بشه، کل سیستم از بین نمیره، بلکه ممکنه سرعت کمی کند تر بشه، چون اون از اسکیل که برای هندل اونقدر کاربر مورد نظرمون هستیم کمی منابعمون کمتر شده( مثل زمانی که ایلان ماسک سرور های توییتر رو گذاشت توی ماشینش و برد یک دیتاسنتر دیگه، یک ماه این فرایند انتقال طول کشید،‌توییتر قطع نبود توی این یک ماه، ولی بشدت کند بود، چون کمتر از تعداد لازم سرور برای این همه کاربر، سرور داشت )

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

حالا فرض کنید که تلگرام مجبوره داده های کاربران اروپا رو توی اروپا، کاربرای اسیا رو توی آسیا، امریکا رو توی امریکا ذخیره کنه، چرا ؟ یا اجبار دولت ها (اروپا چنین قانونی رو داره) یا کم شدن پینگ کاربر ها، بالاخره هر چه دیتا از سرور نزدیک تری براش دریافت بشه سرعت بهتری رو تجربه میکنه

پس میاد کلید های رمز سرور های اروپا رو میریزه توی اسیا و امریکا، و کلید های امریکارو میریزه توی اروپا و اسیا و ...

ادامه پست بعدی
@SEYED_BAX
Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی (SeYeD.Dev)
حالا یک کد خیلی ساده برای رمز نگاری یک متن در ادامه میزارم که میتونید بخونیدش، که چطوری میشه رمز کرد یک متن رو و کلیدش رو چندجای مختلف ذخیره کرد، هر وقت هم بخوایم متن رو برگردونیم کلید هارو لود میکنیم و متن رو بازیابی میکنیم

دوستان توجه کنید کسی که نفوذ کرده به سیستم و میتونه روی کد های سرور تغییری ایجاد کنه احتمالا دسترسی به هر داده ای میتونه داشته باشه، تمام این صحبت ها برای اینه که اون کشور نره سراغ سرور و کابل هارو جدا کنه و بشینه اطلاعاتش رو بخونه


import os
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.primitives import padding
from cryptography.hazmat.backends import default_backend
import base64

# ایجاد یک کلید رمزنگاری (این کلید باید امن و در جای مناسب نگهداری شود)
def generate_key():
return os.urandom(32)

# رمزنگاری داده‌ها
def encrypt_data(data, key):
# پدینگ داده‌ها برای رمزنگاری
padder = padding.PKCS7(128).padder()
padded_data = padder.update(data) + padder.finalize()

# ایجاد IV برای حالت رمزنگاری CBC
iv = os.urandom(16)
cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backend=default_backend())
encryptor = cipher.encryptor()
encrypted_data = encryptor.update(padded_data) + encryptor.finalize()

# بازگشت داده رمزنگاری شده به همراه IV
return base64.b64encode(iv + encrypted_data)

# رمزگشایی داده‌ها
def decrypt_data(encrypted_data, key):
encrypted_data = base64.b64decode(encrypted_data)
iv = encrypted_data[:16]
encrypted_data = encrypted_data[16:]

cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backend=default_backend())
decryptor = cipher.decryptor()
padded_data = decryptor.update(encrypted_data) + decryptor.finalize()

# حذف پدینگ از داده‌ها
unpadder = padding.PKCS7(128).unpadder()
data = unpadder.update(padded_data) + unpadder.finalize()

return data

# تقسیم کلید به چند بخش (توزیع کلیدها)
def split_key(key, parts=3):
key_parts = []
for _ in range(parts - 1):
part = os.urandom(len(key))
key_parts.append(part)
key = bytes(a ^ b for a, b in zip(key, part))
key_parts.append(key)
return key_parts

# ترکیب کلیدها برای بازسازی کلید اصلی
def combine_key(key_parts):
key = key_parts[0]
for part in key_parts[1:]:
key = bytes(a ^ b for a, b in zip(key, part))
return key

# مثال عملی
data = b"Sensitive user data that needs protection"

# تولید کلید و رمزنگاری داده‌ها
key = generate_key()
encrypted_data = encrypt_data(data, key)
print("Encrypted data:", encrypted_data)

# تقسیم کلید
key_parts = split_key(key, parts=3)

# ذخیره کلیدها در دیتاسنترهای مختلف (این بخش فرضی است)
datacenter1 = key_parts[0]
datacenter2 = key_parts[1]
datacenter3 = key_parts[2]

# بازسازی کلید اصلی
reconstructed_key = combine_key([datacenter1, datacenter2, datacenter3])

# رمزگشایی داده‌ها
decrypted_data = decrypt_data(encrypted_data, reconstructed_key)
print("Decrypted data:", decrypted_data)

توضیحات کد:

1. تولید کلید رمزنگاری: تابع generate_key یک کلید تصادفی ۳۲ بایتی برای رمزنگاری AES تولید می‌کند.
2. رمزنگاری و رمزگشایی: توابع encrypt_data و decrypt_data داده‌ها را با استفاده از الگوریتم AES و حالت CBC رمزنگاری و رمزگشایی می‌کنند.
3. تقسیم و بازسازی کلید: تابع split_key کلید را به چند بخش تقسیم می‌کند تا بتوان این بخش‌ها را در مکان‌های مختلف نگهداری کرد. تابع combine_key این بخش‌ها را ترکیب کرده و کلید اصلی را بازسازی می‌کند.
4. دیتاسنترهای مختلف: در این مثال فرض شده که هر بخش از کلید در یک دیتاسنتر جداگانه ذخیره می‌شود.

@SEYED_BAX
Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی (SeYeD.Dev)
‏جوان ایرانی کل انرژی و استعدادش رو میذاره تا یه محتوای کنایی و طنز تولید کنه ولی میبینه مسئول محترم بدون اینکه خنده اش بگیره اون کارو انجام داده 🤣🤣

@SEYED_BAX
Forwarded from LearnPOV | لرن پی او وی (Mohammad hossein)
Forwarded from Linuxor ?
اصلا کاری به اینکه توروالدز انقدر چاق شده ندارم، لعنتی شاهرخ خان دیگه چیه توصیف بهتری نداشتی؟😂😂😂😂

🐧 @Linuxor
Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی (SeYeD.Dev)
💦💦💦💦💦
Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی (SeYeD.Dev)
هیچی نیست، من شاشیدم به ایفون

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

بعد ویدیو ها اپلود خواستم بکنم توی تلگرام، وسطش یهو نوتیف پیامک اومد رفتم چک کنم، اپلودا کنسل شد

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


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

گند بزنن #اپل رو

@SEYED_BAX
Forwarded from Gopher Academy
🔵 عنوان مقاله
Go! Unlock Your Tech Potential with Ardan Labs Consulting

🟢 خلاصه مقاله:
مقاله‌ای که به بررسی موضوعات مرتبط با فاصله‌های مهارتی، سرعت توسعه و چالش‌های فنی پیچیده می‌پردازد، توسط شرکت Ardan Labs ارائه شده است. این شرکت تخصص خود را در زمینه‌های Go, Rust, Docker و K8s عنوان کرده و خدماتی را برای تسریع در توسعه نرم‌افزار، بهینه‌سازی معماری و مدیریت بدهی فنی ارائه می‌دهد. آن‌ها قادر هستند تیم‌های توسعه نرم‌افزار را با استفاده از تخصص خود تقویت کنند، به بهبود فرآیندها و مدیریت چالش‌های تکنولوژیکی کمک کنند. این شرکت می‌تواند به عنوان یک شریک قوی در کنار تیم‌های مختلف قرار گیرد تا به آن‌ها در دستیابی به اهداف توسعه‌ای خود یاری رسانده و باعث افزایش کارایی و سرعت در پروژه‌های تکنولوژیکی شود.

🟣لینک مقاله:
https://www.ardanlabs.com/consulting/?utm_source=cooperpress


👑 @gopher_academy
Forwarded from Mir Sobhan
ابزار فاک برای تصحیح اشتباهات کامند لاین شما. بعد از هر اشتباه در cli لازمه فقط بزنید fuck.

pacman -S thefuck
Forwarded from آزادان | Azad-on
مهلت ارسال طرح اولیهٔ ارائه در رویداد #روز_آزادی_نرم‌افزار ۱۴۰۳ آزادان، تا جمعه ۱۶ شهریور تمدید شد.

اطلاعات بیشتر:

sfd1403.azad-on.com
Forwarded from کداکسپلور | CodeExplore (𝙰𝚖𝚒𝚗)
بیاید امروز با Bulma که یکی از فریمورک های CSS هست آشنا بشیم:

🔺در واقع Bulma یک فریمورک CSS مدرن هست که برای ساخت رابط های کاربری زیبا و قابل استفاده در وبسایت‌ ها و برنامه‌های وب طراحی شده.

🔸این فریمورک شامل مجموعه‌ ای از کلاس‌ها، کامپوننت‌ها و استایل‌های زیبا و قابل تنظیم هست که به دولوپرا امکان میده به سرعت و با کیفیت بالا، رابط‌ های کاربری جذاب و حرفه‌ای برای وبسایت‌ ها و برنامه‌ های وب ایجاد کنن.

‼️درواقع Bulma به عنوان یکی از فریمورک‌ های CSS پرکاربرد و مورد توجه در زمینه طراحی رابط کاربری شناخته میشه و به دولوپرا این امکان رو میده تا با استفاده از آن، به سادگی و با قدرت، رابط‌های کاربری زیبا رو پیاده‌سازی کنن.

#bulma #css #framework
☕️ @CodeExplore
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Web Application Security
Same Origin Policy/SOP چیست =


فرض کنین روی مرورگر دوتا Tab باز هست که یکی attacker.com و دیگری bank.com هست، اگه هکر از attacker.com یه درخواست xhr میزد به bank.com و اطلاعات بانکی کاربر رو میتونست بخونه، هیچ امنیتی وجود نداشت. ولی مرورگرا جلوی این اتفاق رو میگیرن با SOP. SOP کارش اینه که اجازه نمیده یه صفحه تو مرورگر به اطلاعات یه صفحه دیگه دسترسی داشته باشه، مگر اینکه با هم Same Origin باشن. حالا اصلا Origin چیه؟ ترکیب protocol و host name و port میشه یه Origin، و اگه دوتا دامنه حداقل تو یکی از این 3 شرط با هم برابر نباشند، دیگه Same Origin نیستند و به اصطلاح Cross Origin هستند و مرورگر اجازه نمیده که به اطلاعات همدیگه دسترسی داشته باشند.
برای مثال دوتا سایت زیر با هم Same Origin هستند :
http://Google.com:8080/search/index.php?key=stuff#top
http://Google.com:8080
نکته : path و پارامتر و fragment توی Origin تاثیری ندارن.
نکته : SOP به صورت پیشفرض روی همه مرورگرها هست و وب سرور نقشی تو فعال سازی این مکانیزم امنیتی نداره بر خلاف CSP(در آینده کاور میشه)
ولی دوتا سایت زیر با هم Cross Origin هستند :
http://Google.com:80
http://Google.com:443
دلیلش هم تفاوت داشتن پورت هاس.
حالا دقیقا SOP کجا و چطور کار میکنه؟
وقتی کاربر سایت attacker.com رو باز میکنه این سایت یه کد مخرب xhr با جاوااسکریپت نوشته که کاربر رو مجبور میکنه یه درخواست بزنه به Bank.com (کاربر متوجه درخواست نمیشه) و درخواست هم با موفقیت ارسال میشه و اطلاعات کاربر رو تو Bank.com میخونه، ولی وقتی میخواد اطلاعات رو در اختیار attacker.com که Cross Origin هست قرار بده، SOP میاد تو بازی و جلوی این کار رو میگیره. پس SOP با ارسال درخواست کاری نداره و فقط موقع برگشتن response جلوشو میگیره.

تا الان یاد گرفتیم که SOP جلوی خوندن اطلاعات Cross Origin رو میگیره، ولی آیا همیشه اینطوره؟ خیر. SOP روی یه سری فایلا اعمال نمیشه و همین باعث موارد امنیتی میشه. برای مثال SOP روی عکس ها اعمال نمیشه و میتونیم از هر سایتی به هر سایتی درخواست بزنیم و عکس رو تو سایتمون لود کنیم. و همچنین روی فایل های Javanoscript اعمال نمیشه. یعنی هر فایل جاوااسکریپتی که تو سایت ما هست، میتونه توسط Origin های دیگه خونده بشه و اینجا ممکنه تحت شرایطی باعث به وجود اومدن آسیب پذیری بشه(در آینده کاور میشه).
باور غلطی که خیلیا دارن اینه که SOP همیشه روی وب اپلیکیشن ما کار میکنه:)
در صورتی که اینطور نیست و این مکانیزم امنیتی مختص پروتکل HTTP هست و اگه سایت از پروتکل websocket استفاده کرده باشه ، SOP اعمال نمیشه:))
#SOP
#websocket
Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی (SeYeD.Dev)
This media is not supported in your browser
VIEW IN TELEGRAM
برادر لنگ پول است 💀

@SEYED_BAX
Forwarded from LearnPOV | لرن پی او وی (Mohammad hossein)
This media is not supported in your browser
VIEW IN TELEGRAM
وقتی تازه html و css یادگرفتی 🆚 وقتی با جاوااسکریپت آشنا میشی

- چقد حق ؟؟؟ 🤣
#️⃣ #fun
🆔 Channel | Group | YouTube
Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی (SeYeD.Dev)
برنامه نویسی ولی کار گیرت نمیاد ؟ این ویدیو رو حتما ببین :

https://www.instagram.com/reel/C_QeBRWtfwB/?igsh=MTk0eGl1cWMyOGF5

@SEYED_BAX
بالاخره بعد از ساعت‌ها خون دل خوردن و خرابکاری توی نتورک منیجر و همینطور خرابکاری در سطح گسترده توی سرویس سیستم‌دی نتورک، بالاخره تونستم پل بسازم :))


@SohrabContents
📕کتاب REST API Design Rulebook

📌 فصل اول: معرفی (Introduction)

📍پارت: اول

#کتاب

💎 سلام به دنیای اینترنت 💎

وب از یه گروه به اسم "داده‌گیری و کنترل" توی سازمان تحقیقاتی اروپا برای فیزیک هسته‌ای (CERN) در ژنو، سوئیس شروع شد.
این ماجرا از وقتی شروع شد که یه برنامه‌نویس کامپیوتر یه ایده هوشمندانه برای یه پروژه نرم‌افزاری جدید به ذهنش رسید.
توی دسامبر ۱۹۹۰، برای اینکه به اشتراک‌گذاری اطلاعات راحت‌تر بشه، "تیم برنرز-لی" یه پروژه غیرانتفاعی رو شروع کرد که اسمش رو "WorldWideWeb" گذاشت.
بعد از حدود یک سال کار مداوم روی پروژه‌اش، برنرز-لی اینا رو اختراع و پیاده‌سازی کرد:
• شناسه منبع یکتا (URI)، یه فرمت که به هر سند وب یه آدرس یکتا میده.
• پروتکل انتقال ابرمتن (HTTP)، یه زبان پیام‌محور که کامپیوترها می‌تونن ازش برای ارتباط توی اینترنت استفاده کنن.
• زبان نشانه‌گذاری ابرمتن (HTML)، برای نمایش اسناد اطلاعاتی که حاوی لینک‌هایی به اسناد مرتبط هستن.
• اولین سرور وب.
• اولین مرورگر وب، که برنرز-لی اسمش رو هم "WorldWideWeb" گذاشت و بعداً به "Nexus" تغییر داد تا با خود وب اشتباه گرفته نشه.
• اولین ویرایشگر HTML به صورت WYSIWYG (یعنی چیزی که می‌بینی همونه که دریافت می‌کنی)، که توی خود مرورگر ساخته شده بود.

در ۶ آگوست ۱۹۹۱، تیم برنرز-لی توی اولین صفحه وب نوشت:
"WorldWideWeb (W3) یه ابتکار برای بازیابی اطلاعات هایپرمیدیا توی یه منطقه وسیع هست که هدفش دسترسی عمومی به یه دنیای بزرگ از اسناد هست."
از همون لحظه، وب شروع به رشد کرد، گاهی به‌صورت تصاعدی. طی پنج سال، تعداد کاربران وب به ۴۰ میلیون نفر رسید. یه زمانی بود که این تعداد هر دو ماه دو برابر می‌شد. همون "دنیای اسناد" که برنرز-لی توصیف کرده بود، واقعاً در حال گسترش بود.

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

@ninja_learn_ir
Forwarded from کداکسپلور | CodeExplore (D@n!)
😔 راهنمای بقا در دسکتاپ : از صفر تا صد گرفتن پروژه (و زنده موندن!)

سلام رفقای کد به دست (یا دست به کد) ! امروز می‌خوایم درباره یه موضوع حیاتی حرف بزنیم: چطوری تو دنیای وحشی فریلنسری، یه پروژه بگیریم و زنده بمونیم تا تهش!

1️⃣ شکار پروژه ، خودتون رو آماده کنید (مثل یه گلادیاتور، ولی با لپ‌تاپ و ماوس):

⚫️ مهارت‌هاتون رو صیقل بدید (نه اینکه فقط Hello World بلد باشید و ادعای فول استک بودن کنیدا)

⚫️ یه رزومه درست و حسابی بسازید (حتی اگه شده پروژه‌های شخصی و الکی)
رزومه‌تون رو طوری بنویسید انگار دارید برای اسکار نامزد می‌شید 😬🤫

⚫️ جایی که پروژه‌ها پرسه می‌زنن:
- پلتفرم‌های فریلنسری مثل Upwork, Freelancer, Fiverr (اینجا جنگله، مراقب شیرها باشید (و همچنین کفتار ها😂)!)
- جاهایی مثل پونیشا هم هست ، که برای شروع خوبه ، اما دستمزدا عجیبه
- گروه‌های لینکدین و فیسبوک (بله، فیسبوک هنوزم زنده‌ست!)
- وب‌سایت‌های محلی و فروم‌های تخصصی (شاید یه گنج پنهان پیدا کنید)
و مهم تر از همه جا تلگرام دوست داشتنیمون 🙄

⚫️ پیشنهاد پروژه بدید (مثل خواستگاری، ولی برای کار):
- درخواست هارو شخصی‌سازی کنید (نه اینکه کپی پیست کنید و فقط اسم طرف رو عوض کنید!)
- نمونه کار مرتبط بفرستید (نه اینکه پروژه موز فروشی رو برای یه شرکت فناوری نانو بفرستید ⛔️)
- قیمت منطقی پیشنهاد بدید (نه اونقدر پایین که از گشنگی بمیرید، نه اونقدر بالا که طرف سکته کنه )
- یاد بگیرید "نه" بگید (حتی به اون پروژه وسوسه‌انگیزی که می‌دونید از پسش برنمیاید)


2️⃣مذاکره (یا چطور سر خودمون کلاه نره)

⚫️ اولین تماس (مثل قرار اول، ولی بدون گل و شیرینی):
- سوال بپرسید (نه اینکه فقط بله و چشم بگید)
- شفاف‌سازی کنید (هر جمله ایی که میگید تاثیر گذاره)
- زمان‌بندی و بودجه رو مشخص کنید (وگرنه پروژه‌تون مثل سریال‌های ترکی کش میاد)

⚫️ قرارداد (بله، اون کاغذ خسته‌کننده‌ای که همه ازش فرار می‌کنن):
- حتماً قرارداد ببندید (حتی اگه طرف مقابل بابابزرگتون باشه!)
- جزئیات رو مشخص کنید (وگرنه بعداً می‌فهمید قراره موشک هم بسازید)
- شرایط پرداخت رو دقیق بنویسید (چون پول حلال مشکلاته، ولی بی‌پولی خودش یه مشکل بزرگه)
- حتما 50 تا 60 درصد هزینه پروژه رو به عنوان پیش پرداخت بگیرید (وگرنه ممکنه آخرش فقط با یه "دمتم گرم" خدافظی کنید)


3️⃣ انجام پروژه (یا چطور شب‌ها بخوابیم وقتی کابوس باگ می‌بینیم)

⚫️ مدیریت پروژه (مثل بازی Sims، ولی با کد):
- زمان‌بندی کنید (نه اینکه روز آخر یادتون بیفته پروژه دارید)
- ارتباط منظم داشته باشید (کارفرما رو تو خماری نذارید، بهش آپدیت بدید)
- از ابزارهای مدیریت پروژه استفاده کنید (نه اینکه همه چی رو رو کاغذ یادداشت کنید و بعد گمش کنید 🤩)

⚫️ کدنویسی (بالاخره رسیدیم به قسمت خوشمزه‌!):
- تمیز و مرتب کد بزنید (جوری که انگار قراره بعداً خودتون بخونید، چون احتمالاً مجبور می‌شید!)
- مستندسازی کنید (بله، اون کامنت‌هایی که همیشه می‌گید بعداً می‌نویسم ...)
- تست کنید، تست کنید، و باز هم تست کنید (وگرنه بعداً جای اشک و آه و ناله دارید)


4️⃣ تحویل پروژه (یا لحظه حقیقت)

⚫️ بازبینی نهایی (مثل چک کردن جیب‌ها قبل از شستن لباس):
- همه چیز رو دوباره چک کنید (حتی اون قسمتی که مطمئنید درسته)
- یه نفر دیگه هم نگاه کنه (چهار تا چشم بهتر از دوتاست)
- آماده باشید برای سوالات (چون یهو یادشون میاد یه ویژگی دیگه هم می‌خواستن ، انگار ما مسخرشونیم 🫠 ، تو قرارداد تعداد ویژگی های اضافی رو مشخص کنید که یدفعه پول یه فروشگاه ساده رو نگیرید ولی آمازون بزنید)

⚫️ تحویل (لحظه‌ای که قلبتون میاد تو دهنتون یا جای دیگتون):
- همه چیز رو مرتب و منظم تحویل بدید (نه اینکه فایل‌ها رو بریزید تو یه فولدر به اسم "آخرین ورژن نهایی ،واقعیه این دفعه جدی")
- آموزش بدید (جوری که انگار دارید به مادربزرگتون یاد میدید چجوری از لینوکس استفاده کنه)
- برای تغییرات احتمالی آماده باشید (چون همیشه یه چیزی هست که یادشون رفته بگن و حتما بررسی کنید که چیز اضافه ایی نباشه)


5️⃣ دریافت پول (یا چرا اصلاً این کار رو شروع کردیم❤️)

⚫️ فاکتور (اون برگه جادویی که قراره تبدیل به پول بشه):
- دقیق و کامل بنویسید (نه اینکه بزنید :یه چیزایی کد زدیم، لطفاً پولشو بدید)
- زمان پرداخت رو مشخص کنید (وگرنه تا آخر عمر منتظر می‌مونید)
- روش پرداخت رو هماهنگ کنید (چک، کارت به کارت، ارز دیجیتال، یا شاید هم گونی سیب‌زمینی!)

⚫️ پیگیری پرداخت (یا هنر یادآوری بدون اینکه طرف رو عصبانی کنید):
- مؤدبانه پیگیری کنید (نه اینکه هر روز زنگ بزنید و گریه کنید)
- اگه تأخیر شد، علتش رو بپرسید (شاید واقعاً مشکلی پیش اومده و تو گرفتاریه!)
- برای موارد اضطراری آماده باشید

#programming #project #freelancer
☕️ @CodeExplore
Please open Telegram to view this post
VIEW IN TELEGRAM