বৃহস্পতিবার, ১৭ নভেম্বর, ২০১৬

লারাভেল প্রজেক্ট হেরেকুতে ডিপ্লয় করবেন ?


  1. আপনার পিসিতে হেরেকুর কমান্ড লাইন টুল ইন্সটল করুন । তারপর opne comand line with ruby অ্যাপ ওপেন করি ।
  2. এইবার লারাভেল প্রজেক্ট ফোল্ডারে ডিরেক্টরি পরিবর্তন করি । e.g. c:\users\ cd d/ g:\laravel_blog\
  3. এইবার গিট ইনিসিয়ালাইজ করি আর add , commit করি। 
  1. $ git init
    Initialized empty Git repository 
    $ git add .
    $ git commit -m "new laravel project"
       4. এইবার Procfile ফাইল অ্যাড করি আর change commit করি।
 echo web: vendor/bin/heroku-php-apache2 public/ > Procfile
$ git add .
$ git commit -m "Procfile for Heroku"
[master 1eb2be6] Procfile for Heroku
 1 file changed, 1 insertion(+)
 create mode 100644 Procfile
       5.
 heroku create app_name

       6. Give proper email and password for your hereku account .
       7. Add build pack
 heroku buildpacks:set heroku/php
Buildpack set. Next release on app_name will use heroku/php.
Run `git push heroku master` to create a new release using this buildpack.
php artisan key:generate --show
$ heroku config:set APP_KEY=generated key 
git push heroku master
 heroku addons:add heroku-postgresql:hobby-dev (for adding database free)
 heroku config --app app_name (for getting database info in this format DATABASE_URL: postgres://USERNAME:PASSWORD@HOSTNAME:PORT/DATABASE)
Add this details to config/database.php and .env
then $
git add .
$ git commit -m "Updated database configuration"
$ git push heroku master

বুধবার, ১০ আগস্ট, ২০১৬

কিভাবে রুবি অন রেইলস উইন্ডোজে ইন্সটল করবেন ?

১। প্রথমে https://rubyinstaller.com থেকে windows এর জন্য rubyinstaller.exe file টি ডাউনলোড করুন । ফাইলটির পরিমাণ ১০৫mb এর কাছাকাছি ।

২। ইন্সটলেশনের সময় git আর ruby এর জন্য পাথ ভেরিয়েবল সিলেক্ট করে দেই ।

৩। তারপর যে কোন টেক্সট এডিটর দিয়ে C:\RailsInstaller\Ruby2.2.0\bin\rails.bat এই ফাইলটি ওপেন করি ।

৪। এইবার ফাইলের লেখাগুলি ডিলিট করি ।
@ECHO OFF
IF NOT "%~f0" == "~f0" GOTO :WinNT
@"C:\Users\emachnic\GitRepos\railsinstaller-windows\stage\Ruby2.2.0\bin\ruby.exe" "C:/Users/emachnic/GitRepos/railsinstaller-windows/stage/Ruby2.2.0/bin/tilt" %1 %2 %3 %4 %5 %6 %7 %8 %9
GOTO :EOF
:WinNT
@"C:\Users\emachnic\GitRepos\railsinstaller-windows\stage\Ruby2.2.0\bin\ruby.exe" "%~dpn0" %*
৫। এইবার নিচের কোডগুলি পেস্ট করি ।
@ECHO OFF
IF NOT "%~f0" == "~f0" GOTO :WinNT
ECHO.This version of Ruby has not been built with support for Windows 95/98/Me.
GOTO :EOF
:WinNT
@"%~dp0ruby.exe" "%~dpn0" %*
৬ । নতুন rails প্রোজেক্ট খুলতে কমান্ড লাইনে নিচের কোডটি রান করুন
rails new HelloRails -d mysql
৭। এইবার প্রোজেক্ট রান করতে নিচের লাইনটি লিখুন ।
cd HelloRails
৮। এইবার ডাটাবেজ create করতে নিচের কমান্ডটি লিখি ।
rake db:create 
৯। এইবার সাইটি রান করতে লিখুন
         rails server

সোমবার, ২৫ জুলাই, ২০১৬

সি-প্লাস-প্লাস নোট

// 
string st;
cin >> st; // Input "Apu"

cout << st.at(1) << endl; //output "p"

//includes all c , cpp libraries
#include <bits/stdc++.h>


// getting a line of string cpp
string st;

getline(cin , st);//input "I love cpp"

cout << st << endl; //output "I love cpp"


//if a char in string is letters

string st;
cin >> st;

if(isalpha(st.at(0)))
    cout << "Letters" << endl;

//initializing array with a value

int row[8];

memset(row, 0 , sizeof(row));//it initializes row array with 0 value



memset(array, 0, sizeof(array[0][0]) * m * n); where m and n is height and width

//getting max value of an array

int ara[5] = {9, 1 , 2, 3, 5};
int max = *max_element(ara, ara+5);// max = 9

//using pair in vector

vector<pair<int , bool > > v;

v.push_back(make_pair(3, 5));

for(vector<pair<int, bool> >::iterator it = v.begin() ; it != v.end() ; it++)
{
     cout << it->first << endl;//output 3
     cout << it->second << endl;output 5
}


//how to know how many values in an array is less than or equal a value

    int a[5] = {1, 3, 7 , 8 , 9};
    cout << upper_bound(a, a+5, 8)-a << endl;//output 4 cause there are 4 values <= 8 in the array
    cout << lower_bound(a, a+5, 9)-a << endl;//output 4 cause there are 4 values < 9 in the array


//how to take input line of integers in an array where number of integers is unknown

string st;
int ara[100], n;

getline(cin , st); //12 23 5 6 8
n = 0;
istringstream is(st);
while(cin>>ara[n])n++;
for(int i = 0; ara[i] ; i++)
{
        cout << ara[i] << " "; // 12 23 5 6 8
          }


//for iterating Through A map and nesting vector or map


std::map<std::string, std::map<std::string, std::string>> mymap;

for(auto const &ent1 : mymap) {
  // ent1.first is the first key
  for(auto const &ent2 : ent1.second) {
    // ent2.first is the second key
    // ent2.second is the data
  }
}

//for knowing number of 1 bits in a integer




int num_of_bits = __builtin_popcount(2)//2 = 00000010
cout << num_of_bits << endl; // output is one



বৃহস্পতিবার, ১৯ মে, ২০১৬

লারাভেলের(laravel) মাধ্যমে মাল্টিপল(multiple) টেবিল অথেনটিকেশন(authentication) যেমন ইউজার আর আডমিন টেবিলের মাধ্যমে ইউজারকে যাচাই করে ইউজার হলে একরকম আর আডমিন হলে আরেকরকম পেজে রিডিরেক্ট করা যায় তা দেখব।

আমি লারাভেল৫.২ (laravel 5.2) এর জন্য মাল্টিপল টেবিল অথেনটিকেশনের কাজটি করছি ।
১ ।  প্রথমে লারাভেলের ফ্রেশ ইন্সটলেশন রেডি করি । যেহেতু ইউজার(user) টেবিল ইন্সটলেশনের সাথেই আসে , তাই আমাদেরকে অ্যাডমিন() টেবিল তৈরি করতে হবে । এখন আমরা আডমিন টেবিলের জন্য মাইগ্রেশন টেবিল তৈরি করব । তাই কমান্ড লাইনে লিখি
php artisan make:migration create_admins_table
২।  ইউজার টেবিলের মাইগ্রেশনের মত করে অ্যাডমিন টেবিলের মাইগ্রেশন তৈরি করি ।
৩।  তারপর টেবিলগুলা মাইগ্রেট করি php artisan migrate দিয়ে । এখন অ্যাডমিনের জন্য মডেল তৈরি করি php artisan make:model Admin । মডেলটি ইলোকুয়েণ্ট ক্লাসের  কিন্তু আমাদের কাজের জন্য মডেলটিকে অথেন্টিকেবল ক্লাসের হতে হবে । তাই আমরা অ্যাডমিন মডেলকে এইভাবে পরিবর্তন করি ।
<?php

namespace App;

use Illuminate\Foundation\Auth\User as Authenticatable;

class Admin extends Authenticatable
{
    protected $fillable = [
        'name', 'email', 'password',
    ];
    protected $hidden = [
        'password', 'remember_token',
    ];
    protected $guard = "admins";
}
৪। এখন config/auth.php ফাইলটিকে পরিবর্তন করে এইরকম করি
<?php
return [
    'defaults' => [
        'guard'     => 'web',
        'passwords' => 'users',
    ],
    'guards' => [
        'web' => [
            'driver'   => 'session',
            'provider' => 'users',
        ],
        'api' => [
            'driver'   => 'token',
            'provider' => 'users',
        ],
        
        // For admin
        'admins' => [
            'driver'   => 'session',
            'provider' => 'admins'
        ]
    ],
    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],
        
        // For admin
        'admins' => [
            'driver' => 'eloquent',
            'model' => App\Admin::class
        ]
    ],
    'passwords' => [
        'users' => [
            'provider' => 'users',
            'email' => 'auth.emails.password',
            'table' => 'password_resets',
            'expire' => 60,
        ],
        'admins' => [
            'provider' => 'admins',
            'email' => 'auth.emails.password',
            'table' => 'password_resets',
            'expire' => 60,
        ],
    ],
];
৫। অ্যাডমিন মডেলে গার্ড ঠিক করে দিতে হবে ।
        protected $guard = "admins";
৬। এখন আমরা লারাভেলের ডিফ্লট বয়লারপ্লেট ব্যবহার করে অথেনটিকেশন তৈরি করব । ফলে
        php artisan make:auth
আমাদের জন্য দরকারি ফর্ম ও কন্টোলার তৈরি হয়ে যাবে ।
৭।এখন আমরা প্রজেক্ট রান করে লগইন আর রেজিস্টার করলে তা ইউজার টেবিলে জমা হবে । কারন config/auth.php তে ডিফ্লট হিসেবে আছে
'defaults' => [
    'guard'     => 'web',
    'passwords' => 'users',
],
এখন আমরা যদি ডিফ্লট অ্যারেকে পরিবর্তন করে users এর পরিবর্তে admins ব্যবহার করি তাহলে আমরা লগইন আর রেজিস্টার করলে তা অ্যাডমিন টেবিলে জমা হবে এবং চেক করবে ।
৮। ইউজার ডিফল্ট হিসেবে থাকলে অ্যাডমিনের কাজ করতে হলে Auth::guard('admins')->user(),
Auth::guard('admins')->attempt(['email' => '', 'password' => ''])
, Auth::guard('admins')->check()
Auth ফ্যাস্কেডে গার্ড ইউজ করতে হবে ।


 

শুক্রবার, ১৩ মে, ২০১৬

কেমন হত যদি mysql workbench অথবা xampp এ ডিজাইন করা ডাটাবেজ থেকে সরাসরি লারাভেল মডেল , মাইগ্রেশন তৈরি করা যেত ? কি জাদু মনে হচ্ছে ? হ্যা পিএইচপি কমিউনিটি এই জাদু দেখাতে পারে । আসুন আজকে সেই জাদু দেখা যাক ।

১।  প্রথমে লারাভেলের প্রজেক্টের একটি ফ্রেশ ইন্সটলেশন সম্পন্ন করুন । কিভাবে করবেন ? এই লেখাটি অনুসরণ করুন ।
২। এই বার .env ফাইলে যে ডাটাবেজের জন্য মাইগ্রাশন আর মডেল তৈরি করতে চান তার নাম , ইউজার নেম এবং পাসওয়ার্ড সেট করুন । 
৩। কি জাদু দেখবেন না ? হ্যা আর দেরি না এখন আমরা জাদু দেখব ।
৪। আপনার প্রজেক্টে কমান্ড লাইন ওপেন করে নিচের লাইনগুলি একের পর এক রান করুন ।
composer require --dev --no-update "xethron/migrations-generator:dev-l5"
composer require --dev --no-update "way/generators:dev-feature/laravel-five-stable"
composer require --dev --no-update "user11001/eloquent-model-generator": "~2.0"

composer config repositories.repo-name git "git@github.com:jamisonvalenta/Laravel-4-Generators.git"
composer update 
৫। এই বার কম্পোজার আপডেট করা শেষ হলে আপনি জাদু দেখার জন্য প্রায় তৈরি । আরেকটু কাজ বাকি ।

৬। আপনার প্রজেক্টের config/app.php ফাইলটি ওপেন করুন  আর নিচের লাইনগুলি প্রোভাইডার সেকশনে যোগ করুন ।
Way\Generators\GeneratorsServiceProvider::class,
Xethron\MigrationsGenerator\MigrationsGeneratorServiceProvider::class,
User11001\EloquentModelGenerator\EloquentModelGeneratorProvider::class,

৭। এখন কমান্ড লাইনে php artisan migrate:generate কমান্ডটি রান করুন । আপনার database/migrations ফোল্ডারে সবকটি টেবিলের জন্য মাইগ্রেশন দেখতে পাবেন ।
৮। আর php artisan models:generate কমান্ডটি লিখলে app ডিরেক্ট্রিতে সবকটি টেবিলের জন্য মডেল দেখতে পাবেন ।
৯। এই হল লারাভেল আর পিএইচপি কমিউনিটির জাদু । দুই মিনিটে মাইগ্রেশন আর মডেল তৈরি । 

শুক্রবার, ২৯ এপ্রিল, ২০১৬

লারাভেল এ হাতে খড়ি

১। প্রথমে আমরা জাম্প(xampp) অথবা ওয়াম্প(wamp) সফটওয়্যার ইন্সটল করব । দুইটিই ফ্রি এবং গুগলে সার্চ করে পাওয়া যাবে । তবে আমি জাম্প পছন্দ করি ।

২। এইবার কম্পোজার(composer.com) সাইট থেকে windows এর জন্য নির্ধারিত ভার্সনটি নিরবাচন করি আর ডাউনলোড করি । কম্পোজার ইন্সটল করার সময় php.exe file  কে ব্রাউজ করে সিলেক্ট করে দিব । যেটা আমারা C:\xampp\php এই লোকেশনে পাব।

৩। কম্পোজার ইন্সটল করতে কিছু সময় লাগতে পারে ।

৪। কম্পোজার ইন্সটল হলে আমরা command line ওপেন করে নিচের কমান্ডটি রান করি ।
    composer create-project --prefer-dist laravel/laravel laralearn
এইখানে blog হল নতুন প্রজেক্টের নাম । এই কমান্ডটি আমরা command line ওপেন করলে যে ডিরেক্টরি আসে সেইখানে laralearn নামে একটি ফোল্ডার খুলে ।

৫। এখন cd laralearn কমান্ডটি রান করি । তাহলে আমরা laralearn ডিরেক্ট্রিতে প্রবেশ করব ।

৬। তারপর php artisan serve কমান্ডটি রান করি । তাহলে Laravel development server started on http://localhost:8000/ এই রকম একটি মেসেজ দিবে ।

৭। এখন যদি আমরা ব্রাউজারে localhost:8000/ এ যাই তাহলে আমাদের প্রোজেক্টের ওয়েলকাম পেজ দেখতে পাব ।

মঙ্গলবার, ১২ এপ্রিল, ২০১৬

কিভাবে লারাভেল(laravel) প্রজেক্ট সিপেনেলে(cpanel) লাইভ করবেন ?

আজকে আমরা লারাভেল প্রজেক্ট কিভাবে সিপেনেলে আপলোড করে লাইভ করা যায় দেখব ।


১।আমাদের লারাভেল প্রজেক্টের স্ট্রাকচার দেখতে এই রকম হবে । 
২।আমাদেরকে পাবলিক ফোল্ডার বাদে সকল ফোল্ডার ও ফাইল সিলেক্ট করে একটি জিপ ফাইল হিসেবে সংরক্ষণ করতে হবে , যার নাম দিব লারাভেল।
৩।পাবলিক ফোল্ডারের সকল ফাইল সিলেক্ট করে ,  জিপ করে পাবলিক নামে সংরক্ষণ করতে হবে। 
৪।এবার আমাদের ডেস্কটপে কাজ শেষ।
৫।তারপর আমরা সিপেনেলে গিয়ে লগইন করব আর ফাইল মেনেজারের অপশনে ঢুকব।    
৬। চিত্রে প্রদর্শিত লারাভেল ফোল্ডারটি আমাদের তৈরী করতে হবে। তারপর আপলোড বাটন সিলেক্ট করে লারাভেল নামের জিপ ফোল্ডারটি আপলোড করতে হবে। আর এক্সট্রাক্ট করতে হবে।
৭। এইবার হোম ডিরেক্টরিতে গিয়ে পাব্লিক_এইচটিএমএল ফোল্ডারে ঢুকি আর পাবলিক নামের জিপ ফোল্ডারটি আপলোড করে এক্সট্রাক্ট করি।
৮। public_html ফোল্ডারের index.php file এর কন্টেন্টে নিম্নক্তো জায়গায় /laravel জোগ করি। 
require __DIR__.'/../laravel/bootstrap/autoload.php';
$app = require_once __DIR__.'/../laravel/bootstrap/app.php';
                  ৯। তারপর হোম ডিরেক্টরির লারাভেল ফোল্ডারে যাই । আর bootstrap folder এ paths.php file যোগ করি যদি না থাকে । paths.php 
১০। paths.php file এ 'public' => __DIR__.'/../public_html', এর মত করে পরিবর্তন করি।
১১। .env file  টা নিম্নোক্ত ভাবে পরিবর্তন করি ।
APP_ENV=local
APP_DEBUG=true
APP_KEY=OdDLG9QwWa6CIhygQqxkXHmRZTD57yiU
APP_URL=www.something.com 

DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=obts
DB_USERNAME=obts
DB_PASSWORD=something

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
১২। আজ আমরা শিখলাম কিভাবে সিপেনেলে(cpanel) লারাভেল(laravel) প্রোজেক্ট লাইভ করতে হয় । এখন আপনি আপনার সাইটে ঢুকলে আপনার প্রজেক্ট দেখতে পাবেন ।  

How it feels like reading a book in a kindle reader?

Recently I have a amazon kindle reader as gift from my little brother. Though I am in temptation to have one for 3 years. One of my friend ...