• Как лучше всего реализовать мультиязычность?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    1. Просто php файлы:
    + С ними, таки да, просто работать
    - В случае, когда переводов реально много - будете вызалить по памяти
    - Правки обязан вносить прогер

    2. PO -> MO файлы:
    + Есть куча тулзовин для работы с ними
    + Работает с php довольно таки быстро и памяти кушает не так много
    - Обязательная перегенирация MO
    - В случае, если переводы делает 3-е лицо, мерджить бывает - не самое приятное занятие

    3. БД:
    + Переводы может делать вообще левый человек, не вторгаясь в процесс
    - Повышенные требования к миграциям
    - Обязательное разделение на части и кэширование

    З.Ы. Оригинальный язык для переводов НЕ рекомендую делать нейтивным. Лучше использовать специфические строки в стиле: '{moduleName}:{controllerName}:{actionName}:{blockName}:frase'. В противном случае есть вероятность склейки переводов и может возникнуть ситуация:

    В блоке удаления заменили текстовку "ОК" на "Удалить", и магически не постижимым образом на странице регистрации под формой ввода появится одноименная клавиша.
    Ответ написан
    1 комментарий
  • Как написать десткоп на html/css/js?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    > а есть какой-то другой, более удобный
    да, не использовать nodejs для этого)) Это серверная технология как-ни-как.

    Посмотрите в сторону QML
    Ответ написан
  • Как использовать Docker для разработки на Django?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    > Удастся ли снизить overhead если использовать его или это только поможет при дальнейшем деплое?
    Да, за счет того, что работа с памятью/процессорным временем более быстрая + нет жесткой необходимости синхронизировать файловую систему.

    > Если да, то как лучше всего разворачивать: делить на несколько контейнеров (отдельно для django, postgres и celery) или объединить в один?
    По хорошему - лучше разделить. Если docker будет только для dev окружения - можно запихать в один.
    Ответ написан
    Комментировать
  • Где можно порешать задачки по PHP?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Если вам для повышения скила: откройте нравящийся вам фреймворк, перепишите один из его компонентов так, что бы скорость выполнения была сравнима с нейтивным кодом на php, но при этом с тем же интерфейсом. Попробуйте протолкнуть вашу фичу в это фреймворк, если ее одобрят, плюс вам в карму, если не одобрят - получите стек ошибок, в чем вы ошибались))

    Вот вам пример: по соглашению в проекте принята обязательная валидация аргументов в каждом методе, хотя бы на тип, в противном случае - бросать исключение. На секундочку это туева хуча проверок, меня это дело запарило, решил под искать пакет, решающий эту задачу, их довольно много и архитектурно они вполне красивые, но есть нюанс: время и память. В проекте это реально критично, посему пришлось писать свое, увы с кучей дублирования (мне самому не нравится), но по бенчмаркам эта штука получилась быстрая))
    https://github.com/ko-ko-ko/php-assert

    Попробуйте реализовать подобный проект (не обязательно валидатор), это может быть например логгер(PSR-3) на udp порт, система аннотаций (как в доктрине, но более быстрая, пусть и менее функциональная), минималистичный роутер, работающий с http-message, система по сбору статистики в стиле piwik, пусть и без frontend, но более настраиваемая и т.д.

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

    upd: проект переехал))
    Ответ написан
    Комментировать
  • Какой backend лучше для мобильного приложения?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Часто это пример привожу, приведу еще раз:
    Вы каким прибором еду кушаете: вилкой, ложкой, ножом, или руками? Мне так кажется, что в зависимости от блюда.

    С backend то же самое: одни технологии круты для одного, другие - для другого. Вы скажите, что именно хотите делать, уже на базе этого стоит подбирать компоненты.

    Например чатики и системы, завязанные на событийность - под nodejs будут себя не плохо чувствовать.
    Под файловые распределенные хранилища - mogilefs.
    Под процессинг данных - все, кроме nodejs и php.
    Под очень серьезную мультипоточность - erlang.
    Под быструю разработку И высокую скорость - golang.
    Под еще более быструю разработку - php.
    Ответ написан
    Комментировать
  • Как вытянуть зависимости подключаемого пакета через composer?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Если это dev-зависимости в стороннем пакете, загружайте с флагом --dev, но будьте осторожны - это рекурсивная загрузка зависимостей зависимостей. Если у вас require не маленький - это скорее может привести к двум исходам: возникновение конфликта версий пакетов, либо ОЧЕНЬ длительная загрузка.

    Если же пакеты в директиве suggest - их придется подтягивать руками.
    Ответ написан
  • Как реализовать сервис поиска попуток и попутчиков?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Не используйте слово "простой" и его синонимы, никогда))

    Алгоритмы поиска пути по множеству измерений (время, пробки, расписание транспорта, маршруты этого же транспорта, топология местности, пдд и другие) - не самая простая штука.

    Где данные по каждому из измерений брать будете?

    Вы на какую нагрузку рассчитываете 0.1 rps, или 10000rps? Это тоже играет не малую роль.

    На какой бюджет вы рассчитываете?

    Что на счет масштабирования горизонтального/вертикального?

    Сколько планируете нанять прогеров / безопасников / базюшников / тестрировщиков / менеджеров / бухгалтеров / маркетологов / сеошников / smm-щиков?

    ----

    Если ваша цель "на коленке" - пишите на том, что знаете, так вы хоть время съэкономите поняв, что это гиблое дело))
    Ответ написан
    Комментировать
  • Как реализовать связь многие-ко-многим для одной и той же таблицы?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    category: [id, name]
    categoryHasCategory: [parentId, childId]

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

    Для деревьев все же лучше ONE-TO-MANY

    category: [id, parentId, name]
    Ответ написан
    Комментировать
  • Как правильно поднять сервер?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    "Поднять сервер" - это абстракция)) Решайте проблемы по мере необходимости. Тот же WP можно поднять кучей способов:
    1. Линуксы бывают разные)) rpm-like, deb-like, всякие арчи, генту и другие, версии пакетов и правила настроек всюду разные
    2. Web сервера тоже работают в разных связках: Apache, Nginx, Apache+Nginx, Lighttpd,... Если сайт будет доступен чрез https - тоже есть свои нюансы
    3. Вместо MySQL можно юзать ту же Percona, или MariaDB
    4. PHP может работать через mod_php, или php-fpm или вообще, быть hhvm...

    Собсно посему нет такого понятия "правильно поднятый сервер", есть понятие "оптимальные настройки" и оно может быть только в контексте системы, которую вы строите
    Ответ написан
    Комментировать
  • Каким образом сделать API, если есть регистрация только с помощью соцсетей?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Почитайте спеку OAuth2.
    Ответ написан
    Комментировать
  • Архитектура SaaS приложени на Go (Golang-way)?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Вы слишком конкретизируете вопрос, достаточно было написать "как писать сервисы?")) НЕ "правильную" архитектуру (такого не бывает), а максимально подходящую под стек возможных задач с возможностью измениями требований к бизнес логике и масштабированию - можно написать только если у вас на руках ТЗ + известен бюджет. Это относится ко всем ЯП.
    Ответ написан
    Комментировать
  • Nodejs vs ASP.NET MVC vs php?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Добрый день, подскажите, какой прибор удобнее для "среднестатистического" употребления пищи? Ложка vs вилка (vs нож)?

    Это системы для разных целей и удобнее на них решать задачи, под которые они заточены
    Ответ написан
    7 комментариев
  • Как правильно вставить данные в MySQL c помощью php?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    if (isset($_POST['name']) && isset($_POST['email'])){
    
    // ГДЕ ВАЛИДАЦИЯ ВХОДЯЩИХ ДАННЫХ???
    
                $userName = $_POST['name'];
                $email = $_POST['email'];
                $company = $_POST['company'];
    
    // 2015-ый на дворе, PSR-4!!!
    
                include '../template/sql-connect.php';
    
    // mysql_conneсt - устарел, го ОЧЕНЬ не рекомендуется использовать
    
                $db_server = mysql_connect($db_hostname, $db_username, $db_password);
    
    // Use PSR-2 Luke!
    // die - используй только в случае крайней необходимости во время дебага, в остальных ситуациях - это как правило хрень постная.
    // Если уже пишешь ошибку - пиши конкретно, что не так "Query error" это примерно тоже самое, что и "oops.."
    
                if(!$db_server) { die("Query error"); }
    
    // Возьму ка я и отправлю в $POST['company'] = "'); DROP TABLE users;"
    // И баляля будет
    // Входящие данные обязательно должны быть И провалидированы И экранированы.
    
              $query = "INSERT INTO users (name, email, company) VALUES" .
                     "('$userName', '$email', '$company')";
    
               if (!mysql_query($query, $db_server))
                     echo "INSERT failed: $query<br>" .
                     mysql_error() . "<br><br>";
    
                mysql_close($db_server);
            }


    Ну и общее: следует разделять вывод данных и бизнес логику приложения, почитайте про MVC
    Ответ написан
    6 комментариев
  • Производительность сайта по сдаче тестирования?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Смотря на какую нагрузку вы рассчитываете. Для ~0,5 rps вам кэш даже может не понадобится.
    redis - чаще всего используется как кэш хранилище, и pub/sub. Как БД его использовать - не самая лучшая идея, хотя бы потому что:
    redis.io/commands/keys
    Warning: consider KEYS as a command that should only be used in production environments with extreme care. It may ruin performance when it is executed against large databases.
    Ответ написан
    3 комментария
  • Как лучше сравнивать переменную со значением в условии PHP?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    == используйте только в случае, если уверены в типах данных с обоих сторон, в противном случае ===
    Ответ написан
    Комментировать
  • Почему логин должен состоять из латинских букв?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    * Проблемы с кодировкой.
    * Проблемы со шрифтами (например логин на китайском, а у какого-нить англичанина будет [][][][][])
    * Что на счет невидимых символов, \r например?
    Ответ написан
    Комментировать
  • Является ли правильной конструкция?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    В случае, если шаблонизатор не используется - это вполне нормальная практика.
    Ответ написан
    Комментировать
  • Как вы подходите к самообразованию?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    0. Гугление, а нужно ли оно мне
    1. Книга 700+ страниц (как художественная)
    2. Практика с книгой
    3. Практика с официальными документациями

    З.Ы. Не знаю почему, но формулировка вопроса напомнила фразу из Симпсонов: "чем пахнет цифра 3"
    Ответ написан
    Комментировать
  • Какой язык программирования лучше для high load web проектов?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    С помощью какого прибор быстрее всего можно съесть много еды?)) Вы предположили, что это ложка, но тут вам приносят стейк.

    ЯП выбирается под проект. Если вы ориентированы на сверх хайлод уровня высокочастотного трейдинга - то вам даже железо специальное покупать нужно будет и БД использовать специфические, например kdb+.

    При выборе ЯП на самом деле вы выбираете инфраструктуру, которая должна прежде всего решать бизнес задачи. Например вы таки психанули и написали проект на Erlang, ок рано, или поздно - упретесь в железо, для ХЛ - это вполне норм ситуация. С точки зрения бизнеса прошаренный эрлангист стоит довольно дорого, а команда - тем более, на много дешевле выбрать другой ЯП с большим сообществом + более дешевыми специалистами, даже с несколькими лишними серверами.
    Ответ написан
    5 комментариев