TECH STASH – Telegram
TECH STASH
212 subscribers
115 photos
5 videos
15 files
254 links
اینجا هر چی رو که یاد میگیرم، به اشتراک میزارم...
هوش مصنوعی، لینوکس، اوپن سورس، برنامه نویسی و...

Admin: @D3F4U1T_ARS
Download Telegram
SQLite quirks (WTF Sqlite)

تو این پست راجب یکسری رفتار های عجیب و بعضا پرسش انگیز SQLite توضیح میدم.
از قبیل این رفتار ها میشه به چند مورد اشاره کرد.

1. No ALTER TABLE MODIFY COLUMN support

تغییر تایپ یک ستون داخل SQLite میسر نیست برعکس PostgreSQL و MySQL. چرا اینطوریه؟ چون SQLite میاد schema اش رو داخل یه فایل متنی ذخیره میکنه و نه یه جدول یا ساختمان داده ساختار یافته. سر همین پیاده سازی این قابلیت رو دشوار میکنه.

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

2. PRAGMA foreign_keys = ON;

قید کلید خارجی تو SQLite به صورت پیش فرض چک نمیشه. دلیلش هم به خاطر اینه که SQLite قبل از نسخه 3.6.19 قابلیت چک کردن قید کلید خارجی رو نداشت. و نسخه های بعد اضافه شد.

با این وجود با میتونید با دستور بالا فعالش کنید.
ولی حواستون باشه که باید دستور بالا رو به ازای هر نشست session ای به دیتابیس بزنید.
این قید ها شامل ON DELETE و ON UPDATE هم میشه.
نکات بیشتر راجب رفتار کلید های خارجی تو این لینک هست.

3. .mode box

خروجی SQLite وقتی از ابزار خط فرمانیش استفاده میکنید خیلی شلخته هست. انگار دارید فایل csv میخونید. با این تفاوت که جاش | وجود داره. ولی وقتی mode رو به box تغییر بدید میاد و به صورت جدولی و منظم مینویسه.

و تعداد خیلی بیشتری که میتونید اینجا ببینید.
خلاصه اگر با SQLite کار میکنید. حتما راجب تفاوت هاش اطلاعات کسب کنید وگرنه دردسر سازه.
ORM or Raw SQL (part 1)


یکی از سوالاتی که پیش میاد اینه که آیا بهتره اول SQL یاد بگیریم یا ORM.
جواب من به این پرسش اینه که باید حتما حتما SQL یاد بگیرید.

چرا؟

1. وقتی که از ORM استفاده میکنید. پشت صحنه هم داره SQL query ساخته میشه و اگر توانایی آنالیز و بررسی کوئری رو نداشته باشید قطعا با مشکل برمیخورید. بهینه سازی کوئری ها حتما نیازمند دانش SQL هست.

2. کار کردن با ORM بدون دانش SQL مثل کار کردن با جعبه سیاه هست. شما نمیدونید که چطور کار میکنه سر همین استفاده شما محدود به ابزار ORM هست. جدا از اینکه هر دیتابیسی یه سری قابلیت های منحصر به فردی داره که دسترسیش تنها با یادگیری SQL میسر هست.


معمولا دوستانی که فقط با ORM کار کردن کمتر راجب قابلیت های پیشرفته دیتابیس ها، مثل
Trigger, View, Stored Procedure, User-Defined Function, Common Table Expression
و ... میدونن.


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


پس لطفا اول SQL یاد بگیرید و بعدش از ORM استفاده کنید.
بک اند رو با فیل حمل کن:

چرا PostgreSQL فقط دیتابیس نیست

اگر با دیتابیس ها کار کردید راجب PostgreSQL شنیدید. دیتابیس خیلی محبوبی که رتبه 1 دیتابیس ها تو نظرسنجی stackoverflow برای سال های متمادی بوده. جزو دیتابیسهایی بوده که وقتی باهاش کار کردم فهمیدم که چرا اینقدر پرقدرت هست.

همش هم برمیگرده به امکاناتی که در طول سال ها اضافه کرده. که میشه به موارد زیر اشاره کرد:


1. شی گرایی رابطه ای (Object Relational) بودنش امکاناتی مثل ارث بری از جداول، دیتا تایپ های تعریف شده و کلی قابلیت های توسعه پذیری رو اضافه کرده.

2. ساپورت native از JSON و list ها درون ستون.
ستون ها نه تنها میتونن لیستی از آبجکت ذخیره کنن. بلکه میتونن JSON هم ذخیره کنن و قابلیت query برای چنین اطلاعاتی وجود داره. از اونجایی که از JSONB استفاده میشه query ها JSON خیلی سریع هستن.

3. میتونید توابعی بسازید که از پردازش اطلاعات جداول رو با زبان های مختلف انجام بدن که واقعا معرکه هست. این قابلیت همه چیزو عوض میکنه. مثلا میتونید از pandas داخل دیتابیس استفاده کنید.
پشتیبانی از زبان های مختلفی وجود داره که اینجا میتونید ببینید.

4. با extension حتی فراتر از یه دیتابیس پیشرفته میره و تبدیل به کل استک backend اتون میشه.

pgmq (Message queue)
pg_cron + hstore (redis)
postgREST (REST API)
pg_graphql (GraphQL API)
NOTIFY + LISTEN = (Pub/Sub architecture)
Apache AGE (Graph Database)
TimescaleDB (Time Series Database)
Full-Text Search (Elastic Search)
pgml (LLM and Chatbots)
omnigres (Everything else)
pgvector (Vector similarity search)

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

و خب حالا خلاصه بگم که چه چیزایی تغییر کرده.
در حال حاضر روی توزیع Arch Linux هستم و ویندوز 11 هم dualboot کردم برای کار های ویندوزی.
گرچه ترجیح میدم تو آینده یه ماشین مجازی ویندوز 11 روی لینوکس بسازم و workflow ام رو روش پیاده کنم.

یه سری محتوا هایی راجب اینکه چطوری روی ویندوز 11 workflow ام رو تنظیم کردم واستون میفرستم.
میتونه حاوی نکات جدیدی باشه که خبر نداشته باشید.

خودم نه طرفدار ویندوز هستم و نه تعصب روی لینوکس دارم.
فکر میکنم اگر محتوا هام مقداری زندگی روی ویندوز رو قابل تحمل کنه به هدفم رسیدم.
2🔥1
یه سری نکات راجب نصب ویندوز:

1. بهترین منبع واسه دانلود ویندوز یا آفیس از سایت خودشون هست یا از massgrave که کرک open-source رو برای ویندوز و آفیس عرضه میکنه. برای تاییدش هم میتونید از روش هایی که داخل سایتش ذکر شده استفاده کنید. این وبسایت ها هیچ ارتباطی با massgrave ندارن سر همین میتونید مطمئن باشید.

2. یکی از دنگ و فنگ های نصب نیاز به لاگین کردن به اکانت مایکروسافت هست که میتونید به روشی دورش بزنید. نمیدونم تا کی این روش های دور زدن میمونه یا سخت تر میشه. ولی این سیاست مایکروسافت به شدت افتضاح هست.
3🔥1
یه سری نکات بعد از نصب ویندوز:

1. ویندوز رو کامل آپدیت کنید. درایور هارو اجازه بدید خودش نصب کنه تا خودتون دانلود کنید. در صورتی که درایور ویندوز مشکل داره یا وجود نداره خودتون دانلود و نصب کنید. دیگه 10 سال پیش نیست که بخواید درایور دانلود کنید.

تو لینوکس همه چیز از قبل آمادست. اگر هم نبود میتونید با مدیریت بسته نصبش کنید.

2. نرم افزار های خودتون رو از MS Store, winget یا scoop نصب کنید. هر نرم افزار رایگان و اوپن سورسی که بخوام تو اینجا هست. بعضی وقتا نسخه MS Store مشکلاتی ممکنه داشته باشه که اون موقع نسخه winget اش رو میتونید نصب کنید.

خود MS Store اپ استور مایکروسافت هست. winget و scoop برنامه های مدیریت بسته تحت خط فرمان ان که خیلی خوبن و ازشون استفاده میکنم. choco هم خوبه ولی دو تای اولی رو بیشتر ترجیح میدم.

روش مدیریت نرم افزار من داخل ویندوز مثل لینوکس هست. چون لینوکس خوب کارو انجام داده. آپدیت میشه و سهولت زیادی داره و میشه اتوماسیونش کرد.

3. ویندوز اجازه نمیده آپدیت اتوماتیک رو غیر فعال کنید. کلی هم امکانات جاسوسی هست که مایکروسافت به صورت پیش فرض فعال کرده که میتونید غیر فعال کنید. برای همه اینا میتونید از winutil استفاده کنید.

جدا از اون خود winutil دسترسی به تنظیمات و فیچر های خوبی میده که میتونید فعال یا غیر فعال کنید. مثل تنظیم کردن تایم سیستم به UTC که وقتی ویندوز رو با لینوکس dualboot میکنید تایم سیستمتون به هم نخوره.

4. یکی از نرم افزار های خوبی که من واقعا عاشقش شدم UniGetUI هست که یه interface برای پکیج منیجر های زیادی هست. تو همه سیستم ها اینو نصب خواهم داشت و تو آپدیت نگه داشتن برنامه ها خیلی کمک میکنه.

5. میدونستید که KDE داخل ویندوز هم برنامه هاشو عرضه کرده. یه سری برنامه هاش تو MS Store هست.
من خودم به شخصه از KDE Connect, Okular, Filelight و Kate استفاده میکنم.

- از KDE Connect برای اشتراک clipboard. البته که مقداری داخل ویندوز محدود تره نسبت به لینوکس.
- از Okular به عنوان PDF Reader که خیلی خوبه.
- از Filelight به عنوان برنامه مدیریت فضا دیسک. جایگزین خوبی برای WinDirStat هست.
- از Kate هم برای قابلیت RTL فارسیش برای آماده کردن همین متن استفاده میکنم.

خلاصه KDE و اکوسیستمش برنامه های فوق العاده ای روی لینوکس داره. این تازه بخش کوچکی از برنامه هاش هست.
3🔥1
TECH STASH
یه سری نکات راجب نصب ویندوز: 1. بهترین منبع واسه دانلود ویندوز یا آفیس از سایت خودشون هست یا از massgrave که کرک open-source رو برای ویندوز و آفیس عرضه میکنه. برای تاییدش هم میتونید از روش هایی که داخل سایتش ذکر شده استفاده کنید. این وبسایت ها هیچ ارتباطی…
نسخه های Enterprise یا یه سری نسخه هایی عجیبی که مایکروسافت واسه مشتری های خاصی قرار داده تو وبسایتش رایگان و برای عموم قابل دسترس نیست.

ولی massgrave آپدیت شدش رو در دسترس عموم گذاشته که میتونید صحت سنجی کنید.
1🔥1
Merry christmas.
و در ادامه خواستم توضیح بدم که.

برای مدت طولانی نتونستم محتوایی در این کانال آپلود کنم به دو دلیل:

1. سنگینی کردن وظایف شخصی بنده در این مدت
2. دوری از عادت پست گذاشتن (و همینطور یادگیری تو زمینه ای که پست میزارم)

میدونم که قراره برگردم به پست گذاشتن و فکر میکنم در یک ماه آینده اتفاق میفته.
ممنونم از دوستانی که تا اینجا با ما همراه بودن.
با قدرت برمیگردیم.

#موقت
#صحبت_با_شما
👍5🔥31