Задать вопрос
  • Зачем нужен Yii и другие подобные фремворки?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    CMS - обычно решают конкретные узко специализированные задачи. Тот же WP - это блог и для такого кейса он вполне ок. Если вам нужен не совсем блог, на том же WP разработка вероятно будет сопровождаться анальной болью)). Это просто не целевое применение. То, что на WP и эл. магазины пишут - это просто демонстрация, что вилкой можно в ухе ковыряться))

    Фреймворки обычно имеют более обобщенное целевое предназначение, по этой причине на них обычно легче сделать сайт-визитку, который эл. магазин, немного соц. сеть и частично CRM.

    Пример где стоит использовать CMS: нужен эл. магазин, маленький бюджет и сроки тоже. Берем PrestaShop, устанавливаем, прикручиваем тему, настраиваем. Следующий!

    Пример где стоит использовать фреймворк: вам нужен сайт на подобии того, на котором вы читаете мой ответ. Да, его можно за уши притянуть к понятию "блог", но переписывать и допиливать нужно многовато. Пойдем от обратного (вы таки выбрали WP)
    * Потом поймете, что нужно было еще абстрактный уровень над WP написать, потому как после обновления ваши правки затерлись.
    * Потом вдруг случается несчастье: ваш сайт стал популярным и железо не тянет, вы задумаетесь об масштабировании, но окажется, что система довольно таки целостная и что бы ее разделить придется не хило так по вкалывать.
    * Через какое-то время ваш проект будет на 50% состоять переписанного кода и костылей, обходящих логику WP.
    * Вдруг, на хабре вы читаете статью про уязвимость в вашей версии WP, начинаете ее прикручивать, при этом часть вашего сайта тупо отваливается из-за тех же артефактов и костылей. Вы, ясное дело, фиксите траблюки.
    * В один прекрасный весенний денек, когда птички поют, радость, счастье, улыбки и бла-бла-бла вам звонит руководство и говорит, что "ничего не работает ( с )", отчаянье-печаль-грусть-уныние-безысходность-тлен. Зайдя на главную вы увидите замечательный баннер:
    Вас взломал @ сраный_script_kid. Один глаз начнет немного дергаться, "это нормально ( с )". Восстановившись из бэкапа 4-х недельной давности, вы начинаете судорожно писать 1ккк проверок всего и вся. Система мутирует в еще более страшную и громоздкую хрень.
    * Через какое-то время вас просят добавить фичу "на вчера", а что бы это сделать придется переписать добрую часть вашего монстра, вы (ну судя по количеству факапов) уже с прокачанным скилом "тебе фича не нужна эта" убеждаете руководство в этом, подобные разговоры возникают все чаще и в один прекрасный момент вы, или вас - увольняют.
    * На смену вам компания набирает других человек, которые выльют пару ведер крови из глаз, убедят руководство, что код не саппортабельный и перепишут вашего монстра с 1,5кк строк до 0,3кк на нормальном фреймворке.
    Ответ написан
    1 комментарий
  • Где учить Node.js/Js в Санкт-Петербурге?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Нигде. Офлайн обучение в IT таким вещам:
    1. дорого
    2. долго
    3. бесполезно
    Ответ написан
    4 комментария
  • Есть ли смысл в покупке трастового домена?

    Grinvind
    @Grinvind
    Помогаю увеличивать трафик с поисковых систем
    sindrom, а о каком объёме страниц идёт речь?
    Если это агрегатор, и объём от 50-100к страниц, то моему опыту да, при таком объёме ~80% страниц заходит за месяц. Какие показатели сайта, на который вы ориентируетесь при покупке? Сопоставима ли его стоимость с ускорением индексации? Я предполагаю, что индексация ускорится недели на 2 при возрастном домене. Но тут больше вопрос не индексации, а, что более важно, ранжирования.

    Если вопрос только в индексации, то всё проще, я бы рекомендовал делать на новом. Создать html карту сайта, а так же sitemap.xml. На хабовых (основных категориях, самых посещаемых роботами) страницах сделать ротацию ссылок, чтобы в зависимости от частоты заходов робота, каждых раз ему подсовывались новые ссылки на страницы сайта. Ну и так же загонять робота на хабовые страницы со списком ссылок на новые страницы, которых ещё нет в индексе, инструментом "переобход страниц" в Вебмастере.
    Ответ написан
    Комментировать
  • Есть ли смысл в покупке трастового домена?

    RotgarSett
    @RotgarSett
    SEO Эксперт
    Идеальный вариант - найти сайт схожей тематики и купить его.
    Дроп на втором месте и почти не имеет смысла в яндексе, в гугле смысла больше.
    Новый домен лучше брать если не удается найти дроп или действующий сайт с норм ценой и названием.
    Ответ написан
    2 комментария
  • Как перестраховатся от кражи идеи для мобильного приложения?

    NSA-bot
    @NSA-bot
    Можно научиться программировать и написать приложение самому. Идеальный вариант. Дарю Вам эту идею ))
    Ответ написан
    Комментировать
  • Подключение кулера к адаптеру 12 вольт. Не сгорит?

    @nehrung
    Не забывайте кликать кнопку "Отметить решением"!
    Из комментариев видно, что вам непонятен практический смысл терминов "напряжение" и "ток". В этом случае разобраться помогает сравнение с потоком воды. Напряжение - это аналог давления, или разницы уровней выше-ниже плотины. А ток - аналог расхода воды (не зря созвучен слову "поток"). Если кран закрыт (выключатель выключен, цепь разомкнута) то какое бы ни было напряжение/давление, (по)тока не будет.
    Теперь с вашим примером. Есть адаптер 12 в, 0,5 а. Включаем его - на выходе 12 вольт, и никакого тока, хотя на нём написано 0,5 а - ещё не создан путь для потока. Подключаем кулер - пошёл такой ток, который затребовал кулер, т.е. 0,18 а, и не больше (поток течёт по размеру дырочки, которую ему открыли). Остальные 0,32 ампера пока не востребованы. Подключаем ещё один такой же кулер - ток возрос до 0,36 а (два потока по 0,18). Поскольку адаптер может обеспечить 0,5, всё нормально. Но если подключим ещё один такой же кулер, суммарный ток возрастет до 0,54 а, что больше допустимого для адаптера - он будет перегружен, от него требуют невозможного. Если через плотину перельётся поток больше, чем может прийти по реке, то поскольку вода ушла, верхний уровень над плотиной понизится. Аналогично при перегрузке по току выходное напряжение адаптера понизится и уже будет менее 12 вольт. Если защиты от перегрузки в схеме адаптера не предусмотрено, он просто перегреется и может сгореть. Если защита предусмотрена, то при перегрузке она сработает, адаптер отключится, выходной ток исчезнет.
    если врубаем напрямую, то нужно ли еще какой элемент в цепи, чтобы обезопасить сию конструкцию?

    Если встроенной защиты от перегрузки нет, то обычно последовательно в цепь включают такой элемент, как плавкий предохранитель. Сгорая сам, он защищает от повреждения остальную схему, гораздо более дорогую. В вашем случае полезно последовательно с выходной цепью адаптера включить предохранитель на 0,5 а. Но реальный ток сгорания у дешёвых плавких предохранителей не точен и может быть в пределах -30%... +80%. Так что не удивляйтесь, если увидите, что такой предохранитель сгорит при подключении всего двух кулеров или не сгорит вообще, когда уже весь адаптер будет в дыму.
    Ответ написан
    4 комментария
  • Как сделать веб-сервис и не утонуть в процессе?

    gobananas
    @gobananas
    finishhim.ru
    1. Выделить одну главную функцию сервиса
    2. Сделать её, сверстать и выкатить, это будет MVP
    3. Не заморачиваться с вёрсткой
    4. Не заморачиваться с методами авторизации
    5. Не думать про нагрузку, не заниматься оптимизацией кода и БД
    6. Если поймали себя на мысли что вы думаете какой паттерн тут применить вы в Ж, просто пишите код, который работает!!
    7. Не совмещать написание сервиса, который вы РЕАЛЬНО хотите запустить с изучением чего-то нового (языка, БД). Утоните в учёбе и никогда не запустите.

    Это всё на своём опыте написания проекта говорю вам а не голословно ))
    Ответ написан
    10 комментариев
  • Как научится понимать Bitrix за один вечер?

    neuotq
    @neuotq
    Прокрастинация
    Перво наперво настойчиво рекомендую сообщить об этом заказчику, саму верстку выполнить в полном объеме согласно принятому описанию заказа, а далее предложить варианты заказчику. Либо вы заканчиваете полностью просто верстку статичных html для последующей интеграцией специалиста по bitrix в саму систему, либо вы сами берете на себя эти доработки но с условиями расширения времени заказа (и может быть оплаты).
    Вашей вины в том что заказчик полностью не описал задачу нет, но и самого заказчика конечно же полностью в этом винить нельзя и будет по честному для заказчика как можно быстрее ему сообщить о проблеме и наиболее легкие пути выхода для всех сторон.
    Если там человек адекватный, он оценит честность и думает пойдет вас на встречу если вы аргументировано обоснуете иные сроки или иные условия выполнения заказа.
    Ну и в крайнем случае можно закрыть заказ по согласовыванию сторон, если же он подаст жалобу, то у вас тоже есть право жаловаться на условия ТЗ, в которых не было раскрыта истинная сложность задания.
    И еще раз повторю, я настоятельно рекомендую быть прежде всего честным с заказчиком, а не стараться сделать то что у вас очень может быть не получится и таким образом неожиданно для заказчика сорвать сроки/качество продукта. Поэтому лучше как можно раньше предупредить, чтобы человек тоже скорректировал свои планы и оценил вашу честность.
    Ответ написан
    Комментировать
  • Как работает на низком уровне Node.js и Angular?

    @cluberr
    думаю это Вам поможет Объясняем современный JavaScript динозавру
    Как объяснить 10 лет веб-разработки путешественник...
    NodeJs - это движок для JavaScript , который вынесли из браузера и добавили возможности , которые в браузерном JS были невозможны из-за безопасности , например работа с файловой системой и другие. Сам движок NODEJS называется V8 , написан на C++ и компилит JS в машинный код.

    Вебсервер - это процесс который слушает определенный порт на HTTP запросы , принимает их , парсит и отдает назад ответ в зависимости от запроса. Раньше в этот ответ помещался готовый html код c данными , которые подтягивались из базы, что и было страницей.

    Так как появилась возможность делать JS код вне браузера , то взяли и написали на нем веб-сервер , который все делает на JS . Что дало возможность написать и фронт и бэк сайта на одном языке

    Сейчас же при запросе к серверу , сервер отдает сразу HTML код страницы с JS кодом и из этого js кода посылаются асинхронные запросы к бекенду (AJAX) на определенные url адреса сервера RESTip , которые отдают не готовые страницы , а только данные в чистом виде в формате JSON и JS парсит эти данные и вставляет в стандартные html узлы или же кастомные , которые зовутся WebComponets, но пока имеют слабую поддержку браузеров , страницы. Angular упрощает написание кастомных html узлов и внедрение в них данных плюс позволяет их реиспользовать.

    Получается что у Вас может один раз прийти html + js код и потом вся работа с сайтом будет идти через одну страницу в которую javascript будет вставлять нужные данные, а при необходимости еще и обрабатывать их перед вставкой. Сайты , которые так работают называются SPA (Single Page Aplication).
    Ответ написан
    Комментировать
  • Как мотивировать себя делать скучную работу?

    zamboga
    @zamboga
    Аналитика данных, BI-аналитика, дашборды
    Отвлекаюсь на все не могу себя заставить, нормально работать

    Отключить все уведомления или выключить звук+вибро на телефоне.
    Отключить все попапы в Windows, уведомления браузеров.
    Отключить звук на компе.

    Если помогает быстрая музыка — включить её (я фигачу под транс с di.fm).

    Взять любой секундомер, поставить на нем таймер 10 минут. Уж 10 минут вы в состоянии выдержать?
    После звонка таймера поставить новый на 15 минут. Это всего на 5 мин больше прошлого таймера.
    После звонка таймера поставить новый на 25 минут. Это всего на 10 мин больше прошлого таймера.
    Как вы поняли, это плавное привыкание к технике Помодоро=)

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

    Прошло 50 минут. Теперь отдых. Выключить музыку, надо отдохнуть: ставите таймер на 10 минут, гуляете вокруг компа, смотрите в окно, делаете легкую зарядку, просто сидите с закрытыми глазами.

    Телефон во время отдыха в руки не брать и почту /скайп (что там вы используйте) не проверять!! — Это ключевое. Отдых должен быть отдыхом. Умеете медитировать — медитируйте.

    Ставите новый таймер на 50 минут. Один раз продержались, что, второй раз не сможете? Сможете.
    После этого опять отдых, 10 минут.

    После 3-4 циклов по 50работа/10отдых, делаете отдых 30/40/60 минут (как раз пообедать + проверить почту/телефон).

    Потом новый комплект 3-4 цикла 50/10.
    В конце дня можете проверить почту/телефон.

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

    Также, если мотивация падает, говорим себе мантру: "Потерпи только сегодня, только один день. Пофиг, что там будет завтра, а вот сегодня надо потерпеть и сделать".

    Для удобства на компе можно использовать любой тайм-трекер со встроенным Pomodoro, например Toggl (+могу еще насоветовать, знаю много трекеров)

    UPD 1. Из другого ответа: "чтобы работать длинный промежуток времени, очень выручал https://www.forestapp.cc/"
    Я протестировал приложение под Андроид и расширение для Хром и стал использовать: это отличное дополнение к методике, что тут описал, с автоматическим отключением всех внешних раздражителей. Рекомендую.

    UPD 2. Классическая Помодорная схема — 4 цикла по 25работа/5отдых, потом отдых 20 мин.
    Но она не подходит для работы "в потоке" — пока погружаешься в задачу, уже проходит 15 минут и остается всего 10 минут до отдыха на саму задачу, что мало.
    Поэтому я использую циклы 50/10 для основных задач, +один цикл 50/10 в начале дня на планирование, почту и прочую мелочевку.
    Ответ написан
    2 комментария
  • Зачем IT гиганты используют много несвязанных доменов?

    Поместив HTML, XML, SVG и т.д. и т.п. файл на домене usercontent.google.com можно
    манипулировать куками домена google.com и фишить. Поэтому пользовательский контент всегда отдается с отдельных sandbox-доменов.
    Так же с отдельных доменов обычно отдается статический контент, это позволяет использовать CDN и упрощает управление кэшированием.
    Отдельный домен обычно используется для PTR-записей (например 1e100.net). Для PTR часто нужна двойная валидация, т.е. PTR должна разрешаться в имя и имя обратно в тот же IP. При этом на одном IP может хоститься много доменов и быть установлено много сертификатов, включая вайлдкарды. И наоборот, один домен может хоститься на многих IP. Чтобы исключить прямое обращение к хосту по "неожиданному" для него имени в своем домене, обычно используются PTR записи в нейтральном домене. Кстати исторически принято использовать именно домены в .net. Google так же использует 1e100.net как нейтральный домен для подписи транзитных писем, раньше для этого использовался собственно домен google.com и это приводило к забавному багу, позволявшему подделывать подписи на письмах от google.com, я рассказывал о нем на PHDays 2014.
    Географические домены исторически используют для организации региональных датацентов и ускорения доступа, например yahoo.jp физически расположен в Японии.
    Ответ написан
    6 комментариев
  • Как работать со статусами в PHP?

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    Правильное полное решение использовать workflow конечно же.
    https://github.com/alterway/component-workflow
    symfony.com/doc/current/components/workflow.html

    Ну или сделать все руками без выпендрёжа, никаких цепочек не надо.
    Цепочка по логике работы должна быть, а не "свитчами".
    Ответ написан
    Комментировать
  • Какие есть фреймворки для разработки приложений под android?

    nki
    @nki
    bezkart.ru готовая система лояльности
    Я свои приложения (для различного учета) под андроид пишу на 1С.
    Ответ написан
    Комментировать
  • Аренда офиса или коворкинг в Санкт-Петербурге?

    @oktaniuq
    Было время когда работал в коворкинг-центрах, но потом с коллегами сняли небольшое офисное помещение. Так сейчас выгоднее поступать.
    Ответ написан
    Комментировать
  • Стоит ли учить Ruby и Rails в 2016 году?

    AleksDesker
    @AleksDesker
    Если вы заскучавший ПХПист, может лучше в сторону питончика посмотреть? Это все конечно очень субъективная вкусовщина, но по моему люди которым далек Руби, а ПХП родной часто воспринимают Python как "красивый PHP".
    Ответ написан
    Комментировать
  • Как выучить молодого менеджера?

    @ruslite
    Пока сам не захочет - никого вы из него не сделаете.
    Ответ написан
    Комментировать
  • Как вы строите архитектуру приложения?

    @c64
    работаю
    херак-херак - и в продакшн
    Ответ написан
    Комментировать
  • Как правильно использовать Docker для веб разработки?

    zvd
    @zvd
    Software developer interesting in DevOps
    Добрый день.
    Все, как вы их назвали, «задачи» должны быть по разным контейнерам.

    1. Что брать за базовый образ?
    Что используете то и берите. Используете в работе Debian? Берите Debian ( https://registry.hub.docker.com/_/debian/ )
    2. Чтобы создать свой базовый образ который будете в дальнейшем использовать для приложения, вот вам пример Dockerfile:
    #
    # MyBaseimage Dockerfile
    #
    
    # Pull base image.
    FROM ubuntu:14.04
    
    MAINTAINER Your Name <your.email@gmail.maybe>
    
    RUN apt-get update
    RUN apt-get upgrade -y
    
    RUN apt-get install -y language-pack-en
    ENV LANGUAGE en_US.UTF-8
    ENV LANG en_US.UTF-8
    ENV LC_ALL en_US.UTF-8
    
    RUN locale-gen en_US.UTF-8
    RUN dpkg-reconfigure locales
    
    RUN echo "Etc/UTC" > /etc/timezone
    RUN dpkg-reconfigure -f noninteractive tzdata
    
    RUN apt-get install -y build-essential
    RUN apt-get install -y python python-dev python-setuptools python-pip python-virtualenv
    RUN apt-get install -y libxml2-dev wget
    RUN apt-get install -y libpcre3
    RUN apt-get install -y libpcre3-dev
    RUN apt-get install -y libssl-dev
    RUN apt-get install -y libncurses5-dev
    RUN apt-get install -y git git-core
    RUN apt-get install -y libpq-dev
    
    # install nginx
    RUN apt-get install -y software-properties-common python-software-properties
    RUN apt-get update

    Собрать image в директории где у вас лежит Dockerfile
    docker build -t your_docker_account/your_baseimage .

    3. Dockerfile для сборки вашего образа уже с приложением
    #
    # MyApp Dockerfile
    #
    
    # Pull base image.
    FROM your_docker_account/your_baseimage
    
    MAINTAINER Your Name <your.email@gmail.maybe>
    
    # Set instructions on build.
    RUN virtualenv /env
    ADD ./ /code
    
    RUN cd /code; /env/bin/python setup.py install
    RUN cp /code/config/config.yml.docker_example /etc/code/config.yml
    
    # Expose ports.
    EXPOSE 8484
    WORKDIR /code
    CMD ["/env/bin/python", "app.py"]

    4. Собрать образ с приложением
    docker build -t your_docker_account/your_app_container .

    5. Запустить контейнер с БД, в качестве примера PostgreSQL
    docker run -p :5432:5432 --name my_postgresdb_container -e POSTGRESQL_DB=mydb_name -e POSTGRESQL_USER=mydb_user -e POSTGRESQL_PASS=super_secret_password -d kamui/postgresql

    для mariadb аналонично, контейнеры ищем здесь: https://registry.hub.docker.com/
    6. Запустить контейнер с вашим приложением, пример:
    docker run -d -p :5000:5000 \
      --name my_app_container \
      --link my_postgresdb_container:postgresdb \
      -e DOCKERDB_ENV_POSTGRESQL_DB=mydb_name \
      -e DOCKERDB_ENV_POSTGRESQL_USER=mydb_user \
      -e DOCKERDB_ENV_POSTGRESQL_PASS=super_secret_password \
      your_docker_account/your_app_container

    7. Подключиться к запущенному контейнеру с приложением
    docker exec -it your_app_container /bin/bash
    8. Читать stdout запущенного приложения в контейнере
    docker logs -f your_app_container

    + Чтобы автоматизировать запуск всех необходимых контейнеров берите Docker Compose ( https://docs.docker.com/compose/ )
    Пример файла конфигурации:
    your_app:
      build: .
      links:
        - postgresdb
      ports:
        - "5000:5000"
      environment:
        DOCKERDB_ENV_POSTGRESQL_DB: mydb_name
        DOCKERDB_ENV_POSTGRESQL_USER: mydb_user
        DOCKERDB_ENV_POSTGRESQL_PASS: super_secret_password
    postgresdb:
      image: kamui/postgresql
      ports:
        - "5432:5432"
      environment:
        POSTGRESQL_DB: mydb_name
        POSTGRESQL_USER: mydb_user
        POSTGRESQL_PASS: super_secret_password

    И теперь вместо пунктов 5 + 6 где мы запускали контейнеры мы можем всё стартануть одной командой
    docker-compose up

    + можно смонтировать код в контейнер и разрабатывать непосредственно в docker'контейнере.
    Надеюсь чем-то вам помог.
    Ответ написан
    3 комментария
  • Как побороть боязнь чистого листа?

    @killla
    Иди грузчиком работать. Кодинг это не твоё.
    Ответ написан
    24 комментария
  • Багтрекер на миллиард багов

    Вы хотите к работе правительства РФ багтреккер подключить?
    Ответ написан
    4 комментария