<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های محمدسجاد خسروآبادی</title><link>https://virgool.ir/feed/@m_97980780</link><description>من سجادم. با داده فکر می‌کنم و با محصول خلق می‌کنم. به NLP، مدیریت محصول داده‌محور و حکمرانی داده علاقه‌مندم و اینجا درباره خلق، تصمیم‌گیری و اثر فناوری بر دنیای واقعی می‌نویسم.</description><language>fa</language><pubDate>2026-11-10 20:54:08</pubDate><image><url>https://files.virgool.ir/upload/users/1656966/avatar/yTzWKX.jpg</url><title>محمدسجاد خسروآبادی</title><link>https://virgool.ir/@m_97980780</link></image><item><title>آپاچی سوپرست (Apache Superset) چیست؟</title><link>https://virgool.ir/@m_97980780/آپاچی-سوپرست-apache-superset-چیست-gsmn3ihkz64d</link><description> آپاچی سوپرست (Apache Superset) چیست؟آپاچی سوپرست یک پلتفرم متن‌باز هوش تجاری (BI) است که به کاربران امکان می‌دهد:*   به منابع داده متنوع متصل شوند.*   با استفاده از SQL (یا فیلترهای بدون کد) داده‌ها را پرس‌وجو (Query) کنند.*   داشبوردهای پویا و تعاملی بسازند.*   بینش‌های به‌دست‌آمده را در بین تیم‌ها یا سازمان‌ها به اشتراک بگذارند.این ابزار، سهولت استفاده از ابزارهای سنتی هوش تجاری را با انعطاف‌پذیری پلتفرم‌های متن‌باز مدرن ترکیب می‌کند و آن را به انتخابی محبوب برای شرکت‌های بزرگ و استارتاپ‌ها تبدیل کرده است. چرا باید از آپاچی سوپرست استفاده کنیم؟در اینجا دلایل اصلی انتخاب آپاچی سوپرست برای نیازهای تحلیل و بصری‌سازی داده‌ها آورده شده است:۱. متن‌باز و رایگان*   بهره‌وری هزینه: به عنوان یک پروژه آپاچی، سوپرست متن‌باز و رایگان است و هزینه‌های سنگین لایسنس ابزارهای تجاری مانند Tableau یا Power BI را حذف می‌کند.*   جامعه‌محور: این ابزار از جامعه‌ای در حال رشد از توسعه‌دهندگان بهره می‌برد که به‌طور مداوم برای بهبود آن تلاش می‌کنند.۲. رابط کاربری ساده*   منحنی یادگیری کم: کاربرانی که دانش SQL دارند می‌توانند به‌سرعت با Query Builder (سازنده پرس‌وجو) سوپرست سازگار شوند، در حالی که فیلترهای بدون کد، کار را برای کاربران غیرفنی نیز آسان می‌کند.*   بصری‌سازی به روش کشیدن و رها کردن (Drag-and-Drop): سوپرست ابزارهای بصری و ساده‌ای برای ایجاد نمودارها، نقشه‌ها و داشبوردها بدون نیاز به نوشتن کدهای پیچیده ارائه می‌دهد.۳. سازگاری گسترده با منابع دادهسوپرست از طیف وسیعی از پایگاه‌های داده پشتیبانی می‌کند، از جمله:*   پایگاه‌های داده رابطه‌ای: PostgreSQL، MySQL، Oracle و غیره.*   انبارهای داده: Snowflake، Google BigQuery، Amazon Redshift و غیره.*   موتورهای پرس‌وجوی مدرن: Apache Druid، Presto و Trino.این انعطاف‌پذیری، آن را به انتخابی قدرتمند برای تیم‌هایی با محیط‌های داده ناهمگون تبدیل کرده است.۴. بصری‌سازی‌های پیشرفته*   دارای کتابخانه‌ای از انواع نمودارهای پیش‌فرض، از نمودارهای میله‌ای گرفته تا نقشه‌های حرارتی (Heatmaps).*   پشتیبانی از پلاگین‌ها و افزونه‌های سفارشی، که به تیم‌ها اجازه می‌دهد بصری‌سازی‌های اختصاصی ایجاد کنند.*   دارای قابلیت بصری‌سازی جغرافیایی برای نقشه‌برداری و تحلیل داده‌های مکان‌محور.۵. مقیاس‌پذیری برای کلان‌داده (Big Data)*   به‌راحتی با موتورهای پرس‌وجوی توزیع‌شده مثل Presto و Druid کار می‌کند.*   داشبوردها برای دریافت و نمایش کارآمد داده‌ها جهت بصری‌سازی با عملکرد بالا، قابل بهینه‌سازی هستند.۶. امن و مشارکتی*   کنترل دسترسی مبتنی بر نقش (RBAC): کنترل دقیق بر دسترسی کاربران که امنیت و حاکمیت داده‌ها را تضمین می‌کند.*   ویژگی‌های مشارکتی: داشبوردها قابل اشتراک‌گذاری، حاشیه‌نویسی (Annotation) و جاسازی (Embedding) هستند که همکاری تیمی را ممکن می‌سازد.۷. قابلیت توسعه*   معماری ماژولار سوپرست امکان استفاده از پلاگین‌ها، یکپارچه‌سازی‌ها و افزونه‌های سفارشی را فراهم می‌کند.*   توسعه‌دهندگان می‌توانند ابزار را برای نیازهای خاص سازمان، از تم‌های سفارشی گرفته تا انواع نمودارهای منحصربه‌فرد، شخصی‌سازی کنند. چه زمانی از آپاچی سوپرست استفاده کنیم؟۱. برای داشبوردسازی و هوش تجاری: اگر سازمان شما به یک پلتفرم متمرکز برای بصری‌سازی و به اشتراک‌گذاری بینش‌های داده نیاز دارد، سوپرست عالی است.۲. برای تیم‌هایی با منابع داده متنوع: اگر داده‌های شما در سیستم‌های مختلف (پایگاه‌های داده، انبارهای داده یا موتورهای پرس‌وجو) پخش شده است.۳. برای تحلیل‌های مقیاس‌پذیر: اگر حجم داده‌های شما بزرگ است و در حال رشد است.۴. برای سازمان‌های حساس به هزینه‌ها: اگر می‌خواهید قابلیت‌های BI در سطح سازمانی داشته باشید اما نمی‌خواهید هزینه‌ی لایسنس بپردازید.۵. برای محیط‌های توسعه‌دهنده‌پسند: برای تیم‌هایی که دانش فنی لازم برای استقرار نرم‌افزارهای متن‌باز و توسعه‌ی آن‌ها را دارند. آیا باید از آپاچی سوپرست استفاده کنید؟از آپاچی سوپرست استفاده کنید اگر:*   به یک ابزار BI بدون هزینه‌ی لایسنس نیاز دارید.*   با منابع داده‌ی چندگانه کار می‌کنید.*   به قابلیت‌های مقیاس‌پذیر برای کلان‌داده نیاز دارید.*   به داشبوردهای تعاملی (Drag-and-Drop) نیاز دارید.*   شخصی‌سازی برایتان اهمیت دارد و تیم فنی دارید.سوپرست ممکن است انتخاب مناسبی نباشد اگر:*   به تحلیل‌های آماری بسیار پیشرفته (مدل‌سازی آماری، یادگیری ماشین) نیاز دارید (سوپرست روی بصری‌سازی تمرکز دارد).*   منابع فنی ندارید (استقرار و نگهداری سوپرست به دانش سرور و پایگاه داده نیاز دارد).*   به ویژگی‌های «آماده به کار» (Out-of-the-box) بسیار زیاد و محیط‌های کاملاً مدیریت‌شده نیاز دارید (در این صورت Tableau یا Power BI بهتر هستند).چگونه با آپاچی سوپرست شروع کنیم؟۱. نصب سوپرست: راهنمای رسمی نصب را برای استقرار محلی یا روی سرور دنبال کنید.۲. اتصال به منابع داده: پایگاه‌های داده و موتورهای پرس‌وجوی خود را در سوپرست پیکربندی کنید.۳. کاوش و ساخت: از SQL Lab برای پرس‌وجو و تحلیل داده‌ها استفاده کنید و با ابزارهای بصری، نمودارها و داشبوردها را بسازید.۴. همکاری و اشتراک‌گذاری: دسترسی‌های RBAC را تنظیم کرده و داشبوردها را با تیم خود به اشتراک بگذارید. سخن پایانیآپاچی سوپرست یک جایگزین قدرتمند و متن‌باز برای ابزارهای تجاری BI است. قابلیت اتصال به منابع داده متعدد، مدیریت کلان‌داده و ایجاد بصری‌سازی‌های پویا، آن را به انتخابی عالی تبدیل کرده است. اگرچه ممکن است برای راه‌اندازی و نگهداری به تخصص فنی نیاز داشته باشد، اما مزایای انعطاف‌پذیری و بهره‌وری هزینه‌ی آن، بسیار ارزشمند است.#محمدسجاد_خسروآبادی</description><category>محمدسجاد خسروآبادی</category><author>محمدسجاد خسروآبادی</author><pubDate>Wed, 07 Oct 2026 10:14:35 +0330</pubDate></item><item><title>راهنمای اصطلاحات ضروری تحلیل داده (از مفاهیم پایه تا پلتفرم‌های ابری)</title><link>https://virgool.ir/@m_97980780/راهنمای-اصطلاحات-ضروری-تحلیل-داده-از-مفاهیم-پایه-تا-پلتفرم-های-ابری-k1ega7ghxpcc</link><description>هر تحلیل‌گر داده‌ی موفقی، به «زبان داده» صحبت می‌کند.یادگیری ابزارهایی مثل SQL، پایتون یا Power BI مهم است؛ اما درک مفاهیم پشت این ابزارهاست که یک فرد مبتدی را از یک متخصص واقعی متمایز می‌کند.در ادامه برخی از مهم‌ترین اصطلاحاتی که هر تحلیل‌گر داده (از مبتدی تا حرفه‌ای) باید بشناسد را مرور می‌کنیم:🔹 مفاهیم پایه داده (Data Fundamentals)ETL (استخراج، تبدیل و بارگذاری): انتقال و آماده‌سازی داده‌ها از سیستم‌های مبدا به پلتفرم‌های تحلیلی.اسکیما (Schema): نقشه و ساختاری که نحوه سازمان‌دهی داده‌ها را مشخص می‌کند.پاکسازی داده (Data Cleaning): اصلاح یا حذف داده‌های ناقص، تکراری، متناقض یا نامعتبر.تبدیل داده (Data Transformation): تبدیل داده‌های خام به فرمتی که آماده تحلیل باشد.🔹 شاخص‌های تحلیلی و کسب‌وکار (Analytics &amp; Business Metrics)KPI (شاخص کلیدی عملکرد): معیاری قابل اندازه‌گیری برای پایش میزان موفقیت در دستیابی به اهداف کسب‌وکار.متریک (Metric): یک مقیاس عددی برای سنجش و ارزیابی عملکرد.تحلیل کوهورت (Cohort Analysis): تحلیل رفتار گروه‌هایی از کاربران در طول زمان بر اساس ویژگی‌های مشترک.بخش‌بندی (Segmentation): تقسیم داده‌ها به گروه‌های معنادار برای تحلیل‌های عمیق‌تر.تجمیع داده (Data Aggregation): خلاصه‌سازی و ترکیب داده‌های جزئی به بینش‌های کلیدی و کاربردی.🔹 پایگاه‌های داده و ذخیره‌سازی (Databases &amp; Storage)SQL: زبان استاندارد برای کوئری‌نویسی و مدیریت پایگاه‌های داده رابطه‌ای.ایندکس‌گذاری (Indexing): افزایش سرعت و بهبود کارایی کوئری‌ها با بازیابی سریع‌تر داده‌ها.انبار داده (Data Warehouse): مخزن متمرکز ذخیره‌سازی که برای تحلیل داده‌های ساختاریافته کسب‌وکار طراحی شده است.دریاچه داده (Data Lake): ذخیره‌سازی داده‌های ساختاریافته، نیمه‌ساختاریافته و غیرساختاریافته در مقیاس وسیع.JOIN (اتصال): ترکیب داده‌های مرتبط از چند جدول مختلف.🔹 مصورسازی و گزارش‌گیری (Visualization &amp; Reporting)داشبورد (Dashboard): نمای بصری و تعاملی خلاصه‌شده از متریک‌ها و شاخص‌های کلیدی (KPIs).داستان‌سرایی با داده (Data Storytelling): انتقال معنادار بینش‌ها با استفاده از جلوه‌های بصری اثربخش و روایت‌گری.نقشه حرارتی (Heatmap): نمایش شدت مقادیر با استفاده از طیف‌های رنگی.هیستوگرام (Histogram): نموداری برای نمایش توزیع فراوانی داده‌های عددی.دریل‌داون (Drill-Down): مشاهده و بررسی لایه‌های عمیق‌تر و با جزئیات بیشتر داده‌ها از درون یک گزارش خلاصه.🔹 مفاهیم آماری (Statistical Concepts)میانگین (Mean): میانگین حسابی مقادیر یک مجموعه‌داده.میانه (Median): نقطه میانی داده‌ها پس از مرتب‌سازی صعودی یا نزولی.انحراف معیار (Standard Deviation): معیاری برای سنجش میزان پراکندگی داده‌ها نسبت به میانگین.همبستگی (Correlation): سنجش شدت و جهت ارتباط میان متغیرها.تحلیل رگرسیون (Regression Analysis): مدل‌سازی روابط بین متغیرها و پیش‌بینی نتایج.🔹 مفاهیم یادگیری ماشین (Machine Learning Concepts)تحلیل پیش‌بینانه (Predictive Analytics): پیش‌بینی نتایج و روندهای آینده با استفاده از داده‌های گذشته.مهندسی ویژگی (Feature Engineering): ساخت یا تغییر متغیرها برای ارتقای دقت و عملکرد مدل‌ها.خوشه‌بندی (Clustering): گروه‌بندی داده‌های مشابه به صورت بدون‌نظارت (بدون برچسب‌های از پیش تعیین‌شده).طبقه‌بندی (Classification): تخصیص داده‌ها به دسته‌ها و کلاس‌های مشخص و از پیش تعریف‌شده.ارزیابی مدل (Model Evaluation): سنجش میزان دقت و کارایی مدل یادگیری ماشین.🔹 پلتفرم‌های مدرن داده (Modern Data Platforms)BigQuery: انبار داده ابری گوگل برای تحلیل‌های کلان‌داده در مقیاس عظیم.Snowflake: پلتفرم ابری مقیاس‌پذیر برای ذخیره‌سازی و تحلیل داده‌ها.Amazon Redshift: سرویس انبار داده ارائه‌شده توسط آمازون (AWS) برای بارهای کاری تحلیلی.Databricks: پلتفرم یکپارچه برای مهندسی داده، تحلیل و هوش مصنوعی بر پایه اسپارک.Azure Synapse Analytics: پلتفرم تحلیلی جامع و یکپارچه مایکروسافت.ارادتمند محمدسجاد خسروآبادی</description><category>محمدسجاد خسروآبادی</category><author>محمدسجاد خسروآبادی</author><pubDate>Mon, 07 Sep 2026 15:00:44 +0330</pubDate></item><item><title>تیم سازیTeam up</title><link>https://virgool.ir/@m_97980780/تیم-سازیteam-up-ydp5p3x0p6om</link><description>Team-up؛ فراتر از یک استخدام سادهسلام به همه ،می‌خوام یکی از ارزشمندترین و البته پرچالش‌ترین تجربه‌های چند ماه گذشته‌ام رو باهاتون به اشتراک بگذارم. به جرئت می‌تونم بگم بخش عمده‌ای از زمان و انرژی من توی این مدت، صرفِ تشکیل و توسعه تیم (Team-up) شد.وقتی می‌گم تیم، منظورم یک تیم ۱۱ نفره‌ست که برای ساختنش، بالای ۹۰۰ رزومه رو بررسی کردم و حدود ۸۰ مصاحبه حضوری و آنلاین داشتم. توی این مسیر، آدم‌های زیادی رو دیدم؛ بعضی‌ها موندگار شدن و ستون‌های تیم شدن، و بعضی‌ها هم خیلی زود مسیرمون جدا شد.اما بزرگترین درسی که گرفتم این بود: تخصص، شرطِ لازم برای وروده، اما شرطِ کافی برای موندن نیست.در نهایت، چیزی که تیم رو سرپا نگه می‌داره «اخلاق، ادب و شخصیت» آدم‌هاست. این‌که چقدر با فرهنگ تیم مچ (Match) هستند و چقدر می‌تونن توی سختی‌ها کنار بقیه بمونن.تشکیل تیم، دقیقاً مثل بستن یه تیم فوتباله. نمی‌تونی فقط ستاره بخری؛ باید ترکیب بسازی:- به اون آدم شیطون و پرانرژی نیاز داری که اتمسفر تیم رو زنده نگه داره.- به یکی دو نفر سینیور و باتجربه نیاز داری که وقتی لودِ کار بالاست و فشار روی همه زیاده، مثل یه لنگر، آرامشِ تیم باشن.- به متخصصِ فنیِ قوی نیاز داری که کارها رو جلو ببره و به جونیورِ مستعد و تشنه یادگیری که آینده‌ساز باشه.البته که همیشه همه‌چیز طبق برنامه پیش نمیره. چالش‌های زیادی داشتم؛ از آدم‌های فوق‌العاده‌ای که پیدا کردم ولی بودجه سازمان اجازه‌ی همکاری نداد، تا افرادی که در مراحل نهایی جذب، به خاطر فرآیندهای اداری رد شدن. فهمیدم که «محدودیت»، بخشی جدانشدنی از دنیای مدیریته و هنرِ ما، ساختن بهترین خروجی با همین منابعِ در دسترسه.مدیریتِ روابطِ بین آدم‌ها، دنیای پیچیده‌ایه. یاد گرفتم که ، باید در دو جبهه بجنگم:۱. برای بچه‌های تیمم بجنگم تا از سازمان براشون امتیاز بگیرم و هوای کارشون رو داشته باشم.۲. برای سازمان بجنگم تا بچه‌ها بهترینِ خودشون رو ارائه بدن.تیم‌سازی، یک پروژه نیست؛ یک فرآیندِ زنده و پایان‌ناپذیره.شما توی تجربه‌های Team-up خودتون، چه فاکتوری رو به عنوان «خط قرمز» برای انتخابِ هم‌تیمی‌هاتون می‌دونید؟ پی نوشت:  زحمت عکس رو هوش مصنوعی کشیده</description><category>محمدسجاد خسروآبادی</category><author>محمدسجاد خسروآبادی</author><pubDate>Mon, 24 Aug 2026 10:02:47 +0330</pubDate></item><item><title>پیش‌بینی نتایج فوتبال - قسمت اول</title><link>https://virgool.ir/@m_97980780/پیش-بینی-نتایج-فوتبال-قسمت-اول-y7bvi2u9hfn2</link><description>پروژهٔ پایتون برای بررسی نتایج فوتبال و ضرایب شرط‌بندیراهکارهای داده‌محور در انجام وظایف مختلف در سراسر جامعه جایگاه ویژه‌ای پیدا کرده‌اند و با قدرتمندتر شدن مدل‌سازی داده، این حوزه به ابزاری مؤثر برای مواجهه با تصادفی‌بودن پدیده‌ها تبدیل شده است. در این مجموعه نوشته‌ها، هدف ما ساخت یک راهکار برای پیش‌بینی نتایج فوتبال بر اساس داده‌هایی است که از سراسر وب جمع‌آوری می‌شوند.هدف اصلیپیش از هر چیز لازم است هدف اصلی پروژه را مشخص کنیم؛ هدفی که هستهٔ اصلی کار ما را تشکیل می‌دهد. در زمان نگارش این مطلب، جام جهانی فوتبال فیفا در حال نزدیک شدن است و معمولاً در چنین رویدادهایی مردم دور هم جمع می‌شوند و روی نتایج بازی‌ها و مسابقات گفت و گو می‌کنند؛ چه برای برنده شدن جایزه و چه صرفاً برای سرگرمی. این رفتار یک پدیدهٔ جهانی است و پیش بینی نتایج ورزشی صنعتی چند میلیارد دلاری به شمار می‌رود که میلیون‌ها نفر را برای بررسی و تحلیل ضرایب به خود جذب می‌کند.در چنین بستری، هدف اصلی این پروژه شکل می‌گیرد: ساخت ابزاری که بتواند به ما در پیش بینی نتایج فوتبال کمک کند. پس از مشخص شدن این هدف، می‌توانیم مراحل لازم برای رسیدن به آن را به‌صورت ساخت‌یافته ترسیم کنیم.راه‌اندازی پروژهاکنون هدف نهایی مشخص شده، اما هنوز هدفی کلی و دور به نظر می‌رسد. استفاده از نوعی مهندسی معکوس می‌تواند به شفاف‌تر شدن مسیر کمک کند. نخستین ایده‌ای که به ذهن می‌رسد، ساخت یک برنامه کاربردی است که به ما امکان شبیه‌سازی استراتژی‌های پیش بینی نتایج را بر اساس نوعی پیش‌بینی بدهد.همان‌طور که قابل حدس است، چارچوب اصلی ما برای پیش‌بینی نتایج، یک مدل یادگیری ماشین یا یادگیری عمیق خواهد بود، چرا که قصد داریم از اطلاعات گذشته برای پیش‌بینی رویدادهای آینده استفاده کنیم. بر این اساس، لازم است داده‌های ورودی را از منابع مختلف وب جمع‌آوری کنیم که اتفاقاً موضوع اصلی این مقالهٔ نخست محسوب می‌شود.پیش از ورود به جزئیات وب‌اسکریپینگ، مراحل مطرح‌شده را به‌طور خلاصه مرور می‌کنیم:جمع‌آوری دادهمهندسی ویژگی و مدل‌سازیساخت شبیه‌ساز استراتژی‌های شرط‌بندیدر نهایت، این پروژه در زمان نگارش همچنان در حال توسعه است و هدف اصلی آن، ارائهٔ یک گزارش مطالعاتی برای خود من است. بنابراین بهتر است با همین نگاه به آن بنگرید و در ارائهٔ پیشنهاد یا نقد کاملاً آزاد باشید. می‌توانید به مخزن کد پروژه از طریق ارتباط با من دسترسی داشته باشید. خب، کافی است؛ بیایید وارد بحث جمع‌آوری داده شویم.منابع دادهدر جست‌وجوهای انجام‌شده در وب، با منابع دادهٔ مختلفی روبه‌رو شدم که هر کدام با هدف خاصی انتخاب شدند. در ادامه آن‌ها را معرفی کرده و ویژگی‌هایشان را توضیح می‌دهم.اولین مجموعه‌داده‌ای که قصد داریم بسازیم، دیتاستی است که برای تغذیهٔ مدل با آمارها و رویدادهای گذشتهٔ مسابقات فوتبال استفاده می‌شود. منبعی که از آن داده جمع‌آوری می‌کنیم وب‌سایت fbref است و می‌توانید نتیجهٔ نمونهٔ وب‌اسکریپینگ را در فایل sample.pkl در مخزن پروژه مشاهده کنید. نگاهی به ساختار صفحهٔ اصلی وب‌سایت fbref بیندازید:در ادامه، هدف ما تهیهٔ یک مجموعه‌دادهٔ سری زمانی است که شامل اطلاعات موجود در این صفحه در تاریخ‌های مختلف باشد؛ همچنین داده‌هایی که در لینک‌های گزارش مسابقات قرار دارند نیز جمع‌آوری خواهند شد، چرا که این گزارش‌ها آمارهای دقیق‌تر و جزئی‌تری از هر بازی ارائه می‌دهند. در تصویر زیر نیز نمونه‌ای از گزارش یک مسابقه نشان داده شده است.سپس با نگاهی به وب‌سایت و ساختار آن مشخص می‌شود که نیازی به پردازش کدهای JavaScript نداریم؛ موضوعی که در غیر این صورت می‌توانست کار وب‌اسکریپینگ را کمی پیچیده‌تر کند. بنابراین از این مرحله به بعد از BeautifulSoup استفاده می‌کنیم.اکنون باید ساختار اسکریپینگ خود را بر اساس اطلاعات موردنیازمان طراحی کنیم، چرا که اسکریپر به‌صورت خطی عمل کرده و داده‌های مورد نظر را جمع‌آوری می‌کند. کد نیز در قالب یک کلاس با نام scrapper پیاده‌سازی شده و تمام قابلیت‌ها و عملکردهای لازم درون این کلاس تعریف شده‌اند.حال بیایید مراحلی را که قدم‌به‌قدم طی کرده‌ام مرور کنیم:اسکریپر بازی‌های گذشته (Old Matches Scraper)1. رفتن به تاریخ مشخص‌شده در صفحهٔ مسابقاتدر صفحهٔ مسابقات، به تاریخ موردنظر می‌رویم. این فرآیند و تمام مراحل بعدی، به‌صورت روزانه در بازه‌ای که کاربر تعریف می‌کند تکرار می‌شوند. تابع getMatches() یک تاریخ شروع و یک تاریخ پایان دریافت می‌کند که محدوده‌ای را مشخص می‌کنند که اسکریپر در آن اجرا خواهد شد.2. دریافت جدول هر لیگ / قهرمانیمطابق مثال مرحلهٔ اول، متغیر leagues می‌تواند توسط کاربر مقداردهی شود تا لیگ‌هایی که قصد اسکریپ آن‌ها را دارد انتخاب کند. همچنین در کد می‌توان یک بلوک try-except مشاهده کرد که برای مدیریت خطاهای ساختاری استفاده می‌شود؛ خطاهایی مانند جدول‌های جعلی یا غیرواقعی که ممکن است در وب‌سایت ظاهر شوند.3. استخراج اطلاعات هر مسابقه از سطر جدولدر این مرحله، علاوه بر اضافه کردن اطلاعات موردنظر به لیست‌ها، به استفاده از time.sleep توجه ویژه‌ای شده است؛ این کار برای کنترل تعداد درخواست‌ها در یک بازهٔ زمانی مشخص انجام می‌شود تا از مسدود شدن IP جلوگیری شود.نکتهٔ مهم دیگر، ذخیره‌سازی لینک گزارش هر مسابقه است که در متغیر score قرار دارد. با استخراج لینک از متغیر score به‌جای لینک مستقیم «Match Report»، می‌توان از ذخیره شدن لینک مسابقاتی که به تعویق افتاده یا لغو شده‌اند جلوگیری کرد. این موضوع ما را به مرحلهٔ بعد هدایت می‌کند.4. ورود به گزارش هر مسابقه و استخراج اطلاعاتهمان‌طور که مشاهده می‌کنید، این مرحله کمی پیچیده‌تر است؛ بنابراین توضیح کوتاهی ارائه می‌شود:کارت‌های زرد و قرمز با شمارش و جمع‌کردن تعداد آبجکت‌های کارت در دسته‌های زرد و قرمز محاسبه می‌شوند.سایر آمارها به این روش استخراج شده‌اند:بررسی اینکه آیا آماری خاص در دیکشنری آمارهای مورد انتظار وجود دارد یا خیردر صورت وجود، دیکشنری با مقادیر مرتبط با آن آمار به‌روزرسانی می‌شود؛ مقادیری که معمولاً قبل و بعد از نام آن آمار در ساختار صفحه قرار دارندخوانندهٔ دقیق احتمالاً متوجه شده است که مرحلهٔ ۲ (دریافت جدول هر لیگ) الزاماً ضروری نیست، اما این مرحله انعطاف‌پذیری لازم برای فیلتر کردن مسابقات بر اساس لیگ‌های موردنظر را در اختیار ما قرار می‌دهد؛ رویکردی که من در این پروژه انتخاب کرده‌ام.مرحلهٔ تکمیلی: ایجاد Checkpointبه‌عنوان یک گام اضافی، نیاز به تعریف یک مکانیزم Checkpoint احساس شد، زیرا اسکریپر ممکن است با خطاهای غیرقابل پیش‌بینی مواجه شود یا وب‌سایت fbref دسترسی IP را مسدود کند. در چنین شرایطی، از دست رفتن زمان پردازش می‌تواند بسیار زیاد باشد.به همین دلیل، در اولین روز هر ماه، وضعیت فعلی فرآیند اسکریپ ذخیره می‌شود تا در صورت بروز خطای غیرمنتظره، یک نقطهٔ امن برای ادامهٔ کار در اختیار داشته باشیم.و این عملاً تمام فرایند است. در انتهای کد، می‌توانید حلقهٔ به‌روزرسانی روزانه (iterator تاریخ) و همچنین عملیات لازم برای قالب‌بندی DataFrame نهایی را مشاهده کنید.تمام این فرایند به ما امکان می‌دهد داده‌هایی را جمع‌آوری کنیم تا مدلی برای پیش‌بینی نتایج مسابقات فوتبال بسازیم؛ با این حال، هنوز لازم است داده‌های مربوط به مسابقات پیشِ‌رو را نیز اسکریپ کنیم تا بتوانیم از داده‌هایی که تاکنون جمع‌آوری کرده‌ایم، به شکلی کاربردی استفاده کنیم.بهترین منبعی که برای این منظور پیدا کردم SofaScore بود؛ یک اپلیکیشن که اطلاعات مربوط به مسابقات و بازیکنان را جمع‌آوری و ذخیره می‌کند. علاوه بر این، SofaScore ضرایب واقعی شرط‌بندی در Bet365 را نیز برای هر مسابقه در اختیار قرار می‌دهد.وب‌سایت SofaScore به‌طور خاص از JavaScript برای بارگذاری محتوا استفاده می‌کند؛ به این معنا که کد HTML به‌صورت کامل و مستقیم در دسترس نیست تا بتوان از آن با BeautifulSoup استفاده کرد. بنابراین لازم است از یک چارچوب دیگر برای استخراج داده‌ها بهره ببریم. در این پروژه، من پکیج پرکاربرد Selenium را انتخاب کردم که به ما اجازه می‌دهد از طریق کد پایتون، وب را درست مانند یک کاربر انسانی مرور کنیم.در عمل، می‌توانید مشاهده کنید که وب‌درایور مرورگر را باز می‌کند، کلیک انجام می‌دهد و بین صفحات جابه‌جا می‌شود. مرورگری که من انتخاب کردم Chrome بوده است.در تصویر زیر، صفحهٔ اصلی SofaScore با مسابقات در حال برگزاری یا پیشِ‌رو نمایش داده شده است و در سمت راست می‌توانید نتیجهٔ کلیک روی یکی از مسابقات و سپس انتخاب گزینهٔ LINEUPS را مشاهده کنید.همان‌طور که توضیح داده شد، Selenium مانند یک کاربر انسانی وب را مرور می‌کند؛ بنابراین طبیعی است که این فرایند کمی کندتر باشد و همین موضوع صحت دارد. در نتیجه باید در هر مرحله دقت بیشتری به خرج دهیم تا روی دکمه‌ای که هنوز وجود ندارد کلیک نکنیم؛ چرا که کدهای JavaScript تنها پس از انجام برخی تعاملات کاربر رندر می‌شوند.به‌عنوان مثال، وقتی روی یک مسابقه خاص کلیک می‌کنیم، سرور به زمانی نیاز دارد تا منوی کناری‌ای که در تصویر دوم مشاهده می‌شود را بارگذاری کند. اگر در همین فاصله کد بخواهد روی دکمهٔ Lineup کلیک کند، با خطا مواجه خواهد شد. حالا بیایید وارد بخش کد شویم.اسکریپر مسابقات پیشِ‌رو (Forecoming Matches Scraper)1. باز کردن صفحهٔ اصلی و فعال‌سازی دکمهٔ «نمایش ضرایب» (Show Odds)همان‌طور که اشاره شد، پس از راه‌اندازی درایور و ورود به آدرس SofaScore، باید منتظر بمانیم تا دکمهٔ نمایش ضرایب رندر شود و سپس روی آن کلیک کنیم. همچنین لیست‌هایی ایجاد می‌کنیم تا اطلاعات استخراج‌شده را در آن‌ها ذخیره کنیم.2. ذخیرهٔ اطلاعات اصلی مسابقاتدر این بخش کار خاص یا پیچیده‌ای انجام نمی‌شود، اما توجه به این نکته مهم است که در خط ۸ تنها مسابقاتی فیلتر می‌شوند که هنوز آغاز نشده‌اند. دلیل این کار آن است که پردازش مسابقات در حال برگزاری، اسکریپ ضرایب را بسیار پیچیده‌تر می‌کند. علاوه بر این، هنوز مشخص نیست شبیه‌ساز شرط‌بندی آینده چگونه عمل خواهد کرد و ممکن است با نتایج زنده عملکرد درستی نداشته باشد.3. دریافت ترکیب تیم‌ها (Lineups)به‌طور خلاصه، مطابق توضیحات بالا، منتظر می‌مانیم تا منوی کناری مربوط به هر مسابقه به‌طور کامل بارگذاری شود، سپس روی دکمهٔ Lineup کلیک می‌کنیم و نام بازیکنان را استخراج می‌کنیم. در این مرحله باید دقت ویژه‌ای به خرج داد، زیرا نام کاپیتان هر تیم در وب‌سایت با قالب‌بندی متفاوتی نمایش داده می‌شود؛ به همین دلیل، یک تابع کمکی (helper function) برای مدیریت این مورد پیاده‌سازی کردیم.پس از آن، نام بازیکنان هر مسابقه در یک DataFrame مجزا ذخیره می‌شود و در نهایت، پس از اتمام کل فرایند، اطلاعات مسابقات با ترکیب‌های پیش‌بینی‌شدهٔ تیم‌ها با یکدیگر ادغام (concatenate) می‌شوند.نتیجه‌گیریخب، این هم از مطلب امروز. در این مقاله دو ابزار اسکریپینگ ساختیم که می‌توانند:اطلاعات مربوط به مسابقات گذشتهٔ فوتبال را جمع‌آوری کنندو داده‌های مربوط به مسابقات پیشِ‌رو را استخراج نماینداین تنها آغاز پروژه است. در ادامه می‌توانید منتظر مقالات جدیدی دربارهٔ:ساخت مجموعه‌داده شامل اطلاعات بازیکنانمدل‌سازی پیش‌بینی نتایجو در نهایت، پیاده‌سازی شبیه‌ساز استراتژی‌های پیش بینیباشید. امیدوارم از این مطلب لذت برده باشید! 😊</description><category>محمدسجاد خسروآبادی</category><author>محمدسجاد خسروآبادی</author><pubDate>Fri, 19 Dec 2025 16:20:04 +0330</pubDate></item><item><title>ده درس زندگی برای همه</title><link>https://virgool.ir/@m_97980780/ده-درس-زندگی-برای-همه-div6fdzv0wrf</link><description>ده درسی که کاش خیلی زودتر یاد گرفته بودم؛نه در کلاس‌ها، نه در کتاب‌ها،بلکه وسط پروژه‌ها، کار تیمی، تصمیم‌های سخت، معماری‌ها، شکست‌ها و جلسات کوچینگ کسب‌وکار.۱. بیش‌ازحد مهربان بودن، الزاماً احترام نمی‌آورد.مرزها اگر زود مشخص نشوند، دیر و با هزینه زیاد تحمیل می‌شوند. مهربانیِ بدون چارچوب، فرسوده‌کننده است.۲. همیشه پای غرور در میان نیست؛ گاهی مسئله عزت‌نفس است.از خودت دفاع کن؛ این دفاع از ارزش کارت و مسیری‌ست که با زحمت ساخته‌ای.۳. در نهایت، تنها کسی که همیشه کنارت می‌ماند، خودت هستی.هیچ‌کس مسئول ساختن مسیر حرفه‌ای تو نیست. این طراحی، انتخاب و مسئولیت خود توست.۴. چیزها تمام می‌شوند، آدم‌ها تغییر می‌کنند و بعضی مسیرها دیگر جواب نمی‌دهند.پذیرش، تطبیق و حرکت، نشانه ضعف نیست؛ نشانه بلوغ است.۵. همه‌چیز با یک رؤیا شروع می‌شود،اما رؤیایی که اجرا نشود، فقط یک فکر قشنگ باقی می‌ماند.۶. بعضی خداحافظی‌ها دردناک‌اند، اما برای رشد ضروری.رها کردن آنچه کار نمی‌کند، فضا را برای چیزهای درست باز می‌کند.۷. به صدای درونت گوش بده، نه به قضاوت دیگران.آن‌ها مسیر تو را زندگی نمی‌کنند؛ تو می‌کنی.۸. یک «نه» صریح و شفاف، از ده‌تا قول مبهم ارزشمندتر است.شفافیت حرکت می‌سازد؛ ابهام، توقف.۹. گاهی می‌بری و گاهی یاد می‌گیری.و هر دو، اگر درست فهمیده شوند، یعنی رشد.۱۰. توجه زودگذر است، اما احترام می‌ماند.و چیزی که می‌ماند، سرمایه واقعی مسیر حرفه‌ای است.همه ما این درس‌ها را دیر یاد می‌گیریم؛ من هم همین‌طور.اما وقتی بفهمی‌شان، زاویه نگاهت به کار، تیم و آینده عوض می‌شود.</description><category>محمدسجاد خسروآبادی</category><author>محمدسجاد خسروآبادی</author><pubDate>Fri, 19 Dec 2025 15:57:24 +0330</pubDate></item><item><title>X‑Mind چیست و چرا این‌همه آدم از آن برای فکر کردن استفاده می‌کنند؟</title><link>https://virgool.ir/@m_97980780/x‑mind-چیست-و-چرا-این-همه-آدم-از-آن-برای-فکر-کردن-استفاده-می-کنند-igt6h9wydccy</link><description>تا حالا شده سرت شلوغ باشد،ایده داشته باشی،ولی ندانی از کجا شروع کنی؟یا بخواهی چیزی را یاد بگیری،اما اطلاعات توی ذهنت مثل کلاف درهم‌پیچیده باشند؟اینجا دقیقاً جایی است که X‑Mind به درد می‌خورد.X‑Mind یک نرم‌افزار برای «مرتب فکر کردن» است.نه به روش دفترچه و لیست، بلکه به شکلی که شبیه کار واقعی ذهن انسان است.X‑Mind دقیقا چیست؟X‑Mind یک نرم‌افزار Mind Mapping یا «نقشه ذهنی» است.به زبان ساده:به‌جای این‌که افکارت را خطی و پشت‌سرهم بنویسی،آن‌ها را شاخه‌شاخه، تصویری و مرتبط ثبت می‌کنی.در X‑Mind:یک ایده‌ی اصلی وسط صفحه استبقیه‌ی ایده‌ها مثل شاخه از آن بیرون می‌زنندهر شاخه می‌تواند شاخه‌های کوچک‌تر داشته باشددقیقا شبیه طرز کار مغز.Mind Map یعنی چی؟ (خیلی ساده)فرض کن می‌خواهی درباره‌ی «سفر» برنامه‌ریزی کنی.در حالت عادی شاید بنویسی:مقصدهزینهزمانوسایلاما در Mind Map:«سفر» وسط استچهار شاخه اطرافشهر شاخه، زیرشاخه داردهم دید کلی داری، هم جزئیات گم نمی‌شوند.X‑Mind چه مشکلی را حل می‌کند؟X‑Mind برای آدم‌هایی است که:ذهن شلوغ دارندایده زیاد دارندبا لیست‌های خطی کنار نمی‌آیندزود گیج می‌شونداین نرم‌افزار کمک می‌کند:فکرهایت را خالی کنیارتباط بین ایده‌ها را ببینیو به جای آشفتگی، تصویر داشته باشیچرا X‑Mind از نوشتن معمولی بهتر است؟نوشتن خطی یک مشکل دارد:فقط یک مسیر را نشان می‌دهد.ولی فکر کردن، خطی نیست.X‑Mind اجازه می‌دهد:همزمان چند مسیر را ببینیبرگردیشاخه جدید اضافه کنیبدون به‌هم ریختن کل نوشتهبرای همین خیلی‌ها می‌گویند:X‑Mind بیشتر شبیه «فکر کردن» است تا «نوشتن».X‑Mind بیشتر به چه دردهایی می‌خورد؟1. برنامه‌ریزیبرای:سفرپروژههدف‌های شخصیکارهای روزانهبه جای لیست خشک،یک نقشه‌ی زنده داری.2. درس خواندن و یادگیریدانشجوها از X‑Mind استفاده می‌کنند برای:خلاصه‌نویسیفهم ساختار یک درسارتباط دادن مفاهیمبه‌خصوص وقتی متن زیاد است.3. ایده‌پردازی (Brainstorming)وقتی هنوز هیچ چیز قطعی نیست،X‑Mind عالی است.ایده‌ها را می‌ریزی وسط صفحه،بعد کم‌کم مرتبشان می‌کنی.4. نوشتنقبل از:مقالهپست وبلاگپایان‌نامهحتی استوریخیلی‌ها اول نقشه ذهنی می‌کشند،بعد تبدیلش می‌کنند به متن.آیا X‑Mind فقط برای آدم‌های خلاق است؟نه.برعکس،خیلی از کاربرهای X‑Mind آدم‌هایی هستند که:نظم ذهنی ندارندیا از بی‌نظمی خسته شده‌اندX‑Mind قرار نیست نابغه‌ات کند،فقط کمک می‌کند ذهنت را ببینی.فضای X‑Mind چه حسی دارد؟این نرم‌افزار:شلوغ نیستاسترس نمی‌دهداجبار نداردمی‌توانی:هر وقت خواستی تغییرش بدهیشاخه‌ای را حذف کنیدوباره بسازیهمیشه حس «موقتی بودن» دارد، که برای فکر کردن خیلی مهم است.جمع‌بندیX‑Mind یک نرم‌افزار ساده استبرای کار پیچیده‌ای به نام «فکر کردن».نه قرار است زندگی‌ات را عوض کند، نه ذهنت را کامل مرتب کند.اما اگر:ذهنت شلوغ استایده داریو دوست داری قبل از عمل، واضح‌تر فکر کنیX‑Mind یکی از بهترین جاهایی است که می‌توانی فکرهایت را آنجا بچینی.</description><category>محمدسجاد خسروآبادی</category><author>محمدسجاد خسروآبادی</author><pubDate>Mon, 15 Dec 2025 15:32:06 +0330</pubDate></item><item><title>استفاده از تحلیل داده در جنگ جهانی !!!</title><link>https://virgool.ir/@m_97980780/استفاده-از-تحلیل-داده-در-جنگ-جهانی-oiypi0hzgeqg</link><description>در جنگ جهانی دوم، بمباران هوایی یکی از ابزارهای مؤثر متفقین برای از بین بردن زیرساخت‌های صنعتی و نظامی آلمان و درنهایت شکست آن کشور بود؛ اما این رویکرد همراه با تلفات سنگینی برای نیروی هوایی انگلیس و آمریکا بود. برآوردها حاکی است دوره عمر انتظاری خدمه یک بمب‌افکن بین ۱۲ تا ۱۵ مأموریت بود. در یک دوره‌ای از جنگ، اگر شما خلبان یک بمب‌افکن در اروپا بودید، شانس این‌که سالم از مأموریت خود بازگردید، چیزی در حدود ۵۰ درصد بود. رهبران نظامی به این نتیجه رسیده بودند که باید زره تقویتی بیشتری به هواپیماهای خود اضافه کنند تا آن‌ها را در برابر آتش ضدهوایی و جنگنده‌ها حفاظت کند؛ اما افزودن زره به همه قسمت‌های هواپیما امکان‌پذیر نبود و سرعت را بسیار کم و آن را آسیب‌پذیرتر می‌کرد؛ بنابراین آنان باید تصمیم می‌گرفتند که به کدام قسمت‌های هواپیما زره بیفزایند.به همین دلیل نیروی هوایی جمع‌آوری داده در مورد نقاطی را که هواپیماها آسیب می‌دیدند، شروع کرد. آنان پس از هر مأموریت هواپیماهایی را که بازگشته بودند به‌دقت بررسی می‌کردند و تعداد آسیب‌های ناشی از ترکش‌ها و گلوله‌ها و جای آن‌ها را روی هواپیما مشخص می‌کردند. به‌تدریج مشخص شد الگوی خاصی در توزیع آسیب‌ها روی هواپیما وجود دارد. شکل-۱ نشان می‌دهد که بیشتر آسیب‌ها روی ناحیه بال و بدنه هواپیما بوده است.بر این اساس کارشناسان نظامی نتیجه‌گیری کردند ازآنجاکه بیشترین گلوله‌ها به نواحی بال و بدنه هواپیما اصابت کرده پس این قسمت‌ها نیازمند زره حفاظتی بیشتر هستند. در نگاه اول این نتیجه‌گیری درست به نظر می‌رسد.اما آبراهام والد (Abraham Wald) با این نتیجه‌گیری کاملاً مخالف بود. او از جمله ریاضی‌دانانی بود که در جنگ جهانی دوم برای ارتش آمریکا کار می‌کرد. والد نشان داد که خطای مهمی در تحلیل‌ها صورت گرفته چراکه نتیجه‌گیری تنها بر اساس داده‌های هواپیماهایی است که از مأموریت بازگشته‌اند؛ اما در مورد هواپیماهایی که در طول مأموریت سقوط کردند، چه می‌دانیم؟ درواقع نمونه آماری به سمت هواپیماهایی که بازگشته‌اند سوگیری داشته است. والد نشان داد که دقیقاً برعکس، آن قسمت‌هایی از هواپیما نیاز به حفاظت دارند که در شکل-۱ کمترین اصابت را داشته‌اند. درواقع نقاط آسیب در هواپیماهای بازگشتی بیانگر آن است که اگر هواپیما در این نقاط هدف قرار داده شود، با احتمال بیشتری می‌تواند سالم بازگردد. پیشنهاد‌های والد در عمل به بهبود نرخ برگشت هواپیماها کمک کرد.</description><category>محمدسجاد خسروآبادی</category><author>محمدسجاد خسروآبادی</author><pubDate>Mon, 29 Apr 2024 12:05:57 +0330</pubDate></item><item><title>معرفی کتاب داستان سرایی با داده ها</title><link>https://virgool.ir/@m_97980780/معرفی-کتاب-داستان-سرایی-با-داده-ها-rdtnkw4vak7j</link><description>تقریبا تمام افراد می‌توانند داده‌ها را در نرم‌افزاری مثل اکسل وارد و نموداری خلق کنند. اما در این داده‌ها داستانی وجود دارد که نرم‌افزار شما از آن بی‌خبر است و نمی‌تواند به مخاطب توضیح بدهد. به همین دلیل اغلب افراد در فهم پیام شما سردرگم می‌شوند و تصور می‌کنند که فقط با مجموعه‌ای از داده‌ها و نمودارهای غیرقابل فهم محاصره شده‌اند.این‌جا درست جایی است که به شما نیاز است تا مفهوم نمودارها را به صورت مصور یا در بستری مناسب به مخاطب ارائه کنید. شما باید بتوانید داده‌ها و نمودارها را تحلیل‌کرده و پیام آن را به زبان ساده به افراد منتقل کنید.این موضوعی است که این کتاب بر آن تمرکز کرده است. کتاب «داستان‌پردازی با داده‌ها» راهنمایی گام به گام است که به شما کمک می‌کند مخاطب و بستر تعامل پیام را بشناسید و بدانید او به چه چیزهایی توجه می‌کند تا درنهایت بتوانید داده‌ها، اطلاعات و پیام‌هایتان را به درستی به مخاطبتان منتقل کنید.مرسی از انتشارات خوب آریانا قلم#سجاد_خسروآبادی#دیتا#داده#هوش_تجاری</description><category>محمدسجاد خسروآبادی</category><author>محمدسجاد خسروآبادی</author><pubDate>Sun, 15 Jan 2023 22:20:02 +0330</pubDate></item></channel></rss>