• Реальная заработная плата frontend/backend разработчика в Москве?

    @anton99zel
    29а класс средней школы №7
    Как бы там не было, но у заказчиков всегда позиция, что ты мало работаешь и много получаешь. У разработчика обратное мнение.
    В целом Москва настолько разная и большая, что назвать нечто среднее очень тяжело.
    И не важно сколько ты получаешь, важно сколько ты тратишь:
    Если у тебя идеальные условия труда, белая зп, отпуска, больничные и тому подобное, а также своя жилплощадь и до работы 20 минут на метро - ЭТО ОДНО.
    А вот если работодатель положил болт на соцнормы и в отпуск ты ходишь за свой счет раз в 5 лет и до работы ехать 2 часа по пробкам и снимаешь жилье - ТО ЭТО СОВСЕМ ДРУГОЕ.
    Ответ написан
    Комментировать
  • Какие проекты нужны junior web-developer в портфолио?

    @Dasha-Web
    Хорошо заходят всякие штуки с админками. Чтобы было много ролей (админы, модераторы и пользователи), у каждой роли свои возможности. Попробуй написать какую-то платформу по типу обучающей например. Юзер имеет свой профиль, может создавать обучающие статьи (с фото/видео и текстом). Статьи сначала попадают в админку к модератору и только потом доступны в публичном доступе. Статьи могут быть доступны публично, либо только авторизованным пользователям. Плюс можно организовать рейтинговую систему (лайки/дизлайки + модераторский рейтинг) . И какую-то ленту новостей, куда будут попадать только новости с высоким рейтингом.
    А дальше уже полет фантазии и навыки, которые хочешь показать. Простая схема - умею работать с canvas - припиливаю что-то на canvas, знаю как делать крутые анимации - использую. Цель таких проектов обычно - показать свои навыки и качество кода + умение работать головой. Использовать что-то не понимая как это работает нет смысла потому как на техническом собеседовании все равно это узнают. И часто компании вообще не просят примеры кода, а дают тестовое задание
    Ответ написан
    1 комментарий
  • Как получить такой цвет через colormania пипеткой не выходит ЕСТЬ КОД. КАК?

    @alekcena
    Нелинейный наставник
    1) Загуглить "что такое кодировка цвета, и какие они бывают"
    2) Загуглить "что такое прозрачность"
    3) Преисполниться
    4) Загуглить "Как научиться писать, чтобы другие тебя понимали"
    5) Преисполниться
    Ответ написан
    Комментировать
  • Как читать объекты D7 Bitrix?

    winer
    @winer
    занимаюсь разработкой сайтов на 1c-bitrix
    Как мне получить TRADING_PLATFORM_ID ?

    $tradeBindingCollection = $order->getTradeBindingCollection();
    
    /** @var Bitrix\Sale\TradeBindingEntity $item */
    foreach ($tradeBindingCollection as $item) {
        $tpId = $item->getField('TRADING_PLATFORM_ID');
    }


    Как вообще читать такие объекты?

    В дампе который вы привели указаны типы объектов.
    Например $order->getTradeBindingCollection(); возвращает коллекцию Bitrix\Sale\TradeBindingCollection
    Она как и другие коллекции Bitrix имеет реализацию интерфейсов \ArrayAccess, \Countable, \IteratorAggregate
    Поэтому может проходится циклом foreach.

    В свою очередь каждый объект внутри коллекции является объектом класса Bitrix\Sale\TradeBindingEntity, что так же видно из дампа. Этот класс является наследником Internals\Entity, который имеет методы для получения полей хранящихся в поле values.

    Для того чтобы разобраться нужно смотреть документацию или исходные коды. Исходные коды рекомендую смотреть через IDE (не в notePad++), для удобной навигации и облегчения работы.

    В принципе всё это приходит с опытом.
    Ответ написан
    6 комментариев
  • Как игнорировать файлы из git репозитория?

    @rPman
    Настрой пути сохранения сгенерированных css файлов на вне git репозитария, например второй, создав его специально для production ready файлов. Т.е. именно он и должен использоваться для переноса итоговых файлов в продакшн. либо заведи специальный подкаталог внутри git, добавив его в .gitignore, а саму инсталляцию в продакшн проводи другими способами.

    sass style.scss:../prod/style.css
    Ответ написан
    4 комментария
  • Как игнорировать файлы из git репозитория?

    DevMan
    @DevMan
    невозможно игнорировать то, что уже под контролем.
    можно локально убрать файл из контроля, добавить его в игнор, и у всех, кто после этого склонирует он будет в игноре.
    Ответ написан
    Комментировать
  • Можно ли организовать несколько репозиториев, разбросанные по разным перекрестным папкам?

    saboteur_kiev
    @saboteur_kiev Куратор тега Git
    software engineer
    гит умеет работать с симлинками

    /somewhere/git-repo
    ........................folder

    /site
    ....link-to-folder

    после чего можно зайти в /site/link-to-folder и делать там git pull, git push.
    Ответ написан
    1 комментарий
  • Как правильно подключить обработчик событий в своем модуле?

    udjin123
    @udjin123
    PHP, Golang, React
    В install/index.php модуля надо зарегистрировать зависимость с помощью вот этой функции
    https://dev.1c-bitrix.ru/api_help/main/functions/m...

    А файл класть в lib/ чтобы работала автозагрузка классов битрикса

    Пример:

    В install/index.php
    function InstallEvents()
    {
            RegisterModuleDependences('search', 'BeforeIndex', 'mymodule.smartsearch', '\\MyModule\\SmartSearch\\EventHandler', 'BeforeIndex');
    }
    
    function UnInstallEvents()
    {
            UnRegisterModuleDependences('search', 'BeforeIndex', 'mymodule.smartsearch', '\\MyModule\\SmartSearch\\EventHandler', 'BeforeIndex');
    }


    В libs/ файл eventhandler.php с содержимым
    namespace MyModule\SmartSearch;
    
    class EventHandler
    {
        function BeforeIndex($arFields)
        {
            \CModule::IncludeModule("iblock");
    
            if ($arFields["MODULE_ID"] == "iblock") {
                $result = \CIBlockElement::GetByID($arFields["ITEM_ID"]);
                if ($element = $result->Fetch()) {
    
                    $arFields['PARAM1'] = $element['IBLOCK_SECTION_ID'];
                }
            }
    
            return $arFields;
        }
    }
    Ответ написан
    1 комментарий
  • Расскажите подробно про php://input, как пользоваться?

    php://input возвращает все необработанные данные после HTTP-заголовков запроса, независимо от типа контента.

    Данные, могут быть:
    • application/x-www-form-urlencoded ( application/x-www-form-urlencoded тип application/x-www-form-urlencoded для простых форм- application/x-www-form-urlencoded ) или
    • multipart/form-data-encoded (в основном multipart/form-data-encoded для загрузки файлов)

    Это связано с тем, что это единственные типы контента, которые должны поддерживаться браузерами. Поэтому сервер и PHP традиционно не ожидают получения какого-либо другого типа контента (что не означает, что они не могли бы).

    Если вы просто отправляете POST-ом обычную HTML-форму, запрос выглядит примерно так:
    POST /page.php HTTP/1.1
    key1=value1&key2=value2&key3=value3

    Но если вы много работаете с Ajax, может понадобиться обмен более сложными данными с типами (строка, int, bool) и структурами (массивы, объекты), поэтому в большинстве случаев JSON является лучшим выбором. Но запрос с JSON-полезной нагрузкой выглядел бы примерно так:
    POST /page.php HTTP/1.1
    {"key1":"value1","key2":"value2","key3":"value3"}

    Теперь содержимое будет application/json (или, по крайней мере, ни один из вышеперечисленных), так что $_POST -wrapper из PHP не знает, как с этим справиться (пока).

    Данные всё еще там, вы просто не можете получить к нему доступ через $_POST. Поэтому вам нужно получить его с "сыром" виде помощью file_get_contents('php://input') (если он не закодирован в формате multipart/form-data).

    Это также способ доступа к XML-данным или любому другому нестандартному типу контента.
    Ответ написан
    Комментировать
  • Как изменить кодировку файла в Atom?

    @Andy_Krawz Автор вопроса
    Это понятно, но если например файл сохранен в Windows 1251, при открытии в UTF-8 будут нечитаемые символы. Нужно именно заново открыть файл с другой кодировкой, как Sublime Text "File>Reopen with Encoding". Но вот как это сделать в Atom?
    Ответ написан
    2 комментария
  • PHP: после json_encode, в js летят "?

    @torns Автор вопроса
    Пишу код в удовольсвие
    Спасибо, пользователю nokimaro.
    Закреплю здесь кусок документации.
    По умолчанию весь выводимый контент экранируется, т.е. 
    все элементы и сущности HTML показываются как есть, вместо того, 
    чтобы обрабатываться браузером. 
    Если вы не хотите, что бы данные экранировались, используйте следующий синтаксис:
    
    Hello, {!! $name !!}.
    Ответ написан
    1 комментарий
  • Как расшифровать в php строчку по указанным правилам?

    @Uinit
    Как-то так:
    <?php declare(strict_types=1);
    
    $input = '->11гe+20∆∆A+4µcњil->5•Ћ®†Ѓ p+5f-7Ќ¬f pro+10g+1悦ra->58->44m+1*m+2a喜er!';
    
    class Decoder
    {
        private $position   = 0;
        private $output     = '';
    
        private $state;
    
        private const STATE_FREE        = 'processFree';
        private const STATE_MINUS       = 'processMinus';
        private const STATE_READ_NUMBER = 'processReadNumber';
    
        private const METHOD_GO         = 'goStack';
        private const METHOD_SKIP_RIGHT = 'skipStackRight';
        private const METHOD_SKIP_LEFT  = 'skipStackLeft';
    
        private $stack;
        private $method;
    
        public function decode(string $input): string
        {
            $this->position = 0;
            $this->output   = '';
            $this->state    = self::STATE_FREE;
    
            $length = mb_strlen($input, 'UTF-8');
    
            while ($this->position < $length){
                $symbol = mb_substr($input, $this->position, 1, 'UTF-8');
                $this->{$this->state}($symbol);
            }
    
            return $this->output;
        }
    
        private function processFree(string $symbol): void
        {
            switch ($symbol){
                case '-':
                    $this->state = self::STATE_MINUS;
                    break;
                case '+':
                    $this->method = self::METHOD_SKIP_RIGHT;
                    $this->state = self::STATE_READ_NUMBER;
                    break;
                default:
                    $this->output .= $symbol;
                    break;
            }
    
            $this->position++;
        }
    
        private function processMinus(string $symbol): void
        {
            if($symbol === '>'){
                $this->method   = self::METHOD_GO;
                $this->state    = self::STATE_READ_NUMBER;
                $this->position++;
                return;
            }
    
            $this->method = self::METHOD_SKIP_LEFT;
            $this->state = self::STATE_READ_NUMBER;
        }
    
        private function processReadNumber(string $symbol): void
        {
            if($this->isNumber($symbol)){
                $this->stack .= $symbol;
                $this->position++;
                return;
            }
    
            if($this->stack === null){
                throw new \InvalidArgumentException('Method has\'t number argument at position: '.$this->position);
            }
    
            $this->{$this->method}((int)$this->stack);
            $this->stack    = null;
            $this->method   = null;
            $this->state    = self::STATE_FREE;
    
        }
    
        private function isNumber(string $symbol): bool
        {
            return !!preg_match('#[0-9]#',$symbol);
        }
    
        private function goStack(int $arg): void
        {
            $this->position = $arg;
        }
    
        private function skipStackRight(int $arg): void
        {
            $this->position += $arg;
        }
    
        private function skipStackLeft(int $arg): void
        {
            $this->position -= $arg;
        }
    }
    
    
    $out = (new Decoder())->decode($input);
    echo $out;

    Собственно, у вас есть набор правил и состояний. Начинаете считывать по одному символу и в зависимости от текущего состояния производите дальнейшие действия - меняете состояние, сохраняете символ, организуете переход. Почитайте про конечные автоматы.
    Ответ написан
    5 комментариев
  • Как узнать количество повторяющихся значений в массиве?

    0xD34F
    @0xD34F
    foreach ($arr as [ 'id_news' => $id ]) {
      $idsCount[$id] = ($idsCount[$id] ?? 0) + 1;
    }

    или

    $idsCount = array_count_values(array_column($arr, 'id_news'));
    Ответ написан
    Комментировать
  • Как сделать сниппет в PhpStorm?

    crashxd
    @crashxd
    Backend разработчик
    Вот так попробуй <?= $$$VAR$ ?>
    Ответ написан
    1 комментарий