Задать вопрос
  • Как отформатировать числа в js?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Замените точку на пробел
    function changeSize(){
      option = $("#size option:selected");
      $('.price strike').text(option.attr('compare-price')
        .replace('.',' '));   
      $('.price').text(option.attr('price')
        .replace('.',' '));   
    }
    Ответ написан
  • PHP Голосование для всех. Какая лучше защита от повторного голосования?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Никак не показывать при повторном голосовании, что голос НЕ учтен. Пусть накрутчики и «случайно» голосующие повторно полагают, что их голос засчитан. Даже сохраняйте такие голоса в БД, но помечайте как фейковые. А затем раз в сутки их выбрасывайте из общих показателей. Можно даже наоборот – полноценно учитывать фейковые голоса, но накидывать так же голоса прочим вариантам, нивелируя накрутку.

    Это не даст легкого способа злодеям наладить механизм накрутки. Вслепую им будет труднее.

    А в остальном – все те же, EverCookie и FingerprintJS 2. Подробнее почитайте хороший материал на Хабре: отпечаток браузера и т.п.
    Ответ написан
    Комментировать
  • Реализовать очередь на php?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    • Gearman
    • Laravel и его очередь задач (Queue)
    • собственная реализация на Redis


    p.s. вставку в базу попробуйте реализовать, минуя PHP: например, модулем nginx сразу вставлять в Postgres или Redis.
    Ответ написан
    Комментировать
  • Где можно заработать на видеоуроках?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Envato Tuts+
    Ответ написан
    Комментировать
  • Какая технология (продукт) использована для этого графика?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    D3js

    (вынес в ответ из комментариев) Именно этот график построен на D3 – смотрите исходник фрейма виджета этого графика.

    D3 это библиотека, начиная с 4-й версии – набор отдельных модулей. В самих D3 нет «готовых» графиков, но есть всё для построения любого графика: красиво, с интерактивом и анимациями, загрузкой данных из внешних источников и т.п. Можно, конечно, брать чьи-то примеры графиков на D3 и модифицировать их под свои задачи.

    Стоимость разработки кастомного графика как в примере я бы очень приблизительно оценил в диапазоне от $100 до $1000.
    Ответ написан
    4 комментария
  • Что это за синтаксис в jquery?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Такая сигнатура, $( html, attributes) – создаёт новый HTML элемент. См. документацию.

    В вашем примере создаётся элемент кнопки <button>, внутри кнопки задаётся текст "Contact me". Эта кнопка вставляется в DOM-дерево после первого элемента <article> и на неё вешается слушатель события клика – метод show()
    Ответ написан
    Комментировать
  • Как разделить динамический вывод элементов на группы?

    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 Куратор тега PHP
    ♬♬
    // 3-й вариант
    printf( "Format: %s. Config: %s. System (OS): %s.\n\n", 
      $format,
      $config->path,
      $os
    );


    А воообще, «вам шашечки, или ехать?!» и «работает – не трожь!»

    Пишите код, как вам лично кажется лучше, пока работает и пока не получили аргументированных возражений от коллег по коду.
    Ответ написан
    2 комментария
  • Вечный оффлайн (невидимка) ВКонтакте неработает?

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

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

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

    Изменение формы (morphing) возможен только когда число точек в начальной и конечной фигурах одинаково. См. урок How SVG Shape Morphing Works и примеры на CodePen
    Ответ написан
    Комментировать
  • Как отправить картинку по ссылке POST методом?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    скачивать изображения всё-таки придётся – хотя бы по одному, во временную папку, чтобы загрузить в ВК и удалить у себя по окончании загрузки.

    Что касается непосредственно загрузки, можно использовать cURL и его CURLFile, или, удобнее, Guzzle. Например:
    $client = new \GuzzleHttp\Client;
    		$resource = fopen( $tmpfile, 'r');
    		$response = $client->request(
    			'POST',
    			$upload_url,
    			[
    				'multipart' => [
    					[
    						'name'	 => 'file',
    						'contents' => $resource
    					]
    				]
    			]
    		);
    		
    		$uploadResult = json_decode( $response->getBody());
    Ответ написан
    Комментировать
  • Можно ли в node.js создать условие зависящее от изменений в MySQL?

    Вы хотите реализовать паттерн pub-sub на MySQL – где такой возможности нет.
    Может, найти разумную альтернативу?
    • при вставке данных дёргать функцию, оповещающую node;
    • задействовать другое хранилище данных – например, Redis, где pub-sub прекрасно реализован;

    Ну, или остаётся так-себе вариант – polling – раз в N ms делать запросы к MySQL, проверяя, не появились ли новые записи.
    Ответ написан
    Комментировать
  • А SSL-сертификат можно и для IP без домена?

    Верно. Например.
    Ответ написан
    Комментировать
  • Конвертировать строку в объект?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    JSON.parse() возвращает объект или бросает исключение SyntaxError, если не парсится.

    Попробуйте примерно так:

    var lastGood = this.currentClient.jsondata, candidate, counter = 0, found = false;
    while ( ++counter < 100) {
      try {
        candidate = JSON.parse(boo);
      } catch(e) {
        this.currentClient.jsondata = lastGood;
        found = true;
      }
      if( found) break;
      lastGood = candidate;
    }


    Не сразу назначать полученное значение, а исползовать промежуточную переменную candidate. Ограничить максимальное число итераций счётчиком. Ловить исключение.
    Ответ написан
    Комментировать
  • Стоит ли удалять все символы из $_GET['submit']?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Можно использовать функцию filter_input() и очищающие фильтры.
    <?php
    $search = filter_input( INPUT_GET, "search", FILTER_SANITIZE_STRING);
    if( !empty($search)) {
      echo $search;
      echo "Yes";
    } else {
      echo "No";
    }
    Ответ написан
    1 комментарий
  • Как решить эту задачу?

    У меня дискретной математики не было, но решал бы так. Есть утверждения:
    Л: Пс Бд
    П: Лс Бд
    Б: Лс Пе

    Найдём пару утверждений из которых один оба раза сорвал, другой оба раза сказал правду. Поскольку утверждения Л-П связаны через Бд, а П-Б через Лс, остаётся пара Л-Б – кто-то из них оба раза правда, другой оба раза ложь.

    Ложное утверждение обозначу с воскл. знаком (логическое НЕ) – например, !Лс.

    Итак, один раз соврал и один сказал правду, выходит, Пончик: П: !Лс Бд

    Чтобы Лс было ложным, надо так же сделать ложными утверждения Б. Значит, Б оба раза соврал, а Л оба раза сказал правду:
    Л: Пс Бд
    П: !Лс Бд
    Б: !Лс !Пе

    Итого, точно знаем: Пс и Бд. Остаётся Ле.
    Ленчик – ель; Пончик – сосна; Батончик – дуб.

    upd. Таблица истинности так составляется?
    Л П Б  Пс Бд  Лс Бд  Лс Пе
    0 1 2  0  0   1  1   0  1  конфликт Бд и Лс
    0 2 1  0  0   0  1   1  1  конфликт Бд и Лс  
    1 0 2  1  1   0  0   0  1  конфликт Бд
    2 0 1  0  1   0  0   1  1  конфликт Бд и Лс
    1 2 0  1  1   0  1   0  0  ОК
    2 1 0  0  1   1  1   0  0  конфликт Лс

    Переменные три: истинность утверждений каждого персонажа. Три возможных состояния: 0 – оба раза соврал, 1 – оба раза правда, 2 – соврал-правда. Дальше раскрываем их значение по каждому из утверждений (0 ложь, 1 истина). Во всех вариантах, кроме одного возникают логические конфликты.
    Ответ написан
    Комментировать
  • Как аутентифицировать пользователя используя HMAC?

    sergiks
    @sergiks Куратор тега Алгоритмы
    ♬♬
    Пример использования – ВКонтакте и его iFrame приложения. Когда пользователь запускает приложение, нажав ссылку в ВК, открывается iframe сервера разработчика. ВК отправляет туда пользователя с некоторыми параметрами – среди них id пользователя ВКонтакте и прочие. И подпись (параметр auth_key), вычисляемый как md5 хэш от параметров, которые важно защитить от подделки пользователем, и «секрета» приложения.

    Т.е. схема приемлема, когда есть три стороны: сервер ВК, сервер приложения и «ненадёжный» юзер, который, возможно, захочет подделать передаваемые от ВК приложению параметры. «Секрет» известен только серверу ВК и серверу приложения. Вычисляемый на его основе хэш гарантирует целостность и неподдельность данных.

    В вашем случае HMAC имел бы смысл в схеме, например, аутентификации пользователя на одном сервере для работы на другом. Секретный ключ раскрывать пользователю, разумеется, не нужно.
    Ответ написан
    Комментировать
  • Как устранить ошибку "no access_token passed"?

    sergiks
    @sergiks Куратор тега ВКонтакте
    ♬♬
    Возможно, вы дёргаете методы API, доступ к которым с апреля стал требовать сервисного ключа доступа.
    Ответ написан
    Комментировать
  • По какому уравнению конвертировать время в проценты?

    sergiks
    @sergiks Куратор тега Алгоритмы
    ♬♬
    Парабола подойдёт? y = 100 - 100 * sqrt( x / N) (N – время, когда результат становится нулём)
    80e67e9beec44172b96322f4d832ea83.png
    Примерно в ваши точки ложится парабола с такими параметрами:
    y = 100 - 100 * sqrt( x / 176000)
    be47111e76a34a82b135672a3ee25914.png
    (здесь проценты в 1000 раз больше для пропорционального графика)

    Или, чтобы не так резко падало значение в первые моменты, можно взять смещённую логарифмическую кривую y = 100 - 30 ln( 1 + x / 10000)
    ab5f3ddc2f2d43eca10a1b7867704089.png
    Ответ написан
    2 комментария