مطالب
محاسبه ی اختلاف زمان رخدادی در گذشته با زمان فعلی به فارسی
حتما در سایت جاری مشاهده کرده اید در اطلاعات مربوط به پست‌ها زمان تقریبی انتشار پست درج شده است. 
  • 12 ساعت قبل
  • دیروز
  • لحظاتی پیش
  • ...

نشان دادن همچین اطلاعاتی در برنامه‌های مختلف می‌تواند سودمند باشد ، مثلا در این سایت اگر مطلبی مربوط به گذشته باشد خواننده با دیدن عبارت 4 سال قبل از پرسیدن یک سری سوالات خودداری می‌کند.
آقای Jeff Awtood یکی از خالقین سایت Stackoverflow زمانی سوالی درباره‌ی نحوه‌ی پیاده سازی این ویژگی پرسیده بودند که در نهایت یکی از پاسخ ها پذیرفته شد. 
یک مثال از نحوه‌ی پیاده سازی این ویژگی برای زبان فارسی مانند زیر است :
public class RelativeTimeCalculator
{
    const int SECOND = 1;
    const int MINUTE = 60 * SECOND;
    const int HOUR = 60 * MINUTE;
    const int DAY = 24 * HOUR;
    const int MONTH = 30 * DAY;

    public static string Calculate(DateTime dateTime)
    {
        var ts = new TimeSpan(DateTime.Now.Ticks - dateTime.Ticks);
        double delta = Math.Abs(ts.TotalSeconds);
        if (delta < 1 * MINUTE)
        {
            return ts.Seconds == 1 ? "لحظه ای قبل" : ts.Seconds + " ثانیه قبل";
        }
        if (delta < 2 * MINUTE)
        {
            return "یک دقیقه قبل";
        }
        if (delta < 45 * MINUTE)
        {
            return ts.Minutes + " دقیقه قبل";
        }
        if (delta < 90 * MINUTE)
        {
            return "یک ساعت قبل";
        }
        if (delta < 24 * HOUR)
        {
            return ts.Hours + " ساعت قبل";
        }
        if (delta < 48 * HOUR)
        {
            return "دیروز";
        }
        if (delta < 30 * DAY)
        {
            return ts.Days + " روز قبل";
        }
        if (delta < 12 * MONTH)
        {
            int months = Convert.ToInt32(Math.Floor((double)ts.Days / 30));
            return months <= 1 ? "یک ماه قبل" : months + " ماه قبل";
        }
        int years = Convert.ToInt32(Math.Floor((double)ts.Days / 365));
        return years <= 1 ? "یک سال قبل" : years + " سال قبل";
    }

} 
نحوه‌ی کارکرد کد اینگونه است که دلتای زمان داده شده به متد Calculate با زمان فعلی بر حسب ثانیه محاسبه می‌گردد و با یک سری شرط مقایسه می‌شود ، مثلا اگر دلتا کمتر از 120 ثانیه بود رشته‌ی یک دقیقه قبل باز می‌گردد.
یک مثال از نحوه‌ی استفاده از این کلاس اینگونه است : 
var relativeTime=RelativeTimeCalculator.Calculate(DateTime.Now.AddMinutes(-10)); 
نظرات مطالب
آشنایی با TransactionScope
از چه روشی میشه دستور Create Database رو در Context مربوط به EF6  بدون خطا اجرا کرد و نتیجه مثبت ازش گرفت ؟ هرچند در EF5 هیچ مشکلی با این دستور و Alter هایی که روی دیتابیس زده میشد نداشتیم ولی اینجا پیغام  multi transaction رو میده .....
نظرات نظرسنجی‌ها
برای توسعه پذیری سیستم خود از چه روشهایی استفاده کرده اید؟
خیلی ممنون از نظرتون.منظور اینه که تا بحال از کدام یک از این روشها واقعا در سیستمهایی که طراحی کردین استفاده کردین و در صورت تمایل تجربتونو در این زمینه در اختیار دیگران هم بگذارید.مثلا چه دلایلی باعث شده از اون روش استفاده کنید و روشی که استفاده کردین چه تاثیری روی سیستمتون داشته(حالا منفی یا مثبت).البته بصورت خلاصه.بازم ممنون.
اشتراک‌ها
نرم افزار یادآوری زمان استراحت (breaktimer)
پروژه ای open source  که در پلتفرم‌های متنوع نسخه نصبی دارد و میتوانید  جهت یادآوری زمان استراحت استفاده کنید.
برخی امکاناتی که استفاده کردم:
- غیر فعال کردن دکمه snooze و skip
- انتخاب زمان تکرار، مدت استراحت و ساعت کاری
نرم افزار کاربردیی هستش، در محیط کار استفاده کنید ... 
نرم افزار یادآوری زمان استراحت (breaktimer)
نظرات مطالب
لینک‌های هفته اول آذر
مطلبی با عنوان
استفاده از دستور DateDiff و کار با ساعت در SQL Server
در وبلاگ خودم گذاشتم و از شما خواستارم در صورت داشتن زمان و وقت کافی به پرسش مطرح شده در آنجا پاسخ مناسبی بدهید . لینک مستقیم مطلب
http://hajloo.wordpress.com/2008/11/27/sql-server-datetime-type-and-datediff-command/
نظرات مطالب
اجرای وظایف زمان بندی شده با Quartz.NET - قسمت دوم
سلام من در برنامم برای ارسال اس ام اس از کوارتز استفاده کردم درست هم کار میکنه ولی مشکلی که داره اینه که می‌خوام روزی یکبار عمل ارسال اس ام اس انجام بشه بنابراین trigger را به صورت زیر تعریف کرده ام.
 ITrigger trigger = TriggerBuilder.Create().WithIdentity("trigger1").StartAt(starttime).WithSimpleSchedule(x => x.WithIntervalInHours(24).RepeatForever()).Build ();
ولی انگار که این کد کار نمی‌کنه چون تقریبا ساعتی دو بار داره اس ام اس رو میفرسته لطفا راهنمایی ام کنید که مشکل چیه ؟ در ضمن ارسال اس ام اس در قسمت application_start به صورت زیر تعریف شده
   double h = DateTime.Now.Hour;
  h += 7.5;
  if (h >= 8)
  {
SchedulerDemo.Interfaces.ISchedule mytask = new SchedulerDemo.Jobs.Sendschedule();
mytask.run();
  }
اضافه کردن 7.5 به ساعت سیستم به دلیل این است که مطابق با ساعت ایران شود. با تشکر
مطالب
بلاگ‌ها و مطالب مطالعه شده در هفته قبل (هفته اول آبان)


وبلاگ‌های ایرانی


Visual Studio

  • ویژوال استودیو 2010 و دات نت فریم ورک 4، نگارش CTP برای دریافت!

امنیت اطلاعات

ASP. Net

طراحی وب


اس‌کیوال سرور


به روز رسانی‌ها


ابزارها

سی‌شارپ
  • ویژگی‌های جدید C# 4.0 ، قسمت دوم، پارامترهای پیش فرض (یا آرگومانهای اختیاری). (چیزی شبیه به VB !! بدون نیاز به overloading برای پیاده سازی آن)

دلفی
  • ویدیویی از Delphi Prism . (نگارشی از دلفی که به شکل افزونه‌ای کاملا یکپارچه در VS.Net قابل دسترسی است)

SharePoint

ویندوز

متفرقه


نظرات اشتراک‌ها
تقویم شمسی رسپانسیو برای بوت استراپ
دقیقا مشکلی هست که همه تقویم‌های شمسی دارن
برای همین هر بار مجبور هستم تاریخ شمسی رو تبدیل به میلادی کنم تا بتونم توی دیتابیس ذخیره یا توی کوئری‌ها ازش استفاده کنم