پیش از ظهور لینک، محاورهها با رشتههای سادهای که در یک برنامه کاربردی ساخته میشدند و حتی فاقد ویژگی IntelliSense بودند، استفاده میشدند. اما با ظهور لینک، این شکل دسترسی به دادهها کاملاً متحول شد و برنامهنویسان توانستند با حداقل کدنویسی محاورهها را از یک رشته ساده خارج کرده و به محاورههایی تبدیل کنند که مدیریت بیشتر روی آنها امکانپذیر باشد. منعطف بودن لینک باعث محبوبیت آن شد. کدنویسان بدون اینکه درگیر قواعد بسیار پیچیده دسترسی به منابع دادهای مختلف شوند، موفق شدند بهراحتی برای دسترسی به دادههایی که روی منابع مختلفی همچون بانکهای اطلاعاتی رابطهای، اسناد xml و... قرار دارند، از لینک استفاده کنند. با این مقدمه، به سراغ معرفی تعدادی از تکنیکهای پرکاربرد در لینک خواهیم رفت که برای دسترسی به دادههایی که روی منابع مختلف قرار دارند، استفاده میشود. اما ابتدا باید با ساختمان درونی محاورهها در لینک آشنا شویم.
محاوره چیست؟
پرسوجو
(Query) که به نام محاوره نیز شناخته میشود، رشتهای متنی است که
بهمنظور بازیابی دادهها از یک منبع دادهای، بهروزرسانی، اضافه کردن و
حذف دادهها، از آن استفاده میشود. لینک با هدف ارائه یک مدل ساده از
محاورهها در اختیار برنامهنویسان قرار گرفت؛ مدلی که قادر است به منابع
دادهای مختلف به شیوه کدنویسی یا ویزاردی متصل شود. برای این منظور
مجموعهای از متدهای اصلی که عملگرهای استاندارد محاوره (SQO) نام دارند،
لینک را یاری میکنند. طیف گستردهای از این متدها به شکل ترتیبی کار
میکنند؛ به این معنی که شی مورد محاوره از نوع یکی از رابطهای
<IEnumerable<T یا <IQueryable<T خواهد بود. شایان ذکر است
IQueryable که برای محاورههای LINQ TO SQL استفاده میشود، در نهایت به
IEnumerable تبدیل میشود. در نتیجه یک محاوره لینک همواره با اشیا سروکار
دارد.
نکته بارز و شاخص این مدل به ویژگی یکدست بودن آن بازمیگردد؛ به طوری که برنامهنویسان در اکثر مواقع از الگوی ثابتی بهمنظور بازیابی دادهها از منابع دادهای استفاده میکنند. محاورههای ساختهشده توسط لینک، عبارات باقاعدهای هستند که همراه با فیلترهای مختلفی همچون مرتبسازی، تجمع و... قابل بهرهبرداری هستند. استخراج ساختمند دادهها در عمل به طراحان و بهویژه طراحان وب کمک فراوانی میکند. روشهای SQO روشهای توسعهیافتهای هستند که از کلاسهای Enumerable و Queryable تعریف میشوند. بعضی منابع این روشها را عملگرهای پرسوجو نامگذاری کردهاند. همگی این روشها در فضایی به نام System.Linq قرار دارند. بهطور کلی محاورهها در لینک، در پنج گروهی که در جدول شماره یک مشاهده میکنید، قرار میگیرند.
جدول شماره 1: پنج گروهی که نقش تدارکبینندهها را برای لینک بازی میکنند.
در کنار این پنج گروه اصلی، کتابخانههای جانبی دیگری نیز وجود دارند که برای مقاصد خاص استفاده میشوند.
LINQ
to Active Directory از جمله این موارد است. در میان گروههای جدول شماره
یک، دو گروه LINQ to Objects و LINQ to SQL پرکاربردترین گروههایی هستند
که برنامهنویسان استفاده میکنند. در بسیاری از موارد، برنامهنویسان
ترجیح میدهند به جای استفاده از محاورههای SQL، از محاورههایی که LINQ
to SQL در اختیار آنها قرار میدهد، استفاده کنند. به دلیل اینکه در عمل،
مکانیزم سادهتری را برای دسترسی به دادهها در اختیار آنها قرار میدهد.
در کنار این تدارکبینندهها، عملگرهای محاورهای دیگری نیز وجود دارد که
در یک عبارت محاوره از آنها استفاده میشود. پرکاربردترین این عملگرها در
جدول شماره دو آمده است.
جدول شماره 2: پرکاربردترین عملگرهایی که در محاورههای لینک استفاده میشوند.
ساختار و نحوه اجرای محاورهها در لینک
اجرای
محاورهها در لینک مکانیزم خاص خود را دارد. اولین مرحله، اتصال به منبعی
است که دادهها درون آن قرار دارند. مرحله دوم، تعریف رشته محاورهای است.
این رشته تعیینکننده منبع دادهای و دادههایی است که از آن منبع دریافت
خواهید کرد. سومین مرحله اجرای محاوره است. اجرای یک محاوره با استفاده از
حلقه foreach انجام میشود. در این حالت دادههای دریافتشده از منبع درون
یک متغیر رشتهای قرار میگیرند. زمانیکه همه عناصر پردازش شدند، رشته
قابل استفاده خواهد بود.
فهرست شماره یک، مثال سادهای از نحوه دسترسی
به یک منبع دادهای، ساخت رشته بازیابی و دریافت دادهها از این منبع را
نشان میدهد. این محاوره زمانی قابل استفاده خواهد بود که در حلقه foreach
استفاده شود. در این حالت متغیر مربوط به محاوره اجرا میشود و به سراغ
منبع دادهای خواهد رفت که برای آن تعیین شده است و در ادامه، دادهها را
بر مبنای الگویی که در محاوره مشخص شده است، دریافت خواهد کرد.
static void Main(string[] args)
{
int[] numbers = new int[7] { 0, 1, 2, 3, 4, 5, 6 };
var myQuery =
from num in numbers
where (num % 2) == 0
select num;
foreach (int num in myQuery)
{
Console.Write(“{0,1} “, num);
}
}
فهرست شماره یک
شکل 1 ساختار کلی یک محاوره و نحوه اتصال آن به یک منبع دادهای را همراه با اجزا درون محاوره نشان میدهد. نکتهای که در خصوص لینک باید به آن توجه کنید، این است که در لینک، اجرای یک محاوره متفاوت با خود محاوره است. به عبارت دیگر، با ساخت یک رشته محاورهای، هیچ دادهای در اختیار شما قرار نخواهد گرفت تا محاوره ساختهشده را اجرا کنید.
شکل 1: نحوه اجرای یک محاوره در لینک
منبع دادهای چیست؟
در
فهرست شماره یک، منبع دادهای یک آرایه بود که بهطور صریح از رابط
<IEnumerable<T پشتیبانی میکرد. این بدان معنا است که محاورههای
لینک روی اشیایی که از رابط IEnumerable ارثبری داشته باشند، بهراحتی
پیادهسازی میشوند. حلقه foreach برای اجرای محاورهها به IEnumebrale یا
<IEnumerable<T نیاز دارد. نوعهایی که از رابط <IEnumerable<T
یا رابطهایی همچون <IQueryable<T مشتق میشوند، نوعهای قابل
پرسوجو هستند. لینک میتواند از یک نوع قابل پرسوجو به شکل یک منبع داده
مستقیم، استفاده کند. اما یک منبع داده، همیشه یک آرایه ساده نیست. اگر
منبع مورد تقاضا یک بانک اطلاعاتی از نوع SQL Server باشد، تدارکبیننده
LINQ to SQL استفاده خواهد شد. در حالی که اگر منبع داده شما بانک اطلاعاتی
دیگری باشد، باید از LINQ to Dataset استفاده کنید. اگر منبع دادهای
درخواستی شما یک فایل XML باشد، تدارکبیننده LINQ to XML برای ساخت و
اجرای محاورهها استفاده میشود.
هدف از ارائه لینک کار با دادهها به
شیوه ساده و مستقیم است. لینک یک لایه برنامهنویسی انتزاعی میان زبانهای
تحت داتنت و منابع دادهای فراهم میآورد. شاید این سؤال پیش آید که چه
لزومی دارد برای دسترسی به منابع دادهای از محاورهها استفاده کنیم؟ در
پاسخ باید گفت که هر کدام از رابطهایی که برای دسترسی به دادهها از آنها
استفاده میشود، ترکیب نحوی خاص خود یا زبانی را که از آن استفاده
میکنید، در اختیار دارند؛ در نتیجه همواره باید با قواعد و ترکیبات نحوی
هر منبع دادهای و زبان برنامهنویسی هدف آشنایی داشته باشید. در مقابل
لینک این قابلیت را در اختیار شما قرار میدهد تا از چارچوب استانداردی
برای دسترسی به دادههای قرارگرفته در منابع دادهای مختلف استفاده کنید.
محاوره شماره یک؛ دسترسی به منابع دادهای ساده همچون آرایهها
آرایهها
سادهترین منبع دادهای هستند که میتوانید دادههای مدنظر را از آنها
استخراج کنید. در حالی که عناصر درون آرایهها را میتوان با استفاده از
حلقههایی همچون foreach یا for استخراج کرد، لینک نیز میتواند همین کار
را به شکل ساختیافتهای انجام دهد. فهرست شماره دو نحوه پیادهسازی یک
محاوره لینک روی یک آرایه را نشان میدهد.
static void Main(string[] args) { String[] myArray = { “One”, “Two”, “Three”, “Four”, “Five” };
var MyQuery =
from mystring
in myArray
select mystring;
foreach(var str in MyQuery)
Console.WriteLine(str); }
فهرست شماره دو
محاوره شماره دو؛ محدود کردن دادههای دریافتی از یک منبع داده
محاوره
شماره یک، همه دادههای درون یک آرایه را بازمیگرداند؛ اما اگر در نظر
داشته باشیم تنها دادههای خاص خود را استخراج کنیم، باید از کلمه کلیدی
where استفاده کنیم. این کلمه کلیدی به شما اجازه میدهد تا شرطی را روی یک
محاوره پیادهسازی کنید. در اغلب موارد، محاورهها به فیلتر نیاز دارند؛
به دلیل اینکه در بیشتر زمانها نیازی نداریم کل مجموعه دادهها را از درون
یک منبع دادهای استخراج کنیم؛ بهویژه زمانی که منبع داده هدف ما یک بانک
اطلاعاتی مشتمل بر دهها هزار رکورد باشد. مکان قرارگیری کلمه where در یک
محاوره، بعد از کلمه from و قبل از کلمه کلیدی select است. در فهرست شماره
سه از ترکیب نحوی where بهمنظور محدودکردن خروجی دادههایی که اندازه
آنها از سه کاراکتر بیشتر است، استفاده کردهایم.
static void Main(string[] args)
{
String[] myArray = { “One”, “Two”, “Three”, “Four”, “Five” };
var MyQuery =
from mystring
in myArray
where mystring.Length > 3
select mystring;
foreach(var str in MyQuery)
Console.WriteLine(str);
}
فهرست شماره سه
محاوره شماره سه؛ مرتبسازی و گروهبندی دادههای بازیافتشده در یک محاوره
برای
چینش دادههای بازیافتی در یک محاوره از کلمه کلیدی orderby استفاده
میشود. با استفاده از این کلمه کلیدی نحوه مرتبسازی دادهها، مطابق با
نیاز کاری شما خواهند بود. در کنار عملگر orderby روشها و عملگرهای دیگری
نیز برای مرتبسازی دادهها در اختیار شما قرار دارند. فهرست شماره چهار
نحوه مرتبسازی دادهها با عملگر orderby را نشان میدهد.
class Program
{
public class myclass
{
public string Name { get; set; }
public int Age { get; set; }
}
static void Main(string[] args)
{
myclass[] mystrings = { new myclass { Name=”Barley”, Age=8 },
new myclass { Name=”Boots”, Age=4 },
new myclass { Name=”Whiskers”, Age=1 } };
IEnumerable<myclass> query = mystrings.OrderBy(Program => Program.Age);
foreach (myclass mystr in query)
{
Console.WriteLine(“{0} - {1}”, mystr.Name, mystr.Age);
}
}
}
فهرست شماره چهار
محاوره شماره چهار؛ متصل کردن نتایج بهدستآمده از محاورهها
در
برخی موارد، محاورهها تنها روی یک منبع دادهای خاص اجرا نمیشوند و ما
به دادههایی نیاز داریم که درون منابع دادهای مختلف وجود دارند. در چنین
شرایطی لازم است تا محاورهها را به شکلی به یکدیگر متصل کنیم. فهرست شماره
پنج نحوه به کارگیری این تکنیک را نشان میدهد.
static void Main(string[] args)
{
Int32[] FirstArray= {1,2,3,4,5};
Int32[] SecondArray = { 6,7,8,5,4};
var MyQuery = from QueryA in FirstArray
from QueryB in SecondArray
where QueryA == QueryB
select new { QueryA, QueryB };
foreach(var str in MyQuery)
Console.WriteLine(str);
}
فهرست شماره پنج
محاروه شماره پنج؛ نحوه پیادهسازی یک شرط روی یک محاوره
بعضی
مواقع با محاورههایی برخورد میکنید که مجبور میشوید عملیاتی را روی چند
عنصر انجام دهید تا اطلاعات مورد نیازتان را دریافت کنید. اگر این عملیات
تکراری را به دفعات با محاورهها انجام دهید، وقت زیادی از شما گرفته
میشود. لینک به شما پیشنهاد میکند از Let برای ساخت مقادیر جدیدی که در
ادامه به کار میروند، استفاده کنید. فهرست شماره پنج نحوه به کارگیری کلمه
کلیدی Let را همراه با ترکیب دو محاوره با یکدیگر نشان میدهد. (شکل 2)
شکل 2: نحوه پیادهسازی یک شرط روی محاوره
static void Main(string[] args)
{
Int32[] ArrayA = {1,2,3,4};
Int32[] ArrayB = { 1,2,3,4};
var MyQuery =
from QueryA in ArrayA
from QueryB in ArrayB
let TheSquare = QueryA * QueryB
where TheSquare > 4
select new { QueryA, QueryB, TheSquare };
foreach(var str in MyQuery)
Console.WriteLine(str); }
فهرست شماره پنج
در شماره آینده به بررسی تکنیکهای دیگر مربوط به لینک خواهیم پرداخت.
پژوهشگران امنیتی به این دلیل نگران اطلاعات بسیار حساس هستند که فیزیک کوانتوم پیشبینی کرده است کامپیوترهای کوانتومی در مقایسه با کامپیوترهای رایج امروزی از سرعت بسیار بیشتری برخوردار هستند. آزمایشهای محدودی که در این زمینه انجام شده، نشان داده است کامپیوترهای کوانتومی این قابلیت را دارند تا رمزنگاری کلید عمومی که امروزه از سوی سامانههای کامپیوتری مورد استفاده قرار میگیرد را به سادهترین شکل ممکن شکسته و به درون ارتباطات محافظت شده وارد شود. رویکردی که امروزه حاکم است به این شکل عمل میکند که دو سامانه کامپیوتری از کلید رمزنگاری عمومی به منظور برقراری یک ارتباط خصوصی و پنهان استفاده میکنند. در رمزنگاری کلید عمومی هر دستگاه یک کپی از کلید عمومی خاص خودش را در اختیار دارد که در واقع یک تکه از اطلاعات دیجیتالی است. کامپیوتر دوم نیز کلید خصوصی خاص خود را دارد و این دو سامانه بر مبنای این کلیدها سعی میکنند اطلاعاتی را برای یکدیگر ارسال کنند. این اطلاعات زمانی که به دست طرف مقابل میرسد رمزگشایی میشود. به این شکل دو سامانه قادر هستند یک کانال ایمن را به وجود آورده و به تبادل اطلاعات بپردازند.
اما مشکل این روش این هست که همواره عامل سومی وجود دارد که میتواند این ارتباط را شکسته و به استراقسمع اطلاعات بپردازد. بدتر آنکه یک کامپیوتر کوانتومی میتواند به سرعت کلید خصوصی طرف مقابل را محاسبه کرده و پیامها را مشاهده کند. این دقیقا همان چالش آینده است که متخصصان حوزه امنیت از هم اکنون نگران آن هستند. برای حل این مشکل پژوهشگران امیدوار هستند تا از توزیع کلید کوانتومی استفاده کنند. در این روش دو سامانه کوانتومی میتوانند یک کانال ایمن را با استفاده از یک کلید غیرقابل رویت به وجود آورند. برای پیادهسازی چنین سازوکاری میتوان از جفت فوتونهای به دام افتاده که نقاط کوانتومی نامیده میشوند برای برقراری یک ارتباط کوانتومی استفاده کرد.
در همین ارتباط گروهی از پژوهشگران اتریشی دانشگاه اسنبروک راهکاری ابداع کردهاند که به آنها اجازه داده است از نقاط کوانتومی به منظور ذخیرهسازی اطلاعات استفاده کنند. این نقاط ترکیبات نیمه رسانایی هستند که عرض نانومتری دارند و به لحاظ الگوی رفتاری، مشابه با اتمهای مصنوعی هستند. شبیه به یک اتم، الکترونها در یک نقطه کوانتومی سطح مشخصی از گسست انرژی دارند. زمانی که به این نقاط انرژی داده میشود تغییر سطح میدهند. این گروه از پژوهشگران اتریشی موفق به ابداع روش تازهای شدند. اگر یک نقطه کوانتومی بتواند فوتون درستی را جذب کند، باعث پرش یک الکترون به سطح بالاتری از انرژی میشود. زمانی که این اتفاق رخ میدهد، یک شکاف باز در سطح پایینتر انرژی به وجود میآید که دانشمندان این شکاف را حفره (hole) نام نهادهاند. در این حالت الکترون انرژی اصلی خود را از دست داده و یک فوتون را نشر میدهد که این فوتون حفره موجود را پر میکند. ترکیب میانی الکترون برانگیخته شده و حفره اگزایتون exciton نامیده میشود. ترکیب دو اگزایتون و دو حفره biexciton نامیده میشود که یک جفت فوتون را نشر میدهد. برای تحریک این دو ترکیب در نقاط کوانتومی میتوان از پالسهای لیزری استفاده کرد. این پالسها به دانشمدان اجازه دادهاند تا اطلاعات روی جفت فوتونهای ساطع شده را رمزنگاری کنند. از این تکنیک برای انتقال اطلاعات در مسیرهای طولانی نیز میتوان استفاده کرد. اما ناخالصیهایی که در نقاط کوانتومی وجود دارد باعث شده است تا به دام انداختن فوتونها به سختی امکانپذیر باشد. پژوهشگران برای حل این مشکل از تکنیک تابش لیزر ثانیهای استفاده کردهاند. در این تکنیک میتوان ناخالصی سطوح الکترون را پر کرد.
اینگونه به نظر میرسد که تکنیکهایی همچون توزیع کلید کوانتومی چالش امنیتی همراه با محاسبات کوانتومی را برطرف خواهد کرد. در نتیجه این احتمال وجود دارد که در آینده نه تنها کامپیوترهای کوانتومی، بلکه خطوط ارتباطی کوانتومی ایمن را نیز در اختیار داشته باشیم.
ابزارهای کار برنامه نویسی بصورت Remote
امروزه بسیاری از پروژه های برنامه نویسی با منطق open source تولید می شوند. یکی از ویژگی های open source بودن این است که برنامه نویس ها از نقاط مختلف جغرافیایی روی پروژه کار می کنند.
یکی از مسائلی که در کار تیمی از راه دور و یا همان دورکاری پیش می آید، هماهنگی سخت بین برنامه نویسان است. فرض کنید که مدیر پروژه چگونه باید سیاست ها را تدوین و به برنامه نویسان ابلاغ کند؟ مدیر فنی چگونه Task ها را به برنامه نویسان Assign کند؟ اگر برنامه نویسی قسمت مورد نظر را نوشت چگونه در هسته ی اصلی کد بنویسد؟ و مسائل دیگری از این دست که یک تیم برنامه نویسی را با چالش های جدی روبه رو می کند.
به همین جهت می خواهیم به بررسی هفت تا از بهترین ابزارهای مشارکت جمعی در پروژه های برنامه نویسی را بررسی و خصوصیات هر کدام را ذکر کنیم:
اپلیکیشن agreedo
غالبا، جلسات اعضای تیم زمان بر و بدون ثمر هستند. چرا که افراد شرکت کننده در جلسه فراموش می کنند که دستورالعمل ها و پیشنهاداتشان را با خودشان به جلسه بیاورند، همچنین در حین جلسه معمولا نظراتی رد و بدل می شود که افراد فراموش می کنند آنها تبدیل به یک task کنند و فرد خاصی را مامور انجام آن کنند.
اپلیکیشن Agreedo این مشکلات را حل می کند. با این ابزار ایده ها تبدیل به دستورالعمل می شوند و وارد روال پروژه می شوند. همچنین هر تصمیمی که در حین پروژه گرفته شود، به فرد مورد نظر Assign می شود. تمام این task ها هم مانند task های عادی پروژه قابل پیگیری توسط مدیر پروژه هستند.
این ابزار برای سیستم عامل های Windows, Mac, iOS و Android موجود است و برای تیم های Remote یا همان تیم هایی که در آن دورکاری می کنند بسیار مفید است.
مدیریت تسک ها با wunderlist
کار با Wunderlist بسیار ساده است، به همین علت هم افراد به راحتی می توانند از آن استفاده کنند و دغدغه ی استفاده ی روزانه از آن را نداشته باشند. همانطور که می دانید پیگیری task ها مهم ترین فاکتور یک تیم سالم است، اما این دلیل نمی شود که باعث شود زمان زیادی از شما در طول روز به این خاطر گرفته شود. منطق بکار رفته در Wunderlist باعث می شود که شما زمان کمتری را به مدیریت task ها بپردازید، چرا که کار با آن بسیار ساده است.
در زیر با تعدادی از این قوانین آشنا شوید:
ارتباطات تیمی با استفاده از Skitch
خیلی سخته که مطلبی را بخواهید به کسی بفهمانید و آن فرد در مقابل شما نباشد. Skitch به شما کمک می کند که این کار را به ساده ترین شکل ممکنه انجام دهید. با کمک این ابزار می توانید یک متن کاملا نشانه گذاری شده را برای یکی دیگر از اعضای تیم بفرستید. مثلا یک متنی بنویسید که در آن از علامت های جهت، اشکال مختلف، ابزار هایلایت و … استفاده کنید.
جدا از اینکه استفاده از این ابزار بسیار ساده است، مطلب دوست داشتنی دیگر در موردش این است که به راحتی می توان اسکرین شات گرفت(command+shift+6)، متن را به سرعت ایمیل کرد (command+shift+m) و یا اینکه آن را تبدیل به فایل عکس نمود (command+e).
نرم افزار Draft دقیقا مانند github عمل می کند، اما با کمی پیچیدگی کمتر. این ابزار به شما کمک می کند که روی فایل های Markdown با افراد مختلف به طور همزمان کار کنید و در نهایت به سادگی از آن خروجی بگیرید به فرمت های PDF، HTML، DOCX و Markdown.
این ابزار بسیار مناسب است برای کار روی اسناد حقوقی و یا مقالاتی که چند نفر همزمان روی آن مشغول کار هستند. غیر از اینکه برنامه نویسان از این ابزار می توانند استفاده های زیادی بکنند، در اصل این ابزار برای استفاده های نویسندگان ابدا شده است.
اپلیکیشن dropbox
Dropbox یک سیستم مجازی ذخیره و نگه داری اطلاعات است که تقریبا همه ی ما اسم آن را شنیده ایم و با آن کار می کنیم. نکته ای که در مورد Dropbox شنیدنی است این است که اپلیکیشن های زیادی با استفاده از API می توانند به دراپ باکس متصل شوند و از امکانات آن استفاده کنند. به طور پیش فرض تا ۲ گیگابایت به صورت رایگان می توانید از فضای dropbox استفاده کنید که به ازای دعوت هر یک از دوستانتان به دراپ باکس تا ۲۵۰ مگابایت می توانید فضای رایگان خود را افزایش دهید. البته بیشتر از ۸ گیگابایت نمی توانید به این روش بدست آورید. برای داشتن فضای اضافی تر می بایست پلن های غیر رایگان را انتخاب کنید.
شایان ذکر است که Google Drive تا ۱۵ گیگابایت فضای رایگان را در اختیار کاربران قرار می دهد. البته قابلیت های این دو سیستم با یکدیگر متفاوت است و هر کدام توانایی های خاص خود را دارند.
اپلیکیشن پیام رسان حرفه ای slack
اپلیکیشن پیام رسانی Slack برای استفاده در ارتباطات تیمی فوق العادست. در واقع این نرم افزار آنقدر جنبه ی fun دارد که همه آن را دوست دارند. بسیاری از تیم های برنامه نویسی که Remote کار می کنند از این اپلیکیشن برای پیام رسانی و ارتباطشان استفاده می کنند. البته بعضی اوقات مدیر پروژه ها به این نتیجه می رسند که این ابزار بیشتر ضرر میرساند تا استفاده. من معتقدم این طرز تفکر از آنجا ناشی می شود که هر ابزاری را می توان درست یا غلط مورد استفاده قرار داد.
قابلیت فوق العاده ی Slack این است که از طریق آن می توانید سایر ابزارهای مورد استفاده در پروژه اتان را نیز کنترل کنید.
اپلیکیشن های زیر می توانند از طریق Slack کنترل شوند:
اپلیکیشن Zapier
خود من به شخصه از این اپلیکیشن استفاده های زیادی می کنم. برای من بسیار کاربردی است. در واقع در وقت یک مدیر تیم خیلی صرفه جویی می کند. اما کار این اپلیکیشن چیست؟
zapier می تواند اپلیکیشن های مورد استفاده در یک پروژه را بهم وصل کند. به عنوان مثال فرض کنید که بخشی از تیم شما از Google Drive و بخشی دیگر از Dropbox استفاده می کند. در zapier شما می توانید برای هر کاری یک zap (یک کار خاص) تعریف کنید. در این مثال شما یک zap تعریف می کنید که فایل های ذخیره شده در Google Drive را به Dropbox انتقال دهد و هر زمان هم که این کار را انجام داد، اعضای تیم را از این قضیه مطلع سازد.
بسیاری Zap (دستوالعمل) های دیگر به ذهنتان می رسد که می توانید در zapier مورد استفاده در پروژه اتان تعریف کنید و بهره ی کافی را ببرید. اپلیکیشن Zapier یک رقیب و رفیق دیگر هم دارد که آن را در لینک زیر دنبال کنید. بسیار مفید است.
همکاری از راه دور بسیار سخت است. شما هیچگاه نمی توانید تنها با استفاده از تلفن و پیامک یک تیم برنامه نویسی با آن همه حواشی را مدیریت کنید. ابزارهای ارتباط از راه دور را کامل بشناسید و در پروژه های خود استفاده کنید. هر چه بیشتر اپلیکیشن های قوی و کاربردی را در این زمینه بشناسید، پروژه اتان سریعتر جلو می رود و زودتر به نتیجه می رسید.
امروزه استفاده از ابزارهای مشارکت جمعی نه تنها یک فکر درست بلکه یک ضرورت است. اگر ابزارهای دیگری در این زمینه را می شناسید در قسمت کامنت ها آن را ذکر کنید تا سایرین هم با آن آشنا شوند.
یک سال دیگر گذشت و همانطور که همه ی ما انتظار داشتیم انفجار نوآوری، از هم گسیختگی و نابودی در پلتفرم های وب ادامه دارد و یک سیل عظیم از ابزار ها و تکنولوژی های جدید که نوید می دهند زندگی ما برنامه نویسان را ساده تر کنند.
ما در سه قسمت می خواهیم ابزارهای متنوع و جالبی را که امسال ارائه شدند به شما معرفی کنیم.
قسمت های دوم و سوم را می توانید از طریق لینک های زیر مطالعه کنید:
ابزار های front-end جالب در سال ۲۰۱۶ – قسمت دوم
ابزار های front-end جالب در سال ۲۰۱۶ – قسمت سوم
طبق معمول، آپدیت هایی را در ابزار های محبوب مانند React و Angular JS مشاهده کردیم، در حالی که ابزار های جدید مانند فریم ورک Vue.js پا به صحنه گذاشته و خیلی زود طیف زیادی از توجهات را به خود جلب کرد.
همانطور که همه ی شما می دانید به دلیل اینکه ما بر روی معرفی ابزار های جدید کار می کنیم، در حین تحقیقات خود به موارد مختلفی بر میخوریم. طبیعتا توجه بیشتری به موارد محبوب و شناخته شده می کنیم اما در عین حال موارد کمتر توجه شده ای که هم جالب و هم کاربردی هستند را نیز معرفی می کنیم. بنابراین، در این مقاله به توصیف برخی از یافته های محبوب خود در بخش ابزار های مخصوص برنامه نویسان front end می پردازیم.
همیشه اینطور به نظر میرسد که ابزارهایی که با قابلیت دسترسی پذیری ارائه می شوند خیلی در صنعت آی تی مورد اقبال قرار نگرفته اند. بنابراین اولین موردی که می خواهیم در اینجا معرفی کنیم این پلاگین Modal انعطاف پذیر و سهل الاستفاده می باشد.
پلاگین Modaal
یافتن پلاگین پنجره ی مودال کار سختی نیست اما به ندرت میتوان پلاگینی یافت که تقریبا تمام باکس ها را بر حسب کارایی و مشخصات بررسی کند. این پنجره ی مودال دقیقا همانطور که پیش بینی میشود رفتار می کند- responsive است و عملکرد های آن دقیقا بر اساس تعامل کاربری می باشد (مثلا وقتی دکمه ی ESC را بزنید، برنامه بسته می شود)، تقریبا تمام انواع محتوا را می پذیرد، دارای پشتیبانی تمام صفحه است، رویداد های callback را برای قبل و بعد باز و بسته شدن ارائه می دهد و کلی ویژگی های دیگر.
تنها مشکل Modaal این است که این ابزار در حال حاضر از jQuery به عنوان dependency استفاده می کند که با jQuery slim build به خوبی کار نمی کند. در نسخه ی ۲٫۰ نیز تست شده و انتظار می رود که با jQuery 1.11.2 وبالاتر نیز کار کند.
این وب سرویس برای موارد مختلفی به کار آید و لزوما تنها به برنامه نویسی front-end مرتبط نیست. آن را می توان اینگونه توصیف کرد: “سرویسی که به شما این امکان را می دهد که هر سایتی را به یک API با دسترسی به JSON تبدیل کنید که از سلکتور های CSS استفاده می کند”. پس Jam API ابزاری است که به شما امکان جمع کردن محتوا از وب سایت های دیگر و انتشار آن در وبسایت خودتان را می دهد (content scrape) – اما بخش CSS در واقع این ابزار را برای برنامه نویسان front end جالب توجه می سازد.
ابزار فوق العاده ی JAM API
برای استفاده از این API، باید یک درخواست POST به وبسایت Jam API ارسال کنید که حاوی URL وبسایتی باشد که می خواهید کار content scrape را بر روی آن اجرا کنید. این کد بر اساس اینکه از Node، Ruby و غیره استفاده می کنید متفاوت خواهد بود. ما مثال JavaScript را توسعه دادیم که آنها در منبع GitHub خود قرار داده اند. با استفاده از آن مثال توانستیم یک ابزار ساده برای امکان نمایش مقادیر ممکن برای هر یک از خصوصیات CSS بسازیم که از وبسایت CSS Values برداشته شده است.
البته این مثال هدف خاصی را دنبال نمی کند زیرا وبسایت CSS Values دیگر این مثال را ندارد اما این راهی ساده برای نشان دادن نحوه ی کار Jam API می باشد. بخش کلیدی JavaScript این است:
body: JSON.stringify({
url: 'http://cssvalues.com',
json_data: '{"values": "#' + prop + ' ul"}'
})
در اینجا من URL وبسایتی که می خواهم محتوای آن را scrape کنم وارد می کنم سپس از یک سلکتور CSS برای تعیین بخشی از صفحه که می خواهیم محتوا از آن برداشته شود استفاده می کنم. بنابراین اگر کاربر خصوصیت displayرا وارد کند، جاوا اسکریپت به صورت زیر محاسبه می کند:
body: JSON.stringify({ url: 'http://cssvalues.com', json_data: '{"values": "#display ul"}'})
با ایجاد سایت توسط خودم، میدانم که هر یک از بخش های خصوصیت CSS دارای یک ID می باشد که با نام آن خصوصیت منطبق است. و همچنین می دانم که هر خصوصیت، مقادیر خود را در تگ UL فهرست می کند. بنابراین اگر با ساختار HTML آشنایی داشته باشید، به دست آوردن آن مقادیر با استفاده از سرویس مفیدی مانند این، کاری ساده و پیش پا افتاده است.
قسمت های دوم و سوم را می توانید از طریق لینک های زیر مطالعه کنید:
Postcss-grid-kiss وقتی برای اولین بار با این مورد مواجه شدم، فکر کردم فقط یک شوخی است. اما همانطور که واضح است یک پلاگین واقعی PostCSS می باشد و هدف آن ساده سازی سینتکس Grid جدید W3C می باشد. طبیعتا وقتی از آرایش شبکه ای (Grid Layout) استفاده می کنید، CSS شما ظاهری شبیه به این را […]
DevTools Timeline Viewer این یک ابزار رسمی از تیم ChromeDev Tools می باشد که به شما این امکان را می دهد تا URL ها را به راحتی برای رهگیری تایم لاین DevTool های خود نمایش داده و به اشتراک گذاری کنید. تب تایم لاین در بخش DevTools مرورگر کروم به شما این امکان را می […]
از کدام مرورگر برای کارهای روزانه ی برنامه نویسی اتان استفاده می کنید؟ قطعا یا Chrome و یا Firefox و می دانم که عده ی زیادی از مرورگر کروم استفاده می کنید. البته این سوال بیشتر، از برنامه نویسان کلاینت (جاوااسکریپت) پرسیده می شود. خود من از کروم استفاده می کنم. چرا که استانداردهای وب […]
قطعا شما هم به این مشکل (دردسر) برخورده اید که در دنیای برنامه نویسی جاوا اسکریپت (کلاینت)، تکنولوژی ها به شدت در حال به روز شدن هستند و فرصت یاد گیری همه ی آنها وجود ندارد. با این حال برخی از این عناوین آنقدر مهم می شوند که نمی توان به راحتی از کنارشان […]