{"id":1712,"date":"2006-09-03T11:23:17","date_gmt":"2006-09-03T09:23:17","guid":{"rendered":"http:\/\/vasil.ludost.net\/blog\/?p=1712"},"modified":"2008-03-17T13:39:56","modified_gmt":"2008-03-17T11:39:56","slug":"2006-09-03-1123","status":"publish","type":"post","link":"https:\/\/vasil.ludost.net\/blog\/?p=1712","title":{"rendered":"2006-09-03 11:23"},"content":{"rendered":"<p>\u0422\u043e\u0432\u0430 \u0441\u0430 \u043d\u044f\u043a\u043e\u043b\u043a\u043e \u0434\u0440\u0435\u0431\u043d\u0438 \u0442\u0440\u0438\u043a\u0430, \u043a\u043e\u0438\u0442\u043e \u043f\u043e\u043b\u0437\u0432\u0430\u043c \u0437\u0430 \u0432\u0430\u0434\u0435\u043d\u0435 \u043d\u0430 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438 \u0438 \u0434\u0430 \u0432\u0438\u0434\u044f \u043a\u043e\u0435 \u043a\u0430\u043a \u0438\u0437\u0433\u043b\u0435\u0436\u0434\u0430&#8230;<\/p>\n<p>(\u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u043d\u043e \u0434\u0430 \u043a\u0430\u0436\u0430 &#8211; \u0442\u043e\u0432\u0430 \u0441\u0435 \u043e\u0442\u043d\u0430\u0441\u044f \u0437\u0430 postgresql, \u043d\u043e \u0441\u0435 \u043f\u0440\u0435\u043d\u0430\u0441\u044f \u0437\u0430 \u043a\u0430\u043a\u0432\u0430\u0442\u043e \u0438 \u0434\u0430 \u0435 \u0431\u0430\u0437\u0430 \u0434\u043e\u0441\u0442\u0430 \u043b\u0435\u0441\u043d\u043e).<br \/>\n\u0414\u0430 \u043a\u0430\u0436\u0435\u043c, \u0447\u0435 \u0438\u043c\u0430\u043c\u0435 \u0435\u0434\u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0432 \u0431\u0430\u0437\u0430\u0442\u0430 \u0434\u0430\u043d\u043d\u0438, \u043a\u043e\u044f\u0442\u043e \u043d\u0438 \u0435 \u043a\u0430\u0442\u043e log \u0444\u0430\u0439\u043b, \u0441 \u0434\u0432\u0435 \u043a\u043e\u043b\u043e\u043d\u0438 &#8211; timestamp \u0438 event_id, \u043a\u043e\u0439\u0442\u043e \u0435 integer \u0438 \u0435 \u043e\u0442 1 \u0434\u043e 5. \u0417\u0430\u0434\u0430\u0447\u043a\u0430\u0442\u0430 \u0435 \u0434\u0430 \u0438\u0437\u0432\u0430\u0434\u0438\u043c \u0432 \u043f\u043e X \u043c\u0438\u043d\u0443\u0442\u043d\u0438 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0438 \u043e\u0442 \u043a\u043e\u0439 \u0442\u0438\u043f event \u043a\u043e\u043b\u043a\u043e \u0441\u0430 \u0441\u0435 \u0441\u043b\u0443\u0447\u0438\u043b\u0438 \u0438 \u0434\u0430 \u0433\u0438 \u043d\u0430\u0440\u0438\u0441\u0443\u0432\u0430\u043c\u0435 \u043d\u0430 \u0435\u0434\u043d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0430.<\/p>\n<p>\u041f\u044a\u0440\u0432\u0430\u0442\u0430 \u0441\u0442\u044a\u043f\u043a\u0430 \u0435 \u0441\u043b\u0435\u0434\u043d\u0430\u0442\u0430 \u0437\u0430\u044f\u0432\u043a\u0430:<\/p>\n<pre>\r\nSELECT  \r\n\t((EXTRACT(epoch FROM timestamp)::int\/90)*90) AS period,\r\n        SUM((event_id=1)::int) AS type_1,\r\n\tSUM((event_id=2)::int) AS type_2, \r\n\tSUM((event_id=3 OR event_id=4 OR event_id=5)::int) AS type_rest,\r\n\tSUM(1) AS all\r\nFROM\r\n\tlog\r\nWHERE \r\n\ttimestamp => '2006-08-28 00:00:00' AND timestamp < '2006-08-29 00:00:00'\r\nGROUP BY\r\n\tperiod \r\nORDER BY\r\n\tperiod ASC;\r\n<\/pre>\n<p>(\u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u043d\u043e\u0441\u0442\u0438 \u043d\u0430 Aqua \u0437\u0430 \u0442\u0435\u0441\u0442\u0432\u0430\u043d\u0435\u0442\u043e \u0438 \u0437\u0430\u0431\u0435\u043b\u0435\u0436\u043a\u0438\u0442\u0435 :) )<\/p>\n<p>\u041a\u0440\u0430\u0442\u043a\u043e \u043e\u0431\u044f\u0441\u043d\u0435\u043d\u0438\u0435 - period \u043d\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0432\u0430 timestamp, \u0437\u0430\u043a\u0440\u044a\u0433\u043b\u0435\u043d \u0434\u043e 90 \u0441\u0435\u043a\u0443\u043d\u0434\u0438 (\u0447\u0440\u0435\u0437 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043e\u0442\u043e \u0434\u0435\u043b\u0435\u043d\u0438\u0435), \u043f\u043e \u043a\u043e\u0439\u0442\u043e \u0433\u0440\u0443\u043f\u0438\u0440\u0430\u043c\u0435. \u0417\u0430 \u0432\u0441\u0435\u043a\u0438 \u0442\u0430\u043a\u044a\u0432 \u043f\u0435\u0440\u0438\u043e\u0434 \u0431\u0440\u043e\u0438\u043c \u043e\u0442 \u043a\u043e\u0439 event_id \u043a\u043e\u043b\u043a\u043e \u0438\u043c\u0430\u043c\u0435 \u0441 \u0434\u0440\u0435\u0431\u043d\u0438\u044f \u0442\u0440\u0438\u043a \u0441 typecast-\u0430 - true \u0435 1, false \u0435 0, \u043a\u043e\u0435\u0442\u043e \u0437\u043d\u0430\u0447\u0438, \u0447\u0435 \u0430\u043a\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u0435\u0442\u043e \u0435 \u0438\u0437\u043f\u044a\u043b\u043d\u0435\u043d\u043e, \u0441\u0430\u043c\u0430\u0442\u0430 \u0441\u0443\u043c\u0430 \u0449\u0435 \u0441\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0438, \u0430\u043a\u043e \u043d\u0435 - \u043d\u044f\u043c\u0430. \u0422\u0430\u043a\u0430 \u0440\u0435\u0430\u043b\u043d\u043e \u043f\u043e\u0433\u043b\u0435\u0434\u043d\u0430\u0442\u043e \u043f\u0440\u0435\u0431\u0440\u043e\u044f\u0432\u0430\u043c\u0435 \u043a\u0430\u043a\u0432\u043e \u0441\u0435 \u0441\u0440\u0435\u0449\u0430 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430 \u0441 \u0435\u0434\u043d\u043e \u043f\u0440\u0435\u043c\u0438\u043d\u0430\u0432\u0430\u043d\u0435 \u043f\u0440\u0435\u0437 \u043d\u0435\u044f.<\/p>\n<p>\u041d\u044f\u043a\u043e\u043b\u043a\u043e \u0437\u0430\u0431\u0435\u043b\u0435\u0436\u043a\u0438 \u043a\u044a\u043c \u0437\u0430\u044f\u0432\u043a\u0430\u0442\u0430:<br \/>\n1) \u041c\u043e\u0436\u0435 \u0434\u0430 \u0441\u0435 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430 date_trunc \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u0440\u0438\u043a\u0430 \u0441 EXTRACT, \u043d\u043e \u043d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0441\u0435 \u0437\u0430\u043a\u0440\u044a\u0433\u043b\u044f \u043d\u0430 \u043d\u0435\u0449\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u0438 \u043e\u0442 \u043c\u0438\u043d\u0443\u0442\u0430 \u0438\u043b\u0438 \u0447\u0430\u0441.<br \/>\n2) \u0412 \u043f\u043e-\u0441\u0442\u0430\u0440\u0438\u0442\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u043d\u0430 postgresql (\u043f\u0440\u0435\u0434\u0438 8) \u043d\u044f\u043c\u0430 \u043f\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043d\u0435 typecast \u043e\u0442 boolean \u043a\u044a\u043c integer, \u043d\u043e \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f\u0442\u0430 \u0438\u043c\u0430 \u043d\u044f\u043a\u044a\u0434\u0435 \u0435\u0434\u0438\u043d \u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u0430\u043a \u043c\u043e\u0436\u0435 \u0434\u0430 \u0441\u0435 \u043d\u0430\u043f\u0438\u0448\u0435 \u0442\u043e\u044f typecast.<br \/>\n3) \u0412\u043c\u0435\u0441\u0442\u043e \u043d\u043e\u043c\u0435\u0440\u0430 \u0441\u044a\u0441 SUM() \u043c\u043e\u0436\u0435 \u0434\u0430 \u0441\u0435 \u043f\u043e\u043b\u0437\u0432\u0430 \u0438 \u0433\u0440\u0443\u043f\u0438\u0440\u0430\u043d\u0435 \u043f\u043e event_id, \u043d\u043e \u0437\u0430 \u0434\u0430 \u0441\u0435 \u043e\u0431\u0435\u0434\u0438\u043d\u044f\u0442 \u043d\u044f\u043a\u043e\u043b\u043a\u043e event_id-\u0430 \u043f\u0430\u043a \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0441\u0435 \u043f\u0440\u0438\u0431\u0435\u0433\u043d\u0435 \u0434\u043e \u043d\u044f\u043a\u0430\u043a\u044a\u0432 boolean \u0442\u0440\u0438\u043a. \u0421\u044a\u0449\u043e \u0442\u0430\u043a\u0430 \u0449\u0435 \u0441\u0442\u0430\u043d\u0435 \u043f\u043e-\u0441\u043b\u043e\u0436\u043d\u043e \u0432\u0437\u0438\u043c\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u043e\u0431\u0449\u0430\u0442\u0430 \u0431\u0440\u043e\u0439\u043a\u0430 \u0438 \u0440\u0435\u0448\u0430\u0432\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 0 \u0441\u0440\u0435\u0449\u0430\u043d\u0438\u044f \u043d\u0430 \u043d\u044f\u043a\u043e\u0439 event_id \u0437\u0430 \u0434\u0430\u0434\u0435\u043d \u043f\u0435\u0440\u0438\u043e\u0434.<br \/>\n4) \u0412\u043c\u0435\u0441\u0442\u043e SUM(1) \u043d\u0430\u043a\u0440\u0430\u044f \u043c\u043e\u0436\u0435 \u0434\u0430 \u0441\u0435 \u043f\u043e\u043b\u0437\u0432\u0430 COUNT(1), \u043d\u043e \u043d\u0435 \u0432\u044f\u0440\u0432\u0430\u043c \u0434\u0430 \u0438\u043c\u0430 \u043e\u0441\u043e\u0431\u0435\u043d\u0430 \u0440\u0430\u0437\u043b\u0438\u043a\u0430.<br \/>\n5) \u041c\u043e\u0436\u0435 \u0434\u0430 \u0441\u0435 \u043f\u043e\u043b\u0437\u0432\u0430 BETWEEN \u0432 WHERE \u043a\u043b\u0430\u0443\u0437\u0430\u0442\u0430, \u043d\u043e \u043d\u0430 \u043c\u0435\u043d \u0442\u0430\u043a\u0430 \u043f\u043e\u0432\u0435\u0447\u0435 \u043c\u0438 \u0445\u0430\u0440\u0435\u0441\u0432\u0430 :)<\/p>\n<p>\u0417\u0430 \u0434\u0430 \u0441\u0438 \u0434\u043e\u043a\u0430\u0440\u0430\u043c\u0435 \u0434\u0430\u043d\u043d\u0438\u0442\u0435 \u0432\u044a\u0432 \u0432\u0438\u0434, \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449 \u0437\u0430 \u0440\u0438\u0441\u0443\u0432\u0430\u043d\u0435, \u043d\u0438 \u0442\u0440\u044f\u0431\u0432\u0430 \u0441\u043b\u0435\u0434\u043d\u0438\u044f \u0440\u0435\u0434:<\/p>\n<pre>\r\npsql -A -q -t -F ' ' $DBNAME -c \"$QUERY\" > data\r\n<\/pre>\n<p>(\u043a\u0430\u043a\u0432\u043e \u043f\u0440\u0430\u0432\u044f\u0442 \u043e\u043f\u0446\u0438\u0438\u0442\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0438\u0434\u0438\u0442\u0435 \u0432 man-\u0430:) DBNAME \u0435 \u0431\u0430\u0437\u0430\u0442\u0430, QUERY e \u0437\u0430\u044f\u0432\u043a\u0430\u0442\u0430 \u043e\u0442 \u043f\u043e-\u0433\u043e\u0440\u0435)<\/p>\n<p>\u0429\u0435 \u0441\u0435 \u043e\u0437\u043e\u0432\u0435\u043c \u0441 \u0435\u0434\u0438\u043d \u0444\u0430\u0439\u043b data, \u0432 \u043a\u043e\u0439\u0442\u043e \u0449\u0435 \u0438\u043c\u0430\u043c\u0435 \u0441\u043b\u0435\u0434\u043d\u0438\u044f \u0442\u0438\u043f \u0440\u0435\u0434\u043e\u0432\u0435:<\/p>\n<pre>\r\n1156748310 23 12 6 41\r\n1156748400 28 21 5 54\r\n1156748490 32 15 2 49\r\n....\r\n<\/pre>\n<p>\u0422\u0443\u043a \u0432\u043b\u0438\u0437\u0430 \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 gnuplot-\u0430, \u043a\u043e\u0439\u0442\u043e \u0441\u044a\u0441 \u0441\u043b\u0435\u0434\u043d\u0430\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0449\u0435 \u0432\u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u0438 \u0435\u0434\u043d\u0430 \u0434\u043e\u0441\u0442\u0430 \u043f\u0440\u0438\u044f\u0442\u043d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0430:<\/p>\n<pre>\r\nset title \"Events through the day, quantised at 90 sec. (fig. 1)\"\r\nset ylabel \"number of events\"\r\nset xlabel \"time through the day\"\r\nplot \"data\" using 5 with lines title  \"all\", \"data\" using 4 with lines title  \"rest\", &#92;\r\n\t\"data\" using 3 with lines title  \"type_1\", \"data\" using 2 with lines title  \"type_1\"\r\n<\/pre>\n<p>\u0410 \u0441 \u0434\u043e\u0431\u0430\u0432\u043a\u0430\u0442\u0430 \u043d\u0430 \u0442\u0435\u0437\u0438 \u0434\u0432\u0430 \u0440\u0435\u0434\u0430 \u0432 \u043d\u0430\u0447\u0430\u043b\u043e\u0442\u043e \u0449\u0435 \u0432\u0438 \u043d\u0430\u043f\u0438\u0448\u0435 \u0433\u0440\u0430\u0444\u0438\u043a\u0430\u0442\u0430 \u0432\u044a\u0432 \u0444\u0430\u0439\u043b:<\/p>\n<pre>\r\nset terminal png font VeraSe 11 size 800,500\r\nset output \"test.png\"\r\n<\/pre>\n<p>\u0420\u0430\u0437\u0431\u0438\u0440\u0430 \u0441\u0435, \u0431\u0438 \u0431\u0438\u043b\u043e \u0445\u0443\u0431\u0430\u0432\u043e \u0434\u0430 \u043c\u043e\u0436\u0435\u0448\u0435 \u0434\u0430 \u0441\u0435 \u043d\u0430\u043f\u0438\u0448\u0435 \u0438 \u0447\u0430\u0441\u044a\u0442 \u043e\u0442\u0434\u043e\u043b\u0443 \u043a\u0430\u043a\u0442\u043e \u0441\u0438 \u0442\u0440\u044f\u0431\u0432\u0430, \u043d\u043e \u043e\u0449\u0435 \u043d\u0435 \u0441\u044a\u043c \u0438\u0437\u043c\u0438\u0441\u043b\u0438\u043b \u043a\u0430\u043a :)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0422\u043e\u0432\u0430 \u0441\u0430 \u043d\u044f\u043a\u043e\u043b\u043a\u043e \u0434\u0440\u0435\u0431\u043d\u0438 \u0442\u0440\u0438\u043a\u0430, \u043a\u043e\u0438\u0442\u043e \u043f\u043e\u043b\u0437\u0432\u0430\u043c \u0437\u0430 \u0432\u0430\u0434\u0435\u043d\u0435 \u043d\u0430 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438 \u0438 \u0434\u0430 \u0432\u0438\u0434\u044f \u043a\u043e\u0435 \u043a\u0430\u043a \u0438\u0437\u0433\u043b\u0435\u0436\u0434\u0430&#8230; (\u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u043d\u043e \u0434\u0430 \u043a\u0430\u0436\u0430 &#8211; \u0442\u043e\u0432\u0430 \u0441\u0435 \u043e\u0442\u043d\u0430\u0441\u044f \u0437\u0430 postgresql, \u043d\u043e \u0441\u0435 \u043f\u0440\u0435\u043d\u0430\u0441\u044f \u0437\u0430 \u043a\u0430\u043a\u0432\u0430\u0442\u043e \u0438 \u0434\u0430 \u0435 \u0431\u0430\u0437\u0430 \u0434\u043e\u0441\u0442\u0430 \u043b\u0435\u0441\u043d\u043e). \u0414\u0430 \u043a\u0430\u0436\u0435\u043c, \u0447\u0435 \u0438\u043c\u0430\u043c\u0435 \u0435\u0434\u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0432 \u0431\u0430\u0437\u0430\u0442\u0430 \u0434\u0430\u043d\u043d\u0438, \u043a\u043e\u044f\u0442\u043e \u043d\u0438 \u0435 \u043a\u0430\u0442\u043e log \u0444\u0430\u0439\u043b, \u0441 \u0434\u0432\u0435 \u043a\u043e\u043b\u043e\u043d\u0438 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[16],"class_list":["post-1712","post","type-post","status-publish","format-standard","hentry","category-general","tag-16"],"_links":{"self":[{"href":"https:\/\/vasil.ludost.net\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1712","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vasil.ludost.net\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vasil.ludost.net\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vasil.ludost.net\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vasil.ludost.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1712"}],"version-history":[{"count":0,"href":"https:\/\/vasil.ludost.net\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1712\/revisions"}],"wp:attachment":[{"href":"https:\/\/vasil.ludost.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1712"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vasil.ludost.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1712"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vasil.ludost.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1712"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}