واحد مشترک کمکی پژوهش و مهندسی «هوش یار-تواندار»     (HT-CSURE)

واحد مشترک کمکی پژوهش و مهندسی «هوش یار-تواندار» (HT-CSURE)

Hooshyar-Tavandar Common Subsidiary Unit for Research & Engineering
واحد مشترک کمکی پژوهش و مهندسی «هوش یار-تواندار»     (HT-CSURE)

واحد مشترک کمکی پژوهش و مهندسی «هوش یار-تواندار» (HT-CSURE)

Hooshyar-Tavandar Common Subsidiary Unit for Research & Engineering

جاوا-اسکریپت زبان برنامه‌نویسی با بیشترین جوینده کار

رایورز - برای چندمین سال پیاپی کارشناسان و متخصصان این زبان برنامه‌نویسی بیشترین درخواست را برای پیدا کردن شغل جدید داشته‌اند.


با اینکه پلتفرم‌های گوناگونی برای تولید و توسعه نرم‌افزار وجود دارد، اما برخی از زبان‌ها به دلیل جایگاه ویژه‌ای که نزد توسعه‌دهندگان یافته‌اند، همچنان جایگاه خود را پس از گذشت سال‌ها نگه داشته‌اند.

جاوا-اسکریپت همچنان محبوب‌ترین زبان برنامه‌نویسی برای کارشناسان نرم‌افزار محسوب می‌شود. این خبر را مرکز Stack Overflow به تازگی در گزارش «چشم‌انداز توسعه‌دهندگان نرم‌افزاری ۲۰۱۷» خود منتشر کرده است.

به گزارش اینکوئیرر، این پلتفرم علاوه بر محبوبیت زیادی که نزد برنامه‌نویسان دارد، یکی از پرطرفدارترین زبان‌های برنامه‌نویسی برای صاحبان کسب و کارها و نیز توسعه‌دهندگان نیز محسوب می‌شود.

نکته جالب توجه اینکه اکنون برای چندمین سال پیاپی است که کارشناسان و متخصصان این زبان برنامه‌نویسی بیشترین درخواست را برای پیدا کردن شغل جدید داشته‌اند تا بتوانند جایگاهی درآمدزا برای خود دست و پا کنند.

 

 

گفتنی است برخی دیگر از زبان‌های برنامه‌نویسی از جمله #C، Python، جاوا، PHP، ++C و C نیز در خانواده پلتفرم‌های محبوب برنامه‌نویسی طبقه‌بندی می‌شوند، ضمن اینکه کارشناسان مسلط بر SQL نیز میانگین حقوق بالایی نسبت به دیگر متخصصان نرم‌افزاری دارند.

مطابق این گزارش، لیست زبان‌های برنامه‌نویسی با بیشترین میزان استفاده و متناسب با محبوبیتشان، به قرار زیر منتشر شده است:

- جاوا-اسکریپت: ۶۵.۳ درصد

- SQL: ۵۴.۵ درصد

- C#     : ۴۰.۳ درصد

- Python: ۳۰.۹ درصد

- جاوا: ۲۹.۲ درصد

- PHP: ۲۵.۶ درصد

- C++    : ۱۶.۵ درصد

- C: ۱۳.۱ درصد

آسانژ: کدهای سایبری مورد استفاده سیا را در اختیار شرکت‌های الکترونیکی می‌گذاریم

جولیان آسانژ گفت، با انتشار سندهای محرمانه جاسوسی الکترونیکی آژانس اطلاعات مرکزی آمریکا(سیا) به دنبال بزرگترین افشاگری خود علیه این سازمان بوده و قصد دارد تکنیک‌های مورد استفاده هکرهای سیا را در اختیار شرکت‌های فن‌آوری قرار دهد.

به گزارش ایسنا، به نقل از خبرگزاری فرانسه، جولیان آسانژ، بنیانگذار وبسایت افشاگر ویکی‌لیکس که در حال حاضر در سفارت اکوادور در شهر لندن پناهنده شده در اظهاراتی که از طریق کنفرانس اینترنتی مطرح کرد گفت: سازمان اطلاعات مرکزی آمریکا (سیا) کنترل کل زرادخانه سایبری خود را از دست داده است. وی ادامه داد: این که این سازمان اقدام به ایجاد یک چنین زرادخانه‌ای و بعد ذخیره آن در یک جا کرده و نتوانسته امنیت آن را حفظ کند یک بی‌کفایتی تاریخی و ویرانگر برای سیا محسوب می‌شود.

آسانژ در حالی این اظهارات را مطرح کرده که دو روز پیش ویکی‌لیکس بالغ بر 7818 صفحه سند را تحت عنوان بزرگترین افشاگری علیه سازمان سیا منتشر کرد.

آسانژ گفت، دلیلش برای این که کدهای مورد استفاده هکرهای سیا را تاکنون منتشر نکرده این بوده که نخواسته خبرنگاران، مردم جهان و منابعش با استفاده از این سلاح‌ها هک شوند.

او تاکید کرد، قصد دارد در درجه اول این کدها و اطلاعات را در اختیار شرکت‌هایی نظیر اپل، گوگل و سامسونگ قرار دهد تا آنها آسیب پذیری محصولاتشان را در برابر اقدامات هکری سیا برطرف کنند.

آسانژ گفت: ما تصمیم گرفتیم با تولید کنندگان محصولات الکترونیکی همکاری کنیم و به آنها دسترسی انحصاری به اطلاعات تکنولوژیکی که داریم را بدهیم تا آنها به ترمیم آسیب پذیری‌ها بپردازند. به مجرد این که این سلاح های هکری عملا توسط ما خنثی شوند ما اطلاعات بیشتر را منتشر خواهیم کرد.

آسانژ اظهار نکرد که چه زمان کدهای هکری سیا به شرکتها تحویل داده خواهند شد.
منبع: ایسنا

ویندوز کلود، سیستم عامل جدید مایکروسافت در پاسخ به کروم او.اس

رایورز - آنچه دست کم در باره سیستم عامل تازه‌وارد مایکروسافت می‌دانیم، این است که تنها قادر به اجرای اپلیکیشن‌های یونیورسال است که در ویندوز استور قرار دارند.

استراتژی شرکت مایکروسافت تا امروز برای رویارویی با کروم‌بوک‌ها، راهبرد ساده‌ای مبنی بر ساخت لپ‌تاپ‌های ویندوزی مقرون ‌به‌صرفه بوده است، به گونه‌ای که بتوانند مزیت رقابتی کروم‌بوک‌ها را که همان قیمت کم آنهاست، خنثی سازد و دست بالا را در این بازار داشته باشد. به نظر می‌رسد که مایکروسافت به فکر گسترش این راهبرد به بخش سیستم عامل خود نیز افتاده است.

به تازگی وب‌سایت‌های Windows Blog Italia و Thurrott سیستم عامل "ویندوز کلود" را مورد بررسی قرار داده‌اند. به نظر می‌رسد ویندوز کلود را می‌توان چرخشی در ویندوز ۱۰ دانست که با هدف رقابت با کروم او.اس.اس شرکت گوگل ظهور کرده است.

عملکرد این سیستم عامل بسیار شبیه به ویندوز ۱۰ است و شاید برجسته‌ترین ویژگی آن را بتوان این نکته دانست که در واقع تنها اپلیکیشن‌های معمولی ویندوز بر روی آن قابل اجرا هستند.

به گزارش انگجت، در حال حاضر اطلاعات زیادی از این سیستم عامل تازه‌وارد مایکروسافت در دست نیست، اما آنچه دست کم در باره آن مطمئنیم، این است که تنها قادر به اجرای اپلیکیشن‌های یونیورسال (یعنی برنامه‌هایی که با کمک پلتفرم UWP نوشته شده‌اند و قابلیت اجرا بر روی تمامی دستگاه‌های ویندوزی اعم از لپ‌تاپ، تبلت و اسمارتفون را دارند) است که در ویندوز استور قرار دارند.

 

 

کارشناسان این سایت‌ها معتقدند ویندوز کلود از لحاظ بصری هیچ گونه تفاوت عمده‌ای با ویندوز ۱۰ ندارد و احتمالاً برای استفاده در مدارس و مؤسساتی مناسب خواهد بود که فقدان اپلیکیشن‌های بومی (Native Apps) در کروم او.اس به دلیل مسائل امنیتی را حس می‌کردند.

از سوی دیگر معلمان احتمالاً بیشتر مایل به استفاده از PC های ویندوزی هستند، چرا که مطمئنند سیستم آنها تحت تأثیر بدافزازها یا برنامه‌ها و بازی‌های تأیید نشده قرار نخواهد گرفت.

گفته می‌شود احتمال دارد شرکت مایکروسافت، فروشگاه نرم‌افزاری جدیدی موسوم به Centennial (که امکان بارگذاری اپلیکیشن‌های ۳۲ بیتی در ویندوز استور را فراهم می‌کند) را نیز در نظر بگیرد. البته هنوز در مورد جزئیات و نیز سازگاری آن به دلیل وجود گزارش‌هایی متناقض، تردیدهایی وجود دارد.

شایان ذکر است با وجود اخباری که به تازگی در باره سیستم عامل جدید غول نرم‌افزاری جهان به رسانه‌ها درز کرده، هنوز اطلاعات دقیقی در خصوص زمان عرضه ویندوز کلود وجود ندارد، اما به احتمال زیاد به زودی (در بهار ۲۰۱۷) شاهد عرضه آن خواهیم بود.

تکنیک‌های کاربردی استخراج داده‌ها با لینک LINQ (بخش اول)

دسترسی به منابع داده‌ای با LINQ
تکنیک‌های کاربردی استخراج داده‌ها با لینک (بخش اول)
لینک LINQ، سرنام Language-Integrated Query، از جمله راهکارهای مؤثر در دسترسی به داده‌ها است. امروزه، رقابت اصلی میان تولیدکنندگان ابزارهای برنامه‌نویسی بر سر دسترسی سریع و آسان به منابع داده‌ای است. لینک چارچوب مستحکمی را به وجود می‌آورد که دسترسی به اطلاعات ذخیره‌شده روی طیف گسترده‌ای از منابع داده‌ای را امکان‌پذیر می‌کند و همانند پلی برای برقراری ارتباط میان اشیا برنامه‌نویسی و داده‌ها استفاده می‌شود.

پیش از ظهور لینک، محاوره‌ها با رشته‌های ساده‌ای که در یک برنامه کاربردی ساخته می‌شدند و حتی فاقد ویژگی 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); }

فهرست شماره پنج

در شماره آینده به بررسی تکنیک‌های دیگر مربوط به لینک خواهیم پرداخت.

هفت ابزار عالی برای کار تیمی و برنامه نویسی از راه دور



ابزارهای کار برنامه نویسی بصورت Remote

ابزارهای کار برنامه نویسی بصورت Remote

امروزه بسیاری از پروژه های برنامه نویسی با منطق open source تولید می شوند. یکی از ویژگی های open source بودن این است که برنامه نویس ها از نقاط مختلف جغرافیایی روی پروژه کار می کنند.

یکی از مسائلی که در کار تیمی از راه دور و یا همان دورکاری پیش می آید، هماهنگی سخت بین برنامه نویسان است. فرض کنید که مدیر پروژه چگونه باید سیاست ها را تدوین و به برنامه نویسان ابلاغ کند؟ مدیر فنی چگونه Task ها را به برنامه نویسان Assign کند؟ اگر برنامه نویسی قسمت مورد نظر را نوشت چگونه در هسته ی اصلی کد بنویسد؟ و مسائل دیگری از این دست که یک تیم برنامه نویسی را با چالش های جدی روبه رو می کند.

به همین جهت می خواهیم به بررسی هفت تا از بهترین ابزارهای مشارکت جمعی در پروژه های برنامه نویسی را بررسی و خصوصیات هر کدام را ذکر کنیم:

الف) اپلیکیشن Agreedo

اپلیکیشن agreedo

اپلیکیشن agreedo

غالبا، جلسات اعضای تیم زمان بر و بدون ثمر هستند. چرا که افراد شرکت کننده در جلسه فراموش می کنند که دستورالعمل ها و پیشنهاداتشان را با خودشان به جلسه بیاورند، همچنین در حین جلسه معمولا نظراتی رد و بدل می شود که افراد فراموش می کنند آنها تبدیل به یک task کنند و فرد خاصی را مامور انجام آن کنند.

اپلیکیشن Agreedo این مشکلات را حل می کند. با این ابزار ایده ها تبدیل به دستورالعمل می شوند و وارد روال پروژه می شوند. همچنین هر تصمیمی که در حین پروژه گرفته شود، به فرد مورد نظر Assign می شود. تمام این task ها هم مانند task های عادی پروژه قابل پیگیری توسط مدیر پروژه هستند.

این ابزار برای سیستم عامل های Windows, Mac, iOS و Android موجود است و برای تیم های Remote یا همان تیم هایی که در آن دورکاری می کنند بسیار مفید است.

ب) Wunderlist یک اپلیکیشن حرفه ای برای مدیریت Task ها

مدیریت تسک ها با wunderlist

مدیریت تسک ها با wunderlist

کار با Wunderlist بسیار ساده است، به همین علت هم افراد به راحتی می توانند از آن استفاده کنند و دغدغه ی استفاده ی روزانه از آن را نداشته باشند. همانطور که می دانید پیگیری task ها مهم ترین فاکتور یک تیم سالم است، اما این دلیل نمی شود که باعث شود زمان زیادی از شما در طول روز به این خاطر گرفته شود. منطق بکار رفته در Wunderlist باعث می شود که شما زمان کمتری را به مدیریت task ها بپردازید، چرا که کار با آن بسیار ساده است.

در زیر با تعدادی از این قوانین آشنا شوید:

  • Task های ستاره دار، task هایی هستند که  برای شما چالش برانگیزند.
  • قابلیت مرتب سازی task ها بر اساس اولویت و درجه اهمیت آنها.
  • قابلیت شکستن یک task به چند subtask.
  • قابلیت assign کردن یک task به فردی خاص در پروژه.
  • قابلیت فیلتر کردن لیست task های assign شده به من بر اساس فاکتور های “task های امروز” و “task های کلی من”.
  • قابلیت هماهنگی با نرم افزار Slack جهت بهبود چت و تماس با افراد تیم.

ج) اپلیکیشن Skitch جهت یادداشت گذاری حرفه ای

ارتباطات تیمی با استفاده از Skitch

ارتباطات تیمی با استفاده از Skitch

خیلی سخته که مطلبی را بخواهید به کسی بفهمانید و آن فرد در مقابل شما نباشد. Skitch به شما کمک می کند که این کار را به ساده ترین شکل ممکنه انجام دهید. با کمک این ابزار می توانید یک متن کاملا نشانه گذاری شده را برای یکی دیگر از اعضای تیم بفرستید. مثلا یک متنی بنویسید که در آن از علامت های جهت، اشکال مختلف، ابزار هایلایت و … استفاده کنید.

جدا از اینکه استفاده از این ابزار بسیار ساده است، مطلب دوست داشتنی دیگر در موردش این است که به راحتی می توان اسکرین شات گرفت(command+shift+6)، متن را به سرعت ایمیل کرد (command+shift+m) و یا اینکه آن را تبدیل به فایل عکس نمود (command+e).

د) اپلیکیشن Draft جهت کار تیمی روی اسناد حقوقی و داکیومنت ها

نرم افزار Draft دقیقا مانند github عمل می کند، اما با کمی پیچیدگی کمتر. این ابزار به شما کمک می کند که روی فایل های Markdown با افراد مختلف به طور همزمان کار کنید و در نهایت به سادگی از آن خروجی بگیرید به فرمت های PDF، HTML، DOCX و Markdown.

این ابزار بسیار مناسب است برای کار روی اسناد حقوقی و یا مقالاتی که چند نفر همزمان روی آن مشغول کار هستند. غیر از اینکه برنامه نویسان از این ابزار می توانند استفاده های زیادی بکنند، در اصل این ابزار برای استفاده های نویسندگان ابدا شده است.

ه) اپلیکیشن Dropbox برای اشتراک گذاری فایل ها

اپلیکیشن dropbox

اپلیکیشن dropbox

Dropbox یک سیستم مجازی ذخیره و نگه داری اطلاعات است که تقریبا همه ی ما اسم آن را شنیده ایم و با آن کار می کنیم. نکته ای که در مورد Dropbox شنیدنی است این است که اپلیکیشن های زیادی با استفاده از API می توانند به دراپ باکس متصل شوند و از امکانات آن استفاده کنند. به طور پیش فرض تا ۲ گیگابایت به صورت رایگان می توانید از فضای dropbox استفاده کنید که به ازای دعوت هر یک از دوستانتان به دراپ باکس تا ۲۵۰ مگابایت می توانید فضای رایگان خود را افزایش دهید. البته بیشتر از ۸ گیگابایت نمی توانید به این روش بدست آورید. برای داشتن فضای اضافی تر می بایست پلن های غیر رایگان را انتخاب کنید.

شایان ذکر است که Google Drive تا ۱۵ گیگابایت فضای رایگان را در اختیار کاربران قرار می دهد. البته قابلیت های این دو سیستم با یکدیگر متفاوت است و هر کدام توانایی های خاص خود را دارند.

و ) اپلیکیشن slack جهت ارتباطات تیمی

اپلیکیشن پیام رسان حرفه ای slack

اپلیکیشن پیام رسان حرفه ای slack

اپلیکیشن پیام رسانی Slack برای استفاده در ارتباطات تیمی فوق العادست. در واقع این نرم افزار آنقدر جنبه ی fun دارد که همه آن را دوست دارند. بسیاری از تیم های برنامه نویسی که Remote کار می کنند از این اپلیکیشن برای پیام رسانی و ارتباطشان استفاده می کنند. البته بعضی اوقات مدیر پروژه ها به این نتیجه می رسند که این ابزار بیشتر ضرر میرساند تا استفاده. من معتقدم این طرز تفکر از آنجا ناشی می شود که هر ابزاری را می توان درست یا غلط مورد استفاده قرار داد.

قابلیت فوق العاده ی Slack این است که از طریق آن می توانید سایر ابزارهای مورد استفاده در پروژه اتان را نیز کنترل کنید.

اپلیکیشن های زیر می توانند از طریق Slack کنترل شوند:

  • مدیریت task های اپلیکیشن های Wunderlist، Trello، Asana و یا JIRA
  • سیستم پاداش و تشویق کارمندان با استفاده از اپلیکیشن Bonusly و یا Leo Slackbot
  • کنترل به اشتراک گذاری صفحه نمایش با استفاده از Screenhero
  • همکاری روی طراحی ها در نرم افزار های InVision،  Zeplin، UXPin
  • مدیریت طوفان فکری در اپلیکیشن Sketchboard
  • و بسیاری موارد دیگر

ز) اپلیکیشن خیلی کاربردی Zapier برای اتومات سازی و هماهنگی با اپ های دیگر تیم

اپلیکیشن Zapier

اپلیکیشن Zapier

خود من به شخصه از این اپلیکیشن استفاده های زیادی می کنم. برای من بسیار کاربردی است. در واقع در وقت یک مدیر تیم خیلی صرفه جویی می کند. اما کار این اپلیکیشن چیست؟

zapier می تواند اپلیکیشن های مورد استفاده در یک پروژه را بهم وصل کند. به عنوان مثال فرض کنید که بخشی از تیم شما از Google Drive و بخشی دیگر از Dropbox استفاده می کند. در zapier شما می توانید برای هر کاری یک zap (یک کار خاص) تعریف کنید. در این مثال شما یک zap تعریف می کنید که فایل های ذخیره شده در Google Drive را به Dropbox انتقال دهد و هر زمان هم که این کار را انجام داد، اعضای تیم را از این قضیه مطلع سازد.

بسیاری Zap (دستوالعمل) های دیگر به ذهنتان می رسد که می توانید در zapier مورد استفاده در پروژه اتان تعریف کنید و بهره ی کافی را ببرید. اپلیکیشن Zapier یک رقیب و رفیق دیگر هم دارد که آن را در لینک زیر دنبال کنید. بسیار مفید است.

با این وبسایت عجیب دنیا را بهم بچسبانید!!!

حرف آخر

همکاری از راه دور بسیار سخت است. شما هیچگاه نمی توانید تنها با استفاده از تلفن و پیامک یک تیم برنامه نویسی با آن همه حواشی را مدیریت کنید. ابزارهای ارتباط از راه دور را کامل بشناسید و در پروژه های خود استفاده کنید. هر چه بیشتر اپلیکیشن های قوی و کاربردی را در این زمینه بشناسید، پروژه اتان سریعتر جلو می رود و زودتر به نتیجه می رسید.

امروزه استفاده از ابزارهای مشارکت جمعی نه تنها یک فکر درست بلکه یک ضرورت است. اگر ابزارهای دیگری در این زمینه را می شناسید در قسمت کامنت ها آن را ذکر کنید تا سایرین هم با آن آشنا شوند.