• Сoffeescript в expressjs приложении!?

    dizballanze
    @dizballanze
    Software developer at Yandex
    Для файлов, которые работают на сервере вообще нет необходимости транслировать их в js вручную, node.js сам умеет это делать. Нужно только сделать для запуска приложения примерно такой файл:

    #!/usr/bin/env node
    CoffeeScript = require("coffee-script");
    CoffeeScript.register();
    
    create_app = require("../app/application");
    app = create_app();
    app.listen(5000);
    console.log("Application running on http://localhost:5000/");
    console.log("(" + process.env.NODE_ENV + " mode)");


    где ../app/application - это application.coffee, далее можно работать в кофе файлах также как js, при подключении модулей расширение .coffee не нужно указывать
    Ответ написан
    1 комментарий
  • Обязательно ли быть верстальщиком, чтобы устроиться на работу Junior Frontend'ером?

    opium
    @opium
    Просто люблю качественно работать
    Вопрос из разряда обязательно ли уметь подметать пол, чтобы устроиться дворником?
    Обязательно ли иметь сперму, чтобы устроиться донором спермы?
    Ответ написан
    6 комментариев
  • Как составить тестовое задание для web-разработчика?

    viktorvsk
    @viktorvsk

    1. Верстка PSD
    2. Адаптивная верстка
    3. Битрикс
    4. API для мобильных


    По требованиям - это неплохой специалист. Скорей всего, вам нужно будет сначала придумать что-то очень вкусное, что предложить, что бы он согласился взяться за тестовое (!) задание, составленное неспециалистом (!) с помощью интернета (!), на которое еще и нужно потратить 2-е (!) суток.

    Если вы не располагаете специалистом, который более компетентен, чем тот, которого хотите нанять, то выхода 2:
    1. Как вам уже и сказали, найти такого человека (тут не должно быть много проблем, менеджеры должны очень сильно дорожить своей репутацией)
    2. Смотреть отзывы о его работе, рекомендации. Смотреть гитхаб и линкед ин. Смотреть предыдущий опыт. Думаю, ни для вас ни для него не должно составить дискомфорта получить реальную рекомендацию у одного из его предыдущих нанимателей. Суть в чем. Если нет того, кто компетентно оценит знания (это сложно даже тому, кто разбирается в теме лучше), то единственный выход - доверие.

    Никакие тестовые задания не помогут. Да и на такие требования не факт, что многие подходящие люди возьмутся его решать.
    Ответ написан
    2 комментария
  • Зачем на linux mint по дефолту стоит apache2?

    gbg
    @gbg Куратор тега Linux
    Любые ответы на любые вопросы
    Знать бы еще, о каком представителе зоопарка вы говорите (на момент написания ответа про Mint уточнения не было):
    Linux_Distribution_Timeline.svg
    Ничего не будет.
    Ответ написан
    Комментировать
  • Как запретить вложенный код в php?

    Melkij
    @Melkij
    PostgreSQL DBA
    должен вывести "<?php echo 'some text'; ?>", а не "some text".

    Расскажите лучше, как вы это получили.
    У меня под рукой сейчас два десятка версий PHP от 5.1 до 5.6 - все возвращают <?php echo 'some text'; ?>, как и должны.
    Ответ написан
    7 комментариев
  • Какая разница между @include и include?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    1. Собака не имеет никакого отношения к include. Это не один оператор, а два совершенно разных оператора.
    2. Увидев @ в коде ты можешь почти со стопроцентной уверенностью сказать, что его писал неграмотный пользователь, и пользоваться этим кодом не стоит.
    3. Увидев в коде @include ты можешь смело считать его автора абсолютным лохом и нубом, а сам код надо выкидывать немедленно. Потому что @include глушит не только саму ошибку включения файла, но и все ошибки в этом файле - то есть, поступает стократ хуже. Это значит, что если автор допускает такие косяки в коде, то и все остальное у него тоже ад кромешный.
    4. Самое главное. Ошибки надо не подавлять. Ошибки надо исправлять. Но опять же, делать это с умом. Начинающие программисты считают сообщения об ошибках своими личными врагами, и борются с ними всеми доступными средствами - с помощью @, error_reporting(0) и др. Получив линейкой по рукам и запомнив на всю жизнь, что так делать не надо, ониначинают с не меньшим рвением писать всякие проверки - лишь бы не допустить, не дай бог, ненавистного сообщения об ошибке. Например:

    if (file_exists($inc))
    {
        include $inc;
    } else {
        echo "Файл не найден";
    }

    Так вот, это - еще хуже. Для начала, часть ошибок этот код все равно не отловит. Но это даже не самое главное. Главное - что вот это вот "Файл не найден" не имеет ни малейшего смысла. Пользователю оно ничего не скажет. А программист о нем не узнает. А если и узнает, то ничего не поймет! Какой файл? Где не найден? По какой причине? Системное сообщение об ошибке содержит массу бесценной информации помогающей идентифицировать ошибку, сообщая нам где она произошла, какой файл не найден, по какой причине не найден. Выдавать вместо этого огрызок "файл не найден" - это мазохизм.

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

    Ошибки не надо подавлять. Ошибки не надо прятать. Ошибки надо исправлять.
    Ответ написан
    3 комментария
  • PHP+Symfony или Ruby+RoR?

    viktorvsk
    @viktorvsk
    Для обучения у руби и рельс, на мой взгляд, есть неоспоримый плюс.
    Вот то, что называют порогом входа (я, признаться, не особо понимаю это), мне кажется, играет злую штуку. Например, на руби и рельсах Вы не сможете за 2 часа сделать сайт-визитку, отдать ее заказчику, получить деньги и расслабиться, считая себя крутым разработчиком.

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

    Например, что бы начать с ним работать вообще - нужны *nix. Можно, конечно, продолжать юзать виндовс, но пользоваться виртуальными машинами, но это тоже - шаг вперед перед пхп с его денвером и т.д.

    Далее, что б установить интерпретатор, в 95% случаев вы поставите менеджер версий языка (rvm или rbenv), что уже много лучше, чем глобальная установка.

    Что бы запустить свой первый проект, Вам понадобится менеджер пакетов - что лучше, чем качать zip архивы и распаковывать в нужную директорию.

    Что б скачать некоторые пакеты, нужен будет гит, что само по себе очень круто.

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

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

    Вот вы ее сделали, используюя архитектуру рельс и хоть какое-то понимание раздления кода, роутинга, хелперов и т.д.

    Дальше, нужно ж как-то показать заказчику результат? Самым первым вариантом, скорее всего, вы познакомитесь с Хероку - PaaS сервис вещь тоже довольно полезная.

    Но вскоре вы поймете, что он вас не очень устраивает. И попробуете разместить сайт-визитку на хостинге.

    Здесь Вам придется познакомиться с ВПС, базовой настройкой линукса, юникс-сокетами, понятиями работы различных веб-серверов

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

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

    Безусловно, весь этот процесс можно проводить на любом языке - где-то чуть проще, где-то чуть лучше. Но если в пхп можно обойтись без этого и долгое время даже не представлять, что можно деплоить код безопасно, с автоматическим откатом назад, если что-то пошло не так, да еще и с нулевым даунтаймом, то в руби вам придется сделать это сразу.
    Ответ написан
    4 комментария
  • Какие вопросы задают на собеседовании ruby junior(без rails)?

    Вот немного вопросов/ответов по Руби и немного по Рельсам:
    thereq.com/q/best-ruby-software-interview-question...
    https://github.com/gregstallings/ruby-trivia
    www.toptal.com/ruby/interview-questions
    www.skilledup.com/articles/ruby-on-rails-interview...
    www.codequizzes.com

    Еще недавно было обсуждение в гугл-группе по РоР

    з.ы.: а так самый частый вопрос на собеседованиях: просят ссылку на профиль на гитхабе
    Ответ написан
    Комментировать
  • Сколько примерно стоит инвайтер?

    gadfi
    @gadfi
    https://gamega.org
    Сколько стоит машина?
    Возьмем цифру немного с потолка, пусть 5 000$. Если столько попросят за запорожец то вы вероятнее всего пошлете такого продавца, с еще большим энтузиазмом вас пошлют при попытки купить лаборджини за такие деньги, хотя и то и то машины.
    Нету внятного ТЗ результат хз © фрилансерское народное творчество
    pam_zak.jpg
    Ответ написан
    Комментировать
  • Строка без кавычек, и как это работает?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    В документации упоминается в довольно неожиданном месте приплетая совершенно неужный контекст. На самом же деле массивы тут совершенно не при чем.

    Это остатки той "магии", которой так славились первые версии РНР (волшебные глобальные переменные, волшебные кавычки и пр.), и от большей части которой уже удалось избавиться, а это все ещё болтается почему-то в языке.

    Ответ на вопрос, можно ли использовать - нет, нельзя.
    Ответ написан
    1 комментарий
  • Политика Google chrome ?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Вы там живы еще? А то как-то на самом интересном оборвалась ваша мысль...
    Ответ написан
    Комментировать
  • Как правильно настроить PHPStorm7 для PHPUnit?

    janson
    @janson
    PHP-разработчик
    Действительно - проще всего с .phar файлом в конкретном проекте.

    Версию PHPUnit ставьте 3.7.XX. С четвёртой версией в PHPStorm 7 пока что баг с запуском тестов (в PHPStorm 8 EAP вроде починили). Вручную из консоли всё работает, а вот из PHPStorm - ругается.

    Как запустить:
    1. Создаём структуру проекта, как по данной вами ссылке:

    |-src
    |   |-autoload.php
    |   |-Money.php
    |
    |-tests
        |-MoneyTest.php


    В файле autoload.php нужно подключить файлы, которые вы собираетесь тестировать.

    <?php
    require_once __DIR__ . '/Money.php';


    2. Настраиваем конфигурацию PHPUnit:
    Run -> Edit Configurations...
    В левой верхней части появившегося окна жмём зелёный плюс и настраиваем конфигурацию:
    - устанавливаем Test Scope на 'Directory' и указываем путь к папке tests
    88950935cf654d2d9913317a82873cc6.png
    - жмём на гаечный ключ и настраиваем путь к phpunit.phar (если у вас локально используется папка с PHPUnit - то подключаете её в File -> Settings -> ProjectSettings -> PHP ... Include Paths, и затем в настройках PHPUnit переключаем на Load From Include Path).
    73258cc7bdf54d138d5cf60708810d02.png
    - также указываем default bootstrap file на наш autoload.php, где подключаем классы, которые собственно будем тестировать (где лежат сами тесты мы указали для PHPUnit в начале).
    - Жмём Apply -> Apply -> OK

    Всё, теперь рядом с созданой конфигурации на панели PHPStorm появилась зелёная стрелка для запуска тестов. Жмём, и если всё правильно - получаем зелёную полосу.
    c3371b9827824186b099c19932bbfac7.png

    Т.е. процесс настройки - это три шага:
    1. указываем где лежит PHPUnit
    2. указываем где лежат тесты
    3. указываем где лежит загрузчик тестируемых классов.

    Вроде всё.
    Ответ написан
    1 комментарий
  • Что стоит прочитать?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Можно Канта почитать. Ницше так же неплох, но может не пойти.
    Ответ написан
    Комментировать
  • Объясните что такое полиморфизм простыми словами ?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Да ладно, парни. Ну хватит уже, к чему такие сложности? Берём и читаем. Вообще совсем не обязательно читать про архитектуру и абстракции именно по своему языку, хотя javascript в этом плане родился уродом.

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

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

    С объектами и классами разобрались, а что же там с нашими стаканами и велосипедами. Мы уже поняли, что всё это объект, то есть грубо можно все объекты наследовать от какого-нибудь суперпредка, суперкласса, что и реализовано в некоторых языках. Но что другого общего между скейтом и стаканом, например? Конечно, можно углубляться и считать, что они все из молекул, и они все из твёрдых веществ. Однако это всё бред и СПГС, так что ответ прост - да ничего. То есть это совершенно разные объекты с совершенно разным функционалом. Более того - естесственно компьютерные модели и иерархии будут сильно отличатся от физик и химий. И это нормально, вопрос об адекватностях моделей ставиться лишь когда модель неадекватна, а до тех пор пилить можно что угодно, лишь бы работало.

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

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

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

    Но мы подошли к последнему пункту - инкапсуляция. Она неразрывна с абстракцией, и по сути благодаря ей она и работает. Инкапсуляция - это своеборазный клей (или синяя изолента), которым склеивают разные чертежи в один. То есть совмещение деталей для создания своей - это и есть инкапсуляция. Причём при совмещении мы можем не описывать детали этого совмещения (то есть члены класса могут быть приватными), таким образом помогая абстрагироваться тем, кто этот чертёж использует. Вот посмотрим на чайник - что это такое? Это стакан (или кружка) к которому снизу (а может внутри по середине?) приклеен нагревательный элемент. Пустив по нему ток, согласно инкапсулированному в нагревательный элемент закону Ома, будет выделяться тепло и нагреваться вода. А кофемашина? Это куда более сложное устройство, с множеством насосов, ёмкостей, шлюзов, измельчителей и чайников. И всё склееное клеем. А может синей изолентой. Это снова инкапсуляция.

    Таким образом, абстракция невозможна без инкапсуляции и наследовании, как невозможен полиморфизм без, собственно, наследования. Ну а полиморфизм невозможен ещё и без инкапсуляции, которая банально бесполезна без наследования и полиморфизма. Вот такие тут треугольники с пирогами. Жаль только про пирог наврали. И про день рожденье.
    Ответ написан
    3 комментария
  • В чем отличие cms от framework?

    GM2mars
    @GM2mars
    Сначала рождается бинарный код, потом он идет в школу и становится обычным скриптом. Свою юность он проводит в институте где складывается в "библиотеку". Потом все больше обрастает библиотеками, обычные функции складываются в классы и выходит уже сформировавшийся фреймворк, готовый пробовать себя в деле. Опробовав себя в различных сферах, он останавливается на чем то конкретном и становится CMS, потому что уже не ищет приключений и новых свершений, его устраивает то, чем он занимается, и некоторые считают его профессионалом в своем деле.
    Ответ написан
    2 комментария