• Для чего нужен return?

    mmmaaak
    @mmmaaak
    а всего-то нужно знать английский уровня 5 класса, return - значит возвращать, несложно догадаться, что эта конструкция указывает на то, что именно функция вернет в результате своей работы, а *res* там или 0 не важно: в случае с С++ главное, чтоб компилятор одобрил это значение на соответствие указанному возвращаемому типу
    Ответ написан
    Комментировать
  • Как узнать находится ли число, рядом с другим определенным числом в матрице?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    1. У матрицы 16x16 центр находится между ячейками, туда невозможно записать число.
    2. Определитесь, что значит "рядом". Если это только четыре соседних клетки, то значит |i1-i2|+|j1-j2| = 1, если допустимы диагонали, то |i1-i2|+|j1-j2| > 0 && |i1-i2| <= 1 && |j1-j2| <= 1
    Ответ написан
    Комментировать
  • Как узнать находится ли число, рядом с другим определенным числом в матрице?

    @Nwton
    x - столбец
    y - строка

    Вы ставите 1 не в сферическом центре, а в ячейке с индексом 3; 3
    Далее генерируете рандомный индекс, например, 4; 3
    Если вы знаете оба индекса, в чем сложность просто их сравнить?

    Навскидку, если |x2 - x1| < 2 и |y2 - y1| < 2, то индекс установлен вплотную.
    Ответ написан
    Комментировать
  • Как вы понимаете (исходя из своего опыта), что на заказ (на фрилансе) откликаться не стоит?

    dmitry_pavlov
    @dmitry_pavlov
    World-class .NET freelance contractor (remotely)
    Если клиент на предложение подписать контакт или обсудить объем работы, эстимейты, детали оплаты (сроки, способ перевода) отмахивается или не предлагает обсудить это потом, скорей всего это вызовет проблемы.

    Я также отказываюсь когда клиент не может объяснить чего он хочет, потому что я точно не смогу сделать то, сам не знаю что :) и когда дойдет дело до деталей - будет спор, который на удаленке часто кончается разрывом отношений и обычно без оплаты :)

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

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

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

    Если просто в общении клиент неадекватен. При удаленной работе проблемы в общении повлекут за собой проблемы во всем.
    Ответ написан
    Комментировать
  • Как вы понимаете (исходя из своего опыта), что на заказ (на фрилансе) откликаться не стоит?

    customtema
    @customtema
    arint.ru
    1. Заказчик не компетентен. Это частое явление, и часто бывает заметно сразу. Иногда бывает не заметно, и впоследствии приходится страдать от такой невнимательности.
    2. Заказчик не адекватен. Начиная от неадекватной стоимости работы, заканчивая грамматическими ошибками в письме. Чем бы эти ошибки не оправдывались, хоть насыоналныст - в 100% случаев они являются приметой предстоящих проблем.
    3. Заказчик слишком подробно указывает требуемый стек технологий. Обычно это следствие из предыдущих пунктов, плюс неопытность.
    4. Опять же следствие из предыдущих пунктов, размещается заявка на разработку (именно программирование), а прописанные требования относятся к дизайну, при этом логика описана недостаточно подробно. Пытался общаться с такими - как правило, бессмысленно. Задаю вопросы, чтобы сформировать ЧТЗ, но ответов не получаю. Они вот так "экранами" и думают.
    Ответ написан
    Комментировать
  • "Большой Брат" в офисе, за интернет-трафиком следят. Как можно обойти эту систему?

    martin74ua
    @martin74ua Куратор тега Компьютерные сети
    Linux administrator
    Как администратор - могу дать только такой совет. Или работайте по установленным правилам, или не работайте там совсем. Если вы будете обходить систему - тем самым вы привлечете к себе внимание, и если возникнут какие то вопросы и проблемы - вы будете одним из первых подозреваемых. Если вы все шифруете - аналогично. На работе - работать.
    Ответ написан
    3 комментария
  • C++. Отношения наследования в ООП. Что чему соответствует?

    MrNexeon
    @MrNexeon
    1. is-a - наследование

    class Car : public Vehicle {
     // автомобиль является транспортом
    };

    2. has-a - отношение типа "композиция"

    class Car {
     Engine v8; // автомобиль имеет (содержит) двигатель
    };

    3. uses-a - отношение типа "агрегация"

    class Driver {
     Car* myCar; // водитель использует автомобиль
    };

    4. is-like-a

    class Square : public Figure;
    class Rectangle : public Figure;
    // квадрат и прямоугольник похожи по свойствам, но это разные фигуры


    5. is-implemented-as-a

    class Engine { // абстракция
    public:
     virtual void start() = 0;
    protected:
     float power;
    };
    
    class V8 : public Engine { // реализация
     virtual void start() {
      // wroom wroom
     }
    };
    
    // Двигатель ДВС реализован как 8-ми цилиндровый двигатель V-конфигурации
    Ответ написан
    Комментировать
  • Вопрос про ООП, как использовать?

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

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

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

    Аналогично, если всю галерею представить как объект, можно работать с ней через её методы, например, получить список всех изображений через getAllImages(), выбрать только популярные через getPopularImages() или реализовать более мощную функцию с возможностью отбора по параметрам getImages($params), добавление новых изображений через addImage($img) (при этом в коде галереи будет содержаться весь код, необходимый для сохранения изображения в БД и на диске, формирования статической ссылки и всё такое прочее.

    Можно создать несколько галерей простым вызовом new MyGallery() и быть 100% уверенным в том, что галереи никак не будут мешать друг другу в работе.

    Научитесь думать в ООП-стиле и ваша жизнь в корне изменится.
    Ответ написан
    Комментировать
  • Почему большинство фрилансеров не принимают Вебмани?

    T_y_l_e_r
    @T_y_l_e_r
    !!! ВОТ ПОЧЕМУ
    https://plusiminus.com/webmoney-otzyvy.html

    Деньги не вывести, закинуть в 2 счета.
    Арбитраж тупо блокирует деньги, телефоны и прочее.
    У меня был персональный аттестат, это когда ездил к аттестатору и заключал договор и платил деньги.
    В общем счете лет 5 работал через их систему, оплачив телефоны счета, ну все самое обычное.
    В итоге заблочили полностью без причин.
    А дело было так, вначале заблочили, потом написали о происхождении средств, работал на фрилансе, мне скинули деньги с комментом за фриланс.
    Я написал что с фриланса, естествнно, я вначале пытался отвечать на тупые вопросы, но потом мне стали тыкать в пункт ихнего договора (шла вторая неделя переписки), что оказывается, вебманями нельзя пользоваться ни для чего кроме как оплаты своего телефона, телевизора интернета, получается что так, потому что у них пунктов так много, что выходит что вообще я не имею права распоряжаться своими деньгами.
    Я этих дибилов сразу послал, опираясь на договор и его пункты.
    Они попукали-попукали и от обиды почесав жажопень решили заблокировать все, даже мой телефон, на него не закинуть денег через любые вебмани теперь.
    Ну и хрен с ними, в общем счете уперли у меня 20 000 р. с моего счета.
    И это только моя история, у знакомых тоже самое.

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

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

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

    Вот взять допустим яндекс деньги.
    Я уж не помню когда я последний раз пользовался их кошельком - в смысле именно кошельком, а не картой.
    У меня карта от яндекс денег, и все движения по ней идут. Сам кошелек как таковой практически не используется, за исключением редких случаев.

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

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

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

    Serj-One
    @Serj-One
    i'm sexy and i know it
    С развитием онлайн платежей по банковским картам кошельки WM стали неактуальны. Почти никто уже не пользуется, и заводить только ради вас не будет.
    Ответ написан
    Комментировать
  • Куда стремиться PHP программисту?

    riky
    @riky
    Laravel
    постараться понять смысл жизни и ответить на вопрос "есть ли жизнь после смерти?"

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

    так вот представь себя после и ответь: что было действительно важно?
    Ответ написан
    4 комментария
  • Куда стремиться PHP программисту?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    Мир бекенда широк и необъятен, зачем распылять усилия на фронтенд? Углубляйтесь, учите другие языки, изучайте другие бд и т.п.
    Ответ написан
    Комментировать
  • Как вы понимаете (исходя из своего опыта), что на заказ (на фрилансе) откликаться не стоит?

    @McBernar
    С опытом приходит понимание, когда из различных мелочей можно представить себе будущий проект.

    Например, клиент спамит сообщениями (вываливает весь свой поток мыслей в чат). Очевидно, что такое же поведение будет и на проекте — бесконечные идеи и переделки.

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

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

    Есть категория клиентов, которые думают, что пришли на рынок рабов. Ну или на Хитровку начала 20 века, где собирались все беднейшие слои Москвы, чтобы наняться на черновую работу за гроши. Такие, знаете, сами себе царьки. Не спустятся с трона, чтобы нормально ответить на ваши вопросы и не примут ни одной вашей "жалкой" идеи.

    Много всяких персонажей ) Это же жизнь. Опять же, повторюсь, с опытом придет понимание, когда вы с первых минут беседы уже поймете — что за человек перед вами.
    Ответ написан
    Комментировать
  • Как вы понимаете (исходя из своего опыта), что на заказ (на фрилансе) откликаться не стоит?

    @ehs
    Architect / 3d designer
    Есть еще хороший маркер - заказчик думает что лучше вас знает как делать работу, как частный случай - "This will take no more than an hour for a good professional"
    Ответ написан
    2 комментария
  • Заказчик игнорирует. Браться за новый проект?

    @malbaron
    Заказчик может быть в больнице или т.п.
    Вполне уважительная причина.

    Но с другой стороны - тебе же кушать нужно каждый день, а не через день.
    Я бы взял уже другой.

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

    @xfg
    Существуют принципы проектирования позволяющие отделять бизнес-логику от хранения. Тесты будут лаконичные и наименее ломкие. Когда невозможно, мокают методы для работы с бд.

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

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

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

    Если вы будете покрывать тестами всё, что только можно, я вам гарантирую, вы через месяц начнете выкатываться в продакшн с красными тестами.
    Ответ написан
    2 комментария
  • В каких случаях оправдано использование global внутри функции?

    gobananas
    @gobananas
    finishhim.ru
    Ни в каких )) На то она и функция, передайте в неё, в чём проблема. Вы потом удалите эту переменную в global ведь на первый взгляд она нигде не используется...
    Пишите тогда уж весь код в global если скрипт небольшой.
    Ответ написан
    2 комментария
  • Как писать много кода, оставляя его простым, как в начале?

    @dmz9
    не знаю зачем тут пацаны советуют чистый код Р. Мартина
    https://www.ozon.ru/context/detail/id/5011068/
    вот что нужно на замену
    https://www.ozon.ru/context/detail/id/138437220/
    есть обе у меня, но красненькую купил раньше. в ней больше информации как внешне так и по сути.

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

    во многих конвенциях о code-style указываются очень грамотные вещи, и они не просто так там находятся. в общем смысл такой - код должен быть самодокументируемым/самоописательным, а комментарии к коду не должны быть в стиле "моё почтение, капитан!".
    • код должен напоминать хорошую прозу.
    • комменты описывают намерение (зачем?) а не реализацию (как?).
    • прими во внимание время жизни переменной. чем ближе переменная к "месту военных действий" тем лучше. перекликается со временем жизни переменной - чем быстрей "умирает" тем лучше, часто можно даже без переменной обойтись не в убыток читаемости.
    • люди советуют тут ограничиваться конкретным числом строк. имхо - вредный совет. метод не должен ограничиваться. метод должен быть такой длины, которая требуется. иногда без "супер-методов" не обойтись (это не о функциях на 100500 входящих параметров), невозможно просто разбить тяжелую функцию на более мелкие куски, не умножив число запоминаемых переменных/других методов. метод может быть в 3 строки, может быть даже в одну, а может быть в сто-двести строк и более. если из метода ничего нельзя выбросить и нечего добавить - значит он в точности занимает столько сколько нужно.
    • многословие приветствуется но без фанатизма. машине почти всё-равно какой длины у тебя функция (если вы понимаете о чем я), а для тех кому нет - есть минификаторы (для js например)
    • название метода должно однозначно говорить о его назначении. спрашивай себя - зачем этот метод? зачем это свойство? если ты не можешь ответить значит и запомнить/вспомнить не сможешь, значит у метода/свойства нет конкретного предназначения и потом (через какое то время) будет сложно разобраться для чего он вообще нужен.
    • визуально отделяй приватные/публичные методы. это тоже некоторая подсказка которая помогает разбираться в коде.
    • следуй одному стилю как минимум в отдельно-взятом файле. (кемелкейс отдельно, лодаш отдельно).
    • следуй принципу наименьшего удивления (программиста). т.е. поменьше роялей в кустах
    • соблюдай абстракции. если класс это не просто набор статичных методов - значит он описывает какие то действия вполне определенного объекта. не раздувай и не разбивай на несколько классов одну цельную и четкую абстракцию. это поможет сосредоточиться на отдельном куске кода в один момент.
    • старайся не писать рядом в одном классе методы, которые "проникают" во все аспекты приложения (антипаттерн - суперкласс/божественный объект).


    вообще стоит почитать про паттерны и антипатеррны, это конечно не библия но знать хотя бы основные стоит.
    Ответ написан
    2 комментария