• Почему sleep() ведет себя странно?

    Pjeroo
    @Pjeroo
    Веб-разработчик
    Это все из-за сессий
    Ответ написан
    1 комментарий
  • Как правильно технически организовать веб-разработку?

    @nikolaj
    По последнему пункту:
    1) обычно задач больше чем ресурсов на их реализацию
    2) зависит от компании, но большей части запросы приходят в таком виде, что их ещё нужно довести до стадии задачи. Иногда хотелки отваливаются сами собой после разговора про то, что именно нужно или преображаются до неузнаваемости
    3) задачи имеют свойство приходить как попало, а не в тот момент, когда разработчик готов переключиться на очередную

    Вобщем, если у вас не какая-то исключительная компания лучше, если задачи в трекере будут падать на вас, и только потом, переформулированными и с приоритетами, будут переходить к разработчикам.
    Причём если не critical — то лучше пачкой при планировании спринта.
    Ответ написан
    2 комментария
  • На чем лучше и быстрее написать парсер (PHP)?

    muhammad_97
    @muhammad_97
    PHP-разработчик
    DiDom: https://github.com/Imangazaliev/DiDOM

    + высокая скорость работы (сравнение с другими парсерами)
    + хорошая дока
    + большое количество поддерживаемых селекторов
    + самое главное - тесты

    Простой пример:

    $document = new Document('http://www.example.com/', true);
    
    echo $document->first('title::text');


    Чуть посложнее - парсим все ссылки:

    $links = $document->find('a[href]::attr(href)');
    
    var_dump($links);


    Еще сложнее - получить адреса всех ссылок-картинок:

    $links = $document->find('a[href]:has(img)::attr(href)');
    
    var_dump($links);


    Другие варианты:
    - Symfony DomCrawler
    - Zend Dom Query
    Ответ написан
    3 комментария
  • Parse error: syntax error, unexpected end of file in C:\web\sqltest.php on line 77 в чем проблема?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Выбросьте эту книжку, это какой то дикий говнокод из древних времен.
    От общего спагетти-стайла, до использования устаревшего mysql_
    Лучше возьмите любой современный framework типа Yii2 или Laravel и читайте к нему туториалы.
    Ответ написан
    3 комментария
  • Какие есть хорошие образцы сайтов на Node.js + Express, чьи исходные коды можно посмотреть в целях обучения?

    @yociyavi
    Всем известный learn.javascript.ru написан на ноде и опен сорс. Код можете глянуть здесь: https://github.com/iliakan/javascript-nodejs

    P.S. сам код не смотрел, но думаю его не глупный человек писал :)
    Ответ написан
    1 комментарий
  • Мотивация для разработчика. Как мотивировать себя/команду работать продуктивно?

    @lotse8
    соболезную организациям, которые держат разработчиков на окладе без привязки к результатам, они могут заранее заказывать себе надгробья с надписями типа "здесь похоронен самый гуманный в мире бизнес".
    у нас все давно получают по результатам, есть результаты - получите, нет результатов - ищите других работодателей
    Ответ написан
    Комментировать
  • Мотивация для разработчика. Как мотивировать себя/команду работать продуктивно?

    alexpic
    @alexpic
    Разработчика мотивируют задачи с уровнем сложности на пределе текущей компетенции
    Ответ написан
    Комментировать
  • Где посмотреть реальные примеры использования "правильных" клиентских javascript?

    нигде.

    Просто юзай webpack или browserify и не парься.

    Посмотри на React-router, там есть единая точка входа, посмотри на flux архитектуры, там так же есть единая точка входа.
    Ответ написан
    Комментировать
  • Как правильно записать условие в шаблоне Smarty?

    @HiIamRobot
    эти проверки должны идти на пхп, смарти это ж шаблонизатор, он для вывода html. Это просто не верно. Но на офф форуме смарти говорят что практически все пхп функции работают. К примеру проверка на число будет выглядеть так:
    {if is_numeric($getnumeric)}
    Ответ написан
    4 комментария
  • Мотивация для разработчика. Как мотивировать себя/команду работать продуктивно?

    saboteur_kiev
    @saboteur_kiev Куратор тега Организация работы
    software engineer
    Ваш мозг вас обманывает.

    На всякое действие должно быть вознаграждение. Если его нет, вы не будете это делать. На работе основное вознаграждение - зарплата.

    Если за работу вы всегда получаете зарплату, ваш мозг начинает понимать, что зарплата постоянна, а значит работу нужно оптимизировать с точки зрения затрат. Например работать поменьше. И вы перестаете получать удовольствие от работы, потому что мозг считает, что зарплата и так будет (ведь в подавляющем большинстве случаев это действительно так - можно работать гораздо меньше и получать ту же зарплату).

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

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Достаточно солидны список, неправда ли?


    Вы не правильно сделали декомпозицию. Дробите список и перемещайте местами пока не будет абстрактных "базовое знание mysql". Да и зачем фронтэндщику вообще базовое знание mysql или php? Вам нужно знать как с бэкэндом взаимодействовать (HTTP, принципы REST хотя бы приблизительно понимать), примерно понимать что такое базы данных (localStorage, IndexedDB). Словом никаких mysql/php. Это потом когда-нибудь освоите.

    Или например список ваших фреймворков. Выкидываем backbone - о нем можно почитать просто что он есть и что из себя представляет, но на вашем этапе толку не будет. Есть тройка лидеров - React/Angular/Ember. Затем идут небольшие фреймворки и библиотеки - Aurelia/Vue/Backbone/etc.

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

    p.s. я бы требовал еще es2015/2016, webpack/systemjs/вообще модули, препроцессоры стилей (хотя бы основы и понимание зачем нужны) и т.д.

    Ну или еще - jquery можно не изучать. Ознакомиться - да, но на уровне джуниора нужно знать как решить стандартную задачку подключения плагина и организации очереди анимаций. А так в 90% случаев jquery даже и не нужен вовсе. Ну и AJAX - разберетесь с HTTP и вы познаете AJAX.

    Ну и последнее. Джуниор это разработчик с годом опыта работы. Это человек который запросто может решать типичные задачи (можно пробежаться по фриланс биржам и составить представление о типичных задачах). Перед джуниором идет стажер.
    Ответ написан
    3 комментария
  • Как лучше получать деньги из-за рубежа (в т.ч. фриланс) в РФ на 2016 год и дальше?

    StanEgo
    @StanEgo
    Для проживания в РФ и желания быть белым лучше вариант с ИП. Помимо белого бизнеса и смешного вклада в пенсию (но официально - это стаж) - больше простора в плане кредитования на территории РФ. Даже когда я был гендиром с белым НДФЛ, мне не предлагали таких кредитов.

    Первым делом надо погулять по банкам(с распечатками бумажек с используемой биржи), поболтать с валютными контролями (обычно на весь банк одна барышня), познакомиться поближе. Посмотреть условия, например вывод ИП->физлицо (сегодня модно брать процент даже за кассовый симол 58).

    На самом деле, на банки намного больше инструментов давления, чем кажется. А банк Х в Мухосранске тем более не захочет, чтобы на него писали кляузу в ЦБ РФ за нарушение его инструкций.

    Но я бы всегда держал в кармане два варианта. И если всякие скриллы, пейпалы (я уж не буду упоминать десятки всевозможных payment services расцвета 2005-2010) весьма волатильны, пионером я как пользовался лет 10 назад, так изредка и пользуюсь.

    1) Перевод хорош, но только для нерезидентов. В остальных случаях - палево. Но опять же зависит от банка. Например МКБ мне тупо дописывает код VO20100, что невозможно даже по ГК РФ.
    2) В розничных точках продажи - без проблем. Со счета сбился, во скольких странах оплачивал, проблем никогда не было. А вот онлайн могут быть косяки. Не раз были проблемы в оплате, скажем, авиабилетов. Требовали код потверждения, а саппорт спит сутками (на удивление саппорт в форуме рулит, некоторые вопросы решались за считанные часы).
    Ответ написан
    Комментировать
  • Meteor.js расцветает или чахнет?

    PQR
    @PQR
    Не согласен с предыдущим оратором (@geeek), в частности с утверждением
    В общем если хочешь быть в тренде - бери
    - Meteor совсем не в тренде.

    Если дать краткий и резкий ответ на вопрос "расцветает или чахнет?" - отвечу: интерес к Meteor чахнет, не смотря на все усилия команды разработки.

    Компания MDG (Meteor Development Group) подняла $31M инвестиций (https://www.crunchbase.com/organization/meteor) и хотела всё сделать круто, стать мейнстримом, а потом зарабатывать на хостинге Meteor проектов - такой план монетизации. Хостинг они, кстати, сделали. И в какой-то момент было много хайпа вокруг Meteor, казалось, что всё идёт по плану. Полтора года назад вышел Meteor 1.0 (октябрь 2014), потом была пара хороших релизов, которые убрали всю "сырость": Meteor 1.1 и 1.2.

    Но в середине 2015 стало понятно, что никаким мейнстримом они не стали, мейнстрим нынче React!
    Не смотря на простоту старта и скорость разработки с Meteor, были очевидны следующие минусы:

    1. Собственная система пакетов со своим центральным репозиторием https://atmospherejs.com - посмотрите на счётчики скачивания пакетов, это крохи по сравнению с npm. Посмотрите на активность разработки основных пакетов - всё очень тухленько.

    2. Собственная система сборки. С одной стороны всё работает из коробки, с другой стороны в неё не вклинишься (это сложно). Плюс всякие странные условности, что всё в глобальном пространстве имён и ваши js файлы загружаются в алфавитном порядке. В Meteor 1.3 частично решили проблему, ходят слухи, что в будущем будут использовать webpack.

    3. Собственный шаблонизатор blaze (похож на handlebars). В начале blaze выглядел хорошо, но теперь все внезапно пишут на React и многие потирают руки в ожидании Angular 2, в итоге blaze оказался ещё один велосипедом, с которым не понятно что делать.

    4. На бекенде всё ещё Node 0.10. Даже с Node 0.12 Meteor уже не работает из-за некоторых бинарных зависимостей! Обещали в будущих версиях обновиться с поддержкой Node 4.

    5. Метеор сильно завязан на MongoDb. Чтобы реактивно доставлять новые/изменившиеся данные от сервера в бразуер они парсят логи Mongo. Были попытки сделать аналогичное для SQL баз, но не увенчались успехом. В итоге встречайте их новый проект Apollo, который поверх GraphQL и не привязан к конкретной реализации бекенда www.apollostack.com А что теперь будет со старым добрым DDP?

    6. Ваше Meteor приложение одной командой можно упаковать в мобильное приложение Cordova - выглядит круто, но сейчас время ReactNative и вот мы читаем обсуждения на форумах, что возможно, они таки интегрируются с ReactNative, но когда?

    Подводя итог: ребята из MDG подняли кучу денег и хотели сделать всё сами: свои пакеты, свою сборку, свой шаблонизатор, свой реактивный протокол (DDP) и чтобы всё работало из коробки. И они сделали это!

    Только это оказалось никому не нужно, т.к. для пакетов все сидят на npm, сборка должна быть гибкой (и поэтому у нас есть gulp и webpack), самый модный шаблонизатор нынче - это React, реактивный протокол GraphQL и базы на сервере люди любят разные, а не только MongoDb. А Meteor, по сути, остался на обочине всей экосистемы и движухи вокруг JavaScript. Поняв это, MDG начали двигаться в сторону JS комьюнити и первый шаг сделан: Meteor 1.3 поддерживает нормальные модули ES2015, npm пакеты, рендринг через React и Angular. Но Meteor 1.3 - это куча костылей поверх старого велосипедного Meteor. Почитайте их планы на будущее в официальном блоге, хотя бы в этом посте: info.meteor.com/blog/announcing-meteor-1.3 - им по сути предстоит переписать всё заново! И первые ласточки такого "переписывания" - это выделение проекта Apollo.

    Возможно, со второй попытки они всё сделают правильно и Meteor 2.0 действительно выстрелит. Если только у них деньги не закончатся раньше.

    Сейчас можно взять Meteor и эффективно зарабатывать на маленьких/средних фриланс проектах, когда нужно сделать быстро и не думать о долгосрочной поддержке.
    Если же вы делаете большой продукт, то вас ждут большие потрясения и изменения в экосистеме Meteor.
    Ответ написан
    4 комментария
  • Как лучше получать деньги из-за рубежа (в т.ч. фриланс) в РФ на 2016 год и дальше?

    Все зависит от источника доходов:
    - Если доходы от объекта авторского права, т.е. прямая продажа прав, лицензионные отчисления, мобильные/десктопные приложения, то можно оставаться физиком и подавать раз в год 3-НДФЛ. В данном случае предпринимательская деятельность отсутствует.
    - Если источником доходов является оказание услуг, то лучше открыть ИП на упрощенке, т.к. в противном случае это попадает под нелегальную коммерческую деятельность. Расчетный счет вам открывать не обязательно и можно использовать лицевые счета. Расчетный счет желательно иметь если вы получаете деньги внутри россии, т.к. некоторые банки отказываются проводить подобные платежи с расчетного счета на лицевой. Про пионера лучше узнать на сколько он легализован в РФ, но с PayPal проблем точно нет. Налоговую теперь тоже уведомлять об этих счетах не нужно, достаточно указать их в КУДИР (расшифровка далее). Раз в год будете подавать декларацию, вести Книгу учета доходов и расходов (КУДИР), в которую будете записывать свои доходы, и раз в квартал платить страховые/налоговые отчисления. С учетом того, что налоговые отчисления будут уменьшаться на 100% от страховых отчислений, то реальных расходов на ведение ИП не много и, как правило, это гораздо выгоднее НДФЛ.
    Открыть ИП выйдет в районе 2 килорублей, с учетом заказа всех бумажек для открытия, и 1 неделю по времени.

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

    SilenceOfWinter
    @SilenceOfWinter Куратор тега PHP
    та еще зажигалка...
    Читайте про паттерны, но используйте только те что понимаете и кажутся удобными. Сейчас в области стандартов творится полный ахтунг, взять хотя бы psr-6..
    Ответ написан
    Комментировать
  • Есть ли учебный материал по паттернам на основе пошагового создания веб-приложения?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Бросайте паттерны. На вашем этапе обучения они пока не нужны. Изучайте принципы (SOLID, GRASP). Учитесь писать тесты, пробуйте TDD/ATDD. И тогда паттерны будут образовываться сами собой.

    Паттерны придумали не для того что бы ими проектировать, они нужны что бы называть ваши решения. Это просто словарь терминов что бы меньше времени приходилось тратить объясняя то или иное техническое решение. Но сначала код а потом паттерны, а не наоборот.
    Ответ написан
    106 комментариев
  • В чем суть роутера на php?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Роутер отвечает за доставку данных к контроллеру/сервису.
    Если нет пути - роутер обычно выдаёт 404 ошибку.
    URI роутером делится на: протокол, домен, сервис и переменные сервиса
    например:
    domain.com/catalog/145 - сервис catalog отображает ветку с ID 145
    роутер - перенаправляет лишь запрос по части URI: /catalog
    сервис catalog - сам берёт нужные ему переменные из запроса.

    Еще примеры:
    domain.com/catalog/145/add - сервис catalog отображает диалог добавления новой категории в существующую категорию с ID 145.
    domain.com/catalog/145/sort/price/09/col/1/2/title - сервис catalog отображает категорию с ID 145 с сортировкой по цене от наименьшей к большей и выводом колонок с ID:1, ID:2, и по названию столбца: title.

    Также, router может быть древовидным и рекурсивным.
    Пример: domain.com/catalog/145/add/prod/24/56/37
    Описание: Добавить в каталог с ID:145 товары с ID:24,56,37
    Вначале, определяется, что категория с ID:145 существует и необходимо добавление, затем снова вызывается роутер с линком: /prod/24/56/37 и уже сервис prod проверяет существование продуктов и добавляет к каждому ID категорию 145 и так же возвращает результат в сервис catalog.
    Шаблон страницы вывода - будет выбран согласно операции: add.

    Таким образом, URI превращается в понятные предложения для общения пользователя/JS (front-end) с сервером через URI-запросы. Router - это как-бы механизм, "понимающий" то, что вы просите от веб-сайта через URI.
    Суммарно: это примитивный язык общения в виде структурированных лексических "предложений" между сайтом и пользователем/JS посредством URI-запросов.
    Ответ написан
    Комментировать
  • Можно ли в Redux использовать EventEmitter?

    PQR
    @PQR
    Ведь придется подписываться на нажатие клавиатуры и тд. Менять состояние часто. В общем, не очень привлекательная затея.


    На самом деле в React всё так и делают - каждое нажатие клавиатуры, каждый клик - всё это генерирует события onChange или onClick. А если используем Redux, то как следствие на каждое нажатие клавиатуры или клик куда-нибудь у нас будут генерироваться action, например такое:
    dispatch({type: TEXTAREA_CHANGE, value: newValue})
    Ответ написан
    Комментировать
  • Только начал учить javascript как понять?

    EreminD
    @EreminD
    Кое-что умею
    //javascript такой: хоба! Функция, которая принимает на вход один параметр 
    //и возвращает результат в виде х*х.
    //Пожалуй, я ее запомню, потом, может, пригодится
    var square = function(x) { return x*x; }; 
    
    //потом javascript такой: ага, надо че т в консоль вывести (то, что в скобках). 
    //А че в скобках? Итить-мадрить, это ж та самая функция, котораю я прост запомнил. 
    //Надо ее вызвать и на вход подать 12. Тогда мне вернется 12*12 и это я выведу в консоль.
    console.log(square(12));
    
    //огонь


    А если понятнее, то вот
    Ответ написан
    7 комментариев
  • Чтобы загрузить через php картинку в папку, у папки обязательно должно быть 777 права?

    Finesse
    @Finesse
    Достаточно прав на запись пользователю, от имени которого работает веб-сервер.
    Ответ написан
    Комментировать