نوشته‌های ترمینالی
2.62K subscribers
424 photos
12 videos
32 files
2.25K links
Download Telegram
نینجا چیه؟ یه بک‌اند برای ابزارهای بیلد دیگر. جایگاش مثل makefileئه.
اگه makefile/ninja/cmake/meson براتون گیج کننده‌س و قاطی می‌کنید و یا کلا اگه دوست دارید در مورد روند بیلد بیشتر بدونید این مطلب رو خیلی پیشنهاد می‌کنم.
https://vector-of-bool.github.io/2018/12/20/build-like-ninja-1.html
👍1
Forwarded from دِرَنـــگ (Keivan Aghababaei Samani)
🔷 استبداد سنجه‌ها

اول دبیرستان که بودم در کتاب فیزیک‌مان می‌خواندیم: می‌توان با اطمینان گفت اگر ما نتوانیم شیئی را اندازه بگیریم، دربارهٔ آن چیز معنی‌داری نمی‌دانیم.

کمی اغراق‌آمیز است ولی به‌هرحال روشن است که اندازه‌گیری و سنجش عددی نقش مهمی در علم و فناوری و همین‌طور در زندگی روزمره دارد. اندازه‌گیری ابزاری برای شناخت و ارزیابی است و در طراحی، برنامه‌ریزی ومدیریت هم به‌کار می‌آید. مثل هر ابزار دیگری، از اندازه‌گیری هم می‌توان استفادهٔ نابه‌جا کرد. مسأله‌ این است که گاهی این استفادهٔ نا‌به‌جا چنان گسترده و فراگیر می‌شود که حتی شک کردن به آن هم نابخشودنی است، چه رسد به نقد آن.

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

کتاب «استبداد سنجه‌ها» به همین موضوع می‌پردازد: استفادهٔ افراطی و نابه‌جا از سنجه‌ها و در واقع گرفتار شدن در بند آن‌ها. کتاب ازچهار بخش تشکیل شده است.  بخش اول کتاب به طرح بحث می‌پردازد و ویژگی‌های استفاده‌ٔ نادرست از سنجه‌ها و معیارهای عددی را برمی‌شمرد:
▪️باور به این که می‌توان و باید قضاوت انسانی را با نشان‌گرهای عددی که از داده‌های استاندارد به‌دست می‌آیند (سنجه‌ها) جایگزین کرد.
▪️باور به این که انتشار این داده‌ها (شفافیت) همیشه موجب پیش‌رفت نهادها می‌شود.
▪️باور به این که بهترین راه برای ایجاد انگیزه در سازمان‌ها یا محیط‌های کار تشویق و تنبیه افراد بر اساس معیارهای کمّی است. تشویقی که یا از نوع پول است یا از نوع رتبه.

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

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

بخش چهارم، شامل نتیجه‌گیری و خلاصه‌ای از نتایج نامطلوب استفاده‌ از سنجه‌ها است. در این بخش، نویسنده فهرستی ارائه کرده است از نکاتی که برای پیش‌گیری از عوارض ناخواستهٔ معیارهای عددی باید در نظر گرفت.

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

سنجه‌ها فقط ابزاری برای ارزیابی و به‌دست آوردن اطلاعات از سامانه‌ٔ مورد مطالعه نیستند؛ روی عملکرد سامانه هم تأثیر می‌گذارند: اگر شما سنجه‌ها را برای تشویق یا تنبیه به کار ببرید، افراد به‌سرعت یاد می‌گیرند که خود را با آن‌ها تطبیق دهند. مثلاً استاد دانشگاهی که نگران ارتقا یا ترفیع یا تبدیل وضعیت‌اش است، و همه‌ٔ این‌ها با معیارهایی مانند تعداد مقاله‌ها یا ارجاعات یا نمرهٔ ارزشیابی تعیین می‌شوند، مجبور است به اهداف کوتاه مدت برای کسب امتیازهای لازم روی بیاورد. به‌همین دلیل استفاده از سنجه‌های عددی برای تشویق یا تنبیه، در این کتاب به‌شدت نکوهش شده است.  

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

باشد تا به‌جای شمردن تعداد برگ‌های درختان و اندازه‌گیری قطر و بلندی آن‌ها کمی هم به درخت به‌عنوان «درخت» نگاه کنیم‌؛ درک مفهوم جنگل پیش‌کش.

@k1samani_channel
1👍1
در مورد اینکه TLS/SSL چطوری کار می‌کنه و بحث امنیت و certificate authority چیه، این ویدیو مختصر توضیح داده و به نطرم می‌تونه خیلی مفید باشه:

https://m.youtube.com/watch?v=T4Df5_cojAs


اگه دوست داشتید بیشتر بدونید (که من توصیه می‌کنم بدونید چون هم جذابه هم لازمه برای توسعه وب) این پلی لیست هم جالبه:
https://m.youtube.com/playlist?list=PLIFyRwBY_4bTwRX__Zn4-letrtpSj1mzY

البته کورس کامله که یکسری از ویدیوهاش در دسترس هست، اما همینا هم به نظرم خوب و کافیه.
2👍2
اگر یک مصورسازی خیلی زیبا از الگوریتم‌های لود بالانسینگ می‌خواین، این یک مطلب زیبا و با عمق مناسبه.
https://samwho.dev/load-balancing/
👍61👌1
اگه از گیت زیاد استفاده می‌کنید، شاید بد نباشه یکم که یاد گرفتین، از UI هم استفاده کنید. حالا GUIهای خوبی هست که خودتون می‌تونید پیدا کنید، اما یکسری UI برای گیت هست که توی ترمینال می‌تونید استفاده کنید.
سه تا معروفی که من باهاشون کار کردم و تقریبا هر سه رو دوست داشتم lazy git و gitui و tig هستن.


من از همه بیشتر تا اینجا lazy git رو دوست داشتم، رابط کاربری مرتبی داره و هرچی نیاز دارید همینجا هست، می‌تونید stage و کامیت و پوش کنید و خیلی راحت و دم دست diffها رو هم بهتون نشون می‌ده.
با stash و log و branch هم خیلی دوسته و با ? هم راحت بهتون help رو نشون میده.
این دو تا ویدیو هم از سازندگانشه.
آشنایی اولیه با lazygit
https://youtu.be/VDXvbHZYeKY
۱۵ قابلیت lazygit در ۱۵ دقیقه
https://www.youtube.com/watch?v=CPLdltN7wgE


برنامه‌ی دیگه gitui ئه که در نگاه اول خیلی شبیه lazygit ئه، فقط این برنامه با rust نوشته شده (قبلی با گو بود) و ادعا می‌کنه سریع‌تره. فرق دیگه‌ای که داره اینه که امکانات مختلفش توی tabهای مختلف برنامه‌س که می‌تونید راحت جا به جا بشید و صفحه‌ی اول برنامه شلوغ نمی‌شه.
من به نظرم فرق خیلی خاصی با قبلی نداشت و می‌تونید از هردو استفاده کنید.

برنامه‌ی سوم tigئه، اینطوری که من متوجه شدم ذاتش با اون دو تای دیگه فرق داره و سعی می‌کنه git بهتری باشه. خود دستورات گیت رو می‌تونید بزنید داخلش و براتون با ui خودش انجام می‌ده، به بیان دیگه هنوز با commandها سر و کار دارید ولی نتیجه رو توی tig می‌بینید. حتی می‌تونید خود گیت رو اجرا کنید و خروجیش رو توی tig بریزید!

دستورهای نصبشون رو می‌تونید اینجا بخونید:
https://jdhao.github.io/2021/09/11/git_tui_clients_hands_on/
البته تو مخازن نرم‌افزاری هم هر سه تاشون احتمالا هستن و کانفیگ خاصی هم نیاز ندارن.
👍51
نوشته‌های ترمینالی
https://virgool.io/@saeed.shahrivari/%D9%85%D9%81%D8%A7%D9%87%DB%8C%D9%85-%D9%BE%D8%A7%DB%8C%D9%87-%D8%A7%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%D9%85%D9%87%D9%86%D8%AF%D8%B3%DB%8C-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-rnp5de6pgxhx
سوالی که خیلی از من میپرسن دوستان و آشنایان، اینه که تو کارشناسی مهندسی کامپیوتر چیکار میکنیم و چی یاد میگیریم؟
جواب من اینه که یکسری اصول و پایه ها رو یاد میگیریم که کارهای صنعتی بهش نیاز داره.
حالا مهم ترین اون اصول تو یکسری از درس ها ارائه میشه در این حدود: (به نظر من)
مبانی برنامه نویسی
برنامه نویسی پیشرفته
ساختمان داده
الگوریتم
مهندسی نرم افزار
سیستم عامل
شبکه
مهندسی اینترنت
پایگاه داده
معماری کامپیوتر
ریزپردازنده و اسمبلی (تا حدی!)

این مطلب بالا رو میتونید این شکلی نگاه کنید بهش که برای این درس ها منبع معرفی کرده و گفته اگر هر کدوم رو یاد بگیریم، چه سوالاتی رو میتونیم جواب بدیم.
👍5
یکسری راهنمایی‌ها برای رزومه‌ی کاری از زبان جادی
https://linuxbook.ir/chapters/resume.html
👍3👎1
در مورد performance و لاگ تو این چنل کمتر حرف زدیم، اما به این معنی نیست که اهمیت ندارن.
یه اتفاقی که توی دنیای آکادمیک میفته اینه که اردر الگوریتم رو محاسبه می‌کنیم و تموم ولی همیشه/اکثر اوقات کافی نیست، ما در دنیای واقعی دنبال گلوگاه یه سیستم بزرگ هستیم و میخوایم روی اون کار کنیم.
اگه دوست داشتید یه آموزش کوتاه برای راهکارهای اندازه گیری پرفورمنس قسمت های مختلف برنامه داشته ببینید، این آموزش با open telemetry و honey comb کار می‌کنه و بعد هم مموری مصرفی رو اندازه گیری می‌کنه.

https://pythonspeed.com/articles/slow-data-analysis-tasks/
👍5
Forwarded from Semicolon (Ali)
سایت iToolKit.ir با هدف ایجاد یک سری ابزار مفید برای برنامه نویسان طراحی کردم 🎉
این سایت بعد از اولین بارگذاری بدون اینترنت هم در دسترس میباشد 😎

امکان نصب بصورت PWA هم وجود داره تا نیاز به جستجو سایت نداشته باشید 😉

پروژه متن باز هستش و میتونید باگ یا نیازمندی های خودتونو در قسمت Issue ثبت کنید

https://github.com/AkbarAsghari/IToolKit

قابلیت های این ورژن

Encoders / Decoders
HTML
URL
Base64 Text
Base32 Text
Unicode
JWT Decoder
Ciphers
AES
Formatters
JSON
XML
Generators
Hash (MD5, SHA1, SHA256, SHA384, SHA512)
UUID 1 and 4
Password
Text
Escape / Unescape
Inspector & Case Converter
Regex Tester
Graphic
Color Picker
4👍2🔥1
شاید شما هم مثل من پوشه‌ی تنظیمات editorتون رو به gitignore همه‌ی پروژه‌هاتون اضافه می‌کنید، اما اگر پروژه، پروژه‌ی ما نیست چی؟ به تمام پروژه‌‌هایی که contributor شون هستیم چی؟ یا مثلا فایل .DS_Store مک رو در نظر بگیرید، چون یک نفر مک داره باید این به gitignore پروژه اضافه بشه؟
راه حل بهترش استفاده از global gitignoreئه، یه فایل گیت ایگنور که برای سیستم شما روی همه چی اعمال میشه نه فقط یه ریپوزیتوری.
در موردش اینجا بخونید:
https://sebastiandedeyne.com/setting-up-a-global-gitignore-file/
👍8
برای حرفه‌ای شدن تو برنامه‌نویسی و توسعه‌ی نرم‌افزار، فقط یاد گرفتن زبون و فریمورک کافی نیست. یه سری تجربه هم لازمه، ولی لزوما سال سابقه کار هم باعث نمیشه اون تجربه‌ها رو به دست بیاریم، برای همین نیاز داریم که از بقیه هم یاد بگیریم، زیر دست آدمای توانمند کار کنیم، کتاب و وبلاگ بخونیم و ...

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

توصیه دومم اینه که کتاب‌هایی که به نوعی تجارب آدمای با تجربه رو منتقل می‌کنن رو خیلی جدی بگیرید. مثلا کتاب clean coder (کدنویس تمیز) رو من از این دسته می‌دونم و دوست دارم. (هرچند با خود نویسنده زاویه‌هایی دارم حالا ولی مهم نیست.)
یک کتاب دیگه هم که هرچی ازش می‌خونم بیشتر خوشم میاد کتابچه‌ی ۹۷ چیزیه که هر برنامه‌نویس باید بدونه.
خوشبختانه ترجمه فارسی هم داره ولی من اینجا لینک انگلیسیش رو می‌ذارم.

https://97-things-every-x-should-know.gitbook.io/97-things-every-programmer-should-know/en/summary

این لینک فهرست مطالشه که ۹۷ تا توصیه کرده و رو هر کدوم بزنید توضیحاتش هست و البته من توصیه میکنم به ترتیب شروع کنید بخونید.
8👍3