• Как сделать пазл на js?

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

    i__dmitry
    @i__dmitry
    Weaving a web
    Зачем тогда сложности с ООП и другими возможностями php, если он так мало используется?

    Ну вот вы и ответили на свой вопрос. Использовать любой инструмент нужно только исходя из целесообразности. Смесь PHP и HTML - это классический вариант использования PHP, главным недостатком которого является слабая масштабируемость и сложность поддержки. В сложных системах этот подход приводит к убыткам, поэтому придумали такие подходы как MVC, а ООП это одно из средств удобной реализации этого подхода.
    Если вы не видите, зачем вам это в ваших проектах, то не используйте. Когда понадобится - поймёте сами. Наверное :)
    В любом случае, знать возможности языка и всевозможные best practices и архитектурные подходы нужно, если собираетесь расти и развиваться.
    Ответ написан
    2 комментария
  • Как построить дерево на основе parent?

    0xD34F
    @0xD34F Куратор тега JavaScript
    function createTree(data, idField, parentField, rootParent) {
      const
        tree = {},
        obj = {};
    
      data.forEach(n => obj[n[idField]] = Object.assign({}, n));
    
      Object.values(obj).forEach(n => {
        if (n[parentField] === rootParent) {
          tree[n[idField]] = n;
        } else {
          const t = obj[n[parentField]];
          t.children = t.children || {};
          t.children[n[idField]] = n;
        }
      });
    
      return tree;
    }
    
    
    const tree = createTree(data, 'id', 'parent_id', 0);
    Ответ написан
    Комментировать
  • Последствия блокировки google гугла в РФ. Андроид-девайсы, сервисы зарегеанные на gmail итд?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Я попробую рассмотреть одну ситуацию (в смысле неважно, кто заблокировал). Разница в том, кто заблокировал будет только в том, что если мы баним гугл, то бан будет обходиться как всегда - прокси/VPN, что приведет к всплеску интереса к VPN не только у юзеров, но и у "людей в сером", а если гугл банит нас - то тогда все, пишите письма, шлите деньги...
    - Будут ли работать андроид девайсы?

    Работать им ничего не мешает, но гугл-сервисы будут недоступны. Возможно будут сбои в звонилках, читалках смс, ежедневниках, калькуляторах и прочем от гугла - в зависимости от числа напиханных туда трекеров и грамотности реализации ситуации "гугл отвалился"
    - Будут ли работать приложения? Здесь интересует момент того, что базируются на гугл-маркете.

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

    Те, кто использует гуглопочту для чего-то важного - ССЗБ. У меня есть как минимум три ящика на гмыле, но ни один из них никакой ценности не представляет - пропали - да и хрен с ними.
    Ответ написан
    6 комментариев
  • Как правильно сделать SQL запрос?

    tsklab
    @tsklab Куратор тега SQL Server
    Здесь отвечаю на вопросы.
    PIVOT требует, что бы список "Действий" был определён заранее.

    DECLARE @actionsUsers TABLE ( Пользователь VARCHAR(100), Действие VARCHAR(100), ТипДействия INT )
    INSERT @actionsUsers VALUES ( 'Иванов', 'Изменил дату', 1 ),
    ( 'Петров',  'Добавил запись',    4 ),
    ( 'Соколов', 'Изменил описание',  2 ),
    ( 'Иванов',  'Изменил дату',      1 ),
    ( 'Соколов', 'Изменил заголовок', 3 ),
    ( 'Соколов', 'Изменил заголовок', 3 )
    
    SELECT [Пользователь], 
           [Добавил запись], [Изменил дату], [Изменил описание], [Изменил заголовок]
      FROM 
        ( SELECT [Пользователь], [Действие]
            FROM @actionsUsers ) AS AUC
      PIVOT ( COUNT([Действие]) FOR [Действие] 
        IN ([Добавил запись], [Изменил дату], [Изменил описание], [Изменил заголовок] )) AS PT
      ORDER BY [Пользователь]
    Ответ написан
    Комментировать
  • При запросе сonsole.log(options); пишет сonsole is not defined. Что я делаю не так?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Есть в латинском и кириллическом алфавитах пара букв, не только выглядящих одинаково, но и расположенных на клавиатуре на одной кнопке. Отсюда и проистекает ваша проблема:

    'console' === 'сonsole' // false
    Ответ написан
    Комментировать
  • При выборе PHP фреймворка стоит ли обращать внимания на тесты скорости?

    inoise
    @inoise Куратор тега PHP
    Solution Architect, AWS Certified, Serverless
    Имхо, бесполезная метрика. Давайте разберёмся почему.
    Что нам даст данная метрика? Ничего. Бизнес-логика и сетевые издержки съедают куда больше и на их фоне производительность движка даже не заметна. А если вспомнить что проект состоит не только из кода так вообще смешно становится
    Ответ написан
    Комментировать
  • При выборе PHP фреймворка стоит ли обращать внимания на тесты скорости?

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

    1) Оно мегахреново переносится и очень криво становится на свежие системы. Корме того что половина гайдов по установке устарела, но все еще лежит на оф. сайте, гайды сообщества противоречат друг-другу, 90% из них не работает, а про некоторые дистрибутивы можете просто забыть, там они работать просто не будут.

    2) Оно все работает as is и хрен ты посмотришь как работает родная вьюшка/конторллер "внутри", а доки не сказать чтобы хорошо описаны, комьюнити слабенькое, многие вещи сделаны спорно, а поправить или что-то подкрутить дело неблагодарное.

    3) Теперь про самое интересное - скорость работы. Так вот, вся это мутотень про память и прочие плюшки на нормальном сервере не ощущается вообще, то есть переходя определенный предел мощности/вооруженности сервера скорость практически сравнялась с нативом (использовался ларавел и Уии на том же сервере, по замерам - плюс-минус то же по скорости, и чуть больше по памяти (центос, 64гб оперативы, 4 проца, нжинкс, пхп 7.2). Короче выгода была на ветке пхп 5.+, сейчас его актуальность практически равна нулю.

    4) В моем случае по приходу сервер регулярно падал при "серьезной" нагрузке (20-30рпс), в чем я изначально предположил вину старых модулей фалкона, но по факту оказалось что 99% нагрузки вносили ожидания запросов к бд, некоторые из которых были по 7-15 минут, а некоторые куски кода создавали по 80+ запросов с 1 страницы, просто дозапрашивая какие-то данные для вьюшки в цикле. Предыдущий "кудесник" кормил руководство отмазками типа - "мало памяти, железо слабое, все плохо, а то бы летало...". "Магия плохого железа" закончилась после оптимизации запросов и доведения самых тяжелых до 0,5 секунды, а так же выборки всех данных в 1-2 запроса с нормальными джоинами.

    5) Основной вопрос всегда сводится к жадности - взять что-то побыстрее из софта, сэкономив на хостинге/оборудовании. И оно всегда не работает так, по ряду факторов, которые достаточно очевидны.
    Ответ написан
    5 комментариев
  • При выборе PHP фреймворка стоит ли обращать внимания на тесты скорости?

    @balberbro
    Глупый вопрос на самом деле:

    Сейчас в пхп-мире среди фреймворков есть да выбора (Symfony/Laravel) - первый выбирают ребята покрупнее, второй выбират ребята поменьше. Есть еще Zend Framework но так в качестве поддержке легаси систем.

    Так вот: скорость работы фреймворка - бессмысленный показатель. Ибо пока идет малая нагрузка - всем плевать. Когда нагрузка подрастает - докупают железо. Если железа получается уже очень много - то делают перфоманс анализ и правки. Если уже совсем все плохо, переписывают на Go. Смотри доклады ребят на php-конференциях от Баду, Авито и так далее.

    Но все эти шаги делает максимум 1% от всех компаний, что юзает эти фреймворки, ибо 99% никогда не столкнется с такими нагрузками.

    __

    Ты лучше смотри так:

    Symfony - Москва - зп мидла 140к плюс.
    Laravel - Москва - зп мидла 120к плюс.
    1С-Битрикс - Москва - зп мидла 80к плюс.

    Собственно, как в фильме "Невероятное приключение Итальянцев в России" - Андрюша, ты хочешь заработать миллион?

    Есть есть возможность выучить Symfony и лутать 140к, зачем учить условный phalconPhp и лутать 60-80к?
    Ответ написан
    Комментировать
  • Проблемы с html и javascript?

    yarkov
    @yarkov Куратор тега JavaScript
    Помог ответ? Отметь решением.
    Так в querySelectorAll лежит коллекция, а не конкретный элемент. Пройдись циклом по коллекции и каждому элементу навесь обработчик.
    P.S. А что вы хотели получить в переменную staf?
    Ответ написан
    1 комментарий
  • Как регуляркой найти всё что после @?

    wisgest
    @wisgest
    Не ИТ-специалист
    preg_replace('/.*@/', '', $email)

    Но считается, что правильнее использовать предназначенные для этого функции:
    substr(strrchr($email, '@'), 1)
    Ответ написан
    Комментировать
  • Как быстро изменить схему таблиц?

    ayazer
    @ayazer
    Sr. Software Engineer
    есть 2 проверенных варианта:
    1) github gh-ost.
    2) percona toolkit

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

    percona toolkit - работает через триггеры. потому мигрировать таблицу для которой уже есть триггеры не выйдет. но зато она работает быстрее

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

    в итоге я в свое время использовал для миграций перкону. миграции мелких таблиц в пару гигабайт проходили в течении 10-15 минут незаметно для бекенда.
    Ответ написан
    1 комментарий
  • Почему большинство компаний требуют Linux при устройстве?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Подавляющее большинство web-серверов в мире работают на Linux'ах. Вполне разумно ожидать от разработчика понимания окружения, в котором будут работать его программы. Так что не важно, что вы любите, важно с чем вас нанимают работать.
    Ответ написан
    19 комментариев
  • Почему отправка application/json через axios вызывает CORS-ошибку?

    Fragster
    @Fragster
    помогло? отметь решением!
    https://developer.mozilla.org/ru/docs/Web/HTTP/CORS
    Допустимыми значениями заголовка Content-Type являются:
    application/x-www-form-urlencoded
    multipart/form-data
    text/plain

    Там же и про настройку всё.
    Ответ написан
    Комментировать
  • Как соединить таблицы в SQL на основе результата первого запроса?

    @mletov
    SELECT *
    FROM
    (
      SELECT REGEXP_SUBSTR(listinfo, ';[^;]+') as list
      FROM import
    ) AS i
    JOIN lists as l 
    ON l.listid = list
    WHERE i.userid = 1
    Ответ написан
    2 комментария
  • Как исправить Cannot set property 'background' of undefined?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    querySelectorAll возвращает не один элемент, а NodeList.
    У NodeList'а нет свойства .style, поэтому возвращается значение undefined.
    Ну и, соответственно, у undefined нет свойства background, о чём и говорится в ошибке.
    Ответ написан
    Комментировать
  • Как исправить Cannot set property 'background' of undefined?

    Fragster
    @Fragster
    помогло? отметь решением!
    document.querySelector('.day') возвращает первый подходящий элемент. У него есть свойство style.
    document.querySelectorAll('.day') возвращает список элементов (NodeList), у него нет свойства style. Надо обойти список и проставить стиль каждому.
    Желание уйти от jquery похвально.
    Ответ написан
    Комментировать
  • Есть ли программа для Linux, конструктор команд в терминале?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Бывает нужно найти какую то определённую команду. Если бы все команды были доступны в одном месте - было бы намного удоблней, чем искать по разным сайтам.

    А для виндовс вы как ищете конструктор команд? Где-то есть конструктор команд в котором будет рассказано про фотошоп, эксель, акробат?

    Вы видимо не осознаете, что командная строка в линукс - это полноценная оболочка со своей вселенной консольных утилит, которые можно скачивать и устанавливать, и писать самому. Их список неограничен.
    В основном это
    1) стандартный набор gnu-tools, где можно собственно почитать о них https://www.gnu.org/software/coreutils/manual/core...

    2) сама командная строка является оболочкой, со своими внутренними командами, о чем можно почитать в справке к этой оболочке (команда help, или гуглить в инете bash, ksh, zsh в зависимости от того, чем пользуетесь)

    3) также как и в виндовс, можно свободно доустанавливать произвоильные команды, или писать их самому. Есть ОГРОМНОЕ количество консольных утилит и программ для разных нужд. Нужно просто осознать, что командная строка - это полноценная оболочка, в которой можно выполнять множество различных задач, перечислить все команды нереально

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

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

    man - хорошая вещь, из минусов могу отметить его сложность. Пускай разобраться и можно, уделив этому какое то время, но хотелось бы иметь информацию в более удобном формате.

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

    Для некоторых отдельных команд типа find,grep, curl есть графопостроители, типа
    https://curlbuilder.com/
    https://marcin-chwedczuk.github.io/assets/apps/fin...
    Но честно говоря, лучше почитать справку.

    Просто вам нужно научиться работать в командной строке - она была СОЗДАНА быть гибкой настолько, что универсальный билдер для нее написать крайне сложно
    Ответ написан
    2 комментария
  • Почему shred перезаписывает жёсткий диск 3 раза случайными битами?

    hint000
    @hint000
    у админа три руки
    Таковы требования государственных стандартов. Скорее всего, американского стандарта. По ссылкам подробнее.
    https://ru.wikipedia.org/wiki/Уничтожение_данных
    https://habr.com/ru/post/264429/
    https://compress.ru/article.aspx?id=16513
    https://www.securitylab.ru/blog/personal/Business_...
    Согласен с SOTVM, такие суровые меры нужны при уничтожении совершенно секретных данных государственного значения, т.к. в этом случае вероятный противник - иностранные спецслужбы - вполне может себе позволить затраты в миллионы долларов ради всего лишь частичного восстановления информации. Ваши банковские данные стоят гораздо меньше, чем затраты на восстановление (даже не гарантированное восстановление) после простого однократного стирания.
    Ответ написан
    Комментировать