۳۱ فروردین، ۱۴۰۱

١ سال پیش ٢۰۰+ امتیاز
@m-p یک گفتگو به اسم Get dom elements in react js درست کرد.

سلام و خسته نباشید خدمت پارسکلیکی های عزیز. مشکلی که دارم اینه که چند تا المنت در متد()compenentDidMount به رندر نهایی اضافه میشن. تا اینجا مسئله ای نیست اما مشکل زمانی رخ میده که نه فایل css روی اون المنت های جدید اجرا میشه و نه حتی به اون المنت ها برای هرگونه رخداد دسترسی دارم. در کل فقط اضافه میشن ولی هیچ کنترلی روشون ندارم. در واقع المنت ها بعد از لود شدن صفحه اضافه میشه و انگار که وجود ندارند. کد ها رو براتون میزارم تا بتونید بهتر مسئله رو درک کنید.

  • کد های مربوط به متد ()componentDidMount:
در این قسمت المنت ها رو اضافه میکنم:
      for (let day = 1; day <= days.length; day++)  {

            const weekend = isWeekend(year, month, day);
            const today = isToday(year, month, day);

            let name = '';

            if(day <= 7){
                const dayName = getDayName(year, month,day);
                name = `<div className="name">${dayName}</div>`
            }

            calendar.insertAdjacentHTML(
                "beforeend",
                `<div className='day${weekend ? " weekend" : ""}${today ? " today" : ""}' 
                data-year="${year}" data-month="${month}" data-day="${day}" >
                    ${name}
                    ${day}
                    ${weekend ? "<br/><p style='color:#FFA500'>weekend</p>" : ""}
                    ${today ? "<h3 style='color:#9af467'>today</h3>" : ""}
                </div>`
            );
        }

####### و اینجا یک رویداد کلیک قرار دادم( که البته جون کلاس day رو نمیشناسه، کار نخواهد کرد)

         document.querySelectorAll('#app-calendar .day').forEach(day => {
                day.addEventListener("click", event => {
                    event.currentTarget.classList.toggle("selected");
                });
                day.addEventListener("dblclick", event => {
                    let element = event.target;
                    let year = element.getAttribute('data-year');
                    let month = element.getAttribute('data-month');
                    let day = element.getAttribute('data-day');
                    let date = Date(year + '-' + month + '-' + day);
                    this.setState({
                        date: formatDate(date)
                    });
                    console.log(this.state.date);
                });
            });
  • کد های بالا هر دو به ترتیب (با فاصله چند لاین) در متد ()componentDidMount قرار دارند.

**اینم از کد html که در متد رندر اجرا میشه:

<div className="root">
                <div className="clalendar-header">
                    <div id="previous" className="shift"><a href="#"><h3>previous</h3></a></div>
                    <div id="month-name" className="month-name"></div>
                    <div id="future" className="shift"><a href="#"><h3>future</h3></a></div>
                </div>
                <div className="content">
                    <div id="app-calendar"></div>
                </div>
            </div>

۶ بهمن، ۱۴۰۰

١ سال پیش ١۵۰۰+ امتیاز
نویسنده @m-p یک مقاله تازه به اسم بلاک چین چیست؟ نوشت.

سلام خدمت دوستان و پارسکلیکی های عزیز همونطور که در مقاله قبل (وب ۳ چیست) گفتم ، این مقاله در مورد مفهم بلاک چین هست.

بلاک چین چیست؟

با توجه با اسم این تکنولوژی(بلاک چین)، به مجموعه ای از بلاک های اطلاعاتی متصل به یکدیگر گفته می‌شود که هر بلاک حاوی اطلاعات خاصی هست و با هر تغییر یک بلاک جدید و اختصاصی ساخته می‌شود که در عین متصل بودن به بلاک قبل، میتواند حاوی بخشی از اطلاعات قبل و یا حاوی اطلاعات کاملا متفاوتی باشد.

تاریخچه

بر خلاف اطلاعات و باور خیلی از افراد(اعتقاد دارن که بلاک چین با ظهور ارز های دیجیتال ظهور کرد)، اولین کار روی زنجیره بلوک رمزنگاری شده امن در سال ۱۹۹۱ توسط استوارت هابر و اسکات استورنتا توصیف شد. در سال ۱۹۹۲، بایر، هابر و استورنتا درخت درهم‌سازی را به طراحی متصل ساختند، که باعث بهبود کارایی آن شده و اجازه می‌داد که چندین سند در یک بلوک جمع‌آوری شوند.

هدف از این کار، زمانبندی اسناد دیجیتال بود تا امکان دستبردن در تاریخ و اطلاعات از بین برود، در اقع هدف ایجاد سیستمی بر پایه و کارایی شبیه خط زمانی بود که در صورت عبور از یک نقطه دیگر نتوان آن را دستکاری کرد.

البته تا سال ۲۰۰۸ که ساتوشی ناکاموتو بیت‌کوین رو اختراع و ارائه کرد، بلاک چین عملا بلا استفاده بود و به ندرت(یک در ۱۰۰۰۰۰۰) ازش استفاده می‌شد، اما در سال ۲۰۰۹ بلاک چین تبدیل به یک رکن اصلی و پایه و اساس بیت کوین و ارز های دیجیتال شد.

بعد از این تغییر بزرگ در مسیر، بلاک‌چین تبدیل به سر فصل تمام معاملات عمل می‌کرد، به این ترتیب با استفاده از یک زنجیره بلوکی(بیت کوین) اولین سیستم بدون سرپرست و قابل اطمینان به وجود آمد.

بلاک

خاصیت جالبی که بلاک ها دارند اینه که تغییر دادن اطلاعات بلاک کاری بسیار مشکل و خطر ناک هست که ممکنه منجر به پایان زنجیره شود.

برسی بلاک: هر بلاک شامل داده، زمان، تاریخچه، هش بلاک و هش بلاک قبلی هست.
  • داده: داده های بلاک بستگی به نوع بلاک چین متفاوت هستند. برای نمونه بلاک چین بیت‌کوین جزئیاتی را درباره تراکنش ذخیره میکنه که شامل: مشخصات فرستنده و گیرنده، میزان سکه های مبادله شده می‌باشد.

  • زمان: زمان اطلاعات تاریخ و زمان ساخت بلاک هست.

  • تاریخچه: تاریخچه شامل گذشته بلاک و بلاک های قبل آن میشه.

  • هش: هش برای بلک حکم اثر انگشت برای هر فرد را دارد(یعنی هر بلاک هش مخصوص به خود را دارد و هیچ بلاک دیگری هش مشابه ای ندارد)، هش هویت بلاک و محتویاتش رو تعیین میکنه.

زمانی که بلاک ساخته می‌شود هش برای اون محاسبه میشه و هرگونه تغییر در بلاک هش رو تغییر می‌دهد، به عبارتی یکسری چیز ها باعث تغییر هش در بلاک می‌شود.هش یک ابزار مهم در شناسایی بلاک هست و اگر هش تغییر کنه بلاک به هیچ وجه اون بلاک سابق نیست.

  • هش بلاک قبلی: همونطور که گفتم بلاک ها به یکدیگر متصل هستند و عامل این اتصال هش بلاک قبلی هست که باعث ایجاد ذنجیره ای از بلاک ها می‌شود، که همین تکنیک بلاک چین را تا حد زیاد امن میکنه.

هر بلاک به بلاک قبلی وصل هست تا زمانی که به بلاک اول برسیم که کمی خاص تر هست و بهش genesis block (بلاک آفرینش) میگوند.دلیل خاص بودن این بلاک اولین بودن آن هست.

Google Logo

دلیل امنیت: اگر اطلاعات یک بلاک به هر شکلی تغییر داده شه، همونطور که گفتم هش بلاک تغییر میکنه و باعث میشه که بلاک های بعدی به یک هش مرده(دیگر وجود ندارد) مرتبط شوند و درواقع تاریخچه تقلبی داشته باشند، در نتیجه همه‌ی بلاک های بعدی غیر معتبر بوده و اصطلاحا زنجیره قطع میشه و دیگر ادامه پیدا نمی‌کند.

اما مشکلی که وجود داره اینه که کامپیوتر ها خیلی سریع هستنت و در هر ثانیه میتونن صد ها هش رو محاسبه و جایگذاری کنند تا بلاک دوباره معتبر بشه.

برای جلوگیری از این مشکل بلاک چین از سیستم اثبات انجام کار استفاده میکنه باعث طولانی تر شدن عملیات میشه، مثلا برای بیت کوین این سیستم برای هرساخت بلاک جدید ۱۰ دقیقه طول میکشه، در نتیجه دستکاری و معتبر سازی تقریبا غیر ممکنه میشه، چپن اگر بلاکی دستکاری شه لازمه که فرایند زمان‌گیر اثبات برای تمام بلاک ها بعد از اون مجددا انجام شه،از این رو امنیت بلاک چین به این بستگی داره که تا چه حد از هش کردن و مکانیزم اثبات انجام کار خوب استفاده بشه.

عامل دیگر امنیت: شبکه بلاک چین توضیع شده هست و غیر متمرکز هست، یعنی از یک نهاد متمرکز برای کنترل زنجیره استفاده نمی‌کنه بلکه از یک سیستم همتا به همتا استفاده میکنه که همه میتونن بهش وصل بشن (P2P).

وقتی یک نفر به شبکه متصل میشه یک کپی کامل از کل شبکه بلاک چین در اختیارش قرار می‌گیره و این گره(به هر کپی گره با note گفته میشه) میتونه صحت اطلاعات دریافتی را با استفاده از این کپی تایید کنه.

افزودن بلاک جدید:

با ایجاد بلاک جدید، بلاک ساخته شده به همه گره ها کپی میشه، سپس هر گره برای اطمینان از عدم دستکاری صحت بلاک را وارسی میکنه، وقتی همه چی بررسی شد هر گره بلاک را به بلاک‌چین خودش اضافه میکنه، سپس همه گره های اون شبکه یک توافق را شکل میدن که کدوم بلاک ها معتبر تر هستند و کدوم ها غیر معتبر، بلاک های دستکاری شده با توافق همه رد میشن،

  • اگر کسی بخواد یک بلاک رو روی بلاک چین دستکاری کنه باید همهی گره های موجود از آن بلاک‌چین رو با فرایند زمان گیر اثبات انجام تغییر بده و کنترل بیشتر از ۵۰ درصد از این شبکه همتا به همتا (P2P) رو به دست بگیره(یعنی باید کنترل گره های بیشتر از نصف کاربران بلاک را به دست بگیره)، اگر کسی بتونه این کار رو انجام بده، اون بلاک هک شده مورد تایید هست و هکر تونسته بلاک چین رو هک کنه.

پس میشه گفت تقلب در سیستم تقریبا غیر ممکن و خیلی سخت هست(همیشه یادتون باشه، فقط غیر ممکنه، غیر ممکنه هست و همه چیز ممکنه).

نکات پایانی:

بلاک چین همواره درحال تغییر و پیشرفته، نمونه ای از اون قرارداد های هوشمند که به تازگی رخ داده.

  • قرداد هوشمند: این قراردادها برنامه های از پیش نوشته شده ای هستن که روی بلاک چین ذخیره شدن و در شرایط خاص بدون نیاز به ناظر، عملیات خاصی را انجام میدن.

اکثر افراد کاربرد بلاک چین را فقط در ارز های دیجیتالی میدانند اما بلاک چین در هر امری که با اطلاعات یر و کار داشته باشد کاربرد دارند.

مثلا بلاک چین در امر ثبت سوابق پزشکی، ثبت اسناد دیجیتال، مالیات،انتخابات الکترونیکی و بدون تقلب مورد استفاده قرار گیرد، همجنین در برخی از شبکه های اجتماعی وب ۳ در حال استفاده هست و خیلی زود تمام اطلاعات را در بر خواهد گرفت و راه فراری هم ازش نخواهد بود.

سخن پایانی: انسان از زمان خلقت تا حالا با تایید صحت اطلاعات مشکل داشته و بهترین را مقایسه همه نظریه های یک اطلاعات هست که بلاک چین این امر رو در نظر میگیره، به نوعی هر کسی میتونه بلاک صحیح از نظر خودش رو در بلاک چین مورد برسی قرار بده و به صحت اطلاعات پی ببره. بلاک چین میتونه امنیت و صحت اطلاع رو بهمون هدیه بده ولی فقط به این شرط که اکثریت اطلاعات غلط وارد نکنند.

یادتون باشه فقط غیر ممکن، غیر ممکن هست.

لطفا نظرتون در کامنت ها بگید. مقاله بعد web3.js خواهد بود.

منابع:

ویکی پدیا

وبسایت ارز دیجیتال

۲۵ دی، ۱۴۰۰

١ سال پیش ١۵۰۰+ امتیاز
نویسنده @m-p یک مقاله تازه به اسم وب ۳ چیست؟! نوشت.

سلام.قبل از هر چیز بگم که این مقاله یکم زیادی طولانی شد،و وقت زیادی ازم برد ولی مطمئن باشد ارزش دانستن داره

وب ۳ چیست؟

مسئله ای که چند مدتی هست باب شده و به سرعت داره برای خودش طرفدار پیدا میکنه وب ۳ هست، وب ۳ درواقع به معنای اینترنت غیر متمرکز میباشد.

تصور کنید که کنترل کامل تمامی اطلاعاتی رو که روی انترنت(در هر کجای انترنت) آپلود میکنید در دستان خودتان باشد.(شاید الان بگید که همین الان هم کنترل کامل دارم،ولی اینطور نیست،در ادامه به این بحث هم میرسیم).

شاید شما هم جزء افرادی باشید که درباره وب ۳ ، تأثیر و تحولات اینترنت شنیده باشد.وب ۳ الگوی جدیدی برای تعامل با وب هست که تغییرات بنیادی در ساخت وبسایت ها ایجاد خواهد کرد، و همچنین دانشمندان معتقداند که وب ۳ باعث موجب هوشمندتر شدن و راحت تر شدن زندگی می‌شود.به بیان ساده وب ۳ فازجدید(آینده) دنیای وب هست.

برای اینکه بدونیم وب ۳ چی هست اول باید فازهای اول دوم وب روبشناسیم(وب یک و وب دو):

وب یک

نسل جدید اینترنت را بدون متور های جستجو،فیسبوک،اینستاگرام،آمازون و... رو خیلی سخت میتونن تصور کنن ولی حقیقت اینه که فاز اول وب بدون وجود هیچ یک از این پلتفرم ها شروع شد، فاز اول وب از اواسط دهه ۹۰ میلادی به این شکل شروع شد و تا سال ۲۰۰۰ ادامه داشت. در آن زمان افراد انترنت را با نام واقعی خود یعنی شبکه انترنت جهانی یا نت میشناختند. در فاز اول وبسایت ها بیشتر حکم وبلاگ داشتند، به این معنا که کاربران فقط میتوانستند اطلاعاتی که ادمین های وبسایت ها قرار میدادند را بخوانند و نمیتوانستند هیچگونه تصویر و یا حتی متنی رو به اشتراک بذارن، نکته قابل توجه اینه که اون زمان تمام اطلاعات وب توسط روزنامه ها، کسب‌و‌کارها و سازمان ها تأمین می‌شد.

در عصر یک وب مردم به جای google و بقیه موتور های جست و جوی حال حاظر از AltaVista، Netscape یا Asked Jeeves استفاده میکردند، همچنین اکٍر سایت ها به فرمت خواندنی(read only) نوشته میشدند و حتی امکان کامنت گذاری هم نبود چه برسه به اشتراک گذاری اطلاعات، از مفهموم استریم ویدئو هم در وب که وجود نداشت.

برای چت کردن از پلتفرم های آنلاینی مثل AOLاستفاده میکردن، برای اتصال به انترنت دو روش وجود داشت، روش اول که مرسوم تر بود اتصال از طریق تلفن بود و روش دوم هم یکسری کارت ها بودن که ازشون استفاده میشد، مشکل اینجا بود که هر دو روش هم بسیار کند بودن(مثلا دانلود یک آهنگ یک روز طول میکشید) و هم بسیار هزینه بالایی داشتند، و هر لحظه ممکنه بود اتصال قطع شه. مثلا من خودم یادمه که همیشه دایی آخریم با مادربزرگم سر وصل شدن به اینترنت با تلفن و قبض تلفن سنگین مشاجره داشتند. روش دیگیری هم با نام دیال آپ (Dial-up) بود که توسط مودم های خاصی انجام میشد.

این شد وب یک، خیلی کند با هزینه بالا،نا پایدار در اتصال و بد تر از همه اینکه نمتونستی نظرت رو بگی که این رو نسل جدید نمتونه تصور کنه.

وب دو

اوایل دهه ۲۰۰۰ بود که انترنت سر یک دوراهی تاریخی قرار گرفت، میتونست یک طرفه و مثل یک کتابخانه کسل کننده پیش بره یا اینکه تبدیل به یک اختراع حماسی بشه که جهان رو دگرگون کنه، که خداروشکر به لطف برنامه نویس هایی با افکار باز و باهوش، مسیر دوم را انتخاب کرد.

در این بازه زمانی مردم توانسنتد تجربه فراگیر و متنوعی را با نت تجربه کنن که به وب دو مشهور شد، به لطف شبکه های اجتماعی مثل فیسبوک و یوتیوب مردم میتونسنتد اطلاعات ، ویدئو ها و تصاویری رو از جهان روزمره و پیرامون خود رو با دیگران با اشتراک بگذارند و بقیه رو هم در زندگی و شادی های خودشون دخیل کنن. با پایان دهه اول هزاره سوم مودم های دایل آپ منسوخ شدن و جای خودشون رو به تکنولوژی ADSL دادند.اشتراک گذاری به ترندی جهانی تبدیل شد و بازی های آنلاین این اجازه را میدادند که افراد از نقاط مختلف جهان با هم دیگر بازی کنند و اررتباط برقرار کنند.فیسبوک و دیگر شبکه های اجتماعی به اتصال افراد با یکدیگر کمک کردند و این دنیای رو ساختند که حالا میشناسیم.

اما یک مسئله وجود داره، اینکه شما هر چیزی که روی انترنت آپلود کنید در واقع صاحبش شما نیستید و براش تصممیم نمی‌گیرید، مثلا اگر یک تصویر رو اینستاگرام آپلود کنید،شما تصویر رو به سرور فیسبوک فرستادید و صاحب اون تصویر فیسبوک هست و صرفا در صفحه شما نشان داده میشه و ختتی در صورت حذف توسط شما هیچ سندی دال بر از بین رفتن اون تصویر نیست و این کمپانی های بزرک هستند که در مورد حذف کامل تصصمیم میگیرند. اینم از وب دو، سرعت بیشتر،هزینه به مراتب کمتر و امکان اشتراک گذاری اطلاعات با اشکال مختلف در تمام زمان ها در تمام نقاط کره زمین.همچنین بدون قدرت کنترل

وب ۳

حالا دیگه فکر کنم آماده شدید که بدونید وب ۳ چی هست و قراره چیکار کنه.

اما وب ۳ چیست؟ وب ۳ درواقع فاز جدید دنیای وب هست، وب تقریبا هر ده سال داره وارد فاز جدیدی میشه که البته سرعتش تغییر فاز هم به مراتب داره بیشتر میشه.از طرفی هیچ مسیر مشخصی برای سیر تکاملی دنیای وب از آغاز تا به حال وجود نداشته و این تغغیر فاز ها همگی در جهت پیشرفت تکنولوژی ها و افکار انسان ها صورت گرفته،خلاصه اینکه هیچ کس تا حالا بای وب برنامه نریخته که کی چیکار کنه. همچنین این دوره ها و به اصطلاح تغغیر فاز ها با توجه به ماهیت محتوایی انترنت شناخته شده‌اند.

به بیان ساده سه فاز وب به شکل زیر خلاصه میشن:

  • فاز اول: استاتیک
  • فاز دوم: داینامیک
  • فاز سوم: غیر متمرکز در وب ۳ اول نکته ای که بیان میشه اینه که هیچ سازمان یا کمپانی ای روی داده ها کنترل کامل نداره و هر فردی از هر جا میتونه اطلاعات رو در رو کاملا در دسترس داشته باشهو این به معنای غیر متمرکز بودن هست. یک از اماکنات وب ۳ dAPP یا اپلیکیشن‌ غیر متمرکز (decentralized applications) است.

وب ۳گام جدیدی در مسیر وب هست که کنترل کامل انترنت رو در اختیار کاربران میگذارد.حالا ممکنه بپرسید که چطور این اتفاق افتاد.

این تکامل به کمک فناوری بلاک چین (در یک مقاله جدا گانه توضیح خواهم داد) حاصل می‌شود که به عملکرد شبکه را به شکل سیستمی نظیر به نظیر (P2P) را میسر ساخت. پیشرفت های حاصل شده به لطف بیتکوین و اتریوم و دیگر اپ های مبتنی بر بلاک چین نشان میدهند که افراد میتوانند وارد تراکنش هایP2P شوند و پروژه هایی را در حد جهانی توسعه داده و ارئه دهند و غول های نگهدارنده داده و سازمان ها نمیتوانند اطلاعات را نگه داشته و از آن برای سودجویی استفاده کنن.

وب ۳ چگونه کار می‌کند؟؟؟!!!

احتمالا تا حالا بدر زمان خرید آنلاین و یا حتی وقت گذاری با شبکه های اجتماعی به پیشنهاد های پلتفرم برخوردید که متناسب با علایق شما بوده است، وب ۳ نیز از چینی مکنایزمی استفاده میکند، یعنی از شما و اطلاعات شما می‌آموزد و با پیشنهادات و، ومحتواهای مطابق با خواست شما به شما پاداش میدهد.

کاربرد وسیع فریمورک های P2P در وب سه یکی از نقاطی هست که باعث تماییز آن با وب ۲ میشود.

برای مثال: به جای استفاده از گوگل درایو یا دراپ‌باکس برای ذخیره‌سازی، توزیع و اشتراک‌گذاری فایل‌ها از سرویس‌هایی مثل Storj ،Siacoin ،Filecoin یا IPFS استفاده خواهید کرد. همچنین ممکن است به جای برقراری ارتباط از طریق واتساپ، زوم یا اسکایپ از پلتفرم‌هایی مثل‌ Status استفاده کنید.

فیسبوک . توییتر و .. به نظر جاودان و ابدی میرسند اما طولی نمی‌انجامد که جای خودشون رو به اشکال جدید شبکه اجتماعی مثل Steemit ،Hive یا Alaska خواهیم بود، حتی مرورگر گوگل(کروم) هم جای خود را به مرورگر هایی مثل Brave خواهد داد که امنیت به مراتب بالاتری دارد.

تمام جایگزین‌های سرویس‌های کنونی کنترل کاربر بر داده‌هایش را افزایش خواهند داد و به بهبود پروتکل‌های امنیتی، بی‌نام بودن و پیشگیری از سوءاستفاده‌ی سازمان‌های فناوری از داده‌ها یا کنترل کامل آن‌ها بر اطلاعات یا خدماتی مشخص کمک خواهد کرد.

اپلیکیشن های وب ۳ و dAPP ih

وب ۳ وعده اینترنت غیر متمرکز می‌دهد و این امر نیازمند اپ های غیر متمرکز(dAPP) هست که ستون فقرات وب ۳ رو تشکیل میدهند و همگی متکی بر تکنولوژی بلاک چین هستند.

dAPP ها چگون کار میکنن؟؟؟!!! یکی از اجزای حدای نشندنی وب ۳ قرار داد های هوشمند هست.افرادی که با بلاک چین آشنایی دارند با قرار داد هوشمند سرو کار داشتند، قرارداد هوشمند توافق‌نامه‌ی نرم‌افزاری خوداجرایی است که روی یک بلاک چین مانند بلاک چین اتریوم اجرا می‌شود. این قراردادها در صورت برآورده‌ شدن مجموعه‌ی مرتبطی از شرایط، به‌صورت خودکار اجرا می‌شوند. به این ترتیب این قراردادها می‌توانند به‌صورت خودکار بررسی شوند و تراکنشی بین طرفین اجرا کنند. در واقع قرار داد هوشمند، منطق قراردادی رفتار اپ رو بهش دیکته میکنه و دیگه نیازی به شرکت فردی خاصی به عنوان واسط نیست.

web3.js چیست ؟؟؟!!!

web3.js یکی از کتابخانه های جاوااسکریپت هست که در توسعه اپلیکیشن های وب ۳ به کار می‌رود. از این کتابخانه میشه برای اتصال به بلاک چین اتریوم استفاده مرد، در واقع web3,js یک API برای اتریوم در نظر گرفت.

دلیل موفقیت این کتابخانه این است که توسط همه مرورگر ها پشتیبانی میشه و همچنین بدنه اکثر اپلیکیشن های غیر متمرکز رو تشکلی داده

زمانی بود که افراد کمی میگفتنند جاوااسکریپت آینده دنیای وب هست اما اکثرا انکار میکردند و لی بعدا فهمیدن که اشتباه میکردن و حالا شاهد خواهیم بود که قرار کل دنیای وب بر اساس یک کتابخانه جاواسکریپت نوشته شه.

درواقع web3.js رابط میان کاربر و قرارداد هوشمندانه هست.

با کتابخانه‌هایی مثل Web3.js می‌توانید با گره‌های لوکال یا ریموت اتریوم تعامل داشته باشید. این کار از طریق اتصال HTTP، IPC یا WebSocket امکان‌پذیر است. دلیل موفقیت کتابخانه‌ی جاوااسکریپت Web3.js پشتیبانی تمام مرورگرها از آن است. Web3.js یکی از فریم‌ورک‌های اصلی به کار‌رفته در طراحی اپلیکیشن‌های غیر متمرکز است.

نیاز به وب ۳

نیاز شدید به غیر متمرکز کردن اطلاعات وب و تعامل امن بین کامپیوتر های نقاط مختلف جهان هست. در اواسط دهه ۲۰۱۰(خیلی دور نیستا، هممون یادمون میاد) سازمان ها و موجودیت ها شروع به استفاده از اطلاعات کردند و حتی قبل از به بار اومدن رسوایی های اطلاعاتی، صنایع بزرگی در سراسر جهان به جمع‌آوری و مبادله‌ی داده‌های شخصی کاربران اختصاص داشتند.

کاربران متوجه شدند که اطلاعاتشون در دسترس شبکه های اجتماعی، خرده فروشان اینترنتی ،دلالان اطلاعت، بازی ها و ... قرار گرفته و کم و بیش مورد سوءاستفاده قرار گرفتند، مثلا در شبکه های اجتماعی و فروشگاه های آنلاین پیشنهادهایی به شما داده میشه که هیچ نیازی بهشون ندارید ولی در راستای محتوای ذهنی شما هستند، یا مثلا کروم رو روی لپ تاپتون باز بذارید و به کار های روزمرتون بپردازید و در مورد موضوعی با دوستاتون صحبت کنید، شاهد خواهدی بود که نتایج پیشنهادی در راستای اتفاقات روزمره شما خواهد بود، این ها دلایلی هستند که نیازمند وب ۳ و غیر متمرکز بودن و اصطلاحا ببدون ناظر بودن آن هستیم.

مزایای وب ۳

برای درک بهتر لیستی از این مزایا رو براتون آماده کردم:

وب ۳ غیر متمرکز است

در وب ۳ هیچ مقام مرکزی قادر به کنترل اینترنت نیست و دولت‌ها یا دیگر سازمان‌های سیاسی نمی‌‌توانند مانع از دسترسی به شبکه‌ی جهانی وب شوند. این مدل شبکه بر پایه‌ی بلاک چین اتریوم است که به‌صورت سیستمی با رمزنگاری غیر قابل نفوذ عمل می‌کند.

مالکیت اطلاعات

وقتی وب سه تکامل پیدا کنه شرکت های بزرگی مثل گوگل،فیسبوک و آمازون نمی‌توانند آطلاعات را در دیتاسنتر های خود ذخیرو کنن، در عوض کاربران مالکیت اطلاعات خود را بر عهده دارندو تما جزئیات از تراکنش ها گرفته تا جزئیات لاگین و ... در دستان کاربر هست.

متادیتای معنایی

یکی از مهم‌ترین اجزای وب ۳، متادیتای معنایی است. با این مکانیزم وب قادر به درک نمادها، کلمات کلیدی، متن‌ها و معنای آن‌ها است. برای مثال شبکه می‌تواند ایموجی «خندان» قدیمی را که با دو نقطه و یک پرانتز ساخته می‌شود درک کند و آن را به عنوان لبخند انسان، علامت خوشحالی یا تأیید تفسیر کند. این مثال تنها نمونه‌ی کوچکی بود و وب معنایی به‌طور کلی ارتباطات، تراکنش‌ها و تبادل اطلاعات آسان بین موجودیت‌ها را آسان‌ می‌سازد. طرح وب معنایی به ایده‌ی اصلی برنرز لی (دانشمند کامپیوتر که به عنوان مخترع شبکه‌ی جهانی وب شناخته می‌شود) از اینترنت بازمی‌گردد. او آینده را به شکل دنیایی رها از بوروکراسی تصور می‌کرد که در آن ماشین‌های هوشمند به‌صورت خودکار عملیات زمان‌بر را انجام می‌دهند.

هوش مصنوعی

هوش مصنوعی (AI) طرحی نیست که برای اولین بار در وب ۳ به آن پرداخته شده باشد. می‌دانیم هوش مصنوعی در اپلیکیشن‌های وب ۲ هم وجود دارد؛ اما هوش مصنوعی در وب ۳ دارای مکانیزم یادگیری سریعی‌ است. هوش مصنوعی بین داده‌های خوب و بد بین افراد واقعی و ربات و مهم‌تر از هر چیز بین اخبار جعلی از گزارش‌های واقعی تمایز قائل می‌شود.

پروتکل‌های فوق ایمن

تمام داده‌ها در وب ۳ غیر متمرکز هستند و از طریق شبکه توزیع می‌شوند؛ یعنی ارائه‌دهندگان اینترنت دیگر نمی‌توانند داده‌های کاربران را با کشورهای میزبان فعالیت خود به اشتراک بگذارند. هکرها هم باید کل شبکه را برای یک حمله خاموش کنند. داده‌های کاربران رمزنگاری و با پروتکل‌های فوق ایمن محافظت می‌شوند. این طرح ریشه در بلاک چین‌های رمزارز دارد که در آن معامله‌گرها می‌توانند با کنترل کامل روی داده‌های خود وارد تراکنش‌های مالی شوند.

در صورت همه‌گیر شدن وب ۳ دولت‌ها نمی‌توانند مانع از دسترسی به اینترنت شوند

قابلیت همکاری

در حال حاضر اغلب اپلیکیشن‌ها مبتنی بر سیستم عامل هستند. برخی اپلیکیشن‌ها تنها روی اندروید کار می‌کنند؛ درحالی‌که برخی دیگر تنها روی دستگاه‌های اپل اجرا می‌شوند. همین روند برای برنامه‌های مایکروسافت ویندوز، نرم‌افزار مک و موارد دیگر صدق می‌کند.

در وب ۳، اپلیکیشن‌ها درمورد سیستم‌های عامل و دستگاه‌ها حالتی بی‌طرفانه دارند. برای مثال می‌توان اپلیکیشن یکسانی را روی آیفون، تلویزیون هوشمند و کامپیوترهای خودرو نصب کرد.

شبکه‌های بدون مجوز

امروزه اینترنت وب ۲ در بسیاری از نقاط نسبتا آزاد و قابل دسترس است؛ اما در برخی نقاط سیاره‌ی زمین به دلایل سیاسی و معیارهای دیگری مثل درآمد، جنسیت و حتی نژاد محدود است. وب ۳ به لطف بلاک چین‌های بدون مجوز در هر نقطه‌ای و برای تمام افراد در دسترس قرار خواهد گرفت. تراکنش‌های بین مرزی و نقل و انتقال پول هم صرف‌ نظر از موقعیت جغرافیایی افراد درگیر تجارت امکان‌پذیر خواهد بود.

سرویس بدون تداخل

داده‌ها در وب ۳ روی گره‌های متعدد توزیع‌شده ذخیره می‌شوند. این سیستم تضمین می‌کند که همیشه گره‌های پشتیبان کافی برای تأمین زنجیره و پیشگیری از خرابی سرور وجود دارد. به بیان ساده، اینترنت هرگز به دلیل خرابی سرور غیر فعال نخواهد شد.

هویت‌ سه‌بعدی مجازی

وب ۳ دریچه‌ای به سمت روش‌های جدید ارتباطی و تعامل مجازی باز خواهد کرد. چت کردن، ارسال ایمیل و تماس‌ ویدئویی همچنان امکان‌پذیر خواهند بود؛ اما کاربرها می‌توانند به هویت‌ مجازی دسترسی پیدا کنند که روی وب ارائه می‌شود. این آواتارهای مجازی نمایندگان افراد در تراکنش‌های کسب‌وکار، همکاری‌های شغلی و اپلیکیشن‌های قرار ملاقات مثل کاراکترهای گیم آنلاین هستند.

حضور فراگیر

وقتی وب ۱ منتشر شد، تنها می‌توانستید از نقاط ریموت مثل کامپیوتر خانگی یا دستگاهی در یک کافی‌نت به اینترنت دسترسی پیدا کنید. با وب ۲ اینترنت به‌سرعت به گوشی‌های هوشمند، تبلت‌ها و دیگر دستگاه‌های هوشمند قابل حمل منتقل شد.

اما وب ۳ همه جا در دسترس خواهد بود و پیاده‌سازی آن تمام ابعاد زندگی روزمره را در بر خواهد گرفت. وب ۳ روی دستگاه‌های بیشتری قابل پیاده‌سازی است؛ شبکه‌ای نامرئی از اطلاعات، پروتکل‌های ارتباطی و مکانیزم‌های تراکنشی که در تمام نقاط سیاره‌ی زمین در دسترس خواهد بود.

چالش‌های وب ۳

پیاده‌سازی وب ۳ مانند هر فناوری جدیدی حداقل در ابتدای کار آسان نیست. برخی از چالش‌ها و معایب وب ۳ عبارت‌اند از:

سوء‌ مدیریت انسانی

وب ۳ گامی انقلابی در تکامل فناوری است و انتشار آن می‌تواند روابط ما در اینترنت را به قبل و بعد از وب ۳ تقسیم کند؛ اما نباید فراموش کرد افرادی با مقاصد شوم همیشه وجود دارند. کاربرانی با نیت‌های بدخواهانه می‌توانند اطلاعات غلط و گمراه‌کننده را در وب ۳ منتشر و زمینه را برای جرائم آنلاین فراهم کنند. از طرفی مکانیزم‌های یادگیری هوش مصنوعی و رمزنگاری به‌سرعت و برای کاهش تعداد حملات هک به تکامل می‌رسند و به‌روزرسانی می‌شوند.

بی‌کرانی وب ۲

تحقق بخشیدن به وعده‌ی وب کاملا معنایی، ممکن است کمی طول بکشد. در شرایط فعلی وب ۲ میزبان بیش از ۱٫۵ میلیارد وب‌سایت است؛ در نتیجه کاوش هوش مصنوعی در تمام این اطلاعات و ارتباط با مفهوم مرتبط با مقاصد، تعامل‌ها و رفتارهای کاربری به طول خواهد انجامید.

تطبیق آهسته

وب ۳ یک‌شبه پیاده‌سازی نخواهد شد. برخی کاربران اینترنت یک دهه قبل از فراگیر شدن وب ۱ با آن آشنا بودند. وب ۲ با فراهم کردن فناوری هوشمند و شبکه‌های اجتماعی در دسترس قرار گرفت؛ اما در همین حین بسیاری از کاربران با چت‌روم‌ها و نحوه‌ی کارکرد ایمیل دست‌وپنجه نرم می‌کردند.

بسیاری از شرکت‌ها به زمان زیادی برای گذار از شبکه‌ی متمرکز به زنجیره‌ی وب ۳ نیاز دارند. بسیاری از دستگاه‌ها منسوخ خواهند شد؛ اما کاربران آن‌ها نمی‌توانند بلافاصله به وب ۳ کوچ کنند. در نتیجه وب ۲ و وب ۳ مدتی با یکدیگر همزیستی خواهند داشت.

سخن پایانی

بشر در آستانه یک انقلاب بسیار بزرگ در دنیای وب و همچنین آینده بشریت هست. در سر راه وب ۳ دره ها و قله های بزرگی وجود دارد اما با این وجود حضورش رو از چند سال قبل با ظهور بلاک چین و رمز ارز ها به ما نشون داده و ثابت کرده که میتونه نیاز های مارو تا حدود زیادی برطرف کنه امنیت و مالکیت رو بهمون بده. همونطور که وب ۲ با بزتزی های خود توانست وب یک رو مغلوب و از میدان خارج کنه مطمئن باشد وب سه هم بر دنیای نوین حکمرانی خواهد کرد.

زمانی بود که انسان ها نمیتوانستند پرواز کنند اما با تکامل یافتن این امر برطرف شد و به فکر سفر به خارج از زمین افتادندو حالا به فکر زندگی در خارج ز زمین هستند، وب یک مثل به دنیا آمدن یک بچه بود ، وب ۲ دو مثل راه رفتن اون بچه و وب ۳ پرواز کردن ابچه خواهد بود و ........

منابع:

سرکار خانم سارا ارجمند

جادی.نت

۱۳ آبان، ۱۴۰۰

٢ سال پیش ١۰۰+ امتیاز
@m-p به گفتگوی مشکل نگه نداشتن سشن های لاگین بعد از ورود جواب داد.

سلام.

اکثر مواقع که این مشکل رخ میده به این دلیل هست که دامنه ای که session رو روی اون ست میکنید اشتباه هست، به مسیر ‍‍/home/milad/Desktop/app/config/session.php و domain رو چک کنید و همچنین میتونید از فایل env. دامنه رو تغییر بدید.در اینجا میتونید مثال این مورد رو ببینید.

در صورت کار نکردن این مورد میتونید از طریق php کوکی یا سِشِن ثبت کنید که صد درصد جواب میده.

Session:
<?php
session_start();
$_SESSION["name"] = "value";

Cookie:
<?php
$cookie_name = "name";
$cookie_value = "value";
$cookie_time = time() + (60* 60*24*365);    //(60* 60*24*365) = یک سال
setcookie($cookie_name, $cookie_value,  $cookie_time);

۲۴ مهر، ۱۴۰۰

٢ سال پیش ١۰۰+ امتیاز
@m-p به گفتگوی درخواست فایل پروژه آموزش پی اچ پی جواب داد.

با سلام و خسته نباشید، محمد جان ارور 403 به دلیل عدم اجازه دستزسی هست و به این دلیل رخ داده که فایل ها در google doc ذخیره شده اند و گوگل هم آی پی های ایران رو برای خیلی از خدماتش تحریم کرده،راه حل اینه که با یک vpn یا فیلتر شکن افدام به دریافت کنید.

اما به نظر من بهترین کار اینه که فایل های تمرین رو خودت در زمان یادگیری بسازی،منظورم اینه که قدم به قدم همراه با آموزش پیش بری.

اینطوری چند تا مزیت خوب برات داره:

  • اول اینکه نوشتن فایل ها توسط خودت باعث میشه که در حین یادگیری تئوری آموزش عملی هم داشته باشی.
  • دومین مزیت اینه که باعث میشه که لاین به لاین کد رو بشناسی و بدونی چی به چیه.
  • سوم اینکه اگر خودت برای نوشتن فایل ها دست به کیبورد بشی مطمئنن به برخی ارور ها بر میخوری که برای حل کردنشون دو مزیت دیگه داره(شناختن ارور ها و کسب تجربه، به خرج دادن خلاقیت برای دیباگ کردن کد).

این تجارب در آموزش تيوری هیچ وقت به دست نمیان.

در ضمن این کار درسته که کمی زمان بر هستند ولی ازت توی اون زبان یه برنامه نویس میسازند که ارور های اون زبان یا فریمورک رو یادگرفته و همچنین یادگرفته که چطور اون زبان برنامه نویسی رو با خلاقیت ها خودش قدرتمند تر کنه و همچنین به مرور زمان تمام قابلیت های اون زبان رو یاد میگیری و میتونی به بهترین شکل ممکن ازش استفاده کنی.

۱۲ مهر، ۱۴۰۰

٢ سال پیش ١۵۰۰+ امتیاز
نویسنده @m-p یک مقاله تازه به اسم فرمت SVG چیست؟! نوشت.

سلام خدمت دوستان عزیز.توی این مقاله سعی میکنیم تا فرمت svg برای تصاویر را بشناسیم و با بقیه فرمت های تصاویر مقایسه کنیم و ببین بهتره توی پلتفرم هامون از چه فرمتی برای تصاویر استفاده کنیم.

بخش های مقاله

  • گرافیک وکتور
  • گرافیک رستر یا بیتمپ(پیکسلی)
  • گرافیک وکتور در برابر گرافیکی پیکسلی( بیتمپ)
  • لوگوی شبکه‌های اجتماعی و برندهای معروف با فرمت SVG
  • چگونه PNG یا JPG را به عکس وکتوری با فرمت SVG تبدیل کنیم؟

گرافیک وکتور

  • وکتور چیست ؟

مروزه هرکسی که با طراحی گرافیک کامپیوتری سروکار داشته باشد، به نوعی در آثار خود از وکتور کمک می‌گیرد. در امور گرافیکی، دو دسته اصلی به نام گرافیک برداری (وکتور) و «گرافیک شطرنجی» Raster Graphics یا رستر bitmap وجود دارد که در ادامه با آن‌ها آشنا می‌شویم. لازم به ذکر است که «اثر هنری وکتور» Vector Artwork به اثری می‌گویند که توسط گرافیک برداری تهیه شده باشد. از این نوع گرافیک بمنظور درج لوگو شرکت‌ها بر روی کارت ویزیت، طراحی پوستر، طراحی جلد کتاب و … استفاده می‌شود.

  • وکتور

گرافیک برداری از روابط ریاضی برای طراحی استفاده می‌کند. این روابط ریاضی به نقاطی تبدیل می‌شوند و این نقاط به کمک خط‌ها و منحنی‌ها به یکدیگر متصل خواهند شد که در برخی موارد «مسیر برداری» Vector Path نام دارند. در اثر این اتفاق، تصاویر وکتوری را بدون از دست دادن کیفیت، می‌توان با حفظ حجم کم،‌ به مقیاس‌های بسیار بزرگ تبدیل کرد. در تصویر زیر مشاهده می‌کنید که با افزایش مقیاس تصویر، کیفیت آن کاهش پیدا نمی‌کند.

گرافیک رستر(پیکسلی)

  • رستر

گرافیک‌های رستر (bitmap)، از مربع‌های بسیار کوچکی به نام پیکسل تشکیل شده‌اند. زمانی که یک تصویر رستر ـ با اندازه مشخص پیکسل – ایجاد شود، نمی‌توان آن‌را بدون افت کیفیت، بزرگ کرد. هر قدر تعدد پیکسل‌های یک تصویر، بزرگتر باشد، حجم فایل حاوی آن نیز بزرگتر خواهد بود زیرا هر پیکسل از فایل نیاز به حافظه‌ای دارد که در کامپیوتر ذخیره و نگهداری می‌شود. در تصویر زیر می‌بینید که با بزرگتر کردن تصویر، کیفیت آن کاهش پیدا می‌کند

گرافیک وکتور در برابر گرافیکی پیکسلی( بیتمپ)

بسته به پیچیدگی اشکال و هندسه، ممکن است SVG از نظر حجم فایل نیز بهینه‌تر از PNG و JPG باشد. حتی اگر SVG از نظر حجم فایل، بزرگ‌تر از PNG و JPG باشد باز هم می‌توان استفاده از آن را در طراحی ریسپانسیو توجیه کرد چرا که در طراحی ریسپانسیو یک وب‌سایت، عرض برخی عکس‌ها مثل لوگوی وب‌سایت، معادل عرض صفحه نمایش گوشی یا تبلت است. به این ترتیب اگر گوشی بزرگ و رزولوشن بالا باشد، ممکن است لوگو بیش از حد بزرگ شده و کیفیت آن کم شود. در نتیجه طراح مجبور می‌شود از PNG با رزولوشن بالاتری استفاده کند. در مورد SVG این محدودیت وجود ندارد و می‌توان یک عکس با حجم متوسط را در ابزارهای کوچک و بزرگ استفاده کرد.

گرافیک وکتوری هم مثل گرافیک پیکسلی می‌تواند متحرک باشد. در واقع به جای فایل GIF می‌توان فایل SVG متحرک استفاده کرد.

لوگوی شبکه‌های اجتماعی و برندهای معروف با فرمت SVG

یکی از روش‌های قرار دادن لوگوی شبکه‌های اجتماعی معروف مثل توییتر و سرویس‌های ارتباط جمعی مثل تلگرام در وب‌سایت‌ها، استفاده از آیکون‌های فونتی معروف به اسم Font Awesome است. این فونت در حال حاضر حجمی در حدود ۹۰ کیلوبایت دارد و بیش از ۹۰۰ آیکون مختلف برای طراحی وب و اپلیکیشن را در خود جمع کرده است.

گزینه‌ی دوم استفاده از عکس‌های PNG است. آیکون توییتر با رزولوشن ۵۱۲ در ۵۱۲ پیکسل و فرمت PNG از نظر حجم حدود ۲۰ کیلوبایت فضا اشغال می‌کند که عدد بزرگی است. همین آیکون با تبدیل شدن به فرمت SVG، تنها ۴۲۵ بایت یا حدود ۰.۵ کیلوبایت حجم خواهد داشت که بسیار کم است.

برای اطلاعات بیشتر ، استفاده از آیکون‌های SVG‌ و مقایسه به گیت‌هاب مراجعه کنید.

چگونه PNG یا JPG را به عکس وکتوری با فرمت SVG تبدیل کنیم؟

برای تبدیل کردن عکس‌های معمولی به عکس وکتوری می‌توان از نرم‌افزارهای تخصصی برای ویرایش فرمت‌های برداری مثل Adobe Illustrator استفاده کرد. نرم‌افزارهای دیگری مثل Inkscape و نرم‌افزار Draw از مجموعه‌ی آفیس رایگان LibreOffice نیز یکی از گزینه‌های جالب است.

برخی وب‌اپلیکیشن‌های رایگان نیز برای تبدیل فرمت‌های مختلف عکس موجود است و از فرمت SVG پشتیبانی می‌کند. نمونه‌ی آن Aconvert است، نرم‌افزاری آنلاین که به صورت رایگان این کار را انجام می‌دهد. نرم‌افزار دیگر Vectorizer است که به صورت آنلاین و رایگان، تصاویر معمولی را به وکتور تبدیل می‌کند و تنظیمات جالب توجهی نیز در آن پیش‌بینی شده است. در ادامه به روش تبدیل فرمت‌ها به فرمت برداری SVG‌ توسط این سرویس‌های رایگان و آنلاین، اشاره می‌کنیم.

سخن پایانی

کل میشه گفت که svg دو تا مزیت و قدرت خوب به ما میده(ریسپانسیو بودن، کم حجم بودن) که باعث میشه که بتوینم از تصاویر ریسپانسیوی استفاده کنیم که کیفیتشون رو از دست نمیدن و همچنین به دلیل کم حجم بودن میتونیم سرعت وبسایت خودمون تا حد قابل توجهی بالا ببریم، به طوری که انگار اصلا از تصویری استفاده نکردیم.

ممنون که تا اینجا با من همراه بودین، لطفا نظراتتون رو از طریق کامنت ارسال کنید

۲۷ شهریور، ۱۴۰۰

٢ سال پیش ١۵۰۰+ امتیاز
نویسنده @m-p یک مقاله تازه به اسم linux video codecs نوشت.

سلام دوستان با یک مقاله دیگه برای حل یک مشکل عجیب و مهم در سیستم عامل های لینوکسی در خدمتتون هستم.

حتما براتون پیش اومده که زمانی که یک سیستم عامل لینوکسی(بیشتر اوقات ubuntu) روی سیستمتون نصب میکنید، با این مشکل مواجه میشید که پخش کننده ویدئو کار نمیکنه و یا بدتر از اون اینه که حتی توی مرورگرتون هم نمیتونید این کار رو انجام بدید و در کل عملا سیستمتون برای پخش فیلم یا یادگیری بی مصرفه(به خاطر مشکلی که در کمتر از ۴ دقیقه حل میشه).

اکثر کاربران از ماژول های خارجی مثل vlc و غیره برای حل این مشکل استفاده میکنن که در واقع مشکل رو حل نمیکنند بلکه از اون فرار میکنن و به عوامل خارجی پناه میبرن،تا اینجا مسئله ای موجود نیست،مشکل از جایی شروع میشه که مرورگرتون قادر به پخش نیست و با ماژول های خارجی هم قابل حل نیست.

بیشتر سیستم های لینوکسی این باگ رو دارند که در بعضی (مثال ورژن ۲۰.۰۴) این ارور رو به شما نشون میده. در بقیه ورژن ها سعی به حل این مشکل کردن اما در حالت لوکال این مشکل وجود دارد.

راه حل اینه که به جای پیچوندن مسئله اون رو حل کنیم.

چطور؟! بهتون میگم.

قدم اول : چک کردن تنضیمات نرم افزار

در قسمت show applications روی ایکون software & updates کلیک کنید.

بعد از باز شدن نرم افزار چک کنید ببینید که تمامی ماژول ها در قسمت نرم افزار نصب هست یا نه.

بعد از چک کردن سیستمتون رو با دستور sudo apt update به روز کنید.

بعد از تمام شدن آپدیت ها دوباره چک کنید ببینید که پخش کننده ویدئو در حالت لوکال(داخل سیستم) کار میکنه یا نه.

اگر کار نمیکنه شما باید یکسر موارد اضافه رو روی سیستمتون نصب کنید. برای اینکار ترمینال رو باز کرده و دستور زیر رو تایپ کنید

sudo apt install ubuntu-restricted-extras

دکمه enter رو بزنید و به سوال هم پاسخ بله ‍Y بدید

یکم بهش زمان بدید تا سیستمتون تمام پکیج ها رو از اینترنت دانلود کنه

سیستمتون فونت های مایکروسافت رو به همراه کدک های چند رسانه ای نصب می کند.شما میتونید اجازه این کار رو بدید یا خیر. برای نصب فونت ها و کدک ها شما باید توافقنامه کاربر نهایی مایکرویافت رو قبول کنید.

در زمان نصب سیستم این توافقنامه رو به شما ارائه میکنه و برای نصب قبولش کنید

ok رو انتخاب کنید تا Microsoft EULA برای شما نصب شه.

اگر میخواید که فونت های Microsoft fonts نصب شه بعد از مرحله بلا YES رو انتخاب کنید

بعد از این انتخاب ها اجازه بدید تا روند نصب کامل شه

نکته قابل توجه اینه که همه ی multimedia codecs مثل تصویر زیر باید نصب شده باشه در غیر این صورت باید نصب رو از اول انجام بدید

بعد از اتمام نصب سیستمتون رو در حالت های لوکال و آنلاین (مرورگر) چک کنید و شاهد خواهید بود که این مشکل برطرف شده.

خب دوستان به پایان این مقاله رسیدیم.

منابع:

۲۳ شهریور، ۱۴۰۰

٢ سال پیش ١۵۰۰+ امتیاز
نویسنده @m-p یک مقاله تازه به اسم گوگل مپ نوشت.

دوستان سلام.

توی این مقاله میخوام بهتون توضیح بدم که بدون استفاده از google api از نقشه گوگل در پلتفرمتون استفاده کنید.با پارس کلیک همراه باشید

خب همونطور که میدونید developers.google.com به آی پی های ایران اجازه دسترسی نمیده و وقتی آدرس صفحشون رو وارد میکنی با ارور ۴۰۳ (عدم اجازه دسترسی) رو به رو میشیم.

خب از طریق گرفتن api که کارمون یک کم سخت هست.اما هر مشکلی یک راه حل داره.

چطور بدون API از google map استفاده کنیم(این آموزش صرفا جهت نشون دادن نقشه هست).

  • وارد وبسایت google map بشید و در قسمت جست و جو آدرس مورد نظرتون رو وارد کنید.

  • بعد از اینکه نقشه کاملا بارگزاری شد، در منو سمت چپ روی قسمت Share or embed map و یا رو قسمت Share کلیک کنید، یک popup در صفحه شما باز میشود که شامل دو تب(tab) میباشد.

tab اول شامل لینک صفحه و tab دوم شامل کد html هست(همون چیزی که ما نیاز داریم)

مرحله آخر:

  • روی embed map کلیک کنید و پس از اون کد html که در صفحه قرار دارد رو کپی کنید و هر جایی از پلتفرمتون که خواستید قرار بدید.

خیلی راحت و بدون کد نویسی تونستیم از نقشه استفاده کنیم.

منبع وبسایت University Of Mine

دوستان لطفا نظرتون رو در مورد این آموزش در قسمت کامنت ها بنویسید.

۲۲ شهریور، ۱۴۰۰

٢ سال پیش ١۰۰+ امتیاز
@m-p به گفتگوی GoLang OR NodeJS جواب داد.

مقاله جدیدی در مورد سوال شما در وبسایت قرار دادم،احتمالا بتونه بهتون کمک کنه،بعد از انتشار در دسترستون هست

٢ سال پیش ١۵۰۰+ امتیاز
نویسنده @m-p یک مقاله تازه به اسم گولنگ یا نود جی اس نوشت.

Node.js یک محیط توسعۀ بک‌اند بر پایهٔ زبان JS است و همچنین زبان برنامه‌نویسی اپن‌سورس Go نیز به‌ سرعت در میان دولوپرها به‌ عنوان یک زبان ساده، کاربردی و قابل‌اعتماد جای خود را باز کرده است. در جامعۀ دولوپرها، بر سر انتخاب یکی از این دو (Node.js و Golang) اختلاف‌نظرهای بسیاری وجود دارد.برای ارائه نظر باید اول این زبان روبشناسیم.

دیدگاه کاربران وبسایت Quora در مورد سوال امروز :

عملکرد ضعیف Node.js

تمام دولوپرهایی که هم از گو و هم از نودجی‌اس استفاده کرده‌اند روی این موضوع اتفاق‌‌نظر دارند که در برنامه‌های توسعه داده شده با نودجی‌اس، عملکرد پردازنده کُند بوده و تَسک‌های مرتبط با حافظه در آن با سرعت کمتری انجام می‌شوند.

نودجی‌اس مبتنی بر زبان مفسری JS (جاوااسکریپت) است و در آن برنامه‌ها برای اجرا کامپایل نمی‌شوند بلکه خط‌به‌خط تفسیر می‌شوند. سرعت زبان‌هایی که برنامه‌ها در آن تفسیر می‌شوند اندکی از زبان‌های برنامه‌نویسی کامپایلری کمتر است؛ همچنین ماهیت پویای این زبان موجب می‌شود که کارایی آن بسیار کمتر از کارایی زبان گو باشد و این در حالی است که عملکرد زبان Go مشابه C یا ++C است (C نیز یک زبان کامپایلری است.) همچنین به یاد داشته باشیم تنها در مواردی که توسعه دنده قصد برنامه‌نویسی برای ارتباطات بین شبکه یا تعامل با دیتابیس را داشته باشد، نودجی‌اس می‌تواند همچون گو عمل کند.

کانکارنت و مقیاس‌پذیر بودن زبان GO

یکی دیگر از نکات مثبت زبان گو نسبت به نودجی‌اس کانکارنت و مقیاس‌پذیر بودن آن است که باعث می‌شود این زبان عملکردی بهتر در مقایسه با اکثر زبان‌های برنامه‌نویسی مدرن داشته باشد و این در حالی است که نودجی‌اس از چنین قابلیتی بهره مند نیست.

به‌ علاوه اینکه زبان گو به علت دارا بودن قابلیتی تحت عنوان Goroutines، مقیاس‌پذیر است. این قابلیت باعث می‌شود تا در حین اجرای برنامۀ نوشته‌ شده با این زبان، چندین Thread به صورت هم‌زمان اجرا شود؛ به عبارت دیگر، تَسک‌ها به‌ صورت موازی اجرا خواهند شد که اجرای تَسک‌ها به این صورت بسیار کارآمد و قابل‌اعتماد است و این در حالی است که نودجی‌اس برنامه‌ها را با یک Thread اجرا می‌کند و دستورالعمل‌ها در آن به ترتیب اجرا می‌شوند که همین مسئله باعث می‌شود که توانایی این محیط توسعه برای مقیاس‌های بزرگ و زمانی که نیاز است تا فرآیندها به‌ صورت موازی و در یک زمان اجرا شوند، محدود شود.

تکامل زبان GO

زبان گو به نسبت مدت کوتاهی که از عرضهٔ آن می‌گذرد، زبانی بسیار قوی و بالغ است و این در حالی است که تغییر API در نودجی‌اس مشکلات فراوانی را برای دولوپرهایی که در این محیط کدنویسی می‌کنند و از ماژول‌های آن استفاده می‌کنند، به وجود می‌آورد.

البته موارد گفته شده به این معنی نیست که ‍Node js به این زودی ها بازار و برنامه نویس های خود رو از دست میدهد و به فراموشی سپرده میشود،بلکه طبق آمار stackoveflow survey در سال ۲۰۲۱، Node js دارای محبوبیت ۳۳/۹۱ درصدی و مقام ششم را دربین برنامه نویس ها داراست، این در حالیست که GO دارای محبوبیت ۹/۵۵ درصدی و مقام چهاردهم را داراست که البته با توجه به جوان بودن این زبان(نسبت به زبان هایی مثل PHP , C) امری طبیعی هست و نمیتوان منکر این امر شد که برنامه نویسان هنوز به شکل قابل توجهی (مانند دیگر زبان های کامپایلری) از این زبان استفاده نمیکنند.

سخن پایانی

می‌توان گفت که برای دولوپرها زبان گو انتخاب عاقلانه‌تری به نظر می‌رسد.البته نمیتوان منکراصل مطلب که بازار کار هست هم شد،چرا که Node js بازار کار بسیار گسترده تری نسبت GOlang را داراست.

۲۰ شهریور، ۱۴۰۰

٢ سال پیش ١۰۰+ امتیاز
@m-p به گفتگوی مشکل در اجرای دو فایل جاوا اسکریپت جواب داد.

شما متغیر ها رو در حالت const ایجاد کردید که غیر قابل تغیر هست. زمانی که هر دو اسکریپت در یک صفحه وارد شوند درواقع کد ها پشت یر هم میوفته و این نوع نام گذاری متغیر مشکل ساز میشه، احتمالا مشکل از همین جا باشه.به جای const از let استفاده کن یا نام متغیر ها رو عوض کن

٢ سال پیش ١۵۰۰+ امتیاز
نویسنده @m-p یک مقاله تازه به اسم Vue js یا React js چه زمان از چی استفاده کنیم نوشت.

و React.js دو فریمورک فرانت-اند جاوااسکریپت هستند که در دنیای توسعه دهندگان بسیار محبوب می‌باشند و اکنون React برای چهار سال متوالی در جایگاه برتر قرار دارد. هر دو ابزار یک رویکرد سازنده برای ساختن برنامه‌های مختلف وب به توسعه دهندگان ارائه می‌دهند، اما هر یک بهترین موارد استفاده خود را دارند و به نیازهای مختلف تجاری پاسخ می‌دهند.

آنچه باعث تقاضای این دو فریمورک شده

  • DOM -به جای رندر مجدد کل صفحه همانطور که در مورد DOM معمولی مشاهده می‌شود، React و Vue فقط آن دسته از اشیایی را که تغییر کرده‌اند به روز می‌کنند و باعث صرفه جویی در وقت و منابعی می‌شوند که دستکاری‌های سنگین DOM مصرف می‌کند.

توسعه رابط کاربری مبتنی بر کامپوننت – کتابخانه‌های قابل توجه Vue و React از کامپوننت‌های استفاده مجدد از کد استفاده کرده و بهبود بهره‌وری توسعه و سرعت بخشیدن به روند توسعه را تسهیل می‌کنند.

  • تمرکز بر روی کتابخانه view - وجود دغدغه‌هایی برای مسیریابی، مدیریت state و ...

کتابخانه رسمی کامپوننت‌ها برای ساخت برنامه‌های تلفن همراه – مدت‌ها در Vue انتظار می‌رفت اما اکنون در هر دو ابزار پشتیبانی می‌شود.

دوستان از این قسمت به بعد وارد اصل بحثمون میشیم

موضوع مقاله درواقع توض این تصویر هست.خب بریم سراغ ادامه کار

گذشته

React به منظور هدف گذاری نیازهای خاص در فیسبوک ایجاد شده است و همچنان توسط این غول فناوری حفظ می‌شود. در گذشته در مورد مجوز React تردیدهایی وجود داشت. در حال حاضر این ابزار تحت مجوز MIT عمل کرده که آن را متن باز می‌کند.

حمایت React به ویژه از سوی یک شرکت مهم، نشان دهنده ثبات در آینده است و مشخص می‌کند که این فریمورک با پشتیبانی طولانی مدت به توسعه خود ادامه می‌دهد.

از طرف دیگر Vue توسط یکی از توسعه دهندگان به نام Evan You ساخته شده است تا بتواند ابزارهای موجود جاوااسکریپت را بهبود بخشد. ایوان یو کارمند سابق گوگل در تیم انگولار خود می‌خواست فریمورکی ایجاد کند که بهترین رویکردهای توسعه پیش رو ازAngular ، Ember و React را با سایر ویژگی‌ها ترکیب کند که نوشتن برنامه‌های وب را سریعتر، آسان‌تر و دلپذیرتر می‌کند.

درآغاز کار Vue یک پروژه کاملا متن باز بود و برای حرکت به جلو به جامعه، مشارکت کنندگان و سرمایه گذاری گسترده‌ای متکی بود.

سینتکس

یکی از بزرگترین تفاوت‌های بین Vue و React نحوه ساخت لایه view است.

به طور پیش فرض Vue از الگوهای HTML استفاده می‌کند، اما گزینه‌ای هم برای نوشتن در JSX وجود دارد.

از طرف دیگر در React فقط JSX وجود دارد. جداسازی سنتی Vue از نگرانی‌ها به HTML ، CSS و JS، یادگیری نحوه ایجاد برنامه‌های وب را حتی برای توسعه دهندگان ارشد آسان می‌کند. الگوهای HTML برای اکثر طراحان وب نیز آشناست و بنابراین همکاری بین توسعه دهندگان و طراحان را بهبود می‌بخشد.

عبارات جاوااسکریپت React، HTML و CSS را با هم در JavaScript ترکیب می‌کند. این سینتکس مشابه XML به توسعه دهندگان اجازه می‌دهد تا کامپوننت‌های رابط کاربری مستقل با دستورالعمل‌های رندرینگ را ایجاد کنند. در ادامه مقاله در مورد معنای آن صحبت خواهیم کرد.

دسترسی به متخصصان

اگرچه یادگیری Vue.js آسان است، اما توسعه دهندگان React به طور قابل توجهی در بازار حضور دارند. بنابراین اگر نیاز کسب و کار به یک برنامه پیچیده وجود دارد، استخدام یک توسعه دهنده با تجربه React که بتواند بلافاصله شروع به کار کرده و به تکمیل پروژه بپردازد، می‌تواند زمان کمتری صرف شود.

همچنین در جدیدترین گزارش وضعیت جاوااسکریپت به عنوان پرکاربردترین فناوری قرار گرفت.

نظر توسعه دهندگان

توسعه دهندگان در مورد Vue.js دوست دارند:

  • یادگیری آسان
  • سبک و الگوهای برنامه نویسی ظریف
  • مستندات خوب

توسعه دهندگان در مورد React دوست دارند:

  • سبک و الگوهای برنامه نویسی ظریف
  • پکیج اکوسیستم و بی نیاز
  • کاربرد گسترده

طبق گزارش و لیست فریمورک های محبو وب در سال ۲۰۲۰۱ (Stack Overflow Survey ۲۰۲۱)، ۴۰.۱۴٪ توسعه دهندگاه react.js و ۱۸.۹۷٪ توسعه دهندگان Vue.js را انتخاب کرده اند،این اختلا تقریبا ۲۰٪ اختلاف رنکینگ اول تا پنجم بین react.js و vue.js شده است که نسبت به سال قبل vue.js دارای رشد ۲ پله ای و react.js دارای رشد یک پله ای (سعود به پله اول) میباشند. و برطبق این آمار میتوان رو به رشد بودن این دو فریمورک را به وضوح تماشا کرد.

بهترین موارد استفاده

Vue js

به عنوان یک فریمورک در حال رشد، می‌تواند متناسب با هر پروژه مورد نیاز به تدریج در یک پروژه موجود ادغام شود. مثلا به عنوان یک کتابخانه سبک برای اضافه کردن برخی تعاملات به یک برنامه وب.

در حقیقت ۷۶ درصد از توسعه دهندگان شرکت کننده در گزارش State of Vue.js سهولت ادغام را بزرگترین سرمایه Vue در نظر می‌گیرند.

ٰVue با یک منحنی یادگیری آسان و ابزارهایی نظیر Vue CLI ۳ و Vue UI، برای تحویل سریع MVPها و ایده‌های راه اندازی بسیار عالی است. به همین دلیل همچنان یک راه‌حل مقرون به صرفه برای برنامه‌های کوچک تا متوسط ​​است.

اجازه ندهید شما را گول بزنند و فکر کنید Vue برای برنامه‌های وب بزرگ مناسب نیست. دقیقا برعکس. Vue دارای یک اکوسیستم وسیع از ابزارها و کتابخانه‌های همراه است که به این فریمورک امکان می‌دهد پاسخگوی نیازهای پیچیده برنامه‌های سازمانی باشد.

React js

از آنجا که React برای پروژه‌های بزرگ وب ایجاد شده است، انتخاب آن برای برنامه‌های کوچک و ساده ممکن است بیش از حد نیاز باشد. اگرچه فقط برای راه اندازی یک پروژه کاری به پایگاه کد بزرگی احتیاج دارد، اما در نهایت معماری آن در طولانی مدت نتیجه می‌دهد.

JSX قدرت کامل جاوااسکریپت را در اختیار توسعه دهندگان قرار می‌دهد که کنترل‌های جریان و ویژگی‌های پیشرفته IDE مانند تکمیل خودکار یا لیست کردن در الگوهای کامپوننت را شامل می‌شود.

برخلاف Vue ، React بسته‌های رسمی برای مسیریابی یا مدیریت state ندارد و به منظور ساخت برنامه‌های پیچیده، باید تقریبا برای همه موارد از راه حل‌های شخص ثالث استفاده کنید. اما انتخاب گسترده است. توسعه دهندگان باتجربه که وظیفه ارائه پروژه‌های پیشرفته را دارند، می‌دانند که کدام یک از کتابخانه‌های متعدد بهترین گزینه برای پاسخگویی به خواسته‌های تجاری یک برنامه وب خاص می‌باشد.

برخی برنامه‌های وب ساخته شده با Vue.js و React

Vuejs

React js

لازم به ذکر هست که تمامی زیر مجموعه های فیسبوک از react js استفاده کرده اند

سخن پایانی

react و vue هر دو فریمورک های فوقالعاده سریع و درحال رشد و به روز هستند و استفاده از هرکدوم بستگی به پروژه ای داره که درحال انجام هست، در نتیجه استفاده از هرکدوم به خواست خود برنامه نویس هست.

اما بیاید واقع گرا باشیم(نظر شخصی من): react js توسط شرکت فیسبوک پشتیبانی میشود در نتیجه فریمورکی (یا بهتره بگیم کتابخانه) نیست که به این راحتی ها و در چند سال آینده عقب افتاده بشه و دیگه کسی ازش استفاده نکنه.

۱۲ شهریور، ۱۴۰۰

٢ سال پیش ١۰۰+ امتیاز
@m-p به گفتگوی راه اندازی و استفاده از مارک دون در یک پلتفرم جواب داد.

سوال رو در این مقاله حل کردم

٢ سال پیش ١۵۰۰+ امتیاز
نویسنده @m-p یک مقاله تازه به اسم استفاده مارک دان در لاراول نوشت.

شاید براتون پیش بیاد که بخواید مارک دان رو داخل پلتفرم ساخت خودتون استفاده کنید و وجه و کارایی پروژه تون رو افزایش بدید. اول باید بدونیم که اصلا مارک دان چی هست

مارک دان:

وبسایت گیت هاب (github) برای فرمت بندی و قالب بندی متن ها و کامنت ها سینتکسی را معرفی کرد به نام markdown که با استفاده از این سینتکس می توان متن ها را از حالت متن خالی خارج و به فرمتی شبیه به Html تبدیل نمود بعنوان مثال می توان متنی را Bold نمود و یا یک لینک داخل متن ایجاد کرد یا عکسی قرار داد و سایر موارد دیگر.

Markdown یا «متن مرتب» شیوه نمایش متن با علامت های ساده است، یک زبان نشانه گذاری سبک با ساختار تمام متن و کاربرد آسان برای نوشتن اسناد و محتوای وب که در نهایت به HTML ترجمه و با ساختار بندی نمایش داده میشه.

بر خلاف نرم افزارهای پردازش متن سنگین موجود، محتوا تولید شده در قالب مارک داون رو میشه به راحتی بین دستگاه های مختلفی از جمله کامپیوتر، موبایل و … به اشتراک گذاشت. به همین دلیل و مزیتش داره به یک استاندارد نوشتن برای دانشگاهیان، دانشمندان، نویسندگان و … تبدیل میشه. فایل های مارک داون با پسوند .markdown یا بطور مختصر .md ذخیره میشن و ساختار و قواعدی برای نمایش محتوا دارند.

خب حالا بریم سراغ استفاده از این تکنولوژی در پروژه لاراول

بریم برای نصب:

اول از همه ترمینال رو باز کنید و به مسیر پروژتون برید و پکیج ها رو نصب کنید:

composer require league/commonmark
  • اگر دستور بالا رو بزنید نسخه ی 2.0 رو برای شما نصب میکنه که به درد ما نمیخوره،چون graham-campbell/markdown از نسخه 1.5 استفاده میکنه.پس پکیج رو با دستور زیر نصب کنید.
    composer require league/commonmark ^1.5

بعد از اون نوبت نصب graham-campbell/markdown میرسه.با دستور زیر

composer require graham-campbell/markdown

بعد از اینکار پکیج شما نصب شده و حالا نوبت به معتبر سازی پکیج و استفاده میرسه

  • معتبر سازی: برای اینکار به فولدر config رفته و فایل app.php رو باز کنید و در قسمت aliases کد زیر رو به آخر آرایه اضافه کنید.
    'Markdown' => GrahamCampbell\Markdown\Facades\Markdown::class

سپس دستور php artisan vendor:publish را در ترمینال اجرا کنید و بعد از اجرا CRTL+C رو بزنید. سپس باید تنظمات و کش پروژه رو باز نشانی کنیدبه شکل زیر

php artisan config:clear
php artisan cache:clear
php artisan config:cache

با این کار پکیج رو معتبر سازی کردید.

  • استفاده:
  1. استفاده خارج از فایل های blade : ابتدا پکیج رو به فایل و کلاستون وارد کنید و ازش استفاده کنید به شکل زیر

مثال ابتدایی:

use GrahamCampbell\Markdown\Facades\Markdown;

Markdown::convertToHtml('foo'); // <p>foo</p>

مثال کامل:

use Illuminate\Support\Facades\App;
use League\CommonMark\MarkdownConverterInterface;

class Foo
{
    protected $converter;

    public function __construct(MarkdownConverterInterface $converter)
    {
        $this->converter = $converter;
    }

    public function bar()
    {
        return $this->converter->convertToHtml('foo');
    }
}

App::make('Foo')->bar();
  1. استفاده در فایل blade: استفاده به اشکال زیر هست:
@markdown('# Foo')

یا

@markdown
# Bar
@endmarkdown
  • من خودم روش دوم رو پیشنهاد میکنم چون توی روش اول نمیشه enter زد و به سطر بعدی رفت(کار نمیکنه)
  • توی روش دوم نباید پشت محتواتون فاصله باشه.
    @markdown
            # Bar   //کار نمیکنه
    @endmarkdown
    @markdown
    # Bar   //کار میکنه
    @endmarkdown

میتونید یک استایل از cdnjs.com دانلود کنید و به مارک دان استایل بدید یا میتونید خودتون اون جور که میخواید بنویسید.

دوستان آموزش به پایان رسید.لطفا کامنت بزارید و نظرتون رو بگید

۱۰ شهریور، ۱۴۰۰

٢ سال پیش ٢۰۰+ امتیاز
@m-p یک گفتگو به اسم مقایسه react js و livewire درست کرد.

سلام دوستان خته نباشید،توی ی پروژه هستم که فراننت فوق العاده سنگین و پویایی باید نوشته شه،حالا به نظر شما react بهتره یا livewire منظور از نظر همه چی هست:

  • سرعت
  • قدرت
  • کارایی
  • کدنویسی
  • آپدیت
  • و ...

۲۷ امرداد، ۱۴۰۰

٢ سال پیش ٢۰۰+ امتیاز
@m-p یک گفتگو به اسم راه اندازی و استفاده از مارک دون در یک پلتفرم درست کرد.

با عرض سلام و خسته نباشید خدمت دوستان عزیز. دوستان در یک پاتفرم میاز دارم که از مارک دون استفاده بشه(منظورم طرقه استفاده مارک دون نیست،بلکه اینکه چگونه مارک دون رو در html و blade فعال کنم که بتونم محتوا رو شبیه به پارسکلیک به کاربر نشون بدم). به چندین وبسایت از جمله markdown.org سرزدم ولی توی تمام اونها فقط طریقه استفاده از مارک دون(آموزش به کاربر) نوشته شده بود،عملا هیچ چیزی توی وب پیدا نکردم.ممنون میشم کمک کنید

۱۹ امرداد، ۱۴۰۰

٢ سال پیش ١۰۰+ امتیاز
@m-p به گفتگوی محدود کردن send شدن چند بار فرم در php جواب داد.

دوست عزیز چرا به جای برگشت به صفحه قبل به یک صفحه دیگه ریدایرکت نمیکنی که دیگه فرم هم در دسترس نباشه

۱۸ امرداد، ۱۴۰۰

٢ سال پیش ١۰۰+ امتیاز
@m-p به گفتگوی محدود کردن send شدن چند بار فرم در php جواب داد.

@behzad دوست عزیز با این دستور اون ستون یونیک میشه و ممکنه که برنامه نویس این امر رو نخواد.

در غیر این صورت میتونه داخل دیتابس اون ستون رو یونیک کنه ودر کد فقط ارور رو هندل کنه.

در واقع منظور @seingod جلوگیری از درخواست تکراری بود که با Google Authentication میتونه این مشکل رو حل کنه

۲۷ تیر، ۱۴۰۰

٢ سال پیش ٢۰۰+ امتیاز
@m-p یک گفتگو به اسم ساخت اپلیکیشن تحت وب درست کرد.

با عرض سلام و خسته نباشید خدمت دوستان عزیز. دوستان چطور و با چه تکنولوژی میشه که فایل های نوشته شده با vue.js که توسط یک پلتفرم تحت وب پشتیبانی میشن رو برای نصب و استفاده در اندروید و ios آماده کرد. ظاهرا snapp و دیوار هم همین کار رو انجام دادن اما چطور؟؟؟!!!

٢ سال پیش ١۵۰۰+ امتیاز
نویسنده @m-p یک مقاله تازه به اسم ارسال پارامتر های چندگانه و ولیدیشن پارامتر ها بدون برخورد به ارور ولیدیشن نوشت.

همانطور که احتمالا میدانید برای ارسال چند پارامتر به وسیله ی یک فیلد(input) بهتره name رو به صورت جمع و باید با علامت آرایه نوشت مثال:

<input type="file" name="images[]" class="custom-file-input" id="customFile" multiple>

خب نکته اصلی اینجاست که توی کنترلر برای ولیدیشن از همین نام استفاده کنید ولیدیشن به شما ارور میده و اجازه عبور نمیده.

  • کد اشتباه:
    if ($request->file('images')) {
            $this->validate($request,[
                'images' => 'max:10240000,mimes:jpg,bmp,png,jpeg',
            ]);
            $files = $request->file('images');
            foreach($files as $file){
                $item->uploadeItemPhoto($file, $item);
            }

    نکته این مقاله اینجاست که لاراول ولیدیشن در زمان چک کردن پارامتر های درون آرایه اون ها رو تک تک و به صورت جدا چک میکنه در نتیجه اسم input هم درون ولیدیشن از حالت جمع (images) به حالت مفرد (image) تغییر پیدا میکنه مثال :

    if ($request->file('images')) {
            $files = $request->file('images');
            foreach($files as $file){
                $this->validate($request,[
                    'image' => 'max:10240000|mimes:jpg,bmp,png,jpeg',
                ]);
                $item->uploadeItemPhoto($file, $item);
            }
        }

    با انجام این امر دیگه ولیدیشن مشکل ساز نمیشه براتون

۱۷ تیر، ۱۴۰۰

٢ سال پیش ٢۰۰+ امتیاز
@m-p یک گفتگو به اسم ثبت انحصاری و اجرای کپی رایت برای یک پلتفرم درست کرد.

با عرض سلام و خسته نباشید خدمت دوستان.

برای ثبت انحصاری (کسی نتواند از ایده استفاده مجدد کند و یا به نام خودش ثبت کند) یک پلتفرم و اجرای قانون کپی رایت چه اقداماتی باید انجام بشه و از کجا باید کار رو شروع کرد؟؟؟!!!

۱۱ تیر، ۱۴۰۰

٢ سال پیش ١۰۰+ امتیاز
@m-p به گفتگوی ارور ۴۰۴ در مسیر از قبل تعریف شده جواب داد.

با عرض سلامی دوباره خدمت دوستان.

مشکل از کنترولر بود که بخاطر ضعف در شناخت متد پیش اومده بود.

  • کد مشکل دار:

مشکل در گرفتن اطلاعات تماس(contact) بود که از متد firstOrFail() بدون دادن مقدار ورودی استفاده شده بود

public function showItem(Item $item){
        $product_groups = ProductGroup::all();
        $contact = Contact::firstOrFail()->get();
        return view('show-item', compact('item','product_groups', 'contact'));
    }

و با استفاده از متد first() بجای firstOrFail() مشکل حل شد

public function showItem(Item $item){
        $product_groups = ProductGroup::all();
        $contact = Contact::first();
        return view('show-item', compact('item','product_groups', 'contact'));
    }

٢ سال پیش ٢۰۰+ امتیاز
@m-p یک گفتگو به اسم ارور ۴۰۴ در مسیر از قبل تعریف شده درست کرد.

با عرض سلام و خسته نباشید خدمت پارسکلیکی ها عزیز.

دوستان من به یک ارور برخوردم و این هست که یک route رو تعریف کردم اما در زمان استفاده ارور 404 رو نشون میده،همیچنین اگر اروری در route یا controller ایجاد کنم ارور رو نشون میده.

  • route در route list وجود داره
  • url رو تغیر دادم چند بار اما جواب نداده
  • دستور php artisan route:clear رو هم استفاده کردم.
  • متدی که به route وصل هست رو هم چک کردم و مشکلی نبود.
  • خود routeهم مشکلی نداره

متن فایل web.php مشکل در لاین دوم(دومین route)

Route::get('/', [PublicpagesController::class, 'index'])->name('index');

Route::get('/{item}', [PublicpagesController::class, 'showItem'])->name('showItem');

Route::get('product-group/{productGroup}', [PublicpagesController::class, 'showByProductGroup'])->name('showByProductGroup');

Route::get('product/{product}', [PublicpagesController::class, 'showByProduct'])->name('showByProduct');

Route::get('/dashboard', function () {
    return view('dashboard');
})->middleware(['auth'])->name('dashboard');

require __DIR__.'/auth.php';

قسمتی که از route استفاده شده

<a href="{{'{{'}} route('showItem', $item) }}" style="color: black;">

نظرتون چیه؟؟؟!!!

۸ خرداد، ۱۴۰۰

٢ سال پیش ٢۰۰+ امتیاز
@m-p یک گفتگو به اسم ارور در پوشه sass در زمان استفاده از laravel mix درست کرد.

با عرض سلام و خسته نباشید خدمت پارسکلیکی های عزیز.

در مسیر و فایل resources/sass/app.scss برای استفاده از laravel mix استایل های سی اس اس رو وارد میکنیم(‍import@)،مشکل من اینجاست که mixبا وارد کردن فایل های app.css و scss/bootstrap مشکلی ندارد اما با وارد کردن فایل های خارجی و حتی افزودن محتوای آنان به فایل ‍app مشکل دارد و ارور

ERROR in ./resources/sass/app.scss
Module build failed (from ./node_modules/mini-css-extract-plugin/dist/loader.js):
ModuleBuildError: Module build failed (from ./node_modules/css-loader/dist/cjs.js):
Error: Can't resolve '../webfonts/fa-brands-400.woff2' in '/home/milad/Desktop/PersianBit/resources/sass'

را در زمان راه اندازی npm run dev نشان میدهد.

خیلی ریسرچ کردم و خیلی از ارور ها رو برطرف کردم و این ارور آخره آما زورم بهش نرسید.

  • محتوای فایل ‍app.scss:
// Fonts
@import url('https://fonts.googleapis.com/css?family=Nunito');

// Variables
@import 'variables';

// Bootstrap
@import '~bootstrap/scss/bootstrap';
@import '../css/app';

@import '../css/all.min';
@import '../css/bootstrap.min';
@import '../css/tooplate-style';

۱۲ فروردین، ۱۴۰۰

٢ سال پیش ١۰۰+ امتیاز
@m-p به گفتگوی اختلاف زمانی در تاریخ شمسی جواب داد.

@behzad تاریخ پست بر اساس تاریخ هاستتون تنظیم میشه و مشکلی پیش نمیاد

٢ سال پیش ١۰۰+ امتیاز
@m-p به گفتگوی اختلاف زمانی در تاریخ شمسی جواب داد.

این کلاس و متود های زمانی در php بر اساس زمان تنظیم شده در os شما کار میکنند،مشکل از تاریخ . ساعت سیستمتون هست باید اون رو تنظیم کنید که دقیق باشه در این صورت درست کار میکنه.

در ضمن هیچ ربطی به تغیرات ساعت نداره

٢ سال پیش ١۰۰+ امتیاز
@m-p به گفتگوی اختلاف زمانی در تاریخ شمسی جواب داد.

با عرض سلام و خسته نباشی.

  • کد شما را تست کردم و مشکل از کد شما نبود احتمالا فانکشن jdate دستکاری شده،لطفا کد فانکشن را ارسال کنید تا بتونیم مشکل رو حل کنیم.

  • همچنین میتونید از فانکشن های دیگر مثل gregorian_to_jalali استفاده کنید به شکل زیر:

    $year = date("Y");
    $month = date("m");
    $day = date("d");
    
    // return string
    $jalali_time = gregorian_to_jalali($year,$month,$day,'/ ');
    echo $jalali_time;
    echo "<br>";

۲۶ بهمن، ۱۳۹۹

٢ سال پیش ١۰۰+ امتیاز
@m-p به گفتگوی requierd نشدن پکیج Swagger جواب داد.

@amin میشه بگید چطور باید اینکار رو انجام دهم،توی گوگل در موردش خوندم اما نفهمیدم که چطور انجام داده میشه

۲۴ بهمن، ۱۳۹۹

٢ سال پیش ٢۰۰+ امتیاز
@m-p یک گفتگو به اسم requierd نشدن پکیج Swagger درست کرد.

با عرض سلام و خسته نباشید خدمت دوستان پارس کلیکی عزیز،

من برای استفاده از یک api مجبور به استفاده از پکیج Swagger-php شده ام و این پکیج رو در سرویس composer و نصب نمودم و در فایل composer.json وارد شده است اما در زمان استفاده از کلاس های این پکیج ارور class...not found رو به من میده،اولین باره که به اینمشکل برمیخورم و از طریق گوگل سرچینگ هم نتونستم جواب به درد بخوری پیدا کنم.

  • نکته : این پکیج رو با همون روش پکیج های قبل نصب کردم و همه پکیج ها بهم جواب دادن(composer require [package name])

  • محتویات فایل composer.json

    {
    "require": {
        "guzzlehttp/guzzle": "^7.0",
        "phpmailer/phpmailer": "^6.2",
        "swiftmailer/swiftmailer": "^6.0",
        "zircote/swagger-php": "^3.1",
        "doctrine/annotations": "^1.11",
        "sendinblue/api-v3-sdk": "7.x.x"
    }
  • محتویات فایل autoload_real.php

    
    <?php
    class ComposerAutoloaderInit9a732474ebcdab3ca8b0d72c7250c12c
    {
    private static $loader;
    
    public static function loadClassLoader($class)
    {
        if ('Composer\Autoload\ClassLoader' === $class) {
            require __DIR__ . '/ClassLoader.php';
        }
    }
    
    /**
     * @return \Composer\Autoload\ClassLoader
     */
    public static function getLoader()
    {
        if (null !== self::$loader) {
            return self::$loader;
        }
    
        require __DIR__ . '/platform_check.php';
    
        spl_autoload_register(array('ComposerAutoloaderInit9a732474ebcdab3ca8b0d72c7250c12c', 'loadClassLoader'), true, true);
        self::$loader = $loader = new \Composer\Autoload\ClassLoader();
        spl_autoload_unregister(array('ComposerAutoloaderInit9a732474ebcdab3ca8b0d72c7250c12c', 'loadClassLoader'));
    
        $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
        if ($useStaticLoader) {
            require __DIR__ . '/autoload_static.php';
    
            call_user_func(\Composer\Autoload\ComposerStaticInit9a732474ebcdab3ca8b0d72c7250c12c::getInitializer($loader));
        } else {
            $map = require __DIR__ . '/autoload_namespaces.php';
            foreach ($map as $namespace => $path) {
                $loader->set($namespace, $path);
            }
    
            $map = require __DIR__ . '/autoload_psr4.php';
            foreach ($map as $namespace => $path) {
                $loader->setPsr4($namespace, $path);
            }
    
            $classMap = require __DIR__ . '/autoload_classmap.php';
            if ($classMap) {
                $loader->addClassMap($classMap);
            }
        }
    
        $loader->register(true);
    
        if ($useStaticLoader) {
            $includeFiles = Composer\Autoload\ComposerStaticInit9a732474ebcdab3ca8b0d72c7250c12c::$files;
        } else {
            $includeFiles = require __DIR__ . '/autoload_files.php';
        }
        foreach ($includeFiles as $fileIdentifier => $file) {
            composerRequire9a732474ebcdab3ca8b0d72c7250c12c($fileIdentifier, $file);
        }
    
        return $loader;
    }
    }
    function composerRequire9a732474ebcdab3ca8b0d72c7250c12c($fileIdentifier, $file)
    {
    if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
        require $file;
    
        $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
    }
    }

۱۸ بهمن، ۱۳۹۹

٢ سال پیش ١۰۰+ امتیاز
@m-p به گفتگوی مشکل در اجرای یک یا چند عکس جواب داد.

@ahmadi کلیپ رو ساختم و اینجا در یوتیوب قرار دادم براتون

٢ سال پیش ١۰۰+ امتیاز
@m-p به گفتگوی مشکل در اجرای یک یا چند عکس جواب داد.

@ahmadi برای من خیر،شاید به دلیل فرمت فرمت عکس استفاده شده توسط من ( jpg.) هست و باید بر اساس فرمت عکس خودتون تغیرش بدیید.

من از php 8 استفاده میکنم

۱۴ بهمن، ۱۳۹۹

٢ سال پیش ١۰۰+ امتیاز
@m-p به گفتگوی مشکل در اجرای یک یا چند عکس جواب داد.

@ahmadi مشکل از ‍روت شما هست که به شکل :

$dirname = "C:/Users/George/Pictures/Camera Roll/";

نوشته شده،در صورتی که به جای بکاسلش باید از اسلش استفاده میکردید به شکل زیر:

$dirname = "C:\Users\Milad\Pictures\Camera Roll\";

در سیستم عامل یونیکس برای روتینگ از بک اسلش(/) و در ویندوز از اسلش(\) استفاده میکنیم&در ویندوز برای کمتر شدن اشتباهاتی از این قبیل بهتره که به فولدر مربوطه رفته و از منوی properties(کلیک راست در فولدر مربوطه) لینک را از قسمت locaion بردارید تا درصد اشتباه کمتر شود

٢ سال پیش ١۰۰+ امتیاز
@m-p به گفتگوی مشکل در اجرای یک یا چند عکس جواب داد.

@ahmadi دوباره سلام،مشکل کد استفاده شده توسط شما در مسیر دهی بود،کد درست به شکل زیر هست و من ازش ریزالت گرفتم.

$dirname = "media/images/iconized/";
    $images = glob($dirname."*.jpg");
    $ignore = Array(".", "..");
    foreach($images as $curimg){
        if(!in_array($curimg, $ignore)) {
            echo "<img src='$curimg' /><br>\n";
        }
    }

٢ سال پیش ١۰۰+ امتیاز
@m-p به گفتگوی مشکل در اجرای یک یا چند عکس جواب داد.

کدی که داخل استک به عنوان سوال پرسیده شده بود:

$dirname = "media/images/iconized/";
$images = scandir($dirname);
$ignore = Array(".", "..");
foreach($images as $curimg){
    if(!in_array($curimg, $ignore)) {
        echo "<img src='$dirname/$curimg' /><br>\n";
    }
}

رو تست کردم و جواب داد اما کدی که به عنوان پاسخ:

$dirname = "media/images/iconized/";
$images = glob($dirname."*.png");

foreach($images as $image) {
    echo '<img src="'.$image.'" /><br />';
}

داده شده بود(کد استفاده توسط شما) جواب نداد،اگر کد رو تغییر دادید لطفان نمونه کد تغییر یافته و نمونه ارور رو بدید،تا بتونیم کمک کنیم

۴ بهمن، ۱۳۹۹

٢ سال پیش ٢۰۰+ امتیاز
@m-p یک گفتگو به اسم ارسال ایمیل با پی اچ پی درست کرد.

با سلام خدمت دوستان،کد های زیر را جهت ارسال ایمیل از لوکال هاست نوشتم و کد اجرا میشه و هیچ اروری نمیده ولی نکته مهم اینه که هیچ ایمیلی از طرف کلاینت دیده نمیشه.در ضمن php.ini و sendmail برای ارسال ایمیل در حالت دیفالت هستند.

اگر مشکلی باشه احتمالا(نظر شخصی)از لاین ۱۴ به بعد هست

<?php

$data = array();

function validation($form){
    $form = trim(htmlspecialchars(stripcslashes(strip_tags($form))));
    return $form;
}

if($_SERVER['REQUEST_METHOD'] == 'POST'){

    if(isset($_POST['toemail']) && isset($_POST['subject']) && isset($_POST['message'])){

        $to_email = validation($_POST['toemail']);
        $subject = validation($_POST['subject']);
        $message = wordwrap(validation($_POST['message']),70);
        $headers = "From: [email protected]" . "\r\n" ."CC: $to_email";

        if((!empty($to_email) && preg_match('/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/', $to_email)) && !empty($subject) && !empty($message)){

            try{
                if(mail($to_email, $subject, $message, $headers)){
                    $data['status'] = 400;
                    $data['data'] = "Email SuccessFully Sent";
                }
                else{
                    throw new Exception("Email Not Send");
                }
            }
            catch(Exception $e){
                $data['status'] = 404;
                $data['data'] = $e->getMessage();
            }

        }
        else{
            $data['status'] = 408;
            $data['data'] = "Data Not Validated";
        }

    }
    else {
        $data['status'] = 412;
        $data['data'] = "Access Denied";
    }

}
else{

    $data['status'] = 416;
    $data['data'] = "Access Denied";

}

echo json_encode($data);

?>

۲۶ دی، ۱۳۹۹

٢ سال پیش ١۰۰+ امتیاز
@m-p به گفتگوی انتخاب زبان برنامه نویسی در حوزه شبکه جواب داد.

@samikaner با تشکر از نظرتون،البته منظور از اشاره من به زبان های ‍C++ ، C صرفا اسکریپت نویسی نبود بلکه منظور برنامه نویسی ویروس هست که اکثرا با زبان های یاد شده و به خصوص با زبان assembly نوشته میشه،البته زبان های سی در ایران بیشتر شناخته شده هستند و مثال بهتری بودند. باز هم از بازخوردتون ممنونم

۲۴ دی، ۱۳۹۹

٢ سال پیش ١۰۰+ امتیاز
@m-p به گفتگوی ارور CORS policy جواب داد.

احتمالا شما در حال استفاده از یک وب سرویس هستید و به دلیل پیچیده بودن درخواست به این مشکل برخوردی توضیح بیشتر:

آنچه در سطح شبکه رخ می دهد می تواند کمی پیچیده تر از توضیحات بالا باشد. اگر درخواست یک درخواست "غیر ساده" باشد ، ابتدا مرورگر یک درخواست OPTIONS "بدون پرواز" بدون داده را ارسال می کند تا تأیید کند که سرور درخواست را قبول می کند. درخواست هر دو (یا هر دو) غیر ساده است: استفاده از فعل HTTP غیر از GET یا POST (به عنوان مثال PUT ، DELETE) استفاده از هدرهای درخواست غیر ساده ؛ تنها عناوین درخواست های ساده عبارتند از: تایید کنید پذیرش-زبان زبان محتوا نوع محتوا (این فقط زمانی ساده است که مقدار آن برنامه / x-www-form-urlencoded ، multipart / form-data یا text / plain باشد)

اگر سرور به پیشآگهی OPTIONS با هدرهای پاسخ مناسب پاسخ دهد (Access-Control-Allow-Headers برای هدرهای غیر ساده ، Access-Control-Allow-Methods برای افعال غیر ساده) که با فعل غیر ساده و / یا غیر مطابقت دارند سرصفحه های ساده ، سپس مرورگر درخواست واقعی را ارسال می کند.

با فرض اینکه سایت A می خواهد درخواست PUT را برای / somePage ارسال کند ، با مقدار غیر ساده نوع محتوا از برنامه / json ، مرورگر ابتدا یک درخواست قبل از پرواز را ارسال می کند:

OPTIONS / somePage HTTP / 1.1 منبع: http://siteA.com روش کنترل دسترسی-درخواست: قرار دهید دسترسی-کنترل-درخواست-عنوان ها: نوع محتوا

توجه داشته باشید که سرصفحه های Access-Control-Request-Method و Access-Control-Request-Headers توسط مرورگر به طور خودکار اضافه می شوند. نیازی به افزودن آنها نیست. این پیش پرواز OPTIONS دارای عناوین پاسخ موفقیت آمیز است:

دسترسی-کنترل-اجازه-مبدا: http://siteA.com دسترسی-کنترل-اجازه-روشها: GET ، POST ، PUT دسترسی-کنترل-اجازه-سرصفحه ها: نوع محتوا

هنگام ارسال درخواست واقعی (پس از انجام پیش پرواز) ، رفتار یکسان با نحوه رسیدگی به یک درخواست ساده است. به عبارت دیگر ، با یک درخواست غیر ساده که قبل از پرواز آن موفقیت آمیز است همانند یک درخواست ساده رفتار می شود (یعنی سرور برای دسترسی به جواب واقعی باید Access-Control-Allow-Origin را دوباره ارسال کند).

مرورگرها درخواست واقعی را ارسال می کنند:

PUT / somePage HTTP / 1.1 منبع: http://siteA.com نوع محتوا: برنامه / json

{"myRequestContent": "JSON بسیار عالی است"}

و سرور یک Access-Control-Allow-Origin را ارسال می کند ، دقیقاً همانطور که برای یک درخواست ساده ارسال می شود:

دسترسی-کنترل-اجازه-مبدا: http://siteA.com

برای اطلاعات بیشتر در مورد درخواست های غیر ساده ، به درک XMLHttpRequest over CORS مراجعه کنید.

در اینجا میتونید جواب سوال رو پیدا کنید

٢ سال پیش ١۰۰+ امتیاز
@m-p به گفتگوی انتخاب زبان برنامه نویسی در حوزه شبکه جواب داد.

همونطور که دوستمون @m-javidi گفتند در بحث شبکه آنچنان نیازی به برنامه نویسی نداریم به جز در حوزه اسکریپت ها که در اون مورد زبان های python,C++,C معروف به زبان های اسکریپتی هستند،همچنین در بحث شبکه دوره های network+,sisco,mcse بحث کلی هستند. در اینجا مقاله ای در این مورد هست که میتواند به شما کمک کند

۲۲ دی، ۱۳۹۹

٢ سال پیش ١۰۰+ امتیاز
@m-p به گفتگوی چگونه در لاراول کلاس شخصی بسازیم جواب داد.

با عرض سلام و خسته نباشید.

مهدی عزیز این موضوع بستگی به نوع کلاس داره،مثلا اگر میخوای controller یا model بسازی،معمول و آسون ترین راه استفاده از دستورات پیشنهادی لاراول هست: به شرح زیر

  • controller :

    php artisan make:controller ProvisionServer

  • model :

    : php artisan make:model Flight

همچنین اگر منظور از ساخت کلاس ایجاد یک helper هست میتونی از پاسخی که دوستان ازطرق composer ارائه کردند استفاده کنی

۳ دی، ۱۳۹۹

٢ سال پیش ٢۰۰+ امتیاز
@m-p یک گفتگو به اسم مقاله ای در مورد تغییرات php 8 درست کرد.

با عرض سلام و خسته نباشید خدمت پارس کلیکی های عزیز. ورژن php رو به version 8 آپدیت کردم و شاهد تغییراتی بودم که کمی گیج کننده بود و در اینجا مقاله ای در باره تغییرات به زبان انگلیسی خواندم ،برای مثال متد ‍__autoload() و به جای آن به ‍spl_autoload_register() تغییر پیدا کرده

اولا اینکه نظرتون در مورد این تغیرات چیه و دوما از دوستان نویسنده درخواست دارم یک مقاله به زبان فارسی در این مورد بنویسند.

۱۶ آذر، ۱۳۹۹

٢ سال پیش ٢۰۰+ امتیاز
@m-p یک گفتگو به اسم مشکل کار با API در php درست کرد.

با عرض سلام و خسته نباشید خدمت پارسکلیکی های عزیز. من نیاز دارم که برای پلتفرم خودم از یک API استفاده کنم و تا حالا از طریق PHP با API کار نکرده بودم،کد زیر کدی هست که برای تست کردن API نوشتم.


<?php 

    // Api url
    $url = "https://restcountries.eu/rest/v2/all";

    //Initiate cURL.
    $ch = curl_init($url);

    //Tell cURL that we want to send a POST request.
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, ???);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));

    //Execute the request
    $result = curl_exec($ch);
    $response = json_decode($result, true);
    var_dump(json_encode($response));
?>

مشکل اینجاست که این کد هیچگون ریزالتی به من برنمیگردونهResult : string(4) null و من نمیدونم که در قسمت ‍CURLOPT_POSTFIELDS وریبل ورودی(???) چی هست؟؟؟!!!!

  • ریزالتی که ارائه دادم در صورتی هست که یک وریبل وارد کنم نظر دوستان چیه؟؟؟!!!!

۲۰ مهر، ۱۳۹۹

٣ سال پیش ٢۰۰+ امتیاز
@m-p یک گفتگو به اسم یک ایده جدید درست کرد.

با عرض سلام و خسته نباشید. در حال حاظر در حال نوشتن یک پلتفرم از نوع کاری Idea هستم و در آخر به اسپانسر برای معرفی به عموم نیازمندم. چندتا مورد توی ذهن خودم بود

  • سپاه
  • شرکت های دانش بنیان
  • حامی دولتی مشاغل جدید

مسئله مهم و گیج کننده خودم اینه که این پلتفرم به راحتی توانایی جهانی شدن رو داره. نظر دوستان در این باره چیه؟؟؟!!!!

یک سوال دیگه هم دارم:

آیا راهی هست که بتونم این پلتفرم رو قبل از ارائه ثبت کنم تا کپی نشه؟؟؟!!!

۱۱ مهر، ۱۳۹۹

٣ سال پیش ١۰۰+ امتیاز
@m-p به گفتگوی روش کار شرکت‌های برنامه نویسی جواب داد.

با سلام. مکانی که من دارم کار میکنم اولا که اسم ی شرکت به خودمون ندادیم و بیشتر شبیه به تیم هستیم.

  • نکته اول این بود که ساعت کاری قانونی از ساعت ۸ تا ۱۶ بود و کار مفید حدود ۷ ساعت هست،نکته قابل توجه اینه که برامون ساعت کاری مهم نیست و هر وقت که کارمون تموم بشه دست از کد زدن میکشیم بعضی شبا شده خودم تا ساعت ۱۱ شب داخل شرکت بودم بعضی روزها هم ساعت ۱۳ رفتم

  • با توجه به این که همه پروژه ها روی Git یا بقیه ریپازیتوری ها آپلود میشه محل کار مهم نیست ولی توی شرکت تمرکز بیشتری روی کار داریم.

  • چطور نوشت پروژه به خود پروژه بستگی داره بعضی مواقع فقط یک نفر روی پروژه کار میکنه و نوع نوشتن به انتخاب خودمون بستگی داره،اما بعضی مواقع چند نفر روی کد کار میکنند و یا در آینده قراره چند نفر دیگر روی همون کد کار کنند در این مواقع نوع نوشتن کد بستگی به نظر لیدر تیم داره

۲۳ شهریور، ۱۳۹۹

٣ سال پیش ٢۰۰+ امتیاز
@m-p یک گفتگو به اسم برنامه نویسی Drone درست کرد.

باعرض سلام و خسته نباشید خدمت امیر عزیز و دوست های پارس کلیکی. یک پروژه مربوط به کد نویسی پرواز هواپیما های بدون سر نشین(Drone) بهم پیشنهاد شده که برای انتخاب زبان برنامه نویسی شک دارم. به نظرتون بین زبان های python و rust کدوم زبان انتخابعاقلانه ای هست؟؟؟!!!

۲ امرداد، ۱۳۹۹

٣ سال پیش ٢۰۰+ امتیاز
@m-p یک گفتگو به اسم گرفتن اطلاعات بیشتر از طریق session درست کرد.

با عرض سلام و خسته نباشید خدمت پارس کلیکی های عزیز. در بخش لاگین من مجبورم مثل ی حالت middleware مانند ایجاد کنم که فقط یوزر مورد نظر دسترسی های لازم رو داشته باشه و برای اینکار به محتوای ستون admin نیازمند هستم و میخوام این ستون رو از طریقsession ذخیره شده بگیرم،این session به من آیدی رو میده اما نمیتونم ازش استفاده کنم و ناچارا فعلا admin رو با session میفرستم که امنیتش خیلی پایینه.

  • کد اولیه(دارای ارور)

    function confirm_logged_in_admin(){
        $id = $_SESSION["user_id"];
        $user = select_user_by_id($id);
        if ($user["admin"] == 0) {
            redirect_to("../404.php");
        }
  • ارور

    Fatal error: Uncaught Error: Call to a member function query() on null in /var/www/html/barnelli/includes/functions.php:112 Stack trace: #0 /var/www/html/barnelli/includes/functions.php(174): select_user_by_id() #1 /var/www/html/barnelli/admin/index.php(5): confirm_logged_in_admin() #2 {main} thrown in /var/www/html/barnelli/includes/functions.php on line 112

    ارور ها رو برسی کردم و تنها مشکل واقعی در لاین سوم فانکشن هست.در واقع آیدی رو به varable وارد میکنه اما زمان استفاده آیدی رو بهم نمیده.

۶ تیر، ۱۳۹۹

٣ سال پیش ٢۰۰+ امتیاز
@m-p یک گفتگو به اسم Runing php files in the other directorys exept /var/www/html درست کرد.

با عرض سلام و خسته نباشدخدمت پارس کلیکی های عزیز.

مشکل اینجاست که apache2 آپدیت کردم به نسخه 2.4.41 و از بعد از آپدیت سرور آپاچی

فقط و فقط داخل روت ‍‍var/www/html کار میکنه.

و داخل دایرکتوری های دیگه فایل های phpران نمیشه.

این مشکل رو چطور میشه حل کرد؟؟؟!!!

۴ شهریور، ۱۳۹۸

۴ سال پیش ١۰۰+ امتیاز
@m-p به گفتگوی استفاده از ‍‍ubuntu or unix base جواب داد.

باسلام.

از نظر من (طبق تجربه شخصی):

  • مهمترین و اولین فرق unix base با ویندوز اینه که ی سری دخالت های بیجا که سیستم عامل انجام میده رو نداره و دست کاربر رو باز تر گذاشته(برای مثال استفاده کردن از زبان الکسیر در ویندوز از همون اول شروع به نصب به ارور میخوری)
  • فرق دوم اینه که تا حالا آنچنان ویروسی که در سطح جهانی پخش بشه برای unix ساخته نشده(حداقل تا اونجایی که من خبر دارم) در نتیجه نیازی به استفاده از آنتی ویروس های آشغال که سرعت سیستم و کار رو پایین میارن نیست
  • فرق سوم و مهمتر اینه که open source‍‍ هست و هر کسی میتونه به هر شکلی که میخواد شخصی سازیش کنه و همه افراد درش سهیم هستن

۱۷ امرداد، ۱۳۹۸

۴ سال پیش ١۰۰+ امتیاز
@m-p به گفتگوی قابل دیدن نبودن بعضی صفحات سایت جواب داد.

@netwons شما میتونید داخل دیتا بیس ی فیلد بسازید که میزان دسترسی های کاربر و ادمین رو مشخص میکنه و بعد میتونید ی middleware بسازید و داخل اون براساس میزان دسترسی صفحه رو نشون بدید و یا کاربران رو ریدایرکت کنید به ی صفحه دیگه(مثلا صفحه 404)

۴ سال پیش ١۰۰+ امتیاز
@m-p به گفتگوی Uncaught TypeError در جاواسکریپت جواب داد.

@m-p دلیلش رو پیدا کردم،کد دومی هم اون ارور رو داره ولی ارور نشون داده نمیشه،در واقع دلیل نشون دادن ارور else هست.

 else {
    console.log('error');
}

۴ سال پیش ١۰۰+ امتیاز
@m-p به گفتگوی Uncaught TypeError در جاواسکریپت جواب داد.

@amir ممنون از راهنماییتون ولی ی نکته که هست کد زیر دقیقا شبیه همین کد هست ولی هیچگونه اروری ندارد.دلیلش چی میتونه باشه؟؟؟!!!

var request

if (window.XMLHttpRequest) {
  request = new XMLHttpRequest()
} else {
  request = new ActiveXObject('Microsoft.XMLHTTP')
}

request.open('GET', 'data.xml')
// request.open('GET', 'http://localhost:4046/api/values.asmx')
request.onreadystatechange = function () {
  if (request.readyState === 4 && request.status === 200) {
    var items = request.responseXML.getElementsByTagName('name');
    var output = "<ul>";

    for(var i=0;i<items.length;i++)
    {
      output+="<li>"+items[i].firstChild.nodeValue+"</li>";
    }

    output+="</ul>";
    document.getElementById('update').innerHTML=output;
  }
}

request.send()