• Symfony 5.2 + PostgreSQL. Почему неадекватно большое количество запросов к information_schema.tables?

    @bkosun
    Я конечно понимаю, что функция нужна, но зачем её вызывать столько раз...

    Скорее всего Вы работаете в режиме разработки или в конфигурации Doctrine не включено кеширование.

    https://symfony.com/doc/current/reference/configur...
    Ответ написан
    1 комментарий
  • Как привязать footer к низу экрана в Twitter Bootstrap?

    @web11
    для bootstrap 3 есть отдельный пример с прижатым footer
    getbootstrap.com/examples/sticky-footer

    в файл стилей нужно добавить
    html {
      position: relative;
      min-height: 100%;
    }
    body {
      /* Margin bottom by footer height */
      margin-bottom: 60px;
    }
    #footer {
      position: absolute;
      bottom: 0;
      width: 100%;
      /* Set the fixed height of the footer here */
      height: 60px;
      background-color: #f5f5f5;
    }
    Ответ написан
    6 комментариев
  • Как сделать сумму прописью в Таблицах?

    krimtsev
    @krimtsev Автор вопроса
    Нашел. Необходимо самому открыть "Инструменты -> Редактор скриптов" и добавить скрипт.
    Дальше в необходимом нам месте указацить функцию =number_to_string(номер ячейки).

    Рабочий код так же прикрепляю под спойлером.

    spoiler
    function number_to_string(_number) {
            var _arr_numbers = new Array();
            _arr_numbers[1] = new Array('', 'один', 'два', 'три', 'четыре', 'пять', 'шесть', 'семь', 'восемь', 'девять', 'десять', 'одиннадцать', 'двенадцать', 'тринадцать', 'четырнадцать', 'пятнадцать', 'шестнадцать', 'семнадцать', 'восемнадцать', 'девятнадцать');
            _arr_numbers[2] = new Array('', '', 'двадцать', 'тридцать', 'сорок', 'пятьдесят', 'шестьдесят', 'семьдесят', 'восемьдесят', 'девяносто');
            _arr_numbers[3] = new Array('', 'сто', 'двести', 'триста', 'четыреста', 'пятьсот', 'шестьсот', 'семьсот', 'восемьсот', 'девятьсот');
            function number_parser(_num, _desc) {
                    var _string = '';
                    var _num_hundred = '';
                    if (_num.length == 3) {
                            _num_hundred = _num.substr(0, 1);
                            _num = _num.substr(1, 3);
                            _string = _arr_numbers[3][_num_hundred] + ' ';
                    }
                    if (_num < 20) _string += _arr_numbers[1][parseFloat(_num)] + ' ';
                    else {
                            var _first_num = _num.substr(0, 1);
                            var _second_num = _num.substr(1, 2);
                            _string += _arr_numbers[2][_first_num] + ' ' + _arr_numbers[1][_second_num] + ' ';
                    }              
                    switch (_desc){
                            case 0:
                                    var _last_num = parseFloat(_num.substr(-1));
                                    if (_last_num == 1) _string += 'рубль';
                                    else if (_last_num > 1 && _last_num < 5) _string += 'рубля';
                                    else _string += 'рублей';
                                    break;
                            case 1:
                                    var _last_num = parseFloat(_num.substr(-1));
                                    if (_last_num == 1) _string += 'тысяча ';
                                    else if (_last_num > 1 && _last_num < 5) _string += 'тысячи ';
                                    else _string += 'тысяч ';
                                    _string = _string.replace('один ', 'одна ');
                                    _string = _string.replace('два ', 'две ');
                                    break;
                            case 2:
                                    var _last_num = parseFloat(_num.substr(-1));
                                    if (_last_num == 1) _string += 'миллион ';
                                    else if (_last_num > 1 && _last_num < 5) _string += 'миллиона ';
                                    else _string += 'миллионов ';
                                    break;
                            case 3:
                                    var _last_num = parseFloat(_num.substr(-1));
                                    if (_last_num == 1) _string += 'миллиард ';
                                    else if (_last_num > 1 && _last_num < 5) _string += 'миллиарда ';
                                    else _string += 'миллиардов ';
                                    break;
                    }
                    _string = _string.replace('  ', ' ');
                    return _string;
            }
            function decimals_parser(_num) {
                    var _first_num = _num.substr(0, 1);
                    var _second_num = parseFloat(_num.substr(1, 2));
                    var _string = ' ' + _first_num + _second_num;
                    if (_second_num == 1) _string += ' копейка';
                    else if (_second_num > 1 && _second_num < 5) _string += ' копейки';
                    else _string += ' копеек';
                    return _string;
            }
            if (!_number || _number == 0) return false;
            if (typeof _number !== 'number') {
                    _number = _number.replace(',', '.');
                    _number = parseFloat(_number);
                    if (isNaN(_number)) return false;
            }
            _number = _number.toFixed(2);
            if(_number.indexOf('.') != -1) {
                    var _number_arr = _number.split('.');
                    var _number = _number_arr[0];
                    var _number_decimals = _number_arr[1];
            }
            var _number_length = _number.length;
            var _string = '';
            var _num_parser = '';
            var _count = 0;
            for (var _p = (_number_length - 1); _p >= 0; _p--) {
                    var _num_digit = _number.substr(_p, 1);
                    _num_parser = _num_digit +  _num_parser;
                    if ((_num_parser.length == 3 || _p == 0) && !isNaN(parseFloat(_num_parser))) {
                            _string = number_parser(_num_parser, _count) + _string;
                            _num_parser = '';
                            _count++;
                    }
            }
            if (_number_decimals) _string += decimals_parser(_number_decimals);
            return _string;
    }
    Ответ написан
    8 комментариев
  • За что программист получает деньги?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Поддержка продукта - программирование, связанное с тем, что
    1) в продукте в любом случае будут баги, будут проблемы, их нужно чинить
    2) заказчик всегда захочет версию 2.0 с новыми фичами и прибамбасами
    3) меняется железо, меняется операционная система. То, что работало в win95 может не работать в WinXP, то что работает в java6, может не работать в java8, и таких моментов океаны.

    Ну и кроме того, программистам могут платить почасово, а могут платить за проект. А могут и не платить, он сам продает продукт или монетизируется за счет рекламы.

    В общем вы даже не подумали перед тем, как задать вопрос.
    Ответ написан
    1 комментарий
  • За что программист получает деньги?

    sabramovskikh
    @sabramovskikh
    За работу. Если грузчику платят за то, что он загружает фуры, почасовая оплата, то зачем ему платить когда он таскает мешки и возвращается за мешком на легке, ведь он не работает?
    Код нельзя написать хорошо никогда. Можно стремится только к этому. Пока он разбирается это процесс разработки продукта. Почитайте книгу о циклах разработки ПО и все поймете
    Ответ написан
    8 комментариев
  • Работа без высшего образования, это реально?

    @FoxInSox
    Почему вы все так спешите начать работать? Да еще и вместо обучения (каким бы оно ни было).

    - У вас еще впереди лет 30-40 работы, большую часть жизни вам придется работать. Вероятность того, что вы все эти 30 лет будете работать в удовольствие далеко не 100%.
    - Начиная работать на 2-3 года раньше вам не дает сильных преимуществ в перспективе. В практически любой работе гораздо более важна эффективность, а не просто сколько времени вы проработали на определенной должности. Т.е. проработав, например, 5 лет, всегда найдутся люди с меньшим опытом которую делают вашу работу эффективнее (быстрее, качественнее)
    - годы обучения в ВУЗе для очень многих людей являются самыми счастливыми, а во многих случаях даже формируют фундамент всей оставшейся жизни: друзья, хобби, знакомства, связи, какие-то ключевые события. Сидя 8 часов в офисе в день на работе или в квартире на фрилансе вы все это упустите скорей всего.
    - во время учебы у вас есть масса времени попробовать поработать в разных местах и сферах: backend, frontend, мобильная разработка, дизайн, попробовать заняться научной деятельностью, попробовать что либо вообще не связанное с IT. После нескольких лет работы вы только будете мечтать о таком, но времени и возможности сменить радикально сферу работы вы не сможете просто.

    ps ну нахрена вам деньги в 17 лет? Машину купить? Бабу свою свозить в Европу? iMac за 100 тысяч купить? Это все вещи которые не стоят вашего времени как минимум 17 лет точно.
    Ответ написан
    6 комментариев
  • Как лечится кризис начинающего программиста?

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

    Возьмем, как пример, тот же бух.учет на предприятии. Как Вы думаете, почему 1С Бухгалтерия так широко распространилась в РФ и СНГ? Эта программа позволяет бухгалтеру в 2-3 клика мышки сформировать отчет для регулятора(ФНС, ПФР и т.д.), вместо того чтобы человеку сидеть руками искать платежные поручения, вычислять налоги и т.п. Софт просто подтягивает выписку из банка, анализирует ее и выдает готовую для печати бумажку, что экономит бухгалтеру сильно много времени. Расчет заплатанный налогов и отчеты в соц.фонды это вообще красота - 8 кликов мышкой и все готово :-)

    Что я описал выше? Это способ решения одной конкретной задачи с гораздо меньшим количеством ресурсов, в данном случае - времени. Эта программа экономит время на подготовку бумаг, на расчеты сумм налогов, снижает вероятность ошибки и т.д. Это ее основная ценность, которую несут ее создатели обществу

    И вот, далее Вы для себя определитесь, какая Ваша основная цель? Какой Ваш основной посыл обществу?

    Личной мой посыл - "Я помогаю людям экономить: время, деньги, нервы и т.д.".

    Как я это делаю?
    У меня сначала был маленький интернет-магазин по продаже катализаторов для бензина(в поиск "кондиционеры метала для а/м"). При соблюдении определенных условий, расход топлива на малометражках снижался от 20% до 45%
    Вторым моим проектам было небольшое мобильное приложение для отслеживания хода исполнительного производства в ФССП(для взыскательней, уже сдохло). Мне и моим знакомым(не юристы) это экономило достаточно много времени на ругань с приставами, чего они должны делать и т.д. Кто сталкивался с этой службой должен знать эффективность и оперативность их работы, особенно в регионах...
    Сейчас я пишу небольшой конструктор сайтов, который поможет одной дружественной мне веб-студии сильно оптимизировать процесс создания низкобюджетных сайтов визиток

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

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

    Если говорить о чисто практических инструментах(функции стандартной библиотеки, фреймворки и т.д.)... Лично я могу считать себя профессионалом в какой бы то ни было технологии, ни когда я прочитал 1-2 книги и/или написал 1,5 задачи оттуда же. С таким уровнем я не могу сказать что я знаю язык/технологию в принципе, просто знаком - да, но я ее не знаю. Считать себя профессионалом я могу после того как решу не менее сотни задач, используя эту технологию и написал не менее 1 млн строк кода, именно написал, а не сгенерировал rake/gii/artisan или чем-то там еще.

    Вам же я желаю не останавливаться, развивайтесь. Мастерство приходит с опытом.

    P.S.: от холиваров на тему 1С прошу всех воздержаться
    Ответ написан
    11 комментариев
  • Что должен знать профессиональный программист без учета особенностей конкретных языков программирования?

    agent10
    @agent10
    Software Engineer
    1. Надо уметь думать.
    2. Иметь желание и интерес к делу.
    Всё! Остальные пункты вытекут сами из этих 2х.
    Ответ написан
    1 комментарий
  • Ваши действия, если джуниор не успевает выполнить задачу?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Адекватный джуниор не должен ПРОСТО сидеть и не успевать в срок.

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

    В этом заключается разница между чайником и ламером, между адекватным человеком, который со временем вырастет, и тем, за которым ВСЕГДА придется бегать.

    Лично мои действия - если Джуниор не выполнил задачу в срок и я об этом узнаю с окончанием срока - нафиг такой человек в команде (ну разве что попробовать дать еще одну задачу, чтобы убедиться что это не случайность). А если Джуниор подойдет за помощью вовремя - задача будет решена в срок.
    Ответ написан
    6 комментариев
  • Ваши действия, если джуниор не успевает выполнить задачу?

    @PolkovnikBrumel
    Контролировать в процессе исполнения, а не когда уже сроки поджимают.
    Ответ написан
    6 комментариев
  • Как придумывать осмысленные имена для классов?

    @ubuntuman
    Beginner developer
    В последнее время для названий переменных я использую описание содержимого (пример: pages, currentIndex, countSteps, lastColor),
    для функций описание действия (пример: createNewPicture, saveToFile, removeLastPage, getCountElements),
    а для классов либо краткое описание, либо слова с приставкой -er (пример: BlockSplitter, PagesStore, ColorsManager, TextFormatter). Разумеется, часто слова повторяются. Если это для хранения, то тут Store, если для управления, то manager, controller, если для разделения/фильтрации, то Sepatator, Splitter и т.д. Если не могу подобрать ничего знакомого, лезу в переводчик, вбиваю слово и ищу наиболее простой и "красивый" вариант перевода, его и использую.

    Не знаю, нормально ли это, но мне пока нравится…
    Ответ написан
    Комментировать
  • Как освободить порты в xampp из-за skype?

    He11ion
    @He11ion
    PHP-monkey
    xampp\apache\conf\http.conf

    ищем Listen 80 (или добавляем если нет) и меняем на 8080, например - рестарт сервиса - профит.

    А вообще гугл не вчера открылся, если что.
    Ответ написан
    6 комментариев
  • Как изменить название коммита в Git?

    EXL
    @EXL
    Энтузиаст
    git commit --amend исправляет (перезаписывает) только последний коммит. Если вам требуется изменить всю историю проекта - воспользуйтесь командой git rebase -i --root, про которую можно прочитать тут. Естественно коммиты не должны быть публичными.
    Ответ написан
    Комментировать