Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Самопис для форума [5]
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
esterio пишет:
то как часто происходит правка локализаций
Регулярно.
Bio man пишет:
Зачем перелопачивать? Поиск по папке локализаций и готово. Можно даже с автозаменой.
И нафига плодить места для ошибок?
Dastor пишет:
Плюс сразу видно о каком тексте идет речь.
Именно. Не только что написано - важнее для чего.
----- PostgreSQL DBA
Viper
Отправлено: 17 Декабря, 2014 - 16:56:42
Активный участник
Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007 Откуда: Симферополь
Помог: 98 раз(а)
Bio man пишет:
или по исходному сообщению
запихнем туда не только текст а и спецсимволы и ещё html вдруг может быть. Что в итоге получаем? Не удобочитаемость, а *ерню.
Dastor пишет:
Второй параметр - текст по дефолту, если вдруг по ключу не найден перевод в локализации. Плюс сразу видно о каком тексте идет речь (если ключ не понятный).
это верно если текст небольшой. А если вдруг почти абзац текста? Тоже дефолтный абзац текста лепить будете? И да почему дефолтный на англ.? Может я на тайском хочу!
Покинул форум
Сообщений всего: 378
Дата рег-ции: Сент. 2014
Помог: 10 раз(а)
[+]
Dastor пишет:
А почему бы тогда не использовать классический вариант.
Я не знаю, что вы считаете классикой, но если Yii, то первый параметр - это не ключ, а неймспейс, а фраза как раз ключ
Viper пишет:
А если вдруг почти абзац текста? Тоже дефолтный абзац текста лепить будете?
Никаких проблем, если не доводить до абсурда и не переводить так вьюшки состоящие из текста.
Viper пишет:
И да почему дефолтный на англ.? Может я на тайском хочу!
Да хоть на японском, главное что бы совпадал с дефолтным языком из настроек приложения.
----- self-banned
DeepVarvar
Отправлено: 17 Декабря, 2014 - 17:57:21
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
Мелкий пишет:
или же добавляется впоследствии для тех мест, где это реально требуется
Так и задумывал. Просто кешировать нужный тяжелый кусок, мемкешем, в файл, etc.
Мелкий пишет:
misc/main-EXAMPLE.json - default_description и ключевики - выкинуть
При выводе есть нормализация, если где-то добавили свои - будут нужные, в противном случае этот дефолт.
Мелкий пишет:
cookie_expires_time, спасибо, поржал. А чего не 10 лет?
Да хоть пол часа, этж конфиг.
Мелкий пишет:
db.slave - должен быть массивом. Слейвов может быть много.
В тот же блок конфига можно добавить сколько угодно слейвов.
Мелкий пишет:
application/logs/non-empty-dir.t xt - обычно же .gitignore пустой кладут.
Не гитигнор, а еще какую-то шляпу. Не помню, потому забросил что первое пришло в голову.
Мелкий пишет:
application/core/ мне не понравилось всё в куче и без NS
Это только ради чтобы отличать ядерные компоненты от неядерных. Есть резон занеймспейсить?
Мелкий пишет:
ClassUtils::isCallableMethod нафига?
Во первых - может понадобиться в другом месте, во вторых, есть ощущение, что добавится еще пара методов.
Мелкий пишет:
DBC - чтобы постоянно не писать fetch(PDO::что-то там) имеет смысл поставить глобально PDO::ATTR_DEFAULT_FETCH_MODE
Принято.
Мелкий пишет:
Ну и довольно по-дурацки выглядит требование StdClass $params, только затем, чтобы привести к массиву
Скорее это просто узкое место, где я на скорую руку кастанул к массиву.
Мелкий пишет:
Logger - мне очень не нравится exit при проблемах
С конфигами так же. Предполагается что, если права доступа не настроены, то и работать не будет.
Мелкий пишет:
Мне кажется инициировать fatal error неперехваченным исключением будет честнее
Ранее у меня был замысел запилить полноценный error_handler, вплоть до нотайсов, но потом стало понятно, что, либо ты пишешь и тестируешь, либо уже все работает. И тебе как разработчику не особо важно в каком виде ты наблюдаешь ошибку.
Мелкий пишет:
front-controller для 5.2 написан был?
Да, там много чего от 5.2, предлагай замену конкретнее.
Мелкий пишет:
Останавливаемся на mysql?
Перед сном подумал вынести в настроки, чтобы не только мускуль ставить можно было.
Мелкий пишет:
по БД
Можешь сделать готовым дампом с поправками на ветер?
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
DeepVarvar пишет:
При выводе есть нормализация, если где-то добавили свои - будут нужные, в противном случае этот дефолт.
Да, я понял. И именно об этом и говорю - выкинуть. Их отсутствие - это лучше, чем непонятно что стандартное.
DeepVarvar пишет:
В тот же блок конфига можно добавить сколько угодно слейвов.
Каким образом?
Пункт slave - один, и это не массив хостов.
DBI::getConnection('slave') должен возвращать любой один из нескольких слейвов.
Мастер - да, мастер один. От мультимастера держаться так далеко, как это только возможно.
DeepVarvar пишет:
Во первых - может понадобиться в другом месте
Вообще нафига. Какой смысл проверять isPublic и isStatic на продакшене? А в dev и так видно будет.
DeepVarvar пишет:
И тебе как разработчику не особо важно в каком виде ты наблюдаешь ошибку.
Оно и видно по app:dump
Нет, error_handler нужен. В случае чего пропущенного чтобы отобразить страницу ошибки и, что более важно, сразу остановить выполнение скрипта.
DeepVarvar пишет:
Да, там много чего от 5.2, предлагай замену конкретнее.
Просто обратил внимание. Первый раз увидел spl_autoload_register с указанием именно имени функции. Обычно или лямбда или ссылка на статический метод класса.
DeepVarvar пишет:
Перед сном подумал вынести в настроки, чтобы не только мускуль ставить можно было.
Вопрос был, как обычно, с подвохом. Ведь если ограничиваемся одной СУБД - то из неё можно выжать всё, что умеет. Если несколько - начинаются проблемы, в первую очередь с тестированием.
DeepVarvar пишет:
Можешь сделать готовым дампом с поправками на ветер?
Угу.
----- PostgreSQL DBA
DeepVarvar
Отправлено: 17 Декабря, 2014 - 18:25:18
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
Ihor пишет:
какие громкие слова Недовольство, огорчение и главное так нервно вдруг
Не парься, это же речь-зазывалка, но многое в ней правда.
Ihor пишет:
Мнеб былоб пофиг есиб не увидел такой странного тона и таких слов.
Представь что не увидел таких слов. Или тебе и правда пофиг?
Ihor пишет:
на каждого юзвера, на каждый запрос, дергать файловую систему и парсинг с регуляркой ?
Мелкий пишет:
И парсинг PHP обходится дороже, INI или JSON быстрее. http://habrahabr[dot]ru/post/112402/
Ihor пишет:
навернуто все через массивы
Конкретное предложение для конкретного места будет?
Ihor пишет:
select !!!! * !!!!
Да, это ВСЕ данные в профиль.
Ihor пишет:
почему не взять отлаженный кернел и на нем построить?
Вопрос не к тебе, но, тем не менее. А почему никто вообще ничего не взял?
Zuldek пишет:
Проще поставить лишнюю плашку памяти и сосредоточить усилия на том, что действительно надо писать ручками
Плашка памяти - это как-то слишком оптимистично, при 20-50 метрах на один запрос клиента. Тебе так не кажется?
MiksIr пишет:
Потому что ему так хочется, а остальным пофиг
О, чуть тебя не пропустил, вдруг подумаешь что я тебя игнорю))
Не так. Наоборот. Сначала всем было пофиг, а потом мне захотелось.
MiksIr пишет:
Там нет архитектуры. Какой-то набор полупустых классов обильно пересыпанных статикой.
А ты посмотри еще разок, может увидишь всетаки. Буквально пару дней назад общался с Евгеном, ты его врядли знаешь, остальные в курсе кто это. Мы так и не пришли к общему знаменателю в теме (new ClassName) vs (all static functions) в контексте синглтона. У каждого из нас были свои аргументы.
Panoptik пишет:
писать запросы руками и вв каждом экшене определять обработку ошибок в 5-10 строк - уныло
Во первых - ты писал на старой версии. Во вторых - никто не ограничивает тебя сделать какие-то модели и юзать их.
Panoptik пишет:
работая с фв получаешь морально удовольствие
фапаешь на код фв? ))
Panoptik пишет:
автолоадера, чтобы избежать повторного реквайра или инклуда
Автолоад сам проверяет на уровне ядра пхп подгружался класс ранее или нет, эти плюхи импорта не нужны.
Panoptik пишет:
мы живем в эпоху дешевых серверов и доступных мощностей
Как-то не вовремя ты это сказал, учитывая что курс бакса и евро растет ))
Panoptik пишет:
можно продолжить этим заниматься для поднятия ЧСВ автора или для набивания шишек, но не для продакшна
Повторю - я тебе в личку писал, бери и ковыряй свои фв, выкладывай, будем делать. Ты поднял тестовый проект? Видимо нет. Причем тут мое чсв?
Zuldek пишет:
У того же ZF к слову в ядре методы для работы с любым типом конфига
Тот же ZF кеширует роуты и конфиги по дефолту, если бы он этого не делал - жрал бы вместо 2 метров уже 10.
Хм, разве нужно пояснять, чем ужасна идея публичных свойств на запись?
Если хочется обращаться как Member::getProfile()->id, то это надо делать через __get и c запретом изменений в __set.
----- PostgreSQL DBA
DeepVarvar
Отправлено: 17 Декабря, 2014 - 18:38:15
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
Ihor пишет:
вас не смущают лишние запросы к файловой системе на каждый клик ? вы ведь не с базой работаете а с дисковым пространством что создает очередь и лишнюю нагрузку.
APC/xcache, точка.
Ihor пишет:
раскидывая ресурсы, картинки, базы , кеши на разные хосты
Предусмотрено.
Dastor пишет:
Второй параметр - текст по дефолту
Пишите одну локаль, русскую только пока. Потом когда все будет готово, тупо сели, скопипастили для англичкой или любой другой и перевели сразу всю локаль.
Ключи уже будут в коде захардкожены, но это ключи, их менять не нужно.
MiksIr пишет:
Этот "ужасный" подход используется в боготворимом вами линуксе и называется gettext
Совершенно не аргумент. Ты просто куснул. (Добавление)
MiksIr пишет:
Да хоть на японском, главное что бы совпадал с дефолтным языком из настроек приложения.
Покинул форум
Сообщений всего: 378
Дата рег-ции: Сент. 2014
Помог: 10 раз(а)
[+]
Viper пишет:
бред. Я могу вообще не знать какой дефолтный язык там где-то...
т.е. вы лезете руками что-то править в коде не разобравшись - как он работает и с какими настройками?
Ну, я в вас не ошибся =)
DeepVarvar пишет:
Буквально пару дней назад общался с Евгеном, ты его врядли знаешь, остальные в курсе кто это. Мы так и не пришли к общему знаменателю в теме (new ClassName) vs (all static functions) в контексте синглтона. У каждого из нас были свои аргументы.
Если отбросить то, что оба варианта говно, только одно на палочке, а другое в бумажке, то у этих вариантов совершенно разные области применения, которые фактически не пересекаются. Не знаю о чем тут спорить. (Добавление)
DeepVarvar пишет:
Совершенно не аргумент. Ты просто куснул.
Что вам не аргумент все, кроме "я" - это давно уже мне понятно, я даже конкретно с вами спорить не буду, не интересно. Немного непонятен ваш какой-то локально-деревенский диалект русского языка, ну да ладно.
DeepVarvar пишет:
А если не совпадает, то править все вьюхи?
Если не совпадает, то вы допускаете существования приложения, которое часть сообщений выводит на одном языке, а часть - на другом. Ради таких гениев можно добавить в функцию дополнительный параметр - язык, но лучше бы их придушить еще в кроватке.
----- self-banned
DeepVarvar
Отправлено: 17 Декабря, 2014 - 18:52:58
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
Мелкий пишет:
Да, я понял. И именно об этом и говорю - выкинуть
Принято.
Мелкий пишет:
DBI::getConnection('slave') должен возвращать любой один из нескольких слейвов.
Понял. Но, уточни, на каком основании я должен выбирать? Смещать указатель в кольцевом буфере? Держать все эти коннекты открытыми или с ленивым инитом запилить?
Мелкий пишет:
Вообще нафига. Какой смысл проверять isPublic и isStatic на продакшене? А в dev и так видно будет.
В частности - роутер проверяет наличие и доступность к вызову какого либо экшна. Более того - в продакшн режиме (как и в деве) в лог так же будет подробно записано что такойто вася ломился вот по такому то урл и пытался запустить вот такой экшн.
Мелкий пишет:
В случае чего пропущенного чтобы отобразить страницу ошибки и, что более важно, сразу остановить выполнение скрипта
Так оно есть, но только для внутренних ошибок. Не знаю, я считаю что ошибки уровня фатал, ворнинг, нотис не должны быть перехвачены, т.к. эти ошибки могут появиться только во время разработки.
Мелкий пишет:
Вопрос был, как обычно, с подвохом.
Ну тогда не выносить? Пусть будет захардкожен мускуль?
Мелкий пишет:
Угу.
Скинь чтоли Romandry свой акк на гитхабе, пусть тебя добавит на запись. Чую не один раз дампик еще исправленый закинешь. (Добавление)
Мелкий пишет:
Хм, разве нужно пояснять, чем ужасна идея публичных свойств на запись?
Если хочется обращаться как Member::getProfile()->id, то это надо делать через __get и c запретом изменений в __set.
Запилил пока так, потому, что еще не известно какие поля будут добавлены в таблицу пользаков и дефолтный конфиг. А обращение Member::getProfile()->id ты ж не сможешь поменять там значение извне. (Добавление)
MiksIr пишет:
Если не совпадает, то вы допускаете существования приложения, которое часть сообщений выводит на одном языке, а часть - на другом
Вот изначально этого я и не допускаю. Какие профиты в таком допущении? (Добавление)
MiksIr пишет:
области применения, которые фактически не пересекаются
И, в таком случае объясни чем именно не подходит по области применения то, что имеется.
Покинул форум
Сообщений всего: 378
Дата рег-ции: Сент. 2014
Помог: 10 раз(а)
[+]
DeepVarvar пишет:
И, в таком случае объясни чем именно не подходит по области применения то, что имеется.
Когда юнит тесты писать начнете, сами все поймете.
----- self-banned
Viper
Отправлено: 17 Декабря, 2014 - 19:41:21
Активный участник
Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007 Откуда: Симферополь
Помог: 98 раз(а)
MiksIr пишет:
т.е. вы лезете руками что-то править в коде не разобравшись - как он работает и с какими настройками?
Ну, я в вас не ошибся =)
тролить идите на хабр. Тут не нужно. И тем более ваш сарказм тут не уместен. По вашим постам видно только, что все вокруг пишт говно и вы истина в последней инстанции.
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
DeepVarvar пишет:
Но, уточни, на каком основании я должен выбирать?
Где-то ранее писал - алгоритм выбора меняется при необходимости.
Одиночный mt_rand как начальный вариант, достаточно открыть один коннект к любому слейву - его и представлять как единственный slave, а остальные - в этом http-запросе игнорировать.
А, ещё момент, надо штатно обрабатывать ошибку подключения к слейву - если слей недоступен, пробовать другой или вовсе мастера пинать.
DeepVarvar пишет:
В частности - роутер проверяет наличие и доступность к вызову какого либо экшна.
Угу. Зачем? method_exists достаточно. Статик или закрытый метод - ошибка разработки.
DeepVarvar пишет:
в лог так же будет подробно записано что такойто вася ломился вот по такому то урл и пытался запустить вот такой экшн.
Зачем дублировать error.log nginx'а? Там 404 будет штатно и так.
DeepVarvar пишет:
А обращение Member::getProfile()->id ты ж не сможешь поменять там значение извне.
Да ну? Ещё как смогу. Объекты же всегда по ссылке передаются.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.