четверг, 20 сентября 2012 г.

SQL: Previous Month and Week

Получаем записи за предыдущаю неделю (от понедельника до полуночи с воскресенье на понедельник):

DECLARE @TodayDayOfWeek INT
DECLARE @EndOfPrevWeek DateTime
DECLARE @StartOfPrevWeek DateTime

SET @TodayDayOfWeek = datepart(dw, GetDate())
SET @EndOfPrevWeek = DATEADD(dd, -@TodayDayOfWeek, GetDate())
SET @StartOfPrevWeek = DATEADD(dd, -(@TodayDayOfWeek+6), GetDate())

SELECT 
--- Тут выборка
WHERE
    CREATED_DATE BETWEEN 
 CONVERT(DATE, @StartOfPrevWeek,7)
AND
 CONVERT(DATE, @EndOfPrevWeek+2,7)
GROUP BY
 p.PRODUCT_NAME 

Если воскресенье учитывать не надо – вместо @EndOfPrevWeek + 2 надо писать @EndOfPrevWeek + 1.

Сделать выборку по месяцу намного проще:

DECLARE @EndOfPeriod DateTime
DECLARE @StartOfPriod DateTime

SET @StartOfPriod = DATEADD(mm, DATEDIFF(mm,0,getdate())-1, 0)
SET @EndOfPeriod = DATEADD(mm, 1, @StartOfPriod)

SELECT
---- тут выборка
WHERE
 CREATED_DATE BETWEEN
 CONVERT(DATE, @StartOfPriod,7)
AND
 CONVERT(DATE, @EndOfPeriod,7)

Аналогичные штуки проходят с днём и годом.

Работает в т.ч. в MS SQL 2005 (если MSDN не врёт).

Хуже, будет ещё хуже!

За что можно любить Мэддисона? За то, что он честно показывает, как не надо делать игры.

Поэтому самые лучшие его обзоры – это обзоры всевозможного трэша вроде “Гульмэна” или адских псевдоэротических квестов. Смотришь и радуешься, что это происходит не с тобой. А под влиянием общего безумия у обозревателя порой рождаются остроумные шутки.

Кому-то кажется, что народно-подзаборней Мэддисона обозревать невозможно и что он дошёл до предела простоты – блуждает по игровым тупикам и закоулкам, а потом называет это “обзором”. И что хуже уже не будет.

На самом деле, хуже уже есть – это Let’s play-и. И сам Мэддисон их ненавидит. Когда просто играют и комментируют, то не выдерживает даже Мэддисон.

Видимо, видео в Интернете постигнет та же судьба, что тексты и фотографию. Оно будет всё больше обесцениваться.

среда, 19 сентября 2012 г.

Georges Simenon – Le Chien jaune

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

Прочитал вот это издание:

Сам автор утверждает, что романы, вроде этого, он писал за 3 дня. Что ж, 3 дня “Жёлтого пса” оказались просто превосходными. Экранизировали книгу почти сразу, а в наши дни она читается ничуть не хуже, чем в 1931.

Так и появляется неожиданная классика жанра.

Jens Köhn – Die Etruskier. Kinder des Tunia

Ещё одна книга из серии “Alte Kulturen am Mittelmeer” – как и предыдущие про критян и микенцев. Книжки про финикийкев в магазине уже не было – только эти три.

Издана в 1991, ещё до орфографической реформы. Единственный серьёзный недостаток – на странице 4 в качестве примера этрусской письменности изображена лемносская стела, которую всё-таки относят к пеласгам или тирсенам.

понедельник, 17 сентября 2012 г.

Не обижаясь на Северную Нигерию

Брин как-то назвал Россию Северной Нигерией. Многие обиделись, но мало кто заметил, что за этими словами нет ни опыта, ни внятных рассуждений. Похоже, это просто вера, и он верит в неё только потому, что в неё верили его родители.

Конечно, явление редкое. Но оно ничуть не удивительней, чем правоверный католик или ортодоксальный иудей, который работает биологом или астрофизиком.

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

Удивляться таким заявлениям – всё равно что недоумевать, как современный учёный может верить во Всемирный Потоп и Теорию Разумного Творения. Вполне может, и это даже не будет вредить его карьере.

В книге Смаллиана, про которую я писал, есть хороший пример на эту тему. Если учёного загипнотизировать, он будет подчиняться приказам гипнотизёра. А религиозное воспитание в детстве – чем не гипноз?

Р. Смаллиан – Молчаливое Дао

Смаллиан – это такой Станислав Лем, только от математики. Советские дети помнят его по незабываемой “Как же называется эта книга?”. А ещё была “Алиса в Стране Смекалки” (“Королева думает, что Король думает, что Королева думает, что Король думает, что Королева не в своем уме…”).

Востоковеды этой книгой будут, пожалуй, недовольны. Ведь Смаллиан произвольно смешивает самые разные традиции в трактовке Дао! И это в то время, когда сами исследователи не уверены, читал ли Чжуан-цзы книгу Лао-цзы, несмотря на принадлежность к общей традиции. Дао – оно очень разное. У Лао-цзы – это “утроба”, из которой течёт всё сущее (т.е., женщина), у Чжуан-дзы – Великий Мастер, Кузнец, который отливает в своём горниле все предметы мира (т.е., мужчина, а утроба – не больше, чем его инструмент), а у конфуцианцев – “приоритетное направление” (“нет дорог, есть но направления”). Неужели он их не различает?

Я думаю, как раз для этой книги такое разделение и не важно. Смаллиан не исследует даосим. Он пытается найти там термины и рассуждения, чтобы объяснить явления, для которых ему не хватает слов европейской традиции. Примерно как Джек Лондон обнаруживал в монологе Чжуан-цзы про бабочку Белую Логику алкоголика. Или как я сейчас смотрю на перевод “Джона, Ячменное Зерно” и не могу найти главу, в которой приводится эта цитата – хотя точно помню, что она там была.

Не следует осуждать битников за то, что они заимствовали “неправильный” дзен-буддизм. Как будто в Японию буддизм приходил “правильным”! Даже христианство мутирует, превращаясь в надстройку над местными поверьями. Что уж говорить о методе. В самой Японии, судя по “Золотому Храму”, 90% дзена – не больше, чем музейные экспонаты.

Не страшно узнать даосизме из “Дао Винни-Пуха”. Страшно думать, что это лучшая книга по теме.

CSS: @import

Оказывается, в CSS можно делать include. Синтаксис вот такой:
@import url("filename") [type]
Типы бывают:
  • all - Все типы. Это значение используется по умолчанию.
  • aural - Речевые синтезаторы, а также программы для воспроизведения текста вслух. Сюда, например, можно отнести речевые браузеры.
  • braille - Устройства, основанные на системе Брайля, которые предназначены для слепых людей.
  • handheld - Наладонные компьютеры и аналогичные им аппараты.
  • print - Печатающие устройства вроде принтера.
  • projection - Проектор.
  • screen - Экран монитора.
  • tv - Телевизор.

Часто ли вы видите CSS-вёрстку на экране телевизора? Жалко, что там их не применяют. Можно бы было вырезать рекламные паузы через ADBlock.

С мест сообщают, что мобильные браузеры не понимают @import, если путь файлу не обрамлён url. Хотя по стандарту:

Работающий вариант:

@import url("filename") [type]
И не работающий:

@import "filename" [type]
эквивалентны.

И ещё – IE 7 не поддерживает типы. Более того, если указать тип, то он перестаёт подгружать и сам файл.

воскресенье, 16 сентября 2012 г.

showModalDialog’s returnValue is undefined in Chrome

С мест сообщают – в Chrome у showModalDialog returnValue – undefined. Баг известен с 2010 года и пока (16 сентября 2012) не исправлен.

Фиксить так:

В окне, которое вызывает модальное:

window.returnValue = undefined;
var result = window.showModalDialog("modalwindow.aspx", window, "dialogHeight:650px; dialogWidth:900px;");
if (result == undefined)
   result = window.returnValue;
if (result != null && result != "undefined")
  // Do something with the return value
  // defined in "result"

В модальном окне:

if (window.opener) {
    window.opener.returnValue = "your return value";
}
window.returnValue = "your return value";
self.close();

IE isn’t focusing anchor link

В IE обнаружен загадочный баг.

Если ASP.Net страница:

  • делает (например, по нажатию на страницу) redirect на другую через anchor (т.е. otherPage.aspx#anchor)
  • в IIS настроен ISAPI_Rewrite (локально повторить не удалось)
  • браузер – IE (повторяется в т.ч. в 9-ом)

То может случится так, что anchor “отбросится” и страниця загрузится как otherPage.aspx.

Выловить и перенастроить практически невозможно.

Единственный выход – вместо redirect вставлять в literal на странице “<script language=’javascript’>location.href = ‘otherPage.aspx#anchor’;</script>”. Можно дополнительно поставить проверку – делать такой redirect только если браузер ie. Название браузера искать в Request.Browser.Type.

О document.ready заботаться не стоит – redirect он и есть redirect.