rtyug

rtyug
Рейтинг
263
Регистрация
13.05.2009
Должность
perl,php,sql,javascript(jquery),freebsd/linux
Интересы
perl,php,sql,javascript(jquery),freebsd/linux
https://minfin.com.ua/blogs/94589307/115366/

фух

короче, фотоальбом:

http://ldap.x0.org.ua/photo_album/10/2

http://ldap.x0.org.ua/photo/view/10/52

http://ldap.x0.org.ua/photo

значит есть в фотоальбом, но нужно не много подправить еще, потом видео стругать так же!!

в фотоальбоме:

1) может нужно где-то ссылки еще подправить или в логике со всем не много, там не работает еще" удалить фотографию" и т.д.

2) там есть приватные фотоальбомы и фотольбомы которые прицепленые к контенту (к темам), вот вывод и там и там надо подправить или не много изменить логике добавления... + в профиле показать те фотоальбомы которые пользователь содал

2,а) еще сделал так чтобы фотоальбом можно было прицепить к контенту (в темах, личные, блоги, группы) чтобы не от фонаря

3) ну соответсвенно все фотографии должны быть в фотоальбомах

ну это ладно короче...

я вот еще хотел сейчас сделать комментарии к каждой фотке или к видео файлу чтобы можно было можно было оставлять... но мне кажется что это много гемороя сейчас будет

но еще более еще поиск надо сделать, группы с конструктором анкетирвоание, типо, как соц. сеть... и в них же тоже фотольбомы и фотографии

короче, вопрос, а кто как думает что сюда нужно еще добавить? может кто-то посоветует что либо? что тут делать, может я не так что-то делаю?

ЗЫ: ну я прогармму написал эту, можно сказать уже написал, только возможно не тратил много времени на маленькие тонкости (наверное заметили) по этому идеально не получилось, сейчас хотел сделать внешние сладости (то что я планировал, фото видео) и тогда контент заваливать.... уже даже бот есть + документацию и на английский язык, тоже

====

кто пользуется фотогалереями?

я сделал чтобы по одной фотке можно было завивать в фотоальбом....

там нужно заливать каждую фотку? по отдельности?

или сразу чтобы выбрать в браузере каталог и оно все пойдет загружатся?

на хостингах картинок, везде по одной картинке закачивается

я хотел про другое вообще-то....

я так понял что если писать большую програму, то в любом случае нужно писать все в кучю...!

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

как сделать парадигму, если парадигмы фремворка и парадигмы-парадигмов не хватает?

===

я хотел спросить, потому что:

я сталкивался с готовыми программами и про это обсуждалось в списках рассылки:

другими словами: есть 20 модулей которые связываються между собой и все как один модуль!! чтобы изменит например 3-4, то нужно все переписать или многие модули переписать, т.к. получается что нужно все 20 переписать из этого следует: просто все переписать или сделать все в кучу...

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

как правильно писать? или все равно?

====

вот например у меня есть модуль для комментариев, расчитано чтобы ставить комментарии в темах,

НО если я хочу сделать этот модуль почти похожим еще как минимум для 5 элементов (кроме тем), например комментарии в: фото, видео, приватные, группы, и блоги....

т.е. один и тот код нужно использовать минимум 7 раз даже один и тот же КОД и более-менее сложный (перебор и т.д.)

как лучше написать? старатся писать все в кучу? или писать один и тот же большой код 10 раз?
кто как бы тут сделал?

или все равно?

в РСУБД есть реляционные (реляционная алгебра) и распределенные вычисления, например если будет реплицированна на несколько серверов, то вся система будет работать стабильно и выдерживать большие нагрузки

есть некоторые алгоритмы которые позволяют делать некоторые операции даже быстрее чем РСУБД (и даже на много быстрее, например релевантности не было на innodb, если я не ошибаюсь) ...

но как будет на практике никто не знает...

====

еще веб сервер будет статику отдавать на много быстрее чем динамику, смотря какой контент, подобная тема где-то была, например, сайт opennet.ru сделан на файлах, статьи на файлах


sub edit2 : Local : Args(0) {
my ( $self, $c ) = @_;

$c->forward( 'add', ['1'] );

}

sub delete_comment : Local : Args(2) {
my ( $self, $c, @args ) = @_;

$c->stash->{template} = 'edit_comment.tt';

if ( $args[0] =~ /^\d+$/ && $c->user_exists() ) {

my $sql;

if ( !$c->check_user_roles('moder_co') ) {
$sql =
'AND created > '
. ( time - 86400 )
. ' AND id_un = '
. $c->user->{user}->{id};

}

my $dbh = $c->model('DBI')->dbh;

$dbh->do(
qq{DELETE FROM comment
WHERE id_cm = $args[0] $sql LIMIT 1},
undef
);
}

if ( $args[0] !~ /^\d+$/ || !$c->user_exists() ) {
$c->response->redirect( $c->uri_for('/') );
}
else {
$c->response->redirect( $c->uri_for( '/view_content/' . $args[1] ) );

}
$c->detach();

}


sub check_sql_comment : Privat {
my ( $self, $c, $f, $edit, $edit0, $id_cm_sql, $id_co_sql ) = @_;

# $edit0 - edit select comment

my $method = $edit ? 'stash' : 'flash';

my $dbh = $c->model('DBI')->dbh;

my $sql_comment = 'SELECT t1.id_co,
t1.id_se,
t1.id_un,
t1.forbi_comm_co,
t1.close_co,
t1.hiden_co,
t1.active_co,
t2.active_se,
t2.close_se,
t2.id_un AS id_un_se,
t3.email_sent
' . ( $edit0 ? ', t4.text_cm ' : '' ) . '
'
. ( $edit ? ', t4.id_cm, t4.created, t4.id_un AS id_un_cn' : '' ) . '
FROM content AS t1
LEFT JOIN section AS t2
ON t1.id_se = t2.id_se
LEFT JOIN users AS t3
ON t1.id_un = t3.id
' . (
$edit
? '
LEFT JOIN comment AS t4
ON t1.id_co = t4.id_co
AND t4.id_cm = ?
'
: ''
)
. '
WHERE t1.id_co = ?
LIMIT 1';

my @sql;
push @sql, $id_cm_sql ? $id_cm_sql : $c->request->params->{id_cm}
if ($edit);
push @sql, $id_co_sql ? $id_co_sql : $c->request->params->{id_co_comment};

my $sth = $dbh->prepare($sql_comment);
$sth->execute(@sql);
my $loop_data = $sth->fetchrow_hashref();
$sth->finish();

if ( !$loop_data->{id_co} ) {
$c->$method->{error_no_id_co} = 1;
$c->response->redirect(
$c->uri_for(
'/view_content/' . $c->request->params->{id_co_comment}
)
) if ( !$edit );
$c->detach();
}

if ($edit) {
if ( !$loop_data->{id_cm} ) {
$c->stash->{error_no_cm} = 1;
$c->detach();
}
if ( $loop_data->{id_un_cn} != $c->user->{user}->{id}
&& !$c->check_user_roles('moder_co') )
{
$c->stash->{error_no_id_un_cm} = 1;
$c->detach();
}

if ( $loop_data->{created} < time - 86400
&& !$c->check_user_roles('moder_co') )
{
$c->stash->{error_no_created} = 1;
$c->detach();
}

}

if ( !$c->check_user_roles('moder_co') ) {

$f->bad_fields_type('arrey');
$f->no_sql->zero_die( 'error_no_forbi_comm_co',
$loop_data->{forbi_comm_co} == 1
&& $loop_data->{id_un} != $c->user->{user}->{id} );
$f->no_sql->zero_die( 'error_no_hiden_co',
$loop_data->{hiden_co} == 1
&& $loop_data->{id_un} != $c->user->{user}->{id} );
$f->no_sql->zero_die( 'error_no_active_co',
$loop_data->{active_co} != 1
&& $loop_data->{id_un} != $c->user->{user}->{id} );
$f->no_sql->zero_die( 'error_no_active_se',
$loop_data->{active_se} != 1
&& $loop_data->{id_un_se} != $c->user->{user}->{id} );
$f->no_sql->zero_die( 'error_no_close_co',
$loop_data->{close_co} == 1 );

$f->no_sql->zero_die( 'no_edit_no_un_cn',
$loop_data->{id_un_cn} != $c->user->{user}->{id} )
if ($edit);

}

$f->no_sql->valid_id( 'error_no_id_co_comment',
$c->request->params->{id_co_comment} )
if ( !$edit0 );

return $loop_data if ($loop_data);
}

=head1 AUTHOR


Dmitriy

email: rtyug@ukr.net


=head1 LICENSE

This library is free software. You can redistribute it and/or modify
it under the same terms as Perl itself.

=cut

1;

например, я не давно работал с одной программой где было все в куча нуписано на ORM, и разобратся все сложно

другими словами: есть 20 модулей которые связываються между собой и все как один модуль!! чтобы изменит например 3-4, то нужно все переписать или многие модули переписать, т.к. получается что нужно все 20 переписать из этого следует: просто все переписать или сделать все в кучу...

======

но вот я как раз читал где-то в списке рассылке, говорилось про недостатки DBIC, в том что все контроллеры должны быть не однородными!! т.е. в DBIC, можно крассиво написать код к 10 контроллерам, и может полуиться, так что нужно будет изменить программу! изменит 2 контроллера, а изменить не получиться, так как остальные 8 работать не будет, потому что они будут взаимосвязывающиеся ( все однородные ) и прейдется все 10 переписывать, вот лучше удалить все и написать заново…

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

=====

ну там есть много вариантов

http://search.cpan.org/~flora/Catalyst-Run...Type/Chained.pm


package MyApp::Controller::Greeting;
use base qw/ Catalyst::Controller /;

# this is the beginning of our chain
sub hello : PathPart('hello') Chained('/') CaptureArgs(1) {
my ( $self, $c, $integer ) = @_;
$c->stash->{ message } = "Hello ";
$c->stash->{ arg_sum } = $integer;
}

# this is our endpoint, because it has no :CaptureArgs
sub world : PathPart('world') Chained('hello') Args(1) {
my ( $self, $c, $integer ) = @_;
$c->stash->{ message } .= "World!";
$c->stash->{ arg_sum } += $integer;

$c->response->body( join "<br/>\n" =>
$c->stash->{ message }, $c->stash->{ arg_sum } );
}

вот я красиво диспатчизировал:


sub index_pages :Path('/last') : Args(1) {
my ( $self, $c, $id) = @_;

$c->stash->{template} = 'photo.tt';

$c->forward( 'last', [ $id, undef, undef, '1'] );
}

sub last : Local : Args(0) {
my ( $self, $c, $id ) = @_;

$c->stash->{template} = 'photo_album_privat.tt';

# if ( !$id_un || (!$c->user_exists() || $id_un != $c->user->{user}->{id}) && !$c->check_user_roles('moder_co') ) {
# $c->stash( no_user_privat => 1, off_photo => 1, );
# $c->detach();
# }

$c->forward( 'index', [ undef, undef, undef, '1'] );

}


sub privat : Local {
my ( $self, $c, $id_un, $id ) = @_;

$c->stash->{template} = 'photo_album_privat.tt';

if ( !$id_un || (!$c->user_exists() || $id_un != $c->user->{user}->{id}) && !$c->check_user_roles('moder_co') ) {
$c->stash( no_user_privat => 1, off_photo => 1, );
$c->detach();
}

$c->forward( 'index', [$id, '1', $id_un] );

}


sub index_pages :Path('/photo') : Args(1) {
my ( $self, $c, $id, $privat, $id_un ) = @_;

$c->stash->{template} = 'photo.tt';

$c->forward( 'index', [$id] );
}


sub index :Path : Args(0) {
my ( $self, $c, $id, $privat, $id_un, $last ) = @_;

$c->stash->{template} = 'photo.tt';


лучше сервер, ставишь PowerDNS который работает с MySQL, настраиваешь apache и чтобы он, тоже, хранил vhost в MySQL и все

или текстовые файлы обрабаытваешь (удалять/добавлять)

добавить А запись в Bind9 можно так:


sudo -u named perl -le 'open(F,...): print "host.name\t\t\tA\t192.168.1.1"; close F;' /path/to/zone.file && rndc reload

обновить serial еще надо желательно на единицу

ЗЫ bind9 может работать с MySQL

я выбрал на FS

есть pool connect

http://www.google.com.ua/#hl=uk&source=hp&q=pool+connect+php&btnG=%D0%9F%D0%BE%D1%88%D1%83%D0%BA+Google&meta=&aq=f&oq=pool+connect+php&fp=a0e5374bacaee8e0

http://blogs.oracle.com/opal/2007/01/highly_scalable_connection_poo.html

http://www.google.com.ua/#hl=uk&q=pool+connect+perl&meta=&aq=&oq=&fp=a0e5374bacaee8e0

ЗЫ: еще не достаток, если будет на СУБД, то что если будет кластер серверов, то будет между ними большой левый трафик, чтобы отдать файл...

rtyug добавил 24.10.2009 в 10:59

были ли у кого-то проблемы кто отдавал статику через динамику?

bearman:
rtyug, читай документацию к nginx и сможешь все.

bearman добавил 04.10.2009 в 10:32
http://sysoev.ru/nginx/docs/

http://www.google.com.ua/#hl=uk&q=nginx+antileech+&meta=&aq=f&oq=&fp=a0e5374bacaee8e0

нашел посмотрел

а можно ли сделать antileech для apache? или нужно будет все отадавать через динамику? (и картинки)

ради интереса:

были ли у кого-то проблемы кто отдавал статику через динамику? (в принципе если mod_perl, mod_php, или на Си написать же можно отдачу (только в CGI будет), то все равно будет?)

ЗЫ: по-моему, большой американский сервер картинок отдает через динамику, т.е. чтобы картинка появилась - нужно нажать (нажать на банер) и появиться картинка... хотя возможно там был самописный веб-сервер...

достаточно вот так:

$photo -> Write("photo.jpg");

он сам поймет что это jpg...?

если, да, ок, спасибо

rtyug добавил 22.10.2009 в 10:52

T.R.O.N:
Они создавались чтобы попиксельно рисовать счетчики, информеры и т.д И главное, их "родной" формат, это PNG*8, а остальное - почти шаманство. Тем более для JPEG, одного из самых сложных форматов.

да, точно, я не обратил мнимание...

но нагрузка будет когда очень большое количество будет одновременно заливать... пока такого нету...

и размер файла можно ограничить не 2-40Мб, а 512кб-1Мб

видео когда конвертируется, то тоже нагрузка идет, но хорошо сжимается...

umask может стоять, где минимум определенные права можно поставить...

Всего: 2062