Архив за Декабрь, 2009

28
Дек

38 hours

   Автор: Aen Sidhe    in дневник

Побьём рекорд или нет?

Метки:дневник, рабочее
26
Дек

АК-47

   Автор: Aen Sidhe    in дневник

Горит и стреляет.

Метки:видео, дневник, юмор
24
Дек

радость

   Автор: Aen Sidhe    in дневник

Всё-таки, с ощущением от познания нового, создания нового или решения какой-либо нетривиальной проблемы может сравниться всего два или три других чувства.

Метки:дневник
24
Дек

gifts

   Автор: Aen Sidhe    in дневник

Привезли наконец подарки, заказанные без малого неделю назад.

Метки:дневник, маразм
22
Дек

simple test 2

   Автор: Aen Sidhe    in программирование

Код в предыдущей записи действительно смахивает на WTF, но он таким, имхо, не является.

Итак, задание – сделать конфигурируемый планировщик, позволяющий:

  1. Иметь сколько угодно заданий
  2. Имеющий заданную точность (у нас 5 секунд)
  3. Конфигурация должна спокойно производится человеком, не имеющим технического образования и опыта программирования.
  4. Каждое событие должно иметь следующие признаки:
    1. Время запуска
    2. Количество срабатываний (как конечное, так и нет)
    3. Интервал запуска
    4. Возможность разрешить или запретить запуск в любой из дней недели или день года, т.е. события только на 31.12 или только по вторникам, или наоборот в любой день, кроме вторников – реальность.

Исходя из этого, было придумано то, что видно в записи по линку выше. Сериализуется это (класс был переименован в Period) вот в такой xml:

[cc lang="xml"]

Monday Tuesday Wednesday Thursday Friday Saturday Sunday
January February March April May Juny July August September October November December
d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 d16 d17 d18 d19 d20 d21 d22 d23 d24 d25 d26 d27 d28 d29 d30 d31

16:00:00
1.00:00:00

[/cc]

Соответственно, просто пишем через пробел нужные нам дни недели/месяцы/дни и радуемся жизни.

Вопрос: как сделать лучше, не ухудшая читабельность конфига? Конфиг необязательно, но желательно, должен быть xml.

Метки:программирование
21
Дек

simple test

   Автор: Aen Sidhe    in программирование

Мелкий тест.

Ниже длинный исходник на C#. Определить – WTF он или нет и предположить, зачем он нужен. Завтра выложу полный исходник с объяснениями.

[cc lang="csharp"]
[Flags]
public enum Month
{
January = 0×1,
February = 0×2,
March = 0×4,
April = 0×8,
May = 0×10,
Juny = 0×20,
July = 0×40,
August = 0×80,
September = 0×100,
October = 0×200,
November = 0×400,
December = 0×800,
}

[Flags]
public enum FlaggingDayOfWeek
{
Monday = 0×1,
Tuesday = 0×2,
Wednesday = 0×4,
Thursday = 0×8,
Friday = 0×10,
Saturday = 0×20,
Sunday = 0×40,
}

[Flags]
public enum Days
{
d1 = 0×1,
d2 = 0×2,
d3 = 0×4,
d4 = 0×8,
d5 = 0×10,
d6 = 0×20,
d7 = 0×40,
d8 = 0×80,
d9 = 0×100,
d10 = 0×200,
d11 = 0×400,
d12 = 0×800,
d13 = 0×1000,
d14 = 0×2000,
d15 = 0×4000,
d16 = 0×8000,
d17 = 0×10000,
d18 = 0×20000,
d19 = 0×40000,
d20 = 0×80000,
d21 = 0×100000,
d22 = 0×200000,
d23 = 0×400000,
d24 = 0×800000,
d25 = 0×1000000,
d26 = 0×2000000,
d27 = 0×4000000,
d28 = 0×8000000,
d29 = 0×10000000,
d30 = 0×20000000,
d31 = 0×40000000,
}

public class Schedule
{
#region Cache

public const FlaggingDayOfWeek AllDaysOfWeek = FlaggingDayOfWeek.Monday | FlaggingDayOfWeek.Tuesday |
FlaggingDayOfWeek.Wednesday | FlaggingDayOfWeek.Thursday | FlaggingDayOfWeek.Friday |
FlaggingDayOfWeek.Saturday | FlaggingDayOfWeek.Sunday;

public const Month AllMonthes =
Month.January | Month.February | Month.March |
Month.April | Month.May | Month.Juny |
Month.July | Month.August | Month.September |
Month.October | Month.November | Month.December;

public const Days AllDays =
Days.d1 | Days.d2 | Days.d3 | Days.d4 | Days.d5 | Days.d6 | Days.d7 |
Days.d8 | Days.d9 | Days.d10 | Days.d11 | Days.d12 | Days.d13 | Days.d14 |
Days.d15 | Days.d16 | Days.d17 | Days.d18 | Days.d19 | Days.d20 | Days.d21 |
Days.d22 | Days.d23 | Days.d24 | Days.d25 | Days.d26 | Days.d27 | Days.d28 |
Days.d29 | Days.d30 | Days.d31;

private static readonly Dictionary m_DaysOfWeekCache = new Dictionary
{
{ DayOfWeek.Monday, FlaggingDayOfWeek.Monday },
{ DayOfWeek.Tuesday, FlaggingDayOfWeek.Tuesday },
{ DayOfWeek.Wednesday, FlaggingDayOfWeek.Wednesday },
{ DayOfWeek.Thursday, FlaggingDayOfWeek.Thursday },
{ DayOfWeek.Friday, FlaggingDayOfWeek.Friday },
{ DayOfWeek.Saturday, FlaggingDayOfWeek.Saturday },
{ DayOfWeek.Sunday, FlaggingDayOfWeek.Sunday },
};

private static readonly Dictionary m_MonthesCache = new Dictionary
{
{ 1, Month.January },
{ 2, Month.February },
{ 3, Month.March },
{ 4, Month.April },
{ 5, Month.May },
{ 6, Month.Juny },
{ 7, Month.July },
{ 8, Month.August },
{ 9, Month.September },
{ 10, Month.October },
{ 11, Month.November },
{ 12, Month.December },
};

private static readonly Dictionary m_DaysCache = new Dictionary
{
{ 1, Days.d1 },
{ 2, Days.d2 },
{ 3, Days.d3 },
{ 4, Days.d4 },
{ 5, Days.d5 },
{ 6, Days.d6 },
{ 7, Days.d7 },
{ 8, Days.d8 },
{ 9, Days.d9 },
{ 10, Days.d10 },
{ 11, Days.d11 },
{ 12, Days.d12 },
{ 13, Days.d13 },
{ 14, Days.d14 },
{ 15, Days.d15 },
{ 16, Days.d16 },
{ 17, Days.d17 },
{ 18, Days.d18 },
{ 19, Days.d19 },
{ 20, Days.d20 },
{ 21, Days.d21 },
{ 22, Days.d22 },
{ 23, Days.d23 },
{ 24, Days.d24 },
{ 25, Days.d25 },
{ 26, Days.d26 },
{ 27, Days.d27 },
{ 28, Days.d28 },
{ 29, Days.d29 },
{ 30, Days.d30 },
{ 31, Days.d31 },
};

#endregion

public FlaggingDayOfWeek EnabledDaysOfWeek { get; set; }

public Month EnabledMonthes { get; set; }

public Days EnabledDays { get; set; }

[XmlIgnore]
public TimeSpan StartTime { get; set; }

[XmlIgnore]
public TimeSpan Interval { get; set; }

public int? Count { get; set; }

[XmlElement(DataType = "duration", ElementName = "StartTime")]
public string FakeStartTime
{
get { return StartTime.ToString(); }
set { StartTime = TimeSpan.Parse(value); }
}

[XmlElement(DataType = "duration", ElementName = "Interval")]
public string FakeInterval
{
get { return Interval.ToString(); }
set { Interval = TimeSpan.Parse(value); }
}
}
[/cc]

Метки:программирование
19
Дек

Сыграл в города

   Автор: Aen Sidhe    in дневник

Тупой Яндекс-виджет не показывает лог, а только невнятную картинку. В общем, выиграл, несмотря на то, что мне дважды подсовывали город на Ы.

Метки:дневник
18
Дек

hate

   Автор: Aen Sidhe    in дневник

Есть одна контора. Заказал там вчера всякое в подарок близким в Липецке. С подарком этим связана отдельная история, а именно – я искал что-то подобное пару месяцев. Но нигде найти не мог. И вот тут – опаньке, удача, [info]tantriel подкинула ссылку, где было что-то подобное. И оно правда там было.

Привезти должны были сегодня. В результате, в пять вечера не было ничего. Позвонил, пять минут ждал, пока ответят. В результате ответили. Не привезли мне сегодня ничего ровно потому, что до меня, видите ли, не дозвонились. Привезут в понедельник, когда я уже приеду из Липецка.

Единственный звонок, на который я не ответил, был в 12:30 с какого-то левого номера. Звонящего слышно не было, я ему об этом сообщил и попросил перезвонить. Никто потом не перезванивал.

В общем, бардак и клоуны.

Метки:дневник, маразм
18
Дек

linux

   Автор: Aen Sidhe    in дневник

Большинство современных «достижений» Linux — это решение сугубо технических проблем, порожденных самим фактом существования Linux.

Метки:opensource, дневник
18
Дек

habrahabr

   Автор: Aen Sidhe    in дневник

Хабр сегодня доставил. Итак, во-первых, иранские хацкеры хацкнули твиттер. Пруфпик.

А во-вторых, иракские повстанцы в живую смотрели видео с американских беспилотников, которые летали вокруг. Софт для перехвата и дешифровки стоил 26 баксов. Пруфлинк.

Метки:дневник, новости
Страница 1 из 3123