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

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

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

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

Hooshyar-Tavandar Common Subsidiary Unit for Research & Engineering

تکنیک‌های کاربردی استخراج داده‌ها با لینک 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); }

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

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

اتم‌های مصنوعی، آینده روشنی پیش روی دنیای امنیت قرار می‌دهند

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

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

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

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

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

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



ابزارهای کار برنامه نویسی بصورت 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 یک رقیب و رفیق دیگر هم دارد که آن را در لینک زیر دنبال کنید. بسیار مفید است.

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

حرف آخر

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

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



ابزار های front-end جالب در سال ۲۰۱۶ – قسمت اول

انتشار :۱۶ دی ۱۳۹۵


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

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

قسمت های دوم و سوم را می توانید از طریق لینک های زیر مطالعه کنید:

ابزار های front-end جالب در سال ۲۰۱۶ – قسمت دوم

ابزار های front-end جالب در سال ۲۰۱۶ – قسمت سوم

 

طبق معمول، آپدیت هایی را در ابزار های محبوب مانند React و  Angular JS مشاهده کردیم، در حالی که ابزار های جدید مانند فریم ورک Vue.js پا به صحنه گذاشته و خیلی زود طیف زیادی از توجهات را به خود جلب کرد.

همانطور که همه ی شما می دانید به دلیل اینکه ما بر روی معرفی ابزار های جدید کار می کنیم، در حین تحقیقات خود به موارد مختلفی بر میخوریم. طبیعتا توجه بیشتری به موارد محبوب و شناخته شده می کنیم اما در عین حال موارد کمتر توجه شده ای که هم جالب و هم کاربردی هستند را نیز معرفی می کنیم. بنابراین، در این مقاله به توصیف برخی از یافته های محبوب خود در بخش ابزار های مخصوص برنامه نویسان front end می پردازیم.

Modaal

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

پلاگین Modaal

پلاگین Modaal

یافتن پلاگین پنجره ی مودال کار سختی نیست اما به ندرت میتوان پلاگینی یافت که تقریبا تمام باکس ها را بر حسب کارایی و مشخصات بررسی کند. این پنجره ی مودال دقیقا همانطور که پیش بینی میشود رفتار می کند- responsive است و عملکرد های آن دقیقا بر اساس تعامل کاربری می باشد (مثلا وقتی دکمه ی ESC را بزنید، برنامه بسته می شود)، تقریبا تمام انواع محتوا را می پذیرد، دارای پشتیبانی تمام صفحه است، رویداد های callback را برای قبل و بعد باز و بسته شدن ارائه می دهد و کلی ویژگی های دیگر.

تنها مشکل Modaal این است که این ابزار در حال حاضر از jQuery به عنوان dependency استفاده می کند که با jQuery slim build به خوبی کار نمی کند. در نسخه ی ۲٫۰ نیز تست شده و انتظار می رود که با jQuery 1.11.2 وبالاتر نیز کار کند.

Jam API

این وب سرویس برای موارد مختلفی به کار آید و لزوما تنها به برنامه نویسی front-end مرتبط نیست. آن را می توان اینگونه توصیف کرد: “سرویسی که به شما این امکان را می دهد که هر سایتی را به یک API با دسترسی به JSON تبدیل کنید که از سلکتور های CSS استفاده می کند”. پس Jam API ابزاری است که به شما امکان جمع کردن محتوا از وب سایت های دیگر و انتشار آن در وبسایت خودتان را می دهد (content scrape) – اما بخش CSS در واقع این ابزار را برای برنامه نویسان front end جالب توجه می سازد.

ابزار فوق العاده ی JAM API

ابزار فوق العاده ی 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 آشنایی داشته باشید، به دست آوردن آن مقادیر با استفاده از سرویس مفیدی مانند این، کاری ساده و پیش پا افتاده است.

 

قسمت های دوم و سوم را می توانید از طریق لینک های زیر مطالعه کنید:

ابزار های front-end جالب در سال ۲۰۱۶ – قسمت دوم

ابزار های front-end جالب در سال ۲۰۱۶ – قسمت سوم

Ajax DevTools Timeline Viewer jQuery Postcss-grid-kiss آژاکس آموزش فریم ورک جاوااسکریپت ابزار Notification Logger اپلیکیشن ایمیل ساز MJML پلاگین Modaal جاوااسکریپت طراحی responsive فریم ورک jquery فریم ورک جاوا اسکریپت فریم ورک چیست کتابخانه ی Intercooler.js
مطالب مرتبط

Postcss-grid-kiss وقتی برای اولین بار با این مورد مواجه شدم، فکر کردم فقط یک شوخی است. اما همانطور که واضح است یک پلاگین واقعی PostCSS می باشد و هدف آن ساده سازی سینتکس Grid جدید W3C می باشد. طبیعتا وقتی از آرایش شبکه ای (Grid Layout) استفاده می کنید، CSS شما ظاهری شبیه به این را […]

DevTools Timeline Viewer این یک ابزار رسمی از تیم ChromeDev Tools می باشد که به شما این امکان را می دهد تا URL ها را به راحتی برای رهگیری تایم لاین DevTool های خود نمایش داده و به اشتراک گذاری کنید. تب تایم لاین در بخش DevTools مرورگر کروم به شما این امکان را می […]

از کدام مرورگر برای کارهای روزانه ی برنامه نویسی اتان استفاده می کنید؟ قطعا یا Chrome و یا Firefox و می دانم که عده ی زیادی از مرورگر کروم استفاده می کنید. البته این سوال بیشتر، از برنامه نویسان کلاینت (جاوااسکریپت) پرسیده می شود. خود من از کروم استفاده می کنم. چرا که استانداردهای وب […]

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


نشانه هایی که حکایت از هک شدن کامپیوتر دارند


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

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

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

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

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

این می‌تواند وسوسه انگیز باشد که شما برنامه‌هایی که همیشه می‌خواستید را اتفاقی در کامپیوتر خود پیدا کنید؛ به خصوص اگر آن‌ها تازه، جدید و یا گران قیمت باشند. بنابراین به خاطر داشته باشید که برنامه‌هایی را بر روی کامپیوتر خود نصب کرده‌اید و مواظب هر چیز مشکوکی که می‌بینید باشید.

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

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

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

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

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

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

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

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

معاملات مالی جعلی!
 
این می‌تواند بسیار خطرناک باشد. اگر متوجه تحرکات مالی (هرچند کم) در حساب‌های بانکی خود شدید، این می‌تواند نشانه‌ای برای دزدیده شدن اطلاعات بانکی شما باشد.