• Как перевести заказчиков работать через агенство?

    opium
    @opium
    Просто люблю качественно работать
    Нет отправляйте
    Ответ написан
    2 комментария
  • Что за аномалии с массивами в JS?

    Stalker_RED
    @Stalker_RED
    Так?
    var newArr = arr.map(function(a){
      a.actors = [{
        category: a.category,
        name: a.name
      }];
      delete a.category;
      delete a.name;
      return a;
    })

    Демо: https://jsfiddle.net/upbmosj0/
    Ответ написан
    Комментировать
  • Есть ли у Тостера RSS?

    webxaser
    @webxaser
    На ленту вопросов отдельного тега можно подписаться по ссылке https://toster.ru/rss/tag_questions/###, где решётки - id тега (напр. про Google).
    Ответ написан
    5 комментариев
  • Как автоматически копировать файл с чужого сервера?

    wget + cron
    Ответ написан
    Комментировать
  • Как автоматически копировать файл с чужого сервера?

    @alexdora
    Топ-менеджер
    curl в любом языке
    Ответ написан
    Комментировать
  • Какое оборудование выбрать для серверной в доме: D-Link, TP-Link Cisco, HP или др?

    @YuriyIvanov
    цена/качество лучше микротика не найти.
    Ответ написан
    Комментировать
  • Попросили проверить код, на что смотреть нужно?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Смотря зачем)). Я когда делаю Code Review критерии следующие:

    * Безопасность:
    - Каждый аргумент метода простого типа должен проверяться на тип в случае его проксирования и на граничные значения в случае обработки. Чуть что не так - бросается исключение. Если метод с кучкой аргументов на 80% состоит из поверки из аргументов - это вполне норм))
    - Никаких trigger_error, только исключения.
    - Исключения ДОЛЖНЫ быть человеко-понятны, всякие "Something went wrong" можно отдавать пользователю, но в лог должно попасть исключение со стектрейсом и человеко-понятным описанием, что же там пошло не так.
    - Каждый аргумент (объект) метода должен быть с тайпхинтингом на этот его класс, или интерфейс.
    - За eval как правило шлю на **й.
    - @ допускается только в безвыходных ситуациях, например проверка json_last_error.
    - Перед работой с БД - обязательная проверка данных.
    - Никаких == и !=. Со swtich - единственное исключение, по ситуации.
    - Если метод возвращает не только bool, а еще что-то - жесткая проверка с ===, или !== обязательна.
    - Никаких условий с присваиваниями внутри. while($row = ...) - тоже идет лесом.
    - Магические геттеры/сеттеры разрешаются только в безвыходных ситуациях, в остальном - запрещены.
    - Конкатенации в sql - только в безвыходных ситуациях.
    - Параметры в sql - ТОЛЬКО через плейсхолдеры.
    - Никаких глобальных переменных.
    - Даты в виде строки разрешаются только в шаблонах и в БД, в пхп коде сразу преобразуется в \DateTimeImmutable (в безвыходных ситуациях разрешено \DateTime)
    - Конечно зависит от проекта, но как приавло должно быть всего две точки входа: index.php для web и console(или как-то по другому назваться) - для консоли.

    * Кодстайл PSR-2 + PSR-5 как минимум, + еще куча более жестких требований (для начала все то что в PSR помечено как SHOULD - становится MUST)
    - В PhpStorm ни одна строчка не должна подсвечиваться (исключением является typo ошибки, например словарик не знает какой-то из аббревиатур, принятых в вашем проекте). При этом разрешается использовать /** @noinspection *** */ для безвыходных ситуаций.
    - Если кто-то говорит, что пишет в другом редакторе и у него не подсвечивается, на эти отговорки кладется ВОТ ТАКЕЕЕНЫЙ мужской половой **й и отправляется на доработку)).

    * Организация кода:
    - Никаких глобальных функций.
    - Классы без неймспейса разрешаются только в исключительно безвыходных ситуациях.

    * Тестируемость (в смысле простота тестирования) кода должна быть высокая.
    - Покрытие кода обязательно для всех возможных кейсов использования каждого публичного метода с моками зависимостей.

    * Принципы MVC:
    - Никаких обработок пользовательского ввода в моделях, от слова совсем.
    - Никаких ***ть запросов в БД из шаблонов.
    - Никаких верстки/js/css/sql-ин в контроллерах.
    - В моделях НИКАКОЙ МАГИИ, только приватные свойства + геттеры с сеттерами.
    - В моделях разрешено использовать метод save(при наличии такого разумеется) только в исключительных ситуациях. Во всех остальных - либо insert, либо update.

    * Принципы SOLD:
    - Никаких божественных объектов умеющих во все.
    - Если метод для внутреннего пользования - private, никаких public.
    - Статические методы разрешаются только в случае безвыходности.

    * Принцип DRY разрешено нарушать в случаях:
    - Явного разделения обязанностей
    - В тестах (каждый тест должен быть независимым, на сколько это возможно)

    * Работа с БД:
    - Запрос в цикле должен быть РЕАЛЬНО обоснован.
    - За ORDER BY RAND() - шлю на***й.
    - Поиск не по ключам (конечно если таблица НЕ на 5 строк) запрещен.
    - Поиск без LIMIT (опять же если таблица НЕ на 5 строк) запрещен.
    - SELECT * - запрещен.
    - Денормализация БД должна быть обоснована.
    - MyISAM не используется (так уж)) )
    - Множественные операции обязательно в транзакции, с откатом если чо пошло не так.
    - БД не должна содержать бизнес логики, только данные в целостном виде.
    - Не должно быть нецелесообразного дерганья БД там, где без этого можно обойтись.

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

    * О людях:
    - "Я привык писать так и буду дальше" - не вопрос, ревью пройдешь только когда поменяешь свое мнение.
    - "Я пишу в vim-е и мне так удобно" - здорово, код консолью я тоже в нем пишу)) но есть требования к коду, если в них не сможешь - не пройдешь ревью.
    - "Я скопировал этот страшный метод и поменял 2 строчки" - это конечно замечательно, но по блейму автор всего этого метода ты, так что давай без говняшек, хорошо?
    - "Оно же работает!" - вот эта фраза переводится примерно так: "да, я понимаю, что пишу полную хрень, но не могу писать нормально потому, что руки из жо", я правильно тебя понял?))
    - "У меня все работает!" - рад за тебя, а как на счет продакшна?
    - "Там все просто" - не используй слово "просто", от слова "совсем". Вот тебе кусок кода (первого попавшегося с сложной бизнес логикой), где там ошибка (не важно есть она, или нет)? Ты смотришь его уже 2 минуты, в чем проблема, там же все "просто"))

    * Всякое:
    ActiveRecord (это я вам как в прошлом фанат Yii говорю) - полное говно, примите за исходную. По факту у вас бесконтрольно по проекту гуляют модельки с подключением к БД. Не раз натыкался на то, что в тех же шаблонах вызывают save, или update (за такое надо сжигать).
    То, что используется Laravel - это печально((. Что бы выполнить требования приведенные выше, приходится "воевать" с фреймворком.

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

    UPD

    Формализировал данные критерии по ссылочке: https://github.com/index0h/php-conventions
    Ответ написан
    55 комментариев
  • Как правильно учиться?

    @SerMelipharo
    Для начала надо выучить машинописный синтаксис родного языка. Например, нормы сочетания пунктуационных знаков и пробелов, и только после этого переходить к английскому языку, а далее к языкам программирования.
    Ответ написан
    Комментировать
  • Что значит node.js разработчик?

    @teslor
    Node.js это не веб-сервер и не CMS, это просто среда исполнения JavaScript, где можно сделать что угодно (в т.ч. написать свой веб-сервер, фреймворк и т.д.). Чтобы называться разработчиком Node.js нужно разбираться в тонкостях асинхронного JS, знать большую часть встроенных функций Node.js, уметь работать с основными модулями и создавать свои.
    В контексте фронтенд-разработки обычно хотят лишь, чтобы человек умел его установить и настроить сборщик. Это не разработчик Node.js.
    Ответ написан
    1 комментарий
  • Как получить текущее время для нулевого часового пояса на php?

    arutyunov
    @arutyunov
    Mooza.ru — Делаем сайты
    gmdate возвращает время по Гринвичу
    Ответ написан
    Комментировать
  • Как получить текущее время для нулевого часового пояса на php?

    SerafimArts
    @SerafimArts
    Senior Notepad Reader
    Объект даты принимает временную зону в качестве второго аргумента, предлагаю просто его указать: php.net/manual/en/datetime.construct.php

    new \DateTime('now', new \DateTimeZone('Europe/London'));
    Ответ написан
    Комментировать
  • Как создать gui приложение на go?

    @abcyu
    Разработчик
    Локальный веб-сайт подойдет?
    Ответ написан
    Комментировать
  • Самая удобная система управления проектами?

    gzhegow
    @gzhegow
    aka "ОбнимиБизнесмена"
    Trello. Очень быстрое приложение в Облаке, есть приложения на любые мобильные платформы. После 2 часов изучения разберется даже новичок.
    Есть цветные пометки (как в западных автосервисах на автомобилях), можно поставить личные задачи и контроллить дедлайны.
    Нет статистики, но если грамотно сделать столбики - то проект, он просто движется и видно, когда кто-то что-то не делает.

    Если тебе для начальства отчет и там где про бабло, ищи что угодно с диаграммой Ганнта. Мы в свое время долго искали и остановились на платном (5 уе в мес) TimeDoctor.

    Плюсы ТаймДоктор:
    Развернутая статистика
    Контроль времени
    Скриншоты с рабочего стола
    Когда ты все это сгружаешь клиенту через электронку, крыша у него уезжает в ад. Он согласен заплатить за такой подробный анализ всего, что сделано.

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

    Не благодари :)
    Ответ написан
    2 комментария
  • Какой фреймворк выбрать для создания мобильных приложений?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    ionic - тысячи проектов, идеален для простых проектов (что-то типа электронного каталога товаров или что-нибудь в этом духе, у меня как-то был опыт графического редактора на ionic и с webgl в принципе неплохо работало)

    react-native - нативный UI но есть свои подводные камни, в целом концепция неплохая и мне нравится. А так как angular2 будет иметь драйвер для react-native то вообще ништяк. По поводу продакшена - не могу сказать. У меня пока только один проект переведен на react-native и то не мной.

    NativeScript - я бы поставил эту штуку на уровень выше react-native. Опять же есть интеграция с angular2 (когда он выйдет) и планируется поддержка windows, что здорово. Проектов в продакшене на нем побольше.
    Ответ написан
    1 комментарий
  • Можно ли написать на js аналог DonationAlerts?

    @sanex3339
    Пиши, разрешаю.
    Ответ написан
    Комментировать
  • Какое практическое задание по XML дать студенту?

    sivabur
    @sivabur
    Заблокировали просто так!
    Записать данные в определенной структуре и считать при этом заранее неизвестно сколько елеметов надо считать.
    Ответ написан
    Комментировать
  • Какое практическое задание по XML дать студенту?

    globuzer
    @globuzer
    gezgrouvingus progreszive ombusgrander greyderzux
    Составить простенькое дерево XML-структуры и потом написать на любом языке программирования некий парсер, чтобы распарсить это дерево и интерпретировать данные из него.
    Ответ написан
    Комментировать
  • С чего начать алгоритмическую торговлю?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Для начала спросите себя, действительно ли вы этого хотите? Во-первых, вероятность того, что кто-то даст торговать реальными деньгами на реальном рынке стремится к нулю. Окей гугл, форекс кухни. Во-вторых, какие-бы современные алгоритмы не были бы использованы, всё таки по-настоящему эффективных алгоритмов нет. Почему? Нет, серьёзно задали этот вопрос? А вы действительно всё ещё хотите в финансы? Ну ладно, банально потому, что достаточно (не идеально, а лишь достаточно) эффективный алгоритм лишил бы работы бОльшинство трейдеров. Как бы нам не хотелось верить в деньги из воздуха (хотя технически деньги и правда из воздуха, так как при изготовлении используется органические соединения, содержащие углерод как основной компонент, источник которого - атмосфера, углекислый газ точнее - фотосинтез; простите, не удержался)... В общем, как бы нам не хотелось верить в деньги из воздуха - спекуляции - зло, необходимое зло свободного рынка. По той простой причине, что роль санатора рынка они выполняют как нельзя плохо (рисковые вложения сегодня ну очень популярны), стабилизацией они тоже занимаются посредственно (благо агенства вроде Bloomberg строят рейтинги, ограждая крупных игроков, да да - игроков, рынка от излишне спекулятивных операций), ну а что до материальных благ, то и тут они ну совсем не создают; сродни голодным волкам, бросающимся на любой кусок мяса, даже тот, который их кормит. Но! Даже к этим голодным волкам вас не допустят - мало денег. Нет. Ну очень мало денег. Капля не в море, но в океане. Контракты на миллиарды и триллионы долларов заключаются еженедельно, ежедневно, ежечасно. С целью получить выгоду хотя бы в тысячу долларов. Единственный удел простого смертного - кухни, разной степени никчёмности. Выиграть тут можно, но знайте одно - владелец кухни всегда, всегда в плюсе. Те крохи, что останутся трейдерам поделят самые удачливые. А потому, что не дадут вам поиграть на адекватных плечах, ибо 1:20 - самый нереальный максимум, что может себе позволить опытный трейдер. Риск, штука которую можно рассчитать. Но выбирая плечо больше - есть неиллюзорная вероятность потерять ВСЕ вложения.

    Ну ладно, если всё ещё желаете попытать счастье здесь, то напомню. Алгоритма нет. Да не потому, что никто не делится. Если бы был алгоритм - это сразу бы заметили. Есть лишь жалкие попытки, тучи систем анализа данных, но серьёзные решения всегда принимает человек.
    Вообще, существует грубо три варианта работы алгоритма. Первый, кибернетический - анализ сигнала. Точнее - сигналов. Кибернетика - наука об обратных связях. То что в мире финансов они есть - абсолютно точно. В какой-то степени - самый результативный способ. Если смотреть по прошлому. Сколько-нибудь далёкое будущее предсказывать ну абсолютно не умеет.
    Второй, алгоритмический. Датамайнинг сложным конечным автоматом. Без построения систем диффиринциальных уравнений, а банальным множеством захардкоженных условных переходов. Можно точно сказать, таким пользуется абсолютное большинство.
    Ну и третий, нечёткие алгоритмы, генетика, нейронные сети. В общем и целом, самое перспективное направление. Суть - создать ИИ, или хотя бы его подобие. Проблемы две - сугубо философская "имеем ли мы право" и сугубо техническая "возможности". В остальном - флаг в руки. Однако стоит понимать, что ИИ здесь нужен тот, который будет не принимать решения, а рассчитывать риски. Решение может и решка принять. А вот подсчитывать риски - основная задача здесь - не умеет никто, даже человек считает их весьма и весьма грубо. Просто кто-то чуть более удачлив, ибо рассуждая об успешных трейдерах мы забываем упомянуть про миллионы погоревших его коллег. Не потому, что они тупые или не прозорливые, нет, просто потому, что им не повезло.
    Ответ написан
    21 комментарий
  • Почему выдает ошибку при попытке обратиться к функции из другого скрипта?

    Sanasol
    @Sanasol Куратор тега JavaScript
    нельзя просто так взять и загуглить ошибку
    в разных областях видимости

    Вынесите функцию из $().ready() в глобальную область.
    Ответ написан
    2 комментария
  • Проблема с клиентом на фрилансе?

    Jump
    @Jump
    Системный администратор со стажем.
    Это никак не проблема с клиентом, это явная проблема с исполнителем.
    Работа оплачена, а исполнитель шантажирует заказчика.
    За такое отрицательный отзыв он просто обязан поставить.
    Чтобы другие не нарвались.
    Ответ написан
    Комментировать