moaminsharifi/fa-wiki-spell-checker huggingface dataset:
وجود کد غیرقابل دسترسی می‌تواند به علت عوامل مختلفی باشد. از جمله:
در پنج مورد اخیر، کد غیرقابل دسترسی به عنوان بخشی از یک میراث در برنامه باقی مانده‌است، یعنی کدی است که زمانی مفید بوده اما دیگر مورد استفاده یا مورد نیاز نیست. با این حال، کد غیرقابل دسترس ممکن است بخشی از اجزای پیچیده (کتابخانه، ماژول یا روال) باشد، که در آن کد در ارتباط با داده‌های ورودی مختلف همچنان مفید است یا در شرایطی که در محیط زمان فعلی برآورده نشده‌است، بنابراین کد مربوطه را غیرقابل دسترسی می‌کند، اما می‌تواند در سایر محیط‌های زمان اجرا، که مؤلفه آن توسعه یافته‌است، رخ دهد.
یک مثال از چنین کدهای غیرقابل دسترسی ممکن است اجرای یک تابع printf در یک کتابخانه زمان اجرا کامپایلر باشد، که شامل کد پیچیده برای پردازش تمام آرگومان‌های رشته ممکن است، که فقط یک زیر مجموعه کوچک از آن در واقع در برنامه استفاده می‌شود. بدون کامپایل مجدد کتابخانه زمان اجرا، کامپایلرها به‌طور معمول نمی‌توانند بخش کد استفاده نشده را در زمان کامپایل حذف کنند.
قطعه کد زیر به زبان C را در نظر بگیرید:
int foo (int X, int Y)
تعریف int Z = X * Y هرگز به عنوان نتیجه تابع برگردانده نمی‌شود؛ بنابراین، تعریف Z را می‌توان از بین برد.
یک نمونه از کد غیرقابل دسترسی اشکال SSL/TLS اپل که به‌طور رسمی با عنوان CVE-2014-1266 شناخته شده‌است که به دلیل عدم دسترسی به کد، حاوی نقص امنیتی بزرگی شده بود، و به‌طور غیررسمی با نام "اشکال goto fail" شناخته شده‌است. بخش کد مربوطه را در زیر مشاهده می‌کنید:
static OSStatus
SSLVerifySignedServerKeyExchange(SSLContext *ctx, bool isRsa, SSLBuffer signedParams,
fail:
در اینجا دو فراخوان موفق codice_1 وجود دارد. در ساختار نحو زبان C دومین فراخوان بدون شرط است و از این رو همیشه بررسی نهایی(codice_2 check) را از قلم می‌اندازد. در نتیجه بعد از عملیات موفقیت‌آمیز به روزرسانی SHA1، مقدار خطا(codice_3) مقدار موفقیت‌آمیز بودن عملیات را بازمی‌گرداند و تأیید امضا هرگز شکست را اعلام نخواهد کرد چون بررسی نهایی حذف شده‌است.
در نتیجه، کد غیرقابل دسترسی، فراخوانی به تابع نهایی است که باید قابل دسترسی می‌بود. چندین روش برنامه‌نویسی خوب وجود دارد که می‌تواند از رخ دادن این اشکال جلوگیری کند، نظیر بازبینی کد، استفاده مناسب از فاصله گذاری یا آکولاد گذاری و تجزیه و تحلیل همراه با آزمون کد. با استفاده از کامپایلر کلنگ و استفاده از قابلیت codice_4 که شامل تجزیه و تحلیل کد غیرقابل دسترسی است، می‌توانیم از این اشکال با خبر شویم.
تشخیص کدهای غیرقابل دسترسی گونه‌ای ازتحلیل ایستا است و شامل انجام تجزیه و تحلیل جریان کنترل برای پیدا کردن کدی است که هرگز بدون در نظر گرفتن مقادیر متغیرها و سایر شرایط در زمان اجرا، اجرا خواهد شد. در برخی از زبان‌ها (مثلاً جاوا) برخی از کدهای غیرقابل دسترسی صریحاً مجاز نیستند. بهینه‌سازی که کد غیرقابل دسترس را حذف می‌کند به عنوان حذف کد مرده شناخته می‌شود.
کد ممکن است در نتیجهٔ تحولات داخلی انجام شده توسط بهینه‌سازی کامپایلر غیرقابل دسترس شود (به عنوان مثال از بین بردن عبارات مشترک).
در عمل پیچیدگی تجزیه و تحلیل انجام شده تأثیر قابل توجهی بر مقدار کدهای غیرقابل دسترسی که شناسایی شده‌است، دارد. به عنوان مثال یک تجزیه و تحلیل ساده کد زیر نشان می‌دهد که کد درون گزاره شرطی زیر غیرقابل دسترسی است.
int N = 2 + 1;
if (N == 4)
در بعضی موارد، رویکرد عملی ممکن است ترکیبی از معیارهای غیرقابل دستیابی ساده و استفاده از پروفایل برای رسیدگی به موارد پیچیده‌تر باشد. پروفایل به‌طور کلی نمی‌تواند چیزی دربارهٔ عدم دسترسی یک قطعه کد را اثبات کند، اما ممکن است یک اکتشافی خوب برای پیدا کردن کدهای غیرقابل دسترس باشد. هنگامی که قطعه کد مشکوک یافت می‌شود، روش‌های دیگری مانند ابزار قدرتمند تجزیه و تحلیل کد یا حتی تجزیه و تحلیل به صورت دستی می‌تواند مورد استفاده قرار گیرد تا تصمیم بگیرد کد واقعاً در دسترس نیست.
لیست‌های زیر رویدادهای اتفاق افتاده در طول سال ۱۹۹۰ در افغانستان است.
مبارزه شدید در ابتدای سال بین نیروهای دولتی و مجاهدین بوقوع پیوست، اما در زمستان هیچ پیروزی نظامی برای هیچ‌کدام از طرفین جنگ کسب نشد. در مواجهه با بن‌بست گسترده برای پایان دادن به جنگ ۱۲ ساله، مسکو و واشینگتن توافق کردند که باید انتخاباتی برای تصمیم‌گیری در خصوص آینده سیاسی این کشور برگزار شود. هر دو ابرقدرت توانستند موافقت کنند که نجیب الله در دولت موقت چه نقشی می‌تواند داشته باشد. با این حال واشینگتن اصرار دارد که نجیب الله از کنترل ارتش و اطلاعات را رها کند، تقاضایی که نجیب الله و مسکو رد می‌کنند. با این وجود رئیس‌جمهور موافقت می‌کند در صورت برگزاری انتخابات جدید کنترل بر رسانه‌های دولتی و تعداد محدودی از نیروهای نظامی را به کمیسیون موقت واگذار کند. شوروی پس از خروج از افغانستان پس از ۹ سال، ماهیانه حدود ۵۰۰ میلیون دلار سلاح و تجهیزات به می‌فرستاد. ایالات متحده نیز نزدیک به ۳۰۰ میلیون دلار به مجاهدین افغانستانی در پاکستان کمک کرد. واشینگتن تلاش زیادی برای کاهش کمک به گلبدین حکمتیار که چهره بنیادگرا و ضد غربی از هفت رهبر مقاومت را داشت در نظر گرفت. این لابی‌گری پس از آن صورت گرفت که گزارش‌ها متعددی از جنایات او که افراد غیرنظامی و مجاهدین دیگر را کشته بود صورت گرفت. نخست‌وزیر پاکستان، بی‌نظیر بوتو نیز به دنبال کاهش نقش رهبران جهادی هست اما ارتش پاکستان که طرفدار افزایش جنگ‌های داخلی در افغانستان مخالفت کرده و کمک‌ها به حکمتیار به‌طور چشمگیری افزایش می‌یابد. بی‌نظیر بوتو نیز در ۶ اوت با مخالفت جناح‌های راست اخراج شد. همزمان با تحویل تسلیحات، حملات موشکی در دو هفته اول ماه اوت در کابل صورت گرفت که منجر به کشته حدود ۶۰ تن و زخمی شدن عده دیگر شد.
وزیر دفاع ستوان ژنرال شهنواز تنی متهم به حمایت از نیروی هوایی و برخی از بخش‌های ارتش برای انجام کودتای ناموفق علیه دولت نجیب الله شد.
فضل حق خالقیار جایگزین کشتمند به عنوان نخست‌وزیر شد.
وضعیت اضطراری برداشته شده.
یک لویه جرگه در کابل برگزار شد که اصلاحاتی در قانون اساسی را پدیدآورد که تشکیل احزاب سیاسی مختلف را امکان‌پذیر و انحصار قدرت از حزب دموکراتیک خلق و جبهه ملی را پایان داد.
نجیب الله حزب وطن یا حزب میهن را به عنوان حمایت توده مردم ایجاد می‌کند. هرچند تلاش خوبی به نظر می‌رسید اما اکثر سمت‌های بالایی حزب در اختیار افراد سابق حزب دموکراتیک خلق بود.
عمده رهبران جهادی یک شورای فرماندهی را در پاکستان تشکیل می‌دهند. این اقدام به عنوان یک تلاش عمدی برای کنار گذاشتن دولت در تبعید که در ابتدا برای جایگزین شدن پس از دولت نجیب الله تشکیل شده بود و بنابر مسائل محرمانه منتفی شده بود به نظر می‌رسید. گزارش‌ها حاکی از آن هست که اختلافات قومی منجر به ناکامی مجاهدین تحت حمایت آمریکا برای کنار گذاشتن دولت کابل شده‌است.
پس از مدتی آرامش، نیروهای مجاهدین مستقر در پاکستان حملات جدیدی را آغاز می‌کنند و ادعا می‌کنند چند پاسگاه استراتژیک در جنوب و مرکز ترین کوت و قلات در ولایات اروزگان و زابل را تصرف کرده‌اند. این نیروها همچنین در چهار ولایت دیگر و اطراف کابل در حال جنگیدن هستند. آخرین حمله‌ای که نیروهای به رهبری حکمتیار بر عهده دارد به عنوان مقدمه برای حمله به کابل قلمداد می‌شود اما دیگر رهبران میانه مجاهدین به علت کمبود نیرو و تجهیزات با حمله به کابل مخالفت کرده و ادعا می‌کنند توان غلبه بر نیرو هوایی دولت را ندارند.
حدود ۴۰ تن از رهبران جهادی در شمال پاکستان ملاقات کرده و توافق می‌کنند که اختلافات قومی را کنار گذاشته و یک استراتژی هماهنگ برای مقابله با حکمتیار تعیین کنند.
گزارش شده‌است که نیروهای مجاهدین ۲۰۰ تن از سربازان دولتی که تسلیم شده بودند را کشته‌اند.
در ۲ دسامبر سال ۱۹۹۰ در مارتن بین‌المللی کالیفرنیا که در ساکرامنتو - کالیفرنیا برگزار شده بود، وحید کریم رکورد ملی را با ۲ ساعت و ۲۸ دقیقه و ۴۶ ثانیه در مسابقه مارتن ثبت کرد.
روشیانو (به ایتالیایی: Rosciano) یک کومونه در ایتالیا است که در استان پسکارا واقع شده‌است. روشیانو ۲۷ کیلومتر مربع مساحت و ۳٬۲۴۳ نفر جمعیت دارد و ۲۵۳ متر بالاتر از سطح دریا واقع شده‌است.
در علوم کامپیوتر، تجزیه به عملی اطلاق می‌شود که قواعد ساختاری یک متن را آشکار می‌سازد. این گام مقدمه معنی کردن آن متن است. تجزیه پایین به بالا به یک نوع تجزیه کردن متن ورودی بر اساس ساختار گرامری از پیش تعیین شدهای گفته می‌شود که طی آن از
پایین‌ترین بخش درخت تجزیه یعنی برگ‌های آن شروع می‌کنیم و با اعمال قواعد ساخت روی جمله آنقدر ادامه می‌دهیم تا به ریشه درخت برسیم.
درخت اشتقاق یک ابزار انتزاعی برای بیان ساختار یک گرامر مستقل از متن است. ریشه این درخت متغیر شروع گرامر و برگ‌های آن ثوابت این گرامر هستند. از کنار هم قرار دادن برگ‌های این درخت یک جمله که در زبان معادل آن گرامر وجود دارد بدست می‌آید.
در تجزیه پایین به بالا برخلاف تجزیه بالا به پایین که در ابتدا بدون هیچ دانشی صرفاً با حدس زدن براساس اولین نشانه عمل تجزیه آغاز می‌شود، با نگاه کردن به برگ‌های درخت در واقع نسبت به اعمال اشتقاق می‌توان شهود گرفتCompilers: Principles, Techniques, and Tools (2nd Edition), by Alfred Aho, Monica Lam, Ravi Sethi, and Jeffrey Ullman, Prentice Hall 2006.. در واقع تجزیه پایین به بالا با خواندن از سمت چپ و آمدن به سمت راست معادل اشتقاق از راست‌ترین متغیر است که یکی از روش‌های اشتقاق در یک گرامر است. در تجزیه پایین به بالا با نگاه کردن به برگ‌های درخت اشتقاق و مقایسه کردن با قواعد ساخت درمی‌یابیم در هر مرحله طبق کدام قاعده بایستی عمل اشتقاق صورت می‌گرفته تا حاصل چنین برگی باشد.
تجزیه پایین به بالا از طریق شیفت و کاهش دادن صورت می‌گیرد. به این معنی که تمام ورودی ابتدا خارج از دسترس است سپس به تدریج با عمل شیفت یک نشانه در اختیار تجزیه‌کننده قرار می‌گیرد. تجزیه‌کننده تعیین می‌کند آیا قاعده اشتقاقی برای این نشانه وجود دارد یا نه. اگر قاعده‌ای وجود نداشت دوباره عمل شیفت دادن صورت می‌گیرد. انی عمل آنقدر تکرار می‌شود تا جمع نشانه‌های در دسترس از طریق قاعده‌ای در گرامر قابل ساخته شدن باشد. در آن‌صورت عمل کاهش دادن صورت می‌گیرد. به مجموعه نشانه‌هایی که باعث صورت گرفتن یک کاهش می‌شوند هندل(handle) گفته می‌شود.
در این روش تجزیه برای تجزیه صحیح و استفاده نکردن از قواعد ساخت اشتباه در هر راس درخت از تجزیه LR استفاده می‌کنیم.
Parsing Techniques; A Practical Guide(2nd Edition), by Dick Grune and Ceriel J.H. Jacobs, Springer 2008. تجزیه LR
به این معنی است که از سمت چپ جمله ورودی شروع می‌کنیم و به سمت راست می‌رویم و پس از پیدا شدن هندل عمل کاهش را انجام می‌دهیم. نام LR هم واقف بر همین دو موضوع است (L برای Left to right و R برای Reduce). این روش ابتدایی با نام (LR(0 شناخته می‌شود که روش ناقصی است. سه نوع تجزیه‌گر صحیح‌تر که از این روش مشتق می‌شوند به ترتیب قدرتشان عبارتند از: (LR(1)، LALR(1 و (SLR(1.
پیش‌تر اشاره شد که به تدریج نشانه‌ها در اختیار ما برای بررسی قرار می‌گیرند. برای نشان دادن این‌که تا کجا جلو رفته‌ایم در این روش از نقطه(codice_1) استفاده می‌شود. به این ترتیب حالات متفاوتی برای قرار داشتن نقطه وجود دارد. می‌توان با یک ماشین حالت متناهی حالات مختلف و نحوه رسیدن به هر حالت را مدل کرد. در تصویر متحرک روبرو نحوه ساخته شدن این ماشین حالت متناهی را برای گرامر داده شده مشاهده می‌کنید.
پس از ساختن این ماشین حالت متناهی می‌توان یک رشته گرفت و با شروع از سمت چپ به تدریج هندل‌ها را به کمک ماشین ساخته شده پیدا کرد و عمل کاهش را انجام داد. نکته حائز اهمیت در این مرحله ساختن یک جدول است. این جدول به تعداد استیت‌های ماشین حالت متناهی ردیف و به تعداد نشانه‌ها ستون دارد. هر استیت ماشین باید بیانگر یک حرکت باشد:
(عمل قبول کردن رشته به این معنی که درخت اشتقاق آن به دست آمده‌است هم ذیل کاهش در نظر گرفته می‌شود)
استیت‌های شیفت استیت‌هایی هستند که نقطه به پایان عبارت نرسیده‌باشد و استیت‌های کاهش استیت‌هایی هستند که نقطه به پایان عبارت تک تک عبارات داخل آن استیت رسیده‌باشد. اینجاست که ضعف (LR(0 مشخص می‌شود. همانگونه که در شکل روبرو دیده می‌شود به‌طور مثال وضعیت استیت‌های ۰، ۲ و ۴ متناقض است. در این استیت‌ها هم عباراتی وجود دارند که آماده کاهش هستند و هم عباراتی هستند که باید برای رسیدن به هندل مناسب برای آن‌ها عمل شیفت را انجام داد. به این تناقض، تناقض شیفت-کاهش می‌گوییم. نوع دیگری از تناقض وجود دارد که نام تناقض کاهش-کاهش است. به این ترتیب ۳ روش دیگر برای تجزیه معرفی شدند که براساس دیدن نشانه بعد از نقطه هستند:
این روش دقیقا مشابه روش قبل است ولی در حین تجزیه علاوه بر نکاتی که تا الان به آن‌ها توجه می‌کردیم، نشانه بعد از نقطه را هم مدنظر قرار می‌دهیم و به این ترتیب از به وجود آمدن تناقض‌های گفته شده جلوگیری می‌کنیم. در این مرحله هم می‌توان ماشین حالت متناهی ساخت و مشابه قبل هر استیت شامل چند عبارت گرامری است که هر عبارت یک نشانه جلوی خود می‌بیند. به این نشانه اصطلاحا Lookahead Token گفته می‌شود و بیانگر این است که نشانه بعد از حرف غیرپایانه‌ای در جمله چه چیزی است. طبیعتا ساخت این ماشین حالت متناهی بخاطر در برگرفتن حالات بیشتر دشوارتر است.
در شکل روبرو یک نمونه از جدول اشتقاقی که طی این روش ساخته می‌شود را مشاهده می‌کنید. در خانه‌های این جدول مشخص شده با توجه به استیت ماشین حالت متناهی و نشانه پیش‌رو چه عملی انتخاب شود. عبارت codice_2 در یک خانه به معنی شیفت دادن و رفتن به استیت [عدد] است و codice_3 به معنی کاهش دادن طبق قاعده شماره [عدد] است.
این روش خود نمونه‌ای از روش قبلی است ولی برای جلوگیری از پیچیدگی ماشین حالت متناهی روش قبل و ساده‌سازی معرفی شده‌است. این روش با توجه به اینکه ساده‌ شده روش (LR(1 است به قدرتمندی این روش نیست و ضعف‌هایی دارد. در این روش مجموعه‌ای از نشانه‌ها که طبق قواعد گرامر می‌توانند پس از هر حرف غیرپایانه‌ای بیایند برای هرکدام از این حرف‌ها در نظر گرفته می‌شود. حال به‌جای در نظر گرفتن تمام حالات نشانه پیش‌رو، تنها بررسی می‌کنیم نشانه پیش‌رو حرف غیرپایانه‌ای یک قاعده در مجموعه گفته‌شده حضور دارد یا خیر. به مجموعه گفته‌شده مجموعه دنبال‌کننده‌ها یا Follow set گفته می‌شود. همانطور که گفته شد در این روش به دلیل اعمال محدودیت برای جلوگیری از گستردگی ماشین حالت متناهی ضعف‌هایی وجود دارد. به‌طور مثال در این روش ممکن است با تناقض شیفت-کاهش روبرو شویم.
این روش هم برگرفته از روش (LR(1 است ولی برای جلوگیری از گسترده شدن ماشین حالت متناهی در حین ساختن استیت‌ها بررسی صورت می‌گیرد که حتی‌الامکان استیت جدید اضافه نشود. این به دو صورت ظاهر می‌شود:
مارکوس آلونسو ممکن است به یکی از موارد زیر اشاره داشته باشد:
آلبرت هندرسون (زاده -درگذشته ) بازیگر آمریکایی بود.
از فیلم‌های معروف او می‌توان به بازی در فیلم آقای جونز و ترنسرها ۲ اشاره کرد.
راجر یوآن (زاده ) بدل‌کار، بازیگر آمریکایی است.
از فیلم‌های معروف او می‌توان به بازی در فیلم گوشه قرمز، از چاندی چوک به چین اشاره کرد.
سامانه نوع، یا سیستم نوع یا تایپ‌سیستم (انگلیسی: Type system) مجموعه‌ای از قوانین است که ویژگی «نوع» را به مفاهیم مختلف یک زبان برنامه‌نویسی، مانند متغیرها، رویه‌ها و عبارات، نسبت می‌دهد. هر زبان برنامه‌نویسی دارای تعدادی نوع است که داده ساختارهای مختلف مورد استفاده در برنامه‌ها را دسته‌بندی می‌کنند.
در علوم رایانه یک سیستم نوع نحوهٔ ارتباط زبان برنامه‌نویسی را با مقادیر و عبارات تعیین می‌کند و تحت این روابط آن‌ها را دسته‌بندی کرده و رفتار مناسب آن‌ها را با یکدیگر تعیین می‌کند. یک نوع در داده‌ها به معنای یک دسته از مقادیر با ویژگی‌های عمومی یکسان است. البته باید در نظر داشت که ممکن است این ویژگی‌ها به‌طور واقعی در یک برنامه در حال اجرا، وجود نداشته باشد. سیستم نوع در بین زبان‌های برنامه‌نویسی مختلف به‌طور کلی متفاوت است. اصلی‌ترین تفاوت در مورد ایستا بودن یا ایجاد در زمان اجرا انواع داده در زبان‌های مختلف می‌باشد.
کامپایلرها با استفاده از این سیستم نوع در صدد بهینه‌سازی رفتار خود در زمینهٔ ذخیره‌سازی فضا برمی‌آید.
عضوهای داده‌ای استاتیک یک کلاس، به عنوان «متغیرهای کلاس» شناخته می‌شوند، زیرا فقط یک مقدار منحصر به فرد برای همه‌ی اشیای آن کلاس وجود دارد. محتوای آن‌ها در یک شیء از آن کلاس با دیگری، متفاوت نیست .
هدف اصلی سیستم انواع جلوگیری از وقوع خطاهای اجرایی است. خطاهای اجرایی عموماً به صورت اشکال در روند اجرایی برنامه بروز پیدا می‌کنند. البته ممکن است برخی خطاهای اجرایی بدون داشتن اثر قابل مشاهده‌ای باعث تخریب داده شوند.
متغیرهای یک زبان می‌توانند مقدارهای مختلفی بگیرند. حد بالای این مقادیر نوع نامیده می‌شود. برای مثال زبان برنامه‌نویسی جاوا دارای نوع دادهٔ بولی (boolean) است که دو مقدار درست (true) و نادرست (false) به خود می‌گیرد. به زبان‌هایی که مقادیر یک متغیر را از طریق نسبت دادن نوع به آن محدود می‌کنند، زبان‌های دارای نوع‌داده گفته‌می‌شود. متغیرهای زبان‌های فاقد نوع‌داده نوع ندارند. زبان‌های فاقد نوع‌داده ممکن است یک داشته‌باشند که همهٔ مقادیر را بپذیرد. عملیات در زبان‌های فاقد نوع‌داده می‌توانند روی متغیرهای با نوع نادرست اعمال شوند.
خطاهای اجرایی به‌طور کلی به دو دسته تقسیم می‌شوند.
قسمتی از برنامه که منجر به وقوع خطای غیرتوقفی نشود را امن می‌نامند. اگر همهٔ قسمت‌های برنامه‌های نوشته‌شده به یک زبان برنامه‌نویسی امن باشند، آن زبان را یک «زبان برنامه‌نویسی امن» می‌نامند. زبان‌های برنامه‌نویسی فاقد نوع‌داده از طریق بررسی برنامه در زمان اجرا از ایمنی آن اطمینان حاصل می‌کنند. این در حالی‌است که زبان‌های برنامه‌نویسی دارای نوع‌داده برنامه را در زمان کامپایل بررسی می‌کنند و در صورت ایمن نبودن برنامه، آن را اجرا نمی‌کنند. البته ممکن است این زبان‌ها در زمان اجرا نیز برنامه را بررسی کنند.
نوع‌داده‌های یک زبان برنامه‌نویسی از لحاظ صوری بودن تعریف‌شان با دیگر اجزای زبان تفاوت‌هایی دارند. تعریف انواع داده از این حیث مابین یادداشت‌های غیر صوری یک زبان و تعریف مشخصات جزئی‌تر است؛ از یادداشت‌های زبان صوری‌تر است و از مشخصات جزئی راحت‌تر قابل پردازش است.
ویژگی‌های پایه‌ای یک سیستم انواع عبارت‌اند از:
بررسی گونه (Type-checking) فرایندی است برای اثبات اینکه هر عملیاتی که در برنامه اجرا می‌شود قواعد گونه‌ای زبان را رعایت می‌کند. به‌طور کلی به این معناست که تمامی عملوندها در تمامی گزاره‌ها دارای گونه مناسبی هستند.
بررسی کردن معنایی بر دو قسم است:
یک زبان ایستا گونه است اگر گونه متغیرها به جای زمان اجرا در زمان کامپایل مشخص شود. از مثال‌های معروف از زبان‌های ایستا-گونه می‌توان به زبان‌های Ada, C, C++, C#, JADE, Java, Fortran, Haskell, ML, Visual Basic, Pascal, and Scala اشاره کرد.
مزیت بزرگ زبان‌هایی که از بررسی گونه ایستا استفاده می‌کنند این است که می‌توانند بسیاری از خطاها و اشتباهات را به سرعت در مرحله توسعه شناسایی کنند. ایستا گونگی معمولاً کدهای کامپایل شده‌ای را نتیجه می دهند که سریع تر اجرا می‌شوند زیرا زمانی که کامپایلر می‌داند که دقیقاً از چه گونه اطلاعاتی استفاده می‌کند می‌تواند کدهای ماشین بهینه تری تولید کند. ( کدهایی که سریع ترند یا حافظه کمتری اشغال می‌کنند)
استفاده کنندگان از بررسی گونه ایستا تنها از اطلاعاتی که در زمان کامپایل مشخص شده‌است استفاده می‌کنند اما می‌توانند مطمئن باشند که برای تمامی حالات اجرا، برنامه در حالت صحیح باقی می ماند، که این نیاز به تکرار بررسی گونه را در زمان اجرا از بین می برد.
یک بررسی‌کننده گونه ایستا به سرعت خطاهای گونه‌ای را در مسیرهای کد کمتر مورد استفاده پیدا می‌کند اما بدون بررسی ایستا گونه حتی با وجود پوشش 100% کد با تست ممکن است این چنین خطاهایی کشف نشوند.
نقطه منفی بررسی ایستا این است که اگر شما بخواهید در یک زبان با بررسی‌کننده گونه ایستا یک برنامه با خطا گونه‌ای را به صورت دستی اجرا کنید ، حتماً بررسی‌کننده گونه متوجه می‌شود و یک خطای گونه‌ای را ایجاد می‌کند و مانع اجرا برنامه شما می‌شود.
بررسی گونه پویا فرایندی است که ایمن بودن گونه‌های یک برنامه را در زمان اجرا تصدیق کند. زبان‌های معروف با بررسی‌کننده گونه پویا عبارتند از :
Groovy, JavaScript, Lisp, Lua, Objective-C, PHP, Prolog, Visual Basic, Python, Ruby, Smalltalk and Tcl.
بیشتر زبان‌های ایمن-گونه دارای سبکی از بررسی گونه پویا هستند حتی اگر آن‌ها از یک بررسی‌کننده ایستا نیز استفاده کنند. دلیل این امر این است که بررسی گونه‌ای ایستای بسیار از ویژگی‌ها و خواص مفید غیرممکن (یا بسیار دشوار) است. برای مثال برنامه‌ای را در نظر بگیرید که دو گونه A , B را تعریف کرده که A زیرگونه B است. اگر برنامه سعی کند که یک مقدار از گونه A را به گونه B تبدیل کند که تبدیل رو به پایین این عمل زمانی مجاز خواهد بود که مقدار تبدیل شونده خود از گونه B باشد بنابراین یک بررسی‌کننده پویا گونه لازم است که تصدیق کند که این عمل ایمن است. از دیگر قابلیت‌های زبانی که بررسی پویا گونه اجازه می دهد می‌توان به dynamic dispatch, late binding, و reflection اشاره کرد.
برخلاف بررسی‌کننده‌های گونه ایستا ، بررسی‌کننده‌های گونه پویا ممکن است باعث خرابی برنامه در زمان اجرا به علت خطاهای گونه‌ای شوند. در بعضی از زبان‌های برنامه‌نویسی این قابلیت وجود دارد که از این خطاها به وسیله روش‌های حل خطا و یا روش‌های ایمنی ضعیف خارج شد. در سایر زبان‌ها خطاهای گونه‌ای کشنده قلمداد می‌شود .
به علت سخت بودن تشخیص خطاهای گونه‌ای در زبان‌های با بررسی گونه‌ای پویا یک روش مرسوم استفاده از آزمایش واحد می‌باشد.
در مجموع زبان‌های با بررسی گونه‌ای پویا معمولاً کدهای غیربهینه تری را نسبت به زبان‌های با بررسی گونه ایستا تولید می‌کنند ، احتمال خطای گونه‌ای در زمان اجرا را زیاد می‌کنند و مجبور می‌شوند که بررسی‌های گونه‌ای زمان اجرا داشته باشند. ( در مقابل بررسی‌کننده‌های ایستا که فقط یک بار در زمان کامپایل بررسی می‌کنند).
با این حال بررسی‌کننده‌های پویا امکان ساختن زبان‌هایی را می دهند که دارای با قدرت بیشتر و امکانات بهتری باشند و توسعه محصولات را به صورت چشم‌گیری آسان تر کنند.
ماکسیمیلیان ووبر (؛ زادهٔ ) بازیکن فوتبال اهل اتریش است.
از باشگاه‌هایی که در آن بازی کرده‌است می‌توان به راپید وین، آژاکس، سویا و ردبول زالتسبورگ اشاره کرد.
واچه باگراتونی (؛ ; – ) یک هنرپیشه سینما اهل ارمنستان بود.
وی در ۲۸ مهٔ ۱۹۱۱ در واغارشاپات به دنیا آمد وی در ۲۷ اکتبر ۱۹۹۲ در سن ۸۱ سالگی در ایروان درگذشت.
از فیلم‌ها یا برنامه‌های تلویزیونی که وی در آن نقش داشته‌است می‌توان به "پپو"، "پرتگاه" اشاره کرد.
ماشین صف یک ماشین حالت متناهی است که توانایی ذخیره و بازیابی اطلاعات را از یک صف با حافظه بی‌نهایت دارد. این یک مدل محاسباتی معادل ماشین تورینگ است و بنابراین می‌تواند همان کلاس زبان رسمی را پردازش کند.
یک ماشین صف با شش تایی زیر تعریف می‌شود:
یک "پیکر بندی" ماشین، به صورت دوتایی حالت و محتوای صف است و به صورت formula_8 نشان داده می‌شود، کهformula_9 به معنای ستاره کلین formula_4 می‌باشد. پیکربندی شروع با رشته ورودیformula_11 به صورت formula_12 تعریف می‌شود و انتقال formula_13 از یک پیکربندی به پیکربندی بعدی به صورت زیر بیان می‌شود:
که formula_15 نشانه ای از صف الفبا،formula_16 یک دنباله از نمادهای صف(formula_17)، و formula_18. توجه داشته باشید که ویژگی "first-in-first-out" از صف در رابطه وجود دارد.
ماشین رشته formula_19 را قبول می‌کند اگر پس از یک تعداد محدودی از انتقال، پیکربندی شروع آنقدر پیش برود تا رشته را تهی کند (به رشته صفر برسدformula_20) یاformula_21.
ما می‌توانیم ثابت کنیم که یک ماشین صف معادل یک ماشین تورینگ است. با نشان دادن اینکه ماشین صف می‌تواند دستگاه تورینگ را شبیه‌سازی کند و برعکس این امر اثبات می‌شود.
ماشین تورینگ را می‌توان با یک ماشین صف شبیه‌سازی کرد که محتویات ماشین تورینگ را در صف خود در همه زمان‌ها نگهداری می‌کند و دو نشانگر مخصوص در نظر گرفته می‌شود: یکی برای موقعیت آغاز TM و یکی برای پایان.انتقالات آن، از طریق آن دسته از TM که در سراسر صف اجرا می‌شود شبیه‌سازی می‌شود.
یک ماشین صف می‌تواند توسط یک ماشین تورینگ شبیه‌سازی شود، اما این شبیه‌سازی توسط ماشین تورینگ چندنواره بسیار راحت‌تر است. ماشین صف شبیه‌سازی شده ورودی را از یک نوار می‌خواند و در دومی ذخیره می‌کند و push و pop از صف با یک انتقال ساده به موقعیت آغاز و پایان نوار تعریف می‌شود.
ماشین‌های صف می‌توانند مدل ساده ای را برای ایجاد معماری‌های کامپیوتری،زبان‌های برنامه‌نویسی یا الگوریتم ارائه دهند.
در علوم نظری رایانه به خصوص در زبان فُرمال، الگوریتم کلین یک ماشین تعیین‌پذیر حالات متناهی را به یک عبارت باقاعده تبدیل می‌کند.
بنابه گفته‌های Gross و Yellen, Here: sect.2.1, remark R13 on p.65 این الگوریتم را می‌توان به کلینی نسبت داد.
شرح این الگوریتم پیرو گفته‌های Hopcroft و Ullman است. Here: Theorem 2.4, p.33-34
یک ماشین تعیین‌پذیر حالات متناهی ("M" = ("Q", Σ, δ, "q", "F" با حالت‌های { "Q" = { "q"... ,"q" داریم، محاسبه الگوریتم بدین صورت است:
مجموعه‌های "R" شامل همه رشته‌هایی است که ماشین M از حالت "q" به حالت "q" می‌رود بدون اینکه از حالت‌هایی با شماره بالاتر از "k" عبور کند. "عبور کردن" را می‌توان "وارد شدن" یا "خارج شدن" تعبیر کرد، پس هر کدام از حالت‌های "i" و "j" می‌توانند بزرگتر از "k" باشد اما حالات میانی نمی‌توانند. هر مجموعه "R" با یک عبارت باقاعده نشان داده می‌شود؛ این الگوریتم عبارات را گام به گام برای "k" = -1, 0, … , "n" محاسبه می‌کند. از آنجایی که هیچ حالتی با شماره بزرگتر از "n" وجود ندارد، پس عبارت باقاعده "R" مجموعه همه رشته‌هایی است که ماشین "M" از حالت شروع "q" به حالت "q" می‌رود. در واقع اگر { "F" = { "q"... ,"q" حالات پذیرش باشد، عبارت باقاعده "R" | و.. | "R" نشان‌دهنده زبان پذیرفته‌شده توسط ماشین "M" است.
عبارت باقاعده اولیه برای "k" = "-۱" به صورت زیر محاسبه می‌شود:
حال در هر قدم عبارت باقاعده "R" از گام‌های قبلی به صورت زیر محاسبه می‌شود:
همان‌طور که در تصویر مشاهده می‌شود، یک ماشین تعیین‌پذیر حالات متناهی ("M" = ("Q", Σ, δ, "q", "F" با تفاسیر زیر داریم:
الگوریتم کلینی عبارات باقاعده اولیه را به صورت زیر محاسبه می‌کند:
سپس عبارت باقاعده "R" گام به گام از "R" برای "k" = -۱، ۰، … , محاسبه می‌شود. از ویژگی‌های جبر کلینی برای ساده‌سازی عبارات باقاعده تا حد امکان استفاده شده‌است.
گام صفر:
گام یک:
گام دو:
«گام دوم نیاز به ساده‌سازی دارد»
"q" حالت شروع و "q" تنها حالت پایان می‌باشد، لذا عبارت باقاعده "R" نشان‌دهنده مجموعه تمام رشته‌های پذیرفته‌شده توسط ماشین "M" است.
یحیی بن اسد سامانی (؟ – ۲۴۱ ه‍. ق) یکی از چهار پسر اسد سامانی بود. او و برادرانش به خاطر خدمتی که به خاندان عباسی علی‌الخصوص مأمون کردند سزاوار تحسین‌اند. او و برادرانش به خاطر حمایت از مأمون در دفع شورش رافع بن لیث از طرف شخص مأمون پاداش حکومت در شهرهای مختلف را گرفتند و شهری که حکومت در آن به یحیی رسید چاچ (شاش) بود. یحیی در دوران حکومت و فرمانروایی خود زیاد جنب و جوش نداشت و تا آخرین دوران زندگانیش در قلمرو خود به‌غایت جلد و ضابط بود. او در سال ۲۴۱ هجری درگذشت و قلمرو فرمانروایی او به برادرش احمد بن اسد سامانی که مردی پارسا و کاربلد بود رسید.در زمان آن شهر کرج به پایتختی انتخاب شد.
درخت قاب نام یک گونه از تیره پنیرکیان است.
ماهون‌های آفریقایی نام یک سرده از تیره زیتون‌تلخیان است.
ماهون ستونی نام یک گونه از تیره زیتون‌تلخیان است.
ماهون کوهی نام یک گونه از تیره زیتون‌تلخیان است.
ماهون بلند نام یک گونه از تیره زیتون‌تلخیان است.
در گرایش نظریه زبان‌ها و ماشین‌ها از علوم کامپیوتر، زبان‌های پشته‌ای عیان (Visibly Pushdown Languages) زبان‌هایی هستند که بین زبان های منظم (Regular Languages) و زبان‌های مستقل‌ازمتن تصمیم‌پذیر (Deterministic Context-free Languages) جای می‌گیرند. این زبان‌ها در سال ۲۰۰۴ میلادی توسط Alur and Madhusudan پیشنهاد شدند و در مدل کردن ساختارهای طبقاتی کاربرد دارند. این کلاس از زبان‌ها را به اختصار با نماد VPL نمایش می‌دهند.
از تعریف زبان‌های پشته‌ای عیان بر می‌آید که زبان‌های پشته‌ای عیان تصمیم‌پذیر (Deterministic Visibly Pushdown Languages) یک کلاس خاص از زبان‌های پشته‌ای تصمیم‌پذیر (Deterministic Pushdown Languages) و به عبارتی زیرمجموعه‌ای از آن‌ها باشند. مجموعهٔ زبان‌های پشته‌ای عیان تحت اعمال اشتراک، اجتماع و متمم‌گیری بسته می‌باشد، لذا تشکیل‌دهنده یک جبر بولی (Boolean Algebra) می‌باشد. همین‌طور این مجموعه تحت اعمال ستاره کلین (Kleene Star ) و پیوست (Concatenation) نیز بسته می‌باشد.
روابط متعددی برای زبان‌های فوق‌الذکر با دیگر زبان‌ها بیان‌شده‌است، که به عنوان مثال می‌توان به رابطه اَبَرکلاس بودن زبان‌های عطفی خطی، که خود زیرمجموعه‌ای از زبان‌های عطفی در حالت کلی هستند، برای مجموعه زبان‌های پشته‌ای عیان اشاره نمود. همین‌طور مخترعین کلاس زبان‌های پشته‌ای عیان یک زِبَرکلاس از زبان‌های درخت دودویی منظم را به این کلاس از زبان‌ها ارتباط داده‌اند.
برای تعریف زبان‌های پشته‌ای عیان طبیعی است که ابتدا بایستی رابطه تناظر را تعریف نماییم. طبق روال معمول، برای هر عدد صحیح نامنفی همانند formula_1با نماد [formula_1] مجموعه‌یformula_3 را نمایش می‌دهیم. همین‌طور فرض می‌کنیم [ formula_4] برابر با مجموعه تهی است.
در این صورت هر رابطه تناظر همانند ↝ بدین‌شکل خواهد بود که برای  formula_5 زیرمجموعه‌ای ازformula_6خواهد بود چنان که:
هر موقعیت (مقدمه) i نیز به یکی از صور زیر نام‌گذاری می‌شود:
یک کلمه نهفته (Nested Word) به طول formula_1بر زبانی همچون Σ یک جفت همانند (↝,"w") است طوری که "w" کلمه‌ای به طول formula_1بر زبان Σ می‌باشد و ↝ رابطه تناظری به طول formula_1می‌باشد.
همان‌گونه که از تعریف ماشین‌های پشته‌ای عیان (visibly pushdown automata) برمی‌آید، ماشین‌های پشته‌ای عیان تصمیم‌پذیر (deterministic visibly pushdown automata) یک حالت خاص از ماشین‌های پشته‌ای تصمیم‌پذیر (deterministic pushdown automata) می‌باشند، لذا مجموعهٔ زبان‌های پشته‌ای عیان (VPL) بر هر زبان دلخواه زیرمجموعه‌ای از مجموعهٔ زبان‌های پشته‌ای مستقل از متن تصمیم‌پذیر (DCFL) را تشکیل می‌دهند.
مجموعهٔ زبان‌های پشته‌ای عیان (VPL) تحت عملگرهای زیر بسته هستند:
لذا مجموعهٔ زبان‌های پشته‌ای عیان (VPL) تشکیل‌دهندهٔ یک جبر بولی می‌باشد.
توصیفات کلاس زبان‌های پشته‌ای عیان متعدد است، به عنوان مثال می‌توان با مدارهای بولی بدین‌نحو آن‌ها را بیان کرد که معادل مساله تعیین کردن این هستند که آیا کلمه‌ای به طول L توسط یک چنین اتوماتایی پذیرفته می‌شود یا خیر، توسط یک چنین مداری با عمق از formula_15قابل حل هست یا خیر.
حذف عبارت‌های مشترک در نظریه کامپایلر، حذف عبارت‌های مشترک یک بهینه‌سازی کامپایلر است که نمونه‌هایی از عبارت‌های یکسان را جستجو می‌کند و تجزیه و تحلیل می‌کند که آیا جایگزین کردن عبارت‌ها با یک متغیر نگهدارنده مقدار آن ارزش دارد یا نه.
در کد زیر:
ممکن است ارزش داشته باشد که اینطور تغییر دهیم:
اگر هزینه‌های ذخیره‌سازی و بازیابی "tmp" کمتر از هزینه محاسبه "b * c" باشد.
امکان انجام CSE بر اساس تجزیه و تحلیل عبارت در دسترس است. در یک برنامه عبارت codice_1 در نقطه p در دسترس است اگر:
تجریه و تحلیل هزینه/سود انجام شده توسط یک بهینه‌ساز بیان می‌کند که آیا هزینه ذخیره‌سازی در codice_5 کمتر از هزینه ضرب است یا نه؛ در عمل عوامل دیگر مانند اینکه مقادیر در چه ریجسترهایی نگه‌داری می‌شوند نیز قابل توجه است.
نویسندگان کامپایلر بین دو نوع CSE تمایز قایل‌اند:
در هر دو نوع، بر تجزیه و تحلیل جریان داده‌ها تکیه می‌شود که کدام عبارات در کدام نقاط یک برنامه در دسترس هستند.
کد سی‌پلاس‌پلاس زیر را در نظر بگیرید:
برنامه بالا را به کد ماشین تبدیل می‌کنیم:
_L1:
_L0:
end:
با حذف عبارت‌های مشترک محلی داریم:
همچنین با حذف عبارت‌های مشترک سراسری داریم:
علویان طبرستان یا سفیدجامگان زیدی علوی سلسله‌ای از سادات زیدی بودند که دولت آنان در طبرستان، نخستین دولت شیعی در ایران بود که در شرق اسلامی به دور از تأیید خلفای عباسی، تشکیل شد. این تهدیدی جدی برای خلافت عباسی بود و آنها به هر قیمت در صدد نابودی آن بودند. این علوی‌ها پیرو مذهب زیدیه بودند و با قیام داعی کبیر، توانستند قدرت سیاسی جدیدی ایجاد کنند. داعی کبیر توانست با فتح قسمت‌های بسیاری از شمال ایران، حکومت خود را استقرار دهد؛ ولی پس از مرگ او، اختلاف میان برادر و دامادش موجب ضعف علویان شد و سامانیان به این حکومت حمله کردند. چندی والیان سامانی در طبرستان قدرت را در دست داشتند تا این که ناصر کبیر توانست با مسلمان کردن گروهی از اهالی دیلمان، ارتشی فراهم کند و حکومت علویان را دگرباره مستقر گرداند. با این حال اندک‌اندک، حکومت علویان در طبرستان دچار اختلافات داخلی شد و فروپاشید. اسفار بن شیرویه، مرداویج زیاری، ماکان کاکی و آل بویه، از فرماندهان نظامی سپاهیان علوی بودند که پس از مدتی استقلال اعلان کردند و قدرت یافتند.
از آغاز ورود عرب‌های مسلمان به ایران، مردمان در مناطق مختلف به دین اسلام گرویدند؛ اما مردمان طبرستان تا سال ۹۸ ه‍.ق در برابر تغییر دین خویش، از آیین زرتشت (مَزدَیَسنا) به اسلام، ایستادگی کردند و سرانجام با کشتار وسیع یزید بن مهلب رویارو شدند و منطقهٔ طبرستان به سیطرهٔ عرب‌ها درآمد. به گزارش جعفریان در اواخر خلافت عثمان، مسلمانان به مناطق شمالی ایران، از جنوب و سمت غربی در ناحیهٔ گرگان تاختند. از آن پس تا سدهٔ دوم، مردمان مازندران با شرط پرداخت جزیهٔ مسلمانان موافقت کردند؛ اما در منطقهٔ گیلان و دیلم، تا مدت‌ها در این خصوص ایستادگی شد. سرانجام، این مناطق با پذیرش اسلام زیدی به تسلیم مسلمانان درآمدند. حاکمان و مردمان این نواحی تا روی کار آمدن علویان، از سرسخت‌ترین دشمنان مسلمانان بودند. آنان بارها به مناطق جنوبی خود، به‌ویژه قزوین، می‌تاختند. این دشمنی‌ها سبب شد تا شیعیان و خوارج از مخالفان خلافت عباسی، به دنبال مقرّی برای خویش در این منطقه باشند. سادات علوی نیز در برابر فشار منصور و پس از او هادی، مهدی و رشید، به این نواحی کوچیدند. اهالی طبرستان با وجود حاکمانی مسلمان، اما به جهت رفتار خشن و ضعف مدیریتی آنان، از پذیرش اسلام سرباز زدند. میرتبار یکی از دلایل گرایش مردم طبرستان به سادات علوی را، الفت و مهربانی آنان با مردمان دانسته‌است.
رویکرد عباسیان اغلب به علویان قهرآمیز بود و آزار آنان در عهد خلافت متوکل عباسی به اوج خود رسید. به دستور عبدالله بن یحیی بن خاقان، وزیر متوکل، در این هنگام حرم امام حسین در کربلا را به آب بسته شد و به کشتزار تبدیل گردید و وی شماری را گماشت تا زائران را به قتل رسانند. به واسطهٔ سیاست‌های اداری، مالی و نظامی متوکل از جمله ولخرجی فراوان، بی‌ثباتی مقام‌های اداری و تغییر پایتخت از بغداد به سامرا و نیز چرخش مذهبی وی به سمت حنبلیان، خلافت تضعیف شده بود و با جان باختن وی در ۲۴۷ ه‍جری (۸۶۱ میلادی) به دست غلامان ترک، زمینهٔ زوال قدرت عباسیان فراهم شد. پس از مرگ، متوکل رویکرد منتصر به علوی‌ها تغییر کرد و او خود را «شیعه» نامید. اما خلافت پایدار نبود؛ با درگرفتن جنگ داخلی در بغداد و سامرا طی یک دهه پس از مرگ متوکل که به کشته شدن چهار خلیفه انجامید، خلافت عباسی درعمل تکه‌تکه شد و دودمان‌های به‌نسبت مستقلی توسط قدرت‌های نظامی محلی با عنوان «امیر» در جای‌جای سرزمین‌های اسلامی برآمدند. این دودمان‌های نوبنیاد مانند صفاریان، برخلاف امیران پیشین همچون طاهریان، در پی خودمختاری و مرکزگریزی بودند. محمد بن طاهر، واپسین فرمانروای حکومت نیمه‌مستقل طاهری از ۲۴۸–۲۵۹ ه‍.ق (۸۶۲–۸۷۲ م) بر خراسان حکم می‌راند، اما اندک‌اندک چیرگی بر دیگر مناطق ایران از جمله طبرستان را از دست داد. او در ۲۵۹ ه‍.ق به دست یعقوب لیث صفاری دستگیر و زندانی شد و با از میان رفتن او، حکومت طاهریان نیز پایان یافت. از سوی دیگر، یعقوب لیث حکومت صفاریان را پی افکند و بخش‌های بزرگی از ایران شامل سیستان، خراسان، کرمان، فارس و خوزستان را تسخیر کرد، اما موفق نشد بر طبرستان چیره شود.
شرایط سیاسی و مذهبی در زمان خلافت معتمد عباسی (۲۵۶–۲۷۹ ه‍.ق /۸۷۶–۸۹۲ م) نیز بسیار پرچالش بود. این دوران به جهت سیاسی مصادف بود با عصر ضعف خلافت عباسیان؛ بدین صورت آنان از اعمال مؤثر حاکمیت خود جز در بخش محدودی از سرزمین عراق ناتوان بودند. در این دوره، کسان گوناگون در جای‌جای قلمرو عباسیان شوریده بودند و سرزمین مسلمانان دچار تجزیهٔ سیاسی شده‌بود. معتمد عباسی، حسن عسکری، امام یازدهم امامیه را که رقیبی بالقوه برای خلافت به‌شمار می‌رفت، در سامرا زیر نظارت و مراقبت قرار داده و او را حتی از ملاقات با پیروانش نیز بازداشته بود. از سوی دیگر، معتمد عباسی، خود، زیر سلطهٔ برادرش موفق بالله بود که فرماندهی سپاه را در اختیار داشت و دیوان را زیر تسلط داشت، به‌طوری‌که از ۸۸۲ م درعمل خلیفه تحت اسارت خانگی قرار داشت و قدرتی نداشت.
آموزه‌های دینی زیدیان نخستین بار در حاشیهٔ جنوبی دریای مازندران توسط برخی از شاگردان «امام قاسم بن ابراهیم رسی حسنی» آغاز گشت. وی که در اطراف مدینه ساکن بود، مجموعه‌ای از پاسخ‌هایش به پرسش‌های زیدیان ساکن طبرستان را تألیف کرده بود. پس از وی نیز، «جعفر بن محمد نیروسی طبری» در زادگاهش، نیروس که در کوه‌های شرقی رود چالوس بود، این آموزه‌ها را انتقال داده‌است. بدین ترتیب، مناطق غربی طبرستان، رویان، کلار و چالوس، نخستین مرکز زیدیان در منطقه شد.
یکی از نخستین کوچ‌های علویان به سوی دیلم، حرکت یحیی بن عبدالله بن حسن بن حسن بن علی بن ابی‌طالب بود که به نخستین خیزش شیعی در دیلم انجامید. یحیی در ۱۶۹ ه‍.ق در قیام فخّ شرکت کرد و پس از پایان جنگْ مخفیانه و به همراه حجّاج ایرانی به سوی ایران آمد و در مناطق کوهستانی و دور دست سکنی گزید. نشانه‌هایی در دست نیست که اقامت کوتاهش در این کوهستان‌ها پیش از آنکه به فضل بن یحیای برمکی تسلیم شود، نفوذ فعال کیش زیدی را در این ناحیه سبب شده باشد. در سال ۲۱۹ ه‍.ق اندکی پس از به خلافت رسیدن معتصم، محمد بن قاسم حسنی با گروهی کوچک از زیدیان کوفه به طالقان در خراسان آمد و در آنجا شورشی به راه انداخت که به زودی سرکوب شد. نشانه‌هایی در دست نیست که هیچ‌یک از پشتیبانان محلی او پیروان فرقهٔ زیدی بوده باشند. آموزش‌های زیدی را نخست در ایران برخی از پیروان امام قاسم بن ابراهیم رسی حسنی رواج دادند. امام قاسم در جبل الرس واقع در خاور مدینه می‌زیست و تدریس می‌کرد. در نگاشته‌هایش از برخی مردم تبرستان یاد می‌کند که دربارهٔ کارهای مذهبی از او پرسش‌هایی می‌کرده‌اند. یکی از راویان اصلی نظریهٔ فقهی او جعفر بن محمد نیروسی تبری بود که شهر زادگاهش نیروس در کوه‌های تبرستان باختری در چند میلی خاور رودخانه چالوس بوده‌است.
مرگ «قاسم بن ابراهیم رسی»، رهبر زیدیان قاسمیه، در سال ۲۴۶ هجری و کشته شدن «یحیی بن عمر علوی»، رهبر بعدی قیام زیدیان کوفه، دو سال بعد در سال ۲۴۸ هجری، که به دست «محمد بن عبدالله طاهری» انجام شد، محرک زیدیان محلی ساکن سواحل خزر برای قیام و شورش بوده؛ زیرا محمد بن عبدالله طاهری که شورش زیدیان مذکور را سرکوب کرده‌بود، برادر «سلیمان بن عبدالله طاهری» والی وقت طاهریان در طبرستان بود. از دیگر سو، خلیفه مستعین به پاس سرکوب خیزش زیدیان، املاک زیادی در طبرستان به او بخشیده بود.
طبرستان در دوران طاهریان و به گزارش جعفریان از نیمهٔ نخست سدهٔ سوم، تحت نظر آنان اداره می‌شد. شخصی به نام «محمد بن اوس بلخی» از نمایندگان طاهری در طبرستان، زمینی بایر و بدون مالک در مرز دیلم، که مردم کلار و چالوس از آن بهره می‌بردند و از نظر چرای دام و برداشت هیزم برای آنها حیاتی محسوب می‌شد را اشغال کرد. این رویداد باعث ایجاد خشم و نارضایتی مردم آن دو ولایت شد. او همچنین غافلگیرانه وارد دیلم شده، مردم را مورد ضرب و شتم قرار داده، کشتار به راه انداخته و از مردم اسیر گرفت. این مسئله سبب بدنامی طاهریان شد. در سال ۲۵۰ هجری «محمد بن رستم کلاری» و «محمد»، شهریاران رویانی از خاندان معدان، و دو نفر با نام‌های محمد و جعفر فرزندان رستم، رهبری این شورش را عهده‌دار بودند. از اسامی آنها چنین به‌دست می‌آید که پیش از این خود از پدری نامسلمان با نام رستم متولد شده، اما مسلمان گشته‌اند و از قضا نام جعفر نشان می‌دهد که بر مذهب تشیع بوده‌اند. به یاری مردم کلار، چالوس و دیلم، شورشی در طبرستان برپا نمودند و از عبدالله پادوسبانی نیز تقاضای کمک کردند.
مردم منطقه «دارفو»، در دیلم، نیز به روستاهای دیلمی‌نشین می‌رفتند و مردم آن ولایت را به قیام علیه عوامل طاهری فرا می‌خواندند. سازماندهی این قیام در غرب رود چالوس به آسانی انجام می‌شد؛ زیرا والیان خلیفه با توجه به اقتدار دیلمیان هنوز به این ناحیه نفوذ نکرده نبودند و حاکمان دیلمی نیز با خلفای عباسی و طاهری دشمنی و مخالفت داشتند؛ بنابراین، دیلمی‌های این ناحیه با آزادی به سازماندهی این جنبش دست زده و مردم کلار و چالوس نیز با آنها متحد بودند تا «در نبرد با سلیمان بن عبدالله و محمد اوس و دیگر کسان که آهنگ نبرد آنها کنند، همدیگر را یاری دهند».
مردم طبرستان و دیلم پس از آماده کردن شرایط جنبش، پس از آن برای آن که میان خویش اتحادی استوار بر پا کنند، در اندیشه دعوت یکی از علویان ری به این ناحیه برآمدند. جعفریان در تشریح علل رفتن مردم طبرستان به دنبال یک فرد علوی، به دو علت اشاره دارد:
آنها از «محمد بن ابراهیم»، که یکی از علویان معروف ناحیه بود، خواستند که رهبری قیام را بپذیرد؛ ولی او که خودش را درخور این کار نمی‌دید، «حسن بن زید» را به آنان معرفی نمود. بزرگان کجور، طوماری نوشتند و پس از امضاء به قاصدی سپردند تا در ری به دست حسن بن زید برساند. حسن بن زید، پس از تحقیق و اطمینان از پدیدار شدن زمینه‌های قیام در منطقهٔ طبرستان، این دعوت را پذیرفت و به همراه خویشان و بستگان از ری به طبرستان کوچید. وی، که به "داعی کبیر" معروف است سرانجام در رمضان ۲۵۰ هجری وارد منطقه رویان شد با پذیرش این دعوت، حکومت علویان طبرستان را در کلار بنیان نهاد. دولت علویان در طبرستان، نخستین دولتی بود که در شرق اسلامی به دور از تأیید خلفای عباسی، شکل گرفت از همین رو این تهدیدی جدی برای خلافت عباسی محسوب می‌شد و آنها به هر قیمت در صدد نابودی آن بودند. این سلسله به نام علویان طبرستان یا سفیدجامگان زیدی علوی مورد معرفی منابع قرار گرفته‌اند. پس از به قدرت رسیدن این سلسله در ناحیه طبرستان، سادات باقی مناطق که تحت فشار سیاسی بودند، به این منطقه مهاجرت کردند.
به قدرت رسیدن علویان در طبرستان، نتیجهٔ تحولات فکری، سیاسی و نظامی در طبرستان غربی و گیلان و دیلمستان علیه خلافت عباسی بود. مردم و اشراف طبرستان غربی و گیلان و دیلمستان، نقش مهمی در قدرت‌گیری علویان داشتند. تأسیس حکومت علویان طبرستان (برخلاف تصور عامه) نتیجهٔ تلاش‌های حسن بن زید نبود؛ بلکه علت اصلی این بود که مردم طبرستان و گیلان و دیلمستان، منفعت خود را در همکاری با علویان می‌دیدند؛ بنابراین، مردم مناطق مذکور، با دعوت از علویان، از آنها به‌صورت ابزاری برای مخالفت با خلافت عباسی استفاده کردند. حسین اسلامی دربارهٔ این واقعه می‌گوید: «مردم طبرستان از دست خودشان خسته شدند؛ دنبال بیگانه (عرب) رفتند.» کسروی در این باره می‌نویسد: «بزرگ‌ترین دشمنان خلافت، یعنی علویان و دیلمی‌ها، دست به دست هم دادند».
سادات علوی، که مذهب تشیع داشتند، از سمت غرب طبرستان بستر جنبشی شیعی را فراهم می‌کردند. بسترهای درونی و بیرونی جنبش علوی در خلال دو قرن شکل گرفت و کماکان گسترش می‌یافت. پیش از این، در زمان هارون‌الرشید، یحیی بن عبدالله با حمایت حاکم جستانی در دیلمان قیام کرده ولی با اعزام ۵۰٬۰۰۰ سرباز از بغداد، حاضر به پذیرش صلح شده‌بود. حسن بن زید، پس از قبول دعوت طبرستانی‌ها، به آن منطقه کوچ کرد و با ورود او به طبرستان، منطقه شکل جدیدی به خود گرفت. در ۲۵ رمضان ۲۵۰ ه‍. ق، حاکم نور اسپهبد وندااُمید، عبدالله بن سعید، محمد بن عبدالکریم و بزرگان کجور در کلار با حسن بیعت کردند. حسن پس از بیعت اهالی کجور و کلار، سه نفر از یارانش با اسامی محمد بن عباس، علی بن نصر و عقیل بن مسرور را به چالوس فرستاد تا در آن شهر برایش بیعت بگیرند. «حسین بن محمد مهدی حنفی»، از بزرگان چالوس، مردم چالوس را در مسجد جامع این شهرگرد هم آورد تا بتوانند با نمایندگان حسن بن زید بیعت کنند. با این اقدام عملاً چالوس از سیطرهٔ طاهریان بیرون آمد. عامل طاهریان، محمد بن اوس، از شهر گریخت و اسپهبد جعفر به او و همراهانش پناه داد. همچنین امیران دیلم و بالاخص «جستانیان» نیز در میان کسانی بودند که با وی بیعت نمودند. حسن بن زید روز ۲۶ رمضان به «روستای کورشید» رفت و فردایش به سمت کجور حرکت کرد و تا روز عید فطر در آنجا ماند. وی برای نخستین بار در مصلای کلار نماز عید فطر را اقامه نمود و اهدافش را بیان کرد. از آن پس نمایندگانی به مناطق گوناگون گسیل نمود و مردم را به قیام علیه طاهریان فراخواند. خود نیز پس از اطمینان از وفاداری مردم کجور و کلار، برای کسب بیعت به ناتل و پایدشت رفت. سفرها و جابه‌جایی‌های پیاپی داعی از آغاز کار نشان می‌دهد که بستر برای او آماده بود و خبری از هیچ ممانعتی در برابر او نیست. به گزارش ابن‌اسفندیار، تمام مردم طبرستان با حسن بیعت کردند. بر این اساس، علویان توانستند در طبرستان و پس از مدت‌ها قیام پراکنده، برای نخستین بار دولتی تشکیل دهند.
پایتخت طاهریان در دوران ظهور حکومت علویان در طبرستان، شهر ساری بود. در دورهٔ ظهور داعی کبیر نیز عامل طاهریان در منطقه سلیمان بن عبدالله نام داشت. به عنوان نخستین درگیری، در پایدشت و بنا به قولی در ناتل نیروهای داعی به فرماندهی محمد علوی و محمد پسر رستممعروف به خیان و پسر ونداامید بن شهریار است که از خاندان پادوسپانیان بود و در کلار می‌زیست. با نیروهای محمد بن اوس به جلوداری «محمد بن اخشید» درگیر شدند که محمد علوی توانست سر محمد بن اخشید را از بدنش جدا کند و برای داعی بفرستد. این نبرد نخستین پیروزی نظامی علویان و حامیانشان علیه حکام طاهری بود.
مرگ محمد بن اخشید در نبرد موجب تضعیف روحیهٔ سپاهیان طاهری شد و باعث شد عقب‌نشینی کنند. محمد بن اوس نیز نزد سلیمان بن عبدالله طاهری، عامل طاهریان در طبرستان، رفت. سپس علویان به سوی آمل حرکت کردند ولی در میانهٔ راه به سپاه سلیمان برخوردند که محمد بن اوس این بار فرماندهی آن را در دست داشت. در جنگی که در منطقه «لیکانی» رخ داد، علویان شکست خوردند، محمد علوی کشته شد و «حسن بن حسین»، از فرماندهان علوی، به همراه بسیاری از سربازانش اسیر شد. بقیهٔ سپاهیان علوی نیز به پایدشت بازگشتند. اسیران را نزد سلیمان در آمل بردند و پس از مدتی آزاد کردند.
داعی این بار فرماندهی سپاه را به عهدهٔ محمد بن حمزه و حسین بن احمد گذاشت. محمد بن اوس، حاکم وقت آمل، نیز لشکری به فرماندهی ابراهیم بن خلیل برای مقابله با علویان فرستاد. در نبرد سنگینی که بین دو سپاه درگرفت، علویان پیروز شدند و سپاه طاهریان به سوی آمل عقب‌نشینی نمود. علویان تعقیبشان نموده و آمل را تصرف کردند. محمد بن اوس نیز از شهر گریخت. داعی پس از پیروزی در تاریخ ۲۳ شوال سال ۲۵۰ هجری، وارد آمل شد و در مصلای شهر از مردم بیعت گرفت. شهر آمل را نیز مقر حکومتش قرار داد. سپس چند تن از حامیان طاهریاندیلمی بن فرخان، مقاتل دیلمی و علی بن ابراهیم جیلی از جمله این افراد بودند. را اعدام نمود ولیکن فرماندهِ شکست‌خوردهٔ آنان، ابراهیم بن خلیل، را امان داد. داعی کبیر پس از رسیدن به حکومت طبرستان، پایتخت خود را از ساری — که جایگاه طاهریان بود — به آمل منتقل کرد تا به حامیان و هوادارانش نزدیک‌تر باشد.
در زمان طاهریان، پایتخت سلیمان بن عبدالله شهر ساری بود. داعی پس از آن‌که مامطیر را تصرف کرد، به مصمغان دستور داد تا به ساری رود. مصمغان نیز روستای «پوطم نوروز آباد» در منطقه ساری را لشگرگاه خویش قرار داد. در این ایام، سلیمان بن عبدالله نیز لشکرش را به «اَسد جندان» سپرد. خود داعی نیز در «روستای توجی» سپاهیانش را آماده نبرد می‌کرد. پس از شروع نبرد، داعی به نصیحت پیرمردی به نام «شهریار بن اندیان»، از جنگ با سپاهیان جندان پرهیز نمود و به ظاهر گریخت و سپس از بی‌راهه، وارد شهر ساری شد و در شهر جنگی بین طرفین رخ داد که علویان در آن پیروز شده و شهر را فتح کردند. سلیمان نیز از ساری گریخت و به «روستای دودان» نزد سپاهیانش رفته؛ سپس به سوی ساری هجوم آوردند که در نبردی شهری، سپاهیان طاهری مجدداً شکست را متحمل شدند.
پس از ۴۰ روز حکومت علویان در شهر ساری، داعی کبیر تصمیم گرفت که به آمل بازگردد؛ ولی به توصیهٔ اسپهبدِ پادوسبانی، به «چمنو»چمنو نام روستایی استراتژیک بود؛ زیرا در میان سه راهی آمل-ساری-سوادکوه بوده‌است. این روستا امروز جمنان یا جمنون نامیده می‌شود و در ۲ کیلومتری شهر قائمشهر قرار دارد. رفت. با پیوستن لشکریان خراسان به سپاه سلیمان بن عبدالله، وی بار دیگر به سوی طبرستان هجوم آورد. دیلمیانی که در سپاه داعی بودند، برای انتقال غنائم جنگی، به منازلشان بازگشته بودند و داعی ناچار به مقابلهٔ با طاهریان با سپاهی کوچک شد. دو سپاه در محلی به نام «تمشکی دشت» به مصاف یکدیگر رفتند که موجب شکست و عقب‌نشینی علویان شد. سربازان علوی در بیشه‌ها پراکنده شدند و توانستند «احمد بن محمد بن اوس» را بکشند. داعی کبیر نیز در زمان عقب‌نشینی، آنقدر روی پُل چمنو ایستاد تا تمامی زخمیان و کشتگان را از آن پل عبور دادند. سپس بازماندگان به سمت چالوس گریختند.
پس از مدتی «محمد بن نوح»، سردار طاهری، علیه داعی شورید و اسپهبد قارن به وی پیوست؛ لیکن شکست خورد و سپاهیانش پراکنده شدند. از سوی دیگر مصمغان با یکی از سرداران علوی، به نام فضل رفیقی، اختلاف یافت و از حکومت داعی جدا گشت. در آمل نیز فرمانده‌ای دیلمی به نام «جایی بن لشکرستان» به مردم ستم پیشه کرد که با شورش روبرو شده و به قتل رسید. «حسن بن محمد عقیقی» نیز در این هنگام مصغان را از عزلت درآورد و به سپاهیان علوی ملحق نمود. فردی به نام «رستم بن زبرقان» نیز در «مهران رستاق» شورید و با محمد بن روح طاهری متحد شد. داعی ابتدا «هرمزد کامه» و «عباس عقیلی» را برای سرکوبش فرستاد که شکست خوردند، سپس حسن بن محمد عقیقی را مأمور سرکوبش نمود. در نبردی که پیش‌آمد، حسن عقیقی توانست چهارصد اسیر بگیرد و به ساری بازگردد.
پس از آنکه روس‌ها متوجه اعلام استقلال طبرستان شدند، در زمان ایگور، شاهزادهٔ کی‌یفی حاکم بر روس‌های واریاگ، با لشکری مجهز به این منطقه حمله‌ور گشتند. این افراد که از راه دریا آمده‌بودند، توانستند جزیرهٔ آبسکون را تصرف کنند. داعی پس از اطلاع از ورود مهاجمان روس به آبسکون، سپاهی را برای مقابله با آنان به درون جزیره فرستاد و توانست آنان را فراری دهد.
گسترش قلمرو داعی و محبوبیتش نزد مردم شهرهای سامرا و کوفه، موجب واکنش خلفا عباسی گشت. المستعین بالله، که معاصر داعی و دوازدهمین خلیفه عباسی بود، لشکری را به شهر همدان اعزام نمود؛ ولیکن در محرم سال ۲۵۲ هجری، سرداران عباسی وی را از خلافت عزل نموده و «معتز بالله» را به جایش نشاندند.
علویان نیز پس از سیطرهٔ کامل بر مناطق کوهستانی و جلگه‌ای طبرستان، به سوی مناطق جنوبی البرز روی آوردند. جستان بن وهسودان، حاکم دیلم و گیلان، در این نبرد نیز داعی را همراهی نمود. ابتدا شهر بزرگ ری و سپس قزوین، ابهر و زنگان به تصرف علویان درآمدند. داعی ری را به «محمد بن جعفر» و قزوین را به «جستان بن وهسودان» سپرد. یک‌بار در ری شورشی رخ داد که محمد بن جعفر از شهر بیرون شد، ولی اندکی بعد به شهر بازگشت.
از شروع حکومت معتز مدت چندانی نگذشت که وی خبر فتوحات داعی در مناطق جنوبی البرز را شنید. او در سال ۲۵۳ هجری قمری برای سرکوب حسن بن زید، ارتشی را به فرماندهی «موسی بن بغا» و سرداری «مُفْلِح» از عراق به طبرستان گسیل داشت.
موسی بن بغا ابتدا در همدان مستقر شد و سپس مفلح را برای فتح ری فرستاد. مفلح ابتدا به قزوین و سپس ابهر، زنجان را فتح کرد. حاکمان شهرهای قزوین و زنجان با اسامی «حسین ابن احمد» و «عبیدالله بن علی» پس از هجوم مفلح به طبرستان گریختند، داعی پس از فرار آن‌ها، هر دو را در برکه‌ای غرق کرد و پس از مرگ، جسدشان را در سردابی رها کرد. وی بعدها که دربرابر یعقوب شکست خورد و گریخت، جسد این دو تن را از سرداب بیرون کشیده و دفنشان کرد. سرانجام نیز در ۲۵۵ هجری توانست ری را بازپس بگیرد او بعد از پیروزی، از راه قومس به استرآباد رفت.
«احمد بن محمد سکنی» که از عوامل طاهریان بود، در استرآباد، با مفلح متحد شد. سپاهیان خلیفه ابتدا گرگان و سپس تمیشه، ساری و مامطیر را یکی پس از دیگری فتح کردند. در طول این مدت چند نبرد نیز رخ داد که هربار علویان در آن شکست می‌خوردند. در این زمان ده هزار نفر پیرامون داعی گرد آمده‌بودند و پادوسبان سوم نیز در کنار او بود. لیکن داعی یارای مقاومت دربرابر مفلح را نداشت. مفلح آمل را فتح کرد و خانه‌های علویان را به آتش کشید و به تعقیب داعی پرداخت و حتی چالوس را تصرف کرد. داعی پس از شکست‌های متوالی به کلار پناهنده شد و دیلمیان نیز حاضر به همکاری با وی نشدند.
پس از مرگ معتز عباسی، خلیفه عباسی، مهتدی بر تخت نشست. خلیفهٔ جدید فرمان داد که همهٔ نیروهای نظامی عباسیان به عراق بازگردند تا بتواند با «صاحب الزنج»صاحب الزنج، فرد شورشی علی حکومت عباسی بود که بردگان سیاه‌پوست را علیه حکومت عباسی به جنگ واداشت. او توانست نزدیک به ۱۵ سال -از سال ۲۵۵ تا ۲۷۰- در مقابل حکومت عباسی مقابله کند. او توانست در جنوب ایران و عراق، مدت‌ها به نام علوی حکومت کند. (رک: ) در بصره مقابله کند. در ماه جمادی‌الآخر سال ۲۵۵ قمری، پیغامی از گرگان به دست مفلح رسید که او را به سامرا فراخواند. موسی بن بغا نیز همراه سپاهیان عباسی به عراق بازگشت و در جای خود احمد بن محمد سکنی را قرار داد. داعی کبیر هم با بهره‌گیری از این فرصت در ۲۵۵ قمری آمل، سال بعد آن ری، در ۲۵۷ قمری گرگان و در ۲۵۹ قمری قومس را گشود و احمد بن سکنی نیز به وی متمایل شده و به یاران وی پیوست و حکومت داهستان و به نقلی دیگر استرآباد را به‌دست گرفت.
یعقوب لیث، در این نبردها فقط توانست مقداری غنیمت کسب کند و محمد بن زید، برادر داعی، را دستگیر کرده و به سیستان بفرستد. سرانجام برای جبران کردن تلفات سنگینش در طبرستان، خراج دو ساله را به زور از مردم گرفت و پس از شنیدن اخبار نامطلوب از خراسان، مجبور به ترک طبرستان شد؛ سپس به حاکم ری نامه‌ای نوشت و از او خواست که سگزی را به وی واگذارد. حاکم ری نیز بدان جهت که گرفتار سرنوشت علویان نشود، پناهندگانش را تحویل داد. یعقوب این افراد را در شادیاخ با میخ‌های آهنین، به دیوار کوباند و به نقلی گردن زد. استیلای یعقوب بر طبرستان و گرگان موجب آزرده شدن خلیفه عباسی شد، علی‌الخصوص که در این مناطق وی به رعایا و عامه ستم رساند. سرانجام داعی در سال ۲۶۱ قمری، دوباره حکومت طبرستان را به دست گرفت. وی دستور داد، به انتقام کمک‌های مردم چالوس به سپاهیان یعقوب لیث، شهرشان را به آتش کشیدند.
پس از مدتی داعی نیروهایش را گردآورد و مناطق از دست رفته را بازپس ستاند. هنگامی که سپاهیان عبدالله رستم شکست خوردند، خجستانی به نیشابور و رستم بن قارن به کوهستان بازگشتند و سید عقیقی به همراهی چند تن از یارانش، در بیابان‌ها تنها ماند. سرانجام محمد بن زید وی را دستگیر کرده و نزد داعی در ساری فرستاد. سید عقیقی با ملاقات داعی اظهار پشیمانی نمود؛ ولی داعی کبیر فرمان مجازات را صادر کرده و به وسیله یک ترک رومی، در محلهٔ «دروازه گرگان»دروازه گرگان دروازهٔ شرقی ساری بود که الآن جایگاهش را میدان شهداء گرفته‌است و در میانهٔ شهر قرار دارد. ساری گردن زده شد و جسدش را در قبرستان زرتشتیان و به روایتی یهودیان دفن کردند.
حسن بن زید در اواخر عمرش بیمار شد و این مریضی یک سال ادامه داشت. برهمین اساس برادرش، محمد بن زید، در گرگان و خودش در آمل مستقر بودند. دامادش، احمد بن محمد، نیز کارهایش را در آمل انجام می‌داد. وی پیش از مرگ وصیت نمود که برادرش پس از او رهبری علویان را برعهده گیرد و از احمد بن محمد خواست که در آمل و شهرهای اطراف آن برای محمد بیعت جمع نماید. سرانجام داعی در ۳ رجب ۲۷۰ هجری قمری فوت کرد. بدین‌ترتیب، داعی درطی حکومتش سه بار از طبرستان اخراج شد: اولین بار با ضدحمله سلیمان طاهری، دومین بار با حمله مفلح، سومین بار با حمله یعقوب لیث. او هربار به کوهستان‌های دور از دسترس دیلم پناه برد و هربار با حمایت دیالمه، حکومتش را پس گرفت. در خارج از طبرستان، داعی در سال ۲۵۳ گرگان را تصرف کرد ولی پس ازان این شهر چند بار دست‌به‌دست شد. او تلاش‌هایی برای گسترش قلمرو به‌سمت جنوب کوه‌های البرز کرد، در سال ۲۵۰ علویان ری را گرفتند ولی در ۲۵۷ آن را از دست دادند. قزوین و زنجان و قومس نیز چند سالی تحت حکومت آنها بود.