Pull to refresh
0
Karma
0
Rating
LKkrelre lekrfe @sanchoyz

User

  • Followers 1
  • Following 2
  • Posts
  • Comments

Специалисты MIT предлагают сложить солнечную батарею гармошкой

Energy and batteries
Сегодня основное направление развития солнечной энергетики — разработка более дешёвых и эффективных фотоэлементов. Однако, даже если их эффективность приблизится к 100%, всё равно останется проблема низкой концентрации солнечной энергии — в среднем чуть больше киловатта на квадратный метр. Солнечные электростанции занимают очень много места. Кроме того, они плохо улавливают рассеянный свет и нуждаются в относительно дорогих механизмах слежения за солнцем, чтобы эффективно работать утром и вечером, а не только в полдень.

Исследователи Массачусетского Технологического Института подошли к проблеме с другой стороны. Они обратили внимание на то, что в современных солнечных электростанциях стоимость самих фотоэлементов составляет лишь около трети цены установки. Две трети приходится на механические конструкции, аккумуляторы, инверторы, арендную плату или налог на землю, на которой расположена электростанция.
Читать дальше →
Total votes 27: ↑26 and ↓1+25
Views8.6K
Comments 20

Встреча сочувствующих

Copyright
image

В Москве 11 ферваля в Пушкинском сквере в 17:00 состоится пикет против новых поправок в 4ю часть ГК. Но это будет не просто пикет, и даже не митинг в привычном смысле этого слова. Это будет встреча людей.

Будет уличная галерея свободной культуры. Рисуйте или находите изображения по антикопирайтной тематике. Распечатывайте их и приносите с собой.

Словом сказать это будет мирное мероприятие — приходите и просто так, не боясь получить дубиной по голове от милиционера.
Total votes 96: ↑78 and ↓18+60
Views199
Comments 92

моддинг wTorrent'a

Lumber room
Здравствуйте, господа.
Преамбула:
Неделю назад я купил себе дешёвый PC для организации на нём локального файл-сервера, роутера, качалки и прочих удобных сервисов, которые на десктопной машине держать надоело. Всё это дело крутится под gentoo.

Амбула:
Сегодня потратил вечер и немного подмоддил wTorrent:
Теперь он выглядит вот так:

Из нововведений:
1. Теперь он показывает общий объём траффика, in/out.
2. Представленный в центре страницы график входящего/исходящего трафика.

Рассмотрим пункт первый. Реализация его проста:
Добавляем в планировщик rtorrent'а правила. Делается это через ctrl+x в клиенте или добавлением строки в конфиг и перезапуск.
schedule=export_traffic,0,15,«execute=/var/www/localhost/htdocs/wtorrent/schedule/passthrough,$get_up_total=,$get_down_total=,/var/www/localhost/htdocs/wtorrent/schedule/traffic.rtorrent»
это правило каждые 15 секунд в файл traffic.rtorrent через маленький скрипт passthrough
#!/bin/sh
echo $1 $2 > $3

будет писать 2 числа: исходящий и входящий объём трафика. Сделано это потому, что через xmlrpc отдаётся signed integer, которое при объёме трафика > 2Гб ожидаемо уходит в отрицательный диапазон :-) Как его научить отдавать большие числа я не нашёл — поэтому пришлось сделать такой костыль.

Теперь в rtorrent.cls.php добавим следующие три метода:
private function getTrafficInfo()
{
static $data;

if (!$data){
if (is_file('./schedule/traffic.rtorrent')) {
$data = file('./schedule/traffic.rtorrent');
$data = explode(' ', $data[0]);
} else {
$data = array(0, 0);
}
}

return $data;
}

public function getDownTotal()
{
if ($data = $this->getTrafficInfo()) {
return $this->getCorrectUnits($data[1]);
}

return $this->getCorrectUnits($this->get_info_rtorrent('get_down_total', false, false));
}

public function getUpTotal()
{
if ($data = $this->getTrafficInfo()) {
return $this->getCorrectUnits($data[0]);
}

return $this->getCorrectUnits($this->get_info_rtorrent('get_up_total', false, false));
}

которые просто извлекают из файла экспортируемые торрент-клиентом числа. Теперь в шаблоне menu.tpl.php просто покажем эти два числа:
{$str.dw_rate} {$web->getDownload()} ({$web->getDownTotal()})
{$str.up_rate} {$web->getUpload()} ({$web->getUpTotal()})

добавив их в скобки после блоков с текущей скоростью.

Задача рисования графика немногим более сложная.
Для её реализации мы добавляем ещё одно правило в планировщик:
schedule=import_traffic,0,60,«execute=/usr/bin/php,-f,/var/www/localhost/htdocs/wtorrent/schedule/bandwidth.php»
это правило каждую минуту запускает php-скрипт:
<?php

chdir(dirname(__FILE__));

$datafile = './traffic.rtorrent';

if (is_file($datafile)) {
$data = file($datafile);
list($out, $in) = explode(' ', $data[0]);

$out = (double)$out;
$in = (double)$in;

require_once '../conf/user.conf.php';

$db = new PDO(DB_STAT_DSN, DB_STAT_LOGIN, DB_STAT_PWD);

$qry = 'SELECT `in`, `out`, `time` FROM `bandwidth` ORDER BY `id` DESC LIMIT 1';
$stmt = $db->query($qry);

$delta_in = 0;
$delta_out = 0;

if ($row = $stmt->fetch()) {
if ($in >= $row['in'] && $out >= $row['out']) {
$delta_in = $in - $row['in'];
$delta_out = $out - $row['out'];
}
}

$db->query('INSERT INTO `bandwidth` (`in`, `delta_in`, `out`, `delta_out`, `period`) VALUES (' . $in . ', ' . $delta_in . ', ' . $out . ', ' . $delta_out . ", TIME_TO_SEC(TIMEDIFF(NOW(), '" . $row['time'] . "')))");
}

?>


Этот примитивный скрипт сравнивает текущие значения трафика в файле traffic.torrent и на основании этих данных записывает в базу текущие значения и разницу с предыдущими.

Вот схема БД и таблицы, в которую скрипт пишет данные:
CREATE DATABASE `rtorrent`
CHARACTER SET 'utf8'
COLLATE 'utf8_general_ci';

CREATE TABLE `bandwidth` (
`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
`in` BIGINT(20) DEFAULT NULL,
`delta_in` BIGINT(20) DEFAULT NULL,
`out` BIGINT(20) DEFAULT NULL,
`delta_out` BIGINT(20) DEFAULT NULL,
`time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`period` INTEGER(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `time` (`time`)
)ENGINE=MyISAM
AUTO_INCREMENT=1 ROW_FORMAT=FIXED CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';


Осталось совсем немного :-) Скрипт, рисующий график будет использовать jpgraph. Вот содержание самого скрипта:

<?php

include "../../lib/jpgraph/jpgraph.php";
include "../../lib/jpgraph/jpgraph_line.php";
include "../../lib/jpgraph/jpgraph_scatter.php";
include "../../lib/jpgraph/jpgraph_regstat.php";

include "../../conf/user.conf.php";

$db = new PDO(DB_STAT_DSN, DB_STAT_LOGIN, DB_STAT_PWD);

$stmt = $db->query('SELECT SUM(`delta_in`) / 1024 / SUM(`period`) AS `in`,
SUM(`delta_out`) / 1024 / SUM(`period`) AS `out`,
MAX(`time`) AS `time`
FROM `bandwidth`
WHERE `time` > DATE_SUB(NOW(), INTERVAL 12 HOUR)
GROUP BY CONCAT(DATE(`time`), HOUR(`time`), FLOOR(MINUTE(`time`) / 5))
ORDER BY `time`');
$x = $in = $out = array();
while ($row = $stmt->fetch()) {
$ts = strtotime($row['time']);
$x[] = $ts;
$in[] = $row['in'];
$out[] = $row['out'];
}

// Setup the basic graph
$graph = new Graph(800, 400);
$graph->SetMargin(30, 10, 0, 30);
$graph->title->Set('Bandwidth, KB/s');
$graph->SetAlphaBlending();

// Setup a manual x-scale (We leave the sentinels for the
// Y-axis at 0 which will then autoscale the Y-axis.)
// We could also use autoscaling for the x-axis but then it
// probably will start a little bit earlier than the first value
// to make the first value an even number as it sees the timestamp
// as an normal integer value.
$graph->SetScale("intlin", 0, max(max($out), max($in)) * 1.1, reset($x), end($x));
$graph->xgrid->Show();
$graph->yaxis->HideZeroLabel();
$graph->SetFrame(false);

function TimeCallback($aVal) {
return Date('H:i',$aVal);
}
// Setup the x-axis with a format callback to convert the timestamp
// to a user readable time
$graph->xaxis->SetLabelFormatCallback('TimeCallback');
//$graph->xaxis->SetLabelAngle(90);

// Create the line
$p1 = new LinePlot($out, $x);
$p1->SetColor("red");

$p2 = new LinePlot($in, $x);
$p2->SetColor("blue");

// Add lineplot to the graph
$graph->Add($p1);
$graph->Add($p2);

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Cache-Control: post-check=0,pre-check=0");
header("Cache-Control: max-age=0");
header("Pragma: no-cache");

// Output line
$graph->Stroke();

?>


Вначале мы подключаем необходимые библиотеки. Затем — простым запросом выбираем данные из базы. Причём аггрегируем их в интервалы по 5 минут, чтобы график получался более усреднённым и плавным. Затем — на основе примеров, идущих с jpgraph, «собираем» график нужного вида. Полученный код помещаем в файл wt/img/bandwidth.php.

Ну и самое последнее — отображение полученного графика на странице wtorrent.

Добавляем пункт меню. Это делается также в файле rtorrent.cls.php, добавлением элемента 'Graphic' => 'Graphic' в ассоциативный массив с меню menu_admin.
Потом — создаём класс, который будет управлять отображением страницы Graphic.cls.php:

<?php

class Graphic extends rtorrent
{
public function construct()
{
if(!$this->setClient())
{
return false;
}
}
}
?>


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


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

PS: все исходники, которые приводились выше, можно скачать тут.
Total votes 38: ↑23 and ↓15+8
Views363
Comments 25

Автоматизация utorrent'a

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

В utorrent'е есть возможность обрабатывать RSS-ленту трекера и с помощью фильтров скачивать только необходимое, а также возможность гибко использовать планировщик. Наверняка многие уже знают о настройке, некоторым это не нужно принципиально. Статья ориентирована на тех, кто о данных возможностях не знал или руки не доходили попробовать, разобраться, настроить.

Поехали...
Total votes 41: ↑41 and ↓0+41
Views2.2K
Comments 45

Что чувствует программа?

Artificial Intelligence

Предисловие


Представляю вашему вниманию очередную часть опуса о мыслящей программе. Это не самостоятельная статья, а логическое продолжение первой части, так что всех «новеньких» настоятельно прошу пройти по ссылке. А пока мы их ждем, можете заварить себе кофе (чай, сделать морс, возможно, что-то покрепче) и приготовиться к активной мыслительной деятельности – информации много. Сегодня в центре внимания будут органы чувств.
Читать дальше →
Total votes 9: ↑7 and ↓2+5
Views1.2K
Comments 35

Письмо Президенту России — 2. Ожидание.

Lumber room
После отправки письма в Администрацию Президента России у меня возник вопрос: почему наш прогрессивный блоггер №1 Президент и не менее прогрессивная Администрация не используют любую простейшую тикетную систему для работы с поступающими обращениями граждан?

На мой взгляд, от внедрения такой системы будут исключительно положительный эффект как для самих работников Администрации, так и для обращающихся граждан, которые не будут неделями ожидать ответа по оффлайновой почте.
Total votes 13: ↑5 and ↓8-3
Views123
Comments 16

Правительство Латвии подсчитало ущерб от советской власти. Только цифры

Statistics in IT
Только что прочитал на Ленте заметку о том, что правительство Латвии каким-то образом всё-таки смогло оценить ущерб от советской власти. И что же выяснилось? Выяснилось, что «прямые демографические потери» составляют 10 миллионов человеко-лет.

Интересно, сколько это? в статье говорится, что это доход, который один человек может сформировать за 10 миллионов лет.

развиваем мысль
Total votes 147: ↑84 and ↓63+21
Views372
Comments 230

Куда уходят деньги в наших школах?

Studying in IT
Сегодня от младшей сестры узнал, что у них в компьютерном классе стоит 10 стареньких вторых пней с 98-й виндой. Год назад собирали деньги на новый компьютерный класс — обещали купить 30 машин. Причём на те деньги, что собрали — ~$25к, можно было купить очень приличные PC. Как видим, кто-то решил, что полезнее будет построить новенький домик на даче. Бумаг никаких не подписывали, просто сдали по 1000 рублей с ребёнка. Школа общеобразовательная.

Меня лично такое поведение школьной администрации взбесило — хочу крови. Как грамотнее поступить в таком случае?

P.S.
тематика, конечно, не совсем ИТ-шная, но связь с ИТ имеется. Подрастающее поколение, как-никак.
Читать дальше →
Total votes 161: ↑147 and ↓14+133
Views235
Comments 99

Microsoft раздаёт «Боекомплект разработчика»

IT-companies
Сегодня мне на e-mail пришло письмо из Microsoft, с предложением подписаться на бюллетень MSDN. В качестве бонуса, подписавшимся с 16 по 23 октября бесплатно высылается «Боекомплект разработчика». Что в него входит и как получить читаем под катом.
Читать дальше →
Total votes 99: ↑81 and ↓18+63
Views1.8K
Comments 235

Развитие объектного мышления у студентов

Studying in IT
Всем привет.

Давно перед преподавателями стоит задача научить студентов мыслить объектно. Задача сложная. Объяснить такие вещи трудно, можно только попробовать показать это на примерах. Да и то, примеры эти, чаще всего не дают представления о том, чего же хочет преподаватель.

Сегодня на ленте предложил студентам второго курса интересную задачку на развитие объектного мышления. Подробности дальше.
Читать дальше →
Total votes 135: ↑115 and ↓20+95
Views8.8K
Comments 106

Делу время: как не отвлекаться во время работы

Freelance
Сегoдня хoчу пoделиться наблюдениями пo пoвoду тех вещей, кoтoрые мoгут oтвлекать нас вo время рабoты. Вижу удивлённые лица. Да, мне тoже казалoсь, чтo этoт вoпрoс несущественен.



Нo статистика пoказывает: любoй раздражитель, oтвлекающий oт рабoты, забирает oт 3 дo 10 минут рабoчегo времени. Если рабoтая над макетoм, вы oтветите кoму-тo в icq, тo внимание рассеивается и чтoбы вернуться в рабoчий настрoй, вам пoтребуется некoтoрoе время.

А имея пoд рукoй 5-10 таких раздражителей, мы мoжем терять дo пары часoв в день на несущественные дела. Итак, как же мы мoжем не oтвлекаться вo время рабoты?

Читать дальше →
Total votes 106: ↑82 and ↓24+58
Views16K
Comments 140

Задача 1999

Entertaining tasks
Прочёл статью Полезные билетики и вспомнил далёкий 1999 год, когда где-то в каком-то журнале отыскал, как мне показалось, довольно занятную задачку. Сразу оговорюсь, что условие схоже с вышеупомянутой статьёй, однако есть нюансы. Смысл её
под катом
Total votes 22: ↑20 and ↓2+18
Views649
Comments 132

Хабра в финале!

Habr
Когда вопрос участия Хабрахабр в Народном голосовании 2008 поднялся впервые, многие писали, что это фуфло и безрезультатно. В то время те, кто меньше философствовал и больше действовал добились результата — благодаря им проект успешно попал в финал!

Народное голосование
В финале проекты выводятся не случайным образом, а сортируются по доступному теперь количеству голосов. Пусть большой разрыв в количестве голосов не смущает: за годы существования Премия видела самые непредсказуемые «рывки» и «падения».

Остается верить и голосовать!
Total votes 119: ↑95 and ↓24+71
Views401
Comments 150

Сервис Вопросы-Ответы: как правильно дать ответить на вопрос?

Interfaces

Доброго времени суток, уважаемые Хабрапользователи!



Некоторое время назад мы начали разрабатывать систему вопросов-ответов (две малоизвестные компании уже создали по аналогу: ответы mail.ru или ответы Google). И мы, кроме прочего, поставили задачу избавиться от всех недочётов и проблем, которые мы выявили в существующих подобных системах.
Итак, ...
Total votes 10: ↑8 and ↓2+6
Views3.3K
Comments 11

Information

Rating
Does not participate
Registered
Activity