<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های امیر رستگار</title><link>https://virgool.ir/feed/@rastegar.amir3</link><description>توسعه دهنده اندروید و وب، شرکت فناوری فیروزه</description><language>fa</language><pubDate>2026-11-11 20:08:46</pubDate><image><url>https://files.virgool.ir/upload/users/20586/avatar/3njbnm.png</url><title>امیر رستگار</title><link>https://virgool.ir/@rastegar.amir3</link></image><item><title>کراولر چیست و چگونه یک نمونه از آن بسازیم</title><link>https://virgool.ir/@rastegar.amir3/کراولر-چیست-و-چگونه-یک-نمونه-از-آن-بسازیم-dyjxsq3kdoco</link><description>سلام دوستان، در این آموزش کوتاه قصد دارم بخشی از تجربه خودمو در ساخت یک کراولر به عنوان بخشی از برنامه ام به اشتراک بگذارم... پروژه من بخشی در داشبورد برای مشتریان داره که لینک مطالب مرتبط با کارشون رو ازشون دریافت میکنه و باز سمتی به دیگر افراد خلاصه ای از لینک وارد شده رو نشون میده.کرولر چیست؟  به دریافت اتوماتیک اطلاعات از وب و بررسی و گزینش کردن بخش های مهم اون کراول - crawl کردن میگیم. که این کار در موتور های جستجو، جمع آوری اطلاعات و ... استفاده داره. برای ساخت کراول روش های خیلی زیادی هست و زبان های مختلف روش های مختلفی رو براش ارائه کردند. همچنین کرولر ها به دو دسته خطی و تو در تو هم تقسیم میشن. در مدل خطی یک یا لیستی از ادرس ها برای تحلیل ارائه میشه و برنامه کراولر باید یک به یک اون ها رو دریافت و تحلیل کنه. کراولر تو در تو هم با باز کردن یک صفحه لیسیتی از لینک های درونش رو میگیره و یک به یک اون ها رو هم بررسی میکنه...خوب حالا برای جاوا اسکریپت و NodeJS ساخت یک کرولر ساده رو بررسی میکنیم: «بنظر نویسنده یکی بودن زبان جی اس و سی اس اس با زبانی که در ساخت ساخت سایت ها استفاده میشه و ویژگی اسنکرون بودن مزیت خوبی برای کار با نود جی اس در این بخشه»کتابخانه CHEERIO قوی و انعطاف پذیر برای کراولر هست که میتونید از NPM دریافتش کنید. این کتابخانه با دریافت یک سورس سایت «HTML» بهتون اجازه میده تا با سلکتور های جی کوئری - سی اس اس بخشی از سایت رو انتخاب کنید.const cheerio = require(&#39;cheerio&#39;)&#xA;const $ = cheerio.load(&#39;&lt;h2 class=&#34;title&#34;&gt;Hello world&lt;/h2&gt;&#39;)&#39;در قطعه کد بالا ابتدا کتابخانه به پروژه اضافه شده و در خط بعد سورس HTML رو در کتابخانه لود کرده است.خوب ما نمیخوایم که سورس رو به صورت دستی به کتابخانه بدیم...! پس باید از کتابخانه request که در NodeJS به صورت پیش فرض وجود داره استفاده کنیم. شما میتونید از Axios یا کتابخانه های مشابه هم استفاده کنید.const request = require(&#39;request&#39;);&#xA;request(url, (err, res, body) =&gt; {&#xA; const $ = cheerio.load(body);&#xA; let post = {};&#xA; post.title = $(&#39;title&#39;).text();&#xA; post.image = $(&#34;meta[property=&#39;og:image&#39;]&#34;).attr(&#34;content&#34;);&#xA; post.text = $(&#34;meta[property=&#39;description&#39;]&#34;).attr(&#34;content&#34;);&#xA;});در مثال بالا پس از اینکه آدرس متغیر url دریافت میشه، محتوی اون در متد load قرار میگیره. و با استفاده از سلکتور های جی کوئری-سی اس اس خلاصه ای از محتوی پست موجود در صفحه در ابجکت post قرار میگیره.پ.ن: اگه یکم خلاقیت به خرج بدید با کراول کردن مرحله به مرحله «برای اماده کردن لیست آدرس ها»، یا پیدا کردن الگو در آدرس های سایت مورد نظر محتوی خوبی رو جمع آوری کنید.پ.ن2: کراول کردن وبسایت ها معمولا محدودیت داره و پس از یک تعداد خاصی درخواست دیگه نمیتونید درخواست بفرستید که اونجا پراکسی ها خیلی کمکتون خواهد کرد.امیدوارم فرصتی بشه و درمورد مباحث پیشرفته تر هم صحبت کنیم... موفق باشید.</description><category>امیر رستگار</category><author>امیر رستگار</author><pubDate>Fri, 01 Mar 2019 19:02:56 +0330</pubDate></item><item><title>نصب گو «GoLang» در ویندوز</title><link>https://virgool.ir/@rastegar.amir3/نصب-گو-golang-در-ویندوز-tpvupjx25gwp</link><description>سلام دوستان، شاید برای شما هم اتفاق افتاده باشه که چهار صبح به سوالی فکر کنید و تا نیافتن پاسخ چشم بر هم نگذارید. این پاسخی است که پس از تلاش های زیاد پیدا کردم و با آرامش خوابیدم. :)))خوب از شوخی که بگذریم... برای خیلی از دوستان که به سراغ زبان گو میرفتن مراحل پس از نصب گو براشون مبهم بود و من سعی میکنم در توضیحاتی کوتاه مشکل رو حل کنم پس همراهم باشید.اکثر ما برنامه نویس ها در قسمتی از رایانمون یک پوشه برای پروژه ها داریم و هر پروژه رو در فولدری جداگانه نگهداری میکنیم. سازندگان گو هم همین ایده رو در نظر گرفتن و از شما میخوان که در کامپیوترتون یه فولدر رو تنظیم کنید تا لایبرری ها و فولدر های پروژتون در اون فولدر قرار بگیره.این فولدر شامل سه فولدر زیر میشه:Bin یا فایل های اجراییpkg یا بسته هاsrc یا محل قرار گیری پروژه هاتون و ...در نسخه های جدید در فولدر یوزر «برای ویندوز » خود نصاب گو فولدر مخصوص رو ایجاد میکنه ولی مطمئنا پروژه ها رو در درایو ویندوز نگهداری نمیکنید و میخواید که اونو جا به جا کنید.برای این منظور به environment variables برید « همین عبارت رو در استارت ویندوز 10 جستجو کنید » و در لیست enviroment varable for یک متغیر با نام GOPATH رو بسازید یا ویرایش کنید و آدرس فولدر مورد نظر رو بدید.خوب همچی درست شد و با اولین اجرای دستور go  اون سه تا فولدر دیگه هم درست میشه...</description><category>امیر رستگار</category><author>امیر رستگار</author><pubDate>Thu, 24 Jan 2019 03:43:57 +0330</pubDate></item><item><title>Angular.JS : وب اپ در چند دقیقه!</title><link>https://virgool.ir/@rastegar.amir3/angularjs-وب-اپ-در-چند-دقیقه-ioikuyhspocl</link><description>باسلام؛ در این پست قراره خیلی سریع با آنگولار جی اس آشنا بشیم. اما بزارید قبل از هر چیزی کمی در مورد آنگولار بدونیم. آنگولار جی اس نسخه اول از پروژه آنگولار هست که توسط گوگل راه اندازی شده و مجموعه کاملی برای ساختن اپ های تک صفحه ای یا همون وب اپ ها هست. اما در نسخه های بعدی دچار تغییرات خیلی زیادی شد، تا اونجایی که سایت جدیدی برای نسخه های بعدی اون در نظر گرفته شد! اما همچنان نسخه اولیه مورد استفاده بسیاری هست چون بسیار خوش دست و ساده هست.+ نسخه اول رو از «اینجا» و نسخه های جدید تر رو از «اینجا» دریافت کنید.در این آموزش قراره با نسخه اولیه یک اپلیکیشن یادداشت بسازیم و از قابلیت های آنگولار جی اس استفاده کنیم. ناحیه ی هر اپلیکیشن با اتریبیوت np-app  مشخص میشه که یک نام نیز دریافت میکنه و درون یک اپ چندین کنترلر قرار میگیره که ناحیه های مختلفی از اپ رو پوشش میدن. این کنترلر ها هم با اتریبیوت ng-controller مشخص میشن...خوب برای شروع کد زیر رو درون یک فایل htm ذخیره میکنیم:قالب اولیه برای یک اپ آنگولار جی اسخوب ولی برای اینکه یک پروژه آنگولار رو ایجاد کنیم باید یک تگ script بعد از لود خود کتابخونه بسازیم و یک ابجکت از اپ آنگولار رو بگیریم:var app = angular.module(&#39;mytodo&#39;, [ ])اول اینکه این ابجکت app باید در اسکوپ گلوبال باقی بمونه و اینکه همونطور که انتظار میره اولین ورودی با مقدار ng-app باید برابر باشه... اگه اروری دریافت نکردید یعنی شما اولین برنامه رو به درستی ساختید!خوب حالا یک ورودی متن و یک نوشته برای تست اضافه میکنیم.بایند کردن متغیر ها به تگ هاتو چیز جدید در کد بالا ng-model و استفاده از {{ varable }} هست. ng-model مقدار یک تگ رو به یک متغیر پیوند «bind» میکنه که در اتربیوت ها استفاده میشه و {{ }} نیز میتونه همین کار رو برای حالت هایی که از اتربیوت استفاده نمیکنید فراهم کنه...با اجرای کد بالا هرچیزی که در فیلد بنویسید در تگ span تکرار خواهد شد! در نظر داشته باشید که متغیر هایی که درون یک کنترلر تعریف میشوند فقط در همان کنترولر دردسترس هستند.حال رابط کاربری برای برنامه یادداشت را کامل میکنیم. «شما میتوانید با استفاده متریالایز یا بوت استرپ رابط کاربری زیبا تری را بسازید»رابط کاربری کامل شدهخوب؛ ng-repeat روی هر المنتی که قرار بگیرد حلقه ای ایجاد میکند تا به تعداد آرایه ی مورد نظر آن المنت تکرار گردد. ng-click نیز تابعی در کنترلر را فراخوانی میکند. حالا باید کد هایی را به برنامه اضافه کنیم.با کد زیر برای هر کنترلری تابعی را مشخص میکنیم:app.controller(&#39;mycont&#39;, function($scope){});بامشخص کردن نام کنترلر و قرار دادن کتابخانه های مورد نیاز به عنوان ورودی تابع، تابعی را برای کنترلر مشخص میکنیم. تمام متغیر هایی که واسط رابط کاربری با این تابع هستند در $scope قرار میگیرند.کد های کامل برنامهدر کنترلر مورد نظرمان؛ یک آرایه تهی را در اسکوپ به وجود میاوریم و تابعی به نام add  که در ng-click دکمه اشاره کرده بودیم را ایجاد میکنیم و مقدار متغیر را درون آرایه پوش میکنیم. برنامه ما کامل شده است! این آموزش شامل بخش های کلی از ابزار های این کتابخانه بود. به زودی به روتینگ، ارتباط اینترنتی و ... نیز خواهیم پرداخت.موفق باشید.</description><category>امیر رستگار</category><author>امیر رستگار</author><pubDate>Thu, 08 Nov 2018 19:37:46 +0330</pubDate></item></channel></rss>