<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های فاطمه عامل</title><link>https://virgool.ir/feed/@fatemeh.amel</link><description>ارتباطات و کدنویسی بهترین کار و کامپیوتر بهترین رشته دنیاست.من برنامه‌نویسی اندروید رو با یک تیم بی‌نظیر در پیام رسان هدهد شروع کردم و در کنارش تو Quera برای دولوپرها مارکتینگ هم انجام میدم :)</description><language>fa</language><pubDate>2026-11-10 19:18:34</pubDate><image><url>https://files.virgool.ir/upload/users/34422/avatar/MEsYP5.jpg</url><title>فاطمه عامل</title><link>https://virgool.ir/@fatemeh.amel</link></image><item><title>پنجمین دوره مسابقات برنامه‌نویسی کشوری کدکاپ در راه است</title><link>https://virgool.ir/Quera-Mag/پنجمین-دوره-مسابقات-برنامهنویسی-کشوری-کدکاپ-در-راه-است-svvgysjtkm37</link><description>پنجمین دوره مسابقات برنامه‌نویسی کدکاپ از ۳۰ آبان تا ۲۸ آذر ۹۹ برگزار می‌شود و با توجه به شرایط این روز‌های کشور و برای حفظ سلامتی شرکت‌کنندگان، این مسابقات تنها شامل مراحل آنلاین است. کدکاپ اولین مسابقه‌‌ برنامه‌نویسی کشور و منطقه است که به صورت همزمان ده‌ها زبان برنامه‌نویسی و تکنولوژی پرکاربرد را در‌بردارد. این مسابقات به صورت سالانه در دانشگاه صنعتی شریف برگزار می‌شود و تا به‌حال ۴ دوره از این مسابقات برگزار شده است. Quera و مرکز نوآوری شریف برگزارکنندگان مسابقات کدکاپ هستند.حامی این دوره از مسابقات ویستا سامانه آسا خواهد بود و جوایز این دوره ۵۰ میلیون تومان می‌باشد.در صورت تمایل میتوانید به صورت رایگان در این مسابقات به صورت دلخواه شرکت کنید، رقابت کنید، جایزه بگیرید و به شرکت‎‌های IT معرفی شوید. ثبت‌نام از طریق codecup.irکدکاپ در چهار دوره با شرکت بیش از ۷۰۰۰ نفر از برنامه‌نویسان سرتاسر کشور در دانشگاه صنعتی شریف برگزار شد.  تمامی مراحل مسابقات کدکاپ، از ثبت نام تا شرکت در مسابقات و اعلام نتایج در Quera برگزار می‌شود. مسابقات به صورت آنلاین بوده و کدهای ارسالی شرکت‌کنندگان توسط سامانه‌ی داوری خودکار Quera تصحیح می‌شوند. همچنین در صورتی که کد ارسالی دارای خطایی بود، شرکت‌کنندگان فرصت دارند چندین بار کد خود را تصحیح کرده تا پاسخ درست برسند.برنامه‌نویسان در هر سطحی از دانش فنی و تجربه‌‌ کاری می‌توانند در این سلسله مسابقات شرکت کنند و علاوه بر محک‌زدن مهارت‌های برنامه‌نویسی خود و رقابت با سایر برنامه‌نویسان کشور، فرصت کار در بهترین شرکت‌های کشور را پیدا کنند. هدف از برگزاری کدکاپ صرفاً یک رقابت فنی بین افراد نیست، بلکه قرار است مهارت برنامه‌نویسی شرکت‌کنندگان سنجیده شود و در صنعت فناوری اطلاعات کشور مورد استفاده قرار گیرد.کدکاپ ۴ رقابتآزمون‌ها شامل سؤال‌های متنوع (ساده تا چالشی) هستند و مشخص‌کننده‌ی مهارت افراد در برنامه‌نویسی می‌باشند.داوری خودکارداوری و نمره‌دهی کدها در این مسابقه، بر عهده‌ی Quera Test Engine (سامانه‌ی خودکار داوری پروژه) است که برای اولین بار در ایران داوری خودکار پروژه‌های برنامه‌نویسی در تکنولوژی‌های روز دنیا را انجام می‌دهد. بنابراین با توجه به سرعت بالای نمره‌دهی، فرصت رفع خطاهای کد خود را دارید.تکنولوژی‌های روززبان‎های برنامه‌نویسی بخش الگوریتمی:C, C++, Java, Python, mono C#, Php, NodeJs, Perl, Go, Ruby, Obj-C, Swift, Javascript, Haskell, Pypy3مسابقات تکنولوژی:PHP/Laravel، Python/Django، Front-End/React، Data Scienceاستخدامافراد برتر در هر مسابقه در صورت تمایل، توسط Quera به شرکت آسا و بعد به شرکت‌های IT برتر دیگر برای مصاحبه و استخدام معرفی می‌شوند. کدکاپ ۳این مسابقات زمینه‌ی مناسبی برای تعامل شرکت‌های فعال در حوزه‌ی IT کشور و افراد توانمند این عرصه فراهم ساخت و شرکت‌های بسیاری به حمایت از این مسابقات پرداختند. از آمار مهم این مسابقات میتوان به این موضوع اشاره کرد که ۵۳ درصد از شرکت کنندگان از خارج از استان تهران بودند و ۱۲ درصد از شرکت کنندگان نیز دانش‌آموز بودند، که این آمار بیانگر موفقیت این مسابقه در جذب حداکثری اقشار مختلف برنامه‌نویسان جامعه است.زمانبدی مسابقاتالهام بخش زندگی ما، شرح حال کسانی بوده که استعدادها و توانایی‌های خود را به کار میگیرند تا به موفقیت‌ها و نتایجی تازه چه برای خود و چه برای دیگران و کشور دست یابند.ثبت‌نام رایگان و اطلاعات بیشتر در مورد روند مسابقات را میتوانید از سایت codecup.ir دریافت کنید.</description><category>فاطمه عامل</category><author>فاطمه عامل</author><pubDate>Tue, 17 Nov 2020 15:38:50 +0330</pubDate></item><item><title>مخزنِ مخزن‌های گیت‌هاب؛ بخش دوم: تاپ‌تِن هولدورف</title><link>https://virgool.ir/@fatemeh.amel/مخزنِ-مخزنهای-گیتهاب-بخش-دوم-تاپتِن-هولدورف-oogi4lo7inlp</link><description>امروز چهارشنبه بود، سوم اردیبهشت...روزا انقــــــدر زود میگذره که دلم میخواد از زمان جلو بزنم و بگیرمش، ولی حقیقتیه که باید قبول کنیم و ماهم پابه‌پای این گذر زمان بزرگترشیم.درست امروز ۵۷ روزه که از قرنطینه‌‌م میگذره :) صبح همینجوری که توی تختم عمیقا فرو رفته بودم، با حس سرمای یه باد خنــــــک و صدای گنجیشکا چشام رو باز کردم. دیدم مامانم بالا سرمه. پنجره رو باز کرده و میگه نمیخوای بیدارشی؟ حوصله‌م سر رفت منتظرم با تو صبونه بخورم...خوشحالم که تو این مدت دورکاری بیشتر پیش خونوادمم ولی هنوز نتونستم بین ساعتای کاری و زندگی شخصیم تعادل برقرار کنم و یهو میبینم ساعت ۱۱ شبه و من همچنان دارم کار می‌کنم.عادت کردم صبحا وقتی چشمامو باز میکنم چند دقیقه‌ای به سقف خیره بشم و فکر کنم و بعد از جام بیام بیرون. نمیدونم بقیه عادما هم اینجورین یا نه؟! فکر میکنم قراره امروز چه کارای قشنگی بکنم؟ چقد لبخند بزنم به کیا انگیزه بدم و چه طوری میتونم با کمک به دوستام و اطرافیانم یه کم بهشون حس خوب منتقل کنم.من یه دوچرخه دنده‌ای دارم که برنزی رنگه، دسته‌های صافی داره و دوره چرخاشم یه نوار زرد رنگه، که خوب مال خیلی سال پیشه ولی باهاش کلی خاطره دارم. امروز با همون دوچرخه قدیمی دوست داشتنی زدم بیرون و تصمیم گرفتم یه ساعتی رو برای خودم سیر کنم و از دیدن آدما لذت ببرم. هر کیو میدیدم بهش لبخند میزدم. اولش تعجب میکردن ولی بعدش اونام لبخند میزدن...با اینکه اصلا حوصله‌م نمیگیره ویدئوی طولانی توی اینستا ببینم ولی امروز یه تیکه از ویدئوی صالح آتشی اومد توی تایم‌لاینم. همین که اومدم رد کنم بره دیدم نوشته چه طوری سه کیلو کالباس رو به خورد یه نفر بدیم. زیر پستش رو نگاه کردم: &#34;تاحالا تجربه اینو داشتی که انقدر هدفت بزرگ باشه که مغزت بگه من نیستم و اجازه نده به سمت هدفت حرکت کنی ؟&#34; توی ویدئوش مثال جالبی از این زد که اگه سه کیلو کالباس رو به یکی بدی نمیخوره پس بهتره قسمت قسمتش کنی و بهش بدی و این یه استراتژیه به اسم کالباسی. همین روش برای خودمونم وجود داره مثلا اگه من بگم امروز میخوام ۸ ساعت کارکنم مغزم میگه اوه ۸ ساعــــــــــــت بیخیال بابا. یا اگه برنامه‌ریزی کنیم ممکنه بهش نرسیم پس بیایم بگیم ۵مین وقت میذارم و این کارو میکنم و اینجوری به مغزم کلک میزنم...خلاصه منم که امروز میخواستم تازه بشینم و برنامه‌ریزی کنم برای آخر هفته و بخش دوم پست «مخزنِ مخزن‌های گیت‌هاب» رو بنویسم، گفتم بذار فقط چند خطش رو بنویسم که الان حس می‌کنم گرم شدم و میخوام تا تهش برم.تو سری اول این پست که رسیدم به کنجکاوی کارابالو در مورد مخازن خفن برنامه‌نویسی، بعد یه کم هندونه گذاشتیم زیر بغل گیت‌هاب دوست داشتنی و یه سری ریپو بچه‌معروفی که هر دولوپری باید دنبالشون بکنه رو معرفی کردیم...حالا اینسری بریم ببینیم سیمون هولدورف که فول‌استک دولوپر هست و شعارش اینه که Programming is the best job in the world! و مقالش توی مدیوم حدود ۶هزارتا لایک خورده، برامون چه ریپوهای معروفی رو میخواد معرفی کنه.۶ ژانویه ۲۰۲۰ از زبان هولدورف: اینا ریپوهایی هستن که قطع به یقین میتونه منبع خوبی برای پیشرفت تو برنامه‌نویسی و یادگیری چیزای جدید باشه!برخلاف پست قبلی که کارابالو با کلی ذوق و تعریف شروع کرده بود، هولدورف یه راست رفته سر اصل مطلب.یه جورایی کم گوی و گزیده گوی چون دُر! پروفایلش رو که میدیدم فهمیدم آلمانیه. میگن آلمانیا قاطع، رُک و بی‌حاشیه‌ن. فکنم برای همین خیلی اهل این فانتزیا نبوده. پس ماهم برای همراهیش زودتر بریم ببینیم چی برامون داره...۱. اولین ریپوی به قول معروف آسِ Awesome با ۱۳۲هزار ستارهاین مخزن همه چی تمومه. از توسعه نرم‌افزار گرفته تا سخت افزار و مسائل بیزینسی. طوری که می‌تونید از صبح تاشب توش بگردین و یادبگیرین. بیش از ۱۷هزار پروژه توش فورک شده و توی صفحش می‌تونید پروژه‌های مربوط به توسعه فرانت‌اند و بک‌اند، علم داده، مسائل مربوط به امنیت اپلیکیشن‌ها و کلی چیزای دیگه رو که ببنید اول تعجب و بعد کیف می‌کنید.۲. ریپوی سوالات پیشرفته جاوااسکریپت Lydia Hallieخب این مخزن همونطوری که توی عنوانش می‌بینید توسط لیدیا هالی ایجاد شده، لیدیا توی ونکور زندگی میکنه و تو شرکت Avocoder مهندس نرم‌افزاره و عشق جاوااسکریپت داره. تو زمینه آموزش هم فعالیت می‌کنه. میتونید ویدئوهاش رو توی اینستاگرامش ببینید. از همه مهمتر هر روز کلی سوال جاوا اسکریپتی به این ریپو اضافه میکنه.۳. ریپوی Clean Code JavaScriptدیگه هممون اینو میدونیم که خوبه یاد بگیریم چه طوری کدهای تمیز و قشنگ بنویسیم، هم برای خودمون خوبه و هم اگه برای شرکتی کار می‌کنیم این موضوع براشون اهمیت داره. این مخزن توسط رابرت سی مارتین ایجاد شده که توش یاد میده چه طوری کدهامون رو تمیز بنویسیم؛ مخصوصا کدهای جاوااسکریپتی رو. این ریپو بیش از ۳۵هزار ستاره و ۴هزار فورک داره.۴. ریپوی گِرِیت Free for Devاین مخزنِ به قول هولدورف بزرگی که ۳۲هزارتا ستاره داره، همه چیش رایگانه و ایجاد شده تا به کمک دولوپرها بیاد که بتونن نرم‌افزارهایی تو زمینه SaaS, PaaS, IaaS و چیزای مشابه بهشون رو پیدا کنن. البته اینم بگم که سرویس‌هایی برای ایمیل، CI / CD، DNS، هاستینگ و خیلی چیزای دیگه رو هم می‌تونید توش پیدا کنید.۵. ریپوی کتاب راهنمای Tech Interviewمصاحبه‌ کلا تو هر رشته‌ای چم و خم خودش رو داره، این مخرن هم راهنمای خوبی برای مصاحبه‌های فنیه. اگه دنبال کار هستین و دوست دارین این روند رو برای خودتون شبیه سازیش کنید حتما بهش سر بزنید. موضوعات جالبی مثل چه طوری برای مصاحبه برنامه‌نویسی آماده شیم، چیت شیت مصاحبه و بایدها و نبایدها، ویژگی‌های که قالب‌های مصاحبه فنی می‌تونن داشته باشن و موضوعات دیگه که باعث شده این ریپو ۴۱هزارتا ستاره بگیره.۶. ریپوی یادداشت‌های Effective Engineerاسم این مخزن خیلی جالبه و شعارش اینه که مهندس واقعی کسیه که کارش رو درست به نتیجه میرسونه. همینجوری که داشتم ریپوش رو بالا پایین میکردم خیلی نکات کاربردی و جذاب دیدم مثلا اینکه چه طوری روند یادگیریمون رو بهبود بدیم، چه طوری اولویت‌بندی داشته باشیم و پیشرفتمون رو اندازه بگیریم. واقعا ریپوی کاملیه و کلی بلاگ خوب هم توش معرفی شده.۷. ریپوی معرفی لیستی از منابع رایگان برنامه‌نویسیخب هیچ مقاله‌ای بدون معرفی منبع اونم از نوع رایگانش صفا نداره. این مخزن ۱۴۵هزارتا ستاره گرفته و بیش از ۳۵هزارتا فورک رو پروژه‌هاش شده. نکته جالبش اینه که توسط ویکتور فلدر از استک‌اورفلو به گیت‌هاب کلون شده و بخاطر محتوای خوبش خیلی معروفه. اگه دوست دارین یادبگیرین، کلی محتوای آموزشی به طور کتاب و پادکست و سایت و مقاله داره که خیلی به درد بخورن.۸. ریپوی پر از ایده app-ideasمعمولا دیدین دلمون میخواد یه چیزی بسازیم ولی هیج ایده‌ای در موردش نداریم؟ این ریپو لیستی از ایده‌های طبقه‌بندی شده داره که میتونه خیلی کمکمون کنه وتا الان ۱۸هزار تا ستاره گرفته.۹. ریپوی معرفی بهترین سایت‌های برنامه نویسییادگرفتن برنامه‌نویسی و کد زدن میتونه یه بخش از وظایف یه دولوپرباشه، به روز کردن دانش و اطلاع از خبرهایی که حول تکنولوژی‌ها و زبان‌های برنامه‌نویسی میاد هم یه سمت دیگه. این ریپو لیستی از سایت‌هایی که خوبه بهشون سر بزنیم رو معرفی کرده و به روزش میکنه.۱۰. ریپوی سرشار از پروژه‌های اوپن سورس awesome-for-beginnersآخرین ریپویی که توی این مقاله بهش اشاره شده، از اسمش پیداست که می‌تونید توش کلی پروژه اوپن ببینید و یاد بگیرید. تقریبا تو همه سطح‌ها از مبتدی گرفته تا پیشرفته و از همه زبان‌های برنامه‌نویسی توش پروژه پیدا میشه. حتما بهش سر بزنید.خب، هولدورف هم با آرزوی موفقیت برای همه دولوپرا این مقاله رو تموم کرد. کلا ریپازیتوری‌ها منبع خوبی برای آشنایی و شروع یادگیری برنامه‌نویسی هستن.فرقی نمیکنه چی کد بزنیم و یا تو چه زمینه‎‌ای کار کنیم بالاخره یه سفره‌ای پهنه و می‌تونیم همه دورهم چیزای جدید یاد بگیریم :) پس وقت رو از دست ندیم...اگر شما هم ریپازیتوری خوبی رو میشناسین زیر همین پست معرفی کنین.پایان بخش دوم</description><category>فاطمه عامل</category><author>فاطمه عامل</author><pubDate>Fri, 24 Apr 2020 00:19:22 +0430</pubDate></item><item><title>مخزنِ مخزن‌های گیت‌هاب؛ بخش اول: کنجکاوی کارابالو</title><link>https://virgool.ir/@fatemeh.amel/مخزنِ-مخزنهای-گیتهاب-بخش-اول-کنجکاوی-کارابالو-tzblli1psepi</link><description>داشتم با خودم فکر میکردم که این شب‌ها در عین تلخی دوران قرنطینه و سوت و کور بودنشون چقدر میتونن قشنگ و پر از حس خوب باشن... آسمون قرمز و هوای بارونی، برگای سبزی هم که تازه دراومده بودن روشون نم بارون نشسته و تو نور کم سوی چراغ کوچه برق میزنن ...ساعت حدود 2 شبه! کنار پنجره با یه لیوان چای نشستم. این اواخر کمتر وقت میکنم که چیزی بخونم و یاد بگیرم البته شاید وقت نکردن بهونه‌ای باشه برای حوصله نداشتن. درسته ممکنه همیشه یه وقتایی بی‌حوصله باشیم، ناامید باشیم، ولی خب دیگه باید از یه جایی شروع کرد...امروز ۱۱ فروردینه و درست ۳۵ روزه که از قرنطینه من میگذره. کنار پنجره سرم رو میگیرم بالا و به آسمون قرمز نگاه میکنم، یه نفس عمیق میکشم، سردی هوا رو روی صورتم حس می‌کنم و ترکیبی از بوی بارون، بوی نم، بوی خاک هم همراه با همون نفس عمیقه رو به داخل فرو میبرم :)خب زندگی برای همه ما جریان داره، تو هر شرایطی تو هر زمانی، کی می‌دونه چی میشه و قراره چی پیش بیاد.همینطور که داشتم مقاله‌هایی رو که تو Trello گذاشته بودم تا یه روز مبادایی بخونم رو بالا پایین می‌کردم، رسیدم به معرفی یه سری ریپازیتوری‌های گیت‌هاب که به اصطلاح &#34;هر دولوپری چه کوچیک چه بزرگ چه پیر و چه جوون باید تو زندگیش یه‎بار دیده باشه چه برسه به اینکه فالو کنه&#34;. یادش بخیر یه زمانی این ریپوها زندگی من بود. الان با مرورشون کلی خاطره خوب برام زنده میشه...روزایی که از بهترین دوران زندگی من بود. شاید یه روزی در مورد بهترین‌های زندگیم نوشتم که بشه یادگاری :)خب برگردیم به گیت‌هاب دوست داشتنی و مخازنش..چند وقت پیش یه جا خوندم که گیت‌هاب، فیس‌بوک دولوپرهاست. واقعا هم این تشبیه برازندشه، بیشتر از  ۳۷ میلیون کاربر و بیشتر از ۱۰۰ میلیون ریپازیتوری محبوبیت این سایت رو نشون میده. مقاله‌ای که تو سایت medium خوندم مقدمش این طوری شروع شد:۲۷ مارس از زبان کارابالو نویسنده این مقاله:ممکنه اسم انجمن freecodecamp به گوشتون خورده باشه، این انجمن در هفته تعداد زیادی داده تولید میکنه و یکی از فعال‌ترین سیستم‎‌های چت روم رو در بر داره. هزاران نفر تو این چتروم در مورد تکنولوژی‌های مختلف صحبت میکنن و با هم یادمیگیرن به هم کمک میکنن. این هفته یکم کنجکاو شدم که بگردم دنبال ریپوزیتاری‌هایی که بیشترین بحث در موردشون شده و بیشترین مطالعه روشون. (آفرین چه فعال، الکی نیست اونا خارجین :)و بالاخره از بین هزاران ریپازیتوری که توسط برنامه‌نویس‌ها منشن شده بود چندتا از بهترین‌هاش رو انتخاب کردم. ۱. اولین ریپوی معروف به اسم FreeCodeCampاین انجمن یکی از بهترین کامیونیتی‌های اوپن سورس و آنلاینه که هم میتونین کدنویسی یاد بگیرین و هم به بهبود کدنویسی دیگران کمک کنین. این انجمن تو صفحه گیت‌هابش بیش از ۳۱۰هزار استار گرفته و بیش از ۲۳هزار فورک روی پروژه‌هاش انجام شده. تو این انجمن هر هفته موضوعات جدید قرار میگیره و یه جامعه بزرگ برای انتقال تجربه و بهبود کدنویسیتون خواهد بود. اگه میخواین با میلیون‌ها نفر یادبگیرین و همکاری کنین این ریپازیتوری رو دنبال کنین.۲. ریپوی YouDontKnowJS از اسمش معلومه که میخواد بگه منبع داریم تا منبعاین طور که مشخصه کتاب جاوا اسکریپت کایل سیمپسون بدون شک یکی از بهترین منبع‌ها برای جاوا اسکریپت و سری کتاب‌هاییه که به مکانیزم‌های اصلی زبان جاوا اسکریپت اشاره میکنه. سیمپسون عاشق جاوا اسکریپته خیلی مقاله‌های خوبی تو مدیوم داره. تو توییتر هم فعاله، علاوه بر اینا کارگاه‌های آموزشی هم برای شرکت‌های مختلف برگزار میکنه. این ریپو هم یکم دیگه بگذره ۱۲۰هزارتا ستاره میگیره و فورکاش ۲۵هزارتایی میشه :)۳. ریپوی پر از منبعِ و خفنِ Free Programming Booksاگه دارین و یا میخواین کدنویسی تو زمینه‌های مختلف رو یادبگیرین این مخزن یکی از ریپازیتوری‌هاییه که به طور مداوم و رایگان آپدیت میشه. این ریپازیتوری مجموعه کامل و سازمان‌یافته‌ای از کتاب‌ها، پادکست‌ها، وب‌سایت‌ها و ابزارهای برنامه‌نویسیه که اگه بخواین دقیق‌تر بگیم چیا داره، میتونین توش در مورد الگوریتم‌ها، ساختمان داده، یادگیری ماشین، زبان‌های برنامه‌نویسی، سیستم عامل‌ها و ...بخونین و یاد بگیرین. جالبه بدونین این محتوا اول تو سایت Stackowerflow بوده ولی بعدش دوستی یه اسم ویکتور فلدر برای نگه‌داری و به روز رسانی‌های مداوم به گیت‌هاب منتقلشون میکنه. ستاره‌هاش ۱۳۹هزارتا و فورکش هم  ۳۴هزار تاییه و مطالب مربوط به سایت‌های Udemy ، edX ، Udacity هم توش وجود داره.۴. ریپوی Coding Interview Universityاین ریپازیتوری توسط Googley as heck زمانی که خودش رو برای مصاحبه با گوگل آماده میکرده مستند شده و شامل پیش‌نیازهایی برای گذروندن تست‌های گوگل هست. نکته جالبی که وجود داره، با اینکه خیلی تلاش کرد تو گوگل استخدام شه، نشد و الان در آمازون مشغول به کاره. کنار همه اینا منابع زیادی برای یادگیری مباحث علوم رایانه در کنار مهندسی نرم‌افزار وجود داره. و این ریپو ۱۰۴هزار ستاره و بیش از ۳۰هزار فورک در گیت‌هاب گرفته.۵. ریپوی Developer Roadmap یه راهنمای خوب و کامل تو ۲۰۲۰خب این مخزن همونطور که از اسمش پیداست نقشه راه ورود به دنیای برنامه‌نویسی رو در اخیتارمون میذاره. یکی از بهترین ریپازیتوری‌ها برای دانشجویان و کسایی هست که نمیدونن دقیقا از کجا شروع کنن و یا چه فن‌آوری‌هایی به روز و به درد بخوری رو یاد بگیرن. علاوه بر اینا یک نمودار کامل از کل چیزایی که باید بدونین و یادبگیرین رو قرار داده که میتونین خیلی ساده و راحت مسیرتون رو انتخاب کنین.ستاره‌هاش: ۹۹هزارتا و فورک : ۱۶هزارتایی۶. و اما پایتون دوست داشتنی Awesome Pythonمشخصه این ریپو مخصوص طرفدارای پایتونه که توش لیستی از فریمورک‌ها، کتابخونه‌ها، نرم‌افزارها، پادکست‌ها و منابع مربوط به یادگیری زبان پایتون هست.ستاره‌هاش داره میره به ۹۰هزارتا و فورک پروژه‌هاش نزدیک به ۱۶هزارتاس.۷. مخزن Public APIsخب این ریپو واقعا یه مخزن واقعی برای API و قطعا اگه برنامه نویسی میکنین پس با API ها هم سرو کار دارین دیگه. این ریپازیتوری لیستی از APIهایی که به درد میخورن رو قرار میده و به طور مداوم آپدیتشون میکنه، کاملا رایگان هست و به دسته‌بندی‌های مختلفی تقسیمشون کرده که راحت‌تر بتونین استفاده کنین. این ریپو ۷۳هزار ستاره و نزدیک به ۹هزار فورک تو گیت‌هاب از آن خودش کرده.۸. رپیوی اوپن سورس Tensorflowاگه تو حوزه یادگیری ماشین و یا کار با داده کار میکنین، این ریپازیتوری دارای یه کتابخونه متن باز هست که برای محاسبات ریاضی، نمودارها و ... استفاده میشه و توسط تیم Google Brain ساخته شده. زبان پایتون توش استفاده میشه و برای دوستداران این حوزه پیشنهاد میشه. استار نصیب شده برای این ریپو ۱۴۳هزار و بیش از ۸۰هزار فورک تو گیت‌هاب گرفته.خب همینطور که دارم میگردم ریپازیتوری‌هایی رو پیدا میکنم که خیلی زیاد و خفن هستن و باید تا صبح به نوشتنشون ادامه بدم... برای اینکه بشه راحت معرفیشون کرد دسته بندیشون میکنم که توی چند پست دیگه بشه جداگونه معرفیشون کرد. مثلا ریپازیتوری‌های مخصوص Mobile Developmet، Web Development و حوزه دیتا رو هم با کمک هم میذاریم...زمان طلاست ازش استفاده کنیم. طوری داره ازمون فرار میکنه و میزنه جلو که با هیچ چیزی نمیتونیم نگهش داریم. پس به هم یادبدیم و یاد بگیریم :)اگر شما هم ریپازیتوری خوبی رو میشناسین زیر همین پست معرفی کنین.پایان بخش اول</description><category>فاطمه عامل</category><author>فاطمه عامل</author><pubDate>Wed, 01 Apr 2020 14:33:30 +0430</pubDate></item><item><title>بهترین افزونه‌های کاربردی وردپرس به همراه نکات فنی و امنیتی</title><link>https://virgool.ir/wptips/بهترین-افزونههای-کاربردی-وردپرس-به-همراه-نکات-فنی-و-امنیتی-ltb1ug25l4ow</link><description>ممکن است بعد از پیشنهاد استفاده از سیستم مدیریت محتوا وردپرس بجای کدنویسی اختصاصی به یک دولوپر ارشد و یا هد فنی با همچین واکنشی روبه‌رو شوید :))اجازه بدید قبل از اینکه وارد این داستان شویم نگاهی به داستان پیدایش وردپرس بیندازیم...داستان از اینجا شروع شد که «مت چارلز مولنوگ» که متولد ۱۱ ژانویه ۱۹۸۴ در هوستون تگزاس بود، مدتی به مطالعه ساز ساکسیفون علاقه‌مند شده بود و تصمیم داشت در آموزشگاه بازیگری و هنرهای نمایشی حضور پیدا کند. مولونگ بعد از سفری که به واشنگتن داشت، عکس‎‌هایی گرفته بود که دنبال جایی میگشت تا بتواند آنها را در وبلاگی منتشر کند. اولین سیستمی که مولنوگ برای انتشار عکس و وبلاگ‌نویسی از آن استفاده کرد، سیستم b2/cafelog که یک سیستم مدیرت محتوا بر پایه زبان PHP بود. همین تجربه باعث شد که به این فکر بیفتد شاید بهتر باشد برای وبلاگ‌نویسی نرم‌افزاری به‌روز و سازگار با استانداردهای وب که نیازهایش را برآورده کند، بنویسد. او در ژانویه ۲۰۰۳، در وبلاگش این مطلب را اعلام کرد.مولنوگ سریعا با شخصی به نام «مایک لیتل» تماس گرفت و با مطرح کردن قضیه از او خواست تا  با کمک هم، شروع به نوشتن وردپرس با استفاده از b۲ کنند. توسعه دهنده اصلی b۲ یعنی میشل والدریجی هم به زودی به جمع دو نفره آن‌ها اضافه شد. خوب بیشتر از این سرتان را درد نیاورم اینطور شد که وردپرس به وجود آمد و در حال حاضر بیش از ۷۶ میلیون وب سایت در جهان با این CMS راه اندازی شده‌است.سوالی که همیشه به وجود می‌آید این است که برای توسعه وبسایت از سیستم‌های مدیریت محتوایی مثل وردپرس استفاده کنیم و یا کدنویسی اختصاصی را انتخاب کنیم؟برگردیم به گیف بالا که نتیجه پیشنهاد استفاده از سایت‌های وردپرس و کدنویسی شده است :))پاسخ این سوال کاملا به نیازهای شما از وبسایتی که می‌خواهید برای کسب و کار و یا حتی وبلاگ شخصی داشته باشید بستگی دارد. وردپرس رایگان و متن باز است و می‌تواند در کوتاه‌ترین زمان ممکن خواسته‌های شما را از ساخت یک وبسایت با ویژگی‌های روتین مورد نیازتان برطرف کند. وردپرس قابلیت اجرا برروی تقریباً تمام وب هاست‌های موجود را دارد. از ویژگی‌های دیگر می‌توان به ایندکس پذیری قوی، قابلیت بروزرسانی، جود افزونه های متفاوت و سرعت بالا و ...اشاره کرد. اگر میخواهید در کوتاه‌ترین زمان وبسایتی با امکانات داشته باشید، وردپرس انتخاب خوبی است.در ادامه در مورد سه بخش زیر به نکاتی اشاره کنیم:معرفی بهترن افزونه‌های کاربردی و ضروری وردپرسبررسی نکاتی برای افزایش امنیت سایت وردپرسرعایت نکات مهم فنی در حین توسعه وردپرسمعرفی بهترنی افزونه‌های کاربردی و ضروری وردپرسقطعا می‌دانید افزونه‌ها از مهمترین اجزای سایت‌های وردپرسی هستند. در واقع، افزونه‌ها می‌توانند یک سایت بی‌روح و خسته‌کننده را به سایتی زیبا، جذاب و کاربردی تبدیل کنند. در ادامه به معرفی چند پلاگین یا همان افزورنه پرکاربرد و ضروری وردپرس می‌پردازیم:۱. افزونه WP Rocket این افزونه یکی از بهترین‌ها برای افزایش سرعت سایت‌های وردپرسی است که می‌تواند زمان لود سایت شما را کاهش بدهد و حتی از پهنای باند شما کاسته و در هزینه‌های شما هم صرفه جویی کند.  تنظیمات این افزونه بسیار سریع و راحت است. برای اینکار نیازمند هیچ گونه دانش برنامه نویسی نخواهید بود. حفظ کش صفحات این مورد باعث افزایش سرعت بارگذاری صفحات، بهبود عملکرد در موتورهای جستجو و برقراری ارتباط در سایت می شود.۲. افزونه Soliloquy Slider معمولا استفاده از اسلایدر، سرعت بارگذاری سایت را کاهش می‌دهد اما افزونه Soliloquy Slider برخلاف سایر افزونه‌های اسلایدر که ساختار و تنظیمات پیچیده‌ای دارند، ساده بوده و استفاده از آن راحت است. این افزونه حرفه‌ای و بسیار کاربردی دارای قالب‌های متعدد می‌باشد که می‌توانید از آن برای یک اسلایدر زیبا و طبق میل و سلیقه شخصی خود طراحی و پیاده سازی نموده و آن را در وبسایت خود منتشر نمایید.۳. افزونه Backup Buddy افزونه Backup Buddy از کل فایل‌‌های وردپرس بکاپ گرفته و به شما اطمینان می‌دهد که از تمام فایل‌های وب سایت خود یک نسخه پشتیبان برای مواقع لازم دارید. این پلاگین، سایت شما را در یک فضای کلود ذخیره می‌کند. تنها با یک بار نصب و تنظیم نمودن این پلاگین، خیال شما برای همیشه از بکاپ‌گیری سایت آسوده خواهد بود. ۴. افزونه Yoast SEO یکی از افزونه‌های اصلی در حوزه سئوی وردپرس است که این افزونه قوانینی را در توابع خود جای داده که نتیجه نهایی موردپسند ربات‌های گوگل و کاربران قرار گیرد. شاید با شنیدن نام Yoast SEO گزینه‌های دیگری مانند WordPress SEO یا SEO Journal  نیز به ذهن بیایند، اما هیچ کدام از آن‌ها به خوبی Yoast SEO نیستند!۵. افزونه Login Lockdown افزورنه Login Lockdown یکی از مهم‌ترین افزورنه‌ها است. این پلاگین سایت شما را از فعالیت‌های ناخواسته حفظ می‌کند. به عبارت دیگر، حتماً می‌دانید که هر کسی می‌تواند بارها‌ و بارها با استفاده از پسوردهای تصادفی تلاش کند تا به سایت شما وارد شود و هیچ سیستم پیش‌فرضی برای متوقف نمودن ربات‌ها و کامپیوترهایی که در حال تلاش برای هک سایت شما هستند وجود ندارد. به همین خاطر است که باید از پلاگین Login Lockdown استفاده کنید تا هیچ‌کس بدون داشتن کلمۀ عبور، امکان ورود به سایت شما را نداشته باشد.۶. افزونه Google XML sitemap وجود نقشه سایت، موتورهای جستجو مانند گوگل را راهنمایی می‌کند تا صفحات سایت شما را به صورت بهتر شناسایی کرده و همچنین از ایجاد صفحات جدید و تغییرات در صفحات قدیمی مطلع شوند.۷. افزونه Contact Form 7 پلاگینی است که تاکنون مورد استفاده میلیون‌ها کاربر وردپرسی قرار گرفته است و این در حالی است که هیچ پلاگین دیگری در راحتی طراحی و کاربرد، به پای آن نمی‌رسد. با استفاده از این پلاگین می‌توانید هر تعداد فیلد که خواستید را به فرم خود اضافه کنید. این پلاگین بسیار سبک بوده و سرعت بارگذاری سایت را کاهش نمی‌دهد. در یک کلام، Contact Form 7 یک فرم‌ساز ساده است که درخواست‌ها را دریافت نموده و آن‌ها را مستقیماً به ایمیل شما ارسال می‌کند.بررسی نکاتی برای افزایش امنیت سایت وردپرسادمین پنل وردپرس، یکی از بخش‌هایی است که هکرها تلاش می‌کنند به آن دسترسی پیدا کنند. و درصورتی که بتوانند به عنوان ادمین وارد سایت شوند، یعنی به تمامی قسمت‎‌های پیشخوان مدیریت سایت دسترسی داشته باشند میتوانند هر تغییری و مشکلی را ایجاد کنند. به منظور کاهش میزان آسیب‌پذیری احتمالی سایت، می‌توانید امنیت ادمین پنل وردپرس را با رعایت نکات زیر بهبود ببخشید:۱. نام کاربری و رمزعبور منحصربه‌فرد : سعی کنید از نام کاربری پیش‌فرض «admin» هرگز استفاده نکنید و با استفاده از پلاگین‌هایی مانند Username Changer، نام کاربری امن‌تری انتخاب کنید. مثلا از انتخاب کلمه «administrator»، نام سایت و یا نام خودتان خودداری کنید. از انتخاب رمزعبوری مشابه نام کاربری، کلماتی که به اطلاعات شخصیان نزدیک است و یا کلماتی ساده با تعداد حروف کم نیز اجتناب کنید و کاراکترها را به صورت اتفاقی به عنوان رمزعبور انتخاب کنید.۲. استفاده از فناوری احراز هویت دو مرحله‌ای: با استفاده از (Two-factor authentication (2FA برای ورود به سایت، علاوه بر نام کاربری و رمزورود، کدی منحصر‌به‌فرد که معمولا از طریق اس‌ام‌اس یا یک اپلیکیشن ارسال می‌شود، استفاده کنید۳. هویت کاربر را بررسی کنید: استفاده از فرم‌های reCAPTCHA که از کاربر درخواست می‌کنند تا نوشته‌ای که در تصویر می‌بینند را ارسال کنند، یک روش بسیار مفید برای پیشگیری از حملات بات‌نت‌ها برای ورود به سایت است. چون نمی‌توانند به طور خودکار این قسمت از مرحلهٔ ورود به سایت را انجام دهند.۴. حفاظت از پسورد با wp-login.php: برای اینکار می‌توانید از لاگین سمت سرور قبل از اینکه صفحه ادمین پنل نشان داده شود درخواست داشته باشید.۵. در انتخاب شرکت هاستینگ دقت کنید: شرکت‌های متعددی وجود دارند که به صورت خودکار جلوی حملات DoS و DDoS و دیگر انواع آسیب‌پذیری‌ها را می‌گیرند که بهتر است از آنها میزبانی وب را تهیه کنید.۶. اجازهٔ دسترسی به فایل‌ها و فولدرها را بررسی کنید: حتما از درستی دسترسی فایل‌ها و پوشه‌های وردپرس اطمینان حاصل کنید به طوری که این کار از سوء‌استفادهٔ هکرها از فایل‌هایی که از امنیت بالایی برخوردار نیستند، جلوگیری به عمل می‌آورد. پوشه‌های وردپرس باید دارای پرمیشن 755 و فایل‌های وردپرس باید دارای پرمیشن 644 باشند که این از یک هاست به هاست دیگر متفاوت است.توجه کنید تحت هیچ شرایطی مجوز دسترسی به هیچ پوشه‌ای را به 777 تغییر ندهید و اگر دارای دسترسی شِل هستید، می‌توانید با اجرای این دستورات از امنیت وردپرس اطمینان حاصل کنید:find /path/to/your/wordpress/install/ -type d -exec chmod 755 {} \;&#xA;find /path/to/your/wordpress/install/ -type f -exec chmod 644 {} \;۷. ایمن‌سازی سمت سرور: مطمون شوید که کاربر دیتابیس شما تنها به پرمیشن‌های SELECT ،INSERT ،UPDATE و DELETE دسترسی دارد به علاوه اینکه برای دیتابیس از نام‌کاربری و رمزعبور قوی استفاده کنید و در نهایت با اضافه کردن کد زیر به فایل wp-config.php، اجازهٔ ویرایش فایل در سمت سرور را از کاربران بگیرید:define(&#39;DISALLOW_FILE_EDIT&#39;, true);رعایت نکات مهم فنی در حین توسعه وردپرسخودداری از نوشتن کلیه کدهای جاوااسکریپت مربوط به قالب سایت در یک فایلنوشتن همه کدهای جاوااسکریپت در یک فایل با نام‌هایی مثل main.js و یا theme.js مستقیماً تأثیر منفی روی سرعت لود سایت دارد. و ممکن است حجم نهایی فایل‌های جاوااسکریپت به 1 مگابایت هم برساند. جدا کردن اسکریپت‌های هر صفحه باعث افزایش عملکرد و در نهایت بهبود تجربهٔ کاربری میشود امکان استفاده از توابعی نظیر ()wp_dequeue_script را فراهم می‌کند.استفاده از اسامی ‌مناسب برای متغیرها، توابع و غیرهزمانی که میخواهید برای متغیرها، کلاس‌ها و توابع نام‌گذاری کنید، از نام‌هایی استفاده کنید که مرتبط باشند و محتویات آن‌ها را از روی نام‌هایشان مشخص باشد و احتمال وجود فایلی با نام مشابه نیز بسیار کم باشد. استفاده از امکانات پیش‌فرض و کِرنِل وردپرسممکن است از افزونه‌هایی استفاده کنیم که دقیقا وردپرس هم آن‌ها را به صورت پیش‌فرض ارائه کرده است. این کارباعث افزایش حجم فایل‌های وب‌سایت می‌شود، و اگر افرونه‌ها در آینده آپدیتی براییشان ارائه نشود سایت به امکانات جدید دسترسی پیدا نخواهد کرد پس تا آنجا که امکان دارد از امکانات پیش‌فرض وردپرس استفاده شود تا سرعت و امنیت در بهترین حالت ممکن باشند.در نظر گرفتن مقدار TRUE برای متغیر WP_DEBUG برای اینکه خطاها برای عموم نشان داده نشوند مقدار WP_DEBUG  به صورت پیش‌فرض false در نظر گرفته شده است که بهتر است این مقدار true در نظر گرفته شود تا تمامی خطاها و هشدارها برای برنامه‌نویس نشان داده شوند.استفاده نکردن از پَسوند php. به جای css. و js.نوشتن کدهای مرتبط با رنگ‌ها و فونت‌ها در فایلی همچون style.php و ذخیرهٔ آن‌ها در دیتابیس و سپس فراخوانی آن با استفاده از کدی مثل آنچه در ادامه مشاهده می‌کنید، می‌تواند تأثیر بسیار بدی بر عملکرد و سرعت یک سایت وردپرسی داشته باشد:&lt;link rel=&#39;stylesheet&#39; type=&#39;text/css&#39; href=&#39;css/style.php?ver=1&#39; /&gt;علاوه بر این، نوشتن کدهای CSS در کنار متغیرهای PHP موجب کاهش خوانایی کدها شده و انجام اصلاحات روی آن‌ها را نیز با مشکل مواجه می‌کند.جلوگیری از دسترسی مستقیم به فایل‌ها با استفاده از لینک صفحات تصور کنید آدرس حذف کردن یک مطلب در سایت شما به صورت زیر است:http://example.com/wp-admin/post.php?post=123&amp;action=trashاگر کاربری بتواند به این آدرس دسترسی پیدا کند، می‌تواند به جای شما مطالبی را از سایت حذف نماید. برای حل این مشکل می‌توان از یک توکن رندوم به صورت زیر استفاده کرد:http://example.com/wp-admin/post.php?post=123&amp;action=trash&amp;_wpnonce=b192fc4204در این صورت، اگر کاربر دیگری بخواهد از آن استفاده کند، ارور 403 Forbidden برای وی نشان داده می‌شود.استفاده نکردن از توابع و کدها بدون اطلاعات دقیق از نحوه عملکرد آن‌هادر بسیاری از موارد دولوپرها برای حل مشکلات خود در اینترنت جستجو می‌کنند و به نتایجی هم دست پیدا می‌کنند اما این در حالی است که کدهایی که یافته‌اند را بدون بررسی و آگاهی از عملکردشان بلافاصله در وردپرس کپی می‌کنند! از جمله ایراداتی که این روش حل مسئله به همراه دارد، احتمال ایجاد تفاوتی ساختاری و یا حتی تداخل کد کپی‌شده با سایر کدهای نوشته‌شده در پروژه است.جمع بندیدر این مطلب سعی کردیم به بررسی و معرفی پلاگین‌هایی که برای سایت‌های وردپرس کاربرد دارند و یا استفاده از آنها می‌تواند عملکرد سایتتان را بهبود بخشد، بپردازیم. همیشه هم به یاد داشته باشیم که پیشگیری بهتر است درمان است و با رعایت نکات فنی و امنیتی، آسیب پذیری سایتمان را به حداقل برسانیم.اگر استفاده از پلاگین‌های دیگری را ضروری میدانید حتما در زیر این پست به اشتراک بگذارین و یا اگر نکات امنیتی و فنی دیگری میشناسید حتما پیشنهاد دهید :))</description><category>فاطمه عامل</category><author>فاطمه عامل</author><pubDate>Fri, 13 Dec 2019 19:09:43 +0330</pubDate></item><item><title>گزارش اولین سری رویداد Traceway در زمینه هوش مصنوعی و یادگیری ماشین</title><link>https://virgool.ir/Quera-Mag/گزارش-اولین-رویداد-traceway-در-زمینه-هوش-مصنوعی-و-یادگیری-ماشین-tqcdrgbdzl2l</link><description>سری رویدادهای Traceway قرار است فضایی برای انتقال تجربه و شبکه‌سازی توسعه‌دهندگان ارشد کشور باشد. در هر رویداد توسعه‌دهندگان ارشد سازمان‌های ایرانی و بین‌المللی تجربیات خود را با سایر توسعه‌دهندگان به اشتراک خواهند گذاشت و با تشریح تجربیات فنی خود در طراحی و پیاده‌سازی فناوری‌های روز دنیا، مسیر پیش روی سایر سازمان‌ها را در استفاده از هر فناوری روشن‌تر خواهند کرد.دوره اول:‌ هوش مصنوعی و یادگیری ماشیندوره اول رویدادهای Traceway چهاردهم آذرماه در دانشگاه صنعتی شریف برگزار شد. تمرکز این دوره بر روی «هوش مصنوعی و یادگیری ماشین» بود و رویداد از سه بخش اصلی تشکیل می‌شد:بخش ۱، ارائه‌های بلند: در این بخش توسعه‌دهندگانی از چهار شرکت دیجی‌کالا، مسیریاب بلد، کافه‌بازار و تپسل، تجربیات خود را در استفاده از «هوش مصنوعی» در محصولات‌شان به تفصیل بیان کردند.بخش ۲، ارائه‌های کوتاه: در این بخش سه شرکت سلام سینما، ویرگول و واکاویک در قالب Ignite (سخنرانی‌های کوتاه ۵ دقیقه‌ای) به معرفی بخش فنی محصول خود پرداختند.بخش ۳، شبکه‌سازی: این بخش برای ایجاد ارتباط بین مهمانان رویداد با یکدیگر، و در ادامه پرسش‌وپاسخ با سخنرانان در قالب یک بازه زمانی ۱ ساعته صورت گرفت.اگر به دیدن سخنرانی‌های این رویداد علاقه دارید می‌توانید از طریق این لینک در لحظه‌نگار و با استفاده از کد تخفیف virgool_user به ویدئوهای ضبط شده دسترسی داشته باشید.خلاصه‌ای از ارائه‌های اصلی رویدادخلاصه ارائه ۱. عباس حسینی از شبکه تبلیغات موبایلی تپسلعباس حسینی در Trace Way شرح داد که چگونه تپسل با پیش‌بینی رفتار کاربران در مواجهه با هر آگهی، مرتبط‌ترین تبلیغ را به هر کاربر نمایش می‌دهد.اکوسیستم تبلیغات به این صورت است که همیشه گروهی از تبلیغ‌دهنده‌ها را داریم که می‌خواهند تبلیغ خودشان را نشان دهند و مخاطبان بیشتری را بدست آورند، و از طرفی رسانه‌هایی را داریم که میخواهند از طریق این تبلیغات درآمدزایی داشته باشند. چالش اصلی این است که این دو گروه به صورت یک‌به‌یک نمی‌توانند با هم ارتباط برقرار کنند. DSP یا به عبارتی Demand Side Platformها بسترهایی هستند که به تبلیغ‌دهنده‌ها سرویس می‌دهند و هدفشان این است که با کمترین هزینه و بهترین حالت بتوانند تبلیغ‌دهنده‌ها را به اهدافشان برسانند. از طرفی SSPها یا به عبارتی Supply Side Platformها به نمایش‌دهنده‌ها متصل می‌شوند و سعی می‌کنند با بالاترین قیمت فضای تبلیغاتی را به فروش برسانند.چالش اصلی که در این کار وجود دارد این است که این پلتفرم‌ها می‌خواهند از تبلیغ‌دهنده کمترین هزینه را بگیرند و به نمایش‌دهنده بیشترین درآمد را بدهند. برای برطرف کردن این مشکل از مکانیزم Exchange استفاده شده است به این ترتیب که داخل Exchange مزایده‌ای برگزار می‌شود که طبق آن مکانیزم تبلیغ به جایگاه‌ها فروخته میشود.اگر بخواهیم به طور دقیق‌تر بیان کنیم، وقتی یوزر وارد یک صفحه می‌شود و آن صفحه هم یک جایگاه تبلیغاتی دارد، در این لحظه یک درخواست به گوگل ارسال می‌شود. گوگل در این لحظه به DSPهای مختلفی که به آن متصل هستند این خبر را می‌دهد. از طرفی DSPها باید با استفاده از DMPها (Data Management Platform) یکسری مشخصات از کاربر را جمع آوری کنند تا از علایق کاربر باخبر شوند. سپس توسط یک مزایده تبلیغ در جایگاه مشخصی قرار می‌گیرد.پس از این معرفی اولیه، عباس حسینی درباره موضوعاتی مانند DSP Turnover Rate، مکانیزم‌ها و فرمول‌های یادگیری ماشین و روش‌های Deep و Factorization Machines برای پردازش و مدیریت Requestهای شبکه‌های تبلیغاتی صحبت کرد.خلاصه ارائه ۲. علی چلمقانی از تیم هوش مصنوعی کافه‌بازارعلی چلمقانی محصول پردازش زبان‌های طبیعی (NLP) کافه‌بازار را تشریح کرد. استفاده‌هایی که از این محصول در «چت دیوار» شده و نتایجی که بعد از آن در پی داشته است.علی چلمقانی در ابتدا به ساختار تیم‌های کافه بازار در سه محصول اصلی بازار، دیوار و بلد اشاره کرد که هر کدام دارای زیر محصول و دارای تیم‌های جدا هستند.علی چلمقانی سپس در مورد چت دیوار و زمان انتشار این محصول صحبت کرد و نشان داد که چه‌طور با تحلیل محتوایی متنی چت دیوار و با دسته‌بندی داده‌ها، توانستند میزان موفقیت آگهی‌های دیوار را افزایش دهند. یکی از چالش‌ها در این راستا این بود که آماده کردن دیتاست در حوزه چت کار آسانی نبود و نمی‌توانستند مدلی از داده‌ها به وجود بیاورند تا به Intent Classification چت برسند. برای این کار محتوای چت‌ها را دسته بندی کردند. مثلا چت‌هایی که در مورد تجهیزات فنی ماشین‌ها (مثل بیمه و مدل و...) بود را در یک دسته قرار دادند و همینطور این روش را برای املاک و... امتحان کردند. حتی مزاحمت‌هایی که در دیوار اتفاق می‌افتاد را از طریق دلیل بلاک کردن کاربر متوجه می‌شدند و در واقع همه این کارها را یادگیری ماشین برایشان انجام میداد.سیستمی که در حال بهبود آن هستند Smart Suggestions است که از طریق یادگیری ماشین قرار است پیش‌بینی کند سوال بعدی که کاربر ممکن است بپرسد چه خواهد بود.خلاصه ارائه ۳. پیام آراسته از مسیریاب بلدپیام آراسته در Traceway درباره پیش‌بینی ترافیک مسیریاب بلد صحبت کرد. موضوعی که می‌تواند با کم‌کردن زمان و مسافت سفرها، مهم‌ترین برتری تکنولوژی مسیریاب‌ها محسوب شود.پیام داستان نحوه‌ی محاسبه‌ی ترافیک در سطح شهر در اپلیکشین بلد را بازگو کرد و گفت که دانستن میزان ترافیک در زندگیمان قطعاً تاثیرگذار خواهد بود. یکی از کاربردهایی که اپلیکیشن بلد دارد این است که با استفاده از ترافیکِ معابرِ مختلف که در اختیار دارد، زمان رسیدن به مقصد شما را تخمین می‌زند و بهترین مسیر را به شما پیشنهاد می‌دهد.  ممکن است فکر کنید داده‌هایی که از آن ترافیک را به دست می‌آوریم از طریق دوربین‌های سطح شهر و یا تصاویر ماهواره‌ای هستند که درواقع هر کدام از این‌ روش‌ها مشکلاتی دارند که باعث می‌شود از آنها استفاده نکنیم. در عوض مسیریاب‌ها دقیقاً از داده‌های خود کاربران استفاده می‌کنند؛ وقتی کاربری با استفاده از اپلیکشن بلد مسیر‌یابی می‌کند، سیگنال‌های GPS او به سرورهای بلد فرستاده می‌شود که می‌توانیم از آنها برای محاسبه‌ی ترافیک لحظه‌ای استفاده کنیم.برای اینکه بتوانیم به درستی این کار را انجام دهیم از تکنولوژی‌های Big Data همچون Spark و Hadoop در کنار سیستم بک‌اند Live Traffic که خودمون develop کردیم، استفاده می‌کنیم و برای بحث حریم خصوصی (Privacy)، زمانی که شما با اطلاعاتتان مثل شماره تماس و یا ایمیل وارد اپلیکیشن می‌شوید یک سری token به صورت تصادفی ایجاد می‌شود که این tokenهای تصادفی به اطلاعات لاگین شما برگشت‌پذیر نیستند. همچنین پیام، حضار رو با موضوع نویزی که در سیگنال GPS ارسالی کاربران وجود دارد آشنا کرد و گفت با سیستم Map Matchingی که develop کردیم به چه شکلی این نویز رو برطرف می‌کنیم. بعد از برطرف کردن نویز سیگنال GPS، درباره‌ی نحوه‌ی محاسبه‌ی ترافیک لحظه‌ای با استفاده از مفاهیمی چون Recency و Frequency و مفاهیم آماری و همچنین یادگیری ماشین به صورت تخصصی مطالبی بیان شد.خلاصه ارائه ۴. حامد دهقانی از فروشگاه دیجی‌کالاحامد دهقانی ماجرای سیستم توصیه‌گر (Recommendation System) دیجی‌کالا را تعریف کرد. سیستمی که تا همین چند هفته پیش از سرویس‌های خارجی استفاده می‌کرد اما حالا با طراحی و پیاده‌سازی کامل آن در دیجی‌کالا، علاوه بر کاهش هزینه، نتایج بهتری هم در تشخیص علاقه‌مندی‌های کاربران داشته است.دیجی‌کالا در خصوص سیستم توصیه‌گر از داده‌هایی مثل Business Data و User Event Data استفاده می‌کند که در نهایت به Big Data Storage دیجی‌کالا تبدیل می‌شود تا اپلیکشین‌های توصیه‌گر به خوبی کار کنند. این اپلیکیشن‌ها ویژگی‌هایی از جنس Personalize و Non personalize دارند که این سیستم برای پیشنهادها از Related Product، Aslo bought، Top category و... استفاده می‌کند. حامد دهقانی به این اشاره کرد که دیجی‌کالا میتوانست از Third Party Recommendation استفاده کند اما ترجیح داد خودشان با استفاده از یادگیری ماشین سیستمی را طراحی کنند که علاوه بر کاهش هزینه نتایج بهتری نیز داشته باشد.اگر علاقه دارید تا مشروح این سخنرانی‌ها را دنبال کنید، دیدن ویدئوهای لحظه‌نگار را از دست ندهید.خلاصه‌ای از ارائه‌های کوتاههادی راسخ از سلام سینما گفت در سلام سینما از Recommendation System برای پیشنهاد فیلم مطابق سلیقه کاربران استفاده کردیم. برای شروع از سرویس Prediction.io استفاده کردیم ولی یک سری محدودیت‌هایی داریم که در تلاشیم تا با استفاده از الگوریتم‌های دیگر این موارد را برطرف کنیم.آرمان فاطمی از واکاویک، به اهمیت داده‌های بزرگ و کوچک در کسب‌وکار اشاره کرد و سپس به معرفی واکاویک، سرویس پردازش هوشمند متن فارسی که با استفاده از هوش مصنوعی انجام میشود پرداخت. آرمان فاطمی از اهمیت و پیشرفت هوش مصنوعی در کسب‌کارهای مرتبط با منابع انسانی صحبت کرد.علی آجودانیان از ویرگول اشاره کرد به اینکه پیشنهاد پست‌ها را با توجه به فعالیت‌هایی که کاربران نسبت به خواندن مقاله‌های مختلف دارند انجام دادیم و با استفاده از تجزیه متن مطلبی را پیشنهاد میدادیم که با سلیقه کاربر یکسان است و اکنون هم درحال تست سیستمی هستند که این روند را بهبود داده است.در این گزارش سعی کردیم به طور خلاصه به سخنرانی‌هایی که در رویداد Traceway ارائه شد اشاره کنیم. در صورتی که تمایل به دانستن جزئیات و دیدن کامل سخنرانی ها دارید، می‌توانید با مراجعه به لحظه‌نگار ویدئوی ضبط شده این رویداد را با کد تخفیف virgool_user خریداری نمایید.</description><category>فاطمه عامل</category><author>فاطمه عامل</author><pubDate>Sun, 08 Dec 2019 13:56:34 +0330</pubDate></item><item><title>برگزاری اولین سری رویداد SkillUp با موضوع یادگیری ماشین</title><link>https://virgool.ir/Quera-Mag/برگزاری-اولین-سری-از-رویداد-skillup-با-موضوع-یادگیری-ماشین-v2z1rlcdntjn</link><description>رویداد SkillUp چیست؟ رویداد SkillUp سری رویدادهایی است که به شکل فصلی و با هدف انتقال تجربه در حوزه‌های روز دنیای تکنولوژی برگزار می‌شود. در هر رویداد با دعوت از متخصصان یک حوزه پیشرو در دنیای تکنولوژی، نحوه ورود به آن حوزه، کاربردهای آن در کسب‌وکارهای ایران و جهان و چشم‌اندازهای آینده و رشد آن حوزه را مورد بررسی قرار می‌دهیم. پنج‌شنبه، ۲۵ مهرماه ۹۸، اولین رویداد از سری رویدادهای SkillUp، که کوئرا اولین سری این رویداد را با همکاری انجمن علمی دانشکده کامپیوتر و دانشگاه شریف برگزار کرد.موضوع اولین سری SkillUp: یادگیری ماشینهیچ کس نمی‌تواند آینده دنیای فناوری را با قاطعیت پیش‌بینی کند؛ اما شکی نیست که جبهه نوآوری در سال‌های آینده چهار فرمانده اصلی در خط مقدم خود خواهد داشت: رایانش ابری، اینترنت اشیا، علم داده و از همه مهم‌تر یادگیری ماشین!در اولین رویداد از سری رویدادهای SkillUp به سراغ تکنولوژی هوش مصنوعی و یادگیری ماشین رفته‌ایم. بررسی جایگاه حال و آینده هوش مصنوعی، انتقال تجربه افراد خبره در این زمینه، به همراه بیان چالش‌ها و کاربردهای واقعی یادگیری ماشین در کسب وکارها درکنار بررسی جایگاه شغلی و درآمدی این حوزه بخشی از دستاوردهای این رویداد می‌باشد.دانشگاه شریف در این رویداد میزبان ۲۰۰ نفر از علاقه‌مندان حوزه هوش مصنوعی و یادگیری ماشین بود.این رویداد شامل ۳ بخش اصلی بود:سخنرانی‌های متخصصان حوزه یادگیری ماشین با حضور:دکتر محمود کریمیان، مدیرعامل دیدئودکتر علی اوصیا، دانشمند داده در پوشهدکتر مهرداد فرج‌تبار، محقق هوش مصنوعی در Googleجادی میرمیرانی، هکر و پادکستر آزادی کیبرد۲. پنل گفت‌وگو درباره کاربردهای هوش مصنوعی در شرکت‌های ایرانی با حضور:دکتر محمود کریمیان، مدیرعامل دیدئورضا مرادی، توسعه‌دهنده بک‌اند در سخنمحسن شجاعی، مدیر فنی پوشههادی راسخ، مدیرعامل سلام‌سینما۳. کارگاه عملی برای شروع کار در زمینه یادگیری ماشین با تدریس امیرحسین روزبهانی مهندس داده در کافه‌بازارسخنرانی اول : حال و آینده هوش مصنوعیدکتر کریمیان در این سخنرانی میگوید: در هوش مصنوعی، انسان‌ها سعی دارند هوش طبیعی را با استفاده از ماشین شبیه سازی کنند یا به عبارتی برای ماشین‌ها شرایطی را فراهم کنند که بتوانند یادگیری داشته باشند. در این بین به تفاوت بین هوش‌مصنوعی و یادگیری‌ماشین اشاره میکند که یادگیری ماشین زیرمجموعه‌ای از هوش مصنوعی است. درواقع هوش مصنوعی یعنی کامپیوتری که به‌نحوی رفتار انسان را تقلید کند و یادگیری ماشین شامل تکنیک‌هایی می‌شود که کامپیوتر را قادر می‌سازد تا خودش داده را دریابد و از چیزها سردربیاورد و برنامه‌های کاربردی AI را ارائه دهد. به دلیل پیشرفت تکنولوژی هوش‌مصنوعی در دنیا، احتمال از بین رفتن یک سری مشاغل وجود دارد که عبارت اند از:۱- رانندگان ماشین‌ با جایگزین شدن خودروهای خودران ۲- کشاورزان با استفاده از پهپادها و تصاویر ماهواره‌ای، برای انجام دادن کارها۳- رسانه‌های چاپی مثل روزنامه‌ها با ظهور شبکه‌های اجتماعی۴- صندوقدارن فروشگاه‌ با پدید آمدن فناوری‌هایی مانند Amazon Go و ...  خلاصه‌ای از ویدئوی سخنرانی دکتر محمود کریمیان: https://www.aparat.com/v/JQ4ND مشاغلی که در حوزه هوش مصنوعی پرطرفدارترند:۱-مهندس یادگیری ماشین (machine learning engineer)۲-متخصص داده (data scientist)۳-متخصص پژوهش (research scientist)۴-مهندس تحقیق و توسعه (R&amp;D engineer)۵-توسعه‌دهنده‌ی هوش تجاری (BI developer)۶-مهندس بینایی ماشین (computer vision engineer)برای ورود به دنیای هوش مصنوعی چه مهارت‌هایی نیاز داریم؟دانش برنامه‌نویسی و دانش ریاضیات و آمار و احتمال از ملزومات ورود به این حوزه می‌باشد که میتوان با استفاده از دوره‌های آنلاین مختلف و شرکت در هکاتون‌ها و دورهمی‌ها و...وارد این حوزه شد.سخنرانی دوم: پایپ‌لاین یادگیری ماشین در عملدر ارائه دوم دکتر علی اوصیا به جنبه‌های تئوری و عملی یادگیری ماشین اشاره کرد. فرض کنید میخواهیم تابعی را تخمین بزنیم سه مرحله وجود دارد:در ابتدای کار باید کلاس و فضا را مشخص کنیم سپس به مشخص کردن روش ارزیابی بپردازیمو در نهایت الگوریتم بهینه‌سازی برای سرچ در فضای مد نظر را پیدا کنیم...از چالش‌هایی که در به کارگیری یادگیری ماشین داریم میتوان به کافی نبودن داده اشاره کرد...خوب است که داده با یک دانش(knowledge) همراه باشد. که این دانش ممکن است به صورت ضمنی وارد مدل شود یا به واسطه فرض‌هایی که در نظر می‌گیریم. مثلا ممکن است بدانیم توزیع داده ثابت است؛ این یک فرض است (در واقع همان دانشی است که به مدل تزریق می‌کنیم) و می‌توانیم از آن استفاده کنیم.در خیلی از مواقع، مدل ما ممکن است بر روی training data خوب جواب دهد اما بر روی test data جواب ندهد. به این اتفاق overfitting می‌گویند. روش‌های مختلفی برای آنالیز این اتفاق وجود دارند. چالش دیگری که باید مراقب آن باشیم، این است که شهودهای ما در فضاهای مختلف الزاما با هم یکی نیستند. مثلا در حوزه‌ی نرمال در یک یا دو بعد، نمونه‌ها حول میانگین قرار می‌گیرند؛ اما در ابعاد بالا این موضوع صادق نیست.مهندسی ویژگی چیست؟اساسا همه الگوریتم های یادگیری ماشین برای ایجاد داده‌های خروجی از یک سری داده ورودی استفاده میکنند. این داده های ورودی شامل یک سری ویژگی میباشند که ساختار آنها معمولا در قالب ستونهایی پدیدار میشود. الگوریتم ها برای اینکه بدرستی کار کنند، نیاز به این ویژگی ها همراه با برخی مشخصات دیگر دارند.خلاصه‌ای از سخنرانی دکتر علی اوصیا: https://www.aparat.com/v/T7m5I اهداف مهندسی ویژگیبطور کلی میتوان دو هدف برای مهندسی ویژگی در نظر گرفت:آماده سازی مجموعه داده‌های ورودی مناسب که با نیازهای الگوریتم یادگیری ماشین سازگارند. بهبود عملکرد مدلهای یادگیری ماشینبرای این کار در عمل بهتر است از الگوریتمی ساده ولی حجم دیتای زیاد استفاده کنید. در عمل، مثلا می‌خواهیم مدلی را خیلی سریع train کنیم زیرا توزیع آن با زمان تغییر می‌کند. در چنین شرایطی، مدل‌های پیچیده سریع نیستند. پس بهتر است مدلی ساده پیدا کنیم و بعد سعی کنیم آن را بهبود ببخشیم. در خیلی از مسابقات یادگیری ماشین، مدل‌های ساخته‌شده توسط تیم‌های برتر را با یکدیگر ترکیب می‌کنند و از این طریق، به مدلی بهتر دست می‌یابند.دکتر علی اوصیا، در بخش دوم سخنرانی خود نیز استایلی برای کد زدن در ژوپیتر نوت‌بوک ارائه کرد. این نوت‌بوک را می‌توانید از گیت‌هاب شرکت پوشه دریافت کنید.سخنرانی سوم: تهدیدها و فرصت‌های هوش مصنوعی جادی میرمیرانی در این باره گفت، هوش مصنوعی در همه جا وارد شده است. ما ممکن است مستقیم کار هوش مصنوعی نکنیم، اما به طور غیر مستقیم از آن استفاده می‌کنیم. مثلا در شرکت‌های مخابراتی، قبل از آن‌که مشتری بسیار ناراضی شود و به آن شرکت زنگ بزند، با تکنیک‌های یادگیری ماشین، نارضایتی او را پیش‌بینی می‌کنیم. مثلا مشتری ممکن است در یک الگوی عصبانی، مودم خود را خاموش و روشن کند. و با استفاده از این مورد ما میتوانیم قبل از اینکه برای مشتری نارضایتی بیشتر پیش نیامده جلویش را بگیریم...خلاصه‌ای از سخنرانی جادی میرمیرانی: https://www.aparat.com/v/YZ7pt بزرگ‌ترین خطرات هوش مصنوعیبزرگ‌ترین خطر هوش مصنوعی آن است که دست گروهی می‌افتد که اول آن را کشف می‌کنند. این گروه، که intelligence explosion را کشف می‌کند، احتمالا قدرت خود را با بقیه تقسیم نمی‌کند. ما باید سعی کنیم تکنولوژی را به شکل دموکراتانه در اختیار همه قرار دهیم...سخنرانی چهارم: هوش مصنوعی در مقیاس گوگلدر سخنرانی که دکتر مهرداد فرج‌تبار به صورت اسکایپی داشت، اشاره شد به اینکه گوگل خودش را مسئول سازمان‌دهی اطلاعات موجود در جهان می‌داند و سعی می‌کند این اطلاعات را در دسترس عموم قرار دهد. دپارتمان AI گوگل نیز در همین راستا، راه‌های جدیدی برای انجام این ماموریت پیدا می‌کند.مدیران گوگل همواره درباره‌ی خطرات هوش مصنوعی نیز تذکر داده‌اند. خطراتی مانند رشد بی‌رویه‌ی هوش مصنوعی در مسائل نظامی یا مسائل مربوط به حریم خصوصی. گوگل برای پیشگیری از معایب AI، کارگروه‌هایی نیز تشکیل داده است. گوگل در همه‌ی زمینه‌ها، از جمله تحقیق و توسعه، سعی می‌کند در سراسر دنیا فعالیت داشته باشد و شعب متعددی نیز در سراسر جهان دارد. به طور کلی دپارتمان هوش مصنوعی گوگل سه هدف را دنبال می‌کند:تحقیق و پژوهش در زمینه‌های مرتبط با علوم کامپیوترارتقای محصولات گوگل با استفاده از هوش مصنوعیتوسعه ابزارها، راهکارها و فریم‌ورک‌هایی برای عموم در زمینه‌ی هوش مصنوعیبرخی از کاربردهای هوش مصنوعی در محصولات گوگلاز جمله کاربردهای هوش مصنوعی در گوگل میتوان به گوشی موبایل پیکسل اشاره کرد که این موبایل با استفاده از هوش مصنوعی، سعی می‌کند مصرف باتری را بهینه کند و حتی با استفاده از شبکه عصبی تصاویر پرتره با کیفیت بهتری را ثبت می‌کند.سرویس ترجمه‌ی همزمان گوگل که از حدود 5 سال پیش شروع به کار کرده نیز با استفاده از شبکه عصبی میتواند متن‌های تصویر را تشخیص دهد و ترجمه انجام میشود و به کاربر نمایش میدهد.سیستم عامل اندرویدی که استفاده میکنیم نیز با استفاده از هوش مصنوعی مصرف باتری را کاهش میدهد و میزان روشنایی صفحه‌ی نمایشگر را تنظیم کرده و برنامه‌هایی که باتری بیشتری مصرف میکنند را مدیریت میکند.گوگل فریمورکی به نام Tensorflow را به عنوان یک فریم‌ورک هوش مصنوعی و یادگیری ماشین ارائه داده و این فریمورک را اوپن سورس کرده تا به پیشرفت و توسعه آن کمک کند. با استفاده از تنسورفلو میتوان به سرویس ابری گوگل متصل شدو از سرویس‌های مختلف آن مانند تشخیص صدا، تبدیل متن به صوت و صوت به متن، ماشین‌های پیشنهاددهنده و … استفاده کرد.پنل گفت‌وگو جایگاه و کاربردهای هوش مصنوعی و یادگیری ماشیندر این پنل از ۴ نفر از شرکت‌های مطرحی که از هوش مصنوعی و یادگیری ماشین استفاده می‌کنند دعوت شده بود: رضا مرادی، توسعه‎‌دهنده بک‌اند در شرکت سخن، محسن شجاعی مدیر فنی شرکت پوشه، هادی راسخ مدیر عامل شرکت سلام سینما و محمود کریمیان مدیر عامل دیدئو به صحبت حول این محور پرداختند.در ابتدا همه سخنران‌ها در مورد کاربردی که هوش مصنوعی در کسب و کارشان داشته صحبت کردند و استفاده‌ای که از این تکنولوژی در کارشان دارد را به طور جزئی شرح دادند و سپس به موضوعاتی در خصوص کارآفرینی هوش مصنوعی در ایران و خارج ایران پرداختند و در آخر برای دوستانی که میخواهند وارد این حوزه شوند از تجربیات خود و ترندهای روز تکنولوژی صحبت کردند که بخش‌هایی از این ویدئو را میتوان مشاهده کنید: https://www.aparat.com/v/iTWje کوئرامگ مجله‌ی تخصصی کوئرا برای توسعه‌دهندگان است که هر هفته با مطلب‌هایی در زمینه تکنولوژی، رشد فردی و آینده برنامه‌نویسی به‌روزرسانی می‌شود. برای اطلاع از آخرین مطلب‌های ما، می‌توانید توئیتر یا کانال تلگرام ما را دنبال کنید.</description><category>فاطمه عامل</category><author>فاطمه عامل</author><pubDate>Thu, 24 Oct 2019 17:16:58 +0330</pubDate></item><item><title>طراحی صفحات ۴۰۴: نکات کلیدی + برترین نمونه‌ها</title><link>https://virgool.ir/Quera-Mag/چطور-صفحه-۴۰۴-جذابی-داشته-باشیم-ot3y8ojflugp</link><description>هرکسی که در صفحات وب چرخی زده باشد، حداقل یک بار با خطای ۴۰۴ برخورد کرده است. محتوای این خطا یک چیزی در این مایه‌هاست که «ای بابا، پس چرا این صفحه‌ای که دنبالش میگشتی پیدا نشد!؟» این خطا یکی از خطاهای سرور HTTP است که در این مطلب مفصلاً در مورد آنها و علت بروزشان صحبت کردیم. اما در این مطلب میخواهیم علت به وجود آمدن خطای ۴۰۴، نکات اساسی در طراحی صفحات ۴۰۴ برای ایجاد تجربه کاربری (UX) موثر و در نهایت نمونه‌های موفق ایرانی و خارجی این صفحات را بررسی کنیم.چرا خطای ۴۰۴ پیش می‌آید؟به زبان ساده‌، خطای ۴۰۴ زمانی اتفاق می‌افتد که سرور به دلیلی مثل تغییر آدرس صفحه، حذف همیشگی نوشته توسط ادمین سایت، و یا اشتباه تایپی کاربر، نتواند منابع مرتبط با آن صفحه را پیدا کند.بروز خطاهایی مثل خطای ۴۰۴، از جمله مسائلی است که تجربه کاربری (UX) بدی برای مخاطبین سایت رقم می‌زند. اما اگر صفحه ۴۰۴ را درست طراحی کنیم، نه تنها تاثیرات منفی ناشی از برخورد با این صفحه را تا حد ممکن جبران کرده‌ایم، که حتی می‌توانیم کاری کنیم که کاربر بعد از دیدن این خطا لبخند روی لبانش بنشیند و سایت ما را ترک نکند!چه نکاتی در طراحی تجربه کاربری صفحات ۴۰۴ اهمیت دارد؟برای طراحی بهتر صفحات ۴۰۴، کافیست چند سوال از خود بپرسیم:چه کسی باعث شده این اتفاق بیفتد؟دقیقاً چه اتفاقی افتاده و چرا؟چه زمانی این مشکل رفع خواهد شد؟چطور می‌توانم این مشکل را برطرف کنم؟آیا در این صفحه رد و نشانی از کسب و کار من وجود دارد؟آیا صفحه ۴۰۴ سایت من آنقدر هیجان انگیز است که بتواند کاربر را جذب کند؟با جواب دادن به این سوالات، می‌توانیم چارچوب ایده‌آلی برای صفحات ۴۰۴ خودمان بسازیم.نکته ۱: از دل کاربر در بیاوریدچه کسی باعث شده این اتفاق بیفتد؟ مقصرِ رخ دادن این خطا هر کسی که باشد، ما باید در انتخاب ضمیر مناسب برای جملاتمان دقت داشته باشیم. باید طوری با کاربر صحبت کنیم که از ما دلخور نشود؛ مثلا ایده خوبی است که از عباراتی مثل «اوه ببخشید» در ابتدای صفحه استفاده کنیم. به این نمونه‌ها دقت کنید:ما نتوانستیم این صفحه را برایتان پیدا کنیم :(صفحه‌ای که شما دنبالش می‌گشتید پیدا نشد.بنظر می‌رسد این صفحه وجود ندارد.نکته ۲: علت مشکل را برای کاربر توضیح دهیدچه اتفاقی افتاده و چرا؟ شاید کاربری که به این صفحه هدایت شده، چندان تخصصی در امور کامپیوتری نداشته باشد. چنین کاربری قطعاً نخواهد فهمید که خطای ۴۰۴ چیست و به چه دلیلی رخ داده است. پس صرف نوشتن یک ۴۰۴ بزرگ در صفحه کفایت نمی‌کند؛ باید به زبان ساده به کاربر توضیح دهیم که چرا به این صفحه رسیده است. به مثال زیر نگاه کنید:نکته ۳: دائمی بودن صفحات ۴۰۴ را فراموش نکنیدچه زمانی این مشکل رفع خواهد شد؟ صفحه ۴۰۴ با صفحه Maintenance یا به اصطلاح «در دست تعمیر»، فرق دارد. صفحه ۴۰۴ همیشه در سایت شما وجود خواهد داشت، اما صفحه «در دست تعمیر» موقتی است و پس از بر طرف کردن مشکل یا به روز رسانی از بین می‌رود. پس باید حواسمان باشد که محتوای هرکدام از این صفحه‌ها را متناسب با هدفی که دارند تنظیم کنیم. برای صفحاتی مثل آپدیت سرور، معمولاً باید به کاربر پاسخ بدهیم که سایت چه زمانی به حالت اولیه برخواهد گشت، و یا اینکه کاربر از چه طریقی می‌تواند پیگیر درست شدن سایت باشد. در این صفحه‌ها، بهترین راه ارجاع دادن کاربر به شبکه‌های اجتماعی است.۴. کاربر را به صفحات دیگر هدایت کنیدچطور می‌توانم این مشکل را برطرف کنم؟ خوب، تا اینجای کار کاربر کاملا آگاهی پیدا کرده که چرا وارد این صفحه شده است. حالا می‌رسیم به بخش هیجان‌انگیز ماجرا! چکار کنیم تا کاربر با وجود دیدن این صفحه، به هدف خود برسد و ناامید از سایت ما خارج نشود؟قرار دادن لینک‌های مفید و مرتبط:صفحه خطای ۴۰۴ در سایت مدیوموقتی کاربر با جستجوی مطلبی به صفحه ۴۰۴ سایت شما هدایت می‌شود، می‌توانید لینک‌هایی مرتبط به موضوع جستجویش را به او نشان دهید و با این کار، تا حدودی او را راضی نگه دارید. یک راهکار دیگر این است که نوشته های پربازدید سایت یا وبلاگ را در صفحه خطای ۴۰۴ خود قرار دهید. همچنین لینک دادن به صفحه اصلی سایت هم می‌تواند انتخاب مناسبی برای کاربران باشد.باکس جستجو:قرار دادن ابزار جستجوی سایت در صفحه ۴۰۴، یکی از روش های کاربردی برای جلب توجه کاربران است و مانع خروج آنها از سایت شما می‌شود. البته این جعبه جستجو زمانی مفید خواهد بود که شما یک دسته‌بندی جامع و کامل از محصولات داشته باشید و با قرار دادن دو سه تا لینک نشود همه آن‌ها را پوشش داد.گزارش دادن خطا:به کاربران خود این امکان را بدهید تا خطای به وجود آمده را گزارش دهند. این‌ کار می‌تواند تجربه خوبی برای او رقم بزند و تاثیر مثبتی رویش بگذارد. مثلاً دکمه ای را طراحی کنید و در کنار آن بنویسید «این صفحه را گزارش دهید و به صفحه اصلی برگردید.» با این کار نه تنها کاربر را راضی نگه می‌دارید، که صفحات مشکل‌دار را هم بدون هیچ زحمتی شناسایی کرده و به لینک‌های معتبر ریدایرکت می‌کنید!فرصت ساختن از خطاها: می‌توانید برای دلجویی از کاربر یک کد تخفیف برای استفاده از محصولات خودتان به او پیشنهاد دهید و یا یک مطلب رایگان در اختیارش بگذارید! این‌ کار می‌تواند کاربر ناراضی را به مشتری وفادار تبدیل کند. با همین یک کار کوچک یک قدم هم برای رسیدن به اهداف مارکتینگ‌تان برمی‌دارید!برندسازی و شوخ طبعی:مارکتینگ تنها چیزی نیست که با صفحه ۴۰۴ می‌شود بهبودش داد؛ خیلی از به یاد ماندنی‌ترین صفحات ۴۰۴ آنهایی هستند که شرکت با کمی خلاقیت و مزه‌پرانی، از آنها در جهت اهداف برندسازی خود استفاده کرده است. مثلا اگر گذرتان به صفحه ۴۰۴ فیسبوک بیفتد، با یک شصت زخمی مواجه خواهید شد! هم بامزه است، و هم لوگوی فیسبوک در آن به کار گرفته شده است.صفحه ۴۰۴ سایت فیس‌بوک و بازی با لوگوی این شرکتنمونه‌های صفحه ۴۰۴ در سایت‌های ایرانی و خارجی ۱. آپاراتیکی از بهترین صفحات ۴۰۴ ایرانی از نظر رعایت اصول تجربه کاربری، متعلق به سایت آپارات است. استفاده از رابط گرافیکی بامزه و زیبا، لوگو در جهت برندسازی و استفاده از لینک به صفحه اصلی هم از وجوه برتر این صفحه هستند و به همراه هم تاثیر خوبی روی کاربر می‌گذارند.۲. دیجی‌کالاسایت دیجی‌کالا هم رابط گرافیکی خوبی دارد و هم از لینک به صفحه اصلی استفاده کرده است. وجود باکس جستجو و لوگوی شرکت در بالای صفحه، از دیگر نکات مثبت آن است.۳. علی‌بابابا گذاشتن لیست محصولات در این صفحه، علی‌بابا به کاربری که راهش را گم کرده کمک می‌کند که سریع تر به هدف مورد نظرش دسترسی پیدا کند. همچنین از کلمه «متاسفانه» استفاده شده و امکان رفتن به صفحه اصلی از طریق لینک هم وجود دارد.۴. اسنپ‌فوداین هم از صفحه سایت اسنپ فود که خیلی جذاب و خوشمزه طراحی شده و به صفحه اصلی هم لینک دارد.۵. سایت Inrialityاین سایت با طراحی گرافیکی زیبای خود در صفحه ۴۰۴ به شما می فهماند که به صفحه اشتباهی وارد شده‌اید و به‌ عبارت دیگر، راهتان را گم کرده‌اید. با لینک به صفحه اصلی، سایدبار سمت راست صفحه، و همچنین گرافیک مناسب، کاربران تجربه بدی در روبرو شدن با این خطا نخواهند داشت.۶. ناساسایت ناسا هم صفحه ۴۰۴ جالبی طراحی کرده که هم به موضوع سایت مرتبط است و هم شوخ طبعی دارد. لیست فهرست، باکس جستجو و لوگوی شرکت هم در این صفحه قرار داده شده است.۷. آمازونهر بار که وارد صفحه ۴۰۴ آمازون شوید، یکی از سگ‌های بامزه کارمندان این شرکت به استقبال شما خواهد آمد! حتی اگر کاربر در گذشته با این صفحه روبرو شده باشد، باز هم صفحه برایش تازگی خواهد داشت؛ چون سگی که می‌بیند با دفعه قبلی متفاوت است. خلاقیت به کار رفته در این صفحه و دوست‌داشتنی بودن المان آن کاربر را تحت تاثیر قرار می‌دهد و خاطره خوشی در ذهن او باقی می‌گذارد. در کنار همه این جذابیت‌ها، آن لینک «از سگ‌های بامزه آمازون دیدن کنید» به مطلبی باز می‌شود که از مزایای محیط کار آمازون برای سگ‌ها می‌گوید و یک جور مارکتینگ برای کارجویان هم هست.در مطلب‌های قبلی کوئرامگ درباره UX بیشتر بخوانید:هفت پدیده مهم روانشناسی در طراحی تجربه کاربریکوئرامگ مجله‌ی تخصصی کوئرا برای توسعه‌دهندگان است که هر هفته با مطلب‌هایی در زمینه تکنولوژی، رشد فردی و آینده برنامه‌نویسی به‌روزرسانی می‌شود. برای اطلاع از آخرین مطلب‌های ما، می‌توانید توئیتر یا کانال تلگرام ما را دنبال کنید.</description><category>فاطمه عامل</category><author>فاطمه عامل</author><pubDate>Sun, 22 Sep 2019 21:57:50 +0330</pubDate></item><item><title>یادگیری ماشین به زبان ساده: عملی‌ترین راهنمای دنیا!</title><link>https://virgool.ir/Quera-Mag/یادگیری-ماشین-به-زبان-ساده-عملیترین-راهنمای-دنیا-ylwfubeca31t</link><description>هیچ کس نمی‌تواند آینده دنیای فناوری را با قاطعیت پیش‌بینی کند؛ اما شکی نیست که جبهه نوآوری در سال‌های آینده چهار فرمانده اصلی در خط مقدم خود خواهد داشت: رایانش ابری، اینترنت اشیا، علم داده و از همه مهم‌تر یادگیری ماشین!اگر توسعه‌دهنده هستید، غیر ممکن است که در جمع دولوپرها بنشینید و حرف از یادگیری ماشین نشود. بحث‌های داغی که این روزها حول این تکنولوژی می‌چرخد را همه شنیده‌اند؛ از تازه‌واردهای دنیای برنامه‌نویسی گرفته تا توسعه‌دهنده‌های حرفه‌ای که سال‌ها سابقه کاری دارند.شاید شما هم مثل من بعد از شنیدن اسم یادگیری ماشین، رفته‌اید و با کنجکاوی مقاله ویکی‌پدیایش را خوانده‌اید، اما خیلی چیزی دستگیرتان نشده است. شاید در به در دنبال منبعی هستید که به زبان ساده برایتان توضیح دهد که آخرش این یادگیری ماشین یعنی چه؟ اگر دارید سرتان را به نشانه تایید تند تند تکان می‌دهید، این مقاله دقیقاً همان چیزی هست که منتظرش بودید!بیایید از قدم اول شروع کنیم! اصلا تعریف یادگیری ماشین چیست؟یادگیری ماشین چیست؟فرض کنید می‌خواهیم مسئله‌ای را حل کنیم. یک راه این است که بنشینیم و یک سری کد مخصوص برای حل آن مسئله بخصوص بنویسیم. اما راه دیگر این است که از یک سری الگوریتم‌های عمومی استفاده کنیم. با این الگوریتم‌ها می‌شود بدون کد زدن اختصاصی برای هر مسئله، اطلاعات جالبی در مورد یک مجموعه داده به دست آورد. در واقع به جای کد زدن، داده‌ها را به عنوان ورودی به این الگوریتم‌های عمومی می‌دهیم و آنوقت الگوریتم خودش بر مبنای داده‌ها به طور خودکار منطق خودش را می‌سازد. اصطلاح «یادگیری ماشین»، یک اصطلاح کلی است که مجموعه‌ای از این الگوریتم‌های عمومی مختلف را در بر می‌گیرد.بگذارید مثال بزنم. یکی از این الگوریتم‌های عمومی، الگوریتم طبقه بندی (Classification) است که داده‌ها را در گروه‌های مختلف قرار می‌دهد. با همین یک الگوریتم یکسان، هم می‌شود اعداد را در دست خط انسان تشخیص داد (طبقه بندی حروف و اعداد در دسته‌های جدا) و هم ایمیل‌ها را به دو دسته اسپم و غیر اسپم تقسیم کرد. حتی یک خط کد را هم لازم نیست تغییر بدهیم! الگوریتم یکسان است، اما مجموعه داده‌های آموزشی (Training Data Set) داده شده به آن متفاوت هستند و بنابراین منطق دسته‌بندی‌های نهایی در دو مورد هم با هم متفاوت خواهد بود.این الگوریتم یادگیری ماشین، مثل یک جعبه سیاه است که می‌شود آن را از نو برای حل یک عالمه مسئله‌ طبقه‌بندی (Classification) مختلف استفاده کرد.انواع یادگیری ماشینالگوریتم‌های یادگیری ماشین در دو دسته کلی جای می‌گیرند: یادگیری نظارت شده (Supervised Learning)، و یادگیری نظارت نشده (Unsupervised Learning). این دو دسته یک تفاوت ساده اما خیلی مهم دارند.یادگیری نظارت شدهفرض کنید یک آژانس املاک دارید؛ کسب و کارتان دارد حسابی رشد می‌کند؛ برای همین یک سری کارآموز جدید استخدام می‌کنید تا به شما کمک کنند. اما یک مشکل بزرگ وجود دارد: شما به خاطر تجربه زیادی که دارید می‌توانید در یک نگاه ارزش ملک را تا حد خوبی تخمین بزنید، اما کارآموزها که از چنین تجربه‌ای بی‌بهره‌اند، هیچ ‌ایده‌ای در مورد قیمت‌گذاری ندارند.برای اینکه به کارآموزها کمک کنید و کمی هم از بار وظایف خودتان بکاهید، یک تصمیم هیجان‌انگیز می‌گیرید: می‌خواهید برنامه‌ای بنویسید که بر اساس اندازه، محله و دیگر مشخصات خانه‌های مشابهی که قبلاً فروخته شده‌اند، قیمت یک خانه جدید را تخمین بزند.سه ماه وقت می‌گذارید و هر خانه‌ای که در شهر فروخته می‌شود، اطلاعاتش را یادداشت می‌کند. بعد از سه ماه کلی داده برای هر خانه دارید: تعداد اتاق خواب، مساحت، محله‌، و از همه مهمتر قیمت فروش خانه.این همان «داده‌های آموزشی» یا Training Data ماست.اکنون با استفاده از این مجموعه داده‌ها، می‌خواهیم برنامه‌ای بنویسیم که ارزش خانه‌های اطرافمان را تخمین بزند:هدف ما این است که با استفاده از داده‌های آموزشی، قیمت خانه‌های دیگر را پیش‌بینی کنیم. به این نوع یادگیری، یادگیری نظارت شده می‌گویند. ما از قبل از قیمت فروش هر خانه خبر داشتیم، به عبارت دیگر، جواب مسئله را می‌دانستیم و می‌توانستیم بر مبنای آن منطق به کار رفته را هم پیدا کنیم.برای ساخت برنامه، داده‌های آموزشی را به عنوان ورودی به الگوریتم یادگیری ماشین می‌دهیم. این الگوریتم در تلاش است تا بفهمد که چه عملیات ریاضی‌ای می‌تواند به این اعداد منجر شود. یادتان هست در امتحان‌های ریاضی جواب مسئله را بهمان می‌دادند و می‌خواستند بگوییم عمل ریاضی به کار رفته جمع است یا تفریق؟اوه اوه‌! مثل اینکه یک دانش آموز شیطون عملگرهای حسابی بین اعداد رو از پاسخنامه معلم پاک کرده! طبیعتاً برای حل چنین مسئله‌ای، باید یک عملی روی اعدادی که در سمت چپ هستند انجام بدهیم تا به عددی که در سمت راست است برسیم.در یادگیری نظارت شده، شما تکلیفتان را دست کامپیوتر می‌دهید تا او عملگر ریاضی مجهول را برایتان پیدا ‌کند. و وقتی عملگر ریاضی لازم برای این سری مسئله بخصوص را پیدا کردید، هر مسئله مشابه دیگری را هم می‌توانید با همان الگوریتم حل کنید!یادگیری نظارت نشدهبیایید به مثال آژانس املاک برگردیم. اگر قیمت خانه‌های فروخته شده را ندانیم، آن وقت چه؟ حتی اگر فقط اندازه، محله، و تعداد اتاق را بدانیم هم کلی اطلاعات جالب می‌شود بر مبنای آنها کشف کرد! به این نوع یادگیری که در آن عدد مجهولی برای پیش‌بینی نداریم، یادگیری نظارت‌نشده می‌گویند.یادگیری نظارت‌نشده مثل این است که رئیس‌تان یک ورق کاغذ با یک سری عدد رندوم رویش به شما بدهد و بگوید که «من هیچ ایده‌ای ندارم این عددا یعنی چی، ولی خدارو چه دیدی شاید تو تونستی یه طبقه‌بندی‌ای، الگویی چیزی پیدا کنی! موفق باشی!»با چنین داده‌هایی چه کار می‌شود کرد؟ در قدم اول، می‌شود الگوریتمی داشت که به صورت خودکار دسته‌بندی‌های مختلف بازار را روی داده شما شناسایی کند. مثلاً شاید بعد از این دسته‌بندی متوجه شوید که خریدارانی که می‌خواهند در محدوده دانشگاه‌ها ساکن شوند، دنبال خانه‌های کوچک با اتاق‌های زیاد می‌گردند، اما خریداران بالای شهر دوست دارند در خانه‌های بزرگی که سه اتاق خواب دارد زندگی کنند. با دانستن چنین اطلاعاتی در مورد تفاوت‌های بین مشتریان، می‌توانید بازاریابی هدف‌مندتری داشته باشید.یک کار هیجان‌انگیز دیگر هم می‌تواند این باشد که بروید و با الگوریتم مناسب، به طور خودکار دنبال داده‌های پرت بگردید: یعنی آن خانه‌هایی که تفاوت خیلی زیادی با بقیه خانه‌ها دارند. شاید این خانه‌ها از آن خانه‌های لاکچری قصرمانند باشند و با شناختن آنها، شما بتوانید بهترین فروشنده‌هایتان را دنبال فروش این خانه‌ها بفرستید و کمیسیون خیلی بیشتری برای خودتان جور کنید.در این مطلب، تمرکز اصلی ما روی یادگیری نظارت‌شده است. این به این معنا نیست که یادگیری نظارت‌نشده جذابیت کمتری دارد. در واقع، این روزها یادگیری نظارت نشده حسابی مهم شده است؛ زیرا الگوریتم‌ها مدام دارند پیشرفت می‌کنند و به کمک آنها می‌توان بدون تصمیم‌گیری قبلی در مورد جواب احتمالی سوال، جواب واقعی را از خود داده‌ها استخراج کرد.اینا که گفتی خیلی جالبه، اما میشه واقعاً به توانایی تخمین زدن قیمت خونه گفت «یادگیری»؟در جوابتان باید باید بگویم که مغز انسان با هر وضعیتی که مواجه شود، می‌تواند بدون نیاز به گرفتن دستورالعمل صریح از یک نفر دیگر، نحوه مواجهه با آن شرایط را یاد بگیرد. مثلاً اگر مدت زیادی در کار فروش خانه باشید، دیگر شهودی می‌توانید بگویید که چه قیمتی برای یک خانه مناسب است، بهترین راه برای بازاریابی و فروش آن چیست، و چه نوع مشتری‌ای به آن علاقمند خواهد بود. هدف هوش مصنوعی قوی (Strong AI) هم این است که کامپیوتر هم بتواند چنین مهارتی را یاد بگیرد.ولی الگوریتم‌های یادگیری ماشین هنوز این‌قدرها هم قوی نیستند و فقط زمانی درست کار می‌کنند که مسئله مورد نظر خیلی محدود و مشخص باشد. شاید در حالت فعلی، بهتر باشد به جای «یادگیری» بگوییم «پیدا کردن معادله‌ای برای حل یک مسئله خاص براساس تعدادی داده نمونه». اما خب، «پیدا کردن معادله‌ای برای حل یک مسئله خاص براساس تعدادی داده نمونه توسط ماشین» خیلی اسم جذابی نیست‌! برای همین همان «یادگیری ماشین» را به کار می‌بریم.البته اگر دارید ۵۰ سال بعد از الان این مطلب را می‌خوانید و الگوریتم‌ هوش مصنوعی قوی دیگر کشف شده است، احتمالاً دارید فکر می‌کنید که این مقاله عجب چیز عتیقه و چرت و پرتی است‌! انسان آینده عزیز، اگر اینطور است لطفاً این مقاله را ول کنید و با خیال راحت بروید به روبات خدمتکارتان بگویید یک ساندویچ خوشمزه برایتان حاضر کند!حالا بیاید برنامه‌ای که در موردش حرف زدیم را بنویسیم!اگر شما باشید، چه طوری برنامه تخمین زدن ارزش خانه را می‌نویسید؟ قبل از خواندن ادامه متن، چند دقیقه به جواب این سوال فکر کنید.اگر چیزی از یادگیری ماشین ندانید، احتمالاً تلاش می‌کنید قانون‌های ساده‌ای برای تخمین قیمت بنویسید؛ یعنی یک چیزی در این مایه‌ها:def estimate_house_sales_price(num_of_bedrooms, sqft, neighborhood):&#xA;  price = 0  &#xA;  &#xA;  # In my area, the average house costs $200 per sqft&#xA;  price_per_sqft = 200  &#xA;  &#xA;  if neighborhood == &#34;hipsterton&#34;:&#xA;    # but some areas cost a bit more&#xA;    price_per_sqft = 400  &#xA;    &#xA;  elif neighborhood == &#34;skid row&#34;:&#xA;    # and some areas cost less&#xA;    price_per_sqft = 100  &#xA;    &#xA; # start with a base price estimate based on how big the place is&#xA;  price = price_per_sqft * sqft  &#xA;  &#xA;  # now adjust our estimate based on the number of bedrooms&#xA;  if num_of_bedrooms == 0:&#xA;     # Studio apartments are cheap&#xA;     price = price — 20000&#xA; else:&#xA;    # places with more bedrooms are usually&#xA;    # more valuable&#xA;    price = price + (num_of_bedrooms * 1000) &#xA;    &#xA; return priceاگر ساعت‌ها با این کد سر و کله بزنید، شاید آخرش چیزی از آب دربیاورید که واقعاً جواب بدهد. اما این برنامه هرگز ایده‌آل نخواهد شد؛ چرا که اگر قیمت‌ها تغییر کند، به هم می‌ریزد و باید دوباره آن را اصلاح کرد.بهتر نبود می‌گذاشتیم کامپیوتر خودش تابع مناسب را برای این کار پیدا کند؟ تا وقتی که تابع دارد جواب درست را به ما می‌دهد، اصلاً چه اهمیتی دارد که دقیقاً چطوری کار می‌کند؟def estimate_house_sales_price(num_of_bedrooms, sqft, neighborhood):&#xA;    price = &lt;computer, plz do some math for me&gt;  &#xA;    &#xA;    return priceبیاید از بعد دیگری به این مسئله نگاه کنیم: فرض کنید قیمت یک سوپ خیلی خوشمزه است و مواد تشکیل دهنده آن هم تعداد اتاق‌ها، مساحت و محله هستند. اگر کشف کنیم که هر ماده تشکیل دهنده چقدر بر طعم سوپ (قیمت نهایی) تاثیر می‌گذارد، شاید بتوانیم نسبت دقیق مواد اولیه را برای تهیه سوپ نهایی را بدست آوریم.این کار تابع اولیه‌مان (با همه آن if و elseهایش!) را به یک کد خیلی ساده تبدیل می‌کند:def estimate_house_sales_price(num_of_bedrooms, sqft, neighborhood):&#xA; price = 0 &#xA; &#xA; # a little pinch of this&#xA; price += num_of_bedrooms * .841231951398213 &#xA; &#xA; # and a big pinch of that&#xA; price += sqft * 1231.1231231 &#xA; &#xA; # maybe a handful of this&#xA; price += neighborhood * 2.3242341421 &#xA; &#xA; # and finally, just a little extra salt for good measure&#xA; price += 201.23432095 &#xA; &#xA; return priceبه این ضریب‌ها توجه کنید. این عددهای جادویی، وزن‌‌های ما (Weights) هستند. اگر بتوانیم وزن ایده‌آلی را پیدا کنیم که برای همه خانه‌ها جواب بدهد، آنوقت تابع ما می‌تواند قیمت خانه‌ها را پیش‌بینی کند‌!اگر می‌خواستیم یک روش احمقانه برای پیدا کردن بهترین وزن‌ها امتحان کنیم، آن روش چیزی شبیه این بود:گام اول – همه وزن‌ها را برابر 1.0 قرار می‌دهیم.def estimate_house_sales_price(num_of_bedrooms, sqft, neighborhood):&#xA;  price = 0  &#xA;  &#xA;  # a little pinch of this&#xA;  price += num_of_bedrooms * 1.0  &#xA;  &#xA;  # and a big pinch of that&#xA;  price += sqft * 1.0  &#xA;  &#xA;  # maybe a handful of this&#xA;  price += neighborhood * 1.0  &#xA;  &#xA;  # and finally, just a little extra salt for good measure&#xA;  price += 1.0  &#xA;  &#xA;  return priceگام دوم- قیمت خانه‌هایی که قیمت اصلی‌شان را داریم را با وزن گفته شده تخمین می‌زنیم. بعد نگاه می‌کنیم تا ببینیم تخمین حاصل از تابع‌مان چقدر با قیمت واقعی اختلاف دارد:با تابعتان قیمت همه خانه‌ها را تخمین بزنید.مثلا اگر قیمت فروش خانه اول، ۲۵۰ هزار دلار بوده باشد ولی تابعمان ۱۷۸ هزار دلار تخمین بزند، برای آن خانه بخصوص ۷۲ هزار دلار خطا خواهیم داشت. حالا مربع این اختلاف را برای تک تک خانه‌های موجود در دیتاست حساب کرده و همه را با هم جمع می‌کنیم. اگر ۵۰۰ خانه در دیتاست وجود داشته باشد و مجموع مربع اختلاف‌ها ۸۶,۱۲۳,۳۷۳ دلار شود، آنوقت یعنی تابعمان در حال حاضر در حد ۸۶,۱۲۳,۳۷۳ دلار «خطا» دارد.حالا مجموع مربع خطاها به دست آمده را بر ۵۰۰ تقسیم می‌کنیم تا ببینیم بطور میانگین، با قیمت واقعی هر خانه چقدر اختلاف داریم. این مقدار میانگین خطاها، هزینه (Cost) تابع ماست.اگر بتوانیم با بالا و پایین کردن وزن‌ها هزینه تابع را به صفر برسانیم، یک تابع ایده‌ال خواهیم داشت! به عبارت دیگر، تابع ما قادر خواهد بود قیمت فروش تک‌تکِ خانه‌های موجود در دیتاست را با دقت صددرصدی حساب کند. هدف ما هم همین است؛ یعنی رساندن هزینه به کمترین حد ممکن با جایگذاری وزن‌های مختلف در تابع.گام سوم - حالا گام دوم را با تک تک ترکیب‌های ممکن برای وزن‌ها تکرار می‌کنیم. هروقت هزینه به کمترین حد ممکن خود رسید، مسئله حل شده است!حالا وقت سورپرایزه!فکر نمی‌کردید یادگیری ماشین انقدر راحت باشد، مگر نه؟ ما یک مقدار داده جمع کردیم، آنها را به خورد سه الگوریتم عمومی ساده دادیم، و توانستیم به تابعی برسیم که قیمت همه خانه‌های محله را محاسبه می‌کند. آژانس‌های املاک برید کنار، ما داریم میایم!ولی این کل قضیه نیست! بیایید با چند حقیقت شگفت‌انگیز، پاک هوش از سرتان ببرم!در چهل سال گذشته، تحقیقات در شاخه‌های مختلف (مثلاً زبان‌شناسی یا ترجمه) نشان داده‌اند که اگر یک گروه از افراد سعی کنند خودشان قوانین محاسبه تابع را پیدا کنند و یک کامپیوتر هم با الگوریتم‌های عمومی یادگیری این کار را بکند، نتیجه کار کامپیوتر همیشه بهتر است! این رویکرد «احمقانه»‌ای که گفتیم، کل پرستیژ یک عده آدم متخصص و ماهر را با خاک یکسان می‌کند!تابعی که با هم نوشتیم واقعاً احمقانه بود! این تابع هیچ ایده‌ای ندارد که «مساحت» و «اتاق» اصلاً چه هستند! کل چیزی که می‌داند این است که برای رسیدن به جواب صحیح، باید این عددها را در اندازه‌های مختلف با هم قاطی کند.من و شما هیچ ایده‌ای نداریم که چرا یک سری وزن‌ بخصوص جواب صحیح را به ما می‌دهد و بقیه وزن‌ها، نه. در واقع، تابعی ساخته‌ایم که می‌توانیم اثبات کنیم که درست کار می‌کند، اما هیچ ایده‌ای در مورد اینکه خود تابع چیست نداریم!یک لحظه تصور کنید که به جای مساحت و تعداد اتاق‌ها، ورودی تابعمان یک آرایه‌ از اعداد بود. فرض کنید هرکدام از عددها، بیانگر میزان روشنایی (Brightness) تنها یک پیکسل از عکسی بود که دوربینی نصب شده بالای ماشینتان گرفته است. حالا تصور کنید که خروجی تابع به جای «قیمت»، «زاویه چرخش فرمان خودرو» باشد. دیدید چه شد؟ حالا شما یک تابع دارید که می‌تواند ماشینتان را خود به خود هدایت کند‌!آدم باورش نمی‌شود! مگر نه؟انقدرام راحت نیستا! اون قضیه امتحان کردن همه ترکیب‌های ممکن وزن‌هارو چی میگی؟بله، درست می‌گویید. واضح است که نمی‌توانیم به امید پیدا کردن بهترین ترکیب، همه ترکیب‌های ممکن را یکی یکی امتحان کنیم. این کار تا ابد قرار است طول بکشد؛ چون اعداد هیچ‌وقت تمام نمی‌شوند.برای اینکه عمرمان را در جستجوی وزن‌ها هدر نکنیم، ریاضی‌دان‌ها کلی روش‌ هوشمندانه‌ پیدا کرده‌اند که با آنها می‌شود بدون نیاز به امتحان کردن یک عالمه عدد، مقادیر مناسب را پیدا کرد. یکی از این روش‌ها این است:در قدم اول، معادله‌ ساده‌ای می‌نویسیم که گام دوم در مراحل پیدا کردن تابع بالایی‌ را نشان دهد: این همان تابع هزینه ماست.حالا بیایید همین معادله را با نمادهای ریاضی یادگیری ماشین بازنویسی کنیم (می‌توانید فعلا این نمادها را نادیده بگیرید!).تتا (θ) نشانگر وزن‌های فعلی ماست. (J (θ یعنی هزینه وزن‌های فعلی.این معادله نشان می‌دهد که تابع تخمین قیمت ما برای وزن‌هایی که الآن وارد کرده‌ایم، چقدر خطا دارد. اگر نمودار این معادله هزینه را برای همه مقادیر ممکن وزن «تعداد اتاق» و وزن «مساحت» رسم کنیم، شکلی شبیه این خواهیم داشت:نمودار تابع هزینه‌‌مان شبیه کاسه است. محور عمودی هزینه را نشان می‌دهد. در این نمودار، پایین‌ترین نقطه آبی‌رنگ همان جایی است که هزینه به کمترین حد ممکن خود می‌رسد؛ به عبارت دیگر، در این نقطه میزان خطای تابع در حداقلی‌ترین حالت قرار دارد. در بالاترین نقاط نمودار، تابع ما بیشترین اشتباه را خواهد داشت. بنابراین اگر پیدا کنیم که با چه وزن‌هایی می‌توانیم به نقاط آبی‌رنگ برسیم، جواب سوالمان را پیدا کرده‌ایم!به این ترتیب، تنها کاری که باید بکنیم این است که با تغییر دادن وزن‌ها، روی نمودار به طرف پایین برویم و به ته ته دره برسیم. اگر وزن‌هایمان را ذره ذره طوری تغییر بدهیم که همیشه جهت حرکتمان به طرف پایین باشد، در نهایت به پایین‌ترین نقطه خواهیم رسید. با این روش، دیگر لازم نیست همه ترکیب‌های ممکن موجود در جهان را تست کنیم!اگر درس‌های حسابان در خاطرتان مانده باشد، یادتان هست که اگر از یک تابع مشتق بگیریم، می‌توانیم شیب منحنی در هر نقطه را به دست بیاوریم. به عبارت دیگر، در هر نقطه‌ای که باشیم می‌توانیم با این روش بفهمیم که مسیر رو به پایین از کدام طرف است.پس اگر مشتق جزئی تابع هزینه‌مان را برای هرکدام از وزن‌ها حساب کنیم، می‌توانیم نتیجه حاصله را مقدار هر وزن کم کنیم. با این کار یک قدم به ته دره نزدیک‌تر خواهیم شد. با ادامه دادن همین روند، بلاخره به پایین ترین نقطه دره می‌رسیم که بهترین مقادیر ممکن برای وزن‌ها در آنجا به انتظارمان نشسته‌اند.این خلاصه‌ای بود از یکی از روش‌های پیدا کردن بهترین مقادیر ممکن برای وزن‌ها. به این روش گرادیان کاهشی دسته‌ای (Batch Gradient Descent) می‌گویند.فهم قضیه برایتان سخت بود؟ نگران نباشید‌! هنگام حل مسئله‌های واقعی یادگیری ماشین، قرار است از کتابخانه‌های یادگیری ماشین استفاده کنید که کل این محاسبات را خودشان برایتان انجام می‌دهند. اما سر درآوردن از اینکه دقیقاً چه اتفاقی در حین آنها می‌افتد، می‌تواند به دردتان بخورد. اگر دوست داشتید در مورد گرادیان کاهشی دسته‌ای بیشتر بدانید، این مطلب جزئیات قضیه را به خوبی توضیح می‌دهد.همه چیزهایی که نگفتمهمانطور که متوجه شدید، من به اختیار خودم یک سری جزئیات را حذف کردم تا اول کار زیادی سردرگمتان نکنم. اما حالا که کلیت قضیه را گرفتید، می‌توانیم سراغ آنها هم برویم.آن الگوریتم سه مرحله‌ای که برایتان گفتم، رگرسیون خطی چندمتغیره نام دارد. در رگرسیون خطی چند متغیره، داریم تخمین می‌زنیم که اگر خطی از تمامی نقاط داد‌ه‌های ما عبور کند، آن خط چه معادله‌ای خواهد داشت. بعد با همین معادله، قیمت خانه‌هایی که هرگز ندیده‌ایم را بر مبنای خانه‌هایی که خط رگرسیون از روی اطلاعاتشان می‌گذرد، تخمین می‌زنیم. رگرسیون خطی چندمتغیره روش خیلی مفیدی است که با آن می‌شود مسئله‌های «واقعی» را هم حل کرد.اما این روش فقط برای مسائل ساده جواب می‌دهد، نه الزاماً همه مسئله‌ها. می‌پرسید چرا؟ یکی از دلایلش این است که قیمت خانه‌ها همیشه مثل دانه‌های انار با نظم و ترتیب روی یک خط پیوسته نمی‌نشینند.خوشبختانه راه‌‌‌حل‌های خیلی زیادی برای حل این مسئله داریم. الگوریتم‌های یادگیری ماشین فراوانی هستند که با آنها می‌شود روی داده‌های غیرخطی (مثلا شبکه‌های عصبی، یا SVM با تابع کرنلی) کار کرد. حتی راه‌هایی هم هست که بتوانیم با آنها خط‌های پیچیده‌تر را هم در رگرسیون خطی برازش (Fit) کنیم. در همه این روش‌ها، هدف نهایی همچنان همان پیدا کردن بهترین وزن‌های ممکن است.یک مسئله دیگر که برایتان نگفتم، مشکل بیش‌برازش (Overfitting) است. خیلی راحت ممکن است شما یک سری وزن بدست بیاورید که قیمت خانه‌های موجود در دیتاست‌تان را کاملاً درست پیش‌بینی کنند، اما از پس تخمین برای خانه‌هایی که اطلاعاتشان در دیتاست نیست، برنیایند. البته این مسئله هم بی‌راه‌حل نیست؛ مثلا منظم‌سازی (Regularization) و اعتبارسنجی متقابل (Cross-Validation) از جمله راهکارهای بیش‌برازش هستند. یادگیری نحوه حل این مشکل، یکی از اصلی‌ترین مراحل برای استفاده موفق از یادگیری ماشین است.به عبارت دیگر، کلیت قضیه خیلی ساده‌ است؛ اما برای استفاده موفق از یادگیری ماشین و رسیدن به نتایج بدردبخور، باید کمی تجربه و مهارت کسب کرد. اما خب، این مهارت را هر توسعه‌دهنده‌ای می‌تواند وقت بگذارد و یاد بگیرد‌!طلسم یادگیری ماشینوارد شدن به دنیای یادگیری ماشین مثل اولین بار پا گذاشتن به هاگوارتز است؛ وقتی می‌بینی که تکنیک‌های یادگیری ماشین چه راحت مسئله‌های سخت را حل می‌کنند، با خودت فکر می‌کنی که لابد با یادگیری ماشین هر مسئله‌ای در دنیا را می‌شود حل کرد؛ حتی چوب جادو هم نمی‌خواهد، فقط کافی است داده لازم را داشته باشی، آنها را وارد کنی، و بعد بنشینی به تماشای کامپیوتر که به شکل سحرآمیزی معادله مناسب را به سادگی برایت پیدا می‌کند!اما باید یادمان باشد که اگر رابطه منطقی بین داده‌های ما و مسئله مورد نظرمان وجود نداشته باشد، حتی یادگیری ماشین هم نمی‌تواند معجزه کند. مثلاً اگر بخواهید قیمت خانه‌ها را بر مبنای گلدان‌های داخل آنها پیش‌بینی کنید، کامپیوتر فقط برمی‌گردد و یک نگاه عاقل اندرسفیه بهتان می‌اندازد. چرا که هیچ ارتباط منطقی بین قیمت خانه و گیاهان داخلش وجود ندارد و کامیپوتر هرچه زور بزند، به هیچ راه حل درستی نخواهد رسید.فقط روابطی را می‌توانید مدلسازی کنید که واقعا وجود داشته باشند.پس هروقت که احساس کردید شگفتی‌های یادگیری ماشین طلسمتان کرده، یادتان بیاورید که اگر یک آدم متخصص نتواند با همین داده‌ها همین مسئله را به شکل دستی حل کند، احتمالاً کامپیوتر هم قرار نیست بتواند. به جای چنین مسائل غیرمعقولی، سراغ مشکلاتی بروید که آدم‌ها می‌توانند حلشان کنند، اما اگر کامپیوتر سریع‌تر حلشان کند خیلی بهتر می‌شود.چطور در مورد یادگیری ماشین بیشتر یاد بگیریم؟به نظر من، بزرگترین مشکل در راه یادگیری ماشین این است که بیشتر پژوهش‌های علمی و تحقیقات تبلیغاتی از آن استفاده می‌کنند. برای همین منابع موجود در مورد آن هم بیشتر تخصصی است و برای کسانی که دوست دارند بدون کار تخصصی فقط کلیت قضیه را بفهمند، مطالب چندانی نوشته نشده است. اما خب، اوضاع هر روز دارد بهتر می‌شود. مثلاً اندرو نگ (Andrew Ng) یک دوره بی‌نظیر و رایگان در کورسرا دارد که هرکسی با مدرک مرتبط به کامپیوتر و یک ذره دانش ریاضی می‌تواند از آن استفاده ببرد. همچنین اگر فریم‌ورک SciKit-Learn برای پایتون را دانلود کنید، صدها الگوریتم یادگیری ماشین خواهید داشت که می‌توانید همه‌شان را یکی یکی آزمایش کنید.این مطلب با همکاری مریم مقدس برهان و بر اساس متن زیر ترجمه شده است:&#34;Machine Learning is Fun!&#34; by Adam Geitgey @ Mediumمطلب‌های دیگر کوئرامگ در زمینه یادگیری ماشین:۱۰ ترند هوش مصنوعی در چند سال آیندهیادگیری ماشین به زبان ساده: عملی‌ترین راهنمای دنیادیپ‌فیک ما را به کجا خواهد برد؟ خوب، بد، و زشت دیپ‌فیک‌ها</description><category>فاطمه عامل</category><author>فاطمه عامل</author><pubDate>Wed, 11 Sep 2019 16:03:06 +0430</pubDate></item><item><title>۱۸ منبع آموزشی برتر برای یادگیری زبان برنامه نویسی جاوا</title><link>https://virgool.ir/Quera-Mag/۱۸-منبع-آموزشی-برتر-برای-یادگیری-زبان-برنامه-نویسی-جاوا-mxaa9gl841h7</link><description>زبان برنامه نویسی جاوا یکی از پراستفاده‌ترین زبان‌های حال حاضر دنیاست، بازار کار خوبی دارد و یادگیری آن آسان است. اگر شما هم به یادگیری جاوا علاقه دارید، منابع متعددی برای آموزش آن وجود دارد. چه به آموزش‌های متنی علاقه داشته باشید، چه ویدئویی، و چه آموزش‌های تعاملی گزینه‌های مخلتفی پیش روی شما قرار دارد. اگر قصد دارید به شکل خودآموز کار با جاوا را یاد بگیرید در این مطلب سعی کرده‌ایم تا هر آنچه برای یادگیری این زبان نیاز دارید، در اختیار شما قرار دهیم.آنچه در این مطلب به آن نگاه می‌کنیم:سایت‌های آموزشی آنلاین برای یادگیری جاوا: شامل معرفی و مقایسه‌ای بر کورسرا، Javatpoint، کوئراکالج، Tutorialspoint و Udemyدیگر منابع آموزش آنلاین برای یادگیری جاوا: شامل پادکست‌ها، کانال‌های یوتیوب و اکانت‌های توئیتر معروف مرتبط با زبان جاوا&gt;&gt; سایت‌های آموزش آنلاین:۱. سایت Courseraوبسایت کورسرامناسب برای: سطح مبتدی و متوسطنوع آموزش: با تمرکز بر ویدئواین سایت یکی از برترین سایت‌های آموزشی جهان است که از دوره‌های آموزشی هنر گرفته تا علوم کامپیوتر را داراست. در حال حاضر در کورسرا، ۲ دوره جالب برای زبان برنامه‌ نویسی جاوا وجود دارد که عبارت‌اند از:برنامه نویسی جاوا و اصول مهندسی نرم افزار توسط دانشگاه Dukeبرنامه‌نویسی شی گرای جاوا توسط دانشگاه  Californiaمحتوای آموزشی این دوره‌ها شامل ویدئو، درسنامه، آزمون و دیگر محتواهای آموزشی می‌شود.نکات مثبت:دارای تالار گفتمان و امکان تعامل با سایر هم‌دوره‌ای‌هادارای نسخه موبایل خوب و کاراآموزش‌های بسیار ساختارمندنکات منفی:به دلیل تحریم در ایران حتماً باید با فیلترشکن به سایت مراجعه کنید.اگر به دنبال آموزش تعاملی هستید، ویدئومحور بودن آموزش‌ها ممکن است برایتان جذاب نباشد.۲. سایت Queraمناسب برای: سطح مبتدی و متوسطنوع آموزش: تعاملیکوئرا کالج دارای آموزش‌های برنامه نویسی تعاملی برای زبان‌های مختلفی چون پایتون، C++ ،C و جاوا است.دوره آموزش مقدماتی جاوا کوئراکالج نقطه شروع خوبی برای یادگیری زبان جاوا محسوب می‌شود. در این دوره جمعی از اساتید برنامه نویسی که از مدال‌آوران المپیادهای کشوری و جهانی کامپیوتر هستند، اقدام به آموزش برنامه‌نویسی به زبان ساده و گام‌به‌گام نموده‌اند.سعی شده است طراحی این دوره‌ها به گونه‌ای باشد که شرکت‌کنندگان در هر سطحی از مبتدی تا حرفه‌‌ای بتوانند شروع به یادگیری یا افزایش مهارت خود در زبان های مختلف برنامه نویسی نمایند. تمام آموزش‌های این دوره‌ها شامل مثال‌ها و تمرین‌هایی است که به صورت آنلاین و خودکار تصحیح می‌شوند تا شرکت‌کننده بتواند پیشرفت خود را مشاهده و بررسی کند. به علاوه تا پایان دوره، اساتید آن به صورت رایگان به عنوان پشتیبان همراه شرکت‌کنندگان خواهند بود تا سوالات و مشکلات احتمالی را پاسخ دهند و در انتها نیز گواهی پایان دوره به شرکت‌کنندگان اهدا خواهد شد.نکات مثبت:کامپایلر آنلاین و داوری خودکار کدهای نوشته شدهمحتوای متنوع آموزشی شامل درسنامه، تمرین، حل مسئله و پروژه‌های واقعیپشتیباتی اساتید و ارتباط با شرکت کنندگان دیگر دورهدارای گواهی پایان دورهمحتوای فارسینکات منفی:اگر به آموزش ویدئویی عادت دارید، ممکن است کمی طول بکشد تا به آموزش تعاملی عادت کنید.۳. سایت Javatpointسایت Javatpointمناسب برای: سطح مبتدی تا پیشرفتهنوع آموزش: متن‌محوراین سایت یکی از محبوب‌ترین سایت‌ها برای یادگیری زبان‌های برنامه‌نویسی مختلفی از جمله Java ،C++ ،C و بقیه زبان‌ها است. دوره‌های آن در حوزه جاوا شامل این‌ها می‌شود:آموزش مقدماتی جاوادر ادامه آموزش‌های جداگانه دیگری برای برنامه‌نویسی اندروید و فریم‌ورک‌های معروف جاوا به عنوان مثال Struts2 ،Hibernate و Spring نیز وجود دارد.بخش آموزش جاوا، هر آنچه که نیاز دارید را در اختیار شما می‌گذارد. شروع این آموزش‌ها از اصول و ساختار اولیه این زبان شروع می‌شود، و در مورد پارادایم‌های شی گرایی صحبت می‌کند تا مباحث پیشرفته شبکه و...نکته قابل توجه و جالب این سایت، قرار گرفتن درسنامه‌ها در منویی در کنار صفحه است که با یک جستجوی راحت می‌توانید به سرعت درسنامه مورد نظر خودتان را پیدا کنید. این آموزش‌ها شامل تصاویر، نمودار و مثال‌های متعددی است.نکات مثبت:دارای رابط کاربری بسیار آساندارای محتوای آموزشی متنوع شامل نمونه کدها، تصاویر، نمودارها و...آموزش‌های گام‌به‌گامدارای کامپایلر آنلاین برای تست کدنکات منفی:ساختار آموزش‌ها کمی پیچیده است.متن‌محور بودن آموزش‌ها ممکن است کمی حوصله‌سربر باشد.نسخه موبایل آن داری برخی مشکلات کاربری است.۴. سایت Tutorialspointوبسایت Tutorialspointمناسب برای: مبتدی تا پیشرفتهنوع آموزش: متن‌محوراین سایت یکی دیگر از منابع آموزشی عالی برای یادگیری زبان‌های برنامه‌نویسی مختلف و فناوری‌های وب است. دوره‌های آن برای جاوا عبارت‌اند از:آموزش مقدماتی جاواآموزش تکنولوژی‌های جاوا: مباحث مختلفی از جاوا را مورد پوشش قرار داده است. به عنوان مثال: Apache Ant, iBatis, Hibernate, Maven, JSP, servlets و...نکات مثبت:به راحتی مبحثی را که به دنبال آن میگردید پیدا میکنیددارای کامپایلر جاوا برای تست کدهاشامل بسیاری از مباحث تکمیلی‌تر زبان جاوانکات منفی:به جز آموزش‌های ویدئویی، زمان مشخصی برای به روزرسانی آموزش‌ها وجود ندارد.متن‌محور بودن آموزش‌ها ممکن است کمی حوصله‌سربر باشد.۵. سایت Udemy:وبسایت Udemyمناسب برای: سطح مبتدی تا پیشرفتهنوع آموزش: ویدئوییاین سایت یک بستر آموزش آنلاین است که شامل ۸۰هزار دوره آنلاین در طیف وسیعی از موضوعات شامل برنامه‌نویسی و طراحی گرافیکی است. برخلاف سایت‌هایی چون کورسرا، سایت Udemy دوره‌های آموزشی دانشگاهی ارائه نمی‌دهد، بلکه هر کس می‌تواند دوره‌های آموزشی خودش را در آن قرار دهد.در حال حاضر سایت یودمی بیش از ۱۳۰۰ نتیجه برای آموزش زبان جاوا در تمامی سطوح در اختیارتان قرار می‌دهد که با توجه به سطح مهارت و دانشی که دارید می‌توانید دوره مورد نظر خود را انتخاب کنید. محتوای این دوره‌ها نیز شامل ویدئوهای آنلاین میباشد.نکات مثبت:دارای دوره‌های جاوا در هر سطحی برای دانشجویان مبتدی تا پیشرفتهدارای مثال و نمونه‌های حل شده مناسبداری قابلیت پخش ویدئوهای آموزشی در پلتفرم‌های iOS و Androidدسترسی همیشگی به تمامی دوره‌هانکات منفی:تعداد آموزش‌ها بسیار زیاد است و پیدا کردن باکیفیت‌ترین آموزش در بین آن‌ها کار سختی است.آموزش‌ها تعاملی نیست و ممکن است به دلیل تمرین کم، سطح یادگیری خیلی بالا نباشد.&gt;&gt; دیگر منابع آموزشی زبان جاوا۱. معرفی پادکست‌های جاواپادکست‌های آموزشی جاواپادکست‌ها راهکاری مفید و در عین حال سرگرم‌کننده برای رشد فردی و یادگیری بهتر هستند. در زمینه زبان جاوا سه پادکست تخصصی معروف زیر وجود دارند:سری پادکست Enterprise Java Newscast: این سری از پادکست‌ها، توسط کیتو مان و دو نفر دیگر از همکارانش به شکل ماهانه تولید می‌شود. این سری شامل اپیزودهایی یک ساعته است که در آن‌ها در مورد آخرین عناوین روز حوزه توسعه نرم‌افزار، مثلاً Oracle، JavaFX، Java EE و... صحبت می‌شود. &gt; لینک پادکستسری پادکست Java Pub House: این سری از پادکست‌ها توسط Freddy Guime و Bob Paulin تولید می‌شوند و در آن در مورد اینکه چگونه با زبان جاوا برنامه‌نویسی کنیم می‌توانید آموزش‌های جالبی دریافت کنید، کتابخانه‌های مختلف جاوا را بیشتر بشناسید و از انتشار ورژن‌های مختلف جاوا باخبر شوید. &gt; لینک پادکستسری پادکست‌های Illegal Argument: در این پادکست، سه توسعه‌دهنده با نام‌های مارک، گِرِگ و پیتر به صورت یک‌هفته در میان در مورد موضوعات مربوط به جاوا و تمامی مباحث متنوعی که به جاوا برمیگردد صحبت میکنند. &gt; لینک پادکستپادکس معروف Illegal Argument۲. معرفی کانال‌های یوتیوب در زمینه آموزش جاوااگر به دیدن ویدئوهای آموزشی علاقه دارید، کانال‌های یوتیوب متعددی وجود دارند که می‌توانید برای یادگیری برنامه‌نویسی و به شکل خاص زبان جاوا به آن‌ها مراجعه کنید:کانال یوتیوبی Oracle Developers: ‌در این کانال با ۴۵هزار دنبال کننده، جلسات ضبط شده کنفرانس‌های مربوط به حوزه اوراکل، آموزش‌های جاوا، مصاحبه‌های سخنرانان فعال در حوزه جاوا، اعلان‌ها و... به اشتراک گذاشته می‌شود. با دنبال کردن این کانال می‌توانید به آینده فن‌آوری‌های اوراکل گوش دهید و با جامعه‌ی جاوا ارتباط برقرار کنید. &gt; لینک کانال یوتیوب Oracle Developersکانال ویدئویی WebDevMentors: این کانال با ۱۴هزار دنبال کننده، با آموزش‌ها و دوره‌هایی که دارد، می‌تواند برای علاقه‌مندان به حوزه IT انتخاب مناسبی باشد. هدف این کانال به اشتراک گذاری دانش و دسترسی آسان به آموزش‌های رایگان است. برخی از دوره‌های موجود در این کانال، آموزش Bootstrap، و آموزش‌های پایتون و جاوا برای مبتدیان است و از دوره‌های دیگر این کانال می‌توان به دوره‌های Android ، PHP و HTML5 اشاره کرد. &gt; لینک کانال یوتیوب WebDevMentorsکانال ویدئویی LevelUpTuts: با ما دولوپر بهتری باشید، شعاریست که توسط Scott Tolinski سازنده‌ی این کانال یوتیوبی معروف با ۳۰۰هزار دنبال‌کننده بیان می‌شود. این کانال در سال ۲۰۱۲ راه‌اندازی شده و هدف آن آموزش‌های ساده و بسیار کاربردی برای شروع کار در زمینه توسعه‌ی وب است. &gt; لینک کانال یوتیوب LevelUpTutsکانال ویدئویی Derek Banas: اگر به صفحه این کانال یوتیوبی نگاه کنید، نام هر تکنولوژی و زبان برنامه‌نویسی که تصور کنید به چشمتان میخورد. این کانال با نزدیک به ۱ میلیون دنبال کننده، مرجع مناسبی برای شروع و یادگیری زبان‌های برنامه‌نویسی، به خصوص جاواست. این کانال فیلم‌های آموزشی برنامه‌نویسی جدیدش را بر مبنای درخواست کاربران ایجاد می‌کند و آن‌ها را در روزهای شنبه و چهارشنبه صبح در کانال قرار میدهد. &gt; لینک کانال یوتیوب Derek Banasکانال ویدئویی TheNewBoston: این کانال با ۲ میلیون و ۳۰۰هزار دنبال کننده در رده کانال‌های با کیفیت برای آموزش زبان برنامه‌نویسی جاوا است که علاوه بر جاوا، آموزش‌های جالب و مناسبی از مبتدی تا پیشرفته برای بسیاری از دیگر زبان‌ها و از جمله جاوا اسکریپت و C دارد. &gt; لینک کانال یوتیوب TheNewBoston ۳. معرفی اکانت‌های توئیتر افراد فعال در حوزه جاوابا توجه به اینکه جاوا یکی از معروف ‌ترین زبان‌های برنامه‌نویسی است، جای تعجبی ندارد که افراد تاثیر گذار زیادی در این زمینه فعالیت کنند. اگر به دنبال اخبار جدید از جاوا و همایش‌های این زبان هستنید می‌توانید با دنبال کردن این چند اکانت توییتر در این حوزه به روز باشید:اکانت توییتر Arun Gupta: آرتور توسعه‌دهنده سایت Red Hat است. او همچنین در زمینه Oracle همکاری گسترده‌ای با انجمن‌های توسعه‌دهندگان و تیم‌های مهندسی داشته و یکی از بنیان‌گذاران تیم Java EE است. آرتور گوپتا نویسنده ۵ کتاب در زمینه جاوا نیز هست. &gt; اکانت: @arunguptaاکانت توییتر Markus Eisele: مارکوس بیش از ۱۴ سال تجربه در زمینه Java EE دارد و علاوه بر کدنویسی، به شکل جدی وبلاگ‌نویسی هم انجام می‌دهد. اگر می‌خواهید از آخرین خدمات جاوا و آخرین اخبار این حوزه با خبر باشید، آیزل را دنبال کنید. &gt; اکانت: @myfearاکانت توییتر Mark Reinhold: مارک معمار ارشد گروه پلتفرم جاواست که در این زمینه تخصص و تجربه بسیار زیادی دارد و به عنوان مهندس اصلی Java SE و Open JDK می‌باشد. می‌توانید برای با خبر شدن از انتشار نسخه‌های جدید جاوا او را دنبال کنید. &gt; اکانت: @mreinholdاکانت توییتر Brian Goetz: گوتز معمار اوراکل زبان و کتابخانه‌های جاواست. او نویسنده کتاب Java Concurrency in Practice است و مهارت خود را به طور کاربردی و قابل فهمی با دیگران به اشتراک گذاشته است. او در زمینه جاوا کنفرانس‌های متعددی برگزار می‌کند و هم اکنون تمرکزش روی مسائل مربوط به عملکرد زبان جاوا است. &gt; @BrianGoetzاکانت توییتر Mario Fusco: ماریو یکی از توسعه‌دهندگان برجسته Red Hat می‌باشد، او نویسنده کتاب Java 8 Lambdas in Action است و به طور مرتب اکانت گیت‌هاب‌ش را به روز میکند و روی کتابخانه متن باز Lambda کار میکند. &gt; اکانت: @mariofuscoاکانت توئیتر ماریو فاسکو، یکی از توسعه دهندگان ارشد جاواانجمن‌های جاوا:انجمن جاواکاپ: انجمن جاواکاپ، گروهی است که برای تقویت فعالان حوزه تولید نرم‌افزار مرتبط با جاوا راه‌اندازی شده است. جاواکاپ با کمک به کارآفرینان، کارفرمایان و برنامه‌نویسان در ایران می‌کوشد تا رونق، کیفیت و رضایت بیشتری در حوزه نرم‌افزارهای مبتنی بر جاوا فراهم آید. هدف انجمن جاواکاپ، گسترش کمی و ارتقای کیفی صنعت جاوا در ایران است. در ایران جاواکاپ جزو انجمن‌هایی است که در زمینه جاوا خیلی شناخته شده است و از آموزش تا مسابقه و یا بهتر است بگوییم هر چیزی که در رابطه جاوا باشد در این سایت میتوان یافت. همچنین آرشیو سوالات جی‌کل و تمرین‌های دوره آموزشی جاواکاپ را میتوانید از این لینک در کوئرا ببنید و از با آن‌ها تمرین کنید.سخن پایانیاینکه شما ترجیح می‌دهید برنامه‌نویسی را چه‌طور یاد بگیرید، بستگی به سلیقه شخصی شما دارد. بعضی‌ها آموزش‌های ویدئویی را ترجیح می‌دهند که اگر در این دسته قرار دارید منابعی چون کورسرا، Udemy و البته کانال‌های یوتیوب می‌تواند برایتان گزینه مناسبی باشد. بعضی‌ها آموزش تعاملی و تمرین‌محور را ترجیح می‌دهند که کوئراکالج می‌تواند گزینه خوبی برایشان باشد. و البته که اگر آموزش متنی را ترجیح می‌دهید هم گزینه‌های مختلفی همچون  Javatpoint و Tutorialspoint در اختیار شما قرار دارد.بعد از یادگیری اولیه، می‌توانید با دنبال کردن پادکست‌ها، اکانت‌های توئیتری و کانال‌های یوتیوبی، عمق یادگیری خود را بیشتر کنید و آموخته‌های خود را به روز‌تر نگاه دارید. https://mag.quera.ir/-a1ahrfjwsvmj کوئرامگ مجله‌ای تخصصی برای  توسعه‌دهندگان است که هر هفته با مطلب‌هایی در زمینه تکنولوژی، رشد فردی و  آینده برنامه‌نویسی به‌روزرسانی می‌شود. برای اطلاع از آخرین مطلب‌های ما،  می‌توانید توئیتر یا کانال تلگرام ما را دنبال کنید.</description><category>فاطمه عامل</category><author>فاطمه عامل</author><pubDate>Wed, 14 Aug 2019 13:09:51 +0430</pubDate></item><item><title>آشنایی با خطاهای رایجی که در سایت‌ها میبینیم!</title><link>https://virgool.ir/@fatemeh.amel/آشنایی-با-خطاها-و-کدهای-رایج-سرور-http-vjbcqv3sx3wx</link><description>زمانی که در وب در حال گشت و گذار و مرور صفحات مختلف وب هستیم، کدهایی در پس زمینه بین واسط کاربری ما (مرورگر) و سرور رد و بدل می‌شوند که به آنها در اصطلاح کدهای وضعیت HTTP یا (HTTP response status codes) می‌گویند.کدهای وضعیت HTTP مانند خطاهای ۴۰۴، ۳۰۱ و ۵۰۰ شاید برای یک کاربر معمولی چندان معنایی نداشته باشند، اما برای سئوکاران بسیار مهم هستند. وظیفه رفع این خطاها اکثرا بر عهده برنامه نویس می‌باشد. از آنجایی که ربات‌های موتورهای جستجو مانند ربات گوگل، از این کدها در ارزیابی سلامت یک سایت استفاده می کنند، خوب است که همیشه برنامه‌ نویس ها نسبت به سلامت سایتشان توجه کافی داشته باشند.این کدها توسط کنسرسیوم‌ها و بنیادهای جهانی استاندارد سازی وب از جمله IETF یا (Internet Engineering Task Force) و W3C یا (World Wide Web Consortium) تعریف و سازمان دهی شده‌اند و امروزه تقریبا سرور یا مرورگری وجود ندارد که از اصول آنها پیروی نکند.شاید تا به حال با وارد کردن نام یک وب سایت و یا رفتن به صفحه‌ای از یک وب با خطایی روبه‌رو شده باشید که از شایع‌ترین آنها می‌توان به خطای ۴۰۴ اشاره کرد. کدهای وضعیت HTTP چه به لحاظ فنی و چه به لحاظ کاربری، کاربردهای فراوانی دارند و لذا آشنایی با جزئیات و مفاهیم آنها می‌تواند به میزان زیادی به توسعه دانش و اطلاعات عمومی وب، کمک کند.البته به این نکته هم اشاره کنیم که در IIS مایکروسافت ممکن است این خطاها با عددی اعشاری در کنار آن نمایش داده شود، این تنها به این دلیل است که مایکروسافت خطاهای رخ داده را با جزئیات بیشتری به سمع و نظر کاربران می‌رساند.چگونه خطاهای وضعیت HTTP را بررسی کنیم؟برای این مورد می‌توانید از قابلیت‌های مرورگر برای توسعه‌دهندگان وب (Web Developers) استفاده کنید، معمولا در مرورگرهایی مثل فایر فاکس، گوگل کروم و... قسمتی تحت عنوان ابزارهای توسعه‌دهندگان (Developers Tools) یا عناوینی شبیه آن وجود دارد که تمام فعل و انفعالات واسط کاربری (User Agent) و سرور را نشان می‌دهد. نکته قابل توجه برای علاقه‌مندان این است که برای شروع فعالیت در این حوزه، باید با مفاهیم و دانش پایه برنامه نویسی آشنایی داشته باشند.بریم با لیست کدهای وضعیت HTTP آشنا شویم :قبل از شروع اشاره کنیم به اینکه، هر وب سرور درخواست هایی را که دریافت می‌کند را با یک کد وضعیت خاص پاسخ دهی می‌نماید. هر کد وضعیت HTTP از ۳ عدد تشکیل شده و به صورت کلی به ۵ گروه مختلف تقسیم می‌شود.اولین رقم آنها نمایان گر گروه و یا کلاس آنها می‌باشد که برای شناسایی یا تعریف کد مورد نظر در یک دسته‌بندی خاص استفاده می‌شود که یکی از پنج حالت زیر است:سری 1XX: به این معنی که درخواست، پذیرفته شده است یا فرآیند همچنان ادامه دارد.سری 2XX: تایید می‌کند که عمل با موفقیت انجام شد و یا با موفقیت دریافت شد. همانند کد ۲۰۰سری 3XX: راهنمایی مجدد یا هدایت لازم دارد، برای تکمیل درخواست خود، به چیز دیگری نیاز دارد. همانند ریدایرکت ۳۰۱سری 4XX: خطای سرویس‌گیرنده (سمت کاربر) که نشان می‌دهد درخواست قابلیت تکمیل ندارد یا اینکه کاربر چیزی را نادرست وارد می‌کند.سری 5XX: خطای سرویس‌دهنده (سمت سرور) که حاکی از ناتوانی سرور در تکمیل یا انجام درخواستی است که ظاهراَ معتبر بوده است.حال با توجه به آشنایی به سری‌های مختلف می‌توان به راحتی حدس زد که اگر خطایی با پیش شماره ۴ رخ داد، مربوط به خطایی است که از سمت کاربر رخ داده و یا اگر خطایی مانند ۵۰۳ رخ داد ، شما متوجه خواهید شد این خطا مربوط به سرور است.کدهای سری ۱۰۰، مربوط به اطلاعات (Informational)اولین سری از کدهای HTTP، با عدد ۱۰۰ شروع می‌شود که در مورد نقل و انتقال بسته‌های اطلاعات مثل ارسال و دریافت فایل، کاربرد دارند و حالت موقت پاسخ سرور را نشان می‌دهند، به فرض وقتی از متد POST در فرم های وب استفاده می‌کنیم، دریافت کد ۱۰۰ به معنی این است که سرور درخواست ما را پذیرفته و فرآیند پردازش اطلاعات ادامه دارد، البته بدون ارسال کد ۱۰۰ نیز این فرآیند ادامه می یابد لذا ارسال آن از طرف سرور ضروری نیست.کد 101: تعویض پروتکل‌ها (Switching Protocols)کاربر به سرور درخواست تغییر پروتکل را داده و سرور در حال تأیید این درخواست می‌باشد. در برنامه‌هایی که از آژاکس (Ajax) استفاده می‌کنند، این کد می‌تواند کاربرد داشته باشد.کد 102: در حال پردازش (Processing)وقتی سرور در حال پردازش‌ درخواست‌های کاربر باشد، این وضعیت نمایش داده خواهد شد. از سرور با ارسال کد ۱۰۲ به مرورگر می‌گوید که عملیات درخواستی، دریافت شده و در حال پردازش است.کد 103: ایست بازرسی (Early Hints) این کد زمانی رخ می‌دهد که سرور در حال بازخوانی درخواست کاربر برای استفاده از متد PUT یا POST و حذف درخواست اضافی می‌باشد. این کدها، عموماً در معرض نمایش کاربران نیستند و سرورها با این کدها با سیستم کاربر صحبت کرده تا ارتباط حفظ شود و درخواست‌ها به درستی ارسال و دریافت گردد.کدهای سری ۲۰۰: درخواست موفق (Success) مهم برای سئوسرور درخواست ارسال شده را با موفقیت پردازش کرده و صفحه وب درخواستی بدون هیچ تغییر فراهم است. کدهای سری ۲۰۰ معمولا به معنی بی نقص بودن درخواست و عملکرد صحیح سرور است.کد استاندارد HTTP در وب، با عدد ۲۰۰ نشان داده می‌شود، دریافت پاسخ ۲۰۰ از سرور به این معنی است که آدرس درخواستی (در متد GET) یا عملیات مورد نظر (در متد POST) به طور کامل و موفقیت آمیز توسط سرور انجام شده است، در یک ارتباط بدون نقص بین واسط کاربری (user agent) و سرور، کدهای سری ۲۰۰ باید دریافت شوند.کد 201: ساخته شده (Created)درخواست ارسالی موفقیت آمیز بوده و سرور برای ارسال درخواست یک منبع جدید ایجاد کرده است. ارسال کد ۲۰۱ تنها در صورتی صحیح است که سرور منبع جدید را ساخته باشد، در غیر اینصورت (اگر منبع هنوز ساخته نشده باشد) باید کد ۲۰۲ را ارسال کند.کد 202: موافقت شده (Accepted)سرور درخواست موافقت شده را هنوز محاسبه نکرده است. کد ۲۰۲، به این معنی است که با درخواست واسط کاربری موافقت شده، اما پردازش عملیات به طور کامل صورت نگرفته است، به همین دلیل تا پایان پردازش عملیات درخواستی، ممکن است تقاضای کاربر کامل شده یا برعکس، رد شود.کد 203: اطلاعات غیر معتبر (Non-Authoritative Information)سرور درخواست موافقت شده را پردازش کرده است ولی اطلاعات ارسالی (در پاسخ سرور) از یک منبع غیر معتبر است (به فرض کپی ازاطلاعاتی است که درستی آن تایید نمی شود)، تنظیم این کد در سرورها معمولا غیر ضروری است و می‌توان به جای آن کد ۲۰۰ را ارسال کرد.کد 204: پاسخ بدون محتوا (No Content)سرور با موفقیت درخواست را پردازش کرده اما محتوایی برای نمایش وجود ندارد. معمولا دریافت این پاسخ از سرور، بدین معنی است که آدرس درخواستی هیچ گونه تغییری از آخرین درخواست تا لحظه کنونی نداشته است و فایل یا صفحه مربوطه به همان صورت قبلی نشان داده می‌شود.کد 205:  بازنشانی محتوا (Reset Content)کد ۲۰۵ همانند کد ۲۰۴ است، یعنی در اینجا نیز هیچ محتوایی از طرف سرور ارسال نمی شود، اما در سمت کاربر، اطلاعات فعلی بازنشانی یا Reset می گردند که این معمولا منجر به ایجاد محتوای خالی می شود، این کد مخصوصا برای پاک کردن اطلاعات فرم های وب می تواند مورد استفاده قرار گیرد.کد 206: محتوای جزئی (Partial Content)درخواست با موفقیت پردازش شده ولی سرور محتوا جزئی را نمایش خواهد داد. از این کد برای حالت‌هایی که به فرض از امکاناتی نظیر ادامه دانلود (resume download) استفاده می‌کنیم، کاربرد دارد، با ارسال این کد توسط سرور، به قسمت خاصی از درخواست واسط کاربری به صورت جزئی پاسخ داده می‌شود.کدهای سری 300: انتقال (Redirection)‌کدهای سری ۳۰۰ مربوط به مواردی هستند که پاسخ به درخواست واسط کاربری از سرور، باید با انجام اعمال دیگری (در سمت کاربر) کامل شود، این عملیات معمولا توسط واسط کاربری (مثلا مرورگر) و بدون دخالت کاربر (به صورت خودکار) انجام می‌شود، به فرض عمل ریدایرکت یا انتقال خودکار از یک آدرس به آدرس دیگر، با ارسال کدهای سری ۳۰۰ انجام می‌شود، نکته مهم در اینجا این مسئله است که ریدایرکت‌ها نباید در یک درخواست، بیش از ۵ بار تکرار شوند، در غیر این‌صورت در اکثر مرورگرها، فرض بر حلقه (Loop) بی‌انتها شده و ارتباط قطع خواهد شد.کد 300: انتخاب چندگانه (Multiple Choices) مهم برای سئوسرور لیستی از لینک‌ها را نمایش داده و کاربر می‌تواند آنها را انتخاب کرده و به آن مکان برود. کد ۳۰۰ برای مواقعی است که سرور در پاسخ به درخواست واسط کاربری، چند منبع مختلف را پیشنهاد می‌دهد (مثلا یک فایل با فرمت های مختلف) و انتخاب یک URL را به عهده مرورگر کاربر می‌گذارد، عمل انتخاب نیز معمولا یا به صورت خودکار انجام می‌شود یا اینکه سرور یکی از URLها را به عنوان پیش فرض برگزیده و همراه پاسخ خود ارسال می کند.کد 301: انتقال همیشگی (Moved Permanently)کد ۳۰۱ یکی از مهم‌ترین و حساس‌ترین کدهای HTTP مخصوصا در علم سئو است، دریافت این کد از طرف سرور، به معنی انتقال همیشگی یک آدرس وب، به آدرسی دیگر است، از این کد مخصوصا هنگامی که در آدرس لینک‌های سایت، به هر دلیل تغییراتی ایجاد می‌شود، می‌توان جهت هدایت ربات‌های خزنده یا کاربران به لینک اصلی، استفاده کرد.کد 302: پیدا شد (Found) مهم برای سئودرخواست صفحه مورد نظر شما به صورت موقت به صفحه جدیدی ریدایرکت خواهد شد. این حالت با کد ۳۰۱ متفاوت است، در اینجا انتقال به صورت موقت انجام شده و آدرس اصلی همچنان معتبر و در دسترس خواهد بود، اما در ریدایرکت ۳۰۱، منظور از انتقال، انتقال همیشگی، حذف آدرس فعلی و جایگزینی آن با آدرس جدید است.کد 303: دیدن منبعی دیگر (See Other)این خطا در هنگامی رخ می‌دهد که کاربر باید برای دریافت درخواست خود به محل دیگری مراجعه کند. این کد مشابه کد ۳۰۲ عمل می‌کند، تفاوت در اینجا، تاکید روی متد GET است، در کد ۳۰۳ آدرس فعلی و آدرسی که کاربر به آن منتقل می‌شود، باید از طریق متد GET درخواست شوند که در حالت معمول نیز به اینصورت خواهد بود.کد 304: بدون تغییر (Not Modified)هنگامی که سرور این وضعیت را نمایش می‌دهد بدین معناست که از آخرین باری که درخواست ارسال شده ، صحفه مورد نظر اصلاح نشده است و در این حالت سرور به اجبار یک صفحه خالی به شما نمایش خواهد داد.کد 305: استفاده از پروکسی (Use Proxy)کاربر زمانی می‌تواند از صفحه مورد درخواست استفاده کند که از پروکسی استفاده کرده باشد.پروکسی در واقع سرور میانجی بین واسط کاربری و سرور اصلی است، از این رو و به دلایل امنیتی برخی مرورگرها مانند فایرفاکس و اینترنت اکسپلورر، از این قابلیت پشتیبانی نمی‌کنند.کد 306: تعویض پروکسی (Switch Proxy)کد ۳۰۶ هم مشابه کد ۳۰۵ است و مربوط به درخواست تغییر پروکسی، این کد در حال حاضر کاربردی ندارد.کد 307: انتقال موقت (Temporary Redirect) مهم برای سئوهمانند کد ۳۰۲ عمل کرده اما نوع ریدایرکت موقت آن کمی متفاوت خواهد بود. این حالت با ریدایرکت ۳۰۲ و ۳۰۳ فرق دارد، در اینجا انتقال نیاز به تایید کاربر داشته و به صورت خودکار انجام نمی‌شود، متدهای استفاده شده نیز باید بین لینک اصلی و لینک انتقالی مشترک باشد، بقیه شرایط مشابه کدهای ۳۰۲ و ۳۰۳ است و واسط کاربری باید لینک فعلی را همچنان و در مراجعات بعدی به عنوان لینک اصلی مد نظر قرار دهد.خطاهای سری 400، خطای سمت کاربر (Client Error)سرور قادر به تشخیص نوع درخواست کاربر نیست. کدها یا می‌توان گفت خطاهای سری ۴۰۰ مربوط به رویداد خطایی از جانب کاربر (سمت کاربر) در ارائه درخواست به سرور است، در پاسخ، سرور معمولا و به طور پیش فرض، به همراه کدهای HTTP عباراتی در توضیح خطای رخ داده ارسال می‌کند و دائمی یا موقتی بودن مشکل به وجود آمده را نیز تعیین خواهد کرد.ارور 400: درخواست بد (Error 400: Bad Request)خطای ۴۰۰ به دلیل درک نشدن شیوه نگارش (syntax) درخواست واسط کاربری از سرور رخ می‌دهد، در این حالت مفهوم تقاضای کاربر برای سرور روشن نیست و درخواست قابل پردازش نمی‌باشد، این خطا ممکن است به دلایل دیگر، از جمله نقص در انتقال داده‌ها (به فرض به دلیل قطع یا افت سرعت ارتباط) نیز رخ دهد.ارور 401: دسترسی نا معتبر (Error 401: Unauthorized)خطای ۴۰۱ به دلیل درخواست ارسالی غیر مجاز است. در این حالت ممکن است نیاز با لاگین باشد. در این حالت منبع درخواستی به طور کامل محدود نشده است، بلکه درخواست کاربر نیاز به تایید مجوزهای دسترسی (به طور معمول نام کاربری و کلمه عبور) دارد، به همین دلیل سرور در پاسخ خود یک فرم از نوع WWW-Authenticate را ارسال کرده و از کاربر می‌خواهد تا اعتبار خود را اثبات کند.ارور 402: نیاز به پرداخت (Error 402: Payment Required)خطای ۴۰۲ نماینگر استفاده از بخشی است که کاربر باید هزینه پرداخت نماید و پس از پرداخت این بخش باز خواهد شد. هدف از تعریف آن مربوط به حساب‌های کاربری است که نیاز به پرداخت وجه دارند، البته در عمل تا کنون چنین اتفاقی رخ نداده است و از کد ۴۰۲ استفاده چندانی نمی‌شود.ارور 403: دسترسی غیر مجاز (Error 403: Forbidden) مهم برای سئوخطای ۴۰۳ (Forbidden: Access is denied) می‌گوید استفاده از این صفحه برای کاربر ممنوع می‌باشد. به طورمثال اگر سایتی کاربران یک بخش یا یک کشور را تحریم کرده باشد با این خطا روبه‌رو خواهید شد. این حالت با خطای ۴۰۱ متفاوت است، در اینجا حتی با ورود نام کاربری و کلمه عبور نیز امکان دسترسی مقدور نخواهد بود، معمولا مدیران سایت‌ها، دسترسی مستقیم به فولدرها و نمایش فایل‌ها به صورت لیست را غیر فعال می‌کنند، در نتیجه وقتی آدرس یک فولدر را از آن سرور درخواست می‌کنیم، با خطای ۴۰۳ مواجه خواهیم شد.برخی دلایلی که باعث بروز این خطای ۴۰۳ می‌شود به شرح ذیل می باشد :عدم ارائه دسترسی صحیح به فایل: بررسی و آگاهی از نام کاربری که به  Worker Process وب سایت مربوطه اختصاص داده شده و سپس اطمینان از ارائه مجوزهای لازم (خواندن، نوشتن و یا هردو) به کاربری مذکور برای دسترسی به فایل و یا فلدر مربوطهوجود فایل htaccess. با تنظیمات نادرست: اطمینان از عدم وجود محدودیت دسترسی نادرست در فایل htaccess. (از این فایل می توان به جهت ایجاد محدودیت های دسترسی به منابع خاص استفاده کرد)عدم وجود صفحه پیش فرض: در صورتیکه هیچ صفحه پیش فرضی تعریف و یا وجود نداشته باشد و همچنین قابلیت Directory Browsing نیز فعال نشده باشد، این خطا نمایش داده خواهد شد. برای رفع این مشکل باید یک صفحه پیش فرض تعریف نمود و یا قابلیت Directory Browsing را فعال کرد.ارور 404: منبع درخواستی پیدا نشد (Error 404: Not Found) مهم برای سئوخطای ۴۰۴ می‌گوید سرور قادر به پیدا کردن صفحه درخواست شده کاربر نمی‌باشد و یا صفحه مورد نظر به کل وجود ندارد. خطای ۴۰۴ در مواقعی رخ می‌دهد که واسط کاربری تقاضای منبعی (به طور مثال یک فایل یا صفحه) را از سرور دارد که در حال حاضر موجود نبوده یا حذف شده است.مثلا: ممکن است آدرس لینک درج شده در آیکونی که کاربر برروی آن کلیک کرده است دارای خطای تایپی باشد. احتمال دارد کاربر آدرس URL مورد نظر خود را به اشتباه وارد کرده باشد. امکان دارد دسترسی Read و Execute به کاربری مرتبط با Worker Process سایت مورد نظر داده نشده باشد. ممکن است دایرکتوری پیش فرض سایت مورد نظر در سرور به درستی تنظیم نشده باشد. در صورتیکه قبلا صفحه‌ی درخواستی در سرور موجود بوده و هم اکنون جابجا و یا حذف شده باشد و یا در مسیر صحیحی در سرور قرار نگرفته باشد، بروز این خطا محتمل خواهد بود. در صورتیکه آدرس صفحه یا منبع مربوطه شامل لینک نمادین (Symbolic Link) می‌باشد، باید تنظیمات لازم در وب سرور جهت پشتیبانی از آن صورت پذیرد. در غیر اینصورت امکان بروز این خطا محتمل می باشد.ارور 405: متد غیر مجاز (Error 405: Method Not Allowed)خطای ۴۰۵ اشاره می‌کند به این پیتم که متد درخواستی کاربر مجاز نمی‌باشد. به فرض استفاد ه از متد GET در حالتی که منبع درخواستی نیاز به ارسال منابعی از طریق متد POST دارد، یا استفاده از PUT در نوشتن یک فایل، برای فایل هایی که فقط حالت خواندنی دارند (Read-Only)، در این حالت، معمولا سرور در پاسخ، متد مجاز را نیز ارسال خواهد کرد.ارور 406: غیر قابل قبول (Error 406: Not Acceptable)سرور قادر به پاسخ دهی درخواست شما با این متد نمی‌باشد. خطای ۴۰۶ ممکن است به دلیل وجود کاراکترهای غیر استاندارد در درخواست ارسالی رخ دهد، برخی از سرورها به دلایل امنیتی نیز ممکن است این کد را در پاسخ ارسال کنند، به طور مثال ماژول mod_security در سرورهای Apache از پذیرفتن برخی آدرس‌های وب (که از نظر امنیت، سرور آنها را مشکوک تشخیص دهد) خودداری کرده و پیام Not Acceptable دریافت خواهید کرد.ارور 407: نیاز به مجوز پروکسی (Error 407: Proxy Authentication Required)عملکرد خطای ۴۰۷ نیز شبیه کد ۴۰۱ است، با این تفاوت که در اینجا ابتدا کاربر (واسط کاربری) باید از طریق یک پروکسی اعتبار خود را اثبات کند.ارور 408: پایان حداکثر زمان درخواست (Error 408: Request Timeout)انتظار سرور برای ارسال درخواست از سمت کاربر به پایان رسیده است. به این صورت سرور خطای ۴۰۸ را ارسال می‌کند و واسط کاربر می‌تواند مجددا و در دفعات بعدی درخواست خود را ارسال کند.ارور 409: تعارض (Error 409: Conflict)خطای ۴۰۹ به معنی تداخل یا تعارض درخواست کاربر با عملیاتی دیگر در سرور بر روی منبع مورد نظر است، به طور مثال وقتی دو کاربر به صورت همزمان در حال ویرایش یک فایل هستند و هر دو آن را ذخیره می‌کنند، ممکن است این خطا رخ دهد که باید به صورت دستی آن را رفع کرد.ارور 410: محذوف (Error 410: Gone) مهم برای سئوخطای ۴۱۰ به معنی حذف همیشگی منبع درخواستی از سرور است، بر خلاف خطای ۴۰۴، خطای ۴۱۰ به واسط کاربری یا موتورهای جستجو می‌گوید که نباید مجددا آن منبع را درخواست کنند، چرا که برای همیشه حذف شده است، البته در عمل موارد استفاده از این کد خیلی محدود است و تنظیم خطای ۴۰۴ بهتر و اصولی‌تر است.ارور 411: عدم ارسال طول درخواست (Error 411: Length Required)خطای ۴۱۱ به این معنی است که سرور از پاسخ به درخواست واسط کاربری خودداری می‌کند، چرا که در درخواست ارسالی اندازه یا طول محتوا (Content-Length) وجود ندارد، در این حالت معمولا واسط کاربری باید در سربرگ‌های HTTP درخواست خود آن را اضافه کند.ارور 412: پیش شرط رد شده(Error 412: Precondition Failed)خطای ۴۱۲ زمانی رخ می‌دهد که سرور در هنگام دریافت درخواست کاربر برخی از پیش‌شرط‌ها یا پیش‌نیازها را دریافت نکرده است.ارور 413: درخواست خیلی طولانی (Error 413: Request Entity Too Large)خطای ۴۱۳ زمانی رخ کمی‌دهد که سرور قادر به پردازش درخواست شما به دلیل بزرگ بودن آن نیست. لذا ارتباط توسط سرور قطع خواهد شد، اما اگر این حالت موقتی باشد، معمولا در پاسخ، سربرگ Retry-After نیز ارسال می‌شود و واسط کاربری مجددا و در دفعات بعدی می‌تواند درخواست خود را ارسال کند.ارور 414: آدرس وب خیلی طولانی (Error 414: Request-URI Too Long)خطای ۴۱۴ به معنی بیش از حد طولانی بودن آدرس وب (URI) درخواستی است و سرور قادر به پردازش آن نیست.ارور 415: فرمت پشتیبانی نشده (Error 415: Unsupported Media Type)خطای ۴۱۵ به دلیل ارسال فرمتی به همراه درخواست ارسالی (به فرض آپلود یک فایل یا تصویر) است که از نظر سرور قابل پذیرش نیست و سرور فرمت دیگری را پشتیبانی می‌کند.ارور 416: حد درخواستی غیر اقناع کننده (Requested Range Not Satisfiable)خطای ۴۱۶ زمانی رخ می‌دهد که سرور در حالتی این کد را نمایش خواهد داد که بخشی از یک صفحه درخواستی کاربر برای پردازش سرور قابل قبول نیست.ارور 417: انتظارات رد شده (Error 417: Expectation Failed)سرور قادر به برقراری حداقل‌های فیلد درخواست هدر فایل نیست و واسط کاربری با انتظارات و موارد مورد نیاز سرور همخوانی ندارد یا سربرگی ارسال نشده است.ارور 418: من یک قوری هستم (Error 418: I&#39;m a teapot)خطای «I’m a teapot» یا «من یک قوری هستم» برمیگردد به سال ۱۹۹۸ یعنی حدود به ۲۰ سال پیش، که در آن سال به عنوان یک شوخی برای دروغ اول آوریل در استانداردها قرار داده شد و حتی در ضمن همین شوخی، پروتکلی به‌عنوان «پروتکل فرامتنی کنترل قوری قهوه» (HTCPCP) نیز برای کنترل نحوه دم کردن قهوه در قوری وضع شد!با این‌که این کد صرفا در حد یک شوخی است، اما خطای ۴۱۸ هنوز در فهرست کدهای خطا وجود دارد و در برخی از سایت‌ها این کد بامزه‌ پیاده شده است.برای نمونه می‌توانید با رفتن به آدرس google.com/teapot خطای قوری گوگل را ببینید! فراموش نکنید روی قوری کلیک کنید تا برایتان قهوه هم در فنجان بریزد!خطاهای سری 500: خطای سمت سرور (Error 500: Server Error)در حال حاضر سرور در هنگام پردازش با خطا روبه‌رو شده است. با این حال سرور در مجموع سالم بوده و احتمالا به طور موقت در حال انجام به روزرسانی یا تغییراتی است و در ساعات آینده مشکل رفع خواهد شد.ارور 500: خطای داخلی سرور (Error 500: Internal Server Error) مهم برای سئوخطای ۵۰۰ معمولا به دلیل نقص تنظیمات یا انجام به روزرسانی نرم افزاری یا سخت افزاری رخ می‌دهد، تنظیم این کد در مواقعی که می‌خواهیم در سایت، تغییراتی اعمال کنیم که باعث از دسترس خارج شدن آن می شود، می‌تواند مفید باشد.ارور 501: غیر مجهز یا تکمیل نشده (Error 501: Not Implemented)خطای ۵۰۱ بدین معنی است که سرور قادر به پردازش درخواست واسط کاربری نیست. معمولا به دلیل پشتیبانی نشدن متد ارسالی یا نقص امکانات مورد نیاز این خطا رخ می‌دهد.ارور 502: خطای دروازه میانجی (Error 502: Bad Gateway)خطای ۵۰۲ به دلیل عدم دریافت پاسخ از سرورهای بالادست (Upstream) است و سرور فعلی به عنوان یک دروازه میانجی عمل می‌کند، در این حالت معمولا بین سرور اصلی و واسط کاربری، دروازه‌های میانجی (Gateway) وجود دارند که قادر به تکمیل فرایند ارسال و دریافت پاسخ نیستند، این حالت معمولا با چند بار تلاش مجدد از سمت کاربر رفع خواهد شد.ارور 503: سرویس خارج از دسترس (Error 503: Service Unavailable) مهم برای سئودریافت خطای ۵۰۳ به معنی غیر قابل دسترس بودن سرور به دلیل ترافیک زیاد (Overload) یا انجام به روزرسانی است، معمولاً این حالت موقتی بوده و پس از چند دقیقه یا چند ساعت رفع خواهد شد.ارور 504: پایان حداکثر زمان دروازه میانجی (Error 504: Gateway Timeout)خطای ۵۰۴ نیز بدین معنی است که سرور به عنوان یک دروازه میانجی (Gateway) قادر به دریافت پاسخ از سرورهای بالا دست (Upstream) در حداکثر زمان مجاز نیست. اگر بخواهیم به طور کلی به دلایل رخ‌داد این خطا اشاره کنیم میگوییم: ممکن است ارتباط شبکه بین دو سرور ضعیف و یا کند باشد.یا سرور پشتی به دلیل عمکرد پایین ویا شلوغی زیاد خیلی کند شده است. و یا زمان timeout تنظیم شده در سرور پشتی کوتاه است.ارور 505: نسخه HTTP پشتیبانی نمی‌شود (Error 505: HTTP Version Not Supported)خطای ۵۰۵ به معنی پشتیبانی نشدن نسخه HTTP پروتکلی است که واسط کاربری از آن استفاده می‌کند، معمولا سرور دلیل پشتیبانی نکردن از آن نسخه را نیز به همراه سربرگ‌های پاسخ خود ارسال می‌کند. علاوه بر موارد گفته شده که طبق استاندارد RFC 2616 W3C است، کدهای دیگری مربوط به سرورهای مایکروسافت و سایر پروتکل‌های وب وجود دارد که به جهت کاربردی نبودن از ذکر آنها خودداری کرده‌ایم.خطاهای مربوط به Nginx و Cloudflareبرخی از کدها هستند که توسط هیچ استاندادری مشخص نشده‌اند.کدهای سری 4XX که شامل خطاهای 444، 494، 495، 496، 497 و 499 که مربوط به خطاهای Nginx است که اشاره به ارورهای مربوط به درخواست کاربر می‌کنند. و خطاهای سری 5xx که شامل 520، 521، 522، 523، 524، 525، 526، 527 و 530 مربوط به Cloudflare و خطاهای سمت سرور می‌باشد.جمع‌بندی:در این مطلب با اکثر کدها و خطاهای HTTP آشنا شدیم. به طور کلی خطاهای سری ۴۰۰ مربوط به سمت کاربر و خطاهای سری ۵۰۰ مربوط به سمت سرور می‌باشد. حال با توجه به آشنایی به سری‌های مختلف می‌توان به راحتی حدس زد که اگر خطایی با پیش شماره ۴ رخ داد، مربوط به خطایی است که از سمت کاربر رخ داده و یا اگر خطایی مانند ۵۰۳ رخ داد، شما متوجه خواهید شد این خطا مربوط به سرور است.در اکثر مواقع خیلی ساده از کنار این خطاها گذر می‌کنیم ، اما اگر این خطاها بر روی وب سرور خودمان هم اتفاق بیافتد، به همین شکل از آن گذر می‌کنیم؟پس به عنوان یک کلاینت حرفه‌ای وب و یا به عنوان کسی که سعی دارد وب و دنیای اینترنت را به صورت حرفه‌ای فرا بگیرد باید این کدها را بشناسید و دلایل رخ دادن آنها را بدانید.</description><category>فاطمه عامل</category><author>فاطمه عامل</author><pubDate>Sun, 04 Aug 2019 15:29:59 +0430</pubDate></item><item><title>5 مسئله برنامه‌نویسی که باید زیر یک ساعت حل کنید!</title><link>https://virgool.ir/Quera-Mag/5-مسئله-برنامهنویسی-که-باید-زیر-یک-ساعت-حل-کنید-tvvqurpy7qmr</link><description>ممکن است این جمله معروف استیو جابز به گوشتان خورده باشد که: همه افراد باید برنامه‌نویسی یاد بگیرند؛ چون فکر کردن را به آدم‌ها یاد می‌دهد.یا این نقل قول از استیون هاوکینگ که می‌گوید: خواه به‌ دنبال کشف رموز جهان باشید و خواه به‌ دنبال یک شغل در قرن بیست‌ و یکم، اصول پایه‌ای برنامه‌نویسی یک مهارت ضروری است که باید آن را بیاموزید.این تاکید روی یادگیری مبانی برنامه‌ نویسی طبیعی است؛ چون تقریبا هر وسیله‌ی الکترونیکی در اطراف ما، ارتباطی با برنامه‌نویسی دارد. برنامه‌نویسی، مهارتی است ترکیبی از تفکر و پیاده‌سازی. بدون تفکر مناسب نمی‌توانید مسئله را حل کنید و بدون مهارت پیاده‌سازی، عملا هیچ خروجی خاصی نداشته‌اید. وقتی می‌خواهید به عنوان برنامه‌نویس Frontend مشغول به کار شوید، مهمترین چیزی که باید به آن مسلط باشید یکی از فریم‌ورک‌های این حوزه است؛ ولی اگر می‌خواهید اسم خود را مهندس نرم‌افزار بگذارید باید توانایی حل مسائل برنامه‌نویسی را داشته باشید.مسائلی که در ادامه مطرح می‌شوند اگرچه در نگاه اول آسان به نظر می‌رسند، اما گاهی اوقات برنامه‌نویس‌ها با چالش‌های جدی برای حل آن‌ها مواجه می‌شوند! شما هم می‌توانید توانایی حل مسئله خود را در این سوالات بسنجید. اگر نتوانستید این 5 مسئله را در کمتر از یک ساعت حل کنید، بهتر است سری به دوره‌های آموزش‌ تفکر الگوریتمی و حل مسئله کوئراکالج بزنید.مسئله اول:سه تابع بنویسید که یک لیست را به عنوان ورودی گرفته و حاصل‌جمع آن‌ها را با استفاده از حلقه‌ for، حلقه while و تابع بازگشتی برگرداند.مسئله دوم:تابعی بنویسید که دو لیست را به عنوان ورودی گرفته و اعضای آن‌ها را به صورت متناوب با هم ادغام کند و در یک لیست جدید برگرداند؛ مثلاً اگر دو لیست [a, b, c] و [3, 2, 1] را به عنوان ورودی به آن بدهیم، باید لیست [a, 1, b, 2, c, 3] را در خروجی چاپ کند.مسئله سوم:برنامه‌ای بنویسید که 100 جمله اول سری فیبوناچی را چاپ کند. در سری فیبوناچی هر جمله حاصل‌ِ جمع دو جمله قبل از خودش است و 10 سری اول آن به صورت ۳۴ ،۲۱ ،۱۳ ،۸ ،۵ ،۳ ،۲ ،۱ ،۱ ،۰ می‌باشد.مسئله چهارم:تابعی بنویسید که لیستی از اعداد صحیح غیر منفی را بگیرد و با کنار هم قرار دادن آن‌ها بزرگ‌ترین عدد ممکن را برگرداند؛ مثلاً وقتی لیست [50 ,2 ,1 ,9] را می‌گیرد، باید عدد 95021 را برگرداند.مسئله پنجم:تابعی بنویسید با گذاشتن + و - یا هیچ اپراتوری بین اعداد 1 تا 9 (دقیقاً به همین ترتیب) همه‌ی چندجمله‌ای‌هایی را بسازد که پاسخ آن‌ها 100 است.به طور مثال داریم: 100 = 9 + 8 - 67 + 5 - 34 + 2 + 1حل کردن معما یا مسائل برنامه‌نویسی یکی از راه‌هایی هست که می‌توانید با استفاده از آن مهارت‌های برنامه‌نویسی خودتان را بهبود بدهید. مخصوصا اگر یادگیری زبان برنامه‌نویسی جدیدی را شروع کرده‌اید، با استفاده از حل کردن مسائل مختلف می‌توانید سریع‌تر به آن زبان مسلط شوید. حتی اگر برایتان ساده به نظر می‌رسد، شما هم مسائل بالا را امتحان کنید. مدت زمانی که حل مسائل طول کشید را حساب کنید و در قسمت نظرات همین پست با بقیه به اشتراک بگذارید.&gt;&gt; پاسخ سوالات را طی یک هفته آینده در همین پست به روز می‌کنیم.ترجمه بر اساس:&#34;Five programming problems every Software Engineer should be able to solve in less than 1 hour&#34; by Santiago L. Valdarrama @ Shifted Upکوئرامگ مجله‌ای تخصصی برای توسعه‌دهندگان است که هر هفته با مطلب‌هایی در زمینه تکنولوژی، رشد فردی و آینده برنامه‌نویسی به‌روزرسانی می‌شود. برای اطلاع از آخرین مطلب‌های ما، می‌توانید اکانت توئیتر یا کانال تلگرام ما را دنبال کنید. </description><category>فاطمه عامل</category><author>فاطمه عامل</author><pubDate>Mon, 08 Jul 2019 17:17:46 +0430</pubDate></item><item><title>ابزارهایی رایگان برای هک و تست نفوذ</title><link>https://virgool.ir/@fatemeh.amel/ابزار-رایگان-امنیت-و-هک-jqhb0jk02xro</link><description>واژه «هکر» در گذشته در معنایی متفاوت با امروز به کار گرفته می‌شد و به کسی گفته می‌شد که با دستکاری خلاقانه در وسایل و تجهیزات، عملکرد آن‌ها را بهبود می‌بخشد. این واژه در دهه ۶۰ میلادی وارد حوزه برنامه‌نویسی و امنیت شد و به مرور معنایی متفاوت به خود گرفت: در تعریف امروز هکر کسی‌ست که سعی در ایجاد شکاف در عملکرد دفاعی یک برنامه و استفاده از نقاط ضعف سیستم‌ها یا شبکه‌های کامپیوتری دارد. هکر‌ها قدرت زیادی در کنترل شبکه‌های کامپیوتری دارند و احتمالاً به همین خاطر است که بسیاری از برنامه‌نویس‌ها به این حوزه علاقه‌مند هستند.اگر می‌خواهید به این حوزه وارد شوید، یادگیری برنامه نویسی، آشنایی با چند ابزار برای هک و تست نفوذ، بهره‌گیری از یک سیستم عامل مناسب در حوزه امنیت و در نهایت تمرین زیاد، برخی از چیزهایی است که برای شروع کار نیاز دارید!در این مطلب به معرفی برخی از ابزارهای تست نفوذ و سیستم‌عامل‌های محبوب هکرها می‌پردازیم ولی در ابتدا سری به مفهوم تست نفوذ بزنیم:تست نفوذ یا آزمون نفوذ پذیری تست نفوذ (Penetration test) به فرآیند شبیه‌سازی یک حمله سایبری بر روی یک سرور یا شبکه کامپیوتری گفته می‌شود. هدف این کار شناسایی نقاط ضعف (یا به عبارتی آسیب‌پذیری‌ها) و نقاط قوت سیستم است تا با رفع مشکلات، از حمله‌های آتی هکرها و بهره‌مندی غیرمجاز آن‌ها از سیستم، جلوگیری به عمل آید. ابزارهای تست نفوذ هم، نرم‌افزارها و اسکریپت‌هایی هستند که به هکرها و متخصصان امنیت کمک می‌کنند تا آسیب‌پذیری‌های مختلف را در سطح اپلیکیشن‌، نرم‌افزار، سرور و شبکه‌ پیدا کنند. تنوع خوبی از این ابزارها را می‌توان در دنیای وب پیدا کرد به خصوص که بسیاری از آن‌ها هم متن‌باز (Open Source) هستند.در ادامه برخی ابزارهای رایگان برای تست نفوذ و کاربردهای هر کدام را بررسی کرده‌ایم:ابزارهای رایگان هک و تست نفوذ ابزار ۱. Ettercapاین ابزار برای تست نفوذ در شبکه به کار می‌رود و کاربرد آن اصطلاحاً Sniff کردن یا شنود شبکه است. Sniffer به ابزاری گفته می‌شود که ترافیک عبوری از یک شبکه را رصد کرده و داده‌های رمزنگاری نشده از جمله نام کاربری و کلمه عبور را مورد سرقت قرار می‌دهد. Ettercap ابزار جامعی برای حملات مرد میانی (Man-in-the-middle attacks) است و امکان Sniff لحظه‌ای اتصال‌ها را در اختیار شما قرار می‌دهد.&gt; لینک دانلودابزار Ettercap، ابزاری رایگان و متن‌باز برای تست نفوذ ابزار ۲. Aircrackابزاری قابل‌ اعتماد برای هک کلاه سفید است که کار آن نفوذ به شبکه‌های بی‌سیم آسیب‌پذیر است.ویژگی‌ها:قابلیت نظارت و کنترل بسته‌های ارسالی در شبکه و تبدیل آن‌ها به فایل‌های متنی برای پردازش و احیاناً رمزگشایی آن‌ها با ابزارهای دیگرپاسخ گویی به حملات، دسترسی‌های غیرمجاز و نقاط دسترسی جعلی، با استفاده از تکنیک Packet Injectionتوانایی تست کارت شبکه و مودم وای فای و شناسایی قابلیت‌ها و تزریق کد به آن‌هادارای ابزار شکست پسوردهای WEP و WPA PSK در شبکه و هک پسورد وای فایسرعت بالا در زمینه پیدا کردن پسوردهای شبکهمحیط کاربری ساده و آسان&gt; لینک دانلود ابزار ۳. Angry IP Scannerابزاری متن باز و Cross-Platform بوده که کار با آن بسیار ساده است و برای اسکن هاست‌‌های مختلف و پورت‌های روی آن‌ها در بستر شبکه مورد استفاده قرار می‌گیرد.ویژگی‌ها: اسکن اینترنت و شبکه‌های محلی (Local) اسکن سریع آدرس IP امکان ایجاد دستورات مختلف در Command Line محیط کاربری آسان و امکانات زیاد حجم کم نرم‌افزار&gt; لینک دانلود ابزار ۴. ابزار Hashcatاین ابزار برای کشف رمز عبور (Password Cracking) مورد استفاده قرار می گیرد و به کاربران قابلیت بازیابی پسورد‌هایشان، ارزیابی امنیت پسورد و دستیابی به مقادیری که به صورت Hash ذخیره شده‌اند را ارائه می‌کند.ویژگی‌ها:طراحی متن بازپشتیبانی از سیستم عامل‌های ویندوز، لینوکس و مکچندپلتفرمی: قابلیت کار با CPU ،GPU ،DSP و FPGAتوانایی شکستن چند Hash همزمان با همتوانایی همزمان کار کردن با چند ابزار در یک سیستمقابلیت توقف و دوباره شروع به کار کردنقابلیت بازیابی&gt; لینک دانلود ابزار ۵. Rainbow Crackابزاری برای کشف هش (Hash Cracking) است. (آشنایی بیشتر با Hash) الگوریتم رایج برای کشف هش، حمله جستجوی فراگیر (Brute-force attack) است که در آن سعی می‌شود تا با ساخت Hashهای مختلف و امتحان کردن تمام آن‌ها، Hash مورد نظر خودمان را کشف کنیم. در طرف مقابل Rainbow Crack با الگوریتمی کاملاً متفاوت یعنی Time-memory Tradeoff و بهره‌گیری از جداول Rainbow  به دنبال کشف هش است.ویژگی‌ها:پشتیبانی کامل از جداول Rainbowقابلیت اجرا در سیستم‌عامل‌ ویندوز و سیستم‌عامل‌های لینوکساستفاده آسانپشتیبانی هم از رابط کاربر گرافیکی و هم از Command Line&gt; لینک دانلود ابزار ۶. IronWASPاین ابزار برای تست آسیب‌پذیری در وب اپلیکیشن‌ها می‌باشد که متن‌باز است. این ابزار طوری طراحی شده که قابلیت شخصی‌سازی در آن بسیار بالا باشد تا کاربر بتواند با استفاده از آن، پویشگر آسیب‌پذیری (Vulnerability scanner) مورد نیاز خود را بسازد.&gt; لینک دانلود ابزار ۷. SQLMapاین ابزار مراحل تشخیص و بهره‌جویی از آسیب‌پذیری SQL Injection را اتوماتیک کرده است. SQLMap ابزاری بسیار قدرتمند با امکانات زیاد است که به شکل متن‌باز و Cross-platform ارائه شده و تقریباً اکثر دیتابیس‌ها را (شامل MySQL و PostgreSQL) پشتیبانی می‌کند. SQLmap بصورت پیش فرض در سیستم عامل کالی لینوکس وجود دارد. &gt; لینک دانلودتوزیع‌های مهم لینوکس در حوزه امنیتآزمون تست نفوذ با سیستم‌عامل‌های لینوکسی، همیشه بهترین گزینه برای کارشناسان امنیت و هکرها بوده است. اکثر ابزار‌های تست نفوذ برای نسخه‌های مختلف لینوکس طراحی شده‌اند و بعضی از این توزیع‌ها، خودشان ابزارهای امنیتی متعددی را از قبل برای شما فراهم کرده‌اند.توزیع لینوکس Kali، توزیعی شناخته‌شده در حوزه امنیتدر ادامه لیستی از ۱۰ توزیع برتر لینوکس در حوزه امنیت را بررسی خواهیم کرد:توزیع ۱. Kali Linux: کالی لینوکس یک توزیع مبتنی بر Debian است که در حوزه امنیت بسیار کاربردی است. ابزارهای بسیار زیادی در مخازن این سیستم عامل وجود دارد که می تواند در مراحل آزمون تست نفوذ مورد استفاده کارشناسان قرار گیرد.  Kali Linux رتبه اول را در لیست ۱۰ سیستم عامل برتر تست نفوذ را به خود اختصاص داده است.توزیع ۲. BackBox Linux: سیستم عامل BackBox یک توزیع تست نفوذ مبتنی بر Ubuntu است و توسط تیم BackBox طراحی و توسعه داده شده است. این توزیع دارای ابزارهای حرفه‌ای در زمینه آزمون تست نفوذ مانندBurpSuite ، Nmap ،MSF ،SQLMap، و… می باشد.توزیع ۳. Parrot Security OS: سیستم عامل Parrot Security یک سیستم‌عامل تست نفوذ است که برای هکرهای حرفه‌ای امنیت سایبری اختصاص داده شده است و توسط FrozenBox توسعه داده شده است. این سیستم عامل از MATE بعنوان محیط دسکتاپ استفاده می‌کند که بر پایه Kali Linux و Debian است.توزیع ۴. BlackArch Linux: سیستم عامل BlackArch مبتنی بر Arch می‌باشد. توزیعی بسیار سبک و آسان و راحت که برای کارشناسان تست نفوذ طراحی و توسعه داده شده است. این توزیع از Fluxbox و OpenBox بعنوان محیط دسکتاپ استفاده می‌کند و بیش از ۱۵۰۰ ابزار در مخازن خود دارد.توزیع ۵. Pentoo: سیستم عامل Pentoo بر مبنای Gentoo طراحی و توسعه داده شده است. اولین انتشار آن در سال ۲۰۰۵ بوده است و در حقیقت یکی از قدیمی‌ترین نسخه‌های توزیع تست نفوذ می‌باشد.توزیع ۶. Samurai Web Testing Framwork: مبتنی بر Ubuntu و شامل ابزارهایی همچون BurpSuite ،SQLMap و… برای تست نفوذ وب‌اپلیکیشن‌ها می باشد.توزیع ۷. Network Security Toolkit: این توزیع بر پایه فدورا می‌باشد و برای اسکن و Sniff شبکه مفید است.توزیع ۸. WifiSlax: این توزیع بر پایه اوبونتو طراحی و توسعه داده شده است و برای تست‌نفوذ شبکه‌های بیسیم مفید است.توزیع ۹. Bugtraq: این توزیع مبتنی بر دبیان است و برای عملیات‌های مهندسی معکوس و آنالیز رفتاری بدافزارها مفید است.توزیع ۱۰. Cyborg Hawk: یک توزیع مبتنی بر Ubuntu می باشد. ابزارهایی برای تست امنیت در حوزه موبایل و شبکه‌های بی‌سیم دارد.در این پست با ابزارهای مختلف تست نفوذ و سیستم‌عامل‌های محبوب هکرها آشنا شدیم و تا حدودی ویژگی‌های آنها را بررسی کردیم. البته لازم به ذکر است که جای بسیاری از ابزارهای محبوب دیگر در این لیست خالی است. اگر شما از محصول متن‌باز و یا تجاری دیگری برای رصد کردن امنیت شبکه و یا تست نفوذ سایت‌ استفاده می‌کنید حتماً در این پست با ما به اشتراک بگذارید.ترجمه و اقتباس بر اساس:&gt; Top 20 Tools for Ethical hacking in 2019 @ Guru99&gt; Top 10 Linux Distro for Ethical Hacking and Penetration Testing @ Hackernews کوئرامگ مجله‌ای تخصصی برای توسعه‌دهندگان است که هر هفته با مطلب‌هایی در زمینه تکنولوژی، رشد فردی و آینده برنامه‌نویسی به‌روزرسانی می‌شود. برای اطلاع از آخرین مطلب‌های کوئرامگ، می‌توانید اکانت توئیتر یا کانال تلگرام ما را دنبال کنید.  </description><category>فاطمه عامل</category><author>فاطمه عامل</author><pubDate>Sat, 22 Jun 2019 19:01:11 +0430</pubDate></item><item><title>تفاوت چهار اصطلاح برنامه‌نویسی و امنیت: Encryption ،Encoding ،Hashing و Obfuscation</title><link>https://virgool.ir/Quera-Mag/تفاوت-چهار-اصطلاح-برنامهنویسی-و-امنیت-encryption-encoding-hashing-و-obfuscation-s8xjldpvkytn</link><description> شاید تا به حال با چهار اصطلاح encryption ،encoding ،hashing و obfuscation برخورد کرده باشید. نزدیکی مفاهیم این چهار اصطلاح می‌تواند هر کسی را به اشتباه بیندازد، به همین خاطر در این نوشته می‌خواهیم به اختصار تفاوت‌های آن‌ها و معنی دقیق‌تر هریک را بررسی کنیم. آشنایی با Encoding یا کدگذاری هدف از Encoding، تبدیل اطلاعات به گونه‌ای است که بدون مشکل، بتواند در سیستم‌های متفاوت قابل تحلیل و مشاهده باشد. برای مثال حروف و کاراکترهای موجود در یک ایمیل و یا کاراکترهای صفحات وب پس از اینکه به داده‌ی باینری (binary) معادل‌شان تبدیل شدند، می‌توانند توسط سیستم‌های مختلف ارسال و دریافت شوند. هدف اصلی، قابل استفاده بودن داده‌ها و تحلیل صحیح این اطلاعات است و در Encoding به دنبال مخفی نگه داشتن اطلاعات نیستیم. فرآیند Encoding داده‌ها، ازطریق یک نقشه‌ی عمومی انجام می‌شود و درنتیجه برگرداندن آن به فرمت قبلی نیز به راحتی انجام‌پذیر است. پس برای Decode کردن تنها به الگوریتمی نیاز خواهیم داشت که با آن Encode را انجام دادیم و هیچ‌گونه نیازی به Key (کلید) نخواهد بود.از استانداردهای رایج برای Encoding می‌توان به ASCII ، Unicode و Base64 اشاره کرد.آشنایی با Encryption یا رمزنگاریهدف از Encryption یا رمزنگاری تبدیل اطلاعات به فرمت دیگر به منظور مخفیانه نگه داشتن آنها می‌باشد. برای مثال ارسال یک نامه‌ی محرمانه به گونه‌ای که تنها خود مخاطب قادر به رمزگشایی و خواندن آن باشد و یا ارسال رمزعبور به صورت امن و مخفیانه در اینترنت. در Encryption هدف دسترسی‌پذیری نیست بلکه می‌خواهیم اطلاعات توسط کسی جز مخاطب اصلی آن‌ها قابل رؤیت نباشد.در Encryption اطلاعات به گونه‌ای تبدیل می‌شود که تنها مخاطب‌(های) آن اطلاعات قادر به معکوس کردن فرآیند تبدیل اطلاعات هستند. فرآیند رمزنگاریبا استفاده از یک کلید (که باید مخفی نگاه داشته شود)، یک متن آشکار و یک الگوریتم برای انجام عملیات رمزنگاری صورت می‌پذیرد. به همین شکل، برای رسیدن به متن آشکار نیز به متن رمزگذاری‌شده، الگوریتم و کلید نیاز خواهیم داشت.از الگوریتم‌های رایج رمزنگاری می‌توان به AES ،Blowfish و RSA اشاره کرد.آشنایی با Hashing یا درهم‌سازیهدف از Hashing، اطمینان از یکپارچگی یا صحت (integrity) است، به شکلی که اگر چیزی تغییر کند، شما متوجه شوید که تغییری صورت گرفته است. به شکل دقیق‌تر می‌توان گفت که در Hashing، یک ورودی دلخواه گرفته شده و رشته‌ای با طول ثابت به نام Hash تولید می‌شود به شکلی که این رشته خروجی ویژگی‌های زیر را داشته باشد:ورودی یکسان همیشه خروجی یکسان تولید می‌کند.معمولاً چند ورودی متفاوت، خروجی یکسانی تولید نمی‌کنند.امکان رسیدن از خروجی به ورودی وجود ندارد.هرگونه تغییر در ورودی موجب تغییر اساسی در Hash می‌شود.در واقع Hashing می‌تواند در کنار رمزنگاری نامتقارن استفاده شود تا اطمینان قوی به دست بیاید که پیام تغییر نکرده است. در این فرآیند یک ورودی اولیه ابتدا درهم‌سازی (Hash) شده و سپس این hash با کلید خصوصی فرستنده امضا می‌شود. سپس پیام، hash و امضا به مخاطب ارسال می‌شود. مخاطب پس از باز کردن پیام قادر است ابتدا امضای hash را با کلید عمومی فرستنده تطبیق دهد تا مطمئن شود خود فرستنده hash را امضا کرده است. سپس خودش پیام را یک بار دیگر hash می‌کند و آن را با hash دریافت‌شده از فرستنده مقایسه کند. اگر هر دو یکی بود، پیام معتبر است.از الگوریتم‌های رایج Hashing می‌توان به SHA-3 و MD5 اشاره کرد.آشنایی با Obfuscation یا مبهم‌سازی کدهدف از Obfuscation یا مبهم‌سازی کد، سخت‌‌تر کردن درک آن است و معمولاً با این منظور صورت می‌گیرد که از کپی شدن کد یا آسیب‌پذیری آن جلوگیری به عمل آید.به عنوان مثال یک کاربرد متداول Obfuscation، جلوگیری از دسترسی غیرمجاز به کدهای منبع یک محصول و کپی شدن آن توسط رقبا در فرآیند مهندسی معکوس است.لازم به ذکر است که Obfuscation برخلاف Encryption یک محافظ قوی نیست، بلکه تنها یک مانع موقت است و همچون Encoding در اینجا نیز اغلب می‌تواند با همان تکنیکی که مبهم‌سازی شده، دوباره فرآیند معکوس شود. در مواقعی هم که Obfuscation پیچیده‌تر است، باز به شکل دستی و زمان‌بر، می‌توان در نهایت به اطلاعات اولیه دسترسی پیدا کرد.نکته‌ی مهم دیگر، توجه به این موضوع است که بسته به محتوای کد، میزان مبهم‌سازی‌ای که می‌تواند روی آن صورت بگیرد با محدودیت‌هایی همراه است. مثلاً اگر یک کد کامپیوتری را مبهم‌سازی می‌کنید، نتیجه باید همچنان قابلیت اجرا توسط کامپیوتر را داشته باشد وگرنه برنامه از کار خواهد افتاد.برخی از ابزارهای موجود برای Obfuscation عبارت‌اند از: ProGuard و Javascript Obfuscator ترجمه بر اساس:&#34;Encoding vs encryption vs hashing vs obfuscation&#34; by Daniel Miessler کوئرامگ مجله‌ای تخصصی برای توسعه‌دهندگان است که هر هفته با مطلب‌هایی در زمینه تکنولوژی، رشد فردی و آینده برنامه‌نویسی به‌روزرسانی می‌شود. برای اطلاع از آخرین مطلب‌های کوئرامگ، می‌توانید اکانت توئیتر یا کانال تلگرام ما را دنبال کنید. </description><category>فاطمه عامل</category><author>فاطمه عامل</author><pubDate>Sat, 15 Jun 2019 16:13:42 +0430</pubDate></item><item><title>آشنایی با ۳ حوزه اصلی کاربرد زبان پایتون</title><link>https://virgool.ir/Quera-Mag/آشنایی-با-۳-حوزه-اصلی-کاربرد-زبان-پایتون-wt5oaodgsy1t</link><description>اگر به یادگیری زبان برنامه‌نویسی پایتون فکر می‌کنید و یا یادگیری این زبان را به تازگی آغاز کرده‌اید، ممکن است برایتان این سوال مطرح شده باشد که دقیقاً برای انجام چه کارهایی میتوانم از پایتون استفاده کنم؟کاربردهای زبان پایتون را می‌توان در سه حوزه اصلی زیر خلاصه کرد: توسعه نرم‌افزارهای تحت وب (Web Development) علم داده (Data Science) شامل یادگیری ماشین (Machine Learning)، آنالیز داده‌ها (Data Analysis) و بصری‌سازی داده‌ها (Data Visualization) اسکریپت نویسی (Scripting) اما پایتون در هر کدام از این زمینه‌ها به چه شکلی به کار می‌آید؟ برای پاسخ به این سوال در ادامه به شکل مفصل‌تر به بررسی هر کدام از این سه زمینه پرداخته‌ایم:۱. کاربرد پایتون در توسعه نرم‌افزارهای تحت وبفریم‌ورک‌های وب مبتنی بر Python از جمله جنگو (Django) و فلسک (Flask) در حال حاضر از محبوب‌ترین فریم‌ورک‌هایی هستند که برای توسعه در سمت سرور (Back-end) مورد استفاده قرار می‌گیرند.ولی چرا به فریمورک سمت Back-end نیاز داریم؟ چه تفاوتی بین Django و Flask وجود دارد؟ و کدام محبوب‌تر است؟فریم‌ورک‌ها با در اختیار قرار دادن مجموعه‌ای از کتابخانه‌ها و تابع‌های آماده، منطق توسعه سمت سرور (Back-End) را راحت‌تر میکند تا بتوانید با آسودگی بیشتر اپلیکشینی متناسب با نیاز خود توسعه دهید. به عنوان مثال نگاشت URLها، ارتباط با پایگاه‌های داده (Database) و تولید فایل‌های HTML که کاربرها با استفاده از مرورگر بتوانند به آنها دسترسی داشته باشد کارهایی است که با استفاده از فریم‌ورک‌ها می‌توان به شکل بهینه‌تری پیش برد. فریمورک Django و Flask هر دو جزو فریمورک‌های محبوب پایتون هستند که در ادامه این مطلب به بررسی دقیق‌تر تفاوت آنها می‌پردازیم.تفاوت بین Django و Flask: فریمورک Flask یک فریمورک ساده بوده و از انعطاف‌پذیری بالایی برخوردار است به طوری که امکان کنترل بسیار بالایی را برای دولوپرها فراهم می‌کند. فریمورک Django قابلیت‌های آماده بیشتری را در اختیار شما قرار می‌دهد، مثلاً پنل ادمین، رابط کاربری برای کار با دیتابیس و بهره‌مندی از  Object Relational Mapping یا به اختصار ORM از جمله این امکانات است.اما کدام یک از این دو برای یادگیری مناسب‌تر هستند؟ به شکل خلاصه می‌توان گفت که اگر تازه کار هستید، فریمورک Flask به دلیل سروکله‌زدن با اجزای کمتر می‌تواند انتخاب مناسب‌تری برایتان باشد. علاوه بر این اگر به قابلیت سفارشی‌سازی زیادی احتیاج دارید نیز این فریمورک می‌تواند مفید واقع شود. در طرف مقابل، در صورتی که مایل هستید به سرعت کار توسعه را پیش بگیرید، فریمورک Django بسیار سرراست‌تر است و امکانات آماده بیشتری را در اختیار شما قرار می‌دهد.۲. کاربرد پایتون در حوره علم داده۲.۱. یادگیری ماشین چیست؟اول ازهمه مروری بر روی مفهوم یادگیری ماشین  با استفاده از یک مثال داشته باشیم؛ فرض کنید قرار است برنامه‎ای بنویسید که محتوای عکس‌های زیر را به طور خودکار تشخیص دهد.تصویر زیر را در نظر بگیرید. در این تصویر کامپیوتر باید تشخیص دهد که با یک سگ سروکار داریم:پردازش ماشین و تشخیص تصویر سگشاید اگر پیکسل‌های روشن قهوه‌ای در تصویر اول وجود داشته باشد، بتواند گفت که محتوای این تصویر یک سگ را نشان می‌دهد. حالا تصویر زیر را در نظر بگیرید:پردازش ماشین و تشخیص تصویر میز شاید بتوان از وجود لبه‌های تیز و صاف به این نتیجه رسید که یک میز داریم.با این حال، این نوع رویکرد بسیار سطحی به نظر می رسد! اگر یک سگ سفید بدون موهای قهوه‌ای در تصویر وجود داشته باشد آنوقت چه؟ اگر تصویر فقط قسمت‌های‌ دورتری از میز را نشان دهد که قابل تشخیص نباشند چه؟ اینجاست که یادگیری ماشین وارد کار میشود.اساساً یادگیری ماشین به علم طراحی الگوریتم‌هایی اشاره دارد که بر اساس یک سری داده ورودی چیزی را یاد گرفته و در ادامه الگویی را روی سایر داده‌های دریافتی شناسایی می‌کند. شما می‌توانید ۱۰۰۰ عکس متفاوت از سگ و ۱۰۰۰ عکس متفاوت از میز را به عنوان ورودی الگوریتم‌های یادگیری ماشین به آن بدهید تا بعد از آن شناسایی این دو مورد به شکل خودکار صورت بگیرد. دقیقاً مانند اینکه یک کودک در حال یادگیری چیزهای جدید است. یک کودک چه طور یاد می‌گیرد که سگ چه شکلی است و یا میز چه ویژگی‌هایی دارد؟ همه به وسیله تعداد زیادی از مثال‌ها و تکرارها است.برخی الگوریتم های رایج یادگیری ماشین که ممکن است در موردشان شنیده باشید عبارت‌اند از:شبکه‌های عصبی (Neural Networks)یادگیری عمیق (Deep Learning)ماشین‌های بردار پشتیبانی (Support Vector Machines)جنگل تصادفی (Random Forest)  میتوان از هرکدام از این الگوریتم‌ها برای رفع مشکل تشخیص عکس که بالاتر در موردش صحبت کردیم استفاده کنید.۲.۲. یادگیری ماشین با استفاده از پایتوناز جمله کتابخانه‌ها و فریمورک‌های محبوب زبان پایتون برای یادگیری ماشین می‌توان به scikit-learn  و TensorFlow اشاره کرد. اما تفاوت این دو در چیست؟کتابخانه scikit-learn برخی الگوریتم‌های محبوب یادگیری ماشین همچون SVM ،Random Forests Gradient Boosting ،K-means و... را اصطلاحاً به صورت درونی‌شده (Built-in) داراست.کتابخانه TensorFlow در طرف مقابل یک کتابخانه سطح پایین (Low-level) بوده که امکان طراحی الگوریتم‌های یادگیری ماشینی با قابلیت شخصی‌سازی بسیار بیشتر را به کاربر ارائه می‌نماید.برای ورود به حوز یادگیری ماشین کتابخانه scikit-learn انتخاب مناسبی به نظر می‌رسد اما در ادامه و با افزایش مهارت‌های فردی، می‌توان به منظور بهبود عملکرد الگوریتم‌های یادگیری ماشین از کتابخانه TensorFlow استفاده کرد.چه طور میتوان یادگیری ماشین را فرا گرفت؟برای یادگیری اصول Machine Learning می‌توانید از دوره‌های آنلاین مختلفی بهره بگیرید. البته توجه داشته باشید دانش اولیه‌ای از حساب و جبر خطی برای شروع و فهمیدن مباحث یادگیری ماشین پیش‌نیاز محسوب می‌شود. از جمله دوره‌های موجود برای شروع یادگیری ماشین دوره Stanford و دوره Caltech را می‌توان پیشنهاد داد و در ادامه برای تمرین بیشتر می‌توان سراغ وبسایت Kaggle رفت.جا دارد یادآوری کنیم که کوئراکالج نیز برای تابستان ۹۸ روی انتشار دوره‌های فارسی و تعاملی هوش مصنوعی، داده‌کاوی و یادگیری ماشین کار می‌کند که می‌توانید با وارد کردن ایمیل خود در صفحه اصلی کوئراکالج، به محض انتشار از آن‌ها مطلع شوید.۲.۳. تجزیه و تحلیل داده‌ها و تصویرسازی چیست؟بیایید با یک مثال ساده، به بررسی مفهوم این دو مورد بپردازیم:فروشگاهی را در نظر بگیرید که محصولاتی به صورت آنلاین به فروش می‌رساند. شما به عنوان یک تحلیلگر داده در این شرکت می‌توانید نمودار میله‌ای زیر را رسم کنید:نمودار فروش یک شرکت در یک روز معین بر حسب جنسیتاز این نمودار میفهمیم که آقایان بیش از ۴۰۰ واحد و خانم‌ها بیش از ۳۵۰ واحد از این محصول در یک روز خاص خریداری کردند. اما علت این تفاوت چه بوده؟ از نمودار فوق به حدس‌هایی مختلفی می‌توان رسید: یکی از این احتمالات این است که این محصول بین آقایان از محبوبیت بیشتری نسبت به خانم‌ها برخوردار بوده. اما شاید هم آقایان به دلیلی نامعلوم در این روز خاص تمایل بیشتری برای خرید این محصول داشته‌اند. برای اینکه پاسخی برای فرضیات خود پیدا کنیم باید به سراغ نمودارهای تکمیلی برویم.به عنوان مثال نمودار تکمیلی می‌تواند چنین چیزی باشد:نمودار خرید شرکت در طول هفته بر حسب جنسیتاینبار می‌توانیم تعداد خرید این محصول را در طول هفته بررسی کنیم. این نمودار نشان می‌دهد که تفاوت زیادی در خرید در روزهای مختلف وجود دارد. ولی چیزی که در کل هفته ثابت مانده محبوبیت این محصول در بین آقایان است.در طرف مقابل ممکن است نمودار کل هفته چنین چیزی باشد:نمودار آلترناتیوی برای خرید در طول هفته در یک شرکتدر این نمودار خانم‌ها در تمام روزهای هفته جز آن روز به خصوص خرید بیشتری از آقایان داشته‌اند. اگر نمودار کل هفته چنین چیزی باشد، باید برویم سراغ اینکه چه مشکلی در آن روز خاص وجود داشته که آقایان کمتر خرید کرده‌اند؟این یک مثال بسیار ساده‌سازی‌شده برای تحلیل داده‌هاست که می‌توانیم کاربرد آن را در دنیای واقعی ببینیم.۲.۴. تجزیه و تحلیل داده‌ها در پایتوناما در پایتون چه‌طور می‌توانیم داده‌ها را تحلیل کنیم؟ کتابخانه Matplotlib از جمله کتابخانه‌های رایج زبان پایتون برای آنالیز داده‌ها است. این کتابخانه به این دو دلیل برای شروع یادگیری پیشنهاد میشود: یادگیری آن بسیار آسان است.یادگیری آن، پیش‌نیاز یادگیری کار با کتابخانه‌های تخصصی‌تر آنالیز داده (به عنوان مثال کتابخانه Seaborn) خواهد بود.۳. کاربرد پایتون در سایر حوزه‌ها۳.۱. استفاده از پایتون برای اسکریپت نویسیاسکریپت نویسی (Scripting) معمولاً به نوشتن برنامه‌های کوچکی اشاره دارد که برای اتوماتیک کردن کارهای ساده طراحی شده‌اند. کارهایی که تا پیش از این قرار بوده به شکل دستی انجام دهیم اما اتوماتیک کردن آن‌ها صرفه‌جویی زیادی در وقت توسعه‌دهندگان می‌کند. پایتون به دلیل Syntax ساده و پیاده‌سازی آسانی که دارد برای اسکریپت‌نویسی نیز بسیار کاربردی محسوب می‌شود؛ تنها کافی است تابع‌هایی که به آن نیاز دارید را بدانید...۳.۲. استفاده از زبان پایتون برای توسعه اپلیکیشن‌های نهفته (Embedded)نرم‌افزار نهفته یا توکار (Embedded Software) نرم‌افزاری است که برای کنترل دیوایس‌ها طراحی می‌شود. (آشنایی بیشتر) از آنجایی که پایتون امکان پیاده‌سازی اپلیکیشن با استفاده از Raspberry Pi را دارا است در این حوزه نیز می‌تواند مورد استفاده قرار بگیرد.۳.۳. به‌کارگیری زبان پایتون در حوز توسعه بازیکتابخانه PyGame  یکی از کتابخانه‌های زبان پایتون به منظور توسعه بازی می‌باشد. البته قابل ذکر است که PyGame در مقایسه با موتورهای بازی‌سازی معروفی همچون Unity که بسیار قدرتمند هستند از قابلیت‌های پایین‌تری برخوردار است. به علاوه اینکه موتور بازی‌سازی Unity قابلیت توسعه‌ی گیم برای سیستم‌عامل‌های مختلفی همچون iOS ،Windows ،Mac و Android را در اختیار توسعه‌دهندگان بازی قرار می‌دهد و یکی از دلایل محبوبیت این موتور بازی‌سازی همین مسئله است.۳.۴. استفاده از زبان پایتون در حوزه توسعه نرم‌افزارهای دسکتاپدر حوزه توسعه اپلیکیشن‌های دسکتاپ نیز برای زبان پایتون یک کتابخانه تحت عنوان Tkinter عرضه شده. اما به نظر می‌رسد در این حوزه قابلیت‌های زبان‌هایی همچون #C و Java و ++C بیشتر است.جمع‌بندیپایتون زبان قدرتمندی است که یادگیری آن بسیار آسان است و در حوزه‌های بسیار متنوعی می‌تواند مورد استفاده قرار بگیرد. حوزه‌هایی همچون توسعه وب، هوش مصنوعی، تحلیل داده و اسکریپت‌نویسی از جمله مهم‌ترین حوزه‌های توانمندی پایتون محسوب می‌شوند که در در این مقاله نگاهی به آن‌ها انداختیم.در نهایت اگر به یادگیری پایتون علاقه‌مند شدید یادآوری می‌کنیم که دوره آنلاین تعاملی پایتون پیشرفته کوئراکالج از ۲۲ خرداد ماه در دسترس علاقه‌مندان است و تا ۲۰ خرداد فرصت دارید تا از تخفیف ویژه پیش‌ثبت‌نام در این دوره بهره‌مند شوید.ترجمه بر اساس:&#34;What exactly can you do with Python? Here are Pythons 3 main applications.&#34; by YK Sugi @ freeCodeCamp کوئرامگ مجله‌ای تخصصی برای توسعه‌دهندگان است که هر هفته با مطلب‌هایی در زمینه تکنولوژی، رشد فردی و آینده برنامه‌نویسی به‌روزرسانی می‌شود. برای اطلاع از آخرین مطلب‌های ما، می‌توانید اکانت توئیتر یا کانال تلگرام ما را دنبال کنید.</description><category>فاطمه عامل</category><author>فاطمه عامل</author><pubDate>Mon, 03 Jun 2019 16:15:39 +0430</pubDate></item><item><title>شما به کدام گروه از برنامه‌نویسان تعلق دارید؟</title><link>https://virgool.ir/Quera-Mag/شما-به-کدام-گروه-از-برنامهنویسان-تعلق-دارید-wkibsoi2s0op</link><description>پاوان بلاگاتی، DZone — برنامه‌نویس‌ها افرادِ بسیار خلاقی هستند. بخش مثبتی از زندگی شغلی من این بوده که همیشه فرصت همکاری با برنامه‌نویس‌ها و کنجکاوی درباره کارشون رو داشته‌ام: چه شد که؟ چرا؟ چه وقت؟ چگونه؟ من سعی کردم از آنچه که این همکاری‌ها و کنجکاوی‌ها به من یاد داده استفاده کنم و یک دسته‌بندی کلی از انواع شخصیت‌های توسعه‌دهنده‌ها ایجاد کنم.اما پیش از مشاهده این دسته‌بندی، اجازه بدید به برخی ویژگی‌های عمومی‌تر برنامه نویس‌ها اشاره کنم که در محیط کار دیده‌ام:تفکر تحلیلی (Analytical Mindset)کنجکاوی و پیگیری (Curiosity and Inquisitiveness)همدلی (Empathy)انعطاف پذیری (Flexibility)عشق به یادگیری (Love of Learning)عملگرایی (Pragmatism)کار تیمی (Team Player)تفکر فنی (Technical Mindset)خوب حالا وقت‌اش رسیده که نگاهی بندازیم به دسته‌بندی‌های مختلف برنامه‌نویس‌ها:کمالگرا (The Perfectionist): این دسته از برنامه‌نویس‌ها سروقت میان، کارهاشون رو انجام میدن و سروقت میرن. باگ‌های زیادی رو فیکس می‌کنن، تسک‌های زیادی انجام میدن و هیچوقت در ددلاین‌ها تاخیر ندارن!همه فن حریف و با استعداد (The Street Smart Freak): این مدل توسعه‌دهنده‌ها بیشتر چیزهای مورد نیازشان رو از وب کپی‌ پیست می‌کنن؛ حتی اگر سازوکار همه چیز رو ندونن، در نهایت باز هم خیلی خوب همه چیز رو سر هم میکنن!تئوری‌دان (The Theoretical Dude): این نوع برنامه‌نویس‌ها تئوری پشت علوم کامپیوتری و برنامه‌نویسی رو می‌دونن اما در کُدنویسی خیلی قوی نیستن! معمولاً این افراد بلافاصله با هر فردی که بر سر تئوری با اونها اختلاف نظر داشته باشه، دعوا و مرافعه راه میندازن!برنامه‌نویس شلخته (The Sloppy Fellow): این نوع برنامه‌نویس‌ها می‌دونن مشکل کار چیه، می‌دونن چه راه حلی برای اون وجود داره، اما دست آخر به دلیل عدم تمرکز باز هم گند میزنن به همه چی!پلیس کُد (The Code Police): این دسته مثل مامورانی هستن که با موشکافی زیاد باگ‌ها رو پیدا می‌کنن و بلافاصله از بقیه می‌خوان این باگ‌ها رو برطرف کنن! جالب اینجاست که حتی به Indentation (تو رفتگی خطوط سورس کُدها) هم حساس هستن و اگه بتونن به اون گیر میدن.کشف کننده (Wildcard or Eureka Guy): این دسته همیشه در حال تجربه کردن چیزهای جدید هستن که اکثر اوقات به پیشرفت هم منجر میشه!برای اینکه نظر بقیه رو درباره این دسته‌بندی بدونم، از بین ۱۰۰ برنامه‌نویس یک نظرسنجی به عمل آوردم! در این نظرسنجی گروه‌های «همه فن حریف و با استعداد»، «کمالگرا» و «شلخته» به ترتیب بیشترین درصد برنامه‌نویس‌ها رو به خودشون اختصاص داده بودن.در پایان جالب خواهد بود که نظر شما درباره این دسته‌بندی رو بدونیم. شما خودتون رو در کدوم دسته طبقه‌بندی می‌کنید؟ در بخش نظرها منتظرتون هستیم!&gt;&gt; بر اساس مطلب &#34;What Type of Coder Are You&#34; از  Pavan Belagatti در DZoneکوئرامگ مجله‌ای تخصصی برای توسعه‌دهندگان است که هر هفته با مطلب‌هایی در زمینه تکنولوژی، رشد فردی و آینده برنامه‌نویسی به‌روزرسانی می‌شود. برای اطلاع از آخرین مطلب‌های ما، می‌توانید توئیتر یا کانال تلگرام کوئرا را دنبال کنید.</description><category>فاطمه عامل</category><author>فاطمه عامل</author><pubDate>Tue, 21 May 2019 15:15:33 +0430</pubDate></item><item><title>کپی پیست کردن یا نوشتن کدها، مسئله این است!</title><link>https://virgool.ir/Quera-Mag/کپی-پیست-کردن-یا-نوشتن-کدها-مسئله-این-است-ru4luotiurlz</link><description> تابحال برایتان پیش آمده که قطعه کدی را از جایی مثل سایت Stack Overflow کپی کرده و داخل برنامه‌تان قرار دهید درحالی که ندانید آن قطعه کد چه مفهومی دارد یا دقیقاً چه کاری انجام میدهد؟در این حالت شما اصطلاحاً مشغول استفاده از یک روش توسعه نرم‌افزار به نام Cargo Cult Programming هستید که بین برنامه‌نویسان تازه‌کارتر رواج زیادی دارد! در این روش، برنامه‌نویس بدون دانستن ساز-و-کار آن قطعه کد و ارتباط‌ش با بقیه کدها، صرفاً عمل کپی‌پیست را انجام می‌دهد... یا گاهی بدون آنکه از ساز-و-کار دقیق کد مطلع باشد، بخش‌هایی از آن را تغییر می‌دهد به امید اینکه مشکلات کد برطرف شده باشد.اگر فکر می‌کنید چنین کاری کاملاً بی‌خطر است، باید بگوییم که سخت در اشتباهید؛ این کار ممکن است عواقب ناخوشایندی برای شما یا پروژه‌تان داشته باشد!مشکل در اصل، کپی کردن کد دیگران نیست؛ هر کسی می‌تواند بدون به خطر انداختن پروژه‌اش، کدهای دیگران را ببیند، آن را بفهمد، کپی کند، در‌ آن‌ها تغییر اعمال کند و از آن‌ها یاد بگیرد! مشکل این است که از کدهای دیگران چیزی یاد نگیریم و از آن بدتر، آن‌ها را در جایی که نباید به کار ببندیم.کپی کردن کدها می‌توانید برای برنامه نویسان تازه کار مشکل‌آفرین باشد! اگر می‌خواهید حین کپی کردن کدها، چیزهای جدید هم یاد بگیرید این پیشنهادها را در نظر بگیرید:قطعه‌ی کد را با دقت بخوانید.سعی کنید زبانی که کد به آن نوشته شده، کتابخانه‌های به کار گرفته شده و فریم‌ورک‌های درگیر را پیدا کرده و ویژگی‌ها و امکانات هر کدام از آن‌ها را متوجه شوید.سعی کنید اطلاعات خود را راجع به فریم‌ورک‌ها و کتابخانه‌های استفاده شده در آن کد به روز کنید.متوجه کارکرد هر خط از کد، و نقشی که فریم‌ورک‌ها و کتابخانه‌ها در آن کد خاص ایفا می‌کنند بشوید.قطعاً رعایت کردن نکات بالا قرار است برای برنامه‌نویسان تازه‌کار بسیار دشوار باشد، چرا که باید با خواندن کدها از ساز و کار هر خط کد سر دربیاورند و ذهنشان با ربط دادنِ ارتباط کدها به هم اطلاعات زیادی را پردازش کند! تمرین زیاد و استفاده از برخی تکنیک‌های ثابت شده، می‌تواند به فرد کمک کند تا به طور آگاهانه یا حتی ناخودآگاه، ذهنش را برای این کار آماده کند.دو تکنیک مفید در راستای یادگیری بهتر می‌تواند به کار بیاید: یکی Blocked Practice است که هدف آن یادگیری با تکرار چندین‌باره کارهاست. البته این روش بهینه‌ترین روش ممکن برای یادگیری نیست! جایگزین بهتر آن روش Interleaving Practice است که هدف آن یادگیری از طریق ترکیب آموخته‌های مختلف است!قبل از آنکه صحبت را ادامه دهیم، خوب است که نگاهی به مخروط تجربی ادگار دیل بیندازیم: سالها قبل ادگار دیل مخروطی را معرفی کرد و مفهوم جدیدی را به مهارت یادگیری اضافه کرد که به هرم یادگیری معروف شد. این نظریه نشان می‌دهد که مردم فقط ۱۰ درصد از آن چیزهایی را که می‌خوانند (مثل کتاب و روزنامه و…)، ۲۰ درصد از آن چیزی را که می شنوند (مثل فایل های صوتی، رادیو و…)، ۳۰ درصد از آن چیزی را که مشاهده می کنند (مثل فیلم)، ۵۰ درصد از آن چیزی را که همزمان هم می‌بینند و هم می‌شنوند (مثل یک آزمایش علمی)، ۷۰ درصد از آن چیزی را که به صورت عملی با آن درگیر می‌شوند و ۹۰ درصد از آن چیزی که شخصاً اجرا می‌کنند و به دیگران یاد می دهند را یاد می‌گیرند. این هرم نشان می‌دهد که یادگیری از طریق تجارب عملی و مستقیم، به مراتب بهتر از یادگیری انتزاعی و غیرمستقیم است.هرم یادگیری می‌گوید بازدهی یادگیری چیزها به روش یاد گرفتن ما بستگی مستقیم دارد!جالب است بدانید هر دو روش Blocked Practice و Interleaving Practice می‌تواند در یادگیری بهتر کدها به ما کمک کند. اجازه بدهید با ذکر چند مثال ببینیم که چگونه:&gt;&gt; زمانی که کدی را کپی‌پیست می‌کنید، آن را صرفاً می‌بینید، هرم فوق به خوبی نشان می‌دهد که چنین کاری شانس بسیار کمی برای ماندگاری در حافظه شما دارد. در طرف مقابل حتی اگر عین همان کد را خودمان مجدداً تایپ کنیم، باز هم ذهنمان درگیری بیشتری با کد دارد و شانس ماندگاری آن در حافظه بالا می‌رود.&gt;&gt; نام‌گذاری چیزها در برنامه‌نویسی یکی از سخت‌ترین کارهایی هست که همه برنامه‌نویس‌ها با آن چالش دارند...  ممکن است با کپی پیست کردن بلوک‌های کد، یک تابع یا کلاس را با نامی کپی کرده باشیم که قبلاً برای یک تابع دیگر به کار رفته است. راه‌حل بهتر این است که سعی کنید بفهمید هر تابع چه کاری انجام می‌دهد و آن را مجدداً و به شکل بهتری اسم‌گذاری کنید. ممکن است خروجی کد همچنان همان باشد، اما این کار کوچک از اشتباه‌های آتی جلوگیری می‌کند.&gt;&gt; یکی دیگر از مشکلاتی که ممکن است حین کپی کردن پیش بیاید، این است که تغییر دادن بخشی از کد را که نیاز به تغییر دارد، فراموش کنیم. به عنوان مثال، به قطعه کُد HTML زیر توجه کنید:  &lt;label for=&#34;name&#34;&gt;&lt;/label&gt;&#xA; &lt;div class=&#34;input-wrapper&#34;&gt; &#xA;     &lt;input type=&#34;text&#34; id=&#34;name&#34;&gt;&#xA;  &lt;/div&gt; تصور کنید با کپی کردن این کد، بخواهیم یک فیلد جدید اضافه کنیم. اما چون نمی‌دانیم کد چه‌طور کار می‌کند، مشخصه for برای label را تغییر ندهیم! در این حالت قرار نیست خروجی مد نظر را دریافت کنیم.&lt;label for=&#34;name&#34;&gt;&lt;/label&gt; &#xA;&lt;div class=&#34;input-wrapper&#34;&gt;&#xA;    &lt;input type=&#34;text&#34; id=&#34;name&#34;&gt;&#xA; &lt;/div&gt;&#xA;&#xA;&lt;label for=&#34;name&#34;&gt;&lt;/label&gt;&#xA;&lt;div class=&#34;input-wrapper&#34;&gt;&#xA;    &lt;input type=&#34;password&#34; id=&#34;password&#34;&gt;&#xA;&lt;/div&gt; جالب خواهد بود که اشاره کنیم این دست مشکلات را نمیتوانید با تست‌های خودکار پیدا کنید و باید به صورت دستی توسط برنامه‌نویسان آن را پیدا کرد.&gt;&gt; یکی دیگر از جاهایی که کپی پیست میتواند مشکل‌ساز شود، در تست‌ها است: وقتی برای یک تابع جدید از تستی که قبلاً نوشته‌ایم استفاده می‌کنیم، این احتمال وجود دارد که فراموش کنیم برخی پارامترها و چیزهایی که باید حتماً در تابع جدید تست شود را آپدیت کنیم و مسائلی از این دست به سادگی باعث می‌شوند که تست به ما بگوید که تابعی مشکلی دارد و در نتیجه شروع به بررسی‌اش کنیم اما این در حالی است که مشکل از تابع جدید نیست، بلکه خودِ تست است که منجر به خطا شده است.در چنین مواقعی، متوانیم با استفاده از Test Driven Development  یا به اختصار TDD جلوی این مشکل را بگیریم. به عبارتی، ابتدا به ساکن یک تابع تست نوشته می‌شود سپس اقدام به کدنویسی تابع اصلی می‌کنیم به طوری که باید بتواند آن تست را پاس کند که این رویکرد تضمین می‌کند مشکلات به اصطلاح False-Positive به حداقل برسند.خلاصه که تنبلی را کنار بگذاریم و بجای کپی پیست کدها، آن‌ها را از نو بنویسیم تا بازدهی ما در یادگیری به بیشترین حالت ممکن برسد! فراموش نکنید که مهم‌ترین سرمایه یک توسعه‌دهنده، نه دستانش، که مغز او محسوب می‌شود!بر اساس مطلب:&#34;Don’t copy-paste code. Type it out.&#34; &gt; by Fagner Brack @ freeCodeCamp کوئرامگ مجله تخصصی کوئرا برای توسعه‌دهندگان است که هر هفته با مطلب‌هایی در زمینه تکنولوژی، رشد فردی و آینده برنامه‌نویسی به‌روزرسانی می‌شود. برای اطلاع از آخرین مطلب‌های ما، می‌توانید توئیتر یا کانال تلگرام ما را دنبال کنید.</description><category>فاطمه عامل</category><author>فاطمه عامل</author><pubDate>Sun, 12 May 2019 19:33:01 +0430</pubDate></item><item><title>نتایج نظرسنجی از دولوپرهای stackoverflow در سال ۲۰۱۹</title><link>https://virgool.ir/coderlife/نتایج-نظرسنجی-از-دولوپرهای-stackoverflow-در-سال-۲۰۱۹-utlj9ecuuaeu</link><description>سلام!امسال نهمین سال متوالیه که StackOverflow  نتایج سالیانه‌اش رو منتشر میکنه...این آمارها دسته‌بندی‌های مختلفی ازجمله: اطلاعات مربوط به پروفایل دولوپرها، تکنولوژی و بررسی زبان‌های برنامه‌نویسی، درآمد دولوپرها، علایق و استفاده اونها ار تکنولوژی‌ها، اطلاعات مربوط به زمینه کاری  و اطلاعاتی در مورد تعامل توسعه‌دهندگان با این سایت منتشر کرده...میخوایم با هم به بررسی جذاب‌ترین قسمت‌های این آمار و نمودارها بپردازیم..در ابتدا سری به خلاصه کلی از این آمارها که خود StackOverflow  منتشر کرده میزنیم، و بعد با بررسی پروفایل دولوپرها و تکنولوژی و درآمد و ... چند آمار جالب از استفاده دولوپرها از خود سایت استک اورفلو رو بررسی میکینم...خوب همونطور که میدونید نظرسنجی سالانه Developer StackOverflow متشکل از بزرگترین و جامع‌ترین نظرسنجی برنامه‌نویسان در زمینه‌های مختلف هست که در این نظر سنجی  ۹۰/۰۰۰ دولوپر شرکت کردند..نتایج کلیدی که بر اساس این نظر سنجی به وجود اومده به این صورت است:1. پایتون به عنوان سریع‌ترین زبان برنامه‌نویسی انتخاب شده که خوب افزایش رتبه داشته و بالاخره جاوا رو پشت سر میذاره و دومین زبان برنامه‌نویسی محبوب سمت بک‌اند میشه.2. حدود ٪۵۰ از کسانی که در این نظرسنجی شرکت کردند خودشون رو تحت عنوان فول‌استک دولوپر معرفی کردند و ٪۸۰ گفته‌اند که کدنویسی را به عنوان سرگرمی انجام میدن  و از میان شرکت‌کنندگان، چیزی در حدود نیمی از آن‌ها اولین کد خود را در سن شانزده سالگی زده‌اند. 3. متخصصان  DevOps و مهندسان قابلیت اطمینان سایت‌ها، بالاترین درآمد رو داشتند که از لحاظ تجربه کاری، در سطح بالا قرار دارند و از شغلشون هم رضایت دارند.4. از کشورهای برتر در این نظرسنجی، چین خوش بین‌ترین توسعه‌دهندگان رو داره، اونها معتقدند که امروزه مردم متولد شده زندگی بهتری نسبت به والدین خود دارند. توسعه‌دهندگان کشورهای اروپای غربی مثل فرانسه و آلمان هم به آینده خیلی خوش‌بین نیستند...5. از این دوستان پرسیده بودن آخرین باری که مشکل کدت رو با سایت استک اورفلو و بدون سایت استک‌اورفلو حل کردی کی بوده؟ که آمارهایی که درومده نشوون داده هر دولوپر حدود 30 تا 90 دقیقه در هفته از وقتش رو به بطرف کردن مشکلش در این سایت پرداخته.هر ماه حدود 50 میلیون نفر از سایت استک اورفلو به بهانه‌های مختلفی مثل یادگیری و به اشتراک‌گذاری و یا پیدا کردن شغل مورد نظرشون سر میزنند. که بر اساس این آمار تخمین زدنند که 21 میلیون نفر توسعه‌دهندگان حرفه‌ای و دانشجویان دانشگاه‌های مختلف هستند. 4 درصد هم اعلام کردند برای سرگرمی و دل خودشون کد میزنن و زیر 2 درصد هم اعلام کردند که تازه دارن تبدیل میشن به یک دولوپر حرفه‌ای.در نمودار زیر میتونید نقش‌های مربوط به دولوپرها رو مشاهده کنید:  میزان مشارکت در پروژه‌های اوپن سورس و کدنویسی دلی حدود 65 درصد از دولوپرهای حرفه‌ای گفتند که حداقل یکبار یا بیش از یکبار در سال در پروژه‌های اوپن سورس مشارکت داشتند..از نظر کد نویسی دلی هم، حدود 80 درصد از پاسخ‌دهندگان گفتند برای دل خودشون کد میزنند.از نظر تحصیلات هم مطابق نمودار زیر : 75 درصد از پاسخ‌دهنگان در حال تحصیل نیستند و حدود یک چهارم از پاسخ‌دهندگان گفتند به طور تمام وقت و پاره وقت مشغول به تحصیل هستند...مطابق نمودارهای زیر، حدود 45 درصدشان اعلام کردند که مدرک کارشناسی (لیسانس) هست که این آمار در مورد دولوپرهای حرفه‌ای هم صادق هست.خوب اگر به نمودار رشته‌های تحصیلی هم نگاه کنیم حدود 60 درصد از کل پاسخ دهندگان و دولوپرهای حرفه‌ای و دانش آموزان در رشته علوم کامپیوتر، مهندسی کامپیوتر و مهندسی نرم افزار تحصیل میکنند.حدود سه چهارم از توسعه‌دهندگان کمتر از 35 سال سن دارند که بیشترین درصد سنی بین 25 تا 29 سال هست.استفاده از شبکه‌های اجتماعیاز بین شبکه‌های اجتماعی،‌ دولوپرها به ترتیب به شبکه‌های رِددیت، یوتیوب، واتس‌اَپ، فیسبوک،‌ توییتر و اینستاگرام علاقه نشان داده‌اند و بنظرشون تأثیرگذارترین فرد در سال جاری در حوزهٔ فناوری ایلون ماسک و جف بزوس بوده که توی نمودار اسامی افراد رو به ترتیب میتونید ببیند:خوب رسیدیم به بخش جذاب تره آمارها:تکنولوژیزبان JavaScript برای هفت سال پشت سر هم به عنوان پرکاربردترین زبان برنامه‌نویسی انتخاب شد و Python هم زبانی است که نسبت به سایر زبان‌ها در مقایسه با سال‌های گذشته از رشد سریع‌تری برخوردار بوده است.در نمودار زیر محبوبیت زبان‌های برنامه‌نویسی رو به ترتیب مشاهده می‌کنید:فریمورک‌های تحت وبدر مورد بیشترین فریمورک‌هایی که دولوپرها استفاده کردند نتیجه جالب این هست که jQuery در صدر جدول قرار داره و همینطور از React.js هم بیشتر از Angular.js در این سال استفاده شده. ولی اگر به نمودار در قسمت نظرات دولوپرهای حرفه‌ای دقت کنیم Angular.js استفاده بیشتری نسبت به React.js داشته!  در مورد بقیه فریمورک‌ها و ابزارها که به گفته استک اورفلو امسال اولین سالی هست که انقدر تنوع تکنولوژی در نظر سنجیش داره، Node.js بیشترین استفاده داشته و دولوپرهای دات نتی هم از Net. بیشتر از Net. core استفاده کردند و همینطور در بین فریمورک‌‍های یادگیری عمیق، TensorFlow بیشترین استفاده رو نسبت به Torch/PyTorch داشته...پایگاه دادهباز هم مثل سال گذشته وقتی که صحبت از سیستم‌های مدیریت پایگاه‌ داده به میان می‌یاد، MySQL نسبت به رقبای خود از حیث میزان کاربردی‌ بودن پیشتازی می‌کنه اما Redis جایگاه محبوب‌ترین دیتابیس را به خود اختصاص داده. PostgreSQL  هم که امسال در رده دوم و بالا تر از Microsoft SQL Server قرار گرفته…  پلتفرم‌ها  ار میان پلتفرم‌های توسعه نرم افزار، Linux و Windows به ترتیب جزو محبوب‌ترین‌ها بودند و Docker هم برای اولین بار در امسال در رده سوم قرار گرفته...خوب بریم سراغ زبان‌های برنامه نویسی دوست‌داشتی، منفور و خواستنی....طبق نموداری که دیگه خیلی طولانی و زیاد میشد که میتونید در خود سایت مشاهده کنید، زبان برنامه‌نویسی Rust برای چهارمین سال دوست داشتنی ترین زبان بوده، یعنی دولوپرها علاقه مندند که بازم با این زبان ادامه بدند و کد نویسی کنند..زبان‌های VBA و objective-c هم در دسته‌بندی زبان‌های برنامه‌نویسی منفور در صدر نمودار قرار گرفتند و این به این معنیه که درصد زیادی از دولوپرهایی که در حال حاضر از این زبان ها استفاده میکنند دیگه علاقه‌ای به این کار ندارند و نمیخوان ادامه بدند.پایتون هم خواستنی‌ترین زبان برنامه‌نویسی شده و معنی اینم این هست که درصد زیادی از دولوپرهایی که از پایتون استفاده نمی‌کردند اعلام کردند، می‌خواهند شروع به یادگیری این زبان کنند...خوب حالا همین شرایط رو بریم برای فریمورک‌ها بررسی کنیم...فریمورک‌های React.js و Vue.js هم جزو فریمورک‌های دوست‌داشتی و خواستی، در صدر نمودار قرار دارند در حالی که jQuery و Drupal تو دسته منفورها قرار گرفتند...در بین دیتابیس‌ها هم Redis محبوب‌ترین و MongoDB خواستنی‌ترین و Couchbase و Oracle هم جزو منفورترین دیتابیس‌ها قرار گرفته. در این میان محبوب‌ترین پلتفرم linux و Docker هم خواستنی‌ترین ولی Wordpress منفورترینه و دولوپرها گفتند که دیگه نمیخوان با وردپرس ادامه بدند....   محبوب‌ترین محیط‌های توسعهخوب همونطور که میبنیم CodeVisual Studio  امسال مورد پسند توسعه‌دهندگان بوده و اگر بخواهیم به طور جداگانه بررسی کنیم، توسعه‌دهندگان وب هم با visual studio code هم عقیده بودند. Android studio هم مورد علاقه دولوپرهای موبایل بوده و بازهم Visual Studio Code و Vim مورد علاقه دولوپرهای DevOps و SRE بوده...در مورد سیستم عامل‌های اولیه که توسعه‌دهندگان برای کارشون استفاده میکنند، به ترتیب Windows و MacOs و linux-base بوده که اختلاف خیلی کمی با هم دارند....پردرآمد ترین زبان برنامه‌نویسی، از دو جهت مورد بررسی قرار گرفته که اولی در بین همه پاسخ‌دهندگان بوده  که در نتیجش، Clojure و زبان #F از پردرآمد ترین زبان‌ها بوده و از نظر دولوپرهای united states ، زبان برنامه‌نویسی scala در صدر نمودار و پردرآمدترین زبان برنامه‌نویسی قرار دارد.در مورد بحث استخدام، آمارهای زیادی در جهت مختلفی گرفته شده که به طور خلاصه میتونیم اشاره کنیم به اینکه درصد بالایی از پاسخ دهندگان به صورت فول تایم مشغول به کار هستد بیشترین درصد  این افراد به ترتیب در زمینه کاری توسعه نرم افزار ، IT و مالی و بانکی مشغول به کار هستند و چیزی در حدود ٪۴۰ از دولوپرها نسبت به حرفهٔ خود رضایت کامل دارند...یک آمار جالبی که به چشم میخوره این هست که از دولوپرها پرسیده شده موزیکی که در حین کد نویسی گوش میکنی تا تمرکزت رو بالا ببره چه نوع موسیقی هست..اونا هم به موسیقی کلاسیک، موسیقی بازی‌ها ویدئویی و موسیقی فیلم‌ها و انواع موسیقی‌های متال و موسیقی‌های بی کلام اشاره کردند و درصد کمی هم دوست داشتند در حین کد نویسی موسیقی گوش نکنند و محیط ساکت رو ترجیح دادند.  خوب بریم حقوق و دستمزد رو بررسی کنیم:مطابق نمودار کاملا مشخصه که بیشترین درآمد رو مدیران مهندسی دارند، در رده بعدی به اصطلاح مهندسان قابلیت اطمینان و در رد سوم مهندسان Devops قرار گرفتند....یکسری آمار جالب در مورد خود سایت استک اورفلو وجود داره که میتونیم برخی ار مواردش رو بررسی کنیم:در مورد بازدید از سایت استک اورفلو، حدود 30 درصد هر روز از این سایت دیدن میکنند که بیشترین درصد رو هم به خودش اختصاص داده...شما یادتون میاد اولین باری که سایت استک اورفلو رو دیدین کی بوده؟خیلی از پاسخ‌دهنده‌ها گفتند یادشون نمیاد اولین بار کی بوده و بیشترین درصد اولین بازدیدشون رو سال 2010 و 2008 اعلام کردند. 85 درصد شرکت کنندگان در این نظر سنجی اعلام کردند که در این سایت پروفایل دارند...شما بیشتر برای چه مواردی به سایت استک اورفلو سر میزنید؟خیلی ها گفتند برای اینکه بتونیم پاسخ سوال خاصی رو پیدا کنیم سر میزنیم و در مقایسه با منابع دیگر معتقدند استک اورفلو جاییه که خیلی زودتر مشکلاتمون رو برطرف میکنیم و پاسخ سوالاتمون رو پیدا میکینیم.در این جدول هم استک اورفلو پاسخ‌های واجد شرایط رو از سراسر دنیا منتشر کرده که بر اساس موقعیت میتونیم ببنیم:آزمون نظام مهندسیبرای مشاهده کامل این نظر سنجی و کسب اطلاعات بیشتر میتونید به لینک زیر سر بزنید: https://insights.stackoverflow.com/survey/2019 </description><category>فاطمه عامل</category><author>فاطمه عامل</author><pubDate>Fri, 26 Apr 2019 19:28:09 +0430</pubDate></item><item><title>۵ آمار از دنیای برنامه‌نویسی ایران در سال ۹۷</title><link>https://virgool.ir/Quera-Mag/۵-آمار-کوئرا-و-دنیای-برنامهنویسی-در-سال-۹۷-dm7wnitpabm8</link><description>باور ما به خداست. همه افراد دیگر باید داده‌هایشان را ارائه دهند. - ادواردز دمینگتصمیم گرفتیم سال ۹۷ رو با انتشار داده‌هایی درباره دنیای برنامه‌نویسی ایران و عملکرد Quera در این سال به پایان برسونیم! برای این منظور محبوب‌ترین زبان‌های برنامه‌نویسی بین شرکت‌ها و توسعه‌دهنده‌ها، شهرها و استان‌هایی که برنامه‌نویس‌ها در اون‌ها بیشترین فعالیت رو دارن و آمارهایی از GitHub و StackOverflow برای مقایسه با بازار جهانی رو گرد هم آوردیم. در کنار این آمارها، نگاهی هم به بعضی از دستاوردهای Quera در سالی که گذشت خواهیم انداخت. امیدواریم برای شما هم جذاب باشه!محبوب‌ترین زبان برنامه‌نویسی شرکت‌ها در سال ۹۷از ابتدای زمستون امسال، تصمیم گرفتیم که خیلی جدی بریم به سمت اینکه به مرکزی تخصصی برای فرصت‌های شغلی برنامه‌نویسی در ایران تبدیل بشیم. از ۵۰۰ شرکتی که تا الآن در Quera عضو شدن و فرصت‌های شغلی‌ای که در این مدت در سایت درج شده، آمارهای جذاب مختلفی رو میشه استخراج کرد! یکی از این اطلاعات، تکنولوژی‌هایی است که شرکت‌ها در پروفایل‌شون گفتن که مورد استفاده قرار میدن: بر این اساس در ایران PHP بالاترین استفاده در پلتفرم شرکت‌ها رو داشته و Java در رتبه دوم قرار گرفته! آمارهای کامل رو می‌تونید در دو نمودار زیر ببینید.این نمودار تکنولوژی‌های پرکاربرد رو بر حسب اطلاعات درج شده در پروفایل شرکت‌ها به نمایش میذاره:پرکاربردترین زبان‌ها و تکنولوژی‌ها بر اساس پروفایل شرکت‌ها در Queraنمودار زیر تکنولوژی‌های مورد نیاز شرکت‌ها برای استخدام رو بر حسب فرصت‌های شغلی اون‌ها در سایت Quera نشون میده:بیشترین نیازمندی شرکت‌ها بر حسب فرصت‌های شغلی در Queraدسته‌بندی زبان‌ها و تکنولوژی‌های محبوب بر حسب حوزه استفاده هم نتایج جالبی داره:محبوب‌ترین تکنولوژی در بین تکنولوژی‌های Back-end: زبان PHP و فریم‌ورک Laravel همچنان در ایران خیلی بیشتر از زبان Python و فریم‌ورک Django مورد استفاده قرار می‌گرفتن! در فرصت‌های شغلی درج شده توسط شرکت‌ها نیز دوباره پی‌اچ‌پی و لاراول بیشترین حضور رو در پلتفرم کوئرا داشتن!محبوب‌ترین پایگاه‌های داده: MySQL رتبه‌ اول رو داشته و بعد از اون MongoDB و PostgreSQL بودن.محبوب‌ترین تکنولوژی در بین زبان‌های برنامه‌نویسی Front-end: در این قسمت تصمیم‌گیری کمی سخت‌تره! شرکت‌ها هسته مرکزی فرانت‌اند یعنی HTML و CSS و JS رو بیشتر از همه در فرصت‌های شغلی‌شون به کار بردن که کاملاً قابل پیش‌بینی است. در بین فریم‌ورک‌ها اما React تقریباً دو برابر Angular در آگهی‌های استخدام Quera به چشم میاد.یکی از فرضیه‌هایی که در تایید اون داده‌ای نداریم، اما در طول سال گذشته بارها با اون مواجه شدیم، تقاضای بالا برای React Native در سمت سازمان‌ها و عرضه کم برای این حوزه در سمت توسعه‌دهندگان هست!شاید براتون جالب باشه اگر آمارهای جهانی مرتبط رو در GitHub مرور کنیم! آمار GitHub نشون میده که از سال ۲۰۱۵ به بعد، Python جای PHP را در بین محبوب‌ترین زبان‌های برنامه‌نویسی این سایت گرفته، اما به نظر می‌رسه که این تغییر هنوز جای خودش رو در سازمان‌های ایرانی پیدا نکرده.سیر محبوبیت زبان‌های برنامه‌نویسی در پروژه‌های GitHubتوزیع دانشگاه‌ها در دوره‌های آموزشی Queraیکی دیگه از پروژه‌هایی که امسال زمستون در Quera کلید زدیم، دوره‌های آموزشی برنامه نویسی بوده. خوبه که همینجا به این نکته هم اشاره کنیم که برخلاف سایت‌های آموزشی دیگه در ایران، ما اعتقاد داریم که برنامه‌نویسی نه از طریق دیدن ویدئو، بلکه از طریق تمرین و حل مساله آموخته میشه و به همین خاطر دوره‌های ما به شکل کاملاً مساله‌محور طراحی شدن.یکی از آمارهای خیلی جالب برای ما، این بود که در اولین دوره آموزشی کوئراکالج، شرکت‌کنندگانی از ۲۵۲ مدرسه و دانشگاه مختلف در این دوره ثبت‌نام کردن! بیشترین ثبت‌نام متعلق به دانشگاه‌های صنعتی شریف، صنعتی امیرکبیر و صنعتی خواجه نصیر بوده و در شهرستان‌ها هم دانشگاه‌های صنعتی اصفهان و دانشگاه فردوسی مشهد بیشترین ثبت‌نامی‌های دوره اول کوئراکالج رو به خودشون اختصاص دادن. یه نکته جالب برای خود ما هم اینکه ۶ نفر مؤسسه آموزشی‌شون رو Quera (و البته ۳ نفر رهنماکالج و ۲ نفر سون‌لرن) اعلام کردن. ;)کدهای داوری‌شده توسط Queraسال گذشته در Quera مجموعاً میزبان ۱۹۱ مسابقه برنامه‌نویسی بودیم! مسابقات الگوریتمی که از قدیم پایه ثابت Quera بوده، اما در کنار اون امسال مسابقات تکنولوژی رو به شکل جدی وارد کدکاپ کردیم. شاید براتون جالب باشه که سیستم داوری خودکار Quera احتمالاً یکی از معدود نمونه‌هایی در جهان محسوب میشه که برای داوری اتوماتیک چالش‌های تکنولوژی (مثلاً Android یا React) میتونه مورد استفاده قرار بگیره! جدا از این از زمستون امسال برای اولین بار شروع کردیم به برگزاری هکاتون که در اون قراره شرکت‌کننده‌ها هر فصل روی چالش‌های اساسی یک پروژه متن‌باز کار کنن و خروجی اون رو مستقیماً در GitHub منتشر کنن.اما جالب‌ترین آمار برای خود ما؟ تعداد کل کدهای ارسالی که توسط سامانه داوری خودکار Quera تصحیح شده که ۸۱۹۲۲۲ تا بوده! :)توزیع استانی توسعه‌دهندگان ایرانیتوسعه‌دهندگانی از مجموعاً ۴۳۴ شهر و روستا در Quera فعال هستن! تهران، مشهد، اصفهان، کرج، شیراز، قم و تبریز به ترتیب بیشترین کاربران رو به خودشون اختصاص دادن. از اونجایی که بسیاری از استارتاپ‌های ایرانی هم در همین شهرها واقع شدن، میشه تا حد خیلی خوبی این آمار رو به توسعه‌دهنده‌های کل ایران هم تعمیم داد. اما برای اینکه از این تعمیم بیشتر مطمئن بشیم، تصمیم گرفتیم نظرسنجی سال قبل جادی از برنامه‌نویس‌ها و مدیر سیستم‌های ایران رو هم بررسی کنیم. بنا بر داده های این نظرسنجی که ۲۰۰۰ شرکت‌کننده داشته، تهران، خراسان رضوی، اصفهان، فارس، آذربایجان شرقی، البرز، مازندران و قم به ترتیب بیشترین آمار رو داشتن که البته از فارس به بعد اختلاف عددها به لحاظ آماری معنادار نیست.تکنولوژی برنامه نویسی محبوب توسعه‌دهنده‌ها در سال ۹۷اما در انتها نگاهی بندازیم به محبوب‌ترین تکنولوژی‌ها در بین توسعه‌دهنده‌ها! اگر ++C رو که به خاطر مسابقات الگوریتمی Quera محبوبیت خیلی زیادی داره در نظر نگیریم، به ترتیب جاوا، پایتون، پی‌اچ‌پی، اندروید، سی شارپ و جاوا اسکریپت محبوب‌ترین زبان‌های برنامه‌نویسی Quera در سال ۱۳۹۷ بوده‌اند! نمودار کامل‌تر این زبان‌ها رو میتونید در تصویر زیر مشاهده کنید:محبوب‌ترین زبان‌ها و تکنولوژی‌های برنامه‌نویسی در سایت Queraجالب خواهد بود اگه نگاهی هم به آمار مشابهی که StackOverflow هر سال از توسعه‌دهندگان در سطح جهان منتشر میکنه داشته باشیم:محبوب‌ترین زبان‌های برنامه‌نویسی ۲۰۱۸ در نظرسنجی سالانه StackOverflowآمار جالب توجه دیگری که میشه بررسی کرد، محبوب‌ترین تکنولوژی‌ها و فریم‌ورک‌های برنامه‌نویسی است. محبوب‌ترین فریم‌ورک‌ها بین کاربران Quera به ترتیب عبارت بوده از:DjangoLaravelBootstrapReactJSNode.JSReact NativeASP.NETآمار مشابه در سایت StackOverflow اختلاف بسیار زیادی رو در این زمینه نشون میده:محبوب‌ترین تکنولوژی‌ها و فریم‌ورک‌های برنامه‌نویسی ۲۰۱۸ در نظرسنجی سالانه StackOverflow کوئرامگ مجله‌ای تخصصی برای توسعه‌دهندگان است که هر هفته با مطلب‌هایی در زمینه تکنولوژی، رشد فردی و آینده برنامه‌نویسی به‌روزرسانی می‌شود. برای اطلاع از آخرین مطلب‌های ما، می‌توانید توئیتر یا کانال تلگرام کوئرا را دنبال کنید.</description><category>فاطمه عامل</category><author>فاطمه عامل</author><pubDate>Sun, 17 Mar 2019 20:40:58 +0330</pubDate></item><item><title>۷ مرحله برای تبدیل شدن به یک توسعه‌دهنده حرفه‌ای وب</title><link>https://virgool.ir/Quera-Mag/۷-مرحله-برای-تبدیل-شدن-به-یک-توسعهدهنده-حرفهای-وب-p36zzuguruka</link><description> شاید گمان کنید برای تبدیل شدن به یک توسعه‌دهنده حرفه‌ای وب، یادگیریHTML ، CSS و Javascript به همراه کتابخانه‌های مختلف و یا در نهایت یادگیری یک زبان سمت سرور مثل Python یا PHP کافی است. اما ماجرا به این سادگی نیست! هر ساله هزاران نفر، به عنوان توسعه‌دهنده وب وارد بازار کار می‌شوند و خاص بودن در بین آن‌ها به مهارت‌های بیشتری نیاز خواهد داشت.  در این مقاله می‌خواهیم ۷ مهارت فنی را معرفی کنیم که توسعه‌دهنده‌های کم‌تجربه‌تر معمولاً آن‌ها را نادیده می‌گیرند اما یادگیری آن‌ها می‌تواند بسیار اثربخش و مهم باشد. برای هر کدام از این مهارت‌ها یک یا چند منبع خوب مطالعاتی نیز معرفی خواهیم کرد. دانش اولیه‌ای در مورد شبکه داشته باشیدمی‌دانید وقتی در مرورگر خود google.com را می‌نویسید و به جستجو می‌پردازید، در پشت پرده چه اتفاقی می‌افتد؟ دانش اولیه در زمینه شبکه و دانستن پاسخ سوال بالا، تفاوت‌های بسیاری را رقم می‌زند. چه چیزهایی باید یاد بگیرید؟آشنایی با نحوه عملکرد DNSنحوه رجیستر و استفاده از دامنه‌هادرک TCP/IPدیباگ کردن ابتدایی شبکهدرک ساز-و-کار VPN این دوره رایگان گوگل، می‌تواند زمینه‌ی خوبی برای یادگیری مباحث اولیه شبکه برای توسعه‌دهنده‌ها محسوب شود. یاد بگیرید HTTP چگونه کار می‌کند از آن‌جایی که HTTP یکی از کلیدی‌ترین پروتکل‌ها در دنیای وب است، یادگیری ساز و کار آن برای شما اهمیتی هدایی خواهد داشت. چه چیزهایی باید یاد بگیرید؟نحوه‌ی تبادل داده در HTTPآشنایی با درخواست‌های HTTP و نحوه‌ی استفاده از آن‌هاشناخت Response Codeهای اصلی و استفاده‌ی درست از آن‌هاپروتکل اصطلاحاً Stateless چیست و چرا اهمیت دارد؟شناخت و نحوه‌ی استفاده از Headerهای اصلیکار با HTTP خارج از محیط مرورگر اصطلاح SSL چیست، چرا و چطور باید از آن استفاده کرد؟منابع آموزشی در این زمینه بسیار زیاد است، به عنوانhttps://developer.mozilla.org/en-US/docs/Web/HTTPhttps://www.udacity.com/course/http-web-servers–ud303نحوۀ کار کردن با UNIX Shell را یاد بگیریداگر برنامه‌ی شما استفاده اختصاصی از ابزارهای مایکروسافت نباشد، به احتمال زیاد وبسایت و یا اپلیکیشن شما توسط یک سرور لینوکسی میزبانی می‌شود، بنابراین باید دانش کافی در این زمینه را داشته باشید. معمولاً برنامه‌نویس‌های تازه‌کار به دلیل آشنا نبودن، از کار با محیط command line اجتناب می‌کنند. این امری عادی شمرده می‌شود ولی اگر می‌خواهید متفاوت باشید، وقت آن رسیده تا رویکردتان را تغییر دهید.چه چیزهایی باید یاد بگیرید؟ دسترسی از راه دور با استفاده از SSHدستورات ابتدایی shellطریقۀ استفاده از grepآشنایی با ویرایشگرهای command line مثل Vimدرک مجوزهای دسترسی در فایل‌ها و نحوۀ تغییر آن‌هایادگیری متغیرهای محیطی (Environment Variables) و نحوۀ استفاده از آن‌هانحوۀ استفاده از bashrc.استفاده از package managerهایی مانند apt و yumطریقۀ پیدا کردن و خواندن logتوانایی مدیریت سرویس‌هایادگیری اسکریپت‌نویسی با Bashممکن است یادگیری UNIX Shell وقت زیادی از شما بگیرد ولی ارزش‌اش را دارد و قدرت زیادی در زمینه توسعه به شما می‌دهد. از اینجا می‌توانید به درس‌نامه‌ای در این زمینه که توسط Digital Ocean منتشر شده، دسترسی داشته باشید.نحوه کار با Git را فرا بگیریدیکی از مهمترین مهارت‌های توسعه‌دهندگان یادگیری یک سامانه مدیریت نسخه همچون Git است. با این حال، بسیاری از توسعه‌دهندگان تازه‌کار خیلی به سراغش نمی‌روند. استفاده از Git در خیلی از موارد می‌تواند کار ما را راحت‌تر سازد و مشکلات را تا حدی کاهش دهد. لازم‌به‌ذکر است که سامانه‌های مدیریت نسخه دیگری نیز مانند Mercurial و SVM وجود دارند ولی Git در بین آن‌ها اهمیت بیشتری دارد.چه چیزهایی باید یاد بگیرید؟دستورات ابتدایی مانند add ،init و commitتوانایی کار با مخازن remoteتوانایی استفاده از push ،pull و fetchتوانایی کار با branchها (create و merge)توانایی حل کردن Conflictهر چقدر که در کار کردن با Git مهارت بیشتری کسب کنید، همکاری با یک تیم چند نفره برایتان آسان‌تر می‌شود. در این زمینه می‌توانید این منبع از Atlassian را امتحان کنید و یا اگر آموزش تعاملی‌تری را ترجیح می‌دهید،try.github.io را امتحان کنید.با محیط Developer tools مرورگر آشنا شویدهمانند محیط ویرایشگر کد، این ابزار هم از مهمترین ابزارهای لازم برای توسعه‌دهندگان می‌باشد. اگر بتوانید به خوبی از امکانات Developer tools مرورگر خود استفاده کنید در رقابت با سایر توسعه‌دهندگان یک پله جلوتر خواهید بود.این ابزار به شما در Debug کردن، درک تأثیرات کدها، شناخت مشکلات Performance و… کمک بزرگی میکند. مرورگر Chrome به شکل خاص، قابلیت‌های بیشتری را در اختیار توسعه‌دهندگان قرار می‌دهد.چه چیزهایی باید یاد بگیرید؟استفاده از کنسول برای یافتن و دیباگ کردن کدهااستفاده از ابزار Inspection برای مشاهده و تغییر Markup و CSS در مرورگرنحوۀ Debug کردن Javascriptطریقه‌ی Inspect و Debug کردن درخواست‌های HTTPتجزیه و تحلیل وب‌سایت برای شناسایی مشکلات Performance آناگر از مرورگر کروم استفاده می‌کنید، می‌توانید این مقاله آموزشی آن‌ها را در زمینه Dev Tools ببینید.یک زبان برنامه‌نویسی جدید یاد بگیریدخیلی‌ها معتقدند که باید یک زبان برنامه‌نویسی را خوب فرا گرفت و با آن زیاد تمرین کرد. برای تبدیل شدن به یک توسعه‌دهنده‌ی خوب باید بدانید دقیقاً از چه چیزی در کجا استفاده کنید. فکر خوبی است که یک زبان برنامه‌نویسی جدید البته در دسته‌بندی جدید یاد بگیرید. برای مثال اگر مشغول یادگیری زبان Python هستید تا حد خوبی با قالب شیٔ‌گرا آشنا هستید پس چرا به سراغ زبان‌های تابعی (Functional) نروید؟! در زیر لیستی از زبان‌هایی ارائه شده که می‌توانند برای یادگیری زبان دوم مناسب باشند.چه چیزهایی می‌توانید یاد بگیرید؟HaskellScalaElmTypeScriptClojureGoKotlinBashفراموش نکنید که برای موفقیت به عنوان یک توسعه‌دهنده، یادگیری یک زبان جدید، به خودی خود اهمیتی ندارد. چیزی که مهم است این است که بتوانید افق‌های دید خود را گسترش دهید و بدانید که برای یک کار خاص، دقیقاً چه چیزی بهترین عملکرد را خواهد داشت.کامنت گذاری روی کدها را فراموش نکنیدکامنت‌گذاری روی کدها یکی از مهمترین نکاتی است که شما را تبدیل به یک توسعه‌دهنده‌ی حرفه‌ای می‌کند، پس کامنت کردن کدها را به درستی یاد بگیرید.جمع‎بندیقطعاً اهمیت دادن به مواردی که گفته شد، می‌تواند دید شما را نسبت به کدی که می‌نویسید و یا سایت و اپلیکیشنی که در حال توسعه آن هستید عوض کند، اما مواردی که در بالا توضیح داده شد از ملزومات و واجبات تبدیل شدن به یک برنامه‌نویس حرفه‌ای است. پس سعی کنید هرچه زودتر در راه پیشرفت خود قدم بردارید…Learning Web Development? These Skills Will Make You Stand Out @ FullBitکوئرامگ مجله‌ای تخصصی برای توسعه‌دهندگان است که هر هفته با مطلب‌هایی در زمینه تکنولوژی، رشد فردی و آینده برنامه‌نویسی به‌روزرسانی می‌شود. برای اطلاع از آخرین مطلب‌های ما، می‌توانید توئیتر یا کانال تلگرام کوئرا را دنبال کنید.</description><category>فاطمه عامل</category><author>فاطمه عامل</author><pubDate>Sat, 09 Mar 2019 15:16:07 +0330</pubDate></item><item><title>آشنایی با متدولوژی اسکرام</title><link>https://virgool.ir/Quera-Mag/آشنایی-با-متدولوژی-اسکرام-q46bwp4qkx9x</link><description>در هر موقعیت شغلی و در هر تیم و سازمانی که باشید، حتماً براتون پیش اومده که با حجم زیاد کارها روبه‌رو بشید. در اکثر مواقع، حجم کارهای شرکت‌ها به دلیل‌های مختلف بیشتر از ظرفیت اجرایی نیروهاست. در این شرایط برای انجام این کارهای انبوه، چه راه حلی وجود داره؟ اسکرام قراره راه حلی برای این مساله باشه!اما اصلاً ببینیم اسکرام چیه؟ اسکرام فرآیندی است که در طی اون، تیم‌ها پروژه‌های بزرگ خودشون رو به بخش‌های کوچکتر تقسیم می‌کنند و با انجام این بخش‌های کوچکتر پروژه‌ی تعریف‌شده سروسامان میگیره و با بازدهی بهتر انجام میشه.در اسکرام دو بخش ثابت همیشه وجود داره:برنامه‌ریزی کوتاه‌مدت: در اسکرام تیم‌ها برای یک بازه زمانی زمانی کوتاه (معمولاً بین ۲ تا ۴ هفته) برنامه‌ریزی می‌کنن. به هر کدوم از این واحدهای زمانی یک اسپرینت (Sprint) گفته میشه. هر اسپرینت با یک جلسه برای برنامه‌ریزی اولیه و با یک جلسه کوتاه برای جمع‌بندی دستآوردها به پایان می‌رسه.جلسه‌های روزانه: به این جلسه‌های کوتاه ۱۰ دقیقه‌ای استندآپ (Stand-up Meeting) گفته میشه و معمولاً در اولین ساعت کاری روز بین اعضای یک تیم توسعه نرم‌افزار برگزار میشه. اعضای تیم کارهایی که روز گذشته انجام شده و همچنین کارهایی که در طول روز جاری قراره انجام بدن رو خیلی سریع بیان می‌کنن. برای اینکه جلسه زیادی طولانی نشه، معمولاً توصیه میشه که در حین جلسه افراد به طور ایستاده کارهاشون رو بیان کنن. همچنین اگر اعضای تیم در طول روز قبل در انجام کارهاشون به مشکلی برخوردند، مشکل رو مطرح میکنند تا در جلسه دیگه‌ای بهش رسیدگی بشه.خب چرا به شکل روزانه برای بررسی کارها جلسه بذاریم؟ گزارش‌دهی روزانه تاثیر شگفت‌انگیزی در بهبود روند کارها داره چرا که در این حالت ذهن شروع به مقایسه پیشرفت کارها در روزهای مختلف خواهد کرد و اولویت‌بندی کارها و عملکردهای روزانه بهبود قابل توجهی پیدا میکنه.تاریخچه اسکرامدو استاد مدیریت ژاپنی با نام‌های Hirotaka Takeuchi و Ikujiro Nonaka در سال ۱۹۸۶، برای اولین بار متدولوژی اسکرام رو پایه‌ریزی کردن. اسکرام در دهه ۹۰ میلادی توسط Ken Schwober و Jeff Stherland گسترش داده شد و به عنوان یک متدولوژی رسمی جهت تولید محصولات نرم افزاری شناخته و به کار گرفته شد. ریشه عنوان این متدولوژی از بازی راگبی گرفته شده. در راگبی به شروع دوباره در اصطلاح اسکرام میگن؛ یعنی هر وقت به هر دلیلی مثل خطا یا بیرون افتادن توپ، اگر بازی متوقف بشه، با اسکرام بازی مجدداً شروع میشه. اسکرام یک فرآیند مکرر و روبه‌جلوئه که نوعی از از سیستم توسعه‌ی نرم‌افزار چابک (Agile) محسوب میشه.روش استفاده از اسکراماولین مرحله: آماده کردن Product Backlogلیستی از تمامی کارهای یک پروژه رو با کمک تیم آماده میکنیم.دومین مرحله: فازبندی پروژهکل کار رو به چند فاز تقسیم می‌کنیم و تیم‌ها رو برای هر فاز انتخاب می‌کنیم. بسته به پروژه‌ای که تعریف کردید، امکان‌ش وجود داره که به تیم‌های توسعه، بازاریابی، محصول و یا حتی مالی هم احتیاج داشته باشید.سومین مرحله: برنامه‌ریزی اسپرینتقبل از هرکاری باید برای اسپرینت هدف تعیین کنید! در این اسپرینت به دنبال چه دستآوردهایی هستیم؟ چطور به این اهداف برسیم؟ این دو سوال دلایل اصلی برگزاری جلسه‌های برنامه‌ریزی اسپرینت هستند. این جلسات باید با حضور همه اعضای تیم برگزار بشن و وظایف تقسیم انجام بشه.در جلسه‌ی برنامه‌ریزی اسپرینت، هر فرد برگه‌هایی از کارهایی که بهش محول شده ایجاد می‌کنه. یک تخته اسکرام (Scrum Board) رو به سه ستون در صف انجام (To-Do)، در حال انجام (Doing) و انجام شده (Done) تقسیم می‌کنیم. همگی برگه‌ها رو در روز برنامه‌ریزی در ستون «در صف انجام» قرار میدیم.چهارمین مرحله: اجرای اسکراماعضای تیم هر روز دور هم جمع میشن و خیلی کوتاه در مورد کارهای گذشته و کارهایی که قراره انجام بدن توضیح میدن. اعضای تیم برگه‌هایی که مربوط به کار خودشون هست رو جابه‌جا می‌کنند. یعنی برگه‌های امروز رو از بخش To-Do به Doing و برگه‌هایی که دیروز انجام شده رو از Doing به Done تغییر میدن.همون طور که قبلاً ذکر شد، زمان جلسه معمولاً ۱۰ تا ۱۵ دقیقه است، که البته بسته به تعداد افراد تیم و نوع پروژه قابل تغییر خواهد بود. در پایان جلسه مسئول اسکرام میتونه یک گزارش کلی از وضعیت و مسائل موجود ارائه کنه.پنجمین مرحله: بررسی و بازنگری اسپرینتخوب رسیدیم به قسمت اصلی ماجرا. در این جلسه باید اسپرینت بررسی بشه که چقدر از کارها انجان شده و چقدر ناقص مونده و چقدر اصلا انجام نشده. بعد زمان به مقایسه نتیجه این بررسی با سند اسپیرینت اصلی میرسه. در این قسمت تیم‌ها میتونن عملکردشون رو بسنجن و یه دید کلی نسبت به کارهایی که کردن داشته باشن تا برای اسپرینت بعدی برنامه‌ریزی دقیق‌تری داشته باشند.‌نقش‌های اسکرامنقش‌های عمده در اسکرام عبارتند از: مالک محصول (Product Owner): مالک محصول باید همیشه در دسترس باشه و فردی با اختیار باشه. او مسئول ارتباط مداوم با تیم‌هاست. مالک محصول را به چشم یک کاپیتان ببینید، به طوری که تمرکزش را روی یک هدف میذاره و از تیم خود میخواد برای رسیدن به این هدف هرکاری که لازم است انجام دهند.اسکرام مستر (Scrum Master): اسکرام مستر مسئول برگزاری به موقع جلسات و پیگیری‌ها و گزارشات است. اسکرام مستر تیم رو مدیریت نمی‌کنه. بلکه در تلاش هست تا هر مانعی که امکان داره جلوی رسیدن تیم به اهداف اسپرینت رو بگیره، برطرف کنه. این کار به تیم کمک می‌کنه تا خلاق باقی بمونن.تیم (Development Team): به گفته ی بنیان‌گذار اسکرام «تیم به طور کامل خودش را مدیریت می‌کند». یک تیم توسعه‌ی اسکرام شامل ۳ تا ۹ نفر عضو هست و پیشنهاد میشه که در اتاقی مجزا از محیط خارج کار کنند. برای پروژه‌های نرم‌افزاری، یک تیم معمولاً شامل مهندسان نرم‌افزار، معماران، برنامه‌نویسان، آنالیزورها، تست‌کننده‌ها و طراحان رابط کاربری هستند.یادگیری بیشتر درباره اسکرامتمرینات اسکرام‌مستری آنلاین در سری های تمرین اسکرام موجودند که یک مجموعه جذاب یادگیری الکترونیک محسوب میشه و مباحثی مثل مقدمه ای بر اسکرام، جلسات تنظیم backlog ، جلسات برنامه ریزی sprint ، جلسات اسکرام روزانه، جلسات مرور sprint و جلسات نگاه به گذشته ی sprint رو پوشش میده. شما می‌تونید یک مرجع شش صفحه‌ای اسکرام را دانلود کنید یا یاد بگیرید که یک اسکرام مستر چه می‌کند.ترجمه و اقتباسی از:What is Scrum? @ scrum.orgAn Empirical Framework For Learning (Not a Methodology) @ Scrum Methodology Scrum (software development) @ Wikipediaتصویرسازی توسط: Thea Schukkenکوئرامگ مجله‌ای تخصصی برای توسعه‌دهندگان است که هر هفته با مطلب‌هایی در زمینه تکنولوژی، رشد فردی و آینده برنامه‌نویسی به‌روزرسانی می‌شود. برای اطلاع از آخرین مطلب‌های ما، می‌توانید توئیتر یا کانال تلگرام کوئرا را دنبال کنید.</description><category>فاطمه عامل</category><author>فاطمه عامل</author><pubDate>Mon, 04 Mar 2019 23:26:51 +0330</pubDate></item></channel></rss>