রেগুলার এক্সপ্রেশনঃ উপকারিতা ও ব্যবহারিক প্রয়োগ (Importance and practical use of Regular Expression)

রেগুলার এক্সপ্রেশনঃ
নাম থেকেই বোঝা যাচ্ছে যে, রেগুলার এক্সপ্রেশন (রেজেক্স বা RegEx) আসলে কতগুলো সুনির্দিষ্ট ক্যারেকটারের (Char) সমষ্টি। এই একগুচ্ছ ক্যারেকটারের সমষ্টি একত্রে কোন নির্দিষ্ট প্যাটার্ন প্রকাশ করে যা দিয়ে কোন বিশাল প্যারাগ্রাফ থেকে কোন নির্দিষ্ট প্যাটার্নের অংশ খুঁজে বের করতে পারে। একটি সহজ উদাহরন দেখে নেওয়া যাক। যেমন ধরি, একটি ৫০০ শব্দের প্যারাগ্রাফ থেকে এমন সব শব্দ খুঁজে বের করতে হবে যেগুলোর প্রথম অক্ষর ‘N’, শেষের অক্ষর ‘L’ এবং মাঝে কমপক্ষে একটি ‘H’ থাকবে। যদি ট্র্যাডিশনাল প্রোগ্রামিং দিয়ে এ কাজটি করতে চাই তাহলে কি কি করতে হবে তা নিচে লেখা হলঃ

ধাপ ১ঃ প্যারাগ্রাফ এর প্রথম ক্যারেকটার থেকে শুরু করে একটা একটা করে সামনে আগাতে হবে।
ধাপ ২ঃ কোন শব্দের প্রথম অক্ষর যদি ‘N’ হয় তাহলে এই ইনডেক্সে একটি পয়েন্টার রাখতে হবে। এরপর এই ইনডেক্স থেকে আবার সামনে আগাতে হবে। যদি শব্দটির শেষ অক্ষরে পৌছানোর আগে ‘H’ পাওয়া যায় এবং শেষ অক্ষরটি যদি ‘L’ হয় তাহলে এটা একটি কাঙ্খিত শব্দ। এই শব্দটি কে একটি স্ট্রিং টাইপ অ্যারে তে স্টোর করে রাখি।
ধাপ ৩ঃ যদি এমন হয় যে আমরা শব্দটির শেষ অক্ষরে পৌছে গেছি কিন্তু উপরের দেওয়া প্যাটার্ন ম্যাচ করেনি তাহলে আবার ‘N’ দিয়ে শুরু হওয়া নতুন শব্দ না পাওয়া পর্যন্ত সামনে আগাতে হবে। যদি কোন শব্দের প্রথম অক্ষর ‘N’ হয় তাহলে ধাপ ২ এ ফিরতে হবে।
ধাপ ৪ঃ প্যারাগ্রাফটির শেষ অক্ষর ভিজিট হয়ে গেলে প্রোগ্রামটি বন্ধ হয়ে যাবে।

অবশেষে একটি স্ট্রিং টাইপ অ্যারেতে ওই নির্দিষ্ট প্যাটার্নের সকল শব্দ জমা হবে। উপরে অ্যালগোরিদমটির সংক্ষেপ বর্ননা দেওয়া হল। কিন্তু এই অ্যালগরিদমটির ইমপ্লিমেন্টেশন টা করতে গেলে যাযা লাগবে তা নিচে দেওয়া হলঃ
১। কমপক্ষে ৩ টি ভ্যারিয়েবল যা ফ্ল্যাগ হিসেবে ব্যবহার করা হবে বিভিন্ন ইনডেক্স স্টোর করে রাখার জন্য।
২। একটি For লুপ।
৩। অসংখ্য if-else ব্রাঞ্চিং।
৩। একটি ক্যারেকটার টাইপ স্ট্রিং যেটাতে খুজে পাওয়া কাঙ্খিত সকল শব্দ থাকবে।

আচ্ছা ভাবুন তো, এতকিছু না করে যদি এক লাইনে কাজটি সেরে ফেলা যেত তখন কেমন হত? ধরি, মিঃ আরএ নামে একজন মানুষ আছেন যিনি অনেক দ্রুত ও অনেক সহজে কোন প্যারাগ্রাফ থেকে নির্দিষ্ট প্যাটার্নের শব্দগুলো খুঁজে বের করতে পারেন। অর্থাৎ আমরা যদি মিঃ আরএ কে প্যাটার্ন ও প্যারাগ্রাফ বলে দেই তাহলে উনি অতি দ্রুত ওই প্যারাগ্রাফ সম্পুর্নটা থেকে প্যাটার্নটির সাথে মিলে যায় এমন সব শব্দ খুঁজে বের করে দেয়। তাহলে উপরের সেই অ্যালগরিদমের পরিবর্তে যদি একলাইন লিখে মিঃ আরএ কে প্যাটার্ন আর প্যারাগ্রাফ দিয়ে দেই তাহলে অনেক সহজে, অনেক কম কষ্টে, অনেক কম কোড লিখে, অনেক কম সময়ে আমরা আমাদের কাঙ্খিত শব্দের লিস্ট টি পেয়ে যাব।

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

রেজেক্সওয়ান ডট কম থেকে মাত্র এক থেকে দুই ঘন্টা দেখলেই রেগুলার এক্সপ্রেশন সহজে শেখা যাবে। ছোট ছোট সাইজের লেসন এর সাথেই রয়েছে সরাসরি প্র্যাকটিস করার সুযোগ।

রেজেক্সওয়ানিজরোওয়ান ডট কম একটি অনলাইন টুল যা ব্যবহার করে খুব সহজেই কাঙ্খিত রেগুলার এক্সপ্রেশনটি জেনারেট করা যায়।

উদাহরন ও ব্যবহারিক প্রয়োগঃ
যাদের জুমলা ও ভার্চুমার্ট কমপোনেন্ট সম্পর্কে ধারনা আছে তারা নিশ্চয়ই জানি যে, ভার্চুমার্টে যখন কোন প্রোডাক্ট আপলোড হয় তখন ওই প্রোডাক্টের ইমেজ আপলোড করে এবং রিসাইজ করে একই ইমেজের একটি রিসাইজইড ভারসন তৈরী করে। ডাটাবেজের XX_virtuemart_media নামক টেবিলে file_url এবং file_url_thumb নামক কলামে যথাক্রমে মুল ইমেজ ও রিসাইজড ইমেজের পাথ স্টোর করে রাখে। ২০১২ সালের দিকে আমি জুমলার একটি মডিউল বানিয়েছিলাম যেটা একটা নির্দিষ্ট ক্যাটেগরী থেকে কিছু নির্দিষ্ট বৈশিষ্ট্যের সকল প্রোডাক্টের লিস্ট ডিসপ্লে করে। মডিউল টির নাম mod_votecounter যেটি বর্তমানে মডিউলটি এখানে সাইটে রানিং আছে। লিস্ট এ ডানপাশে যে ইমেজ গুলো দেখছেন সেগুলো রিসাইজড ভার্সন ইমেজ। ইমেজের নাম ও পাথ ডাটাবেজের XX_virtuemart_media টেবিলের file_url_thumb কলাম থেকে img ট্যাগ এর মাধ্যমে দেখানো হয়েছে। কিছুদিন আগে সাইটটির মালিক বা আমার ক্লায়েন্ট জুমলা ও ভার্চুমার্ট এর ভার্সন আপগ্রেড করে। এর পর থেকে ওই লিস্টটিতে ডানদিকে আইটেমের ইমেজ দেখাচ্ছিল না। অ্যানালাইসিস করে যা জানলাম, তার সারমর্ম হল এরকম, প্রোডাক্ট ইমেজ আপলোড করার সময় ভার্চুমার্ট কম্পোনেন্ট টি ওই একি ইমেজের রিসাইজ্ড ইমেজ তৈরী করে একই পাথে resized নামক ফোল্ডার এ নির্দিষ্ট নেমিং কনভেনশন ফলো করে রাখে। এই কারনে ভার্চুমার্ট এর লেটেস্ট ভার্সন গুলোতে file_url_thumb টি ফাঁকা থাকে। যেহেতু file_url কলাম থেকেই ওই ইমেজের এবং সেটার রিসাইজড ভার্সনের পাথ পাওয়া সম্ভব তাই ভার্চুমার্ট এখন আর file_url_thumb এ কোন পাথ রাখে না। যদি রিসাইজড ইমেজ টি কোন কারনে ওভাররাইট করা হয় শুধুমাত্র সেক্ষেত্রে file_url_thumb এ ওভাররাইট করা ইমেজের পাথ স্টোর করে রাখে।

সমস্যাঃ
তাহলে লেটেস্ট ভার্সনে file_url_thumb ফাঁকা। আমাকে file_url থেকেই রিসাইজড ইমেজের পাথ জেনারেট করতে হবে। নিচে মুল ইমেজের পাথ ও রিসাইজড ইমেজের পাথ কেমন হবে তার একটি উদাহরন দেওয়া হলঃ

মুল ইমেজ ঃ /images/stories/virtuemart/product/product_photo.jpg
রিসাইজড ইমেজঃ /images/stories/virtuemart/product/resized/product_photo_200x200.jpg

রিসাইজড ইমেজের বোল্ড করা অংশটুকু দেখেই পার্থক্য বোঝা যাচ্ছে। অর্থাৎ আমাকে এখন এমন একটি রেগুলার এক্সপ্রেশন বানাতে হবে যেটা দিয়ে মুল ইমেজ পাথকে ৩ টা ভাগে ভাগ করা যায়। ভাগ গুলো নিম্নরুপঃ
প্রথম অংশ ঃ /images/stories/virtuemart/product/
দ্বিতীয় অংশঃ product_photo
তৃতীয় অংশঃ .jpg
রেজেক্স ইন্জিন কে যদি এই রেগুলার এক্সপ্রেশন ও মুল ইমেজ পাথ টা দেই তাহলে ইন্জিনটি আমাদের কে উপরের মত করে তিনটা আলাদা স্ট্রিং রিটার্ন করবে। এরপর আমরা নিচের মত করে রিসাইজড ইমেজ পাথ জেনারেট করব।
[string1]resized/[string2]_200*200[string3]

তাহলে এখন আমরা এমন একটি মেথড লিখব যা ইনপুট হিসেবে মুল ইমেজের পাথ নিবে এবং রিসাইজড ইমেজের পাথ রিটার্ন করবে।

/**
* @param $media String file_url of product image of virtuemart
* @return $thumb_url string automatically generated thumb url
*/
function generateThumbUrl($media = false){
$thumb_url = preg_replace("/(((w+)/)+)(.+)(.jpg)/i", "$1resized/$4_200x200$5", $media);
return $thumb_url;
}

এই কোডটিতে “(((w+)/)+)(.+)(.jpg)” করা অংশটুকুই একটি রেগুলার এক্সপ্রেশন যে একটা ইমেজ পাথ কে পুর্বের নিয়ম অনুযায়ী তিনটি গ্রুপে ভাগ করবে। preg_replace একটি PHP মেথড যা তিনটি প্যারামিটার ইনপুট হিসেবে নেয়। প্রথমটি হবে রেগুলার এক্সপ্রেশন, দ্বিতীয়টি নতুন স্ট্রিং টির প্যাটার্ন এবং তৃতীয়টিতে মুল স্ট্রিং যেটা থেকে নতুন স্ট্রিং জেনারেট করতে হবে। উপরের কোডটিতে preg_replace মেথডটি $media এর উপর রেগুলার এক্সপ্রেশন (((w+)/)+)(.+)(.jpg) এক্সিকিউট করে অনেকগুলো নেস্টেড ভাগে ভাগ করে যেখানে $1 এ থাকে মুল ইমেজের প্রথম অংশ, $4 এ থাকে দ্বিতীয় অংশ এবং $5 এ থাকবে শেষ অংশ। তাহলে আমাদের নতুন স্ট্রিংটির প্যাটার্ন হবে $1resized/$4_200x200$5

regex101.com এর টুলটি ব্যবহার করে সরাসরি নির্দিষ্ট প্যাটার্নের জন্য রেগুলার এক্সপ্রেশন জেনারেট করা যায়।

এই পোস্টটিতে শুধুমাত্র রেগুলার এক্সপ্রেশনের সম্পর্কে ধারনা দেওয়া হল। বিস্তারিত জানতে উপরে উল্লিখিত সাইটে যেতে হবে।

বাংলায় অবজেক্টিভ-সি, সুইফ্ট এবং আইওএস অ্যাপ ও গেম ডেভেলপমেন্ট

বাংলায় অবজেক্টিভ-সি এর ধারনা ভাগা-ভাগি মূলক সিরিজ পোস্ট পুরোদমে চলছে। আশা করি এই সিরিজের ১০ চ্যাপ্টার শেষে আরেকটি সিরিজ শুরু হবে “রিয়াল আইফোন অ্যাপ্লিকেশন ডেভেলপমেন্ট উইথ ইউজার ইন্টারফেস – ১০ চ্যাপ্টার”
কেউ এই মাল্টি সিরিজের লেখক হয়ে দুই একটি চ্যাপ্টার নিয়ে লিখতে চাইলে যোগাযোগ করতে পারেন কমেন্টে।
গরম থাকতে থাকতেই ৪টি ম্যাজর সেকশন (Obj-C, iOS-GUI, Game, Publish&Marketing) সম্বলিত একটি পূর্ণ বাংলা কাগুজে বই আসতে পারে। যত বেশি Crowd Authors ততো কম ভুল এবং সঠিক তথ্যের শেয়ারিং

সেকশন ১ঃ অবজেকটিভ সি এর বেসিক ধারনা

UploaDrop [A Dropbox based File Uploading Solution of large files]

What is it?
UploaDrop is a dropbox based upload script which is used for uploading files and folders to dropbox instead of server storage.

Motivation
Most of the time, we, the developers, must have to manipulate large files on the website like videos, audios or other documents. If the unit size of files is small, then its okey. There is no big deal to handle these files of small size. But when the application requires to upload files of large size like 5GB on each upload, we need to consider the reliablity of the upload script. We need to consider the maximum size of files which can be uploaded. We need to consider the maximum bandwidth we can use at a time. We have to take the burden of server optimization.

To get rid of these headache, we can handle this file manipulation tasks to other 3rd party who is already established with the service of file manipulation.

Dropbox is cloud based file hosting server in which users can upload their files and can download when needed. Dropbox has provided lots of features including large file uploading with optimized way.

Dropbox has also provided an api which is highly user-friendly so that any developer can use that.

Objective
To develop a script in which visitors/users of the application can upload file via drag drop or choosing. Instead of the hosting space, these files will be uploaded on dropbox space of the owner of the application. Then these files can be used for different purposes.

Features
1. Multiple files uploading at a time
2. File uploading to owner’s dropbox storage
3. No need to have headache about file manipulation, storage, bandwidth of file uploading.
4. Recrsively finds every files from all folders and uploads to dropbox

Acknowledgements
First of all I would like to thank the Dropbox Team for providing this awesome service.

Then I thank Mr. Nuhil Mehdy (nuhil.net) to give me the idea.

Lets start the development of an simple application called UploaDrop by which end user will upload something to your website, and instead of your host, it will be uploaded on dropbox.

When you are a Developer
The first task is to create an app on your Dropbox account using developer account.

1. Go to https://www.dropbox.com/developers/apps and Click on “Create app” button.

2. Fill these given fields as the picture shows.

3. After completing the creation of your app you will see the details of your app by going https://www.dropbox.com/developers/apps and click on the App Name ‘UploaDrop’.

See the rounded area which provides app key and app secret. These two key defines the access of your dropbox account for uploading from outside.

4. Now open composer.json for editing and set these keys on this like the picture shows.

5. OK, In this step you are all set. Now lets get the access key. Execute getAccesskey.php on the browser which returns a url like
https://www.dropbox.com/1/oauth2/authorize?locale=&client_id=12ab34vd&response_type=code

6. Copy this url and paste on the browser. It will ask for permission to create a folder named app name on the dropbox account.

Click on “Allow”

7. An access key will be displayed like the given screenshot.

Save the Access key on some secured place.

8. Open index.php and and edit the $accesskey field on line 10.

Open processupload.php and do the same task on line 5.

Here, developer’s work is finished. All configuration is finished.

Front End behavior
1. Hit “index.php” on the browser, the front end page will be arrived.

2. In the drag&drop area, user can drag&drop their files and folders. A progress bar will be shown for each of the files when uploading. After completation of uploading of all files click on “Finish Uploading”.

This is the simple app. Actually, It is a brief instruction of how to use Dropbox Core Api.

Future Works
1. In the top area, all existing files are being displayed in recursive structure which is coded by me. In dropbox core api, there are options to create download link of each files, Editing, Deleting etc. These 3 features can be achieved in future.

2. If any compressed file is drop on the drag&drop area, it doesnt extract the compressed file. In future, it can be an issue.

Source Code (Github)
Watch Demo

Review of basic Java Standard Edition (আস্তে আস্তে জাভা শিখি)

Here is a list of basics about Java what we must know.

  • Code Structure
    [public static void main(String a[]) , class name]
  • Difference between C, C++ and JAVA
  • Why Java is better than other programming languages?
  • What do you mean by OOP?
  • Does Java supports OOP?
  • Define these terms
    • inheritence
    • encapsulation
    • polymorphism
  • Access Specifiers
  • Friend function
  • Friend Class
  • Super class, Sub class
  • Difference between abstract class and interface
  • implement or extend
  • Virtual class, virtual function
  • Differences between Function Overloading & Operator overloading
  • String Manipulation

As per my knowledge, If we learn these things with practicing some code related to these topics, we can start for any kind of development or to take in part in java related exams.

I am sorry to say that I can’t share these things right now. But in near future, a brief of these topics will be here.

[polldaddy poll=7717806]

API vs Library vs SDK [Self Note]

A Library is a collection of code that we can call from our own code, to help us do things more quickly/easily. For example, Let there is a class for pagination, and we just call the method of that class which does the pagination work.

An API (application programming interface) is a term meaning the functions/methods in a library that we can call to ask it to do things for us – the interface to the library.

An SDK ( (software development kit) is a library (often with extra tool applications, data files and sample code) that aid us in developing code that uses a particular system (e.g. extension code for using features of an operating system (Windows SDK), drawing 3D graphics via a particular system (DirectX SDK), writing add-ins to extend other applications (Office SDK), or writing code to make a device like an Arduino or a mobile phone do what we want)

[Collected]

HAPPY NEW YEAR, 2014 🙂

প্রতিক্রিয়া [আমি ও রুয়েট]

গত মঙ্গলবার (১৭ই সেপ্টেম্বর, ২০১৩) তারিখে আমার রুয়েট জীবনের শেষ ক্লাস, ক্লাসটেস্ট, ল্যাব, ল্যাব ফাইনাল, কুইজ , বোর্ড ভাইভা সব কিছুর পরিসমাপ্তি ঘটল।বাকি শুধু ফাইনাল পরীক্ষা আর থিসিস। এরপর থেকেই আমার ফেসবুকের ওয়াল ভরে আছে বন্ধু,ক্লাসমেট,রুমমেটদের দু:খভরা স্ট্যাটাস দিয়ে। তাই আমিও লিখতে বসলাম।তবে আমি লিখব সেইসব জিনিসের তালিকা যা আমি ঢাকা গিয়ে মিস করব।

খাবার-দাবার :

  • বৈশাখী হোটেলের ডালভাজি (সকালের নাস্তা, পরোটার জন্য না, ডালভাজির জন্য যেতাম)।
  • কাশেমের (k.f.c) হোটেলের আলুভাজি (শুধু আলুভাজি দিয়েই দুই প্লেট ভাত খেয়ে ফেলা সম্ভব)।
  • নর্দানের মোড়ের নাহিলের আম্মার (আমাদের খালা) বানানো ছোলা(প্রতিদিন বিকালে দুই বাটি) আর বেগুনি।
  • ডাইনিং এর পাতলা ডাল। আমার কিন্তু ভালই লাগে।খাওয়া শেষে একবাটি ডাল চুমুক দিয়ে খাওয়া ( পুরো মাখখখখখন)।

বন্ধু-বান্ধব ও অন্যান্য:

  • ডলারের সাথে সেন্স অব হিউমার এর প্র্যাকটিস।
  • সাদিয়া জামান এর সাথে রাত ১২ টার পর ফেসবুকে আড্ডা (3rd ও 4th সেমিস্টারে, সে যাবতীয় পড়াশুনা শেষ করে তারপর ফেবুতে আসত।)
  • প্রবালের একটু পর পর ফেবুতে নক করে “ওই, কি করস?” জিগ্গাসা।
  • রন্জুর ইংরেজী।
  • কারনে অকারনে শাহেদকে মারধোর করা।
  • অভির সাথে শেষ বেঞ্চে বসে সারা ক্লাস ধরে গল্প আর স্যারদের ঝাড়ি খাওয়া।
  • তাহমিদকে চুম্মা দিতে চাইলে ওর লজ্জাভরা মুখ দর্শন।
  • অনিকের সাথে গভীর রাতে মেসেন্জারে অহেতুক গেজানো। নেই কাজ তো খই ভাজ টাইপ
  • কিছু শুভাকাঙ্খী।
  • কিছু অশুভাকাঙখী।
  • সামাদের সাথে রোজ গভীর রাতে তালাইমারী যাওয়া
  • গভীর মনোযোগ দিয়ে স্যার / ম্যাডামের লেকটার শুনার সময় অহেতুক মিসকল দিয়ে অনন্যার মনোযোগ নষ্ট করা।
  • রুমে আই.বি খেলার আসরে রন্জুর “আর কোন পিট নেই” বলা।
  • রুমে আই.বি খেলার আসরে হারার সময় দেবুর নিজের পক্ষে নতুন নতুন নিয়ম আবিস্কার
  • কিছু বন্ধু যারা আমার সামনে আমার সমালোচনা করে। (আমার পছন্দের কাজ)
  • কিছু মানুষ যারা আমার পেছনে আমার সম্পর্কে কটুক্তি করে এবং আমার সামনে খুবই ভাল ভাব ধরে। (আমার অপছন্দের কাজ)
  • কিছু জুনিয়র যারা “দাদা দাদা” ডাকতে ডাকতে অস্থির করে ফেলে।
  • কিছু জুনিয়র যারা পাশ কেটে চলে যায় এবং মনে মনে গালি দেয়।
  • কিছু মানুষ যাদের কমন সেন্স এ আমি মুগ্ধ।
  • কিছু মানুষ যাদের কমন সেন্স আমার থেকেও কম (আমার কমন সেন্স এর মার্ক ১/১০০)।
  • কিছু বন্ধু-বান্ধব যারা আমার উপর খুবই রাগ সেই শুরু থেকে কিনতু আমি কারন জানি না।আমার সামনে প্রকাশ করে না কিনতু আমার অন্য এক বন্ধুর কাছে কটুক্তি করে। 🙂
  • কিছু প্রিয় বন্ধু-বান্ধব (প্রবাল, সাদিয়া জামান ,অভি)সময়ের ব্যবধানে যাদের সাথে দুরত্ব বেড়ে গেছে (দোষটা হয়ত আমারই)
  • ফয়সাল যাকে না দেখলে আমি বুঝতাম না যে আমার থেকেও নিশ্চিন্ত পোলাপান আছে।
  • কিছু শিক্ষক, কিছু সিনিয়র, কিছু সমবয়সী, কিছু জুনিয়র যাদের থেকে আমি সামনে আগানোর অনুপ্রেরণা পাই।

আরও আনেক কিছু আছে। এখন মনে পড়ছে না। মনে পড়লেই আপডেট হবে। 🙂

Removing index.php from url of CodeIgnitor project | Using .htaccess file

Step 1 : Edit the configuration file to give the permission to override default settings.
command: sudo nano /etc/apache2/sites-available/default
Change the value of AllowOverride to ‘All’ from ‘none’

sample:


    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    
        Options FollowSymLinks
        AllowOverride All                                 <- HERE
    
    
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All                                 <- HERE
        Order allow,deny
        allow from all
    

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    


Step 2: Enable module rewrite
command: sudo a2enmod rewrite

Step 3: Restart apache server
command: sudo service apache2 restart

sample .htaccess:

RewriteEngine on
RewriteCond $1 !^(index.php|images|robots.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

N.B: Don’t forget to press Enter once at the end of the htaccess file.Because Newline represents the end of file.

SELF NOTE

Facebook isn’t loading on MAC? (ম্যাক এ ফেসবুক আসে না?)

টাকা পয়সা জমিয়ে একটা ম্যাক কিনলাম। এরপর বাংলালায়নের নতুন মডেমের সফ্টওয়ার দিয়ে আমার পুরান মডেম দিয়ে নেট কানেক্ট করলাম।নেট কানেক্টেড কিন্তু কোন পেজ আসে না।কয়েকদিন চলল এভাবে।৩-৪ দিন পর থেকে ফেসবুক বাদে বাকি সব লোড হচ্ছিল। “ফেসবুক কেন আসে না” এই প্রশ্ন করতে করতে যখন দিশেহারা তখন সন্ধান পাইলাম কি করলে ঠিক হবে।কিন্তু সেই করাটা কোথায় হবে সেটা খুজে পাচ্ছিলাম না।আরও ৩-৪ দিন পর পেয়ে গেলাম এই মাত্র (৫ই জুলাই,২০১৩ রাত ১০:০৭)।

চলেন সমাধানটি দেখে নেই।
প্রধমেই চলে যান “System Preference” এ। তারপর “Network” এ।
বামদিকের লিস্ট থেকে সিলেক্ট করেন আপনার ইন্টারনেট ব্যাবহার করার মাধ্যমটি।
“Advanced” এ ক্লিক করে “Hardware” এ যান।
এবার নিচের মত করে সবগুলি অপশন সিলেক্ট করে “OK” চাপুন।
Configure : Manually
MTU : 1400

বাকিগুলো অপরিবর্তনীয়।
এখন ধুমাইয়া ফেসবুকিং করছি।

কি মিয়া ভাই, কই যান? MTU কি জিনিস শুনবেন না?
“communication protocol” এর একটি নির্দিস্ট লেয়ারে সর্বোচ্চ যে কয়টি ফ্রেম পাঠানো যায় সে সংখ্যাকে বলা হয় MTU (Maximum Transmission Unit)
বিভিন্ন ISP এর MTU এর মান বিভিন্ন হয়।তাই MTU এর মান ম্যানুয়ালী পরিবর্তন করতে হয়।

নুহিল ভাই এবং জয় দা কে ধইন্যা।

Top X rated products for Virtuemart Joomla 2.5

As one of my client upgraded his site from joomla 1.5 to 2.5 .Everything was ok but top rate product module was for only joomla 1.5/1.7 version. So, He told me to find a suitable module for Display top rated products. I have searched a lot but didn’t get any working module for solving this.So, I have decided to create a module. So ,I learn’t how to create a simple module for joomla 2.5 from here converted the code(top rated module for 1.5) for Joomla 2.5. As database structure in 2.5 is changed from 1.5/1.7 I had to play with SQL queries. Here is the module .You can use this and let me know reviews.

Feature:

  1. Its easy to use
  2. Can be defined the number of top products to display

Download this module from here .
send email on ujjal.ruet@yahoo.com

Thank you.

Example :