• Как получить скобки внутри которой запятая (regex)?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    var text = "(text) Lorem Ipsum is simply dummy, (text, simply) and (text, simply, qwerty) typesetting industry. Lorem Ipsum has been the[/m]";
    
    let result = text.match(/\([^)]+?(,[^)]+)+\)/g);
    
    console.log(result); // [ "(text, simply)", "(text, simply, qwerty)" ]


    Извините, лишнюю скобочку поставил, уже исправил.
    Ответ написан
    Комментировать
  • GO массив в WHERE id IN ()?

    @PapaStifflera
    Родился, вырос...
    db.Query("SELECT * FROM words WHERE id = ANY($1);", pq.Array(list))
    Ответ написан
    Комментировать
  • Получить значения из строки?

    @StockholmSyndrome
    используйте jsdom

    пример использования:
    const {JSDOM} = require('jsdom');
    
    
    const group = (str) => {
      const {document} = new JSDOM(str.replace(/(\[|\])/g, (_, s) => ({
        '[': '<', 
        ']': '>'
      })[s])).window;
      
      return [...document.body.querySelectorAll('*')].reduce((acc, elem) => {
        acc[elem.tagName] = [...elem.childNodes].reduce((str, elem) => {
          return str + (elem.nodeType === document.TEXT_NODE ? elem.textContent : '');
        }, '');
        return acc;
      }, {});
    };
    
    
    console.log(group('[m]Галифакс ([i]город в Канаде[/i])[/m]'));
    console.log(group('[m][p]г.[/p] Хадалык ([i]Синьцзян-Уйгурский[c] авт.[/c] р-н, КНР[/i])[/m]'));
    Ответ написан
    Комментировать
  • Организация компонентов vue js?

    0xD34F
    @0xD34F Куратор тега Vue.js
    То, что вы показали, выглядит довольно уродливо. Можно упростить, сложив имена компонентов в массив и добавив вычисляемое свойство:

    data: () => ({
      componentNames: [ 'comp1', 'comp2', 'comp3', 'comp4' ],
      ...
    }),
    computed: {
      componentName() {
        return [ 1, 2 ].includes(this.Q) && this.componentNames[this.B - 1];
      },
    },

    <component :is="componentName"></component>

    UPD. Если дополнительно нужно передавать параметры, то в массиве можно хранить вместо имён компонентов объекты, которые будут содержать имя и набор параметров:

    data: () => ({
      components: [
        { name: '...', props: { ... } },
        { name: '...', props: { ... } },
        ...
      ],
      ...
    }),

    Вычисляемое свойство не изменится (за исключением имени, конечно), а шаблон станет выглядеть так:

    <component
      v-if="component"
      :is="component.name"
      v-bind="component.props"
    ></component>

    https://jsfiddle.net/69xv0b47/
    Ответ написан
    Комментировать
  • Какой фреймворк подойдет для парсинга (скрапинга) сайта?

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

    Все равно хотите на питоне писать - lxml.
    requests если требуется сложное взаимодействие с донором
    Ответ написан
    Комментировать
  • Какой backend лучше использовать для проекта?

    be_a_dancer
    @be_a_dancer
    Backend/Fullstack Developer
    Все очень просто. Node.JS крайне медленный, поэтому выбор PHP уже выигрывает. А вообще, в данном контексте будет лучше работать Golang за счет своей скорости.

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

    doublench21
    @doublench21 Куратор тега Swift
    Потому-что, так никто не делает, ну кроме Вас. Для работы auto layout нужно построить цепочку ограничений сверху вниз.

    Что бы не спрашивать что у Вас есть, а что нет, сразу напишу полный список./

    1) Прописать у layout коллекции:
    // ...
    layout.estimatedItemSize = UICollectionViewFlowLayout.automaticSize
    layout.itemSize = UICollectionViewFlowLayout.automaticSize


    2) Соврал, нужно уточнение.

    pronunciationLabel - Сколько строк должен занимать? (Только одну?) Увеличивается только в ширину?
    wordLabel - Тоже, что и pronunciationLabel? Или увеличивается в высоту?

    3) Этот бред больше никогда не нужно делать.

    contentView.translatesAutoresizingMaskIntoConstraints = false
       
            NSLayoutConstraint.activate([
                contentView.leftAnchor.constraint(equalTo: leftAnchor),
                contentView.rightAnchor.constraint(equalTo: rightAnchor),
                contentView.topAnchor.constraint(equalTo: topAnchor),
                contentView.bottomAnchor.constraint(equalTo: bottomAnchor)
            ])


    Уточнение получены. Продолжим.

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

    5cab4bce2a9a6308684642.png
    Код текстом
    let v = UIView(frame: .zero)
    
        let l1 = UILabel(frame: .zero)
            l1.translatesAutoresizingMaskIntoConstraints = false
            l1.font = .systemFont(ofSize: 27.0)
            l1.text = "asdlas"
    
        v.addSubview(l1)
        NSLayoutConstraint.activate([
          l1.topAnchor.constraint(equalTo: v.topAnchor),
          l1.leadingAnchor.constraint(equalTo: v.leadingAnchor),
        ])
        l1.setContentHuggingPriority(.required, for: .vertical)
        l1.setContentCompressionResistancePriority(.required, for: .vertical)
    
        let trailing = l1.trailingAnchor.constraint(equalTo: v.trailingAnchor)
            trailing.priority = .defaultHigh
        NSLayoutConstraint.activate([
          trailing
        ])
    
        let l2 = UILabel(frame: .zero)
            l2.translatesAutoresizingMaskIntoConstraints = false
            l2.font = .systemFont(ofSize: 17.0)
            l2.text = ""
    
        v.addSubview(l2)
        NSLayoutConstraint.activate([
          l2.topAnchor.constraint(equalTo: l1.bottomAnchor),
          l2.leadingAnchor.constraint(equalTo: v.leadingAnchor),
        ])
        l2.setContentHuggingPriority(.required, for: .vertical)
        l2.setContentCompressionResistancePriority(.required, for: .vertical)
    
        let trailing_ = l2.trailingAnchor.constraint(equalTo: v.trailingAnchor)
            trailing_.priority = .defaultHigh
        let bottom = l2.bottomAnchor.constraint(equalTo: v.bottomAnchor)
            bottom.priority = .defaultHigh
        NSLayoutConstraint.activate([
          trailing_,
          bottom
        ])
    
    
        let s = v.systemLayoutSizeFitting(UIView.layoutFittingCompressedSize)
    
        view.addSubview(v)
        v.frame.size = s
        v.center = view.center
        v.layer.borderColor = UIColor.red.cgColor
        v.layer.borderWidth = 1.0


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

    С шириной всё готово. Смотрим на костреинты для высоты. Тут вполне обычно, начинаем с топ. После нижний лейбл крепится к боттом первого. И снова небольшая магия. Последний нижний констрейнт снова с пониженным приоритетом. Кстати, быть может в сториборде приоритет снижать не придется. Проверьте. (Кажись система делаем это за вас)

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

    Поглядим на примеры:
    Первая имеет меньший размер шрифта, но больше символов.
    HC2w483.png
    Первая имеет больший размер шрифта, но больше символов.
    5MhP2nj.png
    Первая имеет меньший размер шрифта, но меньше символов.
    V00A7Qc.png
    Первая имеет больший размер шрифта, но меньше символов.
    zXH8glH.png

    Как видимо размер вьюхи система посчитала вольностью верным. То есть мы динамически научились задавать высоту и ширину ячейки.

    Поехали дальше.

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

    Воспользуемся методом:
    5cab50033a6e2506454233.png
    Код текстом
    func preferredLayoutAttributesFitting(
        _ layoutAttributes: UICollectionViewLayoutAttributes
      ) -> UICollectionViewLayoutAttributes
      {
        let layoutAttributes = super.preferredLayoutAttributesFitting(layoutAttributes)
    
        let fittingSize = UIView.layoutFittingCompressedSize
    
        layoutAttributes.frame.size = systemLayoutSizeFitting(
          fittingSize,
          withHorizontalFittingPriority: .fittingSizeLevel,
          verticalFittingPriority: .fittingSizeLevel
        )
    
        return layoutAttributes
      }


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

    И малая ремарка, возможно в метод preferredLayoutAttributesFitting после вызова super. надо будет добавить вызов метода layoutIfNeeded(). А может и не нужно.

    Итого:
    Добавляем то, что в пункте 1.
    Устанавливаем нужные констреинты.
    Удаляем ваш код в пункте 3.
    Добавляем метод preferredLayoutAttributesFitting
    Ответ написан
    3 комментария
  • Какую бд использовать для оффлайн словаря?

    briahas
    @briahas
    ObjC, Swift, Python
    Realm ?
    Ответ написан
    Комментировать
  • Как получить текст между квадратными скобками?

    Stimulate
    @Stimulate
    могу
    $str = '[m1]Эрэн-Хото [i](городской уезд автономного района)[/i][/m]';
    
    preg_match_all('/\[([^\]]+)\]([^\[]+)/siu', $str, $matches);
    
    echo '<pre>';
    	print_r($matches);
    echo '</pre>';
    Ответ написан
    Комментировать
  • Где может быть ошибка в запросе?

    @omichkun
    У вас в качестве названия для столбца (show) используется зарезервированное слово для SQL.
    Ответ написан
    2 комментария
  • Как сделать вывод данных не с первого значени?

    AlekseyNemiro
    @AlekseyNemiro
    full-stack developer
    www.mysql.ru/docs/man/SELECT.html
    Выражение LIMIT может использоваться для ограничения количества строк, возвращенных командой SELECT. LIMIT принимает один или два числовых аргумента. Эти аргументы должны быть целочисленными константами. Если заданы два аргумента, то первый указывает на начало первой возвращаемой строки, а второй задает максимальное количество возвращаемых строк. При этом смещение начальной строки равно 0 (не 1):
    mysql> SELECT * FROM table LIMIT 5,10; # возвращает строки 6-15

    Если задан один аргумент, то он показывает максимальное количество возвращаемых строк:
    mysql> SELECT * FROM table LIMIT 5; # возвращает первых 5 строк


    Т.е. в вашем случае будет запрос вида:
    SELECT * FROM  `users` ORDER BY `money` DESC LIMIT 1, 2
    Ответ написан
    Комментировать
  • Подключение Единой кассы (W1 Wallet One)?

    Adamos
    @Adamos
    А на хрена вы в форме выводите константы как поля ввода?
    Замените "text" на "hidden" у всего, что известно заранее (то есть у всего, кроме суммы - или она тоже известна?).

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