• Какие задачи должен уметь решать web разработчик?

    @serega_kaktus
    Программист-самоучка, фрилансер
    Разработчик должен уметь решать все адекватные и не очень адекватные задачи, которые ставит заказчик. Не зацикливайтесь на умении решать какую-то конкретную задачу. Вы не должны уметь создавать поисковую систему или систему бронирования. Что от них толку, если поисковая система чаще всего строится на готовых компонентах, а вероятность, что следующий ваш проект будет система бронирования - примерно 1 из 100.
    Разработчик должен уметь создавать систему, которая будет решать поставленную задачу, и которая имеет запас для расширения, чтобы маленькое дополнение от заказчика не заставило делать все с нуля. Должны знать ООП в идеале, так как сейчас это используется почти везде. Должны знать, что такое REST, SOAP, XML, JSON, HTTP, должны уметь настроить web-server так, чтобы сайт работал и можно было заняться разработкой (настройка продакшна, установка какого-то специализированного софта - уже задача админа). Нужно знать, какие технологии/библиотеки существуют и где применяются, чтобы случайно не писать одностраничное web-приложение на jQuery.
    Изучать досконально какие-то технологии, решать конкретные задачи просто так практически не имеет смысла. Никогда не знаешь, какой проект будет следующим и пригодятся ли эти знания.
    Ответ написан
    1 комментарий
  • Какой CSS препроцессор выбрать?

    @serega_kaktus
    Программист-самоучка, фрилансер
    Выбор пал на него в первую очередь из-за возможности использования сразу в верстке, без сборки компиляторами.

    Как по мне, так это явно лишнее. Вместо того, чтобы один раз скомпилировать css на машине разработчика, он компилируется у каждого клиента при каждом запросе.

    А по теме - работал с LESS и SCSS. разницы не заметил. Единственное, что не смог сходу сделать для less, так это наблюдение за отдельным файлом и перекомпиляция при изменении. Но, не особо нужно было, так что скорее всего решаемо
    Ответ написан
  • Как передать в URL GET с пробелами?

    @serega_kaktus
    Программист-самоучка, фрилансер
    Поставьте этот модуль https://www.drupal.org/project/views_php
    Сначала создайте php поле, в котором будет что-то типа return urlencode($title);
    Потом уже значение этого поля подставьте вместо [title]
    Ответ написан
    Комментировать
  • Как правильно сделать условие для цикла в данной ситуации на Javascript?

    @serega_kaktus
    Программист-самоучка, фрилансер
    Зачем такой код
    if(arr[i][j] == "X" && arr[i+1][j] == "X" && arr[i+2][j] == "X")
    во вложенном цикле? Зачем прибавлять константы, если есть переменная i?
    // Проход по горизонтали
    // Проход по вертикали такой же, только во вложенном цикле поменяйте местами i и j в условии
    for(var i = 0; i < arr.length; i+=1){
      countet = 0;
       for(var j = 0; j < arr.length; j+=1){
         var last_counter = counter;
         if (arr[i][j] == 'X') {
            counter++
         }
         else {
           counter = 0;
         }
         // здесь можем сделать нужные вычисления с counter и last_counter. Например, найти максимально длинную последовательность
       }
    }
    // По диагонали
    var counter = 0;
    for (var i = 0; i < arr.length; i++) {
      var last_counter = counter;
       if (arr[i][i] == 'X') {
          counter++
       }
       else {
         counter = 0;
       }
       // здесь можем сделать нужные вычисления с counter и last_counter. Например, найти максимально длинную последовательность
    }


    PS цИкл, диагонАль, ',,,,'
    Ответ написан
    1 комментарий
  • Существуют ли системы для хранения релизов?

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

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

    @serega_kaktus
    Программист-самоучка, фрилансер
    $(document).ready(function(){
    	var toggle1 = $(".toggler");
    	var left = $(".left");
    	var circle = $(".circle");
        var disabled = true;
    	toggle1.click(function(){
            if (disabled) {
    		    circle.animate(
    		    {
    			    marginLeft: '26px',
    		    }, 120);
    		    left.animate(
    		    {
    			    width: '34px',
    		    }, 120);
            }
            else {
                circle.animate(
    		    {
    			    marginLeft: '2px',
    		    }, 120);
    		    left.animate(
    		    {
    			    width: '10px',
    		    }, 120);
            }
            disabled = !disabled;
    	});
    });
    Ответ написан
  • Почему не работает overflow:hidden?

    @serega_kaktus
    Программист-самоучка, фрилансер
    htmlbook
    Свойство overflow управляет отображением содержания блочного элемента, если оно целиком не помещается и выходит за область заданных размеров.

    Это свойство не скрывает элемент. Если нужно скрыть сам элемент, используйте display:none;
    Ответ написан
  • Построение дерева из массива js?

    @serega_kaktus
    Программист-самоучка, фрилансер
    рекурсивная функция проходит по массиву и вызывает сама себя, если элемент массива тоже массив. Если же нет, то функция строит нужный html
    Ответ написан
    Комментировать
  • Простейшее создание массива в JavaScript?

    @serega_kaktus
    Программист-самоучка, фрилансер
    В JS нет ассоциативных массивов, как в PHP, для этого используются объекты
    Ответ написан
    Комментировать
  • Как создать новый массив из другого массива, элементы которого представлены объектами?

    @serega_kaktus
    Программист-самоучка, фрилансер
    1. Почему так происходит?

    Потому что в массиве хранятся не объекты, а ссылки на объекты.
    Как в таком случае создать новую копию целевого массива, элементы которого представляют собой объекты?

    например, тут пишут, как клонировать объект. Думаю, сможете применить к циклу
    Ответ написан
    1 комментарий
  • Какова роль интерфейсов в ООП?

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

    Абстрактные методы в абстрактном классе играют ту же роль, что и интерфейс - описывают набор обязательных методов. Но при этом в абстрактном классе можно реализовать некоторые методы, которые в скорее всего будут одинаковы для многих потомков (хотя бы для 2х). Таким образом избегаем копипаста в коде
    Ответ написан
  • Как правильно заключить контракт на part-time remote?

    @serega_kaktus
    Программист-самоучка, фрилансер
    Если работы достаточно много, то можно использовать elance или upwork как посредника. Они берут небольшой процент (8 или 10), зато гарантируют оплату и решают конфликты, если такие будут при условии почасовой оплаты.
    Ответ написан
    Комментировать
  • Ярлыки в Drupal?

    @serega_kaktus
    Программист-самоучка, фрилансер
    Нарисовать и через темизацию поля вставить.
    Ответ написан
    Комментировать
  • Почему не работает объект?

    @serega_kaktus
    Программист-самоучка, фрилансер
    function Counter(start){
      var that = this;
    
        this.value = start;
    
        this.Up = function()
        {
            that.value++;
            that.ShowText();
            console.log(that.value);
        };
    
        this.Down = function()
        {
            that.value--;
            that.ShowText;
            console.log(that.value);
        };
    
        this.ShowText = function()
        {
            $('.box').text(this.value);
        };
    
        this.Render = function()
        {
            $('#counter-minus').click(this.Down);
            $('#counter-plus').click(this.Up);
        }
    }
    
    counter = new Counter(2);
    counter.Render();

    jQuery выполняет обработчик события в контексте того элемента, на который этот обработчик был навешан. Короче говоря, в методах Up и Down this - это не ваш объект, а объект DOM.

    А вообще не устанавливайте методы "класса" как обработчик события, лучше создайте анонимную функция и в ней вызовите нужный метод. Так избежите проблем.
    И используйте прототипирование, а то ваше ООП бесполезно, наследование работать не будет
    Ответ написан
    2 комментария
  • Как сократить код для селектов?

    @serega_kaktus
    Программист-самоучка, фрилансер
    Переписать функцию вот так и передавать id селекта как параметр не пробовали?
    function sumprice(id){
    		var calculate = 0;
    		var sum_main = document.getElementById("sum_main");
    		var maker = document.getElementById(id);
    		var pricem = maker.options[maker.selectedIndex].getAttribute("data-price");
    		var cpu1 = document.getElementById("kol_cpu").value;
    		calculate = cpu1*pricem;
    		var result = document.getElementById("price_cpu");
        	result.value = calculate;
        	document.getElementById('sum_main').innerHTML = result.value;
    	}
    Ответ написан
  • Какие преимущества фриланс имеет над работой в офисе?

    @serega_kaktus
    Программист-самоучка, фрилансер
    Демпинг во фрилансе создают новички или разработчики из бедных регионов, где 5$ в час хорошая зп. Если фрилансер с опытом/знаниями, он не занизит ставку ради проекта.
    Плюс фриланса в том, что каждый проект - это новая технология/предметная область/еще что-то. А на постоянной работе у вас одна платформа, которая, возможно, давно устарела, одни и те же технологии. Мне, например, надоедает работа над одним проектом больше нескольких месяцев. Хочется чего-то нового, а заказчик просит поменять тайтлы, добавить тени к блокам или очередную форму через ajax
    Ответ написан
    3 комментария
  • В чем ошибка при составлении классов?

    @serega_kaktus
    Программист-самоучка, фрилансер
    Можно вынести в конфиг связь type->path, тогда вам не понадобятся классы NewsUser и NewsAdmin. А метод getPathToImages() будет возвращать путь в зависимости от типа.
    Можно вынести в конфиг связь type->className, тогда получив имя класса из конфига в коде, можно создать объект $news = new $className($param);
    Первый вариант предпочтительнее, если больше нет никаких причин использовать наследование.
    Ответ написан
    Комментировать
  • Как в запросе превратить строки в столбцы?

    @serega_kaktus
    Программист-самоучка, фрилансер
    SELECT * FROM mytable WHERE UserId=1
    SELECT * FROM mytable WHERE 1 GROUP BY UserId
    SELECT * FROM mytable WHERE Name IS NOT NULL


    PS Вы сразу пришли сюда или хоть как пытались найти инфу в сети?
    Ответ написан
    2 комментария
  • Как можно инициализировать плагин к элементу, который создан через append() ???

    @serega_kaktus
    Программист-самоучка, фрилансер
    У вас точно такая же ошибка, как в прошлом вопросе.
    Поймите, что при
    $('selector').anyJqueryMethodOrPlugin()
    jQuery будет искать только те элементы, которые есть на странице сейчас. jQuery не знает, что и когда будет добавлено в коде ниже.
    А когда вы добавляете элемент, этот код не будет исполнен повторно (если вы его не вызовите специально).
    Это относится ко всем методам/плагинам и т.п.
    Если есть какой-то код, который производит инициализацию на странице (добавляет обработчики, включает плагины), то оберните этот код в функцию и вызывайте каждый раз, когда создали новый элемент. Только избегайте повторных вызовов на одних и тех же элементах
    Ответ написан
    Комментировать
  • Вопрос про метод each?

    @serega_kaktus
    Программист-самоучка, фрилансер
    Так если вы точно уверены, что из базы всегда выбирается только одна запись (поиск по ключу, например), тогда стоит переписать php код
    $row = mysql_fetch_array($result, MYSQL_ASSOC))
    echo json_encode(array("client_date" => $row));

    Тогда в js коде будет проще обращаться с свойствам объекта
    $('#changeClientDataForm')[0].reset();
    $('#changeClientDataForm .code').val(json.client_date.code_client);
    $('#changeClientDataForm .name').val(json.client_date.name);
    $('#changeClientDataForm .login').val(json.client_date.login);
    $('#changeClientDataForm .password').val(json.client_date.password);


    PS А вы пароль в открытом виде в БД храните?
    Ответ написан
    Комментировать