Category Archives: Complete Courses

SCJP Training: Lesson 6: Collections / Generics #Java Short Notes #SCJP

From: http://sitestree.com/?p=5053
Categories:Java Short Notes, SCJP
Tags:
Post Data:2012-07-21 07:53:36

Shop Online: https://www.ShopForSoul.com/
(Big Data, Cloud, Security, Machine Learning): Courses: http://Training.SitesTree.com
In Bengali: http://Bangla.SaLearningSchool.com
http://SitesTree.com
8112223 Canada Inc./JustEtc: http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning)
Shop Online: https://www.ShopForSoul.com/
Medium: https://medium.com/@SayedAhmedCanada

SCJP Training: Lesson 7: Fundamentals #Java Short Notes #SCJP

From: http://sitestree.com/?p=5054
Categories:Java Short Notes, SCJP
Tags:
Post Data:2009-05-18 14:59:18

Shop Online: https://www.ShopForSoul.com/
(Big Data, Cloud, Security, Machine Learning): Courses: http://Training.SitesTree.com
In Bengali: http://Bangla.SaLearningSchool.com
http://SitesTree.com
8112223 Canada Inc./JustEtc: http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning)
Shop Online: https://www.ShopForSoul.com/
Medium: https://medium.com/@SayedAhmedCanada

SCJP Training: Lesson 3: API Contents #Java Short Notes #SCJP

From: http://sitestree.com/?p=5050
Categories:Java Short Notes, SCJP
Tags:
Post Data:2011-03-16 12:43:36

Shop Online: https://www.ShopForSoul.com/
(Big Data, Cloud, Security, Machine Learning): Courses: http://Training.SitesTree.com
In Bengali: http://Bangla.SaLearningSchool.com
http://SitesTree.com
8112223 Canada Inc./JustEtc: http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning)
Shop Online: https://www.ShopForSoul.com/
Medium: https://medium.com/@SayedAhmedCanada

SCJP Training: Lesson 4: Concurrency #Java Short Notes #SCJP

From: http://sitestree.com/?p=5051
Categories:Java Short Notes, SCJP
Tags:
Post Data:2006-11-03 06:59:23

Shop Online: https://www.ShopForSoul.com/
(Big Data, Cloud, Security, Machine Learning): Courses: http://Training.SitesTree.com
In Bengali: http://Bangla.SaLearningSchool.com
http://SitesTree.com
8112223 Canada Inc./JustEtc: http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning)
Shop Online: https://www.ShopForSoul.com/
Medium: https://medium.com/@SayedAhmedCanada

SCJP Training: Lesson 5: OO Concepts #Java Short Notes #SCJP

From: http://sitestree.com/?p=5052
Categories:Java Short Notes, SCJP
Tags:
Post Data:2009-12-15 16:31:08

Shop Online: https://www.ShopForSoul.com/
(Big Data, Cloud, Security, Machine Learning): Courses: http://Training.SitesTree.com
In Bengali: http://Bangla.SaLearningSchool.com
http://SitesTree.com
8112223 Canada Inc./JustEtc: http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning)
Shop Online: https://www.ShopForSoul.com/
Medium: https://medium.com/@SayedAhmedCanada

SCJP Essential Knowledge #Java Short Notes #SCJP

    • int x=5; String y="3"; System.out.print(x + 1 + y); Output: 63
    • When there is no live reference to an object, the object becomes eligible for garbage collection.
    • The concrete interface method implementation must be public.
    • When a class implements Comparator, it must implement a compare method.
    • When a class implements Comparable, it must implement a compareTo method.
    • The Arrays.asList() method creates a fixed-size list
    • A method like void go(Set a) can be called with objects created as: TreeSet t = new TreeSet(); TreeSet t = new TreeSet();. Remember, TreeSet t = new TreeSet(); TreeSet t = new TreeSet(); will not work where Dog is a sub-class of Animal.
    • When two enums are equal, both .equals and == always return true.
    • TreeSet is ordered in their natural order or according to the Comparator provided at creation.
    • SortedMaps are abstract
    • Is-a relationships can use inheritance
    • Tightly encapsulated classes can have a has-a relationship
    • is-a or has-a relationships does not apply to methods
    • java command in details:
      Usage: java [-options] class [args...]           (to execute a class)   or  java [-options] -jar jarfile [args...]           (to execute a jar file)where options include:    -client	  to select the "client" VM    -server	  to select the "server" VM    -hotspot	  is a synonym for the "client" VM  [deprecated]                  The default VM is client.                      -cp     -classpath                   A ; separated list of directories, JAR archives,                  and ZIP archives to search for class files.    -D=                  set a system property    -verbose[:class|gc|jni]                  enable verbose output    -version      print product version and exit    -version:                  require the specified version to run    -showversion  print product version and continue    -jre-restrict-search | -jre-no-restrict-search                  include/exclude user private JREs in the version search    -? -help      print this help message    -X            print help on non-standard options    -ea[:...|:]    -enableassertions[:...|:]                  enable assertions    -da[:...|:]    -disableassertions[:...|:]                  disable assertions    -esa | -enablesystemassertions                  enable system assertions    -dsa | -disablesystemassertions                  disable system assertions    -agentlib:[=]                  load native agent library , e.g. -agentlib:hprof                    see also, -agentlib:jdwp=help and -agentlib:hprof=help    -agentpath:[=]                  load native agent library by full pathname    -javaagent:[=]                  load Java programming language agent, see java.lang.instrument

From: http://sitestree.com/?p=4893
Categories:Java Short Notes, SCJP
Tags:
Post Data:2008-03-02 15:26:47

Shop Online: https://www.ShopForSoul.com/
(Big Data, Cloud, Security, Machine Learning): Courses: http://Training.SitesTree.com
In Bengali: http://Bangla.SaLearningSchool.com
http://SitesTree.com
8112223 Canada Inc./JustEtc: http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning)
Shop Online: https://www.ShopForSoul.com/
Medium: https://medium.com/@SayedAhmedCanada

SCJP Training: Lesson 1: Develop code that declares classes (including abstract and all forms of nested classes), interfaces, and enums, and includes the appropriate use of package and import statements (including static imports). #Java Short Notes #SCJP

From: http://sitestree.com/?p=5047
Categories:Java Short Notes, SCJP
Tags:
Post Data:2012-06-10 07:14:48

Shop Online: https://www.ShopForSoul.com/
(Big Data, Cloud, Security, Machine Learning): Courses: http://Training.SitesTree.com
In Bengali: http://Bangla.SaLearningSchool.com
http://SitesTree.com
8112223 Canada Inc./JustEtc: http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning)
Shop Online: https://www.ShopForSoul.com/
Medium: https://medium.com/@SayedAhmedCanada

SCJP Training: Lesson 2: Flow Control #Java Short Notes #SCJP

From: http://sitestree.com/?p=5049
Categories:Java Short Notes, SCJP
Tags:
Post Data:2007-05-18 16:05:29

Shop Online: https://www.ShopForSoul.com/
(Big Data, Cloud, Security, Machine Learning): Courses: http://Training.SitesTree.com
In Bengali: http://Bangla.SaLearningSchool.com
http://SitesTree.com
8112223 Canada Inc./JustEtc: http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning)
Shop Online: https://www.ShopForSoul.com/
Medium: https://medium.com/@SayedAhmedCanada

SCJP: Rules #Java Short Notes #SCJP

  • A class's superclasses don't have to implement Serializable in order to be serialized
  • if a superclass doesn't implement Serializable then it's constructor will run during deserialization
  • A transient variable's state is lost during serialization, but a volatile variable's state is not lost
  • Java:Volatile variable
  • Transient Variable
  • NumberFormat, Calendar, DateFormat are abstract classes. Use the getInstance method to get NumberFormat instances.
  • The + quantifier in a regular expression indicates 1 or more occurrences, * indicates 0 or more, [] just one character in the group, () indicates a whole group match.
  • The default separator in Scanner class is a blank NOT a comma
  • Multiple threads can be created using the same Runnable object, but a given thread can be started only once.
  • Thread.yield(): Causes the currently executing thread object to temporarily pause and allow other threads to execute.
  • Thread.join(): Waits for this thread to die.
  • Wait(), Notify(), NotifyAll() methods
  • Low coupling: classes know the least possible about each other, is preferable over tight coupling.
  • High cohesion: Each class has well focused responsibilities. Is preferable over low cohesion.
  • Polymorphism does NOT apply to static methods.
  • Instance variable cannot be referenced from static method

From: http://sitestree.com/?p=4883
Categories:Java Short Notes, SCJP
Tags:
Post Data:2011-09-04 06:32:26

Shop Online: https://www.ShopForSoul.com/
(Big Data, Cloud, Security, Machine Learning): Courses: http://Training.SitesTree.com
In Bengali: http://Bangla.SaLearningSchool.com
http://SitesTree.com
8112223 Canada Inc./JustEtc: http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning)
Shop Online: https://www.ShopForSoul.com/
Medium: https://medium.com/@SayedAhmedCanada

SCJP: Short Notes #Java Short Notes #SCJP

From: http://sitestree.com/?p=4888
Categories:Java Short Notes, SCJP
Tags:
Post Data:2011-10-20 04:13:02

Shop Online: https://www.ShopForSoul.com/
(Big Data, Cloud, Security, Machine Learning): Courses: http://Training.SitesTree.com
In Bengali: http://Bangla.SaLearningSchool.com
http://SitesTree.com
8112223 Canada Inc./JustEtc: http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning)
Shop Online: https://www.ShopForSoul.com/
Medium: https://medium.com/@SayedAhmedCanada

SCJP: More Rules #Java Short Notes #SCJP

  • java -classpath gFolder/Game.jar civilization.java: In such command, -classpath will override (replace) CLASSPATH environment variable.
  • java -classpath gFolder/Game.jar civilization.java: if both gFolder and current directory contain Game.jar then the jar file under gFolder will be used.
  • If you want java compiler to recognize your jar file, either you have to mention the location of the jar file in javac command using -classpath switch or you have to add the jar file in the CLASSPATH environment variable. Mentionable - you need to add the file, adding upto the directory will not work.
  • Garbage collection: can Java program run out of memory? yes.
  • Can objects be garbage collected even if it has a valid reference? yes. when no live thread has access to the object.
  • Can Objects created within inner classes be eligible for garbage collection.? yes.
  • Do garbage collector deletes objects from the stack? No. As objects reside in heaps not in the stack.
  • If an object's finalize method runs to completion will it always be garbage collected? No. The finalize method may create some other references.
  • Arrays.equals(Object[] a1, Object[] a2) : Returns true if the two specified arrays of Objects are equal to one another
  • The results of Binary search on an unsorted array are undefined
  • Alpha go(int i) is a valid method declaration with a generic return type. class Alpha{}

From: http://sitestree.com/?p=4891
Categories:Java Short Notes, SCJP
Tags:
Post Data:2010-06-26 02:46:16

Shop Online: https://www.ShopForSoul.com/
(Big Data, Cloud, Security, Machine Learning): Courses: http://Training.SitesTree.com
In Bengali: http://Bangla.SaLearningSchool.com
http://SitesTree.com
8112223 Canada Inc./JustEtc: http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning)
Shop Online: https://www.ShopForSoul.com/
Medium: https://medium.com/@SayedAhmedCanada

SCJP Practice Exams #Java Short Notes #SCJP

Check these practice exams. Be careful that many java rules may have changed over the time. Check that which jdk version or the exam these practice exams support

From: http://sitestree.com/?p=4892
Categories:Java Short Notes, SCJP
Tags:
Post Data:2007-11-16 02:44:22

Shop Online: https://www.ShopForSoul.com/
(Big Data, Cloud, Security, Machine Learning): Courses: http://Training.SitesTree.com
In Bengali: http://Bangla.SaLearningSchool.com
http://SitesTree.com
8112223 Canada Inc./JustEtc: http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning)
Shop Online: https://www.ShopForSoul.com/
Medium: https://medium.com/@SayedAhmedCanada

SCJP: Basic Java I/O #Java Short Notes #SCJP

  • ByteStream is the basic I/O stream. Handles data as a stream of bytes. Does operation with byte unit and uses 8 bit. FileInputStream, FileOutputStream - can be used to copy files as byte by byte.
  • Character Streams: FileReader and FileWriter are character streams. They treat file data as 16 bit unicode charater streams.
  • InputStreamReader, OutputStreamWriter are also character streams. May be used in socket data reading.
  • Line-Oriented I/O: BufferedReader and PrintWriter
  • Buffered Streams: BufferedInputStream and BufferedOutputStream create buffered byte streams, while BufferedReader and BufferedWriter create buffered character streams
  • You can set autoflush() of buffered streams or call manually flush() method.
  • The scanner API breaks input into individual tokens. The formatting API assembles data into nicely formatted, human-readable form.
  • Scanner:
    Scanner scanner = new Scanner(new BufferedReader(new FileReader("test.txt")));            while (s.hasNext()) {                System.out.println(s.next());            }
  • To create formatted output streams, instantiate PrintWriter not PrintStream
  • Check: System.out.format("The square root of %d is %f.%n", i, r);
  • System.out and System.err are PrintStream objects. PrintStream is really a byte stream but uses some mechanism to emulate character stream.
  • InputStreamReader cin = new InputStreamReader(System.in); System.in is a byte stream. InputStreamReader is used to emulate a character stream.
  • System.console provides character streams to handle console read/write operations. Provides readPassword method to read password from the console
  • Data Streams: Support I/O operations of primitive data types. DataInputStream and DataOutputStream.
  • Check:
    out = new DataOutputStream(new            BufferedOutputStream(new FileOutputStream(dataFile)));out.writeDouble(prices);out.writeInt(units);out.writeUTF(descs);
  • DataStreams detects an end-of-file condition by catching EOFException
  • Correct type to represent currency values: java.math.BigDecimal - an object type
  • Object Streams: ObjectInputStream and ObjectOutputStream. Use writeObject and readObject to write and read objects respectively.
  • A stream can contain only one copy of an object but many references to it when required.
  • File Objects: File I/O
  • Random access file:
    new RandomAccessFile("test.txt", "r");new RandomAccessFile("test.txt", "rw");RandomAccessFile methods:    * int skipBytes(int)     * void seek(long)      * long getFilePointer() 
  • The new java.nio.* package provides supports to handle file i/o for high performance applications.

From: http://sitestree.com/?p=4878
Categories:Java Short Notes, SCJP
Tags:
Post Data:2012-10-24 02:25:07

Shop Online: https://www.ShopForSoul.com/
(Big Data, Cloud, Security, Machine Learning): Courses: http://Training.SitesTree.com
In Bengali: http://Bangla.SaLearningSchool.com
http://SitesTree.com
8112223 Canada Inc./JustEtc: http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning)
Shop Online: https://www.ShopForSoul.com/
Medium: https://medium.com/@SayedAhmedCanada

SCJP: Java Concurrency #Java Short Notes #SCJP

From: http://sitestree.com/?p=4879
Categories:Java Short Notes, SCJP
Tags:
Post Data:2009-04-19 03:15:05

Shop Online: https://www.ShopForSoul.com/
(Big Data, Cloud, Security, Machine Learning): Courses: http://Training.SitesTree.com
In Bengali: http://Bangla.SaLearningSchool.com
http://SitesTree.com
8112223 Canada Inc./JustEtc: http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning)
Shop Online: https://www.ShopForSoul.com/
Medium: https://medium.com/@SayedAhmedCanada

SCJP: Class Declarations #Java Short Notes #SCJP

class declarations

  • Start with modifiers such as public, private followed by class keyword
  • The class name, with the initial letter capitalized
  • The name of the class's parent (superclass), preceded by the keyword extends (if any). A class can only extend (subclass) one parent.
  • list of interfaces implemented by the class, preceded by the keyword implements (if any). A class can implement more than one interface
  • The class body, surrounded by braces, {}.
  • Class member variable declarations
    • Requires three components, in order:
    • Zero or more modifiers, such as public or private
    • The field's type
    • The field's name.

Abstract Classes

  • A class declared with abstract keyword is an abstract class. It may or may not include abstract methods
  • Abstract classes cannot be instantiated
  • Abstract classes can be subclassed
  • Class containing abstract methods, must be declared to be abstract
  • Abstract methods are methods declared without implementation (braces)
  • The subclass of an abstract class must provide implementations of all the abstract methods otherwise the subclass itself needs to be declared as abstract.
  • An abstract class may have static and final fields and methods. Interfaces can not
  • If an abstract class contains only abstract method declarations with no implementations, it should better be declared as an interface
  • It's a good design to declare a common abstract class with common methods with implementations for several very related classes (will extend the abstract class)
  • An abstract class can implement an interface but are not bound to implement all interface methods

Nested Classes

  • Classes declared under another class are called nested classes
  • Two types: Static Nested: declared with static keyword, Inner Nested: declared with no static keyword
  • inner classes have access to other members of the outer class including private members
  • Static nested classes do not have access to other members of the outer class
  • Static nested classes are accessed using the outer class name such as: OuterClass.StaticNestedClass
  • To use inner classes, the outer class must be instantiated first. Then, inner object can be created as follows: OuterClass.InnerClass innerObject = outerObject.new InnerClass();
  • Local inner classes: Declared within the body of a method
  • Anonymous inner classes: Declared within the body of a method without naming it
  • Inner classes may have similar access modifiers like other outer class members
  • Why use nested classes:
    • For logically grouping classes that are only used in one place
    • It increases encapsulation.
    • May lead to more readable and maintainable code

From: http://sitestree.com/?p=4866
Categories:Java Short Notes, SCJP
Tags:
Post Data:2012-09-13 21:25:27

Shop Online: https://www.ShopForSoul.com/
(Big Data, Cloud, Security, Machine Learning): Courses: http://Training.SitesTree.com
In Bengali: http://Bangla.SaLearningSchool.com
http://SitesTree.com
8112223 Canada Inc./JustEtc: http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning)
Shop Online: https://www.ShopForSoul.com/
Medium: https://medium.com/@SayedAhmedCanada

SCJP: Interfaces #Java Short Notes #SCJP

Interface

  • An interface is a reference type, similar to a class
  • Interfaces can contain only constants, method signatures, and nested types
  • No method is implemented
  • Interfaces cannot be instantiated
  • They can only be implemented by classes or extended by other interfaces
  • Interfaces are not part of the class hierarchy
  • A class can implement multiple interfaces

From: http://sitestree.com/?p=4867
Categories:Java Short Notes, SCJP
Tags:
Post Data:2010-01-20 15:33:28

Shop Online: https://www.ShopForSoul.com/
(Big Data, Cloud, Security, Machine Learning): Courses: http://Training.SitesTree.com
In Bengali: http://Bangla.SaLearningSchool.com
http://SitesTree.com
8112223 Canada Inc./JustEtc: http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning)
Shop Online: https://www.ShopForSoul.com/
Medium: https://medium.com/@SayedAhmedCanada

SCJP: Random Stuffs #Java Short Notes #SCJP

  • An enum may NOT be declared in a method
  • An enum can be imported
  • If the JVM has a choice, it will select a method without varargs before selecting a method with varargs
  • When enums are equal, both .equals and == always return true
  • The headMap() method returns the portion of the map whose keys are less than the key sent to it
  • The asList() method of Arrays creates a fixed-size list that is backed by the array, so no additions are possible.
  • A static initialization block is a normal block of code enclosed in braces, { }, and preceded by the static keyword. Used to initialize class variables
  • All enums implicitly extend java.lang.Enum.
  • A class can extend only one other class, an interface can extend any number of interfaces
  • An interface might also contain constant definitions.
  • An abstract class that implements an interface may not implement all interface methods

From: http://sitestree.com/?p=4872
Categories:Java Short Notes, SCJP
Tags:
Post Data:2012-12-07 07:48:57

Shop Online: https://www.ShopForSoul.com/
(Big Data, Cloud, Security, Machine Learning): Courses: http://Training.SitesTree.com
In Bengali: http://Bangla.SaLearningSchool.com
http://SitesTree.com
8112223 Canada Inc./JustEtc: http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning)
Shop Online: https://www.ShopForSoul.com/
Medium: https://medium.com/@SayedAhmedCanada

Java : SCJP: Important Resources #Java Short Notes #SCJP

From: http://sitestree.com/?p=4876
Categories:Java Short Notes, SCJP
Tags:
Post Data:2008-03-19 18:31:53

Shop Online: https://www.ShopForSoul.com/
(Big Data, Cloud, Security, Machine Learning): Courses: http://Training.SitesTree.com
In Bengali: http://Bangla.SaLearningSchool.com
http://SitesTree.com
8112223 Canada Inc./JustEtc: http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning)
Shop Online: https://www.ShopForSoul.com/
Medium: https://medium.com/@SayedAhmedCanada

SCJP: Flow controls and exception #Java Short Notes #SCJP

Flow Control and ExceptionsFlow control statements

  • Conditional: if, if-else and switch-case
  • Looping: for, while, do-while
  • Exception handling: try-catch-finally, throw
  • Ad hoc flow control: break, continue with or without labels

switch statement

switch(expression){
case ConstantExpression: statement(s);
case ConstantExpression: statement(s);
.
.
.
default: statement(s);
}

  • expression: must be char, byte, short, or int, or a compile-time error occurs
  • long primitive can be used if type casted to int
  • Object reference cannot be used as expression
  • Every case expression must be unique
  • break statement may be used at the end of a case statement, to discontinue execution.
  • There can be at most only one default statement.
  • The order of case statements and default can be anything.

break and continue

  • A break statement transfers the control out of an enclosing statement. break used within a loop breaks the execution of the current loop. In case of nested loops, the break statement passes the control to the immediate outer loop.
  • A continue statement breaks the current iteration and moves to next iteration.
  • break and continue with labels.
    • Labels specify the target (statement) for continue and break
    • continue with label does not jump to the labeled statement but instead jumps to the end of the labeled loop.
    • Same label identifiers can be reused multiple times as long as they are not nested.
    • Label names do not conflict with the same named identifier(variable, method or class name).

Checked and Unchecked Exceptions

Checked Exceptions

  • Checked Exceptions are checked by the compiler to see if these exceptions are properly caught or specified. If not, the code will fail to compile
  • Checked exception forces client program to deal with the scenario in which an exception may be thrown
  • Checked exceptions must be either declared or caught at compile time

Unchecked Exceptions

  • Unchecked exceptions are RuntimeException and all of its subclasses.
  • Class java.lang.Error and its subclasses also are unchecked.
  • Unchecked Exceptions are not checked by the compiler.
  • Runtime exceptions do not need to be caught or declared.

From: http://sitestree.com/?p=4864
Categories:Java Short Notes, SCJP
Tags:
Post Data:2008-08-25 00:56:33

Shop Online: https://www.ShopForSoul.com/
(Big Data, Cloud, Security, Machine Learning): Courses: http://Training.SitesTree.com
In Bengali: http://Bangla.SaLearningSchool.com
http://SitesTree.com
8112223 Canada Inc./JustEtc: http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning)
Shop Online: https://www.ShopForSoul.com/
Medium: https://medium.com/@SayedAhmedCanada

SCJP: Classpath and Jar #Java Short Notes #SCJP #Blog

Java certification exams like SCJP test your knowledge about java classpath. Check here for an excellent resource on the topic .

System classpath

We can specify classpath in the command line or make use of a `system' class path. The IDEs have their own way of maintaining class paths. System class paths will be used by both the Java compiler and the JVM in the absence of specific instructions.

Set Linux System Classpath:
CLASSPATH=/myclasses/myclasses.jar;export CLASSPATH

Windows:
set CLASSPATH=c:myclassesmyclasses.jar

For permanent result, in Linux, put the commands in the file .bashrc in your home directory. On Windows 2000/NT, set it from `Control Panel', System, Environment Variables.

You can also specify .jar files full of your required classes in your classpath.

CLASSPATH=/usr/j2ee/j2ee.jar:.;export CLASSPATH

where the `.' indicates `current directory'.

From command line, if you want to add more paths to the classpath use:

Linux:javac -classpath $CLASSPATH:dir1:dir2 ...

Windows:javac -classpath %CLASSPATH%;dir1:dir2 ...

if you have spaces in your path use double quote to concatenate words.

Also check this resource

From: http://sitestree.com/?p=4849
Categories:Java Short Notes, SCJP, Blog
Tags:
Post Data:2013-06-05 14:27:56

Shop Online: https://www.ShopForSoul.com/
(Big Data, Cloud, Security, Machine Learning): Courses: http://Training.SitesTree.com
In Bengali: http://Bangla.SaLearningSchool.com
http://SitesTree.com
8112223 Canada Inc./JustEtc: http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning)
Shop Online: https://www.ShopForSoul.com/
Medium: https://medium.com/@SayedAhmedCanada

SCJP: Java Operators #Java Short Notes #SCJP

Exams like SCJP test your understanding of Java operators and how to use them like:
assignment operators: =, +=, -=
arithmetic operators: +, -, *, /, %, ++, --
relational operators: < , , >=, ==, !=
logical operators: &, |, ^, !, &&, ||
conditional operators: ? :
Also operators to check the equality of two objects or two primitives

In the following table operators and their precedences are shown. Upper rows operators have higher precedence. Same row operators have equal precedence. For equal precedence operators, All binary operators except the assignment operators work from left to right while assignment operators work from right to left.

Operator Precedence
Operators Precedence
postfix expr++ expr--
unary ++expr --expr +expr -expr ~ !
multiplicative * / %
additive + -
shift < > >>>
relational = instanceof
equality == !=
bitwise AND &
bitwise exclusive OR ^
bitwise inclusive OR |
logical AND &&
logical OR ||
ternary ? :
assignment = += -= *= /= %= &= ^= |= < >= >>>=

The following quick reference summarizes the operators supported by the Java programming language.

Simple Assignment Operator

=	Simple assignment operator

Arithmetic Operators

+ 	Additive operator (also used for String concatenation)- 	Subtraction operator*	Multiplication operator/ 	Division operator%	Remainder operator

Unary Operators

+ 	Unary plus operator; indicates positive value (numbers are positive without this, however)- 	Unary minus operator; negates an expression++  	Increment operator; increments a value by 1--    	Decrement operator; decrements a value by 1!     	Logical compliment operator; inverts the value of a boolean

Equality and Relational Operators

==	Equal to!=	Not equal to>	Greater than>=	Greater than or equal to< Less than<=	Less than or equal to

Conditional Operators

&& 	Conditional-AND|| 	Conditional-OR?:      Ternary (shorthand for if-then-else statement)

Type Comparison Operator

instanceof	Compares an object to a specified type 

Bitwise and Bit Shift Operators

~	Unary bitwise complement< >	Signed right shift>>>	Unsigned right shift&	Bitwise AND^	Bitwise exclusive OR|	Bitwise inclusive OR

Details about java operators

From: http://sitestree.com/?p=4848
Categories:Java Short Notes, SCJP
Tags:
Post Data:2012-12-29 02:01:30

Shop Online: https://www.ShopForSoul.com/
(Big Data, Cloud, Security, Machine Learning): Courses: http://Training.SitesTree.com
In Bengali: http://Bangla.SaLearningSchool.com
http://SitesTree.com
8112223 Canada Inc./JustEtc: http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning)
Shop Online: https://www.ShopForSoul.com/
Medium: https://medium.com/@SayedAhmedCanada

SCJP: Language Fundamentals #Java Short Notes #SCJP

Class declaration and java source file.

  • Only "one" top-level public class is allowed per java source file.
  • The name of the java source file and the name of the top-level public class MUST be the same.
  • If no public class is there in a file, after compiling separate class files will be created for all classes in the file.
  • Package statement, import statements and class definition MUST appear in the order given.

Keywords and Identifiers

  • Keywords are always in a lower case.
  • Some keywords: const, goto, strictfp, and volatile
  • Identifiers must start with either letter, $ or _ (underscore) and can have letter, $, _ or digits in it.
  • no keyword is allowed as identifiers
abstract do import public transient
boolean double instanceof return try
break else int short void
byte extends interface static volatile
case final long super while
catch finally native switch
char float new synchronized
class for package this
continue if private throw
default implements protected throws

Default Values, Local Variables

  • Each primitive data type has a default value specified. Variable of primitive data type may be initialized
  • Only class member variables are automatically initialized. Method variables need explicit initialization
  • Local variables (also known as automatic variables) are declared in methods and in code blocks
  • Automatic variables are not automatically initialized
  • local variables should be explicitly initialized before first use. These are automatically destroyed when they go out of scope

Arrays

  • Fixed-sized ordered collection of homogeneous data elements
    int[] ints; // array declaration
    ints = new ints[25]; // array construction at runtime.
  • Array declared, constructed and initialized at the same time.
    int[] ints = {1,2,3,4,5}; // array declaration,
  • An array of primitive data type created using the new keyword is automatically initialized. Each array element is initialized to its default value.
    For example,
    char[] arrayOfChars = new char[10];
  • Array of object references: An array of object references created using the new keyword is also initialized. Each array element is initialized to its default value, i.e. null.
    String[] names = new String[10];
  • length is a property of array (and not a method)
  • java.lang.Object is the superclass of an array

Argument passing during method calls

  • Always a copy of argument value is passed to calling method
  • Arguments of primitive data types: first, a copy of the passing variable is made and then it is passed. The original copy remains unaffected
  • Object reference as an argument: A copy of object reference is passed for method calls. It still points to the same object. The original copy is affected.

From: http://sitestree.com/?p=4862
Categories:Java Short Notes, SCJP
Tags:
Post Data:2008-07-28 12:18:41

Shop Online: https://www.ShopForSoul.com/
(Big Data, Cloud, Security, Machine Learning): Courses: http://Training.SitesTree.com
In Bengali: http://Bangla.SaLearningSchool.com
http://SitesTree.com
8112223 Canada Inc./JustEtc: http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning)
Shop Online: https://www.ShopForSoul.com/
Medium: https://medium.com/@SayedAhmedCanada

SCJP: Garbage Collection #Java Short Notes #SCJP

Garbage Collection

  • Java itself does memory management. You do not need to allocate memory at the time of object creation; also you do not need to free memory explicitly
  • Object is created either on the heap or on a stack
  • Memory heap: Objects created with new keyword are placed in heaps. This memory remains allocated throughout the life cycle of the object. When the object is no more referred, the memory becomes eligible for garbage collection
  • Stack: During method calls, objects are created for method arguments and method variables. These objects are created on stack. Such objects are eligible for garbage-collection when they go out of scope.
  • Garbage Collection is a low-priority thread in java
  • Garbage Collection cannot be forced explicitly. JVM may do garbage collection if it is running short of memory.
  • The call System.gc() does NOT force the garbage collection but only suggests that the JVM may make an effort to do garbage collection.
  • Garbage Collection is hardwired in Java runtime system. Java runtime system keeps the track of memory allocated. Therefore, it is able to determine if memory is still usable by any live thread. If not, then garbage collection thread will eventually release the memory back to the heap.
  • Garbage Collection usually adopts an algorithm, which gives a fair balance between responsiveness (how quickly garbage-collection thread yields?) and speed of memory recovery (important for memory-intensive operations). Responsiveness is especially important in real time systems.
  • An object is eligible for garbage collection when no object refers to it.
  • An object also becomes eligible when its reference is set to null. (Actually all references to the object should be null for it to be eligible.)
  • The objects referred by method variables or local variables are eligible for garbage collection when the method or their container block exits

From: http://sitestree.com/?p=4863
Categories:Java Short Notes, SCJP
Tags:
Post Data:2009-03-10 13:59:45

Shop Online: https://www.ShopForSoul.com/
(Big Data, Cloud, Security, Machine Learning): Courses: http://Training.SitesTree.com
In Bengali: http://Bangla.SaLearningSchool.com
http://SitesTree.com
8112223 Canada Inc./JustEtc: http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning)
Shop Online: https://www.ShopForSoul.com/
Medium: https://medium.com/@SayedAhmedCanada

JAVA: Some links: useful for exams like scjp/scja #Java Short Notes #SCJP #Blog

Assertions in Java: http://java.sun.com/j2se/1.4.2/docs/guide/lang/assert.html
Enum in Java:http://www.java2s.com/Code/Java/Language-Basics/Enum.htm
StringBuffer and StringBuilder Classes have similar methods where StringBuffer is synchronized: http://java.sun.com/j2se/1.5.0/docs/api/java/lang/StringBuilder.html
Serialize and Deserialize: http://java.sun.com/j2se/1.4.2/docs/api/java/io/Serializable.html
java.util package is very important: http://java.sun.com/j2se/1.4.2/docs/api/java/util/package-summary.html

From: http://sitestree.com/?p=4845
Categories:Java Short Notes, SCJP, Blog
Tags:
Post Data:2013-06-11 18:38:25

Shop Online: https://www.ShopForSoul.com/
(Big Data, Cloud, Security, Machine Learning): Courses: http://Training.SitesTree.com
In Bengali: http://Bangla.SaLearningSchool.com
http://SitesTree.com
8112223 Canada Inc./JustEtc: http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning)
Shop Online: https://www.ShopForSoul.com/
Medium: https://medium.com/@SayedAhmedCanada

Pretty Simple Java Code #SCJP


/**
 * The HelloWorldApp class implements an application that
 * simply prints "Hello World!" to standard output.
 */

class HelloWorldApp {

	public static void main(String[] args) {
		System.out.println("Hello Worlld");
	}

}

class ArrayDemo {
    public static void main(String[] args) {
        // declares an array of integers
        int[] anArray;
        int[] theArray;

        // allocates memory for 10 integers
        anArray = new int[10];
        theArray = new int[30];
           
        // initialize first element
        anArray[0] = 100;
        // initialize second element
        anArray[1] = 200;
        // and so forth
        anArray[2] = 300;
        anArray[3] = 400;
        anArray[4] = 500;
        anArray[5] = 600;
        anArray[6] = 700;
        anArray[7] = 800;
        anArray[8] = 900;
        anArray[9] = 1000;

        System.out.println("Element at index 0: "
                           + anArray[0]);
        System.out.println("Element at index 1: "
                           + anArray[1]);
        System.out.println("Element at index 2: "
                           + anArray[2]);
        System.out.println("Element at index 3: "
                           + anArray[3]);
        System.out.println("Element at index 4: "
                           + anArray[4]);
        System.out.println("Element at index 5: "
                           + anArray[5]);
        System.out.println("Element at index 6: "
                           + anArray[6]);
        System.out.println("Element at index 7: "
                           + anArray[7]);
        System.out.println("Element at index 8: "
                           + anArray[8]);
        System.out.println("Element at index 9: "
                           + anArray[9]);
        
        
        byte[] anArrayOfBytes;
        short[] anArrayOfShorts;
        long[] anArrayOfLongs;
        float[] anArrayOfFloats;
        double[] anArrayOfDoubles;
        boolean[] anArrayOfBooleans;
        char[] anArrayOfChars;
       
        		
        		
    }
} 


/*class ArrayCopyDemo {
    public static void main(String[] args) {
        char[] copyFrom = { 'd', 'e', 'c', 'a', 'f', 'f', 'e',
			    'i', 'n', 'a', 't', 'e', 'd' };
        char[] copyTo = new char[7];

        System.arraycopy(copyFrom, 2, copyTo, 0, 7);
        System.out.println(new String(copyTo));
    }
}
*/

class ArrayCopyDemo {
	
	public static void main(String[] args) {
		char[] copyFrom = {'a','b','c','d','e','f'};
		char[] copyTo = new char[10];
		
		System.arraycopy(copyFrom, 0, copyTo, 1,3);
		System.out.println(new String(copyTo));
	}
}



/*
class ArrayCopyOfDemo {
    public static void main(String[] args) {        
        char[] copyFrom = {'d', 'e', 'c', 'a', 'f', 'f', 'e',
            'i', 'n', 'a', 't', 'e', 'd'};
            
        char[] copyTo = java.util.Arrays.copyOfRange(copyFrom, 2, 9);
        
        System.out.println(new String(copyTo));
    }
}*/


class ArrayCopyOfDemo {
	public static void main (String[] args) {
		char[] copyFrom = {'d', 'e', 'c', 'a', 'f', 'f', 'e',
	            'i', 'n', 'a', 't', 'e', 'd'};
		
		char[] copyTo = java.util.Arrays.copyOfRange(copyFrom, 2, 7); 
		System.out.println(copyTo);
		
	}
}



/*
class MultiDimArrayDemo {
    public static void main(String[] args) {
        String[][] names = {
            {"Mr. ", "Mrs. ", "Ms. "},
            {"Smith", "Jones"}
        };
        // Mr. Smith
        System.out.println(names[0][0] + names[1][0]);
        // Ms. Jones
        System.out.println(names[0][2] + names[1][1]);
    }
}*/


class MultiDimArrayDemo {
	public static void main (String[] args) {
		String[][] names = {
				{"mr", "smith", "ms"},
				{"smith", "jones"}
		};
		
		System.out.println(names[0][1]);
	}
	
}

From: http://sitestree.com/?p=10873
Categories:SCJP
Tags:
Post Data:2017-07-19 18:16:02

Shop Online: https://www.ShopForSoul.com/
(Big Data, Cloud, Security, Machine Learning): Courses: http://Training.SitesTree.com
In Bengali: http://Bangla.SaLearningSchool.com
http://SitesTree.com
8112223 Canada Inc./JustEtc: http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning)
Shop Online: https://www.ShopForSoul.com/
Medium: https://medium.com/@SayedAhmedCanada

SCJP: Sun Certified Java Programmer: All that you need to know #SCJP

From: http://sitestree.com/?p=5213
Categories:SCJP
Tags:
Post Data:2013-02-13 20:16:32

Shop Online: https://www.ShopForSoul.com/
(Big Data, Cloud, Security, Machine Learning): Courses: http://Training.SitesTree.com
In Bengali: http://Bangla.SaLearningSchool.com
http://SitesTree.com
8112223 Canada Inc./JustEtc: http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning)
Shop Online: https://www.ShopForSoul.com/
Medium: https://medium.com/@SayedAhmedCanada

SCJP: Topics and Resources : will be continued #SCJP

SCJP topics and related resources are provided. I have skimed through the resources at least one time.

Garbage Collection

Parameter Passing

Command Line Parameter

Access Modifiers, Package Declaration, Import

Concurrency:java.lang.Thread and java.lang.Runnable

Java Thread:wait/notify/notifyall-lock

OOP Concept 1

From: http://sitestree.com/?p=4852
Categories:SCJP
Tags:
Post Data:2011-03-09 21:03:34

Shop Online: https://www.ShopForSoul.com/
(Big Data, Cloud, Security, Machine Learning): Courses: http://Training.SitesTree.com
In Bengali: http://Bangla.SaLearningSchool.com
http://SitesTree.com
8112223 Canada Inc./JustEtc: http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning)
Shop Online: https://www.ShopForSoul.com/
Medium: https://medium.com/@SayedAhmedCanada

SCJP: Java Operators #SCJP

By Sayed

Exams like SCJP test your understanding of Java operators and how to use them like:
assignment operators: =, +=, -=
arithmetic operators: +, -, *, /, %, ++, --
relational operators: <, <=, >, >=, ==, !=
logical operators: &, |, ^, !, &&, ||
conditional operators: ? :
Also operators to check the equality of two objects or two primitives

In the following table operators and their precedences are shown. Upper rows operators have higher precedence. Same row operators have equal precedence. For equal precedence operators, All binary operators except the assignment operators work from left to right while assignment operators work from right to left.

 

Operator Precedence
Operators Precedence
postfix expr++ expr--
unary ++expr --expr +expr -expr ~ !
multiplicative * / %
additive + -
shift << >> >>>
relational < > <= >= instanceof
equality == !=
bitwise AND &
bitwise exclusive OR ^
bitwise inclusive OR |
logical AND &&
logical OR ||
ternary ? :
assignment = += -= *= /= %= &= ^= |= <<= >>= >>>=

The following quick reference summarizes the operators supported by the Java programming language.

Simple Assignment Operator

=	Simple assignment operator

Arithmetic Operators

+ 	Additive operator (also used for String concatenation)
- 	Subtraction operator
*	Multiplication operator
/ 	Division operator
%	Remainder operator

Unary Operators

+ 	Unary plus operator; indicates positive value (numbers are positive without this, however)
- 	Unary minus operator; negates an expression
++  	Increment operator; increments a value by 1
--    	Decrement operator; decrements a value by 1
!     	Logical compliment operator; inverts the value of a boolean

Equality and Relational Operators

==	Equal to
!=	Not equal to
>	Greater than
>=	Greater than or equal to
<	Less than
<=	Less than or equal to

Conditional Operators

&& 	Conditional-AND
|| 	Conditional-OR
?:      Ternary (shorthand for if-then-else statement)

Type Comparison Operator

instanceof	Compares an object to a specified type 

Bitwise and Bit Shift Operators

~	Unary bitwise complement
<<	Signed left shift
>>	Signed right shift
>>>	Unsigned right shift
&	Bitwise AND
^	Bitwise exclusive OR
|	Bitwise inclusive OR

From: http://sitestree.com/?p=3643
Categories:SCJP
Tags:
Post Data:2016-07-17 08:33:36

Shop Online: https://www.ShopForSoul.com/
(Big Data, Cloud, Security, Machine Learning): Courses: http://Training.SitesTree.com
In Bengali: http://Bangla.SaLearningSchool.com
http://SitesTree.com
8112223 Canada Inc./JustEtc: http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning)
Shop Online: https://www.ShopForSoul.com/
Medium: https://medium.com/@SayedAhmedCanada

AutoFS and Mounting in Linux/Redhat/CentOS

AutoFS and Mounting in Linux/Redhat/CentOS

echo "AutoFS - Automatic FS system Mounting - Dec 26th, 2017 by Sayed"

check if Autofs installed or not
yum list installed | grep autofs

I just installed; hence it is there
you can install with yum -y install autofs

944 yum -y install autofs

then you can enable autofs
946 systemctl status autofs
947 systemctl start autofs
948 systemctl enable autofs

enable - will start this service at reboot/system start

AutoFS in general does not use /etc/fstab
AutoFS uses /etc/mtab file
Also, AutoFS has some files under /etc and starting with auto. You can also define which file will contain the mounting mapping. the file that will act like /etc/fstab for autofs

AutoFS has direct mapping and indirect mapping
let's see some files under /etc for autofs

955 ls /etc/auto*

The files

/etc/auto.direct /etc/autofs.conf /etc/autofs_ldap_auth.conf /etc/auto.master /etc/auto.misc /etc/auto.net /etc/auto.smb /etc/auto.master.d:

I saw to use /etc/auto.master for configuring which file will do the mapping for direct mounting.
I saw to use /etc/auto.misc for configuring which file will do the mapping for indirect mounting for AutoFS.

One more config file is under: /etc/sysconfig/autofs

961 cat /etc/sysconfig/autofs

the content
#
# Init system options
#
# If the kernel supports using the autofs miscellanous device
# and you wish to use it you must set this configuration option
# to "yes" otherwise it will not be used.
#
USE_MISC_DEVICE="yes"
#
# Use OPTIONS to add automount(8) command line options that
# will be used when the daemon is started.
#
#OPTIONS=""
#

For mounting NFS i.e. remote/network file-systems/folders - we can use the regular mounting i.e. /etc/fstab and mount command. However, that is kinda manual. We can mount NFS using AutoFS that will be automatic mount

We use AutoFS for LDAP clients to auto mount Users' home directories. We just configure, then the mounting happens automatically. You remember that getent passwd user-name mounted the remote users' home directory into local system. we used /etc/auto.master to tell that auto.guests will have the mounting configurations. then on /etc/auto.guests file - we configured that users' home directories will be mounted on /home/guests. you can check our notes on LDAP client configuration

979 cat /etc/auto.master
980 vim /etc/auto.master

we added the following line on /etc/auto.master
/etc/auto.guests /etc/auto.direct

it just tells that AutoFS will consult /etc/auto.guests file for direct mapping

 

984 vim /etc/auto.guests
we added the following line on /etc/auto.guests
/home/guests 192.168.1.15:/nfsrh

it just tells remote /nfsrh will be automatically mounted to /home/guests
you can try to restart autofs

989 systemctl restart autofs

 

Indirect Map
indirectly mounted points are only visible when accessed
automatically mounts shares under one common parent directory
each indirect map put only one entry in the mtab file
local and indirect maps cannot exist in the same parent directory
for indirect mapping - you use /etc/auto.misc file

On File Systems and Linux Commands (Redhat/CentOs/Fedora)

On File Systems and Linux Commands (Redhat/CentOs/Fedora)

echo "Dec 26th, 2017, Sayed Ahmed, Justetc Technologies"

On file Systems - Target Audience: Technical People. Software Developers and System/Network Administrators or DevOps  (or wanna be)

/ and /boot are the default Linux file systems

you can also configure /home, /opt, /var, /tmp, /usr as separate file systems or can make these as part of the / file systems.

/ and /boot are mandatory

The advantages of having separate file systems (and/or partitions) for different purpose (/var, /usr) are: you can independently manage them, extend them or reduce them as required. Can implement restriction on users who can access which file system. do repair and maintenance activities separatel

Types of file systems: ext2, ext3, ext4, xfs (default for Redhat 7), btrfs, vfat, iso9660, BIOS Boot, EFI System Partitions, NFS, AutoFS, CIFS (Common Internet File Systems)

AutoFS: NFS based auto mount. You can use this for LDAP Client configuration. Check our LDAP Notes.

xfs_repair : repair xfs file system devices

813 File System Administration Commands
814 dumpe2fs
815 dumpe2fs /dev/sdb
816 lsblk
817 dumpe2fs /dev/sdb
818 dumpe2fs /dev/sdc1
819 dumpe2fs /dev/sda

820 e2fsck /dev/sdb
821 e2fsck /dev/sda

823 lsblk
824 mkfs.ext2 /dev/sdb
825 mkfs.ext2 /dev/sdc1

826 e2fsck /dev/sdc1
827 e2fsck is for ext2 file system. ext2 will be removed soon. ext2 is deprecated on RHEL 7.
828 fsck.ext2 /dev/sdc1
829 fsck.xfs /dev/sda

 

830 xfs_repair /dev/sda
831 dumpe2fs, e2fsck, e2label, mke2fs, resize2fs, tune2fs, mkfs.xfs, xfs_admin, xfs_growfs, xfs_info, xfs_repair, mkfs.vfat, blkid, df, du, findmnt, fuser, mount, umout - some file system related linux commands

 

835 man e2label
836 e2label - Change the label on an ext2/ext3/ext4 filesystem
837 SYNOPSIS
838 e2label device [ new-label ]
839 DESCRIPTION
840 e2label will display or change the filesystem label on the ext2, ext3, or ext4 filesystem located on device.

841 man mke2fs
mke2fs is used to create an ext2, ext3, or ext4 filesystem, usually in a disk partition. device is the special file corresponding to the device (e.g /dev/hdXX). blocks-count is the number of blocks on the device. If omitted, mke2fs automagically figures the file system size. If called as mkfs.ext3 a journal is created as if the -j option was specified.

man resize2fs
The resize2fs program will resize ext2, ext3, or ext4 file systems. It can be used to enlarge or shrink an unmounted file system located
on device. If the filesystem is mounted, it can be used to expand the size of the mounted filesystem, assuming the kernel supports on-line
resizing. (As of this writing, the Linux 2.6 kernel supports on-line resize for filesystems mounted using ext3 and ext4.).

849 man tune2fs
tune2fs allows the system administrator to adjust various tunable filesystem parameters on Linux ext2, ext3, or ext4 filesystems. The cur‐rent values of these options can be displayed by using the -l option to tune2fs(8) program, or by using the dumpe2fs(8) program.

852 man mkfs.xfs
mkfs.xfs constructs an XFS filesystem by writing on a special file using the values found in the arguments of the command line. It is invoked automatically by mkfs(8) when it is given the -t xfs option.

855 man xfs_admin
xfs_admin uses the xfs_db(8) command to modify various parameters of a filesystem.
Devices that are mounted cannot be modified. Administrators must unmount filesystems before xfs_admin or xfs_db(8) can convert parameters.
A number of parameters of a mounted filesystem can be examined and modified using the xfs_growfs(8) command.

859 man xfs_growfs
xfs_growfs expands an existing XFS filesystem (see xfs(5)). The mount-point argument is the pathname of the directory where the filesystem is mounted. The filesystem must be mounted to be grown (see mount(8)). The existing contents of the filesystem are undisturbed, and the added space becomes available for additional file storage.

863 man xfs_info
xfs_info is equivalent to invoking xfs_growfs with the -n option (see discussion below).

865 man xfs_repair
xfs_repair repairs corrupt or damaged XFS filesystems (see xfs(5)). The filesystem is specified using the device argument which should be the device name of the disk partition or volume containing the filesystem. If given the name of a block device, xfs_repair will attempt to find the raw device associated with the specified block device and will use the raw device instead. Regardless, the filesystem to be repaired must be unmounted, otherwise, the resulting filesystem may be inconsistent or corrupt.

870 man mkfs.vfat
mkfs.fat is used to create an MS-DOS filesystem under Linux on a device (usually a disk partition). device is the special file correspond‐ing to the device (e.g /dev/hdXX). block-count is the number of blocks on the device. If omitted, mkfs.fat automatically determines the filesystem size.

874 man blkid
The blkid program is the command-line interface to working with the libblkid(3) library. It can determine the type of content (e.g. filesystem or swap) that a block device holds, and also the attributes (tokens, NAME=value pairs) from the content metadata (e.g. LABEL or UUID fields).

878 man df
df displays the amount of disk space available on the file system containing each file
name argument. If no file name is given, the space available on all currently mounted file systems is shown. Disk space is shown in 1K blocks by default, unless the environment variable POSIXLY_CORRECT is set, in which case 512-byte blocks are used.

882 df
883 du

884 man du
du - Summarize disk usage of each FILE, recursively for directories.

886 man findmnt
findmnt will list all mounted filesytems or search for a filesystem. The findmnt command is able to search in /etc/fstab, /etc/mtab or /proc/self/mountinfo. If device or mountpoint is not given, all filesystems are shown.

889 findmnt

890 man fuser
fuser displays the PIDs of processes using the specified files or file systems. In the default display mode, each file name is followed by a letter denoting the type of access:
c current directory.
e executable being run.
f open file. f is omitted in default display mode.
F open file for writing. F is omitted in default display mode.
r root directory.
m mmap'ed file or shared library.

899 man mount
mount command - All files accessible in a Unix system are arranged in one big tree, the file hierarchy, rooted at /. These files can be spread out over several devices. The mount command serves to attach the filesystem found on some device to the big file tree. Conversely, the umount(8) command will detach it again.

 

903 man umount
umount - The umount command detaches the file system(s) mentioned from the file hierarchy.
You can customize mount operation by giving some parameters and options such as async: allow async I/O operation, acl: to support ACL (facl: getfacl, setfacl), users: allow all users to mount exec:noexec: permit/deny execution of binary files, ro:read only suid/nosuid: allow/disallow setuid operation user/nouser: allow/disallow a normal user to mount the file system remount: remount an already existing filesystem,

_netdev: network connectivity is a must before mounting, owner: allow the file system owner to mount dev/nodev: allow/disallow device files on the file system, defaults: accept all defaults (async, auto, dev, exec, nouser, rw, suid), auto: support auto mounting when -a option is used for mount command

note: mount -a will mount all filesystems mentioned in /etc/fstab
umount -a : everything mentioned in fstab will be unmounted. provided auto was there for the mount operation. auto is default parameter for mount command

 

blkid : gives you UUID for partitions/file systems. you can use UUID in /etc/fstab - usually is a good practice. because if you use /dev/sda /dev/sdb in the /etc/fstab - that might not work always because that can change depending on what storage device to add or remove to the system.
909 blkid
910 xfs_admin -u
911 xfs_admin -u /dev/sda
912 xfs_admin -u /dev/sda1
913 xfs_admin -u /dev/sdc1
914 xfs_admin -u device/partition : will also give UUID for that partition

 

915 blkid /dev/sdb
916 blkid /dev/sdc1
917 blkid
918 you can also create a label for a partition/file-system and use that in the /etc/fstab file
919 xfs_admin -l /dev/sdc1
920 xfs_admin -l /dev/sda
921 lsblk

926 lsblk
927 df -h
to create a label: xfs_admin -L testpartition /dev/sdc1
929 xfs_admin -L testpartition /dev/sdc1
930 then you can use testpartition in the /etc/fstab file

xfs_admin : -l shows label, -L creates label

932 cat /etc/fstab
933 the default format in the /etc/fstab file
934 /dev/mapper/cl-root / xfs defaults 0 0

device   mount-point file-system defaults/options-you-want(auto, rw, defaults, async) dump-or-not-for-dump-command scan-sequence-for-fsck

UUID and Label cab be used for the device/first parameter on /etc/fstab file

941 vim /etc/fstab
examples:

/dev/mapper/cl-root / xfs defaults 0 0

UUID=45213437-3dcf-4ee7-b6b7-26c37e2a82d7 /boot xfs defaults 0 0

/dev/mapper/cl-swap swap swap defaults 0 0

/dev/sdb1 /mnt ext2 defaults 0 0

947 df -h: disk free : check usage
948 df -h

partiton exercise
950 parted /dev/sdb mklabel msdos
951 parted /dev/sdb mkpart 1 101MB
952 parted /dev/sdb mkpart primary 1 101MB
953 parted /dev/sdb print
954 parted /dev/sdb mkpart primary 101 201MB
955 parted /dev/sdb print

956 mke2fs -t ext3 /dev/sdb2
957 mkfs.xfs /dev/sdb1

958 blkid
959 xfs_admin -L testlabel /dev/sdb1

960 vim /etc/fstab
961 mkdir -p /disks/sdb1

962 mount -a
963 vim /etc/fstab
964 mount -a
965 blkid
966 vim /etc/fstab
967 mount -a
968 umount -a
969 mount -a
970 cat /etc/fstab

971 example of using label on /etc/fstab
972 LABEL="testlabel" /disks/sdb1 xfs defaults 0 1

973 xfs_repair /dev/sdb1

974 umount /dev/sdb1
975 xfs_repair /dev/sdb1
976 xfs_repair : requires the file system to be unmounted

 

you can use nfs-utils to mount/unmount remote file systems
978 yum -y install nfs-utils
979 mkdir /disks/nfs-pc2

the format in the /etc/fstab file can be
981 192.168.10.15:/folder/fs-to-share-remotely /disks/nfs-pc2 nfs _netdev 0 0

check that I used: nfs as the file system
For options: I used _netdev because this is network devie and network connectivity is a must for this mounting operation

to mount cd-drive on redhat/centos/fedora
985 mount /dev/sr0 /mnt
df -h can show you the cdrom device. for me it was: /dev/sr0

987 df -h
you could use -t with mount command to give file system. However, for CD the default works fine
for NFS to mount using commands

mount -t nfs 192.168.1.15:/folder-or-fs-to-share-remotely /mount-point-on-our-system-like-/disks/nfs/pc2-share

you can also mount samba file system as well

Users and Groups management in Linux (Redhat/CentOS/Fedora)

Users and Groups management in Linux (Redhat/CentOS/Fedora)

Target Audience: Technical people who knew or already know (to some extent) - just wanna review

Yes, from my history

622 echo "dec 25th, 2017 - sayed"

 

User and password related files

623 cat /etc/passwd
624 cat /etc/shadow
625 cat /etc/group
626 cat /etc/gshadow

There are some backup files for them as well
629 cat /etc/passwd-
630 cat /etc/group-
631 cat /etc/shadow-
632 cat /etc/shadow-
633 cat /etc/gshadow-

try to understand the format of the passwd, shadow, and group files

passwd file format: userid: password - or password space holder:user id: group id: comments: user home directory: user shell

shadow file format: userid : encrypted password: password last changed in timestamp format: min days - min days the password must be ket before changing: max days - max days the current password can be kept: warn days - user will get warning to change password: inactive days - how many inactive days allowed: disable days - account expiry date: not used field - kept for future use

cat /etc/group

format for /etc/group file: group name: password place holder: group id: group members - comma seprated

cat /etc/gshadow

gshadow file format: group name: encrypted group password: group admins: group members

why group password? when we want to restrict users to  assign them to the groups

cat /etc/login.defs
647 vim /etc/login.defs
648 /etc/login.defs : defines default values for users and groups - some of these values are used at the time of user and group creation and modifications - i.e. some values are taken from this file (when not specified at creation/modification time)

649 pwck checks for integrity among user/permission related files
650 pwck
651 grpck

653 vipw -> passwd file: lock for others and read-only for others. admins use this command

 

655 cat /etc/sudoers
656 users or groups can be defined in /etc/sudoers file who can run commands with su or sudo
657 vim /etc/sudoers

 

658 su user1 (switch user)
659 usermod -G wheel user1  (assign users to groups)
660 user1 is added to wheel group. wheel is a sudo group
661 su user1

 

Graphical user management tool:

662 system-config-users

 

663 managing groups
664 groupadd, groupmod, groupdel
665 groupadd -g 5000 linuxadm
666 groupadd -o -g 5000 sales
667 groupmod -n mgmt sales
668 groupmod -g 6000 linuxadm
669 usermod -a -G linuxadm user1

672 id user1
673 su user1
674 groupdel mgmt
675 gpasswd -> add admins to groups, group password assign/change, add users to groups and similar
676 gpasswd -A user1, user20new linuxadm

681 gpasswd -a user20new, user1 linuxadm

684 su user20new

 

Needed some adjustments for the user: user20new, it was locked,  shell was assigned to /sbin/nologin
685 usermod -U user20new (unlock user)
686 gpasswd -a user20new, user1 linuxadm
687 grep user20new /etc/passwd
688 usermod -s /bin/sh user20new
689 gpasswd -a user20new, user1 linuxadm
690 grep user20new /etc/passwd
691 cat /etc/passwd
692 usermod -s /bin/bash user20new
693 su user20new

 

694 gpasswd -a user20new, user1 linuxadm
696 su - user20new
697 su user1
699 su -

713 vipw
714 ls /etc/passwd.edit
715 pwck
716 grpchk
717 grpck
719 vigr
720 vigr -s

 

//enable disable shadow files

721 pwconv
722 cat /etc/passwd
723 pwunconv
724 cat /etc/passwd
725 pwunconv : do not use shadow file : move passwords back to passwd file
726 pwconv
727 cat /etc/passwd
728 grpconv
729 grpunconv
730 cat /etc/gshadow
731 cat /etc/group
732 grpconv
733 cat /etc/gshadow

cat in the above lines was to check - if the changes wee done or not

 

734 user related commands: useradd, usermod, userdel, chage, passwd
735 cat /etc/default/useradd
736 cat /etc/login.defs

See defaults
738 useradd -D
739 change default user home directory location
740 useradd -D -b /usr/home
741 useradd -D
742 useradd -D -b /home
743 useradd -D
744 useradd -D -b /usr/home

745 grep ^# /etc/login.defs
746 grep -v ^# /etc/login.defs
747 grep -v ^# /etc/login.defs > show-lines-from-login.defs-that-does-not-start-with-#--comment lines will not be shown
748 grep -v ^# /etc/login.defs | grep -v ^$
749 grep -v ^# /etc/login.defs
750 grep -v ^# /etc/login.defs | grep -v ^$

 

 

751 useradd user2
752 mkdir -p /usr/home
753 useradd user2
754 useradd user20
755 passwd user20
756 cd /etc; grep user20 passwd shadow group gshadow
757 useradd -u 5000 -g 5000 -m -d /home/user30 -k /etc/skel -s /bin/bash user30
758 useradd -u 5000 -g 1000 -m -d /home/user30 -k /etc/skel -s /bin/bash user30
759 create user with no login: just point shells to no login
760 useradd -s /sbin/nologin user40
761 su - user40
762 su user40

 

changing: min days, max days, expiry, and password

763 passwd -n 7 -x 28 -w 8 user20
764 chage -l user20
765 chage -m 10 -M 30 -W 7 -E 2017-12-31 user30
766 chage -l user30

 

767 modifying users
768 usermod -u 2000 -m -d /home/user20new -s /sbin/nologin -l user20new user20
769 grep user20new /etc/passwd
770 chage -l user30
771 chage -l user20
772 chage -l user20new
773 chage -d 0 -m 5 -E -1 user30
774 chage -l user30

775 lock a user
776 usermod -L user20
777 usermod -L user20new

778 userdel -r user30
781 usermod -U user20new

782 su user1
784 usermod -U user20new

 

//assign users to groups

785 gpasswd -a user20new linuxadm
786 gpasswd -a user1 linuxadm

787 useradd user4
788 passwd user4
789 gpasswd -M user4 linuxadm

 

791 cat /etc/group
792 gpasswd -M : replace existing group members with the new user assigned
793 set group password
794 gpasswd linuxadm
795 groups
796 su user4

 

800 su user4
801 newgrp the user can execute this to change primary group

802 important shell startup files : /etc/bashrc /etc/profile /etc/profile.d

NTP related commands/Linux

598 echo "dec 24th, 2017"
599 echo "NTP Client"
600 yum list ntp
601 yum list installed |grep ntp

602 To activate ntp
603 yum -y install ntp system-config-date
604 cat /etc/ntp.conf
605 grep ^server /etc/ntp.conf

606 systemctl restart ntpd
607 systemctl enable ntpd
608 systemctl start ntpd

609 ntpq -p

612 nmtui
613 ip addr

619 system-config-date
620 system-config-authentication

 

Network Interface, Network Clients related Linux/Redhat/CentOS commands

echo "Dec 24th, 2017"
532 echo "Basic Networking in Linux"
533 hostname
534 uname -a
535 uname -n
536 cat /etc/hostname
537 nmcli general hostname
538 changing hostname temporarily
539 hostname server10.example.com
540 for permanent change
541 hostnamectl set-hostname server100.example.com
542 or change /etc/hostname file
543 vim /etc/hostname
544 restart systemctl
545 systemctl restart systemd-hostnamed
546 systemctl restart systemd-hostnamed.service
547 echo "IPV4 addresses"
548 ip addr
549 cat /etc/protocols
550 ip neighbor
551 yum install arp*
552 cat /etc/services
553 cat /etc/protocols
554 ip neighbor
555 interface configuration files
556 cat /etc/sysconfig/network-scripts/
557 ll /etc/sysconfig/network-scripts/
558 ll /etc/sysconfig/network-scripts/ifcfg-*
559 you can change parameters for the interface config files
560 ll /etc/sysconfig/network-scripts/ifcfg-ens33
561 cat /etc/sysconfig/network-scripts/ifcfg-ens33
562 name and IP conversion. /etc/hosts - DNS is the system to do this.
563 interface stop and start
564 ifdown ens33; ifup ens33
565 cat /etc/default/grub
566 it used to be eth0 eth1, now default is ens
567 you can change that using some config changes
568 ip
569 nm-connection-editor
570 nm-connection-editor is graphical nmtui is text based - not command line but text based interface
571 nmtui is command line based. nmtui is text-based interface based
572 nmcli
573 nmcli device show
574 nm-connection-editor
586 to set ipv4 address - one example

589 ip addr add 192.168.0.111/24 broadcast 192.168.0.255 dev ens33
590 ip addr
591 ip addr add 192.168.0.111/24 broadcast 192.168.0.255 dev eth1
592 ls
593 systemctl status NetworkManager
594 nmcli con show
595 nmcli dev status
596 exit
597 history

TCP Wrappers in Linux/CentOS/Redhat/Fedora

TCP Wrappers in Linux/CentOS/Redhat/Fedora

yum info tcp_wrappers

yum install tcp_wrappers-devel.x86_64
506 reboot
507 ifdown ens33
508 ifup ens33
509 yum install tcp_wrappers-devel.x86_64
510 yum -y install tcp_wrappers-devel.x86_64
511 ls /var/ftp/pub/Packages/
512 ls /etc/yum.repos.d/local.repo
513 vim /etc/yum.repos.d/local.repo
514 systemctl status vsftpd
515 systemctl start vsftpd
516 systemctl enable vsftpd
517 yum -y install tcp_wrappers-devel.x86_64
518 cat /etc/hosts.allow
519 cat /etc/hosts.deny
520 two config files as above. hosts.allow will be consulted first and then hosts.deny is consulted
521 the format of the file content: service: user@source pc
522 service examples: All, All Except, sshd, vsftpd, sshd. multiple services can be given in one line with commas
523 user@source pc examples can be: All, just an IP, 192.168.1.1 Local, subnet: 192.168.0.0/24, network address with except host like: 192.168.0 except 192.168.0.25. multiple host can be given - comma separated. user1@192.168.1.1
524 the above content will serve the purpose of the file. if the content is found on the allow file - that services and user and pc will be allowed. if the content is written in the .deny file - corresponding user, service, pc will be denied
525 exit
526 history

SSH/SSHD/OpenSSH in CentOS/Redhat Linux

Experiment with SSH/SSHD/OpenSSH in CentOS/Redhat Linux

Yes, from  my history (Probably a review for the technical people, who already knew these sometimes in the past)

461 echo "dec 24th, 2017"
462 vim /etc/ssh/sshd_config

463 echo "SSH Related Commands"
464 scp -> secure copy
465 tscp -> secure copy for windows
466 sftp -> secure ftp
467 slogin -> secure login - alternative to rlogin
468 ssh -> provides secure telnet, secure rlogin
469 ssh-add -> provides DSA/ECDSA/RSA characteristics to ssh-agent
470 ssh-agent

 

471 ssh-agent output
472 SSH_AUTH_SOCK=/tmp/ssh-DQP6FzPIZvG7/agent.3903; export SSH_AUTH_SOCK;
473 SSH_AGENT_PID=3904; export SSH_AGENT_PID;
474 echo Agent pid 3904;

475 ssh-copy-id -> copy keys to remote system (manual copy is also an option, you can use scp as well)
476 ssh-keygen: generates public and private key

 

477 SSH components: the server with the SSH daemon. The client with scp, sftp, slogin, ssh, ssh-copy-id. and the openssh packgae itself to provide ssh-ketgen and different modules and libraries.
478 ssh-agent : authentication agent that also holds private keys
479 cat /etc/ssh/sshd_config > system wide ssh config file
480 cat /etc/ssh/sshd_config

481 cat /etc/ssh/ssh_config
482 vim /etc/ssh/ssh_config
483 vim /etc/ssh/sshd_config
484 cat /etc/sysconfig/sshd

485 cat /etc/sysconfig/sshd -> server configuration file
486 cat /var/log/secure
487 cat /var/log/secure -> related messages

488 cat /etc/passwd
489 useradd user1
490 passwd user1
491 su user1
492 useradd user100
493 passwd user100
494 su user100

496 ipaddr
497 ip addr
498 nmtui
499 ip addr
500 su user1

501 exit
502 history > ssh_history.txt
503 history

 


 

after switching to user100

 

ssh 192.168.12.45
4 ssh 192.168.12.45 /bin/ls -la

exit


cd ~

14 touch file1
15 scp file1 192.168.12.45:/home/user100
16 sftp 192.168.12.45

Linux: LVM : Logical Volume Manager : Multiple Hard Disk and Partition and Volume Management

On RedHat/Centos Linux - LVM experiments

Concepts to understand:

Physical Volume: Physical Hard Drive or  Partitions in Physical Hard Drive

Physical Extent:  One unit of space usually 4 MB.

Volume Group: One or multiple Physical Volumes can be assigned to a Volume Group

Logical Volume: Logical volumes are created from the volume groups. This is the volume that users interact with. You mount Logical Volume to work with a logical hard drive space (not partition though similar)

Linux Commands to Know:

pvcreate : create  a physical volume. Initialize a physical drive or partition for LVM

vgcreate: create volume group. Parameters: hard drive or partitions

lvcreate: create logical volume from volume group

lvextend: extend a logical volume

lvresize, lvreduce: to resize or to reduce logical volume

lvremove: to remove a logical volume

 

Some experiment:

I added some hard drives using VMWARE.

lsblk
pvcreate /dev/sdb /dev/sdc
vgcreate vg001 /dev/sdb /dev/sdc
lvcreate -L 500M vg001
lsblk
lvcreate -l 100 vg001
lsblk
pvs
pvdisplay
pvdisplay -v
vgcreate -s 8m /dev/sde
lsblk
vgcreate vg002 -s 8m /dev/sdd
pv
pvs
pvdisplay
lvcreate -L 1G vg002
lsblk
lvextend lv001 +100M
lvextend vg001-lvol0 +100M
lvextend /dev/sdb/vg001-lvol0 +100M
lsblk
lvrename vg01 lvol0 lvolnew
lvrename vg001 lvol0 lvolnew
lsblk
lvextend vg001 lvolnew +100M
lvreduce -L 100m /dev/vg001/lvolnew
lsblk
lvreduce -L 300m /dev/vg001/lvolnew
lvreduce -L 50m /dev/vg001/lvolnew
lvresize -L 700m /dev/vg001/lvolnew
lsblk
lvextend vg001 lvolnew +100M
lvextend /dev/vg001/lvolnew +100M
lvextend -L 100m /dev/vg001/lvolnew
lvextend +100m /dev/vg001/lvolnew
lvextend -L 200 /dev/vg001/lvolnew
lvextend -L 200m /dev/vg001/lvolnew
lvextend -l 200 /dev/vg001/lvolnew
lsblk
lvextend -l 210 /dev/vg001/lvolnew
lsblk
lvextend vg001 lvolnew +100M
history
history > history.txt

Centos/Redhat লিনাক্স এ yum ইন্সটলার সার্ভার কিভাবে কনফিগার করবেন

Centos/Redhat লিনাক্স এ yum ইন্সটলার সার্ভার কিভাবে কনফিগার করবেন

Mount Installer ISO

mkdir /mnt/dvd1

mount /dev/sr0 /mnt/dvd1

Check if FTP server is installed

systemctl status vsftpd

systemctl start vsftpd

Install ftp Server. Using rpm as yum is not available yet [default yum needs the internet, kindof]

cd /mnt/dvd1/Packages/

rpm -ivh vsftpd-3.0.2-22.el7.x86_64.rpm

systemctl start vsftpd

systemctl enable vsftpd

Copy rpm installer packages to the FTP server under Packages folder

cp -rv /mnt/dvd1/Packages /var/ftp/pub/

Also, copy the key file for Yum. Key file is to verify the integrity of the packages

cp -rv /mnt/dvd1/RPM-GPG-KEY-CentOS-7 /var/ftp/pub/

mv /var/ftp/pub/RPM-GPG-KEY-CentOS-7 /var/ftp/pub/key

Install Createrepo using rpm -ivh; create repo will help to create package rep database based on the packages on the FTP server

rpm -ivh createrepo-0.9.9-28.el7.noarch.rpm

Create the repp config file on yum server

cd /etc/yum.repos.d/

mkdir old

mv *.repo old/

vim ftp.repo

ftp.repo  file content

 

[ftp]

name=ftp

baseurl=ftp://yumserver/pub/Packages

enabled=1

gpgcheck=1

one line for pointing to the GPG key file - if you want to configure for key based verification

 

Allow ftp over firewall

firewall-cmd --add-service=ftp --perm

systemctl reload firewalld
systemctl restart firewalld

Again Checking if yum works locally on the server

yum repolist all
yum repolist
yum repolist enabled
yum -y install tree
yum clean
yum clean cache
yum -y install tree
yum repolist enabled
yum repolist

Create Installer Repository Data

cd /var/ftp/pub/Packages/

createrepo .

Configure name for the server

hostnamectl set-hostname yumserver

vim /etc/hosts

192.168.1.100 yumserver

192.168.1.200 yumclient

ip addr

ip addr ens33

use nmtui command or ifconfig to set the IP of the server [when required]

you might want to restart the interface

ifdown ens33; ifup ens33

ping yumserver

ping yumclient

before pinging you might want to see if the ping package is installed and if it is blocked or not

Check if yum server works or not

yum install tree

yum -y install lynx


Configure a Client to use your FTP based yum server

Copy the ftp.repo

scp /etc/yum.repos.d/ftp.repo root@yumclient:/etc/yum.repos.d/

For Windows:

tscp /etc/yum.repos.d/ftp.repo root@yumclient:/etc/yum.repos.d/

Check if the client can access your yum server

yum install tree

yum -y install lynx

In Bengali: Some Educational Android Apps on Software/Web Development

Some are in Bengali

Project Management

https://play.google.com/store/apps/details?id=com.sitestree.pmp

On CSS

https://play.google.com/store/apps/details?id=com.sitestree.css

On JavaScript

https://play.google.com/store/apps/details?id=com.sitestree.javascript

 

On PHP

https://play.google.com/store/apps/details?id=com.sitestree.php

 

On SEO course

https://play.google.com/store/apps/details?id=com.sitestree.seo

 

SQL Course

https://play.google.com/store/apps/details?id=com.sitestree.sql

 

Oral Communications

https://play.google.com/store/apps/details?id=com.justetc.oral_communications.workplace

 

AngularJS

https://play.google.com/store/apps/details?id=com.salearningschool.bangla.angularjs1

 

HTML

https://play.google.com/store/apps/details?id=com.salearningschool.bangla.html

আমাদের এই কোড টেমপ্লেট ব্যবহার করে আপনি যে কোন ওয়েব সাইট এর ফাইল গুলো দিয়ে অ্যান্ড্রোএড অ্যাপ বানাতে পারবেন। Create an Android App based on web-site files.

GitHub Code By Us: Create an Android App based on Static Web-Pages

The coe is at: https://github.com/sayedjustetc/android-apps-by-justetc/tree/master/justetc-app-with-justetc-com-files

This app actually has the content of the justetc.com corporate info web-pages in static HTML - sure JS is there.

You can use this as a template and make an android application based on any web-site.

Just use "git clone https://github.com/sayedjustetc/android-apps-by-justetc.git"

Then then put your entire, static HTML based content under "app/src/main/assets/www" folder.

Then clean the project, rebuild/build the project, and run-app with Android Developer Studio.

You will be fine.

If you are using Eclipse - there will be an way to import the project.

This is Grade based project.

 

সমস্যা এবং সমাধান ঃ SaLearningSchool এর হোস্টিং পরিবর্তন

আপাতত একটু বাংলা লেখার চেষ্টা । পরে উন্নয়ন করবো। বানান এ সমস্যা হবে। বলে রাখি, বাংলাতে অনেক আগে letter (multiple choice এর যুগে) পেয়েছিলাম।

SaLearningSchool.com এবং Bangla.SaLearningSchool.com কে ক্লাউড হোস্টিং এ নেয়া হয়েছে। জাস্ট কিছু অভিজ্ঞতা

১। SaLearningSchool.com - আসলে অনেক আগে ২০০৫-২০০৬ এর দিকে লিখা ছিল। বলা যায় টেস্ট কোড। পিএইচপি এর ভার্সন ৪ (অথবা পুরাতন) ব্যবহার করা হয়েছিল। mysql কম্যান্ড ব্যবহার করা হয়েছিল। mysqli তখন ছিল না অথবা নতুন ছিল। PDO ও হয়ত ছিল না।

এখন mysqli অথবা PDO বেশী আধুনিক । mysql এখন supported না। বাদ দেয়া হয়েছে, নতুন পিএইচপি ভার্সন এ।

তাই আমাকে mysqli ব্যবহার করতে হয়েছে নতুন হোস্টিং এ। PHP এর বিভিন্ন ভার্সন সার্ভারে রাখাটা ভালো ব্যাপার মনে হয় নাই। আবার mysql পিএইচপি থেকে বাদ দেয়া হয়েছে। PDO তে পরিবর্তন করা - অনেক বেশি কাজ (বেশী কোড পরিবর্তন করতে হবে ) এবং সময় নিবে । SaLearningSchool.com এখন প্রধান সাইট না। সব লিখা sitestree.com এ নেয়া হয়েছে। SaLearningSchool.com historical কারণ এ রাখা হচ্ছে। mysqli.

mysqli commands - যে গুলো ব্যবহার করা হয়েছে

mysqli_connect
mysqli_num_rows
mysqli_select_db
mysqli_query

mysqli_result - আসলে PHP এর নতুন ভার্সন এ নাই। তাই আমি mysqli_result ফাংশন ওয়েব থেকে কপি করে ব্যবহার করেছি। ওয়েব থেকে ব্যবহার করাটাই সহজ এবং কম সময় নিবে মনে হইছে (আমি এখানে বেস্ট সমাধান খুঁজি নাই, ফাস্ট সমাধান খুঁজছি) । mysqli_result - data_seek command ব্যবহার করেছে। অবশ্যই আমি mysql_result এর যায়গা গুলো তে mysqli_result ব্যবহার করেছি।

ধারাবাহিক BCS প্রস্ততি ও সাধারণ আলোচনা – ১৫ (কীভাবে পড়া উচিত?) । BCS Written Exam Guide – 15 (How to Study)

কীভাবে পড়া উচিত?

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

#আমি শুরুতেই পরামর্শ দিব, আগে বিগত বছরের প্রশ্ন গুলো দেখুন, সেগুলো না পারলে/ না জানা থাকলে ঘাবড়ানোর কিছু নেই । আমি সাজেস্ট করব, প্রথমে যে বই টির কথা বলেছি, সেটার বাংলা, ইংরেজি, বাংলাদেশ, গণিত, দুই ভাষার সাহিত্য এগুলো অবশ্যই পড়ে শিখে ফেলুন । যেগুলো কঠিন মনে হচ্ছে সেগুলো আপাতত অন্য কোন কালির কলম বা মার্কার দিয়ে মার্ক করে রাখুন । আন্তর্জাতিক কিংবা বাংলাদেশের জেলা/ থানা র সংখ্যা টাইপ খুব পুরাতন প্রশ্ন এড়িয়ে যেতে পারেন, মানে যেগুলো আপনি জানেন ২৮ তম বিসিএস এর সময় যেই সংখ্যা ছিল, এখন পরিবর্তন হয়েছে সেগুলো আর কি ।

#আপনি যদি মিনিমাম ১০-১২ টি বিগত বিসিএস প্রিলির প্রশ্নও সল্ভ পড়ে ফেলেন, আপনার মধ্যে প্রিলির বিষয়ে খুব ভাল ধারণা চলে এসছে যে কী ধরণের প্রশ্ন হতে পারে । এখন আপনার একটু ডিটেইল পড়ার সময় । যদি না আপনি বাংলা সাহিত্য/ ইংরেজি সাহিত্যের ছাত্র ছাত্রী হয়ে থাকেন, তবে আপনার জন্য বাংলা-ইংরেজি সাহিত্য জিনিস টা একটু কঠিন হবেই । অনেকের কাছে এগুলোর চেয়ে আন্তর্জাতিক বা বাংলাদেশ বিষয়াবলি কঠিন লাগে । আপনি যেহেতু বিগত বছরের প্রশ্নগুলো দেখেছেন ই, আপনি নিজেকে  বিচার করুন, কোন টি তে আপনার দুর্বলতা বেশি, সেটির উপরে জোর দিন ।

#আমার একটা কমন অবজারভেশনঃ যারা ইঞ্জিনিয়ারিং ব্যাকগ্রাউন্ড থেকে আসা তারা সাধারণত সাহিত্যিক/কাল/বইপত্র এসবের নামে দুর্বল হয় । মেডিকেলে ৫ বছর পরে মানুষজন গণিত এর সাধারণ নিয়ম গুলো ভুলে যান, সাথে বাংলা ব্যকরণ তো আছেই ।আর্টস কিংবা কমার্স ব্যাকগ্রাউন্ড থেকে যারা প্রথম বারের জন্য এটেম্পট নিচ্ছেন অনেকের গণিত আর ইংরেজি ভীতি থাকে । তবে সবার কমন এক জায়গাতে প্রব্লেম হয় কম বেশি তা হল বাংলাদেশ বিষয়াবলি আর আন্তর্জাতিক বিষয়াবলি/ সাম্প্রতিক ঘটনাবলি । এর জন্য খুব ভাল ভাবে কারেন্ট এফেয়ার্সের সবগুলো সংখ্যা (যা উল্লেখ করলাম) আর কারেন্ট এফেয়ার্সের বিশেষ সংখ্যাটা পড়ুন ।

# কারেন্ট এফেয়ার্সের বিগত মাসের সংখ্যাগুলো কেন সংগ্রহ করতে বলেছি তার কারণ হল সেখানে পিএসসি/ ব্যাংক সমূহ কিংবা অন্য সরকারি প্রতিষ্ঠানের যে পরীক্ষাগুলো হয় সেগুলোর প্রশ্নও দেয়া থাকে । অনেক বছর এমন দেখা যায় যে সেসব প্রশ্ন থেকেও কিছু প্রশ্ন চলে আসে ।

# পরীক্ষার মাস খানেক সময় কাল থেকে খবরের কাগজ টা পড়ুন, এখন তো এণ্ড্রয়েড এপসের মাধ্যমে বাসায় পত্রিকা না রেখেও পড়া যায়, বিশেষ দরকারি তথ্যগুলো মোবাইলেই পারলে নোট করে রাখুন । সেটাও কষ্ট লাগলে স্ক্রিন শট দিয়ে রাখুন ( যারা স্মার্ট ফোন ব্যবহার করছেন)।

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

# একটানা কোন বিষয় পড়তে যাবেন না, বোরিং ফিল করবেন।যেমন আপনি বাংলা সাহিত্যের ইতিহাস কম পারেন, এইটা নিয়ে এখন দিনের পর দিন পরে থাকলে দেখবেন পড়া আগাচ্ছে না। তো কি করা যাবে ? এটার ফাঁকে ফাঁকে সহজ লাগে কিংবা মজা লাগে এমন কিছু একটা পড়বেন । মনে থাকে না কিংবা বার বার পড়েও ভুলে যাচ্ছেন এমন হলে সেটা একটা কাগজে লিখে রাখুন । বাসায় পত্রিকা পড়লে যেখান থেকে কোন একটা গুরুত্বপূর্ণ ইনফো পেলেন সেটা আরেকটা জায়গায় লিখুন, দরকারে দেখে দেখেই লিখুন, সমস্যা নাই ।

#গণিত ভীতি যাদের তাদের জন্য রেগুলার এক আধটু প্র্যাক্টিস করাটা জরুরি, অংক হাতে না করে শুধু দেখে গেলে অনেকেই ভুল করেন কিংবা পরীক্ষার হলে কনফিউজড থাকেন । ইঞ্জিনিয়ারিং/ম্যাথ/ফিজিক্স/স্ট্যাটিস্টিক্স ব্যাকগ্রাউন্ড এর যারা কিংবা যারা MBA করছেন এদের জন্য এই সাব্জেক্ট খুব চ্যালেঞ্জিং না। ২ নম্বরে যে বইটার কথা বললাম ওখানের ম্যাথ সেকশনে এবং প্রফেসর্সের স্পেশাল বইতার ম্যাথ সেকশনেও দেখবেন পাটি গণিত আর জ্যামিতি/ত্রিকোণমিতি নিয়ে শর্টকাটে সূত্র কিংবা টেকনিক দেয়া আছে । সেগুলো এপ্লাই করে কিছু অংক করুন। কেবল সূত্র মুখস্ত রেখে হলে গেলে তালগোল পাকিয়ে ফেলার সম্ভাবনাই বেশি থাকবে ।

# মানসিক দক্ষতা নিয়ে বাজারে বেশ কিছু বই এখন পাওয়া যায় তবে আমার কাছে এজন্য আহামরি কিছুই দরকার বলে মনে হয় নি, আগের বছরের প্রশ্ন গুলো সমাধান করলে আর এ বইগুলোর কথা বললাম ওগুলোর সংশ্লিষ্ট সেকশনে প্র্যাক্টিস করলে আপনি পারবেন ।

# সাধারণ বিজ্ঞানে অনেকে মনে করেন অনেক সোজা, পরে পচা শামুকের পা কাটে অনেকের... এজন্য শর্ট ডাইজেস্ট টা আর প্রফেসর্সের বই টা পড়ুন ভাল মত । আর কারেন্ট এফেয়ার্স ও ... বিভিন্ন প্রযুক্তির শর্ত কাট নাম জানেন কিন্তু ফুল মিনিং জানেন না, সেগুলোও জেনে নিন, বানান সহ কিন্তু ।

সবশেষে আবারও বলব, ৩০-৪০ দিন প্রস্তুতির জন্য অনেক সময় । শুধুমাত্র আপনি মুখস্ত করে প্রিলি পাস করে আসবেন এটা সবার জন্য হয় না । বুদ্ধি খাটান, মনে রাখবেন বিসিএস প্রিলি তে আপনি ভুল দাগালে কিন্তু মার্ক্স কাঁটা , সুতরাং ক্যালকুলেটেড রিস্ক নিতে হবে । আর আরেকটা কথা সবাইই জানেন, এই মার্ক্স আপনার মূল মার্ক্সের সাথে যোগ হবে না , সুতরাং এখানে উতরে যাবার জন্য আপনাকে দুনিয়ার সব কিছুই পারতে/ জানতে হবে না । অনেক এমসিকিউ প্রশ্ন আপনি না জেনেও পরসেস অফ ইলিমিনেশন (কোন টি উত্তর হবে না সেটা বাছাই করে করেও কিছু মার্ক্স পেতে পারেন )।

 

ধারাবাহিক BCS প্রস্ততি ও সাধারণ আলোচনা – ১৪ (সংক্ষেপে প্রস্ততির জন্যঃ) | BCS Written Exam Guide – 14 (In Short, How to Prepare)

সংক্ষেপে প্রস্ততির জন্যঃ

হাতে যদি ৩০-৪৫ দিন সময় থাকে তবে আত্মবিশ্বাসী হোন, প্রিলিতে উতরে যাবার জন্য এটা পর্যাপ্ত সময় । আমি ৩৩, ৩৪ , ৩৫ তম প্রিলি তিনটা তেই অংশ নিয়েছিলাম এবং উত্তীর্ণ হই সবগুলোতেই আল্লাহর রহমতে । আমার অভিজ্ঞতা থেকে লিখছিঃ

 

এই সময় টাতে আপনি যে রিডিং ম্যাটেরিয়ালস গুলো কালেক্ট করবেনঃ

  1. বিগত বছরের প্রশ্ন সম্ভার ( নীলক্ষেতে গেলেই পাবেন, সেগুলো সল্ভ সহ পাবেন, ৩০-৫০ টাকা নিবে দাম)
  2. এসিউরেন্স/ ওরাকল/MP3 এদের  যেকোন টার শর্ট একটা ডাইজেস্ট ৮০-১২০ টাকা নেবে, ১৫০-২০০ পৃষ্ঠার ছোট একটা বই, এখানে মূলত সাম্প্রতিক বছর গুলোতে পিএসসি র পরীক্ষার প্রশ্ন প্রণয়নের উপর ভিত্তি করে সবগুলো বিষয় নিয়েই প্রশ্নোত্তর থাকে ... বড় ডাইজেস্ট গুলো র মতন কিংবা সাবজেক্ট ওয়াইজ আলাদা বই গুলোর মতন অত ডিটেইল না। যারা অলরেডি সাবজেক্ট ওয়াইজ আলাদা বই কিনে পড়েছেন তাদের এটা না কিনলেও চলবে ...
  3. প্রফেসর্স প্রকাশনী প্রিলির আগ দিয়ে একটা বই বের করে, স্পেশালি বিসিএস ক্যান্ডিডেট দের জন্য, এইটা খুব খুব খুব উপকারি ...আমি ৩৫ তম প্রিলিতে কেবল মাত্র এটা পড়ে প্রিলি র প্রিপারেশন নিয়েছিলাম। কারণ একই সময়ে ৩৪ তম র ভাইভা চলছিল, ভাইভার প্রিপারেশন নিতে গিয়ে আলাদা করে ৩৫ এর প্রিলির জন্য পড়তে পারি নি । তবে কেউ এটা পড়েই প্রিলিতে টিকে যাবেন সেই আশা করবেন না । আমার ক্ষেত্রে ভাগ্য এবং আগের দুই প্রিলির হালকা পাতলা প্রিপারেশন এর কারণে আমি কেবল এটার ভরসা করে গিয়েও উতরে যেতে পেরেছিলাম ।

    দাম নিবে ৫০ টাকা, তবে এটার চাহিদা প্রচুর থাকে বিধায়, ক্রাইসিস ক্রিয়েট হলে অনেক বেশি দামেও কেনা লাগতে পারে...

  4. যে মাসে পরীক্ষা হবে সে মাস সহ তার আগের ৩-৪ মাসের কারেন্ট এফেয়ার্স/ কারেন্ট ওয়ার্ল্ড ...
  5. আমি ৩৫ তম দিতে গিয়ে সবচেয়ে খারাপ করেছি ইংরেজি লিটারেচার এ । এর থেকে আমার মনে হয়েছে এর জন্য আলাদা করে একটু প্রিপারেশন নেয়া টা উচিত । নীলক্ষেতে বিসিএস/ ব্যাংক কিংবা আরও এই জাতীয় পরীক্ষাগুলোর জন্য ঢাকা বিশ্ববিদ্যালয়/ জাহাংগীর নগর বিশ্ববিদ্যালয়ের স্যারদের ইংরেজি সাহিত্যের উপর সামারি টাইপ ছোট ছোট বুকলেট টাইপ বই পাওয়া যায় , ৩০-৫০ টাকা নিবে । এগুলোতে ইংরেজি সাহিত্যের বিভিন্ন কাল, কে কোন কালের সাহিত্যিক, কার লিখা কী ধর্মী, বিখ্যাত বই কে কি লিখে গেছেন এসব পাওয়া যাবে ... আর ইংরেজি শব্দার্থ, বিপরীতার্থ এসব নিয়ে যাদের দুর্বলতা তারা সাইফুর্স/মেন্টর্স কিংবা বিসিএস+ব্যাংক প্রিপারেশনের জন্যেই কমন কিছু শব্দের বই পাওয়া যায়, সংগ্রহে রাখতে পারেন। ঘাবড়াবেন না বিসিএস এ আপনাকে GRE স্ট্যান্ডার্ড  Vocabulary দিতে যাবে না ।

 

ধারাবাহিক BCS প্রস্ততি ও সাধারণ আলোচনা – ১৩ (বইপত্র ) । BCS Written Exam Guide – 13 (General Knowledge: Books)

বইপত্রঃ

এই টপিকের জন্য সবথেকে বড় উৎস হলঃ সংবাদ পত্র । তবে আপনি তো সেখানেই সব পাবেন না বা তার সব মনে রাখতে পারবেন না, বাজারে পাওয়া যেকোন প্রকাশনীর একটা বই কিনে পড়তে শুরু করুন । অনেক কিছুই আছে, বাজারে ডাইজেস্ট আকারে পাবেন আবার সিঙ্গেল কপি ও পাবেন ... যারা ক্যাডেট কলেজে পরীক্ষা দিয়েছেন বা মেডিকেল/ভার্সিটি ভর্তির জন্য পড়তেন তাদের কাছে অলরেডি সাধারণ জ্ঞান ও সাম্প্রতিক বিশ্ব নামে বই থাকার কথা (একাধিক রাইটার ও একাধিক প্রকাশনীর)। এছাড়া MP3/ ওরাকল এগুলো দেখতে পারেন ...

এই বিষয়ের জন্য আপনার সবথেকে বড় সহায়ক হবে কারেন্ট এফেয়ার্স, এইটা খুব ভাল করে পড়ুন ...

আর হ্যা, ডেইলি প্রধান যে সংবাদ পত্র, যেগুলোতে আন্তর্জাতিক নিয়েই এক টা পাতা থাকে সেগুলো পড়বেন অবশ্যই ...

আর আমার আরেকটা সাজেশন যখন পড়বেন সাথে ডায়েরি বা প্যাড বা খাতা , নিদেন পক্ষে আপনার স্মার্ট ফোন টা রাখবেন, যে জিনিস টি আপনি মনে করবেন যে আসার ভাল চান্স আছে কিন্ত আপনি ভুলে যাবেন সেগুলো ডায়েরিতে বা মোবাইলে নোট করে রাখবেন, যদি ভাই লিখতে খুব ই কষ্ট লাগে (আমার মতন অলস) তারা মোবাইল ছবি তুলে রাখবেন, বাসে জ্যামে বসে বসে প্রেমিক/প্রেমিকার/ক্রাশের ছবির সাথে সাথে সেই ছবিগুলোও দেইখেন, মনে পড়বে:P

 

আমি বিসিএস এর জন্য সবাইকে সাজেস্ট করি  গতবাধা রুম আটকে দিনভর চেয়ার টেবিলে আটকে না পড়ে বুদ্ধি খাটিয়ে পড়ুন, এফেক্টিভ পড়াশোনা করুন । যাদের সুযোগ আছে তারা দু-চারজন মিলে গ্রুপ স্টাডি করে পড়ুন, পড়াটাকে নিজের মধ্যে না রেখে আলোচনা করে পড়ুন । অনেক কঠিন জিনিস আছে যেগুলো ছন্দ করে মিলিয়ে কিংবা এক বাক্যে মনে রাখার অনেক টেকনিক অনেকে এপ্লাই করে পড়ে, যদি আপনার স্টাডি সার্কেল করা সম্ভব বয় তবে এই কাজ গুলো আরও সুন্দর হবে । শুধু তাইই না, একজনে দায়িত্ব নিন সংবাদ পত্রের উল্লেখযোগ্য তথ্যগুলো সে ডেইলি নোট ডাউন করবে আবার আরেকজনে বই এর খুটি নাটি জরুরি বিষয়গুলো তাকে জানিয়ে দিন । আপনি যদি মএন করেন একা একা পড়ে সেই পানিপথের প্রথম যুদ্ধ থেকে শুরু করে আজকের এই মিনা ট্র্যাজেডি পর্যন্ত তাবত জিনিস পড়ে তামাতামা করে ফেলবেন, আপনার জন্য সেটা যেমন প্রায় অসাধ্য তেমনি সেটা গাধার খাটনি হবে ... এর চেয়ে আগের বছরের প্রশ্ন গুলো দেখুন , কমন পড়বে তা বলছি না অন্তত প্যাটার্ন টের পাবেন । আর এই পরীক্ষা (প্রিলি বিশেষ করে) সিজিপিএ বাড়াবার পরীক্ষা না, তবে আপনার যদি এই প্রিলি পড়তে গিয়ে সাধারণ জ্ঞান (বাংলাদেশ ও আন্তর্জাতিক বিষয়াবলি) নিয়ে ভাল ধারণা মনে বদ্ধমূল হয় তবে আপনি তার ভাল ফল তুলবেন রিটেন ও ভাইভা তে ...

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

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

ধারাবাহিক BCS প্রস্ততি ও সাধারণ আলোচনা – ১2 (সাধারণ জ্ঞানঃ আন্তর্জাতিক ) । BCS Written Exam Guide – 12 (General Knowledge: International)

আন্তর্জাতিক বিষয়াবলিঃ

এই জিনিস টাতেই আমাদের ভয় থাকে সর্বোচ্চ, প্রথমেই মনে হয় এতো এতো দেশের রাজধানী , মুদ্রা, জাতীয় ফল ফুল পাখি এসবের নাম মনে রাখব কী করে ?

আসলে এটা ভুল কনসেপ্ট ...

কারণ আপনি যদি বিসিএস এর প্রশ্ন গুলো যাচাই করে দেখেন দেখবেন বিভিন্ন দেশের এই সব ফুল ফল রাজধানী মুদ্রা এসব থেকে প্রশ্ন আসার পরিমাণ অনেক কম । স্ট্র্যাটেজিক্যালি সেসব ই আসতে পারে যেগুলো ব্যতিক্রম , যেমন কোন কোন দেশ আছে যাদের দেশের নাম আর রাজধানীর নাম একই । আবার কিছু বিশেষ বিশেষ রাষ্ট্র পরীক্ষা চলাকালীন সময়ে যুদ্ধে লিপ্ত কিংবা অর্থনৈতিক/ রাজনৈতিক/ খেলাধূলা এসবের কারণে আলোচিত, সেসব থেকে প্রশ্ন থাকার সম্ভাবনা বেশি ।

 

আবার কিছু দেশের সাথে বাংলাদেশের কূটনৈতিক সম্পর্ক ভাল/ মন্দ । সম্প্রতি যদি কোন দেশের সাথে বিশেষ কোন চুক্তি প্রধান মন্ত্রীর ঐতিহাসিক সফর এসব হয়ে থাকে সেখান থেকেও প্রশ্ন আসতে পারে ...

আমি আন্তর্জাতিক বিষয়াবলি কে কয়েকটা ভাগে ভাগ করে ফেলিঃ

ভৌগলিক জ্ঞানঃ

কোন দেশ কোন মহাদেশে অবস্থিত, এইটা আপনার এস এস সি লেভেলেই মোটামুটি রপ্ত হয়ে যাবার কথা, শুধু তাই না, মহাসাগর কোন গুলো কোন মহাদেশ গুলো কে কানেক্ট করেছে, কোন বিশেষ পর্বত শ্রেণী কোন দেশে অবস্থিত, কোন বিশেষ নদী কোন দেশ বা জনপদের বিশেষ কিছু অবদান রেখে থাকলে (যেমন মিসরের নীল নদ) সেগুলোর নাম... অবস্থান (এদের দৈর্ঘ্য/গভীরতা মনে রাখার দরকার ই নাই) ইত্যাদি জানা থাকা দরকার । বিশেষ বিশেষ জলপ্রপাত গুলো, মরুভূমি বা মালভূমি , বন, বিশেষ সাগর যেমন লোহিত সাগর, মৃত সাগর এগুলোর অবস্থান,এগুলো কোন কারণে বিখ্যাত ...এসব জেনে রাখুন।

এদের সাথে আপনাকে জানা থাকতে হবে আরেকটা গুরুত্বপূর্ণ জিনিসঃ তা হল কোন মহাদেশের মধ্যেও কিছু কিছু দেশ মিলে এক এক টা বিশেষ অঞ্চল হতে পারে (যেমন স্ক্যান্ডিনেভিয়ান রাষ্ট্র গুলো কী কী ), আবার ধরেন জাপান আপনাকে প্যাসিফিক রিজনের দেশ গুলো বললে কোন দেশ গুলো কে বুঝবেন এসব জানা থাকা দরকার (প্রিলি, ভাইভা দুই এর জন্যই)।

যারা ক্যাডেট কলেজে ভর্তি পরীক্ষা দিয়েছেন ছোটবেলায়, তারা পড়ে আসছেনঃ বাতাসের শহর শিকাগো, নিশিথ সূর্যের দেশঃ নরওয়ে... এরকম আলোচিত ও প্রসিদ্ধ ২০-২৫ টা জায়গার নাম আপনাকে কেন তা বিখ্যাত বা আলোচিত জানা থাকতে হবে ।

 

 

আন্তর্জাতিক সংস্থাঃ

এইটা প্রশ্নের আঁধার, এবং আপনাকে এখানের থেকে প্রিলি, রিটেন, ভাইভা তিন জায়গাতেই প্রশ্ন আসবেই আসবে । সো, এইটা পড়বেন সবথেকে গুরুত্ব দিয়ে ...

প্রথমেই কোন সংস্থার সদরদফতর কোথায়ঃ এগুলো কে টেকনিক্যালি মনে রাখতে ট্রাই করবেন, যেমন মার্ক করে ফেলুন W দিয়ে শুরু হওয়া গুলো, বা U দিয়ে শুরু হওয়া ... আবার এভাবেও আলাদা করতে পারেনঃ নিউ ইয়র্কে কোন গুলো প্যারিসে কোন গুলো , রোমে কী কী ...

আপনাকে জানা থাকতে হবে এদের পূর্ণাং নাম, তাতেই অনেক কিছু জেনে যাবেন, যেমন OPEC এর পূর্ণ নাম আপনি জানলেই বুঝতে পারবেন এটিতে সেই সব দেশ ই জড়িত যেখানে তেল আছে এবং যারা তেল বিশ্ববাজারে এক্সপোর্টের সাথে জড়িত ...।

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

প্রশ্ন গুলো অনেক সময় এভাবে আসে, যে নিচের কোন টি অমুক এর অন্তর্গত নয়, এখানে আপনাকে বুদ্ধি খাটিইয়ে প্রসেস অফ ইলিমিনেশনে যাওয়া লাগবে, অর্থাৎ আপনাকে OIC র দেশ ভূক্ত নয় কোন দেশ বললে আপনি খুজবেন কোন টি মুসলিম দেশ নয় (একটা ব্যতিক্রম আছে, কোন টি সেটা ? সার্চ দিন তো :P)

আবার যদি বলে কোন টি কমনওয়েলথ ভূক্ত নয়, এখানে আপনাকে জানতে হবে যে কোন গুলো আগে বৃটিশ কলোনী ভূক্ত ছিল ... তবে এটুকুই যথেষ্ট নয়, জেনে নিন বৃটিশ কলোনীভূক্ত থাকা সত্ত্বেও কোন কোন দেশে কমনওয়েলথ এ নেই ...

 

আন্তর্জাতিক রাজনীতি ও সংশ্লিষ্ট জ্ঞানঃ

এইজন্যে আপনি যেটা করবেন তা হল উল্লেখযোগ্য দেশগুলোর সরকার প্রধান ও পারলে তাদের রাজনৈতিক দলপ্রধান দের নাম জেনে রাখুন, তাদের পার্টির নাম ও (ভাইভাওয়ালাদের জন্য)। কোন কোন দেশে সামরিক শাসক আছে, সেগুলোর আইডিয়া রাখুন । এটা নিয়ে ভয় পাবেন না, আপনাকে ধুম ধাম নিকারাগুয়ার প্রেসিডেন্ট নিয়ে জিজ্ঞাসা করবে না । আলোচিত, বাংলাদেশের সাথে সম্পর্ক আছে এবং আমাদের জন্য গুরুত্বপূর্ন কিংবা সংবাদ মাধ্যমের বহুল আলোচিত দেশ গুলো নিয়ে জ্ঞান রাখলেই চলবে ।

এর মধ্যেঃ ভারত, আমেরিকা, রাশিয়া, চীন, ফ্রান্স, পাকিস্তান, ইসরাইল, সিরিয়া, ইয়েমেন, সুদান, তুরস্ক, গ্রীস, ইউক্রেন, অস্ট্রেলিয়া, ইংল্যান্ড , সার্ক ভূক্ত বাকি দেশ গুলো এসব খুব ই গুরুত্বপূর্ণ ...

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

যুদ্ধ সংঘাতঃ

আগের টপিক টির সাথে জড়িত যদিও , তার পরেও বলি, ইতিহাসের উল্লেখযোগ্য যুদ্ধ গুলোর পক্ষ বিপক্ষ, যুদ্ধের ফলাফল, গত শতকের উল্লেখযোগ্য যুদ্ধ সমূহ, সেসবের কারণ, পক্ষ-বিপক্ষ, রাষ্ট্রসমূহের কার কী অবস্থান, সেগুলোর প্রভাবে কী কী ক্ষতি হয়, কোন বিশেষ অস্ত্র ব্যবহার হয় এইসব আপনার জানা থাকা লাগবে । আবার মনে করেন আরব ইসরাইল সংঘাত, ফিলিস্তিনিদের উপরে ইসরাইলিদের আগ্রাসন, আফগান যুদ্ধ, ভারত পাকিস্তান যুদ্ধ ,আমাদের মহান মুক্তিযুদ্ধ এগুলোর ব্যাপারেও প্রশ্ন আসে ও আসতেই পারে ।

আবার ধরেন শেষ কয়েক দশকের যেসব যুদ্ধ কিংবা সংঘাত সমূহ ছিল বা এখনও চলছে সেসব সম্পর্কেও আপনি জেনে রাখুন, প্রশ্ন চলে আসতেই পারে ... (আমাকে ভাইভা তে সুদান নিয়ে প্রশ্ন করেছে ) ।

(ভাইভাতে অনেক সময় আপনাকে বলবে আপনি কোন পক্ষের সমর্থনে আছেন, এসব প্রশ্ন খুব ই স্ট্র্যাটেজিক ওয়েতে উত্তর দিতে হবে, এ নিয়ে ভাইভা র আলোচনাতে বলব আশা রাখি ...)

আন্তর্জাতিক ইভেন্টসঃ

এবারে বলব বিশেষ বিশেষ আয়োজন কিংবা উপলক্ষ্য নিয়েঃ যেমন ধরেন বিশ্বকাপ, অলিম্পিক গেমস, অস্কার/কান চলচ্চিত্র পুরষ্কার এগুলো থেকেও প্রশ্ন আসে । সব না জানলেও চলবে, শুধু হাইলাইটেড ইভেন্টস গুলোর ব্যাপারে জ্ঞান থাকলেই চলবে ।

নোবেল পুরষ্কার যদিও তেমন ঘটা করে প্রদান করা হয়না, তবু যে বছর পরীক্ষা দেবেন সেবছরের ও আগের বছরের নোবেল পুরষ্কার প্রাপ্তদের নাম ও কেন – কোন ক্যাটাগরিতে নোবেল পেয়েছেন সেগুলো মনে রাখুন ।

আন্তর্জাতিক দিবস সমূহঃ

এটা খুব ই গুরুত্বপূর্ণ, বিশেষ দিবস গুলো যেমন আন্তর্জাতিক পরিবেশ দিবস, কন্যাশিশু দিবস, পানি দিবস, শিক্ষক দিবস এসব দিবস গুলো মনে রাখুন । যারা সব পারবেন না তারা যখন পরীক্ষা দিচ্ছেন সেই মাস, তার আগের ও পরের মাসের দিবস গুলো মনে রাখবেন অবশ্যই । আবার ভাইভা পরীক্ষার্থীরা তাদের জন্মদিনে কোন দিবস থাকলে তা নিয়ে ভাল করে পড়াশোনা করে যাবেন অবশ্যই ।

বিখ্যাত ব্যক্তিত্ত্বঃ

রাজনৈতিক কিংবা সাংস্কৃতিক অংগনের বিশ্ব আলোচিত ব্যক্তিত্ত্ব যারা তাদের সংক্ষিপ্ত পরিচিতি, তারা কেন বিখ্যাত এ বিষয়ে জ্ঞান রাখার চেষ্টা করুন , যেমন আপনাকে প্রশ্ন করতেই পারে যে নেলসন ম্যান্ডেলা কে কোন দ্বীপে কারারুদ্ধ রাখা হয়েছিল কিংবা শচীন টেন্ডুলকারের শেষ টেস্ট ম্যাচ কার বিরুদ্ধে ?এগুলো যারা নিয়মিত খুব এভারেজ লেভেলে সাধারণ জ্ঞান চর্চা করেন বা পত্র পত্রিকা পড়েন টরেন তাদের জন্য কিচ্ছু না , সো, ঘাবড়াবেন না ।

এগুলো ছাড়াও আসলে আন্তর্জাতিকে অনেক ‘বিবিধ’ শ্রেণীভূক্ত প্রশ্ন থাকে । সেগুলো নিয়ে ঘাবড়াবেন না । এতো বিশাল পরিমন্ডলের সব যে আপনি জানবেন তা কিন্তু না । আর প্রিলিতে আপনি প্রতিটা প্রশ্নই যে পারবেন সে আশা তে গিয়ে মানসিক চাপের তৈরি করবেন না নিজে নিজে ... বিবিধ শ্রেণীর প্রশ্ন গুলো অনেক টা আনপ্রেডিক্টেবল, যেমন জিজ্ঞাসা করা হল বিশ্বের সর্বোচ্চ টাওয়ার কোন টি আবার ধরেন বলা হল পরবর্তী শীতকালীন অলিম্পিকের আসর কোথায় বসবে ... এসবের জন্য আমার সাজেশন কারেন্ট এফেয়ার্স প্রতি মাসের টা পড়ুন ... জমিয়ে রেখে একবারে পড়ে হাফেজ হবেন এ আশা করবেন না। এগুলোর কোন শেষ নাই, আপনাকে পড়তে হবে এবং জেনে রাখুন আপনি সব মনে রাখতে পারবেন না, কিছু ভুলে যাবেন ই ... যে যত বড় গলাতেই কথা বলুক, বিসিএস এ যারা অংশ নেয় তাদের ৭০ ভাগ ই চাকরি কিংবা অন্য পড়াশোনার সাথে সাথে পড়ে... সুতরাং গতবাধা কারও ফরমুলা অনুসরণ করে রাস্তার টোকাই থেকে ক্যাডার বনে যাওয়ার ফরমুলা বাদ দিয়ে , নিজে কীভাবে মনে রাখতে পারেবন কিংবা কী করলে আপনার পারপাস ফুলফিল হবে সেদিকে মনোনিবেশ করুন ...

ধারাবাহিক BCS প্রস্ততি ও সাধারণ আলোচনা – ১১ (সাধারণ জ্ঞানঃ বাংলাদেশ ) । BCS Written Exam Guide – 11 (General Knowledge)

সাধারণ জ্ঞানঃ

বিসিএস এর কথা মাথায় আসলেই অনেকের মাথায় আসে এটা একটা সাধারণ জ্ঞান পরীক্ষা, দেশ-রাজধানী-মূদ্রা র নাম, প্রেসিডেন্টের শ্যালক-শ্যালিকার নাম ইত্যাদি ইত্যাদি ...

আমরা ক্যাটরিনার কোমরে মাপ, জোলির হাইট কিংবা ওয়ারেন বাফেটের টাকা পয়সার হিসাব জানলেও অনেক ব্যাসিক জিনিস জানি না । খুব সাদামাটা ভাবে বলতে গেলে আপনি চট করে চিন্তা করে আমাদের ৭ জন বীরশ্রেষ্ঠের নাম বলতে পারবেন ? কিংবা বাংলাদেশ কত সালে জাতিসংঘে সদস্য পদ লাভ করে ?

হ্যা, এই পরীক্ষায় (প্রিলি এবং ভাইভা উভয়েই) প্রচুর উদ্ভট সাধারণ জ্ঞানের প্রশ্ন আসে, যেসব দেখে সাধারণ শব্দ টা কেই মনে হবে অপমান করা হচ্ছে ...

 

যাহোক, আমি সাধারণ জ্ঞান বলতে আসলে কী বোঝাচ্ছি?

আমার সাধারণ জ্ঞানের মধ্যে অন্তর্ভূক্ত থাকবে দুইটি ধাপঃ

১) বাংলাদেশ বিষয়াবলি ২) আন্তর্জাতিক বিষয়াবলি ...

প্রথমেই দেশ নিয়ে শুরু করিঃ

বাংলাদেশ বিষিয়ে আপনি যদি কম জানেন তো আপনার বিসিএস এ একটা না একটা পর্যায়ে বাদ পড়ার সম্ভাবনা প্রবল, তাই নিজ দেশ সম্মন্ধে বিসিএস প্রিলি র জন্য কী কী জানবেন আসুন লিস্ট করিঃ

১) ভৌগলিক অবস্থানঃ অক্ষাংশ দ্রাঘিমাংশ, আশপাশে কোন রাষ্ট্রের কোন রাজ্য, কতটি জেলা/ বিভাগের সাথে সীমান্ত আছে, এর পূর্ব-পশ্চিম, উত্তর-দক্ষিণে কী কী আছে, সামূদ্রিক জলসীমার আয়তন ইত্যাদি

২) দেশের অভ্যন্তরীন ভৌগলিক অবস্থান, ভূপ্রকৃতি , নদ নদীঃ যেমন ধরেন দেশের পাহাড় কোথায় কোথায়, সুন্দরবন কোন কোন জেলা নিয়ে অবস্থিত, প্রধান নদী, উৎপত্তি / প্রবেশ স্থল, মিলনস্থল, কোন শহর (প্রধান গুলো) কোন নদ/নদীর তীরে অবস্থান করছে, দেশের উচ্চতা মাফিক কোন জেলার ভূপ্রকৃতি কেমন , নদীগুলোর মোট দৈর্ঘ্য, সমূদ্র বিজয়, আয়তন প্রাপ্তি, সেখানের মামলার দিন তারিখ ইত্যাদি ইত্যাদি ।।

৩) দেশের ইতিহাসঃ এটা আপনার জানা উচিত বৃটিশ আমল এর ইমিডিয়েট আগ থেকে, অনেক বইতে রাজা শশাংক , গৌড় গোবিন্দ কিংবা পাল রাজাদের কাহিনী বলা আছে, আমার সাজেশন হল এতো পড়তে গেলে খেই হারিয়ে ফেলবেন, খুব বিখ্যাত কোন রাজা (যেমন শশাংক)র আমলের উল্লেখযোগ্য এক দুইটা বিখ্যাত ঘটনা ছাড়া না জানলেও চলবে ...

আপনাকে জোর দিয়ে পড়তে হবে ৪৭ এর পর থেকে প্রায় প্রতিটা ঘটনা প্রবাহ, বিশেষত মুক্তিযুদ্ধ ও তার পূর্বেকার রাজনৈতিক ঘটনাবলি, এখানে কার কী অবদান, বিশেষ দিন তারিখ, বাংলাদেশ কে স্বীকৃতি , ১১ টি সেক্টর তাদের কমান্ডার দের নাম ( ভাইভা প্রার্থীরা কোন সেক্টর কোন এলাকা নিয়ে গঠিত তাও পড়ুন, চট করে আপনাকে জিজ্ঞাসা করে বসবে আপনার এলাকা কোন সেক্টরের অধীনে ছিল)...

মুক্তিযুদ্ধ চলাকালে আমাদের সরকার গঠন, সেই সরকারের গুরুত্বপূর্ণ সদস্যবৃন্দ তাদের মন্ত্রণালয় বন্টন ইত্যাদি তথ্যগুলো আপনাকে শিখতে হবে নির্ভুল ভাবে।

৪) এরপর আসেন আমরা কিছু বিশেষ সংগঠণে কবে আমরা অন্তর্ভূক্ত হই, জাতিসংঘে কবে বঙ্গবন্ধু বাংলায় ভাষণ দেন, আমাদের প্রথম প্রতিনিধি কে? এরপর OIC, SAARC, UNESCO, UNISEF, BIMSTEC এই জাতীয় প্রতিষ্ঠানে কবে বাংলাদেশ অন্তর্ভূক্ত হয়, এদের কোন টার সাধারণ অধিবেশন বাংলাদেশে সম্প্রতি হয়েছে কিনা, হলে সেটার প্রতিপাদ্য কী ছিল ...

৫) বাংলাদেশ সম্মন্ধে আরেকটা গুরুত্বপূর্ণ ইস্যু আপাতত বঙ্গবন্ধুর জীবনী, রাজনৈতিক জীবন, শেখ হাসিনার সংক্ষিপ্ত জীবনী, তাদের দুজনের উল্লেখযোগ্য গ্রন্থাবলি ...

৬) আপনার জন্য বাংলাদেশের প্রশাসনিক কাঠামো টা জানা খুব ই জরুরি , এর সাথে দেশের বিভাগ, জেলা, উপজিলা, ইউনিয়ন সংখ্যা এসব মনে রাখুন, এগুলো যেহেতু বাড়ে তাই কারেন্ট এফেয়ার্স থেকে রিসেন্ট তথ্য টা নিবেন... আরও বলি, সরকারি ওয়েবসাইট বাতায়ন আপনাকে এই ব্যাপারে আপডেটেড তথ্য দিতে পারে

৭) এরপর আপনাকে দেশের বরেণ্য ব্যাক্তিদের নিয়ে হালকা পাতলা জানা থাকা দরকার, তবে খুব বেশি না হলেও চলবে, একবার শামসুর রাহমানের জন্মস্থান নিয়ে একটা প্রশ্ন এসছিল, অপশন গুলো ছিল সব ভুল।

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

৮) এবারের পালা দেশের সম্পদ সমূহ... প্রাকৃতিক গ্যাস, তেল, কয়লা কোথায় কোথায় পাওয়া যায়, আইডিয়া রাখুন ... সাথে কোন প্ল্যান্ট বা গ্যাস কারখানা কীসে চলে সেটার খোঁজ ও রাখা চাই ...বিদ্যুৎ কারখানা গুলো কোথায় অবস্থিত, দেশের বর্তমানে বিদ্যুৎ উতপাদনের হালনাগাদ তথ্য, বিশেষ কোন পাওয়ার প্ল্যান্ট কোথায় অবস্থিত, এই তথ্যগুলো জানা উচিত (যেমন রূপপুরের পারমাণবিক বিদ্যুৎ কেন্দ্র)

৯) দেশের বন সম্পদ, পাহাড়ি এলাকা, সেখানের উল্লেখযোগ্য বনরাজি, পশু পাখি কী পাওয়া যায় তা ছোটবেলা ত্থেকে পড়ে মাথায় থাকার কথা ...এখন যেটা একটু বেশি জানবেন তা হল উল্লেখযোগ্য কৃষিজ সম্পদ, কোন বিশেষ জাত উদ্ভাবন হলে তা, কোন বিশেষ গবেষণা হলে কিছু নিয়ে সেগুলোর হাল নাগাদ তথ্য সম্ভার ...

১০) আর কী জানা যায় বলেন তো ? হ্যা, উল্লেখযোগ্য কীর্তিসমূহ কোন জেলায় কী অবস্থিত, শুধু তাইই না মসজিদ, মন্দির, উল্লেখযোগ্য  বিশেষ ভাস্কর্য গুলো তাদের ভাস্করিকের নাম, অবস্থান ...

১১) স্বাধীনতা কিংবা একুশে পদক শেষ বছরে কে পেয়েছেন, কোন বিশেষ চলচ্চিত্র বা কোন বই পত্র পুরষ্কার পেল কীনা ...এগুলো নিয়েও আপডেটেড থাকবেন...আমি জানি এতোকিছু আপনি মুখস্ত রাখবেন না, একটা ডায়েরি রাখবেন, প্রতিদিন ৩-৪ টা তথ্য (যা আপনার মনে থাকবে না কিছুদিন পরে আপনি শিউর) লিখে রাখুন, পরীক্ষার আগে দেখবেন এগুলো কেমন কাজে আসে ...তখন অনেক অল্প পরায় কিংবা চোখের দেখায় আপনার মাথায় ঢুকবে ...

বাংলাদেশ নিয়ে জানার শেষ পাচ্ছেন না তো? হ্যা, আপনি এভাবে করে এতোক্ষন যা জানলেন তা হল ব্যাসিক... আরও জানতে হলে আমি সাজেস্ট করব প্রতিদিন বাংলাদেশের কোন একটা ভাল সংবাদ পত্র পড়ুন, জানুন কোন বিশেষ চুক্তি হচ্ছে কিনা... জিএসপি সুবিধার এদিক ওদিক, ট্রাঞ্জিট, রাশিয়া/আমেরিকা/চীনের সাথে চুক্তি, ভারতের সাথে কোন বিশেষ চুক্তি বা শর্ত আরোপ এগুলোও আপনাকে জানা থাকা লাগবে নিয়মিত ...

 

 

এখন ম্যাটেরিয়ালস বলিঃ

সাধারণ জ্ঞান তা বাংলাদেশ ই হোক আর আন্তর্জাতিক ই হোক, আপনি কারেন্ট এফেয়ার্স/ওয়ার্ল্ড এগুলো অবশ্যই অবশ্যইই পড়বেন, ভাব্বেন না যে মাসে পরীক্ষা সে মাসের টা কিনলেই হয়ে যাবে ...

আমি নিজে ওরাকলের একটা বই কিনেছিলাম, বাংলাদেশ বিষয়াবলি, ওখান থেকে বাংলাদেশ বিষয়ে ব্যাসিক গুলো পড়ে নিয়েছিলাম ৩৩ তম র প্রিলির আগে ...আমার ঐটা বেশ কাজে দিয়েছে, এতোদিন বইএর নাম বলি নি কিছুর কারণ আমি খুব কম ই বই পড়েছি...আমি ওরাকলের নাম বললাম তাই বলে এটাই ফলো করতে বলছি না, আপনি সময় করে দোকানে গিয়ে Assurance, professors, Mp3, Confidenceযেটা ভাল লাগে সে বইই কিনে আনতে পারেন ...

যারা সময় নিয়ে পড়তে চান তারা পার্ট বাই পার্ট কিনতে পারেন,আবার যারা চান ১-২ মাস সময় নিয়ে পড়তে তারা একটা ডাইজেস্ট কিনে ফেলুন ... আর হ্যা, ডেইলি সংবাদ পত্র টা পড়ুন, অনলাইনে পড়লে সাথে একটা ওয়ার্ড ফাইল খোলা রাখুন, গুরুত্বপূর্ণ তথগুলো সেখানে কপি পেস্ট করে দিবেন ।

আর সাধারণ জ্ঞান বিষয়ের তথ্যগুলো কিন্ত মনে থাকতে চাইবে না, ফেসবুকের গ্রুপগুলোতে ঢু মারুন, কয়েকজন মিলে গ্রুপ করে রেগুলার তথ্য শেয়ার করুন, একে অন্যকে প্রশ্ন করুন ... কার্পণ্য করবেন না, এখানে বন্ধু সিজিপিএ ৪ পেয়ে যাবার ভয় নাই, আর এতো তথ্য যে আপনি কিপটামি করেও লাভ নাই, যত বেশি আলোচনা করবেন, তত আপনার মাথায় থাকবে, সব কিছু মুখস্ত করে আপনার স্মরণে থাকবেনা, বলে দিলাম ...

ধারাবাহিক BCS প্রস্ততি ও সাধারণ আলোচনা – ১০ (বিষয়ভিত্তিকঃ গণিত ) । BCS Written Exam Guide – 10 (Subject Based: Math)

Mathematics:

আমি একটা ম্যাথ না করে গিয়েও প্রিলি/ রিটেনে সব শুদ্ধ ম্যাথ করেছি, আপনিও পারবেন ।

এইকথা বলে শেষ করে দেয়া যেত, কিন্তু বাস্তবতা হল আমার মতন সবাইই ইঞ্জিনিয়ারিং ব্যাকগ্রাউন্ডের না, সবাইই ছাত্রজীবনে টিউশনি করান নাই, কিংবা সবাইই সায়েন্স ব্যাকগ্রান্ডের না।

ভয় পাবার কারণ নাই । বাজারে অনেক বই আছে বিসিএস ম্যাথের জন্য, আমি যদিও কিনি নাই বা লাগে নাই, এরপর ও বলি, যারা আসলেও গণিত চর্চার থেকে অনেক দূরে আছেন, প্র্যাক্টিস করুন । আগে ক্লিয়ার হয়ে নিন আপনি কিসে দুর্বলঃ পাটিগণিত/ বীজগণিত না জ্যামিতিতে এরপর প্র্যাক্টিস করুন ।

প্র্যাক্টিস এর উপরে ভাইটামিন নাই, যদি আপনি আসলেও ম্যাথে দুর্বল হয়ে থাকেন ।

এসব ব্যাক গ্রাউন্ড কিংবা কোথা থেকে এসছেন এসব কথাবার্তা বলে নিরাশ করতে চাই না আদতে ।

আমি যখন ছোট বেলায় খেলা দেখতাম, শোয়েব/ লি দের বোলিং যখন কিমি তে দেখাতো ট্রাই করতাম সংখ্যাটাকে .62 দিয়ে ভাগ করে মাইলে আনতে আবার মাইলে থাকলে ১.৬১ দিয়ে গুণ করে কিমিতে । আমিই না অনেকেই তাই করে, কোথাও ফুটে আছে কিছু শুনলে সেটা কত সেমি কিংবা গজে শুনে মিটারে এভাবে অনেকেই চর্চা করে মনে মনে  । অনেকে বর্গ করে মনে মনে, দুই –তিন অংক বিশিষ্ট সংখ্যার গুণ ভাগ করে, যারা সারাদিন টাকা গোণার চাকরি করেন তারা তো হিসেবে ভালই হবার কথা 😛

এখন কথা হল কেন বলছি, পিএসসি হুট করে ক্যালকুলেটর নিষিদ্ধ করে দিয়েছে । সো, কিছু গণনাতে আপনাকে স্মার্ট হতে হবে । হাতে কলমে করার সময় নাও পেতে পারেন, তাই ছোট খাটো হিসেব গুলো মনে মনে বা মুখে মুখে করার ট্রাই করুন ।

এখন কথা হল আপনাকে কী কী জিনিসের প্রিপারেশন না নিলেই না ?

প্রথমত ত্রিকোণমিতির ব্যাসিক ধারণা টা কী ভুলে গেছেন ? একটু দেখে আসুন ।

পাটিগণিতে চৌবাচ্চার অংকগুলোর জন্য অনেক সোজা সোজা টেকনিক বাজারের বইগুলোতে আছে। বুদ্ধিমানেরা এই বয়সে একটা অংক করলেই ধরে ফেলার কথা J ।সরল সুদকষার অংকগুলো ছোটবেলাতে একবার ভুল করার পর একটা জিনিস মাথায় ঢুকাইছিলাম যে টাকা বাড়বে কখন, কমবে কখন ... একই ভাবে কোন কাজ করতে ক খ এর এতো এতো দিন লাগবে সেখানে চিন্তা করেছিলাম কাজ করতে সময় বেশি বা কম লাগে কখন , এরপর থেকে ঐকিক নিয়মে আর ভুল হয় নি । আপনিও একটু মাথা খাটান।

স্মার্টলি পড়বার জন্য এখানেও সার্কেল করে নিন, যে জ্যামিতি ভাল বোঝে , তার থেকে জ্যামিতি, ঘনজ্যামিতি বা পরিমিতি টা পড়ে আসুন । যারা এখনও টিউশনি করায় এমন কাউকে ধরুন বিন্যাস সমাবেশ টা একটু বুঝিয়ে দেবে, কখন কোন টা হয় ...

পৌণপুনিকের কথা মনে আছে ? সেই যে ক্লাস ৮ এ শেষ করেছিলেন, আরেকবার দেখুন, মনে পড়বে একবারেই । এরপর ২/৩ চলকের সমীকরণ সমাধান গুলো প্র্যাক্টিস করুন ।

পরিমিতি/ভেক্টর বা ঘনজ্যামিতির কিছু যদি আটকে যান, চট করে ছবি একে করার চেষ্টা করুন ।

সময় অ নদীর স্রোতের অংকগুলোর জন্য ২-৩ টা শর্ট কাট সূত্র আছে, ছাত্র ছাত্রী পড়ান যারা তারা তো পারবেন, বাকিরাও নাহয় ছবি একে পাশে লিখে মনে রাখুন ।

আর হ্যা, কাল থেকে আপনি ট্রাই করবেন যোগ বিয়োগ গুণ ভাগ গুলো মুখে মুখে করতে , আমি অফিস করতে গিয়ে দেখেছি আমরা রোবট এর মতন হয়ে যাচ্ছি, অনেক কে দেখেছি তারা এক্সেলে যোগ না করলে আত্মবিশ্বাস পায় না, মনে করে ভুল করছে কোথাও ...

মনে রাখবেন , বিসিএস এ গিয়ে আপনি কিন্তু ছোট বাচ্চা হয়ে যাচ্ছেন কোনরকম যন্ত্রের ব্যবহারহীন হয়ে পড়ছেন ।তাই আগে থেকে অভ্যস্ত হয়ে নিন ।

আপনার প্র্যাক্টিসের জন্য অনেক ওয়েবসাইট পাবেন, মোবাইলের জন্য এপ্স পাবেন , জাস্ট খুজুন।

যেমনঃ http://www.questionpapers.net.in

কিংবা http://www.readbd.com

(বলে রাখি, আমি কোন ওয়েবসাইট কিংবা অর্থকরী কোন প্রতিষ্ঠানের সাথে জড়িত নই কিংবা কারও বিজ্ঞাপণের কাজেও না, আমার চোখে পড়া কিছু জিনিস আমি সাজেস্ট করছি মাত্র, এর থেকে ভাল কিংবা এ জাতীয় আরো ওয়েবসাইট আপনি খুঁজে পেতে পারেন । আমার এগুলো উল্লেখের উদ্দেশ্য পড়া কিংবা চর্চা করার নতুন উৎসের সন্ধান দান মাত্র )

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

আপনার ওভার কনফিডেন্সে আপনার পচা শামুকে পা কাটতে পারবে  । আপনি ইংলিশ লিটারেচার কম পারেন/জানেন, বাংলায় ও তাই ... ধরেই নিয়েছিলেন ম্যাথে তো ফুল মার্ক্স ... সেখানে কয়েকটা সিলি মিস্টেক কিংবা একটু না দেখা বা সূত্রটা ভুলে যাবার খেসারত কিন্তু আপনাকে পরে ভালই কষ্ট দিবে, যখন আপনি জানবেন আপনি .5  কিংবা ১ মার্ক্স এর জন্য প্রিলিতে টিকেন নাই, কিংবা রিটেনে সবাইই (আপনার সম ব্যাকগ্রাউন্ডের) ফুল মার্ক্স অথচ আপনি সরল অংকটায় ভুল করে এসছেন , চৌবাচ্চার ম্যাথ টায় হিসেবে একটু ভুলে আপনার রেজাল্ট অন্য আসছে ...

ধারাবাহিক BCS প্রস্ততি ও সাধারণ আলোচনা – ৯ (বিষয়ভিত্তিকঃ গণিত ও ইংরেজি – ৩ – সাহিত্য ) । BCS Written Exam Guide – 9 (Subject Based: Math and English – 3 – English Literature)

এবারে আসি Literature এ ...

এইটা ভাই আমার নিজের জন্যেও টাফ ছিল । আমি নিজে খুব বেশি ইংরেজি সাহিত্যের পাঠক ছিলাম না ।

কিছু বহুল প্রচলিত বই পত্রের নাম ধাম জানতাম , আর বাকিটা পড়ে শিখতে ট্রাই করেছি ।

আপনার জন্য আমার সাজেশন হল নীল ক্ষেতে ৫০-৬০ টাকায় বেশ কিশু ছোট ছোট বই পাওয়া যায় যেখানে ইংরেজি লেখিয়েদের সংক্ষিপ্ত জীবনী, উল্লেখযোগ্য সাহিত্য কর্ম এবং তারা কোন যুগের সাহিত্যিক ছিলেন তা সামারি করে দেয়া আছে । আপনাকে আরেকটু জানতে হবে কোন বিখ্যাত বই কোন বিশেষ পুরষ্কার পাওয়া কিনা । প্রশ্ন যদি খুব কঠিন ই হয় আপনাকে কোন চরিত্র দিয়ে বলতে পারে এটা কার কোন বই এর বা নাটকের । আমার কথা হল ভাই আপনি ২০০ তে ২০০ পেতে পরীক্ষা হলে যাচ্ছেন না, সো, কিছু জিনিস নিয়ে অনেক বেশি পরিশ্রম করে লাভ নাই, বিশেষত যা ২-৩ টার বেশি থাকবে না ।

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

আমি একটা ওয়েব সাইটের এড্রেস দিই, এখান থেকে আপনারা খুব সংক্ষেপে বিভিন্ন সাহিত্যিকের কাজ গুলো নোট করে নিতে পারেনঃ http://www.thefamouspeople.com

তবে আবারও বলি বিসিএস এর বিগত বছরের প্রশ্ন দেখেন, একটু জাজ করার চেষ্টা করেন কেমন প্রশ্ন , কাকে নিয়ে বা কী ধরণের প্রশ্ন বেশি আসে , সে অনুযায়ী আপনার প্রস্তুতি সাজান , ভাল করবেন ।

 

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

সামনের ভাইভা পরীক্ষার্থীদের জন্য বলি, নিজেরা নিজেরা ইংরেজি তে কথা বলার লোক খুঁজে বের করেন। কথা বলার বাচন ভংগি, নিজের ব্যাপারে , নিজের লক্ষ্যের ব্যাপারে ইংরেজি তে আয়নার সামনে দু চার মিনিট বলার অভ্যাস করেন । ট্রাস্ট মি আপনি ইংরেজি ভাল পারলে, ভাইভার ২০০ মার্ক্স এ আপনার মার্কিং শুরুই হবে ১০০ র পর থেকে 😉 মানে আপনি বিষয় ভিত্তিক জিনিস গুলো কম পারলেও ভাল মার্ক্স আশা করতে পারবেন । ওখানে তোতলালে কিংবা বেশি ভুলভাল বললে, মুখস্ত কথা বললে আপনি যতই বিদ্যার জাহাজ হোন, লাভ নাই ।

আর হ্যা, ইংরেজি তে প্রিপারেশন টা কিন্তু একটা এক্টিভ-প্যাসিভ দুই এর সামেশন ।

আপনার উচিত সপ্তাহে অন্তত একদিন ইংরেজি পত্রিকা পড়া, সেখান থেকে চলমান ও বহুল ব্যবহৃত Vocabulary, Idioms and Phrases মার্ক করে রাখা । যারা রেগুলার পড়তে  পারেন তারা অনেক এগিয়ে থাকবেন । আমি পরামর্শ দিব ৩-৪ জন মিলে একটা স্টাডি সার্কেল করুন বা অনলাইনে গ্রুপ গুলোতে একটু সময় দিন, একজন দায়িত্ব নিন যিনি রেগুলার সম্প্রতি ব্যবহৃত Vocabulary/phrases গুলো টুকে রাখবেন, আরেকজন কে দায়িত্ব দিন সে কারেকশন এর দিক গুলো তুলে ধরবে, আরেকজন Transformation/ Voice/ Narration এর উদাহরণ দিবে ৫-১০ টা করে । দেখবেন সবাইই উপকৃত হচ্ছেন ।

 

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

বাসে যেতে যেতে সময় কে কাজে লাগাতে পারেন । অফিসে কাজের ফাঁকে ফাঁকে একটু দেখতে পারেন , গ্রামারের ও এপ্স আছে, সেগুলোও দেখেন । আর যাদের এই সুযোগ নেই, ঘাবরাবেন না । এর মানে এই না যে আপনি পিছিয়ে গেলেন । আপনি আপনার কাছে যে রিডিং ম্যাটেরিয়ালস গুলো আছে সেগুলোর সর্বচ্চ ব্যবহার করুন । কোন বই থেকে প্রশ্ন আসবে সেই চিন্তা ভাবনা অবান্তর । আপনাকে গ্রামারের ব্যাসিক জানতে হবে, ভোকাবুলারি সমৃদ্ধ করতে হবে, এখন সেটা আপনি active/ passive যে পদ্ধতিতেই করে স্বস্তি পান না কেন ...

ধারাবাহিক BCS প্রস্ততি ও সাধারণ আলোচনা – ৮ (বিষয়ভিত্তিকঃ গণিত ও ইংরেজি – ২) । BCS Written Exam Guide – 8 (Subject Based: Math and English – 2)

আমি আজ ইংরেজি আর ম্যাথ নিয়ে আলোচনা করতে যাচ্ছি ।

ইংরেজিঃ

আবারও বলি প্রিলিমিনারি হোক আর রিটেন/ ভাইভা হোক আপনি ইংরেজি তে গুরুত্ব দিন ।

আপনি ইংরেজিতে অনার্স মাস্টার্সের পড়াশোনা করার পরও হয়ত দেখবেন Sentence Transformation , Voice Change, Narration change, Use the right form of verbs এগুলো ভুলে গেছেন । কোথায় পার্টিসিপল বসবে কোথায় জিরান্ড, কোথায় ing যোগ করবেন , কোথায় To ? এমন কি আমরা আর্টিকেলের ব্যবহার ও অনেক সময় ভুলে যাই, BCS এ নেগেটিভ মার্কিং থাকায় ওভার কনফিডেন্ট হয়ে এই ভুল গুলো করার মাশুল গুণতে হবে আপনাকে ।

তাই আমি বলি, যারা ইংরেজিতে ভাল তারাও এক ঝলক একটু দেখে নিন গ্রামারের নিয়ম কানুন ।

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

আবারও বলি বিসিএস প্রস্তুতি শুরু করবেন প্রাক্তন বিসিএস গুলোর প্রশ্ন দেখে, এটা আপনার মাথায় একটা ম্যাপ ক্রিয়েট করে দেবে কী কী আসে, আপনি কী কী পারেন আর কী ই বা ভুল করেন ।

মোটামুটি যে টপিক গুলো আপনার লাগবেঃ

  1. A) Parts of Speech: Noun, Pronoun, Verb ( তার মধ্যে আবার Finite: transitive, intransitive; Non-finite: participles, infinitives, gerund; The Linking Verb, Phrasal Verb, Modals),Adjective, Adverb, Preposition, Conjunction. Determiner, Gender, Number
  2. B) Words: Meanings, Synonyms, Antonyms, Spellings, Usage of words as various parts of speech, Formation of new words by adding prefixes and suffixes. এগুলোর জন্য বাজারে MBA ভর্তির যে বই গুলো আছে সেগুলো দেখলে ভাল করবেন। সেখানে বিসিএস উপযোগী শব্দ সম্ভার বেশি পাবেন
  3. C) Corrections: সব ধরণের কারেকশন, সেটা Tense, Subject Verb agreement, Number, Gender, Sentence এর মারপ্যাচ যাইই হোক
  4. D) Sentences & Transformations: Simple Sentence, Compound Sentence, Complex Sentence, Positive Degree, Comparative Degree, Superlative Degree.
  5. E) Voice change, Narration
  6. F) Clauses: এটায় হাফেজ হওয়া লাগবে না, জাস্ট জানা থাকলেই পারবেন
  7. G) Idioms & Phrases: এগুলোর বাক্যে প্রয়োগও দেখে রাখবেন ।

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

ধারাবাহিক BCS প্রস্ততি ও সাধারণ আলোচনা – ৭ (বিষয়ভিত্তিকঃ গণিত ও ইংরেজি – ১) । BCS Written Exam Guide – ৭ (Subject Based: Math and English -1)

গণিত ও ইংরেজি

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

বিশেষত সায়েন্সের স্টুডেন্টস আছেন যারা এবং যারা টিউশনি কিংবা কোচিং এ ক্লাস নেয়ার সাথে জড়িত তাদের জন্য গণিতে ভাল করা সহজ ছিল ; আর ইংরেজিতেও মার্ক্স ছিল কম (১০০ র মধ্যের পরীক্ষা গুলোতে)। আর যারা মোটামুটি গ্রামার জানেন তারা পার পেয়ে যেতেন ।

সম্প্রতি ইংরেজিতে গ্রামার আর লিটারেচার মিলে প্রায় ৩৫ নম্বর থাকে ।

শুধু প্রিলিতেই নয়, আপনাকে রিটেনেও ইংরেজি গ্রামার ফেস করতে হবে , কারেকশন আছে, ট্রান্সলেশন আছে, সেখানে ফরমাল/ ইনফরমাল লেটার, Essay writing টাও আছে । তাই হেলাফেলা করে ইংরেজি প্রিপারেশন নিয়ে লাভ নেই আসলে । এখানে আপনার অনেক মার্ক্স কমে যেতে পারে ।ইংরেজিতে আপনাকে ভাল আল্টিমেটলি করতে তো হবেই, মোটামুটি ভালভাবে ইংরেজি বলার অভ্যাসও থাকা চাই, যারা পরের ভাইভার জন্য প্রিপারেশন নিচ্ছেন , জেনে রাখুন অধিকাংশ বোর্ডেই আপনাকে ইংরেজিতে আদ্যোপান্ত জিজ্ঞাসা করা হবে, আপনি তোতলাতে থাকলে পেটে যত বিদ্যাই থাকুক, ধরা খাবেন । অনেক কে অপমান করে বের ও করে দেয়া হয়েছে অথচ তাদের রিটেনের মার্ক্স হয়ত ভাল কিংবা গোটা লাইফের রেজাল্ট, ভাইভা র প্রিপারেশন ও ভাল থাকা সত্ত্বেও ।

ম্যাথের ব্যাপারেও বলি, যারা পড়াশোনার সুযোগ কম পান তাদের জন্য ম্যাথের ব্যাসিক ভাল জানা থাকলে অনেক প্রতিদ্বন্দ্বীর থেকে এগিয়ে যাওয়া সহজ । বিসিএস এর যা ম্যাথ আসে তা একজন ইঞ্জিনিয়ারিং ব্যাক গ্রাউণ্ডের স্টুডেন্টের জন্য বেশ সহজ , তার উপর যাদের পড়ানোর অভ্যাস থাকে ।

সমস্যা টা হয় আমাদের মাঝে যারা ডাক্তার আছেন, অন্য ডিসিপ্লিনের আছেন কিংবা নন সায়েন্সের স্টুডেন্ট আছেন । কেন বলছি অনেকেই খেয়াল করে দেখবেন ইন্টারে করানো বিন্যাস সমাবেশের অংক ভুলে বসে আছেন। আবার ঘনমিতি, ত্রিকোণমিতির টুকি টাকি ও অনেকের মনে নাই ।তাই বিসিএস এর ম্যাথ মানে যারা সরল সুদকষা যোগ বিয়োগ গুণ ভাগের অংক বলে হেলা করেন তারা একটু গা ঝাড়া দিন ।

ধারাবাহিক BCS প্রস্ততি ও সাধারণ আলোচনা – ৬ (বিষয়ভিত্তিকঃ বাংলা এবং বাংলাদেশ) । BCS Written Exam Guide – 6 (Subject Based: Bengali and Bangladesh)

ধারাবাহিক BCS প্রস্ততি ও সাধারণ আলোচনা – ৬ (বিষয়ভিত্তিকঃ বাংলা এবং বাংলাদেশ) । BCS Written Exam Guide – 6 (Subject Based: Bengali and Bangladesh)

বিষয়ভিত্তিকঃ

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

আপনাকে সবথেকে বেশি সময় দিতে হবেঃ

বাংলা, বাংলাদেশ বিষয়াবলি, আন্তর্জাতিক বিষয়াবলি এই তিন টা বিষয়ে (বিশেষত সায়েন্সের যারা আছেন তাদের জন্য)

আমি সুযোগ পেলে ভেঙ্গে ভেঙ্গে আলোচনা করব একদিন, আপাতত আজ বাংলা নিয়ে বলিঃ

বাংলাতে আপনাকে আদি বাংলা সাহিত্য সম্পর্কে একটা ধারণা রাখতে হবেঃ মানে চর্যাপদ, মংগলকাব্য এদের কবি, তাদের সাহিত্যকর্ম, সময়কাল, বাংলা সাহিত্যের প্রাচীন, মধ্যকাল , সে সময়ের উল্লেখযোগ্য কবি সাহিত্যিক, তারা কীসের উপর ভিত্তি করে সাহিত্য রচনা করতেন ইত্যাদি ইত্যাদি ।

আধুনিক কালে বাংলা সাহিত্য কীভাবে নানা ভাবে বিভক্ত হল, সেসবের মধ্যে কিছু বিশেষ ব্যক্তির উপন্যাস, নাটক্, প্রবন্ধ গ্রন্থ...(সব নাম আপনার মুখস্থ হবে না তা স্বাভাবিক, তবে পুরষ্কার জয়ী কিংবা সমাজ সংস্কারে ভূমিকা রেখেছে এমন সব নাম তাদের সাহিত্যিকের নাম অবশ্যই মনে রাখবেন, যেমন দীনবন্ধু মিত্রের নীল দর্পন)।

এরপর আপনাকে পড়তে হবে ১৮ শতক কিংবা উনিশ শতকের উল্লেখযোগ্য কিছু পত্রিকা, তাদের সম্পাদক, বাংলা প্রথম সংবাদ পত্র কিংবা বাংলা পত্রিকাগুলোর উত্তরণ কাল এসব নিয়ে । কোন বিশেষ কবিতা/ বই কোন সমাজ সংস্কার কিংবা আলোড়ন তুললে সেটা অবশ্যই মনে রাখবেন এ কথা জোর দিয়ে বলছি এ কারণে যে আপনার পক্ষে সব মুখস্ত রাখা অসম্ভব । আর হ্যা, আপনাকে কিন্তু রবীন্দ্রনাথ এর যুগে পড়ে থাকলেই হবে না জনাব। আপনাকে জানতে হবে ৭১ এর আগে ও পরের বাংলা সাহিত্য নিয়ে, ৫২ র ভাষা আন্দোলন কিংবা আমাদের স্বাধীনতা যুদ্ধের উপর যেসব বইপত্র, লেখনী আছে সেসবও ... বাংলাদেশের মুক্তিযুদ্ধের উপর বাইরের দেশের কোন সাংবাদিক বা লেখক কোন বই লিখেছে কিনা , কোন গান আছে কিনা এসব ও জানতে হবে আপনাকে । অতি আধুনিক কালের হুমায়ূন আহমেদ, সৈয়দ শামসুল হক, আখতারুজ্জামান ইলিয়াস ইনাদের বহুল আলোচিত কিছু বইপত্রের নাম ও জানা থাকা দরকার। এখন কথা হল এগুলো কীভাবে জানবেন ?

যাদের বাসায় ক্লাস ৯-১০ এর বই গুলো আছে, তারা সহপাঠ বই এর ভূমিকা টা চোখ বুলিয়ে নেবেন, এনাফফ ।

আর যাদের নেই, তারা আসলে বাজারের যেকোন বই ই ফলো করতে পারেন, যার যেভাবে পড়ে সুবিধা । বাজারে প্রফেসর্স, ওরাকল, কনফিডেন্স, MP3  সিরিজের বই পাওয়া যায় । এদের বইগুলো হয় দুধরণের ।

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

এতো গেল সাহিত্য ইতিহাস । এরপরে অনেক সময় কোন কোন চরিত্র বা উক্তি উল্লেখ করে দিয়ে বলে কার লিখা বই এর কিংবা কোন উপন্যাস/ নাটকের ?

এখন আপনি তো বাংলা সাহিত্যের সব বই এর সব চরিত্রের নাম জানবেন না, স্বাভাবিক ই । তাই এ নিয়ে আলাদা দুঃচিন্তা করবেন না। এস এস সি আর এইচ এস সি তে যেসব গল্প, উপন্যাস , নাটক পড়েছিলেন সেসব চরিত্রের নাম গুলো অন্তত মনে রাখুন । বাংলাতে ভাল প্রস্তুতি নিতে চাইলে তাই আমি বলব যারা ২০১১ পর্যন্ত এস এস সি দিয়েছেন তাদের ক্লাস ৯-১০ এর বইগুলো পড়ে নেয়াটা খুব ই উপকারি (পরের বইগুলো কে কী কী পরিবর্তন আনা হয়েছে আমি আসলে তা ভাল জানি না )।

 

এরপর আসব বাংলা ব্যকরণ, এ বিষয় টি আমার খুব ই প্রিয় ।আপনার জন্য দাওয়াই হল এবারও সম্ভব হলে নীল ক্ষেত থেকে ক্লাস ৯-১০ এর বাংলা ব্যকরণ বই টা কালেক্ট করেন । কথা দিচ্ছি বেস্ট প্রিপারেশন হবে । আর আরেকটা ইস্যু হল বাজারের গাইড গুলোর মধ্যে সমাস, প্রবাদ প্রবচন, এক কথায় প্রকাশ, বাগ ধারা , বাক্য পরিবর্তন এসব নিয়ে অনেক কন্ট্রাডিকশন থাকে, বেস্ট হল বোর্ডের বই ফলো করা অথবা বাংলা একাডেমির কোন বই ফলো করা। তাতে ভুল শেখার সম্ভাবনা কমে যাবে । আর অদি নাইই পারেন অনেক বাংলা ব্যকরণের বই আছে বাজারে । সেগুলো একটু ঝালিয়ে নিন, বিশেষ করে সমাস, কারক নির্ণয়, সন্ধি বিচ্ছেদ, পদক্রম, বিপরীত শব্দ, প্রায় সমোচ্চারিত ভিন্নার্থক শব্দ, বাগ ধারা, এক কথায় প্রকাশ, প্রকৃতি প্রত্যয়, সমার্থক শব্দ সব কিছুই আপনাকে জানতে হবে । ঘাবড়াবেন না, পড়ে যান ... আপনি যা পড়ে মএন রাখতে পারবেন না, মন কে সান্ত্বনা দিতে পারেন যে তা আসবে না ।

আসলে  আপনি একটু স্মার্ট হলে লাস্ট ৮-১০ টা বিসিএস এর প্রশ্ন দেখলেই একতা আইডিয়া পাবেন কোন টা কোন টা বেশি আসে কিংবা কোন টা থেকে কঠিন কিছু আসে । ও হ্যা, কখনও কখনও কিন্তু ইংরেজির বঙ্গানুবাদ কিংবা বাংলার ইংরেজিতে অনুবাদ আসে । তাই এজন্য আপনি গাইড গুলো দেখে আর আগের বছরের প্রশ গুলো থেকে ধারণা নিয়ে রাখতে পারেন ।

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

এতো গেলো প্রিলির গল্প রিটেনের গল্পে এখানে যোগ হবে রচনামূলক লিখনী , চিঠিপত্র লিখন , সারাংশ, সারমর্ম, ভাবসম্প্রসারণ টাইম লিখন ।

ধারাবাহিক: BCS প্রস্ততি ও সাধারণ আলোচনা – 5 (প্রস্ততির শুরুতেঃ) । BCS Written Exam Guide – 5 (At Beginning)

প্রস্তুতির শুরুতেঃ

বিসিএস এর প্রস্ততি কীভাবে নেবেন? এই প্রশ্নের উত্তর দেবার আগে কতগুলো সাধারণ জিনিস জানা দরকার?

১) প্রস্ততি বলতে কিসের প্রস্তুতি ? প্রিলি/লিখিত/ভাইভা ?

২) আপনি আসলে কেমন সময় দিতে পারবেন ?মানে আমার মত গাড়িতে করে এ জেলায় ও জেলায় ঘুরতে ঘুরতে পড়বেন নাকি প্রতিদিন নিয়ম করে ডায়েরি মেইনটেইন করে পড়তে পারবেন ?

৩) বিসিএস নিয়ে আপনার প্যাশন কোন লেভেলের ?

ক) এটাই আপনার একমাত্র লক্ষ্য

খ) বিসিএস হলে ভাল না হলেও আফসোস নেই

গ) আসলে আমি ব্যাংক বা অন্যান্য জায়গাতেও পরীক্ষা দিচ্ছি তাই এই প্রস্তুতি দিয়ে যদি অন্য কোথাও ও কাজ হয় ...

ঘ) আমি ভাই আসলে হ্যাডম দেখানোর জন্য দিতে চাই, যে এইটা কোন কিছু হইল (প্লিজ ভাই, আপনার দরকার নাই সময়, টাকা কিংবা অন্য কারও সিট নষ্ট করার, আমি অনেক মানুষের সাথে পরিচিত হয়েছি যারা বিসিএস এর জন্য জীবনের অনেক কঠিক সময় দাঁত কামড়ে পড়ে আছে বা ছিল, আজকের বাজারে যার চাকরি আছে আর যার নেই দুজনের সব দিক দিয়ে যে পার্থক্য তা নিয়ে কোন মশকরার দরকার নেই প্লিজ)

৪) আপনি কোন জব করছেন ? নাকি এখনও স্টুডেন্ট? নাকি জব পাচ্ছেন না বিসিএস কে টারগেট করে আগাচ্ছেন ?

৫)আপনার ব্যাকগ্রাউন্ড কি ? সায়েন্স,কমার্স নাকি আর্টস ? সায়েন্স হলে আপনি কি ডাক্তার , ইঞ্জিনিয়ার নাকি অন্য কোন প্রিন্সিপলের?

 

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

ধারাবাহিক: BCS প্রস্ততি ও সাধারণ আলোচনা – 4 (প্রারম্ভিকা – 4) । BCS Written Exam Guide – 4 (Introduction – 4)

এরপর বলব, বই পাঠ অভ্যাস নিয়ে । আমি সারাজীবন আমার ছাত্র ছাত্রীদেরকে বলেছি নানারকম বই পত্র পাঠ করতে, যারা কেবল তিন গোয়েন্দা নিয়ে থাকতে এদের বলেছি হুমায়ূন, সমরেশ, সুনীল পড়ে উপন্যাসের স্বাদ নিতে । যারা হুমায়ূনের পোকা তাদের বলেছি একটু বাইরের লেখক নিদেন পক্ষে কলকাতার বাংলা লেখক দের লেখনীতে চোখ দিতে । মুক্তিযুদ্ধ কিংবা বিগত শতকের রাজনৈতিক পরিবর্তন বা বড় বড় ঘটনার উপরে লিখা বই না হোক, কোন সঠিক তথ্য ও প্রমান সমৃদ্ধ লিখা পঠন অনেক জরুরি । সবথেকে বড় যে জিনিস আপনি যাকে গল্পের বই বলে তাচ্ছিল্য করছেন তা আপনাকে অনেক কিছু ওয়াইডলি চিন্তা করার সুযোগ তৈরি করে দেবে, আপনাকে কিছু সাধারণ জ্ঞান এনে দেবে এবং আপনি নিজে অনুভব করবেন আপনি মুক্ত হস্তে কিছু লিখার ক্ষমতাও অন্যদের থেকে বেশি রাখেন – সুতরাং বিশ্বিবিদ্যালয়ের জীবনের অলস সময় টা কেবল সিরিয়াল/ মুভি দেখে, পোকার খেলে, ফেসবুকে ছবি আপলোডিয়ে কাটাবেন না, কিছু সময় রেগুলার বইপত্র পাঠ করুন । আর বিসিএস এ সাম্প্রতিক সময়ে বিভিন্ন বইপত্রের সম্মন্ধে লিখাও প্রশ্ন হিসেবে আসছে বা আসবে, সুতরাং হেলা ফেলা করবেন না যেন এদিক টা ...

 

আজ আরেকটা শেষ জিনিস বলে এই পর্ব শেষ করি, আপনার ভূগোল জ্ঞান অনেক গুরুত্বপূর্ণ । আপনাকে আমি ক্রিসচিয়ানো রোনালদোর নাম বললে যদি কেবল রিয়াল মাদ্রিদ-ম্যানচেস্টার ইউনাইটেড আর ইরিনা শায়েকের কথা মাথায় আসে তাহলে হবে না ভাই ... আপনাকে পর্তুগাল নাম টা, এটা কোথায় অবস্থিত, ইউরোপে এটি কি ইউরো জোনের মাঝে আছে কিনা এগুলো জানাটাও আপনাকে এগিয়ে রাখবে । দেশ-রাজধানী-মূদ্রা এগুলোর নাম মুখস্ত রাখা ওল্ড সিস্টেমে খুব দরকারি ছিল, কষ্ট করে এসবের পেছনে খুব বেশি সময় দিয়ে মাথার চুল ছিড়বেন না প্লিজ । আপনাকে তাঞ্জানিয়ার নাম বললে আপনাকে বুঝতে হবে এটি কোন মহাদেশে, সুদানের কথা বললে সেখানের রাজনৈতিক কোন পরিস্থিতি কী সাম্প্রতিক সময়ে আলোচ্য কিনা জানা উচিত (আমাকে ভাইভা তে এখান থেকে প্রশ্ন করেছিল)। শুধু বিশ্ব ভূগোল না, আপনাকে যদি বলা হয় কানসাট কোন জেলায় ? আপনি মাথা হাতড়ালে হবে না। চাপাই নবাবগঞ্জের আম না হলে তো কেনেন না ... তাই দেশের কোন জেলার কোন স্থান কী কারণে বিখ্যাত এগুলোও  জানা উচিত ? ছোট্ট একটা বুদ্ধি দেই, আজ ই আপনার রুমের দেয়ালে একটা বাংলাদেশের আর একটা বিশ্ব মানচিত্র এনে সেটে দিন । প্রিয়াংকা চোপড়া/ টম হ্যাংক্স কিংবা হ্যারি পর্টার আর এমা ওয়াটসন কে তো দেখলেন অনেক দিন ই ... মাঝে মধ্যে মানচিত্র দেখে ধারণা নিতে ট্রাই করেন প্লিজ । ফলাফল বৃথা যাবে না, এই আমি গ্যারান্টি দিচ্ছি ।

বাংলাদেশ থেকে নৌপথে স্পেনে যাবার রুট টা কী ? এই প্রশ্ন কিন্তু ভাইভা বোর্ডে এসছে ... এখন আপনি কী সদরঘাট থেকে রওনা করবেন নাকি মংলা থেকে আপনি জেনে নিবেন । আর হ্যা, স্পেন কোন দিকে ? কোন মহাদেশে ? ওদের কোন বন্দরে আপনি নোঙ্গর করবেন ... ঘাটতে ঘাটতে শিখে নেবেন, কেমন ?

ধারাবাহিক: BCS প্রস্ততি ও সাধারণ আলোচনা – 3 (প্রারম্ভিকা – 3) । BCS Written Exam Guide – 3 (Introduction – 3)

এরপর আসি ইংরেজির জ্ঞান নিয়ে, আমাদের অনার্স লাইফে ইংলিশে শিক্ষাক্রম চলে অধিকাংশ ক্ষেত্রেই, তবু আমাদের ব্যাসিক দুর্বল যাদের তাদের টেন্স, পার্টস অফ স্পিচ, ভয়েস ন্যারেশন এগুলো নিয়ে কাজ করা উচিত। বিশেষত প্রিপজিশনের ব্যবহার, ভয়েস-ন্যারেশন এগুলো ঝালিয়ে নেয়া দরকার । সেন্টেন্সে ভুল শুদ্ধ বের করা, এপ্রোপ্রিয়েট ওয়ার্ড বের করা, আর্টিকেলের ভুল বের করা, সেন্টেন্স ট্রান্সফর্ম করা, ইডিওমস এন্ড ফ্রেজ এগুলো নিয়ে আপনাকে কাজ করতে হবে ...

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

ধারাবাহিক: BCS প্রস্ততি ও সাধারণ আলোচনা – 2 (প্রারম্ভিকা – 2) । BCS Written Exam Guide – 2 (Introduction – 2)

দ্বিতীয়ত, আপনি চাপা পিটাইতে কেমন পারেন ? ধরেন আপনাকে বলা হল ‘একুশ শতকে অর্থনৈতিক সমৃদ্ধি অর্জনে নারীর ভূমিকা’ ... এই বিষয়ে ২৫ মার্কের একটা রচনা লিখতে হবে । আপনি একবার ভাবুন এখনই কতখানি লিখতে পারবেন? আমি কয় পেজ তা বলছি না , মানে আপনি আসলে কী কী দিক তুলে ধরতে পারবেন ?

কোন তথ্য উপাত্ত কিংবা খুব প্রামাণ্য উদাহরণ দিতে পারবেন ? এ নিয়ে দেশে বা আন্তর্জাতিক সংস্থাগুলোর কোন প্রজেক্টের কথা বলতে পারবেন ? বাংলাদেশের পরিপ্রেক্ষিতে এর সম্মন্ধে কতটুকু জানেন ?

এই উদাহরণ টি দিয়ে আমি আপনার মধ্যে চিন্তা জাগাতে চাচ্ছি আসলে আপনি কতটুকু কী জানেন এবং তা থেকে আউটপুট কতটুকু দিতে পারবেন ? মএন রাখবেন আপনি ডাক্তার বা ইঞ্জিনিয়ার যদি হয়ে থাকেন, শেষ ৪-৫ বছরে যা উত্তর করেছেন সব টু দ্যা পয়েন্ট এবং অনেক ক্ষেত্রে আপনার নিজের বলার কিছু ছিল না, রোগের সিম্পটম কিংবা ম্যাথমেটিক্যাল ক্যালকুলেশনে ইনিয়ে বিনিয়ে কিছু করার নেই তেমন । কিন্তু এখানে (রিটেনে) আপনাকে অনেক ইনাতে বিনাতে হবে, আমি চাপা পিটানোর কথা বলছি, খারাপ ভাবে নেবেন না, একটা জিনিস কে আপনি তাত্ত্বিক ও ব্যবহারিক বিশ্লেষণ কতখানি করতে পারবেন – এটা অত্যন্ত গুরুত্বপূর্ণ ।

তৃতীয়ত, আপনি যদি আপনার বিশ্ববিদ্যালয় জীবনে স্কুল-কলেজের পোলাপান মানুষ করার মহান সেবার ব্রতী হয়ে থাকেন ( দুর্জনেরা ইহাকে বলে টিউশানি 😛 )

তবে আপনার জন্য কিছুটা প্লাস পয়েন্ট থাকছে, আপনি হয়ত জ্যামিতি, ত্রিকোণমিতি কিংবা বীজগণিত একেবারে ভুলে যান কি কিংবা দেখা মাত্র আপনার মাথায় আসবে, বেগ পেতে হবে না । তবে হ্যা, সরল সুদকষা কিংবা চৌবাচ্চার পাটিগাণিতিক সমস্যাগুলো আপনাকে সমস্যাগ্রস্ত করতে পারে, তবে আপনি খুব সামান্য চেষ্টা করলেই সেগুলো সমাধান করতে পারবেন (আক্ষরিক অর্থেই সায়েন্স ব্যাকগ্রাউন্ডের ছাত্রছাত্রীরা কিছু প্র্যাক্টিস করলেই পারবেন, এ নিয়ে ঘাবাড়ানোর কিছু নেই)।

যারা অনেক দিন টাকা পয়সা ছাড়া আর কিছু গোনেন নাই , মানে ম্যাথ একেবারে অচর্চিত, তারা কিছুদিন সময় দিবেন ম্যাথ গুলোতে (বিগত বছরের প্রশ্ন দেখুন, অনেক বই পত্র আছে যা নিয়ে আমি পরের লিখায় লিখব)।কেননা, আপনার ভাল কোন ক্যাডার পেতে ম্যাথ আপনাকে অনেক অনেক এগিয়ে রাখবে, ট্রাস্ট মি ।

ধারাবাহিক BCS প্রস্ততি ও সাধারণ আলোচনা – ১ (প্রারম্ভিকা) । BCS Written Exam Guide – 1 (Introduction)

প্রারম্ভিকাঃ

বিসিএস এ প্রস্তুতির জন্য আপনাকে নিজেকে জিজ্ঞাসা করে দেখতে হবে কয়েকট প্রশ্ন এবং বিবেচনায় আনতে হবে কিছু সাধারণ বিবেচ্য বিষয়

১) আপনার সাধারণ জ্ঞানের পরিধি কতখানি ?

২) আপনি যেকোন বিষয়ের উপর মুক্ত ভাবে কতখানি বিশ্লেষণ করে লিখতে জানেন? ( বর্তমান সিস্টেমে এই ফ্রি হ্যান্ড রাইটিং কোয়ালিটি টা খুব খুব গুরুত্বপূর্ণ আগেই বলে রাখি)

৩) আপনার ছোট বেলার ম্যাথ গুলো কি মাথায় আছে নাকি ভুলে গেছেন ?

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

৫) আপনি বই পত্র কেমন পড়েন ? মানে শুধু কী জাফর ইকবাল- হুমায়ূন আহমেদ-সুনীল নাকি আরও বই পত্র পড়বার অভ্যাস আছে আপনার ? বিশেষত ১৯ কিংবা ২০ শতকের রাজনৈতিক নানা ঘটনা প্রবাহ, রাজনৈতিক পট পরিবর্তন, বাংলাদেশ ও ভারত উপমহাদেশের রাজনৈতিক ইতিহাস এই বিষয়গুলোতে আপনার দখল কেমন ? আমি বলছি না হাফেজ হতে হবে , তবে ন্যূনতম জ্ঞান অন্তত থাকতে হবে যেন লর্ড কর্নওয়ালিশ কিংবা হেনরি কিসিঞ্জার নাম গুলো আপনার কাছে এলিয়েনের নাম না লাগে ... (উদাহরণ দিলাম মাত্র)

৬)ইংরেজিতে গ্রামারের সাথে সাথে আপনাকে ভোকাবুলারিও বাড়াতে হবে ।

আপনি জিয়ারি তে ৩৫০০-৫০০০ ওয়ার্ড মুখস্ত করে আসছেন তাই বলে ভাববেন না আপনি সব শব্দের অর্থও জানেন অনেকে বহুল প্রচলিত ও ব্যবহৃত ৩০০-৫০০ শব্দের অর্থ অ ব্যবহার জেনেও অনেক ভাল করছে (জানার শেষ নাই ভাই, তাই বি স্মার্ট)

৭) সাম্প্রতিক টেকনোলজি গুলোর ব্যাপারে আপনাকে বকলম হলে চলবে না মোটেই ।আমি এমন অনেক কেই দেখেছি যাদের অনার্সে রেজাল্ট অনেক ভাল কিন্তু একেবারে বই কিংবা কারিকুলামের বাইরে কিছুই জানেন না... এটা কিঞ্চিত আপনাকে পেছনে ঠেলে দেবে, কারণ আপনি সব কিছু কিন্তু বই এ পড়ে শিখবেন না ... এটাই স্বাভাবিক । কিছু জিনিসে আপনার জ্ঞান আসবে বাস্তব অভিজ্ঞতা থেকে ...

 

এখন আসি উপরের প্রশ্নগুলোর উত্তরে,

প্রথমত, অনেকে আছে ছোটবেলা থেকেই সংবাদ পত্রের অনেক সাধারণ জিনিসও পড়েন যেমন মধ্যপ্রাচ্যে অচলাবস্থা, ইউরোপীয় ইউনিয়ন কিংবা জাতিসংঘের কোন কার্যক্রম, আমেরিকা/চীন/রাশিয়া/জাপান/যুক্ত্রাজ্য/ভারত/পাকিস্তান এসব দেশের কোন উল্লেখযোগ্য পট পরিবর্তন, তাদের নির্বাচন, অর্থনীতি, পররাষ্ট্র নীতি – এসব নিয়ে সম্যক জ্ঞান রাখেন । আবার কোন দেশের বিজ্ঞানিকে কী কাজের জন্য নোবেল দেয়া হচ্ছে? কোথায় কোন বড় দুর্ঘটনা ঘটেছে, কোথাও কোন নতুন প্রযুক্তি আসল, খেলাধূলার সাধারণ আপডেট গুলো রাখেন- এমন সব মানুষের জন্য সাধারণ জ্ঞান এ ভাল করা বেশ সোজা কাজ, তাদের এফোর্ট টা কম দিলেও তারা খারাপ করেন না।

আপনি তাই বিনোদন/ক্রীড়া জগত আর সাজ সজ্জা নিয়ে পত্রিকার পাতায় মগ্ন থাকলে সেটা খুব বেশি কাজে আসবে না ।

 

(চলবে ...)

BCS মৌখিক পরীক্ষা প্রস্ততি (২) : Part -2: BCS (Govt. Job) Exam Interview Preparation

হাতে আর খুব বেশি দিন সময় নেই, ইতোমধ্যে একদল এর ভাইভা এই শুরু হল বলে,

সংক্ষেপে তাই কিছু জিনিস বলে রাখি, কাজে আসবে আশা করিঃ

 

ভাইভার পোষাক ও পরিচ্ছদঃ

অবশ্যই ফরমাল ড্রেস আপ এ যাবেন, বলাই বাহুল্য, ছেলেদের জন্য শার্ট সাদা কিংবা হালকা রঙের হওয়া ভাল, সাথে কন্ট্রাস্টিং প্যান্ট । কাপড় চোপড়ে যতদূর সম্ভব ঝিক ঝাক চিক চাক স্টাইল পরিহার করে প্লেইন ধরণের কিছু বাছাই করুন । খেয়াল রাখবেন আপনার জুতার কালার আর বেল্টের কালার যেন একই হয় । মানে আপনি যদি কালো বেল্ট পড়েন তাহলে জুতো যেন কালো রঙের ই হয় (এটা বিসিএস/ পিএসসি রুল না, সাদামাটা ইন্টারভিউ নির্দেশিকা)। যদি আপনি দাঁড়ি রাখেন তাহলে তা যেন কোন বিশেষ স্টাইল করা দাঁড়ি না হয় , আর যদি ক্লিন শেভড হিসেবে সাচ্ছন্দ্যবোধ করেন তাহলে সেভাবেই যাবেন । খোঁচা খোঁচা কিংবা স্টাইল করা চিপ দাঁড়ি গোফ নিয়ে যাবেন না, এই নিয়ে কথা শোনার কিংবা আপনার অবমূল্যায়ন হবার ভাল সম্ভাবনা আছে । চুলের পারিপাট্যও আবশ্যক, তবে আপনার মাথায় টাক পড়ে গেছে কিংবা চুল সাদা হয়ে গেছে এ নিয়ে ঘাবড়াবেন না 😉

হ্যা, যদি আপনার ভাইভা শীতের মধ্যে হয় ট্রাই করবেন ব্লেজার/ ফরমাল কোর্ট পরিধান করে যাবেন, বিশেষত যাদের প্রথম চয়েস ফরেন এফেয়ার্স ।এই পরামর্শ টা নিজের অভিজ্ঞতা থেকে দেয়া, আমার ভাইভা বোর্ড ছিল ওয়াজেদ আলী স্যারের বোর্ড । আমাকে ছিলে কেটে লবণ লাগাতে লাগাতে প্রায় যখন শেষ অবস্থা, আমাকে বললেন, “ তোমার attire তো ঠিক নাই, আসছ ফরেন এফেয়ার্স ফার্স্ট চয়েস দিয়ে, অথচ স্যুট টাই পড় নি কেন?”

উল্লেখ্য, আমার ভাইভা ছিল ৭ এপ্রিল, চৈত্রের দাবদাহের মধ্যে, আমার স্কিনে সমস্যার কারণে গরম সহ্য করতে পারি না, আমি যে পোশাকে বাসা থেকে ভাইভা বোর্ডে গিয়েছিলাম, বাইরে দাঁড়িয়ে গরমে সেদ্ধ হয়ে সেই শার্ট চেঞ্জ করে ব্যাক আপ শার্ট পড়ে ভাইভা র রুমে ঢুকি । স্যুট কোর্ট টাই আমার ঐ সময়ে সহ্য হবার না তা তো আসলে স্যার বুঝবেন না L ।

মেয়েদের জন্য, আমার অভিজ্ঞতা বলে আপুদের অধিকাংশকেই শাড়ি পড়তে দেখেছি । কাউকে জমকালো সাজ, অলংকার এমন টি দেখি নি, শাড়ির রঙ কিংবা ধরণ ও কিন্তু বিয়ে বাড়ি র শাড়ি না J । তবে যেসব আপুরা পরীক্ষা দিতে যাবেন যদি শাড়ি তে কম্ফোর্ট ফিল না করে থাকেন তাহলে স্যালোয়ার কামিজ পড়ে যেতে পারেন, অনেকেই যায় এবং এটা খুব বড় ডিল না অবশ্যই ।

 

ভাইভার প্রাক প্রস্ততি  ঃ

আদর্শ লিপির কথা মনে হলেও সত্যি বলতে আপনার ভাল চেয়েই বলব, আপনার ভাইভার আগের রাতে খুব বেশি জাগবেন না, ৬-৮ ঘন্টা একটানা ঘুম খুব জরুরি, সকালে উঠে যাবেন, গোসল করে বের হওয়াটা ভাল, ফ্রেশ লাগবে।

অনেকে অনেক দূর থেকে আসবেন, সো আসার পথে যথাসম্ভব হ্যাসেল ফ্রি ভাবে যেভাবে আসা যায় ট্রাই করবেন, যেন কাপড় কুচকে না যায় কিংবা আপনাকে বিধ্বস্ত মনে না হয় ।

আপনি যত্ত আগেই আসেন না কেন আপনাকে পিএসসির সাম্নের রাস্তাতেই ৯ঃ৩০-৯ঃ৪৫ পর্যন্ত অপেক্ষা করে থাকতে হবে,আশপাশে কোথাও টয়লেট কিংবা চেঞ্জ রুম ও পাবেন না । সাথে করে কোন ছোট/ বড় ভাই/ বোন বা এসিস্ট্ করতে পারে এমন কাউকে আনলে ভাল হয় । আসতে আসতে ঐ দিনের ১-২ টা সংবাদ পত্র আনতে পারেন, শুধুমাত্র হেডলাইন গুলোতে চোখ বুলাবেন, দেখবেন কোন উল্লেখযোগ্য খবর আছে কিনা , কারণ বোর্ডে চট করে ধরে বসতেই পারে, অনেকে ধরেও ।

আর হ্যা, ঐ দিনের ইংরেজি তারিখ, বাংলা তারিখ, আরবী তারিখ জেনে যাবেন । এর থেকে সাথে সাথে জেনে নেবেন ঐ দিন টি কোন কারণে জাতীয়/ আন্তর্জাতিক কারণে বিখ্যাত কিনা । মানে হল, ঐ দিন কী কোন দিবস আছে কিনা। মোবাইলে ডাটা কানেকশন রাখবেন দয়া করে, পিএসসি র সামনে আপনাকে কেউ ওয়াই ফাই দিবে না, আপনি এসে দাঁড়িয়ে হুট করে একটা কিছু মনে হল যে আপনি ভুলে গেছেন কিংবা মনে পড়ছে না, চট করে গুগল করতে এই জিনিস টা লাগবে ।

 

পিএসসি তে ঢোকার পরঃ

সাড়ে নটার পরে আপনাদের সবাইকে পিএসসি তে ঢোকাবে, প্রথমে রিসিপসনে আপনি আপনার সাথে নেয়া ব্যাগ, মোবাইল, মানিব্যাগ এগুলো রেখে যেতে পারেন, কেবল মাত্র আপনার দরকারি কাগজ পত্র একটা ট্রান্সপারেন্ট ব্যাগ/ ফাইলে করে নিয়ে ঢুকবেন (এভাবেই ঢোকাবে ইনফ্যাক্ট)। কী কী কাগজ পত্র লাগবে আশা করি পিএসসি র ওয়েবসাইট মারফত জেনে গিয়েছেন (এই জিনিস টা কে অবহেলা করবেন না দয়া করে, কারণ এতোগুলো কাগজ ফিল আপ করতে হয়, আপনি ভাইভার ২ দিন আগে ঠান্ডা মাথায় অভিজ্ঞ কারও সাথে কথা বলে ফিল আপ করে নেবেন, এখানে এক আধটু ভুলের মাশুল আপনি হাড়ে হাড়ে পরে হলেও টের পাবেন, অনেকের রেজাল্ট আটকেও যায় কিংবা বাতিল ও হতে পারে, সো প্রতিটা ফর্ম খুব ভাল ভাবে ফিল আপ করবেন)।

যাহোক, রিসিপশনে আপনার সব কিছু রাখার পর একটা নিচ তলা রুমে সবাই বসে অপেক্ষা করবেন । কিছুক্ষণ পরে আপনাদের ১৫-২০ জন করে করে একটা গ্রুপ ধরে এক এক ফ্লোরের এক এক রুমে নিয়ে যাবে, আই মিন এক এক বোর্ডে । সেখানে আপনাকে আবারও চেয়ারে বসে অপেক্ষা করা লাগবে, রোলের সিরিয়াল ওয়াইজ আপনার ডাক পড়বে । সেখানে মেইন রুমে ঢুকার আগেই একজন ভদ্রলোক আপনার কাগজ পত্র গুলো নিবেন এবং চেক করে দেখবেন সব ঠিক আছে কিনা, সেগুলো আপনার ক্রম অনুযায়ী বোর্ড রুমে পাঠানো হবে ।

 

 

 

বোর্ড রুমে ঢোকার পরেঃ

নার্ভাস না হতে বলা বৃথা আসলে, প্রতি ১০ জনে ৮ জন ই নার্ভাস হবেন । তবু, গলার স্বর স্বাভাবিক রেখে ঢোকার অনুমতি নিয়ে রুমে ঢুকবেন, ঢুকে সালাম দিতে পারেন । বোর্ড প্রধান বা মেম্বার রাই আপনাকে বসতে বলবে, আপনি বসবেন কিন্তু খেয়াল রাখবেন যেন বসতে গিয়ে চেয়ারে কোন অনাকাংখিত শব্দ যাতে না হয় । অনেকের বাজে অভ্যাস টেবিলে হাত তুলে বসা ইন্টারভিউ এ , যেটা অনেকেই খুব বাজে চোখে দেখে, এটা পরিহার করবেন ।

 

এবারে বলি খুব সাধারণ ভাবে যে প্রশ্ন গুলো আপনাকে করবেই, কিংবা আপনি সম্মুখীন হবেন ই ...

# প্রায় সব ভাইভা বোর্ডে এবং সব ক্যান্ডিডেট কেই ইংরেজিতে জিজ্ঞাসা করবে, প্লিজ ইন্ট্রোডিউস ইউরসেলফ...

আপনাকে এখানে , “স্যার বাংলায় বলি ?” এই সুযোগ টাও নেই, আপনি টিকতে চাইলে ইংরেজিতে উত্তর দেবেন। অনেকে আপনাকে বলবে আমার অমুক তমুকে বাংলায় উত্তর দিছে, তার ক্যাডার হইছে , এমন গপ্পো ভুলে যান, যদি বা হাতে গোণা ১-২ জন এর হয়ও আপনি মনে রাখেন এই ইন্টারভিউ এ আপনার ইংরেজি তে উত্তর করা কিংবা নিজেকে সুন্দরভাবে রিপ্রেজেন্ট করার উপর আপনার ইম্প্রেশন তৈরি ৮০% নির্ভরশীল ।

তো কী বলবেন নিজের ব্যাপারে?

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

#এরপর আপনাকে প্রশ্ন করা হবে আপনার চয়েস নিয়ে , কেন এডমিন/ফরেন/ইকোনমিক/পুলিশ প্রথম চয়েসে দিয়েছেন...

# আপনি যে সাব্জেক্টে অনার্স/মাস্টার্স করেছেন সেটার সাথে আপনার চয়েসের সামঞ্জস্য কী ...

মানে আপনি পড়াশোনা করেছেন সিভিল ইঞ্জিনিয়ারিং এ, তো আপনি এডমিন হয়ে কী করবেন, বা আপনি ইঞ্জিনিয়ারিং ছেড়ে কেন এডমিন হতে চাইছেন ?

  • এই প্রশ্নগুলো খুব ই ভাইটাল, এটা দিয়ে সিম্পলি আপনি স্মার্ট না খ্যাত তা যাচাই হয়ে যাবে, ক্ষ্যাত লোকজন বলবে, ক্যাডারের রাজা এডমিন, অনেক সুযোগ সুবিধা আছে , সবাই সম্মান করবে –এই টাইপ কথা

আর যিনি স্মার্ট তিনি তার পড়াশোনা কিংবা কোন বিশেষ যোগ্যতার সাথে কিংবা কোন বিশেষ ইচ্ছার সাথে তার চয়েস কে কো রিলেট করে সুন্দর উত্তর করবেন ।

  • মনে রাখবেন, এই প্রশ্নটার উত্তর আপনি যত ইউনিক দিতে পারবেন আপনি ঐ চয়েসের বিষয়ভিত্তিক উত্তর কমে পেরেও ভাইভাতে ভাল মার্ক্স পাবার আশা করতে পারবেন ততটা ।

# অনেক বোর্ডে আপনাকে জিজ্ঞাসা করে কাবু করতে ট্রাই করবে, “তুমি পড়ছ এপ্লাইড কেমিস্ট্রি, তো তুমি ফরেন এফেয়ার্সে এসে কী করবা ? কেন তোমাকে গভমেন্ একজন কূটনৈতিক বানাবে ?”

এমন ভাবেই প্রশ্ন করবে যেন আপনি মস্ত অপরাধ করে ফেলেছেন- কুল থাকার ট্রাই করবেন এবং কোন প্রকার অভদ্রতা কিংবা অযাচিত কথা বলবেন না, ঠান্ডা মাথায় উত্তর করবেন,আবারও বলছি গত বাঁধা কথা না বলে স্মার্টলি উত্তর করবেন, যাতে আপনার উত্তর টা শুনে উনারা এটুকু বুঝে যে এই ছেলে/মেয়ে বুকিশ না ।

# আপনার জন্ম তারিখ টা খেয়াল করেন, এই তারিখে কোন বিখ্যাত /কুখ্যাত ঘটনা ঘটেছে কী ?

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

# আপনার দেশের বাড়ি কিংবা শিক্ষা প্রতিষ্ঠান এর ব্যাপারে, এগুলোর নামকরণের ব্যাপারে জ্ঞান রাখুন ।

ধরুন আপনার দেশের বাড়ি কুষ্টিয়ায়ে, কুষ্টিয়া কী জন্যে বিখ্যাত ? খালি তিলের খাজার জন্য ? লালন শা থেকে শুরু করে আর যা কিছু জানা দরকার জেনে নিন, আপনার চয়েস যদি এডমিন/পুলিশ হয়ে থাকে তো নিজ জেলা/থানার পুলিশ ও প্রশাসব প্রধানের নাম জানা টা ভাল ... জেলার নদ নদী, বিশেষ কী উতপন্ন হয় এগুলোও ...

আবার ধরেন আপনি গুরু দয়াল কলেজ থেকে পাস করেছেন, হু ওয়াজ দিস গুরু দয়াল ? মানে কার নামে কেন নামকরণ হলো এসব জেনে রাখবেন । ( আমাকে নটরডেম এর অর্থ, উতপত্তি, মিশন কী এসব নিয়ে জিজ্ঞাসা করেছিল)

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

একটা উদাহরণ বলি, বুয়েটের কোন ব্যাচের এক ভাইয়া র প্রথম চয়েস ছিল ট্যাক্স, তো তাকে তার নাম ধাম জিজ্ঞাসার পরে দেশের বাড়ি কোন নদীর তীরে জিজ্ঞাসা করল, উনি উত্তর দিলেন পদ্মা, এরপরে তাকে জিজ্ঞাসা করে বসলেন, পদ্মার দৈর্ঘ্য কত ? তিনি তো তা মুখস্ত করেন নাই... এরপরে সেটা না পারায় তাকে জিজ্ঞাসা করলেন, তো তাহলে পদ্মার কয়েকটা শাখা নদীর নাম বল, উনি শাখা নদী র নাম যা যা জানেন কার কোন তা শাখা না জেনেই বলতে লাগ্লেন, তো তাকে থামিয়ে দিয়ে প্রশ্ন কর্তা বললেন, তাহলে বল পুনর্ভবার দৈর্ঘ্য কত ? যে পদ্মার দৈর্ঘ্যই জানে না, যে পুনর্ভবা নদীর দৈর্ঘ্য কী করে জানে ? :v  তো এটাও পারলেন না, এরপর আরও কিছু নদী নিয়েই প্রশ্ন করলেন, ঐ ভাইয়া কিছুর উত্তর ই দিতে পারলেন না ... এদিকে প্রশ্ন কর্তা তো  বললনে, “ তুমি তো দেখি কোন প্রশ্নের উত্তর ই পারলে না” ...

এখন বলেন ঐ ভাইয়া কী বলবে, স্যার আমার প্রথম চয়েস ট্যাক্স, আপনি ট্যাক্স নিয়ে কিছু জিজ্ঞাসা করেন ... উনি চুপ করে রইলেন, বোর্ড প্রধান তার দিকে হতাশ দৃষ্টি দিয়ে চলে যেতে বললেন, ঐ ভাইয়া তো হতাশ, এ কেমন ভাইভা ??!! অথচ উনার সেই ক্যাডার প্রাপ্তি ঠিক ই ঘটেছিল ...

সো, আপনি আশা করবেন না আপনি ইয়ামেনের কোন শহরের চৌরাস্তার কী নাম তা জানবেন কিংবা মার্সিডিজ বেঞ্চের লাস্ট সিরিজের নামরকরণ ও আপনার জানা থাকাই লাগবে ...কিন্তু না জানা সিচুয়েশন টা কেও ঠান্ডা মাথায় হ্যানডল করুন ... কোন প্রশ্নের উত্তর দিতে গিয়ে রেগে যাবেন না আবার এমন ভাব ও ধরবেন না যে আমারে এইটা কী ধরে , কিছু হইল !!!

# আমি আগের পর্বে বলেছিলাম আপনাকে যে চয়েস দিয়েছেন কিংবা যে বিষয়ে পড়েছেন অনার্স, মাস্টার্সে সেটার পাশাপাশি আরও অনেক উদ্ভট কিছু জিজ্ঞাসা করতেই পারে , আপনি রেডি থাকবেন, আপনাকে হুট করে বলতে পারে গঞ্জ আছে বাংলাদেশের এমন কয়েকটা জেলার নাম বল ... কিংবা ধরেন একটা ট্রান্সলেশন কিংবা বানান ধরে দেখতে পারে, আপনি নাই পারেন কিন্তু রিএক্ট কীভাবে করেন ...

# আবার মনে করেন, আপনার এলাকা মুক্তিযুদ্ধে কোন সেক্টরের আন্ডারে ছিল, সেই সেক্টরের কমান্ডারের নাম, কবে স্বাধীন হয়েছে এগুলো তো খুব ই কমন প্রশ্ন ... আপনার জেলার কোন সাহিত্যিকের নাম, তাদের বিখ্যাত সাহিত্য কর্ম বা গান, কবিতা এগুলো জেনে যাবেন ...

 

# আপনাকে আরও জিজ্ঞাসা করতে পারে আপনার এক্সট্রা কারিকুলার এক্টিভিটিস কেমন ছিল, যদি গান কিংবা কবিতা আবৃত্তি করতে পারেন বা জানেন তাহলে তো ভালই । যদি ছবি তোলা শখ হয় তো সেটাও বলবেন, আবার আপনার কাজ সুন্দরি মেয়েদের ফটো তোলা এই টাইপ কথা বলে এসেন না 😛 খেলাধূলা নিয়ে আপনার আগ্রহ থাকলে তাও বলবেন, তারা কিছু প্রশ্ন ও করতে পারে ...

# আরেকটা খুব খুব গুরুত্বপূর্ন জিনিস হল মানচিত্রের সাথে আপনার পরিচয় কেমন ? রুমের ভেতরে দেয়ালে বড় করে একটা বাংলাদেশের আরেকটা বিশ্বের মানচিত্র লাগানো থাকে, আপনাকে হুট করে বলতেই পারে, “যাও গিয়ে পাবনার সাথিয়া উপজেলা টা দেখাও তো”

কিংবা এভাবেও বলতে পারে, মানচিত্রে দেখাও তো বাংলাদেশে সর্বোচ্চ বৃষ্টিপাত কোথায় হয় ?

দেশের মানচিত্রের সাথে তো বটেই বিশ্ব মানচিত্র নিয়েও জানবেন, আপনাকে বলতে পারে, নৌ পথে ভারত থেকে স্পেনে যাবার রাস্তা টা দেখাও... কিংবা ক্রেমলিন কোথায় ? রামাল্লা কোথায় ?

মানচিত্রে কুর্দিস্তান দেখাতে পারবা ? কিংবা আই এস এর বৃহত্তম ঘাটি টা কোন শহরে ?

এগুলো কিন্তু এক সাথে আপনার অনেক কিছু যাচাই করার প্রশ্ন, তাই যারা ফরেন এফেয়ার্স/এডমিন/পুলিশ প্রথমে চয়েস দিয়েছেন বাংলাদেশ অ আন্তর্জতিক মানচিত্র খুব ভাল করে শিখবেন ...

 

এতোক্ষণ যা আলোচনা করলাম মোটামুটি তা হল সব ক্যাডারের জন্য সাধারণ আলোচনা, এসব ছাড়াও যে এই ক্যাডার প্রথম বা দ্বিতীয় চয়েসে দিয়েছেন সেগুলোর ব্যাসিক যে প্রশ্ন গুলো সেগুলো শিখে যাবেন, বিশেষ করে আপনার পছন্দের ক্যাডারের পদ ক্রম, দেশে ঐ ক্যাডার সংশ্লিষ্ট সচিব/ মন্ত্রী/ উপ মন্ত্রীর নাম... ঐ বিষয়ের সংজ্ঞা, শ্রেণীবিভাগ ...এসবের জন্য প্রথম পর্বে বেশ কিছু বই সাজেস্ট করা ছিল, আশা করি পড়তে শুরু করেছেন J

 

সবাইকে আবারও শুভ কামনা । ধন্যবাদ  J

 

 

 

বিসিএস মৌখিক পরীক্ষা প্রস্ততিঃ ০১ । Part-1: Preparation Guide for BCS (Govt. Job) Interview in Bangladesh

স ম আজহারুল ইসলাম (সনেট)

৩৪ তম বিসিএস, এডমিন ক্যাডারে সুপারিশ প্রাপ্ত

 

৩৫ তম বিসিএস এর লিখিত পরীক্ষায় উত্তীর্ণ সবাইকে অভিনন্দন ।

খুব অল্প সময়ের মধ্যেই ৩৫ তম বিসিএস এর ইন্টারভিউ শুরু হতে যাচ্ছে । হাতে সময় কম , তাই এখন থেকেই প্রিপারেশন শুরু করা জরুরি ।

নিজের অভিজ্ঞতার আলোকে এবং পূর্ববর্তী ক্যাডার দের সাথে কথা বলে, বই পত্র ঘেটে যেটুকু জ্ঞান লাভ করেছি তার আলোকে কিছু দিক নির্দেশনা দেবার চেষ্টা করি ।

 

১) প্রথমত আপনি কি সাধারণ ক্যাডার এর জন্য টিকেছেন নাকি টেকনিক্যাল এর জন্য নাকি উভয়ের জন্যই ? আপনার রোলের সিরিয়াল কত ?

- সাধারণত বিসিএস এ প্রথমে ইন্টারভিউ শুরু হয় সাধারণ ক্যাডার যাদের তাদের, এরপর উভয় ক্যাডারদের এবং সবশেষে টেকনিক্যাল ক্যাডার হিসেবে চান্স পেয়েছেন যারা তাদের টা সবার শেষে ...

মানে ধরেন ৬ হাজার জন যদি লিখিত তে উত্তীর্ন হয়ে থাকেন তাদের মাঝে যদি জেনারেল ৩ হাজার , বোথ ২ হাজার, টেকনিক্যাল ১ হাজার জন হয়ে থাকে তাহলে আগে হবে প্রথম ৩ হাজার জনের (রোলের সিরিয়াল অনুযায়ী), এরপর ২ হাজার জনের , এরপর ১ হাজার জনের ।

এবং এখানে আপনি লিখিত তে কত ভাল করেছেন সে অনুযায়ী ডাকবে না, পিএসসি সাধারণত ১৫-২০ দিন পর পর ২ সপ্তাহের একটা লিস্ট দেয়, প্রতিদিন গড়ে ১৫০-১৮০ জনের ভাইভা হয় ।

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

ঘাবড়াবেন না, পিএসসি তালিকা দেবার পর অন্তত ৭-১০ দিন পরে আপনার ডাক পড়বে, যত আগে/পিছেই আপনার ক্রম হোক না কেন ...

২) আপনাকে প্রস্তুতি নেবার সময় দুইটা জিনিস মাথায় রাখতে হবেঃ

  • আপনি কোন ক্যাডার ফার্স্ট-সেকেন্ড-থার্ড চয়েসে রেখেছেন
  • আপনি কী জেনারেল/টেকনিক্যাল নাকি বোথ ক্যাডারে টিকেছেন ?

সাধারণত আপনি যদি প্রথমে যে চয়েস গুলো দিয়েছেন আপনার ভাইভা বোর্ডে প্রশ্ন হবে ,আপ্নাকে প্রশ্নকর্তা গণ তার আলোকেই জাজ করতে ট্রাই করবে । তাই যে বিষয়ে প্রথম চয়েস দিয়েছেন সেটার আলোকে খুব ভাল করে প্রস্তুতি নেন ...

৩) রিডিং ম্যাটেরিয়ালস কী কী লাগবে ?

- ধরে নিলাম আপনার প্রথম চয়েস বিসিএস এডমিন । আপনার সেজন্য মিনিমাম ৩টা জিনিস কালেকশনে রাখা উচিতঃ

  • বাংলাদেশ ও মুক্তিযুদ্ধের আদ্যোপান্তের উপরে একটা বইঃ

(নীলক্ষেতে অনেক রাইটারের বই পাওয়া যায়, অনেক প্রকাশনেরও, বিসিএস এর বই পত্র রাখে এমন যেকোন দোকানেই আপনি পাবেন)

এই বইগুলোতে মোটামুটি ৪৭ থেকে ৭১ এর ঘটনাপ্রবাহ, উল্লেখযোগ্য দিন তারিখ আন্দোলন, নেতাগণের অবদান, মুক্তিযুদ্ধের প্রতি বাইরের বিশ্বের অবস্থান ও তখন কার কী ভূমিকা ছিল এসব নিয়ে বিস্তারিত পাবেন, বংগবন্ধুর জীবনী, জাতীয় চার নেতার জীবনী ও ইনাদের ভূমিকা , মুক্তিযুদ্ধের সেক্টর সমূহ, সেক্টর কমান্ডার এই তথ্যগুলো এসব বইতে সুন্দরভাবে সাজানো পাবেন ।

  • ভাইভার জন্য ডাইজেস্টঃ

প্রফেসর্স/ওরাকল/কনফিডেন্স/এসিউরেন্স সহ অনেক গুলো প্রকাশনীই বের করে । আমার টা ছিল প্রফেসর্স (তাই বলে আমি এটাই কিনতে বলব না , আপনার যেটা ভাল লাগে কিনবেন) । এখানে আপনি সব গুলো ক্যাডারের জন্যই যা যা পড়তে হবে তার আইডিয়া পাবেন, অনেক সত্যিকারের ভাইবা র উদাহরণ দেয়া আছে ক্যাডার ভিত্তিক । যে যে সাধারণ প্রশ্নগুলো সব ক্যাডার চয়েসের ক্যান্ডিডেট কেই করতে পারে এখানে তা পাবেন ।

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

আপনার জেলা ধরেন সিরাজগঞ্জ, আপনার প্রথম চয়েস এডমিন, আপনাকে ধরে বসতে পারে আপনার জেলার এখন ডিসি কে ?কিংবা আপনি পুলিশ ক্যাডার দিয়েছেন প্রথমে, আপনার জেলার পুলিশ সুপারের নাম জানতে চাইতে পারে ... সেই জেলায় কয়টি থানা, কয়টি উপজেলা, আয়তন , উল্লেখযোগ্য নদ নদী এসব নিয়েও প্রশ্ন আসতে পারে ...

 

[একটা ছোট অভিজ্ঞতা শেয়ার করি, আমার দেশের বাড়ি ব্রাহ্মণবাড়িয়ায়, ৩৪ এর ভাইবা দেবার আগে শুনি কয়েকজন কে সেই জেলার সাংস্কৃতিক ব্যক্তিত্ব নিয়ে জিজ্ঞাসা করেছে । একজনের বাড়ি বরিশালে হওয়ায় তাকে বলেছে, “ আপনি জীবনানন্দ দাসের একটা কবিতা শোনান তো” ...উনার প্রথম চয়েস কিন্তু ছিল ফরেন ই  ( বোজেন তাহলে, আপনাকে Out of nowhere type যেকোন কিছু জিজ্ঞাসা করে বিপদে ফেলে দিতে চাইবে কিন্তু)

আমি আফসোস করেছি, জীবনানন্দ ব্রাহ্মণবাড়িয়ার কবি কেন হলেন না ?

যাহোক, ভাইবার আগের রাতে আমি তাই আমার এলাকার চেনাজানা কবি, আল মাহমুদের ‘তিতাস’ এর কিছু লাইন মুখস্ত করে যাই:P  । যাকগে আমাকে কোন কবিতা আবৃত্তি করতে হয় নি পরে ।]

  • আপনার প্রথম যে চয়েস তার উপরে বইঃ

আপনি ফরেন/ইকোনমি/সমবায়/পুলিশ/এডমিন যে বিষয়কেই প্রথম চয়েস হিসেবে দেন না কেন, ওরাকল পাবলিকেশন্সে ক্যাডার ভিত্তিক বই পাওয়া যায় (আরও প্রকাশনীর থাকার কথা)।

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

 

এছাড়াঃ

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

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

নীলক্ষেতে গত বছরের সালতামামি পাওয়া যাবে কারেন্ট এফেয়ার্সের, সেটা কিনে রাখবেন ।

প্রশাসন ক্যাডারের লোকজন লোকপ্রশাসনের উপরে অনার্সের খুব এলিমেন্তারি লেভেলের কিছু বই কিনতে পারেন যাতে করে কিছু সংজ্ঞা ও প্রশাসনিক কাঠামোর বিভিন্ন স্তরের সম্পর্ক ও ধারণা পেতে পারেন ।

ছোট্ট একটা সংবিধানের বই কিনতে পারেন, কিছু গুরুত্বপুর্ণ ধারা ও অনুচ্ছেদ যাতে শিখে নিতে পারেন ।

আর সবার জন্য কমন হল প্রতি মাসের কারেন্ট এফেয়ার্স টা পড়া, সাথে পত্রিকা পড়বেন । সম্ভব হলে রোজ বাংলা ইংরেজি দুটোই, যদি বা রোজ দুটাই সম্ভব না হয় (অনলাইনে পড়তে পারেন)অন্তত সপ্তাহে একদিন ডেইলি স্টার/ ইন্ডেপেন্ডেন্ট পড়তে পারেন ...

যারা প্রথম চয়েস ফরেন এফেয়ার্স দিয়েছেন তারা ডায়েরি মেইন্টেইন করুন, সাম্প্রতিক সময়ের যেকোন বড় দুর্যোগ, যুদ্ধ, সন্ধি চুক্তি, বড় উপলক্ষ্য, কোন সামিট এসবের ব্যাপারে নোট করে রাখুন ।

আর হ্যা, সব সময় ই বলে এসেছি, বিসিএস এর পড়াশোনা র কোন বাধাধরা সীমা পরিসীমা নেই, এখানে আপনাকে কত খানি পড়তে হবে তার চেয়েও গুরুত্বপুর্ণ কতখানি ছাড়তে হবে, কারণ আপনি যা জানছেন তা তো মাথায় রাখা চাই তাই না ?

আর যা জানছেন তাকে ভাইভা বোর্ড পর্যন্ত নিয়ে যাবার চর্চার উপায় হল আলোচনা করা, ২-৩ জন মিলে অনলাইনে হোক, ফোনে হোক আর কোন মুখমুখি আড্ডায় হোক আলোচনা করুন, নিজেদের ডায়েরি শেয়ার করুন, নোট করে রেখেছেন যা তাকে একত্রিত করুন ।

ইংরেজিতে কথা বলার অভ্যাস গড়ে তুলুন (এটার উপর ভাইবা তে আপনার সফলতার হার ৬০% নির্ভর করে, মনে রাখবেন, এ নিয়ে বিস্তারিত আলোচনা করব)। আপনার চেহারা সালমান খান/ হৃত্বিকের মতন না হোক, আপনার বাচন ভংগিতে সৌন্দর্য থাকুক, কথা বা উচ্চারণে কোন জড়তা কোন আঞ্চলিক টান কিংবা কোন বিশেষ শব্দ/ বর্ণ উচ্চারণে দুর্বলতা থাকলে এই সময় টা তে কাটিয়ে উঠুন । আর এসবের জন্য আপনাকে পড়লেই হবে না দরজা জানালা আটকে, আলোচনা করুন । দরকারে ইউটিউবে খুব ভাল কোন বক্তার চোখ মুখের অভিব্যক্তি দেখুন, ইন্তারবিউ এর বডি ল্যাঙ্গুয়েজ গুলো অনুসরণ করতে ট্রাই করুন । আপনার মুখে অযাচিত গাম্ভীর্য কিংবা ভয়ার্ত ভাব দূর করুন । আত্মবিশ্বাসী হোন ।

মনে রাখবেন , এখানের এই ২০০ মার্ক্স আপনার জ্ঞান যাচাই এর জন্য না, আপনার স্মার্টনেস, আপনার কনফিডেন্স, আপনি কতটা সুন্দর সিচুয়েশন হ্যান্ডেল করতে পারেন, কতটা সুন্দর করে নিজের জানা কিঙ্গাব অজানাটাকেই উপস্থাপন করতে পারেন সেটার পরীক্ষা, ট্রাস্ট মি ।

এসব নিয়েই আরো আলোচনা হবে, আপাতত রিডিং ম্যাটেরিয়াল গুলো কালেক্ট করে আসুন পড়তে বসা যাক ।

ডিএনএন ৭.৪ ডেভলপার কুইক স্টার্ট

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

 

ডিএনএন ৭.২ ডেভলপার কুইক স্টার্ট পেজ এমন রিসোর্স হিসেবে ব্যবহৃত হয় যা কিনা ডিএনএন এক্সটেনশন ডেভলপারদের ডিএনএন ৭.৪.০ এর সর্বশেষ সুবিধাদি পেতে সাহায্য করে।

 

ডিএনএন প্লাটফর্ম ৭.৪এর ভূমিকা

জো ব্রিঙ্কম্যানের Introducing DNN Platform 7.4 blog এ৭.৪এর নতুন সংযোজনগুলো নিয়ে আলোচনা করা হয়েছে। এর কয়েকটি হল,

  • Workflow & Versioning API
  • Multi-language settings
  • Improved HTML5 support

এখান থেকে hereডিএনএন হ্যাংআউটের একটি ভিডিও দেখতে পারেন যেখানে ৭.৪এর কিছু সংযোজন, বিশেষ করে Workflow API সম্পর্কে আলোচনা করা হয়েছে।

 

বাড়তি রেফারেন্স

Implementing Workflow in a Custom DNN Module

 

ডিএনএন ৭.৪.০ তে কীভাবে ইউজার সার্চ ইনডেক্সিং ডিজেবল করা যায়

আস প্রাসাদের How to disable User Search Indexing in 7.4.0 blogতে ডিএনএন ৭.৪.০ তে ইউজার সার্চ ইনডেক্সিং ডিজেবল করার ধাপগুলো সহজভাবে দেখানো হয়েছে। এবিষয়ে আরও জানতে দেখা যেতে পারে, https://dnntracker.atlassian.net/browse/DNN-5055

 

আপগ্রেডকৃত 51 degrees লাইব্রেরি

51 degrees এর লাইব্রেরীর ইউজ ভার্সন 3.1.9.3 তে আপগ্রেড হয়েছে

লাইব্রেরীর লিঙ্ক, library

 

ইভেন্ট লগে স্ট্রাকচার যোগ করা যাতে সমস্যার গভীরে যাওয়া সহজ হয়

ইভেন্ট লগ আরও বেশি ব্যবহারযোগ্য করার জন্য পিটার ডঙ্কার এতে কিছু কন্ট্রিবিউট করেছেন। তাঁর ব্লগ পড়ে দেখতে পারেন এখানে, here

  • Added table Exceptionsঃ এটি কোনও ব্যতিক্রমী ক্ষেত্রের ম্যাসেজ, stacktrace, ইত্যাদি স্টোর করে।
  • Added table ExceptionEventsঃBasePortalException ক্লাসে পাওয়া ব্যতিক্রমী ক্ষেত্র স্টোর করে।
  • এছাড়াও উপরের দুটি টেবিলের EventLog এর সমন্বয়ের একটি ব্যবস্থা আছে

 

PortalSettings এপিআইএর উন্নতি সাধন

IPortalSettingsController যোগ করে ইন্টারফেসের প্রয়োগের দিকে নজর দিতে হয় যেন PortalSettings ক্লাস সচল হওয়ার সাথে সাথে বিজনেস লজিক সম্পৃক্ত হয়।

এটি আমাদের এসব মেথড পরীক্ষা করে দেখার সুবিধাও দেয়।

 

সার্চ এনহেন্সমেন্টে বাড়তি উপায় সংযোজন

  • লুসেনা সার্চে ইউজারনেম, ইমেইল ও IsSuperUser সংযোজন
  • এটি নিশ্চিত করা যে এডমিনিস্ট্রেটর ও সুপারইউজারদের মাধ্যমে সার্চযোগ্য
  • সার্চের জন্য অতিরিক্ত কিছু পন্থা ব্যবহার
  • এডভান্সড সার্চের জন্য অতিরিক্ত কোয়েরিস্ট্রিং প্যারামিটার সংযোজন

 

ডিএনএনকে এইচটিএমএল৫এর অনুবর্তী করা ও অপ্রচলিত মেটা ট্যাগ বর্জন করতে কিছু কাজ

অপ্রচলিত মেটা ট্যাগ বর্জন করতে এখানে দেখুন, Removed obsolete meta tags আর ডিএনএনকে এইচটিএমএল৫এর অনুবর্তী অবস্থায় পেতে দেখা যেতে পারে, Ensure DNN is HTML 5 compliant

 

সাইট সেটিংএর জন্য মাল্টিল্যাঙ্গুয়েজ সাপোর্ট যোগ করা

মাল্টিল্যাঙ্গুয়েজ সাইট তৈরির সময় সম্প্রতি নির্বাচিত ভাষার টেক্সট প্রয়োজন। ডিএনএন ল্যাঙ্গুয়েজ স্পেসিফিক পেজের (এলএসপি) জন্য স্পেশাল পেজ ল্যাঙ্গুয়েজ স্পেসিফিকও হতে হয়। এবিষয়ে দেখতে পারেন এখানে, https://dnntracker.atlassian.net/browse/DNN-6137

 

নিচের সেটিং লোকালাইজেশন সাপোর্ট করে,

Portallocalization টেবিলে স্টোরকৃত, ডিএনএন ৫.৫ সংস্করণ থেকে লোকালাইজেশন সাপোর্ট করে আসছে।

  • Title
  • Description
  • Keywords
  • Copyright
  • Logo
  • Body Background
  • Splash Page
  • Home Page
  • Login Page
  • Registration Page
  • Search Results Page
  • 404 Error Page
  • 500 Error Page

 

SiteSettings টেবিলে স্টোরকৃত, ডিএনএন ৭.৪ সংস্করণ ও এর পরবর্তী সংস্করণে লোকালাইজেশন সাপোর্ট করে।

  • Site Skin
  • Site Container
  • Edit Skin
  • Edit Container
  • Icon Set
  • Redirect After Registration
  • Redirect After Login
  • Redirect After Logout

 

পার্সিয়ানের জন্য সাপোর্ট সংযুক্তি

এএসপি ডটনেটের কিছু ব্যাপার আছে যা পার্সিয়ানের সাথে কাজ করে। কমিউনিটির একজন সদস্য এবিষয়ে কিছু কোড কন্ট্রিবিউশন এটি সমাধান করেছে, এখান থেকে contribution বিষয়টি দেখা যেতে পারে। আর পুরো বিষয়টি সম্পর্কে আলোকপাত করা হয়েছে এখানে, https://dnntracker.atlassian.net/browse/DNN-6148

 

বিবিধ পারফর্মেন্স পরিবর্ধন

এবিষয়ে গুরুত্বপূর্ণ তথ্যের জন্য দেখুন,

 

এইচটিএমএল মডিউল ইউএক্স অপটিমাইজেশন

এইচটিএমএল মডিউলের জন্য ইউএক্স রিফ্যাক্টরড হয়েছে, মূলত কমিউনিটির অবদানে। কিছু গুরুত্বপূর্ণ অবদান হল,

  • বাটনকে নিচের নির্ধারিত স্থানে স্থাপন করা হয়
  • পপআপের স্ক্রলবার কখনো দেখানো হয় না
  • পাবলিক ইনফরমেশনকে "Direct publish" এর জন্য লুকিয়ে রাখা হয়
  • রিভিউ ও ভার্সন হিস্টোরি সেকশনকে কিছু বাটন দ্বারা প্রতিস্থাপন করা হয়
  • Basic / rich টেক্সট বো রেডিওস বাটনকে combox এর মত বাটন লাইনে রাখা হয়।

 

আরও বিস্তারিত তথ্য ও কিছু স্ক্রিনসটের জন্য দেখুন এখানেঃ jira issue

 

নাল স্ট্রিংকে সাপোর্ট দেয়ার জন্য HtmlUtils মেথড

ConvertToText(), ConvertToHtml() এসব মেথড নাল স্ট্রিংকে প্যারামিটার হিসাবে গ্রহণ করে। ক্লাসকে আপগ্রেড করা হয়েছে তাই সব মেথড নাল স্ট্রিংকে সমর্থন করে।

 

পরিবর্তিত ডিফল্ট ট্রাষ্ট লেভেল ফুল

মাইক্রোসফট এখন আর ট্রাষ্ট লেভেলের উপর জোড় দেয়না তাই ডিএনএন ৭.৪ এর ইন্সটলেশনে এটি ডিফল্ট করা হয়েছে।

ClientAPI সোর্স সংযুক্তিঃ ClientAPI এর এরর সংশোধনের জন্য প্রজেক্টে সোর্স সংযুক্ত করা হয়েছে।

 

পেজ সেটিংএর মাধ্যমে রোবট মেটাট্যাগ ওভাররিড করা

পেজ সেটিংএর মাধ্যমে রোবট মেটাট্যাগ ওভাররিড করার জন্য সাপোর্ট সংযুক্ত করা হয়েছে,

এবিষয়ে বিস্তারিত জানতে দেখুন here

 

বেটার ড্রাগ এন্ড ড্রপের জন্য এইচটিএমএল মডিউল ব্যবহার

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

 

কোডমিরর এর ভার্সন ৪.৮ পর্যন্ত আপডেট হয়েছে

প্লাটফর্মের বিভিন্ন ক্ষেত্রে কোডমিরর ব্যবহৃত হয়, যেমন হয় থার্ড পার্টি মডিউলগুলোতে। এর প্লাটফর্ম ভার্সন ৪.৮ পর্যন্ত আপডেট হয়েছে।

 

দেশ ও অঞ্চল নিয়ন্ত্রণের উপর ভাল দক্ষতা

  • অটোকমপ্লিটের উপর ভিত্তি করে নতুন কান্ট্রি কন্ট্রোলের এডিশন
  • নিউ ইন্সটলেশনের জন্য ডিফল্ট হল নতুন কন্ট্রোল
  • নতুন রেজিওন কন্ট্রোল যাতে ড্রপডাউন ও টেক্সটবক্স দুটিই আছে, অর্থাৎ প্রয়োজনে তাদের জাভাস্ক্রিপ্টের মাধ্যমে রূপান্তরিত করা যাবে।
  • নতুন কৌশল ব্যবহারের ফলে রেজিওন লিস্ট পোস্টব্যাক ব্যতীত রিফ্রেশ হবে।

 

মডিউল ইন্সটলারে xsl ও xsltফাইল এক্সটেনশন এলাউ করা হয়

মডিউল ইন্সটলার কোডে xsl ও xsltফাইল এক্সটেনশন যোগ করা হয়েছে

“Use Email Address as Username" ম্যাসেজ উন্নত করা

এবিষয়ে বিস্তারিত জানা যাবে এখান থেকে, here

 

ডিএনএন ৭.৩ ডেভলপার কুইক স্টার্ট

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

 

ডিএনএন ৭.৩ ডেভলপার কুইক স্টার্ট পেজ এমন রিসোর্স হিসেবে ব্যবহৃত হয় যা কিনা ডিএনএন এক্সটেনশন ডেভলপারদের সর্বশেষ সংস্করণের (ডিএনএন ৭.৩.০) সুবিধাদি পেতে সাহায্য করে।

 

প্লাটফর্মের পারফর্মেন্স বৃদ্ধি পাওয়া

ব্রুস চ্যাপম্যানের ব্লগ (http://www.dnnsoftware.com/blog/evoq-content-73-speed-and-performance/evoq-content-7-3-speed-and-performance) ডিএনএন ৭.৩.০তে পারফর্মেন্স বৃদ্ধির উপর অনেক কাজ করেছে। যদিও পারফর্মেন্স বৃদ্ধি সবসময়ই ভাল তবুও এটি সাধারণত স্বয়ংক্রিয়ভাবেই হয়ে থাকে, ডেভলপারকে এটি নিয়ে খুব একটা চিন্তা করতে হয় না। যাই হোক, আমাদের পরামর্শ হল মডিউল ডেভলপারদের উচিৎ ডিএনএন ৭.৩.০ এর প্রেক্ষিতে তাদের কোড পর্যবেক্ষণ করে নেয়া, যাতে ভুলক্রমেও কোনও সাব অপটিমাল প্লাটফর্ম কোডের উপর নির্ভর করে না থাকেন।

যদি কোনও মডিউল ডেভলপার জেকোয়েরি এপিআই ব্যবহারের পরিবর্তে ক্রুটিপূর্ণ রেজিস্ট্রেশনের উপর নির্ভর করে থাকে, তাহলে সেই মডিউল কাঙ্খিত ফলাফল নাও দিতে পারে। এধরনের ভুল সংশোধনের জন্য প্রয়োজনীয় স্ক্রিপ্ট রেজিস্ট্রেশনের জন্য জেকোয়েরি এপিআই ব্যবহার করা যেতে পারে।

 

ডিএনএনপ্যানেলস বৃদ্ধি

Vicenç Masanas এর কোড কন্ট্রিবিউশন এর মাধ্যমে ডিএনএনপ্যানেলস জেকোয়েরি প্লাগিন সমৃদ্ধ হয়েছে। বর্তমানে এটি

  • চ্যানেলের ইনিশিয়াল স্ট্যাটাস সেটিংএ সাহায্য করে,
  • কুকিজের স্ট্যাটাস সেটিং ডিজেবলের অপশন সাপোর্ট করে,
  • প্রয়োজনে ব্যবহারের জন্য expand() ও collapse() পদ্ধতি প্রয়োগের সুবিধা দেয়।

 

স্কিন প্যান হিসেবে এইচটিএমএল৫

স্কিনার ইঞ্জিনকে হিডার, ফুটার, মেইন, আর্টিকেল ও সংশ্লিষ্ট এইচটিএমএল৫ ট্যাগকে স্কিন প্যানের ভ্যালিড ট্যাগ হিসেবে ব্যবহারের ক্ষেত্রে সহায়তার উপযুক্ত করে পরিবর্ধিত করা হয়।পূর্বে কেবল div, p, ও td ট্যাগগুলোকে স্কিনে প্যান হিসেবে থাকত।

 

পোর্টাল লেভেল এসএমটিপি

পোর্টাল লেভেল এসএমটিপির জন্য সাপোর্ট সংযুক্ত হয়েছে Oliver Hine এর অবদানে। এই নতুন সক্ষমতার সাথে তাল মিলিয়ে কাজ করার জন্য এপিআইকে আপডেট করা হয়েছে।

 

ডিসপ্লে এডভারটাইজিং সাপোর্টের জন্য গুগল এনালাইটিক্স ট্র্যাকিং কোডকে সাপোর্ট করাঃ Will Strohl added নতুন display analytics Demographics and Interest reportsকে সাপোর্ট করে।

 

সেটিং/ কন্টেন্ট সহ সেভ/ রিস্টোর মডিউল

Torsten Weggenঅবদান রেখেছেন সেই সমৃদ্ধিতে, যা কিনা নিশ্চিত করে মডিউলের "settings"ও "content"এক্সপোর্টেড ও ইম্পোরটেড ।

 

ডিডিআর মেন্যু সল্যুশনের সাথে সংযুক্ত

Mark Allan (DDRMenu এর আবিস্কারক ও প্রধান ডেভলপার)এঁর সাথে আলোচনা করে আমরা সল্যুশনে সর্বশেষ ডিডিআর মেন্যু সংযোজন করেছি। এটি যেমন সহজ ডিবাগিংএর জন্য উপযোগী তেমনি Github এর মাধ্যমে বাগ স্থাপনও পরিবর্তন সাধনের ক্ষেত্রেও ব্যবহারকারীদের সুবিধা দেবে। Oliver Hine and Brian Dukes এঁরা ডিডিআর মেন্যুতে পরিবর্তন ও পরিবর্ধনের ক্ষেত্রে বিশেষ অবদান রেখেছেন।

এপিআই ক্লিনআপঃ ক্লিনআপের অন্তর্ভুক্ত বিষয় হল,

  • TestableXXXController থেকে XXXController class এ কপি মেথড।
  • নিশ্চিত করা যে XXXController, ServiceLocator প্যাটার্ন ব্যবহার করেছে।
  • নিশ্চিত করা যে সকল মেথড IXXXController ইন্টারফেসে এক্সট্র্যাক্ট করা হয়েছে
  • TestableXXXXontroller এর সকল ব্যবহারকে XXXController দ্বারা প্রতিস্থাপিত করা
  • TestableXXXController ক্লাসকে অপ্রচলিত রাখা

 

Log4Net ডায়গনোস্টিক বৈশিষ্ট্য

বিদ্যমান log4net সক্ষমতাকে পরিবর্ধন করা হয়েছে জটিল বিষয় সমাধানের "processid" and "appdomain"কে সাপোর্ট দেয়ার জন্য।

ডাইনামিক ইনভোকেশন সাপোর্ট করার জন্য dnnConfirm বৃদ্ধি করা

পূর্বে থাকা dnnConfirm জেকোয়েরি প্লাগিন পরিবর্ধন করা হয়েছে, এখন এটি যেসব বিষয় সাপোর্ট করে তা হল,

$.dnnConfirm(); //only show the confirm box with default content;

$.dnnConfirm({actionUrl:'http://www.dnnsoftware.com'}); //will redirect to dnn site if click yes button;

$.dnnConfirm({text: 'Hello World'}); //show custom text;

$.dnnConfirm({callbackTrue: function(){alert('click yes button');}}); //show the alert when click yes button.

 

আপডেট করা সাইট টেম্পলেটঃ

ডিফল্ট সাইট টেম্পলেট কিছু আপডেট করার মাধ্যমে উন্নত করা হয়েছে, যা এই সাইটগুলো থেকে আমরা জানতে পারব, https://dnntracker.atlassian.net/browse/DNN-5127

https://dnntracker.atlassian.net/browse/DNN-5219

 

51 Degrees

ডিভাইস সনাক্তকরণ বাই ডিফল্ট হবে নাঃ ৭.৩ভার্সনের ৫১ ডিগ্রিজ পূর্বের সংস্করণের চেয়ে অনেকগুন দ্রুত ও ছোট।

 

ডিএনএন ৭.২ ডেভলপার কুইক স্টার্ট

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

 

ডিএনএন ৭.২ ডেভলপার কুইক স্টার্ট পেজ এমন রিসোর্স হিসেবে ব্যবহৃত হয় যা কিনা ডিএনএন এক্সটেনশন ডেভলপারদের ডিএনএন ৭.২.০ এর সর্বশেষ সুবিধাদি পেতে সাহায্য করে।

 

ম্যাসেজিং ডিসপ্যাচ সিডিউলার

এই সিডিউলার টাস্ক ইউজারদের সেইসব ম্যাসেজ এবং নোটিফিকেশন সম্পর্কে মনে করিয়ে দেয় যাদের পড়া হয়নি। এখন, নতুন ভার্সনে আমরা এই সিডিউলারকে আরও বেশি কাস্টমাইজেবল ও লোকালাইজড করার মত করে পরিমার্জিত করেছি। এবিষয়ে আরও জানতে এখানে দেখা যেতে পারে, http://www.dnnsoftware.com/wiki/message-dispatch-scheduler

 

সাবস্ক্রিপশন এপিআই

সাবস্ক্রিপশন এপিআই খুব সরল ধরনের এপিআই যা ব্যবহারকারীদের কিছু নির্দিষ্ট উপাদান ও কনসেপ্ট সাবস্ক্রাইব বা আনসাবস্ক্রাইব করার সুবিধা দিয়ে থাকে। আরও জানতে দেখতে পারেন এখানে, http://www.dnnsoftware.com/wiki/subscription-api

 

জাভাস্ক্রিপ্ট লাইব্রেরী

জাভাস্ক্রিপ্ট লাইব্রেরী একটি নতুন এক্সটেনশন টাইপ, যা জাভাস্ক্রিপ্ট ফাইলকে প্যাকেজ করে। লাইব্রেরী এক্সটেনশনকে ডুপ্লিকেট স্ক্রিপ্ট ও ভার্সন কনফ্লিক্ট এড়িয়ে একটি সিঙ্গেল জাভাস্ক্রিপ্ট লাইব্রেরীতে রেফারেন্স করার সুবিধা দেয়। জাভাস্ক্রিপ্ট লাইব্রেরী সম্পর্কে আরও জানতে দেখা যেতে পারে, http://www.dnnsoftware.com/wiki/javascript-libraries

ডটনেট নিউক ৭.১ ডেভলপার কুইক স্টার্ট

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

 

ডিএনএন ৭.১ ডেভলপার কুইক স্টার্ট পেজ এমন রিসোর্স হিসেবে ব্যবহৃত হয় যা কিনা ডিএনএন এক্সটেনশন ডেভলপারদের ডিএনএন ৭.১.০ এর সর্বশেষ সুবিধাদি পেতে সাহায্য করে।

 

এডভান্সড ইউআরএল ম্যানেজমেন্ট

ফ্রেন্ডলি ইউআরএল প্রভাইডারের জন্য ডিএনএন ৭.১ একটি নতুন মোড সংযোজন করেছে। এটি এডভান্সড মোড হিসেবে পরিচিত আর এটি ইউআরএলের আচরণ ও ফিচারও পরিবর্তন করে ফেলে।

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

 

 

এডভান্সড ইউআরএলের জন্য আইআইএস ৭ রিকোয়ারমেন্ট

এডভান্সড ইউআরএল প্রভাইডার ব্যবহারের সময় সম্ভাব্য ক্রুটি এড়াতে

আইআইএস ৭এর একটা হটফিক্স দরকার (এবিষয়ে বিস্তারিত দেখুন, https://support.microsoft.com/en-us/kb/980368) বিশেষ করে এক্সটেনশনবিহীন ইউআরএলকে সাপোর্ট দেয়ার জন্য।

 

মেম্বারশিপ সিকিউরিটি এনহেন্সমেন্ট

ডিএনএন ৭.১.০ রিলিজের একটি বড় কারণ ছিল মেম্বারশিপ ও পাসওয়ার্ড সিকিউরিটির ক্ষেত্রে কিছু সংস্কার সাধন। এর অন্তর্ভুক্ত বিষয়গুলো হল,

 

এজিউর কম্পেটিবেলিটি চেক

ডিএনএন ৭.১.০ সনাক্ত করে কখন এটি এসকিউএল এজিউর ডাটাবেসে রান করে আর কখন নতুন এক্সটেনশন ইন্সটল করে, <azureCompatible> নামের মেনিফেস্ট ফাইল ইলিমেন্ট সন্ধান করে। যদি না পাওয়া যায় তবে যিনি এক্সটেনশন ইন্সটল করছেন তাঁকে একটি ওয়ার্নিং দেয়া হয়।এবিষয়ে আরও জানতে পারবেন এখানে, http://www.dnnsoftware.com/wiki/azure-compatible-extension-check

 

জেকোয়েরি ১.৯.১

ডিএনএন ৭.১ এখন জেকোয়েরি ১.৯.১ এর সাথে সমন্বয় করেছে, একারনে প্রথমে আমাদের স্কিন ও এক্সটেনশন টেস্ট করে নিতে হবে। জেকোয়েরি ১.৯.১ আপগ্রেডের জন্য এখানে দেখা যেতে পারে, http://jquery.com/upgrade-guide/1.9/

জেকোয়েরি ১.৯তে অনেক বড় ধরনের পরিবর্তন হয়েছে, ডিএনএন জেকোয়েরি মাইগ্রেট প্লাগিনও অন্তর্ভুক্ত করেছে,যা এখান থেকে পাওয়া যাবে, https://github.com/jquery/jquery-migrate/

 

ফাইল ম্যানেজমেন্টঃ সার্চ রিডিজাইনড

ডিএনএন ৭.১ এর আরও কিছু সোর্স দেখতে পারেন

 

ল্যাঙ্গুয়েজের ইম্প্রুভড ম্যানেজমেন্ট

নির্দিষ্ট পেজসমূহ (কন্টেন্ট লোকালাইজেশন)

এর প্রাসঙ্গিক কিছু ব্লগের ঠিকানা দেয়া হল,

 

ডটনেট নিউক ৬.২ ডেভলপার কুইক স্টার্ট

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

 

ডিএনএন ৬.২ ডেভলপার কুইক স্টার্ট পেজ এমন রিসোর্স হিসেবে ব্যবহৃত হয় যা কিনা ডিএনএন এক্সটেনশন ডেভলপারদের ডিএনএন ৬.২ এর সর্বশেষ সুবিধাদি পেতে সাহায্য করে। যদি কেউ ডট নেটের স্কিন অবজেক্ট, মডিউল বা প্রভাইডার ডেভলাপমেন্টে নতুন হয়ে থাকেন তাহলে তারা বিস্তারিত জানতে এই পেজ দেখতে পারেন, Module Development

ডিএনএন ৬.০তে নতুন, এরকম কিছু বিষয়ে রিভিউ দেখতে পারেন এই উইকি পেজ থেকে, DotNetNuke 6 Developer Quick Start

 

সার্ভিস ফ্রেমওয়ার্ক

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

 

কোন বিষয়গুলো আলাদা?

পারমিশন ডিফল্ট(Permission Defaults)ঃ বাই ডিফল্ট এএসপি ডটনেট এমভিসি২তে বিভিন্ন এট্রিবিউট ব্যবহার করে যেকোনো কিছুই যেকোনো কাউকে কল করতে পারে, পরে সিকিউরিটির ব্যবস্থা করতে ব্যবহৃত হয়। সার্ভিস ফ্রেমওয়ার্ক এর উলটো আচরণ করে, এতে সবকিছুর বাই ডিফল্ট হোষ্ট লেভেল এক্সেস লাগে।

 

ডিএনএন কন্ট্রোলার (DnnController)

সব সার্ভিসের ক্ষেত্রে ফ্রেমওয়ার্ক কন্ট্রোলার ডিএনএন কন্ট্রোলার থেকে আসে। এএসপি ডটনেট এমভিসি কনভেনশন কন্ট্রোলারের নাম ‘কন্ট্রোলার’ দিয়ে শেষ হয়।

 

পোর্টাল সেটিংস (PortalSettings)

কারেন্ট পোর্টালের সেটিংস।

 

ইউজারইনফো (UserInfo)

কারেন্ট ইউজার

 

একটিভ মডিউল (ActiveModule)

সেইসব সার্ভিসের জন্য সীমাবদ্ধ যারা নির্দিষ্ট মডিউলের কাছে দায়বদ্ধ।

 

ডিএনএন অথরাইজ এট্রিবিউট (DnnAuthorizeAttribute)

এএসপি ডটনেট এমভিসি অথরাইজ এট্রিবিউটের মতই তবে তবে কিছু বৈশিষ্ট্য বেশি আছে, আর ডটনেট নিউকের ইউজারদেরও কাজে লাগে।

 

স্ট্যাটিক রোল (StaticRoles)

অথরাইজ এট্রিবিউটের রোলের মতই।

 

রিকোয়ার হোষ্ট (RequiresHost)

হোষ্ট লেভেল এক্সেস পেতে একে ট্রু তে সেট করা লাগে।

 

এলাউএননিমাস (AllowAnonymous)

এননিমাস এক্সেস এলাউ করতে একে ট্রু তে সেট করা লাগে।

 

আইসার্ভিসরুটম্যাপার(IServiceRouteMapper)

এএসপি ডটনেট এমভিসিতে Global.asax এর Application_Start তে রুট নরমালি ম্যাপড হয়। সার্ভিস ফ্রেমওয়ার্কে ডটনেট নিউক ইনিশিয়ালাইজ হয়ে নতুন পোর্টাল তৈরি হওয়ার পরে রুট ম্যাপড হয়।

 

আইম্যাপরুট (IMapRoute)

আইম্যাপরুট ম্যাপরুট মেথডের অনেক ওভারলোড সমন্বয় করে, যা প্রকৃতপক্ষে প্রতিটা রুটকে ম্যাপড করতে সাহায্য করে। মিনিমাম ম্যাপরুটে যা দরকার হয় তা হল,

  • string moduleFolderName
  • string url
  • string[] namespaces
  • object defaults
  • object constraints

 

সিকিউরিটি

সার্ভিস ডেভলপারদের এডিশনাল সার্ভিস ফ্রেমওয়ার্ক সিকিউরিটি সম্পর্কে সতর্ক হওয়া উচিৎ। সার্ভিস ফ্রেমওয়ার্ক সিকিউরিটি সম্পর্কে জানতে পারেন এখান থেকে, Services Framework Security

 

যা কিছু নতুন সংযুক্ত হল

জার্নাল

জার্নাল ডটনেট নিউক সাইটে প্রদর্শিত হয়, এটি আসলে কোনও ব্যাক্তি বা দলের সাম্প্রতিক কাজের একটিভিটি স্ট্রিম।

ক্লায়েন্ট রিসোর্স ম্যানেজমেন্ট এনহেন্সমেন্ট

ডটনেট নিউক ৬.২তে ক্লায়েন্ট রিসোর্স ম্যানেজমেন্টে বেশ কটি এনহেন্সমেন্ট আছে, এবিষয়ে আরও বিস্তারিত জানতে ব্লগ দেখুন, blog

ট্যাবের ক্রমানুযায়ী ব্যবস্থাপনায় পরিবর্তন

ডটনেট নিউক ৬.২.০ পেজের ট্যাবে ক্রমানুযায়ী পরিবর্তন বিষয়ে দিকনির্দেশনা দেয়। এবিষয়ে আরও জানতে দেখতে পারেন, DotNetNuke 6.2 page hierarchies

ম্যাক্সিমাম রোলে পরিবর্তন

ডটনেট নিউক ৬.২.০পূর্ববর্তী বেশিরভাগ রোলের সীমাবদ্ধতা দূর করেছে।এবিষয়ে আরও জানতে দেখতে পারেন, DotNetNuke 6.2 maximum roles

প্রফাইল ভিজিবিলিটিতে পরিবর্তন

ডটনেট নিউক ৬.২.০ সিটিপি ওয়ান অনেক নতুন প্রফাইল আপডেটের সূচনা করেছে, এদের অনেকগুলো আবার ভিজিবিলিটি অপশনকে আপডেট করে। এদের মধ্যে আছে রিড অনলি প্রপার্টি ও এডমিন অনলি প্রপার্টি ইত্যাদি। আরও জানতে দেখুন, Blog on DotNetNuke profile changes in 6.2

 

ইউজার রিলেশনশিপের সত্ত্বাগুলো নিচের অংশে বিভক্ত হতে পারে,

  • রিলেশনশিপের টাইপ,
  • রিলেশনশিপের ক্লাস,
  • ইউজার রিলেশনশিপ ক্লাস,
  • ইউজার রিলেশনশিপ প্রেফারেন্স
  • ইউজার রিলেশনশিপ স্ট্যাটাস

 

ইউজার রিলেশনশিপ স্ট্যাটাস কয়েকটি বিভাজনে বিভাজিত হতে পারে,

  • নন(None)
  • ইনিসিয়েটেড(Initiated)
  • একসেপটেড(Accepted)
  • রিজেকটেড(Rejected)
  • ইগনোরড(Ignored)
  • রিপোর্টেড(Reported)
  • ব্লকড(Blocked)

 

রিলেশনশিপ বিজনেস এপিআই

  • InitiateUserRelationship
  • AcceptUserRelationship
  • RejectUserRelationship
  • ReportUserRelationship
  • IgnoreUserRelationship
  • BlockUserRelationship
  • RemoveUserRelationship

 

ইজি রেপার (Wrapper) এপিআই

  • AddFriend
  • AddFollower
  • GetFriends
  • GetFollowers
  • AddPortalRelationship
  • AddUserList

এসব ক্ষেত্রে কিছু ব্যাতিক্রম হয়ে থাকে,

  • InvalidRelationshipTypeException
  • UserRelationshipBlockedException
  • UserRelationshipDoesNotExistException
  • UserRelationshipExistsException
  • UserRelationshipForDifferentPortalException
  • UserRelationshipForSameUsersException

ইউজারইনফো ডট সোশ্যাল

  • নতুন বৈশিষ্ট্যের সোশ্যাল টাইপ UserSocial ইউজার ইনফো ক্লাসে যুক্ত হয়
  • UserSocial একটি হাই লেভেল ক্লাস যা ব্যবহারকারীর সোশ্যাল ডিটেইলস প্রকাশ করে
  • ফ্রেন্ড, ফলোয়ার, ফলো লিস্ট এই ক্লাসের অন্তর্ভুক্ত
  • এই UserSocial ক্লাস লিস্টকে লেজি লোড (lazy-loads)করে

এছাড়াও নিউ পোর্টাল ক্রিয়েশন ও আপগ্রেড করা ডটনেট নিউক ৬.২.০এর পরিষেবাগুলোর মধ্যে পরে।

গ্লোবাল ইনপুট ফিল্টারঃ

ডটনেট নিউক ৬.২.০তে এপিআই মেথড টেক্সট ফিল্টারিং অপশন সাপোর্ট করে। এরসাথে সমন্বিত থাকে রিপ্লেস/ রিমোভ ফাংশন।

এসএসএল অফলোডিং

ডটনেট নিউক ৬.২.০ এসএসএল অফলোডিং সাপোর্ট করে, সেই সাথে কোনও পেজকে নিরাপদ বলে আখ্যায়িত করার ক্ষমতাও দেয়।

সিকিউর ইউজার সেটিং

এটি স্টোরিং ভ্যালু ও রিট্রিভিং ভ্যালুর সমন্বয়ে সেটিং করা যায়।

 

ম্যাসেজিং ও নোটিফিকেশন

ম্যাসেজিং ও নোটিফিকেশনের জন্য ডটনেট নিউক ৬.২.০এর খুব উপযোগী এপিআই আছে। নোটিফিকেশনের সত্ত্বাগুলো হল,

  • NotificationType
  • NotificationTypeAction
  • Notification

 

NotificationTypes বিজনেস মেথডগুলো হল,

  • CreateNotificationType
  • DeleteNotificationType
  • GetNotificationType

 

NotificationTypeActions বিজনেস মেথডগুলো হল,

  • DeleteNotificationTypeAction.
  • GetNotificationTypeAction
  • GetNotificationTypeActions
  • SetNotificationTypeActions

 

Notifications বিজনেস মেথডগুলো হল,

  • SendNotification.
  • CountNotifications.
  • GetNotifications.
  • DeleteNotification.
  • DeleteNotificationRecipient
  • DeleteAllNotificationRecipients.
  • GetNotification.
  • GetNotificationByContext.

 

এগুলো ছাড়াও নতুন নোটিফিকেশন টাইপ একশন ক্রিয়েট করা, নোটিফিকেশন পাঠানো ও নোটিফিকেশন একশন প্রসেস করা সম্পর্কে জানতে দেখুন, Getting Started with DotNetNuke Services Framework

 

ইন্টিগ্রেটেড মডিউল

এগুলো নতুন ৬.২ এর সাথে সমন্বিত থাকে।এ সংশ্লিষ্ট লিস্ট নিচে দেয়া হল,

  • Active Forums 5.0
  • DotNetNuke Blog 5.0
  • DotNetNuke Contest 1.x
  • DotNetNuke Q&A 1.x

 

Node.js – কলব্যাক এর ধারণা। কলব্যাক কি? (Callbacks Concept)

মোহাম্মদ আব্দুল্লাহ

 

Callback কি ?

Callback একটি ফাংশনের জন্য একটি asynchronous সমতূল্য । একটি কলব্যাক ফাংশন একটি নির্দিষ্ট কাজের শেষে সাধারনত কল করা হয়ে থাকে । Node.js এ callback ফাংশন প্রচুর পরিমানে ব্যবহার হয়ে থাকে । Node.js এর সকল API গুলি এমনাভাবে তৈরী করা হয়েছে যাতে করে তারা callbacks সমর্থন করে ।

উদাহরণস্বরূপ, একটি ফাইল পড়ার ফাংশন ফাইল পড়ার পর আবার আগের জায়গায় ফিরে আসে যাতে করে পরবর্তী নির্দেশ execute করতে পারে । ফাইলটি পড়ার পর ফাইলের কন্টেন্ট প্যারামিটার হিসেবে callback ফাংশন এ আসবে । এই কারনেই Node.js এত জনপ্রিয় কারন এটি কোন ধরনের ফাংশন call ছাড়াই অনেক request প্রক্রিয়া করতে পারে ।

 

উদাহরণ (Blocking Code)

input.txt নামে একটি ফাইল তৈরী করুন এবং তাতে নিম্নের text টি copy/paste করে দিন ।


Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!


একটি javascript (main.js) এ নিম্নের কোড copy/paste করে দিন


 var fs = require("fs");

 var data = fs.readFileSync('input.txt');

 console.log(data.toString());
 console.log("Program Ended");

এখন main.js ফাইলটি রান করান


$ node main.js


নিম্নের আউটপুট দেখুন


Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!
Program Ended


 

 

উদাহরণ (Non-Blocking Code)

.txt নামে একটি ফাইল তৈরী করুন এবং তাতে নিম্নের text টি copy/paste করে দিন ।


Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!


 

 

main.js এ নিম্নের কোড copy/paste করে দিন


var fs = require("fs");

 fs.readFile('input.txt', function (err, data) {
        if (err) return console.error(err);
        console.log(data.toString());
 });
console.log("Program Ended");

 

 

এখন main.js ফাইলটি রান করান


$ node main.js


নিম্নের আউটপুট দেখুন


Program Ended
Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!


 

 

এই দুটি উদাহরণ Blocking এবং Non-Blocking Code ধারণার ব্যাখ্যা করে । প্রথম উদাহারনে, প্রথমে ফাইল পড়ে এবং ফাইল পড়া শেষ হলে বাকি কোড execute করে । অন্যদিকে দ্বিতীয় উদাহারনে ফাইল পড়া শেষ হওয়ার আগেই অন্যান্য কোড execute করে ফেলে । এইভাবেই Blocking কোড sequencely program রান করে থাকে অন্যদিকে Non-Blocking Code sequencely program রান করে না ।

http://www.tutorialspoint.com/nodejs/nodejs_callbacks_concept.htm

jQuery শুরু করা

আপনার ওয়েব পেজ এ jQuery যোগ করা

আপনার ওয়েব পেজ এ jQuery শুরু করার জন্য বেশ কিছু উপায় রয়েছে:

  • jQuery.com ওয়েব পেজ থেকে jQuery লাইব্রেরি ডাউনলোড করে
  • CDN যেমন-Google থেকে jQuery অন্তর্ভুক্ত করে।

 

jQuery ডাউনলোড করা

ডাউনলোড করার জন্য jQuery এর দুটি ভার্সন রয়েছে:

  • উৎপাদন সংস্করণ - এটি আপনার লাইভ (ওয়েবে সচল) ওয়েব সাইটের জন্য ছোট (সংক্ষিপ্ত) এবং সংকুচিত (compressed)
  • উন্নয়ন সংস্করণ - এটি ওয়েব সাইট পরীক্ষা এবং উন্নয়ন করার জন্য (সংকুচিত নয় এবং পাঠযোগ্য কোড)।

দুটি ভার্সনই jQuery.com থেকে ডাউনলোড করা যাবে।

JQuery লাইব্রেরি একটি একক জাভাস্ক্রিপ্ট ফাইল এবং আপনি এটি HTML <script> ট্যাগ দ্বারা প্রকাশ করতে পারবেন। (<script> ট্যাগ <head> এর ধারা ভিতরে হওয়া উচিত)


<head>
<script src="jquery-1.11.3.min.js"></script>
</head>

 

টিপস: ডাউনলোড করা ফাইলটি আপনার পেজের একই ডাইরেকটরি (ফোল্ডার) এ রাখুন।

 

আপনি কি ভয় পাচ্ছেন যে কেন <script> ট্যাগ এর ভিতরে type="text/javascript" টাইপ করি না!

HTML5 এ এর কোন প্রয়োজন নেই। HTML5 এ জাভাস্ক্রিপ্ট ডিফল্ট স্ক্রিপ্টিং ল্যাঙ্গুয়েজ এবং সকল আধুনিক ব্রাউজারে।

 

jQuery CDN

যদি আপনি JQuery ডাউনলোড এবং হোস্ট করতে না চান, তাহলে আপনি CDN (কনটেন্ট ডেলিভারি নেটওয়ার্ক) jQuery অন্তর্ভুক্ত করে দিতে পারেন।

Google এবং Microsoft উভয়ই jQuery হোস্ট করে।

Google অথবা Microsoft থেকে হোস্ট করতে চাইলে নিচের যেকোন একটি প্রয়োগ করুন :

Google CDN:


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

 

Microsoft CDN:


<head>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.11.3.min.js"></script>
</head>

 

 

Google অথবা Microsoft এ হোস্ট করার একটি বড় সুবিধা হচ্ছে:

এতোমধ্যে প্রচুর সংখ্যক ব্যবহারকারী Google অথবা Microsoft থেকে jQuery ডাউনলোড করেছে। ফলে আপনার সাইট দেখার সময় এটি এটা ক্যাশ থেকে লোড হবে, যা দ্রুত লোড হওয়ার সময় এর উপর প্রভাব ফেলে। অধিকাংশ CDN নিশ্চিত করে যে, যখন কোন ব্যবহারকারী কোন ফাইল এর জন্য অনুরোধ করবে তখন তা সবচেয়ে কাছের সার্ভার থেকে লোড হবে, যা দ্রুত লোড হওয়ার সময় এর উপর প্রভাব ফেলে।

ডিএনএন ৮.০ ডেভলপার কুইক স্টার্ট

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

 

ডিএনএন ৮.০ ডেভলপার একটি প্রক্রিয়াধীন বিষয় যেহেতু ৮.০.০ ভার্সনটি ২০১৫ এর নভেম্বরের আগে বাজারে আসছে না।

 

পরিকল্পনার অন্তর্ভুক্ত বিষয়

 

প্রধান সংস্করণ, এমভিসি মডিউলের উন্নতি, এইচটিএমএল সিঙ্গেল পেজ এপ্লিকেশন মডিউল(এসপিএ), ডাইনামিক কন্টেন্ট ক্রিয়েটর, ডট নেট ৪.৫ রিকোয়ারমেন্ট, প্লাটফর্ম ও ইউআই সেপারেশন।

 

ইস্যু লিঙ্ক

আলোচ্য ইস্যুর তালিকার লিঙ্ক নিচে দিয়ে দেয়া হল।

https://dnntracker.atlassian.net/browse/DNN-7725?jql=project%20%3D%20DNN%20AND%20fixVersion%20%3D%20%22Platform%208.0.0%22%20ORDER%20BY%20updated%20DESC%2C%20priority%20DESC%2C%20created%20ASC

 

অপরিহার্য যে বিষয়গুলোয় পরিবর্তন থাকতে পারে,

ডিএনএন ৮.০ এর জন্য ডট নেট ৪.৫ বা এরচেয়ে আধুনিক কোনও সংস্করণ লাগবে, কারণ এএসপি ডটনেট ওয়েব এপিআই ২.১.১ লাগবে এবং এমভিসি ৫.১.১ লাগবে কিছু ওয়েব এপিআই ভিত্তিক কাজের জন্য। মনে রাখতে হবে, newtownsoft.dll (json.net) ও ৪.৫.১১ তে উন্নীত হয়েছে।

 

ডিএনএন ৮.০ এর ব্রেকিং চেঞ্জ গুলো হলঃ

  • নিষ্কাশিত ও মুছে ফেলা মডিউল,
  • ন্যাভিগেশন প্রভাইডার
  • ইউআরএল রাউটিং মডিউল
  • সাইটকে ডব্লিওএসপি থেকে ডব্লিওএপিতে পরিবর্তন
  • লেগাসি এপসেটিং কানেকশন স্ট্রিং মুছে ফেলা

 

কমিউনিটি টেকনোলজি প্রিভিউ

সিটিপি ওয়ান ব্লগঃ http://www.dnnsoftware.com/community-blog/cid/155181/two-great-frameworks-that-work-great-together

সিটিপি থ্রী ব্লগঃ http://www.dnnsoftware.com/community-blog/cid/155256/dnn-800-ctp-3

সিটিপি ওয়ান ব্লগঃ http://www.dnnsoftware.com/community-blog/cid/155262/dnn-800-ctp-4

 

 

এসপিএ মডিউল

এসপিএ

এসপিএ বা সিঙ্গেল পেজ এপ্লিকেশন হল ওয়েব দুনিয়ার একটি অভিজাত বিষয়। এবিষয়ে জানতে পারেন এখান থেকে, http://www.dnnsoftware.com/community-blog/cid/155223/spa-a-dnn-first-class-citizen

ডিএনএন ৮.০ এ মডিউল ডেভলাপমেন্ট

১) এমভিসি মডিউলের সূচনাঃ ডিএনএন ৮.০ সিটিপি ব্যবহার করে। সিটিপি এএসপি ডট নেট এমভিসি ফ্রেমওয়ার্ক ব্যবহার করে তৈরিকৃত মডিউলের জন্য আপডেটকৃত সাপোর্ট ধারণ করে, যা এইচটিএমএল ৫ ভিত্তিক মডিউলের জন্যও সাপোর্ট হিসেবে ব্যবহৃত হয়। আরও বিস্তারিত জানতে দেখুন, http://www.dnnsoftware.com/community-blog/cid/155216/module-development-in-dnn-8-1-introduction-to-mvc-modules

ডিএনএন ৮.০ এ মডিউল ডেভলাপমেন্ট

২) প্রথম এমভিসি একশন/ ভিউ তৈরি করাঃ এমভিসি একশনে কোনও সাইটের কন্টাক্ট ম্যানেজের জন্য মডিউল তৈরি করা হয়। কোনও কন্টাক্টে পাঁচটি সাধারণ বৈশিষ্ট্য থাকে, ফার্স্ট নেম, লাস্ট নেম, ইমেইল এড্রেস, ফোন নাম্বার, টুইটার হ্যান্ডেল। এখান থেকে বিষয়টি জানা যেতে পারে, http://www.dnnsoftware.com/community-blog/cid/155219/module-development-in-dnn-8-2--creating-your-first-mvc-actionview

 

ডিএনএন ৮.০ এ মডিউল ডেভলাপমেন্ট

৩) এসপিএ মডিউলের সূচনাঃ ডিএনএন ৮.০ এএসপি ডট নেট এমভিসি মডিউলের সাথে এসপিএ বা সিঙ্গেল পেজ এপ্লিকেশন মডিউল সাপোর্ট করে,যা কিনা ওয়েব সার্ভারে এএসপি ডটনেট ওয়েব এপিআই ভিত্তিক ওয়েব সার্ভিসের সমন্বয়ে এইচটিএমএল, জাভাস্ক্রিপ্ট ও সিএসএসের মাধ্যমে ডেভলাপ করা হয়েছে।এবিষয়ে বিস্তারিত আছে এখানে, http://www.dnnsoftware.com/community-blog/cid/155221/module-development-in-dnn-8-3--introduction-to-spa-modules

 

ডিএনএন ৮.০ এ মডিউল ডেভলাপমেন্ট

৪) এমভিসি মডিউলের লোকালাইজেশন সাপোর্টঃ ডিএনএন ৮.০ এএসপি ডট নেট এমভিসি ৫.১ ভার্সন বা এর পরবর্তী ভার্সনগুলো দ্বারা মডিউল তৈরিতে সমর্থন করে।এখান থেকে বিষয়টি দেখে নেয়া যেতে পারে, http://www.dnnsoftware.com/community-blog/cid/155246/module-development-in-dnn-8-4--localization-support-for-mvc-modules

 

ডিএনএন ৮.০ এ মডিউল ডেভলাপমেন্ট

৫) পিওর এসপিএ তৈরিতে সাপোর্ট হিসেবে নিউ টোকেনঃ জাভাস্ক্রিপ্ট ও সিএসএস ফাইল রেজিস্টারের জন্য দুটি নতুন টোকেন যোগ করতে হয়েছে, যা পূর্বের টোকেন থেকে আলাদা।এখানে আরও বিস্তারিত জানার সুযোগ থাকছে, http://www.dnnsoftware.com/community-blog/cid/155247/module-development-in-dnn-8-5--new-tokens-to-support-building-pure-spa-modules

 

ডিএনএন ৮.০ এ মডিউল ডেভলাপমেন্ট

৬) এমভিসি ও এসপিএতে মডিউল একশন নিয়ন্ত্রণ করাঃ মডিউলএকশন এট্রিবিউট ও মডিউলএকশন আইটেমস এট্রিবিউট এদুটির সাহায্য নিয়ে এমভিসি ও এসপিএতে মডিউল একশন নিয়ন্ত্রণ করা হয়।

ডিএনএন ৮.০ এ মডিউল ডেভলাপমেন্টের ভিডিও দেখুন এখান থেকে, https://www.youtube.com/watch?v=UJ02-GTNGmI

 

এইচএমএসি

সার্ভিস ফ্রেমওয়ার্কের এগেইন্সটে রিমোটলি অথেনটিকেশনঃ সার্ভিস ফ্রেমওয়ার্কের এগেইন্সটে রিমোটলি অথেনটিকেশন সম্পর্কে বিস্তারিত দেখুন এখানে, http://dnn-connect.org/2015/all-sessions/details/mobile-authentication

 

ইনক্রিমেন্টাল আপগ্রেড

ডিএনএন প্লাটফর্ম 7.4.2 Beta ও প্লাটফর্ম 8.0 CTP 3 থেকে শুরু করে ডিএনএন ইনক্রিমেন্টাল আপগ্রেডের সক্ষমতাকে সমর্থন করে। এবিষয়ে বিস্তারিত জানতে দেখুন, http://www.dnnsoftware.com/community-blog/cid/155263/baby-steps

 

ডাইনামিক কন্টেন্ট ক্রিয়েটর

এক্ষেত্রে কাজ করতে এডমিন মেন্যু থেকে ডাইনামিক কন্টেন্ট টাইপ ম্যানেজার এরিয়াতে যেতে হয়। এই লিঙ্ক থেকে বিষয়টি সম্পর্কে আরও ভালমত জানা যাবে। http://www.dnnsoftware.com/community-blog/cid/155270/announcing-the-dynamic-content-creator

 

Node.js – সার্বজনীন অবজেক্ট (Global Objects)

মোহাম্মদ আব্দুল্লাহ

Node.js এর গ্লোবাল অবজেক্টগুলো সাধারনত সকল মোডিউল থেকে সরাসরি একসেস করা যায় । তাই এই গ্লোবাল অবজেক্টগুলোকে কোন অ্যাপ থেকে অন্তর্ভূক্ত করতে হয় না । এই গ্লোবাল অবজেক্টগুলো সাধারনত মোডিউল, ফাংশন, স্ট্রীং অথবা অবজেক্টও হয়ে থাকে যা নিম্নে ব্যাখ্যা করা হয়েছে ।

__filename

__filename, যেই ফাইল থেকে কোড রান করা হচ্ছে সেই ফাইলের নাম প্রকাশ করে থাকে । এটি কোড ফাইলের সম্পূর্ণ পথ প্রিন্ট করে থাকে ।

উদাহরণ
একটি javascript (main.js) এ নিম্নের কোড copy/paste করে দিন


console.log( __filename );

 

এখন main.js ফাইলটি রান করান


$ node main.js

 

আপনার প্রোগ্রামের সঠিক অবস্থান অনুযায়ী নিম্নের ফাইল নাম প্রকাশ করবেঃ


/web/com/1427091028_21099/main.js

 

__dirname

__dirname সাধারনত যেই ডিরেক্টরী থেকে স্ক্রীপ্ট রান করা হচ্ছে ওই ডিরেক্টরীর নাম প্রকাশ করে থাকে ।

উদাহরণ
একটি javascript (main.js) এ নিম্নের কোড copy/paste করে দিন


console.log( __dirname );

 

এখন main.js ফাইলটি রান করান


$ node main.js

 

আপনার প্রোগ্রামের সঠিক অবস্থান অনুযায়ী নিম্নের ডিরেক্টরীর নাম প্রকাশ করবেঃ


/web/com/1427091028_21099

 

 

setTimeout(cb, ms)

setTimeout(cb, ms) গ্লোবাল ফাংশন দিয়ে অন্তত ' ms ' মিলিসেকেন্ড বিলম্বে কলব্যাক ফাংশন ' cb ' কে কল করা হয়ে থাকে । এই বিলম্ব কিছু বাহ্যিক ফাক্টর এর উপর নির্ভরশীল উদাহারন স্বরুপ OS timer granularity এবং system load । একটি টাইমারের ব্যাপ্তি ২৪.৮ দিনের বেশী হতে পারবে না ।

উদাহরণ
একটি javascript (main.js) এ নিম্নের কোড copy/paste করে দিন


function printHello(){
     console.log( "Hello, World!");
 }
 // Now call above function after 2 seconds
 setTimeout(printHello, 2000);

 

এখন main.js ফাইলটি রান করান


$ node main.js

 

যাচাই করে দেখুন আউটপুট কিছুটা বিলম্বে আসছে কিনা


Hello, World!

 

clearTimeout(t)

clearTimeout( t ) গ্লোবাল ফাংশন দিয়ে পূর্বে setTimeout(cb, ms) দিয়ে যেই টাইমার সেট করা হয়েছে তা বন্ধ করতে ব্যবহার করা হয় ।

উদাহরণ
একটি javascript (main.js) এ নিম্নের কোড copy/paste করে দিন


function printHello(){
       console.log( "Hello, World!");
 }
 // Now call above function after 2 seconds
 var t = setTimeout(printHello, 2000);
 // Now clear the timer

 

clearTimeout(t)

এখন main.js ফাইলটি রান করান


$ node main.js

যাচাই করে দেখুন আউটপুটে কিছু প্রিন্ট করছে কিনা

 

setInterval(cb, ms)

setInterval(cb, ms) দিয়ে অন্তত ' ms ' মিলিসেকেন্ড বিলম্বে বারবার কলব্যাক ফাংশন ' cb ' কে কল করতে থাকে । এই বিলম্ব কিছু বাহ্যিক ফাক্টর এর উপর নির্ভরশীল উদাহারন স্বরুপ OS timer granularity এবং system load । একটি টাইমারের ব্যাপ্তি ২৪.৮ দিনের বেশী হতে পারবে না ।

একটি javascript (main.js) এ নিম্নের কোড copy/paste করে দিন


function printHello(){
     console.log( "Hello, World!");
 }
 // Now call above function after 2 seconds
 setInterval(printHello, 2000);

 

এখন main.js ফাইলটি রান করান


$ node main.js


উপরের প্রোগ্রামটি প্রতি ২ সেকেন্ড পরপর printHello() ফাংশন কে কল করতে থাকবে ।

 

পিএইচপিঃ ইন্টারভিউয়ের প্রশ্নাবলী এবং উত্তরসমূহ। PHP Interview Questions and Answers

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

 

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

যে প্রশ্নগুলো সাধারণত আলোচনায় এসে থাকে সেগুলো হল,

পিএইচপি কী?

পিএইচপির মাধ্যমে হাইপারটেক্সট প্রিপ্রসেসর বোঝায়, এটি একটি সার্ভারসাইড স্ক্রিপ্টিং ল্যাঙ্গুয়েজ যা এইচটিএমএলের সাথে কাজ করে। ডাইনামিক কন্টেন্ট, ডাটাবেস, সেশন ট্র্যাকিং এমনকি সম্পূর্ণ ইকমার্স সাইট তৈরিতে এটি ব্যবহার হতে পারে।

 

পিএইচপির সাধারণ ব্যবহারগুলি কি কি?

পিএইচপি যে ধরনের কাজ সাধারণত করে থাকে সেগুলো হল,

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

 

কতগুলো উপায়ে আপনি এইচটিএমএল পেজে পিএইচপি কোড এমবেড করতে পারেন?

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


<?php PHP code goes here ?>
<?    PHP code goes here ?>
<script language="php"> PHP code goes here </script>
Most common tag is the <?php...?>

সবচেয়ে কমন ট্যাগ হল<?php...?>।

 

php.ini  ফাইলের উদ্দেশ্য কী?

এটি  পিএইচপি কনফিগারেশন ফাইল, পিএইচপির ফাংশনালিটিতে প্রভাব বিস্তারের চূড়ান্ত ও সবচেয়ে কার্যকর পদ্ধতি। অন্য ওয়ার্ডে পিএইচপি শুরু হওয়ার সময়, মডিউল ভার্সনের জন্য httpd রিস্টার্টের সময়, অথবা CGI ভার্সনের জন্য স্ক্রিপ্ট সম্পাদনের সময় php.ini ফাইল পড়া হয়। কাঙ্খিত পরিবর্তন দৃশ্যমান না হলে থেমে আবার httpd  রিস্টার্ট করতে হয়। এরপরও কাঙ্খিত পরিবর্তন দৃশ্যমান না হলে phpinfo() দ্বারা php.ini এর পাথ চেক করতে হবে।

 

এস্কেপিং টু পিএইচপি কী?

কোনও পেজের অন্যসব উপাদান থেকে পিএইচপি কোডকে আলাদা করার ক্ষেত্রে পিএইচপি পারসিং এঞ্জিনের একটি উপায় দরকার হয়। সেই কৌশলকে ‘এস্কেপিং টু পিএইচপি’ বলা হয়।

 

পিএইচপিকে হোয়াইটস্পেস ইনসেনসিটিভ বলা হয়, এবিষয়ে কি জানেন?

হোয়াইটস্পেস টাইপ করা এমন বিষয় যা সাধারণত স্ক্রিনে অদৃশ্য, স্পেস, ট্যাব ও ক্যারেজ রিটার্ন এর অন্তর্ভুক্ত। পিএইচপিকে হোয়াইটস্পেস ইনসেনসিটিভ বলা হয় কারণ কতগুলো হোয়াইটস্পেস ক্যারেক্টার একটি রোতে আছে তা ধর্তব্য না, একটি হোয়াইটস্পেস ক্যারেক্টার এরকম অনেকগুলো সম্মিলিত ক্যারেক্টারের কাজ করে।

 

পিএইচপি কি কেস সেনসিটিভ ভাষা?

হ্যাঁ।

 

পিএইচপি ভেরিয়েবলের গুরুত্বপূর্ণ বৈশিষ্ট্য কী?

পিএইচপি ভেরিয়েবলকে লিডিং ডলার সাইন ($) দ্বারা প্রকাশ করা হয়, ভেরিয়েবলের মান হল সর্বশেষ এসাইনমেন্টের মান। ভেরিয়েবল = অপারেটর দ্বারা এসাইন থাকে।

 

বিভিন্ন ধরনের পিএইচপি ভেরিয়েবলগুলো কী কী?

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

 

পিএইচপি ভেরিয়েবলের নামকরণের নিয়ম কী?

ভেরিয়েবলের নাম লেটার বা আন্ডারস্কোর দিয়ে শুরু হবে, ভেরিয়েবলের নামের মধ্যে লেটার, আন্ডারস্কোর বা নাম্বার থাকতে পারে কিন্তু + , - , % , ( , ) . &, এসব চিহ্ন থাকতে পারবে না।

 

কোনও ভেরিয়েবল বুলিয়ান টাইপের না- এর সত্যতা  নিশ্চিত হতে কী নিয়ম আছে?

যদি এর মান সংখ্যা হয় তবে শূন্যের সমান  হলে মিথ্যা, অন্য আরকিছু হলে সত্য হবে। এর মান স্ট্রিং হয় তবে এটি খালি হলে অর্থাৎ স্ট্রিং "0" হলে মিথ্যা, অন্য আরকিছু হলে সত্য হবে। নাল টাইপের ভ্যালু সব সময় মিথ্যা। যদি এর মান অ্যারি হয় তবে অন্য কোনও মান বহন না করলে মিথ্যা, নতুবা সত্য হবে। অবজেক্টের ক্ষেত্রে তবে অন্য কোনও মান বহন করা মানে সদস্য ভেরিয়েবল থাকা যা কিনা কোনও মান বিবৃত করে। ভ্যালিড রিসোর্স সত্য। ডাবলসকে বুলিয়ান হিসেবে ব্যবহার করা যাবে না।

 

নাল কী?

নাল একটি বিশেষ শ্রেণীর ভেরিয়েবল যার মাত্র একটি মান থাকে।

 

পিএইচপিতে  ধ্রুবককে কীভাবে বিবৃত করবেন?

define() ফাংশন ব্যবহার করে পিএইচপিতে  কোনও ধ্রুবককে বিবৃত করা যায়, পুনরায় কোনও মানকে ফিরিয়ে আনতে এর নাম স্পেসিফাই করতে হয়।

 

constant() ফাংশনের কাজ কী?

এটি ধ্রুবকের মান ফিরিয়ে আনে। পুনরায় কোনও মানকে ফিরিয়ে আনার ক্ষেত্রে নাম না জানা থাকলে এই ফাংশন কাজে লাগে।

 

constant() ফাংশনের উদাহরণ দিন।


<?php
define("MINSIZE", 50);
echo MINSIZE;
echo constant("MINSIZE"); // same thing as the previous line
?>


ধ্রুবকে কেবল স্কেলার ডাটা থাকতে পারে।

 

পিএইচপি ধ্রুবক ও চলকের মধ্যে পার্থক্য কী?

ধ্রুবকের আগে ডলার সাইন($)লেখার দরকার আছে, কিন্তু চলকের আগে দরকার নাই।ধ্রুবক  define() ফাংশন ছাড়া বিবৃত হতে পারে না, এটি যেকোনো স্থানে চলক সংক্রান্ত নিয়ম ছাড়াই বিবৃত ও অন্তর্ভুক্ত হতে পারে।

 

পিএইচপি ম্যাজিক কন্সটেন্ট কী?

পিএইচপি যেকোনো স্ক্রিপ্টে পূর্বনির্ধারিত অনেক ধ্রুবক ব্যবহার করে। এদের পিএইচপি ম্যাজিক কন্সটেন্ট বলে।

 

_LINE_ কন্সটেন্টের কাজ কী?

এটি ফাইলের বর্তমান লাইনের অবস্থান নির্দেশ করে।

 

_FILE_ কন্সটেন্টের কাজ কী?

এটি ফাইলের ফুল পাথ ও ফাইলনেম নির্দেশ করে।

 

_FUNCTION_ কন্সটেন্টের কাজ কী?

এটি ফাইলের ফাংশন নেম নির্দেশ করে।

 

_CLASS_ কন্সটেন্টের কাজ কী?

এটি ফাইলের ক্লাস নেম নির্দেশ করে।

 

_METHOD_ কন্সটেন্টের কাজ কী?

এটি ফাইলের ক্লাস মেথডের  নেম নির্দেশ করে।

 

ব্রেক স্টেটমেন্টের কাজ কী?

ব্রেক ‘ফর লুপ’ ও সুইচ স্টেটমেন্টকেকে টারমিনেট করে।

 

কন্টিনিউ স্টেটমেন্টের কাজ কী?

কন্টিনিউ রিমাইন্ডার স্কিপ করার জন্য লুপ তৈরি করে এবং পুনরাবৃত্তির প্রেক্ষিতে এর কন্ডিশন নিরীক্ষণ করে।

 

'foreach' লুপের জন্য সিনট্যাক্স ব্যাখ্যা করুন?

'foreach' স্টেটমেন্ট অ্যারির মাধ্যমে লুপ তৈরি করে সহায়তা করে। এর সিনট্যাক্স হল,


foreach (array as value)
{
    code to be executed;
}

 

নিউমেরিক অ্যারি কী?

নিউমেরিক অ্যারি একধরনের অ্যারি যাতে নিউমেরিক ইনডেক্স আছে। লিনিয়ার ফ্যাশনে মান সংরক্ষণ ও এতে প্রবেশ করা যায়।

 

এসোসিয়েট অ্যারি কী?

এসোসিয়েট অ্যারি একধরনের অ্যারি যাতে ইনডেক্স হিসেবে স্ট্রিং ব্যবহৃত হয়। এটি মান সংশ্লিষ্ট উপাদানকে লিনিয়ার ইনডেক্স অর্ডারের পরিবর্তে কী-ভ্যালুর সমন্বয়ে সংরক্ষণ করে।

 

মাল্টিডাইমেন্সনাল অ্যারি কী?

এই অ্যারি একধরনের অ্যারি যাতে মাল্টিপল ইনডাইস ব্যবহার করে এক বা একাধিক অ্যারি ও মান অন্তর্ভুক্ত করা হয়।

 

পিএইচপিতে দুটি স্ট্রিংকে কীভাবে পরপর সমন্বয় করা যায়?

ডট অপারেটর (.) ব্যবহার করে এটি করা যায়,


<?php
$string1="Hello World";
$string2="1234";
echo $string1 . " " . $string2;
?>

যা থেকে আমরা এই ফলাফল পাব,

Hello World 1234

 

পিএইচপিতে কোনও স্ট্রিংএর লেন্থ বের করা যায় কীভাবে?

strlen() ফাংশন ব্যবহার করে আমরা এটি করতে পারি। যেমন "Hello world!" স্ট্রিংএর লেন্থ বের করা যাক,


<?php
echo strlen("Hello world!");
?>

যার ফলাফল পাব ১২।

 

পিএইচপিতে কোনও স্ট্রিংএর ভেতর অন্য কোনও স্ট্রিংএর অবস্থান কীভাবে সনাক্ত করা যাবে?

স্ট্রিংএর ভেতর অন্য কোনও স্ট্রিং বা ক্যারেক্টার খুঁজতে strpos() ফাংশন ব্যবহার করা হয়।


<?php
echo strpos("Hello world!","world");
?>

এটি ফলাফল দেখাবে, ৬।

 

পিএইচপিতে এনভায়রনমেন্ট ভেরিয়েবল কীভাবে পাবেন?

getenv() ফাংশন ব্যবহার করে আমরা পিএইচপিতে এনভায়রনমেন্ট ভেরিয়েবলের মান পাব।

 

পিএইচপিতে ব্রাউজারের ডিটেইল কীভাবে পাওয়া যাবে?

HTTP_USER_AGENT এই এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করে ব্রাউজারের ডিটেইল পাওয়া যাবে।

 

পিএইচপিতে রেনডম নাম্বার কীভাবে জেনারেট করা যায়?

rand()ফাংশন ব্যবহার করে রেনডম নাম্বার জেনারেট করা যায়।

 

$_PHP_SELF ভেরিয়েবলের কাজ কী?

এটি স্ক্রিপ্ট নেমের জন্য ব্যবহৃত হয়, এটি প্রয়োগের পর "submit" বাটনে চাপলে একই স্ক্রিপ্ট পাওয়া যাবে।

 

পিএইচপিতে কোনও পেজ রিডাইরেক্ট করতে হলে কী করতে হবে?

header() ফাংশন ব্যবহার করে এটি করা যায়, এটি ব্রাউজারে র(raw) এইচটিটিপি হিডার সাপ্লাই করে এটি করে।

 

পিএইচপি ব্যবহার করে ফাইল ডাউনলোড ডায়ালগ বক্স কীভাবে দেখাতে পারবেন?

এইচটিটিপি হিডার মূল হিডার থেকে আলাদা হবে যেখানে আমরা কন্টেন্ট টাইপ হিসেবে text/html\n\n পাঠাই। এক্ষেত্রে কন্টেন্ট টাইপ application/octet-stream ভিত্তিক হবে এবং মূল কন্টেন্ট নেম এর সাথে ক্রমানুসারে এরসাথে সংযুক্ত থাকবে। যেমন, কোনও লিঙ্ক থেকে ডাউনলোডের উপযোগী FileName নামের ফাইল তৈরি করতে চাইলে এর সিনট্যাক্স হবে,


#!/usr/bin/perl
# HTTP Header
print "Content-Type:application/octet-stream; name=\"FileName\"\r\n";
print "Content-Disposition: attachment; filename=\"FileName\"\r\n\n";
# Actual File Content
open( FILE, "<FileName" );
while(read(FILE, $buffer, 100) )
{
   print("$buffer");
}

 

পিএইচপিতে গেট মেথডে তথ্য পাওয়ার উপায় কী?

পিএইচপিতে $_GET এসোসিয়েটিভ  অ্যারি ব্যবহার করে গেট মেথডে তথ্য পাওয়া যায়।

 

পিএইচপিতে পোস্ট মেথডে তথ্য পাওয়ার উপায় কী?

পিএইচপিতে $_POST এসোসিয়েটিভ  অ্যারি ব্যবহার করে গেট মেথডে তথ্য পাওয়া যায়।

 

$_REQUEST ভেরিয়েবলের কাজ কী?

$_REQUEST ভেরিয়েবল $_GET, $_POST,ও $_COOKIE এই সবগুলি ভেরিয়েবলের উপাদান সংরক্ষণ করে।

 

অ্যারি তৈরি করতে কোন ফাংশন ব্যবহার করবেন?

array() − এর মাধ্যমে অ্যারি তৈরি করা যায়।

 

কোনও অ্যারি সর্ট করতে হলে কোন কোড ব্যবহার করতে হবে?

অ্যারি সর্ট করতে sort() ব্যবহার করতে হবে

 

সিঙ্গেল কোটেড স্ট্রিং আর ডাবল কোটেড স্ট্রিংএর মধ্যে পার্থক্য কী?

সিঙ্গেল কোটেড স্ট্রিং আক্ষরিক ভাবে প্রয়োগ হয় যেখানে ডাবল কোটেড স্ট্রিং তাদের মান দ্বারা চলককে প্রতিস্থাপিত করে। যেমন,


<?php
$variable = "name";
$literally = 'My $variable will not print!\\n';
print($literally);
print "<br />";
$literally = "My $variable will print!\\n";
print($literally);
?>

 

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

My $variable will not print!\n

My name will print

 

দুটি স্ট্রিং কীভাবে সমন্বয় অর্থাৎ কনক্যাটেনেট করবেন?

দুটি স্ট্রিং চলককে কনক্যাটেনেট করতে ডট অপারেটর ব্যবহার করতে হবে, যেমন,


<?php
$string1="Hello World";
$string2="1234";
echo $string1 . " " . $string2;
?>

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

Hello World 1234

 

$_REQUEST ভেরিয়েবলের ব্যবহার কী?

পিএইচপি $_REQUEST ভেরিয়েবল $_GET, $_POST, ও $_COOKIE এসবের উপাদানকে ধারণ করে।

 

একটি পিএইচপি ফাইলের কন্টেন্টকে কীভাবে অন্য একটি পিএইচপি ফাইলে অন্তর্ভুক্ত করা যাবে?

দুটি ফাংশন ব্যবহার করে একটি পিএইচপি ফাইলের কন্টেন্টকে অন্য একটি পিএইচপি ফাইলে অন্তর্ভুক্ত করা যাবে,

include() ফাংশন ও require() ফাংশন

 

include()ফাংশন ও require()ফাংশনের মধ্যে পার্থক্য কী?

কোনও ফাইল লোডের সময় সমস্যা হলে require() ফাংশন ফেটাল এরর দেখায় এবং স্ক্রিপ্ট সম্পাদন থামিয়ে দেয় কিন্তু include() ফাংশন ওয়ার্নিং দিলেও স্ক্রিপ্ট সম্পাদন চালিয়ে যায়।

 

রিড অনলি মোডে ফাইল ওপেন করতে হলে কী করতে হবে?

পিএইচপি fopen() ফাংশন ব্যবহার করে এটি করা যাবে।

 

পিএইচপিতে কোনও ফাইল পড়তে কী করতে হবে?

fopen() ফাংশন দ্বারা ওপেন করা কোনও পিএইচপি ফাইলকে fread() ফাংশন দ্বারা পড়া যাবে। এক্ষেত্রে দুটি আর্গুমেন্টের প্রয়োজন হয়, ফাইল পয়েন্টার থাকতে হয় এবং ফাইলের লেন্থ বাইটে প্রকাশ করা হতে হবে।

 

কোনও পিএইচপি ফাইলের আকার কীভাবে জানা যাবে?

filesize() ফাংশন ব্যবহার করে।

 

কোনও ফাইল আছে না নেই তা পিএইচপিতে কীভাবে জানা যাবে?

file_exist() ফাংশন ব্যবহার করে কোনও ফাইলের অস্তিত্ব সম্পর্কে নিশ্চিত হওয়া যাবে।

 

ফাংশন প্যারামিটারে কি ডিফল্ট ভ্যালু আরোপ করা যাবে?

হ্যাঁ। ডিফল্ট ভ্যালু পেতে প্যারামিটার সেট করা যাবে যদি ফাংশনের কলার এটিকে পাশ না করে।

 

পিএইচপি ব্যবহার করে কীভাবে কুকিজ সেট করা যায়?

setcookie() ফাংশন ব্যবহার করে পিএইচপিতে কুকিজ সেট করা যায়।

setcookie(name, value, expire, path, domain, security);

 

পিএইচপিতে কীভাবে কুকিজ পাওয়া যায়?

বিভিন্নভাবে পাওয়া যায়, সবচেয়ে সহজ উপায় হল $_COOKIE বা $HTTP_COOKIE_VARSচলক ব্যবহার করে।

 

কোনও কুকিজ সেট করা আছে না নেই তা পিএইচপিতে কীভাবে জানা যাবে?

isset() ফাংশন ব্যবহার করে কোনও কুকিজ সেট করা আছে না নেই তা জানা যাবে।

 

কুকিজ কীভাবে ডিলিট করবেন?

কুকিজ ডিলিট করতে নামের আর্গুমেন্ট সহ setcookie() ফাংশন কল করতে হবে।

 

পিএইচপিতে সেশন শুরু করে কীভাবে?

সেশন শুরুর জন্য session_start() ফাংশন ব্যবহার করে কল করতে হয়।

 

পিএইচপিতে সেশন চলকে প্রবেশের জন্য কী করতে হবে?

সেশন চলক $_SESSION[] নামক এসোসিয়েটিভ অ্যারিতে সঞ্চিত থাকে। কোনও সেশনের সক্রিয় কালে এই চলকে প্রবেশ করা সম্ভব।

 

সেশন চলক সেট করা আছে না নেই তা পিএইচপিতে কীভাবে জানা যাবে?

isset() ফাংশন ব্যবহার করে সেশন চলক সেট করা আছে না নেই তা জানা যাবে।

 

একক সেশন চলককে আনসেট করতে কী করতে হবে?

একক সেশন চলককে আনসেট করতে নিচের মত করে কোড ব্যবহার করতে হবে,


<?php
   unset($_SESSION['counter']);
?>

 

পিএইচপিতে সেশন ডেস্ট্রয় করতে কি করা লাগে?

session_destroy() ফাংশন ব্যবহার করে এটি করা যায়।

 

পিএইচপিতে কীভাবে ইমেইল করা যায়?

mail() ফাংশন ব্যবহার করে পিএইচপিতে ইমেইল করা যায়। উদাহরণ দেয়া যাক,


mail( to, subject, message, headers, parameters );

 

 

পিএইচপিতে $_FILES চলকের কাজ কী?

এটি একটি বৈশ্বিক চলক, এটি দ্বিমাত্রিক অ্যারি এবং আপলোডকৃত ফাইলের সব তথ্য সঞ্চিত রাখে।

 

পিএইচপিতে আপলোডকৃত ফাইলে প্রবেশ করা যায় কেমন করে?

$_FILES['file']['tmp_name'] ফাংশন ব্যবহার করে। এটি ওয়েব সার্ভারের টেম্পোরারি ডিরেক্টরিতে আপলোডকৃত ফাইলে প্রবেশের ব্যবস্থা করে দেয়।

 

পিএইচপিতে আপলোডকৃত ফাইলের প্রকৃত নামে প্রবেশ করা যায় কেমন করে?

$_FILES['file']['name']ফাংশন ব্যবহার করে।

 

পিএইচপিতে আপলোডকৃত ফাইলের সাইজে প্রবেশ করা যায় কেমন করে?

$_FILES['file']['size'] ফাংশন ব্যবহার করে।

 

পিএইচপিতে আপলোডকৃত ফাইলের কন্টেন্ট টাইপে প্রবেশ করা যায় কেমন করে?

$_FILES['file']['type'] ফাংশন ব্যবহার করে।

 

পিএইচপিতে আপলোডকৃত ফাইলের এরর কোডে প্রবেশ করা যায় কেমন করে?

$_FILES['file']['error'] ফাংশন ব্যবহার করে।

 

পিএইচপিতে $GLOBALSচলকের কাজ কী?

এই চলক স্ক্রিপ্টের গ্লোবাল স্কোপে অবস্থিত সব চলকের রেফারেন্স নির্দেশ করে।

 

পিএইচপিতে $_SERVER চলকের কাজ কী?

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

 

পিএইচপিতে $_COOKIE চলকের কাজ কী?

এটি সেইসব চলকের এসোসিয়েটিভ অ্যারি যারা এইচটিটিপি কুকিজ হয়ে কারেন্ট স্ক্রিপ্টে আসে।

 

পিএইচপিতে $_SESSION চলকের কাজ কী?

এরা সেইসব এসোসিয়েটিভ অ্যারি যারা কারেন্ট স্ক্রিপ্টে থাকা সেশন ভেরিয়েবল ধারণ করে।

 

পিএইচপিতে $_PHP_SELF চলকের কাজ কী?

এটি একটি স্ট্রিং যা পিএইচপি স্ক্রিপ্ট ফাইল নেম ধারণ করে।

 

পিএইচপিতে $php_errormsgচলকের কাজ কী?

এটি একটি চলক যা সর্বশেষ এরর ম্যাসেজের টেক্সট ধারণ করে ।

 

ereg()ফাংশন কীভাবে কাজ করে?

ereg()ফাংশন একটি স্ট্রিং খোঁজে,যা প্যাটার্ন দ্বারা নির্ধারিত। প্যাটার্ন পাওয়া গেলে ট্রু আর অন্য কিছু হলে ফলস দেখায়।

 

eregi()ফাংশন কীভাবে কাজ করে?

eregi()ফাংশন একটি স্ট্রিং খোঁজে,যা প্যাটার্ন দ্বারা নির্ধারিত।এই সার্চ কেস সেন্সেটিভ নয়।

 

split()ফাংশন কীভাবে কাজ করে?

split()ফাংশন স্ট্রিংকে বিভিন্ন অংশে বিভক্ত করে, স্ট্রিঙে অকারেন্সের প্যাটার্নের উপর অংশগুলোর ধরণ নির্ভর করে।

 

preg_match()ফাংশন কীভাবে কাজ করে?

preg_match()ফাংশন স্ট্রিঙে প্যাটার্ন খোঁজে, কাঙ্খিত প্যাটার্ন থাকলে ট্রু আর না থাকলে ফলস দেখায়।

 

preg_split()ফাংশন কীভাবে কাজ করে?

preg_split()ফাংশন প্রায় split()ফাংশনের মতই কাজ করে,কেবল রেগুলার এক্সপ্রেশনগুলো প্যাটার্নের ইনপুট প্যারামিটার হিসেবে কাজ করে।

 

ভুল হলে এক্সেপ্সন ক্লাস ব্যবহার করে কীভাবে এরর ম্যাসেজ পুনরুদ্ধার করা যাবে?

getMessage() ব্যবহার করে।

 

ভুল হলে এক্সেপ্সন ক্লাস ব্যবহার করে কীভাবে কোড অফ এক্সেপ্সন পুনরুদ্ধার করা যাবে?

getCode()মেথড ব্যবহার করে।

 

ভুল হলে এক্সেপ্সন ক্লাস ব্যবহার করে কীভাবে সোর্স ফাইলনেম পুনরুদ্ধার করা যাবে?

getFile()মেথড ব্যবহার করে।

 

ভুল হলে এক্সেপ্সন ক্লাস ব্যবহার করে কীভাবে সোর্স লাইন পুনরুদ্ধার করা যাবে?

getLine()মেথড ব্যবহার করে।

 

ভুল হলে এক্সেপ্সন ক্লাস ব্যবহার করে কীভাবে স্টাক স্ট্রেস পুনরুদ্ধার করা যাবে?

getTrace()মেথড ব্যবহার করে।

 

ভুল হলে কীভাবে ফরম্যাটিং স্ট্রিং অফ স্ট্রেস পুনরুদ্ধার করা যাবে?

getTraceAsString()মেথড ব্যবহার করে এটি করা যাবে।

 

পিএইচপি ব্যবহার করে কীভাবে বর্তমান দিন ও সময় পাব?

time()ফাংশন ব্যবহার করে।

 

getdate() ফাংশনের কাজ কী?

এটি টাইম ষ্ট্যাম্প গ্রহণ করে তারিখ সম্পর্কিত এসসিয়েটিভ অ্যারি রিটার্ন করে।

 

date() ফাংশনের কাজ কী?

এটি ফরম্যাটিং স্ট্রিং রিটার্ন করে, যা ডেট হিসেবে পরিগনিত হয়।

 

পিএইচপি ব্যবহার করে কীভাবে মাইএসকিউএল ডাটাবেস কানেক্ট করবেন?

ডাটাবেস কানেকশন খোলার জন্য mysql_connect ফাংশন ব্যবহার করা যাবে।


connection mysql_connect(server,user,passwd,new_link,client_flag);

 

পিএইচপি ব্যবহার করে কীভাবে মাইএসকিউএল ডাটাবেস তৈরি করবেন?

mysql_queryফাংশন ব্যবহার করে। এই ফাংশন দুটি প্যারামিটার ব্যবহার করে।


bool mysql_query( sql, connection );

 

পিএইচপি ব্যবহার করে কীভাবে মাইএসকিউএল ডাটাবেস বন্ধ করবেন?

mysql_close ফাংশন ব্যবহার করে।


bool mysql_close ( resource $link_identifier );

 

পিএইচপি ব্যবহার করে কীভাবে এক্সএমএল ডকুমেন্ট বিশ্লেষণ করবেন?

পিএইচপি৫ এর নতুন SimpleXML মডিউল ব্যবহার করে এটি করা যায়।

 

পিএইচপিতে কি ক্লাস তৈরি করা সম্ভব?

হ্যাঁ!

 

পিএইচপি ক্লাসে কন্সট্রাকটর ফাংশন কীভাবে সংযুক্ত করবেন?

__construct() ফাংশন ব্যবহার করে।

 

পিএইচপি ক্লাসে ডিসট্রাকটর ফাংশন কীভাবে সংযুক্ত করবেন?

__destruct()ফাংশন ব্যবহার করে।

 

পিএইচপিতে একই অবজেক্টের ভেতরে থাকা কোনও অবজেক্টের ক্ষেত্রে সেই অবজেক্টের রেফারেন্সে প্রবেশ করবেন কীভাবে?

$thisএকটি বিশেষ চলক, এটি সেই অবজেক্ট( অবজেক্ট নিজে) বোঝায়, এর মাধ্যমে সেই অবজেক্টের রেফারেন্সে প্রবেশ  করা যাবে।

 

পিএইচপিতে অবজেক্ট তৈরি করা যাবে কীভাবে?

একবার ক্লাস তৈরি হয়ে গেলে সেই ক্লাসের অধীনে যত খুশি অবজেক্ট তৈরি করা যাবে। যেমন,


$physics = new Books;
$maths = new Books;
$chemistry = new Books;

 

পিএইচপিতে ক্লাসের মেম্বার ফাংশনকে কীভাবে ডাকা যাবে?

অবজেক্ট তৈরির পরে সেই অবজেক্ট রিলেটেড মেম্বার ফাংশনকে ডাকা যাবে। যেমন,


$physics−>setTitle( "Physics for High School" );
$chemistry−>setTitle( "Advanced Chemistry" );
$maths−>setTitle( "Algebra" );
$physics−>setPrice( 10 );
$chemistry−>setPrice( 15 );
$maths−>setPrice( 7 );

 

ফাংশন ওভাররাইডিং কী?

শিশু শ্রেণীর ফাংশন ডেফিনিশন বড়দের ক্লাসে একই নামে ফাংশন ওভাররাইডিং হয়ে থাকে।

 

পিএইচপিতে ইন্টারফেস কী?

ইন্টারফেস ইমপ্লিমেন্টরের জন্য কমন ফাংশন নেমের ব্যবস্থা করে।

 

ফাইনাল কীওয়ার্ডের কাজ কী?

এটি পিএইচপি৫ এর নতুন সংযোজন, এটি কিছু ক্ষেত্রে শিশু শ্রেণীর ফাংশন ওভাররাইডিং প্রতিহত করে।

 

এরপরে কী?

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

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

 

ডট নেট নিউক ৬.১ ডেভলপার কুইক স্টার্ট (Dot Net Nuke (DNN) – 6.1 Quick Start Guide)

ডট নেট নিউক ৬.১ ডেভলপার কুইক স্টার্ট

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

 

ডিএনএন এর সর্বশেষ ভার্সন হচ্ছে ৭.xx

ডিএনএন ৬.১ ডেভলপার কুইক স্টার্ট পেজ এমন রিসোর্স হিসেবে ব্যবহৃত হয় যা কিনা ডিএনএন এক্সটেনশন ডেভলপারদের ডিএনএন ৬.১ এর সর্বশেষ সুবিধাদি পেতে সাহায্য করে। যদি কেউ ডট নেটের স্কিন অবজেক্ট, মডিউল বা প্রভাইডার ডেভলাপমেন্টে নতুন হয়ে থাকেন তাহলে তারা বিস্তারিত জানতে এই পেজ দেখতে পারেন, Module Development। ডিএনএন ৬.০তে নতুন এমন কিছু বিষয়ে রিভিউ দেখতে পারেন এই উইকি পেজ থেকে, DotNetNuke 6 Developer Quick Start

 

ক্লায়েন্ট রিসোর্স ম্যানেজমেন্ট

রিসোর্স

ব্লগ আর্টিকেল
Enhancements for working with JavaScript & CSS in 6.1

উইকি পেজ যা ডিএনএন ৬.১এর নতুন সংস্করণের বিস্তারিত তথ্য সংবলিত
Client Resource Managemen

এমন ব্লগ যা থার্ড পার্টি স্ক্রিপ্ট/জেএসএস ও ক্লায়েন্ট রিসোর্স ম্যানেজমেন্ট এপিআই এসব বিষয় নিয়ে আলোচনা ও সংশ্লিষ্ট সমস্যা সমাধানে সহায়তা করে।
DNN 6.1 JS/CSS File Combination: Potential Gotchas

এবং How to Enable Client Resource Management

 

মোবাইল এপিআইঃ ক্লায়েন্ট ক্যাপাবিলিটি ও ডিভাইস ডিটেকশন

এক্সেস কন্টেন্টে ব্যবহৃত ডিভাইসের ডিভাইস ক্যাপাবিলিটি বের করার জন্য ৬.১এর কিছু নতুন এপিআই আছে। ডিভাইস ডিটেকশন ব্রাউজার থেকে পাঠানো ইউজার এজেন্টের উপর নির্ভর করে।

  • Namespace: DotNetNuke.Services.ClientCapability namespace
  • IClientCapability device = ClientCapabilityProvider.CurrentClientCapability

IClientCapability এইচটিটিপি রিকোয়েস্টার (মোবাইল ডিভাইস, টিভি, ডেক্সটপ ইত্যাদি) সাপোর্টেড ক্যাপাবিলিটি দিয়ে থাকে। IclientCapabilityএর নিচের বৈশিষ্ট্যগুলো থেকে থাকে।

  • IsMobile-এটি মোবাইল ডিভাইস
  • IsTablet – এটি ট্যাবলেট দিভাইস
  • IsTouchScreen – এটি ক্লায়েন্টকে টাচ ক্যাপাবিলিটি দেয়
  • SupportsFlash – ক্লায়েন্টকে ফ্ল্যাশের সুবিধা দেয়
  • FacebookRequest – ক্লায়েন্টের ফেসবুক পেজ আছে কিনা। থাকলে ফেসবুক সংক্রান্ত তথ্য নিয়ে কাজ করে, যেমন ইউজার আইডি।
  • ScreenResolutionWidthInPixels – স্ক্রিনের প্রস্থ
  • ScreenResolutionHeightInPixels – স্ক্রিনের উচ্চতা
  • UserAgent – ক্লায়েন্টের ইউজার এজেন্ট
  • Capabilities - ক্লায়েন্ট সমর্থিত সব ক্যাপাবিলিটি সংবলিত একটি কী-ভ্যালু কালেকশন।

 

রিসোর্স

৬.১ এর মোবাইল এপিআই নিয়ে আলোচনা করে এমন ব্লগ আর্টিকেল
Mobile API's in 6.1

মোবাইল এপিআইএর আভ্যন্তরীণ বিষয় নিয়ে আলোচনা করে এমন ব্লগ
Mobile Device Detection and Redirection – Under the Hood

এ সংশ্লিষ্ট একটি উইকি পেজ
IClientCapability interface

 

মোবাইল এপিআইঃ সাইট রিডাইরেকশন ম্যানেজমেন্ট

সাইট রিডাইরেকশন সেটিংএর জন্য ক্রুড(ক্রিয়েট রিড আপডেট ডিলিট) অপারেশন পারফর্মে এই এপিআইগুলো ব্যবহৃত হয়।

  • Namespace: DotNetNuke.Services.Mobile
  • Class: RedirectionController

নিচের প্রক্রিয়ায় ক্রুড অপারেশন সম্পন্ন হয়ে থাকে,

  • GetAllRedirections – সিস্টেমের সব পোর্টালের জন্য রিডাইরেকশন রুল নির্ধারণ
  • GetRedirectionsByPortal – একটি পোর্টালের জন্য রিডাইরেকশন রুল নির্ধারণ
  • GetRedirectionById – রুল আইডি অনুসারে রিডাইরেকশন রুল নির্ধারণ
  • Save - রিডাইরেকশন রুল সেভ(আপডেট বা ক্রিয়েট)করা।
  • Delete - রিডাইরেকশন রুল ডিলিট করা
  • DeleteRule – রুলের ম্যাচিং ক্রাইটেরিয়া ডিলিট করা
  • PurgeInvalidRedirections – সেইসব রিডাইরেকশন রুল ডিলিট করা যা সফট বা হার্ড ডিলিটেড পেজে সেট করা ছিল।

এই মেথড রুলসের ক্লিয়ার ব্যাড ডাটায় সাইট রিডাইরেকশন ইউআই লোডের আগে প্রয়োগ করা হয়।

 

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

  • GetRedirectUrl(string userAgent) - ইউজার এজেন্টের ভিত্তিতে রিডাইরেক্ট ইউআরএল গ্রহণ
  • GetRedirectUrl(string userAgent, int portalId, int currentTabId) - এইচটিটিপি কনটেক্সট ও পোর্টাল আইডির ভিত্তিতে রিডাইরেক্ট ইউআরএল গ্রহণ
  • GetFullSiteUrl - মোবাইল সাইটের কারেন্ট পেজের ভিত্তিতে সমতুল্য পূর্ণ সাইটের ইউআরএল গ্রহণ
  • GetFullSiteUrl(int portalId, int currentTabId) - মোবাইল সাইটের কারেন্ট পেজের ভিত্তিতে সমতুল্য পূর্ণ সাইটের ইউআরএল গ্রহণ
  • GetMobileSiteUrl - পূর্ণ সাইটের কারেন্ট পেজের ভিত্তিতে সমতুল্য মোবাইল সাইটের ইউআরএল গ্রহণ
  • GetMobileSiteUrl(int portalId, int currentTabId) - পূর্ণ সাইটের কারেন্ট পেজের ভিত্তিতে সমতুল্য মোবাইল সাইটের ইউআরএল গ্রহণ

 

রিসোর্স

৬.১ এর মোবাইল এপিআই নিয়ে আলোচনা করে এমন ব্লগ আর্টিকেল
Mobile API's in 6.1

মোবাইল এপিআইএর আভ্যন্তরীণ বিষয় নিয়ে আলোচনা করে এমন ব্লগ
Mobile Device Detection and Redirection – Under the Hood

 

মোবাইল এপিআইঃ ডিভাইস প্রিভিউ ম্যানেজমেন্ট

ডিভাইস প্রিভিউ সেটিংএর জন্য ক্রুড(ক্রিয়েট রিড আপডেট ডিলিট) অপারেশন পারফর্মে এই এপিআইগুলো ব্যবহৃত হয়।

  • Namespace: DotNetNuke.Services.Mobile
  • Class: PreviewProfileController

নিচের প্রক্রিয়ায় ক্রুড অপারেশন সম্পন্ন হয়ে থাকে,

  • GetProfilesByPortal – কোনও পোর্টালের জন্য প্রিভিউ প্রোফাইলের লিস্ট করে
  • GetProfileById – আইডি অনুসারে প্রিভিউ প্রোফাইল করে
  • Save - প্রিভিউ প্রোফাইল সেভ(আপডেট/ক্রিয়েট) করে
  • Delete - প্রিভিউ প্রোফাইল ডিলিট করে।

 

রিসোর্স

৬.১ এর মোবাইল এপিআই নিয়ে আলোচনা করে এমন ব্লগ আর্টিকেল
Mobile API's in 6.1

মোবাইল এপিআইএর আভ্যন্তরীণ বিষয় নিয়ে আলোচনা করে এমন ব্লগ
Mobile Device Detection and Redirection – Under the Hood

 

মোবাইল এপিআইঃ ফেসবুক ফ্যান পেজ

IclientCapabilityএর ফেসবুক রিকোয়েস্ট প্রপার্টি ফেসবুককে সংশ্লিষ্ট তথ্য দেয় যদি কারেন্ট পেজ ফেসবুক ফ্যান পেজকে সার্ভ করতে থাকে। FacebookRequest এর বৈশিষ্ট্যগুলো দেখায় যা এখান থেকে জেনে নেয়া যেতে পারে, https://developers.facebook.com/docs/authentication/signed_request/. সবচেয়ে গুরুত্বপূর্ণ বৈশিষ্ট্য হল পেজলাইকড। ফেসবুক রিকোয়েস্টের নিচের বৈশিষ্ট্যগুলো থেকে থাকে,

  • PageLiked – ইউজার পেজে লাইক দিয়েছে কিনা
  • Algorithm – রিকোয়েস্ট সাইনের কৌশল
  • OauthToken - Graph API বা Legacy REST API তে পাশ করে দেয়া যাবে এমন টোকেন
  • Expires - oauth_token এক্সপায়ার করার ক্ষণতারিখ
  • IssuedAt – রিকোয়েস্ট সাইনড হওয়ার ক্ষণতারিখ
  • UserID – কারেন্ট ইউজারের ফেসবুক ইউজার আইডেন্টিফায়ার(এটি ইউজার আইডি নয়)
  • UserLocale – ইউজারের লোকাল
  • UserCountry – ইউজারের দেশ
  • UserMinAge – ইউজারের সর্বনিম্ন বয়সসীমা
  • UserMaxAge - ইউজারের সর্বোচ্চ বয়সসীমা
  • PageId – পেজের আইডি
  • PageUserAdmin – ব্যবহারকারী কি পেজের এডমিন কিনা
  • ProfileId – পেজ আইডি, যদি অ্যাপ লোড করা হয়ে থাকে
  • AppData – কোয়েরি স্ট্রিং প্যারামিটারের কন্টেন্ট, app_data নামে ডাকা হয়
  • RawSignedRequest – ফেসবুক ইন পেজ থেকে আসা র-সাইন রিকোয়েস্ট
  • IsValid – এটি হল ভ্যালিড ফেসবুক রিকোয়েস্ট

 

মোবাইল স্কিন অবজেক্ট

ডেক্সটপ ও মোবাইল সাইটের সংশ্লিষ্ট লিঙ্ক প্রভাইড করে এমন নতুন দুটি স্কিন অবজেক্ট আছে,

  • LinkToFullSite – মোবাইল সাইটের স্কিন ফুটারে যুক্ত হওয়া দুটি স্কিন অবজেক্ট
  • LinkToMobileSite – ডেক্সটপ সাইটের স্কিন ফুটারে যুক্ত হওয়া দুটি স্কিন অবজেক্ট

LinkToFullSite স্কিন অবজেক্ট ব্যবহার করে কোনও ব্যবহারকারী মোবাইল সাইট থেকে মূল সাইটে গেলে ব্রাউজার ক্লোজ বা ইউজার লগ আউট করার আগ পর্যন্ত কোনও রিডাইরেকশন হবে না।

স্কিন অবজেক্ট \Website\admin\skins ফোল্ডারে থাকে।

 

সাইট গ্রুপ

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

 

DNN মডিউল তৈরীর সরঞ্জাম (Tools to develop Modules for DNN)

DNN এর পূর্ন রুপ হচ্ছে ডটনেট নিঊক।

DNN এর মডিউল তৈরী  করা যেতে পারে অনেক গুলো সরঞ্জাম দিয়ে। এবং তার মধ্যে সব থেকে সাধারন সরঞ্জাম/Tool হচ্ছে ভিজুয়াল স্টুডিও ২০১০ এবং ২০১২।

মডিউল তৈরী করার প্রথম ধাপ হলো মডিউল তৈরীর সবরকম পরিবেশ প্রস্তত করে রাখা। সে জন্য আপনাকে মডিউল তৈরীর টেমপ্লেট ইনস্টল করতে হবে। এবং এটা ইনস্টলের মাধ্যমে আপনি একটা মডিউল প্রকল্প/project তৈরি প্রক্রিয়ার মধ্যে যেতে পারেন।

এটা একটা খুব ই সাধারন ঘটনা যে মডিউল কিছু বাছাই করা SQL স্ক্রিপ্ট সরবরাহ করে ডাটা রাখার জন্য, তাই সাধারন ভাবেই মডিউলের থাকতে হয় নিজস্ব টেবিল যেখানে ডাটা স্টোর করে রাখা হয়।

মডিউল উন্নয়নের/তৈরীর  জন্য দ্বিতীয় ধাপে আপনার যে সকল সফটওয়্যার লাগবে তা নিম্ন দেওয়া হলো

  1. ভিজুয়াল স্টুডিও
  2. SQL Server
  3. IIS
  4. ReShaper
  5. Core API Help File

 

ভিজুয়াল স্টুডিও

ভিজুয়াল স্টুডিও একটি মাইক্রোসফটের এপ্লিকেসন উন্নয়ন সফটওয়্যার । এবং এই সফটওয়্যার সব থেকে বেশি ব্যবহার করা হয় মডিউল উন্নয়নের জন্য। ভিজুয়াল স্টুডিও
প্রধানত ব্যবহার করা হয় মডিউলের কোড পরিচালনা/Execute করতে, কম্পাইল করতে এবং ডিবাগ করতে।

SQL Server

SQL Server হলো মাক্রোসফটের ডাটাবেজ সফটওয়্যার ।এটা ও একটি সফটওয়্যার যেটি মডিউল উন্নয়নের
জন্য  ব্যবহার করা হয়।SQL Server ডাটাকে স্টোর করে রাখার জন্য ও ব্যবহার করা হয়।
এটা সত্য যে আপনি SQL সরাসরি যোগাযোগ না করে ও মডিউল উন্নয়ন করতে পারবেন

IIS

IIS এর পূর্ন রুপ হচ্ছে ইন্টারনেট ইনফরমেশন সারভিসেস।সাধারনত উইন্ডোজ চালিত কম্পিউটারে IIS. সফটওয়্যার ইনস্টল দেওয়া থাকে মাইক্রোসফট উইন্ডোজ ব্যবহার কারীদের ইন্টারনেট ভিত্তিক সেবা প্রদান করার জন্য।

ReShaper

ReShaper একটি সফটওয়্যার  যেটা ভিজুয়াল স্টুডিও এর সাথে  ব্যবহার করা হয় । এটা খুব দরকারি নয় যে মডিউল উন্নয়নের জন্য ReShaper ব্যবহার করতেই হবে।তবে মডিউল উন্নয়নের/তৈরীর বিশেষ সাহায্যকারী রুপে ব্যবহার করা হয় ReShaper।

Core API Help File

API এর পূর্ন রুপ হচ্ছে Application Programming Interface. সব সময় DNN এর একটি নতুন সংস্করণ এর সাথে একটি নতুন কোর এপিআই এবং একটি হেল্প ফাইল প্রকাশিত হয় কোডপ্লেক্সে।

কোর এপি আই ফাইলের একটি সার্চ ফিচার আছে।

 

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

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}.

পাইথন গ্রাফিক্যাল ইউজার ইন্টারফেস প্রোগ্রামিং (Tkinter) (Python GUI Programming (Tkinter))

Python GUI Programming (Tkinter)

গ্রাফিকাল ইউসার ইন্টারফেস (GUIs) ডেভেলাপ করার জন্য Python বেশ কিছু অপশন দিয়ে থাকে। এদের মধ্যে সবচেয়ে গুরুত্বপূর্ন হল Tkinter (Python এর সাথে সরবরাহকৃত GUI toolkit এর ইন্টারফেস), wxPython (ওপেন-সোর্স Python ইনটারফেস, http://wxpython.org এ পাওয়া যাবে), এবং JPython (Java’র জন্য প্রচলিত Python পোর্ট, http://www.jython.org এ পাওয়া যাবে)। এছাড়াও আরও অনেক ইন্টারফেস আছে, যেগুলো ইন্টারনেটে পাওয়া যাবে।

 

Tkinter Programming

Tkinter হচ্ছে Python এর জন্য আদর্শ GUI লাইব্রেরী, এর সাথে Python কে সংযুক্ত করলে দ্রুত ও সহজেই GUI অ্যাপ্লিকেশন তৈরি করা যায়। Tkinter এর জন্য Tk GUI toolkit একটি শক্তিশালী object-oriented ইন্টারফেস দেয়।

Tkinter দিয়ে GUI application তৈরি করার স্টেপ গুলো হচ্ছেঃ

  • Tkinter মোডিউল ইম্পোর্ট করতে হবে।
  • মেইন উইন্ডো তে GUI অ্যাপ্লিকেশন ক্রিয়েট করতে হবে।
  • উপরের এক বা একাধিক widgets GUI অ্যাপ্লিকেশনে যোগ করতে হবে।
  • ইউসার এর ট্রিগার করা প্রতিটি ইভেন্ট অনুযায়ী কাজ করার জন্য মেইন ইভেন্ট লুপে এন্টার করুন ।

 

উদাহরণঃ


#!/usr/bin/python

import Tkinter
top = Tkinter.Tk()
# Code to add widgets will go here...
top.mainloop()

 

এর ফলে নিচের উইন্ডোটি তৈরি হবে।

Tkinter Widgets

Tkinter, GUI application এ ব্যবহৃত বিভিন্ন ধরনের কন্ট্রোল দিয়ে থাকে, যেমন বাটন, লেবেল, টেক্সট বক্স ইত্যাদি। এই কন্ট্রোল গুলোকে Widgets বলে। বর্তমানে Tkinter এ মোট ১৫ ধরনের widgets আছে। নিচে এদের বর্ননা দেয়া হল।

 

অপারেটর বর্ণনা
Button আপনার অ্যাপ্লিকেশন এ বাটন প্রদর্শনের জন্য ব্যবহৃত হয়।
Canvas আপনার অ্যাপ্লিকেশন এ বিভিন্ন আকৃতি অঙ্কনের জন্য ব্যবহৃত হয়। যেমন - লাইন, ovals, বহুভুজ এবং আয়তক্ষেত্র ইত্যাদি।
Checkbutton checkboxe হিসেবে অপশন প্রদর্শনের জন্য ব্যবহৃত হয়। ইউজার একইসাথে একাধিক অপশন নির্বাচন করতে পারে।
Entry ব্যবহারকারীর কাছ থেকে মান গ্রহণ করার ক্ষেত্রে সকল উইজেট এর জন্য এক লাইনের টেক্সট ফিল্ড প্রদর্শনর জন্য ব্যবহৃত হয়।
Frame একটি ধারক উইজেট হিসেবে অন্যান্য উইজেট সজ্জিত করার জন্য ব্যবহৃত হয়।
Label অন্যান্য উইজেট এর জন্য এক লাইনের ক্যাপশন দেয়ার জন্য ব্যবহৃত হয়। এটি ইমেজও ধারণ করতে পারে।
Listbox ব্যবহারকারীদের জন্য একটি তালিকা দেখানোর জন্য ব্যবহৃত হয়।
Menubutton আপনার অ্যাপ্লিকেশন এ মেনু প্রদর্শনের জন্য ব্যবহৃত হয়।
Menu The Menu widget is used to provide various commands to a user. These commands are contained inside Menubutton.
Message ব্যবহারকারীর কাছ থেকে মান গ্রহণ করার জন্য একাধিক লাইনের টেক্সট ফিল্ড প্রদর্শনে ব্যবহৃত হয়।
Radiobutton রেডিও বাটন হিসেবে অপশন প্রদর্শনের জন্য ব্যবহৃত হয়। ইউজার একটিমাত্র অপশন নির্বাচন করতে পারে।
Scale স্লাইডার উইজেট প্রদানের জন্য ব্যবহৃত হয়।
Scrollbar স্ক্রলবার উইজেট যেমন তালিকা বাক্স এ বিভিন্ন উইজেট এর স্ক্রলিং সামর্থ্য যোগ করার জন্য ব্যবহার করা হয়
Text টেক্সট উইজেটের একাধিক লাইনে লেখা দেখাতে ব্যবহার করা হয়
Toplevel একটি পৃথক উইন্ডো ধারক প্রদান করতে ব্যবহৃত হয়
Spinbox Spinbox widget অন্যান্য সাধারণ ফাঁকা উইজেট থেকে ভিন্নতর। এটি নির্দিষ্ট সংখ্যক মান হতে  একটি নির্বাচন করতে ব্যবহৃত হয়।
PanedWindow এটি একটি ধারক উইজেট যা অনুভূমিকভাবে বা উল্লম্বভাবে সাজিয়ে যেকোন সংখ্যক ফলক (panes) ধারণ করতে পারে।
LabelFrame labelframe একটি সহজ ধারক উইজেট। এর প্রাথমিক উদ্দেশ্য হল জটিল উইন্ডো বিন্যাস এর জন্য একটি spacer বা ধারক হিসেবে কাজ করা।
tkMessageBox এই মডিউলের সাহায্যে আপনি আপনার অ্যাপ্লিকেশনে মেসেজ বাক্সে প্রদর্শন করতে ব্যবহৃত হয়।

 

স্ট্যান্ডার্ড এট্রিবিউট

নিচে কিছু সাইজ, কালার, ফন্ট সহ কিছু স্ট্যান্ডার্ড এট্রিবিউট এর স্পেসিফিকেশন দেয়া হলঃ

 

Geometry Management

সব Tkinter widgets ই বিশেষ কিছু geometry management মেথড অনুসরণ করতে পারে, যেগুলো parent widget area এর সাহায্যে widgets সাজাতে পারে। Tkinter নিচের geometry manager মেথডগুলো তৈরি করে।

  • Pack()Method - widgets গুলোকে parent widget এ রাখার আগে ব্লক আকারে সাজিয়ে নেয়।
  • Grid()Method – widgets গুলোকে টেবিল আকারে সাজায়।
  • Place()Method – widgets গুলোকে parent widget এর একটি নির্দিষ্ট স্থানে রাখে।

 

পাইথন প্রোগ্রামিং : তালিকা (Python Lists in Bangla)

1.11 Python Lists

Python এর সবচেয়ে বেসিক ডাটা স্ট্রাকচার হচ্ছে sequence. এর প্রতিটি উপাদান এর সাথে একটি নাম্বার assign করা থাকে, যা এর অবস্থান/ ইন্ডেক্স নির্দেশ করে। সর্ব প্রথম ইন্ডেক্স হচ্ছে ০, তারপরেরটা ১, তারপরেরটা ২... ইত্যাদি !

Python এ ৬ ধরনের built-in sequence আছে, তাদের মধ্যে সবচেয়ে প্রচলিত হচ্ছে lists আর tuples। sequence টাইপের সাহায্যে indexing, slicing, adding, multiplying, ও checking করা যায়। এছাড়াও Python এর বিল্ট-ইন ফাংশনের সাহায্যে যেকোনো sequence এর দৈর্ঘ্য হিসেব করা যায় যার সাহায্যে দীর্ঘতম ও ক্ষুদ্রতম প্রোসেস বের করা যায়।

 

Python Lists

List হচ্ছে Python এর সবচেয়ে বৈচিত্রপূর্ণ ডাটা টাইপ, যেটি থার্ড ব্র্যাকেট [ ] এর ভেতর কমার সাহায্যে উপাদান সহ প্রকাশ করা হয়। List এর উপাদানগুলো একরকম ডাটা টাইপ হবার প্রয়োজন নেই। যেমন,


list1 = ['physics', 'chemistry', 1997, 2000];
list2 = [1, 2, 3, 4, 5 ];
list3 = ["a", "b", "c", "d"];

 

স্ট্রিং এর মত, লিস্টের মান ০ থেকে শুরু হয়, এবং একে sliced, concatenated করা যায়।

 

Accessing Values in Lists

List এর মান print করতে [ ] ও ইনডেক্স নাম্বার (০, ১ ইত্যাদি) ব্যবহার করা হয়। যেমন,


#!/usr/bin/python

list1 = ['physics', 'chemistry', 1997, 2000];
list2 = [1, 2, 3, 4, 5, 6, 7 ];

print "list1[0]: ", list1[0]
print "list2[1:5]: ", list2[1:5]

 

উপরের প্রোগ্রামটির রেসাল্ট হবে,


list1[0]:  physics
list2[1:5]:  [2, 3, 4, 5]


 

Updating Lists

একটি list এর এক বা একাধিক উপাদান এর মান নিচের মত আপডেট করা যায়ঃ


#!/usr/bin/python

list = ['physics', 'chemistry', 1997, 2000];

print "Value available at index 2 : "
print list[2]
list[2] = 2001;
print "New value available at index 2 : "
print list[2]

 

এখানে list[2] মান দ্বিতীয় স্টেটমেন্ট এ আপডেট করা হয়েছে। উপরের কোডটি রান করালে নিচের ফলাফল আসবে।


Value available at index 2 :
1997
New value available at index 2 :
2001


 

Delete List Elements

del statement এর সাহায্যে একটি নির্দিষ্ট উপাদান ডিলেট করা যায়, remove() মেথডের সাহায্যে কোন অজানা উপাদান ডিলেট করা যায়, যেমনঃ


#!/usr/bin/python

list1 = ['physics', 'chemistry', 1997, 2000];

print list1
del list1[2];
print "After deleting value at index 2 : "
print list1

 

উপরের প্রোগ্রামটির রেসাল্ট হবে,


['physics', 'chemistry', 1997, 2000]
After deleting value at index 2 :
['physics', 'chemistry', 2000]

 

Basic List Operations

Python Expression Results Description
len([1, 2, 3]) 3 Length
[1, 2, 3] + [4, 5, 6] [1, 2, 3, 4, 5, 6] Concatenation
['Hi!'] * 4 ['Hi!', 'Hi!', 'Hi!', 'Hi!'] Repetition
3 in [1, 2, 3] True Membership
for x in [1, 2, 3]: print x, 1 2 3 Iteration

 

Indexing, Slicing, and Matrixes

মনে করি,


L = ['spam', 'Spam', 'SPAM!']

 

 

Python Expression Results Description
L[2] 'SPAM!' Offsets start at zero
L[-2] 'Spam' Negative: count from the right
L[1:] ['Spam', 'SPAM!'] Slicing fetches sections

 

Built-in List Functions & Methods:

Python এ নিচের List Functions গুলো ব্যবহৃত হয়ঃ

SN Function with Description
1 cmp(list1, list2)
Compares elements of both lists.
2 len(list)
Gives the total length of the list.
3 max(list)
Returns item from the list with max value.
4 min(list)
Returns item from the list with min value.
5 list(seq)
Converts a tuple into list.

 

Python নিচের list methods গুলো ব্যবহার করে।

SN Methods with Description
1 list.append(obj)
Appends object obj to list
2 list.count(obj)
Returns count of how many times obj occurs in list
3 list.extend(seq)
Appends the contents of seq to list
4 list.index(obj)
Returns the lowest index in list that obj appears
5 list.insert(index, obj)
Inserts object obj into list at offset index
6 list.pop(obj=list[-1])
Removes and returns last object or obj from list
7 list.remove(obj)
Removes object obj from list
8 list.reverse()
Reverses objects of list in place
9 list.sort([func])
Sorts objects of list, use compare func if given

 

পাইথন প্রোগ্রামিং : স্ট্রিং (Python Strings in Bangla)

1.10 Python Strings

Accessing Values in Strings

নিচের কোডটি লক্ষ্য করি,


#!/usr/bin/python

var1 = 'Hello World!'
var2 = "Python Programming"

print "var1[0]: ", var1[0]
print "var2[1:5]: ", var2[1:5]

 

উপরের কোডটি রান করালে নিচের ফলাফল প্রিন্ট হবে।


var1[0]:  H
var2[1:5]:  ytho

 

Updating Strings

অন্য একটি স্ট্রিং এর সাথে কোন ভেরিয়েবল এসাইন করে একটি স্ট্রিং কে আপডেট করা যায়। যেমনঃ


#!/usr/bin/python

var1 = 'Hello World!'

print "Updated String :- ", var1[:6] + 'Python'

 

উপরের কোডটি রান করালে নিচের ফলাফল আসবে।


Updated String :- Hello Python

 

Escape Characters

নিচের টেবিলে কিছু Escape Characters দেয়া হল, যেগুলো কখনো প্রোগ্রাম রেসাল্টের প্রিন্টে আসে না। এধরনের Escape Characters ব্যবহার করতে কিছু Backslash notation ব্যবহৃত হয়।

 

Backslash
notation
Hexadecimal
character
Description
\a 0x07 Bell or alert
\b 0x08 Backspace
\cx Control-x
\C-x Control-x
\e 0x1b Escape
\f 0x0c Formfeed
\M-\C-x Meta-Control-x
\n 0x0a Newline
\nnn Octal notation, where n is in the range 0.7
\r 0x0d Carriage return
\s 0x20 Space
\t 0x09 Tab
\v 0x0b Vertical tab
\x Character x
\xnn Hexadecimal notation, where n is in the range 0.9, a.f, or A.F

 

Triple Quotes

Python এ triple quote এর সাহায্যে একাধিক লাইনের স্টেটমেন্ট লেখা হয়। triple quote বোঝাতে তিনটি সিঙ্গেল (’’’) অথবা ডাবল কোটিং (”””) চিহ্ন ব্যবহৃত হয়।


#!/usr/bin/python

para_str = """this is a long string that is made up of
several lines and non-printable characters such as
TAB ( \t ) and they will show up that way when displayed.
NEWLINEs within the string, whether explicitly given like
this within the brackets [ \n ], or just a NEWLINE within
the variable assignment will also show up.
"""
print para_str

 

উপরের কোডটির রেসাল্ট হবে,


this is a long string that is made up of
several lines and non-printable characters such as
TAB (    ) and they will show up that way when displayed.
NEWLINEs within the string, whether explicitly given like
this within the brackets [
 ], or just a NEWLINE within
the variable assignment will also show up.

 

Raw strings ব্যবহার করলে backslash character গুলোর ব্যবহার হয় না। যেমন,


#!/usr/bin/python

print r'C:\\nowhere'

 

উপরের কোডটি চালালে নিচের রেসাল্ট আসবে।


C:\\nowhere


 

Unicode String

Normal strings গুলোকে Python 8-bit ASCII ফরম্যাটে স্টোর করে, কিন্তু Unicode strings গুলো 16-bit Unicode আকারে স্টোর হয়। এর ফলে একটু ভিন্ন ধরনের ক্যারেকটার ব্যবহার করা সম্ভব হয়।


#!/usr/bin/python

print u'Hello, world!'

 

উপরের কোডটি নিচের রেসাল্ট দিবে।


Hello, world!

 

Unicode strings এ prefix u ব্যবহৃত হয়, আর raw strings এ prefix r এর ব্যবহার হয়।

 

Built-in String Methods

Python নিচের বিল্ট−ইন মেথোডগুলোর সাহায্যে স্ট্রিং গুলোকে প্রভাবিত করতে পারে।

SN Methods with Description
1 capitalize()
Capitalizes first letter of string
2 center(width, fillchar)
Returns a space-padded string with the original string centered to a total of width columns.
3 count(str, beg= 0,end=len(string))
Counts how many times str occurs in string or in a substring of string if starting index beg and ending index end are given.
4 decode(encoding='UTF-8',errors='strict')
Decodes the string using the codec registered for encoding. encoding defaults to the default string encoding.
5 encode(encoding='UTF-8',errors='strict')
Returns encoded string version of string; on error, default is to raise a ValueError unless errors is given with 'ignore' or 'replace'.
6 endswith(suffix, beg=0, end=len(string))
Determines if string or a substring of string (if starting index beg and ending index end are given) ends with suffix; returns true if so and false otherwise.
7 expandtabs(tabsize=8)
Expands tabs in string to multiple spaces; defaults to 8 spaces per tab if tabsize not provided.
8 find(str, beg=0 end=len(string))
Determine if str occurs in string or in a substring of string if starting index beg and ending index end are given returns index if found and -1 otherwise.
9 index(str, beg=0, end=len(string))
Same as find(), but raises an exception if str not found.
10 isalnum()
Returns true if string has at least 1 character and all characters are alphanumeric and false otherwise.
11 isalpha()
Returns true if string has at least 1 character and all characters are alphabetic and false otherwise.
12 isdigit()
Returns true if string contains only digits and false otherwise.
13 islower()
Returns true if string has at least 1 cased character and all cased characters are in lowercase and false otherwise.
14 isnumeric()
Returns true if a unicode string contains only numeric characters and false otherwise.
15 isspace()
Returns true if string contains only whitespace characters and false otherwise.
16 istitle()
Returns true if string is properly "titlecased" and false otherwise.
17 isupper()
Returns true if string has at least one cased character and all cased characters are in uppercase and false otherwise.
18 join(seq)
Merges (concatenates) the string representations of elements in sequence seq into a string, with separator string.
19 len(string)
Returns the length of the string
20 ljust(width[, fillchar])
Returns a space-padded string with the original string left-justified to a total of width columns.
21 lower()
Converts all uppercase letters in string to lowercase.
22 lstrip()
Removes all leading whitespace in string.
23 maketrans()
Returns a translation table to be used in translate function.
24 max(str)
Returns the max alphabetical character from the string str.
25 min(str)
Returns the min alphabetical character from the string str.
26 replace(old, new [, max])
Replaces all occurrences of old in string with new or at most max occurrences if max given.
27 rfind(str, beg=0,end=len(string))
Same as find(), but search backwards in string.
28 rindex( str, beg=0, end=len(string))
Same as index(), but search backwards in string.
29 rjust(width,[, fillchar])
Returns a space-padded string with the original string right-justified to a total of width columns.
30 rstrip()
Removes all trailing whitespace of string.
31 split(str="", num=string.count(str))
Splits string according to delimiter str (space if not provided) and returns list of substrings; split into at most num substrings if given.
32 splitlines( num=string.count('\n'))
Splits string at all (or num) NEWLINEs and returns a list of each line with NEWLINEs removed.
33 startswith(str, beg=0,end=len(string))
Determines if string or a substring of string (if starting index beg and ending index end are given) starts with substring str; returns true if so and false otherwise.
34 strip([chars])
Performs both lstrip() and rstrip() on string
35 swapcase()
Inverts case for all letters in string.
36 title()
Returns "titlecased" version of string, that is, all words begin with uppercase and the rest are lowercase.
37 translate(table, deletechars="")
Translates string according to translation table str(256 chars), removing those in the del string.
38 upper()
Converts lowercase letters in string to uppercase.
39 zfill (width)
Returns original string leftpadded with zeros to a total of width characters; intended for numbers, zfill() retains any sign given (less one zero).
40 isdecimal()
Returns true if a unicode string contains only decimal characters and false otherwise.

 

পাইথন প্রোগ্রামিং : নাম্বার (Python Numbers in bangla)

1.9 Python Numbers

Number ডাটা টাইপের সাহায্যে সংখ্যা স্টোর করা যায়। যখনই একটি number ডাটা টাইপের মান পরিবর্তন করা হবে তখন একটি নতুন অবজেক্ট তৈরি হবে।


var1 = 1
var2 = 10

 

del statement এর সাহায্যে number অবজেক্টের রেফারেন্স ডিলেট করা যায়। যেমন,


del var1[,var2[,var3[....,varN]]]]

 

del statement এর সাহায্যে এক বা একাধিক স্টেটমেন্ট ডিলেট করা যায়। যেমন,


del var
del var_a, var_b

 

Python চার ধরনের number টাইপ সমর্থন করে। যেমনঃ

  • int = পূর্ণ সংখ্যা
  • long = আনলিমিটেড সাইজের পূর্ণসংখ্যা, এদেরকে integers এর মতই লেখা হয়, তবে শেষে একটি ছোট কিংবা বড় হাতের L থাকে। বড় হাতের L লেখার সুবিধা হচ্ছে সেটার সাথে ১ এর মিল থাকে না।
  • float = বাস্তব সংখ্যা। Float লিখার সময় অনেক ক্ষেত্রে E বা e ব্যবহৃত হয়, যা দিয়ে ১০ এর পাওয়ার বোঝায় (2.5e2 = 2.5 x 102= 250)।
  • complex = জটিল সংখ্যা, এরা a + bJ, যেখানে a এবং b হচ্ছে float এবং J এর মানে -১ এর বর্গমূল থাকে। Python প্রোগ্রামিং এ complex number এর তেমন একটা ব্যবহার নেই।

 

উদাহরনঃ

int long float complex
10 51924361L 0.0 3.14j
100 -0x19323L 15.20 45.j
-786 0122L -21.9 9.322e-36j
080 0xDEFABCECBDAECBFBAEL 32.3+e18 .876j
-0490 535633629843L -90. -.6545+0J
-0x260 -052318172735L -32.54e100 3e+26J
0x69 -4721885298529L 70.2-E12 4.53e-7j

 

Mathematical Functions

Python নিচের ফাংশনগুলোর সাহায্যে গাণিতিক হিসাব নিকাশ করে থাকে।

Function Returns ( description )
abs(x) The absolute value of x: the (positive) distance between x and zero.
ceil(x) The ceiling of x: the smallest integer not less than x
cmp(x, y) -1 if x < y, 0 if x == y, or 1 if x > y
exp(x) The exponential of x: ex
fabs(x) The absolute value of x.
floor(x) The floor of x: the largest integer not greater than x
log(x) The natural logarithm of x, for x> 0
log10(x) The base-10 logarithm of x for x> 0 .
max(x1, x2,...) The largest of its arguments: the value closest to positive infinity
min(x1, x2,...) The smallest of its arguments: the value closest to negative infinity
modf(x) The fractional and integer parts of x in a two-item tuple. Both parts have the same sign as x. The integer part is returned as a float.
pow(x, y) The value of x**y.
round(x [,n]) x rounded to n digits from the decimal point. Python rounds away from zero as a tie-breaker: round(0.5) is 1.0 and round(-0.5) is -1.0.
sqrt(x) The square root of x for x > 0

 

Random Number Functions

Random numbers গেমস, সিমুলেশন, টেস্টিং, সিকিউরিটি ইত্যাদি এপ্লিকেশনে ব্যবহৃত হয়। Python নিচের ফাংশনগুলো প্রতিনিয়ত ব্যবহার করে।

Function Description
choice(seq) A random item from a list, tuple, or string.
randrange ([start,] stop [,step]) A randomly selected element from range(start, stop, step)
random() A random float r, such that 0 is less than or equal to r and r is less than 1
seed([x]) Sets the integer starting value used in generating random numbers. Call this function before calling any other random module function. Returns None.
shuffle(lst) Randomizes the items of a list in place. Returns None.
uniform(x, y) A random float r, such that x is less than or equal to r and r is less than y

 

Trigonometric Functions

Python নিচের ফাংশনগুলোর সাহায্যে ত্রিকোণমিতৃক হিসেব-নিকাশ করে থাকে।

Function Description
acos(x) Return the arc cosine of x, in radians.
asin(x) Return the arc sine of x, in radians.
atan(x) Return the arc tangent of x, in radians.
atan2(y, x) Return atan(y / x), in radians.
cos(x) Return the cosine of x radians.
hypot(x, y) Return the Euclidean norm, sqrt(x*x + y*y).
sin(x) Return the sine of x radians.
tan(x) Return the tangent of x radians.
degrees(x) Converts angle x from radians to degrees.
radians(x) Converts angle x from degrees to radians.

Mathematical Constants

Python এ pi এবং e ধ্রুবক গুলোর ব্যবহার রয়েছে।

পাইথন প্রোগ্রামিং : লুপ (Python Loops)

1.8 Python Loops

অনেক সময় এমন অবস্থা তৈরি হয় যে একটি নির্দিষ্ট ব্লকের কোড অনেকবার চালানো লাগে, তখন লুপ এর প্রয়োজন হয়। নিচের ছবিটি লক্ষ্য করিঃ

Loop

Python প্রোগ্রামিং ল্যাঙ্গুয়েজে নিচের লুপ গুলো প্রচলিত

.

Loop Type Description
while loop Repeats a statement or group of statements while a given condition is TRUE. It tests the condition before executing the loop body.
for loop Executes a sequence of statements multiple times and abbreviates the code that manages the loop variable.
nested loops You can use one or more loop inside any another while, for or do..while loop.

 

Loop Control Statements

কোডিং এর সময় সাধারণ নিয়মের/ সিরিয়ালের পরিবর্তন বোঝাতে Loop control statements এর প্রয়োজন হয়। যখন একটি নির্দিষ্ট লুপের পরিসীমার বাইরের কোড রান হয় তখন ঐ পরিসীমার সকল অবজেক্ট ধ্বংস হয়ে যায়। Python নিচের কন্ট্রোল স্টেটমেন্ট গুলো সাপোর্ট করে।

 

Control Statement Description
break statement Terminates the loop statement and transfers execution to the statement immediately following the loop.
continue statement Causes the loop to skip the remainder of its body and immediately retest its condition prior to reiterating.
pass statement The pass statement in Python is used when a statement is required syntactically but you do not want any command or code to execute.

 

সিএসএস৩ গোলাকৃতির কর্ণার (CSS3 Rounded Corners in Bangla)

সিএসএস৩ border-radius প্রোপার্টি সাহায্যে আপনি যেকোন এলিমেনন্ট এর “গোলাকৃতির কোর্ণার বা পার্শ্ব” তৈরি করতে পারেন।

ব্রাউজার সাপর্ট

টেবিলে উল্লেখিত সংখ্যা ব্রাউজার এর প্রথম ভার্সন যা এই প্রোপার্টি সম্পূর্ণভাবে সাপর্ট করে তা বোঝায়।

-webkit- বা -moz- দ্বারা প্রথম প্রিফিক্স ভার্সন বুঝায় যা এই প্রোপার্টি সাপর্ট করে।

Property  Internet Explorer Google Crome  Mozila Firefox  Safari Opera
border-radius 9.0 5.0
4.0 -webkit-
4.0
3.0 -moz-
5.0
3.1 -webkit-
10.5

 

সিএসএস৩ border-radius প্রোপার্টি

সিএসএস৩ এ এ border-radius  প্রোপার্টি এর সাহায্যে যেকোন এলিমেন্ট  এর "rounded corners" প্রদান করতে পারেন।

এখানে কিছু উদাহরণ দেয়া হলো:

নির্দিষ্ট ব্যাকগ্রাউন্ড রং বিশিষ্ট একটি এলিমেন্ট এর গোলাকৃতি পার্শ্ব :

Rounded corners!

 

বর্ডার বিশিষ্ট একটি এলিমেন্ট এর গোলাকৃতি পার্শ্ব:

Rounded corners!

 

নির্দিষ্ট ব্যাকগ্রাউন্ড ছবি বিশিষ্ট একটি এলিমেন্ট এর গোলাকৃতি পার্শ্ব :

Rounded corners!

 

এর কোড হচ্ছে:


#rcorners1 {
    border-radius: 25px;
    background: #8AC007;
    padding: 20px;
    width: 200px;
    height: 150px;
}

#rcorners2 {
    border-radius: 25px;
    border: 2px solid #8AC007;
    padding: 20px;
    width: 200px;
    height: 150px;
}

#rcorners3 {
    border-radius: 25px;
    background: url(paper.gif);
    background-position: left top;
    background-repeat: repeat;
    padding: 20px;
    width: 200px;
    height: 150px;
}

 

টিপস: border-radius হচ্ছে border-top-left-radius, border-top-right-radius, border-bottom-right-radius এবং border-bottom-left-radius এর সংক্ষিপ্ত প্রোপার্টি।

 

সিএসএস৩ border-radius প্রতিটি আলাদা পার্শ্ব পরিবর্তন

যদি আপনি border-radius প্রোপার্টি এর একটিমাত্র মান নির্ধারণ করেন তাহলে তা চারটি কর্ণারের উপরই কার্যকর হবে।

যদি আপনি চান তাহলে প্রতিটি আলাদা পার্শ্ব এর মান নির্ধারণ করে দিতে পারেন। এখানে তার নিয়ম দেয়া হলো:

  • চারটি মান: প্রথম মান উপরের বাম পাশের, দ্বিতীয় মান উপরের ডান পাশের, তৃতীয় মান নিচের ডান পাশের এবং চতুর্থ মান নিচের বাম পাশের কর্ণারের উপর প্রয়োগ হয়।
  • তিনটি মান: প্রথম মান উপরের বাম পাশে, দ্বিতীয় মান উপরের ডান পাশ ও নিচের বাম পাশে এবং তৃতীয় মান নিচের ডান পাশের কর্ণারের উপর কাজ করে।
  • দুইটি মান: প্রথম মান উপরের বাম পাশ ও নিচের ডান পাশ এবং দ্বিতীয় মান উপরের ডান পাশ ও নিচের বাম পাশের কর্ণারের উপর কাজ করে।
  • একটি মান: চারটি কর্ণরকেই সমানভাবে গোলাকৃতি করে।

 

এখানে তিনটি উদাহরণ দেয়া হলো:

১. চারটি মান - border-radius: 15px 50px 30px 5px:

Rounded corners!

২. তিনটি মান - border-radius: 15px 50px 30px:

Rounded corners!

৩. দুইটি মান - border-radius: 15px 50px:

Rounded corners!

 

এখানে এর কোড দেয়া হলো:


#rcorners4 {
    border-radius: 15px 50px 30px 5px;
    background: #8AC007;
    padding: 20px;
    width: 200px;
    height: 150px;
}

#rcorners5 {
    border-radius: 15px 50px 30px;
    background: #8AC007;
    padding: 20px;
    width: 200px;
    height: 150px;
}

#rcorners6 {
    border-radius: 15px 50px;
    background: #8AC007;
    padding: 20px;
    width: 200px;
    height: 150px;
}

 

আপনি উপবৃত্তাকার কোণও তৈরি করতে পারেন:


#rcorners7 {
    border-radius: 50px/15px;
    background: #8AC007;
    padding: 20px;
    width: 200px;
    height: 150px;
}

#rcorners8 {
    border-radius: 15px/50px;
    background: #8AC007;
    padding: 20px;
    width: 200px;
    height: 150px;
}

#rcorners9 {
    border-radius: 50%;
    background: #8AC007;
    padding: 20px;
    width: 200px;
    height: 150px;
}

পাইথন প্রোগ্রামিং : সিদ্ধান্ত গ্রহণ (Python Decision Making)

1.7 Python Decision Making

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

Decision Making

কোন শর্ত যদি মিথ্যা হয়, তবে Python সেটার ফলাফল ধরে শূন্য (=০), আর যদি সত্য হয় তবে সেক্ষেত্রে ০ ছাড়া যেকোনো মান (সাধারণত = ১)। নিচে Python এ ব্যবহৃত Decision Making টাইপ গুলো বলা হলঃ

if statements

if statement এ অন্যান্য প্রোগ্রামিং ল্যাংগুয়েজের মতই একটি শর্ত থাকে যার সাহায্যে একাধিক ডাটার তুলনা করা হয়, এবং সিদ্ধান্ত নেয়া হয়। এই স্টেটমেন্টটি boolean expression অনুসরন করে (অর্থাৎ শর্তটি সত্য নাকি মিথ্যা সেটা যাচাই করে) শুধুমাত্র ২ ধরনের ফলাফল দিতে পারে।

Syntax


if expression:
   statement(s)

 

যদি If এর পরে ব্যবহৃত boolean expression টি TRUE হয়, তবে পরবর্তী statement(s) টি ঘটবে, আর যদি FALSE হয়, তবে if statement(s) টি শেষ হবে এবং এর পরের প্রথম code টি ঘটবে।

উদাহরণ


#!/usr/bin/python

var1 = 100
if var1:
   print "1 - Got a true expression value"
   print var1

var2 = 0
if var2:
   print "2 - Got a true expression value"
   print var2
print "Good bye!"

 

উপরের প্রোগ্রামটি রান করালে নিচের ফলাফল প্রিন্ট হবে।


1 - Got a true expression value
100
Good bye!

 

আবার, if statement এর পরে এক লাইনের শর্ত (স্টেটমেন্ট) থাকলে সেটি if statement এর পরেই একই লাইনে লেখা যেতে পারে। যেমন,


#!/usr/bin/python

var = 100

if ( var  == 100 ) : print "Value of expression is 100"

print "Good bye!"

 

উপরের প্রোগ্রামটি রান করালে নিচের ফলাফল প্রিন্ট হবে।


Value of expression is 100
Good bye!

 

if...else statements

এক্ষেত্রে if statement এর পরেই একটি else statement ও থাকে, যার ফলে যদি প্রথম if statement টি মিথ্যা হয় (মান=০) তবে পরবর্তী else statement এর কোডটি ঘটবে।

Syntax


if expression:
   statement(s)
else:
   statement(s)

 

উদাহরণ


#!/usr/bin/python

var1 = 100
if var1:
   print "1 - Got a true expression value"
   print var1
else:
   print "1 - Got a false expression value"
   print var1

var2 = 0
if var2:
   print "2 - Got a true expression value"
   print var2
else:
   print "2 - Got a false expression value"
   print var2

print "Good bye!"

 

উপরের প্রোগ্রামটি রান করালে নিচের ফলাফল প্রিন্ট হবে।


1 - Got a true expression value
100
2 - Got a false expression value
0
Good bye!

 

elif Statement

elif statement এর সাহায্যে একটি if statement এর পরে একসঙ্গে একাধিক এক্সপ্রেশন (elif statement) যাচাই করে দেখা যায় কোনটা সত্য, তারপর যেই স্টেটমেন্টটি সত্য (TRUE) সেটার কোড চালু হয়। else এর মত elif statement ও optional.

syntax


if expression1:
   statement(s)
elif expression2:
   statement(s)
elif expression3:
   statement(s)
else:
   statement(s)

 

Python এ switch কিংবা case statements নেই, তবে switch করার দরকার পরলে if..elif...statements দিয়ে কাজ চালানো যায়।

উদাহরণ


#!/usr/bin/python

var = 100
if var == 200:
   print "1 - Got a true expression value"
   print var
elif var == 150:
   print "2 - Got a true expression value"
   print var
elif var == 100:
   print "3 - Got a true expression value"
   print var
else:
   print "4 - Got a false expression value"
   print var

print "Good bye!"

 

উপরের প্রোগ্রামটি রান করালে নিচের ফলাফল প্রিন্ট হবে।


3 - Got a true expression value
100
Good bye!


nested if statements

একটি শর্ত পূরন হবার পরে আরেকটি ভিন্ন শর্ত পূরন হয়েছে কিনা সেটা দেখতে nested if  স্টেটমেন্ট ব্যবহার হয়। এই ধরনের Decision making অপেক্ষাকৃত জটিল, এবং এখানে একটি  if... elif... else এর অংশ হতে পারে।

Syntax:


if expression1:
   statement(s)
   if expression2:
      statement(s)
   elif expression3:
      statement(s)
   else
      statement(s)
elif expression4:
   statement(s)
else:
   statement(s)

 

উদাহরন:


#!/usr/bin/python

var = 100
if var < 200:
   print "Expression value is less than 200"
   if var == 150:
      print "Which is 150"
   elif var == 100:
      print "Which is 100"
   elif var == 50:
      print "Which is 50"
elif var < 50:
   print "Expression value is less than 50"
else:
   print "Could not find true expression"

print "Good bye!"

 

উপরের প্রোগ্রামটি রান করালে নিচের ফলাফল প্রিন্ট হবে।


Expression value is less than 200
Which is 100
Good bye!

 

পাইথন প্রোগ্রামিং : মৌলিক অপারেটরসমূহ (Python Basic Operators in Bangla)

1.6 Python Basic Operators

একটি সহজ সমীকরণ বিবেচনা করিঃ ৪ + ৫ = ৯; এখানে ৪ এবং ৫ সংখ্যাগুলোকে হচ্ছে ‘operands’ এবং ‘+’ হচ্ছে ‘operators’। Python এ নিম্নোক্ত operators গুলো ব্যবহৃত হয়।

  • Arithmetic Operators
  • Comparison (Relational) Operators
  • Assignment Operators
  • Logical Operators
  • Bitwise Operators
  • Membership Operators
  • Identity Operators

নিচে কিছু উদাহরণ দেয়া হয়েছে (এখানে, a = 10 এবং b = 20)।

Operator Description Example

Python Arithmetic Operators (যোগ, বিয়োগ, গুন, ভাগ ইত্যাদি)

+ যোগ Operator এর দুইপাশের মান গুলো যোগ করে। a + b = 30
- বিয়োগ Operator এর বাম পাশের মান থেকে ডান পাশের মান বিয়োগ করে। a – b = -10
* গুন Operator এর দুইপাশের মান গুলো গুন করে। a * b = 200
/ ভাগ Operator এর বাম পাশের মানকে ডান পাশের মান দিয়ে ভাগ করে। b / a = 2
% Modulus (ভাগশেষ) Operator এর বাম পাশের মানকে ডান পাশের মান দিয়ে ভাগ করে ভাগশেষ নির্নয় করে। b % a = 0
** Exponent (পাওয়ার) Operators এর পাওয়ার নির্নয় করে। a**b =1020
// Floor Division (পূর্ণ-সংখ্যার ভাগফল) Operator এর বাম পাশের মানকে ডান পাশের মান দিয়ে ভাগ করে ভাগফল বের করে এবং দশমিকের আগ পর্যন্ত (পূর্ণ-সংখ্যা) মান নির্নয় করে। 9//2 = 4 এবং 9.0//2.0 = 4.0

Python Comparison Operators (দুটি operand এর তুলনা ও সম্পর্ক স্থাপন)।

== সমান চিহ্ন। (a == b) সঠিক নয়।
!= অথবা <> অসমান চিহ্ন। (a != b) সঠিক।
>, <, >= এবং <= অসমতা’র চিহ্ন। (a > b) সঠিক নয়, আবার (a <= b) সঠিক।

Python Assignment Operators

= ডান দিকের operand এর মান বাম পাশের operand এ রেকর্ড করে। c = a + b অর্থ a + b এর মান c তে রেকর্ড করা
+= Add AND ডান দিকের operand এর মান বাম পাশের operand এর সাথে যোগ করে নতুন করে বাম দিকের operand এর মান হিসেবে রেকর্ড করে। c += a এর অর্থ c = c + a
-= Subtract AND ডান দিকের operand এর মান বাম পাশের operand থেকে বিয়োগ করে নতুন করে বাম দিকের operand এর মান হিসেবে রেকর্ড করে। c -= a এর অর্থ c = c - a
*= Multiply AND দুই পাশের operand গুন করে বাম দিকের operand এর নতুন মান হিসেবে রেকর্ড করে। c *= a এর অর্থ c = c * a
/= Divide AND বাম দিকের operand ডান পাশের operand দিয়ে ভাগ করে প্রাপ্ত ভাগফল বাম দিকের operand এর নতুন মান হিসেবে রেকর্ড করে। c /= a এর অর্থ c = c / a
%= Modulus AND দুই দিকের operands এর মডুলাস (ভাগশেষ) বাম পাশের operand এর মান হিসেবে রেকর্ড করে। c %= a এর অর্থ c = c % a
**= Exponent AND দুই দিকের operands এর পাওয়ার বাম পাশের operand এর মান হিসেবে রেকর্ড করে। c **= a এর অর্থ c = ca
//= Floor Division দুই দিকের operands এর Floor Division বাম পাশের operand এর মান হিসেবে রেকর্ড করে। c //= a এর অর্থ c = c // a

Python Bitwise Operators (বাইনারি হিসাব)

মনে a = 60; এবং b = 13 হয়, তবে বাইনারি ফরম্যাট এ a = 0011 1100 এবং b = 0000 1101
a&b = 0000 1100

a|b = 0011 1101

a^b = 0011 0001

~a  = 1100 0011

Python Membership Operators

in অথবা not in একটি ভেরিয়েবল একটি বিশেষ সিরিজ অথবা ধারার অংশ হিসেবে যথাক্রমে থাকা বা না থাকা নির্দেশ করে। x in y এর ফলাফল 1 হবে যদি x ভেরিয়েবলটি y ধারার অংশ হয়, তেমনই ভাবে x not in y এর মান 1 হবে যদি x ভেরিয়েবলটি y ধারার অংশ না হয়।

Python Identity Operators

is এই অপারেটর বুঝায় যে এর দুই পাশের ভেরিয়েবলগুলো একই বস্তু নির্দেশ করে। x is y এর ফলাফল 1 হবে যদি x ও y একই বস্তু বোঝায়।
is not এই অপারেটর বুঝায় যে এর দুই পাশের ভেরিয়েবলগুলো একই বস্তু নির্দেশ করে না। x is not y এর ফলাফল 1 হবে যদি x ও y একই বস্তু না বোঝায়।

Python Operators Precedence (অগ্রাধিকার)

নিচে Python এর অপারেটর এর সিরিয়াল/ অগ্রাধিকার (কোনটির কাজ আগে হবে) দেয়া হলঃ

  1. **
  2. ~ + -
  3. * / % //
  4. + -
  5. >> <<
  6. &
  7. ^ |
  8. <= < > >=
  9. <> == !=
  10. = %= /= //= -= += *= **=
  11. is is not
  12. in not in
  13. not or and

পাইথন প্রোগ্রামিং : ভেরিয়েবল টাইপ (Python Variable Types in bangla)

1.5 Python Variable Types

ভেরিয়েবল হচ্ছে মেমোরি তে নির্ধারিত জায়গা (স্পেস) যেখানে বিভিন্ন জিনিসের মান (value) স্টোর করে রাখা হয়। ভেরিয়েবল তৈরি করা মানেই কম্পিউটারের মেমোরিতে একটা নির্দৃষ্ট স্পেস সঞ্চয় করে রাখা। যেকোনো ভেরিয়েবল কি ধরনের ডাটা রেকর্ড/ স্টোর করবে সেটা নির্ভর করে ভেরিয়েবল উপর।

Python এ সমতা চিহ্নের (=) মাধ্যমে যেকোনো ধরনের মান (value) ভেরিয়েবল হিসেবে স্টোর করা যায়, এক্ষেত্রে আলাদা করে কোন ডিক্লারেশনের প্রয়োজন নেই। সমতা চিহ্নের বাম পাশে ব্যবহৃত শব্দটি ভেরিয়েবলের নাম এবং ডান পাশের সংখ্যাটি ভেরিয়েবলের মান নির্দেশ করে। যেমন,


#!/usr/bin/python

counter = 100          # An integer assignment
miles   = 1000.0       # A floating point
name    = "John"       # A string

print counter
print miles
print name

উপরের প্রোগ্রামটির ফলাফল হবে এমন,


1001000.0


 

Python এ একাধিক ভেরিয়েবলের জন্য একটি নির্দৃষ্ট মান স্টোর করা যায়। আবার একাধিক ভেরিয়েবলের জন্য যথাক্রমে একাধিক মানও একসাথে স্টোর করা যায়। যেমন,


a = b = c = 1


 

এবং


a, b, c = 1, 2, "john"


 

প্রথম প্রোগ্রামটিতে a, b এবং c এর মান 1 স্টোর করা হয়েছে, আর দ্বিতীয় প্রোগ্রামটিতে a, b এবং c এর মান যথাক্রমে 1, 2 এবং john স্টোর করা হয়েছে।

Python এ ৫ ধরনের স্ট্যান্ডার্ড ডাটা টাইপ আছে। যেমন,

  • Numbers
  • String
  • List
  • Tuple
  • Dictionary

Numbers

Numbers হচ্ছে যেকোনো প্রকারের সংখ্যা। Python ৪ ধরনের সংখ্যা (Numbers) সাপোর্ট করে। যেমন,

  • int (ছোট পূর্ণসংখ্যা)
  • long (বড় পূর্ণসংখ্যা, octal কিংবা hexadecimal আকারে প্রকাশ করা যায়)
  • float (বাস্তব সংখ্যার কাছাকাছি মান)
  • complex (জটিল সংখ্যা)

নিচের টেবিলে কিছু সংখ্যার উদাহরণ দেয়া হলঃ

int long float complex
10 51924361L 0.0 3.14j
080 0xDEFABCECBDAECBFBAEl 32.3+e18 .876j
-0490 535633629843L -90. -.6545+0J

 

Strings

Strings হচ্ছে কোটেশান মার্কের (“”) ভেতর ব্যবহৃত বর্ণ/ শব্দ সমূহ। বিভিন্ন রকমের slice operator ([ ] and [:]) এর সাহায্য নিয়ে নির্ধারিত string এর অংশবিশেষ অথবা বিভিন্ন পূনর্বিন্যাস আউটপুট হিসেবে দেখা যায়। যেমন,


#!/usr/bin/python

str = 'Hello World!'

print str          # Prints complete string
print str[0]       # Prints first character of the string
print str[2:5]     # Prints characters starting from 3rd to 5th
print str[2:]      # Prints string starting from 3rd character
print str * 2      # Prints string two times
print str + "TEST" # Prints concatenated string

 

উপরের প্রোগ্রামটির ফলাফল হবে,


Hello World!
H
llo
llo World!
Hello World!Hello World!
Hello World!TEST

 

Lists

List হল তৃতীয় ব্র্যাকেট ([ ]) এ আবদ্ধ, ও কমা (commas) দিয়ে আলাদা করা আইটেম। যেমন,


#!/usr/bin/python

list = [ 'abcd', 786 , 2.23, 'john', 70.2 ]
tinylist = [123, 'john']

print list          # Prints complete list
print list[0]       # Prints first element of the list
print list[1:3]     # Prints elements starting from 2nd till 3rd 
print list[2:]      # Prints elements starting from 3rd element
print tinylist * 2  # Prints list two times
print list + tinylist # Prints concatenated lists

 

উপরের প্রোগ্রামটির রেসাল্ট হবে,


['abcd', 786, 2.23, 'john', 70.200000000000003]
abcd
[786, 2.23]
[2.23, 'john', 70.200000000000003]
[123, 'john', 123, 'john']
['abcd', 786, 2.23, 'john', 70.200000000000003, 123, 'john']

 

Tuples

Tuple আর List মূলত একই রকম, শুধু পার্থক্য হচ্ছে যে Tuple এ প্রথম ব্র্যাকেট ( ) ব্যবহৃত হয়, কিন্তু List এ তৃতীয় ব্র্যাকেট [ ] ব্যবহার হয়। এছাড়াও Tuple এর মান পরে পরিবর্তন করা যায়না (read-only values), কিন্তু List এর মান আপডেট করা যায়। Tuple এর উদাহরনঃ


#!/usr/bin/python

tuple = ( 'abcd', 786 , 2.23, 'john', 70.2  )
tinytuple = (123, 'john')

print tuple           # Prints complete list
print tuple[0]        # Prints first element of the list
print tuple[1:3]      # Prints elements starting from 2nd till 3rd 
print tuple[2:]       # Prints elements starting from 3rd element
print tinytuple * 2   # Prints list two times
print tuple + tinytuple # Prints concatenated lists

 

উপরের প্রোগ্রামের ফলাফলঃ


('abcd', 786, 2.23, 'john', 70.200000000000003)
abcd
(786, 2.23)
(2.23, 'john', 70.200000000000003)
(123, 'john', 123, 'john')
('abcd', 786, 2.23, 'john', 70.200000000000003, 123, 'john')

 

নিচের Tuple কোডটি ভুল, কারন এখানে Tuple এর মান পরিবর্তন/ আপডেট করার চেষ্টা করা হয়েছে। কিন্তু List এর জন্য কোডটি ঠিক আছে।


#!/usr/bin/python

tuple = ( 'abcd', 786 , 2.23, 'john', 70.2  )
list = [ 'abcd', 786 , 2.23, 'john', 70.2  ]
tuple[2] = 1000    # Invalid syntax with tuple
list[2] = 1000     # Valid syntax with list

 

Dictionary

Dictionary দিয়ে Key-Value জোড়ায় জোড়ায় থাকে। যেকোনো ডাটা টাইপ Key হতে পারে, যদিও সাধারণত numbers বা strings ই Key হিসেবে রেকর্ডেড হয়। অন্যদিকে, যেকোনো সংখ্যা/ অবজেক্টই Value হিসেবে রেকর্ড হতে পারে। Dictionary দ্বিতীয় ব্র্যাকেট { } এর সাহায্যে প্রকাশ করা হয় এবং তৃতীয় ব্র্যাকেটের সাহাজে Doctionary তে Value এসাইন করা হয়। যেমন,


#!/usr/bin/python

dict = {}
dict['one'] = "This is one"
dict[2]     = "This is two"

tinydict = {'name': 'john','code':6734, 'dept': 'sales'}


print dict['one']       # Prints value for 'one' key
print dict[2]           # Prints value for 2 key
print tinydict          # Prints complete dictionary
print tinydict.keys()   # Prints all the keys
print tinydict.values() # Prints all the values

 

উপরের কোড এর রেসাল্ট হবে −


This is one
This is two
{'dept': 'sales', 'code': 6734, 'name': 'john'}
['dept', 'code', 'name']
['sales', 6734, 'john']


এখানে উল্লেখ্য যে, Dictionary তে ক্রম, সিরিয়াল বা অর্ডার ঠিক রাখার কোন ব্যপার নেই।

 

Data Type Conversion

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

ফাংশন বর্ননা
int(x [,base]) x কে একটি পূর্ণসংখ্যায় রূপান্তর করে, এবং base লিখাটি বেস কে নির্দেশ (specify) করে যদি x একটি স্ট্রিং হয়।
long(x [,base] ) x কে একটি দীর্ঘ পূর্ণসংখ্যায় রূপান্তর করে, এবং base লিখাটি বেস কে নির্দেশ (specify) করে যদি x একটি স্ট্রিং হয়।
float(x) x কে একটি floating-point সংখ্যায় রূপান্তর করে।
complex(real [,imag]) জটিল সংখ্যা তৈরি করে।
str(x) x কে একটি string representation এ রূপান্তর করে।
repr(x) x কে একটি expression string এ রূপান্তর করে।
eval(str) একটি string কে এভালুয়েট করে এবং একটি নতুন অবজেক্ট সৃষ্টি করে।
tuple(s) s কে একটি tuple এ রূপান্তর করে।
list(s) s কে list এ রূপান্তর করে।
set(s) s কে set এ রূপান্তর করে।
dict(d) একটি dictionary তৈরি করে। তবে, d কে অবশ্যই (key,value) ফরম্যাট এর tuples হতে হবে.
frozenset(s) s কে frozen set এ রূপান্তর করে।
chr(x) একটি integer কে একটি character এ রূপান্তর করে।
unichr(x) একটি integer কে একটি Unicode character এ রূপান্তর করে।
ord(x) একটি single character কে এর পূর্ণ-সাঙ্খ্যিক (integar) মানে প্রকাশ করে।
hex(x) একটি integer কে একটি hexadecimal string এ রূপান্তর করে।
oct(x) একটি integer কে একটি octal string এ রূপান্তর করে।

 

পাইথন প্রোগ্রামিং : বেসিক সিনট্যাক্স (Python Basic Syntax in bangla)

1.4 Python Basic Syntax

আপনার Python প্রম্পট এ নিচের প্রোগ্রামটি লিখুন এবং Enter চাপুন।


>>> print "Hello, Python!"


 

অনেক সময় নতুন ভার্সনে কাজ করলে ব্র্যাকেটের ভেতর প্রিন্ট স্টেটমেন্ট দিতে হয় যেমন, print ("Hello, Python!")। যাইহোক, 2.4.3 ভার্সনে রান উপরের স্ক্রিপ্টটি রান করলে নিচের ফলাফলটি আসবে।

Hello, Python!

 

Python Identifiers

Python এর ভেরিয়েবল, ফাংশন, ক্লাস, মোডিউল কিংবা অন্যান্য অবজেক্ট রেকর্ড করার জন্য যেসব নাম ব্যবহৃত হয় তাদের কে Python Identifiers বলে এসব নাম ‘A থেকে Z’ অথবা ‘a থেকে z’ অথবা underscore (_) দিয়ে শুরু হয় এবং এরপর যেকোনো অক্ষর, underscore কিংবা সংখ্যা (0-9) ব্যবহৃত হয়। Python এর Identifier হিসেবে @, $, % ব্যবহার করা যায় না। তাছাড়া, Python কেস সেন্সিটিভ, অর্থাৎ A এবং a এখানে আলাদা অর্থ বহন করে। যেমন, Python identifier এ Manpower এবং manpower এর দুটি আলাদা নাম। নিচে বিভিন্ন Python identifier এর নামকরণ পদ্ধতি বর্ণনা করা হল।

  • শুধুমাত্র Class name গুলো বড় হাতের অক্ষর দিয়ে শুরু হয়, অন্য সব নামকরণ শুরু হয় ছোট হাতের অক্ষর দিয়ে।
  • কোন identifier যদি শুধুমাত্র একটি underscore (_) দিয়ে শুরু হয় তবে তার অর্থ হচ্ছে এটি একটি ‘private identifier’.
  • যদি কোন identifier পর পর দুটি underscore (_) দিয়ে নামকরণ হয় তবে সেটি ‘strongly private identifier’.
  • যদি কোন identifier এর নাম পর পর দুটি underscore (_) দিয়ে শেষ হয়, তবে তাকে language-defined special name বলে।

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

and exec not
assert finally or
break for pass
class from print
continue global raise
def if return
del import try
elif in while
else is with
except lambda yield

লাইন ও মার্জিন

এছাড়াও, Python এর কোড কিংবা স্টেটমেন্ট এর একটি নির্দৃষ্ট ব্লক বোঝাতে লাইনের আগে সমান সংখ্যক/ পরিমাণ গ্যাপ (স্পেস) থাকে। অর্থাৎ স্ক্রিপ্টের দুটি continuous line যদি সমান পরিমাণ মার্জিনেই শুরু হয়, তার অর্থ হচ্ছে লাইন দুটো একই ব্লকের। কাজেই একই ব্লকের continuous line ভিন্ন ভিন্ন মার্জিনে শুরু হলে প্রোগ্রামিং এ error দেখা দিবে। উদাহরণস্বরূপ, নিচের কোডটি ঠিক আছে।


if True:
    print "True"
else:
  print "False"

 

কিন্তু, নিচের কোড টি ঠিক নয়। কারন এখানে একই ব্লকের পর পর দুটি স্টেটমেন্ট এর মার্জিন ভিন্ন। print “Answer” এবং print “False” এর মার্জিন দেখুন।


if True:
    print "Answer"
    print "True"
else:
    print "Answer"
  print "False"

 

নিচে আরেকটি জটিল স্টেটমেন্ট এর কোড দেখানো হল। এখানে বিভিন্ন ব্লক গুলো ধরতে পারার চেষ্টা করুন (আপাতত যুক্তি বোঝার দরকার নেই!)।


#!/usr/bin/python

import sys

try:
  # open file stream
  file = open(file_name, "w")
except IOError:
  print "There was an error writing to", file_name
  sys.exit()
print "Enter '", file_finish,
print "' When finished"
while file_text != file_finish:
  file_text = raw_input("Enter text: ")
  if file_text == file_finish:
    # close the file
    file.close
    break
  file.write(file_text)
  file.write("\n")
file.close()
file_name = raw_input("Enter filename: ")
if len(file_name) == 0:
  print "Next time please enter something"
  sys.exit()
try:
  file = open(file_name, "r")
except IOError:
  print "There was an error reading file"
  sys.exit()
file_text = file.read()
file.close()
print file_text

 

একাধিক লাইনের স্টেটমেন্ট

Python এর statement সাধারণত নতুন লাইন এ গিয়ে শেষ হয়। তবে কোন স্টেটমেন্টের শেষে continuation character (\) সেটা দিয়ে স্টেটমেন্টটি আরও চলবে (continued statement) সেটা বোঝানো হয়। যেমন,


total = item_one + \
        item_two + \
        item_three

 

কিন্তু, কোন স্টেটমেন্ট যদি [], {}, বা () ব্র্যাকেটের ভেতর থাকে তবে continuation character (\) দেয়ার দরকার নেই। যেমন,


days = ['Monday', 'Tuesday', 'Wednesday',
        'Thursday', 'Friday']

 

Python এ কোটেশান এর প্রয়োগ

Python এর string literal এ একটি ('), দুটি (") কিংবা তিনটি (''' বা """) কোটেশান চিহ্ন ব্যবহার করা যায়, তবে যেই কোটেশান দিয়ে বাক্য শুরু হয়েছে, সেটি দিয়েই শেষ করতে হবে। তিনটি কোট (''' বা """) দিয়ে দুটি দুই বা ততোধিক লাইনের string literal সম্পন্ন করা যায়। যেমন, নিচের সবকটি string সঠিক।


word = 'word'
sentence = "This is a sentence."
paragraph = """This is a paragraph. It is
made up of multiple lines and sentences."""

 

Python এ কমেন্ট

String literal এর বাইরে হ্যাশ চিহ্ন (#) টাইপ করে যদি কোন বাক্য লেখা হয়, তবে সেটি একটি ‘কমেন্ট’ হিসেবে গণ্য হবে। সহজ কথায়, # চিহ্নের পরে ব্যবহৃত একই লাইনের সকল অক্ষর একসাথে একটি কমেন্ট হিসেবে বিবেচিত হবে, এবং Python interpreter সব ধরনের কমেন্টকে ignore করবে। যেমন,


#!/usr/bin/python

# First comment
print "Hello, Python!" # second comment

 

এই স্ক্রিপ্টটি রান করলে নিচের রেসাল্টটি আসবে।


Hello, Python!


 

যেকোনো স্টেটমেন্ট, কিংবা এক্সপ্রেশন এর পরে কমেন্ট সংযোজন করা যায়।


name = "Madisetti" # This is again comment

 

দরকার পরলে একাধিক কমেন্টও যোগ করে নিতে পারেন।


# This is a comment.
# This is a comment, too.
# This is a comment, too.
# I said that already.

 

শূন্য লাইন (Blank Lines)

কোন লাইনে শুধুমাত্র স্পেস, অথবা কোন কমেন্ট থাকলে সেটাকে blank line বলে, এবং Python তাকে সম্পূর্ণরূপে ignore করে। Interactive interpreter session চলাকালীন blank line দিয়ে একাধিক বাক্যের স্টেটমেন্ট এর শেষ বোঝানো হয়।

এখন নিচের প্রোগ্রামটি লক্ষ্য করি।


#!/usr/bin/python

raw_input("\n\nPress the enter key to exit.")

 

প্রোগ্রামটি রান করলে, ফলাফল হিসেবে প্রিন্ট হবে, “Press the enter key to exit” এবং তারপর কী-বোর্ডে কোন কিছু টাইপ করা মাত্রই প্রোগ্রামটি শেষ হবে। এখানে "\n\n" ব্যবহার করার জন্য আসল বাক্যটি দেখানোর আগে দুটি blank line আসবে। এই স্ক্রিপ্টটির সাহাজ্যে সহজেই এমন একটি প্রোগ্রাম তৈরি করা যায়, যেখানে কোন ইউসার নিজে কোন বাটনে চাপ দেয়ার আগ পর্যন্ত প্রোগ্রাম স্ক্রিন খোলা থাকবে।

 

একই লাইনে একাধিক স্টেটমেন্ট

একই লাইনে (অবশ্যই একই ব্লকে) একাধিক স্টেটমেন্ট বোঝাতে সেমি-কোলন (;) চিহ্ন ব্যবহার করা হয়। যেমন,


import sys; x = 'foo'; sys.stdout.write(x + '\n')

 

Suites (একাধিক স্টেটমেন্ট গ্রুপ)

আলাদা আলাদা স্টেটমেন্ট এর একটি মাত্র ‘গ্রুপ’ যখন একসাথে একটি কোড ব্লক তৈরি করে তখন তাকে Suites বলে। জটিল/ যৌগিক/ বড় স্টেটমেন্ট এর ক্ষেত্রে, if, while, def অথবা class এর ক্ষেত্রে একটি হেডার লাইন এবং পরে একটি suite এর প্রয়োজন হয়। হেডার লাইনের আগে একটি কী-ওয়ার্ড থাকে এবং পরে কোলন চিহ্ন (:) থাকে, যার পরে এক বা একাধিক লাইনের suite ব্যবহার করা হয়। যেমন,


if expression : 
   suite
elif expression : 
   suite 
else : 
   suite

 

Command Line আর্গুমেন্টঃ

অনেক সময় একটা প্রোগ্রাম কিভাবে রান করানো উচিৎ, সেই তথ্যও অন্য একটি প্রোগ্রাম এ দেয়া হয়, যা কমান্ড লাইন আর্গুমেন্ট হিসেবে পরিচিত। Python এ –h- এর সাহায্যে এরকম প্রোগ্রাম কোড করা যায়। কমান্ড লাইন আর্গুমেন্টের কনসেপ্ট অপেক্ষাকৃত জটিল, যা এই টিউটোরিয়াল এর পরবর্তি অংশে আলোচনা করা হবে।

 

পাইথন প্রোগ্রামিং টিউটোরিয়াল : ইন্সটলেশন (Python – Environment Setup in bangla)

লিখেছেন: আবরার রেজওয়ান শুভ

 

1.3 Python - Environment Setup

Local Environment Setup

Local Environment Setup এর ক্ষেত্রে আপনার কম্পিউটার এর সার্চ ইঞ্জিনে টাইপ করুন ‘Python’ এবং দেখুন এটি আপনার কম্পিউটারে ইন্সটল করা আছে কিনা, এবং যদি থাকে তবে এর ভার্সনটি জেনে রাখুন। এছড়াও Python এর অফিশিয়াল ওয়েবসাইট (http://www.python.org/) থেকে এর সর্বশেষ আপডেট, সোর্স কোড, বাইনারিস, ডকুমেন্টস ইত্যাদি ডাওনলোড করা যাবে।

Python ইন্সটলেশন

http://www.python.org/download/ ওয়েবসাইটে বিভিন্ন অপারেটিং সিস্টেমের জন্য Python এর বিভিন্ন ভার্সন পাওয়া যাবে, সেখান থেকে আপনার অপারেটিং সিস্টেম অনুযায়ী উপযুক্ত ভার্সনটি ডাউনলোড করে ইন্সটল করুন। ডাউনলোড করা ফাইলটিতে ডাবল ক্লিক করলেই ইন্সটলেশন শুরু হয়ে যাবে, ডিফল্ট সেটিংস এই ইন্সটল করুন।

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

PATH সেট আপ করা

Python প্রোগ্রাম ও এর এক্সেকিউটেবল ফাইল গুলো বিভিন্ন ডিরেক্টরি তে থাকতে পারে, তাই অপারেটিং সিস্টেমের একটি SEARCH PATH এর দরকার হয় যেখানে এমন সব ডিরেক্টরির নাম থাকবে যেখানে অপারেটিং সিস্টেম Python এর এক্সিকিউটেবল ফাইল গুলো সার্চ করবে। এই path টি একটি ভেরিয়েবল হিসেবে স্টোর করা হয়, এবং অপারেটিং সিস্টেম নিজে এই ভেরিয়েবল নিয়ন্ত্রন করে, এবং এতে command shell এর সব ইনফর্ম্যাশন থাকে। এই path ভেরিয়েবলের নাম PATH (Unix) অথবা Path (Windows). এখানে লক্ষণীয় যে Unix/ Linax কেস সেন্সিটিভ, কিন্তু windows তা নয়।

Unix/Linux অপারেটিং সিস্টেম এর ক্ষেত্রে

Python ডিরেক্টরিটি path ভেরিয়েবল এ এ সংযোজন করতে হলে নিচের কমান্ডগুলো টাইপ করতে হবেঃ

  • csh shell: setenv PATH "$PATH:/usr/local/bin/python" টাইপ করুন Enter চাপুন।
  • bash shell (Linux): export PATH="$PATH:/usr/local/bin/python" টাইপ করুন Enter চাপুন।
  • sh অথবা ksh shell: PATH="$PATH:/usr/local/bin/python" টাইপ করুন Enter চাপুন।

নোট: Unix/Linux অপারেটিং সিস্টেম এ Python এর ডিফল্ট ডিরেক্টরি হচ্ছে /usr/local/bin/python

Windows অপারেটিং সিস্টেম এর ক্ষেত্রে

  • command prompt path %path%;C:\Python টাইপ করুন Enter চাপুন।

নোট: Windows অপারেটিং সিস্টেম এ Python এর ডিফল্ট ডিরেক্টরি হচ্ছে C:\Python

Python এনভাইরনমেন্ট ভেরিয়েবলঃ

নিচে Python এর কিছু গুরুত্ত্বপূর্ণ এনভাইরনমেন্ট ভেরিয়েবল এর নাম ও সংক্ষিপ্ত বর্ণনা দেয়া হলঃ

ভেরিয়েবল বর্ণনা
PYTHONPATH এটি অনেকটাই PATH ভেরিয়েবলের মত। এই ভেরিয়েবলের কাজ হচ্ছে Python প্রোগ্রাম এ ইম্পোর্ট করা মোডিউল ফাইল গুলোর লোকেশন ঠিক করা এবং সেই অনুযায়ী Python interpreter কে দিক নির্দেশনা করা। PYTHONPATH ভেরিয়েবলটি Python সোর্স কোড ও এর লাইব্রেরির ডিরেক্টরি রেকর্ড করে। PYTHONPATH ভেরিয়েবলটি সাধারনত Python ইন্সটলেশনের সময় অটোম্যাটিক সেট হয়ে যাবে।
PYTHONSTARTUP এই ভেরিয়েবলটি Python সোর্স কোডের ইনিশিয়ালাইজেশন ফাইল এর লোকেশন রেকর্ড করে, এবং যখনি interpreter চালু করা হবে তখনই এই ভেরিয়েবলটিও রান হবে। Unix অপারেটিং সিস্টেমে ফাইলটির নাম .pythonrc.py, এবং এতে PYTHONPATH ভেরিয়েবল লোড ও মোডিফাই করার কমান্ড থাকে।
PYTHONCASEOK এই ভেরিয়েবলটি Windows এ ব্যবহৃত হয় এবং এর কাজ হচ্ছে Python কে ইন্সট্রাকশন দেয়া যাতে এটি যেকোনো ইম্পোর্ট স্টেটমেন্টের প্রথম কেস-ইনসেন্সিটিভ ম্যাচ খুজে বের করতে পারে। এই ভেরিয়েবল এ যেকোনো মান সেট করলেই ভেরিয়েবলটি একটিভেট হবে।
PYTHONHOME

এটি একটি alternative module search path, এটি সাধারণত PYTHONSTARTUP ও PYTHONPATH এর ডিরেক্টরিস এই সংযুক্ত থাকে, এবং এর কাজ হচ্ছে মোডিউল লাইব্রেরির স্থানান্তর সহজ করা।

Python রান করা

Python ৩ ভাবে রান করা যেতে পারে। যেমন,

  1. যেসব অপারেটিং সিস্টেমে কমান্ড-লাইন ইন্টারপ্রেটার থাকে অথবা শেল উইন্ডো থাকে সেসব ক্ষেত্রে সরাসরি Interactive Interpreter থেকে Python রান করা যায়। এসব ক্ষেত্রে, কমান্ড লাইনে python লেখে Enter চাপুন এবং সরাসরি Python এ কোডিং শুরু করুন।
  2. Python এপ্লিকেশনের সাথে ইন্টারপ্রেটার সংযুক্ত করে কমান্ড লাইনে স্ক্রিপ্ট রান করানো যায়।
  3. অপারেটিং সিস্টেমের Graphical User Interface (GUI) এপ্লিকেশন যদি Python সাপোর্ট করে তবে GUI environment থেকেও Python রান করানো যায়।

বিঃদ্রঃ এই টিউটোরিয়ালে যত উদাহরণ দেয়া হয়েছে সবগুলো Python 2.4.3 ভার্সনে রান করানো হয়েছে।

পাইথন প্রোগ্রামিং টিউটোরিয়াল : বেসিক (Python Tutorial in Bangla : Basic)

লিখেছেন: আবরার রেজওয়ান শুভ

1.1 Python - Tutorial

Python একটি general-purpose interpreted, সাধারণ, সহজবোধ্য, উদ্দেশ্য-কেন্দ্রিক এবং উচ্চমানের প্রোগ্রামিং ল্যাংগুয়েজ। ১৯৮৫-১৯৯০ সালের মধ্যে গুইদো ভ্যান রসাম (Guido van Rossum) এই প্রোগ্রামিং ল্যাংগুয়েজ সৃষ্টি করেন। এই টিউটোরিয়ালটি Python সম্পর্কে যথেষ্ট ধারণা দিবে।

কাদের জন্য

যারা একেবারে শুরু থেকে Python প্রোগ্রামিং শিখতে চান, মূলত তাদের জন্যই এই টিউটোরিয়ালটি তৈরি করা হয়েছে।

পূর্বশর্ত

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

1.2 Python Overview

Python ল্যাংগুয়েজটিকেই এমন ভাবে তৈরি করা হয়েছে যাতে সহজে বোঝা যায়। এটি অন্যান্য প্রোগ্রামিং ল্যাংগুয়েজ এর মত যতিচিহ্ন (কমা, ব্র্যাকেট ইত্যাদি)-নির্ভর নয়, বরং কিছু ইংরেজি কী-ওয়ার্ড প্রতিনিয়ত ব্যবহার করে ল্যাংগুয়েজটা তোইরি করা হয়েছে, এবং এখানে শব্দবিন্যাসও তুলনামূলক সহজ।

  • Python সরাসরি অনুবাদকৃত - অনেকটা PERL এবং PHP প্রোগ্রামিং এর মত, Python প্রোগ্রামও রান করাবার আগে আলাদা করে কম্পাইল করতে হয়না, সরাসরি রান দেয়ার সময়েই প্রোগ্রামটির প্রোসেস (অনুবাদ) হয়।
  • Python পারস্পরিক ক্রিয়াশীল- প্রোগ্রাম লেখার সময় Python prompt থেকে অনুবাদক (interpreter) এর সাথে সরাসরি মত বিনিময় করা যায়।
  • Python উদ্দেশ্য-কেন্দৃক- Python উদ্দেশ্য-কেন্দৃক পদ্ধতি অনুসরণ করে, যার মাধ্যমে একটি বিশেষ উদ্দেশ্যের ভেতর একাধিক কোড লিপিবদ্ধ করা হয়।
  • Python অনভিজ্ঞ দের ভাষা- নতুন প্রোগ্রামার দের জন্য Python দারুন একটি ভাষা, এবং পাশাপাশি এর নানাবিধ প্রয়োগ রয়েছে (সহজ টেক্সট প্রোসেসিং থেকে শুরু করে ওয়েব ব্রাউসার কিংবা গেমস ডেভেলাপমেন্টে)

ইতিহাস

আশির ও নব্বইয়ের দশকের মাঝামাঝি গুইদো ভ্যান রসাম (Guido van Rossum) নেদার্ল্যান্ড এর ন্যাশনাল রিসার্চ ইন্সটিটিউট ফর ম্যাথম্যাটিক্স এন্ড কম্পিউটার সাইন্স এ Python আবিষ্কার করেন।

ABC, Modula-3, C, C++, Algol-68, SmallTalk, Unix shell সহ অন্যান্য অনেকগুলো স্ক্রিপ্টিং ল্যাংগুয়েজ থেকে Python এর সূত্রপাত হয়েছে। Perl প্রোগ্রামিং ল্যাংগুয়েজ এর মত পাইথন এর সোর্স কোড ও GNU General Public License (GPL) এ পাওয়া যায়। Python এর সত্ত্বাধিকার Python software foundation রক্ষা করে। একটি কোর ডেভেলাপমেন্ট টীম পাইথনের অগ্রযাত্রা/ পরিচালনা নিয়ন্ত্রন করে, যেখানে Guido van Rossum, Python এর আবিষ্কারক গুরুত্বপূর্ণ ভূমিকা পালন করে।

বৈশিষ্ট্য

  • Python সহজবোধ্য। এখানে কী-ওয়ার্ড এর ব্যবহার তুলনামূলক কম। Python এর শব্দবিন্যাস এবং ভাষা-গঠনও অপেক্ষাকৃত সহজ, যে কারনে সবাই খুব সহজেই এই ভাষা আয়ত্ত করতে পারে।
  • Python সহজে পড়া যায়। এর কোডিং পদ্ধতি খুব সহজে বোঝা যায়।
  • Python এর সোর্স কোড সহজে মেইন্টেইন করা যায়।
  • Python এর লাইব্রেরী অনেক সমৃদ্ধ এবং স্বল্প সাইজের, যা UNIX, Windows, Macintosh ইত্যাদি অপারেটিং সিস্টেম সাপোর্ট করে।
  • Python এ interactive (পারস্পরিক) কোডিং এর সুবিধা রয়েছে, যার ফলে টুকিটাকি বিভিন্ন প্রকার কোড এর জন্য একই সাথে Testing ও Debugging করা যায়।
  • Python পোর্ট্যাবল, অর্থাৎ বিভিন্ন রকমের হার্ডওয়ার প্ল্যাটফর্মে এটি একই ভাবে কাজ করে।
  • Python প্রথমে কিছু low level module দিয়ে শুরু করা যায়, এবং পরে প্রয়োজন অনুযায়ী প্রোগ্রামার রা নানা রকম টুল সংযোজন করে সেই মোডিউল গুলো আরো সমৃদ্ধ করতে পারে।
  • প্রায় সব ধরনের বাণিজ্যিক ডাটাবেইজ এ Python এর ইন্টারফেস থাকে।
  • Python GUI applications সাপোর্ট করে, যার সাহাজ্যে বিভিন্ন system calls, libraries ও windows systems তৈরি অথবা স্থানান্তরিত করা যায়।
  • বড় সাইজের প্রোগ্রামের জন্য Shell স্ক্রিপ্টিং এর চেয়ে Python এর স্ক্রিপ্ট ভাল কাজ করে।

এগুলো ছাড়াও Python এর আরো কিছু ফিচার রয়েছে। যেমন, এটি Object-Oriented Programming (OOP) এর মত সুবিন্যস্ত; এটিকে স্ক্রিপ্টিং ল্যাংগুয়েজ এর মত ব্যবহারের পাশাপাশি অন্য বড় সাইজের এপ্লিকেশনের বাইট-কোড হিসেবে কম্পাইল করা যায়; এর দারা অত্যান্ত জটিল ও গতিশীল ডাটা তৈরি ও চেক করা যায়; Python গার্বেজ কালেক্ট করে, এবং একে সহজেই C, C++, COM, ActiveX, CORBA, ও Java’র সাথে ইণ্টেগ্রেট করা যায়।

 

নোড.জেএস (Node. Js) টিউটোরিয়াল

মীর তাওহীদুল ইসলাম

ওয়েব ডেভেলপার

 

আজকে আপনাদের সামনে হাজির হলাম নোড জে এস এর টিউটোরিয়াল নিয়ে। আশা করি আপনাদের ভাল লাগবে।

নোড জে এস জাভাস্ক্রিপ্ট এর উপর ভিত্তি করে গড়ে ওঠা খুবই শক্তিশালী একটি ফ্রেমওয়ার্ক বা প্লাটফর্ম যা গুগল ক্রোমের জাভাস্ক্রিপ্ট ভি এইট ইঞ্জিনে (V8 Engine) এ তৈরি করা হয়েছে।

এই নোড জে এস ব্যাবহার হয় বিভিন্ন ধরনের ওয়েব অ্যাপলিকেশন তৈরিতে যেমনঃ অনলাইনে ভিডিও দেখার সাইট তৈরিতে, এক পেইজের অ্যাপলিকেশন তৈরিতে বা অন্যান্য ওয়েব অ্যাপলিকেশন তৈরিতে।

এই নোড জে এস একটি মুক্ত উৎস, সম্পূর্ণ ফ্রী এবং এটা সারা বিশ্বের হাজার হাজার ডেভেলপার এর ব্যাবহারের একটি উৎস।

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

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

এই টিউটোরিয়ালটি শুরুর পূর্বে অবশ্যই আপনার জাভাস্ক্রিপ্ট সম্পর্কে বেসিক ধারনা থাকতে হবে কারন আমরা এখন নোড জে এস ব্যাবহার করে একটি ওয়েব অ্যাপ্লিকেশন তৈরি করতে যাচ্ছি। এটা আপনার জন্য আরও ভালো হবে যদি আপনার আরও অন্যান্য ওয়েব প্রযুক্তি যেমন- এইচ টি এম এল (HTML), সি এস এস (CSS) , অ্যাজাক্স (AJAX) ইত্যাদি সম্পর্কেও বেসিক ধারনা থাকে।

আর এই টিউটোরিয়ালে যে উদাহারন গুলো থাকবে তা অবশ্যই নিজে নিজে চেষ্টা করতে হবে।

তাই প্রাথমিক ভাবে নিচে একটা উদাহারন কোড দেওয়া হলঃ


/*Hello World ! My First Programme In Node. Js*/

Console.log (“Hello World !”) ;


 

নোড.জেএস । Node.js – আরইএসটি সম্পন্ন এপিআই

নোড . জে এস । Node.js - আরইএসটি সম্পন্ন এপিআই
রিদওয়ান বিন শামীম

আরইএসটি আর্কিটেকচার কীঃ আরইএসটির মানে হল, রিপ্রেজেন্টেশনাল স্টেট ট্রান্সফার। এটি ওয়েব স্ট্যান্ডার্ডভিত্তিক আর্কিটেকচার এবং এইচটিটিপি প্রটোকল ব্যবহার করে। Roy Fielding এটিকে ২০০০ সালে প্রবর্তন করেন।

আরইএসটি সার্ভার রিসোর্সে এক্সেস নিশ্চিত করে, ক্লায়েন্ট এইচটিটিপি প্রটোকল ব্যবহার করে এর পরিবর্তন ও পরিবর্ধন করে থাকেন। আরইএসটি টেক্সট, জেএসওএন ও এক্সএমএলভিত্তিক রিপ্রেজেন্টেশন ব্যবহার করে রিসোর্স রিপ্রেজেন্ট করতে। এদের মধ্যে জেএসওএন সবচেয়ে জনপ্রিয়।

আরইএসটি ভিত্তিক আর্কিটেকচারে চারটি এইচটিটিপি মেথড ব্যবহার করা হয়,
• গেট
• পুট
• ডিলিট
• পোস্ট

আরইএসটি সম্পন্ন ওয়েব সার্ভারঃ এপ্লিকেশন ও সিস্টেমের প্রটোকল ও স্ট্যান্ডার্ডের সমন্বয়ে ওয়েব সার্ভার গঠিত হয়।

লাইব্রেরীর জন্য আরইএসটি তৈরি করাঃ জেএসওএন ডাটাবেসে users.json নামক ফাইলের ক্ষেত্রে

{
"user1" : {
"name" : "mahesh",
"password" : "password1",
"profession" : "teacher",
"id": 1
},
"user2" : {
"name" : "suresh",
"password" : "password2",
"profession" : "librarian",
"id": 2
},
"user3" : {
"name" : "ramesh",
"password" : "password3",
"profession" : "clerk",
"id": 3
}
}

এসবের ভিত্তিতে যে আরইএসটি এপিআই পাই তাদের তালিকা,

S. N. URI HTTP Method POST body Result
1 listUsers GET empty সব ইউজারের তালিকা দেখায়
2 addUser POST JSON String নতুন ইউজারে বিবরণ সংযুক্তি
3 deleteUser DELETE JSON String বিদ্যমান ইউজার ডিলিট করা
4 :id GET empty ইউজারের বিবরণ প্রদর্শন

লিস্ট ইউজারঃ আমাদের প্রথম আরইএসটি এপিআই listUsers এপিআই server.js ফাইলে নিচের কোড ব্যবহার করে পাই,

var express = require('express');
var app = express();
var fs = require("fs");

app.get('/listUsers', function (req, res) {
fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
console.log( data );
res.end( data );
});
})

var server = app.listen(8081, function () {

var host = server.address().address
var port = server.address().port

console.log("Example app listening at http://%s:%s", host, port)

})

লোকাল মেশিনে নির্দিষ্ট http://127.0.0.1:8081/listUsers এপিআইতে ব্যবহার করে আমরা পাই,

{
"user1" : {
"name" : "mahesh",
"password" : "password1",
"profession" : "teacher",
"id": 1
},
"user2" : {
"name" : "suresh",
"password" : "password2",
"profession" : "librarian",
"id": 2
},
"user3" : {
"name" : "ramesh",
"password" : "password3",
"profession" : "clerk",
"id": 3
}
}

ইউজার সংযুক্ত করাঃ নিচের এপিআই দ্বারা নতুন ইউজার সংযুক্ত করা হয়,

user = {
"user4" : {
"name" : "mohit",
"password" : "password4",
"profession" : "teacher",
"id": 4
}
}

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

var express = require('express');
var app = express();
var fs = require("fs");

var user = {
"user4" : {
"name" : "mohit",
"password" : "password4",
"profession" : "teacher",
"id": 4
}
}

app.get('/addUser', function (req, res) {
// First read existing users.
fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
data = JSON.parse( data );
data["user4"] = user["user4"];
console.log( data );
res.end( JSON.stringify(data));
});
})

var server = app.listen(8081, function () {

var host = server.address().address
var port = server.address().port
console.log("Example app listening at http://%s:%s", host, port)

})

লোকাল মেশিনে এপিআইতে http://127.0.0.1:8081/addUsers ব্যবহার করে যে ফলাফল আমরা পাব তা হল,

{ user1:
{ name: 'mahesh',
password: 'password1',
profession: 'teacher',
id: 1 },
user2:
{ name: 'suresh',
password: 'password2',
profession: 'librarian',
id: 2 },
user3:
{ name: 'ramesh',
password: 'password3',
profession: 'clerk',
id: 3 },
user4:
{ name: 'mohit',
password: 'password4',
profession: 'teacher',
id: 4 }
}

শো ডিটেইলঃএর জন্য যে এপিআই ব্যবহার করতে হবে তা হল,

var express = require('express');
var app = express();
var fs = require("fs");

app.get('/:id', function (req, res) {
// First read existing users.
fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
data = JSON.parse( data );
var user = users["user" + req.params.id]
console.log( user );
res.end( JSON.stringify(user));
});
})

var server = app.listen(8081, function () {

var host = server.address().address
var port = server.address().port
console.log("Example app listening at http://%s:%s", host, port)

})

উপরের সার্ভিসকে http://127.0.0.1:8081/2 ব্যবহার করে লোকাল মেশিনে কল দেয়াতে হয়।

{
"name":"suresh",
"password":"password2",
"profession":"librarian",
"id":2
}

ইউজার ডিলিট করার জন্যঃ এক্ষেত্রে যে এপিআই ব্যবহৃত হয় তা হল,

var express = require('express');
var app = express();
var fs = require("fs");

var id = 2;

app.get('/deleteUser', function (req, res) {

// First read existing users.
fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
data = JSON.parse( data );
delete data["user" + 2];

console.log( data );
res.end( JSON.stringify(data));
});
})

var server = app.listen(8081, function () {

var host = server.address().address
var port = server.address().port
console.log("Example app listening at http://%s:%s", host, port)

})

উপরের সার্ভিসকে http://127.0.0.1:8081/deleteUser ব্যবহার করে লোকাল মেশিনে কল দিলে যে ফলাফল আসবে,

{ user1:
{ name: 'mahesh',
password: 'password1',
profession: 'teacher',
id: 1 },
user3:
{ name: 'ramesh',
password: 'password3',
profession: 'clerk',
id: 3 }
}

তথ্যসূত্রঃ http://www.tutorialspoint.com/nodejs/nodejs_restful_api.htm

নোড . জে এস । Node.js – ওয়েব মডিউল (Web Module)

নড জেএসঃ ওয়েব মডিউল
রিদওয়ান বিন শামীম

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

বেশিরভাগ ওয়েব সার্ভার স্ক্রিপ্টিং ল্যাঙ্গুয়েজ সমৃদ্ধ সার্ভার সাইড স্ক্রিপ্ট সমর্থন করে যা ডাটাবেস থেকে তথ্য সংগ্রহ, জটিল লজিক সম্পাদন ও পরিশেষে এইচটিটিপি ক্লায়েন্টকে ওয়েব সার্ভারের মাধ্যমে তার ফলাফল প্রেরণ করে থাকে।

এপাচি হল বহুল ব্যবহৃত একটি ওয়েব সার্ভার যা কিনা একটি ওপেন সোর্স প্রকল্প।

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

নড ব্যবহার করে ওয়েব তৈরি করাঃ Node.js http মডিউল তৈরি করে যা সার্ভারের এইচটিটিপি ক্লায়েন্ট বা সার্ভার তৈরিতে ব্যবহৃত হয়। 8081 port মেনে চলে এমন সার্ভারের কাঠামো তৈরি করতে server.js নামের ফাইল তৈরি করতে হবে,

File: server.js
var http = require('http');
var fs = require('fs');
var url = require('url');

// Create a server
http.createServer( function (request, response) {
// Parse the request containing file name
var pathname = url.parse(request.url).pathname;

// Print the name of the file for which request is made.
console.log("Request for " + pathname + " received.");

// Read the requested file content from file system
fs.readFile(pathname.substr(1), function (err, data) {
if (err) {
console.log(err);
// HTTP Status: 404 : NOT FOUND
// Content Type: text/plain
response.writeHead(404, {'Content-Type': 'text/html'});
}else{
//Page found
// HTTP Status: 200 : OK
// Content Type: text/plain
response.writeHead(200, {'Content-Type': 'text/html'});

// Write the content of the file to response body
response.write(data.toString());
}
// Send the response body
response.end();
});
}).listen(8081);

// Console will print the message
console.log('Server running at http://127.0.0.1:8081/');

এখন একই ডিরেক্টরিতে index.htm নামের এইচটিএমএল ফাইল তৈরি করে সংরক্ষণ করি,

File: index.htm
<html>
<head>
<title>Sample Page</title>
</head>
<body>
Hello World!
</body>
</html>

এখন server.js রান করিয়ে ফলাফল দেখি,

$ node server.js

আউটপুট ভেরিফাই করে পাই,

Server running at http://127.0.0.1:8081/

নড জেএস সার্ভারের জন্য রিকোয়েস্ট তৈরি করাঃ এজন্য যেকোনো ব্রাউজারে http://127.0.0.1:8081/index.htm খুলে ফলাফল দেখতে পারি। সার্ভার এন্ডে আউটপুট ভেরিফাই করলে,

Server running at http://127.0.0.1:8081/
Request for /index.htm received.

নড ব্যবহার করে ওয়েব ক্লায়েন্ট তৈরি করাঃ http মডিউল তৈরি করে ওয়েব ক্লায়েন্ট তৈরি করা যায়। নিচের উদাহরণটি দেখি,

client.js নামের ফাইল তৈরি করতে হবে,

File: client.js
var http = require('http');

// Options to be used by request
var options = {
host: 'localhost',
port: '8081',
path: '/index.htm'
};

// Callback function is used to deal with response
var callback = function(response){
// Continuously update stream with data
var body = '';
response.on('data', function(data) {
body += data;
});

response.on('end', function() {
// Data received completely.
console.log(body);
});
}
// Make a request to the server
var req = http.request(options, callback);
req.end();

এখন, server.js ছাড়া অন্য কম্যান্ড টার্মিনাল ব্যবহার করে client.js রান করালে ফলাফল,

$ node client.js

আউটপুট ভেরিফাই করে আমরা পেতে পারি,

<html>
<head>
<title>Sample Page</title>
</head>
<body>
Hello World!
</body>
</html>

সার্ভার এন্ডে আউটপুট ভেরিফাই করে পাই,

Server running at http://127.0.0.1:8081/
Request for /index.htm received.

তথ্যসূত্রঃ http://www.tutorialspoint.com/nodejs/nodejs_web_module.htm

নোড . জে এস । Node.js – ইউটিলিটি মডিউল (Utility Modules)

নোড . জে এস । Node.js - ইউটিলিটি মডিউল
রিদওয়ান বিন শামীম

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

S.N. মডিউলের নাম ও বিবরণ
1 ওএস মডিউল
অপারেটিং সিস্টেম সংক্রান্ত ইউটিলিটি ফাংশনের ব্যবস্থা করে।
2 পাথ মডিউল
ফাইল পাথ নিয়ন্ত্রণ ও ব্যবস্থাপনার সুযোগ দেয়।
3 নেট মডিউল
সার্ভার ও ক্লায়েন্টকে স্ট্রিম রূপে প্রকাশ করে। নেটওয়ার্ক রাপার হিসেবে কাজ করে।
4 ডিএনএস মডিউল
প্রকৃত ডিএনএস লুকআপের জন্য ফাংশনের ব্যবস্থা করে, অন্তর্নিহিত অপারেটিং সিস্টেমের নাম রেজুলেসনের ফাংশনালিটি ব্যবহারের জন্য
5 ডোমেইন মডিউল
মাল্টিপল আই/ও অপারেশনকে সিঙ্গেল গ্রুপ হিসেবে নিয়ন্ত্রণের সুযোগ সৃষ্টি করে।

তথ্যসূত্রঃ http://www.tutorialspoint.com/nodejs/nodejs_utitlity_module.htm

নোড.জেএস : Node.js – বাফার

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

 

পিউর জাভাস্ক্রিপ্ট ইউনিকোড বান্ধব কিন্তু বাইনারি ডাটায় তেমন নিখুঁত নয়। টিসিপি সিস্টেম বা ফাইল স্ট্রিম নিয়ে কাজ করার সময় অক্টেট স্ট্রিম নিয়ন্ত্রণের প্রয়োজন হয়। নড বাফার ক্লাস প্রভাইড করে যা কিনা পূর্ণসংখ্যার অ্যারির সদৃশ ‘র’ ডাটা সংরক্ষণের সুযোগ দেয় কিন্তু ভি৮ হিপের(V8 heap)বাইরে ‘র’ মেমোরি এলোকেশনের সাথে সুসংহত থাকে।

বাফার ক্লাস গ্লোবাল ক্লাস, এটি বাফার মডিউল ইমপোর্ট করা ছাড়াই এপ্লিকেশনে ব্যবহার করা সম্ভব।

বাফার তৈরি করা

কয়েকটি উপায়ে বাফার তৈরি করা যেতে পারে,

প্রথম পদ্ধতিঃ ১০ অক্টেটের আনইনিসিয়েটেড বাফার তৈরির সিনট্যাক্স,


var buf = new Buffer(10);


 

দ্বিতীয় পদ্ধতিঃ প্রদত্ত অ্যারি থেকে বাফার তৈরির সিনট্যাক্স,


var buf = new Buffer([10, 20, 30, 40, 50]);


 

তৃতীয় পদ্ধতিঃ প্রদত্ত স্ট্রিং থেকে বাফার তৈরির সিনট্যাক্স ও অপশনাল এনকোডিং টাইপ,


var buf = new Buffer("Simply Easy Learning", "utf-8");


 

যদিও ডিফল্ট এনকোডিং হল "utf8" , আমরা "ascii", "utf8", "utf16le", "ucs2", "base64" বা "hex" ইত্যাদিও ব্যবহার করতে পারি।

বাফারে লেখা

নড বাফারে লেখার জন্য সিনট্যাক্স,


buf.write(string[, offset][, length][, encoding])


 

প্যারামিটারঃ সংশ্লিষ্ট প্যারামিটারগুলো হল,

  • স্ট্রিং
  • অফসেট
  • লেন্থ
  • এনকোডিং

রিটার্ন ভ্যালু

এই প্রক্রিয়া লিখিত অক্টেটের নাম্বার রিটার্ন করায়। বাফারে পুরো স্ট্রিংএর জায়গা না থাকলে আংশিক লেখা হয়। যেমন,


buf = new Buffer(256);
len = buf.write("Simply Easy Learning");

console.log("Octets written : "+ len);


 

এটি সঠিকভাবে সম্পাদিত হলে তা যে ফলাফল দেখাবে তা হল,


Octets written : 20


 

বাফার থেকে পড়াঃ এজন্য প্রয়োজনীয় সিনট্যাক্স হল,
buf.toString([encoding][, start][, end])

এর প্যারামিটারগুলো হল,

  • এনকোডিং
  • স্টার্ট
  • এন্ড

উদাহরণ,


 buf = new Buffer(26);
 for (var i = 0 ; i < 26 ; i++) {
 buf[i] = i + 97;
 }
console.log( buf.toString('ascii')); // outputs: abcdefghijklmnopqrstuvwxyz
 console.log( buf.toString('ascii',0,5)); // outputs: abcde
 console.log( buf.toString('utf8',0,5)); // outputs: abcde
 console.log( buf.toString(undefined,0,5)); // encoding defaults to 'utf8', outputs abcde
 এটি সঠিকভাবে সম্পাদিত হলে তা যে ফলাফল দেখাবে তা হল,
 abcdefghijklmnopqrstuvwxyz
 abcde
 abcde
 abcde

 

বাফার থেকে জেএসওএনে রূপান্তরের সিনট্যাক্স,


buf.toJSON()


 

এটির উদাহরণ,


var buf = new Buffer('Simply Easy Learning');
 var json = buf.toJSON(buf);
console.log(json);

 

এটি সঠিকভাবে সম্পাদিত হলে তা যে ফলাফল দেখাবে তা হল,


[ 83, 105, 109, 112, 108, 121, 32, 69, 97, 115, 121, 32, 76, 101, 97, 114, 110, 105, 110, 103 ]


 

কনকাটেনাট বাফারঃ কনকাটেনাট নড বাফার থেকে সিঙ্গেল নড বাফারে রূপান্তর করার সিনট্যাক্স,


Buffer.concat(list[, totalLength])


 

এর প্যারামিটারগুলো হল,

  • লিস্ট
  • টোটাললেন্থ

রিটার্ন ভ্যালুঃ বাফার ইন্সটেন্স রিটার্ন করায়।
উদাহরণ,


var buffer1 = new Buffer('TutorialsPoint ');
 var buffer2 = new Buffer('Simply Easy Learning');
 var buffer3 = Buffer.concat([buffer1,buffer2]);
 console.log("buffer3 content: " + buffer3.toString());

 

এটি সঠিকভাবে সম্পাদিত হলে তা যে ফলাফল দেখাবে তা হল,


buffer3 content: TutorialsPoint Simply Easy Learning

 

বাফার তুলনাঃ এর জন্য ব্যবহৃত সিনট্যাক্স,


buf.compare(otherBuffer);

 

উদাহরণ,


var buffer1 = new Buffer('ABC');
 var buffer2 = new Buffer('ABCD');
 var result = buffer1.compare(buffer2);
if(result < 0) {
 console.log(buffer1 +" comes before " + buffer2);
 }else if(result == 0){
 console.log(buffer1 +" is same as " + buffer2);
 }else {
 console.log(buffer1 +" comes after " + buffer2);
 }

 

এটি সঠিকভাবে সম্পাদিত হলে তা যে ফলাফল দেখাবে তা হল,


ABC comes before ABCD


 

বাফার কপি করাঃ এর সিনট্যাক্স হল,


buf.copy(targetBuffer[, targetStart][, sourceStart][, sourceEnd])


 

এর প্যারামিটারগুলো হল,

  • টার্গেট বাফার
  • টার্গেট স্টার্ট
  • সোর্স স্টার্ট
  • সোর্স এন্ড

উদাহরণ,


var buffer1 = new Buffer('ABC');
 //copy a buffer
 var buffer2 = new Buffer(3);
 buffer1.copy(buffer2);
 console.log("buffer2 content: " + buffer2.toString());

 

সঠিকভাবে সম্পাদিত হলে এটি ফলাফল দেখাবে,


buffer2 content: ABC

 

স্লাইস বাফারঃ এর সিনট্যাক্স হল,


buf.slice([start][, end])

 

প্যারামিটারঃ এর প্যারামিটার কোল,

  • স্টার্ট
  • এন্ড

উদাহরণ,


var buffer1 = new Buffer('TutorialsPoint');
 //slicing a buffer
 var buffer2 = buffer1.slice(0,9);
 console.log("buffer2 content: " + buffer2.toString());

 

সঠিকভাবে সম্পাদিত হলে এটি ফলাফল দেখাবে,


buffer2 content: Tutorials


 

বাফার লেন্থঃ এর জন্য আমাদের যে সিনট্যাক্স ব্যবহার করতে হবে তা হল,


buf.length;


 

উদাহরণ,


var buffer = new Buffer('TutorialsPoint');
//length of the buffer
console.log("buffer length: " + buffer.length);


 

সঠিকভাবে সম্পাদিত হলে এটি ফলাফল দেখাবে,


buffer length: 14


 

রেফারেন্স

নড জেএসে প্রাপ্ত বাফার মডিউলের রেফারেন্স নিচে দেয়া হল,

SN মেথড

  1. new Buffer(size)
  2. new Buffer(buffer)
  3. new Buffer(str[, encoding])
  4. buf.length
  5. buf.write(string[, offset][, length][, encoding])
  6. buf.writeUIntLE(value, offset, byteLength[, noAssert])
  7. buf.writeUIntBE(value, offset, byteLength[, noAssert])
  8. buf.writeIntLE(value, offset, byteLength[, noAssert])
  9. buf.writeIntBE(value, offset, byteLength[, noAssert])
  10. buf.readUIntLE(offset, byteLength[, noAssert])
  11. buf.readUIntBE(offset, byteLength[, noAssert])
  12. buf.readIntLE(offset, byteLength[, noAssert])
  13. buf.readIntBE(offset, byteLength[, noAssert])
  14. buf.toString([encoding][, start][, end])
  15. buf.toJSON()
  16. buf[index]
  17. buf.equals(otherBuffer)
  18. buf.compare(otherBuffer)
  19. buf.copy(targetBuffer[, targetStart][, sourceStart][, sourceEnd])
  20. buf.slice([start][, end])
  21. buf.readUInt8(offset[, noAssert])
  22. buf.readUInt16LE(offset[, noAssert])
  23. buf.readUInt16BE(offset[, noAssert])
  24. buf.readUInt32LE(offset[, noAssert])
  25. buf.readUInt32BE(offset[, noAssert])
  26. buf.readInt8(offset[, noAssert])
  27. buf.readInt16LE(offset[, noAssert])
  28. buf.readInt16BE(offset[, noAssert])
  29. buf.readInt32LE(offset[, noAssert])
  30. buf.readInt32BE(offset[, noAssert])
  31. buf.readFloatLE(offset[, noAssert])
  32. buf.readFloatBE(offset[, noAssert])
  33. buf.readDoubleLE(offset[, noAssert])
  34. buf.readDoubleBE(offset[, noAssert])
  35. buf.writeUInt8(value, offset[, noAssert])
  36. buf.writeUInt16LE(value, offset[, noAssert])
  37. buf.writeUInt16BE(value, offset[, noAssert])
  38. buf.writeUInt32LE(value, offset[, noAssert])
  39. buf.writeUInt32BE(value, offset[, noAssert])
  40. buf.writeInt8(value, offset[, noAssert])
  41. buf.writeInt16LE(value, offset[, noAssert])
  42. buf.writeInt16BE(value, offset[, noAssert])
  43. buf.writeInt32LE(value, offset[, noAssert])
  44. buf.writeInt32BE(value, offset[, noAssert])
  45. buf.writeFloatLE(value, offset[, noAssert])
  46. buf.writeFloatBE(value, offset[, noAssert])
  47. buf.writeDoubleLE(value, offset[, noAssert])
  48. buf.writeDoubleBE(value, offset[, noAssert])
  49. buf.fill(value[, offset][, end])

ক্লাস মেথড

SN মেথড

  1.   Buffer.isEncoding(encoding)
  2. Buffer.isBuffer(obj)
  3. Buffer.byteLength(string[, encoding])
  4. Buffer.concat(list[, totalLength])
  5. Buffer.compare(buf1, buf2)

 

নোড . জে এস । Node.js – ইভেন্ট ইমিটার (Event Emitter)

নড জেএসঃ ইভেন্ট ইমিটার
রিদওয়ান বিন শামীম

নড ইমিট ইভেন্টের অনেক অবজেক্ট যেমন net.Server এর সাথে কোনও সদৃশ পিয়ার যুক্ত হলে কোনও ইভেন্টকে ইমিট করে। fs.readStream কোনও ইভেন্টকে ইমিট করে যখন এর ফাইল খোলা থাকে। events.EventEmitter সব ইভেন্ট ইমিট হওয়ার উদাহরণ।

ইভেন্ট ইমিটারের শ্রেণীঃ ইভেন্ট ইমিটারের শ্রেণী events module তে ব্যপিত থাকে।

নিচে উদাহরণ দেয়া হল,

// Import events module
var events = require('events');
// Create an eventEmitter object
var eventEmitter = new events.EventEmitter();

ইভেন্ট ইমিটারের কোনও পর্যায়ে ভুল দেখা দিলে 'error' ইভেন্ট দেখানো হয়। নতুন লিসনার যোগ হলে 'newListener' ইভেন্ট আর কোনও লিসনার মুছে ফেললে 'removeListener' ইভেন্ট প্রদর্শিত হয়। ইভেন্ট ইমিটার on ও emit. এর মত অনেক বৈশিষ্ট্য ধারণ করে।

প্রক্রিয়াঃ

S.N. প্রক্রিয়া
1 addListener(event, listener)

2 on(event, listener)

3 once(event, listener)

4 removeListener(event, listener)

5 removeAllListeners([event])

6 setMaxListeners(n)

7 listeners(event)

8 emit(event, [arg1], [arg2], [...])

ক্লাস মেথডঃ
S.N. প্রক্রিয়া
1 listenerCount(emitter, event)

ইভেন্টসঃ
S.No. ইভেন্ট
1 newListener
• event – ইভেন্ট নেমের স্ট্রিং
• listener – ইভেন্ট হ্যান্ডেলার ফাংশন
2 removeListener
• event - ইভেন্ট নেমের স্ট্রিং
• listener - ইভেন্ট হ্যান্ডেলার ফাংশন

উদাহরণঃ নিচের Node.js কোড দ্বারা main.js নামের ফাইল তৈরি করি,

var events = require('events');
var eventEmitter = new events.EventEmitter();

// listener #1
var listner1 = function listner1() {
console.log('listner1 executed.');
}

// listener #2
var listner2 = function listner2() {
console.log('listner2 executed.');
}

// Bind the connection event with the listner1 function
eventEmitter.addListener('connection', listner1);

// Bind the connection event with the listner2 function
eventEmitter.on('connection', listner2);

var eventListeners = require('events').EventEmitter.listenerCount(eventEmitter,'connection');
console.log(eventListeners + " Listner(s) listening to connection event");

// Fire the connection event
eventEmitter.emit('connection');

// Remove the binding of listner1 function
eventEmitter.removeListener('connection', listner1);
console.log("Listner1 will not listen now.");

// Fire the connection event
eventEmitter.emit('connection');

eventListeners = require('events').EventEmitter.listenerCount(eventEmitter,'connection');
console.log(eventListeners + " Listner(s) listening to connection event");

console.log("Program Ended.");

এখন main.js রান করালে,

$ node main.js

আউটপুট ভেরিফাই করে দেখতে পারি,

2 Listner(s) listening to connection event
listner1 executed.
listner2 executed.
Listner1 will not listen now.
listner2 executed.
1 Listner(s) listening to connection event
Program Ended.

তথ্যসূত্রঃ http://www.tutorialspoint.com/nodejs/nodejs_event_emitter.htm

ইউজার ডায়াগ্রাম প্রটোকল

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

 

টিসিপি/আইপি প্রটোকল স্যুইটের সরলতম ট্রান্সপোর্ট লেয়ার কমিউনিকেশন প্রটোকল হল ইউজার ডায়াগ্রাম প্রটোকল । এটিতে কম সংখ্যক যোগাযোগ কৌশল প্রয়োগ করা হয়। ইউজার ডায়াগ্রাম প্রটোকলকে অনির্ভরযোগ্য যোগাযোগ প্রটোকল বলা হলেও এটি আইপি সার্ভিস ব্যবহার করে যেটিতে সেরা সরবরাহ কৌশল ব্যবহৃত হয়।

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

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

 

ইউজার ডায়াগ্রাম প্রটোকলের বৈশিষ্ট্য

  • ইউজার ডায়াগ্রাম প্রটোকল তখন ব্যবহৃত হয় যখন একনলেজমেন্ট অর্থাৎ প্রাপ্তি সংবাদের কোনও গুরুত্ব নেই,
  • একমুখী ডাটা প্রবাহের জন্য ইউজার ডায়াগ্রাম প্রটোকল বেশি উপযোগী,
  • ইউজার ডায়াগ্রাম প্রটোকল সহজ এবং কোয়েরিভিত্তিক যোগাযোগের জন্য উপযোগী,
  • এটি যোগাযোগ ওরিয়েন্টেড নয়,
  • ইউজার ডায়াগ্রাম প্রটোকল কনজেশন কন্ট্রোল কৌশল ব্যবহারে সক্ষম নয়,
  • এটি ডাটার নির্দেশিত সরবরাহ নিশ্চিত করে না,
  • ইউজার ডায়াগ্রাম প্রটোকল স্টেটবিহীন,
  • স্ট্রিমিং এপ্লিকেশন যেমন ভিওআইপি, মাল্টিমিডিয়া স্ট্রিমিং এর জন্য বেশি উপযোগী।

 

ইউজার ডায়াগ্রাম প্রটোকলের হিডার(header) চারটি মূল প্যারামিটার ব্যবহার করে,

  • সোর্স পোর্ট,
  • ডেসটিনেশন পোর্ট,
  • লেন্থ,
  • চেকসাম

 

যেসব এপ্লিকেশনে ডাটা ট্রান্সফারের জন্য ইউজার ডায়াগ্রাম প্রটোকল ব্যবহৃত হয়,

  • ডোমেইন নেম সার্ভিস,
  • সিম্পল নেটওয়ার্ক মেনেজমেন্ট প্রটোকল,
  • ট্রিভিয়াল ফাইল ট্রান্সফার প্রটোকল,
  • রাউটিং ইনফরমেশন প্রটোকল,
  • কার্বারোতে।

 

নোড.জেএস । Node.js – ইভেন্ট লুপ (Node.js – Event Loop)

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

 

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

ইভেন্টভিত্তিক প্রোগ্রামিং

নড জেএস প্রচুর ইভেন্ট ব্যবহার করে আর এজন্যই এজাতীয় অন্যান্য প্রযুক্তির চেয়ে এটি অনেক বেশি দ্রুত। নড এর সার্ভার শুরু করার সাথে সাথে এর চলকও শুরু হয়ে যায়, ফাংশন ঘোষণা করে এবং ইভেন্ট সম্পন্ন হওয়ার জন্য অপেক্ষা করে।

ইভেন্টভিত্তিক এপ্লিকেশনে একটি মেইন লুপ থাকে যা ইভেন্টের সন্ধান করে, পাওয়া গেলে তাকে কলব্যাক ফাংশনের সাথে সমন্বয় করিয়ে দেয়।

Event Driven Programming

ইভেন্টকে কলব্যাকের সমতুল্য মনে হতে পারে, মূলত পার্থক্য হল, অসমন্বিত ফাংশনের ফলাফল ফেরত আসলে কলব্যাক ফাংশন কাজ করে, আর ইভেন্ট অবজারভার প্যাটার্নে কাজ করে। যেসব ফাংশন ইভেন্টকে শোনে তারা অবজারভাররূপে কাজ করে। কোনও ইভেন্ট বাদ পরলে তার লিসনার ফাংশন সম্পাদন শুরু করে।

নড জেএসের অনেকগুলি বিল্ট ইন ইভেন্ট আছে যা events মডিউলের মাধ্যমে পাওয়া যায় এবং EventEmitter ক্লাস ইভেন্ট ও ইভেন্ট লিসনারের মধ্যে সমন্বয় সাধন করে।


// Import events module
 var events = require('events');
 // Create an eventEmitter object
 var eventEmitter = new events.EventEmitter();

 

নিচের সিনট্যাক্স ইভেন্ট ও ইভেন্ট হ্যান্ডলারের মধ্যে সমন্বয় সাধন করে,


// Bind event and even handler as follows
 eventEmitter.on('eventName', eventHandler);

 

প্রোগ্রামিঙের মাধ্যমে কোনও ইভেন্ট বাদ দিতে,


// Fire an event
 eventEmitter.emit('eventName');

 

উদাহরণ,
main.js নামের জেএস ফাইল তৈরি করি যাতে নিচের কোড থাকবে,


// Import events module
var events = require('events');
// Create an eventEmitter object
var eventEmitter = new events.EventEmitter();
// Create an event handler as follows
var connectHandler = function connected() {
     console.log('connection succesful.'); 

     // Fire the data_received event 
     eventEmitter.emit('data_received');
}
// Bind the connection event with the handler
eventEmitter.on('connection', connectHandler);
 
// Bind the data_received event with the anonymous function
eventEmitter.on('data_received', function(){
     console.log('data received succesfully.');
});
// Fire the connection event 
eventEmitter.emit('connection');
console.log("Program Ended.");

 

প্রোগ্রামটি রান করিয়ে আউটপুট পাব,


$ mnode main.js

 

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


 connection succesful.
 data received succesfully.
 Program Ended.

 

যেভাবে নড এপ্লিকেশন কাজ করেঃ অসমন্বিত ফাংশন শেষ প্যারামিটাররূপে কলব্যাককে গ্রহণ করে, কলব্যাক এররকে প্রথম প্যারামিটাররূপে গ্রহণ করে। পূর্বের উদাহরণের মাধ্যমে আবার দেখা যাক, input.txt নামে একটি ফাইল তৈরি করি, যাতে নিচের কোড থাকবে।


Tutorials Point is giving self learning content
 to teach the world in simple and easy way!!!!!

 

main.js নামের ফাইল তৈরি করি যাতে নিচের কোড থাকবে।


var fs = require("fs");

fs.readFile('input.txt', function (err, data) {
   if (err){
      console.log(err.stack);
      return;
   }
   console.log(data.toString());
});
console.log("Program Ended");

এখানে fs.readFile() অসমন্বিত ফাংশন যার কাজ হল ফাইল পড়া। এক্ষেত্রে ভুল হলে err অবজেক্ট দ্বারা সেটি readFile এর মাধ্যমে কলব্যাক ফাংশনে যাবে।

 Program Ended
 Tutorials Point is giving self learning content
 to teach the world in simple and easy way!!!!!