<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های احمد میان بندی</title>
        <link>https://virgool.io/feed/@lonebit</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-04-15 10:23:41</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/48387/avatar/qdZLDN.png?height=120&amp;width=120</url>
            <title>احمد میان بندی</title>
            <link>https://virgool.io/@lonebit</link>
        </image>

                    <item>
                <title>من چطور عکسها رو از شبکه‌های اجتماعی دانلود می‌کنم</title>
                <link>https://virgool.io/@lonebit/how-to-download-images-using-a-bookmark-ccwtcoioyhde</link>
                <description>سلامامروز میخواستم عکسای یک کالکشنم رو از سایت 500px.com دانلود بکنم و به یه دردسر کوچیک خوردم. این سایت با چند تا کد ساده جلو اینو گرفته که شما بتونید عکسشو دانلود کنید. مثلا اینکه اگه با گوشی بازش کنید و انگشتتون رو نگه‌دارید رو عکس، اون کاری رو که انتظار دارید مرورگر شما بکنه نخواهید دید. با این کار توقع داریم که یه دیالوگ با امکان ذخیره عکس ببینیم درسته؟ اما طراح این سایت جلوی این کار رو گرفته و عملا هیچ دیالوگی به شما نشون داده نخواهد شد.خب چیکار کنیم؟برای خود من قدم بعدی اینجا تلگرامه. لینک صفحه رو میندازم توی تلگرام تا اونجا instant viewی تلگرام عکس رو برام بارگیری کنه و من ذخیره‌ش کنم. اما عه! جلوی اینم گرفتن.خب خب. توی لپتاپ بازش می‌کنم و با کروم خیلی ساده یک راست‌کلیک و ذخیره عکس اما ده! اینجا جلوشو گرفته.خب خب مجبورم که برم سراغ devTools و عکسو از اونجا باز کنم. اَههههههه چه گیر سه پیچی داده! روی عکس یه overlay گذاشته که وقتی این کارو میکنیم مستقیما به element عکس نرسیم.چیکار می‌کنم؟ میرم سراغ یه extension یا همون افزونه دانلود عکس. خوبه اما بیشتر از چیزی که توقع دارم داره وقتمو میگیره. چیکار کنم؟ یه کد js نوشتم که آدرس صحفه رو بدم بهش عکسو برام دانلود کنه. آ آ! خیلی خنگم من، چون عکسو داره بعد از بارگذاری صحفه و توسط js باز میکنه با خوندن xml document صحفه چیزی گیرم نمیاد.خب دیگه خودت خواستی. xpath عکسو برمیدارم. یه بوکمارک درست می‌کنم و کد ساده دانلود عکسو میذارم توی بوکمارک! حالا وقتی روی بوکمارک کلیک می‌کنم اون عکسی که توی اون قسمت مشخص صحفه گذاشته شده دانلود میشه. چه کاریه این همه دردسر؟به نظر من چند تا خوبی داره:۱- خیلی سریعه!۲- هرجا توی گوگل لاگین کنم این بوکمارکو دارم! و میتونم راحت به بقیه در میونش بذارم. (share)۳- هیچ چیزی برای اجراش نمیخواد۴- برای هر شبکه اجتماعی یا بهتر بگم وب‌سایت، کافیه xpath اون چیزی که میخوام رو یک بار با devtools یک مرورگر بگیرم و تمام. یه بوکمارک جدید برای دانلود از اون شبکه اجتماعی.۵- یه چیز خفن‌تر! میشه اون کدی که میخوای رو یک جای دیگه بذاری، مثلا روی یک سرور و اینجا با بوکمارک لودش کنی و اجراش کنی! چه کارایی که نمیشه باش کرد.خب بریم سراغ کدشالبته شمایی که اینو میخونید استادید اما خب فقط برای نمونه، این محتوای بوکمارکه:(function()%7Bvar a %3D document.createElement(&#039;a&#039;)%3B%0Aa.href %3D document.getElementsByClassName(&#039;photo-show__img&#039;)%5B0%5D.src%3B%0Aa.download %3D &amp;quotoutput.png&amp;quot%3B%0Adocument.body(a)%3B%0Aa.click()%3B%0Adocument.body.removeChild(a)%3B%7D)()%3Bچقدر ترسناک شد! من بلد نیستم به اینا قیافه‌ی کد بدم یا واقعا ویرگول هیچ امکانی براش نداره؟هرچی هست همونطور که می‌بینید این که function ساده‌س که عکسی که کلاس photo-show__img داره رو پیدا میکنه باهاش یه لینک می‌سازه، روش کلیک میکنه و از dom حذفش میکنه. اینو اگه توی 500px.com اجرا کنید عکسی که بازش کردید رو دانلود میکنه.حالا برای هر شبکه اجتماعی‌ای که سر کارتون میذاره همین کار کافیه. اینجا من با className عکسو پیدا کردم، یه جا ممکنه xpath لازم باشه، یه جا id یا یه خط کد بیشتر.نظرتون رو بهم بگید [چشمک چشمک، چشمک].</description>
                <category>احمد میان بندی</category>
                <author>احمد میان بندی</author>
                <pubDate>Sat, 20 Jun 2020 17:01:32 +0430</pubDate>
            </item>
                    <item>
                <title>WORKFLOW ENGINE در مقابل STATE MACHINE</title>
                <link>https://virgool.io/@lonebit/workflow-engine-vs-state-machine-zvepybgpixxv</link>
                <description>قبل از هر چیز:این نوشته صرفا ترجمه خودمونی یه مقاله‌ست از قسمت بلاگ سایت workflowengine.io با همین عنوان یعنی WORKFLOW ENGINE VS. STATE MACHINE.چون من نمیدونم Workflow Engine و State Machine رو چی ترجمه کنم که درست باشه توی کل ترجمه از خود این کلمه‌ها استفاده میکنم.مقدمهوقتی که شرکتها تصمیم می‌گیرند که یه سیستمی رو پیاده‌سازی کنند که بهشون کمک کنه که فرایندهای کسب و کارشون رو مدیریت کنند، انتخابشون معمولا بین یه Workflow Engine و یه State Machine خواهد بود.هرچند که رفتار هر دو سیستم خیلی شبیه هم هست،ولی هر کدومشون چندتا ویژگی متمایز دارن. پس، لازمه که مزایا و معایب هر دو رو آنالیز کنیم تا بتونیم تصمیم بگیریم کدوم برای نیازهای شرکت ما مناسب‌تره.در کل تفاوت این دو تا توی تمرکزشون نهفته‌س. توی یه Workflow Engine انتقال به قدم بعدی وقتی انجام میشه که اکشن قبلی کامل شده باشه، در حالی که یک State Machine به یک رویداد خارجی نیاز داره تا موجب انشعاب به فعالیت بعدی بشه. به بیان دیگه، State Machine رویدادمحوره اما Workflow Engine نه. برای انتخاب به چی توجه کنیم؟برای اینکه بفهمیم کدوم سیستم رو انتخاب کنیم لازمه که چندتا از ویژگی‌های عمده‌شون رو بررسی کنیم. انعطاف‌پذیرییک Workflow Engine زمانی که تسک‌ها یکی بعد یکی دیگه انجام میشن از الگوی ترتیبی پشتیبانی می‌کنه. قدم بعدی توی workflow تا زمانی که قدم قبلی کامل نشده شروع نمیشه. مثال هم یک سندی که تا وقتی که توسط وکیل امضا نشده توسط رییس امضا نمیشه. نتیجه اینکه، به نظر میرسه Workflow Engine توی ماهیتش صلب و قطعیه. State Machine اما ناهمگام کار می‌کنه. چون قدم‌ها توی State Machine با رویداد/اکشن‌های مشخصی برداشته می‌شن، نمی‌شه گفت که قطعا به یه نظم دقیق انجام میشن. از این نظر State Machineها انعطاف‌پذیری بیشتری دارن. هرچند که، وقتی که شرکت یه نیازهای کاری جدید داره، وضعیت عوض میشه. یه State Machine رو تصور کنید که این سه تا وضعیت رو داره: درخواست دادن، پذیرفتن و نپذیرفتن درخواست. الان، ما می‌تونیم سه تا وضعیت رو ببینیم و خب انتقال‌های واضح بین اونها رو. بعدا شما تصمیم می‌گیرید که چندتا وضعیت دیگه هم اضافه کنید، مثلا، ویرایش درخواست و دعوت کردن به ثبت بازخورد. اینجا تعداد وضعیت‌ها و انتقال‌های بینشون به طور قابل توجهی زیاد میشه. به علاوه، هنگام اضافه کردن وضعیت‌های جدید، باید بدونید که نمی‌تونید یکی از اون‌ها رو بدون شکستن بقیه تغییر بدید. در نتیجه بجای اینکه خیلی ساده چندتا عملکرد سیستم رو عوض کنید، خودتون رو توی موقعیتی می‌بینید که دارید یک سیستم جدید رو از پایه می‌سازید. به همین خاطر، وقتی که می‌بینید که قوانین کسب و کارتون ممکنه در طول زمان تغییر کنه (‌ که تقریبا اجتناب‌ناپذیر هست) Workflow Engine گزینه بهتریه. قابل درک بودندر نگاه اول استفاده از State Machine ظاهرا ساده به نظر میاد. توسعه‌دهنده فقط لازمه که فرایندهای شرکت رو بررسی کنه و یک دیاگرامی رسم کنه از چندتا وضعیت، و رویدادهایی که باعث انتقال به این وضعیت‌ها میشن.اما مشکل اصلی State Machine اینه که در عمل، فقط به درد بیزنس‌هایی با مشکلات تک‌بعدی می‌خوره. State Machine برای پروژه‌هایی که چند وضعیت متمایز دارن خوب کار می‌کنه، اما وقتی که سیستم پیچیده‌تری داشته باشیم دچار خطا میشه. یه CRM ساده که با State Machine ساخته شده ممکنه به مشکلاتی زیادی بخوره. بعد شما به انتقال وضعیت‌های زیادی فکر می‌کنید، مثل ثبت یه مشتری جدید، شروع پروژه جدید یا لغو. به علاوه، هر کدوم از این وضعیت‌ها می‌تونه به وضعیت‌های جدید تقسیم بشه. مثلا، شما ممکنه بخواید یه دلیل برای لغو اضافه کنید یا اینکه اضافه کنید که یه مشتری جدید از طریق چه کانالی پیدا شده (ایمیل، تماس تبلیغاتی و غیره). وقتی که تلاش کنید این وضعیت‌های جدید رو رسم کنید، سیستم به زودی غیرقابل مدیریت میشه.ممکنه در نگاه اول Workflow Engineها خیلی پیچیده به نظر بیان، چون چندتا عنصر جدید باید پیاده بشن. اما برای سیستم‌های بزرگتر این مناسب‌ترین راه حله. وقتی که به خوبی پیاده‌سازی بشه، مزایا به پیچیدگی‌ها می‌چربه. به نظر میاد Workflow Engineها برای مدیریت فرایندهای بیزنس مدل بهتری هستن.استفاده از اونها برای سیستم‌های مدیریت وظایف هم رایجه،به دلیل قابلیت اختصاص‌دادن سریع وظایف به مجریای مختلف. به علاوه، Workflow Engineها مستندات ثابتی دارن. یه توسعه‌دهنده جدید می‌تونه بدون صرف ساعت‌های زیاد و بررسی کدهای بی‌پایان برنامه، سیستم رو راحت بشناسه. خواناییهمکاری افراد بیرون و درون شرکت برای توسعه کسب و کار لازمه. پس، یه پلتفورم مشترک که توسط شرکت استفاده میشه باید برای همه اعضا تمیز و واضح باشه. مدیرها باید بتونن ببینن که یه اکشن توی هر زمانی توی کدوم وضعیت بوده و هست. معمولا State Machine خوانایی خوبی نداره. در هر لحظه فقط می‌تونه یک وضعیت رو نشون بده و امکان اجرای موازی رو نداره. پس وقتی که میخواید رویدادهایی رو معرفی کنید که ممکنه طبق شرایطی اتفاق بیوفتن، تعداد وضعیت‌های شما دو برابر میشه. وقتی هم که تعداد وضعیت‌ها خیلی زیاد بشه، خوانایی سیستم به صفر میل می‌کنه. پیش‌بینی‌پذیریدر مقایسه با State Machineها، Workflow Engineها ذاتا قابل پیش‌بینی‌ترن. اونها از شرایطی استفاده می‌کنن که همیشه از ابتدا تعیین‌شده‌ن. فرض کنید که شما نیازمند تایید اسناد توسط هردو نفر مدیر مستقیم و مدیر کل هستید. ممکنه سند توسط هر کدومشون اول امضا بشه. اگه یه Workflow Engine رو انتخاب کنید، این روند از قبل تعیین شده‌ست. مثلا اول مدیر مستقیم سند رو امضا میکنه، بعد مدیر کل. در نتیجه، مدیر کل سند رو نمی‌گیره تا وقتی که مدیر مستقیم امضاش کنه. این روند هم هیچ‌وقت تغییر نمی‌کنه.در یک الگوی State Machine، این کاربره که تصمیم می‌گیره که کدوم مدیر اول باید سند رو امضا کنه. در این مثال تصمیم‌ها رو افراد می‌گیرن. اما وقتی State Machineها بدست عوامل بیرونی کنترل بشن، ممکنه رویدادهای مختلفی منجر به تکمیل شدن روند بشن. از این نظر، سود Workflow Engine بیشتره، چون شما رو توی کل روند هدایت می‌کنه. نتیجهاگر سیستم شما خیلی پیچیده نیست State Machine برای شما راه حل خوبیه. شما می‌تونید با مشخص کردن تمام وضعیت‌ها و رویدادهای منتهی به وضعیت‌ها، اون رو طراحی کنید. به طور کلی State Machineها برای پروتکل‌های شبکه و بعضی از سیستم‌های جاسازی شده خوب کار میکنن. پیاده‌سازی ‌Workflow Engine راه خوبیه برای مدیریت فرایند کسب و کار. راه حل خوبیه برای اختصاص وظایف، CRM و سیستم‌های پیچیده دیگه. در کل، هدف غاییش بهبود فرایندهای کسب و کار شرکت شماس. همینم هست که برای اتوماسیون فرایند کسب و کار مناسبش کرده.</description>
                <category>احمد میان بندی</category>
                <author>احمد میان بندی</author>
                <pubDate>Wed, 22 May 2019 18:51:04 +0430</pubDate>
            </item>
            </channel>
</rss>