Задать вопрос
  • Vue-chart-js как убрать фон сетки?

    Athanor
    @Athanor
    Лайк + Решение: не жмись, нажми
    Чтоб отключить сетку достаточно изменить значение
    gridLines: {
      display: true
    }

    =>
    gridLines: {
      display: false
    }

    demo

    UPDATE

    Где прочитать про все свойства?

    vue-chart-js это адаптер библиотеки chart.js для vue, следовательно следует обратиться к документации chart.js конкретно про стили гридлайнов есть здесь
    Ответ написан
  • В какой программе делать адаптивные баннеры?

    Athanor
    @Athanor
    Лайк + Решение: не жмись, нажми
    Доброго утра.

    Responsive баннеры можно делать в Adobe Animate анимированные или нет, не важно.
    https://www.youtube.com/watch?v=Tl4bYLB0ypY — вот пример

    Pavel Palenin
    Head of design in Athanor
    Ответ написан
    1 комментарий
  • Почему body без цвета?

    Athanor
    @Athanor
    Лайк + Решение: не жмись, нажми
    Можно использовать для этого getComputedStyle
    Ответ написан
    Комментировать
  • Api яндекс погоды, как получить ответ на русском?

    Athanor
    @Athanor
    Лайк + Решение: не жмись, нажми
    Действительно странно.
    Спросили у техподдержки яндекса и вот какой ответ получили:

    Я верно понимаю, что вас смущают обозначения вроде condition: "partly-cloudy-and-light-snow"? Дело в том, что это по сути коды, а не текстовые поля. Поэтому они будут отображаться на английском при любом языке интерфейса .

    Чтобы понять, работает lang или нет, пожалуйста, обратите внимание на url поле. В ручке информера при изменении языка url будет меняться.


    Что же делать, если вам все таки нужно получить перевод этих самых condition: "partly-cloudy-and-light-snow"? Один из вариантов — самостоятельно написать array map. Будет что-то в таком стиле:
    const yandexResponse = await getForecast();
    const weatherTranslations = {
     'partly-cloudy-and-light-snow': 'небольшой снег'
    };
    console.log(weatherTranslations[yandexResponse.fact.condition])


    Все переводы можете взять из документации.
    Ответ написан
    Комментировать
  • Почему не сбрасывается таймер в js?

    Athanor
    @Athanor
    Лайк + Решение: не жмись, нажми
    Вероятно потому что начальное значение таймера у вас завязано на текущее время

    var now = new Date(),
                                    times = [
                                        0 - now.getHours(),
                                        25 - now.getMinutes(),
                                        59 - now.getSeconds(),
                                    ],


    UPDATE

    кроме того, строка clearInterval(times) работает не так, как вы, вероятно этого ожидаете. Она нужна, чтоб отменить запуск интервального таймера. Принимает на вход id этого таймера, вы же туда передаете массив с значением таймера.
    Ответ написан
  • Как сгладить контуры SVG?

    Athanor
    @Athanor
    Лайк + Решение: не жмись, нажми
    Добрый день.

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

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

    Было:
    5e3d5a1152258521154092.png

    Стало:
    5e3d5a2e71f32230995787.png

    Исправленный файл
    https://mab.to/sG4WI9YUe

    Вообще алгоритмы рендеринга векторов бывают разные, можно посмотреть эту статью и попробовать поискать ещё решение: https://habr.com/ru/post/318880/

    Pavel Palenin
    Head of design in Athanor
    Ответ написан
    2 комментария
  • Где найти такой вектор?

    Athanor
    @Athanor
    Лайк + Решение: не жмись, нажми
    День добрый, а её там и не должно быть, это продукт, который сделал другой дизайнер, под свою задачу, конечно же он это не выложит в открытый доступ. Может быть кто-то и сливал подобное в открытый доступ, но найти будет крайне сложно, думаю скорее нельзя, слишком узкий запрос.

    Можете попробовать купить такое изображение на стоках, прямо такую, как на картинке в ряд ли удастся найти, но очень похожую можно поискать: https://www.shutterstock.com/ru/search/head+dots?i...

    А вообще это в 3d редакторе скорее всего сделано, можете попробовать научиться и сделать сам, если очень нужно.

    Pavel Palenin
    Head of design in Athanor
    Ответ написан
    1 комментарий
  • Где искать программистов для проекта?

    Athanor
    @Athanor
    Лайк + Решение: не жмись, нажми
    Давайте сначала про дороговизну )

    Как правило, найти сильного разработчика, работающего на себя, за которым не нужен отдельный проджект-менеджер, аналитик в помощь и тестировщик, это редкость и если рассматривать индивидуальных разработчиков, то сейчас сильные фронтендеры, которые обладают достаточным объемом как технических, так и коммуникационных навыков, зарабатывают в районе 170-250к до вычета налогов в компаниях, где за них платят еще и страховые и пенсионные отчисления и где они имеют оплачиваемый отпуск. За эти деньги такой разработчик работает условные 8 часов (по факту, 6 - это обычно максимум) в день в течение 248 рабочих дней. При этом, у работодателя у него есть еще 28 дней отпуска, что уменьшает количество рабочих дней до 220, практически не уменьшая сумму его зарплаты.

    Соответственно, опытный разработчик, который разбирается в рынке, запросит как минимум 170000 * 12 / 220 = 9272 руб/день, а более уверенный в себе - все 13636 руб/день, что является вилкой от 1159 руб. до 1704 руб (или от $18 до $27) в час при 8-часовом рабочем дне (а при 6-часовом от $24 до $36), что для мирового рынка является достаточно низкой ставкой для таких услуг. Эту сумму вы можете считать некой планкой качества, ниже которой риски взаимодействия с недостаточно опытным разработчиком существенно возрастают.

    Теперь по вашему вопросу: разработчикам с такой ставкой интереснее работать на зарубежных заказчиков и продвигаться на upwork.com им, вероятно, будет комфортнее, чем работать на российском рынке. Я сам много лет работал на апворке и по себе, например, могу сказать, что на заказы со ставкой >$35 уже обращал внимание. Моя гипотеза в том, что $25-35 это нижняя планка, за которую можно найти разработчика и искать лучше именно там (хотя есть и другие биржи, но делюсь своим личным опытом) и именно там они обитают и я слышал много историй успеха (и в т.ч. был ей), где люди и компании находили очень достойных исполнителей. Важный момент только брать проверенных исполнителей с хорошими отзывами.

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

    С уважением,
    Иван Томилов
    CEO of Athanor
    Ответ написан
    Комментировать
  • Как преподавать алгоритмы и структуры данных слепому?

    Athanor
    @Athanor
    Лайк + Решение: не жмись, нажми
    Мое почтение, Ben_r007.
    Идеальным решением выглядит использование рельефного принтера (принтера Брайля), но их высокая цена не внушает оптимизма.
    Довольно широкий ассортимент представлен здесь (ссылка).

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

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

    Поиск заказной розничной печати на принтере Брайля не увенчался у меня успехом, увы.

    Желаю удачи в освоении профессии!

    С уважением,
    Олег Раев
    CIO of Athanor
    Ответ написан
    2 комментария
  • Почему не происходит замыкание?

    Athanor
    @Athanor
    Лайк + Решение: не жмись, нажми
    Потому что при каждом клике count создается заново. Чтоб брать count из замыкания, стоит вынести его куда-то повыше, например так.
    Ответ написан
  • Как отрезать кусок BORDER'а?

    Athanor
    @Athanor
    Лайк + Решение: не жмись, нажми
    Можно сделать через псевдо-элемент DEMO
    Ответ написан
    1 комментарий
  • Фон ячейки в таблице?

    Athanor
    @Athanor
    Лайк + Решение: не жмись, нажми
    Не совсем ясна суть проблемы, но предположу, что дело в отсутствии свойства border-collapse
    попробуйте так, если не поможет, собирайте песочницу и кидайте в комменты, будем разбираться.
    Ответ написан
    Комментировать
  • Как создать такое изображение?

    Athanor
    @Athanor
    Лайк + Решение: не жмись, нажми
    Есть пара решений.

    Можно создать специальную кисть: https://www.youtube.com/watch?v=iajUYlKDpWk
    А можно сделать чуть хитрее: https://www.youtube.com/watch?v=vU0nrnMVQ7Q

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

    Павел Паленин
    Head of design in Athanor
    Ответ написан
  • Как добраться до переменной в объекте?

    Athanor
    @Athanor
    Лайк + Решение: не жмись, нажми
    Это очень похоже на vue. Если это он и это код вашего компонента, то все и так должно работать.
    Если это не он, то просто замените this на app.data(), т.к. this в данном случае указывает на methods.
    Ответ написан
    1 комментарий
  • Как реализовать адаптивный CSS Grid (FlexBox)?

    Athanor
    @Athanor
    Лайк + Решение: не жмись, нажми
    Ваш вариант лучше чем предложенный выше через media, т.к. вам не надо хардкодить ширину экрана. Если на каком-то устройстве ваш текст будет выглядеть иначе и перенос случится на большем/меньшем экране, то верстка поедет и придется втыкать костыли, чтоб для разных устройств и ос отрабатывали свои media.

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

    Athanor
    @Athanor
    Лайк + Решение: не жмись, нажми
    Добрый час, M4xwell.

    Ваш $phone всегда нормирован?
    Телефон может записываться совершенно различными способами (+7926..., +7(926)..., 8926, 8(926), 8 926)

    Предположим, что да. В таком случае, $phone содержит 11 символов, начинающихся на "89".
    План прост:
    1. Формируем массив искомых значений (предполагаю, что все они по 4 символа).
    2. Выделяем из $phone первые четыре символа с помощью метода substr и записываем в $phoneCode
    3. Ищем совпадение $phoneCode в массиве искомых значений с помощью метода in_array.

    <?php
    $successCodes = ["8909", "8961", "8900"]; //Наполнить на свое усмотрение
    $phone = "89091234567" // Заполняется динамически, в соответствии с вашей логикой приемки параметров
    $phoneCode = substr($phone, 0, 4);
    if (in_array($phoneCode, $successCodes)) {
      echo "Успех";
    } else {
      echo "Неудача";
    }

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

    Если параметр $phone приходит от пользователя в произвольном виде, вам необходимо будет его нормализовать или валидировать.

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

    С уважением,
    Олег Раев
    CIO of Athanor
    Ответ написан
    5 комментариев
  • Условия в mysql?

    Athanor
    @Athanor
    Лайк + Решение: не жмись, нажми
    Добрый час, Евгений.

    Предположим, что DDL вашей таблицы следующий:
    CREATE TABLE settings (
    	caption VARCHAR(255) UNIQUE NOT NULL, -- принимает значения option, setup
    	value INT NOT NULL DEFAULT 0
    );

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

    Проще всего вашу задачу решить таким запросом:
    UPDATE settings S1, settings S2
    SET S1.value = 1
    WHERE 
    	S1.caption IN ('setup1', 'setup2')
    	AND S2.caption = 'option' AND S2.value = 0;

    Обратите внимание, что поле "caption" объявлено с флагом UNIQUE, это добавит индекс и в случае, если значений в таблице достаточно много, ускорит выполнение запроса.

    Прошу уточнить, требуется ли разъяснить механизм выполнения запроса.

    С уважением,
    Олег Раев
    CIO of Athanor
    Ответ написан
  • Корпоративная почта для небольшой организации без лимитов на отправку писем?

    Athanor
    @Athanor
    Лайк + Решение: не жмись, нажми
    Добрый час, Константин.
    Разделю ваш вопрос на две части:
    1. Настройка почты на домене
    2. Организация рассылок клиентам

    I. Настройка почты на домене
    Я предлагаю рассмотреть несколько популярных инструментов, опыт использования которых у меня имеется.

    И там, и там, есть:
    • антиспам
    • фильтры сообщений
    • веб-клиент
    • почтовый клиент можете использовать любой, SMTP/IMAP имеется
    • привязка к вашему домену

    A) Яндекс.Коннект
    В базовом варианте использования (выглядит, что это ваш случай), сервис будет предоставляться бесплатно.
    Если же захочется фишек (доп. место на облачном диске, активное использование вики), то 190 руб за пользователя также вписывается в бюджет (190*50 = 9500 руб).
    Подробнее с ценами можно ознакомиться здесь

    Б) Google GSuite
    Славится своими инструментами для совместной работы:
    • Таблицы
    • Документы
    • Видеоконференции
    • Календарь-органайзер

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

    Цена в базовом варианте - ~6$ за пользователя. При текущем курсе, выезжает за ваш бюджет (6*50*63 = 18898 руб).
    С тарифами можно ознакомиться здесь

    Вариант актуален в случае, если описанный выше ключевой функционал будет восстребован.

    II. Организация рассылок клиентам

    Начну с неясностей. Вопросы нумерую для удобства ответов.

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

    есть вопросы:
    1. Интересует, что это за программа (название)?
    2. Имеется ли возможность модифицировать код программы для использования внешнего API?

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

    Мне нравится сервис Mailgun (mailgun.com).
    Для интеграции потребуется:
    1. Завести аккаунт
    2. Подтвердить права на домен
    3. Внедрить вызовы API в тех местах, где формируются счета клиентам

    Цена в случае 5*5000 писем укладываетесь в тариф 35$. Подробнее с тарифами можно ознакомиться здесь

    Почему вариант с Mailgun менее вероятно будет попадать в Спам?
    • Они используют различные IP адреса, не замеченные в СПАМ рассылках
    • Они заточены под рассылки (нет внутренних лимитов - защиты от вирусных атак)

    Тем не менее, у почтовых служб есть свои СПАМ анализаторы, которые могут посчитать, что ваше письмо - спам.
    Рекомендую прочитать эту статью по теме причин попадания писем в спам и выполнить рекомендации.

    Ожидаю от вас ответа на мои вопросы и успеха с настройкой корпоративной почты и рассылок.

    С уважением,
    Олег Раев
    CIO of Athanor
    Ответ написан
    3 комментария
  • Где в данном случае создалась переменная?

    Athanor
    @Athanor
    Лайк + Решение: не жмись, нажми
    Во первых, для меня было странным то, что при вызове конструкции new F( ) не создался объект, ну в принципи я допустил, что в переменную b записалась возвращаемая из функции F( )

    А это, кстати, происходит потому что вы возвращаете не примитивное значение в функции-конструкторе.

    Подробней

    Если хотите получить a в объекте, возвращенном функцией, конструктором, нужно убрать returnиз F
    Ответ написан
    1 комментарий
  • Как сделать ссылку на составной ключ в postgresql?

    Athanor
    @Athanor
    Лайк + Решение: не жмись, нажми
    Это сделать довольно легко:

    CREATE TABLE ACCOMMODATION( --ПРОЖИВАНИЕ
    number_of_apartment INTEGER ,
    housing_name CHARACTER VARYING(30),
    FOREIGN KEY (number_of_apartment, housing_name) REFERENCES APARTMENT (number_of_apartment, housing_name)
    );

    Однако, замечу, что лучшей практикой было бы сделать простой первичный ключ в APARTMENT и сослаться на него, а уникальность можно контролировать на уровне таблицы APARTMENT через unique-индекс.
    Ответ написан
    Комментировать