• Высокоуровневый язык программирования?

    evnuh
    @evnuh
    Поиск Гугл помог мне, впусти и ты его в свой дом
    Что это? Желание выпендриться? Или дислексия? Вы сами прочли википедию, но всё равно не поняли? Давайте попробуем от противного: высокоуровневые - это все, которые не низкоуровневые, а низкоуровневые - это "близкий к программированию непосредственно в машинных кодах"
    Ответ написан
    2 комментария
  • Как сделать резервную копию БД без phpmyadmin?

    @hack_student
    Мультисисадмин
    Можно использовать утилиту mysqldump
    Ответ написан
    Комментировать
  • Коллеги, расскажите о своих методах защиты от "Клиент всегда прав" в процессе разработки?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Я объясняю клиенту почему не стоит делать так, как он хочет. Но если он настаивает, то делаю. В конце концов, это же его проект и его деньги. Если он не хочет получить экспертное мнение и зарабатывающий продукт, а хочет только реализацию его идей - это его право. Несколько таких клиентов приносят мне весьма неплохой доход: они придумывают безумную идею, я её реализацию, беру оплату, через месяц-два они просят это безумие убрать, я и за это тоже беру оплату. И так уже несколько лет.
    Ответ написан
    7 комментариев
  • Взаимодействие PHP и JS?

    y0u
    @y0u Куратор тега JavaScript
    dev
    REST API

    Автор, у вас подпись на Тостере ""Ok Google" и все твои проблемы решены". Так может воспользуетесь своими же методами? :D
    Ответ написан
    6 комментариев
  • Generics: Что значит такая запись?

    iLLuzor
    @iLLuzor
    Java, Kotlin, Android Developer
    Это значит, что для этого класса нужно указать три дженерика.
    Для примера посмотрите исходники интерфейса Map и\или классов HashMap/LinkedHashMap/LinkedTreeMap. Там два дженерика.
    Ответ написан
    Комментировать
  • Как научиться учить программирование?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    А просто со временем, до всех доходит, что программирование это не интересные исследования, познания неведомого как в фантастике, прикручивание двумя кликами новых движков.
    А на деле - это еще и множество рутинной и кропотливой работы, которая по сути - скучная, однообразная, И ее процентов 80.

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

    DMGarikk
    @DMGarikk
    Lead Software Developer
    Это зависит от задачи и от запроса.
    Помню в одном проекте нормальным считался запрос выполнявшийся 5 часов...
    Ответ написан
    Комментировать
  • Рекомендации по использованию трейтов в PHP?

    qonand
    @qonand
    Software Engineer
    Лезу в класс Main и вижу что метода sayHelloWorld в нём нет. Логически понятно что он не в родителе т.к. было бы другое обращение (через parent::) но это всё равно несколько сбивает с толку, особенно если слово use не сразу заметишь

    Установите нормальное IDE и не будет никаких проблем, например в том же PHPStorm кликнув на методе Вы сразу можете перейти к его реализации без лишних поисков и телодвижений

    Есть ли какие-то best practice и негласные соглашения по их использованию, например писать метод $o->sayHelloWorldTrait(); тогда уже по названию метода понятно и что он делает и откуда берётся.

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

    В какой папке хранить трейты если папки проекта разделены на model, view, controller?

    А трейты у Вас к чему относятся? к бизнес-логике, логике обработки запросов или представлению? К какому слою относиться трейт в том и размещайте

    Вопрос по статическим членам трейта

    Зачем мешать молоко с мухами? Конфиги это - не функционал программы, соответственно смысла размещать их в трейтах вообще нет
    Ответ написан
    Комментировать
  • Не могу отсортировать массив по ключу, что не так?

    Stalker_RED
    @Stalker_RED
    Открываем документацию php.net/manual/ru/function.ksort.php
    Возвращаемые значения

    Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.
    Ответ написан
    Комментировать
  • Что означает фраза данные передаются поверх протокола?

    POS_troi
    @POS_troi
    СадоМазо Админ, флудер, троль.
    Читайте как "внутри"

    Тоесть представляете себе SSL как трубу, канал дял передачи данных, данные как вода текут в этой трубе, защищенные её стенками.
    Ответ написан
    2 комментария
  • В чем заключается выбор между C и С++ для написания драйверов?

    C++ не может повредить. Если вы используете virtual, RTTI, exceptions, iostreams, то вы платите за них, но если эта цена неприемлема - просто не используете их.

    Однако C++, особенно C++11 и C++14, часто не поддерживаются компилятором, когда приходится собираться не под уютные gcc/clang x86, а что-нибудь специфическое, вроде Arduino или CUDA. Ещё в ядре Linux C++ традиционно под запретом.

    Так что посмотрите, можете ли вы использовать C++ в вашем конкретном случае. Если нет, то выбирать не из чего.
    Ответ написан
    Комментировать
  • Кто такой программист 1С?

    DMGarikk
    @DMGarikk
    Lead Software Developer
    Программист 1С это человек оркестр, умеет программировать (с точки зрения обычных программистов очень своеобразным образом), знает бухучёт, документооборот, бизнеспроцессы, консультировать пользователей по работе программ и по бухучёту (например получить задание - настроить расчёт НДФЛ, потратить подня - высянить что это уже реализовано и внушить это заказчику, обучить заказчика этим пользоваться)
    И да, это всё в одиночку...никаких вам аналитиков, консультантов постановщиков задач, тех.писателей...и с зарплатой ниже обычного code-monkey
    ==
    советую идти в обычные программеры, и не соваться в этот желтый ад.
    и хотя и там есть очень интересные задачи, вы осложните себе переход в обычные программеры оттуда
    Ответ написан
    6 комментариев
  • Откуда пошла мания на Докер?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Докер - гораздо дешевле чем отдельные компы, дешевле чем VPS и даже дешевле виртуалок на своем VPS.
    Разворачивание докера гораздо быстрее, чем настройка новых компов, новыйх VPS и даже виртуалок на своем VPS.

    Но только для определенного рода задач.

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

    Ну и в конечном счете это просто инструмент - если ты им много пользуешься и привык, тебе будет просто удобно пользоваться им даже там, где вроде как и не обязательно.
    Ответ написан
    2 комментария
  • Как правильно называется вакансия?

    @protven
    Он на взлете (опять) зарубежом, используется как правило аналитиками (data scientist). Взлет связан в основном с хайпом вокруг анализа данных, машинного обучения и бигдаты. R очень хорош для быстрого прототипирования на небольшом наборе данных или уже для "окончательного" анализа и визуализации, опять же на небольшом или среднем наборе данных, которые прошли предварительную обработку и очистку. Много библиотек связанных с матстатистикой, машинным обучением, анализом данных, визуализацией. Оракл обещал вставить возможность писать хранимки на R в свою базу данных, но я не следил сделали ли.
    Я проходил в свое время курсы на Coursera по анализу данных, мне R как сам язык понравился средне. Сейчас идет конкуренция между R и питоном с библиотеками типа numpy, pandas, sklearn и тд за звание лучшего инструмента для анализа данных. Плюс есть вендорские инструменты, типа SPSS, которые предлагают ту же возможность.
    Что касаемо вакансий в вашем регионе, то они есть, но их мало. Вот пример https://hh.ru/vacancy/20496633?query=%D0%B0%D0%BD%...
    Я бы не стал расчитывать что в России вообще, а тем более за пределами Москвы вы сможете легко найти работу аналитиком данных, не имея реального опыта и успехов в этой области. Но, повторюсь, за рубежом профессия Аналитка Данных сейчас очень популярна и язык R часто считается одним из необходимых инструментов, которым он должен владеть (см. ремарку про питон).
    Ответ написан
    2 комментария
  • Нормально ли что без stack overflow не могу работать?

    DrunkMaster
    @DrunkMaster
    Нет, это не нормально. Сеньёры на стак ходят, но мало и редко, потому что часто мало людей которые знают ответы на их вопросы а ногда банально нельзя доверять квалификации человека, который тебе отвечает.
    Ответ написан
    4 комментария
  • Насколько у меня правильный код ООП php?

    @D3lphi
    Здесь плохо всё, к сожалению.

    Начнем с того, что вы неверно наследуете классы. Почему у вас класс, отвечающий за подключение к базе данных является родителем класса, работающим с заказами? Наследование применяется, если можно сказать, что что-то является чем-то. Например, разработчик является работником; компьютер является устройством и тд. Здесь же у вас вообще близко такой логике не получится следовать. Вы должны передавать хотя бы объект для работы с бд через инъекцию, например, в конструктор. В идеале, нужно использовать паттерн репозиторий для работы с базой данных.

    Класс SearchOrder у вас не только выполняет запросы, но еще и работает с данными, хранит состояние этих самых данных, фильтрует данные (strip_tags()). Непорядок. Это все нужно разделять. У вас вообще получаются какие-то богообъекты, которые умеют во все.

    Вы каждый раз повторяете строки с подготовкой запроса, биндингом параметров, отправкой запроса и тд. Не думали, что неплохо бы было написать какую-нибудь обертку и выполнять запросы как-нибудь так:
    $result = $wrapper->select("SELECT * FROM `tablename` WHERE `id` = :id", ['id' => 5]);

    ?

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

    Зачем вы используете свойства, если можно обойтись обычными локальными переменными:
    $this->orderID = (int) strip_tags($orderID);
    $this->column = (string) strip_tags($column);
    $this->value = (string) strip_tags($value);

    ?

    Почему вы стриппите тэги у идентификатора? вы настолько не уверены в том, что влетает в функцию:
    strip_tags($orderID);
    ?

    Если вы не используете php 7 и, как следствие, скалярный тайпхинтинг, то должны делать проверки на тип входящего аргумента. Если что-то не так с типом, бросаем исключение (А не приводим его к нужному)! Например:
    if (!is_string($arg)) {
        throw new InvalidArgumentTypeException('string', $arg);
    }

    Это в идеале. Вы не обязаны это делать, конечно же. Но вот такие проверки делают приложение безопаснее. Хотя, опять же, повторюсь, в 2017 нужно начинать новые проекты на php 7.1+.

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

    Кроме всего прочего, почитайте про стандарты оформления кода. Вы им не следуете.

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

    Желаю успехов!
    Ответ написан
    1 комментарий
  • Как вызвать метод?

    zagayevskiy
    @zagayevskiy Куратор тега Java
    Android developer at Yandex
    Если invoke() обязан быть интерфейсным методом, то видится такое решение:
    1) Интерфейс Invokable должен лежать в том же пакете, откуда он будет вызываться
    2) В этом же пакете нужно создать некий package-private класс (проще всего - enum) с одним-единственным инстансом:
    enum Lock { 
        LOCK;
     }

    3) в метод invoke передавать Lock:
    public static interface Invokable {
      public void invoke(@NonNull Lock lock);
    };

    4) В реализации дополнительно проверять переданный Lock на null
    5) В месте "правильного" вызова передавать: model.invoke(Lock.LOCK);

    Если метод invoke не обязан быть интерфейсным, то просто сделать его package-private и держать реализацию в том же пакете.

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

    Melkij
    @Melkij
    PostgreSQL DBA
    Безопасный подход для больших таблиц:
    create unlogged table list_for_delete (id int);
    insert into list_for_delete values ....
    
    with to_rm as (
        select id from list_for_delete limit 10000
    ), rm as (
        delete from list_for_delete where id in (select id from to_rm)
    )
    delete from tablename  where id in (select id from to_rm);
    
    vacuum analyze tablename;
    drop table list_for_delete ;

    cte с delete повторять пока не будет affeted rows = 0. Смотреть на лаг репликации, добавлять задержки между запросами и увеличивать/уменьшать размер пачки в зависимости от влияния на прод.
    vacuum в конце, можно после половины пройтись дополнительно. С таким-то объёмом можно руками вакуум вообще не делать и оставить автовакууму. А для таблиц побольше при массовом изменении имеет смысл.
    Ответ написан
    Комментировать
  • Как люди остаются незамеченными для ИК-КАМЕР?

    longclaps
    @longclaps
    Если сохраняешь хладнокровие - ИК-камеры тебя не заметят.
    Ответ написан
    Комментировать