Ответы пользователя по тегу Веб-разработка
  • Как вычислить координаты многоугольного объекта и как с ними работать?

    copist
    @copist
    Empower people to give
    В твоём случае, как мне кажется, камень изображён в изометрии, то есть мы видим его фронтальную, боковую и верхнюю грань. Исходя из этого столкновение произойдёт не тогда, когда границы точно пересекутся, а при небольшом наложении.

    Как то вот так:
    de058d5c19fa45bcba3be363600056aa.png4c91b5b1e4844574b4ee940c10709f4f.png

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

    Вот пример видео для иллюстрации пересечений объектов https://www.dropbox.com/s/so1j4p12f3awodd/rock_hit...
    Ответ написан
    3 комментария
  • Как правильно передать заголовки в curl?

    copist
    @copist
    Empower people to give
    $headers = array("Authorization: Bearer <ACCESS_TOKEN>",
                     "Content-Type: application/json");
    
    $ch = curl_init('https://api.dropboxapi.com/2/users/get_space_usage');
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, "null");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($ch);
    
    curl_close($ch);
    echo $response;


    Скопировал из stackoverflow и проверил. Вернуло:
    {"used": 5195012629, "allocation": {".tag": "individual", "allocated": 5771362304}}


    Если указать неверный токен, то будет такая ошибка:
    Error in call to API function "users/get_space_usage": The given OAuth 2 access token is malformed.
    Ответ написан
  • Каких онлайн-сервисов, веб-приложений не хвататет в интернете?

    copist
    @copist
    Empower people to give
    1. Сервис для интеграции веб-приложений и сторонних API
    Краткое описание тут: copist.ru/blog/2016/02/02/soa-idea
    Есть концепт-идея, в основном только на бумаге, почти пол тетради А4.

    2. Пришла жаба и удалила

    3. Пришла жаба и удалила

    Налетай, не скупись.
    Покупай живопИсь.

    Будете делать - меня позовите.
    Ответ написан
    21 комментарий
  • Вопрос про технологию чат рулетки?

    copist
    @copist
    Empower people to give
    Можно попробовать сделать вариант когда клиентское приложение само сообщает какой-нибудь случайный идентификатор, как делают клиентские приложения для работы с анонимными торрент-трекерами.

    Но эти идентификаторы нужно где-то сохранить, чтобы можно было выбрать двух собеседников.

    При использовании websocket можно обойтись списком коннектов в оперативной памяти. Я такой способ не люблю, потому что при перезапуске приложения список коннектов обнуляется. Но сделать-то можно.

    В общем чат без авторизации с случайным выбором собеседников сделать можно. И для обычного чата тоже подойдёт.
    Ответ написан
    Комментировать
  • Действительно ли back-end разработка более консервативна, чем front-end?

    copist
    @copist
    Empower people to give
    Я понимаю, что уже год прошёл. Впишу своё мнение.

    Стек технологий для backend и frontend одинаково сложный. Много решений, много тонкостей. Как fullstack
    я знаю, о чём говорю.

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

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

    С другой стороны, портфолио фронтенд-разработчиков полно красивых скриншотов из готовых проектов, иногда даже ссылками на работающие проекты. Backend такой красотой похвастаться не могут - sphinx, memcache, mongo/redis, mysql/postgre, php/python/ruby - ну или ещё что-нибудь - я имею в виду, что приходится только стек технологий упоминать. А если в портфолио и будут скриншоты, то только с целью сказать позже: там, в тени красивого интерфейса, стабильно и быстро работает мой код.
    Ответ написан
    Комментировать
  • Как собрать данные посетителя сайта?

    copist
    @copist
    Empower people to give
    Я нашёл в этом вопросе три технологических вопроса:

    1. Про вычисление города
    Есть форма заявки с полями "номер телефона" ... добавлен на базу mysql ... адрес (город проживание клиента который нажал на кнопку)

    Если в форме нет поля для выбора страны и города, то можно вычислить приблизительное местоположение по IP адресу. Это неточная информация, ей нельзя доверять на 100%, потому что пользователь мог зайти на сайт через анонимные прокси. Желательно уточнить у него - "Вы точно из города X?".

    Для автоматического вычисления гео-данных можно воспользоваться платной базой GEO данных сервиса MaxMind или платными открытыми веб-сервисами
    Или бесплатными сервисами, которые возвращают данные с очень большой погрешностью, например вместо города возвращают страну :(
    Пример получения информации через API MaxMind для языка PHP
    <?php
    require_once 'vendor/autoload.php';
    use GeoIp2\Database\Reader;
    
    // This creates the Reader object, which should be reused across lookups.
    $reader = new Reader('/usr/local/share/GeoIP/GeoIP2-City.mmdb');
    
    // Replace "city" with the appropriate method for your database, e.g., "country".
    $record = $reader->city('128.101.101.101');
    
    print($record->country->isoCode . "\n"); // 'US'
    print($record->country->name . "\n"); // 'United States'
    print($record->country->names['zh-CN'] . "\n"); // '美国'
    
    print($record->mostSpecificSubdivision->name . "\n"); // 'Minnesota'
    print($record->mostSpecificSubdivision->isoCode . "\n"); // 'MN'
    
    print($record->city->name . "\n"); // 'Minneapolis'
    
    print($record->postal->code . "\n"); // '55455'
    
    print($record->location->latitude . "\n"); // 44.9733
    print($record->location->longitude . "\n"); // -93.2323


    Пример получения информации об IP адресе на языке PHP через открытый сервис ipinfo.io
    $ip = $_SERVER['REMOTE_ADDR'];
    $details = json_decode(file_get_contents("http://ipinfo.io/{$ip}"));
    echo $details->city; // -> "Mountain View"


    Пример запроса:
    $ curl ipinfo.io/8.8.8.8

    Пример ответа:
    {
      "ip": "8.8.8.8",
      "hostname": "google-public-dns-a.google.com",
      "loc": "37.385999999999996,-122.0838",
      "org": "AS15169 Google Inc.",
      "city": "Mountain View",
      "region": "CA",
      "country": "US",
      "phone": 650
    }


    2. Про передачу данных с веб-страницы
    Как сделать чтобы при нажатии на кнопку запрос был добавлен на базу

    Можно отправить форму на сервер методом POST, а можно передать по технологии AJAX.
    learn.javascript.ru/ajax-intro

    3. Про сохранение в базу данных
    Как сделать чтобы ... эти данные записать на БД

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

    copist
    @copist
    Empower people to give
    Можно поставить скрипт Яндекс.Метрики или ГугльАналитики
    Хочу заметить что в любом случае не учитывают переходы с защищённых на незащищённые сайты.
    То есть при переходе с httpS:/_/domain1.ru на http:/_/domain2.ru в document.referrer будет пусто либо неточная информация)

    Ограничение реализовано на уровне браузеров.
    Отключить нельзя.
    Можно устранить если сделать свой сайт на httpS.
    Ответ написан
    Комментировать
  • Где проектировать структуру сайта?

    copist
    @copist
    Empower people to give
    gliffy.com Online Diagram Software and Flowchart Software
    Ответ написан
    Комментировать
  • Почему неверно отображается оригинальный размер SVG?

    copist
    @copist
    Empower people to give
    Я в вашем примере ничего про 300x150 не увидел.

    Касательно SVG
    view-source:http://azat-test.webtm.ru/myworld.svg

    1. У него есть свой размер, определяемый внутренним содержимым, то есть кривыми линиями и примитивами.
    Пример:
    <path id="AE" title="United Arab Emirates" class="land" d="M619.87,393.72L620.37,393.57L620.48,394.41L622.67,393.93L624.99,394.01L626.68,394.1L628.6,392.03L630.7,390.05L632.47,388.15L633,389.2L633.38,391.64L631.95,391.65L631.72,393.65L632.22,394.07L630.95,394.67L630.94,395.92L630.12,397.18L630.05,398.39L629.48,399.03L621.06,397.51L619.98,394.43z"/>

    Вот тут куча точек в сложной кривой.

    2. В файле указан конкретный размер картинки
    <svg xmlns="www.w3.org/2000/svg" version="1.1" viewbox="0 0 1009 651" width="1009" height="651">
    Все элементы этого изображения масштабируются под указанный размер
    Ответ написан
    Комментировать
  • Что еще нужно знать программисту?

    copist
    @copist
    Empower people to give
    Ну в общем, уже пора. Начинай. IDE (sublime, webstorm и другие) - классные штуки, очень облегчают жизнь.
    А если онлайн-редакторы кода, то codepen.io очень неплох и cloud9

    А про практические задачи, то есть то, что было бы хорошо уметь: Какие задачи нужно уметь выполнять на JS начинающему?
    Могу аналогичный список составить для серверных языков
    Ответ написан
    1 комментарий
  • Стоит ли работать программистом?

    copist
    @copist
    Empower people to give
    Я тут всем пролайкал ответы. Отвечу и сам.

    Денежный вопрос стоял остро, первые несколько лет, пока я сортировки пузырьками писал сам и фантазировал на тему своего мегакрутого фреймворка, который на поверку был 10% от Yii или Zend Framework.

    Затем мега скачок. И в стартапах поработал, и в интерпрайзе, и на фрилансе. Почему-то всё стало легко. И дедлайны легко переживаю. Постепенно выбрал себе специализацию: веб-архитектор и backend-разработчик.

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

    Знаю 15+ языков программирования, в разной степени.

    Что я всегда за собой замечал - всё в IT всегда было в удовольствие. И сервера ставил, и интернет-магазины делал с интересом, и веб-порталы кодил.

    Ответом на часть твоих вопросов будет следующее:
    * Чтобы нравилась работа, делай то что нравится тебе
    * Чтобы стОило, делай то, что нужно другим
    * Когда первое и второе совпадут, ты будешь финансово обеспечен и морально удовлетворён

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

    copist
    @copist
    Empower people to give
    Простой путь
    Фонтелло умеет добавлять иконки. Посмотри их API, у них есть утилита на github и веб-интерфейс.

    https://github.com/fontello/fontello#developers-api
    https://github.com/fontello/fontello

    Распаковываешь архив с веб-шрифтом, добавляешь несколько иконок и запускаешь утилиту - через некотрое время получишь дополненный веб-шрифт

    Джедайский путь
    1. записать файл icons8.woff.b64 такого содержания:
    d09GRgABAAAAABaUAA4AAA ..... много буков ..... /9YNLL0bmRhcAAfTIrgAAAA=

    2. распаковать из формата base64
    php -r '$file = file_get_contents("icons.woff.b64"); file_put_contents("icons8.woff", base64_decode($file));'


    3. полученный файл шрифта icons8.woff с помощью https://everythingfonts.com/woff-to-svg сконвертировать в шрифт в формате SVG
    4. полученный файл c шрифтом в формате SVG icons8.svg с помощью https://github.com/icons8/svg-caster преобразовать в кучу SVG файлов-иконок
    5. добавить свои файлы-иконки в формате SVG
    6. с помощью fontello.com создать веб-шрифт из этого набора файлов-иконок

    НО
    А. Коды символов изменятся, в вёрстке иконки могут оказаться не на своих местах оказаться, если в HTML вставляются через коды, а не имена классов.
    Б. Иконки надо согласовать по размерам, чтобы новые две не выглядели воронами. Пригодится редактор Inkscape или Adobe Illustator
    Ответ написан
    6 комментариев
  • Новостной сайт с публичным api?

    copist
    @copist
    Empower people to give
    Любой RSS. Выдаётся в XML. Парсить легко. Любой новостной ресурс.
    habrahabr.ru/rss/interesting
    lenta.ru/rss
    Ответ написан
  • Как решить проблему после отправки POST?

    copist
    @copist
    Empower people to give
    Если надо остаться на той же странице
    <?php
    if (/* login success */) {
       header("HTTP/1.1 205 Reset Сontent");
    }

    Можно никуда не редиректить. Браузер забудет, что отправлял данные методом POST. Если перегрузить страницу, сообщений "Надо повторно отправить форму..." не появится.

    Если надо перейти на другую страницу, но чтобы не появлялось "Чтобы отобразить эту страницу, XXX должен отправить информацию..." когда он в браузере кнопку "Вернуться" нажмёт
    <?php
    if (/* login success */) {
       header( 'Location: /* new location*/', true, 205);
    }
    Ответ написан
  • Идея для проекта: уникальная или аналог существующего?

    copist
    @copist
    Empower people to give
    Первое значение "гуру" - мастер, учитель, наставник.
    С этой стороны, имя домена намекает, что его владелец - многоопытный специалист, выполняет какое-нибудь наставничество, духовное или профессиональное. Стало домен быть подходит под сервисы наставничества.
    Пример: https://smartprogress.do/site/evolution

    Второе значение гуру - достойный, великий, важный, тяжелый, утвердившийся в истине, непоколебимый.
    С этой стороны, имя домена могло бы означать не текущее состояние, а цель. "Я хочу стать гуру". Может быть опять же наставничество, а может быть и контентный проект, на котором можно ознакомиться с лучшими практиками, историями, приобрести литературу, записаться на тренинги, мастер-классы, курсы.
    В общем, чему-то научиться.
    Аналог - www.mann-ivanov-ferber.ru/samorazvitie-books samopoznanie.ru 4brain.ru

    Третий вариант - от сленгового значения гуру как профессионал. Портал для поиска работы для профессионалов. Кадровое агенство? Электронная биржа труда? На ум приходит Linked In

    Объединить все три идеи вместе?

    P.S. Знаю я человека, который питался идеей разработать проект под удобный домен profy.*** чтобы продать его за миллион зелёных бумажек. Тоже проект под доменное имя. А так вообще на нём болтался блог на wordpress и частично из-за своего названия был посещаемым.
    Ответ написан
    1 комментарий
  • CURL Почему сервер возвращает неполный ответ?

    copist
    @copist
    Empower people to give
    nginx ? Проверьте права на запись в /var/lib/nginx/fastcgi/
    Ответ написан
    Комментировать
  • Как проверить размер загружаемых файлов до загрузки на сервер?

    copist
    @copist
    Empower people to give
    Можно прочитать файл, не загружая на сервер
    Вот пример codepen.io/copist/pen/VvmLbZ - выбери файл в формате SVG и он сразу будет отображён. POST или AJAX не используются.

    Есть специальные библиотеки на JS, которые занимаются валидацией файлов на стороне браузера: расширение, размер в байтах, размер изображений в пикселах. У меня вот проверяется что выбран именно файл, содержащий разметку в формате SVG.

    А также в настройках PHP и веб-сервера можно указать максимальный объём данных для загрузки на сервер. При превышении размера сервер просто не будет принимать файлы.
    Ответ написан
    Комментировать
  • Как людям удается столько зарабатывать на фрилансе?

    copist
    @copist
    Empower people to give
    Создать новостной портал с дизайном, адаптивной версткой и посадить все это дело на Drupal за 4000р.


    Займи позицию победителя. Распиши задачу по этапам, оцени в часах, пересчитай в рубли, выставь встречный счёт. Могут испугаться и отказать. Могут оценить серьёзность подхода и согласиться.

    Молодой гусар спрашивает у поручика Ржевского, как это ему удается пользоваться таким успехом у женщин.
    - Очень просто, - отвечает он, - нужно подойти к женщине и сказать: "Мадам, позвольте вам впендюрить!" И все.
    - Поручик! Но ведь за такое можно и по морде!
    - Можно и по морде. Но обычно впендюриваю.


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

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

    Не пробовал удалёнку поискать? Аутсорс? (на сайтах вакансий искать "удалённо", "неполный день", "по совместительству"). И попутно ещё разовые заказы брать на биржах.

    А ещё есть биржи труда для стартапов, там бывают неплохие предложения по удалённой работе.

    и другие ресурсы по фразе стартап поиск команды
    Ответ написан
    9 комментариев
  • Можете дать пару примеров SPA (Single Page Application)?

    copist
    @copist
    Empower people to give
    https://gmail.com/ работает по большей части без перезагрузки страниц
    наше вот https://icons8.com/web-app тоже на Angular.JS
    Ответ написан
    Комментировать