Tag Archives: Filter

ইউনিক্সঃ পাইপ এবং ফিল্টার (Unix – Pipes and Filters)

Huge Sell on Popular Electronics

রিদওয়ান বিন শামীম

 

ইউনিক্সে দুটি কম্যান্ড এমনভাবে সংযুক্ত করা যায় যাতে এক প্রোগ্রামের আউটপুট অন্য প্রোগ্রামের ইনপুট হিসেবে ব্যবহৃত হতে পারে। পাইপ থেকে দুই বা ততোধিক প্রোগ্রাম এভাবে সংযুক্ত হতে পারে।

কম্যান্ড লাইনে দুটি কম্যান্ডের মাঝে উল্লম্ব (|) কম্যান্ড ব্যবহার করে পাইপ করা যায়। এক প্রোগ্রাম অন্য প্রোগ্রামের থেকে ইনপুট

নিয়ে আদর্শ আউটপুট দেখালে তাকে filter হিসেবে দেখানো হয়।

 

গ্রেপ কম্যান্ড

এটি নির্দিষ্ট লাইন প্যাটার্নের সন্ধান করে, এর সিনট্যাক্স হল,


$grep pattern file(s)

 

গ্রেপকে ফাইলনেম না দিলে এটি পুরো স্ট্যান্ডার্ড ইনপুটকে পড়ে, আর এভাবেই সকল ফিল্টার প্রোগ্রাম কাজ করে,


$ls -l | grep "Aug"
-rw-rw-rw-   1 john  doc     11008 Aug  6 14:10 ch02
-rw-rw-rw-   1 john  doc      8515 Aug  6 15:30 ch07
-rw-rw-r--   1 john  doc      2488 Aug 15 10:51 intro
-rw-rw-r--   1 carol doc      1605 Aug 23 07:35 macros
$

 

গ্রেপ কম্যান্ডের সাথে কাজ করে এমন কয়েকটি অপশন,

 

অপশন
-v
-n
-l
-c
-i

 

কেস ইনটেনসিভ সার্চের জন্য -i অপশন ব্যবহার করতে পারি,


$ls -l | grep -i "carol.*aug"
-rw-rw-r--   1 carol doc      1605 Aug 23 07:35 macros
$

 

সর্ট কম্যান্ড

সর্ট কম্যান্ড টেক্সটের লাইনকে এলফাবেটিকেলি বা নিউমেরিকালি সজ্জিত করে,


$sort food
Afghani Cuisine
Bangkok Wok
Big Apple Deli
Isle of Java
Mandalay
Sushi and Sashimi
Sweet Tooth
Tio Pepe's Peppers
$

 

সর্টিং কন্ট্রোলের জন্য কিছু অপশন আছে,

অপশন
-n
-r
-f
+x

 

নিচের পাইপ ls, grep, এবং sort এসব কম্যান্ডের সমন্বয়ে হয়ে থাকে,


$ls -l | grep "Aug" | sort +4n
-rw-rw-r--  1 carol doc      1605 Aug 23 07:35 macros
-rw-rw-r--  1 john  doc      2488 Aug 15 10:51 intro
-rw-rw-rw-  1 john  doc      8515 Aug  6 15:30 ch07
-rw-rw-rw-  1 john  doc     11008 Aug  6 14:10 ch02
$

pg ও অন্যান্য কম্যান্ড

লং ডিরেক্টরি লিস্টিংকে সহজ সর্টেড লিস্টিং করতে more কম্যান্ড দ্বারা আউটপুটকে পাইপ করাতে হয়,


$ls -l | grep "Aug" | sort +4n | more
-rw-rw-r--  1 carol doc      1605 Aug 23 07:35 macros
-rw-rw-r--  1 john  doc      2488 Aug 15 10:51 intro
-rw-rw-rw-  1 john  doc      8515 Aug  6 15:30 ch07
-rw-rw-r--  1 john  doc     14827 Aug  9 12:40 ch03
        .
        .
        .
-rw-rw-rw-  1 john  doc     16867 Aug  6 15:56 ch05
--More--(74%)

এরপর ফাইলসাইজ দ্বারা সর্টেড টেক্সটে স্ক্রিন ফিলআপ হয়ে যাবে, এরপর অন্য যেকোনো প্রোগ্রামের জন্য কম্যান্ড লিস্টেড করা যাবে ইউনিক্স ব্যবহার করে।

 

পিএইচপি ফিল্টারস (PHP Filters)

Huge Sell on Popular Electronics

অনিরাপদ উৎস থেকে ডাটাকে বৈধ করার জন্য আমরা পিএইচপি ফিল্টার ব্যবহার করে থাকি। ওয়েব অ্যাপ্লিকেশান এর জন্য পিএইচপি ফিল্টার একটি গুরুত্ত পূর্ণ বিষয়। পিএইচপি ফিল্টার extension বানানো হয়েছে ডাটাকে খুব সহজে এবং তারাতারি ফিল্টার করার জন্য।

 

কেন ফিল্টার ব্যবহার করা হয়

প্রায় সব ওয়েব অ্যাপ্লিকেশান বাইরের ইনপুট এর উপর নির্ভরশীল। যা একজন ইউজার বা ওয়েব অ্যাপ্লিকেশান এর মাধ্যমে আসতে পারে। ফিল্টার ব্যবহার করার মাধ্যমে আমরা সেই ডাটাগুলোকে বৈধ করতে পারি।

বাইরের ডাটা গুলো কি রকম হতে পারে

ফর্ম ব্যবহার করে কোন ডাটা নেওয়ার জন্য, কুকিস, ওয়েব সার্ভিসেস ডাটা, সারভার variables, ডাটাবেস query করার মাধ্যমে।

ফাংশন এবং ফিল্টার

filter_var() একটি নির্দিষ্ট variable কে ফিল্টার করার জন্য
filter_var_array() অনেকগুলো variable ফিল্টার করার জন্য
filter_input একটা ইনপুট variable কে ফিল্টার করার জন্য
filter_input_array অনেকগুলো ইনপুট variable কে ফিল্টার করার জন্য

আমরা filter_var() ফাংশন ব্যবহার করে একটি integer কে বৈধ করব।


< ?php
 $int = 123;
if(!filter_var($int, FILTER_VALIDATE_INT)) {
 echo("Integer is not valid");
 } else {
 echo("Integer is valid");
 }
 ?>

FILTER_VALIDATE_INT ব্যবহার করা হয়েছে variable কে ফিল্টার করার জন্য যদি integer টি বৈধ হয় তাহলে ফলাফল আসবে "Integer is valid"
যদি আমরা integer এর পরিবর্তে 123abc ব্যবহার করি তাহলে output আসবে Integer is not valid।

Validating এবং Sanitizing

বৈধ ফিল্টার

১। ইউজার এর ইনপুট গুলোকে বৈধ করার জন্য
২। নির্দিষ্ট গঠন অনুজায়ে ডাটা তৈরি করার জন্য (যেমন ইমেইল অথবা URL এর ক্ষেত্রে)

Sanitizing ফিল্টার

১। কোন নির্দিষ্ট characters কে অনুমোদন দেওয়ার জন্য
২। কোন গঠন বৈশিষ্ট্য মেনে চলে না
৩। সবসময় স্ট্রিং রিটার্ন করে

filter_var() ফাংশন ব্যবহার করে আমরা integer কে বৈধ করব।


< ?php
 $var=300;
$int_options = array(
 "options"=>array
 (
 "min_range"=>0,
 "max_range"=>256
 )
 );
if(!filter_var($var, FILTER_VALIDATE_INT, $int_options)) {
 echo("Integer is not valid");
 } else {
 echo("Integer is valid");
 }
 ?>

এই কোড এ options ব্যবহার করতে হবে একটি array এর ভিতর options নাম দিয়ে যদি ফ্লাগ ব্যবহার করা হত তাহলে array লাগত না। আমাদের integer ছিল 300 যা রেঞ্জ এর মধ্যে মিলে না সুতরাং এর ফলাফল আসবে "Integer is not valid"।

 

ইনপুট ডাটা বৈধ করা

filter_input() ফাংশন ব্যবহার করার মাধ্যমে আমার ডাটা বৈধ করব প্রথমে আমরা চেক করব ডাটা আসলে ইনপুট করা হয়েছে কিনা


< ?php
 if(!filter_has_var(INPUT_GET, "email")) {
 echo("Input type does not exist");
 } else {
 if (!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL)) {
 echo "E-Mail is not valid";
 } else {
 echo "E-Mail is valid";
 }
 }
 ?>

GET মেথড ব্যবহার করে ইনপুট (ইমেইল) চেক করবে যে তা বৈধ কিনা

Sanitize ইনপুট

ফর্ম কে URL এ পাঠানোর মাধ্যমে আমরা একে বুজবো
প্রথমে আমরা চেক করব ইনপুট ডাটা ফাকা আছে কিনা
তারপর আমরা filter_input() ফাংশন ব্যবহার করে ডাটা কে sanitize করব।


< ?php
 if(!filter_has_var(INPUT_POST, "url")) {
 echo("Input type does not exist");
 } else {
 $url = filter_input(INPUT_POST,
 "url", FILTER_SANITIZE_URL);
 }
 ?>

উপড়ের উধাহরন টি যদি POST মেথড ব্যবহার করা হয়

প্রথমে চেক করবে ইনপুট URL post টাইপ এর কিনা, যদি ইনপুট variable exists করে তাহলে character অনুজায়ে sanitize করবে এবং $url এ variable জমা করবে। যদি ইনপুট variable এর স্ট্রিং http://bangla.salearningschøøool.comএর মতন হয় আমরা sanitize করার পর পাব http://bangla.salearningschool.com

একটি ফর্মে একাধিক ইনপুট থাকতে পারে সে ক্ষেত্রে আমরা filter_var or filter_input এর পরিবর্তে filter_var_array or the filter_input_array ব্যবহার করব। এই উধাহরন এ আমরা filter_input_array() ফাংশন ব্যবহার করব তিনটা GET variables এর ক্ষেত্রে এই তিনটি হল নাম, বছর , ইমেইল।


< ?php
 $filters = array
 (
 "name" => array
 (
 "filter"=>FILTER_SANITIZE_STRING
 ),
 "age" => array
 (
 "filter"=>FILTER_VALIDATE_INT,
 "options"=>array
 (
 "min_range"=>1,
 "max_range"=>120
 )
 ),
 "email"=> FILTER_VALIDATE_EMAIL
 );
$result = filter_input_array(INPUT_GET, $filters);
if (!$result["age"]) {
 echo("Age must be a number between 1 and 120.
");
 } elseif(!$result["email"]) {
 echo("E-Mail is not valid.
");
 } else {
 echo("User input is valid");
 }
 ?>

নেম ইনপুট ফিল্ড একটি array এর মধ্যে রাখা হয়েছে এবং ফিল্টার সেট করা হয়েছে । এরপর যে array গুলো সেট করা হয়েছে তাদেরকে filter_input_array() ফাংশন এর মাধ্যমে গেট মেথড ব্যবহার করে ডাকা হবে। এরপর ইনপুটশ গুলো বৈধ কিনা তা চেক করবে।

 

Filter Callback

filter_callback ফিল্টার ব্যবহার করে ইউজার defined করা সম্ভব। সেই ক্ষেত্রে আমাদের ডাটা filtering এ পূর্ণ নিয়ন্ত্রণ থাকবে। নিচের উধাহরণটিতে আমরা user created ফাংশন ব্যবহার করেছি সকল "_" থেকে whitespace এ পরিবর্তন করার জন্য।


< ?php
 function convertSpace($string) {
 return str_replace("_", " ", $string);
 }
$string = "Peter_is_a_great_guy!";
echo filter_var($string, FILTER_CALLBACK,
 array("options"=>"convertSpace"));
 ?>

 

এর ফলাফল আসবে

Peter is a great guy!

 

উপড়ের উধারণটিতে সকল "_" পরিবর্তন করা হয়েছে whitespace এ এবং filter_var() ফাংশন কে কল করা হয়েছে FILTER_CALLBACK দ্বারা

 

jQuery ট্রাভার্সিং-ফিল্টারিং । JQuery Traversing – Filtering

Huge Sell on Popular Electronics

লিখেছেন সুদীপ্ত সাহা

 

জেক্যুয়েরি ট্রাভার্সিং - ফিল্টারিং

ইলিমেন্টের ন্যারো-ডাউন সার্চ

বহুল ব্যবহৃত তিনটি প্রাথমিক ফিল্টারিং মেথড হল first(), last() এবং eq()। এগুলো ব্যবহার করে অনেক ইলিমেন্ট থেকে কোন নির্দিষ্ট ইলিমেন্টকে অবস্থান অনুযায়ী খুঁজে বের করা সম্ভব।

অন্যান্য ফিল্টারিং মেথড যেমন filter() এবং not() এগুলো ব্যবহার করে ইলিমেন্টকে খুঁজে বের করে যায় যা কখনো নির্দিষ্ট বৈশিষ্ট্যের সাথে ঠিকভাবে মিলে আবার কখনো মিলে না।

 

জেক্যুয়েরি first() মেথড

first() মেথড কোন নির্দিষ্ট ইলিমেন্টের প্রথম উপাদানকে (এলিমেন্টকে) রিটার্ন করে।
নিচের উদাহরণটি কোন <div> এর প্রথম <p> ইলিমেন্টকে সিলেক্ট করেঃ


$(document).ready(function(){
    $("div p").first();
});

ফলাফল : first()

জেক্যুয়েরি last() মেথড

last() মেথড কোন নির্দিষ্ট ইলিমেন্টের শেষ উপাদানকে (এলিমেন্টকে) রিটার্ন করে।
নিচের উদাহরণটি কোন <div> এর শেষ <p> ইলিমেন্টকে সিলেক্ট করেঃ


$(document).ready(function(){
    $("div p").last();
});

ফলাফল : last()

 

জেক্যুয়েরি eq() মেথড

eq() মেথড কোন নির্দিষ্ট ইলিমেন্টের নির্দিষ্ট ইনডেক্স নাম্বার অনুযায়ী উপাদানকে রিটার্ন করে।

ইনডেক্স নাম্বার সবসময় ০ থেকে শুরু হয়, তাই প্রথম উপাদানের ইনডেক্স নাম্বার হবে ০, ১ নয়।

নিচের উদাহরণটি <p> এর দ্বিতীয় ইলিমেন্টকে সিলেক্ট করে (ইনডেক্স নাম্বার ১)


$(document).ready(function(){
    $("p").eq(1);
});

ফলাফল : eq()

 

জেক্যুয়েরি filter() মেথড

filter() মেথডের সাহায্যে আপনি একটি নির্দিষ্ট বৈশিষ্ট্য ঠিক করে দিতে পারবেন। যেই উপাদানগুলো বৈশিষ্ট্যের সাথে মিলবে না সেগুলো সিলেকশন থেকে বাদ পড়বে এবং যেগুলো মিলবে সেগুলো রিটার্ন করবে।

নিচের উদাহরণটি <p> এর যেসকল উপাদান “intro” ক্লাসের অন্তর্ভুক্ত সেগুলো রিটার্ন করেঃ


$(document).ready(function(){
    $("p").filter(".intro");
});

ফলাফল : filter()

 

জেক্যুয়েরি not() মেথড

not() মেথড সেই উপাদানগুলো রিটার্ন করবে যেগুলো বৈশিষ্ট্যের সাথে মিলবে না।

ইঙ্গিতঃ not() মেথড হল filter() মেথডের বিপরীত

নিচের উদাহরণটি <p> এর যেসকল উপাদান “intro” ক্লাসের অন্তর্ভুক্ত নয় সেগুলো রিটার্ন করেঃ


$(document).ready(function(){
    $("p").not(".intro");
});

ফলাফল : not()