قسمت اول css – اصول اولیه

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

توسطعثمان رحیمینظرات0بازدید ها 16801088 روز قبل ، دوشنبه 3 شهریور 1393 ساعت 05:37

موقعیت عناصر در یک فایل html و روابط بین آنها

امروزه دانستن css برای هر برنامه نویس و طراح وب لازم و ضروری می باشد ،مهمترین قسمت در css نحوه انتخاب کردن عناصری است که قصد دارید خصوصیاتی را روی آنها اعمال کنید قبل از شروع به بحث انتخاب کننده لازم است به روابط عناصر یک صفحه آشنا باشید .این مقاله قدرت شما را در انتخاب عناصر صفحه در css قوی کرده و دید شما را نسبت به css گسترش می دهد .

توسطعثمان رحیمینظرات0بازدید ها 16681088 روز قبل ، دوشنبه 3 شهریور 1393 ساعت 05:42

جدا کردن 3 رقم 3 رقم اعداد جهت نمایش مقادیر پولی

یکی از نیاز هایی که شاید در پروژه هایمان به آن نیاز داشته باشیم ، نمایش ریالی مقادیری پولی می باشد . در این مقاله می توانید با تابعی که این کار را  انجام میدهد آشنا شوید .

توسطعثمان رحیمینظرات0بازدید ها 40091088 روز قبل ، دوشنبه 3 شهریور 1393 ساعت 00:23

دانلود فایل از اینترنت در سی شارپ

در این مقاله قصد داریم بپردازیم به چگونگی دانلود فایل هایی که بروی اینترنت قرار دارند . روشی آسان برای دانلود فایل از اینترنت استفاده از کتابخانه .Net می باشد . برای یادگیری این مطلب به ادامه مطلب بروید. + پروژه

توسطعثمان رحیمینظرات0بازدید ها 17451087 روز قبل ، سه شنبه 4 شهریور 1393 ساعت 05:54

گرفتن اسم تمام متدهای یک کلاس و خاصیت های آن توسط کتابخانه Reflection

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

توسطعثمان رحیمینظرات0بازدید ها 14331087 روز قبل ، سه شنبه 4 شهریور 1393 ساعت 10:49

استفاده از فونت دلخواه در css

تا قبل از css3 استفاده از فونت های به جز فونت های نصب شده در سیستم عامل برای طراحان وب امکان پذیر نبود .طراحان مجبور بودند از فونت هایی استفاده کنند که در همه سیستم عامل ها یافت می شود که در سایت های فارسی بیشتر از فونت های arial و  Tahoma استفاده می کردند .

توسطعثمان رحیمینظرات0بازدید ها 19751087 روز قبل ، سه شنبه 4 شهریور 1393 ساعت 05:44

CSS Image Sprites

 یکی از موارد طولانی بودن زمان لود یک صفحه وب تعداد عکس های موجود در صفحه می باشد ، برای نمایش هر عکس یک درخواست به سمت سرور فرستاده می شود  با استفاده از Css Sprites می توانیم تعداد دفعات درخواست های فرستاده شده به سمت سرور را برای نمایش عکس های صفحه کاهش دهیم .

توسطعثمان رحیمینظرات0بازدید ها 7181087 روز قبل ، سه شنبه 4 شهریور 1393 ساعت 05:45

چگونه از css استفاده کنیم ؟

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

توسطعثمان رحیمینظرات0بازدید ها 16111087 روز قبل ، سه شنبه 4 شهریور 1393 ساعت 05:52

انتخابگرها در css- قسمت اول

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

توسطعثمان رحیمینظرات0بازدید ها 17601087 روز قبل ، سه شنبه 4 شهریور 1393 ساعت 13:21

تبدیل تاریخ میلادی به شمسی توسط کلاس PersianCalendar

تبدیل تاریخ میلادی به شمسی  یک از نیاز هایی است که در اکثر پروژه ها  به آن نیاز خواهیم داشت  به همین دلیل تصمیم گرفتم تبدیل این تاریخ رو توسط کلاس PersianCalendar  در اختیار دوستان بزارم .

 

توسطعثمان رحیمینظرات1بازدید ها 28001086 روز قبل ، سه شنبه 4 شهریور 1393 ساعت 16:03

انتخابگرهای شبه کلاس (pseudo classes)

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

توسطعثمان رحیمینظرات0بازدید ها 15991087 روز قبل ، سه شنبه 4 شهریور 1393 ساعت 05:50

انتخاب کننده ها در css - بخش دوم

در این بخش شما با انتخابگرهای ترکیب کننده آشنا خواهید شد و با یادگیری آن قدرت شما در انتخاب عناصر بیشتر میشود و راحتر می توانید عناصر مورد نظر خود را انتخاب نمایید.

توسطعثمان رحیمینظرات0بازدید ها 20341087 روز قبل ، سه شنبه 4 شهریور 1393 ساعت 05:49

حدف تمام فایل های یک پوشه

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

توسطعثمان رحیمینظرات0بازدید ها 15061087 روز قبل ، سه شنبه 4 شهریور 1393 ساعت 05:39

Confing کردن پروژه های Asp.net

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

توسطعثمان رحیمینظرات0بازدید ها 14651086 روز قبل ، سه شنبه 4 شهریور 1393 ساعت 16:16

کوکی ها (Cookies) در ASP.NET

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

برای آشنایی بیشتر با کوکی ها یک مثال که در همه وب سایت ها رایج است را بیان می کنیم . در اکثر وب سایت ها ...

توسطعثمان رحیمینظرات0بازدید ها 29611084 روز قبل ، پنج شنبه 6 شهریور 1393 ساعت 16:23

اعتبار سنجی آدرس ایمیل توسط جاوا اسکریپت

جهت بررسی اعتبار یک آدرس ایمیل هم می توانیم سمت سرور آن را بررسی نماییم و هم سمت کلاینت . 
برای بررسی اعتبار یک آدرس ایمیل  سمت کلاینت می توانیم از جاوا اسکریپت و عبارات با قاعده 
(regular expression) استفاده نماییم . جاوا اسکریپ می تواند آدرس ایمیل داده شده را با الگوی داده شده عبارات با قاعده بررسی نماید .
برای بررسی اعتبار یک آدرس ایمیل الگوی های مختلفی وجود دارد . در این مقاله سعی کرده ام الگو های را بیان کنم که cross browsers می باشند ....

توسطعثمان رحیمینظرات0بازدید ها 29961083 روز قبل ، جمعه 7 شهریور 1393 ساعت 16:21

white-space in CSS

با استفاده از این خاصیت در css  می توان تعیین کرد که فضاهای خالی در هنگام نمایش در مرورگر چگونه تفسیر شوند . در مواقعی که متن های طولانی و بدون < b r > داریم ممکن است باعث بوجود آوردن اسکرول افقی در صفحه شود که این اسکرول افقی  تا حدودی باعث به هم ریختن سایت خواهد شد. با استفاده از خاصیت white-space می توان متن های طولانی را جهت نمایش و تفسیر توسط مرورگر مدیریت کرد...

توسطعثمان رحیمینظرات0بازدید ها 9891 ماه قبل ، دوشنبه 10 شهریور 1393 ساعت 01:45

تبدیل عکس رنگی به GrayScale در ASP.NET

در این مقاله کدهایی را در رابطه با تبدیل عکس رنگی به GrayScale در ASP.NET ارائه خواهیم کرد ...

توسطعثمان رحیمینظرات0بازدید ها 16841 ماه قبل ، یکشنبه 30 شهریور 1393 ساعت 08:24

نمایش تمامی جدول های یک دیتابیس

در صورتی که در SQL SERVER نیاز داشته باشید اسم تمامی جدول های یک دیتابیس رو دریافت کنید می توانید از دستو زیر استفاده کنید :

USE DataBaseName
GO
SELECT TABLE_NAME FROM Information_schema.TABLES;

خروجی دستور فوق بعد از اجرا اسم تمامی جداول موجود در دیتابیس مورد انتخاب شده می باشد . 

توسطعثمان رحیمینظرات0بازدید ها 28841 ماه قبل ، سه شنبه 8 مهر 1393 ساعت 12:09

معرفی کلاس Stopwatch

آیا تا به حال سعی کرده اید مدت زمان لازم برای فایل هایی را که در وب سایت تان آپلود میکنید بررسی کنید ؟

آیا زمان لازم برای اجرا قطعه کدهای مختلف پروژه هایی را که تا حالا نوشته اید می دانید ؟...

توسطعثمان رحیمینظرات0بازدید ها 19112 ماه قبل ، پنج شنبه 10 مهر 1393 ساعت 23:28

فضای نام در دات نت

فضای نام ساختاری است برای دسته بندی و گروه بندی کلاس / ساختار / نوع های شمارشی و...  که به هم مرتبط هستند .
مثلا در NET. تمامی کلاس هایی

توسطعثمان رحیمینظرات0بازدید ها 19352 ماه قبل ، پنج شنبه 17 مهر 1393 ساعت 01:52

جلوگیری از کپی متن در part #1 html

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

توسطعثمان رحیمینظرات0بازدید ها 18162 ماه قبل ، شنبه 19 مهر 1393 ساعت 23:41

پاک کردن مقدار تمام Textbox های یک صفحه در ASP.NET

در بیشتر فرم های یک سایت نیاز است بعد از اتمام کار کاربر با آن فرم مقادیر Textbox ها را خالی کنیم . برای این کار هم می توانید مقادیر تک تک Textbox ها را یکی یکی خالی کنید که طبیعتا کار سخت و ...

توسطعثمان رحیمینظرات0بازدید ها 28682 ماه قبل ، دوشنبه 21 مهر 1393 ساعت 13:52

CSS Reset چیست و تاثیر آن در نمایش وب سایت

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

توسطعثمان رحیمینظرات0بازدید ها 24053 ماه قبل ، دوشنبه 12 آبان 1393 ساعت 00:06

متد های child action در ASP.NET MVC

تمامی اکشن متدهای داخل Controller ها ، قابل فراخوانی از طریق نوار آدرس مرورگر(به صورت مستقیم) یا داخل View ها هستند . در ASP.NET MVC  می توان متد هایی تعریف کرد که دسترسی به آنها از...

توسطعثمان رحیمینظرات2بازدید ها 20423 ماه قبل ، چهارشنبه 14 آبان 1393 ساعت 00:56

تفاوت Stored Procedure و Function در SQL Server

Stored Procedure های اشیایی هستند که در اولین بار کامپایل شده و  فرمت آن ذخیره می شود (کد کامپایل شده) و در دفعات بعدی میتوان آن را فراخوانی کرد و این مورد خود باعث افزایش سرعت اجرای آن می شود . اما Function  ها  در هر بار فراخوانی آنها ، ابتدا کامپیل و اجرا میشوند ...

توسطعثمان رحیمینظرات0بازدید ها 100746 ماه قبل ، دوشنبه 20 بهمن 1393 ساعت 19:59

مرتب سازی داینامیک در linq

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

توسطعثمان رحیمینظرات0بازدید ها 32166 ماه قبل ، جمعه 1 اسفند 1393 ساعت 22:20

تفاوت بین DELETE و TRUNCATE در SQL SERVER

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

توسطعثمان رحیمینظرات0بازدید ها 40145 ماه قبل ، چهارشنبه 20 اسفند 1393 ساعت 16:40

معرفی متدهای LINQ بخش اول

Concat :

همانطور که از نام آن مشخص است ، از  این متد برای ادغام دو مجموعه با هم استفاده می شود که بعد از اعمال این متد می توانیم مجموعه ای داشته باشیم که شامل تمامی اعضای هر دو مجموعه می باشد ...

توسطعثمان رحیمینظرات0بازدید ها 29965 ماه قبل ، سه شنبه 12 اسفند 1393 ساعت 20:21

دریافت لیست پرینترهای موجود در #C

قبل از هر کاری ابتدا می بایست فضای نام زیر را به فرم مورد نظر کنیم :

System.Drawing.Printing

قصد داریم لیست تمامی  پرینترهای موجود را به یک drop down list اضافه نماییم ، برای اینکار ابتدا یک drop down list به فرم پروژه اضافه کرده و با استفاده از دستور زیر اسم تمامی پرینترها را به drop down list اضافه می کنیم .

private void frmMain_Load (object sender, System.EventArgs e)

{

foreach (String printer in PrinterSettings.InstalledPrinters)

{

drpprintersList.Items.Add (printer.ToString());

}

}

 

توسطعثمان رحیمینظرات0بازدید ها 23004 ماه قبل ، چهارشنبه 19 فروردین 1394 ساعت 16:24

معرفی متدهای LINQ بخش دوم

Orderby :

 از این متد برای مرتب کردن هر مجموعه ای به صورت صعودی ، بر اساس عبارت لامبدایی که به آن پاس می دهیم استفاده می شود ...

توسطعثمان رحیمینظرات1بازدید ها 17234 ماه قبل ، پنج شنبه 20 فروردین 1394 ساعت 20:35

ساخت یک GridView با استفاده از Grid.MVC

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

توسطعثمان رحیمینظرات2بازدید ها 24333 ماه قبل ، سه شنبه 15 اردیبهشت 1394 ساعت 02:33

تبدیل استایل Button به استایل Link

جهت تغییر نحوه نمایش Button به صورت لینک و یا متن فقط کافیست اندکی فایل های CSS را برای  Button تغییر داد که به صورت لینک نمایش داده شود . برای تغییر نمایش پیش فرض Button به لینک می توانید از کدهای CSS زیر استفاده نمود :

button {
     background:none!important;
     border:none;
     padding:0!important;
     font: inherit;
     /*border is optional*/
     border-bottom:1px solid #444;
     cursor: pointer;
}

See Demo (on JSfiddle)

 

توسطعثمان رحیمینظرات0بازدید ها 23873 ماه قبل ، پنج شنبه 17 اردیبهشت 1394 ساعت 02:03

بررسی توابع ISNULL,NULLIF,COALESCE در SQL Server

یکی از مواردی که در اکثر دیتابیس ها یافت می شود وجود ستون هایی با مقدار NULL می باشد ، که کار کردن با آنها  نیازمند آشنایی با توابعی می باشد تا بدون هیچ خطایی بتوانیم کوئری هایمان را اجرا کنیم ...

توسطعثمان رحیمینظرات1بازدید ها 42163 ماه قبل ، جمعه 18 اردیبهشت 1394 ساعت 20:49

افزودن آدرس سايت به متن کپي شده

در بیشتر وب سایت ها زمانی که یک متن رو کپی و سپس past می کنیم ، یک آدرس سایت و یا هر متن دیگری به انتهای متن کپی شده ، اضافه خواهد شد . در واقع هدف صاحبان وب سایت ها از این کار رعایت حقوق copy-past می باشد تا کاربر مطلع شود که...

توسطعثمان رحیمینظرات0بازدید ها 20513 ماه قبل ، جمعه 1 خرداد 1394 ساعت 20:25

Html Helper ی برای تولید تگ br

در مواقعی ممکن است نیاز داشته باشیم چندین تگ <br> تولید کنیم و برای اینکار باید چندین بار این تگ را پشت سر هم بنویسیم . قطعه کد زیر html helper ی می باشد برای تولید تگ <br> به تعداد مورد نظر  . متد استاتیک زیر پارامتری را از ورودی دریافت کرده و به تعداد آن تگ <br> تولید می کند و در نهایت رشته مورد نظر را بر می گرداند .

 public static MvcHtmlString BreakLine(this HtmlHelper helper,int count)
        {
            StringBuilder output = new StringBuilder();
            output.Append("<br/>");
            for (int i = 1 ; i < count; i++)
            {
                output.Append("<br/>");
            }
            return MvcHtmlString.Create(output.ToString());
        }

 برای فراخوانی آن در داخل View به صورت زیر عمل خواهیم کرد . در صورتی که فقط می خواهید یک تگ <br> تولید نمایید پارامتر ورودی را یک قرار دهید :

<p>this is  @Html.BreakLine(2)  a test text </p>

توسطعثمان رحیمینظرات0بازدید ها 21842 ماه قبل ، سه شنبه 12 خرداد 1394 ساعت 00:12

استفاده از If درون تگ های html با Razor

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

<div class='comment @(!item.state?"unread":"")'>

 

توسطعثمان رحیمینظرات0بازدید ها 20092 ماه قبل ، جمعه 5 تیر 1394 ساعت 21:53

بررسی Attribute های AllowHtml و ValidationInput

ASP.NET MVC به طور پیش فرض از پذیرش model هایی که دارای تگ های html هستند اجتناب میکند و دلیل این کار هم جلوگیری از حملات هکر ها از طریق XSS می باشد .  اگر View یی که حاوی کدهای Html می باشد را به سمت Controller ارسال کنیم با...

توسطعثمان رحیمینظرات0بازدید ها 21402 ماه قبل ، شنبه 6 تیر 1394 ساعت 04:11

اعتبارسنجی های سفارشی در ASP.NET MVC

در ASP.NET MVC برای اعتبارسنجی های سمت سرور می توانیم از Data Annotation ها که قابلیت فعال سازی آنها در سمت کلاینت هم امکان پذیری می باشد ، استفاده کنیم . اکثر اوقات Attribute های  فضای نام System.ComponentModel.DataAnnotations پاسخ گوی...

توسطعثمان رحیمینظرات0بازدید ها 19332 ماه قبل ، یکشنبه 3 آبان 1394 ساعت 21:52

تحلیل بخش خصوصیات کالاها به همراه ساختار درختی فروشگاه الکترونیک

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

ولی این ایده گرفتن اکثرا فقط محدود به کپی آیکن ها ، دانلود فونت ها و چیدمان المان های مختلف می باشد . در ادامه قصد داریم با توجه به نحوه کارکرد...

توسطعثمان رحیمینظرات6بازدید ها 31175 ماه قبل ، پنج شنبه 20 اسفند 1394 ساعت 23:40

عمومی سازی Viewbag در تمامی View ها

احتمالا برای شما هم اتفاق افتاده که بخواهید  یک viewbag در تمامی View ها قابل دسترسی باشد . همانطور که می دانید Viewbag فقط در  view مربوط  به  Action ی که در آن ایجاد شده است قابل دسترسی است .به طور مثال اگر بخواهید...

توسطعثمان رحیمینظرات0بازدید ها 1031364 روز قبل ، چهارشنبه 27 مرداد 1395 ساعت 21:40

CodeReviwe - بهینه سازی کدهای مرتبط با افزودن تگ به پست

 جدول های زیر را در نظر بگیرید، که جدوول NewsItem,BlogPost با جدول Tag رابطه ی چند به چند دارند .

توسطعثمان رحیمینظرات0بازدید ها 631 ماه قبل ، یکشنبه 1 مرداد 1396 ساعت 00:34

اندکی در مورد Tuple و Yield

هر چند وقت یکبار لازم است نگاهی به کدهای نوشته شده خودمان بییندازیم و با تازه های آن زبان مقایسه کنیم ، آیا پروژه فعلی مان نسبت به پروژه قبلی پیشرفت هایی داشته است ؟آیا توانسته ایم از تازه های سی شارپ در کدهایمان استفاده کنیم ؟ بد نیست هر چند وقت یکبار جهت یادآوری و پیشرفت کدها ، نگاهی داشته باشیم به تازه های سی شارپ  و از آنها جهت بهبود کدنویسی مان استفاده کنیم ....

توسطعثمان رحیمینظرات0بازدید ها 5112 روز قبل ، شنبه 14 مرداد 1396 ساعت 12:46