Задать вопрос
  • Как сделать так чтобы проиндексировались страницы с _escaped_fragment_?

    copist
    @copist
    Empower people to give
    1. SEO для Rich Client Application
    Документация от Google https://developers.google.com/webmasters/ajax-crawling/ (Bing и Yahoo тоже поддерживают)
    И ещё статья в блоге googlewebmastercentral.blogspot.ro/2014/05/underst...

    2. Sitemap в порядке

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

    4. Посмотри сервисы


    P.S. А ещё мы свой сервис сделали и выложили в исходниках на github
    https://github.com/icons8/impresser

    Вот тут немного описания и статистики: habrahabr.ru/post/254213/#comment_8546193
    Ответ написан
    1 комментарий
  • Первое собеседование php?

    copist
    @copist
    Empower people to give
    По собеседованиям, которые прошёл сам, я составил опросник
    Анкета по веб-технологиям (ответы отдельно, чтобы не было соблазна подсматривать) и советы джуниорам по прохождению собеседований.

    Отвечу на последний вопрос
    И ещё в целом какая работа в тур фирме?


    Размер турфирм бывает разный. Это может быть турагенство с сайтом на wordpress или друпале. А нанимаю на постоянку просто потому что не знают, как нанимать почасовиков-фрилансеров.

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

    А может быть это туроператор. И ему надо реализовать хранение и выдачу данных для турагентов или произвести автоматизацию бизнес-процессов.
    В любом бизнесе полно работы для программистов.
    Ответ написан
    6 комментариев
  • Чем упростить иконку SVG для генерации веб-шрифта?

    copist
    @copist Автор вопроса
    Empower people to give
    Даю ответ на свой вопрос.

    Я сделал упрощатель "любых" SVG. Под "любыми" подразумевается тестовая выборка из почти 7000 иконок от нашей компании icons8.com - ни одного сбоя, все как на подбор. Тестовая выборка отличается тем, что все иконки в flatstyle. С другой стороны, я не видел ни одного веб-шрифта с многоцветными иконками.

    Работает на связке двух утилит, работающих в консольном режиме под Centos:


    Если позволят мои друзья по имени Альтруизм, Время и Честолюбие, я сделаю специальную страницу для аплоада пользовательских файлов SVG в стиле flatstyle и преобразованию в упрощённые. А тут уже прямой путь к веб-шрифтам.
    Ответ написан
    Комментировать
  • Как правильно отправить json через POST с помощью CURL?

    copist
    @copist
    Empower people to give
    Пример ты взял (приблизительно) отсюда www.lornajane.net/posts/2011/posting-json-data-wit... и очевидно, что у автора статьи всё работает

    Если тебе приходит пустота, то скорее всего на сервере фатальная ошибка.
    Проверяй error.log веб-сервера.
    Ответ написан
  • Нужен ли php фреймворк для реализации чеклиста

    copist
    @copist
    Empower people to give
    Посмотри вот эту статью
    Какие задачи возникают в результате отказа от испо...

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

    Я вот делал простую вещь: сокращатель ссылок. Есть реализация на самописном микро-фреймворке, есть - на фреймворке Phalcon, а на работе пришлось сделать ещё один (пример ссылки ic8.link/w ) и там простой switch/if/else/preg_match без статистики, без базы данных, без кэширования. Работает быстро и просто.
    Ответ написан
    1 комментарий
  • На каких технологиях основана работа подобных сайтов?

    copist
    @copist
    Empower people to give
    Не заметил я там никого уменьшения. У них сайт не респонсив.

    Подсветка по события onmouseover и onmouseout, повешана на теги <path> через javascript в файле www.a-centauri.ru/assets/js/js_pack.js строки 324

    take.ms/1G7mh
    take.ms/sbRPt

    Движущаяся область <div class="floor_popup"> с обозначением текущего выделения привязана к курсору через событие onmousemove на <body class="korpus1-1">
    take.ms/dED5U

    Всё это можно определить через отладчик
    Ответ написан
    1 комментарий
  • Какая структура у интернет-проектов Хабрахабр, Смартпрогресс?

    copist
    @copist
    Empower people to give
    «Дьявол в мелочах», — говорят арабы. «Бог в мелочах», — говорят христиане. Те и другие правы. Если вы не уделяете внимания деталям, за ними прячется дьявол. Если вы отдаете им должное, в них являет себя Бог.

    С разработчиками обоих сервисов можно связаться и спросить напрямую :) И пообщаться с их тараканами.

    Они могут начать с любой из перечисленных ниже тем
    1. Как проект появился: актуальность, востребованность, ориентированность на пользователя, удовлетворение потребностей, удобство пользования и как следствие идея и дизайн
    2. Как ведётся разработка: совместная разработка, системы контроля версий, автоматическое тестирование, автоматическое обновление
    3. Как они привлекали пользователей: SEO, реклама, вовлечение, удержание
    4. Как они росли: ориентация на рост, масштабирование, резервирование, кэширование, оптимизация
    5. Как они общаются с пользователями: обратная связь, поддержка пользователей, техническая поддержка
    5. Как они зарабатывают: платные услуги, привлечение и удержание клиентов, коммерческий эффект, эксперименты с пользователями
    6. Как они управляют проектом: перспективы, задачи, планирование работ, риски
    Это всё разные аспекты, но и это ещё не всё.
    Ответ написан
    4 комментария
  • Как лучше учить английский?

    copist
    @copist
    Empower people to give
    • Read both in Russian and english. Use bilingual books or books by method of Ilya Frank
    • Extend your vocabulary. Use lingq.com to extend it step-by-step
    • Talk to somebody. Use italki.com to find a native speaker and talk to him
    • Watch movies and TV shows in english. Also, there are a lot of good channels in youtube.
    • Switch all your devices to english: notebook, tv, smartphone. All.
    • Take a part in any international open source project
    • Use Google Translate. A little. Often it gives wrong translations, sometimes crazy translations.
    • Use grammarly to check your texts. It works great even free. Also, you can order paid proof-reading for your very important messages.
    • Think in english ;)


    Did you get this list? Well done!

    Here is special bilingua book "97 Things Every Programmer Should Know (97 вещей, ... both in english and russian - it helps to study technical english.
    Ответ написан
    2 комментария
  • Как структуризировать процесс обучения?

    copist
    @copist
    Empower people to give
    У вас среди вопросов уже был подобный и в нём уже указан приоритет технологий для изучения (ответ).

    А Petja указал правильный подход изучения каждой отдельной технологии (ответ)

    Я хотел бы раскрыть пункт "4. Практика и еще раз практика, решение множества конкретных задач"

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

    Для примера были взяты свежие задачи с бирж фрилансеров weblancer.net и fl.ru типа "создать тему к CMS", "сделать посадочную страницу" (landing page) или "разработать сайт-визитку".

    Были рассмотрены следующие способы изучения:
    1. Повторить работы опытных фрилансеров. Исходные макеты либо не дали, либо они уже отличаются от того, что есть на сайте.
    2. Включиться в открытый проект. Проблема в том, что сверстать страницы HTML можно несколькими способами, вплоть до image map или таблиц. А сравнить-то результат вёрстки не с чем.
    3. Взять где-нибудь бесплатно или купить шаблон, к которому прилагается макет PSD, изучить свёрстанный вариант и повторить. Это оказался самый эффективный способ. Платные шаблоны делают профессионалы, "вылизывают" их, доводят до совершенства. И бесплатные шаблоны есть очень крутые, но их мало.


    Мы использовали шаблоны с templatemonster. Там есть шаблоны под популярные CMS и просто HTML шаблоны. Также позже брали примеры из обзоров (35 примеров прекрасных посадочных страниц...) и повторяли несколько из них. Несложный макет в итоге верстается за сутки.

    Это покрывает темы (из указанного же списка):
    • XHTML, HTML4, HTML5
    • CSS2.1, CSS3
    • JavaScript, Ajax
    • jQuery
    • Twitter Bootstrap
    • CSS Grids
    • CSS Frameworks
    • Progressive Enhancement, Graceful Degradation
    • Responsive Web Design
    • CSS Pre-Processors (LESS / Sass)
    • CMS (WordPress, Joomla)
    • Data Formats (JSON, XML)
    • Internationalization / Localization
    • Image Editing Tools (Photoshop, Fireworks, etc.)
    • работа со шрифтами

    Задачи типовые, а охват тем сразу вот какой обширный. Изучение в интенсивном темпе заняло 2...4 месяца. Профессионалом так быстро не станешь, но на позицию junior уже можно претендовать.

    Так что мои советы:
    1. Чтобы получить бесценную практику, занимайся реальными вещами, а не учебными примерами
    2. Используй опыт профессионалов, чтобы повторять и копировать лучшие решения

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

    copist
    @copist
    Empower people to give
    Верстальщик преобразует графический макет (Photoshop или иной) в набор HTML + CSS + картинки. Иногда к свёрстанному макету может подключить типовые библиотеки Javascript, например, slider для картинок, или всплывающие подсказки (tooltip), или диалоговые окна (dialog/popup).
    Знания и навыки:
    • работа с графическими программами, чтобы понять, как собран макет
    • знание HTML, HTML5, CSS, CSS3, понятие про веб-шрифты, спрайты и другие технологии
    • пригодятся знания по HTML-фреймворкам, например, Twitter Bootstrap или Semantic UI
    • навыки кроссбраузерной вёрстки, чтобы в разных браузерах выглядело и работало одинаково
    • навыки отзывчивой вёрстки, чтобы можно было использовать на устройствах с разными возможностями и разрешениями
    • знание типовых решений javascript, чтобы реализовать простейшие вещи, заложенные в макете


    Фронтенд-разработчик делает так, чтобы макеты, полученные от верстальщика, были наполнены реальными данными. Если приложение построено как client-side (то есть вся основная логика загружается в виде огромного javascript в браузер, а данные запрашиваются с сервера по AJAX; это называется "толстый клиент"), то фронтенд-разработчику потребуется следующее:
    • знание HTML, HTML5, CSS, CSS3, понятие про веб-шрифты, спрайты, Comet и другие технологии
    • глубокое знание Javascript, включая использование готовых фреймворков, библиотек и написание расширений для них, что подразумевает объектно-ориентированное и событийное программирование
    • знание AJAX, CORS и навык создания тестовых затычек на стороне сервера, чтобы можно было разрабатывать приложение пока бакенд не готов


    Если фронтенд строится на стороне сервера, то дополнительно потребуется знать используемый серверный язык программирования (например, Python, Ruby или PHP) и используемый фреймворк (Django, Ruby-on-Rails, Yii). На практике бывало такое, что фронтендер просил в нужной части проекта сделать var_dump от структуры данных, которую надо показать и перечислить серверные методы, которые надо вызвать по нажатию предполагаемых кнопок.

    Зачастую фронтенд-разработчик может и сам закодировать эти серверные методы, если не требуется углубляться в серверную логику (отношения в данных, конкретная бизнес-логика, хранение данных, кэширование, очереди, крон-задачи). Я лично таких очень ценю.

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

    -----------

    Написал дополнение: copist.ru/blog/2015/08/29/layout-designer-vs-front...
    Ответ написан
    2 комментария
  • Необходимо ли изучение программирования для грамотного инвестирования?

    copist
    @copist
    Empower people to give
    Нужно не само умение программировать, а эрудиция в области интернет-технологий.
    Либо изучаете сами, либо нанимаете специалиста по информационным технологиям.

    Вопросы, на которые надо найти ответы:
    - существуют ли решения интересующей вас проблемы?
    - в чём разница, если их несколько?
    - какие есть недостатки у существующих решений?
    - есть ли возможность устранения недостатков при разработке решения своими силами?
    и ещё с десяток

    А потом уже фокус перемещается на разработку
    - что за язык у существующего решения, если его можно доработать?
    - что за язык у аналога и почему выбран именно этот язык?
    - кто будет дорабатывать или писать своё решение?
    - на каком языке писать своё решение ?
    и другие технические детали
    Ответ написан
    Комментировать
  • Интернет проекты приносящие прибыль

    copist
    @copist
    Empower people to give
    Делайте то, что нужно людям, удовлетворяйте потребности. Это касается как интернет, так и оффлайн-бизнеса.

    Если у аудитории есть потребность, а у вас есть решение, то надо ознакомить аудиторию с вашим решением. Доход от проекта зависит от объёма аудитории и от желания решить потребность у каждого отдельного пользователя.

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

    Гугль решил вопросы поиска информации в Интернет, реализовал мобильную почту, мобильные офисные приложения, создал альтернативный браузер, альтернативные операционные системы, потому что видел, как решать имеющиеся потребности.
    Фейсбук и другие социальные сети удовлетворяют потребность общаться.
    Ответ написан
    Комментировать
  • Подскажете систему оповещения/сбора?

    copist
    @copist
    Empower people to give
    Для централизованной установки - системы управления
    Сhef https://www.getchef.com/chef/
    Puppet puppetlabs.com
    "Обзор: Puppet, Chef, Ansible, Salt" habrahabr.ru/post/211306

    Для информирования о проблемах - системы мониторинга
    Zabbix www.zabbix.com/ru
    Nagios www.nagios.org
    "Мониторинг в ИТ, как организовать работу" habrahabr.ru/post/226639

    Забикс и нагиос поддерживают плагины - можно написать следилку по своему параметру (например, количество hit/miss в кэше)
    Оба поддерживают плагины для доставки уведомлений разными способами (SMS, email, jabber, есть даже реализация звонка на телефон)
    Ответ написан
  • Нужна книга по php, в которой во время изучения языка создают веб-сайт,магазин?

    copist
    @copist
    Empower people to give
    Эта книга?

    Кристиан Дари и Эмилиан Баланеску - ни один из них не женщина :)
    PHP иMySQL: СОЗДАНИЕ ИНТЕРНЕТ-МАГАЗИНА
    www.ozon.ru/context/detail/id/4954528

    А прежде я порекомендую ознакомиться с общей теорией алгоритмов и объектно-ориентированным программированием. Есть несколько изданий, при чтении которых не сводит скулы от скуки.
    Ответ написан
  • Какие есть средства визуального программирования на Yii?

    copist
    @copist
    Empower people to give
    Для простеньких приложений, для реализации проекта уровня "proof-of-concept" достаточно визуального средства моделирования данных для выбранной СУБД + генератор моделей и CRUD из штатного средства gii фреймворка.

    Эта связка позволить сгенерировать классы Active Record, классы форм, классы контролеров, шаблоны.

    В принципе, этим уже можно пользоваться, если только не ... даты, списки, валидаторы, сложная бизнес логика. Это настраивается и дописывается вручную. Можно подшаманить базовые генераторы Gii как например сделал это я - у меня классы Active Record выглядят так:
    class SomeEntity extends ASomeEntity { /* моя логика */ }
    
    abstract class ASomeEntity extends CActiveRecord { /* стандартная логика Active Record */ }

    Это позволяет перегенерировать класс ASomeEntity при изменении таблиц, но не потерять дополнительную логику, добавленную мной вручную (константы, обработчики событий, специальные выборки с кэшированием).

    Понимаешь, даже в этом случае нужна клавиатура.

    А для реализации более сложного проекта вообще всё не однозначно:
    * переходят к ролевой системе прав (RBAC), которая далеко не всегда связана с CRUD
    * диалоги становятся далеко не типовыми, могут содержать смешанные данные нескольких моделей (профиль пользователя = юзер + его фотки + новости друзей), на отдельные фрагменты накладываются свои ограничения доступа
    * повторяющиеся блоки интерфейса оформляется как виджеты, а страницы начинают подключать эти виджеты динамически, в зависимости от контекста
    * от Active Record постепенно избавляются в пользу ADO + правильное кэширование
    * выносят бизнес-логику из контролеров и моделей в дополнительные классы, появляются расширения и модули
    * часть логики вообще реализуют в браузере

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

    Хотя... Может быть UML? Но там тоже не всё просто.
    Короче, нет - такое невозможно.

    Рекомендую посмотреть на то, как устроены генераторы в Gii и создать свои, под типовые классы и шаблоны. У меня в практике есть 6 специальных генераторов кода, некоторые из них создавали до 10 файлов в системе. Но клавиатура всё же нужна.
    Ответ написан
    Комментировать
  • Что выбрать стартапу для транзационных рассылок?

    copist
    @copist
    Empower people to give
    sendgrid.com Email Delivery & Transactional Email Service
    Ответ написан
    Комментировать
  • Есть ли альтернатива JQuery? Если мне требуется управляться DOM, то зачем мне Ajax?

    copist
    @copist
    Empower people to give
    Если я вас правильно понял, то вам помогут Knockout.js или Angular.js - они предназначены для управления DOM.
    Ответ написан
  • Как реализовать поиск?

    copist
    @copist
    Empower people to give
    нормальные пацаны используют Sphinx
    Ответ написан
    Комментировать