• Почему не получается парсить баланс своего яндекс кошелька?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Хм. PHP-скрипт на некоем сервере парсит главную страницу с сайта yandex.ru? С новостного сайта? Нет, не с сайта денег money.yandex.ru, а именно с новостного?

    При этом PHP-скрипт сначала ДОЛЖЕН сделать полноценный вход/login на сайт с именем/паролем, сохранить cookies авторизации, и потом с этими cookies обращаться на сайт - только тогда ему будет корректно показан его денежный аккаунт. У вас ничего этого в скрипте НЕТ.

    ИТОГО: Изучайте вопрос, переделывайте скрипт.

    P.S. Сделайте вывод всей страницы, полученной с yandex.ru - и увидите, что данных о деньгах там нет, от слова "вообще". Либо я катастрофически не прав.
    Ответ написан
    1 комментарий
  • Как правильно написать код на JS по примеру кода РНР?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    var obj = {
        collect_debt_in_court: "",
        debt_repayment_or_repayment: "1", 
        sell_debt: ""
    };
    Ответ написан
    Комментировать
  • Javascript framework, который использует "$"?

    var $ = function(){}
    И получаешь конфликт на ровном месте.
    Ответ написан
    Комментировать
  • Где взять вектор plexus для Photoshop?

    Athanor
    @Athanor
    Лайк + Решение: не жмись, нажми
    А ещё проще сделать самому в Ai:

    1. Рисуем несколько точек разного размера:
    5e2a9d5c841f9220879291.jpeg

    Чем больше их будет и чем сильнее они будут отличаться тем лучше — тогда повторения будут менее заметны.

    2. Превращаем их в Symbol:
    5e2a9e032f986830867511.jpeg

    3. Берём инструмент Symbol Sprayer Tool (Shift+S), выбираем символ, который создали и генерим точки:
    5e2a9f3ac404c188977239.jpeg
    5e2a9fd1c3624107788563.jpeg

    4. Теперь остается только соединить их пером, провести настройки и добавить эффекты:
    5e2aa08be4a0a851111389.jpeg

    P.S. Конечно, проще где-то скачать готовое решение, но сначала его нужно найти и найти не какое-то, а подходящее для конкретной ситуации, что может занять время. Сделать самому сложнее в первый раз, но взамен вы получаете а) свободу; б) экономию времени; в) навык, который останется с вами и будет экономить время в будущем
    Ответ написан
    Комментировать
  • Где взять вектор plexus для Photoshop?

    takezi
    @takezi
    Intelligent people are full of doubts.
    Ответ написан
    Комментировать
  • Как задать высоту блока равной высоте viewport?

    asuikit
    @asuikit
    Скидываю пару примеров ответом на п.2, но думаю здесь одновременно решение и на п.1., на который не увидел код.
    Вариант первый:

    ..
    второй вложенный.
    для понимания первую строку и суть брал с самого вопроса

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

    @poniyur
    Мне не нравится, что раздел "Сегодня в кино" превратился в горизонтальный слайдер.
    Я (думаю как и многие) захожу на сайт кинотеатра посмотреть какие сейчас идут фильмы, ткнуть на интересующие, посмотреть расписание, сделать бронь.
    У вас я спотыкаюсь на первом шаге "посмотреть какие фильмы сейчас идут", я хочу видеть сразу все, я не хочу листать слайдер. Да, я согласен, что они могут не поместится в один экран, но я лучше промотаю чуть вниз, чем будут дэнсить со слайдером.

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

    Рейтинг ожидания? Кому-то это нужно?
    Окей, представим что нужно: почему 95% содержимого этого блока повторяет блок "Сегодня в кино"? Может объединить? Не хотите объединять - окей, но нафиг он такой огромный, наравне с главной секцией - "Сегодня в кино"?

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

    Блок с информацией - понравился
    Футер - ок

    По итогу:
    Редизайн - ну ок, визуально сделали лучше, это несложно.
    UX - имхо, ужасно, если бы мне пришлось выбирать каким сайтом пользоваться, старым вариантом или вашим редизайном, я 100% выбрал старый вариант, т.к. он тупо удобней.

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

    SerafimArts
    @SerafimArts
    Senior Notepad Reader
    Да тут элементарный же ответ: Comic Sans!

    ...ну или нечто на него смахивающее.
    Ответ написан
    1 комментарий
  • Оцените пожалуйста дизайн?

    AngryYumy
    @AngryYumy
    Заплати фрилансеру чеканой монетой
    Ну раз вопрос всё-таки сформулировали. Вообще я в дизайн не лезу, от слова совсем, но раз уже ляпнул тут А ляптну и Б. Собственно с виду дизайн приятный и лёгкий глазу, ну и в принципе вроде интуитивно понятный. А по цене, ну тут онли от вашей наглости и умение торгоша. Одни многостраничные сайты за 5к рисуют, а другие лого из говна и палок за 100к делают
    Ответ написан
    Комментировать
  • Оцените пожалуйста дизайн?

    joeberetta
    @joeberetta
    Читай: https://epdf.pub/google-for-dummies.html
    Так это верстка или редизайн? Если редизайн, то ничем не помогу (нет вкуса), но если редизайн+/верстка, то где код???
    Ответ написан
    4 комментария
  • Как на jQuery выполнить функцию после нескольких AJAX запросов?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Количество LI элементов заранее не известно, поэтому выполнять функцию WHEN с определенным количеством аргументов нет возможности.

    Согласиться с подобным утверждением - вот с чем нет возможности:

    $.when(...$('li').get().map(n => $.ajax())).then(/* выполняйте, чо там вам надо */);
    Ответ написан
    9 комментариев
  • Есть ли готовая библиотека уведомлений на PHP?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Весь список с гита: тут
    1. push-notification-library
    Ответ написан
    Комментировать
  • Как заменить значения в SQLlite таблице?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    пример

    пробую так:

    нужно так:

    получается так:
    Ответ написан
    Комментировать
  • Как на языке Lua сделать POST запрос к сайту?

    dollar
    @dollar Куратор тега Lua
    Делай добро и бросай его в воду.
    В самом языке Lua нет возможности взаимодействовать с Интернетом.

    Чтобы эту возможность добавить, нужно задействовать какое-нибудь расширение. Например, LuaSocket. Или можно написать своё. В любом случае, это будет на стороне ядра приложения, куда встраивается Lua. А в самом языке будет лишь доступ к предоставляемому приложением API.
    Ответ написан
    3 комментария
  • Событие при нажатии на любую ссылку в jQuery?

    zabudkin
    @zabudkin
    Инженер-системотехник, программист, админ, ТПУ!!!!
    $('a').click(e) => {
    alert(e);
    });
    e в данном случае это объект на который было совершено действие - click .
    соответственно наверное у e есть значение e.value например или e.text либо e.html()
    Дальше руки в ноги и учить
    Ответ написан
    Комментировать
  • Событие при нажатии на любую ссылку в jQuery?

    @QNA-1976
    $(function () {
        $('a').click(function() {
            alert($(this).attr('href'));
        });
    });


    для ссылок находящихся в подгружаемом контенте:
    $(function () {
        $(document).on('click', 'a', (function() {
            alert($(this).attr('href'));
        });
    });
    Ответ написан
    2 комментария
  • Есть ли где-то такое чудо в природе - локальный Яндекс.Диск или Google.Drive?

    @phiber_optic
    Synology как готовое решение выполнит твои задачи.
    Ответ написан
    Комментировать
  • Что не так в этом классе?

    HemulGM
    @HemulGM
    Delphi Developer, сис. админ
    Согласен с другими ответчиками, это не совсем ООП. Лишь один принцип ООП используется - класс и то как просто namespace.
    Вот примерно как ООП и VK API в Delphi:

    Класс - группировка для методов Auth

    TAuth = class(TVKEntity)
        /// <summary>
        /// Проверяет правильность введённого номера (возможность его использования для регистрации или авторизации).
        /// </summary>
        /// <param name="Phone">номер телефона регистрируемого пользователя</param>
        /// <param name="ClientId">идентификатор Вашего приложения</param>
        /// <param name="ClientSecret">секретный ключ приложения, доступный в разделе редактирования приложения</param>
        /// <param name="AuthByPhone">True — проверить правильность номера для авторизации,
        ///                           а не для регистрации нового аккаунта. По умолчанию: False.</param>
        function CheckPhone(Phone: string; ClientId, ClientSecret: string; AuthByPhone: Boolean = False): Boolean; overload;
        /// <summary>
        /// Проверяет правильность введённого номера (возможность его использования для регистрации или авторизации).
        /// С указанием текущих данных приложения ClientId и ClientSecret
        /// </summary>
        /// <param name="Phone">номер телефона регистрируемого пользователя</param>
        /// <param name="AuthByPhone">True — проверить правильность номера для авторизации,
        ///                           а не для регистрации нового аккаунта. По умолчанию: False.</param>
        function CheckPhone(Phone: string; AuthByPhone: Boolean = False): Boolean; overload;
        /// <summary>
        /// https://vk.com/dev/auth.restore
        /// </summary>
        function Restore(Phone, LastName: string): TResponse;
      end;


    Класс - асинхронный обработчик запросов

    TVKHandler = class
        const
          RequestLimit = 3; //Round(1000 / 3) + 10; //задержка между запросами 3 запроса в секунду + 10 мс страховка
      private
        FStartRequest: Cardinal;
        FRequests: Integer;
        FRESTClient: TRESTClient;
        FOnConfirm: TOnConfirm;
        FOnError: TOnVKError;
        FOnLog: TOnLog;
        FUseServiceKeyOnly: Boolean;
        FOwner: TObject;
        FOnCaptcha: TOnCaptcha;
        function DoConfirm(Answer: string): Boolean;
        procedure ProcError(Code: Integer; Text: string = ''); overload;
        procedure ProcError(E: Exception); overload;
        procedure ProcError(Msg: string); overload;
        procedure SetOnConfirm(const Value: TOnConfirm);
        procedure SetOnError(const Value: TOnVKError);
        procedure FLog(const Value: string);
        procedure SetOnLog(const Value: TOnLog);
        procedure SetUseServiceKeyOnly(const Value: Boolean);
        procedure SetOwner(const Value: TObject);
        procedure SetOnCaptcha(const Value: TOnCaptcha);
      public
        constructor Create(AOwner: TObject);
        destructor Destroy; override;
        function AskCaptcha(Sender: TObject; const CaptchaImg: string; var Answer: string): Boolean;
        function Execute(Request: string; Params: TParams): TResponse; overload;
        function Execute(Request: string; Param: TParam): TResponse; overload;
        function Execute(Request: string): TResponse; overload;
        function Execute(Request: TRESTRequest; FreeRequset: Boolean = False): TResponse; overload;
        property RESTClient: TRESTClient read FRESTClient;
        property OnConfirm: TOnConfirm read FOnConfirm write SetOnConfirm;
        property OnCaptcha: TOnCaptcha read FOnCaptcha write SetOnCaptcha;
        property OnError: TOnVKError read FOnError write SetOnError;
        property OnLog: TOnLog read FOnLog write SetOnLog;
        property UseServiceKeyOnly: Boolean read FUseServiceKeyOnly write SetUseServiceKeyOnly;
        property Owner: TObject read FOwner write SetOwner;
      end;


    Класс - LongPoll сервера, работающий в отдельном потоке

    TLongPollServer = class
       ...
        function Start: Boolean;
        procedure Stop;
        constructor Create; overload;
        constructor Create(AClient: TRESTClient; AMethod: string; AParams: TParams); overload;
        destructor Destroy; override;
        property OnError: TOnVKError read FOnError write SetOnError;
        property Interval: Integer read FInterval write SetInterval;
        property GroupID: string read FGroupID write SetGroupID;
        property OnUpdate: TOnLongPollServerUpdate read FOnUpdate write SetOnUpdate;
        property Client: TCustomRESTClient read GetClient write SetClient;
        property Method: string read FMethod write SetMethod;
        property Params: TParams read FParams write SetParams;
      end;


    Основной класс - невизуальный компонент для разработчиков

    TCustomVK = class(TComponent)
      private
        FOAuth2Authenticator: TOAuth2Authenticator;
        FOnLogin: TOnLogin;
        FPermissionsList: TPermissions;
        FGroupLongPollServers: TGroupLongPollServers;
        FAuthForm: TFormOAuth2;
        FAppID: string;
        FAppKey: string;
        FEndPoint: string;
        FHandler: TVKHandler;
        FBaseURL: string;
        FAPIVersion: string;
        FAccount: TAccount;
        FAuth: TAuth;
        FServiceKey: string;
        FUseServiceKeyOnly: Boolean;
        FIsLogin: Boolean;
        FOnError: TOnVKError;
        FOnLog: TOnLog;
        FOnErrorLogin: TOnVKError;
        FChangePasswordHash: string;
        FUsers: TUsers;
        FOnCaptcha: TOnCaptcha;
        FOnConfirm: TOnConfirm;
        FOnAuth: TOnAuth;
        function GetPermissions: string;
        procedure FAskCaptcha(Sender: TObject; const CaptchaImg: string; var Answer: string);
        procedure FAfterRedirect(const AURL: string; var DoCloseWebView: boolean);
        procedure FAuthError(const AURL: string; AStatusCode: Integer; var Cancel: WordBool);
        procedure FLog(Sender: TObject; const Value: string);
        procedure FVKError(Sender: TObject; Code: Integer; Text: string);
        procedure SetOnLogin(const Value: TOnLogin);
        procedure SetPermissionsList(const Value: TPermissions);
        procedure DoLogin;
        procedure SetAppID(const Value: string);
        procedure SetAppKey(const Value: string);
        procedure SetEndPoint(const Value: string);
        procedure SetPermissions(const Value: string);
        procedure SetHandler(const Value: TVKHandler);
        procedure SetBaseURL(const Value: string);
        procedure SetAPIVersion(const Value: string);
        procedure SetServiceKey(const Value: string);
        procedure SetUseServiceKeyOnly(const Value: Boolean);
        procedure SetOnError(const Value: TOnVKError);
        procedure SetOnLog(const Value: TOnLog);
        procedure SetOnErrorLogin(const Value: TOnVKError);
        procedure SetOnCaptcha(const Value: TOnCaptcha);
        procedure SetOnConfirm(const Value: TOnConfirm);
        procedure SetOnAuth(const Value: TOnAuth);
        procedure DoAuth(const AURL: string);
      public
        constructor Create(AOwner: TComponent); override;
        destructor Destroy; override;
        procedure DoLog(Sender: TObject; Text: string);
        procedure Login(AParentWindow: TWinControl = nil);
        procedure CallMethod(MethodName: string; Params: TParams; Callback: TCallMethodCallback = nil);
        procedure GroupLongPollServerStart(GroupID: string);
        procedure GroupLongPollServerStop(GroupID: string);
        /// <summary>
        /// Универсальный метод, который позволяет запускать последовательность других методов, сохраняя и фильтруя промежуточные результаты.
        /// https://vk.com/dev/execute
        /// </summary>
        /// <param name="Code">код алгоритма в VKScript - формате, похожем на JavaSсript или ActionScript (предполагается совместимость с ECMAScript). Алгоритм должен завершаться командой return %выражение%. Операторы должны быть разделены точкой с запятой. </param>
        function Execute(Code: string): TResponse;
        property PermissionsList: TPermissions read FPermissionsList write SetPermissionsList;
        //Группы методов
        property Account: TAccount read FAccount;
        property Auth: TAuth read FAuth;
        property Users: TUsers read FUsers;
        //
        property AppID: string read FAppID write SetAppID;
        property AppKey: string read FAppKey write SetAppKey;
        property EndPoint: string read FEndPoint write SetEndPoint;
        property Permissions: string read GetPermissions write SetPermissions;
        property Handler: TVKHandler read FHandler write SetHandler;
        property APIVersion: string read FAPIVersion write SetAPIVersion;
        property BaseURL: string read FBaseURL write SetBaseURL;
        property ServiceKey: string read FServiceKey write SetServiceKey;
        property UseServiceKeyOnly: Boolean read FUseServiceKeyOnly write SetUseServiceKeyOnly;
        property IsLogin: Boolean read FIsLogin;
        property ChangePasswordHash: string read FChangePasswordHash;
        //
        property OnLogin: TOnLogin read FOnLogin write SetOnLogin;
        property OnError: TOnVKError read FOnError write SetOnError;
        property OnErrorLogin: TOnVKError read FOnErrorLogin write SetOnErrorLogin;
        property OnLog: TOnLog read FOnLog write SetOnLog;
        property OnCaptcha: TOnCaptcha read FOnCaptcha write SetOnCaptcha;
        property OnConfirm: TOnConfirm read FOnConfirm write SetOnConfirm;
        property OnAuth: TOnAuth read FOnAuth write SetOnAuth;
      end;


    И конечно, все представления и структуры в виде классов

    5e1c425e0b2f5671276122.png

    Ну и вот работа такого класса в designtime

    5e1c404cea6dd998958891.png

    И код равный твоему

    5e1c446dea3d6273622206.png

    Конечно не образец идеального кода... Но что есть
    Ответ написан
    Комментировать
  • Как создать свою игру на JS?

    GavriKos
    @GavriKos Куратор тега Разработка игр
    Берите какой нить популярный движок, который подойдет под ваши технические требования, и делайте на нем.

    Тут даже больше все упирается в платформу. Если веб не нужен - то Unity. Если нужен - можно в сторону кокоса глянуть.
    Ответ написан
    4 комментария