Pull to refresh
0
0
LKkrelre lekrfe @sanchoyz

User

Send message

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

Reading time 2 min
Views 16K
Сегодня основное направление развития солнечной энергетики — разработка более дешёвых и эффективных фотоэлементов. Однако, даже если их эффективность приблизится к 100%, всё равно останется проблема низкой концентрации солнечной энергии — в среднем чуть больше киловатта на квадратный метр. Солнечные электростанции занимают очень много места. Кроме того, они плохо улавливают рассеянный свет и нуждаются в относительно дорогих механизмах слежения за солнцем, чтобы эффективно работать утром и вечером, а не только в полдень.

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

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

Reading time 1 min
Views 435
image

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

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

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

моддинг wTorrent'a

Reading time 5 min
Views 747
Здравствуйте, господа.
Преамбула:
Неделю назад я купил себе дешёвый 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
Comments 25

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

Reading time 4 min
Views 5.5K
Один раз настроить, потом не трогать долго-долго — мечта любого оптимизатора. Так можно настроить торрент-клиент на автоматическую работу, чтобы не тратить время на посещения сайтов-трекеров.

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

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

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

Reading time 10 min
Views 2.2K

Предисловие


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Reading time 2 min
Views 13K
Всем привет.

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

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

Задача 1999

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

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

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

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

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

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

Reading time 2 min
Views 3.9K

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



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

Information

Rating
Does not participate
Registered
Activity