Задать вопрос
  • Как раскодировать строку которая приходит с сервера?

    Функция раскодирования должна выглядеть как функция кодирования. Только наоборот.
    Ответ написан
    3 комментария
  • Почему так работает, а так нет?

    Denormalization
    @Denormalization
    С PHP.NET:

    Связывает PHP переменную с именованным или неименованным параметром подготавливаемого SQL запроса. В отличие от PDOStatement::bindValue(), переменная привязывается по ссылке, и ее значение будет вычисляться во время вызова PDOStatement::execute().


    Во втором случае в момент, когда происходит связывание переменная уже не существует. Попробуйте использовать bindValue.
    Ответ написан
    Комментировать
  • Полный цикл жизни проекта: html,css,js > php, шаблоны, изменения, переиспользование?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    Подход давно выработан: пакетные менеджеры. Для фронтенда это npm/bower (или, может быть, component, но это уже чуть более широкая вещь), которым можно подсовывать адрес приватного git/hg репозитария. Только добавьте в .git_ignore node_modules и bower_components.

    Другой вариант -- git submodule, но это будет более геморройно.
    Ответ написан
    9 комментариев
  • Как лучше всего реализовать мультиязычность?

    @rsi
    software engineer
    Вырасти из фреймворков это на самом деле странно слышать, но дело ваше. Странно тогда почему вы задаете такие вопросы.

    donem.com/en/new?id1
    это ваш маршрут "en" идентификатор языка. Определите хранилище для переводов. Это может быть база, это могут быть файлы. У WP как ни странно отличная реализация на данный счет, они хранят переводы в .po файлах, которые даже такие моменты как 1 слон (elephant), 2 слона (elephants), 5 слонов (elephants) учитывают. Напишите один класс, который на основе идентификатора языка и оригинального слова будет выводить перевод. У вашей CMS же есть жизненный цикл, шаблоны? Вот вызывайте этот класс переводов в момент компиляции шаблона. А выглядеть это будет как то так - t("elephant"), а там внутри уже найдется соответствие исходной строки и перевода.

    Если вам не только интерфейс, но и содержимое (например статьи) переводить хочется, то определите структуру в базе (вы же в базе материалы храните?) которая бы позволяла одни те же данные хранить на разных языках и пусть ваш класс переводов отдает шаблонам данные на нужном языке на основе идентификатора языка.
    Ответ написан
    1 комментарий
  • Можно ли таблицу MYSQL использовать как лог файл?

    SagePtr
    @SagePtr
    Еда - это святое
    Можно. К тому же, в MySQL есть специальный storage engine для логов.
    Ответ написан
    Комментировать
  • Какой тег HTML5 выбрать?

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

    1. Заголовок и описание.
    <header>
        <h2>Заголовок</h2>
        <p>Описание к заголовку</p>
    </header>

    Так как описание является продолжением заголовка в семантическом смысле, мы должны объединить их в одно смысловое целое, сохранив при этом разделение собственно заголовка и описания. Для этого используется тэг header, который, согласно спецификации, служит контейнером для создания шапки какого-либо элемента (не заголовка, а шапки).

    2. Несколько заголовков.
    <hgroup>
        <h1>Титульный заголовок</h1>
        <h2>Подзаголовок</h2>
    </hgroup>

    Так как у нашей секции несколько заголовков разного веса, их так же стоит семантически связать. Для этой цели можно использовать hgroup, который, согласно спецификации, служит для группирования нескольких заголовков. Но, так как его убрали из спецификации, полагаю, эту роль возьмет на себя header.

    3. Ваш вариант.
    <h2>Заголовок</h2>
    Заметьте, у вас всего лишь один элемент, который не требует группировки с чем-либо. Он самодостаточен, и по смыслу соотносится с секцией, в которой находится. Нет никакого смысла выделять ему дополнительный контейнер в данном случае.
    Ответ написан
    1 комментарий
  • Как сделать простой php-обработчик для формы обратной связи из одного поля?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Не нашел решения в интернете - все предложенные скрипты используют несколько полей.

    Это потому что ты пытаешься сидеть на двух стульях сразу.
    Получение формы и отправка почты - это РАЗНЫЕ, никак не связанные друг с другом задачи. И надо не валить их в кучу, а делать по одной.

    Прием-отправка формы - это самое базовое, что вообще есть в РНР. Ты уверен, что у тебя эта часть ну совсем не получается? Думаю, если ты постараешься, то справишься.

    Отправка почты - это сосем другая задача. тренируйся в отправке без всякой формы, и скрипты ищи не для "отправки телефона", а просто для отправки писем.

    И все у тебя получится
    Ответ написан
    1 комментарий
  • Вы работаете со своими проектами на локалке или удаленно?

    viktorvsk
    @viktorvsk
    Тяжела и неказиста жизнь типичного пхп-программиста
    getjump.github.io/ru-php-the-right-way осильте для начала это, если не хотите, что б боль с каждым днем прогрессировала

    Никаких денверов. Никаих мобильных HDD. Никакой синхронизации по фтп.

    Ну а конкретно по вопросу:
    Конечно, локально. Вы описали столько проблем, а это вы работаете сами. Представьте, что нужно будет работать вдвоем. Втроем. Вдесятером. Все разбросаны по миру и есть только скайп.

    У каждого разработчика должно быть свое собственное удобное уникальное окружение.

    0. Вместо винды - *nix
    1. Вместо денвера - встроенный веб-сервер для начала. Потом, при необходимости (с Вашим подходом, она может возникнуть не скоро), - полноценный веб-сервер.
    2. Вместо дропбоксов и мобильных HDD - система контроля версий
    3. Вместо синхронизации по фтп - какой-нибудь нормальный воркфлоу по деплою (например, www.davegardner.me.uk/blog/2012/02/13/php-deployme... ). Плюс что-то следящее за зависимостями (например, https://getcomposer.org/ )
    Ответ написан
    Комментировать
  • Вы работаете со своими проектами на локалке или удаленно?

    svfat
    @svfat
    ☺Нужен VPS? Два месяца бесплатно. Смотри профиль☺
    Послушайте, разработка под Windows - это боль. Нормальной консоли нет, а рано или поздно она понадобится, существующие решения довольно костыльные. Бросайте эту затею и переходите на другой уровень. Рекомендую скорее переходить на линукс, поставьте второй системой дома ubuntu или mint (они практически идентичны), вам это пригодится. На ней тренируетесь элементарно настроить стек LAMP или LEMP. Если вообще с консолью не дружите, то придется тяжеловато, но с минимальными навыками разберетесь быстро.

    Дальше заводите аккаунт на bitbucket.com - там можно бесплатно хранить git-репозитории, в том числе приватные. Играетесь с git. Теперь ваш код всегда можно перенести на любую машину, хоть в Denwer на ноутбуке, хоть на production, был бы интернет.

    В принципе этого уже достаточно для продуктивной работы, для дальнейшего развития поиграйтесь с vagrant - это такая штука для виртуализации. Можно создать кучу машин с разным набором софта, для отладки хоть черта лысого.

    Дальше можно завести VPSку за $5 в месяц. По моей реферральной ссылке получите $10, на пару месяцев тестирования хватит. Рекомендую устроить на ней что-то типа хостинга. Легко будет админить, можете какие-то свои проекты запускать, и сразу результат показывать клиенту.
    Ответ написан
    Комментировать
  • Какие книги по MYSQL вы использовали для обучения?

    conf
    @conf
    Ruby developer
    High Performance MySQL (желательно 2-е издание или более новое). Очень хорошо расписаны различия и тонкости движков MyISAM и InnoDb, как оптимизировать запросы, составлять индексы и т.д. и т.п. Кроме того, рекомендую блог mysqlperformanceblog.com
    Ответ написан
    Комментировать
  • Какие книги по MYSQL вы использовали для обучения?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    "High Performance MySQL", Baron Schwartz, Peter Zaitsev, Vadim Tkachenko
    shop.oreilly.com/product/0636920022343.do
    Не просто достойна. а обязательна к прочтению всем, кто работает с MySQL.
    Ответ написан
    Комментировать
  • Быть Marionettejs или не быть?

    aen
    @aen
    Keep calm and 'use strict';
    Если коротко, то "быть". Это вам позволит избежать кучи граблей, на которые наткнетесь при разработке.

    upd: Вот вам подборка для изучения https://github.com/instanceofpro/awesome-marionette
    Ответ написан
    Комментировать
  • Растолкуйте код js?

    Taraflex
    @Taraflex
    Ищу работу. Контакты в профиле.
    learn.javascript.ru/cookie
    javascript.ru/String/split
    javascript.ru/String/indexOf
    www.w3schools.com/jsref/jsref_trim_string.asp
    javascript.ru/string/substring

    Я бы не использовал функцию trim так как её нет в ie8, и чистил бы пробелы регулярным выражением.
    Ответ написан
    2 комментария
  • Как получить выполняемые запросы в браузере?

    AlekseyNemiro
    @AlekseyNemiro
    full-stack developer
    Запомнить, какие запросы были отправлены, и проверять:
    var requests = [];
    requests.push($.ajax({type: 'GET', url: '/echo/json/'}));
    requests.push($.ajax({type: 'GET', url: '/echo/json/'}));
    requests.push($.ajax({type: 'GET', url: '/echo/json/'}));
    requests.push($.ajax({type: 'GET', url: '/echo/json/'}));
    requests.push($.ajax({type: 'GET', url: '/echo/json/'}));
    
    console.log(requests);
    
    function Test(){
        $.each(requests, function(i, req){
            if(req.readyState == 0 || req.readyState == 4){
                console.log(req.status + ': ' + req.statusText);        
            }else{
                console.log(req.readyState);        
            }
        });
    }
    
    Test();
    
    window.setTimeout(Test, 3000);

    Посмотреть пример.
    Можно удалять запросы из коллекции по завершению их выполнения.
    Ответ написан
    2 комментария
  • Почему не работает accordion на bootsrap?

    nazarpc
    @nazarpc
    Open Source enthusiast
    ПРИ ЧЕМ ЗДЕСЬ PHP???
    Ответ написан
    Комментировать
  • Как вернуть результат функции js?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    Коллбек, переданный в then, вызывается асинхронно -- когда-то потом, в неопределенном будущем, неизвестно когда, но точно тогда, когда getFunction уже закончит свое выполнение.

    Напишите в консоли:
    function getFunction () {
        console.log('sync1');
        setTimeout(function () {
            console.log('async');
        }, 1000);
        console.log('sync2');
    }

    Какое бы число вы не поставили вместо 1000, хоть 0, надпись async появится позже, чем sync2. А если поставить брейкпойнт, то хорошо видно, что на момент выполнения console.log('async'); функции getFunction даже нет в стеке вызовов.

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

    Возвращайте promise:
    function getFunction() {
    	return $.when(
    		$.ajax('адрес'),
    		$.ajax('адрес')
    	)
    }

    и работайте с ним (с помощью .then и т.д.)
    Ответ написан
    Комментировать
  • Как скриптом перейти в начало страницы?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    document.getElementById('arrow').onmouseover = function() {
        pic.src = "onMouseOver.png";
    };

    Каждый раз, когда вы так делаете, умирает котенок. Положите обе картинки в спрайт и меняйте скриптом background-position, если уж по каким-то причинам не можете использовать CSS. Иначе эта картинка будет подгружаться только после того, как юзер наведет мышь, и пока она не подгрузится, не бует видно кнопки вообще.
    Ответ написан
    Комментировать
  • Чем заслужил свою популярность Laravel?

    ajaxtelamonid
    @ajaxtelamonid
    Laravel
    Тем, что там можно писать мало там, где мы привыкли писать много. Подобный "конвеншн овер конфигурейшн" - он помимо прочего оставляет ощущение, что автор пишет не сферическую вещь в вакууме, которая якобы должна подойти всем, а для нас, для простых рабочих пацанов с окраин, со своими вполне конкретными юзкейсами. Т.е. он 1. человек умный и 2. знает жизнь. Это подкупает.

    Например, в output идет то, что возвращено из контроллера, а если возвратить ORM-объект или массив (точнее коллекцию) ORM-объектов, то будет отдан json, причем со всеми связанными объектами. Масса нужных в хозяйстве вещей, которые идут из коробки (миграции, редис, кэш с множеством провайдеров, работа с очередями, консольная тулза artisan для разнообразных обслуживающих вещей). Изкоробочная работающая сборка вьюх в лейаут, минимум возни с авторизацией. Скоупы в ORM. Кусочки конфигов в файлах, которые удобно ставить в .gitignore. В общем, масса такого вот, мелкого, но очень удобного.

    На Laravel ОДНОВРЕМЕННО можно уйти в глубины аццкого хадкора по Фаулеру, с тестированием всего и вся, с интерфейсами, депенденси инжекшнами, репозиториями, обсерверами, ентитями, гексагональными сценариями итд, итп, _подставить_любимый_паттерн_, И в то же время забить на это всё, сгенерить _ide_helper для подсказок по "фасадам" в IDE и фигачить код со статическими вызовами, как будто весь фреймворк написан на статике, как Кохана. Т.е. и сайт-знакомому-за-вечер и огроменный кровавый энтерпрайз делаются на одном фреймворке - в зависимости от того, насколько глубоко исполнитель хочет погружаться в свой продукт. Подобная гибкость - это, имхо, очень круто.

    И еще - как показала практика фреймворкостроительства, или ты двигаешься вместе с развитием php, либо ты делаешь "более лучшее, удобное и грамотное" решение и тихо загниваешь с своем междусобойчике за пару лет. Laravel двигается максимально близко к php - следование psr, composer-платформа в качестве базы, фрейморк ставится оттуда и пакеты расширения тоже имеют composer-формат. Что говорит о том, что у фреймворка есть все шансы прожить долгую и счастливую жизнь.
    Ответ написан
    Комментировать
  • Как правильно написать скрипт выделения чекбоксов?

    Paul_Smith
    @Paul_Smith
    Установка флажка:
    $(".checkbox").prop('checked', true);

    Снятие флажка:
    $(".checkbox").prop('checked', false)

    Код для вашего случая:
    $("#checkbox").change(function(){
        $('.checkbox').prop('checked', $(this).is(':checked'));  
    })


    jsfiddle.net/N4F78
    Ответ написан
    Комментировать