وبلاگ فرهاد مرتضی پور

Farhad Mortezapour's Blog

وبلاگ فرهاد مرتضی پور

Farhad Mortezapour's Blog

چند نمونه از تبدیل مبنای اعداد در دلفی

تغییر مبنای یک عدد از مبنای هشت به Integer

function OctToInt(Value: string): Longint;

var

    i: Integer;

    int: Integer;

begin

int := 0;

for i := 1 to Length(Value) do

begin

int := int * 8 + StrToInt(Copy(Value, i, 1));

end;

Result := int;

end;

 

تغییر مبنای یک عدد Integer به مبنای هشت

function IntToOct(Value: Longint; digits: Integer): string;

var

    rest: Longint;

    oct: string;

    i: Integer;

begin

oct := '';

while Value <> 0 do

begin

rest := Value mod 8;

Value := Value div 8;

oct := IntToStr(rest) + oct;

end;

for i := Length(oct) + 1 to digits do

oct := '0' + oct;

Result := oct;

end;

 

تبدیل یک عدد هگزادسیمال به باینری

function HexToBin(Hexadecimal: string): string;

const                                                        

    BCD: array [0..15] of string = ('0000', '0001', '0010', '0011', '0100', '0101', '0110', '0111','1000', '1001', '1010', '1011', '1100', '1101', '1110', '1111');

var

    i: integer;

begin

    for i := Length(Hexadecimal) downto 1 do

    Result := BCD[StrToInt('$' + Hexadecimal[i])] + Result;

end;

مسابقات برنامه نویسی ACM

مسابقات ACM همه ساله در چند مرحله در سرتاسر جهان برگزار می شود. موضوع این مسابقات برنامه نویسی و طراحی الگوریتم بهینه است. بدین ترتیب که گروههای شرکت کننده در قالب تیمهای سه نفره باید به سوالاتی که پاسخ آنها کدهای برنامه نویسی هستند جواب دهند. هدف در این مسابقات یافتن استعدادهای برتر برنامه نویسی است که عموما توسط شرکت های بزرگ به کار گرفته می شوند. پشتیبان این مسابقات شرکت های بزرگی همچون IBM هستند.

دانشگاه صنعتی شریف نیز متولی برگزاری یکی از این مسابقات در آسیاست که همه ساله در اواخر پاییز برگزار می شود. در این مسابقات تیمهایی از دانشگاههای سرتاسر آسیا از جمله دانشگاههای داخل کشور در رقابتی تنگاتنگ برای حضور در مرحله نهایی و مسابقات جهانی پا به میدان می گذارند.

همانطور که عنوان شد تیمهای شرکت کننده در این مسابقات از سه عضو تشکیل می شود که بنا بر یک قانون نانوشته اما ضروری باید واجد شرایط خاصی باشند. از جمله اینکه:

1- باید به یکی از زبانهای برنامه نویسی متداول و اعلام شده توسط کمیته اجرایی مسابقات تسلط کامل داشته باشند. این زبانها عموما C++ ، C و یا جاوا  می باشند.

2- اعضای تیم باید تسلط کافی بر مفاهیم طراحی الگوریتم ، بهینه سازی الگوریتم ، پیچیدگی الگوریتم ، ساختمان داده ها و ... داشته باشند.

3- حداقل یکی از اعضای تیم باید تسلط کامل بر زبان انگلیسی داشته باشد تا بتواند سوالات را به زبان مادری ترجمه و در اختیار سایر اعضای گروه قرار دهد. ( سوالات این مسابقات در تمامی مراحل به زبان انگلیسی طرح می شود.)

4- حداقل یکی از اعضا باید دست به تایپ خوبی داشته باشد تا بتواند الگوریتمهای طراحی شده را سریعا به کد تبدیل کند. (تمامی مراحل این مسابقات به صورت عملی و در پشت کامپیوتر برگزار می شود.)

تبدیل الگوریتم به کد خود یک مهارت بزرگ است که در واقع عامل اصلی طبقه بندی تیمها در مسابقات اینچنینی محسوب می شود.

برای آشنایی بیشتر شما با این مسابقات دو نمونه سوال اینجا قرار شده :

منبع aachp

پارامتر ها در ADO.NET

اگر تجربه استفاده از نگارشهای قدیمی تر ASP کلاسیک را داشته باشید احتمالا با ساختار زیر آشنا هستید. این مثال با استفاده از مقادیر بدست آمده از یک فرم، یک عبارت SQL می سازد:

 

 MySQL = "SELECT CustomerID, CompanyName, ContactName, City, Country, Phone " & _
"FROM Customers " & _
"WHERE " & _
"Country IN (" & _
" ' " & Request("Country1") & "', " & _
" ' " & Request(Country2") & "')" & _
CompanyName >='" & Request("StartRange") "' " & _
"OREDR By CompanyName"

 

به علاوه احتمالا می دانید که برای تضمین اجرای SQL خود باید روی قالب داده کار بیشتری انجام دهید (کارهایی از قبیل جایگزین کردن علامتهای نقل قول تکی با علامتهای نقل قول دوتایی، سنجش اعتبار انواع داده ها و غیره).

 ASP.NET با معرفی عبارتهای SQL پارامتری شده این فرآیند را حذف می کند. کافی است با استفاده از مجموعه Parameters  از کلاس Command پارامترهای مورد نظر خود را تعریف کنید.

پارامتری کردن کلاس Command چند فایده دارد. به سنجش اعتبار داده ها کمک می کند، خوانائی کد را تقویت می کند، انعطاف پذیری طراحی شئ گرا را به همراه می آورد، و از همه مهمتر این که امکان تعریف صریح نوع داده را فراهم می کند. از آنجائی که اطلاعات نوع داده در کد ASP.NET کامپایل می شود، تعیین نوع داده در زمان اجرا توسط سرویس دهنده SQL انجام نمی شود، و این باعث افزایش سرعت اجرا می گردد. جهت آشنائی با کلاس های SQLParameters و SQLParameter به راهنمای مربوطه مراجعه نمائید.

اکنون با استفاده از این دو کلاس مثال اولیه SQL فوق را بصورت پارامتری می سازیم. به خاطر داشته باشید که ابتدا فضانام های ضروری را در برنامه تان وارد کنید. در این مثال خاص ما قصد داریم که از فضا نام SqlClient استفاده کنیم. لذا فضا نام های زیر را باید تعریف کنیم:

 

<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>


حالا باید متغیرها را تعریف و مقداردهی اولیه کنیم:

 

Dim MyConnection As SQLConnection
Dim MyCommand As SQLCommand
Dim MySQL As String

 

برای ساخت دستور SQL، شناسه های متغیر را درج می کنیم که با علامت @ در جاهای مناسب نشان داده می شوند (یک بار دیگر تاکید می کنیم که برای ساخت مؤثر برنامه های کاربردی وب مبتنی بر داده ها داشتن درکی کامل از SQL ضروری است). سپس مقادیر این شناسه ها را با استفاده از متدها و خصوصیتهایی که قبلا توصیف شدند مشخص می کنیم:

 

MyConnection = New SQLConnection("server=localhost;uid=sa;pwd=;dsn=Northwind")
MySQL = "SELECT CustomerID, CompanyName, ContactName, City, Country, Phone " & _
"FROM Customers " & _
"WHERE " & _
"Country IN (@Country1, @Country2) AND " & _
"CompanyName >= @StartRange " & _
"ORDER BY Country, CompanyName"

'Create the SQLCommand using the connection and SQL string.
MyCommand = New SQLCommand(MySQL, MyConnection)

 

در این لحظه پارامترهای SQL را به مجموعه Parameters از شئ SQLCommand که نمونه سازی کرده ایم اضافه می کنیم:

 

' Specify the name, type and size of the parameters to add to the collection
MyCommand.Parameters.Add(New SQLParameter("@Country1", SQLDataType.VarChar, 50))
MyCommand.Parameters.Add(New SQLParameter("@Country2", SQLDataType.VarChar, 50))
MyCommand.Parameters.Add(New SQLParameter("@StartRange", SQLDataType.VarChar, 1))

'Assign values to these parameters... in many situations this would be requested from the form object
'and would not actually be hard coded as we do in this example.
MyCommand.Parameters("@Country1").Value = "
Germany"
MyCommand.Parameters("@Country1").Value = "
UK"
MyCommand.Parameters("@StartRange").Value = "D"

 

توجه داشته باشید که فضانام OleDb برای مشخصات نوع داده، خصوصیتی به نام OleDBType دارد که تا حدودی متفاوت است.

در زیر یک ترکیب نحوی دیگر برای انجام همین کار می آوریم و آن هم عبارت است از افزودن سه پارامتر به شئ SQLCommand. فرق بین این دو تنها در خوانایی و ترجیح برنامه نویس است.

 

Dim pCountry1 As New SQLParameter("@Country1", SQLDataType.VarChar, 50)
Dim pCountry2 As New SQLParameter("@Country2", SQLDataType.VarChar, 50)
Dim pStartRange As New SQLParameter("@StartRange", SQLDataType.VarChar, 1)

MyCommand.Parameters.Add(pCountry1)
MyCommand.Parameters.Add(pCountry2)
MyCommand.Parameters.Add(pStartRange)

pCountry1.Value = "Germany"
pCountry1.Value = "
UK"
pStartRange.Value = "D"

 

برای دیدن نتایج عبارت SQL پارامتری شده، از شئ SQLDataReader و برای نشان دادن نتایج صفحه نمایش، از کنترل DataGrid استفاده کرده ایم:

 

MyConnection.Open()
Dim myDR As SQLDataReader = myCommand.ExecuteReader()
MyDataGrid.DataSource = myDR
MyDataGrid.DataBind()
MyConnection.Close()


برگرفته از کتاب آموزشی ASP.NET از انتشارات کانون نشر علوم

حافظه مجازی

حافظه مجازی یکی از بخش های متداول در اکثر سیستم های عامل کامپیوترهای شخصی است . سیستم فوق با توجه به مزایای عمده ، بسرعت متداول و با استقبال کاربران کامپیوتر مواجه شده است .

اکثر کامپیوترها در حال حاضر از حافظه های محدود با ظرفیت 256 ، 512 و ... مگابایت استفاده می نمایند. حافظه موجود در اکثر کامپیوترها بمنظور اجرای چندین برنامه بصورت همزمان توسط کاربر ، پاسخگو نبوده و با کمبود حافظه مواجه خواهیم شد. مثلا" در صورتیکه کاربری بطور همزمان ، سیستم عامل ، یک واژه پرداز ، مرورگر وب و یک برنامه برای ارسال نامه الکترونیکی را فعال نماید ، 32 و یا 64 مگابایت حافظه، ظرفیت قابل قبولی نبوده و کاربران قادر به استفاده از خدمات ارائه شده توسط هر یک از نرم افزارهای فوق نخواهند بود. یکی از راهکارهای غلبه بر مشکل فوق افزایش و ارتقای حافظه موجود است . با ارتقای حافظه و افزایش آن ممکن است مشکل فوق در محدوده ای دیگر مجددا" بروز نماید. یکی دیگر از راهکارهای موجود در این زمینه ، استفاده از حافظه مجازی است .

در تکنولوژی حافظه مجازی از حافظه های جانبی ارزان قیمت نظیر هارد دیسک استفاده می گردد. در چنین حالتی اطلاعات موجود در حافظه اصلی که کمتر مورد استفاده قرار گرفته اند ، از حافظه خارج و در محلی خاص بر روی هارد دیسک ذخیره می گردند. بدین ترتیب بخش ی از حافظه اصلی آزاد و زمینه استقرار یک برنامه جدید در حافظه فراهم خواهد شد. عملیات ارسال اطلاعات از حافظه اصلی بر روی هارد دیسک بصورت خودکار انجام می گیرد.

مسئله سرعت

سرعت خواندن و نوشتن اطلاعات بر روی هارد دیسک بمراتب کندتر از حافظه اصلی کامپیوتر است . در صورتیکه سیستم مورد نظر دارای عملیاتی حجیم در رابطه با حافظه مجازی باشد ، کارآئی سیستم بشدت تحت تاثیر قرار خواهد گرفت . در چنین مواردی لازم است که نسبت به افزایش حافظه موجود در سیستم ، اقدام گردد. در مواردی که سیستم عامل مجبور به جابجائی اطلاعات موجود بین حافظه اصلی و حافظه مجازی باشد ( هارد دیسک ) ، باتوجه به تفاوت محسوس سرعت بین آنها ، مدت زمان زیادی صرف عملیات جایگزینی می گردد. در چنین حالتی سرعت سیستم بشدت افت کرده و عملا" در برخی حالات غیرقابل استفاده می گردد.

محل نگهداری اطلاعات بر روی هارد دیسک را یک Page file می گویند. در فایل فوق ، صفحات مربوط به حافظه اصلی ذخیره و سیستم عامل در زمان مورد نظر اطلاعات فوق را مجددا" به حافظه اصلی منتقل خواهد کرد. در ماشین هائی که از سیستم عامل ویندوز استفاده می نمایند ، فایل فوق دارای انشعاب swp است .

پیکربندی حافظه مجازی

ویندوز 98 دارای یک برنامه هوشمند برای مدیریت حافظه مجازی است . در زمان نصب ویندوز ، پیکربندی و تنظیمات پیش فرض برای مدیریت حافظه مجازی انجام خواهد شد. تنظیمات انجام شده در اغلب موارد پاسخگو بوده و نیازی به تغییر آنها وجود نخواهد داشت . در برخی موارد لازم است که پیکربندی مدیریت حافظه مجازی بصورت دستی انجام گیرد. برای انجام این کار در ویندوز 98 ، گزینه System را از طریق Control panel انتخاب و در ادامه گزینه Performance را فعال نمائید. در بخش Advanced setting ، گزینه Virtual memory را انتخاب نمائید.

با نمایش پنجره مربوط به Virtual Memory ، گزینه "Let me specify my own virtual memory setting" را انتخاب تا زمینه مشخص نمودن مکان و طرفیت حداقل و حداکثر فایل مربوط به حافظه مجازی فراهم گردد..در فیلد Hard disk محل ذخیره نمودن فایل و درفیلد های دیگر حداقل و حداکثر ظرفیت فایل را بر حسب مگابایت مشخص نمائید. برای مشخص نمودن حداکثر فضای مورد نیاز حافظه مجازی می توان هر اندازه ای را مشخص نمود . تعریف اندازه ائی به میزان دو برابر حافظه اصلی کامپیوتر برای حداکثر میزان حافظه مجازی توصیه می گردد.

میزان حافظه موجود هارد دیسک که برای حافظه مجازی در نظر گرفته خواهد شد بسیار حائر اهمیت است . در صورتیکه فضای فوق بسیار ناچیز انتخاب گردد ، همواره با پیام خطائی مطابق "Out of Memory" ، مواجه خواهیم شد. پیشنهاد می گردد نسبت حافظه مجازی به حافظه اصلی دو به یک باشد. یعنی در صورتیکه حافظه اصلی موجود 16 مگابایت باشد ، حداکثر حافظه مجازی را 32 مگابایت در نظر گرفت .

یکی از روش هائی که بمنظور بهبود کارائی حافظه مجاری پیشنهاد شده است ، ( مخصوصا" در مواردیکه حجم بالائی از حافظه مجازی مورد نیاز باشد ) در نظر گرفتن ظرفیت یکسان برای حداقل و حداکثر انداره حافظه مجازی است . در چنین حالتی در زمان راه اندازی کامپیوتر، سیستم عامل تمام فضای مورد نیاز را اختصاص و در ادامه نیازی با افزایش آن همزمان با اجرای سایر برنامه ها نخواهد بود. در چنین حالتی کارآئی سیستم بهبود پیدا خواهد کرد .

یکی دیگر از فاکتورهای مهم در کارآئی حافظه مجازی ، محل فایل مربوط به حافظه مجازی است . در صورتیکه سیستم کامپیوتری دارای چندین هارد دیسک فیزیکی باشد ، ( منظور چندین درایو منظقی نیست ) می توان حجم عملیات مربوط به حافظه مجازی را بین هر یک از درایوهای فیزیکی موجود توزیع کرد. روش فوق در مواردیکه از حافظه مجازی در مقیاس بالائی استفاده می گردد ، کارآئی مطلوبی را بدنبال خواهد داشت .

دلفی : ارسال پیام در ICQ

var

    Form1: TForm1;

    csend: string;

implementation

{$R *.dfm}

 

procedure TForm1.Button1Click(Sender: TObject);

begin

    cSend := 'POST http://wwp.icq.com/scripts/WWPMsg.dll HTTP/2.0' + chr(13) + chr(10);

    cSend := cSend + 'Referer: http://wwp.mirabilis.com' + chr(13) + chr(10);

    cSend := cSend + 'User-Agent: Mozilla/4.06 (Win98; I)' + chr(13) + chr(10);

    cSend := cSend + 'Connection: Keep-Alive' + chr(13) + chr(10);

    cSend := cSend + 'Host: wwp.mirabilis.com:80' + chr(13) + chr(10);

    cSend := cSend + 'Content-type: application/x-www-form-urlencoded' + chr(13) + chr(10);

    cSend := cSend + 'Content-length:8000' + chr(13) + chr(10);

    cSend := cSend + 'Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*' + chr(13) + chr(10) + chr(13) + chr(10);

    cSend := cSend + 'from=' + edit1.Text + ' &fromemail=' + edit2.Text + ' &fromicq:110206786' + ' &body=' + memo1.Text + ' &to=' + edit3.Text + '&Send=';

    clientsocket1.Active := True;

end;

 

procedure TForm1.ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket);

begin

    clientsocket1.Socket.SendText(csend);

    clientsocket1.Active := False;

end;

طراحی پیشرفته FireFox

مرورگر Firefox خودتون رو باز کنید و در آدرس بار مقدار زیر رو وارد کنید:

chrome://browser/content/browser.xul

در کمال تعجب خواهید دید که یک محیط فایرفاکس جدید در Tab نمایش داده خواهد شد.

توضیح :
آدرس chrome رو که به عنوان نام پروتوکل در آدرس بار وارد شد به فایرفاکس اعلام میکنه این یک فایل منبع داخلی برای فایرفاکس است و داده ها باید از منابع داخلی خوانده شود.
در مورد مذکور فایل browser.xul در داخل فایل منبع browser.jar در در پوشه chrome همراه فایرفاکس قرار داره. این فایل شامل تمام موارد مورد نیاز برای طراحی ظاهر فایرفاکس مورد استفاده است.
با استفاده از برنامه WinAce می تونید فایل browser.jar را از حالت فشرده خارج کنید و ویرایش مورد نظر را انجام داده و مجددا با WinAce عمل فشرده سازی با فرمت JAR رو انجام بدید.

اما توضیح فایل browser.xul :
این یک فایل XUL است که مخفف XML User-Interface Language استاندارد طراحی ظاهر برای چندین سیستم عامل است که توسط Mozilla ایجاد شده است. و از ویژگی های پیشرفته ای که در FireFox و مرورگر Mozilla در اون استفاده شده است و باعث انعطاف پذیری باور نکردنی و قابلیت حمل فراوان اون شده است. اطلاعات بیشتر در مورد XUL در اینجا : http://www.xulplanet.com

نتیجتا وقتی ما آدرس chrome://browser/content در مرورگر فایرفاکس وارد می کنیم از نظر فایر فاکس این یک روند عادی به شمار میره.
و نتیجه نهایی اینکه تمام فرمهای FireFox نوعی Browser هستند با این تفاوت که امکانات اظافی حذف شده است.

سایر نمونه هایی که میتونید امتحان کنید:

Report A Broken WebSite: chrome://reporter/content/reportWizard.xul
Page info: chrome://browser/content/pageInfo.xul
About: chrome://browser/content/aboutDialog.xul
Element Properties: chrome://browser/conent/metaData.xul
Oepn location: chrome://browser/conent/openLocation.xul
Options: chrome://browser/conent/preferences/preferences.xul

جالبتر هم هست اینکه تمامی عملیات با استفاده از JavaScript انجام میشه:
مثلا عمل جستجو :

chrome://browser/content/browser/search/engineManager.js

 

salarblog : منبع

Visual Studio 2008 در راه است

 

مایکروسافت تاریخ ارائه نسخه جدید ویژوال استودیو ۲۰۰۸ را ۲۷ فوریه ۲۰۰۸ مطابق با هشتم اسفند ۱۳۸۶ اعلام کرد. با این وجود ویژوال استودیو ۲۰۰۸ در بهار ۸۷ در ایران خواهد بود.

طبق اعلام مدیران این شرکت ، ویندوز سرور ۲۰۰۸ و SQL Server 2008 نیز در همان روز ارائه می شوند.

ویژوال استودیوی ۲۰۰۸ همراه با نسخه ۳.۵ فریم ورک ارائه می شود.

مشخصات ویژوال استودیو ۲۰۰۸

UNION ALL

سلام

 

امروز با یک مثال ساده کاربرد UNION ALL رو توضیح خواهم داد

 

دو جدول بصورت زیر داریم

 

Table1

ID

1

1

1

2

3

 

Table2

ID

1

1

2

3

4

 

حالا میخواهم ID های مشترک تیبل 1 و 2 را با هم انتخاب کنم :

SELECT Table1.ID FROM Table1 WHERE Table1.ID=1 
UNION ALL
SELECT Table2.ID FROM Table2 WHERE Table2.ID=1

نتیجه :

 

ID

1

1

1

1

1

آشنایی با برخی از انواع خطوط مخابرتی و اینترنتی

خطوط آنولوگ معمولی :
منظور از این خطوط همان خطوط تلفنی معمولی می باشد. نرخ انتقال Data توسط این خطوط حداکثر 6/33 kb/s می باشد.
T1 : نام خطوط مخابراتی مخصوص است که در آمریکا و کانادا ارایه می شود . بر روی هر خط T1 تعداد 24 خط تلفن معمولی شبیه سازی می شود.
هر خط T1 می تواند حامل 5/1 mb/s پهنای باند باشد.

E1 : نام خطوط مخابراتی مخصوصی است که در اروپا و هم چنین ایران ارائه می شود بر روی هر خط E1 تعداد 30 خط تلفن معمولی شبیه سازی می شود.
هر خط E1 می تواند حامل 2 mb/s پهنای باند باشد. نرخ انتقال Data توسط این خطوط جهت مودم های ارائه شده در ایران حداکثر 56 kb/s می باشد.
که البته در صورت فراهم نمودن مودم های سریع تر کاررب می تواند برابر سرعت مودم خود دیتا را دریافت نماید. مشخصه این سیستم پیش شماره متفاوت آنها نسبت به خطوط عادی می باشد.

ISDN : اساس طراحی تکنولوژی ISDN به اواسط دهد 80 میلادی باز می گردد که بر اساس یک شبکه کاملا دیجیتال پی ریزی شده است. در حقیقت تلاشی برای جایگزین سیستم تلفنی آنالوگ با دیجیتال بود که علاوه بر داده های صوتی ، داده های دیجیتال را به خوبی پشتیبان کند.به این معنی که انتقال صوت در این نوع شبکه ها به صورت دیجیتال می باشد. در این سیستم ، صوت ابتدا به داده های دیجیتال تبدیل شده و سپس انتقال می باید.
ISDN به دو شاخه اصلی تقسیم می شود: N-ISDN و B-ISDN .
B-ISDN بر تکنولوژی ATM استوار است که شبکه ای با پهنای باند بالا برای انتقال داده می باشد که اکثر BACKBONE های جهان از این نوع شبکه برای انتقال داده استفاده می کنند.(از جمله شبکه دیتای ایران)

نوع دیگر B-ISDN با ISDN با پهنای باند پایین است که برای استفاده های شخصی طراحی شده است.
در N-ISDN دو استاندارد مهم وجود دارد.
BRI و PRI نوع PRI برای ارتباط مراکز تلفن خصوصی (PBX) ها با مراکز تلفن محلی طراحی شده است.
E1 یکی از زیر مجموعه های PRI است که امروزه استفاده زیادی دارد . E1 شامل 30 کانال شامل (B-channel) و یک کانال برای سیگنالینگ (D-channel) می باشد که هر کدام 64 kb/s پهنای باند دارند.

بعد از سال 94 میلادی و با توجه به گسترش اینترنت ، از PRI ISDN ها برای ارتباط ISP ها با شبکه PSTN استفاده شد که باعث بالا رفتن تقاضا برای این سرویس شد. هم چنان که در ایران نیز ISP هایی که خدمات خود را با خطوط E1 ارایه می کنند روز به روز در حال گسترش است.
نوع دیگر ISDN ، BRI است (نوعی که در کیش از آن استفاده می شده) که برای کاربران نهایی طراحی شده است. این استاندارد دو کانال حامل 64 kb/s و یک کانال برای سیگنالینگ با پهنای باند 16 kb/s را در اختیار مشترک قرار می دهد.
این پهنای باند در اواسط دهه 80 میلادی که اینترنت کاربران مخصوصی داشت و سرویس های امروزی همچون Voip ، HTTP ، MultiMedia و ... به وجود نیامده بود ، مورد نیاز نبود هم چنین برای مشترکین عادی تلفن نیز وجود یک ارتباط کاملا دیجیتال چندان تفاوتی با سیستم های آنالوگ فعلی نداشت و به همین جهت هزینه های اضافی برای این سرویس از سوی کاربران بی دلیل بود و به همین جهت از این تکنولوژی استقبال چندانی نشد.
تنها در اویل دهه 90 بود که برای مدت کوتاهی مشترکین ISDN افزایش یافتند . پس از سال 95 نیز با وجود تکنولوژی هایی با سرعت های بسیار بالاتر مانند ADSL که سرعتی حدود 8 mb/s برای دریافت و 640 kb/s را برای دریافت با هزینه کمتر از ISDN در اختیار مشترکین قرار می دهد، انتخاب ISDN از سوی کاربران عاقلانه نبود.

منبع : عصر ارتباط

پزشک همیشه حاضر ویندوز Dr.Watson ، XP

ممکن است شما نیز تا به حال نام Dr.Watson ویندوز XP را شنیده باشید. ابزاری که همیشه در پس ویندوز بوده است و بسیاری از کاربران از توانایی های این برنامه مفید بی خبرند.
شما به وسیله این برنامه میتوانید به راحتی ریشه مشکلات بسیار جدی را که در سیستم ها اغلب باعث قفل کردن دستگاه و ... میشود ، ردیابی کنید و بعد برای رفع مشکل اقدام کنید. با استفاده از این ابزار فوق العاده میتوانید بدون نیاز به نرم افزارهای آنتی ویروس و فایروال امنیت سیستم خود را تضمین کنید.

شما به وسیله این برنامه میتوانید به راحتی ریشه مشکلات بسیار جدی را که در سیستم ها اغلب باعث قفل کردن دستگاه و ... میشود ، ردیابی کنید و بعد برای رفع مشکل اقدام کنید.
هنگامی که شما برنامه Dr.Watson را اجرا کنید ، این برنامه در پس زمینه قرار میگیرد و منتظر به وجود آمدن یک مشکل در سیستم شما میماند تا جزئیات آن را ثبت کند ( آیکن این برنامه در نوار وظیفه قرار میگیرد ). بسیاری از افراد فکر میکنند که به این برنامه در ویندوز XP نیاز پیدا نخواهند کرد چون این ویندوز نسبت به ویندوزهای قبلی خود بسیار پایدارتر و مستحکم تر است و خوب همه این موضوع را قبول دارند. اما با تمام این پایداری بازهم امکان دارد ناگهان مشکل جدی ای برای ویندوز XP نیز پیش بیاید. اگر شما در آن هنگام این برنامه را اجرا کرده باشید میتوانید به راحتی مشکل را رد یابی کرده و پس از حل آن دیگر نگران به وجود آمدن چنین مشکلی نباشید. پس بهتر است همیشه به فکر باشید تا بعدا پشیمان نشوید.

برنامه Dr.Watson تمامی اطلاعات وابسته به سیستم را درست قبل از اینکه خطا و مشکل اتفاق بیفتد ضبط میکند. به عبارت دیگر اگر سیستمتان از حرکت ایستاد و یا یک خطای سیستمی جدی را به شما نشان داد میتوانید کامپیوتر خود را Restart کرده و بعد به سراغ فایل Log ای که برنامه Dr.Watson درست قبل از وقوع مشکل میسازد بروید. این فایل شامل جزئیات کامل مشکل میباشد. در اینجا اگر کمی اطلاعات حرفه ای راجع به سیستم و کدهای سیستمی داشته باشید میتوانید به راحتی مشکل را ریشه یابی و حل کنید. در غیر این صورت اگر مشکل خیلی جدی باشد شما حتما نیاز به یک متخصص خواهید داشت که با نشان دادن فایل Log به آن متخصص ، او به راحتی ( در اکثر مواقع ! ) مشکل را برای شما حل میکند. اما همواره یادتان باشد که هیچ برنامه ای نمیتواند بهترین باشد. برنامه Dr.Watson اگر چه در بسیاری از موارد به خوبی از عهده وظیفه خودش بر می آید اما گاها نیز ممکن است اگر مشکل سیستم شما خیلی جدی باشد و باعث قفل شدن کل سیستم شما گردد ، نتواند ریشه مشکل را ثبت کند و در گزارشش قید کند. اما نگران نباشید چون این اتفاق ممکن است یک در هزار رخ دهد و اصلا جای نگرانی نیست.

نکته جالب توجه دیگر این برنامه این است که شما با ارسال فایل Log آن برای شرکت Microsoft میتوانید از راهنماییهای متخصصان این شرکت نیز برای رفع مشکل خودتان استفاده کنید. فایل Log برنامه Dr.Watson اغلب خطاها را تشریح کرده و روش درست و منطقی را برای اصلاح و تعمیر آن به شما پیشنهاد میکند اما همواره بهتر است که از یک فرد متخصص نیز در این زمینه کمک بخواهید که به نظر من متخصصان خود شرکت Microsoft میتوانند بهترین انتخاب شما باشند جون کاملا رایگان اند !
برای ارتباط با این متخصصین فقط کافی است که به قسمت پشتیبانی تکنیکی سایت Microsoft مراجعه کنید و بعد فایل Log را برای آنها ارسال کنید و منتظر راهنمایی های آنها بمانید. مطمئن باشید شما را بدون جواب نخواهند گذاشت.

و اما نحوه کار با این برنامه مفید :
این برنامه به صورت پیش فرض از دید کاربران پنهام است و شما نمیتوانید آن را در پوشه Tools بیابید. برای اجرای آن ابتدا از طریق منوی Start وارد برنامه Run شده و عبارت DrWtsn32 را تایپ کرده و سپس Enter را بزنید تا برنامه اجرا شود.
پس از شروع برنامه شما میتوانید تنظیمات مورد نیاز را انجام داده و بعد به سایر کارهای خود بپردازید.

اما توضیح تنظیمات برنامه :
در قسمت Log File Path شما میتوانید مسیر ذخیره فایل Log برنامه را تعیین کنید.
در قسمت Crash Dump شما میتوانید مسیر فایل ذخیره موقت ( تصویر لحظه ای ) برنامه را تعیین کنید ( بهتر است این قسمت را تغییر ندهید ).
در قسمت Wave File شما میتوانید یک فایل صدا را تعیین کنید که برنامه هر وقت مشکلی را ثبت کرد به شما با آن صدا هشدار دهد.
در قسمت Number Of Instructions شما میتوانید تعداد راهنماییهایی را که برنامه در فایل Log به شما آموزش میدهد را تعیین کنید.
در قسمت Number Of Errors To Save شما میتوانید تعداد ثبت خطاها را در هر فایل Log مشخص کنید.
در قسمت Crash Dump Type شما میتوانید نوع ذخیره فایل Dump ( یا تصویر لحظه ای ) را در هنگام Crash سیستم تعیین کنید. Full یعنی ذخیره به صورت کامل با تمام جزئیات ، Mini یعنی تا حد امکان خلاصه و مختصر ، NT4 Compatible Full یعنی فایلی کامل سازگار با سیستمهای NT4 .
در قسمت Options میتوانید جزئیات تکنیکی فایل Log خود را افزایش یا کاهش دهید. به ترتیب زیر :
Dump Symbol Table : نمایش و ذخیره فایل Dump با تمام کاراکترهای حرفی و شکلی.
Dump All Thread Contexts : نمایش و ذخیره فایل Dump با تمام متون و داده های رشته ای.
Appened To Existing Log File : اضافه کردن تمام موارد فایل Dump به فایل Log موجود.
Visual Notification : ضبط و ثبت اخطارهای دیداری.
Sound Notification : ضبط و ثبت اخطارهای صوتی.
Create Crash Dump File : ساخت یک فایل Dump در مواقع Crash برای بازبینی های بعدی.
در قسمت Application Errors خطاهایی که به تازگی در کار با سیستم برای کاربر اتفاق افتاده نمایش داده میشوند. با Highlight کردن هر کدام از آنها و فشردن دکمه View میتوانید فایل Dump یا همان حالت موقتی را که در بالا بحث کردم را مشاهده کنید. یادتان باشد متون نوشته شده در فایل موقت که شما مشاهده میکنید هر بار با Restart شدن سیستم به صورت اتوماتیک در فایل Log ذخیره میشوند. با فشردن دکمه Clear آن اخطار از لیست Application Errors حذف میشود.
برای مشاهده فایل Log برنامه Dr.Watson شما میتوانید از ویرایشگر WordPad استفاده کنید. این فایل را باید در همان مسیری که مشخص کردید بیابید ( با نام DrWtsn32.log ). البته مسیر پیش فرض خود برنامه به صورت زیر است :
Document and setting / All users / Application Data / Microsoft / Dr Watson
اگر نرم افزار خاصی را نصب کرده اید که به نظر شما مسبب از کار افتادن سیستمتان است ، قبل از نصب برنامه یک تصویر لحظه ای از سیستم بگیرید و سپس به برنامه Dr.Watson اجازه دهید که یک تصویر لحظه ای دیگر را پس از انجام عمل نصب برنامه بگیرد. با این کار شما میتوانید به بخش پشتیبانی Microsoft کمک کنید که با مقایسه این تصاویر شما را در حل هر چه سریعتر مشکلتان یاری کنند.
در صورتی که از سیستمی با سرعت بالا استفاده میکنید توصیه میکنم تمام موارد Options را انتخاب کنید و Crash Dump Type را نیز در حالت Full قرار دهید تا فایل Log شما با جزئیات کامل ساخته شود.
بعد از تنظیم کردن برنامه کافیه که شما روی دکمه OK کلیک کنید تا برنامه در پشت پرده به کار خودش ادامه دهد. معمولا بعد از فشردن دکمه OK برنامه از دید شما پنهان میشود اما در بسیاری از مواقع به صورت یک آیکن در نوار وظیفه نمایش داده میشود که شما میتوانید با دوبار کلیک روی آن تنظیمات را تغییر دهید یا فایلهای موقت موجود را بازبینی کنید.
بعد از اجرای برنامه میتوانید با خیالی آسوده به سایر کارهای خود مشغول شوید و از اینکه یک نفر همواره مراقب و محافظ سیستم شماست لذت ببرید.