روزی فرا خواهد رسید که جسم من آنجا زیر ملحفه سفید پاکیزه ای که از چهار طرفش زیر تشک تخت بیمارستان رفته است، قرار می گیرد و آدم هایی که سخت مشغول زنده ها و مرده ها هستند از کنارم می گذرند. آن لحظه فرا خواهد رسید که دکتر بگوید مغز من از کار افتاده است و به هزار علت دانسته و ندانسته زندگیم به پایان رسیده است.در چنین روزی، تلاش نکنید به شکل مصنوعی و با استفاده از دستگاه، زندگیم را به من برگردانید و این را بستر مرگ من ندانید. بگذارید آن را بستر زندگی بنامم. بگذارید جسمم به دیگران کمک کند که به حیات خود ادامه دهند
چشمهایم را به انسانی بدهید که هرگز طلوع آفتاب، چهره یک نوزاد و شکوه عشق را در چشم های یک زن ندیده است. قلبم را به کسی هدیه بدهید که از قلب جز خاطره ی دردهایی پیاپی و آزار دهنده چیزی به یاد ندارد. خونم را به نوجوانی بدهید که او را از تصادف ماشین بیرون کشیده اند و کمکش کنید تا زنده بماند و نوه هایش را ببیند. کلیه هایم را به کسی بدهید که زندگیش به ماشینی بستگی دارد که هر هفته خون او را تصفیه می کند. استخوان هایم، عضلاتم، تک تک سلول هایم و اعصابم را بردارید و راهی پیدا کنید که آنها را به پاهای یک کودک فلج پیوند بزنید.
هر گوشه از مغز مرا بکاوید، سلول هایم را اگر لازم شد، بردارید و بگذارید به رشد خود ادامه دهند تا به کمک آنها پسرک لالی بتواند با صدای دو رگه فریاد بزند و دخترک ناشنوایی زمزمه باران را روی شیشه اتاقش بشنود. آنچه را که از من باقی می ماند بسوزانید و خاکسترم را به دست باد بسپارید، تا گلها بشکفند.اگر قرار است چیزی از وجود مرا دفن کنید بگذارید خطاهایم، ضعفهایم و تعصباتم نسبت به همنوعانم دفن شوند.
گناهانم را به شیطان و روحم را به خدا بسپارید و اگر گاهی دوست داشتید یادم کنید. عمل خیری انجام دهید، یا به کسی که نیازمند شماست، کلام محبت آمیزی بگویید.
اگر آنچه را که گفتم برایم انجام دهید، همیشه زنده خواهم ماند...
Dim ds As New DataSet()
Dim strSql As String
Dim strCon As String
Dim da As OleDbDataAdapter
Dim con As OleDbConnection
Dim newRow As DataRow
Dim cb As OleDbCommandBuilder
strCon = "Provider = Microsoft.Jet.OLEDB.4.0;" & "Data Source = /inetpub/wwwroot/db/student.mdb"
strSql = "Select * from StTable"
con = New OleDbConnection(strCon)
con.Open()
da = New OleDbDataAdapter(strSql, con)
a.Fill(ds, "stTable")
newRow = ds.Tables("StTable").NewRow()
newRow("StNo") = Val(StNo.Text)
newRow("Name") = FirstName.Text
newRow("Course") = Course.Text
newRow("Ave") = Val(Ave.Text)
newRow("NumUnit") = Val(NumUnit.Text)
ds.Tables("stTable").Rows.Add(newRow)
cb = New OleDbCommandBuilder(da)
da.InsertCommand = cb.GetInsertCommand()
da.Update(ds, "stTable")
con.Close()
StNo.Text = ""
FirstName.Text = ""
Course.Text = ""
Ave.Text = ""
NumUnit.Text = ""
بعد از اینکه فایل مورد نظر رو دانلود کردین ویژوال بیسیک رو باز کنین و از منوی Project گزینه Refrences رو بزننین و در پنجره باز شده دکمه فرمان Browse رو بزنین و آدرس فایل vbogl.tlb (همون فایلی که دانلود کردین) رو باز کنین و بعد از انتخاب کردن فایل vbogl.tlb روی دکمه فرمان Open کلیک کنید. بعد در داخل کادری که لیست DLL های شناسایی شده است به دنبال VB OpenGL API 1.2 بگردین و تیک کنار اون رو فعال کنین. برای اینکه کدهایی که ما مینویسیم با استفاده از روتین های OpenGL هست در داخل فرم ما نمایش داده نمیشه و ما برای اینکه کدهایی که مینویسیم اجرا بشه باید تغیراتی در برنامه ایجاد کنیم برای اینکار:در ویژوال بیسیک از منوی Project روی Project Properties کلیک کنید تا جعبه تنظیم خواص پروژه باز بشه.بعد از لیست باز شو Startup Object گزینه Sub Main را انتخاب کنید و OK را بزنید. حالا میریم سراغ کد نویسی: از منوی Project گزینه Add Module را بزنید تا برای شما یک ماژول جدید بسازد.بعد خاصیت Name ماجول رو برابر با OpenGLMain قرار دهید. حالا ما کدهای اصلی که موتور گرافیکی ۳ بعدی ما رو میسازه مینویسیم. روی ماجول جدید خود دابل کلیک کنید تا پنجره View Code باز بشه.و بعد کدهای زیر رو بنویسید: Sub Main() Dim Done As Boolean Dim frm As Form Done = False Set frm = New Form1 If Not CreateGLWindow(frm, 640, 480, 16) Then Done = True Do While Done = False If (DrawGLScene = False) Then Unload frm Else SwapBuffers (frm.hDC) DoEvents End If Done = frm.Visible = False Loop Set frm = Nothing End End Sub در قطعه کد بالا ابتدا یک متغیر از نوع بولین تعریف میکنیم . تا وقتی که متغیر Done مقدار False داشته باشد برنامه ما ادامه پیدا میکند ولی هر گاه که متغیر Done برابر با True شود برنامه خاتمه پیدا میکند. در خط بعدی ما یک متغیر به نام frm از نوع Form تعریف میکنیم و در خط پنجم نیز متغیر frm را به فرم برنامه مرتبط میکنیم.در خط ششم نیز از یک دستور شرطی استفاده کردیم که هرگاه CreateGLWindow (که در ادامه آن را میسازیم و کار آن ساخت پنجره ای است که اشیا دو بعدی و چند بعدی ما در آن نمایش داده شوند) برابر با مقداری خلاف قوانین ما شد برنامه خاتمه پیدا کند و باعث هنگ کردن سیستم نشود. در ادامه ما باید پنجره نمایش اشیا را که نام آن CreateGLWindow است بسایم. برای این کار کدهای زیر را در ماجول بنویسید: Public Function CreateGLWindow(frm As Form, Width As Integer, Height As Integer, Bits As Integer) As Boolean Dim PixelFormat As GLuint Dim PFD As PIXELFORMATDESCRIPTOR PFD.cColorBits = Bits PFD.cDepthBits = 16 PFD.dwFlags = PFD_DRAW_TO_WINDOW Or PFD_SUPPORT_OPENGL Or PFD_DOUBLEBUFFER PFD.iLayerType = PFD_MAIN_PLANE PFD.iPixelType = PFD_TYPE_RGBA PFD.nSize = Len(PFD) 'X PFD.nVersion = 1 PixelFormat = ChoosePixelFormat(frm.hDC, PFD) 'X If PixelFormat = 0 Then KillGLWindow MsgBox "Can't set the:", 16 CreateGLWindow = False End If If SetPixelFormat(frm.hDC, PixelFormat, PFD) = 0 Then KillGLWindow MsgBox "" 'X CreateGLWindow = False End If hrc = wglCreateContext(frm.hDC( If hrc = 0 Then KillGLWindow MsgBox "Can't rendering Context:", vbExclamation, "ERROR CreateGLWindow = False End If If wglMakeCurrent(frm.hDC, hrc) = 0 Then KillGLWindow MsgBox "Can't Active rendering Context:", vbExclamation, "ERROR CreateGLWindow = False End If frm.Show If Not InitGL() Then KillGLWindow MsgBox "Initialize Failed!",vbExclamation,"Error CreateGLWindow = False End If CreateGLWindow = True End Function در داخل روتین بالا دو تابع دیگر به نام های KillGLWindow و InitGL فراخوانی شده اند که ما باید اونها رو در داخل ماجولمون بنویسیم. کار تابع CreateGLWindow در اصل ساخت Engin (موتور) گرافیکی است و توابع دیگر مانند KillGL و InitGL کارهایی از قبیل خطا زدایی انجام میدهند بنابر این تابع CreateGLWindow مهمترین تابع برنامه ماست چون که موتور گرافیکی ما رو میسازه. برای نوشتی تابع KillGLWindow کدهای زیر رو به ماجولتون اضافه کنین: Public Sub KillGLWindow() If hrc Then If wglMakeCurrent(0, 0) = 0 Then MsgBox "Rilase DC and RC Failed.", vbInformation, "ShutDownError" End If If wglDeleteContext(hrc) = 0 Then MsgBox "Failed", vbInformation, "ERROR" ' End If hrc = 0 End If End Sub حالا باید تابع InitGL رو بنویسیم که کار این تابع پاک کردن صفحه نمایش و آماده سازی آن برای رسم اشکال سه بعدی است. برای نوشتن تابع InitGL کدهای زیر رو به ماجول برنامتون اضافه کنین: Public Function InitGL() As Boolean glClearColor 0.5, 0.5, 1, 0 InitGL = True End Function. برای ادامه کار شما باید یک ماجول دیگه با نام DrawShape بسازین . برای این کار از منوی Project روی منوی Add Module کلیک کنید و خاصیت Name ماجول جدید خود را برابر با DrawShape کنید. حالا باید تابعی رو بنویسیم که کار رسم اشکال دو بعدی و سه بعدی رو برعهده داره.اسم این تابع DrawGLScene است که برای نوشتن آن کدهای زیر را به ماجول DrawShape اضافه کنین: Publice Function DrawGLScene() as Boolean glClear clrcolorbufferbit DrawGLScene = True End Function حالا برنامه ای رو که ساختین اجرا کنین اگه کارها رو درست انجام داده باشین باید رنگ پشت زمینه فرم شما آبی رنگ بشه . قسمت 2 ما در این جلسه تمام سروکارمون با ماجول DrawShape است و در داخل تابع DrawGLScene باید کدهای مربوط به رسم اشکال را بنویسیم. برای رسم اشکال ما باید از تابع glBegin استفاده کنیم. تابع glBegin به OpenGL میگوید که ما آماده رسم اشکال هستیم. برای رسم اشکال بعد از فراخوانی تابع glBegin با کمک تابع glVertex و glColor ما مختصات راس های شکل مورد نظر و رنگ مورد نظر که به شکل پاشیده میشود را رسم میکنیم. در پایان نیز با تابع glEnd به OpenGL میگوییم که کار رسم کردن شکل ها به پایان رسیده است. تابع glBegin پارامتری به نام Mode دارد که به کمک پارامتر Mode ما میتوانیم اشکال هندسی مختلفی رسم کنیم . مثل : مربع و مستطیل و مثلث و چندضلعی های دیگر. پارامتر Mode مقادیریرا میتواند بگیرد که تعدادی از آنها در زیر آمده است: مقادیر توضیحات bmPoints رسم نقاط جدا از هم bmLines رسم خط که دو راس دارد bmLineStrip رسم خط های به هم پیوسته bmLineLoop رسم خط های به هم پیوسته bmTriangles رسم مثلث با دادن سه راس bmTriangleStrip رسم مثلث های به هم پیوسته bmTriangleFan رسم مثلث های به هم پیوسته با یک راس مشترک bmQuads رسم چهار ضلعی هایی که دارای یک راس مشترک هستند bmQuadStrip رسم چهار ضلعی های به هم پیوسته bmPolygon رسم چند ضلعی که ضلع های آن به تعداد دلخواه است رسم دایره در جلسات بعد توضیح خواهم داد این مقادیری که در جدول نوشتم توضیح خواهم داد ۱- bmPoints رسم نقطه: برای اینکه ما بتونیم یک نقطه روی فرممون رسم کنیم باید مقدار Mode رو به bmPoints ست کنیم. برای رسم یک نقطه در ماجول DrawShape و در تابع DrawGLScene کدهای زیر رو بنویسید: Publice Function DrawGLScene() as Boolean glClear clrColorBufferBit glBegin bmPoints glVertex2f 0,0 glEnd DrawGLScene = True End Function در مثال بالا کدهایی که کمرنگ تر هستند رو برای یادآوری نوشتم. شما دیگه لازم نیست که یک تابع جدید DrawGLScene تعریف کنید چون این کار باعث ایجاد مشکل در برنامه میشه. در مثال بالا در خط سوم به کمک تابع glBegin به OpenGL فرمان دادیم که برایمانPoint(نقطه) رسم کند. در خط چهارم نیز به کمک تابع glVertex2f (که یکی از توابع بسیار مهم OpenGL هست) مختصات نقطه ای که باید رسم شود را نوشتیم.در خط پنجم نیز به رسم نقطه پایان دادیم. با اجرا کردن برنامه باید در وسط فرم شما یک نقطه رسم شده باشد. شما میتوانید هرچه قدر که نقطه دوست دارین رسم کنین با تابع glBegin bmPoints / glEnd رسم کنین. شاید شما بخواین که نقطه ای رو که رسم میکنین بزرگتر بشه و نقاطی رو رسم کنین که جای بیشتری میگیرن برای این کار از تابع glPointSize استفاده کنین. برای مثال شما در نمونه برنامه ای که در بالا آمده شد این تابع رو اضافه کنین و مقدار اون رو به 50 ست کنین به این صورت: glPointSize 50 با این کار نقطه شما ۵۰ برابر بزرگتر میشه. توجه : تابع glPointSize را حتما باید قبل از تابع glBegin bmPoints تعریف کنین. گاهی وقت ها برای شما پیش میاد که چرا وقتی نقطه ای رو بزرگ میکنیم دقت گرافیکی اون نقطه کم میشه و به شکل مربع در میاد برای برطرف کردن این مشکل و به عبارتی دندانه زدایی تابعی وجود دارد که از پر کاربردترین توابع openGL است. تابع glEnable : تابع glEnable مقادیری را میگیرد که در زیر فقط به مقدار glcPointSmooth اشاره میکنیم. مقدار glcPointSmooth برای افزایش دقت گرافیکی اشیا و همچنین دندانه زدایی آنهاست. برای اینکه بهتر با این تابع و مقدار تابع آشنا بشین بعد از تعریف کردن تابع glPointSize در خط بعد از آن تابع glEnable را تعریف کنید. به این صورت: glEnable glcPointSmooth ۲- bmLines رسم خط : برای رسم خطوط در OpenGL از تابع glBegin و با ثابت bmLines استفاده میکنیم. در این تابع به جای اینکه یکبار تابع glVertex2f را فراخوانی کنیم باید دو تا تابع glVertex2f فراخوانی کنیم چراکه برای رسم خط به دو مختصات ( مختصات نقطه اول پاره خط و مختصات پایان رسم پاره خط) احتیاج داریم. glBegin bmLines glVertex2f -0.5 , 0 glVertex2f 0.5 , 0 glEnd در مثال بالا با دادن دو مختصات خطی برای ما رسم میشود. برای دندانه زدایی خطوط قبل از فراخوانی تابع glBegin تابع glEnable با مقدار glcLineSmooth بنویسید. به صورت زیر: glEnable glcLineSmooth تمرین جلسه دوم : ۱- نقطه ای رسم کنید که انداره اون ۲۵ برابر نقطه معمولی باشه و دندانه نداشته باشد. 0- با رسم ۳ خط یک مثلث بسازین. قسمت 3-------------------------------------------------------------------- ۳- bmTriangles رسم مثلث: برای رسم مثلث های گوناگون ( متساوی ها و قائم الزاویه ها و ...) از تابع glBegin با دادن ثابت bmTriangles میتوانیم بعد از فراخوانی سه تابع glVertex2f (که رئوس اضلاع مثلث را شامل میشوند) مثلث مورد نظر را رسم کنیم. در مثال زیر یک مثلث با رنگ آبی در وسط فرم نمایش داده میشود. glBegin bmTriangles glcolor3f 0, 0, 1 glvertex2f 0.5 , 0 glvertex2f 0 , 0.5 glvertex2f -0.5 , 0 glEnd شاید با تابع glColor3f آشنا نباشید. تابع glColor3f باعث میشود که رنگ مورد نظر برای اشیا را مشخص کنیم. تابع glColor#f که # در آن از ۳ تا ۴ میباشد رنگ مورد نظر را تایین میکند. در ادامه درباره این تابع بیشتر صحبت میکنم. ۴- bmQuads رسم چهار ضلعی ها (از جمله لوزی / مربع / مستطیل / ذوزنقه و سایر چهار ضلعی ها: برای رسم چهار ضلعی ها مانند رسم سایر اشیا از تابع glBegin استفاده میکنیم و مقدار Mode تابع glBegin را برابر bmQuads می کنیم. در مثال زیر یک مستطیل در نیمه ی بالایی فرم رسم میکنیم: glBegin bmQuads glcolor4f 0,1,0 ,0 glVertex2f 0.5 , 0 glvertex2f 0.5 , 0.5 glvertex2f -0.5 , 0.5 glvertex2f -0.5 , 0 glEnd همان طور که در مثال بالا می بینید ما برای رسم مستطیل از چهار تابع glVertex2f استفاده کرده ایم. دلیل استفاده از تابع glVertex تایین رئوس اضلاع مستطیل است. ۵- bmPolygon رسم چند ضلعی: برای رسم چند ضلعی باید بعد از فراخوانی تابع glBegin از ثابت bmPolygon استفاده کنیم . برای رسم چند ضلعی ها ما میتوانیم در داخل بلوک glBegin/glEnd به تعداد دلخواه تابع glVertex فراخوانی کنیم چرا که تعداد اضلاع به تعداد توابع glVertex بستگی دارد. در مثال زیر یک ۶ ضلعی بارنگ قرمز رسم میکنیم. glBegin bmPolygon glColor3f 1, 0, 0 glVertex2f 0.5, 0 glVertex2f 0.3, 0.5 glVertex2f -0.3, 0.5 glVertex2f -0.5, 0 glVertex2f -0.3, -0.5 glVertex2f 0.3, 0.5 glEnd و اما رسم دایره: شما میتونین برای رسم دایره به کمک تابع glBegin و ثابت bmPolygon دایره رسم کنین ولی تعداد خطوطی که باید کد بنویسین خیلی زیاد میشه. Open GL برای رسم دایره از یک کتابخانه کمکی به نام glu استفاده میکند . در ادامه چگونگی رسم دایره. برای رسم دایره دیگر نمیتوانیم از تابع glBegin استفاده کنیم زیرا تابع glBegin ثابتی ندارد که بتواند دایره رسم کند. پس: برای رسم دایره شما ابتدا باید یک متغیر از نوع Variant تعریف کنید: Dim Q as Variant بعد از تعریف کردن متغیر باید اون رو برای رسم دایره آماده کنین به این صورت: Q = gluNewQuadric بعد باید رنگ مورد نظر خودتون رو به دایره بدین: glColor3f 0,0,1 بعد از اون هم باید چگونگی نمایش دایره رو مشخص کنیم( این موضوع برای استفاده سه بعدی کاربرد دارد و من در جلسه بعد به توضیح این تابع میپردازم اما بد نیست که بهتر با تابع آشنا بشین.) gluQuadricDrawStyle Q , qdsLine در ادامه نیز به رسم دایره میپردازیم: gluSphere Q , 0.5 , 20 , 20 بعد هم برنامه را اجرا میکنیم و نتیجه را می بینیم. مثال بالا در کل به این صورت است: Dim Q Q = gluNewQuadric glcolor3f 0 , 0 , 1 gluQuadricDrawStyle Q , qdsLine gluSphere Q , 0.5 , 20 , 20 تمرین ۱- چهار ضلعی رسم کنین که رنگ آن قرمز باشد. سپس در وسط آن چهار ضلعی یک مثلث به رنگ آبی رسم کنین. ۲- دایره ای رسم کنین که رنگ آن سبز باشد . قسمت 4-------------------------------------------------------------- در جلسه چهارم آموزش OpenGL یاد میگیرین که : ۱- اشیای خود را با چند رنگ مختلف رسم کنین. (برای مثال گوشه بالا سمت راست آبی و نیمه پایینی مربع قرمز باشد و وسط مربع نیز ترکیبی از این دو رنگ.) ۲- اشیای سه بعدی رسم کنین. 3-چگونگی متحرک سازی اشیای سه بعدی. ۱- رنگ آمیزی اشیا: یکی از قابلیت های مهم OpenGL ترکیب رنگ های مختلف در یک شئ است. که در این کار هر راس از شئ رنگ متفاوتی میگیرد. برای این کار تابعی وجود دارد که نام آن glShadeModel است . این تابع به OpenGLمیگوید که اشیای ما فقط یک رنگ بگیرند یا با چند رنگ مختلف رنگ آمیزی شوند. این تابع دو ثابت دارد: ۱: smFlat فقط یک رنگ میتوانیم به شئ اختصاص دهیم. ۲: smSmooth می توانیم ترکیبی از رنگها را به شی اختصاص دهیم. در حالت پیش فرض مقدار تابع glShadeModel برابر smFlat است که ما در این صورت فقط یک رنگ میتوانیم به شئ مان اختصاص دهیم. باید همیشه این نکته را توجه داشته باشید که تابع glShadeModel قبل از بلوک glBegin / glEnd بیاید که در غیر این صورت خطا رخ میدهد. در مثال زیر یک مثلث با رنگ های قرمز و سبز و آبی رسم میکنیم: glShadeModel smSmooth glBegin bmTriangles glcolor3f 1,0,0 glVertex2f 0.5, 0 glColor3f 0 , 1 , 0 glVertex2f 0 , 0.5 glcolor3f 0 , 0 , 1 glVertex2f -0.5 , 0 glEnd حالا برنامتون رو اجرا کنین و نتیجه رو مشاهده کنین. حالا برای تمرین مقدار تابع glShadeModel را برابر smFlat قرار دهید و نتیجه رو نگاه کنین. ۲- رسم اشیای سه بعدی: برای رسم اشیای سه بعدی همانند رسم اشیای ۲ بعدی عمل میکنیم . یعنی اینکه با فراخوانی بلوکglBegin .../.../glEnd میتوانیم اشیای سه بعدی رسم کنیم. رسم اشیای سه بعدی بسیار بسیار ساده و آسان است و برای برنامه نویسان OpenGL لذت بخش ترین بخش برنامه نویسی است. ما برای رسم اشیای سه بعدی به جای استفاده از تابع glVertex2f از توابع glVertex3f و یا glVertex4f استفاده می کنیم . مطمئنم که فهمیدید . بله در تابع glVertex2f همان طور که از شماره ۲ آن معلوم است توانایی رسم اشیای ۲ بعدی را دارد اما توابع glVertex3f , glVertex4f بر اساس شماره آنها توانایی رسم اشیای سه بعدی را دارند. شکل کلی تابع glVertex3f به صورت زیر است: glVertex3f X , Y , Z که در این تابع x و y همان مختصات معمولی رئوس شئ هستند ولی z عمق شی را نشان می دهد. مختصات اشیای سه بعدی: کسانی که برنامه نویس هستند قطعا مختصات سه بعدی رو هم بلدند اما مختصات سه بعدی مختصاتی فرضی است و فقط با مغز انسان قابل درک است. در مثال بعد یک مثلث سه بعدی رسم میکنم: مثال: رسم مثلث ۳ بعدی: glShadeModel smSmooth glBegin bmTriangles glColor3f 1,0,0 glVertex3f 0.5 , 0, 0 glColor3f 0,1,0 glVertex3f 0 , 0.3 , 0 glColor3f 0,0,1 glVertex3f -0.5 , 0 , 0 glEnd مثال بالا را اجرا کنین و نتیجه کدهایی که نوشتین رو نگاه کنین. ممکنه بعد از اجرای برنامه با خودتون بگین که ما یک مثلث سه بعدی رسم کردیم ولی چرا از یک بعد قابل روئیت بود ! برای اینکه از تمامی ابعاد و از همه طرف مثلث رو ببینین باید اون رو متحرک کنین.(یعنی حرکت بدین.) ۳- متحرک کردن اشیای سه بعدی: برای متحرک کردن اشیای سه بعدی OpenGl تابعی دارد که نام آن glRotatef است . تابع glRotateF دارای ۴پارامتر است و شکل کلی آن به این صورت است: مختصات Z , مختصات Y , مختصات X , سرعت حرکت glRotatef در این تابع هر چه مقدار سرعت حرکت بیشتر باشد شئ مورد نظر ما با سرعت بیشتری حرکت میکند . در مثال زیر یک مثلث سه بعدی با سه رنگ متفاوت را به حرکت در می آوریم: glRotatef 2 , 0.5 , 0.5 , 0.5 glShadeModel smSmooth glBegin bmTriangles glColor3f 1,0,0 glVertex3f 0.5,0,0 glColor3f 0,1,0 glVertex3f 0,0.3,0 glColor3f 0,0,1 glColor3f -0.5,0,0 glEnd مثال بالا رو هم حتما اجرا کنین و نتیجه رو ببینین. همون طور که در مثال بالا مشاهده می کنین تابع glRotatef نیز باید در قبل و خارج از بلوک glBegin/glEndباشد قسمت 5 ------------------------------------------------------------ در این جلسه یاد میگیرین که: ۱- رسم مکعب: ۲- رسم کره: ۳- رسم منشور و اهرام( مکعب مثلث): ۴- رسم استوانه ( یا دیسک): در این جلسه چگونگی رسم مکعب و کره و اهرام را میدم و رسم استوانه را برای جلسه بعد . چرا که رسم استوانه و دیسک کاملا با بقیه مکعب ها فرق داره و مستلزم اختصاص دادن وقت بیشتری برای آموزش آن داره پس برای رسم مکعب خودتون رو آماده کنین. ۱- رسم مکعب (مکعب مربع و مستطیل): رسم مکعب های سه بعدی بسیار ساده است و ما با استفاده از بلوک glBegin/glEnd مکعب های سه بعدی خودمان را رسم می کنیم. برای اینکه چگونگی رسم مکعب های سه بعدی رو یاد بگیرین خطوط زیر را با دقت بخونین: می دونید که مربع دارای چهار راس است . همچنین از چهار پاره خط تشکیل شده است. یک مکعب مربع یا مستطیل از شش تا چهار ضلعی تشکیل شده است . همچنین این شش تا چهار ضلعی دارای ۱۲ پاره خط است . برای درک بهتر شما یک مثال میزنم تا بهتر بفهمین. در مثال زیر با استفاده از رسم شش تا مربع یک مکعب مستطیل میسازیم: glShadeModel smSmooth glRotatef 1,0.5,0.3,0.2 glBegin bmQuads glColor3f 0#, 1#, 0# glVertex3f 0.5, 0.5, -0.5 glVertex3f -0.5, 0.5, -0.5 glVertex3f -0.5, 0.5, 0.5 glVertex3f 0.5, 0.5, 0.5 glColor3f 1#, 0.5, 0# glVertex3f 0.5, -0.5, 0.5 glVertex3f -0.5, -0.5, 0.5 glVertex3f -0.5, -0.5, -0.5 glVertex3f 0.5, -0.5, -0.5 glColor3f 1#, 0#, 0# glVertex3f 0.5, 0.5, 0.5 glVertex3f -0.5, 0.5, 0.5 glVertex3f -0.5, -0.5, 0.5 glVertex3f 0.5, -0.5, 0.5 glColor3f 1#, 1#, 0# glVertex3f 0.5, -0.5, -0.5 glVertex3f -0.5, -0.5, -0.5 glVertex3f -0.5, 0.5, -0.5 glVertex3f 0.5, 0.5, -0.5 glColor3f 0#, 0#, 1# glVertex3f -0.5, 0.5, 0.5 glVertex3f -0.5, 0.5, -0.5 glVertex3f -0.5, -0.5, -0.5 glVertex3f -0.5, -0.5, 0.5 glColor3f 1#, 0#, 1# glVertex3f 0.5, 0.5, -0.5 glVertex3f 0.5, 0.5, 0.5 glVertex3f 0.5, -0.5, 0.5 glVertex3f 0.5, -0.5, -0.5 glEnd مثال بالا رو اجرا کنین و نتیجه رو نگاه کنین. ۲- رسم کره: رسم کره نیز همانند رسم دایره است و هیچ فرقی ندارد . دایره ای را که در جلسات پیش رسم کردیم سه بعدی بود اما به علت اینکه متحرک نبود از همه طرف قابل دیدن نبود . در مثال زیر یک کره به شعاع ۵/۰ رسم میکنیم. Dim Q Q = gluNewQuadric glColor4f 1 , 1 , 0 , 1 gluQuadricDrawStyle Q , qdsLine glSphere Q , 0.5 , 25 , 25 شاید برای شما این سوال پیش آید که آیا تابع glColor4f هم وجود دارد؟ باید در پاسخ شما بگم که بله البته که وجود داره. شکل کلی تابع glColor4f به صورت زیر است: مقدار آلفا , رنگ آبی , رنگ سبز , رنگ قرمز glColor4f در تابع بالا مقدار آلفا رقیق یا غلیظ بودن سطح رو مشخص می کنه. به عبارت دیگه مقدار نوری که پاشیده می شود از سطح(شئ) بگذرد یا نگذرد. (در جلسات بعدی چگونگی نورپردازی نیز آموزش داده می شود.) تمرین ۱- سعی کنین که یک مکعب متوازی الاضلاع رسم کنین و اون رو متحرک کنین. ۲- قسمت های اصلی کره زمین ( پوسته و گوشته و هسته) را با رسم سه کره شبیه سازی کنین و سعی کنین هر قسمت یک رنگ داشته باشد.(مثلا پوسته آبی , گوشته نارنجی , هسته قرمز) قسمت 6 ------------------------------------------------------- در این قسمت یاد میگیرین که دیسک رسم کنین و در ادامه نیز چگونگی چسباندن عکس به اشکال سه بعدی رو یاد میگیرین. ۱- رسم استوانه: ۲- رسم دیسک: ۳- رسم دیسک مجهول(مثلا دیسک نیم دایره) برای رسم استوانه و دیسک و دایره ما از کلاس Quadric استفاده میکنیم.به طور کلی هر شئی که دایره در آن به کار رفته باشد وابسته به کلاس Quadric است. ۱ - رسم استوانه: برای رسم استوانه ما ابتدا یک متغیر از نوع Variant تعریف می کنیم . سپس متغیر را برابر کلاس Quadricقرار میدهیم بعد از آن هم با توابع کتابخانه glu اشکال مورد نظر خود را رسم میکنیم.کدهای زیر رو درDrawGLScene (مکان رسم اشکال) بنویسید: Public Xrot , Yrot , Zrot as GLfloat Public Function DrawGLScene() as Boolean glClear clrColorBufferBit glLoadIdentity glRotatef xrot , 1 , 0 , 0 glRotatef yrot , 0 , 1 , 0 glRotatef zrot , 0 , 0 , 1 Dim Q Q = gluNewQuadric gluQuadricDrawStyle Q , qdsLine glColor4f 1,1,1,1 gluCylinder Q , 0.3 , 0.3 , 0.8 , 15 , 15 Xrot = Xrot + 0.3 Yrot = Yrot + 0.2 Zrot = Zrot + 0.4 DrawGLScene = True End Function کدهایی که کمرنگ هستند تکراری هستند و فقط برای یادآوری بود که کدهای مربوط به رسم اشیا باید در این فانکشن نوشته شوند. تحلیل کد برنامه: در خط اول ابتدا سه متغیر برای متحرک کردن شئ نوشتیم.در خط چهارم به کمک تابعglLoadIdentity شئ خود را ثابت و بدون حرکت کردیم تا حرکت را به عهده متغیر ها قرار دهیم. خط های ۸ و۹ و ۱۰ و ۱۱ و ۱۲ را برای رسم استوانه نوشتیم. خط های ۱۳ و ۱۴ و ۱۵ هم برای متحرک کردن شئ است. و اما شکل کلی تابع gluCylinder (تابع رسم استوانه): gluCylinder خطوط عمودی , خطوط افقی , ارتفاع استوانه , شعاع دایره بالایی استوانه , شعاع دایره پایینی , متغیر به همین سادگی شما یک استوانه رسم کردید. ۲ - رسم دیسک : رسم دیسک نیز مانند رسم استوانه است با این تفاوت که به جای استفاده از تابعgluCylinder باید از تابع gluDisk استفاده کنیم. کدهای زیر رو در فانکشن DrawGLScene بنویسید: Public Xrot , Yrot , Zrot as GLfloat Public Function DrawGLScene () as Boolean glClear clrColorBufferBit glLoadIdentity glRotatef xrot , 1 , 0 , 0 glRotatef yrot , 0 , 1 , 0 glRotatef zrot , 0 , 0 , 1 Dim Q Q = gluNewQuadric gluQuadricDrawStyle Q , qdsLine glColor4f 1,0,0,1 gluDisk Q , 0.1 , 0.7 , 15 , 15 Xrot = Xrot + 0.3 Yrot = Yrot + 0.2 Zrot = Zrot + 0.4 DrawGLScene = True End Function ۳ - رسم دیسک مجهول(مثل دیسک نیم دایره): برای رسم دیسک مجهول به جای استفاده از تابع gluDisk باید از تابع gluPartialDisk استفاده کرد. کدهای زیر رو هم امتحان کنین. Public Xrot , Yrot , Zrot as GLFloat Public Function DrawGLScene() as Boolean glClear clrColorBufferBit glLoadIdentity glRotatef xrot , 1 , 0 , 0 glRotatef yrot , 0 , 1 , 0 glRotatef zrot , 0 , 0 , 1 Dim Q Q = gluNewQuadric gluQuadricDrawStyle Q , qdsLine glColor4f 1,0,0,1 gluPartialDisk Q , 0.1 , 0.7 , 15 , 15 , 0 , 250 Xrot = Xrot + 0.3 Yrot = Yrot + 0.2 Zrot = Zrot + 0.4 DrawGLScene = True End Function شکل کلی تابع gluPartialDisk همانند تابع gluDisk است و فقط یک پارامتر بیشتر دارد(پارامتر آخر) و این پارامتر مشخص کننده مقدار مجهولی دیسک است
Sub Button_Click( s As Object, e As EventArgs )
Dim objCookie As HttpCookie
objCookie = New HttpCookie( txtCookieName.Text, txtCookieValue.Text )
Response.Cookies.Add( objCookie )
End Sub
Sub Page_PreRender( s As Object, e As EventArgs )
Dim strKey As String
For each strKey in Request.Cookies
lblCookies.Text &= "
Next
End Sub
Sub Button_Click( s As Object, e As EventArgs )
If ViewState("TotalCount") = Nothing Then
ViewState("TotalCount") = 1
Else
ViewState("TotalCount") += 1
End If
Label1.Text = ViewState("TotalCount")
End Sub
محتویات فایل global1.asax
Sub Session_Start()
If Application( "HitCount" ) Is Nothing Then
Application( "HitCount" ) = 0
End If
End Sub
-----------------------------------
Sub Page_Load()
Dim count As Integer = Str(Application("HitCount"))
count += 1
Application("HitCount") = count
Label1.Text = "Number of resquests is :" + count.ToString()
End Sub
برای ایجاد نوشته های گرافیکی با تعیین فرمتهای مختلف برای زیباتر کردن نوشته ها
به عنوان مثال با اجرای کدهایی که در ادامه ملاحظه خواهید کرد متن زیر را می توانید بسازید

SolidBrush br1 = new SolidBrush(Color.White);
StringFormat fmt = new StringFormat();
fmt.Alignment = StringAlignment.Center;
fmt.LineAlignment = StringAlignment.Center;
Font font = new Font("Freestyle Script", 24);
Rectangle rc = new Rectangle(0, 0, 400, 200);
LinearGradientBrush br2 = new LinearGradientBrush(rc, Color.Red, Color.DarkRed, 45, true);
Bitmap bmp = new Bitmap(400, 200);
Graphics g = Graphics.FromImage(bmp);
g.FillRectangle(br2, rc);
g.DrawString("http://www.csharpcode.blogfa.com", font, br1, rc, fmt);
bmp.Save("csharpcode.bmp", System.Drawing.Imaging.ImageFormat.Bmp);
g.Dispose();
ولی در ابتدا باید فضای نام زیر را اضافه نمایید
using System.Drawing.Drawing2D;
واژه رئالیسم از رئل(Real) که به معنای واقع است، مشتق شده و در واقع به معنای مکتب اصالت واقع است.
مکتب رئالیسم نقطه مقابل مکتب ایده آلیسم است؛ یعنی مکتبی که وجود جهان خارجی را نفی کرده و همه چیز را تصورات و خیالات ذهنی میداند.
رئالیسم یعنی اصالت واقعیت خارجی. این مکتب به وجود جهان خارج و مستقل از ادراک انسان، قائل است. ایده آلیستها همه موجودات و آنچه را که در این جهان درک میکنیم، تصورات ذهنی و وابسته به ذهن شخص میدانند و معتقدند که اگر من که همه چیز را ادراک میکنم نباشم، دیگر نمیتوانم بگویم که چیزی هست. در حالی که بنابر نظر و عقیده رئالیستی، اگر ما انسانها از بین برویم، باز هم جهان خارج وجود خواهد داشت. به طور کلی یک رئالیست، موجودات جهان خارج را واقعی و دارای وجود مستقل از ذهن خود میداند.می داند.
باید گفت در واقع همه انسانها رئالیست هستند، زیرا همه به وجود دنیای خارج اعتقاد دارند. حتی ایده آلیستها نیز در زندگی و رفتار، رئالیست هستند، زیرا باید جهان خارج را موجود دانست تا بتوان کاری کرد و یا حتی سخنی گفت.
کلمه رئالیسم در طول تاریخ به معانی مختلفی غیر از معنایی که گفته شد، استعمال شدهاست. مهمترین این استعمالها و کاربردها، معنایی است که در فلسفه مدرسی یا اسکولاستیک(Scholastic) رواج داشتهاست.
در میان فلاسفه مدرسی، جدال عظیمی بر پا بود که آیا کلی وجود خارجی دارد و یا اینکه وجودش فقط در ذهن است؟
کسانی که برای کلی واقعیت مستقل از افراد قائل بودند، رئالیست و کسانی که کلی را تنها دارای وجودی ذهنی و در ضمن موجودات محسوس میدانستند و برای آن وجود جدا از جزئیات قائل نبودند، ، ایده آلیست خوانده میشدند.
بعدها در رشتههای مختلف هنر مانند ادبیات نیز سبکهای رئالیستی و ایده آلیسمی به وجود آمد و سبک رئالیسم در مقابل سبک ایده آلیسم است. سبک رئالیسم یعنی سبک گفتن و نوشتن متکی بر نمودهای واقعی و اجتماعی. اما سبک ایده آلیسم عبارت است از سبک متکی به تخیلات شاعرانه گوینده یا نویسنده.
رئالیسم نوعی«واقع گرایی» است در رمان و نمایشنامه که خیال پردازی و فردگرایی رومانتیسم را از بین میبرد و به مشاهدهٔ واقعیتهای زندگی و تشخیص درست علل و عوامل و بیان تشریح و تجسم آنها میپردازد.
هدف حقیقی رئالیسم تشخیص تأثیر محیط و اجتماع در واقعیتهای زندگی و تحلیل و شناساندن دقیق "تیپهاً یی است که در اجتماع معینی به وجود آمدهاست.شناخت عبارت INSERT
ساختار دستور عبارت Insert شبيه به عبارت Select می باشد، بيشترين شکل مبنای آن عبارت است از:
INSERT [INTO] Table-or-View [(Column-List)]
VALUES (Value-List)
هر عبارت Insert می تواند يک جدول يا نما منفرد را به هنگام سازد. زمانی که شما از عبارت Insert برای به هنگام سازی يک نما استفاده می کنيد شما بايد آگاه باشيد از محدوديتهای زير:
View نبايد شامل يک تابع به هم پيوسته مانند COUNT يا AVG باشد.
View نبايد شامل Top ، GROUP BY ، UNION يا DISTINCT باشد.
View نبايد شامل يک ستون محاسبه شده باشد.
View بايد يک جدول را در شرط From باز گرداند.
عبارت Insert ستونهاي يک جدول منفرد را فقط به هنگام می سازد.
ليست ستون در عبارت Insert اختياری می باشد. اگر آن فراهم نگردد عبارت Insert بايد شامل مقاديری برای همه ستونها در جدول يا نما باشد و آنها بايد به همان ترتيب به عنوان ستونهايی در جدول يا نما فراهم شوند. اگر چه شما می توانيد از کليدهای ويژه DEFAULT برای مشخص کردن مقادير پيش فرض برای يک سطر استفاده کنيد. زمانی که ليست ستون گنجانده می شود. آن يک فرمت شبيه از ليست ستون در عبارت Select می گيرد: يک ليستی از نامهای ستون که با کاما جدا شده است. از زمانی که يک عبارت Insert می تواند يک سطر را فقط برای يک جدول اضافه کند، شما معمولاً نياز به استفاده کردن مشخصه نام جدول برای نام ستون نخواهيد داشت.
استفاده کردن از عبارت INSERT
يک عبارت Insert می تواند با استفاده کردن از قاب Grid برای مشخص کردن ستونها يا با استفاده کردن قاب SQL برای وارد کردن مستقيم عبارت ايجاد گردد.
درج کردن سطرها با استفاده از قاب Grid
قاب Grid احتمالاً آسانترين راه برای ايجاد يک عبارت Insert می باشد از زمانی که ياد آوردن هر ساختار دستور مورد درخواست شما نباشد.
درج کردن يک سطر با استفاده از قاب Grid
1- پوشه Tables را از پايگاه داده Aromatherapy راهبری کرده، جدول Oils را در قاب Details کليک راست می کنيم. در زير منوی Open Table رفته و Query را انتخاب می کنيم. Query Designer همه چهار قاب نشان داده شده را باز می کند.
راهنمايی: فرمان Query در Open Table يا زير منوی Open View يک راه سريعی برای باز کردن Query Designer با همه قابهای نشان داده شده می باشد. اگر چه حالت SQL پيش فرض SELECT*FROM
2- قاب SQL و قاب Results را پنهان می سازيم.
3- دکمه Change Query Type را در نوار ابزار Query Designer کليک می کنيم و Insert را از ليست انتخاب می کنيم. Query Designer قاب Grid را تغيير می دهد بنابراين آن فقط ستون و سل ها با مقادير جديد را نشان می دهد.
4- ستون OilName را برای قاب Grid اضافه کرده و مقدار جديدش را InsertFromGrid قرار می دهيم.
5- دکمه Run را در نوار ابزار Query Designer برای اجرای Query کليک می کنيم. Query Designer يک متنی را نشان می دهد که سطر اضافه شده برای جدول را تأييد می کند.
6- OK را برای بستن جعبه متن کليک می کنيم. بدون بستن Query Designer يک نمای جديد از جدول Oils با کليک راست کردن جدول Oils در قاب Details باز می کنيم. بر روی جدول Open رفته و همه سطرهای بازگشتی را انتخاب می کنيم. يک نمونه جديد از Query Designer باز می شود و همه سطرها در جدول Oils را نشان می دهد.
7- پايين آوردن Scroll به آخر جدول اين موضوع را تأييد می کند که يک سطر جديد اضافه شده است.
مهم: OilID در پايگاه داده تان احتمالاً با ID که خودمان وارد می کنيم تطابق ندارد. به ياد داشته باشيد که OilID به عنوان يک Identity Column تعريف می گردد. موجوديت ستونها SQL Server ضمانت می کند که يکپارچه باشند اما آنها ضرورتاً پی در پی نمی باشند.
ويندوزXPپس از نصب استاندارد ، فضايي بيش از 5 /1 گيگابايت از هارد را اشغال مي كند . شما با چند تغيير مي توانيد چند صد مگابايت از ظرفيت درايو را آزاد كنيد . براي اين كار بايد حالت Standby را غير فعال كنيد . اين عملكرد در ويندوزXP، فايل.sys Hiberfilدر فهرست اصلي را در پارتيشن سيستم قرار مي دهد . اگر به عملكرد Standby احتياجي نداريد ، آن را با دستور زير ، غير فعال كنيد :
Start > settings > Control panrl > power Options
درزبانه Power Schemesقسمت System Standby راروي Never تنظيم كنيد .
پاك سازي و مرتب سازي هارد از فايل هاي زائد
با استفاده از ابزار پاك سازي اطلاعات ، مي توانيد فايل هاي زائد و اضافي را پاك كنيد . درايوي را كه مي خواهيد مرتب سازي كنيد . انتخاب و دستور زير را اجرا كنيد :
star / programs / Accessories / Tools / Disk Cleanup
نمايش گروهي
براي اين كه بتوانيد همه فايل هاي موجود را به صورت يك فهرست درWindows Explorerنمايان كنيد از طريق منويViewوارد قسمتArrange lcon Byشويد وTypeرا فعال كنيد .
غير فعال كردن خاصيتwinzipدر ويندوز
در كامپيوتر هاي با سرعت پايين ، عملZipبه عنوان ترمزي براي سرعت سيستم به حساب مي آييد . اگر با يكPCبا سرعت پايين كار مي كنيد . توصيه مي شود كه اين عملكرد را غير فعال كنيد . از طريقstart / Runخط فرمان را باز كنيد و در سطر فرمان دستورzipfldr .dllRegsvr32 /Uرا تايپ كنيد . پس از تاييد توسط كليدOK، پيغامي ظاهر مي شود كه عمل غير فعال ، در همان مسير قيد شده در سطر فرمان دستورRrgsvr32 zepfldr . dllرا وارد كنيد .
ايجاد يك آيكون براي قفل كردن كامپيتر
نحوه ايجاد آيكني كه مي توانيد با دو بار كليك سريع آن ، سيستم رت در وضعيتLockقرار دهيد . براي چنين كاري ابتدا در صفحهDesktipراست كليك كرده و سپس گزينهshortcutNew / راانتخاب كنيد . در كادر متنيType the Location of lte ltemدستور زير را وارد نماييد :
rundll32 . exe user32 . dll . Lockworkstation
سپس گزينهNextرا انتخاب كرده و يك نام دلخواه براي ميانبر مزبور انتخاب كنيد . پس ازاين مرحله مي توانيد با قرار دادن آيكون ميانبر در هر محل دلخواهي با دو بار كليك سريع در آن سيستم رت در وضعيت قفل قرار دهيد .
My Document را جابجا كنيد
روي آيكونMy Documentدر صفحه نمايشتان ، كليك راست كنيدpropertiesو از پنجره ظاهر شده دكمهMoveرا انتخاب كنيد ، پوشه اي را كه قرار است محتوايMy Documentخود را به آن ، انتقال دهيد . اگر پوشه مورد نظرتان وجود ندارد مي توانيد از طريق گزينهMake New folderپوشه جديدي براي خود انتخاب كنيد .
نحوه استفادهRemote Desktop
شركت ماكروسافت با قرار دادن برنامهRemote Desktopدر نسخهXp professionalخود اين امكان را براي كار بران فراهم ساخت تا از راه دور به كامپيوتري در محل ديگر دسترسي يابند . در واقع شيوه كار اين برنامه به نحوي است كه به نحوه برقراري ارتباط ، سيستم راه دور به طور اتوماتيكLockمي شود و مادامي كه به آن مرتبط هستيد هيچ شخص ديگري نمي توتند به برنامه ها ، فايل ها و ساير منابع آن دسترسي داشته باشيد و هنگامي كه به محل كارتان باز گرديد مي توانيد آن را با فشار دادن كليد هاي Alt+CTRl+DEL از حالتLock خارج نماييد . از ديگر ويژگي هاي اين برنامه امكانloginدر يك زمان بر روي چند سيستم مي باشد ، حتي در حالتي كه ديگران نيز به آن سيستمLog inكرده باشند ، كار بر مي تواند برنامه هاي آن ها را بطور همزمان اجرا كند . براي دسترسي به امكانات و اجراي اين برنامه بايد موارد زير را در نظر داشته باشيد :
- يك كامپيوتر كه در آن ويندوزXP professional نصب شده و دسترسي به محيط اينترنت و يا شبكه را دارد .
- يك كامپيوتر ديگر در منزل و يا در همان محل شركت ( كه از طريق شبكه داخلي با هم مرتبط هستند ) با امكان دسترسي به اينتربت و مودم .
- نام كاربري، كلمه رمز عبور و مجوز هاي مناسب
نصب فكس
براي فعال كردن اين ويژگي در ويندوزتان ( البته در ويندوزXP) كافي است از پنجره Add / remove program panelControlو سپسComponenents Add / Remove Windowsرا انتخاب كنيد و از پنجره ظاهر شده گزينهFax Servicesرا برگزينيد دكمهNextرا انتخاب كنيد . پس از اين از شما براي نصب ، سي دي ويندوزتان را مي خواهيد كه با گذاشتن آن ، اين برنامه نصب مي شود .
فكس بفرستيد
براي اين كارDocumentمورد نظر را كه مي خواهيدFaxكنيد ، باز كرده و از منويfileگزينهprintرا انتخاب و در پنجرهprinter Boxبر روي گزينهFaxكليك كنيد تا ويزاد SendFaxباز شود ( توجه داشته باشيد در برنامه هايOfficeبراي اين كار بايد از منويfileگزينهSendو سپسFax Recipientرا انتخاب كنيد . ويزاردي با همان صورت ظاهر مي شود ) در مرحله بعد نوبت به اضافه كردن نام فردي مي شود كه مي خواهيد به ويFaxبزنيد . پس از طي اين مرحله ، آماده ايدDocumentخود را از طريقFaxبفرستيد .
فشرده كردن فايل ها
براي فشرده كردن يك فولدرXPياMeروي صفحهDesktopيا درون يك فولدر راست كليك كرده ، از منوي ظاهر شدهNewراانتخاب كنيد و سپس روي گزينهCompressed ( zipped ) folderكليك كنيد . يك فولدر جديد از ن.ع فشرده
( Compressed )در آن محل ايجاد مي شود كه نام پيش فرض آن( Ziped ) Folder New Compressedاست .
فولدر هاو فايل ها يي كه مي خواهيد روي آنها پسورد بگذاريد انتخاب كنيد و با استفاده ازCutوPasteبه اين فولدر فشرده انتقال دهيد .
رمز گذاري روي فايل ها
فولدر فشرده را باز كنيد و از منوي فايل گزينهAdd a password( در ويندوزMeگزينهEncrypt) را انتخاب كنيد . كلمه عبور دلخواه خود را در قسمتPasswordوارد كنيد و دوباره آن را در قسمتConfirm Passwordتايپ كنيد و دكمهOKرا بزنيد . از حالا به بعد تنها كاربراني كه كلمه عبور را بدانند قادر به باز كردن ، كپي يا انتقال محتويات اين فولدر هستند .
منويFavoriteرا رويDesktopقرار دهيد
از منويStartگزينهRunرا انتخاب كنيد . حال در قسمتOpenاز اين پنجره ، عبارت زير را تايپ كنيد :
iexplore- Channelband
توجه داشته باشيد كه ميان عبارتiexploreو علامت – يك فاصله قرار دهيد .
پس از تاييد پنجرهOpenمنويFavoritesرا روي صفحه نمايشتان خواهيد ديد .
|
| ||
|
کدهای مربوط به Upload کردن فايل به سرور را بايد به دو قسمت تقسيم نمود. قسمت اول شامل کدهايی است که نحوه نمايش در مرورگر را شامل می شوند و اساس آن بر HTML است. و قسمت دوم مربوط به طرف سرور است که شامل کدهايی است که با ASP.NET نوشته می شوند. برنامه زير حاوی کدهای مربوطه برای انجام اين کار به صورات خيلی ساده و ابتدايی می باشد. همانطور که ملاحظه می کنيد برخلاف ASP کلاسيک، نياز به وجود component خاصی نمی باشد و اين کار در ASP.NET بصورت خيلی ساده انجام پذير است.
Upload.aspx:
<HTML>
<HEAD>
<TITLE>Uploading File...TITLE>
<Script language="vb" runat="server">
sub page_load(s as object,e as EventArgs)
If Not (MyInputFile.PostedFile Is Nothing) Then
MyInputFile.PostedFile.SaveAs("c:\filename.ext")
Response.write("Your File was saved on the server...")
End If
endscript>
HEAD>
<BODY>
<FORM method="post" encType="multipart/form-data">
<input id="MyInputFile" type="file" name="MyInputFile" runat="server">
<input type="submit" value="Submit">
FORM>
BODY>
HTML>
در زير به شرح و توضيح برنامه بالا می پردازيم:
کدهای مربوط به طرف Client
به دليل آنکه در اين قسمت، ارسال اطلاعات به سرور را داريم، بايد کدهای مربوطه درون يک فرم قرار گيرند. اما لازم است که ويژگی encType آن فرم را به صورت زير مقدار دهی کنيم، زيرا در غير اينصورت فايل انتخاب شده توسط کاربر به سرور ارسال نخواهد شد:
encType="multipart/form-data"
در HTML کنترلی وجود دارد که وظيفه دريافت نام فايل و ارسال آن به سرور را عهده دار می باشد:
<input id="MyInputFile" type="file" name="MyInputFile" runat="server">
توجه کنيد که اين کنترل را به صورت يک سرور کنترل در می آوريم تا بتوانيم در ASP.NET از توانايی های آن استفاده نماييم و به همين دليل ويژگی runat="server" را به کنترل مربوطه اضافه کرده ايم. بنابراين کد مربوط به قسمت Client به صورت زير خواهد بود:
<body>
<form method="post" encType="multipart/form-data">
<INPUT id="MyInputFile" type="file" name="MyInputFile" runat="server">
<input type="submit" value="Submit">
form>
body>
2- كليد را تعريف كنيد و انواع آن را با مثال توضيح دهيد. 3 نمره
3- شرايط ايجاد يكپارچگی ارتباط در جدول چيست؟ 3 نمره
4- تفاوت انتقال جدول از بانك ديگر به كمك Import , Link چيست؟ 3 نمره
5- ابتدا اشكالات دستور زير را پيدا كرده، سپس علاوه بر نوشتن برنامه ی درست، عملكرد آن را شرح دهيد. INSERT IN List(Id,Name,Famili, Address,Tel
VALUES (‘123456’,Sara,’Asadi’, ‘ Rasht , Golsar’0131-7222222); 3 نمره
6- با مثال رابطه يك به چند را شرح دهيد. 2 نمره
7- جداول زير با فرض ارتباط بين فيلد Code بين دو جدول ايجاد شده است:
جدول List:
نوع فيلد نام فيلد توضيح
Number Code شماره كارمندی
Text Name نام كارمند
Text Family نام خانوادگی كارمند
Number Sh شماره شناسنامه
Text St محل تولد
Date B_date تاريخ تولد
جدول Salary :
نوع فيلد نام فيلد توضيح
Number Code شماره كارمندی
Number E_year سنوات خدمت
Currency ُSalary حقوق دريافتی
با زبان پرس و جوی ساخت يافته SQL دستورات خواسته شده را بنويسيد. هرمورد 1 نمره
1. ويرايش نام كارمندی كه به اشتباه "ممريم" ثبت شده است.
2. نمايش اطلاعات كارمندانی كه حقوق دريافتی آنها كمتر از 300000 ريال وسنوات خدمت آنها 30 سال است.
3. نمايش شماره كارمندی، نام خانوادگی و حقوق دريافتی كارمندان به طوري كه ستون نام خانوادگی به ترتيب صعودی مرتب شود.
4. حذف ركوردهايی از جدول salary كه سنوات خدمت آنها كمتر از يكسال باشد.
موفق باشيد.
| نقطه ی عطف صدا | |
| در ژرفای صدایت چیزی نهفته است... سری نهان است... در ژرفای صدایت دنیاییست پر از احساس در زلال بی کرانش ماهی های نقره ای می رقصند... در افق نگاهت خورشید طلوع می کند و پرندگان با هر کوچشان تازه می شوند... در ژرفای صدایت... انگار واژه ها خجالت می کشند...می خواهم از تو بنویسم، پس واژه های طلایی ام کو؟ دنبالشان می گردم...اما آنها در پس و پیش ذهنم قایم می شوند... در عوض هر کدام به نیابت از خودشان ترانه ی نابی را می فرستند در سردر ذهنم...انگار می خواهند بگویند:((بیا...این هم یک دنیا واژه ی طلایی...آن هم با صدا یک مرد نازنین...)) "ای تبلور حقیقت" نه، نمی شود... می خواهم به اندازه صد سال آرشیو وبلاگم، برای تو نوشته شود...می خواهم انقدر بگویم تا خوابم ببرد...مثل همیشه که شبها آنقدر گوش می دهم تا پلک هایم گرم می شود و...وقتی که بیدار می شوم انگار که چیزی را از دست داده باشم. خوب می دانم...این ناتوانی، این لکنت، این گم کردن واژه ها... می دانم امشب همه گرفتارش شدیم... این حال و روزآدمهایی ست که شیفته ی عشقی بی تعریف اند. شاید ساده ترین جمله ها بهترینها باشد... قبل از اینکه کسی رنگ و بوی مبالغه را به آنها داده باشد، اولین بار برای ناب تری معنیشان به کار رفتند. جملاتی مثل: "میلادت مبارک... ." سعی کردم به چشمانت خیره شوم و بفهمم در چه اندیشه ای هستی... شاید با آنها بشود چیزی نوشت برای امشب...اما نگاهت آنقدر عمیق بود که در آن غرق شدم... و چه پرسش های بی جوابی ... "تو منو از شب گرفتی" می دانم؛ چیزهایی که می گویم قابل فهم نیست! من احساساتم را می گویم... عمیق ترین هایشان را... سخت است؛ باور کن، نا جیه عاطفه ی من... "من آن موجم که بی تو آرامش ندارم..." "تو منو دادی به خورشید" |
فرق بین Multi Program و Multi Task چیست؟
سئوال 1: در multi program چه موقع عمل switching انجام می گیرد؟ وقت I/O
سئوال 2: در multi task چه موقع عمل switching انجام می گیرد؟ در یک برهه زمانی یعنی فقط منتظر عمل I/O
نمی ماند اگر به I/O بر خورد کند switch می کند. ولی اگر به I/O بر خورد نکند و آن برهه زمانی بگذرد بازهم switch می کند. یعنی پردازنده از آن گرفته می شود.
نکته1: یک سیستم عامل میتواند چند برنام ه(Multi program) باشد ولی چند وظیفه ای(Multi Task) نباشد. مثل ویندوز 1و2و3
چون فقط به I/O برخورد می کردند پردازنده Switch می کرد.
نکته2: یک سیستم عامل که هم چند برنامه(Multi program) و هم چند وظیفه ای(Multi Task) باشد. مثل ویندوز 95و98
چون اگر چند پنجره را باز کنید می بینید همه پنجره ها در حال فعلیت هستند. یعنی پردازنده ما بین آنها Switch می کند .
نکته 3: اشتراک زمانی (Time Sharing ) وقتی است که سیستم چند کاربره(Multi User) باشد.
مثال : وینوز 2000 و time sharing و multi task است. N تا کاربر بتوانند از طریق شبکه به یک سیستم وصل شوند و کاملا منابع اش را به اشتراک بگذارد. در ویندوز NT - n تا کاربر به آن سیستم می یابند و از منابع سیستم استفاده می کنند.
نکته 4: در وینروز95و 98 همه منابع غیر از حافظه و پردازنده را می توانیم به اشتراک بگذاریم.ولی در وینروز NT و ویندوز 2000و یونیکس همه منابع را می توانیم به اشتراک بگذاریم.
دو نکته ضرورت چند وظیفه ای بودن را روی کامپیوتر های شخصی موجب شده اند.{استالینگ 87}
1- با افزایش سرعت و ظرفیت ریز پردازند ه ها و با حمایت از حافظه مجازی ، کاربر ده پیچیده تر و مرتبتر شده اند .
برای مثال ممکن است کاربران بخواهند یک برنامه ، word ، یک برنامه Excel ، یک برنامه Autocad
را به طور همزمان برای ایجاد یک سند به کار برند.
1- باز کردن برنامه Autocad
2- رسم شکل و ذخیره آن
3- بستن برنامه Autocad
4- بازکردن Word
5- درج شکل در محل مناسب
در محیط چند وظیفه ای کاربر هر یک از کاربرد های مورد نیاز خود را باز کرده و به صورت باز رها می کند . و
اطلا عات به سادگی می تواند بین چند کاربرد حرکت کند.
ولی در تک وظیفه ای اگر تغییری در شکل لازم باشد کاربر باید برنامهWord را ببندد، برنامه Autocad را باز کند ، شکل را ویرایش و ذخیره نماید ، برنامه Autocad راببندد، برنامه Wordرا باز کند ودر نهایت شکل ویرایش شده را درج کند . که خیلی ملال آور است.
1- برای عملکر چند وظیفه ای ، رشد به کار گیری کامپیوتر به صورت مشتری / خدمتگزار(Client/Server) می باشد. در این دید گاه یک کامپیوتر شخصی (Client ) و یک سیستم میزبان(Server) مشتر کا، برای انجام یک کاربرد،خاص، بک کار گرفته شده اند. این تر تیب در یک کاربرد ممکن است یک یا چند کامپیوتر شخصی و یک یا چند دستگاه خدمتگزار (Client ) در گیر باشند.
برای هر کدام از وقفه ها ما سرویس روتین مربوط به خودش را داریم .
1-بافر کردن ( Buffering)، امکان همپوشانی ( همزمانی ) عمل I/O یک کار را با عملیات پردازش همان کار بوجود می آورد.در حالیکه spooling امکان همزمانی پردازش ورودی –خروجی چندین کار رابا یکدیگر فراهم می کند.
2- هر Spooling الزاما بافر دارد ولی بافر Spooling ندارد. .
سیستم Spooling راه حلی برای کار کرد ن با دستگاه های I/O انحصاری ، در یک سیستم چند برنامگی است. یک دستگاه Spool شده نوعی را در نظر بگیرید: یک چاپگر هر چند از نظر تکنیکی آسان خواهد بود که به هر فرآیند کاربر اجازه دهیم که فایل مخصوص کاراکتر ی را برای چاپگر باز کند، ولی فرض کنید که فرآیند آن را باز کند و برای ساعت ها کار نکند، در این حالت هیچ یک از دیگر فرآیند ها نیز قادر به چاپ کردن نخواهند بود.به جای این روش کاری که انجام گرفته است ، ایجاد یک فرآیند ویژ ه می باشد که شبح (Deamon)نامیده می شود و یک فهرست مخصوص که فهرست Spooling نامیده می شود.
برای چاپ کردن یک فایل ، ابتدا یک فرآیند تمامی فایل را برای چاپ شدن ایجاد می نماید وآن را در فهرست Spooling قرار می دهد. چاپ فایل های درون این فهرست بر عهده شبح است که تنها فرآیندی است که اجازه استفاده از فایل مخصوص چاپگر را دارد . با حفاظت فایل مخصوص از دسترسی مستقیم کاربر، مسئله باز نگهداشتن طو لانی و بیهوده آن نیز حل می شود.
Spooling: تنها در چاپگر به کار نمی رود ، بلکه در وضعیت های دیگری نیز استفاده می شود . برای مثال ، انتقال فایل از طریق یک شبکه معمولاً توسط یک شبح شبکه ای انجام می شود .برای ارسال فایل به مقصد ی مشخص ، کاربر آن را در فهرست Spooling شبکه قرار می دهد. سپس شبح شبکه آن را خارج ساخته و منتقل می کند.
نکته:
یک کاربرد و استفاده ویژه از انتقال فایل Spool شده ، سیستم پست الکترونیکی (Email) اینترنت می باشد. این شبکه شامل میلیونها ماشین در سراسر جهان است که با استفاده از شبکه های کامیوتری با یکدیگر ارتباط بر قار می کنند. برای ارسال Mail به شخصی ، باید برنامه ای مانند را صدا بزنید که نامه را جهت ارسال شدن می پذیرد و سپس آن را به صورت امانت در فهرست Spooling قرار می دهد تا بعداً ار سال شود. تمام سیستم Mail در خارج از سیستم عامل اجرا می شود
Spooling در تمام سیستم عامل ها قابل استفاده است.
حال وقت آن است كه در سيستم عامل خود تنظيماتي را انجام دهيد تا كامپيوتر شما بتواند جستجو براي كامپيوترهاي ديگر و گفتگو با آنها را آغاز كند.نحوه پيكربندي تنظيمات مربوط به ويندوز در كامپيوتر شما، توسط اين مسأله تعيين ميشود كه آيا در شبكه شما Internet sharing وجود دارد يا خير. در ادامه بر حسب اين مسأله دستورالعملهاي لازم آورده ميشود:Non-Internet Sharing Windows Settingsدر مورد هر كامپيوتر مراحل زير را طي كنيد:1. بر روي آيكن Network Neighborhood بر روي desktop راست كليك كنيد.2. Properties را انتخاب كنيد.3. بر روي Access Control tab كليك كرده و Share level access را انتخاب كنيد.4. Identification tab را انتخاب كنيد.در اينجا ميتوانيد نامي را براي كامپيوتر خود انتخاب كنيد.5. Configuration tab را انتخاب كنيد. از Primary Network Logon، Client for Microsoft Networks را انتخاب كنيد.6. سپس يك آدرس IP را به كامپيوتر اختصاص دهيد، مثلاً 192.168.O.X. X در هر كامپيوتر منحصر به فرد است و عددي بين 1 تا 254 ميباشد. در اين قسمت عدد Subnet mask را، 255.255.255.0 بنويسيد.Internet Sharing Windows Settingدر مورد هر كامپيوتر مراحل زير را اجرا كنيد:- در Control Panel، بر روي آيكن Add/Remove Program دو بار كليك كنيد. بر روي Windows setup tab كليك كنيد.- پس از گذشت چند لحظه از ليست اجزاء، Internet tools را انتخاب كنيد.- سپس Internet Connection Sharing را انتخاب كنيد.- در اينجا CD مربوط به ويندوز مورد نياز است. آنگاه Internet Connection Sharing Wizard اجرا ميگردد كه پس از پايان آن، كامپيوتر را Restart نماييد.- ميتوانيد از فلاپي ديسكي كه در طي مراحل Wizard ايجاد ميكنيد، در مورد كامپيوترهاي ديگر شبكه استفاده كنيد (در منوي Run در هر يك از آنها و پس از گذاشتن فلاپي در كامپيوتر اينگونه تايپ كنيد: a:\icsclset.exe و سپس Enter را فشار دهيد)لازم به ذكر است در صورتيكه بخواهيد شبكه خود را از طريق يك Proxy Server به اينترنت متصل كنيد ميبايست آن را خريداري كرده و تنظيمات مربوطه را انجام دهيد. فراهم كننده خدمات اينترنت (ISP) شما بايد در مورد استفاده از dynamic IP و يا static IP شما را آگاه سازد. در صورت استفاده از static IP، ISP بايد در اختصاص IP به شما كمك كند.
در ارتباطاتinfrared (مادون قرمز) از فركانسهاي بالا دقيقا زير طيف نور مرئي- استفاده ميشود. در اين روش سيگنالها نميتوانند از اشياء و ديوارها عبور كنند. اين امر بكارگيري تكنولوژي مادون قرمز را محدود ميسازد. در فناوري مادون قرمز ارسال كننده و دريافت كننده بايد يكديگر را ببينند(در خط ديد يكديگر باشند) همانند يك كنترل كننده راه دور دستگاه تلويزيون. بطور كلي در ارتباطات داخل ساختمان كه فاصله ايستگاهها كم باشد از اين روش استفاده ميشود. در اينجا بجاي سيم يا فيبر نوري كه رسانههاي انتقال هستند، از امواج راديويي يا نور مادون قرمز بعنوان رسانه انتقال استفاده ميشود. امواج راديويي بخاطر برد، پهناي باند و پوشش مكاني بيشتر، از نور مادون قرمز كاربرد بيشتري دارند
سيستمهاي كنترل از راه دور كه در وسايلي چون تلويزيون و استريوها به كار ميروند با انتقال زير قرمز كار ميكنند. زيرقرمز به يك محيط كوچك محدود ميشود (مثلا يك اتاق) و معمولاً نياز دارد فرستنده در جهت گيرنده باشد. سخت افزار زير قرمز در مقايسه با مكانيسمهاي ديگر ارزانتر است و به آنتن نيازي ندارد.
شبكههاي كامپيوتري ميتوانند براي انتقال دادهها از تكنولوژي مادون قرمز استفاده كنند. مثلاً يك اتاق بزرگ ميتواند به يك ارتباط زير قرمز مجهز شود و دسترسي به شبكه براي تمام كامپيوترهاي اطاق امكانپذير شود. كامپيوترها ميتوانند هنگام جابجا شدن در اتاق ارتباط خود را با شبكه حفظ نمايند. شبكههاي مادون قرمز خصوصاً براي كامپيوترهاي قابل حمل مناسباند. زيرا مادون قرمز امكان ارتباط بيسيم را بدون نياز به آنتن فراهم ميكند. بنابراين همهي سختافزار ارتباطي ميتواند در يك كامپيوتر قابل حمل كه از زير قرمز استفاده ميكند، قرار گيرد.
| اسلحه های 1 - اسلحه برای آدم کشی | LXGIWYL |
| اسلحه های 2 - ابزار حرفه ای | KJKSZPJ |
| اسلحه های 3 - ابزار نمیدونم چی چی؟ | UZUMYMW |
| سلامتی و ضد گلوله و 250K$ | HESOYAM |
| اضافه کردن دو ستاره برای وقتی که پلیسها میخوان بگیرنت! | OSRBLHH |
| دیگه پلیسها دست از سرت برمیدارن | ASNAEB |
| تیرهات تمومی ندارن، درضمن لازم نیست پرشون کنی! | WANRLTW |
| داشتن اسلحه کامل به هنگام رانندگی | OUIQDMW |
| پرش میلیونی! | LFGMHAL |
| مشروب (منگنه) میلیونی! | IAVENJQ |
| سلامتت تمومی نداره!! | BAGUVIX |
| اکسیژنت پایانی نداره!! | CVWKXAM |
| هیچوقت پلیسها به دنبالت نمیزارن! | AEZAKMI |
| شش تا ستاره واسه اینکه پلیسها بگیرنت! (هر ستاره معرف یک نو نیروی پلیسی هست مثلا اگه ستاره ها زیاد باشه، حتی پلیسهای دریایی و هوایی هم میزارن دنبالت تا ...!) | LJSPQK |
| هیچوقت گرسنه ات نمیشه! | AEDUWNV |
| موقعیت تمام اسلحه هات بصورت Hitman ایی میشه! | NCSGDAG |
| موقعیت Skill انواع رانندگی رو ماگزیمم میکنه! | VQIMAHA |
| هیکلت رو تا آخر میبره! | JYSDSOD |
| لاغر و پوستی و استخوانی | KVGYZQK |
| چاق!! (اگر خواستی که بعد از انجام این کد، لاغر شی، باید بری بدن سازی کنی) | BTCDBCB |
| یه اعانه رو سرت میزاره | BAGOWPG |
| آهنربای زنان هرزه!!! (شرمنده، ترجمه اش همین بود) | BEKKNQV |
| نوع غده ی فشار خونی! | MUNASEF |
| جذبه رو تا آخر میبره. | EHIBXQS |
| احترامش رو تا آخر میبره. | OGXSDAG |
| هر شخص سرباز مانند (9mm) | SJMAHPE |
| هر شخص سرباز مانند (موشک) | ZSOXFSQ |
| خودکشی!!!!!!!!!!!!! | SZCMAWO |
در اين مثال با استفاده از مجموعه Server Variables وابسته به شی Request، نوع مرورگر، سيستم عامل و IP ملاقات كننده سايت تشخيص داده می شود. ( در مثال می توان برخی از مقايسه ها را در صورت ضرورت حذف نمود و برنامه را برای موارد خاص نوشت)
<%
ua = Request.ServerVariables("HTTP_USER_AGENT")
os = Request.ServerVariables("HTTP_UA_OS")
If Instr(ua, "MSIE") Then
If Instr(ua, "MSIE 5.") Then
Browser = "Microsoft Internet Explorer 5.x"
Else
if Instr(ua, "MSIE 4.") Then
Browser = "Microsoft Internet Explorer 4.x"
Elseif Instr(ua, "MSIE 3.") Then
Browser = "Microsoft Internet Explorer 3.x"
If Instr(ua, "MSIE 3.02") Then
Browser = "Microsoft Internet Explorer 3.02"
End If
Else
Browser = "Microsoft Internet Explorer"
End If
ElseIf Instr(ua, "Mozilla") and Instr(ua, "compatible") = 0 Then
If Instr(ua, "Mozilla/4") Then
Browser = "Netscape Navigator 4.x"
Elseif Instr(ua, "Mozilla/3") Then
Browser = "Netscape Navigator 3.x"
Else
Browser = "Netscape Navigator"
End If
End If
If Instr(ua, "Windows 95") or Instr(ua, "Win95") Then
System = "Windows 95"
Elseif Instr(ua, "Windows 98") or Instr(ua, "Win98") Then
System = "Windows 98"
Elseif Instr(ua, "Windows 3.1") or Instr(os, "Win16") Then
System = "Windows 3.x/Windows NT 3.x"
Elseif Instr(ua, "NT") or Instr(ua, "NT") Then
System = "Windows NT"
Elseif Instr(ua, "Mac") Then
System = "Mac"
If Instr(ua, "PowerPC") or Instr(ua, "PPC") Then
System = "Mac PPC"
Elseif Instr(ua, "68000") or Instr(ua, "68K") Then
System = "Mac 68K"
End If
Elseif Instr(ua, "X11") Then
System = "UNIX"
End If
%>
You are using <%=Browser%><br>
You are using : <%=System%> operating system<br>
Your IP is: <%=Request.ServerVariables("Remote_Addr")%>
در فايل Global.asa، می توان اسكريپت هائی را تعريف نمود كه همزمان با بروز يك رويداد ( Event ) فعال شده و يا اقدام به تعريف اشياء Session و Application نمود. امكانات تعريف شده در فايل فوق برای تمامی صفحات تشكيل دهنده يك برنامه ASP قابل دستيابی و استفاده خواهند بود. ضرورت وجود فايل فوق اختياری بوده و در صورت تعريف می بايست در فهرست ريشه ای كه برنامه ASP در آن قرار دارد، استقرار يابد. هر برنامه ASP صرفا می تواند دارای يك فايل Global.asa باشد.
رويدادهای استاندارد در فايل Global.asa
در فايل فوق می توان به اشياء Application و Session گفت كه در زمان آغاز و خاتمه عمليات مربوط به خود چه كارهائی را انجام دهند. در مجموع در فايل فوق چهار نوع رويداد را می توان قرار داد :
• Application_OnStart: رويداد فوق زمانيكه اولين كاربر به اولين صفحه يك برنامه ASP دستيابی پيدا می كند، فعال می گردد.
• Session_OnStart: رويداد فوق هر دفعه كه يك كاربر جديد درخواست اولين صفحه يك برنامه ASP را داشته باشد، فعال می گردد.
• Session_OnEnd: رويداد فوق هر بار كه كاربری به جلسه كاری خود خاتمه می دهد فعال می گردد. در صورتيكه در يك مدت زمان مشخص و محدود ( پيش فرض بيست دقيقه ) در خواست صفحه ای توسط كاربر واصل نگردد، به جلسه كاری وی خاتمه داد می شود.
• Application_OnEnd: رويداد فوق پس از اينكه آخرين كاربر به كار خود خاتمه می دهد، فعال می گردد. معمولا رويداد فوق زمانيكه سرويس دهنده وب متوقف می گردد نيز فعال می گردد.
برای هر يك از رويدادهای فوق می توان روال هائی را نوشت كه مسئول برخورد با رويداد مربوطه باشند. اين روال ها درفايل Global.asa قرار می گيرند. چهارچوب كلی فايل فوق كه متضمن خواسته های چهارگانه فوق باشد می تواند بصورت زير باشد:
<script language="vbscript" runat="server">
sub Application_OnStart
. . .
end sub
sub Application_OnEnd
. . .
end sub
sub Session_OnStart
. . .
end sub
sub Session_OnEnd
. . .
end sub
سال نو را به همه شما عزیزان تبریک می گویم آرزوی سالی با نشاط برای همه شما
این اشکال مربوط میشه به activative نبودن connection تو لینوکس.
برای active کردنش باید برین تو menu/system tools/internet configuration wizard
از لیست سمت چپ نوع اتصالتون رو مشخص کنید. که من modem connection رو انتخاب کردم.
وقتی زدین ممکنه پیام بیاد که مودم شما شناسایی نشده که زیاد مهم نیست.
اگه قبلا این قسمت رو تنظیم کردین نیازی به تغییر نیست وForward رو بزنید.
تو این قسمت مشخصات accountaconteton رو واردکنید و واسه connection تون یه اسم در نظر بگیرید و forward رو بزنید.
این قسمت مربوط به این هست که به شما چه ip اختصاص داده بشه که خودش به طور پیش فرض روauto هست.
forward رو بزنید به قسمت بعد برید.
تو این قسمت مشخصاتی که وارد کردین رو به شما نشون میده و اگه صحیح بود رو بزنید.
حالا باید به طور اتوماتیک پنجره configuration device بیاد و شما باید connectionکه ساختین رو اکتیو کنید.
اگه این پنجره نیومد شما میتونین از menu/system tools/network device controlرو اجرا کنین و از اونجا connection رو active کنید.
Dim ObjConn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; DataSource=e:\db\users.mdb")
که قسمت DataSource آدرس فايل پايگاه داده است که در اينجا يک بانک Access است. همانگونه که ملاحظه می کنيد از رشته ارتباطی يا Connection String بعنوان پارامتر استفاده شده است و بوسيله متد Open ارتباط باز می شود:
objConn.Open()
لازم به توضيح است که در پايان کار بوسيله متد Close ارتباط را خاتمه می دهيم.
بمحض ارتباط با پايگاه داده می توان دستورات را به آن فرستاد. اين کار معمولا بوسيله شی OleDbCommand انجام می شود. جهت انجام اين کار می توان يک دستور SQL يا نام يک روال ذخيره شده (Stored Procedure) را مشخص نمود و بنا به مقتضيات می توان اعمال مختلفی را روی پايگاه پياده نمود:
Dim objCommand As New OleDbCommand ( "Select * From users", objConn )
ملاحظه می کنيد که کلاس Command از دو پارامتر رشته SQL و نام رشته ارتباطی برای فرستادن دستورات به پايگاه داده استفاده می کند. برای مثال آنچه را که در عبارت فوق ديديد می توان به بخشهای کوچکتر زير تقسيم کرد.
ابتدا تعريف شي:
Dim objCommand As New OleDbCommand()
سپس نسبت دادن آن به رشته ارتباطی جهت برقراری ارتباط پايگاه:
objCommand.Connection= objConn
مشخص کردن عمليات مورد نظر بوسيله دستورات SQL:
objCommand.CommandText="Select * From Users"


