Задать вопрос
  • На каком движке toster?

    copist
    @copist
    Empower people to give
    Можно спросить лично одного из разработчиков https://moikrug.ru/nullptr

    Судя по стеку технологий его профиля - никаких CMS и фреймворков не использовалось. Или он не указал. Или это закрытая информация. Или слишком много "или" :)
    Ответ написан
    Комментировать
  • Возможна ли переквалификация в разработчики после 30 без профильного высшего образования?

    copist
    @copist
    Empower people to give
    Не будет смены специальности без потерь. К потерям надо готовиться. Семье надо объяснить причину смены специальности. Потери будут либо в деньгах, либо в свободном времени.

    В свободное (очевидно, внерабочее) время читать, смотреть, думать и делать pet projects - в этом я не оригинален. Иллюзий по поводу программирования питать не надо. У многих разработчиков 12-14 часой рабочий день, особенно у фрилансеров: 4-6 часов покодить + время на поиск новых заказов + время на общение с старыми/новыми клиентами + время на организационную деятельность + время на маркетинг самого себя. Офисные программисты работают несколько свободнее по времени, но уверен, что многие после работы ещё вштыривают проектик для себя или шабашат по мелким заказам.

    Хочу озвучить ещё четыре варианта.

    1. Мне известны уже несколько случаев, когда человек уходил на сдельную работу или на 1/4 ставки или на почасовку на основном месте работы и увеличивал количество часов на изучение второй специальности. Или устраивался на новое место на почасовку или на четверть ставки для стажировки, а то и на должность джуна. Сам так делал. Очень эффективно.

    2. Выходные, праздники и отпуск не для ремонта или отдыха, а для ускоренной реализации своих проектов. Я кучу людей знаю, которые работают без отпуска, включая махинации с увольнением/восстановлением, чтобы просто получить компенсацию и работать дальше. Не вижу ничего сложного в том, чтобы отпуск потратить на стажировку или самообразование. Если новая работа приносит удовольствие, то можно развернуть свои собственные мысли так, чтобы новая работа считалась отдыхом (самомотивация, аутотренинг, самогипноз - называйте как хотите). Не замечали, что 8 часов нелюбимой работы тянутся долго-долго, а 8 часов любимого занятия (хобби, увлечение) пролетают незаметно?

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

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

    Ещё варианты плавного перехода придумать?

    Кто хочет - найдёт 1000 способов, кто не хочет - найдёт 1000 причин (Конфуций)
    Ответ написан
    6 комментариев
  • Как узнать количество строк в массиве?

    copist
    @copist
    Empower people to give
    Ответ написан
    Комментировать
  • В чем проблема с учебой программированию?

    copist
    @copist
    Empower people to give
    В чем проблема с учебой программированию?

    Бьюсь над задачей пару часов, пока не посмотрю в ответы, и понимаю как же это было на самом деле просто.

    Постой. Так тут нет противоречия с моей точки зрения. Если ты понял как надо было решить - ну и замечательно. Попробуй решить ещё раз, уже зная ответ, но не подглядывая.

    Программисты часто "курят" чужой код, прежде чем писать свой. И хоть какие-нибудь костыльные варианты для начала придумывают. В твоём случае с шахматной доской подошло бы для начала такое
    console.log("#  #  #  #  #");
    console.log("  #  #  #  #  ");
    console.log("#  #  #  #  #");
    console.log("  #  #  #  #  ");
    console.log("#  #  #  #  #");
    console.log("  #  #  #  #  ");

    Это не сложное решение визуально даёт нужный результат :)

    С моей точки зрения, с готовым решениями можно работать двумя способами:
    1. решить и проверить своё решение
    2. в случае тупика посмотреть решение, понять его, закрыть браузер и идти и повторять по памяти
    Можно заучить наизусть, как билеты по ПДД :) Но не копипастить и не переписывать.

    Примеры из жизни.
    1. Университет. Первый год на "Технологии программирования" учились читать чужой код ("что будет выведено в результате исполнения этого алгоритма") и писать свои алгоритмы по 5-10 строк (найти сумму чётных элементов массива). Ну простейшие же задачи, а целый год.
    2. Я умудрился уже четыре раза делать "стену", как вКонтакте на личной странице, для разных проектов. Все каждый раз становились только лучше.
    3. Я написал несколько одинаковых мини-проектов (pet project) на разных языках или диалектах.

    Так что не стесняйся костыльных решений, пиши код, учись.
    Ответ написан
    Комментировать
  • Минифицируете ли файлы JS для фриланса?

    copist
    @copist
    Empower people to give
    Буду рад услышать дельный ответ.

    Сегодня же, час назад https://toster.ru/answer?answer_id=774211
    Ответ написан
    Комментировать
  • Где можно почитать теорию по cерверной разработке для "чайников"?

    copist
    @copist
    Empower people to give
    Всё сказанное ниже является личным мнением. Все глаголы в повелительном наклонении ("дайте, объясните") предлагаю считать сослагательным наклонением ("возможно, было бы правильным дать, объяснить").

    Они к вам приходят именно для того чтобы узнать и попробовать. Дайте им возможность поработать с реальными задачами, объясните каждому его проблему на его конкретном примере. Не прикрывайтесь курсами, книгами и статьями - работайте с сырым материалом, как гончар с глиной.

    Критериями для приёмки на стажировку должны быть знание синтаксиса и семантики языка, стыка технологий (PHP + JS например), эрудиция, способность понять задание, обосновать решение, сформулировать какую-то личную неразрешимую проблему для поиска помощи, попытаться самостоятельно найти, понять и применить чужое решение. Ещё один фактор для оценки - знания в предметной области, то есть в той области деятельности человека, которая, в контексте информационных технологий, подлежит автоматизации. Бывает человек лучше "въезжает" в предметную область, чем в язык. Что тоже неплохо.

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

    Отсеивайте тех, кто не хочет знать, а не тех, кто не смог. Те, кто хотят - узнают не завтра, так через неделю.
    Ответ написан
    3 комментария
  • Нужно ли минифицировать JS/CSS на начальном этапе проекта?

    copist
    @copist
    Empower people to give
    Если бы это был ваш проект? Если бы вы решали нужна ли минификация?

    Я бы скопировал конфиг с другого своего проекта, который уже предусматривает сжатие ;)
    Наверное, где-то на самых ранних стадиях своего проекта минификация была бы выключена даже на проде, но в итоге получились бы файлы размером по 2 мегабайта. Страницы бы загружались медленно, потому что приходилось бы пересылать большие JS и CSS. А вот сжатые версии JS и CSS не только загружаются быстрее, но и исполняются тоже быстрее, потому что там меньше строк и в браузере скрипты меньшего размера интерпретируются быстрее.

    А ещё миницикация подразумевает обфускацию. Это не только запутывает код, но и делает его компактнее за счёт использования очень коротких имён переменных (a, b, c). Сжатый код JS становится такой кашей, что фиг разберёшь обратно. Хотя есть де-обфускаторы - могут хотя бы частично восстановить код.

    Есть у такого метода побочные эффекты.

    Пример:
    При использовании ангуляра можно встретить такие конструкции

    angular
        .module('app')
            .controller('MainController', function($scope, service1, service2, service3) { // <-- тут перечисляются сервисы, которые нужны внутри функции
                $scope.prop = service1.getSomeData();
                // ... 
            });


    При сжатии кода это выражение превратится в
    angular
        .module('app')
            .controller('MainController', function($s, a, b, c) { // <-- минификатор сжал названия параметров
                $s.prop = a.getSomeData();
                // ... 
            });


    Учитывая то, что angular будет сам пытаться по именам переменных (service1, service2, service3, a, b, c) определить сервисы, появится ошибка, что сервисы "a", "b", "c" не найдены

    Такое можно выявить при сжатии кода JS. Конечно, опытные программисты пишут код в другой нотации, чтобы предотвратить подобные ошибки, но вдруг один из 10 модулей проекта будет написан новичком и всё приложение порушится?

    Минификация нужна чтобы проверить работу приложения с сжатым и обфусцированным кодом. Обфускацию можно выключить в настройках минификаторов.

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

    copist
    @copist
    Empower people to give
    Можно попробовать сделать вариант когда клиентское приложение само сообщает какой-нибудь случайный идентификатор, как делают клиентские приложения для работы с анонимными торрент-трекерами.

    Но эти идентификаторы нужно где-то сохранить, чтобы можно было выбрать двух собеседников.

    При использовании websocket можно обойтись списком коннектов в оперативной памяти. Я такой способ не люблю, потому что при перезапуске приложения список коннектов обнуляется. Но сделать-то можно.

    В общем чат без авторизации с случайным выбором собеседников сделать можно. И для обычного чата тоже подойдёт.
    Ответ написан
    Комментировать
  • Какую книгу/ресурс по изучению PHP посоветуете?

    copist
    @copist
    Empower people to give
    Книги бывают разные, но перед тем как их читать, надо бы уже чуть-чуть написать чего-нибудь своего, страшненького, костыльного. Запрограммируй любую идею с любым качеством кода, в любом стиле программирования.

    Начни с


    Постепенно кода станет больше, будешь думать - как его организовать. Вот тут то и книжки пригодятся.
    Ответ написан
    Комментировать
  • Есть ли плагин для jquery для анимированного появления добавленных блоков?

    copist
    @copist
    Empower people to give
    Мне кажется речь идёт об отображении карточек в стиле Pinterest Layout или Massonry
    Анимацию можно реализовать через CSS, почти без JS.

    Посмотри вот эти подборки

    Варианты анимации
    tympanus.net/codrops/2013/07/02/loading-effects-fo... и пример tympanus.net/Development/GridLoadingEffects/index2.html

    Вопрос "Как отключить анимацию" stackoverflow.com/questions/19326268/jquery-masonr...

    Статья про скорость анимации www.html5rocks.com/en/tutorials/speed/high-perform...
    Ответ написан
    Комментировать
  • Как сверстать вот такую страницу?

    copist
    @copist
    Empower people to give
    Не заметил там никакой активности в сайдбаре.

    Ответ на вопрос:
    Их сайт уже свёрстан и работает. В любом подобном случае, когда понравилась уже готовая вёрстка, надо просто "взять" (подсмотреть, стибрить, слямзить, свистнуть, спереть, украсть) у них кусок HTML и CSS, а если получится - JS. Это самое простое.
    Ответ написан
    Комментировать
  • Как верно пользоваться preg_match_all?

    copist
    @copist
    Empower people to give
    Не стоит пользоваться регулярками для разборка семантических данных. HTML надо разбирать как подвид XML. Есть несколько библиотек, штатных и дополнительных, которые исправляют невалидный HTML и делать удобные запросы по данным

    Несколько ссылок по этой теме
    Ответ написан
  • Почему не прогружается полностью страница nginx+php-fpm?

    copist
    @copist
    Empower people to give
    nginx работает под одним пользователем, а php-fpm под другим.
    Настройте так, чтобы они работали из-под одинакового пользователя, либо включите одного из них в группу другого.

    Проверьте права на папки кэша и прокси данных
    ls -la /var/lib/nginx/cache /var/lib/nginx/proxy
    Дайте права на чтение/запись в эти папки для php-fpm и nginx
    Ответ написан
    Комментировать
  • Отправка формы посредством AJAX и PHP?

    copist
    @copist
    Empower people to give
    1. зачем <button> ? если не требуется сложное оформление (button разрешает использовать html для надписи, например <button><h1>Send me</h1></button>) то можно простой <input type="submit">
    2. привязать функцию-обработчик на submit формы, а не на click кнопки
    3. сериализовать форму, а не кнопку
    4. при отправке письма лучше указывать ReplyTo, чтобы можно было ответить сразу пользователю

    Исправленный gist с указаниями всех замечаний https://gist.github.com/pvolyntsev/b1ce3d17c5fad20bffe3
    Ответ написан
    1 комментарий
  • Почему браузеры не запрашивают сохранение пароля на форме логина?

    copist
    @copist
    Empower people to give
    Убрать тег формы, убрать у полей id, поставить name="", добавить autocomplete="off" и обрабатывать отправку только через JS.
    Пример: codepen.io/copist/pen/pyjdXR

    И всё равно не всегда срабатывает.
    Ответ написан
    1 комментарий
  • Есть ли российские аналоги системы MentorNet?

    copist
    @copist
    Empower people to give
    Ещё есть phpmentoring.org - этот только про PHP, как мне показалось, там какая-то полу-ручная система закрепления менторов за ведомыми.

    Есть интернет-проект codementor.io - это биржа менторов. Из-за некоторых сложностей я так и не смог получить ни одного заказа с этой биржи как ментор.

    Не знаю, может ли мой личный менторский проект когда-нибудь вырасти до биржи :)
    Веду программы поддержки по веб-технологиям webmentor.pro
    * Список языков, технологий, навыков
    * Вопросы и ответы по процессу обучения
    Ответ написан
  • Джуниор поневоле: как найти и убедить разработчика-джедая стать для тебя ментором?

    copist
    @copist
    Empower people to give
    Обращаюсь к тем, кто мог бы назвать себя девелопером-джедаем с менторскими задатками: какими профессиональными знаниями и личностными качествами должен обладать соискатель на позицию падавана под вашим началом?

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

    1) Без каких знаний и личных качеств вы не захотите связываться с джуниором-падаваном даже бесплатно?

    Нужны базовые знания по HTTP/HTML/CSS/Javascript. В принципе, можно и без них, но тогда за полгода будет не очень заметный прогресс (расчё.... Не потерялся бы интерес у самого падавана. Хотя были случаи, что учеики терялись, а через год приходили опять, но уже с багажом простых "лендингов" и "визиток", то есть изучили самостоятельно на практике.

    Через полгода надо определиться с склонностями. Нужен логический и алгоритмический склад ума. Не скрою - я не психолог и не педагог: если склонности нет, то у меня вряд ли получится её внушить.

    Бывало, что приходили за знаниями по JS, но к программированию душа не лежала - теперь работают веб-дизайнерами. Ну, это ведь тоже веб-технологии, не так ли? Главное, чтобы интересно было.

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

    Составить план получения знаний и навыков мы можем вместе, но идти по плану придётся самостоятельно.
    Через полгода должны остаться энтузиазм и горячее желание творить. К скорости изучения пусть он сам себе требования выставляет.

    ... и готовы были предложить ему работу на ставку полноценного разработчика?

    Вот тут встречный вопрос: а репетиторы по иностранному языку трудоустраивают своих учеников?

    Если речь идёт о том, чтобы наставником был фрилансер, который позже передаст ведомому часть своей работы - это очень-очень-очень высокий риск для фрилансера потратить время впустую, что есть упущенная выгода, потому он эти же часы мог потратить на заказы, а не на обучение. Впустую - потому что невозможно заранее предсказать, что из ведомого получится надёжный и преданный компаньон. Крупные конторы ведут стажировку новичков, у них это на поток поставлено - но там отсев 80% на стажировке и 60% на испытательном периоде. Из 100 новичков испытательный срок заканчивают 8 человек.

    Я брал несколько падаванов разного уровня знаний с расчётом привлечь на свои проекты и фриланс. Дошёл только один, мы сделали copi.st - pet project "сокращатель ссылок" промышленного уровня, на котором мной отрабатывались технологии SemanticUI, LESS, AngularJS, фреймворк Phalcon, REST архитектура, автообновление серверов, очереди заданий и другие сложные технологии. В итоге он уже Middle Frontend Developer на fulltime, а проект мы оставили.

    По поводу "платное"/"бесплатное". Я долго думал над этим и сейчас не вижу разногласия в том, что наставничество - это один из видов репетиторской работы, то есть просто платная услуга с оплатой по часам.
    • Если бы ментор был репетитором по программированию, то однозначно брал бы оплату за каждый час работы.
    • Если бы ментор был фрилансером и у него не было бы консультаций, то он работал бы над заказами с фриланса, что даже больше оплачивается. Лично я готов потерять в деньгах ради приобретения новых навыков и поддержания старых. Старый принцип: уча других, учусь сам.
    • Самое главное. Все, кому я регулярно бескорыстно помогал, на удивление имеют более плохие показатели успеваемости и роста навыков по сравнению с теми, кто платил за помощь. Возможно, потому что "платные ученики" пытаются самостоятельно решить большую часть ежедневно возникающих проблем, чтобы платить меньше и это сказывается на способности самостоятельно находить решения - важная характеристика программистов уровня Middle. С другой стороны они не залипали на проблемах, потому что раз или два в неделю могли получить качественную помощь по алгоритмам и коду.



    В общем, оказание менторской поддержки на платной основе считаю обоснованным.

    А теперь чуть-чуть рекламы :)

    Веду программы поддержки по веб-технологиям webmentor.pro

    * Список языков, технологий, навыков
    * Вопросы и ответы по процессу обучения
    Ответ написан
    2 комментария
  • Кто может стать наставником(PHP)?

    copist
    @copist
    Empower people to give
    Привет. Давай сначала твои навыки и уже имеющийся опыт упорядочим в портфолио. Может быть всё не так уж и плохо.

    webmentor.pro/portfolio/#free
    Ответ написан
    Комментировать
  • Чем занимается server side или backend разработчик?

    copist
    @copist
    Empower people to give
    Программные продукты никогда не состоят из одного файла и не делают всё сразу, их делят на части. Некоторая часть занимается выводом информации пользователю и сбором данных, которые пользователь может ввести: тексты в формах, загружаемые файлы, клики и движение указателем мыши, звук с микрофона, изображение с камеры. Это называется фронтенд (front-end). Затем всё это передаётся в ту часть программной системы, которая может это сохранить в базу данных, изменить, передать в другую программу. Эту невидимую часть программных систем называют бакенд (back-end).

    Когда-то за весь сайт мог отвечать один человек. Он и страницы в Dreamweaver набросает, и тексты с картинками на сайт выложит и хостингом займётся. А сейчас в веб-технологиях настолько большое разнообразие, что одному человеку стало очень трудно знать всё. Поэтому появились разработчики для front-end и разработчики для back-end. Универсалов, которые знают обе части, называют «комбайны» или «full-stack developer».

    copist.ru/blog/2015/08/26/backend-vs-frontend
    Ответ написан
    1 комментарий
  • Действительно ли back-end разработка более консервативна, чем front-end?

    copist
    @copist
    Empower people to give
    Я понимаю, что уже год прошёл. Впишу своё мнение.

    Стек технологий для backend и frontend одинаково сложный. Много решений, много тонкостей. Как fullstack
    я знаю, о чём говорю.

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

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

    С другой стороны, портфолио фронтенд-разработчиков полно красивых скриншотов из готовых проектов, иногда даже ссылками на работающие проекты. Backend такой красотой похвастаться не могут - sphinx, memcache, mongo/redis, mysql/postgre, php/python/ruby - ну или ещё что-нибудь - я имею в виду, что приходится только стек технологий упоминать. А если в портфолио и будут скриншоты, то только с целью сказать позже: там, в тени красивого интерфейса, стабильно и быстро работает мой код.
    Ответ написан
    Комментировать