Tag Archives: ফাংশন

C এর সাথে Python প্রোগ্রামিং এক্সটেনশন (Python Extension Programming with C)

Huge Sell on Popular Electronics

C এর সাথে Python প্রোগ্রামিং এক্সটেনশন

C, C++ অথবা Java প্রোগ্রামিং এর যেকোন কোড Python script এর সাথে ইন্টেগ্রেট/ রূপান্তর করা যায়, যাকে Python এক্সটেনশন বলে। Python এক্সটেনশন ফাইলগুলো স্বাভাবিক C লাইব্রেরীর মত, Unix অপারেটিং সিস্টেম এ .so ফরম্যাট ও Windows মেশিনে.dll ফরম্যাটের হয়।

 

এক্সটেনশন লেখার পূর্বশর্ত

Python এক্সটেনশন লিখতে হলে Python হেডার ফাইল এর দরকার পড়ে Unix মেশিনে এসব ক্ষেত্রে python2.5-dev নামক একটি প্যাকেজ ইনস্টল করার দরকার হয়। Windows মেশিনে অবশ্য এই হেডার ফাইল গুলো বাইনারি Python ইনস্টলার প্যাকেজের সাথেই থাকে।

প্রথম দিকে Python extension মোডিউল তৈরি করতে হলে কোডটিতে চার ধরনের ফাইল সাজাতে হবে। যেমন,

  • হেডার ফাইলh.
  • C ফাংশন functions (যেগুলো মোডিউল এর ইন্টারফেস হিসেবে ব্যবহৃত হবে)।
  • ফাংশনের একটি টেবিল (Python developer দের জন্য দরকার)
  • একটি ইনিশিয়ালাইজেশন ফাংশন

 

হেডার ফাইল Python.h

Python API এ ঢোকার জন্য Python.h হেডার ফাইলটিকে C সোর্স ফাইল এর অন্তর্গত করে Python ইন্টারপ্রেটার এর সাথে এক্সটেনশন মোডিউল ইন্টেগ্রেট করতে হবে। C ফাংশনগুলো নিচের তিন রকমের হতে পারে।


static PyObject *MyFunction( PyObject *self, PyObject *args );

static PyObject *MyFunctionWithKeywords(PyObject *self,
                                 PyObject *args,
                                 PyObject *kw);

static PyObject *MyFunctionWithNoArgs( PyObject *self );

 

প্রতিটি স্টেটমেন্টই ফলাফল হিসেবে একটি Python object দিবে। Python এ C এর মত কোন ভয়েড ফাংশন নেই। ভয়েড এর ক্ষেত্রে, Python এর Nonevalue’র সমতুল্য C value পাওয়া যাবে। Python headers গুলো এই কাজ করার জন্য Py_RETURN_NONE নামের ম্যাক্রো ফাইল ঠিক করে।

এ ধরনের Python এক্সটেনশনে ব্যবহৃত C ফাংশন গুলোকে স্ট্যাটিক (স্থিতিশীল) ফাংশন বলে, কারন এক্সটেনশন মোডিউলের বাইরে এদের কোন ব্যবহার নেই। Python মোডিউল ও Python ফাংশন গুলোর নাম একত্রিত করে C ফাংশনের নামগুলো ঠিক করা হয়। নিচের উদাহরণটিক লক্ষ্য করি,


static PyObject *module_func(PyObject *self, PyObject *args) {
/* Do your stuff here. */
Py_RETURN_NONE;
}


 

এই Python ফাংশনটির নাম func,  এবং এটি module নামক মোডিউল এর ভেতর অবস্থিত।

 

Method Mapping Table (মেথড ম্যাপিং টেবিল)

মেথড টেবিল হচ্ছে নিচের PyMethodDef স্ট্রাকচারের একটি সাধারণ বিন্যাস (array)।

struct PyMethodDef {   char *ml_name;   PyCFunction ml_meth;   int ml_flags;   char *ml_doc;};

নিচে এই স্ট্রাকচারের সদস্য গুলোর বর্ননা দেয়া হলঃ

  • ml_name:Python ইন্টারপ্রেটার প্রোগ্রামে ব্যবহৃত হবার সময় যেই নাম ব্যবহার করে।
  • ml_meth:ফাংশনের লোকেশন।
  • ml_flags:এটা ইন্টারপ্রেটারকে ধারণা দেয় যে, ml_meth কোন সংকেতটি ব্যবহার করছে (METH_VARARGS, METH_KEYWORDS কিংবা METH_NOARGS)
  • ml_doc: ফাংশনের docstring, প্রোগ্রামার কোন কিছু না লেখলে এটা বাদ যাবে।

উপযুক্ত মেম্বারগুলোর জন্য, এই টেবিলটি একটি শূন্য মানের সেন্টিনেল (sentinel) এর সাহায্যে বাতিল করতে হবে। উদাহরন হিসেবে, উপরের ফাংশনের জন্য, নিচের মেথড ম্যাপিং টেবিলটি সম্ভবঃ


static PyMethodDef module_methods[] = {
   { "func", (PyCFunction)module_func, METH_NOARGS, NULL },
   { NULL, NULL, 0, NULL }
};

 

ইনিশিয়ালাইজেশন ফাংশনঃ

এক্সটেনশন মোডিউলের সর্বশেষ অংশ হচ্ছে ইনিশিয়ালাইজেশন ফাংশন। মোডিউল লোড হবার পড়ে Python ইন্টারপ্রেটার এই ফাংশনটি ব্যবহার করে। এই ফাংশনের নামকরন initModule আকারের হয় (Module হচ্ছে মোডিউলটির নাম)।।

আপনি যেই লাইব্রেরী তৈরি করবেন সেটা থেকেই ইনিশিয়ালাইজেশন ফাংশন এক্সপোর্ট করা হবে। Python হেডার ফাইল গুলো PyMODINIT_FUNC ফাংশনের সাহায্যে কম্পাইলেশনের সময় বিভিন্ন পরিস্থিতি অনুযায়ী এই এক্সপোর্টটি করে থাকে। সেক্ষেত্রে আপনাকে এটি ফাংশন সংজ্ঞায়িত করার সময় ব্যবহার করতে হবে। C ইনিশিয়াল ফাংশন সাধারণত নিচের কাঠামো অনুযায়ী হয়ঃ


PyMODINIT_FUNC initModule() {
   Py_InitModule3(func, module_methods, "docstring...");
}

 

এখানে, Py_InitModule3 ফাংশনের ৩টি মেম্বার হচ্ছে−

  • func: যে ফাংশনটি এক্সপোর্ট করা হবে।
  • module_methods:ম্যাপিং টেবিলের নাম।
  • docstring: এক্সটেনশনে ব্যবহৃত কমেন্ট।

যেমন,


#include <Python.h>

static PyObject *module_func(PyObject *self, PyObject *args) {
   /* Do your stuff here. */
   Py_RETURN_NONE;
}

static PyMethodDef module_methods[] = {
   { "func", (PyCFunction)module_func, METH_NOARGS, NULL },
   { NULL, NULL, 0, NULL }
};

PyMODINIT_FUNC initModule() {
   Py_InitModule3(func, module_methods, "docstring...");
}

 

নিচের উদাহরণটি উপরের কনসেপ্ট গুলোর আরেকটি প্রয়োগঃ


#include <Python.h>

static PyObject* helloworld(PyObject* self)
{
    return Py_BuildValue("s", "Hello, Python extensions!!");
}

static char helloworld_docs[] =
    "helloworld( ): Any message you want to put here!!\n";

static PyMethodDef helloworld_funcs[] = {
    {"helloworld", (PyCFunction)helloworld, 
     METH_NOARGS, helloworld_docs},
    {NULL}
};

void inithelloworld(void)
{
    Py_InitModule3("helloworld", helloworld_funcs,
                   "Extension module example!");
}

 

এখানে Py_BuildValue ফাংশনটি Python এর মান (value) তৈরি করে। উপরের কোডটি hello.c ফাইল এ সেভ করুন. এখন আমরা দেখবো কিভাবে Python script এর এই মোডিউলটিকে ইনস্টল ও কম্পাইল করা যায়।

 

এক্সটেনশন তৈরি ও ইন্সটল করাঃ

distutils প্যাকেজ এর সাহায্যে সহজেই Python এর অরিজিনাল মোডিউল ও এক্সটেনশন সঠিকভাবে বন্টন করা যায়। মোডিউল গুলো সোর্স আকারে ভাগ করা থাকে, এবং setup.py  এর সাহায্যে তৈরি ও ইন্সটল করা হয়। উপরের মোডিউলটির জন্য নিম্নোক্ত setup.py স্ক্রিপ্টটি তৈরি করতে হবে।


from distutils.core import setup, Extension
setup(name='helloworld', version='1.0',  \
      ext_modules=[Extension('helloworld', ['hello.c'])])

 

এখন নিচের কমান্ডটি প্রয়োগ করলে তা সঠিক কম্পাইলার, লিঙ্কার কমান্ড এবং ফ্ল্যাগ এর সাহায্যে প্রয়োজনীয় কম্পাইলেশন, সংযোজন করবে, ও সঠিক ডিরেক্টরিতে ফলাফলস্বরূপ ডাইনামিক লাইব্রেরী কপি করবে ।


$ python setup.py install

 

Unix সিস্টেমে আপনাকে রুট হিসেবে এই কমান্ডটি রান করাতে হবে যাতে করে সাইট-প্যাকেজ ডিরেক্টরি তে লেখার পারমিশন থাকে। Windows এর জন্য অবশ্য এটি কোন সমস্যা না।

 

Importing Extensions

একবার এক্সটেনশন ইন্সটল করা হলে, আপনি সেই এক্সটেনশন Python স্ক্রিপ্টে এভাবে ইম্পোর্ট করতে পারবেন।


#!/usr/bin/python
import helloworld

print helloworld.helloworld()

 

এই মডেলটি নিচের ফলাফল দিবে।


Hello, Python extensions!!

 

 

Passing Function Parameters

যেহেতু আপনি এমন ফাংশন চান যেটা আর্গুমেন্ট গ্রহণ করতে পারে, তাই নিচের যেকোনো C function ব্যবহার করতে পারেন। উদাহরণস্বরূপ, নিচের ফাংশনটি এমনভাবে সংজ্ঞায়িত করা যেতে পারে,


static PyObject *module_func(PyObject *self, PyObject *args) {
   /* Parse args and do something interesting here. */
   Py_RETURN_NONE;
}

 

নতুন ফাংশনের জায়গা সম্বলিত মেথড টেবিলটি এমন হবেঃ


static PyMethodDef module_methods[] = {
   { "func", (PyCFunction)module_func, METH_NOARGS, NULL },
   { "func", module_func, METH_VARARGS, NULL },
   { NULL, NULL, 0, NULL }
};

 

C ফাংশনের PyObject থেকে আর্গুমেন্ট এক্সট্রাক্ট করার জন্য API PyArg_ParseTuple ফাংশনটি ব্যবহার করতে পারেন। PyArg_ParseTuple এর প্রথম আর্গুমেন্টটি হচ্ছে args আর্গুমেন্ট। এই অবজেক্টটিকে আপনি parsing করবেন। দ্বিতীয় আর্গুমেন্টটি হবে এমন একটি ফরম্যাট স্ট্রিং যেটা আপনি যেভাবে আর্গুমেন্ট গুলো চান সেভাবে বর্ননা করবে। প্রতিটি আর্গুমেন্ট ফরম্যাট স্ট্রিং এর এক বা একাধিক ক্যারেক্টার দ্বারা প্রকাশিত।


static PyObject *module_func(PyObject *self, PyObject *args) {
   int i;
   double d;
   char *s;

   if (!PyArg_ParseTuple(args, "ids", &i, &d, &s)) {
      return NULL;
   }
   
   /* Do something interesting here. */
   Py_RETURN_NONE;
}

 

নতুন মোডিউলের ভার্সন কম্পাইল ও ইম্পোর্ট করলে নতুন ফাংশনে যেকোনো ধরনের যেকোনো সংখ্যক আর্গুমেন্ট সংযুক্ত করা যায়। যেমন,


module.func(1, s="three", d=2.0)
module.func(i=1, d=2.0, s="three")
module.func(s="three", d=2.0, i=1)


এখানে আপনি আপনার প্রয়োজন মত আরও বৈচিত্র আনতে পারেন।

PyArg_ParseTuple  ফাংশন

PyArg_ParseTuple ফাংশনের স্ট্যান্ডার্ড সিগ্নেচার হচ্ছেঃ


int PyArg_ParseTuple(PyObject* tuple,char* format,...)

 

এই ফাংশনটি ভুল হলে ০ মান আসবে, আর সঠিক হলে শূন্য ছাড়া অন্য কোন মান আসবে। এখানে tuple হচ্ছে PyObject*, যা C ফাংশনের দ্বিতীয় আর্গুমেন্ট, এবং format হচ্ছে একটি C স্ট্রিং, যা আবশ্যিক (mandatory) ও ঐচ্ছিক (optional) আর্গুমেন্ট গুলো বর্ননা করে।

নিচে PyArg_ParseTuple ফাংশনের ফরম্যাট কোড গুলো দেয়া হলঃ

Code C type Meaning
c char A Python string of length 1 becomes a C char.
d double A Python float becomes a C double.
f float A Python float becomes a C float.
i int A Python int becomes a C int.
l long A Python int becomes a C long.
L long long A Python int becomes a C long long
O PyObject* Gets non-NULL borrowed reference to Python argument.
s char* Python string without embedded nulls to C char*.
s# char*+int Any Python string to C address and length.
t# char*+int Read-only single-segment buffer to C address and length.
u Py_UNICODE* Python Unicode without embedded nulls to C.
u# Py_UNICODE*+int Any Python Unicode C address and length.
w# char*+int Read/write single-segment buffer to C address and length.
z char* Like s, also accepts None (sets C char* to NULL).
z# char*+int Like s#, also accepts None (sets C char* to NULL).
(...) as per ... A Python sequence is treated as one argument per item.
| The following arguments are optional.
: Format end, followed by function name for error messages.
; Format end, followed by entire error message text.

Returning Values

Py_BuildValue অনেকটা PyArg_ParseTuple এর মত ফরম্যাট স্ট্রিং এ কাজ করে নতুন করে তৈরি মানের পরিবর্তে আসল মান দেয়। কিভাবে এড ফাংশন বাস্তবায়ন করতে হয় তার একটি উদাহরণ নিচে দেয়া হলঃ

static PyObject *foo_add(PyObject *self, PyObject *args) {   int a;   int b;    if (!PyArg_ParseTuple(args, "ii", &a, &b)) {     return NULL;   }   return Py_BuildValue("i", a + b);}

Python এ করলে নিচের মত হবেঃ

def add(a, b):   return (a + b)

আপনি Python এর লিস্ট এর সাহায্যে ফাংশনটি থেকে দুই ধরনের ফলাফল দেখাতে পারেন, যেমনঃ


static PyObject *foo_add(PyObject *self, PyObject *args) {
   int a;
   int b;

   if (!PyArg_ParseTuple(args, "ii", &a, &b)) {
      return NULL;
   }
   return Py_BuildValue("i", a + b);
}

 

এই কোডটি Python এ করা হলে এরকম হবেঃ


def add(a, b):
   return (a + b)

 

Py_BuildValue ফাংশন

Py_BuildValue ফাংশনের স্ট্যান্ডার্ড সিগ্নেচার হচ্ছে −


PyObject* Py_BuildValue(char* format,...)

 

এখানে format একটি C স্ট্রিং যা কোন Python অবজেক্ট তৈরি হবে সেটার বর্ননা করে। নিচের Py_BuildValue আর্গুমেন্ট গুলো প্রকৃতপক্ষে C এর মান, যা থেকে প্রোগ্রামটির রেসাল্ট তৈরি হয়। PyObject* এর ফলাফল একটি নতুন ইন্টারফেস তৈরি করে। নিচের টেবিলে প্রচলিত কিছু কোড স্ট্রিং দেয়া হল, যার মধ্যে মাঝে মাঝে এক বা একাধিক কোড স্ট্রিং ফরম্যাট এ সংযুক্ত হয়।

Code C type Meaning
c char A C char becomes a Python string of length 1.
d double A C double becomes a Python float.
f float A C float becomes a Python float.
i int A C int becomes a Python int.
l long A C long becomes a Python int.
N PyObject* Passes a Python object and steals a reference.
O PyObject* Passes a Python object and INCREFs it as normal.
O& convert+void* Arbitrary conversion
s char* C 0-terminated char* to Python string, or NULL to None.
s# char*+int C char* and length to Python string, or NULL to None.
u Py_UNICODE* C-wide, null-terminated string to Python Unicode, or NULL to None.
u# Py_UNICODE*+int C-wide string and length to Python Unicode, or NULL to None.
w# char*+int Read/write single-segment buffer to C address and length.
z char* Like s, also accepts None (sets C char* to NULL).
z# char*+int Like s#, also accepts None (sets C char* to NULL).
(...) as per ... Builds Python tuple from C values.
[...] as per ... Builds Python list from C values.
{...} as per ... Builds Python dictionary from C values, alternating keys and values.

{...} কোডটি C এর জোড় সংখ্যক মানের জন্য ডিকশনারি তৈরি করে, যেমন Py_BuildValue("{issi}",23,"zig","zag",42) কোডটি Python এর মত এই ডিকশনারিটি তৈরি করেঃ {23:'zig','zag':42}.

Use sorting criterion in sort function

Huge Sell on Popular Electronics

/* The following code example is taken from the book
 * "The C++ Standard Library - A Tutorial and Reference"
 * by Nicolai M. Josuttis, Addison-Wesley, 1999
 *
 * (C) Copyright Nicolai M. Josuttis 1999.
 * Permission to copy, use, modify, sell and distribute this software
 * is granted provided this copyright notice appears in all copies.
 * This software is provided "as is" without express or implied
 * warranty, and with no claim as to its suitability for any purpose.
 */

#include <iostream>
#include <vector>
#include <deque>
#include <list>
#include <set>
#include <map>
#include <string>
#include <algorithm>
#include <iterator>
#include <functional>
#include <numeric>

/* PRINT_ELEMENTS()
 * - prints optional C-string optcstr followed by
 * - all elements of the collection coll
 * - separated by spaces
 */
template <class T>
inline void PRINT_ELEMENTS (const T& coll, const char* optcstr="")
{
    typename T::const_iterator pos;

    std::cout << optcstr;
    for (pos=coll.begin(); pos!=coll.end(); ++pos) {
        std::cout << *pos << ' ';
    }
    std::cout << std::endl;
}

/* INSERT_ELEMENTS (collection, first, last)
 * - fill values from first to last into the collection
 * - NOTE: NO half-open range
 */
template <class T>
inline void INSERT_ELEMENTS (T& coll, int first, int last)
{
    for (int i=first; i<=last; ++i) {
        coll.insert(coll.end(),i);
    }
}

using namespace std;

void printCollection (const list<int>& l)
{
    PRINT_ELEMENTS(l);
}

bool lessForCollection (const list<int>& l1, const list<int>& l2)
{
    return lexicographical_compare
                (l1.begin(), l1.end(),   // first range
                 l2.begin(), l2.end());  // second range
}

int main()
{
    list<int> c1, c2, c3, c4;

    // fill all collections with the same starting values
    INSERT_ELEMENTS(c1,1,5);
    c4 = c3 = c2 = c1;

    // and now some differences
    c1.push_back(7);
    c3.push_back(2);
    c3.push_back(0);
    c4.push_back(2);

    // create collection of collections
    vector<list<int> > cc;

    cc.push_back(c1);
    cc.push_back(c2);
    cc.push_back(c3);
    cc.push_back(c4);
    cc.push_back(c3);
    cc.push_back(c1);
    cc.push_back(c4);
    cc.push_back(c2);

    // print all collections
    for_each (cc.begin(), cc.end(),
              printCollection);
    cout << endl;

    // sort collection lexicographically
    sort (cc.begin(), cc.end(),    // range
          lessForCollection);      // sorting criterion

    // print all collections again
    for_each (cc.begin(), cc.end(),
              printCollection);
}
/*
1 2 3 4 5 7
1 2 3 4 5
1 2 3 4 5 2 0
1 2 3 4 5 2
1 2 3 4 5 2 0
1 2 3 4 5 7
1 2 3 4 5 2
1 2 3 4 5

1 2 3 4 5
1 2 3 4 5
1 2 3 4 5 2
1 2 3 4 5 2
1 2 3 4 5 2 0
1 2 3 4 5 2 0
1 2 3 4 5 7
1 2 3 4 5 7

 */

Call member function for each element in vector

Huge Sell on Popular Electronics

/* The following code example is taken from the book
* "The C++ Standard Library - A Tutorial and Reference"
* by Nicolai M. Josuttis, Addison-Wesley, 1999
*
* (C) Copyright Nicolai M. Josuttis 1999.
* Permission to copy, use, modify, sell and distribute this software
* is granted provided this copyright notice appears in all copies.
* This software is provided "as is" without express or implied
* warranty, and with no claim as to its suitability for any purpose.
*/
//#define mem_fun1 mem_fun
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <functional>
class Person {
private:
   std::string name;
public:
   //...
   void print () const {
       std::cout << name << std::endl;
   }
   void printWithPrefix (std::string prefix) const {
       std::cout << prefix << name << std::endl;
   }
};
void foo (const std::vector<Person>& coll)
{
   using std::for_each;
   using std::bind2nd;
   using std::mem_fun_ref;
   // call member function print() for each element
   for_each (coll.begin(), coll.end(), mem_fun_ref(&Person::print));
   // call member function printWithPrefix() for each element
   // - "person: " is passed as an argument to the member function
   for_each (coll.begin(), coll.end(),bind2nd(mem_fun_ref(&Person::printWithPrefix),"person: "));
}

void ptrfoo (const std::vector<Person*>& coll)
                                   // ^^^ pointer !
{
   using std::for_each;
   using std::bind2nd;
   using std::mem_fun;
   // call member function print() for each referred object
   for_each (coll.begin(), coll.end(),
             mem_fun(&Person::print));
   // call member function printWithPrefix() for each referred object
   // - "person: " is passed as an argument to the member function
   for_each (coll.begin(), coll.end(),bind2nd(mem_fun(&Person::printWithPrefix),"person: "));
} 
 
int main()
{
   std::vector<Person> coll(5);
   foo(coll); 
   std::vector<Person*> coll2;
   coll2.push_back(new Person);
   ptrfoo(coll2);
} 
/*
person:
person:
person:
person:
person:
person: 

*/


	

ইউনিক্সঃ সেল বিল্টইন গাণিতিক ফাংশন (Unix – Shell Builtin Mathematical Functions)

Huge Sell on Popular Electronics

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

 

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

কর্ন সেল গাণিতিক ফাংশনের আদর্শ সেটে প্রবেশযোগ্যতা সৃষ্টি করে, সি ফাংশন কল সিনট্যাক্স ব্যবহার করে এদের কল করা হয়।

ফাংশন বর্ণনা
abs আদর্শ মান
log ন্যাচারাল লগারিদম
acos আর্ক কোসাইন
sin সাইন
asin আর্ক সাইন
sinh হাইপারবোলিক সাইন
cos কোসাইন
sqrt স্কয়ার রুট
cosh হাইপারবোলিক কোসাইন
tan টেনজেন্ট
exp এক্সপোনেন্সিয়াল ফাংশন
tanh হাইপারবোলিক টেনজেন্ট
int ফ্লোটিং পয়েন্ট নাম্বারের পূর্ণসংখ্যা অংশ

 

 

ইউনিক্সঃ সেল ফাংশন (Unix – Shell Functions)

Huge Sell on Popular Electronics

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

 

ফাংশন কোনও স্ক্রিপ্টের ফাংশনালিটিকে ছোট ছোট লজিকাল সাবসেকশনে ভাগ করে যাতে এগুলো প্রয়োজনমত তাদের কাজ সম্পন্ন করতে পারে।

পুনরাবৃত্তিমূলক কাজ সম্পাদনের জন্য ফাংশন ব্যবহার করা কোডের পুনঃব্যবহারের একটি ভাল উপায়। কোডের পুনঃব্যবহার বর্তমান সময়ের অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিঙের একটি গুরুত্বপূর্ণ অংশ।

সেল ফাংশন অন্যান্য প্রোগ্রামিং ভাষার সাবরুটিন, প্রক্রিয়া ও ফাংশনের মতই।

 

ফাংশন তৈরি করা

ফাংশন হিসেবে স্বীকৃতি পেতে নিচের সিনট্যাক্স ব্যবহার করতে হয়,


function_name () { 
   list of commands
}

 

নিচে ফাংশনের ব্যবহারের সহজ উদাহরণ দেয়া হল,


#!/bin/sh
 
# Define your function here
Hello () {
   echo "Hello World"
}
 
# Invoke your function
Hello

 

উপরের কোডকে কার্যে পরিণত করলে নিম্নে প্রদত্ত ফলাফল পাওয়া যাবে,


$./test.sh
Hello World
$

 

ফাংশনের পাস প্যারামিটার

কিছু ফাংশন কাজের ক্ষেত্রে প্যারামিটার গ্রহণ করে, $1, $2 এসব দ্বারা এই ফাংশন প্রকাশ করা হয়,


#!/bin/sh
 
# Define your function here
Hello () {
   echo "Hello World $1 $2"
}
 
# Invoke your function
Hello Zara Ali

 

যা নিচের ফলাফল দেখাবে,


$./test.sh
Hello World Zara Ali
$

 

ফাংশন থেকে মান ফিরিয়ে আনাঃ return কম্যান্ড ব্যবহার করে ফাংশন থেকে যেকোনো মান ফিরিয়ে আনা সম্ভব, যার সিনট্যাক্স হল,


return code

 

এখানে যেকোনো কোড হতে পারে কিন্তু তা স্ক্রিপ্টের কনটেক্সটে অর্থবোধক হতে হবে।

যেমন, নিচের ফাংশন ভ্যালু ফিরিয়ে আনে,


#!/bin/sh
 
# Define your function here
Hello () {
   echo "Hello World $1 $2"
   return 10
}
 
# Invoke your function
Hello Zara Ali
 
# Capture value returnd by last command
ret=$?
 
echo "Return value is $ret"

 

যা নিম্নোক্ত ফলাফল দেবে,


$./test.sh
Hello World Zara Ali
Return value is 10
$

 

নেস্টেড ফাংশন

ফাংশনের একটি মজার ফিচার হল, এটি অন্য ফাংশনকে যেমন কল করতে পারে তেমনি নিজেদেরও কল করতে পারে। এধরনের ফাংশনকে রিকারসিভ ফাংশন বলে।

দুটি ফাংশনের নেস্টিং নিচের উদাহরণে দেয়া হল,


#!/bin/sh
 
# Calling one function from another
number_one () {
   echo "This is the first function speaking..."
   number_two
}
 
number_two () {
   echo "This is now the second function speaking..."
}
 
# Calling function one.
number_one

 

এটি যে ফলাফল দেখাবে তা হল,


This is the first function speaking...
This is now the second function speaking...

 

প্রম্পট থেকে ফাংশন কল

.profile এর ভিতরে সচরাচর ব্যবহৃত ফাংশনের জন্য সংজ্ঞা অন্তর্ভুক্ত করা যায়,অপরদিকে test.sh জাতীয় ফাইলে সংজ্ঞার গ্রুপ সংবদ্ধ করে কারেন্ট সেলে নিচের কোড দ্বারা সম্পাদন করা যায়,


$. test.sh

 

যা কিনা কারেন্ট সেলকে নিচের মত করে বিবৃত করে,


$ number_one
This is the first function speaking...
This is now the second function speaking...
$

 

সেল থেকে কোনও ফাংশনের সংজ্ঞা মুছে ফেলতে .f অপশনের সাথে unset কম্যান্ড ব্যবহার করতে হয়, এটি সেই একই কম্যান্ড যা সেল থেকে চলকের বিবরণ মুছে ফেলতে ব্যবহৃত হয়,


$unset.f function_name

 

জাভাস্ক্রিপ্ট অবজেক্ট নটেশন ফাংশন ফাইল (JSON Function Files)

Huge Sell on Popular Electronics

জেএসওএন ফাংশন ফাইল

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

জেএসওএন ফাংশন ফাইল (JSON Function Files)

জেএসওএনএর একটি সাধারণ প্রয়োগ হল ওয়েব সার্ভার থেকে ডাটা পড়া ও ওয়েব পেজে তা প্রদর্শন করা। এই অধ্যায়ে চারটি ছোট ছোট ধাপে দেখানো হবে কীভাবে ফাংশন ফাইল ব্যবহার করে জেএসওএন ডাটা পড়া হয়।

জেএসওএন উদাহরণঃ এই উদাহরণে myTutorials.js থেকে একটি মেনু পড়া হবে ও সেটিকে ওয়েবপেজে দেখানো হবে।


<div id="id01"></div>
<script>
function myFunction(arr) {
     var out = "";
     var i;
     for(i = 0; i<arr.length; i++) {
     out += '<a href="' + arr[i].url + '">' + arr[i].display + '</a><br>';
     }
     document.getElementById("id01").innerHTML = out;
}
</script>
<script src="myTutorials.js"></script>

 

 

উদাহরণের ব্যাখ্যা

প্রথমতঃ অবজেক্টের শ্রেণীবিন্যাস তৈরি করা হয়ঃ
অক্ষরভিত্তিক শ্রেণীবিন্যাস নির্ধারণ করে কোনো অবজেক্টের শ্রেণীবিন্যাস তৈরি করা হয়। প্রত্যেকটি অবজেক্টের দুটি বৈশিষ্ট্য নির্ধারণ করে দেয়া হয়, display এবং url । শ্রেণীবিন্যাসকে myArray নাম দেয়া হয়।
myArray


var myArray = [
{
"display": "JavaScript Tutorial",
"url": "http://www.w3schools.com/js/default.asp"
},
{
"display": "HTML Tutorial",
"url": "http://www.w3schools.com/html/default.asp"
},
{
"display": "CSS Tutorial",
"url": "http://www.w3schools.com/css/default.asp"
}
]

 

দ্বিতীয়তঃ শ্রেণীবিন্যাস দেখানোর জন্য জাভাস্ক্রিপ্টের একটি ফাংশন তৈরি করা হয়ঃ myFunction() নামের ফাংশন তৈরি করা হয় যা থেকে অবজেক্টগুলো দৃশ্যমান হয় ও এইচটিএমএল লিঙ্ক জাতীয় উপাদান প্রদর্শন করে।

myFunction()


 

function myFunction(arr) {
    var out = "";
    var i;
    for(i = 0; i < arr.length; i++) {
    out += '<a href="' + arr[i].url + '">' + arr[i].display + '</a><br>';
    }
    document.getElementById("id01").innerHTML = out;
}

 

 

myFunction() কে myArray এর সাথে আর্গুমেন্ট হিসেবে দেখা হয়। যথা,


myFunction(myArray);


 

 

তৃতীয়ত, কোন অক্ষরভিত্তিক শ্রেণীবিন্যাসকে আর্গুমেন্ট হিসেবে ব্যবহার করা(শ্রেণীবিন্যাস চলকের পরিবর্তে)ঃ
myFunction() কে array literal(অক্ষরভিত্তিক শ্রেণীবিন্যাস)এর সাথে আর্গুমেন্ট হিসেবে দেখা হয়,

Calling myFunction()


myFunction([
{
"display": "JavaScript Tutorial",
"url": "http://www.w3schools.com/js/default.asp"
},
{
"display": "HTML Tutorial",
"url": "http://www.w3schools.com/html/default.asp"
},
{
"display": "CSS Tutorial",
"url": "http://www.w3schools.com/css/default.asp"
}
]);

 

 

চতুর্থতঃ ফাংশন কলকে এক্সটারনাল js fileএ রাখা হয়ঃ
myTutorials.js নামক এক্সটারনাল js fileএ ফাংশন কলকে রাখা হয়।

myTutorials.js


myFunction([
    {
    "display": "JavaScript Tutorial",
    "url": "http://www.w3schools.com/js/default.asp"
    },
    {
    "display": "HTML Tutorial",
    "url": "http://www.w3schools.com/html/default.asp"
    },
    {
    "display": "CSS Tutorial",
    "url": "http://www.w3schools.com/css/default.asp""
    }
 ]);

 

 

ফাংশন কলের পরিবর্তে পেজে এক্সটারনাল স্ক্রিপ্ট যোগ করা হয়,
Add External Script


<script src="myTutorials.js"></script>


 

 

 

জাভাস্ক্রিপ্ট টাইপ রূপান্তরকরণ (JavaScript Type Conversion)

Huge Sell on Popular Electronics

আদনান নাহিদ
সরকারি তিতুমীর কলেজ

 

নাম্বার থেকে নাম্বারে পরিবর্তন, স্ট্রিং থেকে স্ট্রিং এ পরিবর্তন, বুলিয়ান থেকে বুলিয়ানে পরিবর্তন করা যায় ।

জাভাস্ক্রিপ্ট ডেটা প্রকারভেদ

মান ধারণ করতে পারে জাভাস্ক্রিপ্টে এমন 5 ধরনের ডাটা টাইপ আছে:

  • স্ট্রিং
  • নাম্বার
  • বুলিয়ান
  • অবজেক্ট
  • ফাংশন

অবজেক্ট ৩ ধরনের হয়:

  • অবজেক্ট
  • তারিখ
  • অ্যারে বা শ্রেণীবিন্যাস

এবং ২ ধরনের ডাটা টাইপের মান থাকতে পারে না :

  • অকার্যকর
  • অনির্দিষ্ট

 

typeof অপারেটর

একটি পরিবর্তনশীল জাভাস্ক্রিপ্ট এ ডাটা টাইপ খুঁজে পেতে অাপনি typeof অপারেটর ব্যবহার করতে পারেন ।
উদাহরণ


typeof "John"                 // Returns string
typeof 3.14                   // Returns number
typeof NaN                    // Returns number
typeof false                  // Returns boolean
typeof [1,2,3,4]              // Returns object
typeof {name:'John', age:34}  // Returns object
typeof new Date()             // Returns object
typeof function () {}         // Returns function
typeof myCar                  // Returns undefined (if myCar is not declared)
typeof null                   // Returns object

 

লক্ষ্য করুন :

  • NaN নাম্বারের ডাটা টাইপ
  • অ্যারের অবজেক্টের ডাটা টাইপ
  • তারিখের অবজেক্টের ডাটা টাইপ
  • Null অবজেক্টের ডাটা টাইপ
  • একটি অনির্ধারিত পরিবর্তনশীল এর ডাটা টাইপ

যদি জাভাস্ক্রিপ্ট অবজেক্ট অ্যারে (অথবা তারিখ) হয় তাহলে আপনি অর্থ বা সীমা নির্ধারণ করার ক্ষেত্রে typeof ব্যবহার করতে পারবেন না ।

 

Typeof ডাটা টাইপ

typeof অপারেটর পরিবর্তনশীল নয়। এটি একটি অপারেটর। অপারেটর (+ + - * /) এর কোন ডাটা টাইপ থাকে না ।
কিন্তু, typeof অপারেটর সবসময় একটি স্ট্রিং প্রদান করে operand এর সময় ।

 

কনস্টাকশন প্রপারটি

সব জাভাস্ক্রিপ্টের জন্যই constructor property, constructor function প্রদান করে ।
উদাহরণ


"John".constructor                 // Returns function String()   { [native code] }
(3.14).constructor                 // Returns function Number()   { [native code] }
false.constructor                  // Returns function Boolean()  { [native code] }
[1,2,3,4].constructor              // Returns function Array()    { [native code] }
{name:'John', age:34}.constructor  // Returns function Object()   { [native code] }
new Date().constructor             // Returns function Date()     { [native code] }
function () {}.constructor         // Returns function Function() { [native code] }

 

আপনি কনস্টাকশন প্রপারটি খুঁজে দেখতে পারেন এর কোন অবজেক্ট অ্যারে আছে কিনা (contains the word "Array") :
উদাহরণ


function isArray(myArray) {
    return myArray.constructor.toString().indexOf("Array") > -1;
}

 

আপনি কনস্টাকশন প্রপারটি খুঁজে দেখতে পারেন এর কোন অবজেক্ট তারিখ কিনা (contains the word "Date") :
উদাহরণ


function isDate(myDate) {
    return myDate.constructor.toString().indexOf("Date") > -1;
}

 

জাভাস্ক্রিপ্ট টাইপ রূপান্তরকরণ

জাভাস্ক্রিপ্ট ভেরিয়েবল নতুন একটি ভেরিয়েবলে এবং অন্য ডাটা টাইপে রূপান্তরিত করা যেতে পারে:

  • জাভাস্ক্রিপ্ট ফাংশন ব্যবহার করে
  • জাভাস্ক্রিপ্টের মাধ্যমে স্বয়ংক্রিয়ভাবে

 

নাম্বারকে স্ট্রিং এ রূপান্তর

গ্লোবাল পদ্ধতি String() দিয়ে সংখ্যাকে স্ট্রিং এ রূপান্তর করতে পারে ।

এটি যেকোনো ধরনের সংখ্যায় , লিটারেল, ভেরিয়েবল বা এক্সপ্রেশন এ ব্যবহার করা যায় :

উদাহরণ


String(x)         // returns a string from a number variable x
String(123)       // returns a string from a number literal 123
String(100 + 23)  // returns a string from a number from an expression

 

সংখ্যা পদ্ধতি toString() ও একই ধরনের কাজ করে ।
উদাহরণ


x.toString()
(123).toString()
(100 + 23).toString()

 

আপনি  (নাম্বার পদ্ধতি) অ্ধ্যায়ে সংখ্যাকে স্ট্রিং এ রূপান্তর করার আরো অনেক মেথড খুজে পাবেন :

পদ্ধতি বর্ণনা
toExponential() ব্যাখ্যামূলক একটি সংখ্যার সাথে সূচক নোটেশন ব্যবহার করে স্ট্রিং ফেরৎ পাওয়া
toFixed() স্থায়ী একটি নিদিষ্ট সংখ্যার সাথে দশমিক সংখ্যা ব্যবহার করে স্ট্রিং ফেরৎ পাওয়া
toPrecision() স্পষ্টতা একটি নিদিষ্ট দৈর্ঘ্যর সাথে একটি সংখ্যা ব্যবহার করে স্ট্রিং ফেরৎ পাওয়া

 

Booleans থেকে স্ট্রিং এ রূপান্তর

গ্লোবাল পদ্ধতি String(), Booleans কে স্ট্রিং এ রূপান্তর করতে পারে :
উদাহরণ


String(false)        // returns "false"
String(true)         // returns "true"

 

বুলিয়ান পদ্ধতি toString() ও একই ধরনের কাজ করে ।


false.toString()     // returns "false"
true.toString()      // returns "true"

 

তারিখকে স্ট্রিং এ রূপান্তর

গ্লোবাল পদ্ধতি String() দিয়ে তারিখকে স্ট্রিং এ রূপান্তর করতে পারে :


String(Date()) // returns Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time)

 

তারিখের পদ্ধতি toString() ও একই ধরনের কাজ করে ।
উদাহরণ


Date().toString() // returns Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time)

 

আপনি  (ডেট মেথড) অ্ধ্যায়ে সংখ্যাকে স্ট্রিং এ রূপান্তর করার আরো অনেক মেথড খুজে পাবেন :

মেথড বর্ণনা
getDate() তারিখকে সংখ্যা হিসেবে গ্রহণ করে (1-31)
getDay() সপ্তাহকে সংখ্যা হিসেবে গ্রহণ করে (0-6)
getFullYear() বছরের চারটি অঙ্ক গ্রহণ করে  (YYYY)
getHours() ঘন্টাকে গ্রহণ করে (0-23)
getMilliseconds() মিলি সেকেন্ড কে গ্রহণ করে (0-999)
getMinutes() মিনিটকে গ্রহণ করে (0-59)
getMonth() মাসকে গ্রহণ করে (0-11)
getSeconds() সেকেন্ড কে গ্রহণ করে (0-59)
getTime() সময়কে গ্রহণ করে (মিলিসেকেন্ড জানুয়ারী 1st 1970 থেকে)

 

স্ট্রিং কে সংখ্যায় রূপান্তর

গ্লোবাল পদ্ধতি Number() দিয়ে স্ট্রিংকে সংখ্যায় রূপান্তর করতে পারেন ।

স্ট্রিং নম্বর ধারণকারী ("3.14" ) কে (3.14 ) এ রূপান্তর ।

খালি স্ট্রিং কে 0 তে রূপান্তর ।

অন্যানগৈুলোকে NaN (নম্বর নয়) এ পরিবর্তন ।


Number("3.14")    // returns 3.14
Number(" ")       // returns 0
Number("")        // returns 0
Number("99 88")   // returns NaN

 

আপনি  (নাম্বর মেথড) অ্ধ্যায়ে স্ট্রিং কে সংখ্যায় রূপান্তর করার আরো অনেক মেথড খুজে পাবেন :

পদ্ধতি বর্ণনা
parseFloat একটি স্ট্রিং পার্স করুন এবং একটি ফ্লোটিং পয়েন্ট সংখ্যা ফেরৎ পান
parseInt একটি স্ট্রিং পার্স করুন এবং একটি পূর্ণসংখ্যা ফেরৎ পান

 

ইউনারী + অপারেটর

একটি ভেরিয়েবল (পরিবর্তনশীল নাম্বার) কে সংখ্যায় রূপান্তরের ক্ষেত্রে ইউনারী + অপারেটর ব্যবহার করা যেতে পারে :
উদাহরণ


 var y = "5";      // y is a string
 var x = + y;      // x is a number

 

যদি variable কে রূপান্তরিত করা না যায় তাহলে এটি সংখ্যাই থাকে যার মান হয় NaN (নম্বর নয়):
উদাহরণ


 var y = "John";   // y is a string
 var x = + y;      // x is a number (NaN)

 

Booleans কে নাম্বার এ রূপান্তর

গ্লোবাল পদ্ধতি Number() দিয়ে Booleans কে নাম্বারে রূপান্তর করতে পারেন :


Number(false)     // returns 0
Number(true)      // returns 1

 

তারিখ কে নাম্বারে রূপান্তর

গ্লোবাল পদ্ধতি Number() দিয়ে তারিখকে নাম্বারে রূপান্তর করতে পারেন :


d = new Date();
Number(d)          // returns 1404568027739

 

তারিখের পদ্ধতি toString() ও একই ধরনের কাজ করে ।


d = new Date();
d.getTime()        // returns 1404568027739

 

স্বয়ংক্রিয় রূপান্তর

যখন জাভাস্ক্রিপ্ট একটি "ভুল" ডাটা টাইপ নিয়ে কাজ করার চেষ্টা করে, এটি মানকে "সঠিক" ডাটা টাইপে রূপান্তর করতে চেষ্টা করে।
ফলাফল সবসময় আপনার আশানরূপ হয় না:


5 + null    // returns 5         because null is converted to 0
"5" + null  // returns "5null"   because null is converted to "null"
"5" + 2     // returns 52        because 2 is converted to "2"
"5" - 2     // returns 3         because "5" is converted to 5
"5" * "2"   // returns 10        because "5" and "2" are converted to 5 and 2

 

স্বয়ংক্রিয় স্ট্রিং রূপান্তর

জাভাস্ক্রিপ্ট স্বয়ংক্রিয়ভাবেই ভেরিয়েবল এর toString ফাংশনকে কল করে যখন অবজেক্ট বা ভেরিয়েবল থেকে "output" আশা করেন :


document.getElementById("demo").innerHTML = myVar;

// if myVar = {name:"Fjohn"}  // toString converts to "[object Object]"
// if myVar = [1,2,3,4]       // toString converts to "1,2,3,4"
// if myVar = new Date()      // toString converts to "Fri Jul 18 2014 09:08:55 
                                 GMT+0200"

 

সংখ্যা এবং Booleans ও রূপান্তরিত হয়, কিন্তু এবি খুব একটা দৃশ্যমান নয়:


// if myVar = 123             // toString converts to "123"
// if myVar = true            // toString converts to "true"
// if myVar = false           // toString converts to "false"

 

জাভাস্ক্রিপ্ট টাইপ রূপান্তর ছক

এই টেবিল বিভিন্ন প্রকার জাভাস্ক্রিপ্ট মানকে সংখ্যা, স্ট্রিং, এবং বুলিয়ান এ রূপান্তর প্রদর্শন করে :

আদি মান সংখ্যায় রূপান্তরিত স্ট্রিং এ রূপান্তরিত বুলিয়ানে রূপান্তরিত
false 0 "false" false
true 1 "true" true
0 0 "0" false
1 1 "1" true
"0" 0 "0" true
"1" 1 "1" true
NaN NaN "NaN" false
Infinity Infinity "Infinity" true
-Infinity -Infinity "-Infinity" true
"" 0 "" false
"20" 20 "20" true
"twenty" NaN "twenty" true
[ ] 0 "" true
[20] 20 "20" true
[10,20] NaN "10,20" true
["twenty"] NaN "twenty" true
["ten","twenty"] NaN "ten,twenty" true
function(){} NaN "function(){}" true
{ } NaN "[object Object]" true
null 0 "null" false
undefined NaN "undefined" false

নোট: কোটেশন যুক্ত মান স্ট্রিং নির্দেশ করে।

বোল্ড করা মান (কিছু) প্রোগ্রামার সমর্থন করে না।

 

জেকোয়েরি এর কলব্যাক ফাংশন ।

Huge Sell on Popular Electronics

লেখকঃ মোস্তাফিজুর ফিরোজ ।

 

কেমন আছেন সবাই? আজ আমি আপনাদের সাথে জেকোয়েরি এর কলব্যাক ফাংশন সমূহ আলোচনা করবো ।

জেকোয়েরি এর কলব্যাক ফাংশন

যখন কোনো পেজের ইফেক্ট ১০০% শেষ হয় তখন কলব্যাক ফাংশন তার কাজ সম্পাদন করে থাকে ।
সাধারণত জাভাস্ক্রিপ্ট এর বিবৃতি গুলো লাইন বাই লাইন সম্পাদিত হয় । আর যখন ইফেক্ট ব্যবহার করা হয় তখন ইফেক্ট শেষ না হলেও পরের লাইন সম্পাদিত হতে পারে । আর এই সমস্যা দূর করার জন্য কলব্যাক ফাংশন তৈরি করা হয় ।

চলমান ইফেক্ট শেষ হলে কলব্যাক ইফেক্ট চালু হয় ।

কলব্যাক ইফেক্ট টিতে সাধারণত এমন কোড থাকে :


$(selector).hide(speed,callback);

 

 

কলব্যাক ফাংশনসহ উদাহরণঃ


$("button").click(function(){
    $("p").hide("slow", function(){
        alert("The paragraph is now hidden");
    });
});

ফলাফল : কলব্যাক ফাংশন

 

এটায় hide effect শেষ হলে কলব্যাক ফাংশন কাজ করবে ।

কলব্যাক ফাংশনবিহীন উদাহরণঃ


$("button").click(function(){
    $("p").hide(1000);
    alert("The paragraph is now hidden");
});

ফলাফল : কলব্যাক ফাংশনবিহীন

এটায় কোনো কলব্যাক ফাংশন ব্যবহার করা হয়নি । তাই hide effect শেষ হলেই alert box হাজির হবে ।

 

তাহলে কলব্যাক ফাংশনের কাজ বুঝলেন তো? না বুঝতে পারলে কমেন্ট করবেন আমি বুঝতে সাহায্য করবো ।

জে কুয়েরি ইভেন্ট । jQuery Events

Huge Sell on Popular Electronics

আরিফ

আজ আমি আপনাদের সামনে web page এর একটি বিশেষ element "event" নিয়ে আলোচনা করবো। প্রথমে জেনে নেই ইভেন্ট কি??? সহজ কথায় এটা যেকোন কিছু যা আপনি একটি ওয়েব পেজ এ করে থাকেন। যেমন ধরুন ফেসবুকে মাউসের পয়েন্টার আপনার সেরা সেলিব্রিটির নামের উপর রাখলেন, সাথে সাথে দেখতে পাবেন একটি পপ- আপ বক্স আপনার সামনে আসবে যেখানে সেই সেলিব্রিটির info দেখাবে। তারপর ধরুন আপনি একটি অনলাইন রেডিও স্টেশন এ গান শুনছেন, আপনার মনে হরো ভলিউম বাড়ানো দরকার, আপনি vol+ বাটনে ক্লিক করলেন এক্ষেত্রে ক্লিকটাই event. অর্থাৎ মাউস বলেন কিবোর্ড বলেন যেকোন কি এর জন্য যেকোন এক্টিভিটিই হলো ইভেন্ট। এখন এই যে ইভেন্ট এবং তার এক্টিভিটি কাজ করানোর জন্য আপনার সাংকেতিক চিহ্ন এর প্রয়োজন হবে। আপনার একটি ওয়েব পেজ বানানোর জন্য। সর্বাধিক ব্যবহৃত সংকেত টি হলো


$("p").click();

 

এবার চলুন আমরা কয়েকটি ইভেন্ট নিয়ে আলোচনা করি:
click:
একটি পাতা সব অনুচ্ছেদ (প্যারা) এর জন্য একটি ক্লিক ইভেন্ট ব্যবহার করার জন্য:


$("p").click();


 

পরবর্তী ধাপে ক্লিক করার ফলে কি ঘটবে তা নির্ধারণ করা হয়। এর জন্য অবশ্যই একটি ফাংশন ব্যবহার করা আবশ্যক:


$("p").click(function(){
  // action goes here!!
});

 

এখানে কিছু DOM ইভেন্ট দেয়া হলো:

মাউস ইভেন্ট কীবোর্ড ইভেন্ট ফরম ইভেন্ট ডকুমেন্ট/উইন্ডো ইভেন্ট
click keypress submit load
dblclick keydown change resize
mouseenter keyup focus scroll
mouseleave blur unload

 

সাধারণভাবে ব্যবহৃত jQuery Event Methods

click():
click() method একটি ইভেন্ট হ্যান্ডেলার ফাংশন কে একটি HTML element এর সাথে যুক্ত করে।

এই ফাংশনটি কাজ করবে যখন ইউজার HTML element টিতে ক্লিক করবেন।

এখানে একটি উদাহরন দেখুন। এই p এর উপর ক্লিক করলে p উধাও হয়ে যাবে:


$("p").click(function(){
$(this).hide();
});


 

এখান থেকে উদাহরন দেখুন:


<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
    $("p").click(function(){
        $(this).hide();
    });
});
</script>
</head>
<body>

<p>If you click on me, I will disappear.</p>
<p>Click me away!</p>
<p>Click me too!</p>

</body>
</html>

 

dblclick():

dblclick() method একটি ইভেন্ট হ্যান্ডেলার ফাংশন কে একটি HTML element এর সাথে যুক্ত করে।

এই ফাংশনটি কাজ করবে যখন ইউজার HTML element টিতে ডাবল ক্লিক করবেন।


$("p").dblclick(function(){
    $(this).hide();
});

 

এখান থেকে উদাহরনটি দেখুন:


<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
    $("p").dblclick(function(){
        $(this).hide();
    });
});
</script>
</head>
<body>

<p>If you double-click on me, I will disappear.</p>
<p>Click me away!</p>
<p>Click me too!</p>

</body>
</html>

 

mouseenter():

mouseenter() method একটি ইভেন্ট হ্যান্ডেলার ফাংশন কে একটি HTML element এর সাথে যুক্ত করে।

এই ফাংশনটি কাজ করবে যখন মাউস পয়েন্টার HTML element এর ভিতরে প্রবেশ করবে।


$("#p1").mouseenter(function(){
    alert("You entered p1!");
});

 

এখান থেকে উদাহরনটি দেখুন:

<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
    $("#p1").mouseenter(function(){
        alert("You entered p1!");
    });
});
</script>
</head>
<body>

<p id="p1">Enter this paragraph.</p>

</body>
</html>

 

mouseleave():

mouseleave() method একটি ইভেন্ট হ্যান্ডেলার ফাংশন কে একটি HTML element এর সাথে যুক্ত করে।

এই ফাংশনটি কাজ করবে যখন মাউস পয়েন্টার HTML element এর ভিতরে থেকে বের হয়ে যায়।


$("#p1").mouseleave(function(){
    alert("Bye! You now leave p1!");
});

 

এখান থেকে উদাহরনটি দেখুন:


<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
    $("#p1").mouseleave(function(){
        alert("Bye! You now leave p1!");
    });
});
</script>
</head>
<body>

<p id="p1">This is a paragraph.</p>

</body>
</html>

 

mousedown():

mousedown() method একটি ইভেন্ট হ্যান্ডেলার ফাংশন কে একটি HTML element এর সাথে যুক্ত করে।

এই ফাংশনটি কাজ করবে যখন মাউস পয়েন্টারটি এলিমেন্টটির উপরে থাকবে এবং HTML element এর উপর বাম, ডান বা মিডেল ক্লিক করা হবে,


$("#p1").mousedown(function(){
     alert("Mouse down over p1!");
 });

 

এখান থেকে উদাহরনটি দেখুন:


<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
    $("#p1").mousedown(function(){
        alert("Mouse down over p1!");
    });
});
</script>
</head>
<body>

<p id="p1">This is a paragraph.</p>

</body>
</html>

 

mouseup():

mouseup() method একটি ইভেন্ট হ্যান্ডেলার ফাংশন কে একটি HTML element এর সাথে যুক্ত করে।

এই ফাংশনটি কাজ করবে যখন মাউস পয়েন্টারটি এলিমেন্টটির উপরে থাকবে এবং HTML element এর উপর বাম, ডান বা মিডেল ক্লিক ছেড়ে দেয়া হবে,


$("#p1").mouseup(function(){
     alert("Mouse up over p1!");
 });

 

এখান থেকে উদাহরনটি দেখুন:


<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
    $("#p1").mouseup(function(){
        alert("Mouse up over p1!");
    });
});
</script>
</head>
<body>

<p id="p1">This is a paragraph.</p>

</body>
</html>

 

hover():

hover() method  দুইটি ইভেন্ট হ্যান্ডেলার ফাংশন mouseenter() এবং mouseleave() এর সমন্নয়ে HTML element এর সাথে যুক্ত করে।

প্রথম ফাংশনটি কাজ করবে যখন মাউস পয়েন্টারটি এলিমেন্টটির ভিতরে প্রবেশ করবে এবং প্রথম ফাংশনটি কাজ করবে যখন  মাউস পয়েন্টারটি এলিমেন্টটির ভিতর থেকে বাহিরে যাবে,


$("#p1").hover(function(){
    alert("You entered p1!");
},
function(){
    alert("Bye! You now leave p1!");
});

 

এখান থেকে উদাহরনটি দেখুন:


<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
    $("#p1").hover(function(){
        alert("You entered p1!");
    },
    function(){
        alert("Bye! You now leave p1!");
    }); 
});
</script>
</head>
<body>

<p id="p1">This is a paragraph.</p>

</body>
</html>

 

focus():

focus() method একটি ইভেন্ট হ্যান্ডেলার ফাংশন কে একটি HTML ফর্ম ফিল্ড এর সাথে যুক্ত করে।

এই ফাংশনটি কাজ করবে যখন ফিল্ডটিকে ফোকাস করা হবে,


$("input").focus(function(){
    $(this).css("background-color", "#cccccc");
});

 

এখান থেকে উদাহরনটি দেখুন:

<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
    $("input").focus(function(){
        $(this).css("background-color", "#cccccc");
    });
    $("input").blur(function(){
        $(this).css("background-color", "#ffffff");
    });
});
</script>
</head>
<body>

Name: <input type="text" name="fullname"><br>
Email: <input type="text" name="email">

</body>
</html>

 

blur():

blur() method একটি ইভেন্ট হ্যান্ডেলার ফাংশন কে একটি HTML ফর্ম ফিল্ড এর সাথে যুক্ত করে।

এই ফাংশনটি কাজ করবে যখন ফিল্ডটি থেকে ফোকাস সরিয়ে নেয়া হবে,


$("input").blur(function(){
    $(this).css("background-color", "#ffffff");
});


এখান থেকে উদাহরনটি দেখুন:

<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
    $("input").focus(function(){
        $(this).css("background-color", "#cccccc");
    });
    $("input").blur(function(){
        $(this).css("background-color", "#ffffff");
    });
});
</script>
</head>
<body>

Name: <input type="text" name="fullname"><br>
Email: <input type="text" name="email">

</body>
</html>

 

on():

on() method একটি ইভেন্ট হ্যান্ডেলার ফাংশন কে একটি HTML ফর্ম ফিল্ড এর সাথে যুক্ত করে।


$("p").on("click", function(){
    $(this).hide();
});

এখান থেকে উদাহরনটি দেখুন:


<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
$(document).ready(function(){
    $("p").on("click", function(){
        $(this).hide();
    });
});
</script>
</head>
<body>

<p>If you click on me, I will disappear.</p>
<p>Click me away!</p>
<p>Click me too!</p>

</body>
</html>

 

 

<p> এলিমেন্ট এ একাধিক ইভেন্ট হ্যান্ডেলার ফাংশন যোগ করার উদাহরণ,


$("p").on({
    mouseenter: function(){
        $(this).css("background-color", "lightgray");
    },
    mouseleave: function(){
        $(this).css("background-color", "lightblue");
    },
    click: function(){
        $(this).css("background-color", "yellow");
    }
});

 

এখান থেকে উদাহরনটি দেখুন:


<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
$(document).ready(function(){
    $("p").on({
        mouseenter: function(){
            $(this).css("background-color", "lightgray");
        },  
        mouseleave: function(){
            $(this).css("background-color", "lightblue");
        }, 
        click: function(){
            $(this).css("background-color", "yellow");
        }  
    });
});
</script>
</head>
<body>

<p>Click or move the mouse pointer over this paragraph.</p>

</body>
</html>

 

 

পিএইচপি ৫ তারিখ ও সময় (PHP 5 Date and Time)

Huge Sell on Popular Electronics

PHP Date() ফাংশন

PHP Date() ফাংশন এর মাধ্যমে সহজে ও সঠিকভাবে সময় (time) ও তারিখ (date) দেখানো যায়।
সিনটেক্স


date(format,timestamp)

 

প্যারামিটার বর্ণনা
format আবশ্যিক বা Required. এর সাহায্যে timestamp এর ফরমেট নির্দিষ্ট করা হয়।
timestamp ঐচ্ছিক বা Optional. এর সাহায্যে timestamp নির্দিষ্ট করা হয়। সাধারণত Default হিসাবে current সময় ও তারিখ দেখানো হয়।

কোনো একটি ইভেন্ট সংঘটিত হলে নির্দিষ্ট date ও time এর একটি character এর একটি সেট প্রদর্শন করাই হলো timestamp.

সাধারণ তারিখ পেতে

date() function এর আবশ্যিক format প্যারামিটারের সাহায্যে date (or time) এর format কেমন হবে তা নির্দিষ্ট করা হয়।

নিম্নে কিছু character আলোচনা করা হলো যা date এর জন্য বেশি ব্যবহৃত হয়:

  • - d - এর সাহায্যে মাসের দিন নির্ধারণ করা হয় (০-৩১)
  • - m - এর সাহায্যে মাস নির্ধারণ করা হয় (১-১২)
  • - Y - এর সাহায্যে বছর নির্ধারণ করা হয় (চার সংখ্যা)
  • - l (lowercase 'L')- এর সাহায্যে সপ্তাহের দিন নির্ধারণ করা হয়

এছাড়াও অতিরিক্ত formatting যুক্ত করার জন্য বিভিন্ন character এর মাঝখানে "/", ".", বা "-" ব্যবহার করা যেতে পারে।

নিম্নে উদাহরণের সাহায্যে আজকের তারিখ ৩টি উপায়ে দেখানো হলো:


<?php
 echo "Today is " . date("Y/m/d") . "<br>";
 echo "Today is " . date("Y.m.d") . "<br>";
 echo "Today is " . date("Y-m-d") . "<br>";
 echo "Today is " . date("l");
 ?>

 

PHP টিপস - স্বয়ংক্রিয় Copyright Year

নিম্নোক্ত date() function টি ব্যবহার করে আপনার ওয়েবসাইটে copyright year এর তথ্য স্বয়ংক্রিয়ভাবে update হবে।
উদাহরণ:


© 2010-< ?php echo date("Y")?>


 

সাধারণভাবে সময় পেতে

নিম্নে কিছু character আলোচনা করা হলো যা time এর জন্য বেশি ব্যবহৃত হয়:

  • h - এটি ১২-ঘন্টা format কে নির্দেশ করে যা ০১ হতে ১২ পর্যন্ত হতে পারে।
  • i - এটি মিনিটের format কে নির্দেশ করে যা ০০ হতে ৫৯ পর্যন্ত হতে পারে।
  • s- এটি সেকেন্ডের format কে নির্দেশ করে যা ০০ হতে ৫৯ পর্যন্ত হতে পারে।
  • a- এটি Lowercase Ante meridiem ও Post meridiem কে নির্দেশ করে (am অথবা pm)

নিম্নে উদাহরণের সাহায্যে বর্তমান সময়কে একটি নির্দিষ্ট format এ দেখানো হলো:

উদাহরণ:


< ?php
 echo "The time is " . date("h:i:sa");
 ?>

নোট: PHP date() function টি শুধুমাত্র সার্ভারের কারেন্ট সময়কে নির্দেশ করে থাকে।

 

আপনার সময় অঞ্চল পেতে

যদি সার্ভার হতে প্রাপ্ত তারিখ ও সময় সঠিক না হয় তাহলে খুব সম্ভবত আপনার সার্ভারটি অন্যদেশে অবস্থিত অথবা অন্য কোনো টাইমজোন (timezone) সেট করা আছে। সুতরাং কোনো নির্দিষ্ট স্থানের জন্য সময়/তারিখ নির্ধারণ করতে হলে আপনাকে সে স্থানের টাইমজোন ব্যবহার করতে হবে।
নিম্নোক্ত উদহারণে "America/New_York" এর টাইমজোন সেট করে একটি নির্দিষ্ট ফরমেটে current time বা বর্তমান সময়কে দেখানো হলো:
উদাহরণ:


< ?php
 date_default_timezone_set("America/New_York");
 echo "The time is " . date("h:i:sa");
 ?>

 

PHP mktime() এর সাহায্যে তারিখ তৈরি

date() function এর optional timestamp এর সাহায্যে একটি timestamp কে নির্দিষ্ট করা যায়। যদি আপনি কোন timestamp কে নির্দিষ্ট না করে থাকেন তাহলে পূর্বের উদাহরণ গুলোর মতো current date and time দেখাবে।

mktime() function টি কোনো তারিখের Unix timestamp কে return করে বা দেখায়। Unix timestamp এর সাহায্যে Unix Epoch (January 1 1970 00:00:00 GMT) ও নির্দিষ্টকৃত দিনের মধ্যকার সেকেন্ডকে দেখানো হয়।

সিনট্যাক্স


mktime(hour,minute,second,month,day,year)

 

mktime() function প্যারামিটারের একটি উদাহরণ নিম্নে দেখানো হলো:


< ?php
 $d=mktime(11, 14, 54, 8, 12, 2014);
 echo "Created date is " . date("Y-m-d h:i:sa", $d);
 ?>

 

PHP strtotime() এর সাহায্যে একটি স্ট্রিং থেকে একটি তারিখ তৈরি করুন

PHP strtotime() function এর সাহায্যে মানুষের পাঠ্যযোগ্য সময়কে Unix সময়ে convert করা হয়।

সিনট্যাক্স


strtotime(time,now)

 

নিম্নোক্ত উদাহরণে strtotime() function এর সাহায্যে দিন ও তারিখ দেখানো হলো:


< ?php
 $d=strtotime("10:30pm April 15 2014");
 echo "Created date is " . date("Y-m-d h:i:sa", $d);
 ?>

 

দিন ও তারিখে convert করার ক্ষেত্রে PHP যথেষ্ট বুদ্ধিমত্তার পরিচয় দেয়, এক্ষেত্রে আপনি ভিন্ন ভিন্ন value যোগ করতে পারেন:


<?php
 $d=strtotime("tomorrow");
 echo date("Y-m-d h:i:sa", $d) . "<br>";
 
 $d=strtotime("next Saturday");
 echo date("Y-m-d h:i:sa", $d) . "<br>";
 
 $d=strtotime("+3 Months");
 echo date("Y-m-d h:i:sa", $d) . "<br>";
 ?>

 

মনে রাখবেন, strtotime() টি perfect নাও হতে পারে, এক্ষেত্রে আপনি যেসকল strings যোগ করেছেন সেগুলো চেক করতে ভুলবেন না।

 

তারিখের আরো কিছু উদাহরণ

নিম্নোক্ত উদাহরণে পরবর্তী ৬টি শনিবারের তারিখ বের করে দেখানো হয়েছে:


<?php
 $startdate = strtotime("Saturday");
 $enddate = strtotime("+6 weeks",$startdate);
 
 while ($startdate < $enddate) {
   echo date("M d", $startdate),"<br>";
   $startdate = strtotime("+1 week", $startdate);
 }
 ?>

 

নিম্নোক্ত উদাহরণে পরবর্তী ৪ জুলাই তারিখ পর্যন্ত দিনের সংখ্যা বের করা হয়েছে:


<?php
 $d1=strtotime("July 04");
 $d2=ceil(($d1-time())/60/60/24);
 echo "There are " . $d2 ." days until 4th of July.";
 ?>

 

সম্পূর্ণ পিএইচপি তারিখ রেফারেন্স

সকল date function এর complete reference পেতে PHP Date Reference অনুচ্ছেদটি দেখুন।

 

পিএইচপি ৫ ফাংশন (PHP 5 Functions)

Huge Sell on Popular Electronics

সুদীপ্ত সাহা
PHP এর মূল শক্তি হিসেবে এর ফাংশনকেই বিবেচনা করা হয়। কারণ এর প্রায় ১০০০ বিল্ট-ইন ফাংশন রয়েছে।

PHP ইউজার ডিফাইন্ড ফাংশন

বিল্ট-ইন ফাংশনের পাশাপাশি PHPতে ইউজার ডিফাইন্ড ফাংশনও তৈরি করা যায়।
ফাংশন হচ্ছে কিছু স্টেটমেন্টের একটি ব্লক যা কোন প্রোগ্রামে যতবার ইচ্ছা ততবার ব্যবহার করা যায়। কোন একটি পেজ লোড হওয়ার সময়েই ফাংশন রান করে না। ফাংশনকে রান করানোর জন্য ফাংশনকে কল করতে হয়।

PHP তে ইউজার ডিফাইন্ড ফাংশন তৈরি করা

ইউজার ডিফাইন্ড ফাংশন তৈরি করার জন্য “function” ওয়ার্ড দ্বারা ফাংশনকে ডিক্লেয়ার করতে হয়।

সিনট্যাক্স


 function functionName() {
     code to be executed;
 }

নোটঃ ফাংশনের নাম লেটার অথবা আন্ডারস্কোর দ্বারা শুরু করতে হয়, নাম্বার দ্বারা শুরু করা যায়না।

টিপসঃ ফাংশনের এমন নাম দেয়া উচিৎ যেন তা ফাংশনের কাজকে বোঝায়।

নিচের উদাহরণে "writeMsg()" নামের একটি ফাংশন তৈরি করা হয়েছে। শুরুর দ্বিতীয় বন্ধনী { দ্বারা ফাংশনের শুরুকে বোঝানো হয় এবং শেষের দ্বিতীয় বন্ধনী } দ্বারা ফাংশনের শেষকে বোঝানো হয়েছে। এই ফাংশনের আউটপুট হবেঃ Hello world!

ফাংশনকে কল করার জন্য শুধু এর নামটি লিখলেই হয়ঃ

উদাহরণঃ


<?php
 function writeMsg() {
     echo "Hello world!";
 }
 
 writeMsg(); // call the function
 ?>

 

PHP ফাংশন আর্গুমেন্ট

আর্গুমেন্টের সাহায্যে ফাংশনে ডাটা পাস করা যায়। আর্গুমেন্ট ভ্যারিয়েবল হিসেবে কাজ করে। ফাংশন নেমের পড়ে বন্ধনীর ভেতরে আর্গুমেন্ট ডিক্লেয়ার করা হয়। আপনি আপনার ইচ্ছামতো আর্গুমেন্ট সেট করতে পারবেন, শুধু একটি কমা ব্যবহার করে আর্গুমেন্টগুলোকে আলাদা করতে হয়।

নিচের উদাহরণে ($fname) নামের একটি আর্গুমেন্ট তৈরি করা হয়েছে। familyName() ফাংশনকে কল করার সময় একটি নামও পাস করতে হবে, যা ফাংশনের মধ্যে রান করে ভিন্ন ভিন্ন ফার্স্টনেম এবং একই লাস্টনেমের আউটপুট শো করবে।

উদাহরণঃ


<?php
 function familyName($fname) {
     echo "$fname Refsnes.<br>";
 }
 
 familyName("Jani");
 familyName("Hege");
 familyName("Stale");
 familyName("Kai Jim");
 familyName("Borge");
 ?>

 

নিচের উদাহরণে ($fname and $year) নামের দুইটি আর্গুমেন্ট তৈরি করা হয়েছে।
উদাহরণঃ


<?php
 function familyName($fname, $year) {
     echo "$fname Refsnes. Born in $year <br>";
 }
 
 familyName("Hege", "1975");
 familyName("Stale", "1978");
 familyName("Kai Jim", "1983");
 ?>

 

PHP ডিফল্ট আর্গুমেন্ট ভ্যালু

কিভাবে একটি ডিফল্ট প্যারামিটার ব্যবহার করতে হয় তা নিচের উদাহরণে দেখানো হয়েছে। যদি আমরা কোন আর্গুমেন্ট ছাড়া ফাংশন setHeight() ব্যবহার করি তাহলে এটি আর্গুমেন্টকে ডিফল্ট ভ্যালু হিসেবে গ্রহণ করবে।

উদাহরণঃ


<?php
 function setHeight($minheight = 50) {
     echo "The height is : $minheight <br>";
 }
 
 setHeight(350);
 setHeight(); // will use the default value of 50
 setHeight(135);
 setHeight(80);
 ?>

 

PHP ফাংশন রিটার্নিং ভ্যালু

ফাংশনের কোন ভ্যালুকে রিটার্ন করানোর জন্য return স্টেটমেন্ট ব্যবহার করতে হয়।

উদাহরণঃ


<?php
function sum($x, $y) {
 $z = $x + $y;
 return $z;
}
echo "5 + 10 = " . sum(5, 10) . "<br>";
echo "7 + 13 = " . sum(7, 13) . "<br>";
echo "2 + 4 = " . sum(2, 4);
?>

 

jQuery নির্বাচক (Selectors)

Huge Sell on Popular Electronics

jQuery নির্বাচক jQuery লাইব্রেরির সবচেয়ে গুরুত্বপূর্ণ অংশ।

 

jQuery নির্বাচক

jQuery নির্বাচক আপনাকে এইচটিএমএল উপাদান (গুলি) নির্বাচন এবং নিপূণভাবে ব্যবহার করার অনুমতি দেয়। HTML উপাদান আইডি, ক্লাস, টাইপ, এট্রিবিউট, এট্রিবিউট এর মান সহ আরও অনেক কিছুর উপর ভিত্তি করে "খুঁজতে" (বা নির্বাচন করতে) jQuery নির্বাচক ব্যবহৃত হয়। এটা বিদ্যমান সিএসএস সিলেক্টর এর উপর নির্ভর করে এবং এ ছাড়াও, এটার কিছু নিজস্ব সিলেক্টর আছে।

JQuery মধ্যে সকল নির্বাচক ডলার চিহ্ন এবং বন্ধনী দিয়ে শুরু হয়: $ ()।

 

এলিমেন্ট নির্বাচক

JQuery এলিমেন্ট নির্বাচক এলিমেন্ট এর নাম অনুসারে নির্বাচন করে।
আপনি একটি পেজ এর সকল <p> এলিমেন্ট নির্বাচন করতে পারেন:


$ ("p")


 

উদাহরণ:
যখন একজন ব্যবহারকারী একটি বাটন ক্লিক করবে, তখন সকল <p> এলিমেন্ট অদৃশ্য হয়ে যাবে:


$(document).ready(function(){
    $("button").click(function(){
        $("p").hide();
    });
});

 

#id নির্বাচক

JQuery এর #id নির্বাচক একটি HTML ট্যাগ এর আইডি অ্যাট্রিবিউট ব্যবহার করে নির্দিষ্ট এলিমেন্ট খোজে।

একটি পেজ এর মধ্যে আইডি অনন্য হতে হবে,যাতে নির্দিষ্ট এলিমেন্ট খুঁজে বের করার জন্য আপনি #id নির্বাচক ব্যবহার করতে পারেন।

নির্দষ্ট আইডি বিশিষ্ট কোন এলিমেন্ট খুঁজে বের করার জন্য উক্ত আইডি এর পূর্বে # (হ্যাস) ব্যবহার করুন।


$ ("#test")


 

 

উদাহরণ
একজন ব্যবহারকারী যখন একটি বাটন ক্লিক করে, id="test" এলিমেন্ট অদৃশ্য হয়ে যাবে:


$(document).ready(function(){
    $("button").click(function(){
        $("#test").hide();
    });
});

 

JQuery নির্বাচক এর আরো উদাহরণ

 

সিনটেক্স বর্ণনা
$("*") সকল এলিমেন্ট নির্বাচন করে
$(this) বর্তমান এইচটিএমএল এলিমেন্ট নির্বাচন করে
$("p.intro") class="intro" বিশিষ্ট সকল <p> এলিমেন্ট নির্বাচন করে
$("p:first") প্রথম <p> এলিমেন্ট নির্বাচন করে
$("ul li:first") প্রথম <ul> এলিমেন্ট এর প্রথম <li> এলিমেন্ট নির্বাচন করে
$("ul li:first-child") প্রতিটি <ul> এলিমেন্ট এর প্রথম <li> এলিমেন্ট নির্বাচন করে
$("[href]") href এট্রিবিউট বিশিষ্ট সকল এলিমেন্ট নির্বাচন করে
$("a[target='_blank']") টার্গেন এট্রিবিউট মান "_blank" বিশিষ্ট সকল <a> এলিমেন্ট নির্বাচন করে
$("a[target!='_blank']") টার্গেন এট্রিবিউট মান NOT সমান "_blank" বিশিষ্ট সকল <a> এলিমেন্ট নির্বাচন করে
$(":button") type="button" এর সকল <button> এবং <input> এলিমেন্ট নির্বাচন করে
$("tr:even") সকল জোড় <tr> এলিমেন্ট নির্বাচন করে
$("tr:odd") সকল বেজোড় <tr> এলিমেন্ট নির্বাচন করে

 

একটি পৃথক ফাইলে jQuery ফাংশান রাখা

যদি আপনার ওয়েব সাইটে প্রচুর সংখ্যক পেজ থাকে এবং jQuery ফাংশন সহজে ব্যবহার করতে চান তাহলে jQuery ফাংশনগুলোকে একটি আলাদা ফাইলে রাখতে পারেন, যার এক্সটেনশন হবে .js

আমাদের টিউটোরিয়াল এর উদাহরণগুলোতে jQuery ফাংশন হেড সেকশন এর ভিতরে রাখা হয়েছে। কিছু কিছু ক্ষেত্রে নিচের মতো করে আলাদা ফাইল এও রাখা হয়েছে:


<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js">
</script>
<script src="my_jquery_functions.js"></script>
</head>


 

 

লেকচার-০৮: সিএসই-১০০: সি প্রোগ্রামিং পরিচিতি – সি এ ফাংশন / মেথড (Function/method in C)

Huge Sell on Popular Electronics