#دانستنی
✅ چرا نباید موقع شارژ با گوشی کار کنیم؟
🍃💐🍃🌸🍃🌸🍃
➖➖➖➖➖➖➖➖➖➖
🆑 → @segmenttt 🔰
➖➖➖➖➖➖➖➖➖➖
👁🗨با فوروارد کردن پست های چنل از ما حمایت کنید 👁🗨
✅ چرا نباید موقع شارژ با گوشی کار کنیم؟
🍃💐🍃🌸🍃🌸🍃
➖➖➖➖➖➖➖➖➖➖
➖➖➖➖➖➖➖➖➖➖
👁🗨با فوروارد کردن پست های چنل از ما حمایت کنید 👁🗨
Telegram
attach 📎
الگوی طراحی Adapter :
همان گونه که از اسم این الگو مشخص است ، هنگامی که دو کلاس واسطهای غیرمرتبط با یکدیگر داشته باشند این الگو واسط یکی را به دیگری تبدیل میکند که بتوانند با یکدیگر ارتباط برقرار کنند .
از این الگو که یک الگوی ساختاری است زمانی استفاده میشود که در یک برنامه بخواهیم که دو کلاس غیرمرتبط با یکدیگر کار کنند . این الگو در برنامههایی که از کلاسهای آماده و یا از کلاسهایی که قبلا نوشته شدهاند و بهگونهای میباشند که طراحان نرمافزار اجازه تغییر در این کلاسها را نداده باشند، استفاده میشود. بسیاری از مثالهای الگوی Adapter درگیر ورودی و خروجی هستند. زیرا این دامنهای است که همیشه تغییر میکند.
برای مثال برنامههایی که در دهه 80 میلادی نوشته شدهاند دارای UI بسیار ضعیفتری نسبت به برنامههای نوشته شده در هزاره سوم میلادی هستند. حال اگر دوبارهنویسی همان برنامههای قبلی بهصرفه نباشد و بخواهیم این برنامهها با سخت افزارهای جدید همخوانی و سازگاری داشته باشند، باید برنامهای طراحی کنیم که بین این دو برنامه یعنی برنامه قدیمی و راهاندازهای سخت افزارهای جدید قرار بگیرد و بین این دو برنامه ارتباط برقرار کند. به برنامهای که بین این دو برنامه قرار میگیرد، Adapter گویند. حال شاید به نظر برسد که استفاده از Adapter اصلاً نیاز نباشد و میتوان واسط یکی از کلاسها را تغییر داد تا بتواند کار کند، این کار زمانی ممکن است که بتوان به کد کلاسها دسترسی داشت و تغییر کلاسها باعث به وجود آمدن مشکل در برنامه نباشد و پیچیدگی برنامه را افزایش ندهد که در اکثر مواقع این عمل بهصرفه نیست.
الگويAdapter الگويی است كه در دنيای واقعي نمونههاي زيادي از آن وجود دارد و به همين خاطر درك اين الگو زياد مشكل نخواهد بود.
در شکل مربوطه کلاس دیاگرام مربوط به این الگو نمایش داده شده و در زیر آن شرکتکنندگان در آن و نقش هریک بیان شده است.
بنابر گفته GoF هدف از الگوي Adapter عبارت است از :
تبدیل واسط یک کلاس به واسط دیگری که کاربر توقع دارد. Adapter امکان همکاری بین چند کلاس که به علت ناهمگونی واسطهایشان به روش دیگری نمیتوانند باهم کار کنند، را فراهم میآورد .
🍃💐🍃🌸🍃🌸🍃
➖➖➖➖➖➖➖➖➖➖
🆑 → @segmenttt 🔰
➖➖➖➖➖➖➖➖➖➖
👁🗨با فوروارد کردن پست های چنل از ما حمایت کنید 👁🗨
همان گونه که از اسم این الگو مشخص است ، هنگامی که دو کلاس واسطهای غیرمرتبط با یکدیگر داشته باشند این الگو واسط یکی را به دیگری تبدیل میکند که بتوانند با یکدیگر ارتباط برقرار کنند .
از این الگو که یک الگوی ساختاری است زمانی استفاده میشود که در یک برنامه بخواهیم که دو کلاس غیرمرتبط با یکدیگر کار کنند . این الگو در برنامههایی که از کلاسهای آماده و یا از کلاسهایی که قبلا نوشته شدهاند و بهگونهای میباشند که طراحان نرمافزار اجازه تغییر در این کلاسها را نداده باشند، استفاده میشود. بسیاری از مثالهای الگوی Adapter درگیر ورودی و خروجی هستند. زیرا این دامنهای است که همیشه تغییر میکند.
برای مثال برنامههایی که در دهه 80 میلادی نوشته شدهاند دارای UI بسیار ضعیفتری نسبت به برنامههای نوشته شده در هزاره سوم میلادی هستند. حال اگر دوبارهنویسی همان برنامههای قبلی بهصرفه نباشد و بخواهیم این برنامهها با سخت افزارهای جدید همخوانی و سازگاری داشته باشند، باید برنامهای طراحی کنیم که بین این دو برنامه یعنی برنامه قدیمی و راهاندازهای سخت افزارهای جدید قرار بگیرد و بین این دو برنامه ارتباط برقرار کند. به برنامهای که بین این دو برنامه قرار میگیرد، Adapter گویند. حال شاید به نظر برسد که استفاده از Adapter اصلاً نیاز نباشد و میتوان واسط یکی از کلاسها را تغییر داد تا بتواند کار کند، این کار زمانی ممکن است که بتوان به کد کلاسها دسترسی داشت و تغییر کلاسها باعث به وجود آمدن مشکل در برنامه نباشد و پیچیدگی برنامه را افزایش ندهد که در اکثر مواقع این عمل بهصرفه نیست.
الگويAdapter الگويی است كه در دنيای واقعي نمونههاي زيادي از آن وجود دارد و به همين خاطر درك اين الگو زياد مشكل نخواهد بود.
در شکل مربوطه کلاس دیاگرام مربوط به این الگو نمایش داده شده و در زیر آن شرکتکنندگان در آن و نقش هریک بیان شده است.
بنابر گفته GoF هدف از الگوي Adapter عبارت است از :
تبدیل واسط یک کلاس به واسط دیگری که کاربر توقع دارد. Adapter امکان همکاری بین چند کلاس که به علت ناهمگونی واسطهایشان به روش دیگری نمیتوانند باهم کار کنند، را فراهم میآورد .
🍃💐🍃🌸🍃🌸🍃
➖➖➖➖➖➖➖➖➖➖
➖➖➖➖➖➖➖➖➖➖
👁🗨با فوروارد کردن پست های چنل از ما حمایت کنید 👁🗨
#ترفند
✅ ترفند های شیطانی موبایل
🍃💐🍃🌸🍃🌸🍃
➖➖➖➖➖➖➖➖➖➖
🆑 → @segmenttt 🔰
➖➖➖➖➖➖➖➖➖➖
👁🗨با فوروارد کردن پست های چنل از ما حمایت کنید 👁🗨
✅ ترفند های شیطانی موبایل
🍃💐🍃🌸🍃🌸🍃
➖➖➖➖➖➖➖➖➖➖
➖➖➖➖➖➖➖➖➖➖
👁🗨با فوروارد کردن پست های چنل از ما حمایت کنید 👁🗨
Telegram
attach 📎
الگوهای طراحی و معماری-2
Domain Model – بخش اول :
منظور از اين مدل، object model ي از دامنه مساله است که هر کلاس آن شامل رفتار و ساختار موجوديتي(Entity) از موجوديتهاي آن دامنه است، براي مثال، "سند حسابداري"، که از مجموعه اي از آرتيکلها، تاريخ، شماره عنوان و وضعيت ساخته مي شود، از سويي مي تواند متد يا رفتاري با نام BALANCE را در خود داشته باشد که تراز بودن آن را مشخص مي کند،يادآوري مي کنم در روشي مانند Transaction Script متدي در يک کلاس که تراکنش ثبت سند را انجام مي دهد وجود دارد که تراز بودن سند را بررسي مي کند در حالي که در الگوي حاضر اين متد درون خود کلاس سند قرار مي گيرد.
نمودار Domain Model ، شبيه به نمودار Database Model است،با اين تفاوت که در آن موجوديتها علاوه بر ساختار، داراي رفتار و پروسس بوده و در مدل، شبکه اي پيچيده از ارتباطات (Association)بين اشيا و رابطه ارث بري (Inheritance) بين آنها وجود دارد.
خلاصه اينکه Domain Model متشکل از شبکه اي از اشيا به هم مرتبط از موجوديتهاي دامنه مساله است، هر موجوديت در دامنه مساله فارغ از سايز و اندازه اش و پيچيدگيش، داراي معناي خاص و واضحي است براي مثال "شرکت" موجوديتي بزرگ و "سفارش خريد" موجوديتي کوچک در دامنه مساله سيستم "پيگيري سفارشات" است که هر دو در مدل، کلاسهايي نظير براي خود دارند. بديهي است استفاده از Domain Model در يک برنامه به معناي قرار دادن تمام شبکه اشياء ساخته شده براي مساله در آن دامنه است، پس بهتر است از همين ابتدا ذکر کنم که خيال کندن بخشي از يک مدل و قرار دادن آن د برنامه اي ديگر را از ذهنتان بيرون کنيد، اين کار در ادامه پروژه تان به فاجعه منجر خواهد شد.
در مدل مورد بحث، ميتوان اشياء را به دو دسته تقسيم کرد، اشيايي که داراي ساختاري معادل با موجوديت هاي مساله هستند و اشيايي که تنها قوانين و آلگوريتمهاي محاسباتي مختلف را در خود دارند و به اقتضاي نيازهاي غير عملکردي در سيستم بوجود آمده اند، براي مثال مي توان به شي کارمند و احکام حقوقي او در سيستم حقوق دستمزد و شي محاسبه کننده کسورات بر اساس نوع بيمه کارمند اشاره کرد، دو شي اولي داراي ساختاري از اطلاعات دامنه مساله و دومي در برگيرنده آلگوريتمهاي محاسبه کسورات بر حسب نوع بيمه و قرارداد کارمند است. لازم به ذکر است که در الگوي Domain model اولويت با ترکيب الگوريتمها در کلاس نماينده موجوديتهاست و تنها بايد بر حسب ضرورتهاي طراحي و بر اساس الگوهاي طراحي نسبت به استخراج آلگوريتمها و محاسبات و قرار دادن آنها در کلاسهاي جداگانه اقدام کرد.
مدلهاي حاصل از اين الگو را مي توان به دو دسته ساده و پيچيده تقسيم کرد، در Domain Model هاي ساده به ازاي هر جدول در بانک اطلاعاتي يک کلاس در مدل وجود دارد؛ در مدلهاي پيچيده الازمي براي تطابق ساختار مدل با ساختار بانک اطلاعاتي وجود نداشته و درآن از ارث بري و الگوهاي طراحي به منظور خوانايي و انعطاف بيشتر استفاده مي شود. نگاشت مدلهاي ساده به بانک اطلاعاتي به سادگي و با استفاده از الگويي مانند Active Record انجام مي شود در حالي که نگاشت مدلهاي پيچيده مشکل تر بوده و نيازمند استفاده از Data Mapper ها ست .(در اين باب در پستهاي بعدي به تفصيل سخن خواهم گفت)
از آنجا که قوانين حاکم بر دامنه کسب و کار مرتبط با برنامه هاي ايجاده شده عموما در حال تغيير و تحول هستند لازم است براي جلوگيري از نشر و تاثير اين تغييرات در لايه هاي ديگر برنامه، حداقل وابستگي ممکن بين Domain Model و ساير لايه هاي برنامه وجود داشته باشد تا بتوان علاوه بر کنترل باز نشر تغييرات در ساير لايه ها، امکان Build و Test جداگانهDomain Model را نيز فراهم کرد.
مزايا:
زماني که از اين الگو براي ايجاد لايه Domain Logic استفاده مي کنيد، زبان مشترکي بين اعضاي تيم توليد وحتي مشتري، در حوزه مساله ايجاد مي شود که تعامل بين اين افراد را در پروژه ساده تر مي نمايد، با توجه به تطبيق فضاي راه حل با مساله- به علت وجود موجوديتهاي معادل دامنه در راه حل و برنامه- درک و فهم سيستم براي سايرين ساده تر شده، همپنين تقسيم وظايف لازم براي انجام يک کار بين اشيا به راحتي انجام مي گيريد. از سويي وجود اين خصوصيات خود موجب کاهش هزينه نگهداري سيستم در دراز مدت شده و با تغيير و پيچيده تر شدن مساله در طول زمان نگهداري و اعمال تغيير راحت تر از حالات ديگر خواهد بود.
معايب:
اين شيوه نياز به دانش بيشتري در حوزه طراحي و اصول و مفاهيم شي گرايي نسبت به ساير روشها داشته و نيازمند بکارگيري نيروهاي حرفه اي تر و متعاقبا گرانتري در انجام پروژه است، از سويي وجود لايه ها و کامپوننت هاي متعدد براي نگاشت موجوديتها به جداول بانک اطلاعاتي (Data Mappper) و DTO ها
Domain Model – بخش اول :
منظور از اين مدل، object model ي از دامنه مساله است که هر کلاس آن شامل رفتار و ساختار موجوديتي(Entity) از موجوديتهاي آن دامنه است، براي مثال، "سند حسابداري"، که از مجموعه اي از آرتيکلها، تاريخ، شماره عنوان و وضعيت ساخته مي شود، از سويي مي تواند متد يا رفتاري با نام BALANCE را در خود داشته باشد که تراز بودن آن را مشخص مي کند،يادآوري مي کنم در روشي مانند Transaction Script متدي در يک کلاس که تراکنش ثبت سند را انجام مي دهد وجود دارد که تراز بودن سند را بررسي مي کند در حالي که در الگوي حاضر اين متد درون خود کلاس سند قرار مي گيرد.
نمودار Domain Model ، شبيه به نمودار Database Model است،با اين تفاوت که در آن موجوديتها علاوه بر ساختار، داراي رفتار و پروسس بوده و در مدل، شبکه اي پيچيده از ارتباطات (Association)بين اشيا و رابطه ارث بري (Inheritance) بين آنها وجود دارد.
خلاصه اينکه Domain Model متشکل از شبکه اي از اشيا به هم مرتبط از موجوديتهاي دامنه مساله است، هر موجوديت در دامنه مساله فارغ از سايز و اندازه اش و پيچيدگيش، داراي معناي خاص و واضحي است براي مثال "شرکت" موجوديتي بزرگ و "سفارش خريد" موجوديتي کوچک در دامنه مساله سيستم "پيگيري سفارشات" است که هر دو در مدل، کلاسهايي نظير براي خود دارند. بديهي است استفاده از Domain Model در يک برنامه به معناي قرار دادن تمام شبکه اشياء ساخته شده براي مساله در آن دامنه است، پس بهتر است از همين ابتدا ذکر کنم که خيال کندن بخشي از يک مدل و قرار دادن آن د برنامه اي ديگر را از ذهنتان بيرون کنيد، اين کار در ادامه پروژه تان به فاجعه منجر خواهد شد.
در مدل مورد بحث، ميتوان اشياء را به دو دسته تقسيم کرد، اشيايي که داراي ساختاري معادل با موجوديت هاي مساله هستند و اشيايي که تنها قوانين و آلگوريتمهاي محاسباتي مختلف را در خود دارند و به اقتضاي نيازهاي غير عملکردي در سيستم بوجود آمده اند، براي مثال مي توان به شي کارمند و احکام حقوقي او در سيستم حقوق دستمزد و شي محاسبه کننده کسورات بر اساس نوع بيمه کارمند اشاره کرد، دو شي اولي داراي ساختاري از اطلاعات دامنه مساله و دومي در برگيرنده آلگوريتمهاي محاسبه کسورات بر حسب نوع بيمه و قرارداد کارمند است. لازم به ذکر است که در الگوي Domain model اولويت با ترکيب الگوريتمها در کلاس نماينده موجوديتهاست و تنها بايد بر حسب ضرورتهاي طراحي و بر اساس الگوهاي طراحي نسبت به استخراج آلگوريتمها و محاسبات و قرار دادن آنها در کلاسهاي جداگانه اقدام کرد.
مدلهاي حاصل از اين الگو را مي توان به دو دسته ساده و پيچيده تقسيم کرد، در Domain Model هاي ساده به ازاي هر جدول در بانک اطلاعاتي يک کلاس در مدل وجود دارد؛ در مدلهاي پيچيده الازمي براي تطابق ساختار مدل با ساختار بانک اطلاعاتي وجود نداشته و درآن از ارث بري و الگوهاي طراحي به منظور خوانايي و انعطاف بيشتر استفاده مي شود. نگاشت مدلهاي ساده به بانک اطلاعاتي به سادگي و با استفاده از الگويي مانند Active Record انجام مي شود در حالي که نگاشت مدلهاي پيچيده مشکل تر بوده و نيازمند استفاده از Data Mapper ها ست .(در اين باب در پستهاي بعدي به تفصيل سخن خواهم گفت)
از آنجا که قوانين حاکم بر دامنه کسب و کار مرتبط با برنامه هاي ايجاده شده عموما در حال تغيير و تحول هستند لازم است براي جلوگيري از نشر و تاثير اين تغييرات در لايه هاي ديگر برنامه، حداقل وابستگي ممکن بين Domain Model و ساير لايه هاي برنامه وجود داشته باشد تا بتوان علاوه بر کنترل باز نشر تغييرات در ساير لايه ها، امکان Build و Test جداگانهDomain Model را نيز فراهم کرد.
مزايا:
زماني که از اين الگو براي ايجاد لايه Domain Logic استفاده مي کنيد، زبان مشترکي بين اعضاي تيم توليد وحتي مشتري، در حوزه مساله ايجاد مي شود که تعامل بين اين افراد را در پروژه ساده تر مي نمايد، با توجه به تطبيق فضاي راه حل با مساله- به علت وجود موجوديتهاي معادل دامنه در راه حل و برنامه- درک و فهم سيستم براي سايرين ساده تر شده، همپنين تقسيم وظايف لازم براي انجام يک کار بين اشيا به راحتي انجام مي گيريد. از سويي وجود اين خصوصيات خود موجب کاهش هزينه نگهداري سيستم در دراز مدت شده و با تغيير و پيچيده تر شدن مساله در طول زمان نگهداري و اعمال تغيير راحت تر از حالات ديگر خواهد بود.
معايب:
اين شيوه نياز به دانش بيشتري در حوزه طراحي و اصول و مفاهيم شي گرايي نسبت به ساير روشها داشته و نيازمند بکارگيري نيروهاي حرفه اي تر و متعاقبا گرانتري در انجام پروژه است، از سويي وجود لايه ها و کامپوننت هاي متعدد براي نگاشت موجوديتها به جداول بانک اطلاعاتي (Data Mappper) و DTO ها
چه زماني از اين روش استفاده کنيد:
زماني بايد ازالگوي Domain Model استفاده نمود که با مساله اي پيچيده مواجه هستيد، مساله اي که در آن تعداد زيادي آلگوريتم محاسباتي براي شرايط مختلف، الگوهاي متفاوت براي صحت سنجي اطلاعات و مجموعه اي از قوانين دائما در حال تغيير وجود دارد
زماني بايد ازالگوي Domain Model استفاده نمود که با مساله اي پيچيده مواجه هستيد، مساله اي که در آن تعداد زيادي آلگوريتم محاسباتي براي شرايط مختلف، الگوهاي متفاوت براي صحت سنجي اطلاعات و مجموعه اي از قوانين دائما در حال تغيير وجود دارد
#ترفند
✅ ترفندهای رجیستری ویندوز
🍃💐🍃🌸🍃🌸🍃
➖➖➖➖➖➖➖➖➖➖
🆑 → @segmenttt 🔰
➖➖➖➖➖➖➖➖➖➖
👁🗨با فوروارد کردن پست های چنل از ما حمایت کنید 👁🗨
✅ ترفندهای رجیستری ویندوز
🍃💐🍃🌸🍃🌸🍃
➖➖➖➖➖➖➖➖➖➖
➖➖➖➖➖➖➖➖➖➖
👁🗨با فوروارد کردن پست های چنل از ما حمایت کنید 👁🗨
Telegram
attach 📎
الگوهای طراحی و معماری-1
Domain Logic
هر سند حسابداري بايد تراز باشد، هر چک بانکي تنها بايد توسط يک فرد حقيقي ظهر نويسي شده باشد، فرآيند انتقال کالا از واحدي به واحد ديگر در سازمان شامل درخواست، کالا، تاييد درخواست و انتقال کالا است. اينها همه قوانيني هستند که در صورت وجود يا عدم وجود نرم افزار در انجام امور مربوطه شان در دامنه مسايل روزمره سازمان حاکم هستند، اين قوانين و چگونگي انجامشان را Domain Logic مي گوييم.
در فرآيند توليد نرم افزار يکي از مهم ترين مسال اين است که اين قوانين را کجا قرار دهيم، چگونه سامانشان دهيم، چگونه دسته بندي شان کنيم و ... . راه هايي که براي اين کار وجود دارند را Domain Logic Pattern مي نامند. منهاي الگوهاي من درآوردي که هر برنامه نويسي در ابتداي کارش اختراع مي کند، سه الگو وجود دارند که حساب خود را در مسائل مختلف پس داده اند و بهتر است با ايده گرفتن از آنها طراحي اين لايه را انجام داد، اولين الگو براي سازماندهي قوانين دامنه کسب و کار Transaction Script است.
Transaction Script:
ايده اين الگو سازمان دادن هر تراکنش و درخواست لايه Presentation- از صفر تا صد- در يک رويه يا متد است، تراکنش مذکور مي تواند کاری ساده، همچو بارگزاري مجموعه اي از اطلاعات براي نمايش و يا کاری پيچيده، مانند محاسبه حقوق يک کارمند در سيستم حقوق و دستمزد باشد.
براي مثال به منظور رزور يک اتاق در هتل، گامهاي بررسي موجود بودن اتاق خالی، محاسبه نرخ کرايه و بروز رساني بانک اطلاعاتي، در يک رويه يا متد انجام مي شود.
براي سازمان دادن مجموعه Transaction Script ها مي توانيد آنها را بر حسب فاکتوری مانند موجوديتهاي محوري کسب و کار سازمان دهي کنيد و در يک کلاس جاي دهيد، بديهي است که مي توانيد فعاليتهاي مشترک را نيز در متدهايي جداگانه جاي دهيد تا هردفعه مجبور به تکرار آنها نشويد. از سويي مي توانيد هر Transaction Script را بصورت يک کلاس درآورده و با الگوي Command اجرا کنيد، مزيت اين روش قابليت تغيير Transaction Script ها در زمان اجراست،-واقعيت اين است که حتي خود آقاي Fowler هم به گفته خودش تا کنون به مساله اي بر نخورده که نياز به اين کار باشد!- در حالتي نوستالژيک هم مي توانيد تمام Transaction Script ها را در يک کلاس Static همچون متدهاي Global قرار دهيد و مانند دوران پيشا OO آنها را فراخواني کنيد.
روش دلخواه من همان اولي، يعني سازماندهي Transaction Scriptها حول محور يک موجوديت يا فعاليت اصلي در کسب و کار است ، مثلا در مساله رزور هتل ، می توان کلاسي براي مديريت امور رزرواسيون از رزرو گرفته تا لغو و يا تغيير مشخصات رزرواسيون داشت، که هر ترکنش در آن يک متد خواهد بود ، وجود چنين کلاسهايي علاوه بر دسته بندي منطقي به امکان استفاده ازThreading در صورت لزوم کمک شاياني مي کند بدون آنکه نگران دسترسی همزمان Thread های مختلف به داده ها و تکه کدهای مشترک باشيم.
دسترسي به Database :
عموما دسترسي به بانک اطلاعاتي در اين روش به واسطه لايه کوچکي از کلاسهاي Helperصورت مي گيرد که گاها تنها روکشي براي تکنولوژي ها يي همچو ADO.NET هستند. اگر لايه فيزيکی يا چارچوب عمومی ای برای دسترسي به داده جدا گانه اي نداريد پيشنهاد مي کنم حداقل يک کلاس به عنوان Helper براي کار با بانک اطلاعاتی داشته باشيد و اگر هم داشتن يک کلاس براي انجام کارهاي بانک اطلاعاي برايتان سخت است! حداقل کار را به متدهاي جدا گانه اي که تخصصشان کار با بانک اطلاعاتي است منتقل نماييد.
دليل اين تاکيد بر جدا سازي هم چيزي جز افزايش خوانايي و کمي افزايش قابليت نگهداري کد نيست، به عنوان يک Reviewer Code اصلا دوست ندارم وسط بررسي متد محاسبه ارزش افزوده يک فاکتور با کدهايي که براي باز کردن يک اتصال به بانک اطلاعاتي و اجراي يک دستور هستند مواجه شوم، ترجيح مي دهم متدي را ببينم که از نامش پيداست به بانک اطلاعات ميرود و عددی را برای ادامه محاسبه مي آورد.
مزايا:
مهمترين مزيت روش Transaction Script سادگي آن است، سيستمي که با اين روش نوشته شده باشد و قوانين مختصري در دامنه مساله اش داشته باشد براي هر برنامه نويسي به راحتي قابل فهم است.اين روش از حيث Performance نيز سر بار کمتري را به دنبالدارد.
معايب:
هرگاه دامنه کسب و کار و قوانين آن پيچيده و بزرگ شوند اين روش بسيار پيچيده می شود و منجر به ظهور کدهاي تکراري مي گردد که کار نگهداري، توسعه و تغيير سيستم ها را، کاري طاقت فرسا و خطا زا می سازد.
چه زماني از اين روش استفاده کنيد:
زماني که با مساله اي کوچک، داراي مجموعه قوانين کسب و کار مختصر طرف هستيد که تغيير چنداني در دامنه مساله نداريد اين روش بسيار کارا و مفيد است.
🍃💐🍃🌸🍃🌸🍃
➖➖➖➖➖➖➖➖➖➖
🆑 → @segmenttt 🔰
➖➖➖➖➖➖➖➖➖➖
👁🗨با فوروارد کردن پست های چنل از ما حمایت کنید 👁🗨
Domain Logic
هر سند حسابداري بايد تراز باشد، هر چک بانکي تنها بايد توسط يک فرد حقيقي ظهر نويسي شده باشد، فرآيند انتقال کالا از واحدي به واحد ديگر در سازمان شامل درخواست، کالا، تاييد درخواست و انتقال کالا است. اينها همه قوانيني هستند که در صورت وجود يا عدم وجود نرم افزار در انجام امور مربوطه شان در دامنه مسايل روزمره سازمان حاکم هستند، اين قوانين و چگونگي انجامشان را Domain Logic مي گوييم.
در فرآيند توليد نرم افزار يکي از مهم ترين مسال اين است که اين قوانين را کجا قرار دهيم، چگونه سامانشان دهيم، چگونه دسته بندي شان کنيم و ... . راه هايي که براي اين کار وجود دارند را Domain Logic Pattern مي نامند. منهاي الگوهاي من درآوردي که هر برنامه نويسي در ابتداي کارش اختراع مي کند، سه الگو وجود دارند که حساب خود را در مسائل مختلف پس داده اند و بهتر است با ايده گرفتن از آنها طراحي اين لايه را انجام داد، اولين الگو براي سازماندهي قوانين دامنه کسب و کار Transaction Script است.
Transaction Script:
ايده اين الگو سازمان دادن هر تراکنش و درخواست لايه Presentation- از صفر تا صد- در يک رويه يا متد است، تراکنش مذکور مي تواند کاری ساده، همچو بارگزاري مجموعه اي از اطلاعات براي نمايش و يا کاری پيچيده، مانند محاسبه حقوق يک کارمند در سيستم حقوق و دستمزد باشد.
براي مثال به منظور رزور يک اتاق در هتل، گامهاي بررسي موجود بودن اتاق خالی، محاسبه نرخ کرايه و بروز رساني بانک اطلاعاتي، در يک رويه يا متد انجام مي شود.
براي سازمان دادن مجموعه Transaction Script ها مي توانيد آنها را بر حسب فاکتوری مانند موجوديتهاي محوري کسب و کار سازمان دهي کنيد و در يک کلاس جاي دهيد، بديهي است که مي توانيد فعاليتهاي مشترک را نيز در متدهايي جداگانه جاي دهيد تا هردفعه مجبور به تکرار آنها نشويد. از سويي مي توانيد هر Transaction Script را بصورت يک کلاس درآورده و با الگوي Command اجرا کنيد، مزيت اين روش قابليت تغيير Transaction Script ها در زمان اجراست،-واقعيت اين است که حتي خود آقاي Fowler هم به گفته خودش تا کنون به مساله اي بر نخورده که نياز به اين کار باشد!- در حالتي نوستالژيک هم مي توانيد تمام Transaction Script ها را در يک کلاس Static همچون متدهاي Global قرار دهيد و مانند دوران پيشا OO آنها را فراخواني کنيد.
روش دلخواه من همان اولي، يعني سازماندهي Transaction Scriptها حول محور يک موجوديت يا فعاليت اصلي در کسب و کار است ، مثلا در مساله رزور هتل ، می توان کلاسي براي مديريت امور رزرواسيون از رزرو گرفته تا لغو و يا تغيير مشخصات رزرواسيون داشت، که هر ترکنش در آن يک متد خواهد بود ، وجود چنين کلاسهايي علاوه بر دسته بندي منطقي به امکان استفاده ازThreading در صورت لزوم کمک شاياني مي کند بدون آنکه نگران دسترسی همزمان Thread های مختلف به داده ها و تکه کدهای مشترک باشيم.
دسترسي به Database :
عموما دسترسي به بانک اطلاعاتي در اين روش به واسطه لايه کوچکي از کلاسهاي Helperصورت مي گيرد که گاها تنها روکشي براي تکنولوژي ها يي همچو ADO.NET هستند. اگر لايه فيزيکی يا چارچوب عمومی ای برای دسترسي به داده جدا گانه اي نداريد پيشنهاد مي کنم حداقل يک کلاس به عنوان Helper براي کار با بانک اطلاعاتی داشته باشيد و اگر هم داشتن يک کلاس براي انجام کارهاي بانک اطلاعاي برايتان سخت است! حداقل کار را به متدهاي جدا گانه اي که تخصصشان کار با بانک اطلاعاتي است منتقل نماييد.
دليل اين تاکيد بر جدا سازي هم چيزي جز افزايش خوانايي و کمي افزايش قابليت نگهداري کد نيست، به عنوان يک Reviewer Code اصلا دوست ندارم وسط بررسي متد محاسبه ارزش افزوده يک فاکتور با کدهايي که براي باز کردن يک اتصال به بانک اطلاعاتي و اجراي يک دستور هستند مواجه شوم، ترجيح مي دهم متدي را ببينم که از نامش پيداست به بانک اطلاعات ميرود و عددی را برای ادامه محاسبه مي آورد.
مزايا:
مهمترين مزيت روش Transaction Script سادگي آن است، سيستمي که با اين روش نوشته شده باشد و قوانين مختصري در دامنه مساله اش داشته باشد براي هر برنامه نويسي به راحتي قابل فهم است.اين روش از حيث Performance نيز سر بار کمتري را به دنبالدارد.
معايب:
هرگاه دامنه کسب و کار و قوانين آن پيچيده و بزرگ شوند اين روش بسيار پيچيده می شود و منجر به ظهور کدهاي تکراري مي گردد که کار نگهداري، توسعه و تغيير سيستم ها را، کاري طاقت فرسا و خطا زا می سازد.
چه زماني از اين روش استفاده کنيد:
زماني که با مساله اي کوچک، داراي مجموعه قوانين کسب و کار مختصر طرف هستيد که تغيير چنداني در دامنه مساله نداريد اين روش بسيار کارا و مفيد است.
🍃💐🍃🌸🍃🌸🍃
➖➖➖➖➖➖➖➖➖➖
➖➖➖➖➖➖➖➖➖➖
👁🗨با فوروارد کردن پست های چنل از ما حمایت کنید 👁🗨
#دانستنی
✅ گلوگاه سی پی یو چیست ؟ و چگونه آن را کاهش دهیم؟
🍃💐🍃🌸🍃🌸🍃
➖➖➖➖➖➖➖➖➖➖
🆑 → @segmenttt 🔰
➖➖➖➖➖➖➖➖➖➖
👁🗨با فوروارد کردن پست های چنل از ما حمایت کنید 👁🗨
✅ گلوگاه سی پی یو چیست ؟ و چگونه آن را کاهش دهیم؟
🍃💐🍃🌸🍃🌸🍃
➖➖➖➖➖➖➖➖➖➖
➖➖➖➖➖➖➖➖➖➖
👁🗨با فوروارد کردن پست های چنل از ما حمایت کنید 👁🗨
Telegram
attach 📎
الگوهای طراحی و معماری 0
تصميم گرفته ام از اين پس هر از چند گاهي مروري داشته باشم بر الگوهاي مختلف طراحي و معماري. در اين پست مقدمه اي بيان خواهم کرد و در پستهاي آتي به اصل موضوع خواهم پرداخت، منبع اصلي بحث کتاب PoEAA از آقاي Fowler است اما در خلال مطلب، به ساير منابع و تجربيات شخصي خويش نيز گريزي خواهم زد.
در مقدمه نياز است تا برخي از تعاريف را با هم همسان کنيم تا در ادامه به سوء تفاهم دجار نشويم.
در دنياي امروز براي اکثر امور جاري عالم نرم افزاري مرتبط وجود دارد، که جايي از آن کار سرو کله اش پيدا مي شود، از يک فروشگاه کتاب گرفته که براي جستجوي کتابهاي درون قفسه اش نرم افزاري را اختيار کرده تا يخچال هوشمندتان(اگر جديدا يخچالي خريده باشيد) که قابليت اتصال به اينترنت و هزار قرتي بازي ديگر را در خود دارد، سيستم کنترل چراغهاي راهنمايي رانندگي و کنترل بمبها و موشکهاي هوشمند هم براي خود سلسله اي از خانوادهاي نرم افزار ها هستند، واقعيتي که هر مهندس نرم افزاري بايد به آن آشنا باشد عدم شباهت اين دسته نرم افزارها به همديگر است، که نتيجه مسلم آن عدم قابليت استفاده نسخه هاي يپيچيده شده براي يکي در ديگري است، اگر مامور نوشتن برنامه کنترل سامانه موشکي باشيد و براي ساخت نرم افزار کنترل آن سامانه، از الگوهاي معماري که در محل کار قبليتان براي تهيه برنامه اتوماسيون اداري استفاده کرده ايد، استفاده کنيد بي شک بزرگ ترين لطف را به دشمن کرده ايد(عجب مثال کميکي شد!) و بلعکس اگر از معماري سيستم نرم افزاري يخچال و موشک هوشمند براي ساخت نرم افزار کتاب فروشي استفاده کنيد احتمالا با نرم افزاري مواجه خواهيد بود که تنها در دنيايي خيالي کاربرد دارد.
واقعيت آن است که دنياي نرم افزار دنياي "اگر" هاست، دنيايي که در آن پراگماتيسم مطلق حاکم است، آنچه در مساله اي صحيح است ممکن است در مساله ديگر غلط مطلق باشد، براي اجتناب از اين باتلاق معاني محدوده بحث خود را به سيستمهايي کهEnterprise Application ناميده ميشوند محدود مي کنيم و هرچه اينجا گفته مي شود با فرض حضور در دنياي اين نرم افزار هاست نه در دنياي يخچالها و ماشين هاي لباسشويي هوشمنديا بازي هاي کامپيوتري.
لذا
اولاً: براي يافتن تعريفي دقيق از اين دسته از نرم افزارها به کتاب PoEAA ، بخش مقدمه و مبحث Enterprise Applications مراجعه نماييد. همانطور که در آن کتاب خواهيد ديد مجموعه اي از خصوصيات براي نرم افزارهايي که ما آن را Enterprise Applications مي ناميم ارائه شده است که شامل موارد ذيل مي باشند:
· Data Persistence
· Large Amount Of Data
· Access Data Concurrently
· A lot of user interface screens
· Need to integrate with
other enterprise applications
· Complex business logic
ثانياً: اين الگوها مانند هر الگوي ديگري بايد متناسب با مساله اي که درگير حل آن هستيد و با توجه به بايدها و نبايدهاي آن مساله و فضاي آن بکار گرفته شوند، بي شک الگوهايي که براي ساخت سيستم اتوماسيون اداري يک سازمان کوچک با 20 کارمند بکار مي رود بسيار متفاوت با سيستم اتوماسيون سازماني با 14000 کارمند و ده ها شعبه است.
ثالثاً: تجربه نشان داده براي کاربرد بهتر الگوهاي طراحي بهترين راه حل، فهميدن صورت مساله آنهاست، بايد مساله اي را که الگو به عنوان راه حل براي آن ارائه شده است را بدرستي بفهميد تا بدانيد کجا از کدام الگو استفاده کنيد. پس آنچه در اين وبلاگ و ساير منابع و کتب طراحي گفته مي شود وحي منزل نبوده و بايد با توجه به فضاي مساله مورد استفاده قرار گيرند.
🍃💐🍃🌸🍃🌸🍃
➖➖➖➖➖➖➖➖➖➖
🆑 → @segmenttt 🔰
➖➖➖➖➖➖➖➖➖➖
👁🗨با فوروارد کردن پست های چنل از ما حمایت کنید 👁🗨
تصميم گرفته ام از اين پس هر از چند گاهي مروري داشته باشم بر الگوهاي مختلف طراحي و معماري. در اين پست مقدمه اي بيان خواهم کرد و در پستهاي آتي به اصل موضوع خواهم پرداخت، منبع اصلي بحث کتاب PoEAA از آقاي Fowler است اما در خلال مطلب، به ساير منابع و تجربيات شخصي خويش نيز گريزي خواهم زد.
در مقدمه نياز است تا برخي از تعاريف را با هم همسان کنيم تا در ادامه به سوء تفاهم دجار نشويم.
در دنياي امروز براي اکثر امور جاري عالم نرم افزاري مرتبط وجود دارد، که جايي از آن کار سرو کله اش پيدا مي شود، از يک فروشگاه کتاب گرفته که براي جستجوي کتابهاي درون قفسه اش نرم افزاري را اختيار کرده تا يخچال هوشمندتان(اگر جديدا يخچالي خريده باشيد) که قابليت اتصال به اينترنت و هزار قرتي بازي ديگر را در خود دارد، سيستم کنترل چراغهاي راهنمايي رانندگي و کنترل بمبها و موشکهاي هوشمند هم براي خود سلسله اي از خانوادهاي نرم افزار ها هستند، واقعيتي که هر مهندس نرم افزاري بايد به آن آشنا باشد عدم شباهت اين دسته نرم افزارها به همديگر است، که نتيجه مسلم آن عدم قابليت استفاده نسخه هاي يپيچيده شده براي يکي در ديگري است، اگر مامور نوشتن برنامه کنترل سامانه موشکي باشيد و براي ساخت نرم افزار کنترل آن سامانه، از الگوهاي معماري که در محل کار قبليتان براي تهيه برنامه اتوماسيون اداري استفاده کرده ايد، استفاده کنيد بي شک بزرگ ترين لطف را به دشمن کرده ايد(عجب مثال کميکي شد!) و بلعکس اگر از معماري سيستم نرم افزاري يخچال و موشک هوشمند براي ساخت نرم افزار کتاب فروشي استفاده کنيد احتمالا با نرم افزاري مواجه خواهيد بود که تنها در دنيايي خيالي کاربرد دارد.
واقعيت آن است که دنياي نرم افزار دنياي "اگر" هاست، دنيايي که در آن پراگماتيسم مطلق حاکم است، آنچه در مساله اي صحيح است ممکن است در مساله ديگر غلط مطلق باشد، براي اجتناب از اين باتلاق معاني محدوده بحث خود را به سيستمهايي کهEnterprise Application ناميده ميشوند محدود مي کنيم و هرچه اينجا گفته مي شود با فرض حضور در دنياي اين نرم افزار هاست نه در دنياي يخچالها و ماشين هاي لباسشويي هوشمنديا بازي هاي کامپيوتري.
لذا
اولاً: براي يافتن تعريفي دقيق از اين دسته از نرم افزارها به کتاب PoEAA ، بخش مقدمه و مبحث Enterprise Applications مراجعه نماييد. همانطور که در آن کتاب خواهيد ديد مجموعه اي از خصوصيات براي نرم افزارهايي که ما آن را Enterprise Applications مي ناميم ارائه شده است که شامل موارد ذيل مي باشند:
· Data Persistence
· Large Amount Of Data
· Access Data Concurrently
· A lot of user interface screens
· Need to integrate with
other enterprise applications
· Complex business logic
ثانياً: اين الگوها مانند هر الگوي ديگري بايد متناسب با مساله اي که درگير حل آن هستيد و با توجه به بايدها و نبايدهاي آن مساله و فضاي آن بکار گرفته شوند، بي شک الگوهايي که براي ساخت سيستم اتوماسيون اداري يک سازمان کوچک با 20 کارمند بکار مي رود بسيار متفاوت با سيستم اتوماسيون سازماني با 14000 کارمند و ده ها شعبه است.
ثالثاً: تجربه نشان داده براي کاربرد بهتر الگوهاي طراحي بهترين راه حل، فهميدن صورت مساله آنهاست، بايد مساله اي را که الگو به عنوان راه حل براي آن ارائه شده است را بدرستي بفهميد تا بدانيد کجا از کدام الگو استفاده کنيد. پس آنچه در اين وبلاگ و ساير منابع و کتب طراحي گفته مي شود وحي منزل نبوده و بايد با توجه به فضاي مساله مورد استفاده قرار گيرند.
🍃💐🍃🌸🍃🌸🍃
➖➖➖➖➖➖➖➖➖➖
➖➖➖➖➖➖➖➖➖➖
👁🗨با فوروارد کردن پست های چنل از ما حمایت کنید 👁🗨
#آموزش
✅ آموزش تنظیم ساعت و تاریخ در ویندوز و امکانات بیشتر آن
🍃💐🍃🌸🍃🌸🍃
➖➖➖➖➖➖➖➖➖➖
🆑 → @segmenttt 🔰
➖➖➖➖➖➖➖➖➖➖
👁🗨با فوروارد کردن پست های چنل از ما حمایت کنید 👁🗨
✅ آموزش تنظیم ساعت و تاریخ در ویندوز و امکانات بیشتر آن
🍃💐🍃🌸🍃🌸🍃
➖➖➖➖➖➖➖➖➖➖
➖➖➖➖➖➖➖➖➖➖
👁🗨با فوروارد کردن پست های چنل از ما حمایت کنید 👁🗨
Telegram
attach 📎
الگوهای معماری Architectual Patterns
یک الگوی معماری توضیحی از گروهی از اجزا(Element) و روابط بین آنها با مجموعه ای از محدودیتها(Constraint) برا ی استفاده از آنهاست.یک الگو می تواند به عنوان مجموعه ای از محدودیتها بر روی یک معماری در نظر گرفته شود-بر روی اجزا و الگوهای ارتباطی بین آنها-و این محدودیتها مجموعه یا خانواده ای از معماری هایی که آنها را برآورده سازند معرفی می کنند.برای مثال Client –Server یک الگوی معماری معمول است،Client , Server دو نوع از اجزا(Element) هستندعبارت Client –Server نشان دهنده وجود چندین Client است ،خود Client ها و مجموعه فعالیتهای آنها مشخص نمی شوند و تنها پیاده سازی پروتکل ارتباطی آنها بر عهده هریک از Client ها و Server گذاشته می شود در معماری بررسی می شوند.معماری های بیشماری بر اساس این تعریف از نوع معماری Client –Server خواهند بود اما هریک از آنها متفاوت از دیگری است.
🍃💐🍃🌸🍃🌸🍃
➖➖➖➖➖➖➖➖➖➖
🆑 → @segmenttt 🔰
➖➖➖➖➖➖➖➖➖➖
👁🗨با فوروارد کردن پست های چنل از ما حمایت کنید 👁🗨
یک الگوی معماری توضیحی از گروهی از اجزا(Element) و روابط بین آنها با مجموعه ای از محدودیتها(Constraint) برا ی استفاده از آنهاست.یک الگو می تواند به عنوان مجموعه ای از محدودیتها بر روی یک معماری در نظر گرفته شود-بر روی اجزا و الگوهای ارتباطی بین آنها-و این محدودیتها مجموعه یا خانواده ای از معماری هایی که آنها را برآورده سازند معرفی می کنند.برای مثال Client –Server یک الگوی معماری معمول است،Client , Server دو نوع از اجزا(Element) هستندعبارت Client –Server نشان دهنده وجود چندین Client است ،خود Client ها و مجموعه فعالیتهای آنها مشخص نمی شوند و تنها پیاده سازی پروتکل ارتباطی آنها بر عهده هریک از Client ها و Server گذاشته می شود در معماری بررسی می شوند.معماری های بیشماری بر اساس این تعریف از نوع معماری Client –Server خواهند بود اما هریک از آنها متفاوت از دیگری است.
🍃💐🍃🌸🍃🌸🍃
➖➖➖➖➖➖➖➖➖➖
➖➖➖➖➖➖➖➖➖➖
👁🗨با فوروارد کردن پست های چنل از ما حمایت کنید 👁🗨
#ترفند
✅چطوری حافظه سیستم رو بعد از ارتقا به ویندوز 11 آزاد کنیم؟
◀️ اگه اخیرا از ویندوز 10 به ویندوز 11 آپگرید کرده باشین، متوجه میشین که بخشی از حافظه درایو ویندوز بیش از انتظارتون اشغال میشه.
◀️ دلیلش اینه که ویندوز فایل های سیستمی نسخه قبلی رو نگه میداره که اگه خواستین بتونین به نسخه های قبلی برگردین. ولی اگه از نسخه فعلی اطمینان دارین، با روش زیر میتونین فایلهای اضافی رو حذف کنین.
1️⃣وارد Settings بشین و در منوی System وارد بخش Storage بشین
2️⃣در منوی باز شده، Temporary files رو انتخاب کنین
3️⃣ گزینه previous Windows Installation(s) رو انتخاب کنین
4️⃣با انتخاب گزینه Remove Files در بالای لیست، فایلهای مورد نظر حذف میشن.
🔷این فرآیند ممکنه چند دقیقه ای زمان ببره.
🍃💐🍃🌸🍃🌸🍃
➖➖➖➖➖➖➖➖➖➖
🆑 → @segmenttt 🔰
➖➖➖➖➖➖➖➖➖➖
👁🗨با فوروارد کردن پست های چنل از ما حمایت کنید 👁🗨
✅چطوری حافظه سیستم رو بعد از ارتقا به ویندوز 11 آزاد کنیم؟
◀️ اگه اخیرا از ویندوز 10 به ویندوز 11 آپگرید کرده باشین، متوجه میشین که بخشی از حافظه درایو ویندوز بیش از انتظارتون اشغال میشه.
◀️ دلیلش اینه که ویندوز فایل های سیستمی نسخه قبلی رو نگه میداره که اگه خواستین بتونین به نسخه های قبلی برگردین. ولی اگه از نسخه فعلی اطمینان دارین، با روش زیر میتونین فایلهای اضافی رو حذف کنین.
1️⃣وارد Settings بشین و در منوی System وارد بخش Storage بشین
2️⃣در منوی باز شده، Temporary files رو انتخاب کنین
3️⃣ گزینه previous Windows Installation(s) رو انتخاب کنین
4️⃣با انتخاب گزینه Remove Files در بالای لیست، فایلهای مورد نظر حذف میشن.
🔷این فرآیند ممکنه چند دقیقه ای زمان ببره.
🍃💐🍃🌸🍃🌸🍃
➖➖➖➖➖➖➖➖➖➖
➖➖➖➖➖➖➖➖➖➖
👁🗨با فوروارد کردن پست های چنل از ما حمایت کنید 👁🗨
معماری نرم افزار
همیشه درگیر مفهوم معماری بودم هرچه می خواندم نهایتا به تکنولوژی و پلت فرمهای توسعه و راه حل های تکنیکی بر می گشت ،این روزها درگیر خواندن کتابی هستم با عنوان
Software Architecture in Practice - Second Edition-By Len Bass, Paul Clements, Rick Kazman
که فارغ از تکنولوژی به بحث در باره فلسفه معماری نرم افزار پرداخته است و تازه دلیل بسیاری از چالشهایی را که تا امروز با آنها درگیر بوده ام را می فهمم ،از این پست تا چند پست دیگر گاها گزیده هایی از این کتاب را اینجا مطرح خواهم کرد ، شاید کمکی باشد برای حل همان چالشهایی که من با آنها درگیر بودم از تعریف معماری گرفته تا عوامل موثر بر آن،خواندن این کتاب را به همه دوستان پیشنهاد می کنم .
تعریف :
معماری در واقع ساختار سیستم های نرم افزاری بزرگ است.دید معماری یک سسیستم یک دید انتزاعی بدور از جزئیات پیاده سازی و آلگوریتمها، ساختار دادهها و دیدی از روابط بین اجزا سیستم به صورت Black Box است.
معماری اولین گام برای طراحی یک سیستم نرم افزاری با خصوصیات مطلوب از پیش تعریف شده است.می توان گفت:
معماری نرم افزاری یک برنامه ساختار یا ساختارهای سیستم است که اجزائ نرم افزار همراه با خصوصیات خارجی و قابل مشاهده و روابط بین این اجزا را در بر می گیرد.
معماری از کجا می آید؟
معماری حاصل مجموعه ای از تصمیمات کسب و کار(Business) و تصمیمات فنی (Technical) است. در عمل عوامل تاثیر گذار زیادی هنگام کار طراحی یک معماری وجود دارند، این عوامل متاثر از محیطی هستند که معماری باید درآن و برای آن پیاده شود.برای مثال مجموعه تصمیمات طراحی یک معمار برای یک نرم فزار بلادرنگ(Real-Time) که Deadline های آن بسیار سخت گیرانه هستند متفاوت از مجموعه تصمیمات معماری برای همان سیستم خواهد بود زمانی که آن سخت گیری برای Deadline های آن وجود ندارد یا اینکه معماری ایجادشده در حال حاضر برای سیستمی با مجموعه نیازمندی های خاص،سخت افزارهای خاص،و تیم پشتیبانی مشخص و منابع نیروی انسانی مشخص متفاوت از معماری طراحی شده برای همین سیستم در 5 سال پیش خواهد بود.
از مهم ترین پارامترهای تاثیر گذار بر معماری می توان به عوامل زیر اشاره کرد:
معماری متاثر از Stakeholder های سیستم است
معماری متاثر از سازمان توسعه دهنده (DEVELOPING ORGANIZATION) است
معماری متاثر از محیط های فنی (Technical Environment) است
پر واضح است که خود معمار و تجربیات او یا حتی آخرین کتابی که در باره معماری خوانده است به شدت برروی معماری سیستم تاثیر گذار است.گاها پروژهها محلی برای به چاالش کشیدن آموخته های جدید معمار و کسب تجربه است (در این جور مواقع باید خدا به داد پروژه و صاحب آن برسد که نقش آن موجود آزمایشگاهی بیچاره را بازی میکنند
🍃💐🍃🌸🍃🌸🍃
➖➖➖➖➖➖➖➖➖➖
🆑 → @segmenttt 🔰
➖➖➖➖➖➖➖➖➖➖
👁🗨با فوروارد کردن پست های چنل از ما حمایت کنید 👁🗨
همیشه درگیر مفهوم معماری بودم هرچه می خواندم نهایتا به تکنولوژی و پلت فرمهای توسعه و راه حل های تکنیکی بر می گشت ،این روزها درگیر خواندن کتابی هستم با عنوان
Software Architecture in Practice - Second Edition-By Len Bass, Paul Clements, Rick Kazman
که فارغ از تکنولوژی به بحث در باره فلسفه معماری نرم افزار پرداخته است و تازه دلیل بسیاری از چالشهایی را که تا امروز با آنها درگیر بوده ام را می فهمم ،از این پست تا چند پست دیگر گاها گزیده هایی از این کتاب را اینجا مطرح خواهم کرد ، شاید کمکی باشد برای حل همان چالشهایی که من با آنها درگیر بودم از تعریف معماری گرفته تا عوامل موثر بر آن،خواندن این کتاب را به همه دوستان پیشنهاد می کنم .
تعریف :
معماری در واقع ساختار سیستم های نرم افزاری بزرگ است.دید معماری یک سسیستم یک دید انتزاعی بدور از جزئیات پیاده سازی و آلگوریتمها، ساختار دادهها و دیدی از روابط بین اجزا سیستم به صورت Black Box است.
معماری اولین گام برای طراحی یک سیستم نرم افزاری با خصوصیات مطلوب از پیش تعریف شده است.می توان گفت:
معماری نرم افزاری یک برنامه ساختار یا ساختارهای سیستم است که اجزائ نرم افزار همراه با خصوصیات خارجی و قابل مشاهده و روابط بین این اجزا را در بر می گیرد.
معماری از کجا می آید؟
معماری حاصل مجموعه ای از تصمیمات کسب و کار(Business) و تصمیمات فنی (Technical) است. در عمل عوامل تاثیر گذار زیادی هنگام کار طراحی یک معماری وجود دارند، این عوامل متاثر از محیطی هستند که معماری باید درآن و برای آن پیاده شود.برای مثال مجموعه تصمیمات طراحی یک معمار برای یک نرم فزار بلادرنگ(Real-Time) که Deadline های آن بسیار سخت گیرانه هستند متفاوت از مجموعه تصمیمات معماری برای همان سیستم خواهد بود زمانی که آن سخت گیری برای Deadline های آن وجود ندارد یا اینکه معماری ایجادشده در حال حاضر برای سیستمی با مجموعه نیازمندی های خاص،سخت افزارهای خاص،و تیم پشتیبانی مشخص و منابع نیروی انسانی مشخص متفاوت از معماری طراحی شده برای همین سیستم در 5 سال پیش خواهد بود.
از مهم ترین پارامترهای تاثیر گذار بر معماری می توان به عوامل زیر اشاره کرد:
معماری متاثر از Stakeholder های سیستم است
معماری متاثر از سازمان توسعه دهنده (DEVELOPING ORGANIZATION) است
معماری متاثر از محیط های فنی (Technical Environment) است
پر واضح است که خود معمار و تجربیات او یا حتی آخرین کتابی که در باره معماری خوانده است به شدت برروی معماری سیستم تاثیر گذار است.گاها پروژهها محلی برای به چاالش کشیدن آموخته های جدید معمار و کسب تجربه است (در این جور مواقع باید خدا به داد پروژه و صاحب آن برسد که نقش آن موجود آزمایشگاهی بیچاره را بازی میکنند
🍃💐🍃🌸🍃🌸🍃
➖➖➖➖➖➖➖➖➖➖
➖➖➖➖➖➖➖➖➖➖
👁🗨با فوروارد کردن پست های چنل از ما حمایت کنید 👁🗨
#ترفند
✅ نصب نرم افزار عکس پیش فرض ویندوز
🍃💐🍃🌸🍃🌸🍃
➖➖➖➖➖➖➖➖➖➖
🆑 → @segmenttt 🔰
➖➖➖➖➖➖➖➖➖➖
👁🗨با فوروارد کردن پست های چنل از ما حمایت کنید 👁🗨
✅ نصب نرم افزار عکس پیش فرض ویندوز
🍃💐🍃🌸🍃🌸🍃
➖➖➖➖➖➖➖➖➖➖
➖➖➖➖➖➖➖➖➖➖
👁🗨با فوروارد کردن پست های چنل از ما حمایت کنید 👁🗨
Telegram
attach 📎
ده برابر سریع تر از Lottie for Android !!!
اگر #android کار باشید حتما تابحال یکبار اسم #lottie بگوشتون خورده! کتابخونه معروفی که انیمیشن های adobe after effects رو که به فرمت json تبدیل شدن در اندروید پخش میکنه.
جایی که خیلی این انیمیشن ها کاربرد دارن در برنامه های پیامرسان و برای نمایش استیکرهای جذابه. اما من یکبار این کار رو با lottie انجام دادم و نتیجه بدی گرفتم! lottie خیلی cpu میکشه و وقتی چنتا انیمیشن پشت سر هم در صفحه چت (در RecyclerView) scroll بشن قوی ترین گوشی ها هم لگ میزنن چه برسه به گوشی های ضعیف.
و اما چاره چیه؟ حتما توی تلگرام - این غول بی شاخ و دم- دیدید که استیکر ها چقدر روون و سریع پخش میشن! جالبه بدونید تلگرام هم همون فایل های json رو پخش میکنه. اما اون اومده کدی که برای پخش انیمیشن هاست رو با ++c نوشته. تعجبی هم نداره که سریع باشه چون ++c ده برابر سریع تر #java اجرا میشه.
و اما حالا یکی از مهندسان ایرانیمون که من خیلی تصادفی پروژش رو توی #github پیدا کردم کدهای تلگرام رو استخراج کرده و در قالب یک کتابخونه با استفاده خیلی راحت پیاده کرده. اون کتابخونه اسمش AXrLottie هست که لینکش رو همینجا میزارم. من خودم توی برنامه چت تستش کردم واقعا روون و عالی بود فقط توی اندروید های پایین مثل api 16 کرش میکرد. Good luck
https://github.com/Aghajari/AXrLottie
🍃💐🍃🌸🍃🌸🍃
➖➖➖➖➖➖➖➖➖➖
🆑 → @segmenttt 🔰
➖➖➖➖➖➖➖➖➖➖
👁🗨با فوروارد کردن پست های چنل از ما حمایت کنید 👁🗨
اگر #android کار باشید حتما تابحال یکبار اسم #lottie بگوشتون خورده! کتابخونه معروفی که انیمیشن های adobe after effects رو که به فرمت json تبدیل شدن در اندروید پخش میکنه.
جایی که خیلی این انیمیشن ها کاربرد دارن در برنامه های پیامرسان و برای نمایش استیکرهای جذابه. اما من یکبار این کار رو با lottie انجام دادم و نتیجه بدی گرفتم! lottie خیلی cpu میکشه و وقتی چنتا انیمیشن پشت سر هم در صفحه چت (در RecyclerView) scroll بشن قوی ترین گوشی ها هم لگ میزنن چه برسه به گوشی های ضعیف.
و اما چاره چیه؟ حتما توی تلگرام - این غول بی شاخ و دم- دیدید که استیکر ها چقدر روون و سریع پخش میشن! جالبه بدونید تلگرام هم همون فایل های json رو پخش میکنه. اما اون اومده کدی که برای پخش انیمیشن هاست رو با ++c نوشته. تعجبی هم نداره که سریع باشه چون ++c ده برابر سریع تر #java اجرا میشه.
و اما حالا یکی از مهندسان ایرانیمون که من خیلی تصادفی پروژش رو توی #github پیدا کردم کدهای تلگرام رو استخراج کرده و در قالب یک کتابخونه با استفاده خیلی راحت پیاده کرده. اون کتابخونه اسمش AXrLottie هست که لینکش رو همینجا میزارم. من خودم توی برنامه چت تستش کردم واقعا روون و عالی بود فقط توی اندروید های پایین مثل api 16 کرش میکرد. Good luck
https://github.com/Aghajari/AXrLottie
🍃💐🍃🌸🍃🌸🍃
➖➖➖➖➖➖➖➖➖➖
➖➖➖➖➖➖➖➖➖➖
👁🗨با فوروارد کردن پست های چنل از ما حمایت کنید 👁🗨
GitHub
GitHub - Aghajari/AXrLottie: AXrLottie (Android) Renders animations and vectors exported in the bodymovin JSON format. (Using rLottie)
AXrLottie (Android) Renders animations and vectors exported in the bodymovin JSON format. (Using rLottie) - Aghajari/AXrLottie
فضای ابری چیست؟
فضای ذخیره سازی ابری یا cloud data storage استعاره ای است از در دسترس بودن اطلاعات در همه جا یعنی به جای ذخیره اطلاعات روی سخت افزار آنها را روی سروری در اینترنت نگهداری می کنید.
فضای ابری در واقع انجام همین کار را به شکل پیشرفته تر انجام می دهد . با این امکان دیگر مهم نیست که شما کجای دنیا هستید و از چه کامپیوتر یا موبایلی استفاده می کنید . تنها ابزار مورد نیاز شما برای دسترسی به اطلاعات خود اینترنت با پهنای باند مناسب است . بعد از وصل شدن به اینترنت و به محض وارد شدن به حساب کاربری تان در فضای ابری همه فایل ها در دسترس خواهند بود .
هزینه آن چقدر است؟
هر سرور و برنامه ای تا سقف مشخصی فضای رایگان در اختیار کاربرانش قرار می دهد. بسته به این که از کدام برنامه استفاده می کنید ، این فضا بین ۲ تا ۵۰ گیگابایت و گاهی هم بیشتر از آن متغیر است . بعد از پر شدن این فضا و برای استفاده بیشتر باید متناسب با فضای اضافه ای که نیاز دارید ۱۰ گیگ تا یک ترابایت .
🍃💐🍃🌸🍃🌸🍃
➖➖➖➖➖➖➖➖➖➖
🆑 → @segmenttt 🔰
➖➖➖➖➖➖➖➖➖➖
👁🗨با فوروارد کردن پست های چنل از ما حمایت کنید 👁🗨
فضای ذخیره سازی ابری یا cloud data storage استعاره ای است از در دسترس بودن اطلاعات در همه جا یعنی به جای ذخیره اطلاعات روی سخت افزار آنها را روی سروری در اینترنت نگهداری می کنید.
فضای ابری در واقع انجام همین کار را به شکل پیشرفته تر انجام می دهد . با این امکان دیگر مهم نیست که شما کجای دنیا هستید و از چه کامپیوتر یا موبایلی استفاده می کنید . تنها ابزار مورد نیاز شما برای دسترسی به اطلاعات خود اینترنت با پهنای باند مناسب است . بعد از وصل شدن به اینترنت و به محض وارد شدن به حساب کاربری تان در فضای ابری همه فایل ها در دسترس خواهند بود .
هزینه آن چقدر است؟
هر سرور و برنامه ای تا سقف مشخصی فضای رایگان در اختیار کاربرانش قرار می دهد. بسته به این که از کدام برنامه استفاده می کنید ، این فضا بین ۲ تا ۵۰ گیگابایت و گاهی هم بیشتر از آن متغیر است . بعد از پر شدن این فضا و برای استفاده بیشتر باید متناسب با فضای اضافه ای که نیاز دارید ۱۰ گیگ تا یک ترابایت .
🍃💐🍃🌸🍃🌸🍃
➖➖➖➖➖➖➖➖➖➖
➖➖➖➖➖➖➖➖➖➖
👁🗨با فوروارد کردن پست های چنل از ما حمایت کنید 👁🗨
👍1
#ترفند
✅چگونه کامپیوتر خود را بدون حرکت دادن ماوس در ثانیه ای قفل کنیم؟
💡از کلید های window, Lو + استفاده کنید.
این کار برای زمانی مفید است که فردی ناگهان وارد اتاق می شود و نمی خواهید ببیند چه کاری انجام می دهید. پس از این ترفند استفاده کنید که صفحه شما قفل شود. لطفاً از کامپیوتر خود برای موارد بد استفاده نکنید، روش های خوبی برای استفاده از آن وجود دارد!
کاربران Mac می توانند با نگه داشتن Command + Option + Power از این ترفند استفاده کنند. اگر دوست دارید می توانید Power را با Eject جایگزین کنید.
🍃💐🍃🌸🍃🌸🍃
➖➖➖➖➖➖➖➖➖➖
🆑 → @segmenttt 🔰
➖➖➖➖➖➖➖➖➖➖
👁🗨با فوروارد کردن پست های چنل از ما حمایت کنید 👁🗨
✅چگونه کامپیوتر خود را بدون حرکت دادن ماوس در ثانیه ای قفل کنیم؟
💡از کلید های window, Lو + استفاده کنید.
این کار برای زمانی مفید است که فردی ناگهان وارد اتاق می شود و نمی خواهید ببیند چه کاری انجام می دهید. پس از این ترفند استفاده کنید که صفحه شما قفل شود. لطفاً از کامپیوتر خود برای موارد بد استفاده نکنید، روش های خوبی برای استفاده از آن وجود دارد!
کاربران Mac می توانند با نگه داشتن Command + Option + Power از این ترفند استفاده کنند. اگر دوست دارید می توانید Power را با Eject جایگزین کنید.
🍃💐🍃🌸🍃🌸🍃
➖➖➖➖➖➖➖➖➖➖
➖➖➖➖➖➖➖➖➖➖
👁🗨با فوروارد کردن پست های چنل از ما حمایت کنید 👁🗨
UX چیست؟
User Experience - UX شامل رفتار، حالت و احساست کاربر در مورد استفاده از یک محصول و یا سیستم خاص گفته می شود. تجربه کاربر شامل جنبه های عملی، تجربی، موثر ، معنی دار و جنبه های با ارزش اثر متقابل انسان و کامپیوتر و محصول می باشد، که شامل درک کاربر از جنبه های مختلف سیستم شامل کاربرد، سادگی در استفاده و بهره وری می باشد. بر اساس تعریف ISO عنوان user experience شامل کلیه عواطف، اعتقادات، مزیت ها، پاسخ های فیزیکی و روانی، رفتارها و اجراها قبل از زمان استفاده، در زمان استفاده و بعد از آن اطلاق می گردد.
وظیفه طراح وب سایت چیزی بیش از طراحی محیطی زیبا برای وب سایت شما می باشد که طراح می بایست هیجان و احساسات کاربران شما را در نظر بگیرد و سایت را به گونه ای طراحی نماید تا وب سایت شما ارتباط احساسی برقرار نماید. طراح وب سایت یکی از مهترین اعضای تیم شما می باشد که در صورتی که کار خود را به درستی انجام دهد تاثیر بسیار مثبتی در کسب و کار شما خواهد داشت . مارک زاکربرگ خالق فیس بوک میز طراحان وب سایت خود را نزدیک میز خود قرار داده بود تا بدین وسیله هم کار ایشان را دائما تحت نظر داشته باشد و هم بتواند خط مشی و دیدگاه های خود را دائما به ایشان منتقل نماید تا بدین وسیله طراح با درک بهتر فعالیت وب سایت طراحی های مفهومی تری را ارائه نماید. مهندسان در کار طراحی سایت بخش هایی را پیاده سازی می نمایند که کاربر مشاهده نمی نماید و منطق و اصول کار را پیاده سازی می نمایند حال آنکه طراحان وب سایت رابط کاربری وب سایت را پیاده سازی می نماید.
UI چیست؟
UI که مخفف user interface می باشد در فیلد اثر متقابل ماشین و انسان در صنعت طراحی، فضایی می باشد که اثر متقابل بین انسان و ماشین به وجود می آید. هدف این اثر متقابل اجازه برای عمکلکرد موثر و کنترل ماشین از سمت انسان می باشد، در حالیکه ماشین اطلاعاتی را باز می گرداند که کمک به تصمیم گیری های کاربران می نماید. برخلاف طراحان UX که بر روی حس کلی کار تمرکز می نمایند طراحان UI بر روی نحوه ارائه محصول کار می نمایند. آنها صفحه ای را طراحی می نمایند که کاربر با آن در ارتباط می باشد و تلاش می نمایند UI را در جهت محقق ساختن اهداف طراح UX پیش ببرد. به عنوان مثال ممکن است طراح UI تصمیم بگیرد اسلایدری در بالای صفحه تعبیه نماید و یا دکمه ای برای انجام فرآیند خرید در مکانی از صفحه ایجاد نماید. همچنین طراح UI مسئول ساخت راهنمای استایل منسجم می باشد تا ثبات و یکپارچگی در طراحی دیده شود.
تفاوت بین UI و UX
UI و UX مخفف هایی هستند که معمولا توسط افراد مبتدی به صورت اشتباه مورد استفاده قرار می گیرند. آنها کاملا معناهایی متفاوتی دارند که معمولا توسط افرادی که معناهای آن را نمی دانند به جای یکدیگر استفاده می شوند در صورتی که تقاوت این دو بسیار واضح می باشد.
UI مخفف User Interface می باشد که در صنعت نرم افزار به هر چیزی که در صفحه نمایش داده می شود گفته می شود که شامل تصاویر، متن ها، دیاگرام ها، ماژولها، جداول ، ویدئوها و همچنین رنگ ، سایر و مکان آن ها می باشد.
UX مخفف User Experience می باشد که بسیار وسیع تر از UI می باشد و به تجربه و احساس کاربر زمانی که از محصول شما استفاده می نمایند گفته می شود. به عنوان مثال زمانی که شما از سایت دارکوب محصولی را سفارش می دهید و آن بسیار سریع تحویل شما می گردد به این معناست که UX خوبی وجود داشته است.
در حقیقت کل یک محصول UX می باشد و و هر بخش از آن UI نامیده می شود. UI در حقیقت سیستمی می باشد که انسان از طریق آن با ماشین در ارتباط می باشد و شامل کامپوننت های فیزیکی و نرم افزاری می باشد.
🍃💐🍃🌸🍃🌸🍃
➖➖➖➖➖➖➖➖➖➖
🆑 → @segmenttt 🔰
➖➖➖➖➖➖➖➖➖➖
👁🗨با فوروارد کردن پست های چنل از ما حمایت کنید 👁🗨
User Experience - UX شامل رفتار، حالت و احساست کاربر در مورد استفاده از یک محصول و یا سیستم خاص گفته می شود. تجربه کاربر شامل جنبه های عملی، تجربی، موثر ، معنی دار و جنبه های با ارزش اثر متقابل انسان و کامپیوتر و محصول می باشد، که شامل درک کاربر از جنبه های مختلف سیستم شامل کاربرد، سادگی در استفاده و بهره وری می باشد. بر اساس تعریف ISO عنوان user experience شامل کلیه عواطف، اعتقادات، مزیت ها، پاسخ های فیزیکی و روانی، رفتارها و اجراها قبل از زمان استفاده، در زمان استفاده و بعد از آن اطلاق می گردد.
وظیفه طراح وب سایت چیزی بیش از طراحی محیطی زیبا برای وب سایت شما می باشد که طراح می بایست هیجان و احساسات کاربران شما را در نظر بگیرد و سایت را به گونه ای طراحی نماید تا وب سایت شما ارتباط احساسی برقرار نماید. طراح وب سایت یکی از مهترین اعضای تیم شما می باشد که در صورتی که کار خود را به درستی انجام دهد تاثیر بسیار مثبتی در کسب و کار شما خواهد داشت . مارک زاکربرگ خالق فیس بوک میز طراحان وب سایت خود را نزدیک میز خود قرار داده بود تا بدین وسیله هم کار ایشان را دائما تحت نظر داشته باشد و هم بتواند خط مشی و دیدگاه های خود را دائما به ایشان منتقل نماید تا بدین وسیله طراح با درک بهتر فعالیت وب سایت طراحی های مفهومی تری را ارائه نماید. مهندسان در کار طراحی سایت بخش هایی را پیاده سازی می نمایند که کاربر مشاهده نمی نماید و منطق و اصول کار را پیاده سازی می نمایند حال آنکه طراحان وب سایت رابط کاربری وب سایت را پیاده سازی می نماید.
UI چیست؟
UI که مخفف user interface می باشد در فیلد اثر متقابل ماشین و انسان در صنعت طراحی، فضایی می باشد که اثر متقابل بین انسان و ماشین به وجود می آید. هدف این اثر متقابل اجازه برای عمکلکرد موثر و کنترل ماشین از سمت انسان می باشد، در حالیکه ماشین اطلاعاتی را باز می گرداند که کمک به تصمیم گیری های کاربران می نماید. برخلاف طراحان UX که بر روی حس کلی کار تمرکز می نمایند طراحان UI بر روی نحوه ارائه محصول کار می نمایند. آنها صفحه ای را طراحی می نمایند که کاربر با آن در ارتباط می باشد و تلاش می نمایند UI را در جهت محقق ساختن اهداف طراح UX پیش ببرد. به عنوان مثال ممکن است طراح UI تصمیم بگیرد اسلایدری در بالای صفحه تعبیه نماید و یا دکمه ای برای انجام فرآیند خرید در مکانی از صفحه ایجاد نماید. همچنین طراح UI مسئول ساخت راهنمای استایل منسجم می باشد تا ثبات و یکپارچگی در طراحی دیده شود.
تفاوت بین UI و UX
UI و UX مخفف هایی هستند که معمولا توسط افراد مبتدی به صورت اشتباه مورد استفاده قرار می گیرند. آنها کاملا معناهایی متفاوتی دارند که معمولا توسط افرادی که معناهای آن را نمی دانند به جای یکدیگر استفاده می شوند در صورتی که تقاوت این دو بسیار واضح می باشد.
UI مخفف User Interface می باشد که در صنعت نرم افزار به هر چیزی که در صفحه نمایش داده می شود گفته می شود که شامل تصاویر، متن ها، دیاگرام ها، ماژولها، جداول ، ویدئوها و همچنین رنگ ، سایر و مکان آن ها می باشد.
UX مخفف User Experience می باشد که بسیار وسیع تر از UI می باشد و به تجربه و احساس کاربر زمانی که از محصول شما استفاده می نمایند گفته می شود. به عنوان مثال زمانی که شما از سایت دارکوب محصولی را سفارش می دهید و آن بسیار سریع تحویل شما می گردد به این معناست که UX خوبی وجود داشته است.
در حقیقت کل یک محصول UX می باشد و و هر بخش از آن UI نامیده می شود. UI در حقیقت سیستمی می باشد که انسان از طریق آن با ماشین در ارتباط می باشد و شامل کامپوننت های فیزیکی و نرم افزاری می باشد.
🍃💐🍃🌸🍃🌸🍃
➖➖➖➖➖➖➖➖➖➖
➖➖➖➖➖➖➖➖➖➖
👁🗨با فوروارد کردن پست های چنل از ما حمایت کنید 👁🗨
#ترفند
✅ باز کردن رمز کامپیوتر فقط با سه بار کلیک کردن
🍃💐🍃🌸🍃🌸🍃
➖➖➖➖➖➖➖➖➖➖
🆑 → @segmenttt 🔰
➖➖➖➖➖➖➖➖➖➖
👁🗨با فوروارد کردن پست های چنل از ما حمایت کنید 👁🗨
✅ باز کردن رمز کامپیوتر فقط با سه بار کلیک کردن
🍃💐🍃🌸🍃🌸🍃
➖➖➖➖➖➖➖➖➖➖
➖➖➖➖➖➖➖➖➖➖
👁🗨با فوروارد کردن پست های چنل از ما حمایت کنید 👁🗨
Telegram
attach 📎
هدف پیدایش وب سوکت WebSocket
یکی از اهدف پیدایش WebSocket ضعف های موجود در پروتکل HTTP می باشد. با یک مثال این موضوع را شرح خواهیم داد. در ارتباطی مبتنی بر پروتکل HTTP نحوه کار به این صورت می باشد که یک درخواست (Request) از طرف کلاینت به سرور ارسال می شود و سرور به آن درخواست جواب می دهد. اما سرور قادر نمی باشد که بدون درخواست کلاینت، به کلاینت اطلاعاتی ارسال نماید. برای مثال سیستمی را در نظر بگیرید که یک سری اطلاعات را به صورت آنلاین به کاربر نشان می دهد و کاربر همان لحظه به آن اطلاعات نیاز دارد مانند نتایج مسابقات ورزشی در سایت های پخش زنده، در چنین شرایطی کاربر مجبور می باشد که هر چند لحظه یک بار صفحه خود را بارگذاری مجدد (رفرش) کند یا اینکه با استفاده از کد های جاوا اسکریپت و Ajax هر چند ثانیه یک درخواست به سرور ارسال کرد و اطلاعات را به روز رسانی کرد. این موضوع منابع زیادی از سیستم مانند پهنای باند و... را هدر می دهد. ما نیازمند یک پروتکل و مکانیسمی هستیم که بدون نیاز به درخواست کلاینت بتواند به کلاینت اطلاعات ارسال نماید. این کار با استفاده از وب سوکت قابل حل است. چون وب سوکت یک کانکشن از نوع TCP را با سرور برقرار می کند و یک ارتباط دوطرفه برقرار می شود که به راحتی و با سرعت بالا میتوانند اطلاعات را ردوبدل کنند.
WebSocket چیست؟
پروتکل ارتباطات کامپیوتری است که کانال های ارتباطی استفاده از یک اتصال را TCP فراهم می کند. پروتکل WebSocket توسط IETF به عنوان RFC 6455 در سال 2011 استاندارد شده است و API WebSocket در Web IDL توسط W3C استاندارد شده است.WebSocket یک پروتکل TCP متفاوت از HTTP است. هر دو پروتکل در لایه 7 در مدل OSI قرار دارند و به همین ترتیب در TCP در لایه 4 بستگی دارد
پروتکل WebSocket باعث تعامل بین یک مرورگر و یک سرور وب با سربار های پایین تر، تسهیل انتقال داده در زمان واقعی real-time از سرور و به کلاینت یا از کلاینت به سرور است.
کاربرد وب سوکت :
بازی های آنلاین
چت های تحت وب
کنفرانس های آنلاین
برنامه های Real-Time
🍃💐🍃🌸🍃🌸🍃
➖➖➖➖➖➖➖➖➖➖
🆑 → @segmenttt 🔰
➖➖➖➖➖➖➖➖➖➖
👁🗨با فوروارد کردن پست های چنل از ما حمایت کنید 👁🗨
یکی از اهدف پیدایش WebSocket ضعف های موجود در پروتکل HTTP می باشد. با یک مثال این موضوع را شرح خواهیم داد. در ارتباطی مبتنی بر پروتکل HTTP نحوه کار به این صورت می باشد که یک درخواست (Request) از طرف کلاینت به سرور ارسال می شود و سرور به آن درخواست جواب می دهد. اما سرور قادر نمی باشد که بدون درخواست کلاینت، به کلاینت اطلاعاتی ارسال نماید. برای مثال سیستمی را در نظر بگیرید که یک سری اطلاعات را به صورت آنلاین به کاربر نشان می دهد و کاربر همان لحظه به آن اطلاعات نیاز دارد مانند نتایج مسابقات ورزشی در سایت های پخش زنده، در چنین شرایطی کاربر مجبور می باشد که هر چند لحظه یک بار صفحه خود را بارگذاری مجدد (رفرش) کند یا اینکه با استفاده از کد های جاوا اسکریپت و Ajax هر چند ثانیه یک درخواست به سرور ارسال کرد و اطلاعات را به روز رسانی کرد. این موضوع منابع زیادی از سیستم مانند پهنای باند و... را هدر می دهد. ما نیازمند یک پروتکل و مکانیسمی هستیم که بدون نیاز به درخواست کلاینت بتواند به کلاینت اطلاعات ارسال نماید. این کار با استفاده از وب سوکت قابل حل است. چون وب سوکت یک کانکشن از نوع TCP را با سرور برقرار می کند و یک ارتباط دوطرفه برقرار می شود که به راحتی و با سرعت بالا میتوانند اطلاعات را ردوبدل کنند.
WebSocket چیست؟
پروتکل ارتباطات کامپیوتری است که کانال های ارتباطی استفاده از یک اتصال را TCP فراهم می کند. پروتکل WebSocket توسط IETF به عنوان RFC 6455 در سال 2011 استاندارد شده است و API WebSocket در Web IDL توسط W3C استاندارد شده است.WebSocket یک پروتکل TCP متفاوت از HTTP است. هر دو پروتکل در لایه 7 در مدل OSI قرار دارند و به همین ترتیب در TCP در لایه 4 بستگی دارد
پروتکل WebSocket باعث تعامل بین یک مرورگر و یک سرور وب با سربار های پایین تر، تسهیل انتقال داده در زمان واقعی real-time از سرور و به کلاینت یا از کلاینت به سرور است.
کاربرد وب سوکت :
بازی های آنلاین
چت های تحت وب
کنفرانس های آنلاین
برنامه های Real-Time
🍃💐🍃🌸🍃🌸🍃
➖➖➖➖➖➖➖➖➖➖
➖➖➖➖➖➖➖➖➖➖
👁🗨با فوروارد کردن پست های چنل از ما حمایت کنید 👁🗨
#ترفند
✅امکانات مخفی ماشین حساب ویندوز
🍃💐🍃🌸🍃🌸🍃
➖➖➖➖➖➖➖➖➖➖
🆑 → @segmenttt 🔰
➖➖➖➖➖➖➖➖➖➖
👁🗨با فوروارد کردن پست های چنل از ما حمایت کنید 👁🗨
✅امکانات مخفی ماشین حساب ویندوز
🍃💐🍃🌸🍃🌸🍃
➖➖➖➖➖➖➖➖➖➖
➖➖➖➖➖➖➖➖➖➖
👁🗨با فوروارد کردن پست های چنل از ما حمایت کنید 👁🗨
Telegram
attach 📎