Tag Archives: ইউটিলিটি

EmployeeCreation.java: Make a simple “employees” table using the database utilities

Huge Sell on Popular Electronics

package cwp;

import java.sql.*;

/** Make a simple "employees" table using DatabaseUtilities.
 */

public class EmployeeCreation {
  public static Connection createEmployees(String driver,
                                           String url,
                                           String username,
                                           String password,
                                           boolean close) {
    String format =
      "(id int, firstname varchar(32), lastname varchar(32), " +
      "language varchar(16), salary float)";
    String[] employees =
      {"(1, 'Wye', 'Tukay', 'COBOL', 42500)",
       "(2, 'Britt', 'Tell',   'C++',   62000)",
       "(3, 'Max',  'Manager', 'none',  15500)",
       "(4, 'Polly', 'Morphic', 'Smalltalk', 51500)",
       "(5, 'Frank', 'Function', 'Common Lisp', 51500)",
       "(6, 'Justin', 'Timecompiler', 'Java', 98000)",
       "(7, 'Sir', 'Vlet', 'Java', 114750)",
       "(8, 'Jay', 'Espy', 'Java', 128500)" };
    return(DatabaseUtilities.createTable(driver, url,
                                         username, password,
                                         "employees",
                                         format, employees,
                                         close));    
  }

  public static void main(String[] args) {
    if (args.length < 5) {
      printUsage();
      return;
    }
    String vendorName = args[4];
    int vendor = DriverUtilities.getVendor(vendorName);
    if (vendor == DriverUtilities.UNKNOWN) {
      printUsage();
      return;
    }
    String driver = DriverUtilities.getDriver(vendor);
    String host = args[0];
    String dbName = args[1];
    String url =
      DriverUtilities.makeURL(host, dbName, vendor);
    String username = args[2];
    String password = args[3];
    createEmployees(driver, url, username, password, true);
  }

  private static void printUsage() {
    System.out.println("Usage: EmployeeCreation host dbName " +
                       "username password oracle|sybase.");
  }
}

EmployeeTest2.java: A test case for the database utilities. Prints results formatted as an HTML table.

Huge Sell on Popular Electronics

package cwp;

import java.sql.*;

/** Connect to Oracle or Sybase and print "employees" table
 *  as an HTML table.
 *  
 */

public class EmployeeTest2 {
  public static void main(String[] args) {
    if (args.length < 5) {
      printUsage();
      return;
    }
    String vendorName = args[4];
    int vendor = DriverUtilities.getVendor(vendorName);
    if (vendor == DriverUtilities.UNKNOWN) {
      printUsage();
      return;
    }
    String driver = DriverUtilities.getDriver(vendor);
    String host = args[0];
    String dbName = args[1];
    String url =
      DriverUtilities.makeURL(host, dbName, vendor);
    String username = args[2];
    String password = args[3];
    String query = "SELECT * FROM employees";
    DBResults results =
      DatabaseUtilities.getQueryResults(driver, url,
                                        username, password,
                                        query, true);
    System.out.println(results.toHTMLTable("CYAN"));
  }

  private static void printUsage() {
    System.out.println("Usage: EmployeeTest2 host dbName " +
                       "username password oracle|sybase.");
  }
}

DatabaseUtilities.java: Several general-purpose utilities discussed and used in the chapter.

Huge Sell on Popular Electronics

package cwp;

import java.sql.*;

/** Three database utilities:

 *   1) getQueryResults. Connects to a database, executes
 *      a query, retrieves all the rows as arrays
 *      of strings, and puts them inside a DBResults
 *      object. Also places the database product name,
 *      database version, and the names of all the columns
 *      into the DBResults object. This has two versions:
 *      one that makes a new connection and another that
 *      uses an existing connection. 


 *   2) createTable. Given a table name, a string denoting
 *      the column formats, and an array of strings denoting
 *      the row values, this method connects to a database,
 *      removes any existing versions of the designated
 *      table, issues a CREATE TABLE command with the
 *      designated format, then sends a series of INSERT INTO
 *      commands for each of the rows. Again, there are
 *      two versions: one that makes a new connection and
 *      another that uses an existing connection. 


 *   3) printTable. Given a table name, this connects to
 *      the specified database, retrieves all the rows,
 *      and prints them on the standard output.
 */

public class DatabaseUtilities {
  
  /** Connect to database, execute specified query,
   *  and accumulate results into DBRresults object.
   *  If the database connection is left open (use the
   *  close argument to specify), you can retrieve the
   *  connection via DBResults.getConnection.
   */
  
  public static DBResults getQueryResults(String driver,
                                          String url,
                                          String username,
                                          String password,
                                          String query,
                                          boolean close) {
    try {
      Class.forName(driver);
      Connection connection =
        DriverManager.getConnection(url, username, password);
      return(getQueryResults(connection, query, close));
    } catch(ClassNotFoundException cnfe) {
      System.err.println("Error loading driver: " + cnfe);
      return(null);
    } catch(SQLException sqle) {
      System.err.println("Error connecting: " + sqle);
      return(null);
    }
  }

  /** Retrieves results as in previous method, but uses
   *  an existing connection instead of opening a new one.
   */
  
  public static DBResults getQueryResults(Connection connection,
                                          String query,
                                          boolean close) {
    try {
      DatabaseMetaData dbMetaData = connection.getMetaData();
      String productName =
        dbMetaData.getDatabaseProductName();
      String productVersion =
        dbMetaData.getDatabaseProductVersion();
      Statement statement = connection.createStatement();
      ResultSet resultSet = statement.executeQuery(query);
      ResultSetMetaData resultsMetaData =
        resultSet.getMetaData();
      int columnCount = resultsMetaData.getColumnCount();
      String[] columnNames = new String[columnCount];
      // Column index starts at 1 (ala SQL) not 0 (ala Java).
      for(int i=1; i                                

ইউনিক্স – নেটওয়ার্ক কমিউনিকেশন অনুষঙ্গ (Unix – Network Communication Utilities)

Huge Sell on Popular Electronics

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

 

বণ্টনকৃত পরিবেশে কাজ করার সময় রিমোট ইউজারদের সাথে যোগাযোগ করতে অতে পারে, রিমোট ইউনিক্স মেশিনেও প্রবেশযোগ্যতা থাকতে হবে।

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

 

পিং ইউটিলিটি

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

  • হার্ডওয়ার ও সফটওয়ারের সমস্যা নির্ণয় ও পৃথক করা,
  • বিভিন্ন নেটওয়ার্ক ও ফরেন হোষ্টের স্ট্যাটাস নির্ণয় করা,
  • নেটওয়ার্ক টেস্ট, পরিমাপ ও নিয়ন্ত্রণ করা।

পিং কম্যান্ড ব্যবহারের জন্য যে সিনট্যাক্স ব্যবহার করতে হয় তা হল,


$ping hostnameor ip-address


 

এই কম্যান্ড প্রতি সেকেন্ডে একটি করে রেসপন্স প্রিন্ট করা শুরু করবে। এটি থামাতে CNTRL + C কী চাপতে হয়।

নেটওয়ার্কে পাওয়া হোষ্টের প্রাপ্যতা জানতে নিচের উদাহরণ সাহায্য করবে,


$ping google.com
PING google.com (74.125.67.100) 56(84) bytes of data.
64 bytes from 74.125.67.100: icmp_seq=1 ttl=54 time=39.4 ms
64 bytes from 74.125.67.100: icmp_seq=2 ttl=54 time=39.9 ms
64 bytes from 74.125.67.100: icmp_seq=3 ttl=54 time=39.3 ms
64 bytes from 74.125.67.100: icmp_seq=4 ttl=54 time=39.1 ms
64 bytes from 74.125.67.100: icmp_seq=5 ttl=54 time=38.8 ms
--- google.com ping statistics ---
22 packets transmitted, 22 received, 0% packet loss, time 21017ms
rtt min/avg/max/mdev = 38.867/39.334/39.900/0.396 ms
$

 

হোষ্ট পাওয়া না গেলে এটি যে ধরণের ব্যবহার করবে তা হল,


$ping giiiiiigle.com
ping: unknown host giiiiigle.com
$

 

এফটিপি ইউটিলিটি

এফটিপি বা ফাইল ট্রান্সফার প্রটোকল এক কম্পিউটার থেকে অন্য কম্পিউটারে ফাইল আপলোড বা ডাউনলোড করতে সাহায্য করে।

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

  • রিমোট হোষ্টে সংযুক্ত থাকা ও লগইন করা,
  • ডিরেক্টরি নেভিগেট করা,
  • ডিরেক্টরি কন্টেন্ট তালিকাবদ্ধ করা,
  • ফাইল রাখা ও পাওয়া,
  • ascii, ebcdic বা binary ফাইল ট্রান্সফার করা।

পিং কম্যান্ড ব্যবহারের সিনট্যাক্স হল,


 $ftp hostnameor ip-address

 

প্রয়োজনীয় কম্যান্ডের কয়েকটি নিচে লিপিবদ্ধ হল।

 

কম্যান্ড বর্ণনা
put filename লোকাল মেশিন থেকে রিমোট মেশিনে ফাইলনেম আপলোড করা
get filename রিমোট মেশিন থেকে লোকাল মেশিনে ফাইলনেম ডাউনলোড করা
mput file list লোকাল মেশিন থেকে রিমোট মেশিনে একাধিক ফাইল আপলোড করা
mget file list রিমোট মেশিন থেকে লোকাল মেশিনে একাধিক ফাইল ডাউনলোড করা
prompt off প্রম্পট বন্ধ করা
prompt on প্রম্পট চালু করা
dir রিমোট মেশিনের কারেন্ট ডিরেক্টরিতে থাকা সব ফাইল তালিকাবদ্ধ করা
cd dirname ডিরেক্টরিকে রিমোট মেশিনের dirname তে পরিণত করা
lcd dirname ডিরেক্টরিকে লোকাল মেশিনের dirname তে পরিণত করা
quit কারেন্ট লগইন থেকে লগআউট করা

 

কিছু কম্যান্ডের উদাহরণ নিচে দেয়া হল,


$ftp amrood.com
Connected to amrood.com.
220 amrood.com FTP server (Ver 4.9 Thu Sep 2 20:35:07 CDT 2009)
Name (amrood.com:amrood): amrood
331 Password required for amrood.
Password:
230 User amrood logged in.
ftp> dir
200 PORT command successful.
150 Opening data connection for /bin/ls.
total 1464
drwxr-sr-x   3 amrood   group       1024 Mar 11 20:04 Mail
drwxr-sr-x   2 amrood   group       1536 Mar  3 18:07 Misc
drwxr-sr-x   5 amrood   group        512 Dec  7 10:59 OldStuff
drwxr-sr-x   2 amrood   group       1024 Mar 11 15:24 bin
drwxr-sr-x   5 amrood   group       3072 Mar 13 16:10 mpl
-rw-r--r--   1 amrood   group     209671 Mar 15 10:57 myfile.out
drwxr-sr-x   3 amrood   group        512 Jan  5 13:32 public
drwxr-sr-x   3 amrood   group        512 Feb 10 10:17 pvm3
226 Transfer complete.
ftp> cd mpl
250 CWD command successful.
ftp> dir
200 PORT command successful.
150 Opening data connection for /bin/ls.
total 7320
-rw-r--r--   1 amrood   group       1630 Aug  8 1994  dboard.f
-rw-r-----   1 amrood   group       4340 Jul 17 1994  vttest.c
-rwxr-xr-x   1 amrood   group     525574 Feb 15 11:52 wave_shift
-rw-r--r--   1 amrood   group       1648 Aug  5 1994  wide.list
-rwxr-xr-x   1 amrood   group       4019 Feb 14 16:26 fix.c
226 Transfer complete.
ftp> get wave_shift
200 PORT command successful.
150 Opening data connection for wave_shift (525574 bytes).
226 Transfer complete.
528454 bytes received in 1.296 seconds (398.1 Kbytes/s)
ftp> quit
221 Goodbye.
$

 

টেলনেট ইউটিলিটি

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


C:>telnet amrood.com
Trying...
Connected to amrood.com.
Escape character is '^]'.
 
login: amrood
amrood's Password: 
*****************************************************
*                                                   *
*                                                   *
*    WELCOME TO AMROOD.COM                          *
*                                                   *
*                                                   *
*****************************************************
 
Last unsuccessful login: Fri Mar  3 12:01:09 IST 2009
Last login: Wed Mar  8 18:33:27 IST 2009 on pts/10
 
   {  do your work }
 
$ logout
Connection closed.
C:>

 

ফিঙ্গার ইউটিলিটি

ফিঙ্গার কম্যান্ড প্রদত্ত হোষ্টে ব্যবহারকারীর তথ্য প্রদর্শন করে। ফিঙ্গার কম্যান্ডের সিনট্যাক্স এরকম,

লোকাল মেশিনে লগইনকৃত সব ব্যবহারকারীদের ক্ষেত্রে,


$ finger
Login     Name       Tty      Idle  Login Time   Office
amrood               pts/0          Jun 25 08:03 (62.61.164.115)

 

লোকাল মেশিনের নির্দিষ্ট কোনও ব্যবহারকারীর ক্ষেত্রে


$ finger amrood
Login: amrood                           Name: (null)
Directory: /home/amrood                 Shell: /bin/bash
On since Thu Jun 25 08:03 (MST) on pts/0 from 62.61.164.115
No mail.
No Plan.

 

রিমোট মেশিনে লগইনকৃত সব ব্যবহারকারীদের ক্ষেত্রে,


$ finger @avtar.com
Login     Name       Tty      Idle  Login Time   Office
amrood               pts/0          Jun 25 08:03 (62.61.164.115)

 

রিমোট মেশিনের নির্দিষ্ট কোনও ব্যবহারকারীর ক্ষেত্রে,


$ finger amrood@avtar.com
Login: amrood                           Name: (null)
Directory: /home/amrood                 Shell: /bin/bash
On since Thu Jun 25 08:03 (MST) on pts/0 from 62.61.164.115
No mail.
No Plan.

 

ইউনিক্স বেসিক ইউটিলিটিঃ প্রিন্টিং, ইমেইল (Unix Basic Utility, Printing, Email)

Huge Sell on Popular Electronics

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

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

ফাইল প্রিন্ট করা

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

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

pr কম্যান্ড

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


pr option(s) filename(s)


pr কম্যান্ড স্ক্রিনে বা প্রিন্টেড কপিতে পরিবর্তন ও ফরম্যাটিং করে থাকে, এটি মূল ফাইলে কোনও পরিবর্তন সাধন করে না।
কিছু pr কম্যান্ড অপশন নিচের ছকে দেখানো হল।

অপশন বর্ণনা
-k আউটপুটে k কলাম গঠন করে
-d আউটপুটে ডবল স্পেস(সবpr ভার্সনে নয়)
-h "header" পরবর্তী আইটেমকে রিপোর্টার হিডার হিসেবে নেয়
-t টপ ও বটম মার্জিন ও হিডার বাদ দেয়
-l PAGE_LENGTH পেজলেন্থ নির্ধারণ করে PAGE_LENGTH (66) lines. টেক্সটের ডিফল্ট লাইন নাম্বার ৫৬
-o MARGIN মার্জিন স্পেস দ্বারা প্রতি লাইনকে অফসেট করানো।
-w PAGE_WIDTH পেজের উইডথ নির্ধারণ করে PAGE_WIDTH (72) characters মাল্টিপল টেক্সট কলাম আউটপুটের জন্য

উদাহরণস্বরূপ, food নামের একটি স্যাম্পল ফাইলের জন্য,


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

Restaurants হিডারে pr কম্যান্ড ব্যবহার করে দুই কলামে রিপোর্ট লিখলে,


$pr -2 -h "Restaurants" food
Nov  7  9:58 1997  Restaurants   Page 1

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


 

lp বা lpr কমান্ড

lp বা lpr কমান্ড কোনও ফাইল স্ক্রিনের পরিবর্তে কাগজে প্রিন্টের জন্য ব্যবহৃত হয়। ডিফল্ট প্রিন্টারে কোনও নির্দিষ্ট ফাইল প্রিন্ট করার জন্য lp বা lpr কমান্ড ব্যবহার করতে হয় যেমন food নামের স্যাম্পল ফাইলের জন্য


$lp food
request id is laserp-525 (1 file)
$


lpstat ও lpq কম্যান্ড

lpstat কম্যান্ড নির্দেশ করে প্রিন্টারে কোন কোন ডাটা সারিবদ্ধ আছে যেমন রিকুয়েস্ট আইডি, ওউনার, ফাইল সাইজ এসব। নিজের আউটপুট রিকোয়েস্ট ছাড়া অন্য সব রিকোয়েস্ট দেখতে lpstat –o কম্যান্ড ব্যবহার করা যায়।


$lpstat -o
laserp-573 john  128865 Nov 7 11:27 on laserp
laserp-574 grace  82744 Nov 7 11:28
laserp-575 john   23347 Nov 7 11:35
$


lpq, lpstat –o থেকে একটু ভিন্ন ধরণের তথ্য দেয়,


$lpq
laserp is ready and printing
Rank   Owner      Job Files                 Total Size
active john       573 report.ps             128865 bytes
1st    grace      574 ch03.ps ch04.ps       82744 bytes
2nd    john       575 standard input        23347 bytes
$


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

cancel ও lprm কম্যান্ড

cancel কম্যান্ড lp কম্যান্ড থেকে প্রিন্টিং রিকোয়েস্ট বাদ দেয়, lprm lpr রিকোয়েস্ট বাদ দেয়।


$cancel laserp-575
 request "laserp-575" cancelled
 $

প্রিন্ট হচ্ছে এমন রিকোয়েস্ট বাতিল করতে শুধু নিচের কোড প্রবেশ করাতে হবে,


$cancel laserp
 request "laserp-573" cancelled
 $

Lprm কম্যান্ড চলমান রিকোয়েস্ট বাতিলের জন্য প্রয়োগ করা হয়,


$lprm 575
 dfA575diamond dequeued
 cfA575diamond dequeued
 $

 

 

ইমেইল প্রেরণ

ইমেইল প্রেরণের সিনট্যাক্স হল,


$mail [-s subject] [-c cc-addr] [-b bcc-addr] to-addr

মেইল কম্যান্ডের গুরুত্বপূর্ণ অপশনগুলো হল,

অপশন বর্ণনা
-s কম্যান্ড লাইনে বিষয় নির্ধারণ
-c ইউজার লিস্ট কার্বন কপি করা। কমা দ্বারা আলাদা করা তালিকা হতে হবে
-b লিস্টে ব্লাইন্ড কার্বন কপি প্রেরণ করা। কমা দ্বারা আলাদা করা তালিকা হতে হবে

যেমন, admin@yahoo.com তে টেস্ট ম্যাসেজ পাঠাতে কোড,


$mail -s "Test Message" admin@yahoo.com

লাইনের শুরুতে "control-D" ব্যবহার করে ম্যাসেজ লিখতে হবে, এটি বন্ধ করতে শুধু dot (.) নিচের মত করে লিখতে হবে,


Hi,
This is a test
.
Cc:

নিচের কোড ব্যবহার করে সম্পূর্ণ ফাইল প্রেরণ করা যায়,


$mail -s "Report 05/06/07" admin@yahoo.com < demo.txt

ইনকামিং মেইল চেক করতে ইউনিক্স সিস্টেমে নিচের কোড ব্যবহার করতে হয়,


 $mail
 no email