TGViewer
Channel Public Channel
نوشته‌های ترمینالی

نوشته‌های ترمینالی

@terminal_stuff

virgool.io/@rsharifnasab
github.com/rsharifnasab
Subscribers
3.51K
Photos
434
Videos
12
Links
2.4K

Showing posts older than #3179 · Back to latest

Older Posts 20 shown
Post #3178 2.36K
اگه به git hook ها علاقه مند شدید، یکسری ابزار ساده هم هست که میتونید استفاده کنید تا کمی کارتون راحت تر باشه. من husky رو پیدا کردم که میاد با کمک core hooks براتون هوک ها رو مدیریت می‌کنه. سبک وزن و بامزه‌ست ولی بدون اون هم کارتون راه میوفته.

https://typicode.github.io/husky/

یکسری امکانات. pre commit hook هم میتونید توی این پروژه پیدا کنید.
https://pre-commit.com/
و گیتهابشون:
https://github.com/pre-commit/pre-commit-hooks
typicode.github.io Husky Git hooks made easy
  • ❤ 8
  • 👍 3
Post #3177 2.67K
برای هر کامیت git خوبه که یه مسیج خوب بنویسیم. معمولا git commit -m می‌زنیم و همونجا توی ترمینال یه مسیج یک خطی مینویسیم. اما اگه بخوایم حرفه‌ای تر عمل کنیم چی؟
یه راهش استفاده از git commit template ئه. اگر از این آپشن استفاده کنیم زمانی که git commit رو بدون -m بزنیم ادیتور باز میشه و اون تمپلیت رو به عنوان متن اولیه ما نشون میده و میتونیم روی اون تغییرات رو اعمال کنیم.

این مطلب هم آموزش فوق‌العاده‌ای برای شروع کار با کامیت مسیج ها بود. من لینک قسمت commit template ش رو گذاشتم براتون، ولی اسکرول کنید و باقی قسمت ها رو هم ببینید.
https://axolo.co/blog/p/git-commit-messages-best-practices-examples#how-to-set-up-a-git-commit-message-template
axolo.co Ultimate Guide to Git Commit Message Templates: Best Practices and Examples | Axolo Blog Dive into the ultimate guide to Git commit message templates. Discover best practices for crafting clear, informative, and consistent commit messages. Explore real-world examples and learn how to improve your Git workflow and collaboration.
  • ❤‍🔥 15
  • ❤ 2
Post #3176 2.24K
یه استفاده که من اخیرا از git hook کردم ابن بود که مطمین بشم کامیت مسیج های یه سری پروژه خاص، یه فرمت خاصی رو رعایت میکنن. برای این کار از هوک commit-msg استفاده کردم. این هوک هم میاد قبل از این که واقعا کامیت صورت بگیره اجرا میشه و کامیت مسیج رو دریافت می‌کنه. در نهایت با کمک exit code میتونید مشخص کنید که کامیت مورد تایید هست یا باید ریجکت بشه.

کدی که من نوشتم:

#!/bin/bash
commit_regex='some regex'
error_msg="Aborting commit."
if ! grep -E "$commit_regex" "$1"; then    echo "$error_msg" >&2
  exit 1
fi
این فایل باید به این اسم سیو بشه: commit-msg توی پوشه hooks اون ریپوزیتوری.


اما حالا برای این که این اسکریپت رو همه جا تکرار نکنم چیکار کردم؟ اومدم از core hooks استفاده کردم. به این شکل میتونم بگم پوشه هوک دیفالت برای همه پروره‌ها یکی باشه و نیاز نیست برم داخل هر پروژه تک تک چک کنم.

کامندی که استفاده کردم اینه:
git config core.hooksPath

و نهایتا کانفیگ گیت اینطوری میشه:
[core]
hooksPath = /path/to/hooks/dir


اما اینجا هنوز یه تیکه گمشده دیگه هست. با این تغییراتی که من دادم این فرمت برای همه‌ی پروژه ها روی سیستمم اعمال شد ولی من اینو نمی‌خوام، بلکه می‌خوام فقط توی پروژه خاصی خاصی اعمال بشه. کاری که میکنم استفاده از conditional config توی گیته. قضیه اینطوریه که یه فایل کانفیگ ثانویه می‌سازم که این کانفیگ توش نوشته شده و توی کانفیگ اصلی میگم includeif: یعنی فقط وقتی این کانفیگ رو اعمال کن که پوشه گیت من داخل یکی از این پوشه ها بود یا داخل مسیری بود که این پترن رو داشت.

منابع:
https://git-scm.com/docs/githooks
و
https://dev.to/chaz8080/git-smart-streamlining-your-workflow-with-the-prepare-commit-msg-hook-432p
و
https://medium.com/@mrjink/using-includeif-to-manage-your-git-identities-bcc99447b04b


و اگه خواستید دقیقش رو توی dotfile م ببینید:

https://github.com/rsharifnasab/dotfiles/blob/2b3ba235c300e8a5dbec53a7a84dde350ca372af/configs/.config/git/config#L51
و
https://github.com/rsharifnasab/dotfiles/blob/37f0812046ef9eceb7c3e18ff0e9fb6b30843828/configs/.config/git/snapp#L9
DEV Community Git Smart: Streamlining Your Workflow with the prepare-commit-msg Hook Overview If you want to learn how to improve and automate your commit messages, you're in...
  • 👍 13
  • ❤ 6
  • 👏 1
Post #3175 2.12K
در مورد hookهای git:
گیت امکانات مختلفی داره و یکی از امکاناتش که دستمون رو خیلی باز می‌کنه برای انواع شخصی سازی ها، hook ها هستن. قضیه از این قرارها که توی پوشه .git/hooks میتونید یکسری اسکریپت قابل اجرا بگذارید با اسم های معلوم و خود گیت در زمان های مشخص اونا رو اجرا می‌کنه. معلوم ترینش precommit hook هست که گیت بعد از اومدن دستور کامیت و قبل از این که واقعا کامیت کنه اون اسکریپت رو اجرا می‌کنه. توی اون اسکریپت می‌تونید کد رو فرمت کنید یا تست ها رو اجرا کنید تا مطمین بشین که کامیت های atomic دارید. البته قابل دور زدن هم هست.

فقط دقت کنید که هوک ها جزو چیزاییه که خودتون اونجا می‌گذارید و توی خود گیت ورژن کنترل نمیشه.
  • 👍 19
  • ❤ 6
Post #3174 2.87K
It's FOSS It's Hacktoberfest time! Here's everything you need to know! 🥇 https://itsfoss.com/hacktoberfest-guide/
دوستان اکتبر شروع شده و باز برنامه هکتوبرفست در جریانه.

قضیه از این قراره که اگه توی ماه اکتبر ۶ تا مرج ریکویست ارسال کنید که مرج بشه، بج هکتوبرفست می‌گیرید. قبلا تیشرت هم می‌دادن البته ولی با توجه به سواستفاده ها دیگه انگار خبری نیست. :)

https://hacktoberfest.com
Hacktoberfest Hacktoberfest 2026 | AI belongs to everyone 300+ in-person Fests plus a global online event, all about building with open-source AI. Join a Fest near you this October.
  • 🔥 5
  • ❤ 1
Post #3172 2.07K

Forwarded from tech-afternoon (Amin Mesbahi)

🔥 🐘 انتشار PostgreSQL 18، و اهمیت تغییراتش!

طبق روال سال‌های گذشته حوالی سپتامبر ریلیز نسخه جدید PostgreSQL انجام شد. حالا چرا این نسخه برای برخی سیستم‌ها می‌تونه قابل توجه و مهم باشه؟

- تغییرات انقلابی در I/O (Asyn I/O):
بالاخره! این قابلیت اومد و سرعت عملیات Read رو «تا» ۳ برابر افزایش می‌ده! معطلی‌های CPU برای I/O خیلی کمتر می‌شه و برای کارهای مثل VACUUM و اسکن‌های بزرگ، تاثیرش چشمگیره (من روی نسخه‌های پیش‌نمایش تست کردم و عالی بود).

- پشتیبانی از UUIDv7:
برای توسعه‌دهنده‌ها این شاید خیلی مهم باشه! (اگر دوست دارید در مورد انواع UUIDها بیشتر توضیح بدم: 🤪)
پشتیبانی Native از UUIDv7 یعنی Primary Key‌ها به صورت گلوبال یونیک میشن و هم چون بر اساس زمان مرتب هستن، عملکرد ایندکس B-tree به شکل چشمگیری بهتر میشه. (یعنی Page Split بی مورد نداریم!)

- قابلیت Virtual Generated Columns:
حالا ستون‌های محاسباتی به‌صورت پیش‌فرض مجازی هستن، یعنی فقط موقع خوانش محاسبه میشن و فضای دیسک رو اشغال نمی‌کنن. (البته اگه لازم باشه، می‌تونید همچنان STORED هم تعریف کنین).

افزودن NOT NULL بدون Downtime: کابوس اضافه کردن NOT NULL به جدول‌های بزرگ تموم شد! حالا می‌شه قید NOT NULL رو به‌صورت NOT VALID اضافه کنیم و بلافاصله برای ردیف‌های جدید اعمال بشه. اعتبارسنجی ردیف‌های موجود رو هم می‌تونیم بعداً بدون قفل کامل جدول انجام بدیم.

- امکان Skip Scan برای B-tree:
یه بهبود عالی برای بهینه‌سازی کوئری؛ اگه توی ایندکس‌های چند ستونی، ستون اول رو در WHERE فیلتر نکرده باشیم، باز هم ایندکس کار می‌کنه و کوئری‌های تحلیلی/گزارش‌گیری خیلی سریع‌تر میشن.

- امکان RETURNING هوشمند:
حالا میشه توی یک دستور UPDATE یا DELETE به هر دو مقدار قدیمی (OLD) و جدید (NEW) یک ستون در بخش RETURNING دسترسی داشته باشیم.

- آپگرید آسون‌تر:
قابلیت حفظ Planner Statistics حین آپگرید با pg_upgrade باعث میشه دیتابیس جدید خیلی سریع‌تر به پرفورمنس دلخواه برگرده.

اگر جزو افرادی هستین که به مهاجرت به PostgreSQL فکر می‌کنید، یه تعداد کارت‌های شسته‌رُفته برای مهاجرت از SQL Server به PostgreSQL با هشتگ #MSSQL_to_PGSQL توی کانال داریم (کارت‌های قرمز رنگ از بخش تصاویر هم قابل پیدا کردنه)
  • 👍 20
  • 🔥 6
  • 😁 1
Post #3171 2.1K
نوشته‌های ترمینالی مثل این که کمتر از یک ماه دیگه، Bitnami قراره بلاهایی سر تیم ها و دولوپرها بیاره. ماجرا از این قراره که از ۲۸ آگوست به بعد فقط به آخرین تگ هر چارت میتونیم دسترسی داشته باشیم (latest) و نسخه های استیبل و مشخص فقط از طریق برنامه جدیدشون که پولیه میشه استفاده…
بعد از یک ماه تمدید، نهایتا قراره فردا ایمج ها از دسترس خارج بشن :)

خسته نباشید به مهندسایی که دارن شب اخری، بدو بدو تگ ایمج ها رو عوض می‌کنن.
  • 😁 12
  • ❤ 1
Post #3170 2.71K
نوشته‌های ترمینالی میخواید تو کامیت مسیج هاتون ایموجی بذارید؟ میتونید به این روش عمل کنید :))) https://gitmoji.dev/
توی کامنت های این پست، بحث کامیت مسیج شد،
این سایت فوق‌العاده براتون کامیت مسیج رندوم پیشنهاد میده، می‌تونید حتی اسکریپتی هم بنویسید که مستقیم کامیت کنه و کامیت مسیج رو از این بگیره.

Commit Message Generator
https://whatthecommit.com/

توضیح: چند بار رفرش کنید.
Whatthecommit Commit Message Generator better ignores
  • 🔥 8
  • 🤣 4
Post #3168 3.86K
چرا protobuf بد است و توسط یکسری جونیور طراحی شده؟!
نگارنده این مطلب خودش توی گوگل کار کرده و نظراتش رو در مورد اشکالات protobuf میگه مخصوصا تایپ سیستمش و این که مشکلاتی رو حل می‌کنه که به جز گوگل در جای دیگر وجود ندارن. حتی به عقیده اون، توی خود گوگل هم می‌شد کارهای بهتری کرد.
https://reasonablypolymorphic.com/blog/protos-are-wrong/
  • 👍 9
  • 🤔 3
Post #3167 3.21K
این هفته GPT5 توی openrouter انگار تخفیف داره ۵۰ درصد. گفتم بذار برای این یه پروژه کوچک ازش استفاده کنم و واقعا بده. من فکر می‌کردم روی پروژه‌های بزرگ بده ولی این پروژه ۴۰۰ خط هم نیست هنوز و وقتی گفتم یه interface تعریف کن، افتاده تو لوپ داره با خودش کشتی می‌گیره =)))))))
  • 🤣 16
  • 👍 5
  • 👎 1
Post #3166 3.28K
یه ویژگی جدیدی که به گولنگ اضافه شده و در عین ساده بودن به نظرم کاربردیه و کد رو تمیز و زیبا می‌کنه، متد run روی waitgroupئه. به این شکل که به جای این که به صورت دستی هم go routine جدید بسازید و هم wg رو یکی زیاد کنید و آخر تابع هم doneش کنید، تابعتون رو به متد run جدید می‌دید و خودش این کارا رو انجام میده.

اطلاعات بیشتر و نمونه کد:
https://appliedgo.net/spotlight/go-1.25-waitgroup-go/
Applied Go New in Go 1.25: WaitGroup.Go() WaitGroups are a means of synchronizing goroutines; yet the Add()/defer Done() idiom feels clumsy and is error-prone. A new method, Go(), puts an end to goroutine counting.
  • 🔥 15
  • 👍 5
Post #3165 2.69K
شاید با protobuf یا msgpack از قبل آشنا باشید. این استاندارد ها هر کدوم یه فرمت باینری برای serialise deserialize دیتا هستن.
اما تنها آپشن ها نیستند، اگر ارسال کننده و دریافت کننده هردو گولنگی باشن میتونید از encoder decoder مخصوص خود گولنگ استفاده کنید که پرفورمنس بالایی داره و استفاده ازش ساده‌ست. اسمش هم هست gob.

https://go.dev/blog/gob
go.dev Gobs of data - The Go Programming Language Introducing gob, a high-speed Go-to-Go wire encoding format.
  • ❤ 9
  • 👍 2
  • 🔥 1
Post #3164 2.88K
https://www.youtube.com/watch?v=DbhYpx70zTY

ویدیو جالبی بود در مورد سطح های متفاوت کاربرد LLM برای برنامه نویس های جونیور تا سنیور

آیا هوش مصنوعی جایگزین ما میشود؟ فعلا فقط جونیور ها
YouTube The More Senior You Get, The Worse LLMs Become? To try everything Brilliant has to offer—free—for a full 30 days, visit https://brilliant.org/TravisMedia/ . You’ll also get 20% off an annual premium subscription. Today we're going to look at an article that made me rethink how I view the impact of LLMs…
  • ❤ 2
  • 👍 1
Post #3163 2.86K
یه چیز جالبی بهم معرفی شد الان.

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

لینک:
https://swlt.app/programmers-day
  • ❤ 6
Post #3162 2.16K
  • ❤ 22
  • 🔥 2
Post #3161 2.61K
در مورد رندوم چند تا ویدیو دیدم اخیرا که جالب بود:

چرا ما در تولید عدد تصادفی بد هستیم:

https://youtu.be/tP-Ipsat90c?si=H87JgbY1bzpuj0Qc

چرا به نظر ما ۳۷ عدد خیلی رندومیه؟
https://youtu.be/d6iQrh2TK98?si=qWlxnQu-0QlweQCP


ایا با داشتن اطلاعات کامل از لحظه کنونی جهان هستی میشه کامل و دقیق اینده رو پیش‌بینی کرد؟ نگاهی به قانون دوم ترمودینامیک هم میندازه
https://youtu.be/sMb00lz-IfE?si=mSXCblUK4aTSMsX2
YouTube Randomness is Random - Numberphile Featuring Simon Pampena... Check out Brilliant (and get 20% off their premium service): https://brilliant.org/numberphile (sponsor) More links & stuff in full description below ↓↓↓ More coin-related videos: http://bit.ly/coins_videos More videos with Simon…
  • 🔥 9
  • ❤ 2
  • 👍 1
Post #3160 2.04K
Woland's Linux Journal 💠دیواری از لامپ لاوا در کلادفلر💡 این دیوار در یکی از اتاق‌های ساختمان اصلی کلادفلر در سان فرانسیسکو نصب شده است. کلادفلر برای رمزگذاری اینترنت از این لامپ‌ها برای ایجاد شماره‌های رندوم و انتروپی استفاده می‌کند. دوربین‌هایی به سمت این دیوار نصب شده‌اند که…
بازنشر:
  • 🔥 5
Post #3159 2.57K
در مورد اهمیت متن آگهی استخدامی برای استخدام افراد خفن!

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

https://news.ycombinator.com/item?id=3804134
  • 👍 16
  • ❤ 2
  • 🥰 2
  • 😁 1
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →