• DATETIME или TIMESTAMP?

    DevMan
    @DevMan
    используйте datetime пока не уверены в обратном.
    timestamp в мускуле:
    - ограничен 1970-01-01 снизу и 2038-01-19 сверху (соответственно, не очень подходит для хранения, например, исторических дат или дней рождения)
    - отображение зависит от времени сервера (при восстановлении на другом сервере может случится не то, что ожидалось)
    Ответ написан
    1 комментарий
  • Как посчитать количество затронутых месяцев между двумя датами?

    glaphire
    @glaphire Куратор тега PHP
    PHP developer
    Тоже поискала варианты, много устрашающих)
    У меня получилось так:
    SELECT COUNT(
        	DISTINCT CONCAT(
                MONTH(date),
                YEAR(date)
            )
        ) 
        FROM `table_example` WHERE date IS NOT NULL

    Берет комбинацию месяц+год, считает кол-во уникальных значений
    Ответ написан
    Комментировать
  • Как перестать отслеживать ранее отслеживаемый файл из git репозитория?

    bitniks
    @bitniks
    Go/PHP/Symfony developer
    Добавить название файла в .gitignore. Далее
    git rm -r --cached .
    git add .
    git commit -m "fixed untracked files"
    Ответ написан
    Комментировать
  • Как собрать уникальные подстроки в текстовом документе по маске?

    @dodo512
    Найти: (?s).*?(page\.php\?id=\d+|\z)
    Заменить на: $1\n
    Одно нажатие на кнопку "Заменить все" удалит всё кроме ссылок page.php?id=909090.
    Ответ написан
    1 комментарий
  • Язык/Фреймворк для стартап-проекта в ВУЗе?

    Adamos
    @Adamos
    Вам бы как-нибудь самому прикинуть, какой практический опыт вам хотелось бы иметь к окончанию вуза.
    Проект этот можете вынести за скобки - он, скорее всего, все равно будет неудачным.
    Важно, что вам придется изучить и преодолеть по ходу работы над ним.
    Если у вас есть надежды и амбиции на серьезную работу с серверами - может, и Джава.
    Если есть риск пристроиться в какие-нибудь Яндексы - Питон и Го.
    Если, кроме местных веб-студий, особенной работы вам не светит - лучше Пых.
    Если надежд никаких и после учебы пойдете в преподавание - можно попробовать С++ ;)
    Ответ написан
    Комментировать
  • Как мне сделать текущую (master) локальную ветку запасной, вернуться на неск коммитов назад (к commit-23) и начать новый master с него?

    git branch -m переименовать ветку master
    git checkout -b master <с какого коммита> чекаут с нужного коммита в новую ветку
    Ответ написан
    3 комментария
  • Почему может висеть чтение (cat/less/vi) файла со статусом D?

    Radjah
    @Radjah
    D - это ожидание IO. Либо диск всё, либо хреновый контакт диска с интерфейсом в компе (SATA/USB/etc), либо диску питания не хватает, либо 12309.

    Если сетевая ФС, то может быть затык или обрыв в линии связи.
    Ответ написан
    3 комментария
  • Существует ли место, где можно покопаться в исходниках сайтов?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    90% современных сайтов - либо готовые цмс, либо набор из готовых пакетов, подключенных к готовому же фреймворку. Все нюансы "хорошей" разработки в основном сводятся либо к следованию кодестайла и гайдлайна фреймворка, либо очень специфичны и заточены на конкретную редко встречающуюся задачу, и как пособие по хорошему коду или пример удачного решения, редко подходят. По этому основная задача - следовать основным принципам программирования и гайдлайну выбранного фрейма, так же для лучшего понимания можно посмотреть как решают типовые задачи хорошие прогеры, есть куча подкастов, онлайн гайдов, статей...
    Ответ написан
    Комментировать
  • Как в Битрикс вывести множественное свойство через API?

    alex-1917
    @alex-1917
    Если ответ помог, отметь решением
    этот код внутри твоего цикла будет, это битрикс, увы и ах
    $VALUES = array();
    $res = CIBlockElement::GetProperty($IBLOCK_ID, $ELEMENT_ID, Array("sort"=>"asc"), array("CODE" => "UF_NOTE_USER"));
        while ($ob = $res->GetNext())
        {
            $VALUES[] = $ob['VALUE'];
        }
    }


    Или другой варик - если ты включаешь множественное в arSelect, то у тебя будет вот такой нюанс, в доках описан:
    Примечание 1: если в массиве используются свойство, являющееся множественным, то для элементов, где используются несколько значений этого свойства, будет возвращено несколько записей вместо одной. Для решения этой проблемы инфоблоки нужно перевести в Режим хранения свойств в отдельных таблицах, в этом случае для свойства будет отдаваться массив значений. Либо можно не указывать свойства в параметрах выборки, а получать их значения на каждом шаге перебора выборки с помощью _CIBElement::GetProperties().

    Я делаю так - в арселект включаю множественное, но дальшее в php отсекаю повторы, в массиве останутся первые по сортировке значения множественных полей.
    Это битрикс, детка,это битрикс.
    Ответ написан
    1 комментарий
  • Как в гит сбросить файлы которые были изменены?

    @natashta
    Откатиться к предыдущему коммиту?
    $ git log, находите и копируете номер нужного коммита.
    $ git checkout, вставляете номер нужного коммита
    Ответ написан
    1 комментарий
  • Можно ли рассчитать стоимость системы без ТЗ?

    В похожей известной мне ситуации заказчик, заказав оценку стоимости у десятка различных исполнителей, получил разброс стоимости проекта от 400 тысяч до 32 млн рублей. (Заказчик в итоге отказался от проекта вообще).

    Не знаю, есть ли в такой ситуации вообще какое-то единственно правильное решение, но помочь вам могут методы оценки стоимости проекта, тот же самый PERT. В двух словах:
    Декомпозируйте задачи настолько, насколько это необходимо для того, чтобы их оценить хотя бы предварительно.
    Выполните, исходя из имеющегося опыта, оценку сроков получившихся задач по трём точкам: оптимистическую, наиболее вероятную, пессимистическую. В этих оценках постарайтесь учесть возможные риски.
    Вычислите ожидаемое время проекта на основании получившихся оценок, накиньте пару стандартных отклонений в плюс и минус: получите достаточно широкую вилку суммарного времени работы над проектом, но с высокой вероятностью включающей в себя то время, которое может получиться по факту.
    Умножьте получившиеся оценки на стоимость работы вашей команды (в час/день -- какую единицу при оценке сроков использовали), таким образом получите оценку стоимости проекта сверху и снизу. Презентуйте получившуюся вилку и скоуп проекта, который лёг в её основу, заказчику. Сужайте вилку на свой страх и риск.

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

    Высокая неопределённость на начальных этапах проекта -- явление нормальное, но брать на себя какие-то обязательства в таких условиях -- ваш риск. Оцените, готовы ли вы пойти на него.
    Ответ написан
    1 комментарий
  • Можно ли рассчитать стоимость системы без ТЗ?

    Нельзя.
    Ответ написан
    Комментировать
  • Как вывести множественное свойства типа "привязка к элементу" в Битриксе?

    udjin123
    @udjin123
    PHP, Golang, React
    У вас результат запроса в массиве $ar_res а обращение к $arItem

    Вот так правильно
    <?foreach($arItem["PROPERTIES"]["DOCTOR"]["VALUE"] as $analog):?>
        <?$res = CIBlockElement::GetByID($analog);?> 
        <?if($ar_res = $res->GetNext()):?> 
            <h2><?=$ar_res["NAME"]?></h2>
            <img alt="<?=$ar_res["NAME"]?>" src="<?=CFile::GetPath($ar_res["PREVIEW_PICTURE"])?>">
        <?endif?>
    <?endforeach;?>


    PS Точнее вообще так не правильно, при наличии реляционной базы делать запросы в цикле, хуже не бывает.
    Ответ написан
    5 комментариев
  • Можно ли приравнивать работу с Битрикс к работе с фреймворком?

    isset89
    @isset89
    Врёшь, тебе нравится
    Можешь ответить что-то типо: "Зачем фреймверк? Он тратит много места, много не нужного кода и фишек в коробке, которые не будут использоваться в проекте, только место занимать!" Чистый ПХП7 вот мой фреймверк))))) и главное делай умный вид. А потом тихо под нос себе бурчи: "Зажрались эти вебщики, фреймверки им подавай, совсем сами ничего делать не хотят, потом кричат, места им на сервере больше подавай))))"
    Ответ написан
    3 комментария
  • Можно ли приравнивать работу с Битрикс к работе с фреймворком?

    @McBernar
    Ну, как бы, отвечать лучше как есть — работал только с битриксом.

    Но с таким бекграундом вы мало кому нужны. Возьмите какой-нибудь Ларавел, сделайте пару пет-проектов и пишите его в резюме.
    Ответ написан
    Комментировать
  • Как редактировать JavaScript "на лету" в Google Chrome?

    Правьте на вкладке Sources и после изменения нажмите Ctrl+S. Скрипты встроенные прямо в страничку там тоже будут (см выпадающую панельку слева)
    Ответ написан
    1 комментарий
  • Какой ценник выставить за интеграцию CMS MODX на сайт?

    alex-1917
    @alex-1917
    Если ответ помог, отметь решением
    Ты вопрос неправильно ставишь.
    Поставь вопрос правильно.
    Отойди от монитора метра на два.
    Посмотри на вопрос издали.
    Чуть поверни голову.
    Вот теперь должна проявиться реальная цена
    )))

    Подсказка:
    неправильно - за интеграцию CMS MODX на сайт?
    правильно - сайт под ключ
    Ответ написан
    Комментировать
  • Как и куда встроить прослушивание событий в 1С-Битрикс для их обработки и дальнейшей передачи в удаленные сервисы?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Вообще, исчерпывающую информацию на этот вопрос дает официальная документация по файлу init.php.

    Обработчики событий лучше группировать в одном файле и тщательно аннотировать где они используются и какая задача перед ними стоит.


    Про способы организации кода это довольно узкая тематика.
    Если Вы 100% уверены, что они еще пригодятся на других проектах (и у Вас уже есть подобные заказы), то предпочтительнее делать модуль.
    Если это хардкорная интеграция только для существующего проекта, то init.php(*).

    Мы, например, придерживаемся последнего варианта:
    1) В директории /local/php_interface/ создаем следующие файлы:

    - init.php (Содержит подключение других файлов + автолоадер)
    - constants.php (Содержит только константы, актуальные для данного проекта)
    - events.php (содержит подписки на события, но логика их обработки не находится в этом файле)

    2) В директории /local/php_interface/classes/ по PSR размещаем класс для проекта.

    Например:

    init.php:
    /**
     * - /local/classes/{Path|raw}/{*|raw}.php
     * - /local/classes/{Path|ucfirst,lowercase}/{*|ucfirst,lowercase}.php
     */
    spl_autoload_register(function($sClassName)
    {
    
    	$sClassFile = __DIR__.'/classes';
    
    	if ( file_exists($sClassFile.'/'.str_replace('\\', '/', $sClassName).'.php') )
    	{
    		require_once($sClassFile.'/'.str_replace('\\', '/', $sClassName).'.php');
    	}
    
    	$arClass = explode('\\', strtolower($sClassName));
    	foreach($arClass as $sPath )
    	{
    	    $sClassFile .= '/'.ucfirst($sPath);
    	}
    	$sClassFile .= '.php';
    	if (file_exists($sClassFile))
    	{
    		require_once($sClassFile);
    	}
    });
    
    /**
     * File with event handlers
     */
    require_once(__DIR__.'/events.php');


    events.php:
    $eventManager = \Bitrix\Main\EventManager::getInstance();
    
    /**
     * For new core of bitrix use
     *     $eventManager->addEventHandler( #module#, #handler#, [#namespace#, #function#]);
     * 
     * For old core of bitrix use
     *     $eventManager->addEventHandlerCompatible( #module#, #handler#, [#namespace#, #function#]);
     */
    
    $eventManager->addEventHandlerCompatible("module", "event", ['\\Project\\Module\\Event\\Handler', 'onEvent']);
    Ответ написан
    Комментировать
  • Как считать вклад в проект при долевой собственности?

    Maksclub
    @Maksclub
    maksfedorov.ru
    Долю вынести на определенные этапы -- пересчеты доли:
    • стартовый пересчет доли,
    • привлечение новых финансов,
    • уход долевика -- его долю раскидать на всех

    Текущие вклады (не долевые) принимать как обмен работы на деньги (не дивиденды, а именно затраты). Соответственно кто сколько тратит времени, сил и какая эффективность часа -- все отражается в зарплате.

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

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

    В целом -- справедливости не добиться, но можно добиться прозрачных правил
    Ответ написан
    2 комментария