kernel panic in userspace

my own self destruction
  • Blog
  • about
  • articles
    • Virtualbox bridge
    • linux blogging
    • Gentoo on Acer Extensa 5630Z
  • code
    • @unfollowr
    • WordPress
      • WordPress-bbPress syncronization
      • IE Warning
      • PostAds
    • Callisto overlay
    • @listwatcher
  • CV
  • belarusian
  • russian
  • english

negative remainder

Oct 02 2009
Торба-на-Круче – Марьюшка
  • belarusian
  • russian

Делая домашнее задание по Javascript (рукотворный календарик) столкнулся с проблемой определения дня недели для первого дня текущего месяца. Сначала всплыло то, что в буржуинском языке Sunday (воскресенье) — первый день недели, т.е. день недели с нулевым индексом. Ничего умнее того, чтобы доделать ещё один метод к классу Date, я не придумал.

Date.prototype.wDay = function ()
{
  // sunday must be the last day of the week
  if (this.getDay() == 0)
    return 6;
  return this.getDay()-1;
}

Дальше надо было получать сам первый день недели. С подозрением на то, что стандартной функции нет (да и искать было лень, хотелось поупражняться), я засел за это дело. Ковырялся-ковырялся, получилось нечто типа следующего:

Date.prototype.getFirstDay = function()
{
  return (7*5+this.wDay()-this.getDate()+1)%7;
}

7*5 гарантированно больше числа дней в месяце, с учётом того, что календарь делался на третью от Солнца планету, так что мы всегда получали целое число для получения остатка от деления на 7. Только вот magick numbers не есть хорошо, как известно. Дальнейшие ковыряния с получением остатка от деления отрицательных чисел привели к неожиданным результатам.

Между делом я использовал в соседней консоли Python как калькулятор, который мне выдавал, что (4-16)%7 == 2. В то же время javascript делал нечто необъяснимое, что я сначала сбрасывал на счёт не самых естественных индексов для дней недели, всё же люди с 1 привыкли считать их. Wikipedia же говорит нам, что по-своему прав каждый, ведь -12 = 7*(-2)+2, равно как и -12 = 7*(-1)+(-5). Workaroud для такого делается следующим образом:

Date.prototype.getFirstDay = function()
{
  var firstDay = (this.wDay()-this.getDate()+1)%7;
  if (firstDay < 0)
  {
    return firstDay+7;
  }
  return firstDay;
}

Такая вот коварная, хоть и примитивная математика.

samsay.ru — народная медицина и кулинария

Выделенные сервера в аренду. Поставил что надо и вперёд

Спецтехника из Китая — продажа и прямые поставки. Тягачи, бульдозеры

  • belarusian
  • russian

Робячы хатняе заданьне па Javascript (рукатворны каляндарык) сутыкнуўся з праблемай атрыманьня першага дня тыдню для бягучага месяца. Спачатку ўсплыла тое, што ў буржуйскай мове Sunday (нядзеля) — першы дзень тыдня, т.б. дзень тыдню з нулявым індэксам. Нічога разумней за тое, каб дарабіць яшчэ адзін метад для класа Date, я не прыдумаў.

Date.prototype.wDay = function ()
{
  // sunday must be the last day of the week
  if (this.getDay() == 0)
    return 6;
  return this.getDay()-1;
}

Далей трэба было атрымаць сам першы дзень тыдню. З падазронасьцю, што стандартнай функцыі няма (ды й шукаць было лянота, хацелася папрактыкавацца), я засеў за гэтую справу. Калупаўся-калупаўся, атрымалася нешта кшталту наступнага:

Date.prototype.getFirstDay = function()
{
  return (7*5+this.wDay()-this.getDate()+1)%7;
}

7*5 гарантавана больш ліку дней у месяца, з улікам таго, што каляндарык рабіўся на трэцюю ад Сонца плянэту, так што мы гарантавана атрымлівалі цэлае чысло для атрыманьня астатку ад дзяленьня на 7. Толькі вось magick numbers ня ёсьць добра, як вядома. Далейшыя калупаньні з атрыманьнем астатку ад дзяленьня на мінусавыя чысла прывялі да нечаканых рэзультатаў.

Між справай я выкарыстоўваў у суседняй кансолі Python як калькулятар, які мне выдаваў, што (4-16)%7 == 2. У той жа час javascript рабіў нешта неаб’ясняльнае, што я спачатку ськідаў на не самыя натуральныя індэксы для дней тыдню, усё ж людзі з 1 прывыклі лічыць іх. Wikipedia ж кажа нам, што кожны па-свойму правы, бо -12 = 7*(-2)+2, як і -12 = 7*(-1)+(-5). Workaroud для такога робіцца наступным чынам:

Date.prototype.getFirstDay = function()
{
  var firstDay = (this.wDay()-this.getDate()+1)%7;
  if (firstDay < 0)
  {
    return firstDay+7;
  }
  return firstDay;
}

Такая вось хітрая, хоць і прымітыўная матэматыка.

samsay.ru — народная медицина и кулинария

Выделенные сервера в аренду. Поставил что надо и вперёд

Спецтехника из Китая — продажа и прямые поставки. Тягачи, бульдозеры

{ Comments : No Comments » }
{ Tags: calendar, javascript, math, negative remainder, prototype, weekday }

redisign

Feb 18 2008
  • belarusian
  • russian

Более-менее закончил редизайн. Из нововведений:

  • Две колонки
  • Больше виджетов
  • Смена картинки в заголовке по времени суток
  • Теперь валидный код везде :-)
  • Обновлённый и освеженный css
  • Более распозаваемые ссылки
  • Календарик %)
  • belarusian
  • russian

Больш-менш скончыў рэдызайн. З новага:

  • Дзьве калёнкі
  • Больш віджэтаў
  • Зьмена малюнку ў шапцы па часе сутак
  • Цяпер валідны код паўсюль :-)
  • Адноўлены і асьвежаны css
  • Больш распазнавальныя спасылкі
  • Каляндарык %)
{ Comments : 4 Comments » }
{ Tags: calendar, calendar image, css, header image, redisign, valid, w3c validator, widgets, wordpress }

RSS antisocial feeling

  • so much i
  • i am freaking bicycle
  • с третьей минуты мне очень. детство
  • не спрашивайте
  • banksystreetart: Banksy / Simon Munnery fuck yeah shit

Tags

bash belarus blog blogs bugs coding concerts download friends fun gentoo google images internet javascript kde language life links linux livejournal me money music overlays perl photos php plugins portage projects rss school shell social social networks ssh studying tests twitter ubuntu univer vkontakte wifi wordpress

links

  • asocial feeling
  • Callisto overlay
  • daThumbs
  • last.fm
  • twitter
  • Vkontakte
  • ~idioteque

Recent Comments

  • saper on antialiased fonts in netbeans (java apps in common)
  • edward on IE Warning
  • Vigoran on WordPress-bbPress syncronization
  • Nikos on WordPress-bbPress syncronization
  • Maxno on free licenses
  • achmad on IE Warning
  • bobrik on bbPress terms filtering & hacks
  • Сергей М. on bbPress terms filtering & hacks
  • Samad Khan on WordPress-bbPress syncronization
  • bobrik on WordPress-bbPress syncronization

Archives

  • July 2010 (1)
  • June 2010 (1)
  • April 2010 (2)
  • January 2010 (1)
  • November 2009 (2)
  • October 2009 (5)
  • September 2009 (2)
  • August 2009 (2)
  • July 2009 (3)
  • June 2009 (1)
  • April 2009 (2)
  • March 2009 (1)
  • February 2009 (1)
  • January 2009 (2)
  • December 2008 (12)
  • November 2008 (17)
  • October 2008 (20)
  • September 2008 (13)
  • August 2008 (25)
  • July 2008 (18)
  • June 2008 (15)
  • May 2008 (7)
  • March 2008 (1)
  • February 2008 (9)
  • January 2008 (11)
  • December 2007 (24)
  • November 2007 (27)
  • October 2007 (21)

Meta

  • Log in
  • Entries RSS
  • Comments RSS
  • WordPress.org

Creative Commons License rss comments rss valid xhtml