• Насколько легко трудоустроиться программисту в 40+, 50+ итд лет?

    Чушь, на самом деле.

    1) Довод первый, личный. Ну вот у нас в команде есть разработчик, которому за 40, занимается JavaScript. Ощущения исключительно положительные. Товарищ имеет большой опыт и очень хорошо знает что делает. Да ещё и изучает что-то новое, куда-то движется в своей области.

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

    2) Довод второй, социологический. Как известно, у человека в течение последних веков продолжительность и всей жизни в целом, и составной её части - детства стала гораздо больше. В пушкинские времена крестьянские девочки в 13-14 лет были на выданье, на них ложилась вся тяжесть семейной жизни. Сейчас это совершеннейшие дети, им только в куклы играть.

    Двадцать лет назад парень 20 лет был взрослым и уже зачастую женился. Сейчас 20 - это молодо-зелено; крепко стать на ноги к этому возрасту, стать профессионалом в интеллектуально ёмкой отрасли деятельности - да невозможно практически; посему и о семье говорить рано, что бы там ни вопили охранители. Ну и естественным образом, коль скоро детство и молодость растягиваются, то и период активной интеллектуальной деятельности - тоже должен сдвигаться. Захватывая и 40 лет, и 50, а может и 60-70. Тут уж зависит от индивидуальных усилий.

    3) Довод третий, профессиональный. Слышал ли кто-нибудь, чтобы грамотного, квалифицированного профессора математики выгоняли в 50 лет? Конечно, он наверняка уже не может генерировать идеи, как он это делал в 20; математика - дело молодых. Но опыт его огромен, он пользуется уважением, учит студентов и аспирантов; совет его ценится и может серьёзно помочь молодым коллегам; он далеко не вне профессии. Почему так происходит? Потому что математика - это устоявшаяся область, математика - это профессия в полном смысле.

    Программирование пока не вполне созрело как профессия, потому что оно несколько моложе математики (ну, не менее чем на пять тысяч лет, если считать от Московского математического папируса с задачами по стереометрии). О том, что программирование должно стать профессией - см. пост Роберта Мартина, который мне очень нравится: blog.cleancoder.com/uncle-bob/2016/07/27/TheChurn.html

    UPD. Другие ораторы упомянули о психологических причинах: тим-лиду, которому 25, боязно показать команде своё невежество в сравнении дядькой, которому 40. Ну это больше говорит о тим-лиде, а не о дядьке. Тим-лиду следует посидеть вечерком в тиши и подумать, правильно ли он живёт в этом мире, коли руководствуется мерками каменного века и правилом "я начальник, ты дурак".
    Ответ написан
    2 комментария
  • Насколько легко трудоустроиться программисту в 40+, 50+ итд лет?

    @dinegnet
    Просто есть плохие программисты и есть хорошие.
    У меня полно коллег в возрасте 40+ на которых очередь из клиентов стоит.

    Коллега Пума из Тайланда правильно сказал:
    устроиться в этом возрасте намного легче чем в двадцать )

    потому что в этом возрасте, в возрасте за 40 -
    • ты или уже профи
    • или уже не программист.

    Мой друг, также программист 1С, рассказывал о ситуации у них в конторе, где он был свидетелем, как резюмэ 2 кандидатов с солидным опытом разработки были отброшены почти сразу, так как обоим было 43-45 лет. И директор IT-отдела сказал тогда другу: "ну куда мы будем таких брать? Нам нужен молодой, энергичный".


    Работы по 1С делятся на 2 совершенно разных вида деятельности:

    1. Бегать по фирмам, обновлять 1С - называется должность почему-то программист.
    2. Реально программировать. Можно не бегать, а выяснять задачу по телефону. Изредка выезжая на встречу с заказчиком


    Ну и есть некая усредненная между этими двумя пунктами деятельность.

    Так вот в вашем случае им был нужен человек на первый вид деятельности.

    P.S.:
    И да - есть еще такая штука как "слишком квалифицированный работник".
    таких работников сразу отметают.

    Я например сам это делают из двух соображений:

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

    phpQuery сам не чистит память за собой. Это нужно делать вам через phpQuery::unloadDocuments();. Вот пример:
    $pq = phpQuery::newDocument($html);
    
    $projects =[];
    
    foreach ($pq['.project-preview'] as $work) {
        $pqwork = pq($work);
    
        $projects[]['name'] = $pqwork['div']->eq(1)->text();
    }
    
    phpQuery::unloadDocuments();
    Ответ написан
    Комментировать
  • Очень хочу услышать мнение о своём сайте. Где?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    Сайт работает - это хорошо.
    Есть разметка микроданных - тоже хорошо.
    Сайт не тормозит - это замечательно (тут я совершенно серьезно).
    Дизайн... ну... ужасен. Устарел лет на пятнадцать. Стоит о нем задуматься (см.ниже).
    UX? Некоторые вещи сделаны прям по фен-шую, но большинство - нет. Ах да, не переделывайте внешний вид скролла - бесит.
    В коде - полнейшая жесть. Почитайте про БЭМ или RSCSS. А потом про системы сборки (на тостере уже много раз спрашивали).

    Основные проблемы:
    • Маленькие буквы, которые на главной еще и "мылятся" + отвратительный шрифт. Стоит сходить на fonts.google.com и выбрать другой. Я обычно по дефолту беру семейство Ubuntu - просто, но глаз не режет.
    • Маленькие отступы, все сливается в кашу. Не постесняюсь предложить к ознакомлению свою статью - пример там получился так себе, но сама идея работает. Проверено.
    • Нет возможности работать с клавиатуры (доступные сайты - это круто, кто бы что не говорил)
    • С адаптивностью есть проблемы (она есть - это хорошо, но многие элементы "плющит" и "колбасит" при изменении размера окна)
    • Тени стоит уменьшить (до 0px 1px 3px)
    • А про UX тут на днях уже спрашивали - почитайте.
    Ответ написан
    1 комментарий
  • Как сделать не активной кнопку после одного нажатия?

    eucalipt
    @eucalipt
    Самоделкин.
    let e = document.querySelector(".cart-full-mobile-buttons #send_button");
    e.addEventListener("click", (event) => {e.disabled = true});
    Ответ написан
    Комментировать
  • Насколько легко трудоустроиться программисту в 40+, 50+ итд лет?

    @Kirill-Gorelov
    С ума с IT
    Читал статью на эту тему.
    https://habrahabr.ru/post/324426/ Вдруг будет полезно)
    Ответ написан
    Комментировать
  • Ноутбук для веб разработчика, бюджетное решение?

    devspec
    @devspec
    Помогло? Отметь решением
    Веб-дизайн и фотография на ноутбуке - это очень печально.
    По сути - посмотрите на линейку Lenovo ThinkPad - очень достойные, на мой взгляд, буки.
    Покупка б/у - лотерея.
    Ответ написан
    1 комментарий
  • Как определить количество байтов в итерации арифметического сжатия?

    @vasiliev
    Следует проверять длину текущего интервала, чтобы она была не менее какого-то значения.

    Например, в двоичном MQ-кодере из JPEG2000 гарантируется, что размер интервала от 0.75 до 1.5. Если текущий интервал становится меньше 0.75, то происходит ренормализация: интервал и кодовое слово увеличиваются в 2 раза, а счётчик бит увеличивается на 1 итеративно до тех пор, пока интервал не станет больше 0.75. Когда счётчик бит становится больше чем 8+{несколько дополнительных бит}, считается что старшие биты кодового слова "устаканились" и их можно выдать в выходной поток. Тем не менее, иногда возникают ситуации, когда оставшееся слово переполняется и требуется увеличить на 1 уже выданные в выходной поток байты, это тоже надо учесть. Потенциально может потребоваться изменить все предыдущие байты; в MQ-кодере этот момент обходят за счёт процедуры бит-стаффинга.

    Неплохо арифметические кодеры с практической точки зрения расписаны у Amir Said, у него же есть неплохая референсная реализация.
    Ответ написан
    1 комментарий
  • А что если писать сайт вообще в одном файле?

    Zifix
    @Zifix
    Barbatum
    Я как-то раз слышал от знакомого фрилансера, что его наняли внести небольшие изменения на сайт, который оказался написан на Перле, в одном файле, включая веб сервер.
    Ответ написан
    1 комментарий
  • PHP + with (JS-style) - как сделать изящно?

    Дык есть замыкания же.
    $template['part1'] = (function ($part) {
       $part['v1'] = doSomething( $part['v1']);
       return $part;
    })($template['part1']);
    Ответ написан
    4 комментария
  • Должен ли Web-разработчик уметь администрировать сервера?

    saboteur_kiev
    @saboteur_kiev Куратор тега Веб-разработка
    software engineer
    Многие начинающие, да и не только, путают умение поставить с нуля apache+php+mysql на локальную машину, или на линукс в виртуалбоксе с администрированием нормального отказоустойчивого хостинга с проксированием и балансировщиком.

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

    Frankenstine
    @Frankenstine
    Сисадмин
    Любой взлом устраняется в три этапа:
    1) Отключение поражённого компьютера.
    2) Загрузка с надёжного носителя (флешки) и изучение логов, поиск следов взлома, выяснение способа поражения и выявление уязвимости, позволившей атаку, а так же внесённых взломщиком изменений.
    3) Переустановка всей системы, опционально - восстановление контента из бэкапа, закрытие обнаруженных дыр (например, обновление плагинов к wordpress если у вас его движок), смена всех паролей, запуск сервера.
    Без переустановки можно обойтись, если вы уверены что взломщик не мог получить рут-права и установить руткиты. Но лучше сразу перестраховаться, чем обнаружить через два дня что всё было напрасно.
    Ответ написан
    Комментировать
  • Как исправить взлом сервера?

    1. Просматриваете логи и находите, через что вломились на сервер - ssh, ftp, http или что у вас там ещё крутиться
    2. Закрываете дыры


    Может как-то поможет статья https://habrahabr.ru/company/sprinthost/blog/125839/
    Ответ написан
    Комментировать
  • Как увеличить скорость разработки и внимательность?

    opium
    @opium
    Просто люблю качественно работать
    заведите календарь
    перестаньте отвлекаться
    Ответ написан
    4 комментария
  • Как увеличить скорость разработки и внимательность?

    saboteur_kiev
    @saboteur_kiev Куратор тега IT-образование
    software engineer
    Не отвлекаться на посторонние вещи, например социалки и тостер

    Сделать два файлика hosts.closed и hosts.opened
    По расписанию копировать их поверх hosts, чтобы все было закрыто только в рабочее время
    Ответ написан
    8 комментариев
  • База mysql весит 6 Гбайт. Как уменьшить нагрузку на сервер?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    включить профилирование, посмотреть какие запросы выполняются.
    включить лог медленных запросов dev.mysql.com/doc/refman/5.7/en/slow-query-log.html
    Ответ написан
    Комментировать
  • Как сделать сборку комплектации кухни на сайте?

    @daihatsu
    А бабла у него хватит?

    Если он не предлагает тебе воспользоваться каким-либо уже готовым 3D конструктором (с встроенным API!!!!), куда уже вбиты все параметры кухни, то это очень специфическая задача.

    Не стесняйся - повышай цену. На эту задачу он вряд ли найдет дешевого исполнителя. Да и вряд ли вообще найдет исполнителя.

    Навскидку - от нескольких штук баксов (не меньше 3, а скорее - еще раза в 2-3 больше).

    P.S.:
    Возможно, под словом "клиент может выбрать как хочет" подразумевается 5 встроенный фиксированных моделей кухонь с возможность их окраски?

    Тогда задача существенно упрощается. Первая для тебя задача - чтобы клиент тебе выдал эти 3D модели в удобном для тебя формате.

    Для этого у него есть специальный дизайнер, работающий с 3D-пакетами.
    Ответ написан
    Комментировать
  • Зачем нужен final class?

    @dev400
    Я использую в классе соединения с бд, тк нет смысла наследовать этот класс. Подключение инициализируется и дальше работа идет в моделях
    <?php
    namespace app\Common\Mysql;
    
    final class Connection
    {
    
        protected $link;
    
        public function __construct() {
    
            if ( is_null($this->link) ) {
                try {
                    $attr  = [
                        \PDO::ATTR_ERRMODE  =>  \PDO::ERRMODE_EXCEPTION,
                        \PDO::ATTR_DEFAULT_FETCH_MODE   =>  \PDO::FETCH_ASSOC
                    ];
    
                    $this->link = new \PDO("mysql:host=localhost;dbname=dbname;charset=utf8", "user", "pass", $attr);
    
                } catch (\PDOException $e) {
                    file_put_contents('log.txt', $e->getMessage(), FILE_APPEND);
                }
            }
        }
    
        /**
         *  @return \PDO;
         */
        public function link() {
            return $this->link;
        }
    }


    update

    <?php
    namespace app\Common\Model;
    
    use app\Common\Mysql\Connection;
    
    abstract class BaseModel {
    
        private $connection;
    
        /**
         * prefix for tables
         */
        const PREFIX =  "";
    
        /**
         * @var
         */
        protected $table;
    
        /**
         * @var
         */
        protected $key;
    
        public function __construct(Connection $conn) {
    
            $this->connection = $conn->link();
    
        }
    
        public function findAll() {
    
            return $this->fetch( "SELECT * FROM " . self::PREFIX . $this->table );
    
        }
    
        /**
         * @param array $args
         * @param $sql
         * @return array|string
         */
        public function findBy(Array $args, $sql) {
    
            $stmt = $this->connection->prepare($sql);
            $data = "";
            if ( $stmt->execute($args) ) {
                while ($row = $stmt->fetch()) {
                   $data[] = $row;
                }
            }
            return $data;
    
        }
    
    
        /**
         * @param $query
         * @return mixed
         */
        protected function fetch($query) {
    
            $stmt = $this->connection->query($query);
            $stmt->setFetchMode(\PDO::FETCH_ASSOC);
            $data = "";
            while ( $row = $stmt->fetch() ) {
                $data[] = $row;
            }
            return $data;
    
        }
    
        protected function save(Array $array, $sql) {
    
            $sth = $this->connection->prepare($sql);
            return $sth->execute($array);
    
        }
    
        protected function deleteById($id) {
            $id = (int)$id;
            return $this->connection->exec('DELETE FROM ' . self::PREFIX . $this->table . ' WHERE id = '.$id.'');
        }
    
    }
    Ответ написан
  • Как работает интерпретатор javascript на пальцах?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    Как говорят на w3cschools,
    The Browser Object Model (BOM) allows JavaScript to "talk to" the browser.

    Это такой мягкий намек на то, что вообще-то говоря Javascript может жить и вне браузера - на ум сразу приходит nodejs: там у вас изначально есть только консоль - ни о какой работе с HTML или браузером речи не идет. Можно сказать, что браузер предоставляет нам эдакое "дополнение" к тому, что знает интерпретатор о языке на момент исполнения кода. Реализаций интерпретаторов, разумеется, больше одной - если интересно какие сейчас в моде - можно посмотреть на википедии. Собственно в самом интерпретаторе и заложено то, что вы назвали "местом, где язык описан". А "описан" он там в соответствии со стандартом языка.

    Сам по себе Javascript (диалект ECMAScript) - достаточно сложный язык, его врят ли получится исполнять "читая строки по порядку" (вспомним хотя бы "поднятие" переменных), поэтому интерпретируется он несколько сложнее, чем кажется. Очень не лишним будет посмотреть вот такой парсер. И вдвойне не лишним будет познакомиться с LISP перед тем как погружаться в дебри интерпретации (это покажется странным, по практически все идеи, которые сейчас используются в Javascript, были уже очень и очень давно и там, где вы их меньше всего ожидали увидеть. Да и мозг заметно вправляет такое знакомство). На хабре люди не раз уже писали свои интерпретаторы для разных языков, так что начало для понимания внутренней кухни там можно получить.

    Возвращаясь к теме - если после ознакомления с вышеупомянутым парсером (который строит синтаксическое дерево) вы посмотрите на ваши BOM/DOM свежим взглядом, то заметите, что в то самое "дерево всего, что есть" браузер добавляет "дерево DOM" и "дерево BOM" с которыми вы, разумеется, можете работать - в коде они будут соответствовать объектам document и window. (звучит, конечно, немного грубо - но вы сами просили на пальцах). Для того, чтобы в этом убедиться, можно воспользоваться инструкцией по построению синтаксического дерева для Javascript
    Ответ написан
    1 комментарий