Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Lua и новый год  (Прочитано 1029 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Kernel ops

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1389
    • Просмотр профиля
Lua и новый год
« : 04 Декабрь 2011, 19:48:48 »
пишу плагин к conky на lua, выводящий время до нового года (работать будет только в декабре 2011 ;D, но суть не  в этом):
#!/usr/bin/env lua
nowHour = os.date("%H")
nowMinute = os.date("%M")
nowSecond = os.date("%S")
nowDay = os.date("%d")
nowMonth = os.date("%m")
nowWeekday = os.date("%A")
nowMonthName = os.date("%B")
toNewHour = 24 - nowHour
toNewMinute = 60 - nowMinute
toNewSecond = 60 - nowSecond
toNewDay = 31 - nowDay
a = 1
function time (nD, nMN, nH, nM, nS, nW, tND, tNH, tNM, tNS)
print("Сегодня " .. nD .. " " .. nMN .. " " .. nH .. ":" .. nM .. ":" .. nS .. ", " ..nW)
print("До нового года " .. tND .. " дней, " .. tNH .. " часов, " .. tNM .. " минут, " .. tNS .. " секунд")
end
time(nowDay, nowMonthName, nowHour, nowMinute, nowSecond, nowWeekday, toNewDay, toNewHour, toNewMinute, toNewSecond)
только начинаю изучать lua, плюс это сырой недопилок. вывод в терминале:
dan@dan-GA-MA78GM-UD2H:~/lua$ ./date.lua
Сегодня 04 December 19:47:39, Sunday
До нового года 27 дней, 5 часов, 13 минут, 21 секунд
dan@dan-GA-MA78GM-UD2H:~/lua$
вопрос: как заставить переменные обновляться раз в секунду (типа счётчик)?

Пользователь решил продолжить мысль 04 Декабрь 2011, 21:05:41:
усовершенствовал скрипт, запускать можно когда угодно (кроме високосных годов ;D):
#!/usr/bin/env lua
nowHour = os.date("%H")
nowMinute = os.date("%M")
nowSecond = os.date("%S")
nowDay = os.date("%d") * 1
nowMonth = os.date("%m") * 1
nowWeekday = os.date("%A")
nowMonthName = os.date("%B")
toNewHour = 24 - nowHour
toNewMinute = 60 - nowMinute
toNewSecond = 60 - nowSecond
local b = {'31', '28', '31', '30', '31', '30', '31', '31', '30', '31', '30', '31'}
e = b[nowMonth] * 1
firstMonth = nowMonth * 1
for firstMonth = nowMonth, 11, 1 do
firstMonth = firstMonth + 1
e = e + b[firstMonth]
end
toNewDay = e - nowDay
a = 1
function time (nD, nMN, nH, nM, nS, nW, tND, tNH, tNM, tNS)
print("Сегодня " .. nD .. " " .. nMN .. " " .. nH .. ":" .. nM .. ":" .. nS .. ", " ..nW)
print("До нового года " .. tND .. " дней, " .. tNH .. " часов, " .. tNM .. " минут, " .. tNS .. " секунд")
end
time(nowDay, nowMonthName, nowHour, nowMinute, nowSecond, nowWeekday, toNewDay, toNewHour, toNewMinute, toNewSecond)
но вопрос остался
« Последнее редактирование: 04 Декабрь 2011, 21:05:41 от CrazyCernel »
root@shkiper:~$mount -t btrfs /dev/head1 /mnt && ls /mnt | grep brain | xargs -i sh /mnt/{}

Оффлайн lukinfore

  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Re: Lua и новый год
« Ответ #1 : 06 Декабрь 2011, 21:03:22 »
Страшно-то как.
http://www.lua.org/pil/22.1.html
t={year=2012,month=1,day=1}
print(os.date("Осталось %d дней , %H часов , %M минут",(os.time(t)-os.time())))

Цитировать
как заставить переменные обновляться раз в секунду

т.е.
while 1 do
something()
os.execute("sleep 1")
end
? или о чем?
Непонятно какая тут к конькам привязка, у них своя луа система, см. man conky

Оффлайн Kernel ops

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1389
    • Просмотр профиля
Re: Lua и новый год
« Ответ #2 : 06 Декабрь 2011, 21:36:25 »
всё уже налажено давно:
function conky_time()

local nowHour = os.date("%H")
local nowMinute = os.date("%M")
local nowSecond = os.date("%S")
local nowDay = os.date("%d") * 1
local nowMonth = os.date("%m") * 1
local nowWeekday = os.date("%A")
local nowMonthName = os.date("%B")

return string.format( nowDay .. " " .. nowMonthName .. " " .. nowHour .. ":" .. nowMinute .. ":" .. nowSecond .. ", " ..nowWeekday)
end

function conky_NY()

local nowHour = os.date("%H")
local nowMinute = os.date("%M")
local nowSecond = os.date("%S")
local nowDay = os.date("%d") * 1
local nowMonth = os.date("%m") * 1
local nowWeekday = os.date("%A")
local nowMonthName = os.date("%B")
local toNewHour = 24 - nowHour
local toNewMinute = 60 - nowMinute
local toNewSecond = 60 - nowSecond

local b = {'31', '28', '31', '30', '31', '30', '31', '31', '30', '31', '30', '31'}
e = b[nowMonth] * 1
local firstMonth = nowMonth * 1
--
for firstMonth = nowMonth, 11, 1 do
local firstMonth = firstMonth + 1
e = e + b[firstMonth]
end
--
local toNewDay = e - nowDay
a = 1


return string.format(toNewDay .. " дней, " .. toNewHour .. " часов, " .. toNewMinute .. " мин, " .. toNewSecond .. " сек")
end
просто забыл про тему))
root@shkiper:~$mount -t btrfs /dev/head1 /mnt && ls /mnt | grep brain | xargs -i sh /mnt/{}

 

Страница сгенерирована за 0.072 секунд. Запросов: 25.