• Слой веб-приложения, объединяющий запросы к БД - такое бывает?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Самая большая проблема с этой системой - зависимые данные. Если в виджете 1 запрос А, работающий с таблицей X, зависит от данных из запроса Б к таблице Y (id сущностей оттуда берёт, например), то запрос Б нужно отправить сразу, не аггрегируя его с запросом В из виджета 2, который работает с теми же данными, но отправляется позже. Большинство запросов зависят друг от друга, поэтому ощутимой пользы такая штука не принесёт.

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

    Плюс, как вообще такой системе узнать, что все запросы пришли, и пора их агрегировать и исполнять?

    Плюс, виджеты, которые работают с одними и теми же данными, встречаются не часто - система будет работать вхолостую.

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

    Плюс, если запросы к одинаковым данным будут генерировать с разной структурой, СУБД не сможет их эффективно кешировать.

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

    На бэкенде такую задачу (оптимизации) эффективнее решать с помощью кэша, вынесения части данных в легковесные хранилища и старых добрых лучших практик работы с БД: правильная схема, корректно составленные запросы, индексы по часто используемым колонкам.

    Но вот реальный кейс, где я похожую систему реализовал и использую: есть программа на C++, постоянно делающая запросы к внешнему API. Это внешнее API устанавливает лимит на количество запросов в секунду, в который программа не всегда укладывается. Выходов два: ставить задержки перед запросами или агрегировать их в пакеты (API это поддерживает). Второе решение, очевидно, лучше с точки зрения скорости работы. Но я не реализовывал в нём анализ и объединение похожих запросов - это сложно сделать, легко накосячить, а профит будет относительно небольшой. Всю эту штуку удалось сделать только за счёт того, что все операции асинхронные и запросы выполняются через планировщик. На каком-нибудь стандартном php-проекте этого не добиться.
    Ответ написан
    6 комментариев
  • Сохраняется ли порядок ответов от сервера?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Да, такая вероятность есть. И факторов, которые могут повлиять на это достаточно много.
    Ответ написан
    Комментировать
  • Как стать продвинутым сайтоклепателем (формоклепателем) и отправиться на каторгу, чтобы пахать за говяжий дошик и оплачивать сарай?

    Astrohas
    @Astrohas
    Python/Django Developer
    Хочу поделится своим опытом так сказать (раз уж тут у нас клуб анонимных новичков институтов).
    Если ты считаешь что родился в жопе мира, то я родился еще в худшем местоположении - в кишлаке, на севере Таджикистана (страна есть такая). Из цивилизации тут больше чем нихуя. Но я старался. Да нас тоже учили сгребать лопатой, но ну не в -30, а в + 40 , и не лопатой, а руками ... гребать хлопок. Школы - примитивные, уроки информатики - такие что уж смотреть двух девочек с одной чашкой было намного приятнее чем сидеть там. Но я блин не хотел сдаваться. Я не хотел до конца оставаться нонеймов с заработком 80$ в месяц. И я начал учить все новые и новые предметы. Туже информатику. Скажи ка мне каков шанс выиграть областную олимпиаду чуваку ни разу не проработавшего с компьютером? 0? Но я выиграл. А потом еще две (правда на тот момент времени был куплен ноутбук).
    Потом у меня была республиканская олимпиада. На тот момент у меня были знания алгоритмов, пару сертификатов от Интуита и полка прочитанных Кнутов. Но увы, республиканская олимпиада стала для меня разочарованием. Нет медальку золотую я получил, но был разочарован уровнем вопросов этой олимпиады. Представь - самая пиздатая олимпиада, а вопросы уровня написят программу вычислющею факториаль чисьла n . Фейспаль на фейспальме.

    Далее было еге для поступления. Таджикское еге, скажу честно чуть лучше по чем русское, ибо внезапно более продуманное. И в итоге получил 525 баллов, в то время как проходной был 240. Могу ошибаться, но это рекорд среди 80к абитуриентов. Поступил в политех. В первый день ожидал, что наконец-то получу знания которые мне нужны. Нихуя!
    В первый месяц нас учили рисовать заголовки в ворде.
    Второй месяц матемматика уровня уравнение аж с двумя неизвестными.
    3 месяц наконец-таки программирование - основы программирования на VB.net.
    Четвертый месяц Физика.
    Потом, в пятом месяце изучали рисование на фотожопе.
    Потом у нас была "практика программирования" - посути тоже что в третьем месяце - VB.Net.
    Потом месяц был угробен на экономику и культуроведение.
    Потом была Высшая математика.
    И это все за первый курс. Я ненавидел эти предметы. Я ненавидел этот вуз, VB.net и блядские семестровые и курсовые работы. Но выбора не было - либо сиди страдай, либо отслужи в блядской армии.
    Начался второй курс. В списке предметов появились элементы более приближенные к программированию.
    Месяц первый - Базы данных - 1. На деле проектирование баз данных акссес мышкой.
    Второй месяц, более приблеженная к моим знаниям дисциплина - Основы веб Дизайна. Проходила какая-та не разбирающаяся в хтмл и эсэсэс училка, программировала на нотепаде с хтмл тегами времен 2004 года. Еще советовала юзать Dreamвивер ибо это Чудо !11. Мне хотелось застрелиться.
    Потом проходили дискретку. Так как я отпетый алгоритмизд, то с этот предмет относительно был одобрен моими яйцами.
    Потом было ООП. Под ООП, оказывается подразумеваться решение тупых задач из книжек Златопольского и Абрамова на c++.
    Потом был предмет с гордым названием - Практика визуального программирования. По сути, тот же vb.net, опять задачи Абрамова и Златопотолокского, но потом постепенно подключали базу акссес. Так как там с провайдерами баз данных был лютый пиздец, всей группой решили выбрать одну версию вижуалстудии и микрософт оффиса (оба 2010), ибо на других версиях код напросто отказывался работать.
    Потом в следующем месяце был предмет - "программирование баз данных". Начало было многообещающим, препод даже одобрил то что я буду использовать python, но после первого занятия, препод пошел подыхать в больницу, а вести стал чувак который месяцем раньше вел "Практику визуального программирования". Все 16 он повторял точь в точь то что вел месяцем раньше. Многие даже сдали предыдущие работы. Справедливости ради скажу, что препод это был аспирантом, и часто во время занятий рассказывал анекдоты (преимущественно про блондинок).
    Следующий месяц прошли два предмета - Правоведение и литературу. Ахует как нужные предметы.
    После был месяц Объетко Ориентированного Пирограммирования - 2 . К счастью, помимо решения задач из книг Златовлаского, пробегались по презентациям из педивикии. Вроде еще класс создавали...
    Следующий месяц, пришлось слущать лекции по гражданской обороне...
    Потом месяц с охуенно нужным для меня - веб быдлокедера предметом - Математические вычленения на Maple.
    Последний месяц второго курса была, более менее адекватная преподша. Вела JavaScript, и я не особо придирался к ее знаниям, ибо сама призналась до лекции что с JavaScriptom пока не работала, и заодно научиться.....
    Теперь уже прошел месяц третьего курса. Прошли Программирование на интернет (это название предмета такое). По сути тот же Vb.net но с добавлением ASP. Опять задачи из книг Абрамовича. Бляд... вместо того чтобы делать сайты нас заставляли решать задачи типа "Дано число а и б найти какое из них большее". Тока в отличии от Vb.Net предметов до этого, данные выводились на страницу через риспонсе.врайт.............
    И так а знаете что ? Не один из вышеперечисленных двух дюжин предметов я не учил всерьез. Я просто сдавал во время работу, и порою читкодил на экзаменах.
    Хотите узнать как стать нормальным программистом учась в институте? Никак. Нужно просто поднят свою жопу и начать кодить. Пытаться сделать что -то. Никто за тебя изучать не будет. Скачай видеокурсов по хтмл хтмлакдемии на нонеймклабе, пройди их. Потом сверстай двух десятков макетов. Потом потихоньку иди в фриланс.
    На этом этапе не жажды денег и девок.

    Во втором курсе меня пригласили после пар поработать в институте. Взамен зарплата аж 40$ и некоторые бонусы с учебой. Я согласился. Зарплата конечно же не ахты, но бонусы это круто. Ещь за одним столом с педаггогами высоких мастей, в груди стоит бейдж "специализд центра тестирования", можно приезжать на автомабиле. Еще играеш в волейбол с деканом и всякими замдеканами.
    Но на 40 не проживешь. Поэтому я по ночам фрилансил. А теперь представь в 6,00 вставать, в с 8 до 12 быть на парах, с 13 до 16 работать в инсте. Потом с 18,00 до 01,00 фултайм удаленка или фриланс. с 1,30 до 6,00 сон. Бодрый бляд сон. 4,5 часа сна. Каждый день. А сколько спишь ты Анон? А бляд забыл, мне еще нужно готовиться по часу в сутки изучая алгоритмы ибо олимпиада студенческая скоро. У меня уже в копилке медаль золотая и кубок, но бляд бонусы победителя ахуенны - освобождение от рабства на 0,5 года и прибавка к стипендии в размере 4 косарей.

    -----
    Итак если хочешь чтобы не выпилили из института и хочешь стать нормальным программисздом, подними жопу и изучай. И тот факт что ты родился/живешь/или потерял девственность в жопе мира не должно тебя ограничивать.
    PS. Прошу прощения всем за нецензурную речь. .
    Ответ написан
    7 комментариев
  • Как в vue.js отправить файл, чтобы он попал в $_FILES?

    @Artem0071
    Безработный mr. Junior
    используйте FormData

    Что то в этом роде получится:

    let data = new FormData();
    data.append('file', thi.image);
    
    axios.post('/file', data)
                        .then(function(res) {
                        console.log(res);
                        });
    Ответ написан
    1 комментарий
  • Как получить data картинки или src полный без fakepath в input file через vue?

    0xD34F
    @0xD34F Куратор тега Vue.js
    Так:

    data: () => ({
      src: null,
    }),
    methods: {
      onChange(e) {
        const file = (e.target.files || e.dataTransfer.files)[0];
        if (file) {
          const reader = new FileReader();
          reader.onload = () => this.src = reader.result;
          reader.readAsDataURL(file);
        }
      },
    },

    <input type="file" @change="onChange">

    ??
    Ответ написан
    5 комментариев
  • Транспонирование звука?

    merlin-vrn
    @merlin-vrn
    Если не боитесь читать исходники, возьмите libmodplug и посмотрите, как это сделано у них. Принцип вам MTonly уже описал.

    То, что вы делали — «это слишком». Если брать каждый второй сэмпл получается примитивный частный случай (но совершенно правильный с точки зрения теории!) ресемплинга «на октаву выше». Не немного, сразу на октаву, т.к. частота вырастает сразу вдвое.

    Если нужно не вдвое, ресемплинг нужно делать не так. В частности, брать не каждый второй, а допустим при проигрывании каждых очередных 100 отсчётов получать их из 101 исходного отсчёта. Таким образом вы сделаете звук чуть-чуть выше. Примитивный вариант для вас будет — линейная интерполяция: отсчёты расположены равномерно, но «решётки» не совпадают. Вычисляете, с какими весами должны входить два ближайших отсчёта.

    Пример:
    Пусть отсчёты PCM будут 15 123 53 234 54 52 35 151… Мы хотим сыграть их на квинту выше, т.е. для каждых трёх исходных мы должны воспроизвести два.
    тогда на выходе будет:
    15, (125+53)/2, 234, (54+52)/2, 35, и так далее. Я здесь «промежуточные» отсчёты, которые находились в тех точках, в которых в оригинале ничего не было, вычисляю при помощи линейной интерполяции. Поскольку новые отсчёты лежат точно посередине, два «соседних» входят с одинаковыми весами.
    Другой пример с этой же последовательностью: мы хотим сделать из этих восьми отсчётов семь. На выходе:
    15, (123*5+53*1)/6, (53*4+234*2)/6, (234*3+54*3)/6, (54*2+52*4)/6, (52*1+35*5)/6, 151,…
    Или же, сдвиг на a=0.992:
    15, 123*(1-a)+53*a, 53*(1-2a)+234*2a,… — осталось только научиться правильно обрабатывать момент, когда n*a становится больше единицы.
    Стоит нарисовать «временнУю диаграмму» для того и другого количества отсчётов, а потом посмотреть, что и как вычислять.

    Для аккуратной интерполяции есть более продвинутые алгоритмы, в частности, фильтры FIR (finite impulse response, КИХ, конечная импульсная характеристика) — они будут давать меньше «призвуков» при таком изменении тона.
    А потом вы забьёте на реализацию этого самостоятельно и начнёте использовать библиотеку rubberband :)
    Ответ написан
    1 комментарий
  • "Core Entities & Hiers" - загадочный паттерн для наследования в БД, кто найдет источник?

    qonand
    @qonand
    Software Engineer
    Если правильно понял принцип работы тогда речь идет о паттерне Class Table Inheritance описанной Фаулером
    Ответ написан
    2 комментария
  • В чем смысл PostCSS сегодня?

    советую еще статью почитать: andrew-r.ru/notes/?go=all/why-postcss
    Ответ написан
    Комментировать
  • В чем смысл PostCSS сегодня?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    В последнее время началась мода на PostCSS - много постов, статей о нем.

    А почему бы и да? Любые инструменты надо пиарить что бы народ ими пользовался. Ибо народ будет пользоваться тем что на слуху (ну или тем с чем привык работать). Больше народа - больше идей, быстрее идет развитие, формируется комьюнити и поддерживать решение становится чуть проще. Да и приятно это когда твои наработки используют.

    Есть даже версия (не без оснований), что это - прародитель всех современных препроцессоров и веяний.

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

    Окей, будем считать так, тем паче, что история коммитов на Гите это скорее подтверждает.

    Что именно подтверждает? сначала был Sass написанный рубистами что бы CSS можно было бы готовить так же нежно как они готовят HTML на HAML (кофескрипт туда же, рубистам хотелось сделать js похожим на ruby). И это заметте было в 2006-ом году! тогда и js был медленный, и V8 может только в планах был...

    Ведь все, что умеет PostCSS, умеют и препроцессоры

    postcss из коробки не умеет ровным счетом ничего. Он может только загрузить AST CSS файла и слепить из него обратно тот же CSS.

    И именно в этом сила postcss - модульность. Все существующие препроцессоры монолитны. То есть вы не можете просто так взять и добавить что-то свое туда. Да, в последних версиях less (и вроде как sass туда же подтягивается) у вас есть примитивный набор средств что бы вклиниться в процесс обработки AST документа и добавить какие-то примитивные вещи. Но это не удобно. Если вы хотите динамически менять проперти (например пересчитывать rem в em) или добавлять еще (опять же для того что бы руками не плодить в css кастыли для разных браузеров и делать это автоматом, на завязываясь ни на миксины и оставляя CSS чистым) свойств, но сделать это на less/sass сложно.

    Намного проще взять postcss и натравить это дело на результат работы препроцессоров.

    Давайте придумаем пример того, что можно легко и просто сделать при помощи пост процессоров и что сложно сделать с препроцессорами. Самое первое что приходит в голову - инлайнинг ресурсов. Например мелкие png-ки. Или работа с относительными путями, ресолвинг оных точнее. В этом случае мы с postcss напишем маленькую функцию, которая пробежится по всему абстрактному синтаксическому дереву и найдет использование url(). далее мы можем проверить размеры картинки и заинлайнить их (если у них размер достаточно маленький). Или собрать список всех задействованных картинок и использовать их потом (например что бы скопировать только то, что мы реально используем).

    Вот как-то так. А за счет того что мы имеем доступ целиком и полностью к формированию и обработке AST мы можем и синтаксис CSS развивать. Примерами могут служить многочисленные плагины аля cssnext и т.п. Можно даже большую часть фич sass в виде плагинов подключить.

    А самое забавное, что работает это все быстрее того же libsass на плюсах. За счет архитектуры (имею в виду не голый postcss а с набором плагинов добавляющих функциональность sass).
    Ответ написан
    Комментировать
  • Есть ли решение по онлайн-платежам и ККТ (онлайн-кассы), чтобы соответствовать закону 54-фз без покупки/регистрации кассы?

    У робокассы появилось несколько вариантов решения вопроса с 54-фз (включая и бесплатные).

    Вот подробности: https://fiscal.robokassa.ru/
    Ответ написан
    4 комментария
  • Что означают эти ошибки?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Это новый функционал в Хроме 58. В консоли сверху переключите уровень оповещений с Verbose на Info, если они вас беспокоят.
    Ответ написан
    4 комментария
  • Можно ли по БЭМ вкладывать блок внутрь элемента?

    Ifelseapps
    @Ifelseapps
    Frontend developer/JavaScript developer
    Можно, и миксовать на одной dom-ноде тоже можно.
    Ответ написан
    Комментировать
  • Можно ли по БЭМ вкладывать блок внутрь элемента?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    Не просто можно, а нужно.
    <div class="header">
        <div class="header__top">
            <div class="logo"></div>
        </div>
        ...
    </div>
    Ответ написан
    Комментировать
  • Почему браузер не обновляет сорцы?

    copist
    @copist
    Empower people to give
    1. Вагрантом пользуешься?

    Выключи sendfile в Nginx и Apache

    если nginx - в файле /etc/nginx/nginx.conf и поменяй опцию
    sendfile off

    если Apache - в зависимости от операционной системы - найди httpd.conf или apache.conf и поменяй опцию EnableSendfile off

    2. Заголовки Expiration устанавливаешь?
    Это на самом деле хорошая практика, но в разработке мешает
    Попробуй сделать так: на продакшене заведи файл VERSION.txt и записывай туда номер версии (например, 1.0) в тот момент, когда обновление выкатываешь. У себя такой файл не держи.
    Когда подключаешь CSS к странице, то проверяй наличие такого файла. Если файла нет, то ставь текущую метку времени.

    Пример на PHP
    <?php
    $versionPath = 'path/to/VERSION.txt';
    $version = is_file($versionPath) ? file_get_contents($versionPath) : time();
    ?>
    <link rel="stylesheet" href="/path/to/style.css?v=<?php echo $version ?>">


    На продакшене у тебя будет ссылка на CSS с фиксированной версией вида
    <link rel="stylesheet" href="/path/to/style.css?v=1.0">


    А на твоей машине будет всегда уникальный URL, который будет свежим, даже если заголовок Expiration выставлен.
    <link rel="stylesheet" href="/path/to/style.css?v=1494560580">


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

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    • array_chunk() бьёт массив на группы по N элеметов.
    • array_map() применяет функцию к каждому из элементов.
    $cities = array('London', 'NY', 'LE', 'Rome');
    
    function wrapRow( $row) { return '<div>' . join(", ", $row) . '</div>'; }
    
    $rows = array_chunk( $cities, 3);
    $html = join( array_map("wrapRow", $rows));
    
    var_dump($html); // "<div>London, NY, LE</div><div>Rome</div>"
    Ответ написан
    Комментировать
  • Вечный оффлайн (невидимка) ВКонтакте неработает?

    sergiks
    @sergiks Куратор тега ВКонтакте
    ♬♬
    В оф. сообществе ВК LIVE пишут 2-го мая 2017:

    С прошлой недели статус Online стал работать точнее: теперь он отключается уже через пять минут после выхода пользователя из аккаунта вместо прежних пятнадцати. Из-за этих изменений перестал работать так называемый режим “невидимки” — баг, который позволял сидеть ВКонтакте, оставаясь как бы не в сети.

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

    GTRxShock
    @GTRxShock
    SA
    как минимум "$patternNic='/nic.*/'"

    либо:
    preg_match('/nic([\d-]*)/', 'nic0000-0000-0000', $matches); 
    var_dump($matches[1]); // string(14) "0000-0000-0000"


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

    StasBotev
    @StasBotev Автор вопроса
    Gabin
    Всё, я понял. Покурил, выпил чаю, подышал воздухом и сделал разметку на флексбоксах. Всё подогнано.
    Ответ написан
    Комментировать
  • Лицензия для wow.js?

    edalis
    @edalis
    HTML, CSS, JS, Node.js
    Используйте AOS и не парьтесь.
    Ответ написан
    1 комментарий
  • SSL-сертификат на DNS от Яндекс?

    @brar
    1. Имейте в виду, что если Вы отвяжете (разделигируете) домен от яндекса, то почта этого домена, если она есть, также отвяжется и перестанет работать, равно как и другие сервисы, сервисы (серверы), указанные в DNS. Так что узнайте у тестя, пользуется ли он или кто-либо другой, почтой nameN@your-domain.com. Если пользуется, то в вашем случае, технически наиболее простым вариантом будет найти доступ к учетке, указанной, как сказал Илья Мясин в dig your-domain.com soa +short. Если доступ всё же не найти, то убедитесь в том, что у вас есть все текущие записи DNS. Вы их должны будете прописать на новом DNS (у хостера, например).
    2. Добавление сертификата к сайту дело не совсем простое (лично для вас, исходя из вашего вопроса), так как надо будет прописывать редиректы в самом вебсервере, прописывать в robots.txt (если он используется) директиву host: https://your-domain.com. В яндекс вэбмастере в панели "переезд" сайта ставить https (в гугле соответственно тоже). И теперь самое главное, раз тесть переживает за позиции, то да переезд на https временно может изменить ранжирование.
    В общем, если Вы не сделаете правильно редиректы всех страниц с http на https, то сайт действительно уйдет из поиска. Так что подойдите к вопросу очень серьезно. Изучите материалы по переносу сайта на https. Изучите что нужно сделать непосредственно на движке вашего сайта, на вебсервере вашего сайта, в панелях управления сайтом в поисковиках (это я про яндекс вэбмастер и гугл-вэбмастер, если используется, конечно).
    Ответ написан
    1 комментарий