Random shi- tutorials – Telegram
Random shi- tutorials
210 subscribers
229 photos
27 videos
12 files
546 links
محتوای مفید برنامه نویسی و لینوکسی از سراسر دنیا ✍️
جوین شدن شما موجب شادی روح و روان ما میگردد😗
Download Telegram
Forwarded from .NET Internals
چیکار کنیم وقتی به اشتباه تو برنچ main پوش میکنیم؟!

دیروز داشتم کد میزدم و پوش میکردم یهو دیدم که دارم توی برنچ main پوش میکنم!!!

داشتیم pair-programming میکردیم و اصلا حواسم نبود ولی خوب همیشه یه راهی باید باشه، نه؟

باید این مراحل رو انجام بدیم:

1- پیدا کردن کامیت آخرین کامیت درست
git log --oneline
با این دستور تاریخچه کامیت ها رو میتونیم ببینیم
path\to\repo> git log --oneline
e74c0b4 (HEAD -> main) by mistake commit 2
d86e63f by mistake commit 1
ed658f3 latest good commit
7975f4e previous commits


2- تغییر برنج به کامیت درست
git reset --hard <commit-hash>

طبق تاریخچه بالا میخوایم به کامیت ed658f3 برگردیم پس:
git reset --hard ed658f3


3- پوش کردن تغییرات
با این دستور برنچ main رو آپدیت میکنیم
git push origin main --force

و تمام!

خوب چندتا سوال پیش میاد؟
1- چرا من تونسته بودم مستقیم روی برنچ main پوش کنم؟
چون ادمین ریپو هستم

2- خوب چرا پوش رو نبستی روی main؟
چون گیتاپ اگر بخوای Rule ست کنی برای ریپوی خصوصی باید گیتاپ Enterprise داشته باشی
Forwarded from The Machine
.NET Internals
چیکار کنیم وقتی به اشتباه تو برنچ main پوش میکنیم؟! دیروز داشتم کد میزدم و پوش میکردم یهو دیدم که دارم توی برنچ main پوش میکنم!!! داشتیم pair-programming میکردیم و اصلا حواسم نبود ولی خوب همیشه یه راهی باید باشه، نه؟ باید این مراحل رو انجام بدیم: 1- پیدا…
چطوری مسیج کامیت‌های گذشته رو عوض کنیم؟

یه چالش دیگه هم که اخیرا درموردش سرچ کردم و توی کار بهش برخوردیم این بود که بریم commit message های چند کامیت قبلی رو تغییر بدیم، کامیت آخر که راحت ترین راه براش کامند معروف زیر هست:

git command --ammend

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

Interactive Git Rebasing

با استفاده از کامند:

git rebase -i Head~N

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

وقتی که یه interactive rebase انجام می‌دیم پشت صحنه گیت یه فایل تو دو لیست داخل ادیتور باز می‌کنه و کامیت‌ها رو از از قدیمی ترین به جدیدترین ( بالا به پایین) نمایش می‌ده و می‌تونیم انتخاب کنیم که مرحله بعدی برای کامیت چه کاری می‌خوایم انجام بدیم:

Pick: استفاده از کامیت به همون شکل فعلی

Reword: استفاده از کامیت ولی با ویرایش پیام

Edit: استفاده از کامیت اما با یه وقفه برای تغییر محتوا یا پیام

Squash: مرج کردن این کامیت با کامیت قبلی و با ترکیب کردن پیام اون ها

Fixup: مرج کامیت فعلی با کامیت قبلی بدون نگه داشتن پیام

Drop: حذف کامل کامیت

حالا که فهمیدیم چه آپشن‌هایی داریم برگردیم سر سناریوی خودمون، وقتی که ادیتور باز شد اون کامیتی که می‌خوایم رو پیدا می‌کنیم و دستور کنارش رو از pick به reword تغییر می‌دیم بعد فایل رو می‌بندیم وقتی فایل بسته میشه گیت برای اون کامیتی که reword داره یه ادیتور باز می‌کنه تا پیام رو ادیت کنیم.
و بعد هم rebase انجام میشه.


نکات قابل ملاحظه در کار تیمی:

قطعا این کار هیستوری رو عوض می‌کنه و اگه این ربپوی مشترک باشه باید از دستور

git push --force

استفاده کنید که خب بقیه تیم هم باید rebase کنن یا کانفلیکت های احتمالی رو حل کنن که به نظرم به دردسرش نمی‌ارزه.

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

git notes add -m "message" <commit hash>

و در نهایت اگه ریپوی لوکال باشه بهتره که این راه رو بریم.
#git
محتوای هک، امنیت، هانت و آموزشی

@ELITE_DRAGONS

@ERO40
Forwarded from RandRng
اگر از Docker Desktop استفاده می‌کنید حتما باید آپدیتش کنید؛ یک vulnerability سطح بالا توی نحوه پیاده‌سازی داره (آپدیت آخر مشکل رو حل کرده)

https://nvd.nist.gov/vuln/detail/CVE-2025-9074

این مورد باعث میشه با ۲ خط کد بشه تمام موارد امنیتی رو دور زد و به سیستم عامل اصلی دسترسی گرفت.

توی گزارش اصلی فقط ویندوز گفته شده (نمی‌دونم مک هم داره یا نه)
Forwarded from Linuxor ?
اینم یه لیست دیگه از دوره های رایگان و همراه با مدرک دانشگاه های معتبر برای مهندسی کامپیوتر

github.com/ForrestKnight/open-source-cs

@Linuxor
Forwarded from HICTE Blog (Hicte Bridge)
[ Source >> @srfirouzi_channel ]

#مهندسی_نرم_افزار

آنتی‌پترن‌ها در برنامه‌نویسی
(الگوهای که باید از آنها دوری کرد)

در دنیای توسعه نرم‌افزار، الگوهای طراحی (Design Patterns) راه‌حل‌هایی اثبات‌شده برای مشکلات تکراری هستند. در مقابل، آنتی‌پترن (Anti-Pattern) ظاهراً راه‌حلی منطقی ارائه می‌دهد، اما در عمل به مشکلات جدی و هزینه‌های بلندمدت منجر می‌شود.
ویژگی کلیدی آنتی‌پترن این است که همیشه یک راه‌حل بهتر و جایگزین برای آن وجود دارد.

این مفهوم از دهه‌ی ۹۰ میلادی وارد ادبیات مهندسی نرم‌افزار شد و کتاب AntiPatterns (۱۹۹۸) به شناخته شدن آن کمک زیادی کرد.
نمونه‌های رایج آنتی‌پترن‌ها

- اسپاگتی کد (Spaghetti Code): کدی درهم‌تنیده و بی‌ساختار که تغییر یا توسعه‌اش کابوس است.
- شی خدا (God Object): کلاسی که بیش از حد مسئولیت دارد و اصل Single Responsibility را زیر پا می‌گذارد.
- چکش طلایی (Golden Hammer): استفاده از یک ابزار، متد یا تکنولوژی برای همه‌چیز، فقط به خاطر آشنایی یا راحتی.
- بهینه‌سازی زودهنگام (Premature Optimization): بهینه‌سازی‌ای که اغلب پیچیدگی بیهوده ایجاد می‌کند.
- کپی و پیست (Copy-and-Paste Programming): تکرار کد در بخش‌های مختلف به جای استفاده از انتزاع و ماژولار کردن.
- جریان مذاب (Lava Flow): باقی ماندن کدهای قدیمی و بلااستفاده که فهم و نگهداری پروژه را دشوار می‌کند.
- طراحی بیش از حد (Overdesign): افزودن پیچیدگی و امکانات غیرضروری برای نیازهایی که هنوز وجود ندارند
- و ...


چگونه از آنتی‌پترن‌ها دوری کنیم؟

- از همه مهمتر آشنایی با آنتی پترن های مطرح
- بازبینی مستمر کد (Code Review).
- بازسازی ساختار کد (Refactoring) بدون تغییر رفتار.
- رعایت اصول ساده و پایه‌ای مانند:
DRY (Don’t Repeat Yourself)
KISS (Keep It Simple, Stupid)
- انتخاب ابزار و تکنولوژی بر اساس نیاز واقعی، نه صرفاً تجربه یا سلیقه شخصی.
- تمرکز بر حل مسئله‌ی فعلی و پرهیز از طراحی بیش‌ازحد برای آینده‌ای نامعلوم.


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

🚁 Hicte Blog | (smm)
Forwarded from Infrastructure Artists
یه حرکتی که امروز با iptables زدم رو خدمتتون بگم شاید به درد شما هم بخوره :))

معمولا تیم های امنیت خیلی از پورت ها رو میبندن ولی پورت ۸۰ و ۴۴۳ معمولا بازه برای سرویس وب و ریکوست های http

ما قرار بود یه سری دیتا رو از یه دیتاسنتر انتقال بدیم یه دیتاسنتر دیگه ولی تیم امنیت پورت sshرو بین دوتا دیتاسنتر بسته بود. فلذا ما نمیتونستیم با scp یا rsync دیتا رو انتقال بدیم.

اولین ایده این بود که دیتا بیاریم روی یه سرور واسط (مثلا لپ تاپ خودمون) و بعد از اونجا مجدد انتقالش بدیم رو سرور مقصد.

ولی یه کار دیگه هم میشه کرد.
معمولا شما وب سرورت تو محیط پروداکشن همیشه باید رو ۴۴۳ لیسن کنه و اصلا ریکوست پورت ۸۰ قبول نکنه یا اگرم قبول کرد ریدایرکت کنه به ۴۴۳.

من یه رول iptables زدم اگر درخواستی اومد به پورت 80 شما ریداریکت کن به ۲۲ و اینطوری قبل از اینکه وب سرور بخواد ریدارکت کنه تو لایه پایینتر شما داری ریدایرکت میکنی.

حالا ما الان داریم rsync رو روی پورت ۸۰ انجام میدیم که بازه و اینطوری تیم امنیت رو یه کوچولو دور میزنیم :))

پ.ن: میشه پورت sshرو هم انداخت روی ۸۰ که بازه ولی خب ما معذوریت داشتیم و امکانش نبود
Forwarded from Linuxor ?
This media is not supported in your browser
VIEW IN TELEGRAM
می‌دونستین توی ترمینال هم می‌شه جیسون رو بازکرد؟ این ابزار برای مواقع ضروری که گرافیک ندارین خیلی کارسازه؛
حتی می‌شه بدون باز کردن فایل جیسون اونو با کمک Autocomplete پیمایش کرد و توی آبجک ها و آرایه های جیسون حرکت کرد. فقط کافیه اسم فایل رو بنویسید و تب بزنید

fx file.json <TAB>

نصب:
fx.wtf/install


@Linuxor
Forwarded from Linuxor ?
خیلیا دنبال یه پلتفرمی ان توش تیکه کد ذخیره کنن، با هم تیمی ها یاداشت ها و کد هارو ویرایش کنن و یه چیز جمو جور باشه که روی همه سیستم عاملای گوشی و دسکتاپ کار کنه! پیشنهاد می‌کنم Boosnote رو یه بار تست کنن واقعا چیز راحتیه :)

github.com/BoostIO/BoostNote-App

@Linuxor
1
Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی (Mohammad Khoshnava)
پشمتون بریزه ، این داوشمون میتونه حجم ایمیج های داکری شمارو تا 30 فاکینگ برابر کمتر کنه 🫥

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

دمش گرم 🩷
https://github.com/slimtoolkit/slim

@SEYED_BAX
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from linuxtnt(linux tips and tricks) (hosein seilany https://seilany.ir/)
🛠 ساخت و فعال‌سازی حافظه Swap در لینوکس

1️⃣ ساخت فایل Swap (اینجا 8 گیگ):

sudo fallocate -l 8G /swapfile



2️⃣ تغییر سطح دسترسی (خیلی مهم!):

sudo chmod 600 /swapfile



3️⃣ فرمت کردن فایل به Swap:

sudo mkswap /swapfile



4️⃣ فعال‌کردن Swap:

sudo swapon /swapfile



5️⃣ بررسی وضعیت Swap:

swapon --show

free -h

اگر می‌خواید بعد از ریبوت هم فعال بمونه، این خط رو به /etc/fstab اضافه کنید:

/swapfile none swap sw 0 0

نویسنده: حسین سیلانی
http://learninghive.ir
Forwarded from linuxtnt(linux tips and tricks) (hosein seilany https://seilany.ir/)
⭐️  دانلود فایل با حداکثر سرعت در ترمینال با دستور aria2c

aria2c -x 16 -s 16 'YOUR_URL'



این دستور به aria2c می‌گوید که فایل موجود در آدرس YOUR_URL را با استفاده از 16 اتصال همزمان و با تقسیم فایل به 16 قطعه دانلود کند.

🔹-گزینه x 16: این گزینه تعداد اتصالات همزمان را به 16 تنظیم می‌کند. به عبارت دیگر، aria2c می‌تواند تا 16 اتصال جداگانه برای دانلود یک فایل برقرار کند.

🔹گزینه -s 16: این گزینه تعداد قطعات (segment) که فایل به آن‌ها تقسیم می‌شود را به 16 تنظیم می‌کند. تقسیم فایل به قطعات کوچک‌تر می‌تواند به بهبود عملکرد دانلود کمک کند، در aria2c، فایل دانلودی به چندین سگمنت تقسیم می‌شود و هر سگمنت به صورت موازی دانلود می‌شود.


نویسنده: حسین سیلانی

http://learninghive.ir
Forwarded from Linuxor ?
می‌دونستین با PyScript می‌شه توی مرورگر بجای جاوااسکریپت با پایتون کد زد؟

شاید سوالتون این باشه چه کاریه همون جاوااسکریپت می زنیم دیگه! ولی کاربرد اصلی PyScript اینه که اجازه می‌ده پایتون (با تمام اکوسیستمش مثل NumPy, Pandas, Matplotlib) مستقیم توی مرورگر اجرا بشه مکانیزمش هم اینه با وب اسمبلی این کارو می‌کنه.

docs.pynoscript.net/2025.8.1/beginning-pynoscript

@Linuxor
Forwarded from Linuxor ?
کسایی که توی پروژه های تیمی بودن می دونن تقسیم پروژه چه کار سختیه Bit می‌تونه کمک کنه پروژه‌ت رو به کامپوننت‌های مستقل تقسیم کنی، با نسخه‌بندی خودکار و اسم‌گذاری (مثل org/ui.button) دیگه نیازی نیست همه‌چیز رو تو یه رپو نگه داری. فرض کن یکی فقط داره فرم‌ها رو توسعه می‌ده، یکی داره backend رو؛ هرکدوم می‌تونن کامپوننت‌های خودشون رو جدا ببینن و منتشر کنن.

مستندات :

bit.dev/docs/intro

@Linuxor
Forwarded from The Machine
فروش ۲۸ هزار صندلی کنسرت علیرضا قربانی در کمتر از ۱۵ دقیقه!


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

در رابطه با این موضوع دیدم محسن باقری درمورد تجربه تیم فنی و چالش هایی که داشتن گفته.
نوشتن Stress Test، مانیتورینگ و لاگینگ و ...


لینک پست
1