Задать вопрос
  • Преобразование строки в массив?

    riot26
    @riot26
    <:З )~~
    В комментариях к документации к print_r() есть функция print_r_reverse(), которая распарсит такой вывод. Но работать с таким дебильным сервисом я бы не стал.
    Ответ написан
    1 комментарий
  • HP Z420 выбор комплектующих для работы?

    @Fixid Куратор тега Железо
    https://www.levnapc.cz/ProductsFiles/hp-workstatio...

    Все официально придерживаемое оборудование
    Выбираете любой CPU и ОЗУ в зависимости от финансов
    Кулер подбираете в зависимости от TDP выбранного CPU
    Ответ написан
    2 комментария
  • Как преобразовать в другой тип значения массива в цикле?

    t-alexashka
    @t-alexashka
    Сразу пишу legacy код
    <?php
    
    $arrOld = [["2018-10-10", "6001"],["2018-10-11", "5500.68"],];
    $arrNew = [];
    foreach($arrOld as $arr) {
    	$arrNew[] = [date('d.m.Y', strtotime($arr[0])), (float) $arr[1]];
    }
    unset($arrOld);
    
    echo '<pre>';
    print_r($arrNew);
    Ответ написан
    Комментировать
  • Обязательно ли читать книгу по языку/технологии что бы быть тру и продвинутым кодером?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Вы не найдёте ни одного авторитетного программиста с мировой известностью, который бы утверждал, что курсы и видео-уроки лучше книг. Обычно это утверждают либо профаны, оправдывающие своё нежелание читать, либо авторы курсов, делающие деньги на лентяях и глупцах. И я лично за 18 лет в отрасли встретил множество программистов, но ни одного хорошего, выучившегося по курсам и видео-урокам.

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

    К тому же, после достижения профессионального уровня достаточного чтобы называться специалистом, вы обнаружите, что необходимые на этом уровне знания можно почерпнуть только из документации. То есть всё равно придётся читать. Много и часто.

    Наконец, постоянная практика чтения неизбежно приводит к увеличению скорости чтения. И наступает момент когда прочитать учебник будет в 10 и более раз быстрее, чем просмотреть видеокурсы по той же теме и в том же объёме.

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

    @luna3956
    Представьте, что Вам нужно написать программу, в которой ведется учет частных домов на какой-нибудь улице. Ключевой единицей будет дом - объект из реального мира. Чтобы описать его с помощью программного кода для этого отлично подходит ООП. В нем есть такое понятие как класс, он является по сути моделью/структурой объекта из реального мира. В нашем примере с домом это будет примерно такой класс:
    class House {
    
      string address;
      int numOfRooms;
      ...
    
      House(string address, int numOfRooms)
      {
        this.address = address;
        this.numOfRooms = numOfRooms;
      }
    
    }


    Теперь же в самой программе чтобы оперировать таким объектом из реального мира как дом вам достаточно написать примерно следующее:

    House h = new House("Улица Вязов дом 13", 5);

    То есть в переменной h у нас теперь хранится объект/ссылка на объект, являющийся представлением объекта из реального мира - пятикомнатного дома, который находится по адресу "Улица Вязов дом 13".

    Или например собаку(тоже объект из реального мира) можно описать таким классом:

    class Dog {
    
      string name;
      string breed;
    
      Dog(string name, string breed)
      {
        this.name = name;
        this.breed = breed;
      }
    
    }


    И теперь чтобы в программе "создать собаку" с каким-то именем и породой достаточно написать:

    Dog d = new Dog("Бобик", "Бульдог")

    Это очень упрощенные примеры, но думаю вполне подойдут для того, чтобы вы поняли каким образом объекты реального мира моделируются благодаря ООП.

    P.S сам код это не ява а просто псевдокод для наглядности
    Ответ написан
    Комментировать
  • Почему netBeans требует что бы я преобразовал цепочку операторов if в оператор switch?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    IDE не требует, а лишь рекомедует использовать switch case.
    Так как у вас в данном случае задается правило для одной переменной char, то вы можете упростить читабельность вашего кода при помощи switch case.
    Ответ написан
    Комментировать
  • Почему netBeans требует что бы я преобразовал цепочку операторов if в оператор switch?

    Работает без ошибок, потому что ошибок нет.
    Switch в этом случае просто удобнее, компактнее и чуточку эффективнее благодаря таблице переходов.
    Ответ написан
    Комментировать
  • Как включить режим UDMA-6?

    @yayashitoya
    UDMA-6 это 133 Мбит/c

    SATA-1 1.5 Гбит/с
    SATA-3 6 Гбит/с

    Вы точно уверены что вам нужен UDMA-6 ?
    Ответ написан
    5 комментариев
  • Почему в интерфейсах не надо указывать модификатор доступа?

    @aol-nnov
    > При имплементации этих методов внутри классов они объявляются как public и , опять же, поменять это нельзя. С чем это связано, почему именно так?

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

    0xD34F
    @0xD34F
    for (int i = 0; i < names.length; i++) {
      System.out.println(String.format(" %-11s%s", names[i], times[i]));
    }
    Ответ написан
    Комментировать
  • Ошибка в использовании коллекций в c#?

    FoggyFinder
    @FoggyFinder
    Тут у вас сразу несколько ошибок:

    1. Метод new_list не принадлежит к какому-то определенному типу. Подозреваю, он должен находится в классе Program
    2. Для метода new_list не указан тип возвращаемого значения. Подозреваю, вы хотите чтобы метод возвращал Payment. В таком случае лучше переименовать на ReadPayment:

    public static Payment ReadPayment()
    {
        Console.Write("Введите марку бензина: ");
        int another_petrol = int.Parse(Console.ReadLine());
        Console.Write("Введите количество бензина в литрах: ");
        double another_count = double.Parse(Console.ReadLine());
        Console.Write("Введите номер колонки: ");
        byte another_column = byte.Parse(Console.ReadLine());
        Console.Write("Введите дату: ");
        byte another_code = byte.Parse(Console.ReadLine());
        Console.Write("Введите код: ");
        DateTime another_dt = DateTime.Parse(Console.ReadLine());
        return 
            new Payment(another_column, another_dt, another_petrol, another_count, another_code);
    }


    3. В методе Menu() вызов new_list() ничего не делает, полагаю, вы хотели добавить новый элемент в список:

    case '3':
        payments.Add(ReadPayment());
        break;


    На всякий случай приведу весь код:

    struct Payment
    {
        public int Petrol;
        public double Count;
        public DateTime Dt;
        public byte Column;
        public byte Code;
        public Payment(byte column, DateTime dt, int petrol, double count, byte code)
        {
            Column = column;
            Petrol = petrol;
            Count = count;
            Dt = dt;
            Code = code;
        }
    
        public String SString()
        {
            return String.Format("Колонка: {0} \n" +
                "Дата:  {1}.{2}.{3} {4}:{5}:{6} \n" +
                "Марка бензина: {7} \n" +
                "Количество: {8} \n" +
                "Код платежа: {9}" +
                "\n===============================", Column, Dt.Year, Dt.Month, Dt.Day, Dt.Hour, Dt.Minute, Dt.Second, Petrol, Count, Code);
        }
    }
    class Program
    {
        public static Payment ReadPayment()
        {
            Console.Write("Введите марку бензина: ");
            int another_petrol = int.Parse(Console.ReadLine());
            Console.Write("Введите количество бензина в литрах: ");
            double another_count = double.Parse(Console.ReadLine());
            Console.Write("Введите номер колонки: ");
            byte another_column = byte.Parse(Console.ReadLine());
            Console.Write("Введите дату: ");
            byte another_code = byte.Parse(Console.ReadLine());
            Console.Write("Введите код: ");
            DateTime another_dt = DateTime.Parse(Console.ReadLine());
            return
                new Payment(another_column, another_dt, another_petrol, another_count, another_code);
        }
        public static List<Payment> payments = new List<Payment>();
        public static void Menu()
        {
            Console.WriteLine("1. История платежей");
            Console.WriteLine("2. Редактировать историю платежей");
            Console.WriteLine("3. Добавить новый платеж");
            Console.WriteLine("4. Удалить платеж из списка");
            Console.WriteLine("5. Поиск платежа по коду");
            Console.WriteLine("6. Выход из программы");
            Console.Write("\n \nВведите номер пункта меню: ");
            char M = char.Parse(Console.ReadLine());
    
            switch (M)
            {
                case '1': break; // вывод списка платежей
                case '2': break;
                case '3':
                    payments.Add(ReadPayment());
                    break;
                case '4':
                    Console.WriteLine();
                    break;
                case '5': break;
                case '6': break;
            }
        }
        public static void Main(string[] args)
        {
            Menu();
            Payment np = new Payment(1, new DateTime(2000, 12, 13, 15, 12, 31), 92, 5.12, 001);
            payments.Add(np);
            payments.Add(new Payment(1, new DateTime(2012, 2, 12, 12, 42, 21), 92, 5.13, 001));
            foreach (Payment n in payments)
                Console.WriteLine(np.SString());
        }
    }


    Несколько комментариев:

    1. Вместо метода SString можно переопределять стандартный метод .ToString()
    2. Отклик на ввод пользователя лучше вынести из метода Menu, оставив там только саму печать на консоль.
    3. Структуру лучше делать неизменяемой в явном виде через readonly
    Ответ написан
    Комментировать
  • Есть ли смысл в моем выборе. PHP или JS?

    saboteur_kiev
    @saboteur_kiev Куратор тега Веб-разработка
    software engineer
    Изучиьт php на базовом уровне не проблема. Возьмите и изучите.

    Изучить php на уровень уверенного junior-а, умеющего хотя бы в базовую работу одного из популярных фреймворков - долго, много.
    Но для уверенного JS-джуниора будет гораздо проще, потому что есть определенное количество технологий, которые пересекаются - работа с json/xml/css/html/sql, базовая настройка веб-сервера, сертификаты, установка компонентов.

    PHP на текущий момент умирает уже десятки лет, и все равно он доступен на каждом хостинге. IMHO поднимать nodejs на бэкенде для сайта-визитки это ненужный оверинженеринг. Поэтому базово подтянуть PHP - маст хев.

    Углубляться в изучение фреймворков - уже отдельный вопрос. Смотря как устроитесь.
    Ответ написан
    2 комментария
  • Есть 100к URL. Нужно спарсить их содержимое. Как сделать обход этого количества в 5 поток одновременно (php+curl)?

    muzikant777
    @muzikant777
    PHP/Vue разработчик
    Можете взять любой HTTP client, например, Guzzle.
    Но, внутри он всё равно использует curl_multi_*.
    use GuzzleHttp\Pool;
    use GuzzleHttp\Client;
    use GuzzleHttp\Psr7\Request;
    
    $client = new Client();
    
    $requests = function ($total) {
        $uri = 'http://127.0.0.1:8126/guzzle-server/perf';
        for ($i = 0; $i < $total; $i++) {
            yield new Request('GET', $uri);
        }
    };
    
    $pool = new Pool($client, $requests(100), [
        'concurrency' => 5,
        'fulfilled' => function ($response, $index) {
            // this is delivered each successful response
        },
        'rejected' => function ($reason, $index) {
            // this is delivered each failed request
        },
    ]);
    
    // Initiate the transfers and create a promise
    $promise = $pool->promise();
    
    // Force the pool of requests to complete.
    $promise->wait();


    Ссылка на пример: docs.guzzlephp.org/en/stable/quickstart.html#concu...
    Ответ написан
    Комментировать
  • Почему не работает preg_match?

    0xD34F
    @0xD34F Куратор тега Регулярные выражения
    Забыли букву ё, забыли выставить флаг u. Пусть будет preg_match('~^[a-zа-яё\d]+$~iu', $login).
    Ответ написан
    Комментировать
  • Как сформировать запрос, используя Eloquent ORM?

    @jazzus
    Так, а документацию посмотреть?)) Про белонгстумени
    Запись в сводной таблице методoм attach()
    Например:
    $book->authors()->attach($author_id);
    Запрос конкретной книги с авторами
    $book=Book::with('authors')
                      ->withCount('authors')
                      ->find($id);

    Или все книги с авторами
    $books=Book::with('authors')
                        ->withCount('authors')
                        ->get();

    потом можно
    dd($book);
    и увидеть, что добавились авторы и количество авторов.
    В шаблоне
    @foreach ($books as $book)
              //количество авторов у книги
              {{$book->authors_count}}
              //имена авторов
              @foreach ($book->authors as $author)
                {{ $author->name }}
              @endforeach
          @endforeach

    Для авторов аналогично.
    Ответ написан
    3 комментария
  • Переход на mysqli, как по новым стандартам?

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    Открыть документацию? Да не, бред какой-то.

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

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    if(@$_POST['result'] != $pass){

    Ну так почему отправленный пароль НЕ ДОЛЖЕН быть равен нужному паролю
    Ответ написан
    2 комментария
  • Как в preg replace оставить символ равно?

    @bkosun
    Чтобы использовать специальный символ в качестве обычного, он должен быть экранирован.

    Другими словами, перед символом должен быть обратный слэш '\'.

    В регулярных выражениях служебными считаются следующие символы: . \ + * ? [ ^ ] $ ( ) { } = ! < > | : - #


    php.net/manual/ru/function.preg-quote.php
    Ответ написан
    Комментировать