LINUX.ORG.RU

Сообщения psp13

 

PHP - писать в формате doc

Форум — Web-development

Какую библиотеку посоветуете что бы из PHP создать документ в формате DOC?

psp13 ()

Опасность использования юникода

Форум — Web-development

Обратил внимание что в последнее время основная часть багов в технологиях касающихся веб разработки связана так или иначе с обработкой utf-8 строк. Насколько опасно применение юникода в продакшн? Целесообразно ли его применение если веб приложение рассчитано в основном на англоязычных пользователей (для возможности расширения аудитории в будущем)?

psp13 ()

pyramid broken pipe

Форум — Web-development

Написал небольшое приложение с помощью pyramid. Всё работает прекрасно, но если делать слишком много конкурентных запросов (>50) появляются такие ошибки:

----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 51307)
Traceback (most recent call last):
  File "/usr/lib64/python2.7/SocketServer.py", line 284, in _handle_request_noblock
    self.process_request(request, client_address)
  File "/usr/lib64/python2.7/SocketServer.py", line 310, in process_request
    self.finish_request(request, client_address)
  File "/usr/lib64/python2.7/SocketServer.py", line 323, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "/usr/lib64/python2.7/SocketServer.py", line 641, in __init__
    self.finish()
  File "/usr/lib64/python2.7/SocketServer.py", line 694, in finish
    self.wfile.flush()
  File "/usr/lib64/python2.7/socket.py", line 303, in flush
    self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 32] Broken pipe
----------------------------------------

Как устранить эту проблему? Или она возникает из-за нехватки ресурсов (открытых сокетов OS, и т.д.)? В таком случае какие конфиги/опции ядра в линуксе регулируют количество этих ресурсов?

 ,

psp13 ()

python raw string single backslash

Форум — Web-development

Как включить в python raw string single backslash?

>>> print r'\\'
\\
>>> print r'\n'
\n
>>> print r'\''
\'
>>> print r'\'
  File "<stdin>", line 1
    print r'\'
             ^
SyntaxError: EOL while scanning string literal
>>>
psp13 ()

Проблема запуска PHP скрипта в redhat

Форум — Development

Каким то странным образом работает запуск PHP скрипта в background'е в redhat. Появляется один процесс, сразу же выходит, появляется какой то второй но он ничё не пишет в логи. Может быть имеет значение - на том компе работаю через ssh. Дома в gentoo linux всё работает нормально. Всю жизнь работаю с gentoo, redhat недолюбливаю, наверно потому что не понимаю. Ну вот что это за глюки:

# php down.php
Processing 00000
Processing 00001
Processing 00002
Processing 00003
Processing 00004
Processing 00005
Processing 00006
Processing 00007
Processing 00008
^C
# php down.php >log 2>log &
[1] 15152
#

[1]+  Stopped                 php down.php > log 2> log
# ps auxw | grep php
root     15152  0.2  1.1 225388  6004 pts/0    T    12:21   0:00 php down.php
root     15199  0.0  0.1 103292   844 pts/0    S+   12:22   0:00 grep php
# kill -KILL 15152
# cat log
[1]+  Killed                  php down.php > log 2> log
# cat log
#
#
# uname -a
Linux scrappy2012 2.6.32-71.el6.x86_64 #1 SMP Fri May 20 03:51:51 BST 2011 x86_64 x86_64 x86_64 GNU/Linux
# gcc -v
Using built-in specs.
Target: x86_64-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-ppl --with-cloog --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
Thread model: posix
gcc version 4.4.6 20110731 (Red Hat 4.4.6-3) (GCC)
# php -v
PHP 5.3.3 (cli) (built: Feb  2 2012 23:47:49)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
#

Запускал с правами root что бы продемонстрировать что это не проблема прав доступа к чему либо. В не root аккаунте такая же точно история. Что за глюк? Как бороться?

psp13 ()

Вопрос по Jmeter graph results

Форум — Web-development

Что означают такие результаты как Deviation 2, Average 3, Median 3? Throughput 21473.094/minute это я так понимаю сколько запросов было сделано за минуту в среднем?

psp13 ()

SQL: many to many relationship joins

Форум — Web-development
create table items (
  id bigserial primary key,
  name varchar(255) not null
);
create table categories (
  id bigserial primary key,
  name varchar(255) not null unique
);
create table items_categories (
  item_id bigint not null references items(id),
  category_id bigint not null references categories(id)
);

Такое выдаст только одну из возможных категорий item'а:

select items.*, items_categories.category_id from items inner join items_categories on items.id = items_categories.item_id

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

psp13 ()

Primary Key performance

Форум — Web-development

Сильно ли различается производительность если в качестве Primary Key использовать строку а не число, например:

create table users (
username varchar(32) primary key,
...
);

create table posts (
owner varchar(32) not null REFERENCES users,
...
);

В любом случае приятнее иметь профили в виде http://domain.com/users/tyler вместо http://domain.com/users/8434.

Аналогично int/bigint сильно влияет на производительность?

psp13 ()

SQL: атомичны ли REFERENCES .. ON DELETE CASCADE

Форум — Web-development

Сабдж. Если удаляется row из referenced table атомично ли удаление rows из referenced table? Или другая сессия может в это время увидеть rows с foreign key указывающим на уже удалённый id?

psp13 ()

ruby frameworks

Форум — Web-development

Нравится ruby. Не нравится rails - слишком громоздкий. Нравится sinatra. Какие ещё ruby framework'и можно посмотреть что бы не слишком громоздкие наподобие sinatra?

psp13 ()

Распределение приложений по нескольким машинам

Форум — Web-development

Планируется запуск системы которая будет включать несколько частей в том числе:

- веб приложение - DB (PostgreSQL) - скрипт рассылки уведомлений по почте (уведомлений может быть много) - скрипт рассылки уведомлений по XMPP

Возник ряд вопросов.

- Лучше заказать 1 dedicated server подороже и более производительный и иметь на нём и веб приложение и DB? Или лучше вынести DB в отдельную машину?

- Если скрипт рассылки почты будет работать на машине отличной от машины с веб приложением. Пусть машина с веб приложением будет иметь доменное имя domain.com. Отосланные email должны иметь From: <something>@domain.com. Не возникнет ли проблем со спам фильтрами из за того что рассылаться они будут с IP который не привязан к domain.com? Как лучше поступить?

- Существуют ли какие то методы как оценить возможности машины - сколько запросов в секунду сможет обработать. Кроме как наглазок - т.к. опыта системного администрирования нагруженной системы не имею. Понятно что зависит от многих факторов, есть ли какие то методики определения? Веб приложение не производит никаких вычислений и т.д. а просто выводит/вводит данные в DB.

psp13 ()

Подскажите по MySQL transactions

Форум — Web-development

Имеется таблица: accounts: id, name, ..., balance balance никогда не должен становится меньше 0 Подскажите решение по переводу суммы с balance одного account'а на balance другого. Очень много читал туториалов по транзакциям но так и не понял как сделать.

Понятно что:

START TRANSACTION;
UPDATE accounts SET balance = balance - $amount WHERE id = $from;
UPDATE accounts SET balance = balance + $amount WHERE id = $to;
COMMIT;

Но как гарантировать что balance всегда >= 0? Что если другая транзакция в это время обновит balance? Проблема распростанённая, так что скорее всего достаточно хорошо известная. Но что то не могу ничего найти сам что бы быть уверенным в безопасности получившейся системы. Lock tables не хорошо для производительности, может какие то тригеры которые ROLLBACK в случае если balance < 0?

psp13 ()

PHP, File Storage, Control Access and performance

Форум — Web-development

Требуется добавить возможность прикреплять файлы к приватным сообщениям. Файлы естественно может видеть только юзер которому предназначено сообщение. Очевидным решением является хранить файлы где то outside web accessible directory и после проверки php скриптом юзера в текущей сессии выдавать либо файл либо access denied. Что то типа:

<?php
/* ....... */
if (isset($_SESSION['user'])) {
  /* check user */
} else {
  exit("Access Denied!");
}
$fc = file_get_contents($file);
header("Content-Type: {$fileContentType});
echo $fc;

Встаёт вопрос оптимизации производительности. Понятно что читать большой файл в PHP с целью его последующего вывода не оптимально. Что можете предложить? Может существуют какие то готовые решения для этого.

Так же вопрос. Если информацию по всем файлам хранить в MySQL в таблице `files` а сам файл соответственно в <some_dir>/`files.id` где `files.id` - primary key из files то при большом кол-ве файлов не будет ли притормаживать. Есть ли смысл раскладывать файлы по сабкаталогам. И какую FS лучше выбрать для раздела с этими файлами что бы оптимизировать?

psp13 ()

wxWidgets

Форум — Development

Имеется код:

#include "wx/wx.h"

class MyApp : public wxApp {
public:
	virtual bool OnInit();
};

class MyFrame : public wxFrame {
public:
	// Constructor
	MyFrame(const wxString& title);
	
	void DrawSimpleShapes();
	
	// Event handlers
	void OnQuit(wxCommandEvent& event);
	void OnAbout(wxCommandEvent& event);
	
private:
	// This class handles events
	DECLARE_EVENT_TABLE();
};

// Implements MyApp & GetAPP()
DECLARE_APP(MyApp);

// Give wxWidgets the means to create a MyApp object
IMPLEMENT_APP(MyApp);

// Initialize the application
bool MyApp::OnInit() {
	MyFrame *frame = new MyFrame(wxT("Minimal wxWidgets App"));
	frame->Show(true);
	frame->DrawSimpleShapes();
	return true;
}

// Event table from MyFrame
BEGIN_EVENT_TABLE(MyFrame, wxFrame)
	EVT_MENU(wxID_ABOUT, MyFrame::OnAbout)
	EVT_MENU(wxID_EXIT, MyFrame::OnQuit)
END_EVENT_TABLE()

void MyFrame::OnAbout(wxCommandEvent& event) {
	wxString msg;
	msg.Printf(wxT("Hello and welcome to %s"), wxVERSION_STRING);
	wxMessageBox(msg, wxT("AboutMinimal"), wxOK | wxICON_INFORMATION, this);
}

void MyFrame::OnQuit(wxCommandEvent& event) {
	Close();
}

MyFrame::MyFrame(const wxString& title) : wxFrame(NULL, wxID_ANY, title) {
	wxMenu *fileMenu = new wxMenu;
	fileMenu->Append(wxID_EXIT, wxT("E&xit\tAlt-X"), wxT("Quit this program"));
	
	wxMenu *helpMenu = new wxMenu;
	helpMenu->Append(wxID_ABOUT, wxT("&About...\tF1"), wxT("Show about dialog"));
	
	wxMenuBar *menuBar = new wxMenuBar();
	menuBar->Append(fileMenu, wxT("&File"));
	menuBar->Append(helpMenu, wxT("&Help"));
	
	SetMenuBar(menuBar);
	
	CreateStatusBar(2);
	SetStatusText(wxT("Welcome to wxWidgets!"));
}

void MyFrame::DrawSimpleShapes() {
	wxClientDC dc(this);
	
	// Set line colour to black, fill colour to green
	dc.SetPen(wxPen(*wxBLACK, 2, wxSOLID));
	dc.SetBrush(wxBrush(*wxGREEN, wxSOLID));
	
	// Draw a point
	dc.DrawPoint(5, 5);
	wxMessageBox(wxT("Hi"), wxT("Hello"), wxICON_INFORMATION, this);
	// Draw a line
	dc.DrawLine(10, 10, 100, 100);
}

Рисуется в окне только то что стоит после wxMessageBox в посл. ф-ции. Что стоит перед ней не рисуется (т.е. точка). Если её убрать тогда вообще ничего не рисуется. Что происходит?

psp13 ()

Рассылка оповещений через XMPP (jabber)

Форум — Development

Имеется система которая в настоящее время уведомляет пользователей о событиях по email. По ряду причин это не очень удобно. Есть желание рассылать оповещения через jabber. Посоветуйте какой софт брать для этой цели, насколько эффективно это будет (сколько пользователей потянет, сколько памяти и процессорного времени пожрёт и т.д.).

psp13 ()

Подскажите хорошее решение для визуализации DB схемы

Форум — Web-development

Собственно сабж. http://www.mysql.com/products/workbench/ не понравился. Во первых упал один раз по непонятным причинам. Во вторых не устраивает как показываются связи между таблицами. Линия просто входит в таблицу в произвольном месте а хотелось бы что бы сразу было видно к какому полю таблицы она идёт.

psp13 ()

OOP: хорошо или плохо

Форум — Web-development

Ваше отношение к OOP. Хорошо или плохо? Почему все говорят что OOP код проще читать? Я наблюдаю обратное. Берём какой нибудь OOP код и вместо того что бы увидеть реализацию алгоритма имеем сотни если не тысячи каких то мелких методов, классов. И со всеми ими надо ознакомиться что бы понять сущность написанного. И что самое неприятное - каждый из этих классов, функций, методов использует ещё дохера других. Такая вот рекурсия. Очень бесит что OOP суют везде. Разобраться со OOP кодом намного сложнее чем с алкоритмическим.

psp13 ()

RTMPE на youtube: что за новая гадость и как пользоваться

Форум — Web-development

RTMPE на youtube: что за новая гадость и как пользоваться? rtmpdump пишет:

Connecting ... WARNING: HandShake: Type mismatch: client sent 6, server answered 9

WARNING: HandShake: Server not genuine Adobe!

ERROR: RTMP_Connect1, handshake failed.

Так чем скачать? Что добавить в параметры?

psp13 ()

Проклятый гугл

Форум — Web-development

В общем задолбался две ночи подряд выяснять в чём дело. Не могу залогиниться в гугл https://accounts.google.com/ServiceLoginAuth. Что только не делал. Отчаялся реализовать с помощью CURL ф-ций, взял и написал с fsockopen который посылает абсолютно идентичный POST. Всё бесполезно. Проклятый гугл всё равно не залогинивает.

psp13 ()

CURL: request syntactically incorrect

Форум — Web-development

Имеется код:

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, "http://upload.uploadstation.com/upload/1674884/1/?sessionId=8b4efded-4975-4a2a-ad6c-0b858048fe42&callback=jQuery161026690326338862833_1322892321329&_=1322892321339");
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
	"Host: upload.uploadstation.com",
	"User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1",
	"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
	"Accept-Language: en-us,en;q=0.5",
	"Accept-Encoding: gzip, deflate",
	"Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7",
	"Connection: keep-alive",
	"Cache-Control: max-age=0",
));
curl_setopt($ch, CURLOPT_VERBOSE, 1);
echo curl_exec($ch);
curl_close($ch);

Сервер возвращает код 400 Bad Request:

* About to connect() to upload.uploadstation.com port 80 (#0)
*   Trying 108.61.5.227... * connected
* Connected to upload.uploadstation.com (108.61.5.227) port 80 (#0)
> GET /upload/1674884/1/?sessionId=8b4efded-4975-4a2a-ad6c-0b858048fe42&callback=jQuery161026690326338862833_1322892321329&_=1322892321339 HTTP/1.1
Host: upload.uploadstation.com
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Cache-Control: max-age=0

< HTTP/1.1 400 Bad Request
< Server: Apache-Coyote/1.1
< Content-Type: text/html;charset=utf-8
< Content-Length: 971
< Date: Sat, 03 Dec 2011 06:23:24 GMT
< Connection: close
<
* Closing connection #0
<html><head><title>Apache Tomcat/6.0.32 - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 400 - </h1><HR size="1" noshade="noshade"><p><b>type</b> Status report</p><p><b>message</b> <u></u></p><p><b>description</b> <u>The request sent by the client was syntactically incorrect ().</u></p><HR size="1" noshade="noshade"><h3>Apache Tomcat/6.0.32</h3></body></html>

Абсолютно такой же запрос через браузер возвращает правильный результат (LiveHTTP headers):

http://upload.uploadstation.com/upload/1674884/1/?sessionId=8b4efded-4975-4a2a-ad6c-0b858048fe42&callback=jQuery161026690326338862833_1322892321329&_=1322892321339



GET /upload/1674884/1/?sessionId=8b4efded-4975-4a2a-ad6c-0b858048fe42&callback=jQuery161026690326338862833_1322892321329&_=1322892321339 HTTP/1.1

Host: upload.uploadstation.com

User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: en-us,en;q=0.5

Accept-Encoding: gzip, deflate

Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7

Connection: keep-alive

Cache-Control: max-age=0



HTTP/1.1 200 OK

Server: Apache-Coyote/1.1

Expires: Mon, 28 Sep 1970 06:00:00 GMT

Cache-Control: private,no-cache,no-store

Pragma: no-cache

Content-Type: text/javascript

Transfer-Encoding: chunked

Date: Sat, 03 Dec 2011 06:16:37 GMT

Найдите отличия.

psp13 ()

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