• Как поступить с заказчиком?

    @vism
    А заказчик то причем.
    Это ты оценил проект
    Это ты продолбал уточнения по ТЗ
    Заказчик не должен разбираться в том, как тебе ТЗ составить. Ты должен добиться верного полного ТЗ для тебя. Чтоб ты оценил верно.

    Заказчик вобще не знает что ты там делал, ему сказали цену, он согласился.

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

    Щас ты ведёшь себя как строители-кидалы. Которые берутся за ремонт квартиры/стройку дома, а посреди процесса говорят - доплачивай ещё 30% или уйдём. Уйдём = сгнивший дом.

    Вобщем если у тебя ещё осталось что-то честное и человечное, прими свою отвественность, доделай проект и дальше продумывай свои действия и решения наперёд, продумывай риски и страхуйся от них.
    Но не будь, не будь очередным кидалой, который объяснил себе почему "он прав".

    P.S.
    Если этот проект
    https://qna.habr.com/q/1159728
    То вобще стыдно должно быть от таких мыслей.
    Заказчик то ждет от вас хорошую работа наверное, а вы на нём учитесь. Вы уйдёте, а он потеряет и время, и деньги. Мде...
    Ответ написан
    Комментировать
  • Как поступить с заказчиком?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Вы ведь сами понимаете, что это ваш косяк, а не заказчика? А чего ему за него платить?

    Мне прям вспомнилась ситуация, когда я пришёл к стоматологу вылечить кариес (пусть будет 2 000 рублей), мне рассверлили весь зуб и заявляют "батюшки, да тут же пульпит!" (12 000 рублей).
    Помогите Маше найти фразу для стоматолога, которая позволила бы сохранить хорошие отношения.

    И вот вы сейчас, по прошествии 2 месяцев, оставите заказчика один на один с незавершённым проектом, в котором никто не разберётся (то есть по сути ни с чем) - то вы поступаете как чудак. Я же вижу по тексту, что понимаете.
    А сюда вы за индульгенцией пришли? :)

    Хотите "сохранить отношения" - доделывайте как есть, в будущем будете мудрее.

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

    Два совета на будущее:
    1) Перезакладывать стоимость и время разработки;
    2) Если понимаешь, что всё идёт не по плану/пропал интерес / слишком сложно / некомфортно / whatever - сказать об этом сразу и отказаться от проекта, так всегда получается честнее

    Опыт всегда стоит дорого, а 53 000 рублей - ну не самая большая цена его получения :)
    Ответ написан
    8 комментариев
  • На каком сайте останется клиент, быстрый или красивый?

    vabka
    @vabka Куратор тега Веб-разработка
    Токсичный шарпист
    То что вы назвали не является решающими критериями.

    Для практически любого продукта, включая магазин будут справедливы такие критерии:
    1. УТП. В случае магазина - это ассортимент, цены, скорость доставки, доступность, и поддержка после покупки. (Какими-то можно жертвовать в пользу других)
    2. UX. На сколько очевиден для клиента интерфейс, на сколько субъективно быстро и удобно в нём работать, на сколько легко допустить фатальную ошибку.
    3. Визуальный дизайн, который на функцию не влияет и не даёт пользователю дополнительную информацию. Это всякие излишние анимации и спецэффекты.

    Красота и скорость - штуки субъективные и могут как оттолкнуть, так и привлечь покупателя в любой комбинации. Всё зависит от ЦА.
    Есть примеры, когда тормозящий сайт с дизайном а-ля 90-е начало 2000-х был успешней, чем конкуренты с современным дизайном. Просто из-за привычек ЦА и доверия

    Я бы для начала сделал "как проще", а потом уже экспериментировал со скоростью загрузки и украшательствами.
    Ответ написан
    2 комментария
  • Указатели в языке Си?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    почему программа завершилась? Вмешалась ОС? Но если так, то почему?

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

    Почему я не могу поменять значение самого указателя (ведь указатель - это всего лишь ссылка на адрес памяти, а не на значение).

    Значение указателя ты поменять можешь, но это не то, что было написано в коде. В коде было написано поменять значение на которое указатель указывает. Поменять указатель было бы a = (int *)10;

    могу ли я указателю дать ссылку на конкретную ячейку в памяти?

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

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

    В памяти всё хранится как последовательность байтов. Любую последовательность байтов можно проинтерпретировать как указатель. Но чтобы компилятор С понял что ты имеешь в виду, ему надо явно сказать, что ты хочешь проинтерпретировать целое число как адрес: int *a = (int *)0x0061FF18;
    Ответ написан
    Комментировать
  • В каких ЯП мало или вообще нет фреймворков?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    В результате всего этого ты вроде и работаешь и вроде как бы опыта набираешься, а по факту знания весьма поверхностные, зачастую после полугода вообще забываются некоторые вещи.
    На самом деле - и да и нет.
    Во первых - 90% фреймворков похожи как родные братья, отличие в десятке настроек и чуть разном подходе к передаче параметров, ну +- десяток нюансов. Вникнуть в них вполне реально за приемлемое время.

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

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

    Ну и анек в тему:
    HR:
    - Вы нам не подходите. Нам нужны молодые, амбициозные, способные творчески расти!
    Пожилой прогер:
    - Запишите мой телефон. Когда выяснится, что у вас все амбициозно растут, а работать некому - позвоните!
    Ответ написан
    7 комментариев
  • Что означает -'0' на C?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Это вычитание значения '0' из значения str[j]. И то и другое - символы, они же char. В языке Cи, это целочисленный тип. Просто каждому символу дается его ascii код.

    Тут это используется для получения численнного значения цифры из ее символьного значения, ведь символы '0'-'9' в ascii идут подряд в натуральном порядке.
    Ответ написан
    Комментировать
  • Как сделать 2 слова не делимыми?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Вставить неразрывный пробел.

    Как-то так, примерно
    $string = preg_replace('/(г\.)\s([А-ЯЁ])/ui', '$1 $2', $string);
    Ответ написан
    4 комментария
  • Как сделать 2 слова не делимыми?

    Fragster
    @Fragster
    помогло? отметь решением!
     
    Ответ написан
    Комментировать
  • Как написать свою собственную операционную систему под кнопочный телефон?

    mayton2019
    @mayton2019
    Bigdata Engineer
    До того как писать нужно знать хотя-бы примерно архитектуру самого телефона. Какой процессор стоит? Какая разрядность? Где найти документацию на систему команд? Где найти ассемблер? Или Си? Где эмулятор чтоб потестировтаь? Как залить прошивку? Это вообще отдельный челледж. Возможно старые модели этого и не позволяли и надо брать паяльник чтобы снять эти барьеры.

    Вобщем перед тем как писать ОС надо пройти этот вопросник и отметить что есть.
    Ответ написан
    4 комментария
  • Js массив как прописать return?

    Dr_Elvis
    @Dr_Elvis
    В гугле забанен
    А почему бы не объединить списки?
    module.exports = function toReadable (number) {
        let a = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine','ten', 'eleven','twelve','thirteen', 'fourteen','fifteen','sixteen', 'seventeen','eighteen','nineteen'];
        if (0 <= number && number < 20){
            return a[number];
        }
    }


    ну или если нужно именно 2 списка, то
    module.exports = function toReadable (number) {
        let a = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'];
        let b = ['ten', 'eleven','twelve','thirteen', 'fourteen','fifteen','sixteen', 'seventeen','eighteen','nineteen'];
        if (0 <= number && number <= 9){
            return a[number];
        }
        else if(10 <= number && number < 20){
            return b[number-10];
        }
    }
    Ответ написан
    5 комментариев
  • Не форматирует код eslint?

    Fragster
    @Fragster
    помогло? отметь решением!
    Придется понажимать кнопки самому
    s6rATkV.png
    https://eslint.org/docs/latest/rules/
    Ответ написан
  • Как запустить .cs файлы без компиляции в exe?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Знаю, что .php файлы можно запустить без компиляции, закинув какую-то папку с файлами на диск с

    Потому что php - интерпретируемый язык.

    Каким образом я могу запускать .cs файлы без компиляции/ide?

    Никак, так как C# - компилируемый язык.
    Чисто теоретически ты можешь использовать C# Interactive, но там всё достаточно специфично и ограниченно.
    Ещё ты можешь компилировать C# из консоли через dotnet SDK
    Ответ написан
    Комментировать
  • Как остановить проверку?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Ваш код очень бажный. Во-первых, вы не проверяете результат выполнения indexOf и проверка работает ровно наоборот. Во-вторых, значение поискового поля вы добавляете не в виде get-параметра, а прямо в тело адреса, что снова делает предыдущую проверку нерабочей. Ну и наконец, даже если всё это исправить, у вас всё равно будет баг - любой get-параметр, название которого заканчивается на "q", будет попадать под условие и подстановка не произойдёт.

    Максимально тупое решение в лоб с перезагрузкой страницы:
    if (
        window.location.search.indexOf('?q=') === -1 &&
        window.location.search.indexOf('&q=') === -1
    ) {
        window.location.search += (window.location.search ? '&' : '?' ) + 'q=' + searchInput.value;
    }


    В современном же js есть куда более удобные инструменты для решения этой задачи:
    https://developer.mozilla.org/en-US/docs/Web/API/U...
    https://developer.mozilla.org/ru/docs/Web/API/Hist...
    Ответ написан
    Комментировать
  • Как взаимодействовать 2 языкам?

    vabka
    @vabka
    Токсичный шарпист
    Три буквы. FFI
    Ответ написан
    Комментировать
  • Как отправить вывод терминала в телеграм?

    @luaPower
    1) В переменную будет записан весь вывод программы, вплоть до того момента, пока не будет получен код возврата.

    2) https://en.wikipedia.org/wiki/Percent-encoding
    Ответ написан
    7 комментариев
  • Как "починить" проводник в windows 10?

    @kalapanga
    Вопрос такой уже здесь был, возможно уже и не один раз. Поищите, какие там были решения.
    Я советовал проверить контекстное меню Windows (для этого можно специализированные утилиты найти).
    Был подобный эффект при "битых" пунктах меню. Случайно при каких-нибудь сбоях образовавшихся или, например, оставшихся после некорректного удаления программ, или просто корявых программ, при удалении не убирающих за собой мусор.
    Ответ написан
    2 комментария
  • Двойной слеш вместо одного?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    let str = 'D:\number\folder';

    в этой строке уже нет слешей. Тут есть "\n" (новая строка) и "\f" ещё какой-то спецсивол. Просто выведите str без изменений, чтобы убедиться.

    По-хорошему, в исходной строке слеши уже должны быть экранированы ("escaped")
    let str = 'D:\\number\\folder';

    Откуда берёте эту строку? Дело в браузере или в NodeJS? Если в Node – можно использовать модуль Path – он умеет работать с путями и использовать правильный разделитель, в зависимости от платформы Windows / ???
    let str = path.join('D:', 'number', 'folder');
    Ответ написан
    Комментировать
  • Rust мёртв, или только развивается?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    на данное время крупных проектов использующие его (кроме дискорда) нет

    Чеееегооо? Mozilla очень активно использет Rust, активно идут обсуждения о том, чтобы переписать ядро Linux на Rust, да огромное количество как новых, так и старых проектов используют Rust. Это один из самых быстрорастущих языков.
    Ответ написан