نوشته‌های ترمینالی
2.76K subscribers
425 photos
12 videos
32 files
2.29K links
Download Telegram
مطلب خیلی جالبی بود در مورد اینکه تکنولوژی هایی که تا وقتی استفاده ات ازش پیچیده نیست،و کاربردیه ولی وقتی پیچیدگی زیاد میشه دیگه به جای کمک کردن، مانع میشه.

https://surfingcomplexity.blog/2025/08/16/the-trap-of-tech-thats-great-in-the-small-but-not-in-the-large/

نمونه‌ی خیلی ملموسش برای اکثرمون، spreadsheet ها هستن.
👍4👎1
یه ویژگی جالب (و البته عجیب) که مدت هاست در گولنگ وجود داره ولی من تازه کشفش کردم امکان دانلود toolchainئه. به شکل خاص، از گولنگ ۱.۲۱ گولنگ این امکان رو داره که بر اساس نسخه گولنگی که توی go.mod نوشتین، خودش موقع فراخوانی کامندهای go، بره و toolchain مناسب رو دانلود کنه و یه جا قرار بده و نیاز نباشه شما اصلا درگیر چیزی بشین.
https://kokada.dev/blog/quick-bits-go-automatically-downloads-a-newer-toolchain-if-needed/


نکته خوبش طبیعتا راحتیشه. نکته منفی‌ای که دوستش ندارم اینه که بدون اجازه کاربر می‌ره و یه binary از یه جایی که خودش می‌دونه دانلود میکنه و اجرا می‌کنه.
👍12
در مورد اهمیت متن آگهی استخدامی برای استخدام افراد خفن!

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

https://news.ycombinator.com/item?id=3804134
1👍152🥰2😁1
در مورد رندوم چند تا ویدیو دیدم اخیرا که جالب بود:

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

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

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


ایا با داشتن اطلاعات کامل از لحظه کنونی جهان هستی میشه کامل و دقیق اینده رو پیش‌بینی کرد؟ نگاهی به قانون دوم ترمودینامیک هم میندازه
https://youtu.be/sMb00lz-IfE?si=mSXCblUK4aTSMsX2
1🔥92👍1
یه چیز جالبی بهم معرفی شد الان.

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

لینک:
https://swlt.app/programmers-day
6
https://www.youtube.com/watch?v=DbhYpx70zTY

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

آیا هوش مصنوعی جایگزین ما میشود؟ فعلا فقط جونیور ها
2👍1
شاید با protobuf یا msgpack از قبل آشنا باشید. این استاندارد ها هر کدوم یه فرمت باینری برای serialise deserialize دیتا هستن.
اما تنها آپشن ها نیستند، اگر ارسال کننده و دریافت کننده هردو گولنگی باشن میتونید از encoder decoder مخصوص خود گولنگ استفاده کنید که پرفورمنس بالایی داره و استفاده ازش ساده‌ست. اسمش هم هست gob.

https://go.dev/blog/gob
9👍2🔥1
یه ویژگی جدیدی که به گولنگ اضافه شده و در عین ساده بودن به نظرم کاربردیه و کد رو تمیز و زیبا می‌کنه، متد run روی waitgroupئه. به این شکل که به جای این که به صورت دستی هم go routine جدید بسازید و هم wg رو یکی زیاد کنید و آخر تابع هم doneش کنید، تابعتون رو به متد run جدید می‌دید و خودش این کارا رو انجام میده.

اطلاعات بیشتر و نمونه کد:
https://appliedgo.net/spotlight/go-1.25-waitgroup-go/
1🔥15👍5
این هفته GPT5 توی openrouter انگار تخفیف داره ۵۰ درصد. گفتم بذار برای این یه پروژه کوچک ازش استفاده کنم و واقعا بده. من فکر می‌کردم روی پروژه‌های بزرگ بده ولی این پروژه ۴۰۰ خط هم نیست هنوز و وقتی گفتم یه interface تعریف کن، افتاده تو لوپ داره با خودش کشتی می‌گیره =)))))))
🤣16👍5👎1
چرا protobuf بد است و توسط یکسری جونیور طراحی شده؟!
نگارنده این مطلب خودش توی گوگل کار کرده و نظراتش رو در مورد اشکالات protobuf میگه مخصوصا تایپ سیستمش و این که مشکلاتی رو حل می‌کنه که به جز گوگل در جای دیگر وجود ندارن. حتی به عقیده اون، توی خود گوگل هم می‌شد کارهای بهتری کرد.
https://reasonablypolymorphic.com/blog/protos-are-wrong/
2👍9🤔3
میخواید تو کامیت مسیج هاتون ایموجی بذارید؟

میتونید به این روش عمل کنید :)))
https://gitmoji.dev/
👍7😁3
نوشته‌های ترمینالی
میخواید تو کامیت مسیج هاتون ایموجی بذارید؟ میتونید به این روش عمل کنید :))) https://gitmoji.dev/
توی کامنت های این پست، بحث کامیت مسیج شد،
این سایت فوق‌العاده براتون کامیت مسیج رندوم پیشنهاد میده، می‌تونید حتی اسکریپتی هم بنویسید که مستقیم کامیت کنه و کامیت مسیج رو از این بگیره.

Commit Message Generator
https://whatthecommit.com/

توضیح: چند بار رفرش کنید.
🔥8🤣4
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 توی کانال داریم (کارت‌های قرمز رنگ از بخش تصاویر هم قابل پیدا کردنه)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🔥6😁1
It's FOSS
It's Hacktoberfest time! Here's everything you need to know! 🥇 https://itsfoss.com/hacktoberfest-guide/
دوستان اکتبر شروع شده و باز برنامه هکتوبرفست در جریانه.

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

https://hacktoberfest.com
🔥51
در مورد hookهای git:
گیت امکانات مختلفی داره و یکی از امکاناتش که دستمون رو خیلی باز می‌کنه برای انواع شخصی سازی ها، hook ها هستن. قضیه از این قرارها که توی پوشه .git/hooks میتونید یکسری اسکریپت قابل اجرا بگذارید با اسم های معلوم و خود گیت در زمان های مشخص اونا رو اجرا می‌کنه. معلوم ترینش precommit hook هست که گیت بعد از اومدن دستور کامیت و قبل از این که واقعا کامیت کنه اون اسکریپت رو اجرا می‌کنه. توی اون اسکریپت می‌تونید کد رو فرمت کنید یا تست ها رو اجرا کنید تا مطمین بشین که کامیت های atomic دارید. البته قابل دور زدن هم هست.

فقط دقت کنید که هوک ها جزو چیزاییه که خودتون اونجا می‌گذارید و توی خود گیت ورژن کنترل نمیشه.
1👍196
یه استفاده که من اخیرا از 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
1👍136