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

ساخت پروژه گالپ

ابتدا یک پوشه‌ی دلخواه به نام project را درست کنید.سپس خط فرمان خود را به این مسیر تغییر دهید و در نهایت دستور زیر را وارد کنید:
 npm init
این دستور برایمان یک فایل package.json می‌سازد تا هم مشخصات پروژه را مثل نام، ورژن، نام توسعه دهنده، مخزن و ... مشخص کنیم و هم وابستگی‌های آن را، تا توسعه دهندگان دیگر، هنگام استفاده از پروژه، با مشکل مواجه نشوند و فقط با اجرای دستور npm install تمام وابستگی‌های پروژه را نصب کنند.
حتما مشاهده کرده‌اید که این دستور چند سوالی را از شما می‌پرسد. برای نمونه من آنها به این صورت پاسخ می‌دهم و در نهایت از من یک تایید می‌گیرد که yes را می‌زنم.
name: (Gulp-RTLbootstrap-fontawesome) 
version: (1.0.0) 
description: An Awesome workflow
entry point: (index.js) index.html
test command: test
git repository: https://github.com/mmdsharifi/gulp-rtlBootstrap-fontawesome.git
keywords: gulp,rtlbootstrap,persian bootstrap
author: Mohammad Sharifi
license: (ISC) MIT
الان فایل package.json درست شده و چون ما در این پروژه می‌خواهیم از گالپ استفاده کنیم، یکی از وابستگی‌های پروژه‌ی ما گالپ خواهد بود. بدین معنی که اگر بخواهیم پروژه را توسعه دهیم و گالپ نصب نشده باشد، با مشکل مواجه می‌شویم.

نصب گالپ

در خط فرمان دستور زیر را وارد کنید تا گالپ در این پروژه نصب شود.
npm install gulp --save-dev
تفاوتی آن با دستوری که در مقاله‌ی قبلی اجرا کردیم، این است که این دستور فقط گالپ را در مسیر جاری در فولدر node_modules نصب می‌کند و save-dev --      آن را به وابستگی‌های توسعه‌ی پروژه در فایل package.json اضافه می‌کند.
گام بعدی، ساخت فایلی است که گالپ به آن نیاز دارد تا با استفاده از آن، تسک‌ها و کارهایی را که برایش نوشته‌ایم، از آن بخواند و اجرا کند.

ایجاد فایل gulpfile.js

این فایل را یا به صورت دستی ایجاد کنید یا با خط فرمان با دستور ذیل:
touch gulpfile.js
و حالا آن را در ویراشگر مورد علاقه‌ی خود باز کنید. من از ویرایشگر Atom استفاده می‌کنم. اما notepad هم کفایت می‌کند.

نوشتن اولین تسک گالپ

در ویراشگر خط زیر را می‌نویسیم:
var gulp = require('gulp');
 require  به Node می‌گوید که به فولدر node_modules برای پکیج gulp نگاه کند. زمانیکه آن را پیدا کرد، آن را به متغیر gulp انتساب می‌دهیم تا از تابع‌های گالپ بتوانیم استفاده کنیم. حال می‌خواهیم اولین تسک خود را بنویسیم:
gulp.task('task-name', function() {
  // Stuff here
});
گالپ دارای ۴ تابع task,src,dest,watch است که با آنها آشنا خواهیم شد. task یک کار را برای گالپ تعریف می‌کند و سه پارامتر دارد. اولی نام تسک، دومی (اختیاری) وابستگی این تسک (بدین معنا که اول باید این وظیفه اجرا شود، سپس تسک جاری) و در نهایت تابع درون تسک‌ها را می‌نویسیم. برای مثال:
gulp.task('hello', function() {
  console.log('Hello Gulp !');
});
فایل را ذخیره کنید. می‌خواهیم به گالپ بگوییم که این وظیفه را انجام دهد. کافی است gulp hello  را در خط فرمان وارد کنیم. نتیجه به صورت زیر خواهد بود:


 البته که تسک‌هایی که برای گالپ می‌نویسیم، کاراتر از این است؛ برای مثال:
gulp.task('task-name', function () {
  return gulp.src('source-files') // Get source files with gulp.src
    .pipe(aGulpPlugin()) // Sends it through a gulp plugin
    .pipe(gulp.dest('destination')) // Outputs the file in the destination folder
})
با استفاده از متد src به گالپ می‌گوییم که مسیر مبداء فایل‌ها، برای انجام تسک کجا است و dest هم بعد از انجام تسک، فایل‌های خروجی را به مقصد مشخص می‌برد. متد pipe یک تابع ند جی اس است که مطابق مستندات خودش متدی است که تمام جریان‌های قابل خواندن را واکشی می‌کند و به مسیری [که به صورت آرگومان به عنوان مقصد] داده شده، هدایت می‌کند.
شاید در ابتدا نوشتن تسک برایتان کمی پیچیده باشد، اما بعد از ساخت اولین پروژه با گالپ، خواهید دانست که تسک نوشتن برای گالپ کاری بسیار آسان و شیرین است!

مخزن پروژه در گیت هاب : https://github.com/mmdsharifi/gulp-rtlBootstrap-fontawesome 
نام کامیت این قسمت: Init commit

در مقاله بعدی gulp را در کنار bower بکار خواهیم برد. بهتر است مطالعه‌ای در مورد bower نیز انجام دهید. (پیشنهاد: + و + )
بازخوردهای دوره
مثال - نمایش درصد پیشرفت عملیات توسط SignalR
- برای فراگیری کار با ASP.NET Web API از اینجا شروع کنید.
- در کل هیچ نیازی نیست تا این پروژه از نوع Web API باشد یا وابستگی Web API به آن اضافه شود (این فقط یک مثال بود؛ جهت بیان یک مفهوم یا عملکرد).
- همینقدر که DownloaderController را با یک کنترلر ASP.NET MVC هم جایگزین کنید کار می‌کند. فقط باید مسیر جدید را در فراخوانی‌های ای‌جکسی اصلاح کنید.
بازخوردهای دوره
ارتباطات بلادرنگ و SignalR
- در مورد مسیر پویای signalr/hubs در قسمت بعدی بیشتر بحث شده‌است.
- برای خطایابی نیاز به توضیحات بیشتری هست. اطلاعات بیشتر
- در کنسول لاگ‌های آن خطاهای جاوا اسکریپتی را نمایش می‌دهد. با فایرباگ هم می‌شود این نوع برنامه‌ها را دیباگ کرد.
اطلاعات بیشتر: «عیب یابی و دیباگ برنامه‌های SignalR»
نظرات اشتراک‌ها
froala/wysiwyg-editor 1.2 منتشر شد
کدهای سمت سرور آن با FroalaUploadImage دقیقا یکی است. سمت کاربر آن fileUploadURL و fileUploadParams دارد بجای imageUploadURL و imageParams . دکمه uploadFile هم در قسمت تعاریف buttons باید اضافه شود. مسیر پلاگین Scripts/plugins/file_upload.min.js هم باید در قسمت تعاریف اسکریپت‌ها قید شود.
اشتراک‌ها
همایش توسعه‌ی سورس باز در مایکروسافت

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

آیا آنها موفق بوده اند؟

اپن سورس دات نت دقیقا به چه معناست؟ 

در این همایش  اسکات هانسلمن صحبت‌های فوق العاده‌ی در این ضمینه دارد. 

همایش توسعه‌ی سورس باز در مایکروسافت
اشتراک‌ها
خاموش کردن فعالیت taskhost در Windows 8/8.1

اگر ویندوز 8 شما پس از مدتی بیکاری CPU Usage بالایی پیدا می‌کند، این مسیر را طی کرده و taskهای پشت صحنه اضافی را غیرفعال کنید:

Task Scheduler Library > Microsoft > Windows > Task Scheduler> Idle Maintenance 

خاموش کردن فعالیت taskhost در Windows 8/8.1
اشتراک‌ها
آیا از KPI باید به انباره داده و هوش تجاری رسید؟
اکنون تا اندازه ای مسیر و متدولوژی‌های پروژه‌های DW/BI روشنتر از گذشته شده است. 
این مشتری نیست که دیکته کند چه باید روی صفحه مانیتور ببیند. 
متاسفانه از گوشه و کنار به گوش میرسد که برخی از اهالی IT که بعضاً نیز کارشناس صنایع هستند با بررسیKPIهای یک سازمان، پروژه DW/BI آن بنگاه را شروع مینمایند. در این باره چند مورد متناقض وجود دارد ...
آیا از KPI باید به انباره داده و هوش تجاری رسید؟
نظرات مطالب
بررسی روش آپلود فایل‌ها در ASP.NET Core
بله. ابتدا باید map network drive و یا add a network location صورت بگیرد (نتیجه‌ی هر دو یکی است):

بعد از اینکار، مسیر اشتراکی شبکه‌ی داخلی (که دسترسی کاربر وارد شده‌ی به سیستم و شبکه، پیشتر به آن تنظیم شده)، به صورت یک درایو جدید، کنار سایر درایوهای قابل انتخاب توسط open file dialog استاندارد، ظاهر شده و قابل انتخاب می‌شود.

نظرات مطالب
ارتقاء به ASP.NET Core 1.0 - قسمت 5 - فعال سازی صفحات مخصوص توسعه دهنده‌ها
با سلام؛ آیا امکانش هست آدرس به‌صورت هارد کد نباشه؛ مثلا آدرس رو از دیتابیس یا یک فایل بخواند. چون اگر در یک سایت، صفحه اولش با این ادرس باشد www.site.com/main/، وقتی به خطا می‌خورد این مسیر رو نشون می‌دهد www.site.com/home/error که وجود ندارد.
 app.UseExceptionHandler(errorHandlingPath: "/MyControllerName/SomeActionMethodName");
نظرات مطالب
پیاده سازی JSON Web Token با ASP.NET Web API 2.x
عنوان کرده مسیر login/ را پیدا نمی‌کند (همان tokenPath که نهایتا به متد GrantResourceOwnerCredentials کلاس AppOAuthProvider منتهی می‌شود و توسط Owin مدیریت می‌شود. در ابتدای این متد یک break point قرار دهید. برنامه را اجرا کرده و سپس بر روی دکمه‌ی login کلیک کنید...). سپس تنظیمات سیستم، تنظیمات Owin ، مسیریابی‌ها و کانفیگ برنامه را بررسی کنید.