رفتن به مطلب
جامعه‌ی برنامه‌نویسان مُدرن ایران

تمامی فعالیت ها

این جریان به طور خودکار بروزرسانی می شود     

  1. دیروز
  2. سلام خسته نباشید راه اصولی ذخیره مشخصات یک محصول در پایگاه چیست. مثلا برای کالای گوشی یک جدول مشخصات داشته باشیم و برای کالای لباس یه جدول مشخصات دیگر. درسته؟
  3. kamran_14

    من با وای فای میرم اینترنت. و آی پی سیستم خودمو دادم به اندروید.
  4. هفته گذشته
  5. نیما غراب

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

    چهار زبان برتر برنامه‌نویسی برای بلاک‌چین

    زبانی را انتخاب کنید که پاسخگوی برنامه‌ی تحت بلاک‌چین شما باشد! فناوری بلاک‌چین به سرعت در حال تبدیل شدن به یکی از مهمترین پیشرفت‌های فناوری در چند دهه‌ی گذشته است. این سیستم، معاملات ناشناس و همتا را بین کاربران امکان‌پذیر می‌کند که اساساً بر پایه‌ی انقلاب رمزنگاری است. بازار جهانی بلاک‌چین در حال حاضر حدود ۱.۲ میلیارد دلار تخمین زده می‌شود و کارشناسان پیش‌بینی می‌کنند که تا سال ۲۰۲۵ به ارزش ۵۷ میلیارد دلار برسد که در سال بیش از ۶۹ درصد رشد خواهد داشت. عمده‌ی شرکت‌ها و سرمایه‌دارانِ سرمایه‌گذار در توسعه‌ی فناوری جدید رمزنگاری، قرارداد‌های هوشمند دفترچه‌های توزیع‌شده برای بانک‌های سنتی، توکن‌های بازی و سیستم‌های مدیریت زنجیره تأمین با شرکت‌های مشاوره بلاک‌چین همکاری می‌کنند. توسعه‌دهندگان در حال حاضر از زبان‌های برنامه‌نویسی محبوبی مانند C++ و JavaScript برای ساختن برنامه‌های سفارشی بلاک‌چین استفاده می‌کنند. علاوه بر این، مهندسان رمزنگاری زبان‌هایی مانند Simplicty و Solidity را برای این کار طراحی کرده‌اند. اما، آن‌ها آیا این‌ها بهترین زبان‌های برنامه‌نویسی برای فناوری بلاک‌چین هستند؟ بلاک‌چین چیست؟ بانکداری سنتی از یک بانک به عنوان رهبر و واسط استفاده می‌کند. جهت انتقال پول به یک دوست، یک شخص ابتدا حسابی داشته باشد و بخواهد که پول را به یک شماره حساب خاص که برای اوست انتقال دهد. بانک، حساب ارسال کننده را برای وجه بررسی می‌کند و آن وجه را به مقصد منتقل می‌کند و معامله در حساب فرستنده ثبت می‌شد. همچنین بانک دریافت کننده نیز همین کار را باید انجام دهد. با این حال، مشکل سیستم بانکی سنتی این است که سوابق در داخل ذخیره می‌شوند و در برابر هک و دستکاری‌های آسیب‌پذیر هستند. بلاک‌چین با ذخیره کردن تمامی سوابق به صورت آنلاین در یک دفترچه‌ی مستعار (بی‌نام) ذخیره می‌کند که توسط هر کسی قابل دسترس است. بلاک‌چین از بلاک‌ها استفاده می‌کند، یا مجموعه‌ای از داده‌ها، مشابه سطر‌ها و ستون‌های صفحه‌های گسترده جهت ذخیره داده‌ها استفاده می‌کند. بلاک‌ها به ترتیب متوالی به «زنجیر» اضافه می‌شوند. برخلاف دفترچه‌های سنتی، که در داخل ذخیره می‌شوند، هر کاربرِ بلاک‌چین دارای سوابق کاملی از کل بلاک‌چین در رایانه‌ی خود است. این بدان معنی است که در صورت داشتن کد هش (رمز‌شده‌ی) مربوطه می‌توانند به سرعت هر معامله‌ای را که اتفاق افتاده است را پیدا کنند. از آن‌جایی که این داده‌ها به صورت عمومی ذخیره می‌شوند، هرگز قابل تغییر یا حذف نیستند! در نتیجه آرامش خاطر را به کاربران فراهم می‌کند. زبان برنامه‌نویسی JavaScript (جاوااسکریپت) از آن‌جایی که گیت‌هاب به تازگی این زبان را به عنوان محبوب‌ترین زبان برای توسعه‌دهندگان اعلام کرده است، به طور باورنکردنی بیش از ۹۵٪ وب‌سایت‌ها به طریقی از آن‌ استفاده می‌کنند. با این حال، جاوااسکریپت تنها پادشاه وب نیست؛ چرا که به عنوان یک زبان انعطاف‌پذیر در بلاک‌چین استفاده می‌شود. یکی از دلایلی که جاوااسکریپت را برای توسعه‌دهندگان می‌بخشد نحوه‌ی دستیابی به مدیریت کد‌ها به صورت ناهمزمان (ناهمگام) است. این امر در بلاک‌چین بسیار مهم است، زیرا ممکن است هزاران یا حتی میلیون‌ها معاملات در همان زمان آغاز شود! برنامه‌نویسی موازی یک برنامه را قادر می‌سازد تا چندین عمل را به صورت همزمان انجام دهد در حالی که برنامه‌نویسی استاندارد و همزمان نمی‌توانند آن حجم را تحمل و کنترل کنند. با اجرای چندین کار به صورت همزمان، کد ناهمزمان می‌تواند باعث افزایش پاسخگویی و عملکرد برنامه شود. این امر باعث می‌شود برنامه‌های بلاک‌چین بتوانند حجم بسیار زیادی از اقدامات را بدون عملکرد کُند و نا امید سازی کاربر، آن را انجام دهند. زبان برنامه‌نویسی C++ (سی‌پلاس‌پلاس) سی‌پلاس‌پلاس همچنین به عنوان یکی از قدرتمند‌ترین و محبوب‌ترین زبان‌های برنامه‌نویسی در دنیای فناوری شناخته می‌شود و در صنعت بلاک‌چین نیز یک قدرت غالب است. زبان شیء‌گرایی برای توسعه بلاک‌چین مناسب است، زیرا از همان اصول کپسوله‌سازی، انتزاع، چند‌ریختی و مخفی کردن داده‌ها استفاده می‌کند. به عنوان مثال بلاک‌چین از ویرایش‌های ناخواسته از داده‌ها جولوگیری می‌کند. توسعه‌دهندگان همچنین به دلیل قابلیت کنترل حافظه، از C++استفاده می‌کنند. این زبان به شما اجازه می‌دهد تا بلوک‌های ایمن را نگه‌ داشته و تعداد زیادی از درخواست منابع را مدیریت کنید. با اجازه دادن به هر نود (گره) شبکه می‌توانید بلوک‌های فردی را پذیرفته یا رد کنید. همچنین C++ به دلیل پشتیبانی و مدیریت وظایف موازی و نخی به طور گسترده در بلاک‌چین مورد استفاده قرار می‌گیرد. این زبان قادر به مدیریت هردو ویژگی موازی و غیرموازی در وظایف است، در واقع می‌تواند به خوبی انجام وظایف تک-نخی/تک رشته‌ای (single-thread) را بهبود دهد. نمونه‌ی فوق‌العاده‌ای از برنامه‌های اساسی از بلاک‌چین که با C++ نوشته شده است EOS نام دارد. این نرم‌افزار به صورت منبع‌باز در سال ۲۰۱۸ توسط بلاک منتشر شد و به گونه‌ای طراحی شده است که معاملات را سریع‌تر از گزینه‌های دیگر پردازش می‌کند. این نرم‌افزار اجازه می‌دهد تا در کمتر از یک ثانیه معامل را تأیید کرده و فقط در دو دقیقه آن را نهایی کنید. زبان برنامه‌نویسی Solidity این زبان یک نمونه‌ی هوشمند است که با همکاری توسعه‌دهندگان Ethereum و بلاک‌چین توسعه یافته است. این زبان به صورت اختصاصی دامنه‌های بسیاری از اصول و اصطلاحات مشابه به جاوا‌اسکریپت را برای ایجاد برنامه‌های با کیفیت بالا و غیر متمرکز فراهم می‌کند. توسعه‌دهندگان، این زبان را برای این ترجیح می‌دهد که به شما این امکان را فراهم می‌کند تا یک کد سطح بالا را برای شبکه‌ی بلاک‌چینی Ethereum، دومین بلاک‌چین رمزنگاری محبوب، که می‌تواند به زبان سطح پایین و کد ماشین کامپایل شود. در حال حاضر Solidity در طیف گسترده‌ای از سکو‌ها (پلتفرم‌های) بلاک‌چینی از جمله، Ethereum، Tendermint، Ethereum Classic و Counterparty موجود است. زبان برنامه‌نویسی Simplicity این یک زبان کاملاً جدید است که در تاریخ نوامبر ۲۰۱۷ برای قرارداد‌های خاص و هوشمندِ بلاک‌چین طراحی و منتشر شده است. این زبان برای افزایش بهره‌وری و پنهان‌سازی اجزای منطقی سطح پایین از مهندسان است که یکی از دلایلی است که به سرعت در جامعه محبوب می‌شود. مانند C++، این یک زبان شیء‌گرایی است که برای جولوگیری از خطاها و تغییر داده‌ها در بلاک‌چین استفاده می‌کند. خلاصه بلاک‌چین اینجاست تا بماند! فناوری محبوب (Record-Keeping) چیزی است که تبادلات رمزنگاری را ممکن می‌سازد و بطور گسترده توسط شرکت‌ها، افراد و خدمات مشاوره‌ای بلاک‌چین، برای توسعه‌ی نرم‌افزار مورد استفاده قرار می‌گیرد. توسعه دهندگان می‌توانند به راحتی از زبان‌های محبوب مانند C++ و JavaScript برای توسعه‌ی بلاک‌چین استفاده کنند. از طرفی این انجمن اخیراً زبان‌هایی به عنوان Solidity و Simplicity را ایجاد کرده است که باعث می‌شود تا فرآیند توسعه‌ی رمزنگاری روان‌تر شود.
  7. فرهاد شیری

    یعنی با روتر (مثل مودم وای فای ) ویا هاب سوئیچ شبکه آدرس دهی کردید! وبه xamapp متصل میشید؟
  8. kamran_14

    نحوه ارتباط با آدرس loop back را چطوری متوجه بشم؟
  9. جدیدا
  10. اصطلاحاتی که بهتر است در مورد C++ مدرن بدانید! داشتم به این فکر می‌کردم که برخی از مبتدیان برنامه‌نویسی به خصوص کسانی که به سراغ زبان‌هایی مثل سی++ می‌روند معمولاً مستقیم وارد کد نویسی می‌شوند و به این گمان که آغاز برنامه‌نویسی یعنی نوشتن یک کد با خروجی «سلام، دنیا»! دریغ از آن‌ که بعضی از موارد مانند «معرفی کامپایلر و انواع آن» و حتی «ساختار برنامه‌های نوشته شده تحت سی‌پلاس‌پلاس» و یا حتی «مدیریت حافظه» را در نظر بگیرند! من معمولاً در مقالات و آموزش‌های خودم به این اشاره می‌کنم که قبل از هر چیز باید با ساختار برنامه‌های نوشته شده‌ی یک زبان آشنا شد و سپس به بررسی موارد دیگر مانند نحو زبان و یا دیگر ویژگی‌های آن. بنابراین، یکی از خطرناک‌ترین عواملی که موجب خونریزی داخلی یک نرم‌افزار در برنامه‌های نوشته شده توسط برنامه‌نویس درC++ می‌شود عدم مدیریت حافظه‌ی اختصاص یافته است که باید بعد از اختصاص یافتن حافظه در زمان معین آن را آزادسازی کند. در صورتی که این کار صورت نگیرد عمل Memory Leak (نَشتِ حافظه) رخ داده است. بسیاری از علاقه‌مندان بر این باورند که چون سی++ دارای GC یا همان Grabbage Collector (زباله‌روب) نیست که البته صحیح است! سی++ دارای GC نیست و این امر محدودیت یا نکته ضعف آن هم نیست! سی++ همه چیز را آزادانه در اختیار برنامه‌نویس قرار می‌دهد تا خود در زمان مناسب روش مدیریت حافظه را انتخاب کند. در علوم رایانه بازیافت حافظه یا زباله‌روبی نوعی مدیریت حافظه‌ی خودکار است که عمل مدیریت حافظه‌های اختصاص یافته شده را به دست می‌گیرد و اکثر زبان‌های برنامه‌نویسی مانند #C، جاوا و دیگر موارد مشابه به آن مجهز به این ویژگی هستند که البته وجود چنین ابزار‌هایی می‌تواند توهمی را ایجاد کند مبنی بر آن که دیگر نیازی به مدیریت منابع نیست، اما در بعضی موارد مدیریت منابع هنوز یک الزام است چرا که منابع آزاد شده هنوز هم دلیل بر نشتِ حافظه هستند. این نشت حافطه زمانی اتفاق می‌افتد که اشیاء هنوز قابل دسترس از طرف اشیاءای که زنده هستند اما هرگز مورد استفاده‌ی دوباره قرار نمی‌گیرند اتفاق بی‌افتد. در بسیاری از زبان‌های برنامه‌نویسی این ویژگی وجود دارد که طبیعتاً مدیریت توسط GC راه حل بسیار خوب و بی نقصی نیست. اما با توجه به عدم وجود GC در سی++ اکثراً با روش‌های دستی برای مدیریت حافظه می‌پردازند که رایج‌ترین روش آن استفاده از عمل new و delete در اختصاص دادن و آزاد‌سازی حافظه است. بسیاری از ما با سی++ در دانشگاه و یا دروس مرتبط با مفاهیم اولیه برنامه‌نویسی آشنا شده ایم، اما معمولاً مفاهیم مربوطه برای نسل‌های قبلی و منسوخ شده‌ی این زبان است. بهتر است در نظر داشته باشید که برنامه‌نویسی مدرن یعنی پیروی از اصول و قوانین جدیدی که در تکامل یافتن یک زبان به کار گرفته می‌شود. RAII : Resource Acquisition is initialization بنابراین، باید در نظر گرفت مدیریت حافظه از استاندارد ۱۱ به بعد این زبان به روش‌های بسیار مدرن‌تری هوشمند سازی شده است. یکی از بهترین تکنیک‌های موجود در هسته‌ی زبان الگوی RAII است. تکنیک RAII مخفف «Resource Acquisition is initialization» به مفهوم (کنترل تخصیص منابع و آزاد‌سازی آن‌ها) یک ویژگی اصلی در سی‌پلاس‌پلاس است، که متکی به کامپایلر (همگردان) برای فراخوانی خودکار بعضی موارد عنوان می‌شود. با قرار دادن چنین کدی در مخرب (ویرانگر) دیگر به فراخوانی آن کد توسط برنامه‌نویس نیست و کامپایلر خود این کار را انجام می‌دهد. به طور کلی این الگو هر شیء را مجبور می‌سازد تا در زمان مواجه با رفتار‌های ناهنجار خود را پاکسازی کند. به طور کلی هنگامی که شما یک شیء را مقدار‌دهی اولیه می‌کنید، قبل از انجام آن باید منابع مورد نیاز آن را تأمین کنید (در سازنده). هنگامی که یک شیء از محدوده‌ خارج می‌شود، هر منبعی را که مورد استفاده قرار داده است باید آزاد کند (در مخرب - ویرانگر). نکات کلیدی هرگز نباید یک شیء به حالت نیمه آماده یا نیمه از بین‌ رفته وجود داشته باشد! وقتی که یک شیء ساخته می‌شود، آن شیء باید در حالت آماده باش برای استفاده باشد. وقتی یک شیء از محدوده خارج می‌شود، باید منابع اختصاص یافته‌ی خود را در حافظه آزاد کند (کاربر مجبور به انجام کار دیگری نیست). آیا RAII عنوان بدی برای مفهوم این تکنیک است! از نظر خالق سی‌پلاس‌پلاس نام بهتر می‌تواند به صورت زیر باشد: مدیریت منابع مبتنی بر حوزه (محدوده یا دامنه) : Scope Based Resource Management چیزی که تکنیک RAII را نقض می‌کند چیست؟ اشاره‌گر‌های خام و تخصیص حافظه فراخوانی با کلمه‌ی کلیدی new برای دست آوردن یا اختصاص دادن منبع (حافظه). فراخوانی با کلمه‌ی کلیدی delete برای آزاد‌سازی منبع (حافظه). اما این مورد به صورت خودکار بعد از خروج از محدوده توسط اشاره‌گر‌ها صورت نمی‌گیرد. void rawPtrFn() { // acquire memory resourceNode* n = newNode; // manually release memory delete n; } بنابراین در صورتی که برنامه‌نویس استفاده از کلمه‌ی کلیدی delete را برای آزاد‌سازی حافظه فراموش کند (نشتِ حافظه) رخ می‌دهد. بنابراین این عمل کافی است تا تکنیک RAII را نقض کنیم. void UseRawPointer() { // Using a raw pointer -- not recommended. Song* pSong = new Song(L"Nothing on You", L"Kambiz Asadzadeh"); // Use pSong... // Don't forget to delete! delete pSong; } بنابراین، راه حل RAII برای این امر در چیست؟ کلاسی داشته باشید که : حافظه را هنگام مقدار‌دهی اولیه تخصیص دهد. حافظه را هنگام فراخوانی مخرب (ویرانگر) آزاد کند. دسترسی به اشاره‌گر‌های زیرین را امکان‌پذیر کند. اشاره‌گر‌های هوشمند (Smart Pointers) این ویژگی اساساً مدیریت حافظه‌ی خودکار را ارائه می‌دهد. زمانی که یک اشاره‌گر هوشمند دیگر استفاده نمی‌شود (زمانی که از محدوده‌ی خود خارج می‌شود) حافظه‌ی مورد نظر خود را به طور خودکار آزاد می‌کند.توجه داشته باشید که اشاره‌گر‌های سنتی با عنوان اشاره‌گر‌های خام (Raw Pointer) شناخته می‌شوند. اشاره‌گر‌های هوشمند را می‌تواند یک شکل کلی از GC در نظر گرفت؛ نوعی مدیریت خودکار وقتی که دیگر توسط برنامه مورد استفاده قرار نمی‌گیرند حافظه‌ی اختصاص یافته‌ی آن شیء به طور خودکار حذف می‌شود. در استاندارد ۱۱ سی‌پلاس‌پلاس سه نوع اشاره‌گر هوشمند معرفی شده است که همه‌ی آن‌ها در فایل سرآیند <memory> از کتابخانه‌ی استاندارد STL معرفی شده‌اند. کلاس std::unique_ptr یک اشاره‌گر هوشمند که دارای یک منبع تخصیص حافظه‌ی پویا است. کلاس std::shared_ptr شامل یک اشاره‌گری است که دارای یک منبع تخصیص حافظه‌ی پویا با تفاوت اینکه می‌تواند چندین شیء را به صورت اشتراکی از یک منبع مشترک ردیابی کند. کلاس std::weak_ptr مانند std::shared_ptr است که شمارنده‌ی آن افزایش نمی‌یابد. به مثال زیر توجه کنید: { std::unique_ptr<int> p(new int); // شیء p قابل استفاده در داخل حوزه است. } // در این بخش که خارج از دامنه‌ی اشاره‌گر است حافظه‌ی اختصاص یافته آزاد می‌شود. همانطور که مشخص است یک شیء که تحت اشاره‌گر هوشمند مورد استفاده قرار می‌گیرد تا زمانی که خارج از حوزه‌ی خود قرار نگیرد قابل استفاده خواهد بود. نمونه کد پایین مثالی از نحوه‌ی نمونه سازی تحت اشاره‌گر‌های هوشمند است. void UseSmartPointer() { // Declare a smart pointer on stack and pass it the raw pointer. unique_ptr<Song> song2(new Song(L"Nothing on You", L"Kambiz Asadzadeh")); // Use song2... wstring s = song2->duration_; //... } // song2 is deleted automatically here. این مقاله در یک فرصت مناسب به به جزئیاتی بیشتری خواهد پرداخت...
  11. فرهاد شیری

    دوستت از چه روتری استفاده میکنه! وشما از چه روتری؟ نحوه ارتباط تون با آدرس loop back روی سیستمی که xampp نصب هست به چه صورتی؟
  12. kamran_14

    ممنون من و دوستم هر دو از یک ورژن اندروید استفاده میکنیم یعنی هر دو اندروید استودیو 3.4.2 را نصب کردیم. برنامه هامونو عین هم نوشتیم اما برا اون بدون اینترنت کار میکنه و پرمیشن مربوط به اینترنت نمیخواد ولی برنامه ی من باید برا دسترسی به سرور xampp به نت متصل باشم و پرمیشن هم میخواد. خیلی عجیبه برام
  13. فرهاد شیری

    دوست گرامی! xamp در حقیقت یک بستر برای شبیه سازی http هست بدون نیاز به سرورهای میزبان اینترنت، بنابراین وقتی برنامه شما روی گوشی میخواد به وب سرویس های لوکال که با xamp ایجاد شده اند دسترسی داشته باشه! قطعا باید permission های مناسب را داشته باشه ولی هیچ ربطی به اینترنت نداره یعنی لزومی نداره که شما به اینترنت متصل باشید. حالا چرا باید دسترسی ها فعال باشه برای اینکه اندروید که نمیدونه شما دارید به یک سرور مجازی متصل میشید ویا یک سرور واقعی بنابراین طبق پروتکل های امنیتی خودش این دسترسی ها را لازم داره، در حقیقت لازم هم نداره که بدونه! تصور کنید که این سطح از امنیت وجود نداشت به راحتی هر کسی یک app درست میکرد میذاشت تو یک مارکت بعد میشد یک نرم افزار جاسوسی که راحت هرچی داشتید به سرقت میبرد.
  14. سلام من چرا با android نمیتونم بدون اینترنت از xamp که در کامپیوتر خودم قرار داره اطلاعات رو دریافت کنم و از من permission میخواد برا اینترنت. در حالی که نباید بخواد. چون من لوکال کار میکنم ایراد از IP نمیتونه باشه؟ چرا وصل شدن به اینترنت اجباریه؟ در غیر اینصورت اطلاعاتی از سرور نشان داده نمیشود و پرمیشن میخواد من آی پی سیستم خودمو میدم String Url="http://192.168.43.3/shop/register.php";
  15. kamran_14

    آقای شیری خیلی ممنون. پس میشه از نوشته ی شما فهمید که از سمت اندروید هم میتوان با متد GET به سرور اطلاعات فرستاد یعنی با کمک کلاس والی. آقای شیری ممنون میشم اگر مثال ساده ای بزنید که بتوان اطلاعات را با متد GET به سرور اطلاعات فرستاد. من در این کد بالا که فرستادم وقتی به جای POST از متد GET استفاده میکنم خطا میدهد. چرا؟ مگر هر دو کار ارسال اطلاعات به سرور را انجام نمیدهند؟ در حالی که در HTML وقتی میخواستیم با GET اطلاعات رو بفرستیم خودمان دستی در نوار آدرس نمینوشتیم. ببخشید که سوالمو دوباره پرسیدم چون از من خواسته شده در مورد GET تحقیق کنم
  16. فرهاد شیری

    البته این متد getParams مربوط به کلاس volly هست که چه برای post چه برای get بایدoverride بشه!
  17. کامبیز اسدزاده

    همینطوره خب، منم اشاره کردم مثالش رو که تحت Get باید پارامتر‌ها رو در Url بیاری. توی اندروید و مثالی که زدی تابع getParams اضافه هست و صرفاً در روش Post به درد می‌خوره. با توجه به مثال خودت همچین کاری کافی هست : String Url="http://192.168.43.3/shop/register.php?username=name&email=mymail";
  18. kamran_14

    چون میخواستم تفاوتشون رو عملی ببینم. ولی قبلا گفته شده بود استاندارد get,post در همه ی زبانهان یکسانه ولی در html میشد به سرور اطلاعات فرم رو فرستاد. خودش در آدرس بار نشون میداد و ما کویری استرینقها رو ما نمینویشتیم
  19. کامبیز اسدزاده

    چرا گیر دادی به متد Get؟ در این متد زمانی می‌تونید پارامتری رو ارسال کنید که در قالب url باشه. برای مثال به این شکل: http://www.domain.com/request.php?username=myname&email=myemail در این صورت دیگه نمی‌تونید کوئری‌های سفارشیِ خارج از url ارسال کنید.
  20. kamran_14

    ممنون از جوابتون ولی من میخواستم بدونم با متد GET چطوری میشه اطلاعاتو ارسال کرد؟ یعنی میتوان همین برنامه رو طوری تغییر داد که به جای post ما از get استفاده کرد؟
  21. کامبیز اسدزاده

    سلام، متد Get متدی برای درخواست اطلاعات هست نه ارسال! هرچند برای ارسال هم استفاده می‌شه اما اگر شما می‌خواهید اطلاعاتی مثل همین کدی که می‌بینم رو در قالب کوئری نه url ارسال کنید بهتره متد رو به Post تغییر بدین. خیلی ساده بخوام توضیح بدم هرجا که قرار بود مقادیری رو به عنوان کوئری به سمت سرور ارسال کنید حتماً از Post استفاده کنید. در این صورت لازم نیست پارامتر‌ها رو در قالب url ارسال کنید. مثالی هم که زدین متد Post هست، اگر دقت کنید نوع params داره چند تا نوع با مقدار رو ارسال می‌کنه. سمت سرور هم مثلاً با Php با در نظر گرفتن نوع درخواست از Post به این شکل می‌تونید مقدار رو بگیرید. $email = $_POST["email"]; $username = $_POST["username"]; $password = $_POST["password"]; $mobile = $_POST["mobile"]; echo $email; ... ..... ......
  22. سلام خسته نباشید این متد برای ثبت اطلاعات در سرور هست. مشکلی در این کد نیست. فقط چرا نمیشه با متد GET اطلاعات رو فرستاد؟ مگه متد GET برای ارسال اطلاعات نیست؟ من GET وقتی مینویسم عمل نمیکنه private void sendInfo(final String email, final String username, final String password, final String mobile) { String Url="http://192.168.43.3/shop/register.php"; StringRequest stringRequest=new StringRequest ( Request.Method.POST, Url, new Response.Listener<String> () { @Override public void onResponse(String response) { Log.i ( TAG, "onResponse: " ); try { JSONObject jsonObject=new JSONObject ( response ); String resualt=jsonObject.getString ( "response" ); if (resualt.matches ( "ok" )) Toast.makeText ( getContext (), "Successfully is Registred", Toast.LENGTH_SHORT ).show (); else Toast.makeText ( getContext (),"Faild",Toast.LENGTH_LONG ).show (); } catch (JSONException e) { e.printStackTrace (); } } }, new Response.ErrorListener () { @Override public void onErrorResponse(VolleyError error) { Toast.makeText ( getContext (), error+"", Toast.LENGTH_SHORT ).show (); } } ){ @Override protected Map<String, String> getParams() throws AuthFailureError { Map<String,String> params=new HashMap<> ( ); params.put ( "email",email ); params.put ( "username",username ); params.put ( "password",password ); params.put ( "mobile",mobile ); return params; } }; stringRequest.setRetryPolicy (new DefaultRetryPolicy (10000,DefaultRetryPolicy.DEFAULT_MAX_RETRIES,DefaultRetryPolicy.DEFAULT_BACKOFF_MULT) ); Volley.newRequestQueue ( getContext () ).add ( stringRequest ); }
  23. کامبیز اسدزاده

    سلام، این روش‌ها که بهشون اشاره کردین به عنوان متد (method) انتقال اطلاعات بین سرور و کلاینت هستند. برای دریافت و یا اعمالِ یک درخواست برای انجام کار مانند انتقال، به‌روز‌رسانی، دریافت، حذف و غیره از متد‌هایی مثل GET, POST, DELETE, PUT, PATCH استفاده می‌شود که متد‌های Get و Post دو نمونه‌ی مهم و پرکاربردی از این روش‌ها محسوب می‌شوند. در اندروید شما برای اینکه بخواهید اطلاعاتی را از سرور خود دریافت و یا انتقال دهید، اگر اون پروتکل تحت http یا https باشه می‌توانید تحت این متد‌ها تراکنش را انجام دهید. بنابراین هیچ فرقی بین متد‌های GET و POST در اندروید و HTML وجود نداره چون این‌ها یک سری متد‌های استانداردِ از قبل تعریف شده برای پروتکل‌ HTTP بشمار می‌آیند.
  24. سلام ببخشید سوالی داشتم. متد post و get که در html خواندیم با متد get و post اندروید فرق میکنه؟ متد get و post در html هر دو برای ارسال اطلاعات بود. فقط اگر با get ارسال میکردیم امنیت پایین بود به خاطر نمایش اطلاعات در آدرس بار مرورگر ولی سرعت ارسال اطلاعات با get زیاده و اگر با post ارسال کنیم امنیت بالاست چون در آدرس بار اطلاعات رو نشون نمیداد. در اندروید فرق میکنه؟ یعنی آیا برای ارسال اطلاعات میتوان از دو متد استفاده کرد؟
  25. kambiz behnia

    از بابت توضیح در پاسخ اول متشکرم سعی میکنم کتابی را که معرفی کرده بودید حتما مطالعه کنم. احساس میکنم پاسخ دوم با پاسخ اول در تناقض باشد و بطور کلی استفاده به این شکل درست نباشد. خودم فکر میکنم چون مقدار بازگشتی تابع را مستقیما به دستور copy ارسال کرده ایم و احتمالا در آن از حافظه استک استفاده نشده در عمل دوچار مشکل نشده ایم ولی چنانچه اگر به صورت دیگری استفاده کنیم حتما مشکل حافظه خواهیم داشت مثلا خودم دوباره strcpy را بازنویسی کنم بطوریکه در ابتدا آن اقدام به تعریف یک آرایه 256 تای از char نمودم اگر چه در بدنه آن هیچ استفاده ای از آن نکردم ولی موجب خراب شده داده های مورد نظر من شد و تابع بهصورت درست عمل نکرد و وقتی آن حاظه را از استک نگرفت برنامه کار مورد نظر من را انجام داد. یکی از دوستان برای چنین مواردی اصطلاح جالبی داشت "برنامه به غلط درست کار میکند."
  26. فرهاد شیری

    درود بر جناب رمضانی منش گرامی! تشکر بابت توضیحی که دادید
  27. فرهاد شیری

    بله این حرف کاملا درست است! منتهی به لطف پردازشگرهای پیشرفته امروزی وطبعا به لطف instruction های جدید در اسمبلرهای جدید دیگه کدها در محل فراخوانی کامپایل نمی شوند! (PLT@) یعنی ارجاع داینامیکی به کد در زمان اجرا که به نوعی special instruction دستورالعمل CALL محسوب میشود! جناب رمضانی منش! پیشنهاد میکنم که برای اینکه بتونید جواب خیلی از سوالاتتون را بگیرید کتابهای زیر را مطالعه کنید... X86 Assembly Language and C Fundamentals - CRC Press- C, Assembly and Program Execuation on IntelR 64 Architecture - Apress - Introduction to 64 Bit windows Assembly Programming - Digital Design, Fundamentals of Computer Architecture and Assembly Language - Springer Assembly Oxford university press Computer Organization Basic Processor Structure - CRC Press در صورتی که تمایل داشتید اعلام کنید که این کتابها را براتون ارسال کنم..
  28. قاسم رمضانی منش

    علیکم‌السلام و درود بر شما؛ راستش با توضیحاتی که دادید خیلی گیج شدم و منتظرم که وقتی باشد تا کتابی که پیشنهاد دادید را بخوانم، چون کدهایی که دوستمان ارسال کرده‌اند درواقع برای من اصلاً جواب نداد و Segmentation Fault داده. و تا به چیزی که امروز من یادگرفته‌ام می‌دانم که آدرس یک متغیر local را نباید از تابع برگرداند و این دقیقاً کاری هست که در کد انجام شده و کاری که من کرده‌ام و دلیلی که بهتر دیده‌ام این بوده که حافظه‌ای در Heap گرفته‌ام و آدرس آن را برگرداندم و این عمل بدون Segmentation Fault کار خود را انجام میدهد. امّا همینطوری که گفتم : اصلاً رفتار کد به درستی مشخص نبود و با توضیحات شما هم چیزی متوجه نشدم.
  1. نمایش فعالیت های بیشتر
×
×
  • جدید...