LINUX.ORG.RU

Сообщения division_hell

 

2ip, разные gw

Форум — Admin

Добрый день.

В мануале написано:

An alias interface should not have «gateway» or «dns-nameservers»;

А как быть, если ip адреса из разных сетей, которые висят на двух разных железках? Можно ли это настроить из `/etc/network/intefaces`?

Я бы попробовал, но суббота, если что - ехать придется, а емкости вышестоящий пров уже вот-вот поменяет.

И еще, если я все правильно понимаю, если бы обе подсети обслуживались одной и той же железкой, то можно было бы использовать один gw для обеих сетей?

-------

Не совсем понимаю такую тему. Предположим, на внутреннем интерфейсе роутера висит ip 192.168.200.1, на нем же висит сетка 33.33.33.1, - на том же интерфейсе. Я беру 2 ip: 192.168.200.22 и 33.33.33.22. Если я буду пихать исходящий трафик с src `33.33.33.22` через gw `192.168.200.1` - ничего, что сетка src не совпадает с сеткой шлюза? Или это зависит от настройки шлюза?

 ,

division_hell
()

Передача данных между серверами

Форум — Web-development

Добрый день.

Есть сервер «А», занимающийся раздачей сервисов. Сервер пишет данные в табличку со статистикой по факту использования услуг. Таких серверов может быть много.

Есть веб-сервер «Ы», который занимается подключением услуг клиенту, отображением данных и т.д. Дело в том, что сервер А иногда должен спрашивать у Ы информацию по тарифам и услугам (чтобы на месте их тарифицировать), а с веб-морды сервера Ы клиент должен иметь доступ к данным статистики сервера А. Биллинг и статистика в mysql.

Вся информация (кроме файлов, которые будут улетать либо через sshfs, либо ftp) представлена в табличном виде, хранится в мускуле. Меня терзает вопрос: как бы грамотно организовать передачу данных между веб-мордой и серверами, фактически оказывающими услуги? Можно разрешить мускулам А-Ы ремот-логины, чтобы они забирали данные по требованию друг у друга, но это как-то некрасиво. Можно на А-серверы поставить апач (который там вообще-то не нужен) и отдавать запрошенные данные через http-ответы json'ами.

При авторизации на сервере Ы можно выдавать юзер-js токен, с которым будет позволено обращаться к серверу А, и они сами будут забирать данные. Но тут тоже некрасиво получается: если клиент оборзеет, то я не смогу его контролировать (для контроля придется снова обмениваться данными А<->Ы).

Централизованный MySQL поставить нельзя по ТЗ.

 , ,

division_hell
()

r210, sda Got wrong page / Assuming drive cache: write through

Форум — Linux-hardware

Привет.

dmesg Тут Поставил wheezy на r210, во время загрузки появляется сие безобразие:

[   20.175104] scsi6 : ioc0: LSISAS1068E B3, FwRev=00192f00h, Ports=1, MaxQ=266, IRQ=16
[   20.212421] mptsas: ioc0: attaching sata device: fw_channel 0, fw_id 8, phy 0, sas_addr 0x1221000000000000
[   20.224982] scsi 6:0:0:0: Direct-Access     ATA      SAMSUNG HE253GJ  0001 PQ: 0 ANSI: 5
[   20.228523] mptsas: ioc0: attaching sata device: fw_channel 0, fw_id 1, phy 1, sas_addr 0x1221000001000000
[   20.241088] scsi 6:0:1:0: Direct-Access     ATA      SAMSUNG HE253GJ  0001 PQ: 0 ANSI: 5
[   20.244875] mptsas: ioc0: attaching raid volume, channel 1, id 0
[   20.245914] scsi 6:1:0:0: Direct-Access     Dell     VIRTUAL DISK     1028 PQ: 0 ANSI: 5
[   20.258408] sd 6:1:0:0: [sda] 487063552 512-byte logical blocks: (249 GB/232 GiB)
[   20.259166] sd 6:1:0:0: [sda] Write Protect is off
[   20.259172] sd 6:1:0:0: [sda] Mode Sense: 03 00 00 08
[   20.259434] sd 6:1:0:0: [sda] Got wrong page
[   20.259494] sd 6:1:0:0: [sda] Assuming drive cache: write through
[   20.260950] sd 6:1:0:0: [sda] Got wrong page
[   20.261009] sd 6:1:0:0: [sda] Assuming drive cache: write through
[   20.302918]  sda: sda1 sda2 sda3 < sda5 sda6 >
[   20.305534] sd 6:1:0:0: [sda] Got wrong page
[   20.305593] sd 6:1:0:0: [sda] Assuming drive cache: write through
[   20.305654] sd 6:1:0:0: [sda] Attached SCSI disk

Про Assuming direct control drive cache говорится в документации про perc5 (но у меня 6):

....
Except for this message, there is no side effect to this behavior. The cache policy of the virtual disk and the I/O throughput are not affected by this message. The cache policy settings for the PERC5 SAS RAID system remain the settings you have already chosen.

Вроде бы ничего страшного, но посыпавшиеся рейды наводят на меня панический страх, поэтому если таки все хорошо, я был бы рад услышать это от владельца r210.

p.s. В sas-тузле на этапе загрузки нет установки -back -through (или я ее не увидел, или не там смотрел).

 , r210, , write-through

division_hell
()

Жирный граф

Форум — General

Добрый день.

Появилось тут желание построить граф какого-нибудь сообщества. Парсер трудится не покладая того, чем он там трудится, надергано уже 30к юзеров с разными данными.

Может потом задамся целью попробовать связать по никнеймам разные сообщества на разных ресурсах, но пока меня интересует более практичный вопрос, а именно, чем отрисовать все это?

Пробовал кое-что из этого списка, по производительности не айс. Пробовал еще UbiGraph, но дальше 1к нод - тормоза. GraphViz тоже не справляется.

Остальное - неудобный импорт, или мозголомное API, плюс на страницах этих решений я не нашел явного указания производительности, поэтому разбираться в том, что может не пригодиться желания нет.

Вопрос: какое решение потянет ~1м нод со связями?

Пока есть предощущение, что таких (по возможности бесплатных) инструментов нет, и придется изобретать свой велосипед. Может попробую поюзать script-engine 3d max'a (с которым я не знаком, но знаком с 3дмаксом), или поюзать блендер (с которым я вообще не знаком).

В общем, чем ныне белые люди строят графы соц. сетей?

----

Also: gource, но «Software projects are displayed by Gource as an animated tree with the root directory of the project at its centre. Directories appear as branches with files as leaves. Developers can be seen working on the tree at the times they contributed to the project.»

Выглядит симпатично, но гоурс решает слишком конкретную задачу, если я ничего не перепутал.

division_hell
()

[python] multiprocessing, обмен данными между процессами

Форум — Development

Всем привет.

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

__author__ = 'user'
import multiprocessing
from time import sleep

class A:
    def __init__(self, num_proc=4):
        self.m = multiprocessing.Manager()
        self.tasks_done = self.m.list()

        self.q = multiprocessing.Queue()

        self.num_proc = num_proc


    def worker(self):
        while True:
            task = self.q.get()
            print task
            self.tasks_done.append(task)

            for i in range(task-5, task+5):
                if i not in self.tasks_done:
                    self.q.put(i)


    def init_processes(self):
        for i in range(self.num_proc):
            p = multiprocessing.Process(target=self.worker)
            p.daemon = True
            p.start()
        p.join()


    def add_task(self, i):
        self.q.put(i)


#if __name__ == '__main__':
a = A()
a.add_task(100)
a.init_processes()

Условие «if i not in self.tasks_done:» в цикле выполняется настолько редко, что почти вся очередь состоит из дубликатов. Без lock.acquire/release это сделать как-нибудь можно? И в чем в таком случае назначение этого менеджера?

 

division_hell
()

[python], lxml HtmlElement, получить его source

Форум — Web-development

Всем привет.

Суть такая: получаю HtmlElement, а сохранить нужно его сорцы. Текст можно выдрать через text_content(), а сорцы как?

 

division_hell
()

SATA ram-cache - есть ли такое?

Форум — Linux-hardware

Всем привет.

Любопытно: существует ли девайс, кэширующий обращения к винту? Т.е.:

mb_controller -> cache_proxy -> sata-drive

Ибо мозги нынче весьма дешевые, 16г 3го ддр можно взять за 100+ уе...

division_hell
()

fusepy, распределенная фс на redis

Форум — Development

Всем привет.

Доковырял до более-менее работоспособного состояния распределенную ФС на редисе. Штука пока экспериментальная, косяков и прочих недочетов много. В качестве проверки заливал авишку на 2 гига и пару альбомов - работает адекватно. Еще файрфокс запускал - тоже не жаловался. А вот скомпилить ядро не удалось: make после CC, наверное, во время линкования крашится, жалуясь на память.

Все вкучу:

  • нет flush()
  • как следствие, запись без буфера
  • нет lock()
  • по какой-то причине link() вызвать так и не удалось, поэтому жестких ссылок нет
  • таблица файлов в мускуле
  • файлы разбитые на чанки хранятся в редисах
  • запись с пересечением границы в chunk_size дико тормозит, возможно, из-за необходимости чтения (и еще почему-то медленно Queue.put() работает)
  • сам Fuse() работает в одном потоке (чтение/запись многопоточная)
  • буфер чтения пока растет неограниченно, а убивается только во время записи
  • ноды для хранения выбираются автоматически (правда статистика пока не сохраняется, поэтому выбор всегда один и тот же)
  • load_balance на уровне выбора ноды с минимальным read_requests
  • save/load чанков происходит через бэкенд, поэтому вместо редиса можно будет попробовать что-нибудь другое

mysqlfiletable.py занимается сохранением/чтением из мускула

rcluster.py занимается самими данными

Критика кода и все остальное приветствуется. Хотя я сильно сомневаюсь, что это все кому-то надо :D

rdfs2.tar.gz

division_hell
()

fuse, поведение ФС

Форум — Development

Добрый вечер. Продолжая тему "FusePy и смежные вопросы".

Я хочу сделать write buffer, но возникает вопрос: нужно, стоит ли из него читать? Предположим такую ситуацию:

Процесс А открывает файл в режиме rw. Процесс Б открывает тот же файл в этом же режиме. Процесс А пишет в файл 4к данных по смещению 4к.

Теперь мы читаем тот же сегмент по смещению 4к. Если flush НЕ вызван, то что должен прочитать процесс А и процесс Б?

Проблема чтения из write-buffer'а осложнена тем, что мы не можем выделить непрерывный сегмент под запись: клац

Другими словами, нет гарантии, что запись будет последовательна. А значит для чтения из writebuffer'a придется читать всю очередь записи для текущего хендла.

division_hell
()

FusePy и смежные вопросы

Форум — Development

1. Можно ли считать ФС полноценной без xattr? Т.е. насколько их поддержка на самом деле нужна?

2. Использует ли ФС и ее софт st_nlink? Т.е. является ли адекватная информация там жизненно важной хотя бы для чего-то?

3. От каких uid/gid положено производить манипуляции с nod'ами? По дефолту, как я вижу, оно пишет от рута, а touch/mkdir не изменяют uid/gid записанных файлов. Т.е. если я трогаю /mpoint/something_brown от имени user, то файл будет создан от рута. Верно ли тут юзать fuse_get_context(), или дефолтное поведение является правильным ?

4. Вопрос по жестким ссылкам. Они вообще не создаются, link() не вызывается.

link mpoint/111/ mpoint/222
link: невозможно создать ссылку «mpoint/222» на «mpoint/111/»: Операция не позволяется
-> getattr / (None,)
<- getattr {'st_nlink': 2, 'id': 0, 'st_mode': 16877}
-> getattr /111 (None,)
<- getattr {'st_mtime':  'id': 50L ....}
-> getattr /222 (None,)
<- getattr '[Errno 2] No such file or directory'
По логу она даже не попыталась вызывать link()

При этом аналогичная строка выполняется для хоста:

touch /tmp/shi
link /tmp/shi /tmp/shi1
ls -lah /tmp | grep shi
-rw-r--r--  2 user user       0 Фев  6 06:12 shi
-rw-r--r--  2 user user       0 Фев  6 06:12 shi1

5. С какими правами должен монтироваться корень? По дефолту он «st_mode=(S_IFDIR | 0755), st_nlink=2» - сойдет?

6. Блокировками должна заниматься ОС через lock() / release()?

division_hell
()

python-fuse, отладка

Форум — Development

Переписываю одну псевдо-фс на питоне. При запуске fuse_main в скрипте, родительский процесс загибается, поэтому возникает проблема с отладкой: если происходит какой-то рантайм-треш, то как его выловить?

Я понимаю, что можно точно также прицепить отладчик, но в некоторых местах мне вполне хватило бы обычного принта, который, однако, после форка вываливается неизвестно куда.

Сейчас debug-out у меня направлен файл, который я палю на втором мониторе, но это как-то не очень удобно. Как поступают в таких ситуациях белые люди?

division_hell
()

WYSIWYG bbcode

Форум — Web-development

Здравствуйте.

Интересует сабж. Из того что я посмотрел/потестил:

- cleditor. Есть bb-code плагин, но создает <div> мусор. Нет тегов code и quote

- tinyeditor/nicedit. Вроде как аналогично не умеет quote/code

- TinyMCE / CKeditor / elrte - толстые

- WYMeditor

Собственно, идеальный вариант - это cleditor, но не создающий мусора. С js я почти не знаком, поэтому вариант до- пере- пиливания - последний.

Есть вариант пройтись re с целью преобразования html->bbcode на сервере, но нужен редактор, который не создает мусора.

Или wysiwyg на форумах не нужен?

division_hell
()

[django] class User

Форум — Web-development

Продолжаю ковырять django. На этот раз дело дошло до регистрации юзеров. Дело в том, что мне нужно, чтобы все производные объекты ресурса хранились в FObjects, чтобы дерево наследований не обрывалось на юзере.

Способ с наследованием от User кажется громоздким (http://djbook.ru/examples/6/), да вдобавок я не против использования Profile'ов.

Задача просто в том, чтобы pk User был равен pk в FObject. Т.е. сначала создается объект, через который строится дерево наследований, а потом к нему добавляется юзер с существующим pk. Можно в своей модели сделать что-то типа «user = User.objects.create_user(..); User.objects.filter(user.id).update(id=33)» Но не моветон ли это?

Вдобавок, впоследствии я буду пытаться прикручивать openid...

 

division_hell
()

[django] ORM, «сложные» запросы

Форум — Web-development

Что-то я совершенно не понимаю как работать с этой ORM. Есть список типов объектов. Он нужен для того чтобы автоматически подбирать нужное представление вслепую, когда мы заранее не знаем что, где и как придется отображать.

class ObjectType(models.Model):
    name        = models.CharField(max_length=32)
    table_name  = models.CharField(max_length=32)
    class_name  = models.CharField(max_length=32)
    template_name = models.CharField(max_length=64, null=True, blank=True)

Таблица с объектами, которая содержит ключ к самой себе и к типу объекта, чтобы впоследствии можно было отобразить разные элементы с общим parent.

class FObject(models.Model):
    parent      = models.ForeignKey('self', null=True, blank=True, related_name='object_parent') 
    object_type = models.ForeignKey(ObjectType)    
    created     = models.DateTimeField(auto_now_add=True)
    owner       = models.ForeignKey('self', null=True, blank=True, related_name='object_owner')

Мне, по-хорошему, нужно получить объединенные таблицы, а не одну модель, отфильтрованную по полю другой. Предположим, нужно отобразить все объекты с parent=NULL. Для этого сначала нужно выбрать имена шаблонов, имена классов ( чтобы потом сделать что-то типа mysite.blog.models.__dict__[object_type.class_name] ), т.е.

ObjectType.objects.filter(fobject__parent=None)
Потом мне еще раз нужно выбрать те же самые объекты:
FObject.objects.filter(fobject__parent=None)

Хотя их можно было выбрать все сразу:

SELECT * FROM fobject JOIN objecttype ON fobject.object_type_id=objecttype.id

Как быть?

 

division_hell
()

[Django] автоматические создание внешних ключей

Форум — Web-development

Существует модель для объектов следующего вида:

class FObject(models.Model):
    parent      = models.OneToOneField('self', null=True, blank=True, db_column='parent')
    object_type = models.ForeignKey(ObjectType)
    created     = models.DateTimeField(auto_now_add=True)
    
    def __unicode__(self):
        return str(self.id)
Типы объектов:
class ObjectType(models.Model):
    name        = models.CharField(max_length=32)
    table_name  = models.CharField(max_length=32)
    class_name  = models.CharField(max_length=32)
    
    def __unicode__(self):
        return self.name

И любой произвольный класс:

class SomeClass(models.Model):     
    object_id   = models.OneToOneField(FObject, primary_key=True, related_name='object_id', db_column='object_id')
    owner       = models.OneToOneField(FObject, related_name='owner', db_column='owner')    
    body        = models.TextField()

Есть ли способ автоматического создания записи FObject при создании записи SomeClass? Или способ как-нибудь подсунуть свой обработчик, который создаст нужную запись и вернет недостающие ключи, или что-то в этом духе?

p.s. Django я ковыряю последние несколько дней, поэтому не особо в курсе методов работы с этим фреймворком.

 

division_hell
()

[novice] div css для мессаги форума

Форум — Web-development

Здравствуйте.

Возникла задача написать мелкий форум, попутно решил попробовать освоить верстку div'ами. Неуспешно :) Как я хочу увидеть это в html:

    <div class='message'>
        <div class='message-user-info'>
            Posts: 49230
        </div>
        
        <div class='message-container'>
            <div class='message-title'>
                title
            </div>
            <!-- <hr/> -->
            <div class='message-body'>
                content
            </div>
        </div>
        
        <div class='message-info'>
            message-info
        </div>
    </div>

Как я попытался это описать в css

.message {
    padding: 10px 10px 10px 10px;
    /*min-width: 90%;
    min-height: 100px;
    */
    width: 100%;
    height: 100%;
    
    background: pink;
    border-radius: 10px;
}

.message-user-info {
    padding: 10px 10px 10px 10px;
    min-height: 100px;
    min-width: 100px;
    background: lightgreen;
    border-radius: 10px;
    
    float: left;
}

.message-container {
    padding: 10px 10px 10px 10px;
    min-height: 100px;
    min-width: 300px;
    width: 100%;
    
    background: black;
    border-radius: 10px;
    
    float: left;
}


.message-title {
    padding: 10px 10px 10px 10px;
    min-height: 100px;
    background: cyan;
    border-radius: 10px;
}

.message-body {
    padding: 10px 10px 10px 10px;
    min-height: 100px;
    background: white;
    border-radius: 10px;
}

.message-info {
    padding: 10px 10px 10px 10px;
    min-height: 100px;
    background: brown;
    border-radius: 10px;
    
    float: left;
}

Как это должно выглядеть.

Дело в том, что я что-то совершенно не понимаю как сделать инкапсуляцию, к примеру как в layout'ах того же Qt.

division_hell
()

Quake4, aspect ratio

Форум — Games

Здравствуйте.

У меня twinview, gt240. Один монитор 1440*900, другой 1366*768.

seta r_customHeight "768" 
seta r_customWidth "2806" 
seta r_fullscreen "1" 
seta r_mode "-1" 

Есть ли способ указать адекватный r_aspectRatio?

division_hell
()

Аналог SVP в Linux

Форум — Desktop

Здравствуйте.

Есть ли способ повысить fps видео под никсами? (http://ru.wikipedia.org/wiki/SVP)

division_hell
()

kde 4.6.5, композит (glx) помер после ресета

Форум — Desktop

Вырубился свет, включаю - эффекты выключены и не включаются ни в какую.

$ cat /var/log/Xorg.0.log | grep EE
        (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[    20.960] (II) Loading extension MIT-SCREEN-SAVER
[    21.712] (EE) NVIDIA(0): Failed to initialize the GLX module; please check in your X
[    21.712] (EE) NVIDIA(0):     log file that the GLX module has been loaded in your X
[    21.712] (EE) NVIDIA(0):     server, and that the module is the NVIDIA GLX module.  If
[    21.712] (EE) NVIDIA(0):     you continue to encounter problems, Please try
[    21.712] (EE) NVIDIA(0):     reinstalling the NVIDIA driver.

2 дня назад произошло ровно то же самое (только я тыкнул ресет). Переставлять дрова по каждому чиху и ресету как-то не айс. Что там отвалилось?

division_hell
()

OpenAFS, afs-newcell fail

Форум — Admin

Здравствуйте.

Понадобилось попробовать сабж. С керберосом и компанией дела никогда не имел, поэтому подозреваю, что собака где-то там зарыта. Делал по мануалам: http://techpubs.spinlocksolutions.com/dklar/afs.html http://www.debian-administration.org/articles/570

От описания все отличается на одну строчку - «add_policy service».

$ cat /proc/version

Linux version 3.1.0-1-amd64 (Debian 3.1.1-1) (ben@decadent.org.uk) (gcc version 4.6.2 (Debian 4.6.2-4) ) #1 SMP Mon Nov 14 08:02:25 UTC 2011

Do you meet these requirements? [y/n] y
If the fileserver is not running, this may hang for 30 seconds.
/etc/init.d/openafs-fileserver stop
What administrative principal should be used? root/admin

/etc/openafs/server/CellServDB already exists, renaming to .old
/etc/init.d/openafs-fileserver start
bos adduser trasher.trashcell.org root.admin -localauth

Creating initial protection database.  This will print some errors
about an id already existing and a bad ubik magic.  These errors can
be safely ignored.

pt_util: /var/lib/openafs/db/prdb.DB0: Bad UBIK_MAGIC. Is 0 should be 354545
Ubik Version is: 2.0
Error while creating system:administrators: Entry for id already exists

bos create trasher.trashcell.org ptserver simple /usr/lib/openafs/ptserver -localauth
bos create trasher.trashcell.org vlserver simple /usr/lib/openafs/vlserver -localauth
bos create trasher.trashcell.org dafs dafs -cmd '/usr/lib/openafs/dafileserver -p 23 -busyat 600 -rxpck 400 -s 1200 -l 1200 -cb 65535 -b 240 -vc 1200' -cmd /usr/lib/openafs/davolserver -cmd /usr/lib/openafs/salvageserver -cmd /usr/lib/openafs/dasalvager
bos: running unauthenticated
bos: failed to create new server instance dafs of type 'dafs' (you are not authorized for this operation)
Failed: 1536

Cell setup failed, ABORTING
bos delete trasher.trashcell.org vlserver -localauth
bos delete trasher.trashcell.org ptserver -localauth
rm /var/lib/openafs/db/prdb*
bos removeuser trasher.trashcell.org root.admin -localauth
root@trasher:/home/user#

«bos: failed to create new server instance dafs of type 'dafs'» - гуглинг дает 2 ссылки, одна из которых мертвая, а другая тоже плохая.

Что это может быть и какие еще конфиги стоит сбросить?

p.s. Есть ли аналоги сабжа с поддержкой macos/win?

division_hell
()

RSS подписка на новые темы