• Где посмотреть идеи для проекта OpenSource?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Если часто встречаете вопросы "Что написать" на форумах, то это не значит, что задающие их люди способны что-то написать. Скорее наоборот.
    Уже есть в сети всякие там кикстартеры. шде люди ищут финансирование для своих проектов, а также есть гитхаб, где люди могут собраться в работе над опенсорс-проектом и поработать.
    Если нет какого-то известного сайта, знакомящего разработчиков и пользователей, дающего им пообщаться, то это всего лишь означает. что разговаривать им не о чем.
    Людей на планете дофигища и всем сто-то нужно в той или иной степени. Идей масса, продуктов платных и бесплатных разного качества тоже полно, зато людей, которым вообще пофигу что писать, причем забесплатно, видимо, раз, два и обчелся. Не наберётся их на целую социальную сеть.

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

    Зачем делать социальную сеть, которая даёт то. чего и так навалом? Она никому не нужна.

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

    Так какой смысл прятать идеи. если выгоднее ими делиться?!
    В общем за идеями приходите, рассказывайте что интересно - накидаем.
    Ответ написан
    Комментировать
  • Как расставить точки над i, по вопросу использованию Bash и Python для DevOps?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Вы не годитесь в девопсы.
    Это очень частый ответ на этот очень частый вопрос.

    Девопс - это человек, который не задаёт вопросы. Он на них отвечает. Самостоятельность является для девопса одним из ключевых навыков. У вас он отсутствует.
    И это совершенно точно человек, которого НЕ пугает прочтение 326 страниц мануала.
    Девопсу приходится читать примерно в сто раз больше документации. В год. Подумайте хорошенько, а надо ли оно вам, если перспектива выучить даже самые примитивные основы вас пугает настолько, что вы пришли на тостер поторговаться?

    В девопс, как и в инфосек, очень редко можно войти с нуля.
    Надо начинать либо сисадмином (не эникейщиком), либо программистом (не вордпресс).
    И потом, уже развившись как программист/сисадмин, можно подумать о движении в сторону девопса.
    Ответ написан
    2 комментария
  • Какой дефолтный пароль от ubuntu 20.04?

    @pfg21
    ex-турист
    как и обычно, посмотреть документацию яндекса. первый же ответ на поиск "виртуальная машина яндекс пароль"
    https://cloud.yandex.ru/docs/compute/operations/im...
    В публичных образах Linux, предоставляемых Yandex.Cloud, возможность подключения по протоколу SSH с использованием логина и пароля по умолчанию отключена.


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

    @res2001
    Developer, ex-admin
    Например:
    atoi(ex.c_str())+atoi(ex.c_str())
    это выражение 2 раза преобразует в число одну и ту же строку, а затем складывает эти 2 одинаковых числа.
    Так что "не дублирует", а выполняет то что написано у вас в коде.

    Вам нужно сначала разделить строку на "токены", т.е. на операнды и операции.
    Если вы на этом этапе расчитываете обрабатывать только простейшие действия, то вводите строку и разбиваете ее на 3 токена. Затем операнды преобразуете в числа и после этого уже выполняете действие.
    Ответ написан
    Комментировать
  • Как исправить ошибку Class does not comply with psr-4 autoloading standard. Skipping?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    было бы странно, если бы ВК допустили ошибку там
    И тем не менее, произошло именно это.
    Как должно быть: https://github.com/VKCOM/vk-php-sdk/blob/master/sr...
    Как в ошибочном классе: https://github.com/VKCOM/vk-php-sdk/blob/master/sr...

    И им об этом даже уже написали: https://github.com/VKCOM/vk-php-sdk/issues/99
    И даже фикс полтора года назад предложили: https://github.com/VKCOM/vk-php-sdk/pull/79

    Используйте, короче, исправленный форк: https://github.com/rusan/vk-php-sdk
    Ответ написан
    4 комментария
  • Реализация стека на python?

    @deliro
    list — это уже самый классический стек. добавление в конец за O(1). удаление с конца тоже за O(1)
    Ответ написан
    Комментировать
  • Есть ли смысл изучать мобильную разработку в ближайщие 10 лет?

    @evgeniy_lm
    Прочитайте рассказ А. Азимова "Профессия" там ответ на ваш вопрос
    Ответ написан
    1 комментарий
  • Можно ли обратиться к статическому полю шаблона класса без инстанцирования шаблона?

    @sergiodev
    class CircularBufferBase
    {
    public:
        static const int32_t MEMBER_TO_BE_ACCESSIBLE_OUTSIDE = 0;
    };
    
    template <typename T, int32_t maxSize>
    class CircularBuffer : public CircularBufferBase {
        ...
    }


    CircularBufferBase::MEMBER_TO_BE_ACCESSIBLE_OUTSIDE
    Ответ написан
    1 комментарий
  • Как быстро и надежно закрывать задачи по сайту не нанимая программиста?

    nowm
    @nowm
    Могу ответить с точки зрения фрилансера:

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

    Вот несколько советов, которые помогут улучшить «возвращаемость» фрилансеров:
    • Чаще всего фрилансер готов делать работу сразу (особенно когда работает с вами первый раз), он показывает рвение и очень быстро всё делает. С вашей стороны ожидается, что вы можете оплатить работу мгновенно после того, как всё сделано и проверено как фрилансером так и вами. Если вы скажете фрилансеру, что вам нужно некоторое время, чтобы дойти до банкомата и пополнить счёт, потому что прямо сейчас не можете заплатить, это очень сильно испортит впечатление, и с большой вероятностью человек не покажет виду, спокойно без психов подождёт, когда вы ему заплатите, но в следующий раз работать с вами больше не будет. Фрилансер готов работать сразу, значит и вы должны быть готовы платить сразу.
    • Если у вас низкая техническая подготовка, и фрилансеру приходится кроме самого кода очень много общаться с вами на тему, что именно нужно делать, желание работать дальше тоже пропадает. Чем меньше требуется обсуждений и созвонов в мессенджере, тем больше веротность, что фрилансер и дальше будет с вами работать. Фрилансеры обычно не считают переписку частью оплачиваемой работы и, соответственно, чем больше времени будет занимать переписка, тем меньше будет желание продолжать работу. Фрилансер обычно хочет сразу делать работу и не отвлекаться на всякую бесплатную болтологию.
    • Если фрилансеру нужно заниматься в дополнение администрированием вашего сервера, а это заранее не обговаривалось, это тоже может испортить впечатление. Часто заказчики пишут, что им нужно поправить менюшку на сайте, а это в итоге превращается в правку менюшки, а потом залитие кода на сайт, настройка и перезапуск сервера и ещё какие-то подобные работы, которых в задании не было вообще. И, скорее всего, вы считаете само собой разумеющимся, что фрилансер должен уметь это делать, и думаете, что это нормальная практика, если он в дополнение к кодингу будет делать ещё и это. Дополнительно, если эти моменты ещё и не оплачиваются, шансы, что люди захотят с вами работать и дальше, снижаются ещё сильнее.
    • Некоторые заказчики любят показывать свой авторитет. Запомните, что для фрилансера вы не начальник, а равноправный партнёр, и он ждёт от вас соответствующего уровня общения. Если вы строите из себя начальника, люди будут придумывать любые отмазки, но повторно работать не станут.


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

    @Stalinko Куратор тега Фриланс
    PHP'шник и фрилансер до мозга костей
    Я пишу со стороны программиста. У меня есть ряд старых клиентов, которые иногда просыпаются и просят что-то доделать. Стараюсь найти для них время и помочь.

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

    Тут есть один момент - разработчику обычно несложно взять подработку 5-10 часов в неделю. Но не стоит ждать, что человек всё бросит и всю неделю будет фулл-тайм колбасить ваши задачи. Если вы хотите, чтобы сделали большой объём быстро, тогда придётся каждый раз нанимать по новой. А если сможете разбить объём на маленькие части, которые можно делать, не отрываясь от основной работы, то вам должно быть по силам нанять такого человека.
    Ответ написан
    1 комментарий
  • Как передать массив в функцию С++ ( пишет no matching function to call)?

    @res2001
    Developer, ex-admin
    Написал опус на вопрос, который вы удалили, хорошо сохранился в буфере обмена :-) а то было бы обидно.

    Ваш массив пожно просто привести к указателю, по старинке (int*)a или используя касты.

    Но у вас тут на самом деле 2 проблемы.
    Первая - обращение к элементам массива в average используя [i][j]. Вторая - VLA.
    По первой проблеме:
    В С/С++ оператор индексации (array[i]) выполняет следующее действие: *(array+i).
    Отсюда должно быть понятно, что раз array у вас это int*, то после array[i] вы получите int, от которого уже нельзя взять второй индекс, т.к. это просто 1 int, а не массив.

    Отсюда есть несколько выходов:
    1. дурацкий (самый долгий по исполнению и затратам памяти): использовать динамический массив массивов
    Выглядит примерно так:
    int **array = new int*[rowCount];
    for(int i=0; i < rowCount; ++i)
       array[i] = new int[colCount];

    Как видите array превратился в двойной указатель, теперь каждый элемент в первом измерении - это указатель на одномерный массив. Всего у вас получается rowCount + 1 выделений памяти. Не забудьте столько же раз вызвать оператор delete.
    В average теперь передавайте int** и у вас будет работать оператор [][], т.к. первая индексация уже будет возвращать int*.
    Не рекомендую использовать этотт способ.

    2. Вычислять индекс массива вручную (не использовать индексацию):
    *(array + i*colCount + j)
    Это такой хардкорный стиль. Но зато работает быстро и масштабируется на массивы любой размерности без особых проблем.

    3. использовать std::vector<std::vector<int>> - это то же самое, что и вариант 1, но закамуфлированный под вектор :-)

    Вторая проблема это VLA (Variable Length Array).
    Статические (автоматические) массивы в С++ вы можете определять, только константным размером (размером известным на этапе компиляции).
    У вас же размерность массива динамическая (вводится пользователем во время выполнения программы). Отсюда следует, что вы должны использовать динамические массивы, выделенные с помощью new.
    В стандарте С++ нет VLA. VLA есть только в Си и то начиная с С99.
    Ваша функция task3 компилируется, только потому что в gcc/clang по умолчанию включены расширения. В расширения входит так же и возможность использовать VLA. Если задать опциями более строгое соответствие стандарту С++, то функция не соберется.
    И кстати, например в микросовтовский компилятор VLA до сих пор не завезли.

    Но если уж у вас есть VLA, то вы можете преобразовывать указатель в VLA массив с помощью такой кучерявой конструкции:
    int (*array2)[colCount] = (int(*)[colCount]) array;

    В этом случае обращаться к элементам массива можно как обычно через двойную индексацию: array2[i][j]
    Когда-то делал тест на эту тему: https://ideone.com/4i6lRw
    Кстати, если в average сначала передать размерности, и последним параметром массив, то по идее массив можно сразу объявить двумерным, используя ранее переданные размерности:
    void average(int rowcount, int colcount, int aarray[rowCount][colCount])

    Это то же VLA.

    Вообще не рекомендую в С++ использовать VLA, т.к. программа становится не переносимой и зависимой от компилятора.
    Ответ написан
    4 комментария
  • Как будет правильней?

    rozhnev
    @rozhnev Куратор тега PHP
    Fullstack programmer, DBA, медленно, дорого
    Уважаемый, Вам нужно изучать основы MySQL. Ваша задача решается одним запросом и 3-мя строками кода.

    <?php
      $query = "SELECT  DATE(`time`) `Day`, SUM(`Profit`) `DaylyProfit`
    			FROM `history`
    			WHERE  `type` = 1 AND `time` > DATE_SUB(CURRENT_DATE, INTERVAL 6 DAY)
    			GROUP BY `Day`
    			ORDER BY `Day` DESC;";
    
    $result = $mysqli->query($query);
    
    $all = $result -> fetch_all(MYSQLI_ASSOC);
    
    
    echo json_encode($all);


    Test PHP MySQL online
    Ответ написан
    1 комментарий
  • Почему выдает ошибку при загрузке фотографии?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    То, что папка images находится в папке с product.php, не имеет вообще никакого значения.
    product.php не имеет отношения к работе веб-сервера. из неё просто читается код класса.

    При этом путь images/ является относительным. То есть, в зависимости от точки входа может вести в совершенно разные места.
    Именно поэтому все пути всегда должны быть абсолютными. Пусть даже и с помощью костыля __DIR__
    Ответ написан
    2 комментария
  • Стоит ли учить Boost в 2021 году?

    @res2001
    Developer, ex-admin
    Вполне востребованная библиотека.
    Но учить не стоит. Стоит знать, какие возможности она предоставляет и как ее исопльзовать в своем проекте. Сделать пример с какими-нибудь достаточно сложными компонентами буста, например asio.
    Ответ написан
    Комментировать
  • Что изменить в базе данных?

    @ComodoHacker
    Ошибка первая — не понятно, какую задачу она должна решать. "Получить зачет"?
    Ответ написан
    Комментировать
  • Правильно ли я понимаю что такое Язык программирования?

    GavriKos
    @GavriKos
    Нет, неправильно.
    Во первых - язык это не текстовый файл. Это набор правил (синтаксических, семантических), лексем и прочего.
    Во вторых процесс компиляции не так выглядит совершенно. Компилятор никаких переменных не создает. Более того - там еще есть трансляторы, линковщики, валидаторы и прочее.

    Ну и да, на ассемблере компиляторы давно не пишут.

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

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

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Вопрос очень хороший.
    А ответ на него очень простой.

    Шаблоны нужны для отделения логики приложения от логики отображения.
    Разделив их, мы получим сразу кучу выгод:
    • Нормальную структуру приложения, когда вывод начинается только после того, как отработала вся логика. То есть у нас никогда не будет проблем с ошибкой headers already sent, с возвратом json-а вместо html, с выводом в page header-е тех данных, которые появляются только в процессе работы скрипта
    • Мобильность - один и тот же движок можно будет использовать на нескольких сайтах, меняя только шаблоны, но весь код оставляя одинаковым. Что поможет, в частности, вносить обновления в движок и исправлять ошибки на всех сайтах разом.
    • Разделение труда - сейчас обычно над отображением работают фронтендеры, то есть, когда бизнес-логика отделена от шаблонов, то любой фронт сможет с ней работать


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

    После этого есть варианты, которые отличаются в основном удобством работы с кодом шаблона.
    Править HTML код записанный в виде РНР строки - это САМЫЙ неудобный .

    Дальше идут всякие наколенные решения, типа
    бизнес-логика
    include header
    ?>
    хтмл конкретной страницы
    <?php include footer ?>

    или чуть более продвинутый, когда шаблоны хранятся отдельно и могут вкладывться друг в друга. Сначала пишем функцию,
    function render_template($filename, array $data = [])
    {
        ob_start();
        extract($data);
        require __DIR__ . '/' . $filename;
        return ob_get_clean();
    }

    а потом в коде страницы пишем
    бизнес-логика
    ...
    $page_html = render_template('page.tpl.php', [
        'data' => $data,
    ]);
    echo render_template('main.tpl.php', [
        'navigaton' => $nav_list,
        'title' => $title,
        'page' => $page_html,
    ];

    где сами шаблоны это
    ...
            <?php foreach ($navigation as $item): ?>
                <li>
                    <a href="<?= e($item['href']); ?>"><?= e($item['title']); ?></a>
                </li>
            <?php endforeach ?>
    Важно! Любой вывод в этих шаблонах должен экранироваться в обязательном порядке (кроме очевидных случаев, когда мы выводим результат рендера).

    Ну и наконец нормальные шаблонизаторы, из которых я горячо рекомендую Twig.
    Главное, что про него надо знать - даже самые зелёные нубы осваивают его без затруднений. И настоятельно рекомендую сразу перейти на него, после того как наиграетесь с решениями на коленке.
    Ответ написан
    9 комментариев
  • Создание файла txt и запись в него C++?

    @res2001
    Developer, ex-admin
    Смотри сначала сюда: https://en.cppreference.com/w/cpp/io/basic_fstream
    Потом сюда: https://en.cppreference.com/w/cpp/io/basic_filebuf/open
    fstream открывает файл по умолчанию (как у тебя) в режиме in|out, а это значит, что если файла не существует, то возникает ошибка (смотри таблицу по второй ссылке). Логика такая, что если ты открываешь файл для чтения (тут не важно, что он открывается еще и для записи) без дополнительных флагов, то файл должен существовать.

    В пару с ifstream, который открывает файл для чтения, существует и ofstream - он открывает файл для записи. При использовании ofstream не существующий файл будет создан (смотри таблицу по второй ссылке).
    Ответ написан
    Комментировать
  • Создание файла txt и запись в него C++?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    https://stackoverflow.com/questions/15667530/fstre...

    Про флаги можно подробнее почитать, внезапно, в документации https://www.cplusplus.com/reference/ios/ios_base/o...
    Ответ написан
    Комментировать
  • Как запретить PHP следовать HTTP заголовку Location?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Вопрос редкий в своей бессмысленности.
    Причем с самого начала. С какой стати "запрет просматривать каталоги" имеет хоть какое-то отношение к "безопасности сайта"?
    Дальше уже смешно. Что это за "технические причины", которые позволяют написать в .htaccess какой-нибудь, скорее всего, RewriteRule, но Options -Indexes написать вдруг не дают?
    Дальше идет совсем уже какое-то безумие, "не могу запретить, поэтому сделал редирект на него". ШТА? Может быть всё-таки не на него, а из него?

    Ну и вишенка на торте - оказывается, безопасность сайта зависит от способности РНР не реагировать на редирект. Вся инфраструктура мира, безопасность банков и атомных станций под угрозой: вопрос века: следует ли пых-пых заголовкам, или нет.

    Я уже не говорю про то что "PHP" не следует никаким заголовкам. Есть несколько разных способов сделать НТТР запрос из РНР, и соответственно, для каждого способа запрет следования заголовку Location будет разным. То есть, не указывая способ, которым делается запрос, надеяться на ответ несколько наивно.
    Ответ написан
    Комментировать