HICTE Blog – Telegram
HICTE Blog
1.18K subscribers
383 photos
127 videos
8 files
618 links
گروهمون: @HicteGroup

دسته بندی پست‌ها: t.me/HicteBlog/743
Download Telegram
#کتاب

Software Architecture: The Hard Parts


Author: Neal Ford and Mark Richards and Pramod Sadalage and Zhamak Dehghani
Edition: 1st
Date: November 2021
Publisher: O'Reilly Media
Length: 459 pages


Amazon 👀
Download 😉

🚁 Hicte Blog
👍4🔥1
HICTE Blog
#کتاب Software Architecture: The Hard Parts Author: Neal Ford and Mark Richards and Pramod Sadalage and Zhamak Dehghani Edition: 1st Date: November 2021 Publisher: O'Reilly Media Length: 459 pages Amazon 👀 Download 😉 🚁 Hicte Blog
توضیحات:

There are no easy decisions in software architecture. Instead, there are many hard parts--difficult problems or issues with no best practices--that force you to choose among various compromises. With this book, you'll learn how to think critically about the trade-offs involved with distributed architectures.

Architecture veterans and practicing consultants Neal Ford, Mark Richards, Pramod Sadalage, and Zhamak Dehghani discuss strategies for choosing an appropriate architecture. By interweaving a story about a fictional group of technology professionals--the Sysops Squad--they examine everything from how to determine service granularity, manage workflows and orchestration, manage and decouple contracts, and manage distributed transactions to how to optimize operational characteristics, such as scalability, elasticity, and performance.

By focusing on commonly asked questions, this book provides techniques to help you discover and weigh the trade-offs as you confront the issues you face as an architect.

Analyze trade-offs and effectively document your decisions
Make better decisions regarding service granularity
Understand the complexities of breaking apart monolithic applications
Manage and decouple contracts between services
Handle data in a highly distributed architecture
Learn patterns to manage workflow and transactions when breaking apart applications
😁12🤓1
#دواپس

توابع در ترافرم

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

توابع رو توی ترافرم میشه توی فایل‌های main.tf یا variables.tf یا در بلاک‌های resource و variable و کلاً توی همه بلوک‌ها استفاده کرد.

اولین نکته‌ای که باید در نظر بگیریم اینه که هر تابع روی نوع خاصی از داده‌ها توی ترافرم اجراپذیر هست. یعنی مثلاً نمی‌تونی تابع عددی رو روی رشته اعمال کنی.

در کل توابع توی ترافرم به چند دسته تقسیم میشن:

۱. توابع رشته‌ای (String Functions)

upper("abc") → "ABC"

lower("ABC") → "abc"

replace("hello world", "world", "terraform") → "hello terraform"


۲. توابع لیست و مپ (Collection functions)

length(["a", "b", "c"]) → 3

join(",", ["a", "b", "c"]) → "a,b,c"

split(",", "a,b,c") → ["a", "b", "c"]

lookup(map("key1", "val1"), "key1", "default") → "val1"


۳. توابع عددی (Numeric functions)
 
max(1, 5, 3) → 5

min(1, 5, 3) → 1

abs(-7) → 7


مثال کامل استفاده از توابع در  main.tf
اینجوری میشه که فرض کنید ما یک ARN داریم به صورت
ARN of AWS EC2 = arn:aws:ec2:eu-west-1:123456789012:instance/i-0fb379ac92f436969

واسه یک ماشینی توی AWS و میخوایم که با استفاده از توابع براش ریسورس تعریف کنیم اینجوری میشه:
resource "aws_instance" "web" {
  # arguments omitted for brevity
}

locals {
  arn = split(":", aws_instance.web.arn)
  region = local.arn[3] # eu-west-1
  account_id = local.arn[4] # 123456789012
  instance_id = local.arn[5] # instance/i-0fb379ac92f436969
}

الان تابع Split که از توابع لیست هست اومده تو خط اول اون رشته ARN رو به لیست تعریف کرده و region و اکانت آیدی و اینستنس آیدی رو هم که الان دیگه تبدیل به لیست شده رو به راحتی از آرایه هاش استفاده کرده.

🚁 Hicte Blog | (Nariman Tj)
👍41🔥1
[ Source >> @sudoshz ]
#متفرقه_لینوکس

📢 معرفی دوره کاربری آرچ لینوکس 

🎯 همواره رسالت رسانه محتوای باز بر آن بوده که اولویت را بر آن نهد که آموزش‌هایی که در وب فارسی از جنس نرم‌افزارهای آزاد/متن‌باز، کمتر بدان پرداخته شده را مد نظر قرار دهد. 

🐧 می‌توان مدعا شد که توزیع گنو/لینوکسی آرچ لینوکس یکی از مواردی است که آموزش فارسی اندکی را در دهکده جهانی به خود اختصاص داده است. 

🚀 لذا بر آن شدیم تا آموزش ویدئویی کاربری سیستم‌عامل آرچ لینوکس را تهیه و تدوین و به رایگان منتشر کنیم. 

🛠️ دوره آموزش کاربری آرچ لینوکس (Arch Linux) که توسط علیرضا فیض‌آبادی و رسانه محتوای باز در اختیار شما قرار گرفته، کلیه مطالب اصولی و پایه‌ای را دربردارد و می‌توانید از این دوره آموزشی بهره لازم را ببرید. 

💻 در این دوره با مقدمه‌ای بر دنیای آرچ لینوکس و نحوه نصب آن بر روی کامپیوترهای خانگی به همراه توضیحاتی در مورد نحوه کارکرد برخی از اجزای آن، تست بر روی ویرچوال باکس و مشکلاتی که ممکن است در دنیای آرچ با آن مواجه شویم؛ آشنا می‌گردید. 

🔗 لینک دوره: [ https://opencontent.ir/product/arch-linux-course ] 

🚁 Hicte Blog | (smm)
👍5
🤯3🔥1
🤣14👍5😁1💅1
#دواپس

بخش اول

لیبل(label) چیه؟

لیبل ها توی کوبرنیتز برای تگ زدن آبجکت ها(مثل دیپلویمنت و پاد و رپلیکا ست و ...) استفاده میشن و تا بشه اونها رو دسته بندی و شناسایی کرد٬ لیبل ها کارشون توصیف ریسورس هست بدون هیچ عاملیتی.

سلکتور(selector) یعنی چی؟

یه جور شرط هست که میگه آبجکت هایی که اون لیبل رو دارن انتخاب بشن.

سلکتور برای سرویس—> سرویس با این سلکتورش داره میگه من دنبال پادی هستم با این لیبل

app: myapp
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: myapp
  ports:
    - port: 80


پادی که اون لیبل رو داره:
apiVersion: v1
kind: Pod
metadata:
  name: mypod
  labels:
    app: myapp


خب حالا طبق فرمت بالا سرویس به راحتی میتونه با پاد مچ بشه چون سلکتورش همون چیزی هست که رو لیبل پاد وجود داره!

🚁 Hicte Blog | (Nariman Tj)
👍4
HICTE Blog
#دواپس بخش اول لیبل(label) چیه؟ لیبل ها توی کوبرنیتز برای تگ زدن آبجکت ها(مثل دیپلویمنت و پاد و رپلیکا ست و ...) استفاده میشن و تا بشه اونها رو دسته بندی و شناسایی کرد٬ لیبل ها کارشون توصیف ریسورس هست بدون هیچ عاملیتی. سلکتور(selector) یعنی چی؟ یه جور…
#دواپس

بخش دوم

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

apiVersion: v1
kind: Deployment
metadata:
name: vote-webapp
labels:  ###اینا لیبل های خود دیپلویمنتن و برای کوئری زدن تو مانیتورینگ و پایپلاین ها و اینجور کاربردها هستن###
  app: app1
  function: front-end
annotations:
  buildversion: 1.4 
spec:
replicas: 3
selector:
  matchLabels:
   app: App1   ####مچ میشه با لیبل پادها###
template:
  metadata:
   labels:    ###لیبل های این بخش لیبل پادهایی هستند که  دیپلویمنت در آینده میسازه ###
    app: app1
    function: front-end
  spec:
   containers:
   - name: vote-app
     image: vote-app

--------------------------------------------------------
apiVersion: v1
kind: Service
metadata:
name: frontendservice
spec:
selector:
  app: app1    ###باید مچ بشه با لیبل پادها که بالاتر هم توی بخش مچ لیبل اومده
ports:
- protocol: TCP
   port: 80
   targetport: 9376

اون قسمتی که نوشته matchLabels پادهایی هست که دیپلویمنت میخواد باهاشون مچ داشته باشه و اون قسمت template لیبلش برای پادهایی که در آینده قراره ساخته بشن و اگر این دو با هم یکسان نباشن دیپلویمنت ما هیچوقت به وضعیت readiness نمی‌رسه چون پاد میسازه بعد میبینه لیبلش با لیبلی که دنبالش میگرده(matchLabels) یکی نیست و این روال هی ادامه پیدا می‌کنه پس باید این دو قسمت لیبل هاشون یکسان باشه منطقا.

🚁 Hicte Blog | (Nariman Tj)
👍4🔥1
[ Source >> @openpcb ]
#شبکه

دیروز، ۵ می ۲۰۲۵، سالگرد پنجاه‌ و یکمین تولد پروتکل TCP بود؛ پایه‌ای‌ترین جزء اینترنت مدرن که ارتباطات دیجیتال ما رو ممکن کرده.

تولد TCP از یک مقاله شروع شد. ماه مه ۱۹۷۴، وینت سرف و باب کان مقاله‌ای با عنوان «A Protocol for Packet Network Intercommunication» تو مجله IEEE منتشر کردن. این مقاله اولین توصیف عمومی از پروتکل TCP بود؛ هدفش هم برقراری ارتباط بین شبکه‌های مختلف با استفاده از بسته‌های داده بود. این نوآوری، پایه‌گذار اینترنتی شد که امروز می‌شناسیم.

بیایید ببینیم TCP چیه و چرا اهمیت داره!
پروتکل کنترل انتقال یا همون TCP، مسئول اطمینان از تحویل صحیح، کامل و مرتب داده‌ها بین دو نقطه در شبکه‌ست. قبل از انتقال داده، یه ارتباط بین دو طرف برقرار می‌کنه و با حفظ ترتیب بسته‌ها و تنظیم سرعت انتقال بر اساس شرایط شبکه، مطمئن می‌شه که همه بسته‌ها به مقصد برسن. این ویژگی‌ها باعث شده که TCP برای برنامه‌هایی مثل وب‌گردی، ایمیل و انتقال فایل‌ها ایده‌آل باشه.

اگه بخوایم time-line پیدایش این پروتکل رو مرور کنیم:

نوامبر ۱۹۷۳: مقاله TCP برای بررسی به IEEE ارسال شد.

دسامبر ۱۹۷۴: RFC 675 با عنوان «Specification of Internet Transmission Control Program» منتشر شد.

ژانویه ۱۹۸۳: شبکه ARPANET به‌طور رسمی از NCP به TCP/IP مهاجرت کرد؛ اتفاقی که به عنوان تولد رسمی اینترنت مدرن شناخته می‌شه.

یه نکته‌ی جالب درباره TCP اینه که از پروژه فرانسوی CYCLADES، به رهبری لوئیس پوزن، که مفهوم دیتاگرام‌ها رو معرفی کرده بود، تأثیر زیادی گرفته.
قابل ذکره که وینت سرف و باب کان در سال ۲۰۰۴ به‌خاطر کارهای بنیادینشون در توسعه TCP/IP، جایزه معتبر تورینگ رو دریافت کردن.

و حالا، بعد از گذشت بیش از پنج دهه، TCP همچنان ستون فقرات قابل‌ اعتماد اینترنت باقی مونده؛ پروتکلی که با مکانیزم‌های کنترلی دقیق مثل three-way handshake، windowing و congestion control، تضمین می‌کنه داده‌ها به‌درستی، بدون تکرار و به‌ترتیب به مقصد برسن.

در جهانی که سرعت، امنیت و مقیاس‌پذیری از اهمیت بالایی برخوردارن، TCP با وجود تمام رقبای جدید مثل QUIC، هنوز هم انتخاب اول برای بسیاری از سرویس‌های حیاتی باقی مونده.

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

جالبه بدونید وینت در زمان انتشار مقاله ۳۱ سالش بود و دکتری‌ علوم کامپیوتر داشت و باب ۳۵ ساله دکتری برق.

مقاله‌ی مذکور هم توی گروه ارسال شده و می‌تونید اگه دوست داشتید یه نگاهی بهش بندازید.

🚁 Hicte Blog | (smm)
👍6🔥3
👍9👏2😁1💯1
😁13🤯2
🔥14😁8🤣3
#دواپس

مفهوم دکلرتیو در Devops چی هست؟
در مدل دکلرتیو، شما فقط نتیجه نهایی مورد نظر را تعریف می‌کنید. ابزار مسئول است که نحوه رسیدن به آن وضعیت را مدیریت کند.

مثال‌ها:
Terraform

Kubernetes manifests

CloudFormation

در Terraform:

resource "aws_instance" "web" {
  ami           = "ami-12345678"
  instance_type = "t2.micro"
}

شما فقط می‌گویید: «من یک EC2 با این ویژگی‌ها می‌خواهم» و Terraform خودش می‌فهمد که باید آن را بسازد، تغییر دهد یا حذف کند.

مزایا:
ساده‌تر برای مدیریت منابع پیچیده

idempotent (اجرای چندباره بدون اثر جانبی)

حالت نهایی مهم است، نه مراحل

این  Imperative (ایمپرتیو - دستوری)
چی هست؟
در مدل ایمپرتیو، شما مرحله‌به‌مرحله می‌گویید چه کاری انجام بده تا به نتیجه دلخواه برسیم.

مثال‌ها:
Ansible (نیمه‌ایمپرتیو)

Bash Scripts

Pulumi (در برخی زبان‌ها)

در Ansible:
- name: Install nginx
  apt:
    name: nginx
   state: present

شما می‌گویید: «برو این پکیج رو نصب کن». باید صریحاً بگویید چه کاری و در چه ترتیبی انجام شود.

مزایا:
کنترل دقیق‌تر روی مراحل

مناسب برای اعمال پیکربندی جزئی

ساده‌تر برای اسکریپت‌های سفارشی

🚁 Hicte Blog | (Nariman Tj)
👍61
#کتاب
[ Source >> @srfirouzi_channel ]

سادگی زیباتر از پیچیدگی

چند روز پیش با یکی از دوستان صحبت می کردم، متوجه شدم تیم توسعه برای ارتباطاتشون از فایل های ms office استفاده می کنند.(فاجعه مستندسازی)
بهشون Markdown رو پیشنهاد دادم، اما منبع خوبی نداشتم که بهشون معرفی کنم.
تصمیم گرفتم یک کتابچه تهیه کنم.

جالب اینکه با ابزار موجود فقط دو روز طول کشید این کتابچه آماده استفاده شد.
ساده‌گی زبان markdown موجب شده تهیه فهرست مطالب ، تهیه متن اصلی و ... وقتی کمی به خود اختصاص دهد و کمک از هوش مصنوعی در ویراستاری متن و استفاده از libre office writer این زمان رو به حداقل برساند.
متاسفانه به خاطر مسایلی هنوز امکان ارایه کتابچه به فرمت markdown نبود.

اگر جزیی از تیم توسعه هستید چه برنامه نویس،چه دیزاینر UI/UX و چه مدیر، پیشنهاد می کنم این کتابچه را بخوانید.

لینک به کتابچه

🚁 Hicte Blog | (smm)
👍4🔥4
😁11🔥2
#سخن_هیکته

تنها دو چیز نامتناهی است، یکی جهان هستی و دیگری مراحل اسکای ریم.

🚁 Hicte Blog | (smm)
👍5👀3😁1