<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>پست‌های انتشارات پینوکس</title>
        <link>https://virgool.io/pinoox/feed</link>
        <description>پینوکس پلتفرم اوپن سورس توسعه وب</description>
        <language>fa</language>
        <pubDate>2026-06-17 03:56:06</pubDate>
        <image>
            <url>https://files.virgool.io/upload/publication/fnedhqvsywsm/ik35d0.png</url>
            <title>پینوکس</title>
            <link>https://virgool.io/pinoox</link>
        </image>

                    <item>
                <title>کدنویسی استاندارد با PSR (قسمت1)</title>
                <link>https://virgool.io/pinoox/%DA%A9%D8%AF%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%A7%D8%B3%D8%AA%D8%A7%D9%86%D8%AF%D8%A7%D8%B1%D8%AF-%D8%A8%D8%A7-psr-%D9%82%D8%B3%D9%85%D8%AA-1-gqk0wpdvsl4v</link>
                <description>شاید تاکنون نام PSR را شنیده باشید، PSR مخفف عبارت PHP Standard Recommendation (استانداردهای پیشنهادی PHP) است.تا پیش از PSR استاندارد واحدی برای نوشتن کدهای PHP وجود نداشت، و هر توسعه دهنده ای بنابر سلیقه و تجربه شخصی و یا استانداردهای معرفی شده توسط شرکت های دیگر نظیر Zend Framework به شکل های پراکنده ای کد می‌نوشتند.سال 2009 گروهی از توسعه دهندگان به نمایندگی از پروژه های محبوب PHP دور هم گردآمدند تا گروهی به نام Framework Interoperability Group یا به اختصار FIG را تشکیل دهند تا یک اصول مشترک برای جامعه توسعه دهندگان PHP ایجاد کنند. استانداردهای مورد توافق و تایید این گروه در وبسایت رسمی آنها به نشانی php-fig.org قابل دسترس است. اگر توسعه دهنده PHP هستید دانستن این قواعد از ضروریات توسعه یک پروژه استاندارد و اصولی است و باید به عنوان یک PHP Developer آن ها رابدانید.تا لحظه نگارش این مقاله 19 استاندارد توسط گروه FIG تعیین شده که از 0 تا 18 نامگذاری شده است، در بخش اول این مقاله به 3 استاندارد PSR-1, PSR-2, PSR-3 می‌پردازیم.استاندارد PSR-0 که مربوط به autoloading است منسوخ شده و قواعد جدید آن در PSR-4 بروزرسانی شده است بنابراین از این بخش عبور خواهیم کرد.1- استانداردهای پایه کدنویسی: PSR-1اولین استاندارد رعایت اصول اولیه و ابتدایی نحوه نوشتن کدهاست که به طور مختصر به شرح زیر است:فایل‌ها باید با تگ‌های  =?&gt;  یا php?&gt; شروع شوند.فایل‌ها باید از نوع UTF-8 و بدون BOM باشند.فایل‌ها یا باید معرف سیمبول‌ها باشند (کلاس، متغیر، فانکشن و..) یا از نوع side-effect (چاپ اطلاعات، اعمال تنظیمات ini و…) باشند و نباید همزمان هردو کار را انجام دهند.کلاس‌ها و namespace ها باید از استاندارد autoloading که در PSR-4 مشخص شده پیروی کنند.نام گذاری کلاس‌ها باید به شکل StudlyCaps باشند.ثابت‌ها باید به شکل uppercase و با خط آندرلاین (CONST_VAR) از هم جداشوند.متدها باید به شکل camelCase نام گذاری شوند.2- استایل و ظاهر کدنویسی: PSR-2این استاندارد به نحوه نوشتن کد از لحاظ استایل و ظاهر می‌پردازد، در صورتیکه از محیط های کدنویسی نظیر Intellij Idea استفاده کنید اغلب این استانداردها به صورت خودکار اعمال می‌شوند.برای تورفتگی کدها از 4 اسپیس استفاده کنید و از تب استفاده نکنید!برای طول کد نوشته شده نباید محدودیتی الزام آور لحاظ شود! حد نرمال برای طول کد 120 کاراکتر و حد پیشنهادی 80 کاراکتر و یا کمتر است.باید بعد از دستور namespace و use یک خط خالی باشد.آکولاد یا براکت کلاس، در خط جدید و بعد از اعلان آن باز شود و در پایان بعد از بدنه کلاس در خط بعدی بسته شود.مواردی ظاهری از این دست به طور مفصل در این لینک توضیح داده شده است که می‌توانید مشاهده کنید.3- رابط لاگر(Logger Interface): PSR-3لاگ کردن یکی از فراگیرترین کارهایی است که در PHP با آن مواجه هستیم. ما از لاگ‌ها برای ردیابی خطا، ثبت رویدادهای مهم و اشکال‌زدایی مشکلات کدمان استفاده می‌کنیم. حتی اگر فریمورک و CMS توسعه می‌دهید که سیستم لاگ اختصاصی دارد توصیه می‌شود با این استاندارد سازگار باشد.پایه و اساس این استاندارد، پیاده سازی Logger interface است. این اینترفیس 8 متد دارد که هر کدام یک سطح از حساسیت خطا و پیام را گزارش می‌دهد همچنین متد log که به صورت عمومی برای هر نوع گزارشی قابل استفاده است.هشت سطح گزارش به شکل زیر است:سیستم غیر قابل استفاده است: Emergencyاقدام فوری لازم است: Alert خطای بحرانی: Criticalخطاهایی که نیاز به توجه فوری ندارند اما باید تحت نظر قرار گیرند: Errorرخدادهای غیرمعمول یا نامطلوب که خطا نیستند: Warningرویدادهای عادی اما مهم: Noticeرویدادهای جهت اطلاع رسانی: Infoبرای اهداف اشکال زدایی: Debugبرای شروع استفاده از آن کافی است از طریق composer و یا گیت هاب به نشانی Psr/Log GitHub اقدام به نصب این لایبرری کنید.امیدوارم تا اینجا یک دید نسبی به این قواعد پیدا کرده باشید اما برای تسلط کامل مطالعه سایت رسمی PSR به نشانی php-psr.org ضروری است، در مقالات بعدی به سایر PSRها می‌پردازیم.</description>
                <category>پینوکس</category>
                <author>اسماعیل بحرانی فرد</author>
                <pubDate>Sat, 11 Jun 2022 10:33:32 +0430</pubDate>
            </item>
                    <item>
                <title>با اپ پروفایل ساز پینوکس رزومه خودتو آنلاین کن!</title>
                <link>https://virgool.io/pinoox/pinoox-profile-app-isssrgs4am7z</link>
                <description>اپ پروفایل ساز پینوکسداشتن یک رزومه زیبا و حرفه‌ای از نکات بسیار مهم در افزایش شانس یافتن یک فرصت شغلی است. اپ پروفایل ساز این امکان را برای شما فراهم می‌کند تا به شکل سریع و ساده یک پروفایل زیبا بسازید.از جمله مزیت هایی که یک پروفایل آنلاین به شما می‌دهد امکان جست و جو شدن پروفایل شما از طریق موتورهای جست و جو از جمله گوگل است.برای داشتن یک رزومه آنلاین تنها کافی است پینوکس را روی هاست شخصی خود نصب کنید و از طریق مارکت اپ پروفایل ساز را نصب کنید.با اپ های پینوکسی و نصب آنها روی هاست شخصی امکان ایجاد انواع سیستم های تحت وب مثل وبلاگ، فروشگاه و... را خواهید داشت برای کسب اطلاعات بیشتر در مورد پلتفرم اوپن سورس پینوکس به وبسایت pinoox.com مراجعه کنیدقالب زیبا و مینیمالثبت اطلاعات رزومهامکان تغییر و نصب انواع قالب هاامکانات و مزیت های اپ پروفایل ساز:1- نصب آسان و رایگان2- مشاهده آمار بازدید از پروفایل3- امکان انتخاب قالب و نمای پروفایل4- تنظیمات داینامیک5- ثبت آسان اطلاعات پروفایلبرای دیدن اطلاعات بیشتر و آموزش راه اندازی پروفایل ساز در چند دقیقه این لینک را ببینیداگر سوال و پرسشی دارید از طریق بخش پرسش و پاسخ بپرسید</description>
                <category>پینوکس</category>
                <author>اسماعیل بحرانی فرد</author>
                <pubDate>Sun, 28 Nov 2021 21:05:19 +0330</pubDate>
            </item>
                    <item>
                <title>پیپر 2.6 با امکانات جدید منتشر شد</title>
                <link>https://virgool.io/pinoox/%D9%BE%DB%8C%D9%BE%D8%B1-26-%D8%A8%D8%A7-%D8%A7%D9%85%DA%A9%D8%A7%D9%86%D8%A7%D8%AA-%D8%AC%D8%AF%DB%8C%D8%AF-%D9%85%D9%86%D8%AA%D8%B4%D8%B1-%D8%B4%D8%AF-ffml2rrymbqj</link>
                <description>در این نوشته قصد دارم شما را با تغییرات جذاب و کاربردی نسخه جدید پیپر  2.6 آشنا کنم این یعنی امکانات بیشتری به وب سایت شما که با پیپر ایجاد  شده اضافه گردیده است.این توضیح را میدهم برای کسانی که هنوز  نمیدونن پیپر چیه؟! ببینید خیلی ساده میگم با پیپر این امکان را دارید که  یک وب سایت حرفه‌ای ایجاد کنید و اونو به شکلی جذاب و ساده مدیریت کنید اگر  میخوای بیشتر در مورد پیپر بدونی اینجا یه  سر بزن همچنین به لطف این نسخه جدید امکانات بیشتری نیز به پیپر اضافه شده  که برای اطلاع از این تغییرات با من در این نوشته همراه شوید.قبل  از هر چیزی جا داره از همه کاربران پینوکس که به ما کمک کردن تجربه بهتری  از پیپر را خلق کنیم تشکر کنم. به سپاس این همراهی این نسخه جدید تقدیم شما  می‌گردد.??دیگه می‌تونی سردبیر باشیاز حالا این  امکان وجود داره که در پیپر گروه‌های کاربری را برای نقش‌های مختلف مشخص  کنید این یعنی شما می‌توانید گروهی از نویسندگان با دسترسی محدود ایجاد  کنید و شما در نقش یک سردبیر بر نوشته‌های نویسندگان نظارت داشته باشید.حالا همکار خودت رو اضافه کنبرای  هر گروه کاربری می‌توانید دسترسی‌های مختلفی را مشخص کنید که به چه  قسمت‌هایی از پنل مدیریت دسترسی داشته باشند بنابراین می‌توانید یک یا چند  همکار مشخص کنید که حجم کاری که دارید را بین هم دیگه تقسیم کنید.مدیریت دسته ها خیلی ساده شدهدسته  بندی ها به شکل گسترده‌ای بهبود یافته و حالا می‌تونید برای هر دسته نام  کلیدی و تصویر مشخص کنید. همچنین این امکان برای طراحان قالب فراهم شده که  بتونن یک یا چند دسته مشخص را به تنظیمات قالب خود اضافه کنند.پیدا کردن کلمات درون متن سریع شدهبا  قابلیت جستجو و جایگذاری کلمات بین متن میتوانید خیلی سریع کلمات خود را  پیدا کنید و به سادگی آنها را با هر متنی خواستی جایگزینی کنید.برای انتشار مطالب برنامه ریزی کنبا ویژگی زمانبندی میتوانید برای روزهای بعدی خود برنامه ریزی کنید و مطالب را در لیست انتشار قرار دهید.محتوا سایت رو برای موتورهای جستجو بهتر کنبا  تغییراتی که به قسمت نوشتن پیپر اضافه شده و افزودن دکمه‌های مخصوص حالا  می‌تونید نوشته‌ها را برای ارائه سئو بهتر برچسب گذاری مناسب کنید.همه تغییرات این نسخه شامل موارد زیر میشه:جدیدافزودن گروه کاربریافزودن سطوح دسترسیافزودن دسترسی به نوشته های دیگر نویسندگانافزودن زمانبندی انتشار نوشتهافزودن نمای لیست برای دسته بندیمشخص کردن نوع دسته بندی برای ساخت تنظیمات دلخواهتغییراتارتقا قسمت نوشتن پیپر و ارائه تجربه بهتر موقع تایپ کلماتارتقا فهرست همراه با امکان جستجو بین منوهاارتقا دسته بندی ها (افزودن تصویر و نام کلیدی برای هر دسته)بهبود انتخاب دستهبهبود فرایند همگام سازی محتوای منتشر شدهبهبود نمایش منوی دسته بندی در قالب پیش فرض برای موبایلقرار گیری دکمه سریع برای مشاهده نوشتهنمایش تاریخ انتشار در لیست نوشته هامشخص کردن تعداد نمایش نوشته ها در هر صفحه از قالببهبود ذخیره اطلاعات فرایند های کاربر برای کار با پنل و قسمت نوشتنبهبود نمایش آمار نوشته در وضعیت قبل از انتشارانتخاب دسته بندی موقع نوشتن مطلب جدیداصلاحاترفع مشکل قرار دادن کد دلخواه در هدر و فوتر سایترفع مشکل نصب پیپر بر روی دیتابیس های با نسخه قدیمی MySQLرفع مشکل زبان نوشتاری در تنظیماترفع مشکل لودینگ پیپر در فرم های باز شوندهرفع مشکل نمایش نوتفیکیشن در فرم های باز شوندهرفع مشکل نمایش عنوان سایت در URLرفع حساسیت کلیدواژه ها به بزرگ و کوچک بودن در جستجورفع مشکل بستن نظرات هر نوشتهرفع مشکل نمایش صفحه پیش فرض درباره ما بعد از نصب پیپررفع مشکل مرتب سازی بر اساس تاریخ نوشتهنصب پیپر چگونه است؟برای نصب پیپر آموزش “چگونه با پیپر یک وب سایت محتوایی ایجاد کنیم؟” را ببینید.بروزرسانی به نسخه جدید پیپر چگونه است؟اگر قبلا پیپر را نصب کرده اید لازم از روی سایت بسته جدید پیپر را دریافت کنید.وارد منیجر پینوکس خودتان بشوید.از تنظیمات منیجر وارد قسمت اپلیکیشن‌ها و سپس نصب دستی بشوید.حالا در این قسمت بسته جدید پیپر را بکشید و رها کنیددر نهایت با نصب کننده پیپر را بروزرسانی کنید.فراموش نکنید هر سوال و مشکلی داشتید می‌توانید در قسمت پرسش و پاسخ سایت از ما بپرسید.</description>
                <category>پینوکس</category>
                <author>یوسف علی پور</author>
                <pubDate>Thu, 11 Nov 2021 11:54:13 +0330</pubDate>
            </item>
                    <item>
                <title>تجربه‌ای لذت بخش از مدیریت وب سایت با پیپر</title>
                <link>https://virgool.io/pinoox/%D9%BE%DB%8C%D9%BE%D8%B1-2-%D8%A8%D8%A7-%D9%88%DB%8C%DA%98%DA%AF%DB%8C-%D9%87%D8%A7%DB%8C-%D8%AC%D8%B0%D8%A7%D8%A8-%D9%85%D9%86%D8%AA%D8%B4%D8%B1-%D8%B4%D8%AF-kulytz2vlalr</link>
                <description>معرفی پیپر 2از نوشتن روی وب لذت ببرید، به سادگی بنویسید و بدون دردسر استفاده کنید در پیپر 2 مدیریت وب سایت به شکل جادویی ساده و لذت بخش است شما فقط بر روی تولید محتوا وقت می گذارید و درگیر تنظیمات و  پیچیدگی های نرم افزار نمی شوید.با پیپر می‌توانید یک وب سایت اختصاصی رایگان راه اندازی کنید و با استفاده از قالب‌های متنوع شکل و طرحی دلخواه به وب سایت خود بدهید. در ادامه با ویژگی‌های پیپر 2 به شکلی کامل آشنا می‌شوید:تجربه کاربری لذت بخشیکی  از بخش های مهم مدیریت وب سایت‌ قسمتی است که در آن محتوا نوشته می شود و  معمولا عمده وقت شما در پنل مدیریت کار با قسمت نوشتن است در بعضی از نرم  افزارهای تحت وب قسمت نوشتن به قدری دشوار و حوصله بر هست که معمولا کاربر  باید وقت زیادی صرف آن کند یا باید از نرم افزار دیگری کمک بگیرد که معمولا  نویسندگان در این حالت کلافه می شوند و جایی که بر روی متن محتوا خود  تمرکز کنند وقتشان را صرف چیزهای بیهوده می کنند. در این چند سال خود ما  وقت زیادی را صرف نوشتن در سرویس ها و نرم افزار های مختلف کردیم و کاملا  به این مشکل آگاه بودیم پس با کمک و جمع آوری تجربیات شما توانستیم در کنار  امکانات فراوان، یک تجربه لذت بخش از کار با پیپر را خلق کنیم بنابراین ما  ابتدا از تجربه کاربری (UX) شروع کردیم و خودمان را جای شما گذاشتیم.رابط کاربری روانتجربه  کاربری به ما کمک کرد که بتوانیم یک رابط کاربری (UI) ساده و روان را  بوجود بیاوریم. رنگ اصلی پیپر را آبی انتخاب کردیم که چشم شما را اذیت نکند  و در آرامش فقط بر روی نوشته خود تمرکز کنید دکمه ها و آیکون ها درشت و در  دسترس هستند و فهرستی که شما مرتبا با آن سر و کار دارید در نزدیکترین شکل  ممکن آرایش گرفته اند در نهایت جابجایی بین صفحات خیلی سریع است.با هر دستگاهی در هر ابعادیشما  با یک رابط کاربری کاملا واکنش گرا (Responsive) روبه رو هستید که در هر  اندازه ایی همه اجزا به خوبی قابل نمایش هستند و کار با آن برای شما هیچ  دردسری ندارد یعنی به همان سادگی که در حالت Desktop با پیپر 2 کار می کنید  در یک موبایل یا دستگاه دیگه هم به همان سادگی بتوانید با آن کار کنید.نوشتنمحور  اصلی پیپر نوشتن است بنابراین برای ایجاد محیطی لذت بخش با کارایی بالا با  حساسیت و دقت بالایی این بخش را طراحی کردیم پس در کنار امکانات بی نظیر  که جلوتر به آن می پردازیم برای ما خیلی مهم بود که شما بتوانید در این  قسمت راحت باشید و فقط به محتوا خود فکر کنید، کاغذ سفید رو به روی شما است  هر چیزی که فکر می کنید را در آن بنویسید.برخی از ویژگی های قسمت نوشتن :تاریخچه تغییرات (History) : در این قسمت میتوانید تغییرات روی متن را دنبال کنید و برگرداندن متن های قبلی منتشر شده کار سختی نیستمحاسبه زمان نوشتن (Time Tracking) : زمان نوشتن و مدت زمانی که شما برای هر نوشتن هر محتوا صرف می کنید به طور دقیق محاسبه می شودمشاهده تعداد کلمات و حروف تایپ شده : بعد از هر بار تغییر در متن میتوانید تعداد کلمات و حروف تایپ شده را ببینیدتنظیم اندازه صفحه : اندازه  دلخواه خود را تنظیم کنید که ساده تر بنویسید میتوانید اندازه صفحه را با  قالبی که انتخاب کردیم هماهنگ کنید تا خروجی یکسان را مشاهده کنید.میانبر های صفحه کلید : با  استفاده از دکمه های ترکیبی بعضی از عملیات را ساده تر انجام دهید برای  مثال برای ذخیره متن می توانید دکمه ترکیبی Ctrl + S را فشار دهید.ذخیره خودکار : در تنظیمات قسمت نوشتن می توانید مشخص کنید که بعد از یک زمان مشخص مثلا 5  ثانیه که دست از نوشتن برمیدارید متن به شکل خودکار ذخیره شود.حالت تمام صفحه : مشاهده قسمت نوشتن در حالت تمام صفحه کمک می کند راحتر از قبل بنویسیم در  این حالت منوها و نوار مرورگر قابل رویت نیست و شما فقط کاغذ سفید و دکمه  های ضروری را می بینید.مدیریت تصاویر هوشمند : هر  نوشته یک قسمت مدیریت تصاویر دارد که مخصوص آن نوشته است و کاربر میتوان  در آن قسمت یا روی کاغذ پیپر عکس ها را بکشد و به متن خود اضافه کند.رونوشت هوشمند (copy &amp; paste) : اگر نوشته خودتون را داخل نرم افزاری مثلا Word   نوشتید برای انتقال  تصاویر و متن کافیست کل محتوا را انتخاب کنید و با کپی و چسابدن آن در کاغذ  پیپر به همان شکل محتوا خود را منتقل کنید.تنظیمات متنوعبخش  تنظیمات را به گونه ای انعطاف پذیر و تنظیم پذیر (Dynamic) طراحی کردیم.  افزودن یک بخش تنظیمات به پیپر 2 به لطف هسته پینوکس مثل آب خوردن است هر  طراح قالب میتواند برای خود انواع لیست، منو، اسلاید و فرم را در قسمت  تنظیمات طراحی کند و هر قسمتی را که در قالب نیاز دارد توسط استفاده  کنندگان تنظیم پذیر سازد.مدیریت قالب هاطراحی  قالب جدید در پینوکس به دو شکل معمولی و تماما ایجکس بر اساس هسته پینوکس  قابل اجرا است و همچین به لطف امکان تنظیم ساز می توان این نوید را داد که  بزودی شاهد افزودن قالب های متنوع و بیشتر از سمت طراحان باشیم.سئودر  این قسمت شما هیچ دردسری ندارید چرا که پیپر کاملا با آخرین استاندارد های  سئو مطابقت داده شده است اما سئو یک سایت صرفا فنی نیست و اگر شما هم  بتوانید یک محتوا مطابق با استاندارد سئو بنویسید و کلیدواژه مناسب انتخاب  کنید نتیجه بهتری خواهید گرفت.دسته بندی تو در تومدیریت  دسته ها خیلی ساده هست دسته خود را اضافه کنید با کشیدن هر دسته آنها را  مرتب کنید یا بکشید و در یک دسته دیگر رها کنید تا به عنوان زیر دسته مشخص  شود. در قسمت نوشتن هم بدون دردسر می توانید همانجا دسته ها را مدیریت کنیدآمار بدرد بخورآماری  که بدرد کاربر میخوره آماری که توسط سایت‌های آنالیزگر مثل گوگل آنالیتیکس  (Google Analytics) به دست آوردن اونا سخت یا غیر ممکن باشه منظور چه  آماری هست مثل آمار زمان نوشتن که به کمک ویژگی Time Tracking پیپر قابل  دنبال است پس ما سعی کردیم در کنار آمار بازدید، آمارهای بدرد بخور به  کاربر بدیم.توسعه دهندگانپیپر 2 کاملا رایگان و متن باز (OpenSource) تحت لایسنس MIT در گیت هاب منتشر شده است تا همه کسانی که توانایی ارتقا این نرم افزار را دارند  بتوانند سهمی مهم در رشد آن داشته باشند و از همین جهت این فرصت به پیپر  داده شده که سریعتر از هر زمانی رشد کند.کلام آخرامیدواریم  که پیپر 2 کمکی باشد برای رشد تولید محتوای فارسی و حذف کاغذهای مصرفی که  باعث جلوگیری از قطع درختان می شود و همچنین کمکی باشد برای اشتراک گذاری  تجربیات و دانش تا افراد بیشتری ما را بشناسند و از دانش بیشتری بهره مند  شوند.فراموش نکنید ما روز به روز نظرات  شما را دنبال می کنیم و هر روز پیپر را ارتقا میدیم تا بهترین تجربه نوشتن  را برای شما خلق کنیم. شما می توانید در قسمت پرسش و پاسخ هر سوال یا مشکلی داشتید بپرسید تا ما در اولین فرصت به آن رسیدگی کنیم.برای دریافت پیپر به مارکت پینوکس بروید…</description>
                <category>پینوکس</category>
                <author>یوسف علی پور</author>
                <pubDate>Sat, 26 Dec 2020 15:30:08 +0330</pubDate>
            </item>
                    <item>
                <title>ساخت ثانیه شمار با تصویر GIF</title>
                <link>https://virgool.io/pinoox/%D8%B3%D8%A7%D8%AE%D8%AA-%D8%AB%D8%A7%D9%86%DB%8C%D9%87-%D8%B4%D9%85%D8%A7%D8%B1-%D8%A8%D9%87-%D8%B4%DA%A9%D9%84-%D8%AA%D8%B5%D9%88%DB%8C%D8%B1-gif-rxc93h5j5gww</link>
                <description>در این آموزش یاد میگیریم که چگونه یک countdown به صورت gif با پلتفرم پینوکس ایجاد کنیم و از آن در readme گیت‌هاب، قالب ایمیل و ... استفاده کنیم.در بعضی از سایت‌ها بدلیل محدودیت امکان ساخت countdown به وسیله js ممکن نیست مثل قالب ایمیل فرض کنید شما میخواهید یک ایمیل به مشتری خود بزنید که تا دو روز دیگه وقت دارید از تخفیف فوق العاده شما استفاده کنند برای اینکه بتونید در داخل متن خود یک countdown قرار دهید باید به صورت تصویر داینامیک یعنی به شکل زیر اون رو اضافه کنید:ابتدا پلتفرم پینوکس رو نصب کنید: دانلود | آموزش نصب حالا فایل پروژه اپلیکیشن countdown رو دریافت کنید و در مسیر زیر در پینوکس قرار بدهید (از فایل فشرده خارج کنید):pinoox\apps\حالا پنل مدیریت پینوکس را باز کنید یعنی به آدرسی که پینوکس رو نصب کردین آخرش یک manager اضافه کنید و با نام کاربری و رمزعبوری که پینوکس رو نصب کردین وارد میشین برای مثالhttp://localhost/pinoox/managerدر تصویر زیر میبینید که اپلیکیشن countdown به لیست اپلیکیشن های پینوکس اضافه شده:حالا روی اپلیکیشن کلیک کنید و وارد قسمت مسیریابی بشین و برای اون یک آدرس مشخص کنید به شکل زیر:حالا اگر روی لینکی که ساختید کلیک کنید یک تصویر gif به شکل زیر رو خواهید دیدحالا کافیه همون لینکی که ساختید یعنی:http://localhost/pinoox/countdownدر یک تگ img در html قرار دهید :&lt;img src=&amp;quothttp://localhost/pinoox/countdown&amp;quot alt=&amp;quotcountdown&amp;quot /&gt;حالا شما یک تصویر countdown به صورت داینامیک ایجاد کرده اید اما اگر بخواهید فونت و تصویر بک گراند را تغییر بدین میتوانید این تغییرات رو ایجاد کنید وارد مسیر زیر در اپلیکیشن بشین و فایل gif.config.php را ویرایش کنید :pinoox\apps\ir_yoosefap_countdown\config\gif.config.phpreturn [
 &#039;datetime&#039; =&gt; &#039;1399/02/30 20:06:30&#039;,
&#039;format&#039; =&gt; &#039;%a   %H:%I:%S&#039;,
 &#039;jalali&#039; =&gt; true,
&#039;background&#039;=&gt; &#039;bg&#039;,
&#039;font-size&#039;=&gt;55,
&#039;angle&#039;=&gt;0,
&#039;x-offset&#039;=&gt;40,
&#039;y-offset&#039;=&gt;70,
&#039;font&#039;=&gt; &#039;shabnam&#039;,
&#039;color&#039;=&gt;[255, 255, 255],
];تصویر بک گراند باید به فرمت png و در پوشه background قرار بگیرید و در فایل بالا اسم اون وارد شود و همچنین فایل فونت باید به فرمت ttf باشد و در پوشه font قرار بگیرید و اسم اون به فایل بالا معرفی گردد برای مثال میتونید این بک گراند زیر رو با فرمت png قرار بدیناگر محل قرار گیری countdown با بک گراند شما تنظیم نیست میتونید با تغییر x و y محل قرار گیری اون روی صفحه رو تغییر بدینهمچنین اگر قصد ندارید مراحل بالا رو طی کنید ابزار timer.plus کار شما را ساده می کند: مشاهده نمونهموفق باشید :)</description>
                <category>پینوکس</category>
                <author>یوسف علی پور</author>
                <pubDate>Tue, 12 May 2020 22:14:50 +0430</pubDate>
            </item>
                    <item>
                <title>در روز چند ساعت کدنویسی می کنید؟ با wakaTime محاسبه کنید!</title>
                <link>https://virgool.io/pinoox/%D8%AF%D8%B1-%D8%B1%D9%88%D8%B2-%DA%86%D9%86%D8%AF-%D8%B3%D8%A7%D8%B9%D8%AA-%DA%A9%D8%AF%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D9%85%DB%8C-%DA%A9%D9%86%DB%8C%D8%AF-%D8%A8%D8%A7-wakatime-%D9%85%D8%AD%D8%A7%D8%B3%D8%A8%D9%87-%DA%A9%D9%86%DB%8C%D8%AF-itq8nqovmse5</link>
                <description>اگر نتوانید چیزی را اندازه گیری کنید، قادر به مدیریتِ آن نخواهید بود. (پیتر دراکر)پیتر دراکر که از بزرگترین نظریه پردازان مدیریت است، به درستی به اهمیت اندازه گیری اشاره می کند، به واقع اگر مثلث معروف BML: Build-Measure-Learn را بتوانیم به خوبی به کار بگیریم و بعد از هر تلاشی میزان فعالیتی که انجام داده ایم رو با دقت محاسبه کنیم و با آنالیز و یادگیری، تجربیات رو تبدیل به دانش کنیم، با تکرار این حلقه خواهیم توانست نقاط ضعف رو تشخیص بدهیم و به طبع اون امکان اصلاح و بهبود عملکردمون رو بدست میاریم.اگر برنامه نویس هستید و ساعت های زیادی رو در طول روز صرف کدنویسی می کنید قطعا براتون بسیار جذاب  و کاربردی خواهد بود که بدونید چقدر و به چه شکل در حال کار هستید، چند ساعت به شکل مفید در حال کدنویسی بودین یا چند ساعت در حال پرسه زدن در شبکه های اجتماعی و اتلاف زمان!ابزار wakatime دقیقا به همین منظور ایجاد شده، سرویس بسیار کاربردی و مفیدی که پلاگین های مختلفی برای تقریبا همه IDE ها و محیط های کدنویسی داره و با نصب پلاگینش می تونید آمار دقیقی و به صورت جزئی از میزان فعالیت روی هر پروژه بدست بیارید.داشبورد wakatimeیکی از امکانات بسیار خوب wakatime امکان تعریف اهداف (Goals) هست. میتونید اهدافی برای خودتون تعیین کنید مثلا روزانه 2 ساعت روی پروژه X کار کنید یا اینکه هفته ای 60 ساعت روی پروژه Y کار کنید و در پایان در نمودارهای مقایسه ای میزان فعالیت واقعی و میزان برآورده شدن اهداف رو ببینید.آمار بسیار دقیقی در اختیار شما میزاره، مثلا میتونید ببینید چه میزان php کد نوشتید یا چقدر html کار کردین، اهداف رو میتونید بر اساس زبان برنامه نویسی هم تعریف کنید.بیش از این توضیح لازم نیست کافیه همین الان امتحانش کنید?</description>
                <category>پینوکس</category>
                <author>اسماعیل بحرانی فرد</author>
                <pubDate>Sat, 11 Apr 2020 18:26:02 +0430</pubDate>
            </item>
                    <item>
                <title>ساخت کوتاه کننده لینک با پلتفرم پینوکس</title>
                <link>https://virgool.io/pinoox/%D8%B3%D8%A7%D8%AE%D8%AA-%DA%A9%D9%88%D8%AA%D8%A7%D9%87-%DA%A9%D9%86%D9%86%D8%AF%D9%87-%D9%84%DB%8C%D9%86%DA%A9-%D8%A8%D8%A7-%D9%BE%D9%84%D8%AA%D9%81%D8%B1%D9%85-%D9%BE%DB%8C%D9%86%D9%88%DA%A9%D8%B3-tpbnrganx0x5</link>
                <description>در این آموزش یاد میگیریم که یک اپلیکیشن پینوکس برای کوتاه کردن لینک بسازیم و با این اپلیکیشن یک وب سایت ایجاد کنیم.دانلود کامل سورس این پروژه : دریافتاینکه پلتفرم پینوکس چیه؟ به سایت pinoox.com سر بزنید.خب در اولین قدم پینوکس رو روی لوکال هاست نصب می کنیم نصب پینوکس خیلی ساده هست میتونید در وب سایت پینوکس آموزش نصب رو پیدا کنید من اون رو در دایرکتوری اصلی که با آدرس 127.0.0.1 باز میشه نصب می کنم.خب حالا بعد از نصب پینوکس وارد منیجر پینوکس ( یا محیط گرافیکی مدیریت اپلیکیشن های پینوکس) می شیم که برای ورود باید به آخر آدرس خودمون یک manager اضافه کنیمhttp://127.0.0.1/manager/وقتی که وارد می شید لیست اپلیکیشن های پینوکس رو به مثل تصویر زیر خواهید دیدمنیجر پینوکسحالا ما می خواهیم یک اپلیکیشن به این لیست اضافه کنیم و اسم اون رو Shortlink بزاریم.خب برای این کار وارد سورس کد می شیم (یعنی جایی که فایل ها رو ریختیم و پینوکس رو نصب کردیم)همانطور که در تصویر بالا می بینید یک پوشه موجود هست به اسم apps که اپلیکیشن ها داخل اون قرار میگیره وارد اون می شیم و یک پکیج نیم برای پروژه خودمون مشخص می کنیم در پینوکس برای اسم گذاری پکیج نیم باید از سه کلمه یا بیشتر استفاده کنید و با  &#x27;_&#x27; اونا را از هم جدا کنید. (مثل تصویر زیر)من اسم پکیج پرژه رو ir_yoosefap_shortlink گذاشتم که شما هم هر اسمی که دوست دارید می تونید بزارید.در اولین قدم باید فایل کانفیگ اپلیکیشن را ایجاد کنیم و اطلاعات اصلی این اپلیکشن را معرفی کنیم برای این کار یک فایل با اسم app.php با اطلاعات زیر رو در داخل پکیج اپلیکیشن ایجاد می کنیم&lt;?php
return [
    &#039;package-name&#039; =&gt; &#039;ir_yoosefap_shortlink&#039;,
    &#039;name&#039; =&gt; &#039;Shortlink&#039;,
    &#039;developer&#039; =&gt; &#039;yoosefap&#039;,
    &#039;description&#039; =&gt; &#039;کوتاه کننده لینک&#039;,
    &#039;version-name&#039; =&gt; &#039;1.0&#039;,
    &#039;version-code&#039; =&gt; 1,
    &#039;icon&#039; =&gt; &#039;icon.png&#039;,
    &#039;enable&#039; =&gt; true,
    &#039;theme&#039; =&gt; &#039;default&#039;,
    &#039;lang&#039; =&gt; &#039;fa&#039;,
];حالا یک تصویر دلخواه برای آیکون اپلیکیشن به اسم icon.png در داخل پکیج قرار میدهیم که این تصویر در لیست اپلیکیشن ها قرار به عنوان لوگو اپلیکیشن ما به نمایش بیاد.حالا می بینید که اپلیکیشن ما در لیست اپلیکیشن های پینوکس به نمایش اومده ولی خب هیچ کاری نمیکنه برای اینکه بگیم چیکار کنه یک کنترلر برای اون تعریف میکنیم.برای تعریف کنترلر یک پوشه داخل پکیج به اسم controller ایجاد میکنید و داخل اون یک فایل در آدرس زیر اضافه میکنیمapps/ir_yoosefap_shortlink/controller/main.controller.php در واقع main.controller.php کنترلر اصلی پینوکس هست که همه لینک ها به اونجا فراخوانده میشههر کنترلر دارای دوتا متد اصلی هستpublic function _main();متد main آدرس اصلی (index) را فرا میخواند public function _exception();متد exception آدرسی که وجود ندارد را فرا میخواندحالا این کد را در main.controller.php قرار  می دهیم.namespace pinoox\app\ir_yoosefap_shortlink\controller;

use pinoox\component\Config;
use pinoox\component\HelperString;
use pinoox\component\interfaces\ControllerInterface;
use pinoox\component\Request;
use pinoox\component\Response;
use pinoox\component\Template;
use pinoox\component\Validation;

class MainController implements ControllerInterface
{
    protected static $template;

    public function __construct()
    {
        self::$template = new Template();
    }

    public function _main()
    {
        self::$template-&gt;show(&#039;index&#039;);
    }

    public function shortlink()
    {
        $link = Request::postOne(&#039;link&#039;, null);
        if (Validation::checkOne($link, &#039;!empty|url&#039;)) {
            $code = $this-&gt;generateCode();
            Config::set(&#039;shortlink.&#039; . $code, $link);
            Config::save(&#039;shortlink&#039;);
            $shortlink = url($code);
            self::$template-&gt;set(&#039;shortlink&#039;, $shortlink);
        } else {
            self::$template-&gt;set(&#039;error&#039;, rlang(&#039;global.err_link&#039;));
        }
        self::$template-&gt;show(&#039;index&#039;);
    }

    private function generateCode()
    {
        $try_count = 1;
        $length = 4;
        do {
            if ($try_count % 5 == 0)
                $length++;
            $code = HelperString::generateRandom($length);
            $try_count++;
        } while (Config::get(&#039;shortlink.&#039; . $code));

        return $code;
    }

    public function _exception($code = null)
    {
        if ($link = Config::get(&#039;shortlink.&#039; . $code))
            Response::redirect($link);
        else
            echo &#039;not found page - 404&#039;;
    }
}در ابتدا کد بالا اگر دقت کنید namespace پروژه رو مشخص کرده ایم و بعد مواردی که قرار در این کنترلر از اون استفاده کنیم یعنی اینترفیس کنترلر و کامپوننت هایی که به کار بردیم رو  در اون use  کرده ایم.و برای افزودن قالب کامپوننت Template رو در construct کلاس کنترلر new کردیم و از اون یک شی درست کردیم و مقدارش را داخل یک متغیر استاتیک به اسم template ذخیره کردیم.حالا که کنترلر خودمون رو ایجاد کردیم میریم سراغ سیستم زبان که در فایل app.php مشخص کردیم زبان پروژه فارسی (fa) باشد خب حالا یک فایل زبان در مسیر زیر ایجاد می کنیمapps/ir_yoosefap_shortlink/lang/fa/global.lang.php لطفا به نحوه اسم گذاری ها دقت کنید که به مشکل بر نخورید.حالا مقدار زیر رو داخل اون قرار می دهیمreturn [
   &#039;title&#039; =&gt; &#039;کوتاه کننده لینک&#039;,
   &#039;enter_link&#039; =&gt; &#039;لینک خود را وارد کنید&#039;,
   &#039;btn_shortlink&#039; =&gt; &#039;کوتاه کن&#039;,
   &#039;err_link&#039; =&gt; &#039;لطفا یک لینک معتبر وارد کنید&#039;,
   &#039;back&#039; =&gt; &#039;برگشت&#039;,
];در مرحله آخر باید یک قالب و صفحه برای پروژه ایجاد کنید که در فایل app.php نام قالب رو default مشخص کردیم و همچنین در main.controller.php گفتیم در پوشه قالب چه فایلی رو نمایش بده پس برای ایجاد قالب مراحل زیر رو انجام میدیمدر مسیر زیر apps/ir_yoosefap_shortlink/theme/default/index.php مقدار زیر رو اضافه می کنیم &lt;!doctype html&gt;
&lt;html lang=&amp;quotfa&amp;quot&gt;
&lt;head&gt;
    &lt;meta charset=&amp;quotUTF-8&amp;quot&gt;
    &lt;title&gt;&lt;?php lang(&#039;global.title&#039;); ?&gt;&lt;/title&gt;
    &lt;link rel=&amp;quotstylesheet&amp;quot href=&amp;quot&lt;?php echo $_url ?&gt;css/style.css&amp;quot&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;div class=&amp;quotcontent&amp;quot&gt;

    &lt;?php if (!isset($shortlink)) { ?&gt;
        &lt;form action=&amp;quot&lt;?php echo url(&#039;shortlink&#039;); ?&gt;&amp;quot method=&amp;quotpost&amp;quot&gt;
            &lt;input name=&amp;quotlink&amp;quot placeholder=&amp;quot&lt;?php lang(&#039;global.enter_link&#039;); ?&gt;&amp;quot type=&amp;quottext&amp;quot value=&amp;quot&amp;quot&gt;
            &lt;button class=&amp;quotbtn&amp;quot type=&amp;quotsubmit&amp;quot&gt;&lt;?php lang(&#039;global.btn_shortlink&#039;); ?&gt;&lt;/button&gt;
            &lt;span&gt;&lt;?php echo @$error; ?&gt;&lt;/span&gt;
        &lt;/form&gt;
    &lt;?php } else { ?&gt;
        &lt;input type=&amp;quottext&amp;quot value=&amp;quot&lt;?php echo $shortlink;?&gt;&amp;quot readonly&gt;
        &lt;a class=&amp;quotbtn back&amp;quot href=&amp;quot&lt;?php echo url(); ?&gt;&amp;quot&gt;&lt;?php lang(&#039;global.back&#039;); ?&gt;&lt;/a&gt;
    &lt;?php } ?&gt;
&lt;/div&gt;

&lt;/body&gt;
&lt;/html&gt;و استایل قالب رو در مسیر زیر اضافه می کنیمapps/ir_yoosefap_shortlink/theme/default/css/style.cssمقدار زیر رو درونش قرار میدیمbody {
    background: #383333;
    direction: rtl;
}

.content {
    margin: 100px auto 0 auto;
    width: 20em;
}

.content input {
    height: 30px;
    border-radius: 5px;
    display: block;
    width: 100%;
}

.content .btn {
    display: block;
    padding: 10px;
    border-radius: 5px;
    background: #095f92;
    border: 2px solid;
    margin-top: 5px;
    text-align: center;
    text-decoration: none;
}

.content .btn:hover {
    background: #0e9aed;
}

.content .btn.back {
    background: #fff;
    float: left;
}

.content span{
    display: block;
    color: #c53e08;
}حالا اپلیکیشن ما آماده اجرا شدن هست و باید برای اون یک آدرس مشخص کنیم برای این کار روی اپلیکیشن کلیک می کنیم و سپس بر روی مسیریابی مطابق تصویر زیر کلیک میکنیم.وقتی وارد مسیریابی پینوکس شدیم بجای اپلیکیشن Welcome، اپلیکیشن Shortlink رو انتخاب یا میتونیم برای اون یک آدرس جدید تعریف کنیم.حالا میتونیم در آدرسی که مشخص کردیم اپلیکیشن را اجرا کنیمhttp://127.0.0.1دانلود فایل نصبی: دریافتدانلود سورس کامل پروژه: دریافت</description>
                <category>پینوکس</category>
                <author>یوسف علی پور</author>
                <pubDate>Sat, 11 Apr 2020 07:02:03 +0430</pubDate>
            </item>
                    <item>
                <title>معرفی Git Kraken، بهترین ابزار مدیریت پروژه ها</title>
                <link>https://virgool.io/pinoox/gitkraken-best-tool-for-managing-projects-usqigwzkiaii</link>
                <description>برای اینکه به سادگی بتونید با Git کار کنید ابزارهای Git GUI مختلفی وجود داره مثل GitHub Desktop و  GitSmart  و ... اما یکی از بهترین ابزارهایی که تجربه کار باهاشون رو داشتم Git Kraken هست و بعد از استفاده از اون، کار با سایر ابزارها واقعا عذاب آور و ناخوشایند خواهد شد!جالبه بدونید Git Kraken محصول شرکت axosoft هست که بنیانگذارش حمید شجاعی از ایرانیان ساکن امریکاست.?گیت کراکن امکانات مختلفی در اختیار شما میزاره و به راحتی با shortcut های کیبرد و یا drag and drop میتونید با git کار کنید. از مهمترین قابلیت هاش:1- امکان کار با چند پروفایل به طور همزمان2- امکان اتصال به حساب کاربری Github، GitLab و ... 3- باز کردن چندین repo در تب های مختلف به طور همزمان 4- رابط گرافیکی فوق العاده ساده و کاربرپسند و انجام عملیات مختلف مثل merge تنها با drag &amp; drop 5- امکان ویرایش سورس کدها 6- دریافت خودکار آپدیتهای جدید در بازه های زمانی کوتاهمحیط کاربری git krakenمعمولا هر ازگاهی میبینید که با ناتفیکیشن خبر از ارائه قابلیتی جدید میده و به صورت خودکار امکاناتی به نرم افزار اضافه میشه، دریافت مستمر آپدیت های جدید و پشتیبانی فوق العاده این محصول چیزی است که بسیار تحسین برانگیز است.در کنار محیط فوق العاده ای که برای کار با git طراحی شده یک ابزار جدید هم برای مدیریت پروژه ها اخیرا بهش اضافه شده که باعث میشه سایر کلاینت ها رو واقعا به سطل زباله هدایت کنید!?مدیریت برد اسکرام با Glo Boardگلو برد ابزار مدیریت تسک هاست که ما برای مدیریت برد اسکرام ازش استفاده میکنیم. با اضافه کردن هم تیمی هاتون به برد در کنار Git Kraken به سادگی همه فعالیت های پروژه رو به صورت یکپارچه در یک محیط خواهید داشت، امکان استفاده از نسخه تحت وب، موبایل و دسکتاپ هم وجود داره. یکی از ویژگی های خوب Glo Board امکان تعریف synced board هست و با اتصالش به گیت هاب تمام issue هاتون رو به صورت خودکار وارد برد میشه و با تغییر روی آن به صورت خودکار روی گیت هاب هم اعمال میشه.امکان تعریف milestone، تگ گذاری، اختصاص کاربر به هر تسک، و گروه بندی برد ها از جمله ویژگی های خوب Glo Board هست. برای دیدن همه امکانات glo صفحه معرفی رو از اینجا ببینید: معرفی Glo Boardمحیط کاربری glo boardدر انتها توصیه میکنم حتما یک بار هم که شده Git Kraken رو نصب کنید و امتحان کنید مطمئنا خوشتون خواهد اومد.?</description>
                <category>پینوکس</category>
                <author>اسماعیل بحرانی فرد</author>
                <pubDate>Fri, 21 Feb 2020 13:18:42 +0330</pubDate>
            </item>
                    <item>
                <title>راه اندازی مخزن گیت بر روی دراپ‌باکس</title>
                <link>https://virgool.io/pinoox/%D8%B1%D8%A7%D9%87-%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C-%D9%85%D8%AE%D8%B2%D9%86-%DA%AF%DB%8C%D8%AA-%D8%A8%D8%B1-%D8%B1%D9%88%DB%8C-%D8%AF%D8%B1%D8%A7%D9%BE%D8%A8%D8%A7%DA%A9%D8%B3-dheyri7fspxi</link>
                <description>در این آموزش ساده قصد داریم یک مخزن گیت بر روی سرویس های ذخیره سازی ابری مانند Dropbox راه اندازی کنیم.لازمه این آموزش اینه که قبلا شما با یکی از سرویس های ذخیره سازی ابری مانند Dropbox و با سیستم کنترل ورژن Git کار کرده باشید.در ابتدا باید یک مخزن گیت داخل پوشه دراپ‌باکس اضافه کنیمبرای انجام این کار لازم است دستور زیر را در git bash اجرا کنیم تا مخزن گیت داخل دراپ‌باکس ایجاد بشه:git init --bare ~/dropbox/test.gitبجای test می توانید اسم مخزن خود را وارد کنید و همچنین اگر پوشه دراپ‌باکس در محلی دیگر قرار داده شده است مسیر را تغییر دهید پس با دستور بالا ما به اصطلاحا یک origin ساخته ایم که حالا باید به مخزن محلی خودمون (clone) معرفی کنیم.حالا وارد پوشه مخزن محلی می شویم و با دستور زیر یک origin برای اون مخزن اضافه می کنیم.git remote add origin ~/dropbox/test.gitحالا باقی موارد که دیگه خودتون می دونید :)شبیه به گیت هاب یا گیت لب اینجا هم میتونید push و pull کنید.</description>
                <category>پینوکس</category>
                <author>یوسف علی پور</author>
                <pubDate>Mon, 17 Feb 2020 14:52:40 +0330</pubDate>
            </item>
                    <item>
                <title>فریم ورک اختصاصی خودم رو توسعه بدم؟!</title>
                <link>https://virgool.io/pinoox/%D9%81%D8%B1%DB%8C%D9%85-%D9%88%D8%B1%DA%A9-%D8%A7%D8%AE%D8%AA%D8%B5%D8%A7%D8%B5%DB%8C-%D8%AE%D9%88%D8%AF%D9%85-%D8%B1%D9%88-%D8%AA%D9%88%D8%B3%D8%B9%D9%87-%D8%A8%D8%AF%D9%85-tymukzela9tp</link>
                <description>فریم ورک در زبان های برنامه نویسی مختلف به مجموعه ای از کلاس ها و متد ها گفته می شوند که بصورت منظم و مرتب در کنار یکدیگر قرار گرفته اند و می توان از آنها در برنامه های مختلف استفاده کرد. همچنین در فریم ورک ها ممکن است از چندین الگو طراحی و معماری خاص استفاده شود. در واقع یک فریم ورک تمامی پیچیدگی یک زبان برنامه نویسی را به طرز معجزه آسایی آسان میکند تا به ساده ترین شکل ممکن شخصی حتی بدون آگاهی از پیچیدگی ها زبان برنامه نویسی کد نویسی کند.مزایا فریم ورک :سرعت بیشتر در کد نویسیسادگی بیشترکد نویسی اصولی ترامنیت بیشترو بسیار موراد دیگراما خودمان یک فریم ورک توسعه دهیم یا از فریم ورک های رایج و معروف استفاده کنیم؟در واقع اگر شما قصد دارید یک وب سایت یا یک نرم افزار را لانچ کنید توصیه میشه که از بین فریم ورک های موجود یکی را انتخاب کنید چرا که بجای اینکه شما این وقت رو بزارید بر روی منطق کد نویسی و برنامه نویسی همین وقت رو بزارید روی شناسایی های نیاز کاربر و امکانات محصول و چگونگی عرضه و فروش این محصول، چرا که نوشتن یک فریم ورک و stable کردن آن خود یک فرایند پیچیده و زمان بر می باشد.همچنین بهترین انتخاب برای کسب و کار های کوچک و یا استارتاپ ها استفاده از فریم ورک ها می باشد فرض می کنیم شما قصد راه اندازی یک سرویس آنلاین را دارید که با یک برنامه نویس همکاری میکنید و سرور را برای شما با فریم ورکی که خود با زبان PHP  و کلاینت هم با جاوا اسکریپت (به کمک jQuery) می نویسد بعد از مدتی به هر دلیلی همکاری شما با آن برنامه نویسی به پایان می رسد ممکن خدایی نکرده اتفاقی برای اون برنامه نویس پیش بیاد یا سرباز باشه یا بین شما اختلافی پیش بیاد حالا شما برای نگهداری و ارتقا این نرم افزار مطمئنا به مشکل خواهید خورد!چرا که باید کلی هزینه (پول، زمان) صرف کنید و برنامه نویسی پیدا کنید که این کد های نوشته شده را برای شما بررسی کند و از منطق برنامه سر در بیاورد یا دوباره پروژه را بازنویسی کند ولی اگر برنامه نویس شما برای سرور از فریم ورک لاراول (PHP) یا پینوکس (PHP) و برای کلاینت فریم ورک Vue.js را انتخاب میکرد حالا شما اون مشکل قبل رو نداشتید و همچنین هسته پروژه شما روز به روز قوی تر و ایمن تر می شد چرا که این فریم ورک های اوپن سورس هر روز ارتقا پیدا می کنند و قوی تر می شوند همچنین برای استخدام یک فرد جدید می تونید ارجاع بدین به سایت پشتیبانی این زبان ها که آموزش های لازم را فرا بگیرند یا ذکر کنید دنبال افرادی هستید که در این فریم ورک ها مهارت دارند.اما اگر قصد دارید یک زبان برنامه نویسی را واقعا یادبگیرید و علمتان را بیشتر کنید پیشنهاد میدهم خودتان اینکار را انجام دهید و مجموعه کلاس ها و متد های قبلی خود را بررسی و جدا کنید و تا میتوانید فریم ورک های نمونه و مشابه را تحلیل و بررسی کنید و شروع به کدنویسی یک فریم ورک ‌کنید.اما‌ کد نویسی یک ‌فریم ورک کار بسیار سخت و زمان بری است پس برای شما چند پیشنهاد دارم قرار نیست یک شبه فریم‌ورک خود را بسازید بهتر در کنار پروژه ها و یا استفاده از دیگر فریم ورک ها ، چند روزی را به توسعه فریم ورک خود اختصاص دهید . حتما برای شروع کدنویسی فریم ورک ، یک سیستم یا برنامه را در نظر بگیرید وقتی آن را ساختید کد های پایه را جدا و مرتب کنید سپس روی آن بیشتر کار کنید و در دیگر برنامه ها از آنها استفاده کنید تا به مرور به فریم ورک اختصاصی خود برسید.خوشحال می شم اگر برنامه نویس هستید یا صاحب کسب و کار تجربه خود را در قسمت نظرات به اشتراک بگذارید.</description>
                <category>پینوکس</category>
                <author>یوسف علی پور</author>
                <pubDate>Thu, 11 Jul 2019 12:46:16 +0430</pubDate>
            </item>
                    <item>
                <title>تفاوت OpenID و OAuth چیست؟</title>
                <link>https://virgool.io/pinoox/%D8%AA%D9%81%D8%A7%D9%88%D8%AA-openid-%D9%88-oauth-%DA%86%DB%8C%D8%B3%D8%AA-c3zfdwm7xbwo</link>
                <description>تفاوت OpenID و OAuth چیست؟ اوپن آیدی (OpenID) چیست؟  تکنولوژی که بتوان هویت کاربری در یک وبگاه را از طریق یک وبگاه دیگر تایید کرد به آن OpenID میگویند یعنی در واقع شما میتوانید هویت کاربر را در چندین سرویس و سایت از یک وبگاه احراز کنید برای مثال همه سایت هایی که از ورود با گوگل استفاده میکنند برگرفته از تکنولوژی OpenID هستند و به کسایی هم که خدمات اوپن آیدی را ارائه می دهند OpenID Provider گفته می شود. برای مثال گوگل، فیسبوک، توییتر، لینکدین و ... هر کدوم یک ارائه دهنده اوپن آیدی یا OpenID Provider هستند.پروتکل OAuth چیست؟یک قرارداد و مجوز باز است که به سرویس های اینترنتی اجازه می دهد اطلاعات کاربران را بدون نیاز به دادن یک گذرواژه و نام کاربری بصورت امن با دیگر سرویس ها به اشتراک بگذارد و همینطور یک دسترسی موقت را از طریق یک توکن دسترسی (کد هش شده مشخص برای هر کاربر) ایجاد کند و بوسیله آن اجازه انجام یکسری کار مشخص را از طرف کاربر می دهد.تفاوت OpenID vs OAuth:اوپن آیدی OpenID درباره احراز هویت است (به عنوان مثال اثبات اینکه شما چه کسی هستید؟) و OAuth در مورد مجوز (یعنی دسترسی به یک عملکرد،یا داده ای از اطلاعات) بدون نیاز به احراز هویت می باشد.بنابراین احراز هویت در مورد اطمینان از این است که شخصی که با آن در ارتباط هستید در واقع  همان کسی است که او ادعا می کند ولی مجوز در مورد اینه که تصمیم بگیرد چه کسی مجاز به انجام آن است.در OpenID (احراز هویت):فرض کنید سرور A می خواهد کاربر P را تایید کند، اعتبار کاربر P توسط سرور B مشخص می شود، در حقیقت سرور B اطمینان می دهد که P در واقع P است، و سپس به A می گوید: خب این P واقعی است.اما در OAuth (مجوز): کاربر P از سرور A یک توکن دسترسی دریافت می کند که می تواند آنرا در اختیار سرور B برای دسترسی به یک سری موارد مشخص شده بدهد، بنابراین A می تواند کلیدهای دسترسی موقت و خاصی را برای B فراهم آورد.برای مثال شما می توانید سرور OAuth را به عنوان کلید دار یک هتل بزرگ تصور کنید؛ او کلیدها را به کارکنان می دهد که درهای اتاق را برای شخصی که قرار است وارد اتاق شود باز کنند، اما هر کلید محدود است و فقط در یک اتاق را باز میکند (یعنی با یک کلید دسترسی به تمام اتاق ها را ندارید)؛ علاوه بر این کارکنان موظف هستند کلید خود را پس از چند ساعت از بین ببرند.در نتیجه میتوان گفت که OAuth یک چارچوب یا مجوز است که به تنهایی یک پروتکل احراز هویت نیست و میتوان از این چارچوب مجوز در احراز هویت استفاده نمود.کاربرد OAuth  :فرض کنید شما بخواهید از خدمات یک وب سایت استفاده کنید یا تحلیلی بر روی داده های یک کاربر در آن وب سایت ارائه بدهید که برای این کار نیاز به نام کاربری و رمز عبور کاربر می باشد که در این صورت باید کاربر نام کاربری و رمز عبور خود را در اختیار شما قرار بدهد که این کار علاوه بر جلب اعتماد کاربر، مشکلات امنیتی و مسئولیتی (لو نرفتن نام کاربری و رمز عبور کاربران توسط شما)، مشکلات دیگری به همراه خواهد داشت و همچنین به این شکل شما دسترسی به همه قسمت های پنل کاربری که مطمئنا کاربر علاقه ای ندارد شما چنین دسترسی را داشته باشید را دارید پس یکی از راه حل های موجود OAuth بود که یک دسترسی محدود و مشخص و البته ایمن بدون نیاز به نام کاربری و رمز عبور در اختیار شما قرار دهد.</description>
                <category>پینوکس</category>
                <author>یوسف علی پور</author>
                <pubDate>Tue, 25 Jun 2019 11:17:46 +0430</pubDate>
            </item>
                    <item>
                <title>برنامه نویسی =! سینتکس نویسی</title>
                <link>https://virgool.io/pinoox/%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%B3%DB%8C%D9%86%D8%AA%DA%A9%D8%B3-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-ouqt0vdflgpn</link>
                <description>از کجا برنامه نویسی را شروع کنم؟ جایگاه سینتکس و شروع مسیر برنامه نویسی؟به قواعد نوشتاری در هر زبان برنامه نویسی، سینتکس میگویند. مثلا زبان Java سینتکس خاص خود را برای تعریف متغییر دارد :int test= 25;و زبان PHP هم همینطور :$test= 25;پس هر زبان برنامه نویسی قواعد و سینتکس های مخصوص به خود را دارد.خب با این همه سینتکس در زبان های برنامه نویسی چی کار کنیم ؟‏بجای اینکه وقت بزاری ‎سینتکس های یک زبان ‎برنامه نویسی را حفظ کنی همین وقت را بزار روی قواعد و اصول برنامه نویسی مهم اینه که بتونی معماری ها را درک کنی دیگه هر زبانی یک سری سینتکس مشخص داره!!بگذارید همین اول بگویم که شما بر روی دیوار های غار کد حک نمی کنید، پس با دسترسی به ‌اینترنت، کتابها ،سورس کدهای قبلی و دیگر منابع به راحتی می توانید سینتکس های خود را بیابید و در ضمن IDE ها آنقدر قوی و ساده شده که دیگر این مشکل را برای شما آسان‌ کرده اند بنابراین برای یادگیری کد نویسی نباید بدنبال حفظ سینتکس ها باشید بلکه باید بدنبال یادگیری آنها باشید. پس سعی کنید بجای حفظ سینتکس ها با آنها آشنا باشید و به عبارتی با سینتکس ها در حد سلام و علیک در ارتباط باشید. فقط این مسیر را انتخاب کنید و از آینده پیش رو هرگز نترسید و در آن استوار باشید هرگز برای شروع دیر نیست. بجای ساخت مانع از ترسهایتان با آنها پل درست کنید. پس هنر یک برنامه ‌نویس در تایپ کردن کدهای برنامه نیست بلکه در پیدا کردن بهترین راهکار و معماری ساخت برنامه است. بجای حفظ کد و حفظ سینتکس های یک زبان برنامه نویسی بیشتر بر روی قواعد کار توجه نشان دهید و بدانید که درون غار و بر روی دیوار های آن کد حک نمی کنید که همه کد ها را حفظ باشید!پیشنهاد من برای شما اینه که یک زمان محدود نهایتا دو هفته ای برای خود مشخص کنید و بدنبال یادگیری و قواعد یک زبان برنامه نویسی باشید بعد از آن  به هر جا که رسیدید دیگر بگویید کافی هست حالا وقت آن رسیده که آموزش پروژه ای با تعریف سناریو را شروع کنم، پس با تعریف یک سناریو مثلا ساخت ماشین حساب برای پسر داییم که کلاس پنجم دبستان است که بتونه با آن عملیات جمع، تفریق ،ضرب و تقسیم را انجام بده شروع کنید خب به همین شکل و ساختار صعودی یعنی به مرور سناریو های جدید بزرگتر و با چالش بیشتر را تعریف میکنید و پیش می روید و اوایل ممکنه در سینتکس نویسی خیلی کند باشید ولی با تکرار زیاد، سینتکس های پراستفاده را به مرور سریعتر تایپ میکنید و دیگر سینتکس ها هم با یک جستجو ساده پیدا خواهید کرد.بنابراین میتوانید از اینترنت و موتور های جستجو، ابزار ها و سورس کدهای قبلی بهره ببرید و پروژه محور و با تعریف سناریو آموزش ها رو پیش ببرید و مطمئنا منابع فارسی خوب هم زیاد پیدا میشه و اصلاحات انگلیسی در برنامه نویسی زیاد سخت و دشوار نیست با چند بار تکرار و کد نویسی سرعت شما در کد نویسی بالا رفته و به مرور سینتکس های بیشتری را به یاد می سپارید.اما برای اینکه برنامه نویسی حرفه ای بشوید باید مطالعه زیاد، تلاش و تجربه کسب کنید که این تجربه هم با مشارکت در پروژه های مختلف نرم افزاری حاصل میشه سعی کنید سورس کدهای خود را به دیگران نشان دهید و بازخورد بگیرید و به نقدها گوش دهید (روی خوش نشان بدین) و اگر میخواهید در این مسیر سریعتر رشد کنید میتوانید در تیم های نرم افزاری کوچک و قوی (تیم های در حال رشد) به عنوان کارآموز مشارکت داشته باشید و فنون را به شکل مستقیم یاد بگیرید و همچنین با الگو های مختلف طراحی و پارادایم های برنامه نویسی آشنا شوید.جمله پایانی :همیشه در کودکی از بزرگسالی می ترسیدم که آیا میتوانم کار های آدم بزرگ ها را انجام بدهم یا نه ولی الان یه نگاهی که به گذشته میکنم میبینم ‌خیلی کار های آدم بزرگها را انجام دادم. به برنامه نویسی بعنوان یک هنر نگاه کنید و از گستردگی آن هیچگاه نترسید، مهم نقطه آغاز است!</description>
                <category>پینوکس</category>
                <author>یوسف علی پور</author>
                <pubDate>Mon, 24 Jun 2019 11:23:23 +0430</pubDate>
            </item>
                    <item>
                <title>پروتکل گراف باز (Open Graph) چیست؟</title>
                <link>https://virgool.io/pinoox/%D9%BE%D8%B1%D9%88%D8%AA%DA%A9%D9%84-%DA%AF%D8%B1%D8%A7%D9%81-%D8%A8%D8%A7%D8%B2-open-graph-%DA%86%DB%8C%D8%B3%D8%AA-uqcrvlack6j0</link>
                <description>پروتکل گراف باز (Open Graph) چیست؟ و به کارگیری آن چه اهمیتی بر سئو وب سایت دارد؟در سال 2010 فیسبوک برای اینکه بتواند آدرس ها و لینک های به اشتراک گذاشته توسط افراد را به طور صحیح تری پیدا و اطلاعات کاملتری از محتوا وب در اختیار کاربران خود قرار دهد این پروتکل را بوجود آورد تا صاحبان وب سایت ها با پیروی از آن بتوانند محتوا های خود را بهتر در فیسبوک به اشتراک بگذارند.اما حالا این پروتکل به یک استاندارد برای اکثر شبکه های اجتماعی و ربات ها تبدیل شده برای خزیدن صحیح و بهتر در وب سایت ها و به اشتراک گذاری محتوا که برای مثال میتوان گفت حالا فیسبوک، گوگل، تلگرام و  بسیاری از سرویس ها از آن بهره می برند.در واقع Open Graph تکنولوژی است که یک صفحه وب را به یک شی ارزشمند برای شبکه های اجتماعی تبدیل می کند و هدف از بوجود آمدن پروتکل گراف باز این بود که همه اطلاعات کافی برای ارائه یک صفحه وب در یک گراف و بصورت ساده در اختیار بخش فنی قرار گیرد.برای مثال شما یک محصول دارید که دارای چندین تصویر است که یکی از آنها تصویر شاخص شما برای نمایش است خب مشکلی که وجود داشت در شبکه های اجتماعی و سایر سرویس های به اشتراک گذاری نمی توانستند متوجه شوند که شما کدام تصویر را به عنوان تصویر شاخص قرار داده اید که برای رفع این مشکل تکنولوژی Open Graph پیشنهاد میدهد که از متاتگ زیر برای معرفی تصویر شاخص به شبکه های اجتماعی و سرویس های وابسته استفاده کنید.&lt;meta property=&quot;og:image&quot; content=&quot;yoosefap.jpg&quot;/&gt;برای اطلاعات بیشتر و کاملتر از پروتکل گراف باز و آشنایی با همه متاتگ های آن به آدرس زیر (سایت اصلی) مراجعه کنید.http://ogp.meنکته &gt; امروزه در سئو حتما توصیه می شود که از Open Graph پیروی کنید و از متاتگ های آن متناسب با هر صفحه وب خود استفاده کنید.</description>
                <category>پینوکس</category>
                <author>یوسف علی پور</author>
                <pubDate>Mon, 24 Jun 2019 10:40:08 +0430</pubDate>
            </item>
                    <item>
                <title>اهمیت مدیریت  Output Buffering در زبان های سمت سرور</title>
                <link>https://virgool.io/pinoox/%D8%A7%D9%87%D9%85%DB%8C%D8%AA-%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA-output-buffering-%D8%AF%D8%B1-%D8%B2%D8%A8%D8%A7%D9%86-%D9%87%D8%A7%DB%8C-%D8%B3%D9%85%D8%AA-%D8%B3%D8%B1%D9%88%D8%B1-dsj6n0hwajsg</link>
                <description>حافظه بافر یک رابط حافظه ای بین دو سرویس، دستگاه یا سخت افزار است تا بتواند تفاوت سرعت بین این  دو را جبران کند.اجازه بدین با یک مثال کاملتر توضیح بدم :از طریق یک کامپیوتر شما درخواست چاپ  را به پرینتر صادر می کنید  پردازنده این درخواست را در کسری از ثانیه به پرینتر می فرستد ولی پرینتر نمی تواند این درخواست را سریعاً پاسخ دهد چرا که باید موجود بودن کاغذ، تنظیم رنگ، ترتیب و ... را نیز رعایت کند پس برای همین که پرینتر فراموش نکند اطلاعات درخواست چاپ در بافر نگه داری می شود تا صفحات به ترتیب چاپ شوند بنابراین بافر سرعت CPU را با عملکرد چاپگر تطبیق میدهد.پس عملا بافر جایی استفاده میشود که سرعت یک دستگاه یا قطعه از اون یکی بیشتر باشهاگر دقت کرده باشید بخواهید یک ویدیو از سایت های اشتراک ویدیو مشابه یوتیوب و آپارات ببینید بعضی وقتا ویدیو قطع میشه و بعد از چند ثانیه دوباره پخش میشه در این چند ثانیه در واقع در حال انجام عمل buffering می باشد یعنی سرعت اینترنت شما کندتر هست و برای تطبیق سرعت میان سرور و اینترنت شما این عمل را انجام میده تا پخش بهتری رو داشته باشید.حالا شما با زبان های سمت سرور نظیر php و ... میتوانید به راحتی output buffering رو مدیریت کنید و اما مزایایی که برای شما خواهد داشت: 1-  ارسال کامل و یک تکه بجای ارسال تکه تکه و قسمت قسمت کدهای html به سمت مرورگر2-  جلوگیری از خطاهای header که معمولا دراستفاده از سشن ها و کوکی ها بوجود میاد3-  مدیریت، فشرده سازی و یکپارچه سازی آنچه که قرار است به سمت مرورگر ارسال بشه</description>
                <category>پینوکس</category>
                <author>یوسف علی پور</author>
                <pubDate>Sat, 22 Jun 2019 21:27:47 +0430</pubDate>
            </item>
            </channel>
</rss>