புதியவர்களுக்கு ஆண்ட்ராய்டு பயிற்சிகையேடு பகுதி-10 உள்ளடக்க வழங்குநர்கள்

ஒரு உள்ளடக்க வழங்குநரின் ஆக்கக்கூறானது தரவுகளை கோரிக்கையின் மீது மற்றவர்களுக்கு ஒரு பயன்பாட்டிலிருந்து விநியோகம் செய்கின்றது அவ்வாறான கோரிக்கைகள் Content Resolve எனும் இனத்தின்மீதுள்ள வழிமுறைகளால் கையாளப்படுகின்றன. ஒரு உள்ளடக்க வழங்குநரை அதனுடைய தரவை சேமிப்பதற்கு பல்வேறு வழிகளில் பயன்படுத்த முடியும். அதனை தொடர்ந்து தரவுதளத்தில், கோப்புகளில் அல்லது ஒரு பிணையத்தில்வழியாக, தகவலை சேமிக்க முடியும்.
ஒரு பயன்பாட்டின் தரவை மற்றொரு பயன்பாட்டிலிருந்து மறைத்து கொண்டு ஒவ்வொரு ஆண்ட்ராய்டு பயன்பாடும் அதன் சொந்த அனுமதிகளுடன் அதன் சொந்த செயல்முறையில் இயங்கும். ஆனால் சில நேரங்களில் பயன்பாடுகள் முழுவதுமான தரவை பகிர்ந்து கொள்ள வேண்டிய தேவையுள்ளது. இதுவே உள்ளடக்க வழங்குநர்கள் மிகவும் பயன்மிகுந்த பகுதியாகும். இந்தஉள்ளடக்க வழங்குநர்கள் நாம் ஒரே இடத்தில் உள்ளடக்கத்தை மையப்படுத்த அனுமதிக்கின்றது அதனை தொடர்ந்து தேவைப்படும்போது பல்வேறு பயன்பாடுகளும் அம்மையத்தை அணுகஅனுமதிக்கின்றது.. ஒரு உள்ளடக்க வழங்குநர் ஒரு தரவுதளத்தினை போன்றே செயல்படுகின்றது. அதனால் நாம் அதனிடம் வினா எழுப்பமுடியும், அதனுடைய உள்ளடக்கத்தை திருத்தம் செய்திடமுடியும், அதுமட்டுமின்றி உள்ளிணைத்தல் () நிகழ்நிலை படுத்துதல் (), நீக்கம்செய்தல் (), வினா எழுப்புதல் () ஆகிய வழிமுறைகளை பயன்படுத்தி அதனுடைய உள்ளடக்கங்களை சேர்த்திடவோ அல்லது நீக்கம் செய்திடவோ செய்யலாம் பெரும்பாலான நிகழ்வுகளில் இந்த தரவுகள் ஒரு Sqlite எனும் தரவுதளத்தினை போன்று சேமிக்கின்றது
. ஒரு உள்ளடக்க வழங்குநர் Content Provider எனும் இனத்தின் ஒரு துணை இனமாக செயல்படுத்தப்படுகிறது மேலும் பிற பயன்பாடுகளானது நடவடிக்கைகளை செயற்படுத்துவதற்கு இயலுமை செய்வதற்கு என்று தொகுதியான செந்தர API கள் செயல்படுத்த வேண்டும்
public class MyContentProvider extends ContentProvider {
}
உள்ளடக்க முகவரிகள்
ஒரு உள்ளடக்க வழங்குநரின் வினாவிற்கு, நாம் ஒரு URI வடிவில் கேள்வி சரத்தை குறிப்பிடவேண்டும் அது பின்வரும் வடிவமைப்பினை கொண்டதாகும்
:////
இந்த URI இன் பல்வேறு பகுதிகளின் விவரங்கள் பின்வருமாறு:

அடுத்து நாம் குறிப்பிட்ட தரவுதள நடவடிக்கைகளை செயற்படுத்துவதற்கு உள்ளடக்க வழங்குநர் வினாக்களுக்கு செயல்படுத்த வேண்டும்.
இறுதியாக எனும் குறிச்சொல்லை பயன்படுத்தி நம்முடைய செயல்பாட்டு கோப்பில் நம்முடைய உள்ளடக்க வழங்குநரை பதிவு செய்திடுக.
நம்முடைய உள்ளடக்க வழங்குநர் செயல்படுவதற்கு உள்ளடக்க வழங்குநரின் இனத்தில் மேலெழுதுவதற்கு தேவையானவழிமுறைகளின் பட்டியல் பின்வருமாறு
onCreate () வழங்குநரின் பணி தொடங்கிடும்போது இந்த வழிமுறை அழைக்கப்படுகிறது:
query()இந்த வழிமுறையானது ஒரு வாடிக்கையாளரிடமிருந்து ஒரு கோரிக்கை பெறுவதாகும் இதன்விளைவாக ஒரு சுட்டியின் பொருளாக திருப்பப்படுகின்றது
insert() உள்ளடக்க வழங்குநருக்குள் புதிய ஆவணத்தை உள்ளிணப்பு செய்வதற்கு இந்த வழிமுறை பயன்படுகின்றது
delete()உள்ளடக்க வழங்குநரிடம் நடப்பில் உள்ள ஒரு ஆவணத்தை நீக்கம் செய்திட இந்த வழிமுறை பயன்படுகின்றது
update() இந்தவழிமுறையானது உள்ளடக்க வழங்குநரிடம் நடப்பில் இருக்கும் ஒரு ஆவணத்தை மேம்படுத்துகிறது.
gettype () இந்த வழிமுறையானதுகொடுக்கப்பட்ட URI இல் உள்ள IME வகை தரவினை திருப்பி வழங்குகிறது.
உதாரணம்
இந்த உதாரணமானது எவ்வாறு நம்முடைய சொந்த உள்ளடக்க வழங்குநரை உருவாக்குவது என நமக்கு விளக்கமளிக்கின்றது. எனவே நாம் “அனைவருக்கும் வணக்கம்” எனும் எடுத்துக்காட்டினை உருவாக்கும் போது பின்பற்றிய அதே பின்வரும் படிமுறைகளை இதற்கும் பின்பற்றிட வேண்டும்:

தொடர்ந்து மாற்றப்பட்ட முக்கிய செயல்பாடுடன்கூடிய filesrc / com.example.mycontentprovider / MainActivity.java எனும் கோப்பின் மாறுதல்கள் செய்த முதன்மை செயலின் உள்ளடக்கம் பின்வருவதில் உள்ளது. இந்தக் கோப்பில் அடிப்படை வாழ்க்கை சுழற்சி முறைகள் ஒவ்வொன்றையும் சேர்க்க முடியும். நாம் இந்த பயன்பாட்டுடன் பயனாளர் தொடர்புகளை கையாளுவதற்கு onClickAddName () onClickRetrieveStudents ().ஆகிய இரு புதிய வழிமுறைகளை சேர்க்க வேண்டும்

package com.example.mycontentprovider
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.ContentValues;
import android.content.CursorLoader;
import android.database.Cursor;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void onClickAddName(View view) {
// Add a new student record
ContentValues values = new ContentValues();
values.put(StudentsProvider.NAME,
((EditText)findViewById(R.id.txtName)).getText().toString());
values.put(StudentsProvider.GRADE,
((EditText)findViewById(R.id.txtGrade)).getText().toString());
Uri uri = getContentResolver().insert(
StudentsProvider.CONTENT_URI, values);
Toast.makeText(getBaseContext(),
uri.toString(), Toast.LENGTH_LONG).show();
}
public void onClickRetrieveStudents(View view) {
// Retrieve student records
String URL = “content://com.example.provider.College/students”;
Uri students = Uri.parse(URL);
Cursor c = managedQuery(students, null, null, null, “name”);
if (c.moveToFirst()) {
do{ Toast.makeText(this, c.getString(c.getColumnIndex(StudentsProvider._ID)) +
“, ” + c.getString(c.getColumnIndex( StudentsProvider.NAME)) +
“, ” + c.getString(c.getColumnIndex( StudentsProvider.GRADE)),
Toast.LENGTH_SHORT).show();
} while (c.moveToNext());
}
}
}
com.example.mycontentprovider package என்பதன்கீழ் StudentsProvider.java எனும் புதிய கோப்பினை உருவாக்குக. அதனை தொடர்ந்து பின்வருவது src/com.example.mycontentprovider/StudentsProvider.java: என்பதனுடைய உள்ளடக்கமாகும்

package com.example.mycontentprovider;
import java.util.HashMap;
import android.content.ContentProvider;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.Context;
import android.content.UriMatcher;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteQueryBuilder;
import android.net.Uri;
import android.text.TextUtils;
public class StudentsProvider extends ContentProvider {
static final String PROVIDER_NAME = “com.example.provider.College”;
static final String URL = “content://” + PROVIDER_NAME + “/students”;
static final Uri CONTENT_URI = Uri.parse(URL);
static final String _ID = “_id”;
static final String NAME = “name”;
static final String GRADE = “grade”;
private static HashMap STUDENTS_PROJECTION_MAP;
static final int STUDENTS = 1;
static final int STUDENT_ID = 2;
static final UriMatcher uriMatcher;
static{
uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
uriMatcher.addURI(PROVIDER_NAME, “students”, STUDENTS);
uriMatcher.addURI(PROVIDER_NAME, “students/#”, STUDENT_ID);
}
/** * Database specific constant declarations
*/
private SQLiteDatabase db;
static final String DATABASE_NAME = “College”;
static final String STUDENTS_TABLE_NAME = “students”;
static final int DATABASE_VERSION = 1;
static final String CREATE_DB_TABLE =
” CREATE TABLE ” + STUDENTS_TABLE_NAME +
” (_id INTEGER PRIMARY KEY AUTOINCREMENT,
” + ” name TEXT NOT NULL,
” + ” grade TEXT NOT NULL);”;
/**
* Helper class that actually creates and manages
* the provider’s underlying data repository.
*/
private static class DatabaseHelper extends SQLiteOpenHelper {
DatabaseHelper(Context context){
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db)
{
db.execSQL(CREATE_DB_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion,
int newVersion) {
db.execSQL(“DROP TABLE IF EXISTS ” + STUDENTS_TABLE_NAME); onCreate(db);
}
}
@Override
public boolean onCreate() {
Context context = getContext();
DatabaseHelper dbHelper = new DatabaseHelper(context);
/**
* Create a write able database which will trigger its
* creation if it doesn’t already exist.
*/
db = dbHelper.getWritableDatabase();
return (db == null)? false:true;
}
@Override
public Uri insert(Uri uri, ContentValues values) {
/**
* Add a new student record
*/
long rowID = db.insert( STUDENTS_TABLE_NAME, “”, values);
/**
* If record is added successfully
*/
if (rowID > 0) {
Uri _uri = ContentUris.withAppendedId(CONTENT_URI, rowID); getContext().getContentResolver().notifyChange(_uri, null);
return _uri;
}
throw new SQLException(“Failed to add a record into ” + uri);
}
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
qb.setTables(STUDENTS_TABLE_NAME);
switch (uriMatcher.match(uri)) {
case STUDENTS:
qb.setProjectionMap(STUDENTS_PROJECTION_MAP);
break;
case STUDENT_ID: qb.appendWhere( _ID + “=” + uri.getPathSegments().get(1));
break;
default:
throw new IllegalArgumentException(“Unknown URI ” + uri);
}
if (sortOrder == null || sortOrder == “”){
/**
* By default sort on student names
*/
sortOrder = NAME;
}
Cursor c = qb.query(db, projection, selection, selectionArgs,
null, null, sortOrder);
/**
* register to watch a content URI for changes
*/
c.setNotificationUri(getContext().getContentResolver(), uri);
return c;
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
int count = 0;
switch (uriMatcher.match(uri)){
case STUDENTS:
count = db.delete(STUDENTS_TABLE_NAME, selection, selectionArgs);
break;
case STUDENT_ID: S
tring id = uri.getPathSegments().get(1);
count = db.delete( STUDENTS_TABLE_NAME, _ID + ” = ” + id
+ (!TextUtils.isEmpty(selection) ? ” AND (” +
selection + ‘)’ : “”), selectionArgs);
break;
default:
throw new IllegalArgumentException(“Unknown URI ” + uri);
}
getContext().getContentResolver().notifyChange(uri, null);
return count;
}
@Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
int count = 0;
switch (uriMatcher.match(uri)){
case STUDENTS:
count = db.update(STUDENTS_TABLE_NAME, values,
selection, selectionArgs);
break;
case STUDENT_ID:
count = db.update(STUDENTS_TABLE_NAME, values, _ID +
” = ” + uri.getPathSegments().get(1) +
(!TextUtils.isEmpty(selection) ? ” AND (” +
selection + ‘)’ : “”), selectionArgs);
break;
default:
throw new IllegalArgumentException(“Unknown URI ” + uri );
}
getContext().getContentResolver().notifyChange(uri, null);
return count;
}
@Override
public String getType(Uri uri) {
switch (uriMatcher.match(uri)){
/**
* Get all student records
*/
case STUDENTS:
return “vnd.android.cursor.dir/vnd.example.students”;
/**
* Get a particular student
*/
case STUDENT_ID:
return “vnd.android.cursor.item/vnd.example.students”;
default:
throw new IllegalArgumentException(“Unsupported URI: ” + uri);
}
}
}
பின்வருவது AndroidManifest.xml எனும் கோப்பின் மாறுதல் செய்யப்பட்ட உள்ளடக்கத்தை கொண்டதாகும் . இதில் நம்முடைய உள்ளடக்க வழங்குநரின் உள்ளடங்கியதற்கு எனும் குறிச்சொல்லினை சேர்த்து உள்ளோம்:

பின்வருவதில் நம்முடைய வாடிக்கையாளரின் நோக்க ஒலிபரப்பிற்கு ஒரு பொத்தானை உள்ளடங்கியுள்ளதற்காக res/layout/activity_main.xml எனும்கோப்பில் உள்ளடக்கங்கள் கொடுக்கப்பட்டுள்ளன

பின்வரும் உள்ளடக்கங்களானது res/values/strings.xml எனும் கோப்பில் இருப்பதை உறுதிசெய்துகொள்க

MyContentProvider
Settings
அனைவருக்கும் வணக்கம்!
;
நாம் சற்றுமுன்பு நம்மால் மாறுதல்கள் செய்யப்பட்ட MyContentProvider எனும் பயன்பாட்டினை இயக்க முயற்சி செய்வோம்! சூழல் அமைவை அமைவு செய்திடும்போது நம்முடைய AVD ஐ உருவாக்கிவிட்டோம் என கருதிகொள்க இந்தஎக்லிப்ஸில் இருந்து பயன்பாட்டை இயக்குவதற்கு நம்முடைய செயல்திட்டத்தின் செயல்பாட்டு கோப்புகளில் ஒன்றினை திறந்து கொள்க அதனை தொடர்ந்து கருவிகளின் பட்டையிலிருந்து Runஎனும் உருவப் பொத்தானை தெரிவு செய்து சொடுக்குக உடன் எக்லிப்ஸானது நம்முடைய AVD இல் நம்முடைய பயன்பாட்டை நிறுவுகை செய்திடத் துவங்கிடும் அதனை தொடர்ந்து நம்முடைய கட்டமைப்பு , பயன்பாடு ஆகிய அனைத்தும் நன்றாக உள்ளன என்றால், அது பின்வரும் முன்மாதிரி சாளரத்தினை திரையில் காண்பிக்கும்: அதுவரை காத்திருக்கவும் ஏனெனில் இந்த செயலானது நம்முடைய கணினியின் இயக்கவேகத்தை பொறுத்து உடனடியாகவோ அல்லது சிறிது கழித்தோ ஆகும்.
3

இப்போது Nameஎன்பதில் மாணவர் பெயரையும் , Grade என்பதில் நுழைவு தகுதியையும் உள்ளீடுசெய்து கொண்டு இறுதியாக Add Name எனும்பொத்தானை சொடுக்குக , இவ்வாறு செய்தவுடன் மாணவரின் ஆவணமானது தரவுத்தளத்தில் சேர்க்கப்பட்டுவிடும் அதனை தொடர்ந்து தரவுதளத்தில் சேர்க்கப்பட்ட பதிவு எண்ணுடன் சேர்த்து ContentProvider: URI என்பது திரையின் கீழே ஒரு செய்தியாக ஒளிருமாறு காண்பிக்கப்படுகின்றது . இந்த செயலானது நம்முடைய insert()எனும் வழிமுறையை பயன்படுத்திகொள்ளச் செய்கிறது. நம்முடைய உள்ளடக்க வழங்குநரின் தரவுத்தளத்தில் மேலும் சில மாணவர்களின் ஆவணங்களை சேர்த்திடுவதற்காக இந்த செயல்முறையை மீண்டும் செயற்படுத்திடுக.
4

இவ்வாறு தரவுத்தளத்தில் பதிவுகளை சேர்த்து முடித்தவுடன், இப்போது இந்த உள்ளடக்க வழங்குநரை இவ்வாறு சேர்த்த ஆவணங்களை திரும்ப வழங்கிடுக என கேட்கலாம், எனவே Retrieve Studentsஎனும் பொத்தானை சொடுக்குக உடன் query()எனும் வழிமுறையை செயற்படுத்தியவுடன் ஒவ்வொரு ஆவணமாக வழங்குவதை போன்று இந்த வழிமுறையிலும் அனைத்து ஆவணங்களையும் ஒவ்வொன்றாக திரையில் காண்பிக்கும்
5

நாம்MainActivity.java எனும் கோப்பில் மேம்படுத்தலுக்கு எதிரான நடவடிக்கைகளை எழுதவும் , மீண்டும் அழைக்கும் செயலியை வழங்குவதால் செயல்பாட்டினை நீக்கவும் முடியும் அதன்பின்னர் செயல்பாடுகளை சேர்த்திடவும் படித்திடவும் ஆன அதே வழியில் உள்ள மேம்படுத்தலுக்கான பொத்தான்களையும் நீக்கப்பட்ட நடவடிக்கைகளையும் திரும்பவும் வேண்டுமென பயனாளர் இடைமுகம் செய்து மாற்றிட முடியும்.
இந்த வழியில் நாம் முகவரி புத்தகம் போன்று தற்போதுள்ள உள்ளடக்க வழங்குநரை பயன்படுத்த அல்லது உள்ளடக்க வழங்குநர் கருத்தினை பயன்படுத்தி அருமையான தரவுதளம் சார்ந்த பயன்பாட்டினை உருவாக்கிட முடியும் அதனை கொண்டு படிக்க, எழுத நிகழ்நிலை படுத்த,நீக்கம் செய்திட என்பன போன்ற அனைத்து தகவல் நடவடிக்கைகளை மேலேகூறிய உதாரணத்தில் விவரித்தவாறு அனைத்து வகையிலும் செயற்படுத்திட முடியும்

பரந்து இறைந்து கிடக்கும் கோப்புகளை ஒன்றுசேர்த்து கணினியானது விரைவாக செயல்படஉதவிசெய்க

நம்முடைய கணினியில் பல்வேறு சமயங்களில் பல்வேறுவகையான கோப்புகளை உருவாக்கியிருப்போம் அவை கணினியின் நினைவகத்தில் ஆங்காங்கு பரந்துவிரிந்து இறைந்து கிடக்கும் அதனால் அடுத்தமுறை கணினியை பயன்படுத்தமுனையும்போது கணினியின் இயக்கமானது நம்முடைய பொறுமையை இழக்கும் அளவிற்கு எருமைமாடு போன்று மிகமெது-வானதாக இருக்கும் அவ்வாறான நிலையில் இவைகளை ஒன்றுசேர்த்து நினைவகத்தில் காலிஇடவசதியை ஏற்படுத்தினால் கணினியில் செயல்வேகம் விரைவாக இருக்கும் என்பதற்காக கணினியில் மற்ற அனைத்து செயல்களையும் நிறுத்தம்செய்து இந்த பரந்துவிரிந்து இறைந்து கிடக்கும் தரவுகளை கூட்டிஒன்றாக சேர்த்திடும்பணியை அவ்வப்போது செய்துவருவது நாமனைவரும் அறிந்த செயலே அதற்கு பதிலாக நாம் நம்முடைய பணியை செய்துகொண்டுவரும்போதே கணினியின் இயக்கத்தின் பின்புலத்தில்தரவுகளை ஒன்றுசேர்த்து காலிஇடவசதியை செய்துதரும் பயன்பாடுகள் தற்போது ஏராளமாக கிடைக்கின்றன அவைகளுள் Defraggler என்பதும் சிறந்த ஒன்றாகும் இது CCleanerஎன்பதை போன்ற மிகச்சிறந்த கட்டணமில்லாத பயன்பாடாகும் இதனுடைய Defraggler.exe எனும் செயலிகோப்பினை பதிவிறக்கம் செய்து நம்முடைய கணினியில் நிறுவுகை செய்து கொள்க பின்னர் குறிப்பிட்ட கோப்புகளை மட்டும் அல்லது குறிப்பிட்ட கோப்பகங்களை மட்டும் அல்லது குறிப்பிட்ட இயக்ககங்களை மட்டும் அல்லது குறிப்பிட்ட வட்டுகளை மட்டும் உள்ள பரந்துவிரிந்து இறைந்து கிடக்கும் தரவுகளை நாம் மற்றபயன்பாடுகளை செயல்படுத்தி கொண்டிருக்கும் போதே ஒன்றுசேர்த்து கணினியின் நினைவகத்தில் காலி இடவசதியை ஏற்படுத்தி கொடுக்கின்றது

திறன்பேசியால் (Smartphone) ஏற்படும் அபாயங்கள் அவைகளைஎவ்வாறு தவிர்ப்பது

1993 இல்முதன்முதல் கையடக்க தொலைபேசிவழியாக இணையத்துடன் தொடர்பு கொள்ளும் வசதி ஏற்படுத்தப்பட்டது ஆயினும் அன்று இது கையடக்க தொடர்பு சாதனமாகவும் இணையத்துடன் தொடர்பு கொள்ளும் திறனும் கொண்ட சாதனம் என்பதே இதன் குறிக்கோளாக இருந்தது ஏறத்தாழ 24 ஆண்டுகள் வளர்ச்சியடைந்தநிலையில் தற்போது கைகளில் அணியும் சாதனமான திறன்பேசிவாயிலாக இணையத்துடன் தொடர்புகொள்ளும் வசதியாக மேம்படுத்தபட்டுள்ளது ஆயினும் பின்வரும் அபாயங்கள் இந்ததிறன்பேசியில் உள்ளன முதலாவதாக இதன்மூலம் தரவுகளை பரிமாறி கொள்ளும்போது password, PIN ,biometric போன்ற பாதுகாப்பு வளையங்கள் இல்லாமலேயே செயல்படுத்தபடுகின்றன மேலும் தரவுகள் இயந்திரமொழிக்கு மொழிமாற்றம் செய்யப்பட்டு பாதுகாப்பாக கையாளபடுவதில்லை அதுமட்டுமல்லாது இவற்றில் இடைமுகம் செய்வதற்கு மூன்றாவது நபர்களின் பயன்பாடுகளை பயன்படுத்தி கொள்வதால் அவை பாதுகாப்பானது எனஎந்த உத்திரவாதமும் கிடையாது அதனால் password, PIN ,biometric போன்ற பாதுகாப்பு வளையங்களை கொண்டு நம்பகமான பாதுகாப்பான மூன்றாவதுநபர்களின் பயன்பாடுகளைமட்டும் பயன்படுத்தி கொள்கஎன அறிவுறுத்தபடுகின்றது
இரண்டாவதாக கைகளில் அணியும் சாதனங்கள் இணையத்தை தொடர்பு கொள்வதற்காக பாதுகாப்பற்ற Wi-Fi அல்லது Bluetooth ஆகியவற்றினை பயன்படுத்தி கொள்ளப்படுகின்றது இவைகளையும் பாதுகாப்பான வழிகளில் தொடர்புகொள்ளுமாறு கேட்டுகொள்ளப்படுகின்றது

வரைபடதரவுதளம் ஒருஅறிமுகம்

பொதுவாக தரவுதளம் என்பதை பற்றி நம்மெல்லோருக்கும் நன்கு அறிமுகம் உண்டு அதுவென்ன வரைபடதரவுதளம் என அனைவரும் புருவத்தையும் உயர்த்துவார்கள் நிற்க வரைபடதரவுதளம் அல்லது வரைபடநோக்கதரவுதளம் என்பது NoSQL எனும் தரவுதளத்தின் ஒருவகையாகும் இதில் வரைபடதேற்றத்தை தரவுகளை தேக்கிவைப்பதற்கும் ஒப்பீடுசெய்வதற்கும் வினாஎழுப்புவதற்கும் பயன்படுத்தி கொள்ளப்படுகின்றது அடிப்படையில் மையமுனைகளையும்(nodes) விளிம்புகளையும் (edges) தொகுதியாக கொண்டதேஇந்த வரைபடதரவுதளமாகும் இதில் ஒவ்வொருமையமுனையும் தனிநபர் ,வியாபாரநிறுவனம் போன்றவைகளைகுறிப்பிட பயன்படுகின்றன இவைகளின் இருமையமுனைகளுக்கு இடையேயான தொடர்புகளை குறிப்பதற்காக விளிம்புகள் பயன்படுகின்றன வரைபடதரவுதளத்தில் ஒவ்வொரு மையமுனையுமஒரேமாதிரியானசுட்டிஒன்றினால் வரையறுக்கப்படுகின்றது இவை அம்மையமுனையிலிருந்து வெளிநோக்கி செல்லும் அல்லது மற்றமையமுனையிலிருந்து உள்நோக்கிவருகின்ற தொகுதியான விளிம்புகளை கொண்டிருக்கும் இவ்வாறான ஒவ்வொரு விளிம்பும் எந்தமையமுனையத்திலிருந்து துவங்கி எந்த மையமுனையத்தில் சென்று முடிவடைகின்றது என்ற பண்பியல்புகளையும் ஒரேமாதிரியான சுட்டியையும் கொண்டதாகும் உன்னிடம் காலியானவெள்ளைபலகையிருந்தால் கண்டிப்பாக வரைபடமும் உன்னிடம் இருக்கும்என்பதேஇந்த வரைபடதரவுதளத்தின் அடிப்படைகொள்கையாகும் பொருட்களுக்கு இடையேயான இணையம் என்பதன் அடிப்படை செயலேஇந்த வரைபடதரவுதளத்தின் மிகமுக்கிய பயனாகும் அனைத்து சமுதாய தரவுதளங்களும் இந்த வரைபடதரவுதளத்தின் அடிப்படையிலேயே செயல்படுகின்றன அடிப்படையில் வியாபார ஒழுங்குமுறையையும் விநியோக தொடர்சங்கிலியையும் பராமரிப்பதில் இந்த வரைபடதரவதளம் மிகமுக்கிய பங்காற்றுகின்றது

எந்தவொரு கணினிமொழியையும் கற்றுக்கொள்வதற்கான சிறந்தவழிகள்

1கணினிமொழியைகற்றுக்கொள்ளவிழையும் நபர்ஒருவர்முதன்முதலில் அதன் குறிமுறைவரிகளை நன்கு கற்றறிந்து அவைகளின் செயல்பாடுயாவை அதனால் ஏற்படும் விளைவுகள் யாவை என அறி்ந்து தெளிவுபெறுக
2 அதன்பின்னர் அந்த கணினிமொழியை பற்றிய விளக்க ஆவணங்களை நன்கு படித்தறிந்து தெளிவுபெறுக
3 இணையத்தில் இந்த கணினிமொழிகுறித்த தேடுதல்களை மேற்கொள்க இதனுடைய குறிமுறைவரிகளில் ஏற்படும் பிழைகளையும் அவைகளைசரிசெய்திடும் வழிமுறைகளையும் அறி்ந்துகொள்க
4 இணையத்திலுள்ள இந்த கணினிமொழிக்கான தன்னார்வ குழுக்களுடன் இணைந்து அம்மொழியின் தற்போதை வளர்ச்சி சிக்கல்கள் அதற்கான தீர்வுகள் ஆகியவற்றை அறிந்துகொள்க நமக்கு ஏற்படும்அனைத்து சிக்கல்களுக்கம் தீர்வுசெய்வதற்கான வழிமுறைகளையும் இந்த தன்னார்வ குழுக்களிடமிருந்து அறிந்து கொள்க
5 பின்னர் சிறியஅளவு விளையாட்டு பயன்பாடுகளை வெற்றிகரமாக உருவாக்கி பழகுக
6 அதன் பின்னர் நடைமுறை வாழ்க்கைக்கு தேவையான சிறுசிறு பயன்பாடுகளை உருவாக்கிபயன்படுத்தி சரிபார்த்திடுக
7 பிறகு குறிப்பிட்ட கணினிமொழிபற்றி வெளியிடபட்டுள்ள பல்வேறு புத்தகங்களின் சமீபத்திய பதிப்புகளையும் மின்புத்தகங்களையும் படித்து தெளிவுபடுத்திகொள்க
8 பின்னர் இந்த கணினிமொழி தொடர்பான தொலைக்காட்சி நிகழ்ச்சிகள் கானொளிகள் இணைய தொலைக் காட்சிகள் ஆகியவற்றை கண்டு தெளிவடைந்திடுக
9அதன்பின்னர் குறிப்பிட்ட மொழியின் எடுத்துகாட்டுகுறிமுறைவரிகளை நன்கு படித்து செயல்படுத்தி சரிபார்த்து கொள்க
10 பின்னர் மாதிரி குறிமுறைவரிகளை பின்பற்றி புதியநிரல்தொடர்குறிமுறைவரிகளை உருவாக்கி செயல்படுத்தி பிழைகளைசரிசெய்து இறுதிபயனை சரிபார்த்திடுக
11 மேலும் இந்த கணினிமொழிகளை கையாளுவதற்கான சிறந்த கருவிகளை பயன்படுத்தி கொள்க
11 முடிவாக கணினிமொழியில் நிரல்தொடர் குறிமுறைவரிகளை எழுதிடும் பணியில் வெற்றிபெறும்வரை அயராது பாடுபட்டு இறுதிவிளைவை சரிபார்த்திடுக

பைத்தான் ,ரூபி இவையிரண்டிலும் இணைய பயன்பாட்டினை உருவாக்குவதில் எது சிறந்தகணினிமொழி

இணையத்தைஉருவாக்குவதிலும் இணையம் அடிப்படையான பயன்பாடுகளை உருவாக்குவதிலும் இணையசேவையை உருவாக்குவதிலும் இவ்விரண்டும் மிகச்சிறந்த மிகப்பிரபலமான மொழிகளாகும் இவையிரண்டும் தோற்றத்திலும் இடைமுக-படுத்துவதிலும் செந்தர நூலகத்தை தன்னகத்தே கொண்டிருப்பதிலும் சமமாக இருந்தாலும் பிரச்சினைகளை தீர்வுசெய்வதற்கான வழிமட்டும் வெவ்வேறானதாக இவ்விரண்டிலும் அமைந்துள்ளன பொதுவாக பைத்தானானது அடிப்படையில் அறிவியல் அடிப்படையில் மூலமொழியாக சி++மொழிக்கு எளிதாக மாற்றியமைத்துகொள்ளும் வல்லமைகொண்டது ரெயில் வரைச்சட்ட விரிவாக்கத்தில் மிகச்சிறந்ததாக அமைகின்றது நிரல்தொடரில் நேரடி அனுகுமுறையை கொண்டது நிரலாளர்களுக்கு மிகஎளிதாக தங்களுடைய வெற்றிஇலக்கை அடைவதற்கான வழிகாட்டுகின்றது மறைமுகமானதைவிட வெளிப்படையானது சிறந்தது, கலவையானதைவிட எளிதானது சிறந்தது ,சிக்கலானதைவிட கலவையானது சிறந்தது ஆகிய அடிப்படை குறிக்கோளை கொணடது இந்த பைத்தான மொழியாகும் துவக்கநிலையாளர்களுக்கு எளிதாக கற்றறிந்து கொண்டு இணைய பயன்பாடுகளை உருவாக்குவதில் சிறந்த நிரலாளர்களாக விளங்கவேண்டுமென்ற தங்களின் வெற்றிஇலக்கை அடைவதற்கு மிகச்சிறந்த கருவியாக பைத்தான் எனும் கணினிமொழி விளங்குகின்றது,
அதற்கு மறுதலையாக ரூபியானது மனிதமொழிகளின் அடிப்படையில் இயந்திரமொழிக்கு மாற்றாக மனித மொழிகளின் இலக்கனங்களை பின்பற்றி செயல்படுகின்றது மிககுறைந்த ஆச்சரியபடுமாறான கொள்கையை பின்பற்றுகின்றது அதாவது ஒரேவழிமுறைக்கு பல்வேறு பெயர்களை கொண்டிருப்பதால் நிரல்-தொடராளர்களிடையே குழப்பத்தையும் செயல்குலைவையும் ஏற்படுத்திடுகின்றது ரூபியானது பொருள்நோக்கு மொழியாக OOP (Object-Oriented Programming) இருப்பதால் உலகாளாவிய மாறிகளாக இருந்தாலும் செயலிகாளாக இருந்தாலும் இயக்கிகளாக இருந்தாலும் வழிமுறைகளாக இருந்தாலும் அவை ஒவ்வொன்றையும்தனித்தனி தொகுதியான பொருளாக மாட்டுமே பார்த்து செயல்படுமாறு கட்டமைக்கப்பட்டுள்ளது இது அனைத்து செயல்களையும் சிறுசிறு தொகுதிகளாக பிரித்து அடிப்படை செயல்களை ஒன்றிணைப்பதில் மிகச்சிறந்ததாக விளங்குகின்றது
பைத்தானை மேம்படுத்திடுவதற்கான உதவிக்குழுக்கள் அறிவியல் கணித அடிப்படையாககொண்ட மிகச்சிறந்த பேரளவு லினக்ஸ் குழுக்களாகஇருக்கின்றனர் ரூபிக்கான உதவிக்குழுக்கள் இணையமேம்படுத்தல் மட்டுமே அடிப்படையாக கொண்டவர்களாக உள்ளனர். ரூபியானது ரெயில் என்பதையும் பைத்தானானது டிஜாங்கோவையும் இணையமேம்படுத்துதலுக்கு அடிப்படையாக கொண்டுள்ளன இவையிரண்டும் ஒவ்வொரு வகையிலும் மிகச்சிறந்ததாக விளங்குகின்றன ஆயினும் பயனாளர்கள் இவையிரண்டில் எதுசிறந்ததுஎன தெரிவுசெய்வதில் தங்களுடைய அனுபவநிலை தங்களுடைய விருப்பத்தின் அடிப்படையில் முடிவுசெய்வது நல்லது இணைய பயன்பாடுகளைமட்டும் உருவாக்கினால் போதும் என விரும்புவோர் ரூபியை பின்பற்றிடுக இணையபயன்பாடுகளுடன் கணினிமொழியையும் அறியவிரும்புவோர் பைத்தான்மொழியை பின்பற்றிடுக

நம்முடைய வொய்பீ எனும் கம்பியில்லா இணைய இணைப்பில் மற்றவர்கள் அத்துமீறி பயன்படுத்துவதை தவிர்ப்பது எவ்வாறு?

இதற்காக முதலில் நம்முடைய வீடுகளில் அல்லது அலுவலகங்களில் அமைத்துள்ள அனைத்து கம்பியில்லா இணைப்புகளின் இணைப்பையும் இயக்கத்தையும் நிறுத்தம் செய்திடுக அதன்பின்னர் வெய்பீ இணைப்பிற்கான வழிசெலுத்தியின் மின்விளக்கு எரிவதை சரிபார்த்திடுக அது நகர்வதுபேன்று இருந்தால் கண்டிப்பாக நம்முடைய வொய்பீ எனும் கம்பியில்லா இணைய இணைப்பினை நாம் அனுமதிக்காத நபர் யாரோ ஒருவர் அத்துமீறி பயன்படுத்தி கொண்டிருக்கின்றார் என அறிந்து கொள்க மேலும் நம்முடையகணினியின் தேடிடும் பகுதியில் CMD எனும் கட்டளைவரி உள்ளீடு செய்து உள்ளீட்டு விசையை அழுத்துக உடன் திரையில் ஏற்படும் விளைவை சரிபார்த்திடுக அதனை தொடர்ந்து ipconfig எனும் கட்டளைவரியை உள்ளீடு செய்து உள்ளீட்டு விசையை அழுத்துக அதன்பின்னர் 123.456.7.8 என்றவாறுள்ள நம்முடைய இயல்புநிலை முதன்மை நுழைவுவாயிலின் (Gateway) IP முகவரியை சரிபார்த்திடுக நம்முடைய தேடுபொறியை திரையில் தோன்றிட செய்து அதன் முகவரிபட்டையில் மேலே கூறியவாறான நம்முடைய ஐபி முகவரியை உள்ளீடுசெய்து உள்ளீட்டு விசையை அழுத்துக அதன்பின்னர் நம்முடைய கம்பியில்லா வலைபின்னலை வழிசெலுத்தியை இயல்புநிலை கடவச்சொற்களுக்கு பதிலாக மிகவலுவான கடவுச்சொற்களை உள்ளீடு செய்து கொண்டு சேமித்திடுக அதனை தொடர்ந்து இந்த கம்பியில்லா இணைப்பின் வழிசெலுத்தியில் இணைந்துள்ள சாதனங்களை கருவிகளை சரிபார்த்து கொள்க

Previous Older Entries