نویسنده: حمید حق دوست

  • نحوه ی استفاده از بوت استرپ در انگولار

    همونطور که انگولار یه فریمورک خوب برای جاوا اسکریپت حساب میشه، بوت استرپ ها یه فریمورک خوب و کار آمد هست که هم کار CSS و هم کار جاوا اسکریپت رو تا حدودی راحت کنه، ولی استفاده از ویژگی های JQuery در انگولار اصلا توصیه نمیشه، چون که انگولار کارایی که JQuery انجام میده رو به روش بهتر هندل میکنه پس ما تمام حرف هامون در رابطه با موارد CSS در بوت استرپ هست نه js. همچنین برای زیبایی کار fontawesome هم به کار خواهیم برد. برای نصب بوت استرپ و fontawesome از دستور زیر استفاده کنید:

    npm install bootstrap font-awesome

    اگه مراحل نصب به خوبی پیش رفتند میتونیم الان ازشون استفاده کنیم. در فایل src/styles.css میتونیم استایل های سراسری رو ایمپورت کنیم، چون ما به این دو تا بصورت سراسری میخایم دسترسی داشته باشیم اونها رو توی این فایل ایمپورت میکنیم:

    @import "~bootstrap/dist/css/bootstrap.css";
    @import "~font-awesome/css/font-awesome.css";

    به همین راحتی تونستیم بوت استرپ و فونت آوسام رو به پروژه انگولارمون اضافه کنیم…

    ساخت طرح کلی برنامه انگولار با بوت استرپ

    خب حالا میخایم یه طرح کلی برای صفحه هامون در انگولار طراحی کنیم، یک ماژول بصورت زیر ایجاد میکنیم:

    ng generate module ui --module app.module

    بعد میتونیم کامپوننت هایی که لازم داریم رو اضافه کنیم، فرض کنید به سه کامپوننت هدر فوتر و دربرگیرنده نیاز داریم :

    ng generate component ui/layout
    ng generate component ui/header
    ng generate component ui/footer

    فایل src/app/ui/layout/layout.component.html رو به صورت زیر ادیت کنید که دو تا کامپوننت هدر و فوتر توی اون باشه:

    <app-header></app-header>
    <div class="container">
      <ng-content></ng-content>
    </div>
    <app-footer></app-footer>

    و ماژولی که ساختیم رو بصورت زیر اصلاح کنید:

    import { NgModule } from '@angular/core';
    import { CommonModule } from '@angular/common';
    import { LayoutComponent } from './layout/layout.component';
    import { HeaderComponent } from './header/header.component';
    import { FooterComponent } from './footer/footer.component';
    
    @NgModule({
      imports: [
        CommonModule
      ],
      declarations: [LayoutComponent, HeaderComponent, FooterComponent],
      exports: [LayoutComponent]
    })
    export class UiModule { }

    حالا میتونید فایل src/app/app.component.html رو اصلاح کرده و در واقع قسمت اصلی که بدنه صفحه هست رو بهش اضافه کنید.

    <app-layout>
      <div class="jumbotron">
        <h1>Angular CLI v6 + Bootstrap & FontAwesome</h1>
        <p>
          In this tutorial you learn how to use Angular CLI v6 with Bootstrap and FontAwesome!
        </p>
      </div>
    </app-layout>

    و فایل src/app/ui/header/header.component.html رو بصورت زیر اصلاح کنید:

    <nav class="navbar navbar-dark bg-dark mb-5">
      <a class="navbar-brand" href="/">Angular & Bootstrap</a>
      <div class="navbar-expand mr-auto">
        <div class="navbar-nav">
          <a class="nav-item nav-link active" href="#">Home</a>
          <a class="nav-item nav-link" href="#">About</a>
          <a class="nav-item nav-link" href="#">Contact</a>
        </div>
      </div>
      <div class="navbar-expand ml-auto navbar-nav">
        <div class="navbar-nav">
          <a class="nav-item nav-link" href="https://github.com/tuytoosh" target="_blank">
            <i class="fa fa-github"></i>
          </a>
          <a class="nav-item nav-link" href="https://twitter.com/tuytoosh" target="_blank">
            <i class="fa fa-twitter"></i>
          </a>
        </div>
      </div>
    </nav>

    و نهایتا src/app/ui/header/header.component.html رو بصورت زیر اصلاح کنید:

    <nav class="navbar navbar-dark bg-dark mt-5 fixed-bottom">
      <div class="navbar-expand m-auto navbar-text">
        Made with <i class="fa fa-heart"></i> by <a href="http://haamid.ir">Hamid</a>
      </div>
    </nav>

    حالا اگه پروژه رو سرو کنید باید یچیزی مثل اسکرین شات بالا رو ببینید، موفق باشید

  • ارسال داده از کامپوننت به قالب در انگولار – Data Binding

    در ادامه پست های انگولار، امروز میخوام به انتقال مقادیر از logic به view بپردازم. یعنی میخام یه داده رو از کامپوننت به قالب بفرستم. برای این کار از دو روش string interpolation و property binding میتونیم استفاده کنیم که جداگانه در ادامه به اونها خواهم پرداخت.

    string interpolation در انگولار
    string interpolation در انگولار

    ارسال داده از class به template با استفاده از string interpolation در انگولار به این صورت هست که شما مقدار property موجود در کلاس رو میتونید بصورت رشته درون قالب نمایش بدید. مثلا اگه کلاس کامپوننت بصورت زیر تعریف شده باشه و my_name  یک پراپرتی از این کامپوننت باشه،

    import { Component } from '@angular/core';
    
    @Component({
      selector: 'app-root',
      templateUrl: './app.component.html',
      styleUrls: ['./app.component.css']
    })
    
    export class AppComponent {
      my_name = 'Hamid Haghdoost';
    }
    
    

    شما میتونید مثلا بصورت زیر به این پراپرتی درون قالب دسترسی داشته باشید

    <p>my name is {{ my_name }}</p>

    که اگه ng serve کنید خروجی بصورت زیر خواهد بود

    my name is Hamid Haghdoost

    property binding در انگولار

    string interpolation در واقع نوع خاصی از property binding است که در آن نوع پراپرتی string است. یعنی شما نمیتونید مثلا مقدار boolean رو از این طریق به قالب ارسال کنید. برای این کار از property binding استفاده میکنیم. یعنی میتونیم مقدار پراپرتی رو به attribute های html و… بچسبونیم.

    one way binding در angular
    one way binding در انگولار

    برای اینکه بیشتر متوجه موضوع بشید با مثال پیش میریم.

    import { Component } from '@angular/core';
    
    @Component({
      selector: 'app-root',
      templateUrl: './app.component.html',
      styleUrls: ['./app.component.css']
    })
    
    export class AppComponent {
      isDisabled: boolean = false;
    }
    
    

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

    <button [disabled]="isDisabled">Try Me</button>

    توجه کنید که برای بایند کردن مقدار بولین نمیتونستیم بصورت زیر عمل کنیم و حتما باید از روش دوم استفاده کنیم

    <button disabled="{{ isDisabled }}">Try Me</button>

    امیدوارم حرفام به دردتون خورده باشه 🙂

  • کامپوننت ها در انگولار و نحوه ساخت آنها

    کامپوننت ها در انگولار و نحوه ساخت آنها

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

    کامپوننت ها بخش های تقریبا مستقل از هم هستند و میتونن با ارسال داده به همدیگه با هم تعامل داشته باشن که حالا در پست های بعدی در مورد نحوه این تعامل بیشتر صحبت خواهیم کرد. برنامه انگولار شما بصورت پیشفرض دارای یک کامپوننت به نام app هست که در ابتدای ران شدن برنامه این کامپوننت لود میشه که البته میتونید به انگولار بگید که کامپوننت دیگه ای رو لود کنه. با قرار دادن انتخابگر کامپوننت های دیگه توی این کامپوننت کامپوننت های دیگه توی این کامپوننت لود میشن.

    ساخت کامپوننت در angular

    برای ساخت اولین کامپوننت خودتون میتونید از cli کمک بگیرید و دستور زیر رو اجرا کنید.

    ng generate component MyFirstComponent

    با اجرای این دستور در دایرکتوری src/app یک دایرکتوری جدید با اسم my-first-component مربوط به این کامپوننت ساخته میشه که چهار تا فایل داخل اون وجود داره.

    شمای کلی یک کامپوننت در انگولار
    • my-first-component.component.css  : استایل های مربوط به کامپوننت درون این فایل نوشته میشه.
    • my-first-component.component.html  : قالب html کامپوننت هست
    • my-first-component.component.spec.ts  : فایل مربوط به تست برنامه هست که در ادامه بحث هامون بهش خواهیم پرداخت بیشتر
    • my-first-component.component.ts  : فایل اصلی کامپوننت که درون اون کلاس تایپ اسکریپت مربوطه نوشته میشه

    محتوای کلاس کامپوننت رو در زیر میبینید

    import { Component, OnInit } from '@angular/core';
    
    @Component({
      selector: 'app-my-first-component',
      templateUrl: './my-first-component.component.html',
      styleUrls: ['./my-first-component.component.css']
    })
    export class MyFirstComponentComponent implements OnInit {
    
      constructor() { }
    
      ngOnInit() {
      }
    
    }
    

    خط ۳ تا ۷ مربوط یه decorator کلاس هست که اولا میگه این کلاس یک کلاس معمولی نیست و یک کامپوننته و ثانیا مشخص میکنه که تگ انتخاب کننده، آدرس قالب و استایل این کامپوننت چی هست. کلاس های تایپ اسکریپت مثل همه زبون ها میتونن property و method های خودشونو داشته باشن. مثلا شما با تعریف یک پراپرتی در کلاس میتونید توی قالب که همون فایل html بود بهش دسترسی داشته باشید.

    مثلا خط زیر رو توی کلاس بنویسید

    test = 'my test is here';

    و محتوای فایل my-first-component.component.html رو پاک کنید و این رو بنویسید {{ test }} . میبینید که این مقدار درون قالب نمایش داده میشه. البته به شرطی که سلکتور اونو توی فایل app.component.html قرار داده باشید.

    <app-my-first-component></app-my-first-component>

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

    موفق باشید 🙂

  • اولین برنامه با انگولار

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

    برای شروع کار با انگولار باید از ابزار خط فرمان انگولار استفاده کنید و برای نصب اون باید node روی سیستمتون نصب باشه. برای نصب node آخرین ورژن نود رو از لینک زیر دانلود کنید و نصب کنید : https://nodejs.org/en/download/

    شما با ابزار خط فرمان انگولار میتونید برنامه های انگولار رو توی محیط خط فرمان تولید کنید و مدیریت و بیلد کنید، کد زیر رو توی cmd یا terminal یا هر چیز دیگه ای تایپ کنید تا Angular Cli نصب بشه

    npm install -g @angular/cli

    الان شما ابزار لازم برای شروع کار با انگولار رو دارید. برای نصب انگولار دستور زیر رو ران کنید

    ng new my-app

    بعد از اتمام کار دستور انگولار برای شما نصب شده و میتونید کارتون رو انجام بدید. برای اینکه مطمئن بشید cd کنید توی دایرکتوری و دستور serve رو برای سرو شدن برنامه بزنید

    cd my-app
    ng serve --open

    الان برنامه روی آدرس http://localhost:4200  در حال اجراست و میتونید با مرورگر بهش دسترسی پیدا کنید.

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

    برای شروع میتونید از ادیتور phpstorm یا webstorm استفاده کنید که یک ابزار خیلی قوی برای کار با انگولار داره…

    در روزهای بعد سعی میکنم مفاهیم پایه ای انگولار رو شروع کنم

    موفق باشید 🙂

  • شروع کار با فریمورک انگولار

    انگولار یه فریمورک خوب جاوا اسکریپت هست که برای ساختن برنامه های تک صفحه ای سمت کاربر استفاده میشه که شما میتونید کارهای خفن رو با تعداد خط کد خیلی کم نسبت به جاوااسکریپت معمولی انجام بدید . اگه میبینید یسری سایت ها مثل یوتیوب و… دارن بدون رفرش شدن لینک های جدید رو لود میکنن و کلی کارا توی یک صفحه، احتمالا یکی از این دو تا کار رو انجام میدن : یا از یه فریم ورک SPA استفاده میکنن یا همون Single Page Application و یا خودشون کلی کد javascript زدن که این جریان رو مدیریت میکنه. البته انگولار رو توسعه دهنده های گوگل توسعه دادن و قطعا توی کارای خودشونم ازش استفاده میکنن.

     

    چرا انگولار یاد بگیریم؟

    اگه تصمیم گرفتید که انگولار کار کنید و نمیدونید که کارتون درست هست یا نه! من چند تا دلیل میگم بهتون که مصمم تر از همیشه شروع کنید و یاد بگیرید و توی این حرف هام اصلا تاکیدی روی خوب بودن انگولار ندارم.

    دلیل اول این هست که فریمرک های مختلف تفاوت خیلی زیادی با همدیگه ندارن و اگه شما خیلی دو دل هستید که مثلا انگولار کار کنید یا React یا هر چیز دیگه ای، باید بگم الان نگران نیاشید، بعد از یاد گرفتن یکی از این فریمورک ها خیلی راحت میتونید از یک فریمورک سوییچ کنید روی یکی دیگه و وقت تلف کردن برای اینکه بدونید کدوم فریمورک بهتره اصلا مناسب نیست.

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

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

    و انگولار کلی چیزا رو بصورت پیشفرض داره و خیلی راحت میتونید ازشون استفاده کنید در حالی که تو فریمورک های دیگه باید اونارو پیاده کنید – البته این خوبی حساب نمیشه ولی برای کسی که داره تازه شروع میکنه این بهتره و شما خیلی سریع تر میتونید نسخه اولیه یه سیستم رو بالا بیارید باهاش نسبت به سایر فریمورک ها.

     

    منابع یادگیری انگولار

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

    نوشتن اولین برنامه با انگولار 

     

  • استاندارد PSR-1 در PHP

    یسری نکات تو کد نویسی تو هر زبانی هستن که رعایت کردنشون میتونه شما رو خیلی حرفه ای تر نشون بده و رعایت نکردنشون زیاد جالب نیست برای یک برنامه نویس که ادعای خفن بودن میکنه 🙂

    تو زبان PHP یسری استاندار تعریف شده که امروزه همه برنامه نویسای خوب PHP رعایتش میکنن، این میتونه برای همه خوب باشه… هم کسی که کد مینویسه و هم کسی که کد میخونه.

    استانداردی که تو این پست میخام بصورت خلاصه در موردش حرف بزنم PSR-1 هست که اشاره میکنه استاندارد های پایه ی کد نویسی در PHP.

     

    تو PHP چند روش برای باز کردن کد PHP و بستن اون وجود داره ولی این استاندارد میگه که از این روش استفاده کنید :‌<?php ?> یا از نوع کوتاهش به این صورت :‌ <? =?>

    کاراکتر انکودینگی که استفاده میشه باید UTF-8  باشه و بدون BOM .

    نکته ی دیگه ای که خیلی مهمه اینه که اجرای منطق برنامه با include  و تعریف کردن تابع و… یک جا نباشن، یعنی مثلا شما اگه دارید یه فانکش تعریف میکنید بالاش مثلا echo  نکنید. این مثالی که در زیر اومده یه نمونه غلط طبق این استاندارد هست :

    <?php
    // side effect: change ini settings
    ini_set('error_reporting', E_ALL);
    
    // side effect: loads a file
    include "file.php";
    
    // side effect: generates output
    echo "<html>\n";
    
    // declaration
    function foo()
    {
        // function body
    }

    ولی در مثال زیر استاندار PSR-1 بخوبی رعایت شده :

    <?php
    // declaration
    function foo()
    {
        // function body
    }
    
    // conditional declaration is *not* a side effect
    if (! function_exists('bar')) {
        function bar()
        {
            // function body
        }
    }

    namespace ها و نام کلاس ها

    هر کلاس باید توی یه فایل نوشته بشه و مثلا وسط کد کلاس تعریف نکنید و یا مثلا دو تا کلاس رو توی یه فایل ننویسید. اسم کلاس ها باید بصورت StudlyCaps باشه که مشخصه ینی چجوری…

    برای ورژن ۵٫۳ به بعد از روش رسمی فضای نام ها استفاده کنید، برای مثال :‌

    <?php
    // PHP 5.3 and later:
    namespace Vendor\Model;
    
    class Foo
    {
    }

    ولی برای ورژن های قبل که از این قابلیت پشتیبانی نمیکنن از pseudo-namespacing استفاده کنید که یه پیشوند Vendor_ به اسم کلاسها اضافه میشه و sub namespace ها بعد از اون نوشته میشن و در نهایت نام کلاس نوشته میشه :

    <?php
    // PHP 5.2.x and earlier:
    class Vendor_Model_Foo
    {
    }

    ثابت ها در کلاس ها 

    ثابت ها در کلاسها طبق این استاندارد باید با حروف بزرگ تعریف بشن و برای جدا کردن از underscore  استفاده کنید. یچیزی مثل کد زیر :

    <?php
    namespace Vendor\Model;
    
    class Foo
    {
        const VERSION = '1.0';
        const DATE_APPROVED = '2012-06-01';
    }

    در مورد پراپرتی ها در کلاس ها دستور خاصی گفته نشده ولی کلاس ها باید بصورت camelCase()  تعریف بشن.

    همین روزا بقیه استاندارا رم میتویسم واستون که بخونیم و رعایت کنیم. مرسی 🙂

     

  • آدرس لایسنس سرور phpstorm 🙂

    همون طور که از خنده ملیح عنوان نوشته مشخصه این کار کاره زشتیه ولی خب ماها که پول نداریم phpstorm بخریم میتونیم آدرس لایسنس سرور هایی که واسمون کار میکنن رو اینجا تو کامنتا بذاریم تا بقیه هم استفاده کنن…

    الان این برای من در ورژن ۲۰۱۸٫۱٫۴  کار کرد : http://wolf.3dxtras.com  ولی خب هر روز یسری احتمالا بسته میشن و ما اینجا جدیدترین هارو منتشر میکنیم تا همنوع هامون(که پول ندارن) استفاده کنن، شما هم اگه مث ما هستید آدرسی که احتمالا پیدا کردید رو توی کامنت ها بفرستید.

    مرسی 🙂

    آدرس های جدیدی که در کامنت ها منتشر میشن رو اینجا آپدیت میکنم تا مجبور نشید اسکرول کنید تا اون پایین(آخرین آیتم در لیست رو امتحان کنید اول) :

    http://www.activejetbrains.gq
    
    http://hb5.s.osidea.cc:1017
    
    http://crius.ro.lt
    
    http://jbls.vvm.space
    
    http://52.13.243.210:8000
    
    http://34.208.127.60:8000
    
    http://lanyu.snkso.com
    
    http://119.23.238.53:8888
    
    http://188.40.174.70:1017
    
    http://aardonyx.bid

    اگه هیچ کدوم از آدرس های بالا کار نکرد و کلا خسته شدید دیگه از آدرس زدن این کار رو بکنید : توی ویندوز باید یا هر سیستم عامل دیگه ای فایل hosts رو پیدا کنید و بهش بگید که درخواست چک کردن code رو به هاست لوکال شما بفرسته

    ساده تر اگه بخام بگم مثلا توی ویندوز این فایل رو باز کنید C:\Windows\System32\drivers\etc\hosts رو باز کنید و خط زیر رو به آخر فایل اضافه کنید

    ۰٫۰٫۰٫۰ account.jetbrains.com

    بعد کد زیر رو به عنوان key وارد کرده و ثبت رو بزنید :

    K71U8DBPNE-eyJsaWNlbnNlSWQiOiJLNzFVOERCUE5FIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiIiwiYXNzaWduZWVFbWFpbCI6IiIsImxpY2Vuc2VSZXN0cmljdGlvbiI6IkZvciBlZHVjYXRpb25hbCB1c2Ugb25seSIsImNoZWNrQ29uY3VycmVudFVzZSI6ZmFsc2UsInByb2R1Y3RzIjpbeyJjb2RlIjoiSUkiLCJwYWlkVXBUbyI6IjIwMTktMDUtMDQifSx7ImNvZGUiOiJSUzAiLCJwYWlkVXBUbyI6IjIwMTktMDUtMDQifSx7ImNvZGUiOiJXUyIsInBhaWRVcFRvIjoiMjAxOS0wNS0wNCJ9LHsiY29kZSI6IlJEIiwicGFpZFVwVG8iOiIyMDE5LTA1LTA0In0seyJjb2RlIjoiUkMiLCJwYWlkVXBUbyI6IjIwMTktMDUtMDQifSx7ImNvZGUiOiJEQyIsInBhaWRVcFRvIjoiMjAxOS0wNS0wNCJ9LHsiY29kZSI6IkRCIiwicGFpZFVwVG8iOiIyMDE5LTA1LTA0In0seyJjb2RlIjoiUk0iLCJwYWlkVXBUbyI6IjIwMTktMDUtMDQifSx7ImNvZGUiOiJETSIsInBhaWRVcFRvIjoiMjAxOS0wNS0wNCJ9LHsiY29kZSI6IkFDIiwicGFpZFVwVG8iOiIyMDE5LTA1LTA0In0seyJjb2RlIjoiRFBOIiwicGFpZFVwVG8iOiIyMDE5LTA1LTA0In0seyJjb2RlIjoiR08iLCJwYWlkVXBUbyI6IjIwMTktMDUtMDQifSx7ImNvZGUiOiJQUyIsInBhaWRVcFRvIjoiMjAxOS0wNS0wNCJ9LHsiY29kZSI6IkNMIiwicGFpZFVwVG8iOiIyMDE5LTA1LTA0In0seyJjb2RlIjoiUEMiLCJwYWlkVXBUbyI6IjIwMTktMDUtMDQifSx7ImNvZGUiOiJSU1UiLCJwYWlkVXBUbyI6IjIwMTktMDUtMDQifV0sImhhc2giOiI4OTA4Mjg5LzAiLCJncmFjZVBlcmlvZERheXMiOjAsImF1dG9Qcm9sb25nYXRlZCI6ZmFsc2UsImlzQXV0b1Byb2xvbmdhdGVkIjpmYWxzZX0=-Owt3/+LdCpedvF0eQ8635yYt0+ZLtCfIHOKzSrx5hBtbKGYRPFDrdgQAK6lJjexl2emLBcUq729K1+ukY9Js0nx1NH09l9Rw4c7k9wUksLl6RWx7Hcdcma1AHolfSp79NynSMZzQQLFohNyjD+dXfXM5GYd2OTHya0zYjTNMmAJuuRsapJMP9F1z7UTpMpLMxS/JaCWdyX6qIs+funJdPF7bjzYAQBvtbz+6SANBgN36gG1B2xHhccTn6WE8vagwwSNuM70egpahcTktoHxI7uS1JGN9gKAr6nbp+8DbFz3a2wd+XoF3nSJb/d2f/6zJR8yJF8AOyb30kwg3zf5cWw==-MIIEPjCCAiagAwIBAgIBBTANBgkqhkiG9w0BAQsFADAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBMB4XDTE1MTEwMjA4MjE0OFoXDTE4MTEwMTA4MjE0OFowETEPMA0GA1UEAwwGcHJvZDN5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxcQkq+zdxlR2mmRYBPzGbUNdMN6OaXiXzxIWtMEkrJMO/5oUfQJbLLuMSMK0QHFmaI37WShyxZcfRCidwXjot4zmNBKnlyHodDij/78TmVqFl8nOeD5+07B8VEaIu7c3E1N+e1doC6wht4I4+IEmtsPAdoaj5WCQVQbrI8KeT8M9VcBIWX7fD0fhexfg3ZRt0xqwMcXGNp3DdJHiO0rCdU+Itv7EmtnSVq9jBG1usMSFvMowR25mju2JcPFp1+I4ZI+FqgR8gyG8oiNDyNEoAbsR3lOpI7grUYSvkB/xVy/VoklPCK2h0f0GJxFjnye8NT1PAywoyl7RmiAVRE/EKwIDAQABo4GZMIGWMAkGA1UdEwQCMAAwHQYDVR0OBBYEFGEpG9oZGcfLMGNBkY7SgHiMGgTcMEgGA1UdIwRBMD+AFKOetkhnQhI2Qb1t4Lm0oFKLl/GzoRykGjAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBggkA0myxg7KDeeEwEwYDVR0lBAwwCgYIKwYBBQUHAwEwCwYDVR0PBAQDAgWgMA0GCSqGSIb3DQEBCwUAA4ICAQC9WZuYgQedSuOc5TOUSrRigMw4/+wuC5EtZBfvdl4HT/8vzMW/oUlIP4YCvA0XKyBaCJ2iX+ZCDKoPfiYXiaSiH+HxAPV6J79vvouxKrWg2XV6ShFtPLP+0gPdGq3x9R3+kJbmAm8w+FOdlWqAfJrLvpzMGNeDU14YGXiZ9bVzmIQbwrBA+c/F4tlK/DV07dsNExihqFoibnqDiVNTGombaU2dDup2gwKdL81ua8EIcGNExHe82kjF4zwfadHk3bQVvbfdAwxcDy4xBjs3L4raPLU3yenSzr/OEur1+jfOxnQSmEcMXKXgrAQ9U55gwjcOFKrgOxEdek/Sk1VfOjvS+nuM4eyEruFMfaZHzoQiuw4IqgGc45ohFH0UUyjYcuFxxDSU9lMCv8qdHKm+wnPRb0l9l5vXsCBDuhAGYD6ss+Ga+aDY6f/qXZuUCEUOH3QUNbbCUlviSz6+GiRnt1kA9N2Qachl+2yBfaqUqr8h7Z2gsx5LcIf5kYNsqJ0GavXTVyWh7PYiKX4bs354ZQLUwwa/cG++2+wNWP+HtBhVxMRNTdVhSm38AknZlD+PTAsWGu9GyLmhti2EnVwGybSD2Dxmhxk3IPCkhKAK+pl0eWYGZWG3tJ9mZ7SowcXLWDFAk0lRJnKGFMTggrWjV8GYpw5bq23VmIqqDLgkNzuoog==

    اگر روی لینوکس کار میکنید فایل etc/hosts رو ادیت کنید و همون خط رو اضافه کنید و بقیشم که مشخصه.

    دیگه ام به این سایت سر نزنید 🙂

  • استفاده از Selenium در پایتون

    اصلا چرا اینجوری شد؟؟؟ چیه این زندگی؟ تموم تن من داره میلرزه… :))

    من داشتم زندگیمو میکردم، وب کار میکردم و PHP و Laravel که یهویی اومدم دانشگاه و دارم درس میخونم… البته همچنان کارم میکنم که گشنه نمونم… این وسط پایتونم تا حدودی به اجبار یاد گرفتم و الان تا یه حدودی باهاش راحتم، پایتون کارای سخت رو با سینتکس ساده انجام میده و میشه گفت آدم خوبیه!

    دیروز از سر کنجکاوی باید یه صفحه ای رو هی باز میکردم لاگین میشدم و یه فرمی رو پر میکردم و سابمیت میکردم و یه آیدی رو هی افزایش میدادم و توی صفحات جدید بازش میکردم. یکم که خسته شدم گفتم چرا برنامه ننویسم که این کارو بکنه. رفتم گشتم دیدم یه کتابخونه ای هست که تقریبا واسه همه زبونای اسکریپت نویسی دسکتاپ هم موجوده، اسمش سلنیومه! با این کتابخونه میتونید مرورگر های مختلف رو باز کنید به المنت هاش دسترسی داشته باشید و در کل اکثر کارایی که یه آدم پشت مرورگر میتونه انجام بده رو میتونید باهاش انجام بدید. سلنیوم برای پایتون رو میتونید اینجا ببینید : selenium-python.readthedocs.io

    برای نصب میتونید از pip استفاده کنید : pip install selenium

    درایور هر مرورگر رو هم باید نصب کنید تا با این کتابخونه مچ بشه، مثلا برای کروم میتونید از اینجا اقدام کنید

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

    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    
    driver = webdriver.Firefox()
    driver.get("http://www.python.org")
    assert "Python" in driver.title
    elem = driver.find_element_by_name("q")
    elem.clear()
    elem.send_keys("pycon")
    elem.send_keys(Keys.RETURN)
    assert "No results found." not in driver.page_source
    driver.close()

    بصورت خلاصه اگه بخوام بگم، کد بالا سایت پایتون.ارگ رو باز میکنه و توی سرچ باکسش یچیزی رو سرچ میزنه… بعضی وقتا خیلی به درد میخوره باور کنید 🙂

  • منابع یادگیری فریمورک لاراول

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

    داکیومنت های خود سایت لاراول

    سایت خود لاراول بهترین جا هست که ازش یاد بگیرید. البته میتونید بعنوان مرجع داشته باشیدش و ازش استفاده کنید : https://laravel.com/docs/5.5 و میتونید هر جور که دوست دارید یه نسخه آفلاین ازش تهیه کنید و استفاده کنید ازش

    ویدئو های آموزشی لاراکستس

    سایت لاراکستس توسط یکی از توسعه دهنده های لاراول به نام جفری وی مدیریت میشه و کورس های آموزشیش بی نظیر هست در مقایسه با ویدئو هایی که برخی از دوستان وطنی ارائه میدن و… آدرس سایت : http://laracasts.com

    سایت لاراول نیوز

    اکه میخواید از روند تغییرات و اخبار لاراول با خیر باشید سایت لاراول نیوز رو دنبال کنید : https://laravel-news.com

    سایت لاراول تریکس

    این سایتم کلی تریک لاراولی داره و میتونه به دردتون بخوره، فقط من نمیدونم چرا ایرانیها بیشتر از همه استفاده میکنن از این سایت(الکساش روی ایران ست شده) : http://laravel-tricks.com

    سابتهای ایرانی از جمله سایت git.ir هم کلی ویدئو گذاشتن که میتونید دانلودشون کنید اگه به حلال و حروم اعتقاد ندارید 🙂

    و کلی منبع دیگه که میتونید با سرچ برسید بهشون

  • ساختن توابع Helper در لاراول

    هلپر در لاراول به توابعی گفته میشن که همه جای پروژه بهشون دسترسی داریم بدون اینکه هر بار لودشون کنیم.

    لاراول کلی هلپر خوب بصورت آماده داره که خیلی از کارهارو براتون آسون میکنه، مثل کار با آرایه ها، فایل ها، رشته ها، روت ها و یکی از پر کاربرترینشون هم همین dd خودمون :). شما میتونید هلپر های خودتون رو بصورت دستی هم تعریف کنید و با کمپوزر بصورت خودکار لودشون کنید.

    نحوه ساختن فایل Helper در لاراول

    همونطور که گفتم هلپر ها تابع هستند پس باید داخل یه فایل نوشته بشن. لاراول هیچ دایرکتوری خاصی برای helper ها در نظر نگرفته و شما میتونید بصورت دلخواه براش جا در نظر بگیرید. من مثلا داخل app/Helpers رو برای این کار در نظر میگیرم و داخلش فایل main.php رو قرار میدم.

    لود خودکار فایل ها در لاراول با کمپوزر

    یکی از کاربردهای باحال کمپوزر جدا از مدیریت نیازمندی ها، همین autoload هست که به شما این امکان رو میده که در ران تایم فایل های دلخواهتون رو توی کدتون لود کنید بدون اینکه اون بالا بنویسید require_once any.php . در پروژه لاراولتون یه فایل دارید به اسم composer.json ، توی این فایل یه key به اسم autoload وجود داره و داخلش میتونید مشخص کنید که چه فایل هایی به autoload اضافه بشن. یه مثال واستون میزنم که کاملا بدونید چی به چیه :

    "autoload": {
        "files": [
            "app/Helpers/main.php"
        ],
        "classmap": [
            "database/seeds",
            "database/factories"
        ],
        "psr-4": {
            "App\\": "app/"
        }
    },

    به کمپوزر گفتم که فایل main.php  رو بذار توی autoload. حالا باید به کامپوزر بگیم که فایل های autoload رو از اول بسازه، برای این کار توی روت پروژه این کامند رو اجرا کنید :

    composer dump

    حالا main.php  و فانکشن هایی که داخلش تعریف میکنید همیشه در دسترس خواهند بود.

    تعریف توابع helper در لاراول

    توابع هلپر مثل بقیه توابع هستند فقط باید حواسمون باشه که تابع دیگه ای رو رونوشت نکنیم :

    if (! function_exists('test')) {
        function test($key, $default = null) {
            // ...
        }
    }

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

    موفق باشید 🙂