<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های مهرداد محمدیان</title><link>https://virgool.ir/feed/@mehrdad.dev</link><description>در حال کانفیگ ...</description><language>fa</language><pubDate>2026-11-11 16:39:21</pubDate><image><url>https://files.virgool.ir/upload/users/48695/avatar/ZzaRxh.jpg</url><title>مهرداد محمدیان</title><link>https://virgool.ir/@mehrdad.dev</link></image><item><title>تنها فیل اعدام شده در تاریخ (نتیجه حماقت بی‌نهایت اشرف مخلوقات)</title><link>https://virgool.ir/@mehrdad.dev/تنها-فیل-اعدام-شده-در-تاریخ-نتیجه-حماقت-بی-نهایت-اشرف-مخلوقات-l6hezlqovwtp</link><description>مری تنها فیل اعدام شده در تاریخاخیرا، آخرین آهنگ بامداد به اسم &#34;دار&#34; رو گوش کردم، جدای از شاهکار بودن قطعه، کاور آهنگ خیلی توجه ام و جلب کرد. اول فکر کردم صرفا یک تصویر ساختگی اما با یکی از کامنت های soundcloud متوجه شدم که داستانی واقعی، شوکه کننده، و دردناکی پشت این عکس هست!در سال ۱۹۱۶ در ایالت تنسی آمریکا، شخصی به اسم &#34;رد الدریج&#34; که هیچ سابقه کاری با حیوانات نداشته توی سیرک استخدام میشه. یک روز الدریج تصمیم میگیره که &#34;مری&#34; فیل ۵ تنی رو به برکه سیرک ببره، تا مری آب بخوره و خودش رو بشوره. سر راه مری توقف میکنه و خم میشه تا هندوانه که روی زمین افتاده بوده رو بخوره ... . اما الدریج که حوصله نداشته با ابزارش به پشت گوش مری ضربه میزنه تا به حرکتش ادامه بده. مری زخمی و عصبانی میشه. الدریج رو به سمت برکه پرت میکنه و با دوییدن به سمت الدریج با پا سر اش رو له میکنه.مردمی که توی سیرک حضور داشتن و شاهد ماجرا بودن، خیلی عصبی شدن و فریاد زدند که &#34;فیل رو بکشید!&#34; . افرادی که اسلحه داشتن خودشون دست به کار شدن اما گلوله های هیچ تاثیری روی فیل پنج تنی نداشت. خبر کشته شدن الدریج بین همه مردم شهر پخش شد و گفتن تا زمانی که مری زنده است اجازه اجرای سیرک داخل شهر رو نمیدن. صاحب سیرک برای نجات سیرک مجبور میشه که درخواست مردم و قبول کنه.اما مشکل این بود که هیچ راهی برای کشتن یک فیل ۵ تنی وجود نداشت! هر تلاش غیر موفقی میتونست باعث رم کردن دوباره فیل بشه و افراد بیشتری کشته بشن. افرادی مثل &#34;ادیسون&#34; پیشنهاد دادن که فیل با برق کشته بشه، اما جریان برق به اون قدرت در اون منطقه موجود نبود.روز اعدام مری، فیل بیچارهدر نهایت مردم تصمیم گرفتن که فیل بیچاره رو با جرثقیل صنعتی دار بزنن!در ۱۳ سپتامبر به همراه جمعیتی ۲ هزار و ۵۰۰ نفری، زنجیر به گردن مری انداختند و بالا کشیدنش. اما زنجیر به اندازه کافی محکم نبود، پاره شد و مری به زمین افتاد و لگنش شکست! اما دومین تلاش برای اعدام کردن مری موفقیت آمیز بود. مری رو نیم ساعت در حالت دار نگه داشتند که از مردن فیل بیچاره مطمعن بشن و بعد نیم ساعت همونجا دفنش کردن.این داستان حیوان بیچاره ای بود که سال ها داخل سیرک به خاطر سرگرم کردن انسان ها زجر کشیده بود. و در نهایت به خاطر حفاظت از خودش (که بر اساس غریزه طبیعی بوده) توسط همون آدم ها به شکل دردناکی به دار آویخته شد.توسط موجود هایی که ادعای &#34;اشرف مخلوقات&#34; بودن رو دارن. نتیجه حماقت انسان که دریایی بی انتهاست. همون موجودی که ادعا داشتن تمدنی هوشمند داره، اما هنوز حتی توانایی برقرار کردن تعامل درست با محیط زندگی خودش رو هم نداره!آهنگ &#34;دار&#34; از بامدادhttps://soundcloud.com/bamdadamman/daarاز این هنرمند بی نظیر حمایت کنید!https://pelakrecords.comکاور آهنگ دار از بامداد - پلاکمنبع: ویکی‌پدیاhttps://fa.wikipedia.org/wiki/%D9%85%D8%B1%DB%8C_(%D9%81%DB%8C%D9%84)</description><category>مهرداد محمدیان</category><author>مهرداد محمدیان</author><pubDate>Mon, 22 May 2023 12:42:34 +0330</pubDate></item><item><title>نحوه نمایش متون فارسی (و سایر زبان ها) در یک مقاله انگلیسی لاتک -Multilingual LaTeX</title><link>https://virgool.ir/@mehrdad.dev/نحوه-نمایش-متون-فارسی-و-سایر-زبان-ها-در-یک-مقاله-انگلیسی-لاتک-multilingual-latex-zw9ldjcj7hpr</link><description>نحوه نمایش متون فارسی و سایر زبان ها در یک مقاله انگلیسی - لاتک اگر شما هم دنبال نوشتن جملات فارسی داخل یک مقاله انگلیسی هستید این پست و بخونید.(Multilingual LaTeX) How to write Persian in a latex document that is mostly written in English(Multilingual LaTeX) How to write Persian in a latex document that is mostly written in English احتمالا قبل اینکه این پست رو پیدا کنید، شما هم ساعت ها به دنبال راه حلی واقعی برای نوشتن متون فارسی یا هر زبان دیگه ای در یک مقاله انگلیسی ساخته شده با لاتک (latex) بودید! و متاسفانه هیچ پست درست درمونی پیدا نکردید که برای زبان فارسی دقیقا اینو توضیح داده باشه!نکته: من خودم از overleaf استفاده کردم، پس این پست هم برای overleaf هست. با این حال امکان استفاده برای بقیه پلتفرم ها رو هم میتونه داشته باشه.مشکل چیه؟!مشکلی که میخوایم حل کنیم اینکه قصد داریم در یک مقاله ای که زبان اصلیش انگلیسی هست، یکسری متن با زبان دیگه هم نشون بدیم.سریع بریم سراغ اصل مطلب ...مرحله اول: خب قبل از همه چیز compiler رو از بخش menu به LuaLaTeX تغییر بدید.مرحله دوم: خطوط زیر رو به اول فایلتون یعنی قبل از begin document اضافه کنید:\usepackage[nil,bidi=basic, main=english]{babel}\babelprovide[import=fa]{farsi}\babelfont[farsi]{rm}{Amiri}به همین راحتی!مرحله سوم: به یکی از روش های زیر متن فارسی خودتون رو نمایش بدید:روش اول:  \foreignlanguage{farsi}{your persian text}روش دوم:\begin{otherlanguage}{farsi} your persian text \end{otherlanguage}حالا compile کنید و تمام!به روش مشابه برای زبان های دیگه ...به طور مثال برای زبان های چینی، روسی و ژاپنی:\usepackage[nil,bidi=basic, russian, chinese, main=english]{babel}\babelprovide[import,language=Chinese Simplified]{chinese-simplified}\babelprovide[import,language=Chinese Traditional]{chinese-traditional}\babelprovide[import,language=jap]{japanese}\babelfont[*cyrillic]{rm}{Charis SIL} %for russian\babelfont[chinese-simplified]{rm}{Noto Serif CJK SC}\babelfont[chinese-simplified]{sf}{Noto Sans CJK SC}\babelfont[chinese-traditional]{rm}{Noto Serif CJK TC}\babelfont[chinese-traditional]{sf}{Noto Sans CJK TC}\babelfont[japanese]{rm}{Noto Serif CJK SC}لینک های مفید دیگهhttps://www.overleaf.com/learn/latex/Multilingual_typesetting_on_Overleaf_using_babel_and_fontspechttps://www.overleaf.com/latex/examples/how-to-write-multilingual-text-with-different-scripts-in-latex/wfdxqhcyyjxzhttps://www.overleaf.com/latex/templates/multilingual-thank-you/wjmrnnqkstyfhttps://tex.stackexchange.com/questions/539965/how-to-use-xepersian-in-a-document-that-is-mostly-written-in-englishاگر مفید بود پست رو لایک کن تا به دست هر کسی که نیاز داره برسه :)</description><category>مهرداد محمدیان</category><author>مهرداد محمدیان</author><pubDate>Fri, 12 May 2023 23:03:14 +0330</pubDate></item><item><title>چطور در کارشناسی مقاله بنویسیم؟ (تجربیات من از مقاله نویسی در دوره کارشناسی)</title><link>https://virgool.ir/@mehrdad.dev/paper-ea86mjxwg2xe</link><description>در این پست قصد دارم از تجربیات خودم در مورد نوشتن مقاله در دوره کارشناسی بنویسم. پس اگر فکر می‌کنید ممکن براتون مفید باشه این پست رو حتما تا انتها بخونید. (این پست ممکن در آینده آپدیت بشه). این پست قرار هست که طولانی باشه، پس تمهیدات مورد نیاز رو در نظر داشته باشید :))تجربیات و راهنمای جامع مقاله نویسی در مقطع کارشناسیفهرست مطالبنکته مهم قبل از شروع به خواندن پست!نکته دوم و سوم قبل از شروعکل این فرآیند چه قدر زمان نیاز داره؟اصلا از کجا باید شروع کنیم؟!کنفرانس یا ژورنال؟منابع یادگیری مقاله نویسیابزار های مناسب برای نوشتن مقالهقسمت هایی از مقاله که باید با تمرکز بیشتری بنویسیدچه قدر هزینه نیاز هست برای مقاله نویسی؟آیا با استاد دانشگاه، دانشجو دکترا، فوق دکترا یا غیره برای نوشتن مقاله همکاری کنم؟آیا نوشتن مقاله سخت هست؟سرویس های آنلاینی که می‌تونید برای نوشتن مقاله استفاده کنیدحالا نوبت ارائه مقاله است!گروه های تلگرامی برای پیدا کردن پارتنر مقاله نویسیدقت زیاد برای تهیه مقاله در قالب کنفرانس یا ژورنالآپدیت: کم کردن احتمال ریجکتی مقالهو در نهایت، سخن آخراگر این نوشته براتون مفید واقع شد، لطفا لایک کنید تا به دست بقیه افراد علاقه‌مند هم برسه :)نکته مهم قبل از شروع به خواندن پست!همینطور که پیداست این پست صرفا تجربیات من هست و سعی می‌کنم به زبان خودمونی و راحت بنویسم. کاملا واضح هست که من فردی خبره و با کوهی از تجربه در زمینه مقاله نویسی نیستم. اما به دلایل زیر فکر می‌کنم که بیان کردن تجربیاتی که به دست آوردم و چیز هایی که بهم گذشته می‌تونن کمک کننده و به نوعی چراغ راه افراد دیگه ای باشه که میخوان در مقطع کارشناسی در دانشگاه مقاله علمی چاپ کنن. (توجه کنید که من حرفی در مورد مقاله نویسی در مقاطع بالاتر نخواهم زد). حتی اگر همه بخش های این پست برای شما کارآمد نباشه باز هم به اندازه روشن کردن دو سه چراغ در ذهن شما ارزش داره. هدف من هم از نوشتن این پست این هست که افراد دیگه مثل خودم با چشم بسته و بدون دیدگاه قبلی در این مسیر قدم نزارن! و با آگاهی نسبی وارد بشن.دلایل:-  با یک سرچ ساده در اینترنت می‌بینید که متاسفانه با خوندن پست هایی که در مورد نوشتن مقاله در مقطع کارشناسی هست چیز زیادی دستگیرتون نمیشه! (که کلن دو سه تا بیشتر هم نیستن).- خیلی از اوقات اینکه نمی‌دونیم از چه نقطه ای باید شروع کنیم دلیل شروع نکردن ماست، مخصوصا در این قضیه که برای یک دانشجو کارشناسی بسیار بسیار بسیار گنگ هست. به همین خاطر سعی می‌کنم این پست به شکل یک راهنمای جامع و کامل باشه. و از صفر تا صد قضیه رو توضیح بده.- همینطور که در مورد قبلی گفتم برای یک دانشجو کارشناسی نوشتن مقاله خیلی گنگ هست. به این خاطر که اصلا دروس مرتبطی (به غیر درس روش ارائه و پژوش که چیز دندون گیری هم درس نمیدن داخلش) در طول کارشناسی پاس نمیکنه که بخواد چیزی بدونه! به این دلیل احساس می‌کنم که این کار می‌تونه مفید واقع باشه.- احساس می‌کنم یک نوع تابو شکل گرفته که نه دانشجو کارشناسی که اصلا نمی‌تونه مقاله علمی کار کنه! (حالا از هر نوعی پژوهشی، مروری و غیره، یا در هر سطحی). درسته که شاید نشه مقاله علمی بسیار سطح بالایی داد که یک حوزه رو تکون بده، اما به شکل خودش در نهایت می‌تونه این کار رو با تلاش و پیگیری انجام بده.- عقیده دارم که بعد از استفاده از منابع یک جامعه، بهترین کاری که میشه برای اون جامعه کرد اینکه به هر نحوی بهش کمک کرد. که امیدوارم این پست اون کمک من باشه و مفید واقع بشه.نکته دوم و سوم قبل از شروعدوم:‌ رشته من کارشناسی مهندسی کامپیوتر هست. در نتیجه به نظرم بخش هایی از این پست برای یک دانشجو کامپیوتر (به صورت خاص تر حوزه هوش مصنوعی) ميتونه مفید تر باشه. ولی تمام سعی ام رو می‌کنم که قابل تعمیم باشه تا همه بتونن استفاده کنن.سوم: من صرفا این پست رو به هدف استفاده برای دانشجو های کارشناسی می‌نویسم. پس اگر از نظر یک دانشجو تحصیلات تکمیلی (ارشد و دکترا) و با تجربه خیلی بیشتر ممکن بعضی قسمت ها ناقص یا حتی اشتباه باشه اولا ببخشید دوما ممنون میشیم توی کامنت ها ما رو تصحیح کنه، چون احتمالا این پست قرار در آینده آپدیت هم داشته باشه.کل این فرآیند چه قدر زمان نیاز داره؟طبق تجربه من کل فرآیند شما در این مسیر از یادگیری تا چاپ شدن مقاله چیزی حدود یک سال زمان خواهد برد. اما این زمان بسته به میزان تسلط شما به مواردی که در ادامه قرار هست بگم هم بستگی داره. پس لطفا با توجه به اینکه توی سال چندم کارشناسی هستید تصمیم به برنامه ریزی بگیرید و تخمین های خودتون رو بسته به میزان علم و مهارت هایی که در اون حوزه ای که قصد نوشتن مقاله دارید بزنید.اصلا از کجا باید شروع کنیم؟!خب همینطور که گفتم این گنگ ترین سوالی هست که همه خواهند داشت. از نظر من شما قبل از همه چیز باید علاقه خودتون رو توی حوزه کامپیوتر (یا هر رشته دیگه ای که هستید) کشف کرده باشید. چرا که این مسیر چیزی نیست که شما اگر به موضوع مقاله علاقه نداشته باشید بتونید دوام بیارید و ادامه بدید. به نظر من مواردی که در زیر میگم رو  باید به ترتیب انجام بدید و جلو برید:۱- کسب دانش، تجربه و مهارت در حوزه مورد علاقهکار های خیلی مختلفی می‌تونید برای این مورد انجام بدید. مثلا دوره های مختلف رو شرکت کنید. ابزار های مختلف برای حوزه خودتون رو یاد بگیرید و پروژه انجام بدید (مثلا: زبان های برنامه نویسی، کتابخونه ها و غیره). شاید بتونم بگم این مرحله کلیدی ترین مرحله برای شروع هم باشه. چرا که هر چه قدر علم شما و مهارت شما بیشتر باشه طبیعتا مقاله با کیفیت تری ‌می‌تونید بنویسید. اما خیلی وسواس به خرج ندید چونکه شما یک دانشجو کارشناسی هستید قرار نیست علم و چندین پله به سمت جلو حرکت بدید. خیلی از چیز ها رو حتی می‌تونید در این مسیر یاد بگیرید.۲- ابتدا حوزه ای که می‌خواید کار کنید و مقاله بدید رو مشخص کنیداین مورد چیزی هست که شما باید تقریبا حین انجام مورد اول بهش برسید و به فکرش باشید. با یک مثال میگم: شما متوجه شدید که در کامپیوتر به حوزه هوش مصنوعی علاقه دارید. خیلی هم عالی، اما به چه قسمتی از اون؟ پردازش زبان طبیعی؟ پردازش تصویر؟ بینایی کامپیوتر؟ پردازش سیگنال؟به عبارت دیگه باید دقیقا متوجه بشید که داخل چه شاخه ای از اون حوزه مورد علاقه می‌خواید کار پژوهشی خودتون رو شروع کنید، چرا که شما زمان کافی برای یاد گرفتن همه این شاخه ها رو ندارید!! (که حتی اگر داشتید هم خیلی غیر منطقی بود).حالا به عنوان مثال متوجه شدید که علاقه شما به صورت خاص در هوش مصنوعی حوزه بینایی کامپیوتر هست. بعد از این باید مشخص کنید که باز دوباره دقیقا به کدوم اپلیکیشن بینایی کامپیوتر علاقه دارید و  حل کردن کدوم مشکل در این حوزه براتون جذاب تر هست و یا حس می‌کنید که می‌تونید ایده های خوبی بدید؟ یا اصلا ایده ای دارید در حال حاضر؟ مثلا میگم: object detection؟ image segmentation؟ OCR؟استفاده از یک معماری خاص CNN ای؟ شبکه های GAN؟ استفاده از few-shot learning برای تشخیص فلان بیماری از روی تصاویر سی تی اسکن؟ و ... .به طور خلاصه اگر بخوام بگم: باید از کل به جز برید. اول از شاخه اصلی مورد علاقه شروع کنید، شروع کنید به شناختن اون حوزه و ببینید که چه مسائلی در حال حاضر وجود داره داخلش. در مورد اون مسائل مقاله مروری بخونید تا باهاش آشنا بشید. بعد سعی کنید گپ ای که داخل اون حوزه و مشکل خاص وجود داره رو پیدا کنید.حالا که دقیقا متوجه شدید که قراره مثلا توی فلان حوزه نوآوری انجام بدید یا مثلا مقالات ۵ سال اخیر رو بخونید و یک مقاله مروری بدید:۳- مرحله ۳ شروع میشه، به این شکل که باید شروع کنید با استفاده از ابزار هایی مثل google scholar و research gate مقالات مرتبط با اون حوزه رو با استفاده از کلمه کلیدی هایی که احتمالا تا الان با گذروندن وقت توی اون حوزه یادگرفتید پیدا کنید و بشینید بخونید. بعد از یکم خوندن دوباره کلمه های کلیدی دیگه ای پیدا می‌کنید دوباره اون ها رو هم سرچ کنید بخونید. در اینجا اگر مقاله ای می‌بینید که از نظرتون خیلی خفن هست یا فکر می‌کنید که می‌تونید در اون تغییری بدید یا می‌تونید ازش ایده بگیرید یا فکر می‌کنید که می‌تونه بعدا به عنوان رفرنس در مقاله تون ذکر بشه رو داخل یک فایل اکسل به همراه لینک و اطلاعاتش وارد کنید. به همین شکل اگر دیتاست خوبی می‌بینید، پروژه خوبی در گیت هاب یا هرجای دیگه می‌بیند اون ها رو هم ذخیره کنید.۴- در مرحله چهارم، انتظار میره که بعد از مرحله ۳ شما درک خوبی از اون حوزه خاص که مربوط به اون کلمه کلیدی های خاص تر بودن به دست آورده باشید. و دیگه اینجاست که شما باید به ایده و تصمیم خودتون برای مقاله رسیده باشید. یعنی اینکه دقیقا می‌خواید چه مشکلی، به چه روشی و به چه دلیلی حل کنید و چه نتایجی بگیرید؟‌ یا مثلا در چه حوزه ای می‌خواید مقاله مروری بنویسید که قبلا نبوده یا اگر بوده خیلی قدیمی هست یا به مقدار کافی خوب نیست؟ به عبارت دیگه اینجا مرحله قطعی کردن ایده مقاله است.به عنوان یک مثال شما باید بدونید که مثلا قرار توی حوزه تشخیص بیماری یک نوع سرطان خاص، با استفاده از فلان نوع خاص از تصاویر پزشکی، با استفاده از شبکه های CNN و به طور خاص تر استفاده از معماری MobileNet V2 اقدام به انجام image classification کنید و مثلا دقت انجام این کار رو به نسبت کار های گذشته افزایش بدید، یا سرعت کار رو افزایش بدید! ۵- حالا وقت دست به کار شدن!اینجاست که باید آستین ها رو بالا بزنید و کم کم ایده های خودتون رو شروع به پیاده سازی کنید. کد هاتون رو بنویسید، اجرا کنید. خطا کنید. آزمایش کنید. از این و اون سوال کنید. دوباره چیز جدید یاد بگیرید. حتی مثلا بفهمید از استفاده از MobileNet V2 خوب نیست و اگر من از ResNet استفاده کنم به نتایج بهتری میرسم! بله حتی در این حد ممکن هست که ایده مقاله تون هم دچار تغییر بشه، پس نگران نباشد و فقط توی مسیر بمونید. برای خود من این اتفاق بارها افتاد، هر دفعه کار شما پخته تر خواهد شد. سعی کنید کد ها و فایل ها و دیتاست هاتون رو همیشه منظم نگه دارید و نتایج هر آزمایش رو توی یک پوشه جداگانه، اکسل یا هرچیز دیگه ای که مناسب فرمت نتایجتون هست داشته باشید. چونکه احتمال اینکه در گذشت زمان بین نتایج خودتون هم گم بشید هست (تعداد آزمایش ها قراره خیلی زیاد باشه). ۶- کم کم شروع به نوشتن کنیدحالا که احتمالا پیاده سازی هاتون به جای خوبی رسیده و دیگه مطمعن شدید که توی مسیر درست هستید. نتایج تون رو گرفتید یا نزدیک هستید که دیگه برید برای نتایج نهایی مقاله تون. می‌تونید شروع کنید به نوشتن مقاله. توصیه من اینکه فقط بنویسید! وسواس به خرج ندید که اول از کدوم قسمت شروع کنم. فلان جا گفته که حتما اول introduction بعد فلان قسمت. هر چیزی در ذهن دارید بنویسید بعدا قرار هست کلی ادیت بزنید. (در ادامه در مورد منابع یادگیری نحوه نوشتن توضیح میدم).حتی اگر در طول ۵ مرحله قبلی اگر فکر می‌کنید به نکته خاصی پی بردید که ممکن اشاره کردنش در مقاله تون ارزشمند باشه، اون ها رو هم توی یک فایل جداگونه به صورت note ساده در حدی که بعدا خودتون بفهمید چی نوشتید بنویسید.البته این رو بگم که، این قسمت ۶ خودش میتونه همراه با مراحل ۴ یا ۵ هم شروع شده باشه! مثلا حداقل Abstract ات رو نوشته باشید. Introduction رو شروع کرده باشید. برای قسمت Background ایده هایی داشته باشید و غیره. خلاصه اینکه شروع به نوشتن کنید حتی اگر شد زود تر. چونکه قسمت زیادی از کیفیت مقاله شما به نحوه نوشته شدن اون بستگی داره. اینکه سبک نوشتن شما چه قدر آکادمیک هست؟ کلماتی که استفاده می‌کنید جنبه آکادمیک دارن؟ چه قدر ساختار ها رو رعایت می‌کنید؟ شاید شما ایده خیلی خفنی نداشته باشید ولی طوری مقاله رو نوشته باشید که داور های مقاله رو واقعا تحت تاثیر قرار بدید! و این قطعا روی نتیجه داوری تاثیر مستقیم خواهد داشت.۷- مقاله تون کامل شده؟ وقت پیدا کردن یک جا برای سابمیت کردن!حالا نوبت این رسید که تصمیم بگیرید قرار هست مقاله خودتون رو به کجا ارسال کنید؟ این بستگی به سطح مقاله تون داره. که در نهایت بسته به نتایجی که گرفتید، کیفیت نگارش، تعداد صفحات مقاله، میزان نوآوری، و غیره داره. همه این ها پارامتر های تصمیم گیری شما هستن. تا الان خودتون می‌دونید که مقاله تون در چه سطحی هست. یا حداقل می‌تونید از یک نفر کمک بخواید برای تصمیم گیری. من توصیه می‌کنم از اونجایی که در سطح حال حاضر احتمال اینکه مقاله بسیار تاپی بدید کم هست، در نتیجه یک کنفرانس با سابقه نسبتا خوب که مقالات اش داخل IEEE، ACM یا Scopus ایندکس میشه انتخاب کنید. که در قسمت بعدی کامل توضیح میدم. قبل از سابمیت حتما باید درصد تشابه و میزان سرقت ادبی مقاله خودتون رو سرویسی که در ادامه معرفی می‌کنم چک کنید، وگرنه براتون دردسر بزرگی خواهد شد!کنفرانس یا ژورنال؟خب همینطور که گفتم، احتمالا کنفرانس انتخاب منطقی تری هست. اما اگر ژورنال ای پیدا کردید که زمان بررسی اولیه کمی داشت یا (IF) Impact Factor مناسب برای کیفیت مقاله شما داشت می‌تونید شانس خودتون رو امتحان کنید. توجه کنید که در هر حالتی اصولا ژورنال ها برای رسیدن به مرحله چاپ زمان زیاد تری نیاز دارن تا کنفرانس ها. پس اگر برای دریافت نتیجه زمان کمی دارید قطعا انتخاب شما باید کنفرانس باشه. تا حداقل شانس سابمیت کردن به یک جای دیگه رو از دست ندید در زمان کمی که دارید.برای پیدا کردن کنفرانس ها می‌تونید از این وب سایت های زیر استفاده کنید:https://easychair.org/cfphttps://conferences.ieee.org/conferences_eventshttps://www.elsevier.com/events/conferences/find-a-conferencehttps://www.resurchify.comhttps://conferencemonkey.orgبرای اینکه تشخیص بدید یک کنفرانس چه قدر خوبه یا نه، به تعداد سال های برگزاری، به جایی که ایندکس میشه، به تعداد سایتیشن هایی که مقالات اخیر خوردن نگاه کنید، اینطوری می‌تونید متوجه بشید که به درد مقاله شما می‌خوره یا نه. (بعضی از کنفرانس ها هم کلن روی زبون ها هستن و معروفن و همه میشناسن!)برای پیدا کردن ژورنال ها:https://journalfinder.elsevier.comhttps://journalsuggester.springer.comhttps://journalfinder.wiley.com/search?type=matchhttps://authorservices.taylorandfrancis.com/publishing-your-research/choosing-a-journal/journal-suggesterبرای فهمیدن اینکه یک ژورنال خوب هست یا نه از فاکتور IF به همراه وب سایت زیر استفاده کنید:https://www.scimagojr.comبه علاوه همه این سایت ها، طبیعتا جستجو کردن داخل گوگل رو هم اضافه کنید. گوگل کردن و سرچ توی یوتیوب باید از نون شب واجب تر باشه توی این مسیر براتون :)))))))منابع یادگیری مقاله نویسییوتیوب، یوتیوب و دوباره یوتیوب!می‌خوای نحوه نوشتن Abstract مقاله رو یاد بگیری، اینکه اصلا چی هست؟ چطوری باید نوشت؟ چی باید نوشت؟ خیلی راحت به انگلیسی همین سرچ رو انجام بدید، داخل یوتیوب کلی فیلم هست که می‌تونید نگاه کنید. دو سه تا اول رو نگاه کنید. بعدش سعی کنید خودتون بنویسید. نوشته خودتون رو با مقاله های حوزه خودتون مقایسه کنید. ببینید به چه سبکی می‌نویسن، از چه کلماتی استفاده میکنن یا چجوری شروع می‌کنن و چجوری مطالب رو بهم ارتباط می‌دن. یک مورد دیگه برای یادگیری مقاله نویسی، خوندن زیاد مقاله هایی هست که خوب نوشته شدن. مخصوصا اگر اون مقاله ها مشخصا در حوزه کاری شما باشن.جدای از یوتیوب اگر کتابی یا جزوه ای داخل اینترنت پیدا کردید که مفید بود هم می‌تونید استفاده کنید، برای دانلود کردن رایگان کتاب ها می‌تونید از وب سایت z library استفاده کنید :))ابزار های مناسب برای نوشتن مقالهلاتک - LaTexبه نظر من لاتک بهشت واقعی! واقعا کارتون رو راحت میکنه. خیلی تمیز و مرتب. با قالب ها و فرمت هایی که داره لازم نیست نگران خیلی چیز ها باشید، خودش خیلی از چیز ها رو رعایت می‌کنه براتون. که این البته به تمپلیت کنفرانس یا ژورنالی که دارید براش سابمیت می‌کنید هم بستگی داره. در ادامه یک ابزار بی نظیر برای استفاده از لاتک در مقاله نویسی معرفی می‌کنم. البته که لاتک رو باید باهاش کار کنید یک مقدار تا یاد بگیرید. چیز سختی نیست در برابر موارد دیگه ای که قراره یاد بگیرید. نیاز هم نیست دوره خیلی فشرده و خاصی شرکت کنید. کار کنید، گوگل کنید، خود به خود یاد می‌گیرید.مایکروسافت وردبه نظر من دور اش رو خط بکشید واقعا. این نظر من ولی واقعا دردسر داره و من حس می کنم لاتک بسیار حرفه ای تر و راحت تر هست. تمام کنفرانس ها و ژرنال هم هم قبولش دارن. (حتی شاید بیشتر از ورد).قسمت هایی از مقاله که باید با تمرکز بیشتری بنویسیداز دیدگاه من، این قسمت های زیر در یک مقاله از لحاظ ساختاری و جذاب بودن برای خواننده باید در الویت قرار بگیرن. یا حداقل خودم زمان زیادی تری برای این ها گذاشتم طبق چیزی که فهمیدم. چون میتونن همون نقطه قوت مقاله شما باشن که اگر مقاله تون خیلی نوآوری زیادی نداره ولی جذاب هست و خوب نوشته شده.AbstractIntroductionBackgroundRelated Worksبه این ها احتمالا میشه بخش نتیجه گیری رو هم اضافه کرد. ولی چیزی که من حس کردم این بود که ساختار مند بودن. و برقراری ارتباط معنی دار و خوب توی این بخش ها میتونه یک سر و گردن مقاله شما رو بهتر کنه! قسمت های نتایج، متد ارائه شده شما و نتیجه گیری معمولا قسمت هایی هستن که شما با لذت بیشتری می‌نویسید پس مثل این قسمت ها اونقدر دردناک نیست. در نتیجه احتمالا برای گرفتن نتیجه خوب، باید روی این قسمت های دردناک تمرکز بیشتری داشته باشید.چه قدر هزینه نیاز هست برای مقاله نویسی؟من به شخصه برای این کار هیچ کارگاه آموزشی شرکت نکردم که بخوام هزینه ای بدم. صرفا تنها هزینه ای که داشتم، هزینه هایی بود که مربوط به سابمیت کردن و چاپ کردن مقاله است، که اون هم اجتناب ناپذیر هست و هر کنفرانس به کنفرانس دیگه واقعا متفاوت هست. در نتیجه نمیشه نرخ کلی داد باید بررسی کنید خودتون و منطقی ترین آپشن رو در نهایت انتخاب کنید. بعلاوه شما ممکن هست نیاز داشته باشید که نسبت به رشته تون یکسری هزینه ها برای خرید یکسری سرویس انجام بدید!اگر کنفرانس حضوری قرار هست شرکت کنید که داخل کشور دیگه ای قرار داره، باید پیش بینی هزینه های احتمالی اقامت و گرفتن ویزا رو هم برای اون کشور انجام بدید! مگر اینکه فقط کنفرانس های آنلاین رو در نظر بگیرید. چراکه طبیعتا به عنوان یک دانشجو کارشناسی منبع حمایتی از طرف دانشگاه یا استاد راهنما تون نخواهید داشت!آیا با استاد دانشگاه، دانشجو دکترا، فوق دکترا یا غیره برای نوشتن مقاله همکاری کنم؟از نظر من توی این مبحث یک حقیقت تلخی وجود داره. اون هم اینکه اکثر اساتید (بستگی به دانشگاه شما هم داره) رقبت خاصی ندارن که با یک دانشجو کارشناسی خام که نه آموزشی دیده نه تجربه خاص علمی داره کار علمی با تعامل قوی انجام بدن (اصطلاحا اعتماد نمیکنن به شما که وقتشون رو در اختیارتون بزارن). یا اینکه واقعا سرشون شلوغ و اصلا وقت اضافی برای دانشجو کارشناسی ندارن چرا که به اندازه کافی دانشجو های تحصیلات تکمیلی براشون کار برای انجام داره (بعلاوه شاید از نظرشون شما سودی هم براشون نداشته باشید).خلاصه اینکه من خودم هم از این قضیه تجربه مثبتی ندارم (از کار کردن با اساتید دانشگاه).  در عوض من پیشنهاد می‌کنم که یک دانشجو ارشد، دکترا یا حتی یک فرد که داره دوره فوق دکترا می‌گذرونه پیدا کنید منطقی تر باشه. این افراد معمولا وقت آزاد تری باید داشته باشن حتی علاقه بیشتری برای همکاری. فقط قبل از شروع کار حتما و حتما مواردی که براتون اهمیت داره رو کامل طی کنید. مثلا اینکه می‌خواید اسم اول باشید، چونکه براتون مهم یا ایده و پیاده سازی از شماست و این اولین کارتون هم هست.  با کسی کار کنید که چندین رکورد مقاله قبلا داشته و سایتیشن گرفته و با سرچ کردن اسمش داخل گوگل حداقل یکسری نتایج مربوط به رزومه آکادمیک طرف میاد!  (اگر بتونید با دانشگاه های خارج از کشور ارتباط بگیرید چه بهتر! اما داخل کشور هم هیچ مشکلی نداره).داشتن چنین فرد یا افرادی در کنارتون بسیار میتونه کمک کننده باشه. ممکن کامنت هایی بگیرید که به عقل خودتون هم نمیرسید و توی خوب نوشتن مقاله خیلی می‌تونن کمک کنن، چرا که طبیعتا تجربه بیشتری دارن.آیا نوشتن مقاله سخت هست؟باید بدون پرده بگم که به نظر من برای یک دانشجو کارشناسی که هیچی از این فرآیند نمیدونه کاری واقعا سخت، پر زحمت و زمان بر هست. احتملا نیاز هست بار ها و بار ها و بار ها شب بیداری انجام بدید. اما خب تمام این ها به نظرم ارزش نتیجه آخرش رو داره. پس لطفا این رو در نظر داشته باشید و خودتون رو از لحاظ ذهنی براش آماده کنید، چونکه شما طبق چیزی که وجود داره (البته بیشتر برای دانشجو های تحصیلات تکمیلی) به احتمال ۹۹ درصد قرار نیست از جایی برای فعالیت ها و تحقیقاتون پولی دریافت کنید. مواردی که در زیر میگم میتونن میزان سختی این کار رو کم یا زیاد کنن:- اینکه در چه سطحی و با چه کیفیتی می‌خواید کار کنین؟ به قول خودمون چه قدر میخواید کارتون خفن باشه؟- چه قدر به اون حوزه تسلط دارید و چیزی ازش می‌دونید و ابزار های مرتبط رو بلد هستید؟- چه قدر زمان دارید؟ تحت فشار زمانی خاصی هستید که باید تا فلان زمان حتما به نتیجه برسه؟- دور و بر شما آیا افرادی هستن که بهتون کمک کنن؟ مثلا کامنت بدن، یا از لحاظ نوشتاری مقاله رو بررسی کنن.- در حین مقاله نویسی، درس می‌خونید یا کار می‌کنید؟ خود من به شخصه در زمان امتحانات پایان ترم به کل کار مقاله نویسی رو تعطیل می‌کردم.سرویس های آنلاینی که می‌تونید برای نوشتن مقاله استفاده کنیدوب سایت Overleafاین وب سایت، همون ابزاری هست که برای نوشتن لاتک (LaTex) نیاز دارید کار کردن باهاش رو یاد بگیرید. به علاوه این ابزار بین اساتید بین المللی هم خیلی پر استفاده هست و کلن به دردتون میخوره و تجربه مثبتی میشه براتون. برای شروع کار یک template ساده یک ستونه از داخل خود وب سایت انتخاب کنید و درگیر انتخاب قالب نباشید. بعدا زمان سابمیت کردن باید قالب مقاله رو به شکلی که کنفرانس یا ژرنال قرار داده تغییر بدید.وب سایت quillbotاین وب سایت برای چک کردن گرامر و پارافریز کردن جملات به شدت توصیه میشه. مخصوصا در پارافریز کردن جملات. مثلا برای کم کردن درصد تشابه مقاله تون. فقط حواستون باشه میزان پارافریز رو در کمترین حالت بگذارید و کاری هم نکنید که معنی جمله به کلی تغییر کنه!وب سایت turnitinبرای چک کردن میزان درصد شباهت مقاله به مقالات دیگه یا همون سرقت ادبی استفاده میشه. رایگان نیست و همینجوری هم نمیشه داخلش یک اکانت زد و ازش استفاده کرد. اما اکانت های کرکی اش توی سایت های ایرانی فروش اکانت هست :)))))  (پهلوانان ایرانی در کنار شما هستن). باید بگم که دقت اش واقعا عالیه در حدی که من برای یکی از جملات ام رفرنس نداشتم و بعد از استفاده از این سایت رفرنس مورد نظر رو براش پیدا کردم :))))ابزار های گوگل مخصوصا Google Driveگوگل درایو خیلی کارتون رو در مدیریت نتایج و اطلاعات راحت میکنه، مخصوصا اگر با چند نفر هم زمان کار می‌کنید که می‌تونید نتایج رو share کنید بین اعضا.گرامرلی - Grammarlyگرامرلی تقریبا نیاز به معرفی نداره. یک ابزار خوب برای بررسی گرامر متن مورد نظرتون هست. که میتونه مکمل خوبی در کنار quillbot باشه.وب سایت Figmaاین وب سایت بی نظیر! برای رسم شکل های مقاله تون خیلی میتونه به شما کمک کنه. البته یکم تجربه کار کردن با نرم افزار هایی مثل فتوشاپ می‌تونه کارتون رو برای کار کردن با فیگما راحت تر کنه. و در نهایت خروجی رو با هر فرمت و کیفیتی که بخواید میتونید دانلود کنید. امکانات اش رو فقط باید ببینید. حرف نداره.سرویس های رایگان مخصوص دانشجو های کامپیوتر:سرویس Google Colabاگر نیاز به cpu و gpu رایگان دارید و با زبان پایتون کار می‌کنید، اگر از گوگل کولب استفاده نکنید واقعا ناراحت میشم :))))) واقعا ابزار بسیار مفیدی هست. مخصوصا برای ما ایرانی ها که دسترسی به gpu اصلا کار راحتی نیست !!! (اگر دوست داشتید من تجربه خودم رو از استفاده gpu های گوگل توضیح دادم و برای استفاده بهتر و بیشتر یکسری نکات گفتم، در کامنت ها بگید تا لینک مورد نظر رو اضافه کنم).حالا نوبت ارائه مقاله است!فعلا خودم در این مرحله هستم و دارم براش آماده می‌شم. در نتیجه ترجیح میدم بعد از عبور کردن ازش تجربه خودم رو بگم. این قسمت فقط برای کنفرانس ها هست و بعد از اکسپت شدن مقاله تون قرار داره. اگر کنفرانس آنلاین باشه که هیچی، وگرنه باید به اون کشور سفر کنید که بتونید ارائه بدید.گروه های تلگرامی برای پیدا کردن پارتنر مقاله نویسیحقیقت امر اینکه من به شخصه پارتنری از این گروه ها نتونستم پیدا کنم و به طریق دیگه ای پیدا کردم. اما به من برای پاسخ به سوالات ام خیلی کمک کردن. پس برای برطرف کردن ابهام هاتون حتما توصیه میکنم.https://t.me/Research_Partner_Iranhttps://t.me/R_Partnerنکته ای که لازم هست اینجا بگم، اون هم در مورد اتفاقات عجیب ای هست که ممکن داخل این گروه ها ببینید. متاسفانه عده ای هستن که از شما پول های کلانی می‌گیرن و به شما وعده یک مقاله با کیفیت در فلان حوزه رو میدن. شک نکنید که اگر این مقاله با کیفیت بود به اون شکلی که میگن خودشون زود تر از همه برای سابمیت کردن اقدام می‌کردن و نمیومدن به شما بفروشن. لطفا به هیچ عنوان چنین کاری انجام ندید، هم خیانت به خودتون هست هم تمام اعضاء کوچک و بزرگ دیگه جامعه علمی ایران. حتی بعضی از دوستان هستن که سایتیشن میفروشن! واقعا نمیدونم داریم به کجا میریم! اوضاع به معنی واقعی خیته!دقت زیاد برای تهیه مقاله در قالب کنفرانس یا ژورنالحتما دقت کنید که بعد از آماده شدن مقاله تون، درست کردن مشکلات گرامری، پارافریز های خوب، ساختار خوب و غیره، حتما و حتما قوانین اون کنفرانس یا ژورنال خاص و کامل مطالعه کنید. چرا که اگر قالب اشتباهی رو انتخاب کرده باشید، یا قوانین و رعایت نکرده باشید، خیلی راحت میتونن به خاطر همین  ریجکت کنن (البته بستگی به داور ها هم داره) و تمام زحمات شما از بین بره! پس خیلی وسواس به خرج بدین و چند بار بخونید مقاله رو. حتی پرینت بگیرید روی کاغذ بخونید. من حس میکنم روی نسخه پرینت عیب ها بهتر معلوم می‌شدند.آپدیت: کم کردن احتمال ریجکتی مقالهقطعا هیچکس دوست نداره که ریجکت بشه. اما باید کاری کنیم که تا جای ممکن دست داور ها رو از گرفتن چنین تصمیمی کوتاه کنیم. اما چطور؟ این زیر لیست می‌کنم:رعایت قوانین قالب کنفرانس و کار هایی که بهتون گفته شده انجام بدید که قبلا هم گفتمشکل های واضح، جدول های واضح و حرفه ای،  توضیحات خوب برای تصاویر و جدول هاآزمایش کردن متد ارائه شده خودتون با موارد گذشته! این مورد خیلی مهم. و در واقع اصلا تنها چیزی هست که شما باهاش می‌تونید بگید کار من انقدر خوبه و پیشرفت داشته. من کار خودم رو با ۳ دیتاست مختلف تست کردم. و در کل ۴ آزمایش انجام دادم برای مقایسه کردن کار خودم با بقیه. مثلا مقایسه شما میتونه در مورد سرعت و دقت باشه و یا حتی تعداد پارامتر های مدل تون ... .و در نهایت، سخن آخرسعی کنید از دوباره کاری پیشگیری کنید، در مسیر بمونید تلاش کنید، نا امید نشید و از آزمایش کردن ایده هاتون نترسید شاید واقعا به جواب مورد نظر برسید حتی در آزمایش بعدی یا بعدیش! متوقف نشید!!امیدوارم به نتایج خوبی برسید. اگر رسیدید و این پست بهتون کمک کرده بود، لطفا زیر این پست داخل کامنت ها اعلام کنید  :))))))لینکدین من:  https://www.linkedin.com/in/mehrdad-mohammadian-/روز انتشار این پست: شنبه ۱۲ شهریور ۱۴۰۱آخرین آپدیت این پست: یکشنبه ۱۳ شهریور ۱۴۰۱، ساعت ۱۵:۳اگر مطالب مفید بود اینجا می‌تونید حمایت کنید  :)))</description><category>مهرداد محمدیان</category><author>مهرداد محمدیان</author><pubDate>Sat, 03 Sep 2022 01:55:12 +0430</pubDate></item><item><title>ساخت اپلیکیشن گرافیکی (GUI) با زبان Golang قسمت سوم</title><link>https://virgool.ir/@mehrdad.dev/golang-gui-3-cvl4cf3d3tqo</link><description>GUI in Golangتا اینجا ۲ قسمت از این مطلب رو گذروندیم و چیز های باحال و ساده رو با هم بررسی کردیم ...توی این قسمت میخوایم در مورد اسکرین About  و پکیج sound  که داخل قسمت قبلی معرفیش کردیم و ازش استفاده کردیم صحبت کنیم.اگر قسمت قبل رو نخوندی: https://virgool.io/@mehrdad.dev/golang-gui-2-i0hyq9ruecwy  https://github.com/mehrdad-dev/Jami و همچنین ریپویی که در موردش صحبت می‌کنیم.اسکرین Aboutfunc AboutScreen(a fyne.App) fyne.CanvasObject {&#xA;        filePath, err := filepath.Abs(&#34;../Jami/assets/about.png&#34;)&#xA;        if err != nil {&#xA;            fmt.Println(&#34;ERR in read about.png &#34;, err)&#xA;        }&#xA;        logo := canvas.NewImageFromFile(filePath)&#xA;        logo.SetMinSize(fyne.NewSize(390, 212))&#xA;    return widget.NewVBox(&#xA;        widget.NewHBox(layout.NewSpacer(), logo, layout.NewSpacer()),&#xA;        widget.NewLabelWithStyle(&#34;Jami is not just a musical instrument&#34;, fyne.TextAlignCenter,&#xA;            fyne.TextStyle{Bold: false}),&#xA;        widget.NewHBox(layout.NewSpacer(),&#xA;           widget.NewHyperlink(&#34;github&#34;, parseURL(&#34;https://github.com/mehrdad-dev&#34;)),&#xA;           widget.NewLabel(&#34;-&#34;),&#xA;           widget.NewHyperlink(&#34;contact&#34;, parseURL(&#34;http://www.mehrdad-dev.ir/contact-me/&#34;)),&#xA;           layout.NewSpacer(),&#xA;       ),&#xA;)}کد بالا تمام کدی هست که تابع AboutScreen داره.اول از همه لوگو پروژه جامی رو باز کردیم و بعدش با استفاده از متد NewImageFromFile عکس رو اضافه می‌کنیم و سایزش رو تغییر میدیم.از این جا تا آخر با استفاده از NewVBox یک باکس vertical یا همون عمودی رو برمی‌گردونیم.که خود این باکس شامل یک باکس عرضی حاوی لوگو، یک لیبل زیر لوگو که با استفاده از متد NewLabelWithStyle ایجاد کردیم.و دوباره ساخت یک باکس عرضی با استفاده از NewHBox که شامل ۲ تا هایپر لینک هست و با استفاده از NewHyperlink هم این دو رو ساختیم.در نهایت یک فضای خالی هم بعد از همه باکس ها ایجاد می‌کنیم.درباره جامیکه در نهایت به چنین صفحه ای می‌رسیم.پکیج Soundخوب یادتونه که توی قسمت قبلی از این پکیج استفاده کردیم که شامل ۲ تا تابع هست.که ابتدا تابع PlayNotes رو بررسی می‌کنیم.// PlayNotes play a string of notes&#xA;func PlayNotes(notes string) {&#xA;        music := beep.NewMusic(&#34;&#34;)&#xA;        volume := 100&#xA;        if err := beep.OpenSoundDevice(&#34;default&#34;); err != nil {&#xA;           log.Fatal(err)&#xA;       }&#xA;       if err := beep.InitSoundDevice(); err != nil {&#xA;            log.Fatal(err)&#xA;       }&#xA;        //beep.PrintSheet = true            this is a comment !&#xA;        defer beep.CloseSoundDevice()&#xA;        reader := bufio.NewReader(strings.NewReader(notes))&#xA;        go music.Play(reader, volume)&#xA;        music.Wait()&#xA;        beep.FlushSoundBuffer()&#xA;}ابتدا با استفاده ازکتابخونه beep یک موزیک جدید رو ایجاد کردیم، که میتونه به عنوان یک فایل هم ذخیره بشه اگر بهش استرینگ خالی ندیم. بعد از اون با استفاده از ۲ تابع  OpenSoundDevice و  InitSoundDevice از beep سخت افزار رو برای پخش نت هامون آماده کردیم، و با استفاده از Play که داخل یک goroutine اجرا شده و یک خواننده از بافر گرفته و میزان صدا که از متغیر volume میاد، نت هامون رو پخش می‌کنیم.تابع SaveNotes هم دقیقا شبیه به تابع قبلیه اما فقط به جای استرینگ خالی NewMusic اسم فایل رو با پسوند wav  قرار بدید.ممنون از اینکه تا اینجا دنبال کردی  :)))))))اگر مطالب مفید بود اینجا می‌تونید حمایت کنید  :)))</description><category>مهرداد محمدیان</category><author>مهرداد محمدیان</author><pubDate>Thu, 23 Apr 2020 22:04:27 +0430</pubDate></item><item><title>ساخت اپلیکیشن گرافیکی (GUI) با زبان Golang قسمت دوم</title><link>https://virgool.ir/@mehrdad.dev/golang-gui-2-i0hyq9ruecwy</link><description>GUI in Golangاگر دارین اینجا رو می‌خونی لازمه بگم که این مطلب یکی از قسمت هاست و پیشنهاد می‌کنم اگر قسمت قبلی اون رو نخوندی از لینک زیر اول اون رو بخون: https://virgool.io/@mehrdad.dev/golang-gui-1-hj4xzb7z3hka  https://virgool.io/p/i0hyq9ruecwy/%D9%88%D9%87%D9%85%DA%86%D9%86%DB%8C%D9%86%D8%B1%DB%8C%D9%BE%D9%88%DB%8C%DB%8C%DA%A9%D9%87%D8%AF%D8%B1%D9%85%D9%88%D8%B1%D8%AF%D8%B4%D8%B5%D8%AD%D8%A8%D8%AA%D9%85%DB%8C%E2%80%8C%DA%A9%D9%86%DB%8C%D9%85.  https://github.com/mehrdad-dev/Jami خوب ...اینجا قسمت دوم ماجراجویی هست و قراره که صفحات و پکیج های دیگه پروژه جامی رو با هم بررسی کنیم.نکته:  صفحات و قسمت هایی که روند یکسانی دارن و بررسی نمی‌کنیم.ساخت اسکرین Homeاگر یادتون باشه توی قسمت قبلی موقع ساختن تب هامون یکسری اسکرین رو به عنوان آرگومان سوم ساخت اون ها پاس داده بودیم، اینجا اول از همه می‌خوایم در مورد ساخت صفحه home با هم حرف بزنیم ...آخر این مطلب قراره به چنین صفحه ای برسیم.func HomeScreen(win fyne.Window) fyne.CanvasObject {&#xA;        return fyne.NewContainerWithLayout(layout.NewAdaptiveGridLayout(1),&#xA;                  makeHome(win),&#xA;       )&#xA;}اینجا می‌تونید پیاده سازی تابع HomeScreen که داخل قسمت قبلی ازش استفاده کردیم رو ببینین.این تابع یک fyne.CanvasObject  بر‌می‌گردونه، که ما با استفاده از fyne.NewContainerWithLayoutیک کانتینر درست می‌کنیم که بتونیم محتویات صفحه Home رو داخل اون قرار بدیم و به تابع main برگردونیم.توی کد زیر پیاده سازی تابع makeHome رو بررسی می‌کنیم.var soundSTR string&#xA;// Create sound selector&#xA;soundSelector := widget.NewSelect([]string{&#34;Piano&#34;, &#34;Violin&#34;, &#34;System&#34;}, func(s string) {&#xA;        if s == &#34;Piano&#34; {&#xA;                soundSTR = &#34;VP SA9 SR9\n&#34;&#xA;        } else if s == &#34;Violin&#34; {&#xA;                soundSTR = &#34;VV SA9 SR9\n&#34;&#xA;        } else {&#xA;                soundSTR = &#34;VD SA9 SR9\n&#34;&#xA;        }&#xA;})توجه: تمام کد ها از این به بعد داخل تابع makeHome هست.توی قطعه کد بالا یک ویجت selector ساختیم تا کاربر بتونه ساز مورد نظر خودش رو انتخاب کنه تا از نت های براساس اون ساز به صدا در بیان.با استفاده از متد NewSelect که یه آرایه از انتخاب ها و یک تابع رو به عنوان ورودی می‌گیره این کار رو انجام می‌دیم.داخل بلوک تابع داخلی selector انتخاب کاربر رو چک می‌کنیم و برای هر ساز رشته ای رو داخل متغیر soundSTR  قرار می‌دیم تا کتابخونه beep که قبلا معرفی کردیم بتونه متوجه شه ما به صدای چه سازی نیاز داریم.win.Canvas().SetOnTypedRune(func(r rune) {&#xA;        sound.PlayNotes(soundSTR + string(r))&#xA;})توی این قطعه کد بالا با استفاده از win که به تابعمون پاس داده شده دکمه های کیبرد کاربر رو می‌خونیم و اون رو به تابع PlayNotes پکیج sound میدیم، که البته این قابلیت الان نت ها رو با یک مقدار تاخیر اجرا می‌کنه!اگر دقت کنین داخل آرگومان تابع PlayNotes از soundSTR استفاده کردیم و اون رو با اول دکمه فشرده شده جمع کردیم، این کار به خاطر اینکه beep متوجه بشه که نت با صدای کدوم ساز پخش بشه.// Create input form&#xA;notesInput := widget.NewMultiLineEntry()&#xA;notesInput.SetPlaceHolder(&#34;Fill with notes&#34;)&#xA;form := &amp;widget.Form{&#xA;        : func() {&#xA;            sound.PlayNotes(soundSTR + notesInput.Text)&#xA;        },&#xA;}&#xA;form.Append(&#34;Notes&#34;, notesInput)اینجا فرم ورودی چند خطی نت ها رو با متد NewMultiLineEntry ساختیم و بعد اون رو به یک form اضافه کردیم ، که داخل تعریف form با استفاده از  تابع PlayNotes رو از پکیج sound فراخوانی کردیم، این یعنی اینکه کاربر بعد کلیک روی دکمه submit صدای نت هایی که وارد کرده رو میشنوه.buttonSave := widget.NewButtonWithIcon(&#34;Save notes sound in .wav file&#34;,&#xA;        theme.DocumentSaveIcon(),&#xA;        func() {&#xA;            sound.SaveNotes(soundSTR + notesInput.Text)&#xA;       })با استفاده از متد NewButtonWithIcon یک دکمه برای ذخیره نت ای که کاربر داخل input قراره به صورت فایل صوتی و به فرمت wav می‌سازیم، که با کلیک روی دکمه تابع SaveNotes  از پکیج sound رو فراخوانی می‌کینم.return widget.NewGroupWithScroller(&#34;Home Page&#34;,&#xA;        widget.NewLabelWithStyle(&#34;Select Instrument&#34;, fyne.TextAlignLeading,&#xA;            fyne.TextStyle{Bold: true}),&#xA;        soundSelector,&#xA;        buttonSave,&#xA;        form,&#xA;)و در نهایت با استفاده از NewGroupWithScroller یک ویجت قابل اسکرول درست می‌کنیم به این خاطر که اگر کاربر نت طولانی وارد کرد صفحه به هم نریزه و بشه داخل صفحه بالا پایین رفت!اره به همین سادگی !می‌تونیم از سادگی fyne  استفاده کنیم و از قدرت Golang هم بهره مند بشیم  :))))قسمت بعدی رو دنبال کن  D:اگر مطالب مفید بود اینجا می‌تونید حمایت کنید  :))) https://virgool.io/@mehrdad.dev/golang-gui-3-cvl4cf3d3tqo </description><category>مهرداد محمدیان</category><author>مهرداد محمدیان</author><pubDate>Thu, 23 Apr 2020 22:02:09 +0430</pubDate></item><item><title>ساخت اپلیکیشن گرافیکی (GUI) با زبان Golang قسمت اول</title><link>https://virgool.ir/@mehrdad.dev/golang-gui-1-hj4xzb7z3hka</link><description>GUI in Golangخوش اومدی  :)  قراره داخل این مطلب یک ماجراجویی ساده داشته باشیم که چطور می‌تونیم با زبان برنامه نویسی گولنگ (Golang) یک اپ گرافیکی یا همون GUI بسازیم.پس اگر شما هم دوست دارین یک اپ گرافیکی ساده با Golang بزنید این مطلب رو دنبال کنید!قبل از شروع به کار لازمه که یادآوری کنم آشنایی حداقلی با گولنگ برای درک بهتر این مطلب نیازه ...اول از همه بیاین در مورد اینکه قراره چه کاری انجام بدیم صحبت کنیم!ما اینجا قراره با هم یک اپ گرافیکی بسازیم که کاربر بتونه بهش نت چندین ساز مختلف مثل پیانو، ویولن و غیره رو بده و بعد ما اون نت ها رو به صدا در بیاریم یا اینکه به صورت یک فایل صوتی ذخیره اش کنیم.و اسمش رو هم در آخر به یاد موسیقیدان و شاعر ایرانی جامی میزاریم  :)به نظر که جذابه!ریپویی که در موردش قراره صحبت کنیم: https://github.com/mehrdad-dev/Jami اینجا از چه چیز هایی برای ساخت اپ گرافیکی در Golang استفاده می‌کنیم؟به طور خلاصه ما برای ساخت GUI اپمون از fyne که یک UI toolkit کراس پلتفرم هست استفاده می‌کنیم.چرا fyne ؟خیلی ساده و راحته و برای ساخت اپ هایی که قرار نیست پیچیدگی زیادی توی این لایه داشته باشن مناسبه!به علاوه اینکه کراس پلتفرمه و به ما خیلی راحت اجازه میده که برای سیستم عامل های دیگه هم خروجی بگیریم.و همچنین برای اینکه بتونیم ساز های موسیقی خودمون رو پیاده کنیم از کتابخونه beep استفاده می‌کنیم.beep یک کتابخونه تمیز و کوچیکه که خیلی راحت به ما توانایی پخش ساز های موسیقی رو میده.نکته: لطفا نسخه گولنگ روی سیستمون رو به 1.14 و یا بالاتر تغییر بدین.خوب دیگه حالا که فهمیدیم از چی قراره استفاده کنیم و قراره اصلا چی بسازیم وقشه که دست به کار بشیم!شروع ساخت GUI در گولنگساختار کلی برنامه قراره به شکل زیر باشه:ساخت اپ گرافیکی در گولنگهمینطور که عکس رو نگاه می‌کنید باید بگم که ۲ پوشه اصلی پروژه ما: cmd که فایل main اپ اونجا قرار می‌گیره و pkg که خودش شامل ۲ پوشه دیگست و قراره قسمت های مختلف اپ رو پیاد سازی کنن هست.اول از همه طبق این درخت پوشه بندی ها و فایل ها رو بسازید تا کم کم پرشون کنیم!و بیاین از go mod استفاده کنیم که بتونیم به راحتی پکیج های اپ رو مدیریت کنیم.برای این کار کافیه از دستور زیر داخل ترمینال استفاده کنید:go mod init jamiکد پایین فایل main برنامه هست که در ادامه با هم دیگه بررسی می‌کنیم‌‌ ...برای نمایش بهتر می‌تونید از gist این فایل استفاده کنین.توجه کنین که تمام کد هایی که قراره با هم ببینیم داخل () func main هستن!a := app.NewWithID(&#34;com.jami.app&#34;)&#xA;a.SetIcon(theme.FyneLogo())اینجا خیلی ساده یک آیدی یونیک برای اپ تعریف کردیم و بعد از اون با SetIcon بهش گفتیم که آیکن برنامه چی باشه، اینجا از آیکن خود fyne استفاده کردیم.w := a.NewWindow(&#34;Jami&#34;)&#xA;w.SetMainMenu(fyne.NewMainMenu(&#xA;    fyne.NewMenu(&#34;Control&#34;,&#xA;        fyne.NewMenuItem(&#34;Force Quit&#34;, func() {  os.Exit(1) } ),&#xA;    ),&#xA;    fyne.NewMenu(&#34;View&#34;,&#xA;        fyne.NewMenuItem(&#34;Full Screen&#34;, func() { w.SetFullScreen(true) }),&#xA;        fyne.NewMenuItem(&#34;Small Screen&#34;, func() { w.SetFullScreen(false) }),&#xA;   ),&#xA;),)&#xA;w.SetMaster()خوب اینجا توی خط اول یک پنجره ساختیم و اسم اون رو Jami گذاشتیم.و از خط دوم تا یکی مونده به خاطر یک نوار منو ایجاد کردیم که شامل مواری مثل Full Screen و .. است.و این نوار همینطور که داخل تصویر زیر می‌بینید بالای اپ قرار می‌گیره.نوار بالایی fyneپس تا اینجا تونستیم یک نوار ساده درست کنیم.حالا می‌خوایم چند تا tab برای برنامه بسازیم تا بتونیم screen های مختلف مون رو توی هرکدوم قرار بدیم.tabs := widget.NewTabContainer(&#xA;        widget.NewTabItemWithIcon(&#34;Home&#34;, theme.HomeIcon(), screens.HomeScreen(w)),&#xA;        widget.NewTabItemWithIcon(&#34;Learn&#34;, theme.HelpIcon(), screens.LearnScreen()),&#xA;        widget.NewTabItemWithIcon(&#34;Settings&#34;,&#xA;                   theme.SettingsIcon(),screens.SettingsScreen(a,w)),&#xA;        widget.NewTabItemWithIcon(&#34;About&#34;, theme.InfoIcon(), screens.AboutScreen(a)))با متد NewTabContainer تب ها و با متد NewTabItemWithIcon هم تب های آیکن دار می‌سازیم.که آرگومان های مورد نیازش اسم تب، آیکن اش و یک fyne.CanvasObject هست، که این همون اسکرین های ما میشه.توجه: دقت کنید که ما اینجا از پکیج screens، توابع دیگه ای رو فراخوانی کردیم که قراره در قسمت بعدی این مطلب بررسی کنیم، داخل این قسمت فقط تابع main رو بررسی می‌کنیم.tabs.SetTabLocation(widget.TabLocationBottom)با این خط هم مکان نمایش تب ها رو معلوم می‌کنیم، شما ۴ انتخاب برای مکان نمایش اون ها دارین که ما اینجا حالت پایین صفحه رو انتخاب کردیم.در نهایت خروجی تب ها:تب ها در fynew.SetContent(tabs)&#xA;w.Resize(fyne.NewSize(800, 500))&#xA;// w.SetFixedSize(true)   this is a comment !&#xA;w.ShowAndRun()حالا تنها کاری که باید انجام بدیم اینکه با استفاده از متد SetContent تب هایی که ساختیم رو برای محتوا پنجره اصلی مون ست کنیم.بعد از اون اندازه اش رو تعیین کنیم و با استفاده از ShowAndRun اپ مون رو اجرا کنیم!اگر که می‌خواید کاربر نتونه سایز صفحه رو تغییر بده، می‌تونید مقدار SetFixedSize رو true بدید، که ما اینجا کامنتش می‌کنیم.ممنون از اینکه تا اینجا همراه بودی  :)اگر مطالب مفید بود اینجا می‌تونید حمایت کنید  :)))از این قسمت می‌تونید به قسمت های دیگه این مطلب دسترسی داشته باشین: https://virgool.io/@mehrdad.dev/golang-gui-2-i0hyq9ruecwy  https://virgool.io/@mehrdad.dev/golang-gui-3-cvl4cf3d3tqo </description><category>مهرداد محمدیان</category><author>مهرداد محمدیان</author><pubDate>Thu, 23 Apr 2020 21:57:19 +0430</pubDate></item></channel></rss>