Why you should consider laravel as your go to framework of choice


Recently I was in a debate with 3 other very great software professional at Basis Software Expo, 2017 about Laravel vs Django. I know, comparing between these two is like comparison between orange and apple. Actually, our main target was to present the feature set that these two frameworks offer but in a form of debate so that, people especially the newcomers get a good grasp on these frameworks. We had a very limited time to debate, so we could not focus on all the parts. So, I think why not write a blog post about the topic and thus comes this blog post.

Laravel is a very popular web framework, it is the most popular php framework and probably the most popular web framework of any language as well. Though it is comparatively very new, but it has some awesome features. So, here is the features that you should know about laravel-

  • Laravel has a great community. It is huge and very friendly.
  • It has arguably the best learning site on the Interner, Laracasts. Jeffrey Way is a great teacher.
  • Laravel provides a whole eco-system. It ensures developer’s happiness from development to deployment.
    • Development: Valet, Homedtead
    • Built in Testing: both unit and browser testing
    • Code Review: NitpickCI
    • Asset Management: Elixir, Laravel Mix
    • Great Task runner: Laravel Envoy
    • Server Provisioning: Forge
    • Zero Downtime Deployment: Enroyer
    • Monitoring Tool: Cachet
  • Great ORM, built-in Queue System, Out of the box Redis support.
  • Scaffolding Tools: Spark, Backpack
  • Stable Release Cycle and LTS support. A new version of laravel comes every 6 months and a long-term support version comes in every 2 years.
  • Great features, like- realtime broadcasting (Echo), Multiple notification channels, Task schedular, Multiple drivers for most of the components(session, cache, queue, mail, events etc.)
  • Laravel has some great first party packages
    • Payment Gateway: Cashier
    • OAuth2 Server: Passport
    • Social Authentication: Socialite(support more than 80 sites)
    • Full-text search: Scout
  • Laravel is very beginner friendly with very little entry barrier.
  • Migration, Template Engine with markdown support.
  • Great Command Line Utility: Artisan.
  • Tons of community driven packages.

To be honest, Laravel is the best thing that happens to me in last 2-3 years. It prevented me from leaving php. I also wrote a bestseller book on Laravel in Bengali. If you are interested, you can also look into it.

Never use rm, instead use trash


Those who use command line heavily, they use a command called rm almost everyday. I myself use command line everyday, and I most often use rm for deleting files and folders. Things getting more worse when you chain -rf command with rm. Last week I was working on a project and I accidently run rm -rf command to my project root directory. Then all my codes were gone and it’s not reversible. Thanks to git, I don’t loose all my codes, but the latest uncommited changes.

After that incident, I tried to find some solution. Then I find an awesome tool called trash. It’s a simple node module and you can use it to your project. But I installed it globally so that I can use it anywhere on my machine. It deletes your files and folders just like rm but it put then to trash. So, you can undo the process.

Screen Shot 2016-03-19 at 9.31.00 AM

The installing process is very strait forward. I assume your machine has already node and npm installed. If not, then install them. After that run this command on your terminal

npm install -g trash-cli

If it shows an error, try with sudo. Then you are good to go.

Using trash is very easy. If you are familiar with rm then you are already known to trash. It uses similar commands. Here is an example

trash file.txt

You can do some complicated operation also.

trash '*.png' '!welcome.png'

This command will delete all your png files except welcome.png.

Hope you will like it, and never use rm from now on. Peace.

Setting Up Atom Editor for Software Development – 03


In this episode I am going to talk about some basic package of atom. I told you earlier that atom is a text editor and it is not as feature rich as other IDEs like PhpStorm or Netbeans. But you could give it additional functionality with various packages.

First I am talking about a package that will give a nice look to your editor. The package is called file-icons. A number of icons and colors are provided by default for a range of common file types. If you have file that you would like custom icons for you can easily add this yourself. You can install it with this command- apm install file-icon or from settings menu’s install tab.

file-icon

The next package is inspired by Sublime Text’s minimap feature. Actually I am a very big fan of minimap and I use this feature in every editor I use. Install it through apm install minimap or via settings menu. From settings menu you can change the position either in left or right and enable or disable colors. You can also scroll via clicking on minimap and also automatic hide minimap pane.

minimap.png

Now I am talking about a very famous package that you might already familiar with. It is none other emmet, which was used to known as zen coding. It will boost up your development speed a lot. You can find the documentation and installation instruction on their official website emmet.io

What emmet does is with a keypress it expand HTML tags. like if you type a&gt;img and then press tab or Ctrl+e then it will expand to <a href=""><img src="" alt=""></a> which is very handy. But for atoms default keybinding, tab is not working all the time. You could add the following line to you config.cson file to work it properly.

# Emmet
'atom-text-editor:not([mini])':
'tab': 'emmet:expand-abbreviation-with-tab'

I generally use markdown instead any rich text editor like MS Word or Libre Office. If you are like me Markdown preview plus can be a great tool for you. Just install the package from package installer and press ctrl+shift+m to view preview. For mathematical equation rendering press Ctrl+shift+x and see the magic.

Thats all for today. See you guys in the next episode. Piece.

লারাভেলে একাধিক রাউটিং ফাইলের ব্যবহার


লারাভেলে চমৎকার একটি রাউটিং লাইব্রেরি সহ এসেছে, যা সিম্ফনির রাউটারের উপর ভিত্তি করে তৈরি করা। আর এটি ব্যবহার করাও খুব সহজ। এর চমৎকার এপিআই সেল্ফ এক্সপ্লেনারি। যে কেউ রাউটারের কোড দেখলেই বুঝতে পারবে, এটি কি কাজ করবে। চলুন একটু উদাহরন দেখি-

লারাভেলের রাউটগুলি ডিক্লেয়ার করা থাকে app/Http/routes.php ফাইলে। সমস্যা হচ্ছে যখন অনেক বড় কোন প্রজেক্টে কাজ করতে হয়, তখন রাউট ফাইলটির আকার অনেক বড় হয়ে যায় এবং একটি মাত্র ফাইলে রাউটগুলি ম্যানেজ করা খুবই কষ্টসাধ্য হয়ে পড়ে। এর সমাধান করা যায় খুব সহজেই, রাউটগুলি অনেকগুলি ফাইলে ভাগ করে নিলে।

এটা করা অত্যন্ত সহজ। এ উদাহরনে আমরা এমন একটি টেস্টকেস চিন্তা করবো, যেখানে এটি ফাইলে প্রজেক্টের ওয়েব রাউটগুলি থাকবে এবং অন্য একটি ফাইলে এপিআই রাউটগুলি থাকবে। এর জন্য আমরা প্রথমেই আমাদের রাউট ফাইলের নাম পরিবর্তন করে রাখি web_routes.php. এরপর একটি ডিরেক্টরিতে api_routes.php নামে আরো একটা ফাইল তৈরি করি। এরপর আমরা app/Providers/RouteServiceProvider.php ফাইলটি ওপেন করি। এই ক্লাসটির প্রথমেই আছে $namespace নামে একটি প্রটেক্টেড ভ্যারিয়েবল। এটিকে রিনেম করে $webNamespace করি এবং এর ঠিক নিচেই $apiNamespace নামে আরো একটি ভ্যারিয়েবল ডিক্লেয়ার করি। এ উদাহরনের জন্য আমরা ধরে নেই আমাদের সবগুলো ওয়েব কন্ট্রোলার এবং এপিআই কন্ট্রোলার থাকবে যথাক্রমে app/Http/Controllers ফোল্ডারের Web এবং Api নামের ফোল্ডারে। তাহলে সেক্ষেত্রে এ কন্ট্রোলারগুলোর নেমস্পেসও এ অনুসারেই হবে। এরপর map মেথডে ফাইলদুটোকে রেজিস্টার করে দিতে হবে। সেটি করার পর ফাইলটি দেখতে হবে এরকম-

এরপর থেকে আপনি আপনার ওয়েবসাইটের রাউটগুলি ওয়েব রাউট ফাইলে এবং এপিআই রাউটগুলি এপিআই রাউট ফাইলে আলাদা করে রাখতে পারবেন। আপনি আপনার প্রয়োজনমত যতগুলি ইচ্ছা ফাইলে রাউটগুলি ভাগ করে রাখতে পারেন। আর রাউট ফাইলের সংখ্যা যদি বেড়ে যায়, তাহলে সেগুলিকে Http ফোল্ডারের মধ্যে Routes নামে একটি ফোল্ডারে রাখতে পারেন। সেক্ষেত্রে ম্যাপ মেথডে শুধু রাউট ফাইলের পাথটি ঠিক করে দিলেই হবে।

গুগলের নতুন ফন্ট


গুগল গতকাল নতুন একটি ফন্ট রিলিজ দিয়েছে। গুগল এই ফন্ট ফ্যামিলির নাম দিয়েছে Noto. এর আগে এই ফন্টটি আমি প্রথম দেখি এন্ড্রয়েড ৪.৪ কিটক্যাটে। চমৎকার রেন্ডারিং করে।

আমার এমনিতেই বাংলা ফন্টের উপর প্রচন্ড রকমের দূর্বলতা আছে। বাংলা ফন্টের সংখ্যা খুব বেশি না, তাই নতুন ফন্ট পেলেই ঈদ ঈদ লাগে। এই ফন্ট ফ্যামিলির বাংলা ফন্টটার রেন্ডারিং দূর্দান্ত। আমি এতটাই মুগ্ধ হয়েছি যে আমি আমার পিসির ডিফন্ট ফন্ট সোলাইমানলিপি থেকে চেঞ্জ করে নটোতে দিয়ে দিয়েছি। আপনারা ফন্টটির প্রভিউ পাবেন http://www.google.com/get/noto সাইটে। যদিও সম্পূর্ন ফন্ট ফ্যামিলির সাইজ প্রায় দেড়শ মেগাবাইট, তবে আপনি বাংলা ফন্টটা নামিয়ে নিতে পারবেন মাত্র ২০০ কিলোবাইট খরচ করেই।

তবে ফন্টটার এখনো গুগলের ওয়েব ফন্ট সাইটে আসে নি। যদিও গুগল ফন্টের আর্লি একসেসে (http://www.google.com/fonts/earlyaccess) ফন্টটা দেয়া আছে, তবে সেটা বেটা ভার্সন। আশা করি খুব শীঘ্রই ফন্টটার ফুল ওয়েবফন্ট রিলিজ দেবে গুগল।

লাভ ফর গুগল এগেইন।