چند نكته JavaScript
mojtaba
@
۱۰ تير ۱۳۸۵-۱۲:۳۱
چند وقته روي يك برنامه تحت وب كار مي كنم كه تقريباً بايد همه كارها توش Client Side انجام بشه و در نتيجه تا دلتون بخواهد از عنصر نامأنوس و احمقانه JavaScript بهره بردم. اما خوب اين سر و كله زدن باعث شد بتونم اين پست رو بدارم و چند تا نكته كه قبلاً نديده بودم را بگم شايد شما هم ندونيد و ياد بگيريد :
1- براي دريافت اينكه event درحال انجام از طريق چه tag اي ارسال شده مي تونيد از event.srcElement.tagName استفاده كنيد : مثلاً :
if (event.srcElement.tagName=='TD'){
event.srcElement.style.color='yellow';
}
نمونه خيلي جالب استفاده از اين دستور را مي تونيد
اينجا ببينيد.
2- دو متد در آرايه ها هم وجود داره كه شايد خيلي پر كاربرد باشند. اول push كه براي ريختن اطلاعات در يك عضو از آرايه استفاده مي شه.
و دومي ([ Array.splice(index, howMany, [element1][, ..., elementN كه هم براي اضافه كردن و هم براي حذف كردن اعضاء استفاده مي شه . به اين صورت كه index اي را كه مي خواهيد عضوي را در آن اضافه يا عضوي را از آن حذف كنيد را نوشته و در howMany تعداد عضوي از آن را كه بايد حذف شود مي نويسيد. در مواقعي كه قصد افزودن به آرايه را داشته باشيد اين مقدار را صفر وارد كنيد. و بعد اعضاي جديدي را كه مي خواهيد به آرايه اضافه شوند را به ترتيب بنويسيد. همچنين در صورت حذف اعضاء مقدار بازگشتي متد اعضاي حذف شده مي باشند. مثلاً :
Code:
cars = ["Mercedes", "Ford", "Chrysler", "Honda", "Volvo"]
removed_cars=cars.splice(1,2);
document.write(removed_cars + "
") ;
document.write(cars);
Output:
Ford,Chrysler
Mercedes,Honda,Volvo
Code:
cars = ["Mercedes", "Ford", "Chrysler", "Honda", "Volvo"]
cars.splice(1, 0, "Citreon") ;
document.write(cars) ;
Output:
Mercedes,Citreon,Ford,Chrysler,Honda,Volvo
عروسي
mojtaba
@
۳۰ فروردين ۱۳۸۵-۱۰:۴۰
اگه خدا بخواهد و مشكل پيش نياد، پنچشنبه آينده 7/2/1385 مراسم عروسي اينجانب برگزار مي شه. محل عروسي هم شهر جهرم تو استان فارس است. از همين جا همه دوستان را به شركت در اين جشن دعوت مي كنم. (البته چون مي دونم كسي نمي آيد!!!) التماس دعاي شديد خدمت كليه دوستان دارم.
Kelk 2000
mojtaba
@
۲۳ فروردين ۱۳۸۵-۱۵:۳۰
چند روزي بود كه دنبال برنامه كرك شده Kelk 2000 مي گشتم. تا اينكه ديروز از يك سايت عربي دانلود كردم. ظاهرا شركت
سينا پردازش، تهيه كننده برنامه اون رو به قيمت 140.000 تومان به فروش مي رسونه. كه البته نوش جونشون چون خيلي زحمت كشيدن. ولي ما بيچاره ها كه از اين پول ها نداريم و عشق خط هم داريم مجبوريم كرك شده اش رو پيدا كنيم . در هر صورت براي اين شركت مفخم آرزوي بهروزي و فروش فراوان محصول را دارم.
سال نو مبارك
mojtaba
@
۲۵ اسفند ۱۳۸۴-۱۲:۱۶
به همه دوستان سال نو را تبريك مي گم و اميدوارم سال خوب و پر از موفقيتي را پيش رو داشته باشين. اگه خدا بخواد از امروز تا آخر تعطيلات در حال سفر به دور ايرانم.
دست حق به همراهتون
تبديل تاريخ ميلادي به شمسي در SQL
mojtaba
@
۱۳ اسفند ۱۳۸۴-۱۵:۳۹
امروز از درد مجبوري براي اينكه با CrystalReport مي خواستم كار كنم مجبور شدم يه تابع در SQL بنويسم كه يه تاريخ ميلادي بگيره و يه متن شامل تاريخ شمسي برگردونه .
يه خورده خر كاريه اما در بعضي جاها مثل نمايش اطلاعات در گزارشهاي CrystalReport خيلي به كار مياد. اميدوارم به كارتون بياد. در ضمن اگه دوستان در Debug اون بهم كمك كنند كلي دعاگوشون مي شم.فايل متن اون رو ميتونيد از
اينجا بگيريد
شام مهتاب
mojtaba
@
۸ اسفند ۱۳۸۴-۱۲:۴۶
|
تو اون شام مهتاب کنارم نشستی
قلم زد نگاهت به نقش آفرینی
پریزاد عشق رو مهاسا کشیدی
تو دونسته بودی چه خوش باورم من
تا گفتم کی هستی تو گفتی یه بیتاب
قسم خوردی بر ما که عاشق ترینی
همون لحظه ابری رخ ماه رو آشفت
گذشت روزگاری از اون لحظه ی ناب
در اون درگه عشق چه مهتاج نشستم
تو از این شکستن خبر داری یا نه
تو دونسته بودی چه خوش باورم من
تا گفتم کی هستی تو گفتی یه بیتاب
قسم خوردی بر ما که عاشق ترینی
همون لحظه ابری رخ ماه رو آشفت
هنوزم توی شبهات اگه ماه رو داری
هنوزم توی شبهات اگه ماه رو داری
|
عجب شاخه گل وار به پایم شکستی
که صورتگری را نبود این چنینی
خدا را به شور تماشا کشیدی
شکفتی و گفتی که از عشق پرپرم من
تا گفتم دلت کو تو گفتی که دریاب
تو یک جمع عاشق تو صادق ترینی به خود گفتم ای وای مبادا دروغ گفت
که معراج دل بود به درگاه مهتاب
تو هر شام مهتاب به یادت شکستم
هنوز شور عشق رو به سر داری یا نه
شکفتی و گفتی از عشق پرپرم من
تا گفتم دلت کو تو گفتی که دریاب
تو یک جمع عاشق تو صادق ترینی به خود گفتم ای وای مبادا دروغ گفت
من اون ماه رو دادم به تو یا دگاری
من اون ماه رو دادم به تو یادگاری
|
دعاي خير
mojtaba
@
۱۷ بهمن ۱۳۸۴-۱۰:۵۲
ايام شهادت امام حسين (ع) را به همه تسليت عرض مي كنم. و از همه دوستان التماس دعا دارم. ما را فراموش نكنيد.
چو از اين كوير وحشت به سلامتي گذشتي
به بنفشه ها به باران برسان سلام ما را
التماس دعا
mojtaba
@
۱ بهمن ۱۳۸۴-۱۱:۳۱
متأسفانه يا خوشبختانه دوستان تهراني كه مي بينند، چه برفي مياد . من هم بايد امروز نزديك 15 ساعت مسافرت كنم . از تهران به جهرم. اصلاً از اين وضع هوا خوشم نمياد. خدا بهم رحم كنه. تا اصفهان خبري نيست چون يه تكه اتوبانه ، اما از اصفهان تا شيراز رو خدا به خير بگذرونه...
فسیل
mojtaba
@
۲۶ دي ۱۳۸۴-0۰:۴۶
تازه این یکی دو روزه فهمیده ام که واقعاً فسیل شده ام. دیگه حوصله سابق رو ندارم. زود خسته می شوم، هوب دیگه اگه پرگاز شروع کنی زود هم بنزین تمام می کنی.....
به کجا چنین شتابان؟
mojtaba
@
۲۵ دي ۱۳۸۴-۲۱:۵۱
به کجا چنین شتابان؟ گون از نسیم پرسید
دل من گرفته زینجا , هوس سفر نداری؟
ز غبار این بیابان؟
همه آرزویم اما.... چه کنم که بسته پایم....
به کجا چنین شتابان؟
به هر آن کجا که باشد بجز این سرا سرایم
سفرت به خیر اما تو و دوستی خدا را
چو از این کویر وحشت به سلامتی گذشتی, به شکوفه ها به باران
برسان سلام ما را.
Extended Porperty
mojtaba
@
۲۵ دي ۱۳۸۴-۲۱:۲۴
دیروز برای کامنت گذاری کدهای برنامه جدیدمون به Description فیلدهای دیتابیس احتیاج پیدا کردیم.کلی گشتم ولی هیچ نوع تابع توکاری برای گرفتن این گزینه پیدا نکردم. تا اینکه بهنام کشف کرد که این خصیصه جزو Extended Properties است. این نوع خصیصه ها برای هر فیلد تا 32 مورد (تا اونجایی که تو ذهنم است) تعریف می شوند. می توانید با هر نام و مقدار دلخواه آنها را ست نمایید. برای ست کردن آنها از Query Analyzer کافی است روی فیلد مورد نظرتان کلیک راست کرده و گزینه ExtendedProperties را انتخاب نمایید. سپس مقادیر جدید یا موجود را ست نمایید.
برای دسترسی به این خصایص چند تابع توکار SQL وجود دارد که در بخش پایین براتون می نویسم.
اضافه کردن :
sp_addextendedproperty [ name ] , [ value ] , [ level0type ] , [ level0nam ] , [ level1type ] , [ level1name] , [ level2type ] , [ level2name ] , [ level2type]
مثال :
EXEC sp_addextendedproperty 'caption' , 'Employee ID' , 'user' , 'dbo' , 'table' , 'T1' , 'column' , 'id'
به روزرسانی :
sp_updateextendedproperty [ name ] , [ value ] , [ level0type ] , [ level0nam ] ,[ level1type ] , [ level1name] , [ level2name ] , [ level2type ] , [ level2type ]
حذف :
sp_dropextendedproperty [ name ] , [ level0type ] , [ level0name ] ,[ level1type ] , [ level1name] , [ level2type ] , [ level2name ] , [ level2type ]
برای گرفتن مقدار یک خصیصه هم از تابع زیر استفاده کنید :
FN_LISTEXTENDEDPROPERTY ( [ name ] , [ level0type ] , [ level0name ] ,[ level1type ] , [ level1name] , [ level2type ] , [ level2name ] , [ level2type ] )
مثال :
SELECT [value] FROM ::FN_LISTEXTENDEDPROPERTY( 'Caption' , 'User' , 'dbo' , 'table' , 'TestExProp' , 'culomn' , 'id')
توجه داشته باشید اگر مقدار Description فیلد خاصی از جدولتان را احتیاج دارید به جای نام در توابع بالا MS_Description قرار دهید.
Open Object Database
mojtaba
@
۱۸ دي ۱۳۸۴-۱۴:۳۰
خوب اگه خدا بخواهد، ديشب ساعت 4 صبح ديتابيس و كنترل پنل مربوط به اون تموم شد. اين برنامه هرنوع Object را بدون در نظر گرفتن تعداد و نوع فيلدهاي آن در ديتابيس قرار مي دهد و مي توانيد به آن ديتا اضافه و كم نماييد. توي اين ديتابيس جدول اضافه و كم نمي شه، بلكه جدول ها طوري طراحي شده اند كه هر نوع Object را در خود جاي دهند. ان شاء الله وقتي كامل شد يه مقاله خوب ازش همينجا مي گذاريم.
من اينجا بس دلم تنگ است
mojtaba
@
۱۲ دي ۱۳۸۴-۲۱:۳۴
بي تو مهتاب شبي باز از آن كوچه گذشتم
همه تن چشم شدم خيره به دنيال تو گشتم
شوق ديدار تو لبريز شد از جام وجودم
شدم ان عاشق ديوانه كه بودم ...
سالهاست كه منتظرم ...... سالهاست كه قول داده ام .....
EXPORT DATA
mojtaba
@
۱۲ دي ۱۳۸۴-۱۵:۲۹
اين مرتضي بعضي وقتا سوال هاي خوبي مي پرسه. حيفم اومد جوابش را براي بقيه هم ننويسم. معمولاً براي پشتيبان گيري از ديتابيس بايد از دستور BACKUP استفاده كرد. ولي بعضي جاها كاربرد نداره. چون ما فقط اطلاعات يك جدول را احتياج داريم. اونم در يك پايگاه ديگه. مثلاً شما احتياج داريد از جدول اخبار سايتتان هر روز بر روي يك سرور Local پشتيبان بگيريد. چكار مي كنيد؟؟؟؟؟
يه راه ساده داره، راههاي ديگه هم داره كه كاريشون نداريم. مي تونيد يك INSERT چندگانه با استفاده از SELECT انجام بدهيد. اما قبل از اون بايد يه كار انجام بديد. اگر احياناً فيلد Identity داريد، بايد اجازه ورود اطلاعات در آن را بدهيد. يعني خصيصه IDENTITY_INSERT را براي جدول اخبار فعال كنيد. همچنين يادتون باشه كه :
1) بايد با كاربرتان به هر دو ديتابيس دسترسي داشته باشيد.
2) بايد ليست فيلدها را بنويسيد، از * نمي شه استفاده كرد.
3) آدرس جداول را بايد به طور كامل بدهيد
[Host Name].[Database Name].[Owner].[TableName]
4) خصيصه IDENTITY_INSERT را بلافاصله بعد از تمام شدن كپي ydv فعال كنيد
نمونه كدهاش را پايين مي بينيد :
SET IDENTITY_INSERT Localhost.test.dbo.News
ONGO
INSERT INTO Localhost.test.dbo.News ( [ID], [Title], [Body])
SELECT [ID], [Title], [Body]
FROM RemoteHOST.DNE.Mojtaba.News
GO
SET IDENTITY_INSERT Localhost.test.dbo.categories OFF
GO
موفق باشيد.
NULLIF & ISNULL
mojtaba
@
۱۲ دي ۱۳۸۴-۱۱:۱۰
يه مطلب كوچك و جالب از به كارگيري دستورات داخلي SQL امروز به ذهنم رسيد ديدم بد نيست بگم. در طراحي جدول ها هميشه اين اصول را رعايت كنيد :
1)تمامي فيلدها را Not Null كنيد.
2)براي تمامي فيلدها مقدار پيش فرض تعيين كنيد.
خوب با اين كار خيلي از مسائل و مشكلات مربوط به Null حل مي شه. اما يه مشكل جديد پيش مياد!!!!! اونم اين كه اگه جايي بخواهيد از فيلدهايي كه وارد شده آمار بگيريد، به مشكل برمي خوريد.مثلاً در يك جدول شما اطلاعات مشتريان خود را نگه مي داريد و مي خواهيد بفهميد كه ميانگين سن مشتريان شما چقدر است. از اونجا كه شما براي همه فيلدها مقدار پيش فرض تعيين كرده ايد بنابراين همه ركوردها داراي مقدار هستند، هر كس اين فيلد را وارد نكرده باشد، مقدار مثلاً صفر(صفر مقدار پيش فرض است) در فيلد ثبت شده است. و در نتيجه ميانگين سن اشتباه به دست مي آيد. بايد به وسيله اي مقادير صفر را حذف كنيم.
راه حل استفاده از تابع توكار ( NULLIF ( expression1 , expression2 مي باشد.اين تابع، مقدار دلخواه شما رو با NULL عوض مي كنه. expression1 نام فيلد يا تابع يا ... است كه مي خواهيد از لحاظ مقدار چك شود و expression2 مقدار مورد نظر (مقدار پيش فرض فيلد) است. مثلاً در مثال فوق((Avg( NULLIF([Age],0 مقادير صفر را با Nullعوض مي كند در نتيجه در تابع AVG حساب نمي شوند.
يك تابع هم داريم كه عكس اين تابع عمل مي كنه اونم ( ISNULL ( expression1 , expression2 .اين تابع مفادير Null را به مقدار دلخواه شما تغيير مي ده. expression1 نام فيلد يا تابع يا ... است كه مي خواهيد از لحاظ مقدار چك شود و expression2 مقداري است مي خواهيد با Null جايگزين بشه.
سال نوي ميلادي مبارك
mojtaba
@
۱۱ دي ۱۳۸۴-۱۱:0۵
سال نوي ميلادي را به همه تبريك مي گم . ان شاء الله كه سالي پر رونق و پر از موفقيت براي همه تون باشه. اين چند روزه با يك برنامه جديد، سر و كله مي زنيم (همراه اوستا) . بعد از مدتها واقعاً هيجان انگيز شده . يك ديتا بيس كاملا شناور بدون هيچ نوع محدوديت . البته يه جورايي دردسرهاي خاص خودش رو داره ولي مي شه گفت واقعاً معركه است. اگه خدا بخواهد، يك مقاله خوب ازش به كمك بهنام مي گذاريم . فعلاًً دست حق همراهتون.
سلام ما دوباره اومديم!!!!!!
mojtaba
@
۸ دي ۱۳۸۴-۱۹:۱۷
سلام به دوستان عزيز . از اونجا كه اين چند وقته كه تو تهرانم اينترنت تركوندم، تصميم گرفتم دوباره يه مطالبي بنويسم.
فعلاً يا علي.