• Можно ли работать программистом, но не оценивать сроки?

    Jump
    @Jump
    Системный администратор со стажем.
    Программировать - можно.
    Работать программистом - нет.
    Ответ написан
    3 комментария
  • Какова роль интерфейсов в ООП?

    Приведу пример на коленке. Хотим, например, написать абстрактную файловую систему. Для начала, определим интерфейс, для ФС:

    interface FileSystemInterface {
      public function write($file, $data);
      public function read($file);
    }


    Затем, хочу реализацию интерфейса ФС для работы с файликами:

    class OSFileSystem implements FileSystemInterface {
      public function write($file, $data) {
         // открываем файлик, пишем данные
      }
    
      public function read($file) {
        // открываем файлик, возвращаем данные
      }
    }


    Вдруг, кому-то захотелось файловую систему в облаке. Окей, не проблема, реализуем это:
    class CloudFileSystem implements FileSystemInterface {
      public function write($file, $data) {
         // открываем соединение с облаком, пишем данные
      }
    
      public function read($file) {
        // открываем соединение с облаком, возвращаем данные
      }
    }

    Пусть у нас есть кой-то код, работающий с файловой системой, назовем его "Хранилище файлов". Пусть он выглядит примерно так:

    class FileStorage {
      protected $Fs;
      
      public function __construct(FileSystemInterface $Fs) {
        $this->Fs = $Fs;
      }  
    
      public function saveFile() {
        $this->Fs->write('file.txt', 'file data');
      }
    
      public function getFile() {
        return $this->Fs->read('file.txt', 'file data');
      }
    }


    Отлично! Теперь мы можем хранилищу файлов отдать любой объект с реализованным интерфейсом FileSystemInterface. Пример:

    // Хранилище файлов работает с файловой системой ОС:
    $FS = new OSFileSystem();
    $FileStorage = new FileStorage($Fs);
    $FileStorage->getFile();
    
    // Хранилище файлов работает с файловой системой в облаке:
    $FS = new CloudFileSystem();
    $FileStorage = new FileStorage($Fs);
    $FileStorage->getFile();


    Использование интерфейса, в данном случае. позволяет нам писать только реализацию работы файловой системы, а бизнес-логика, работающая с файловой системой никак не меняется, она знает, что в любом случае файловая система реализует интерфейс FileSystemInterface и может без опаски использовать методы этого интерфейса.
    Ответ написан
    14 комментариев
  • Что значит "развитое логическое мышление"?

    evnuh
    @evnuh
    Поиск Гугл помог мне, впусти и ты его в свой дом
    Вы разве не в курсе? Это то же самое, что и нацеленность на результат и умение работать в команде.
    Ответ написан
    5 комментариев
  • Где найти рецепты сложных архитектур?

    @cthulhudx
    1)Yakov Fain, Victor Rasputnis, Viktor Gamov "Enterprise Web Development"
    enterprisewebbook.com (Разбирается обширное количество тем, в том числе SPA)
    2)Catalog of Patterns of Enterprise Application Architecture
    martinfowler.com/eaaCatalog
    3)Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions (Шаблоны интеграции корпоративных приложений) Мартина Фаулера
    4)Паттерны для масштабируемых JavaScript-приложений:
    largescalejs.ru
    Ответ написан
    Комментировать
  • Как попасть в IT-сферу без опыта и образования?

    @protven
    Как попасть в IT-сферу без опыта и образования?


    Переспать с кем-нибудь, как еще-то...
    Ответ написан
    Комментировать
  • Стоит ли продолжать учиться?

    Atanvar
    @Atanvar
    Frontend developer
    Бросайте учебу не задумываясь, и не слушайте никого, в макдональдс люди тоже нужны.
    Ответ написан
    Комментировать
  • Эмуляция Ctrl + V?

    @Juninho
    Попробуй
    [DllImport("user32.dll", SetLastError = true)]
    private static extern void keybd_event( byte bVk, byte bScan, uint dwFlags, int dwExtraInfo );
     
    private static void SendCtrlhotKey( char key ) {
      keybd_event(      0x11, 0,   0, 0);
      keybd_event( (byte)key, 0,   0, 0);
      keybd_event( (byte)key, 0, 0x2, 0);
      keybd_event(      0x11, 0, 0x2, 0);
    }
     
    // использовать вот так
    SendCtrlhotKey( 'C' );
    // использовать или так
    SendCtrlhotKey( 'V' );
    // использовать или так
    SendCtrlhotKey( 'A' );
    Ответ написан
    1 комментарий
  • Книга по основам программирования?

    Color
    @Color
    Golang SWE, Cloud & DevOps
    Bruce Eckel - Thinking in Java. Там все это есть.
    Чтобы войти в ООП я бы посоветовал начать с нее, так как Java очень четко реализует все его принципы.
    А вообще - для любого ЯП есть набор "классических" или "must read" книг, их и читайте.
    Ответ написан
    1 комментарий
  • Что будет, если наполненную водой металическую сферу быстро заморозить до -500?

    ZloyHobbit
    @ZloyHobbit
    Помню на семинаре по рукопашному бою кто-то задал тренеру вопрос: "Как правильно принимать идеальный удар?". Мне сразу представился абсолютно твердый кулак с массой близкой к бесконечности, движущийся со скоростью близкой к скорости света, и совершающий абсолютно неупругий контакт с челюстью... теоретически выкинутой в тепло энергии может хватить на уничтожение галактики.
    Ответ написан
    Комментировать
  • Почему удален хаб Dura Lex?

    @mrchoo
    Когда-то у меня была идея получить инвайт на Хабр. Сейчас ее уже нет. :-(
    Ответ написан
    5 комментариев
  • Чем хорош Ruby?

    @Masterme
    Это как слепому объяснить, чем радуга лучше полутени.
    Как вы хотите чтобы вам это объяснили? Привели примеры из жизни, где питон берёт в рот, а руби справляется на отличненько? Такие примеры, конечно, есть, например, лямбды, но вы всё равно не въедете, если до сих пор не поняли, что такое семантика языка и почему она важна. Вы могли взять питон, взять руби, изучить каждый из них пару недель и сделать выводы. Вместо этого вы ждёте пока вам в мозг положат готовое решение. Этого не произойдет. Вам скорее хуй в рот положат, так же как если бы вы были слепы - вам не стали бы объяснять разницу между радугой и полутенью, а дали бы под дых и отобрали бы мелочь.
    Вы, тупицы, думаете, что познание языков программирования - это нечто внешнее, что можно повторить, сымитировать. Вам сказали - вы повторили - и вроде как знаете тот или иной ЯП. В действительности же, познание языков программирования - это большая внутренняя работа, которую человек проделывает с абстракциями в своей голове. И только если человек способен к абстрактному мышлению - только тогда он, помножив эту способность на знание языков, может понять разницу между ними. Для остальных порог вхождения высок, и, честно говоря, я этому рад.
    Ответ написан
    9 комментариев
  • Ruby проекты. Что за Framework? Gems

    @fuCtor
    Ruby разработчик
    Берем первый, открываем Gemfile https://github.com/rapid7/metasploit-framework/raw/master/Gemfile и все что они использовали перечислено тут. Все остальное самописное. Причем тут вообще framework-и? Если у вас есть конкретная задача, которую хотите решить, может имеет смысл озвучить ее.
    Ответ написан
    5 комментариев
  • Технический английский - где искать и как читать?

    GeneMoss
    @GeneMoss
    void
    Технический английский все учили по мануалам. Когда приперло что-то узнать, а источник только на английском.
    Ответ написан
    Комментировать
  • Какой выбрать смартфон с диагональю не более 4''?

    @alteregoizm
    по этому бюджету проходят нексусы, но дисплей больше, попробуй в руках покрутить nexus 4 и nexus 5.
    У lenovo есть варианты с дисплеями 4. Конкретно о самих аппаратах можно почитать на форуме 4pda, там есть инфа по проблемам\настройка\отзывы.
    Ответ написан
    1 комментарий
  • С чего начать? (Java)

    chinskiy
    @chinskiy

    Брюс Эккель "Философия Java". С неё начинал.

    Ответ написан
    1 комментарий
  • Rails: Какие гемы Вы используете

    Loremaster
    @Loremaster
    Тестирование:

    * Cucumber — этот bdd фреймворк изменил мое сознание и дал увидеть какими красивыми могут быть тесты. Использую для интеграционного тестирования.
    * Capybara — высокоуровневый движок для проверки существования элементов на странице и прочего барахла.
    * Rspec — чудная штукенция, красивый и очень удобный тестовый фреймворк, который использую преимущественно для тестов контроллера и моделей.
    * FactoryGirl — удобная библиотека для создания фабрик для создания объектов.
    * DatabaseCleaner — для подчищения мусора перед/до/во время тестов.
    * CapybaraWebkit — это чтобы не открывать браузер при запуске тестов. Экономит время и вообще труъ. В своем проекте только за счет этого уменьшил время прогона тестов раза в 2.
    * ParallelTests — распаралеливаем тесты, за счет этой штуки выигрыш по скорости получил в 5 раз примерно.

    Разработка:

    * BetterErrors — ну уж очень удобная штука! Красиво отображает ошибки. Настолько полюбилось, что таскаю из проекта в проект и везде ставлю. Только добавьте к нему binding_of_caller, чтобы включить продвинутые возможности, такие как консоль прямо в окне с ошибкой!
    * QuietAssets — просим ассеты не шуметь в логах. Рекомендуется только для development режима.
    * Annotate — добавляем в модели (а также можно и в тесты соответствующие) схему таблички. Я нахожу это весьма удобным.
    * Brakeman — нам же не начхать на безопасность, правда? Правда! Поэтому мы будем хорошими молодцами и будем хотя бы иногда сканировать наше приложение в поисках уязвимостей, порой можно что-то очень даже дельное найти.
    * Gon — передаем данные из рельс в js легко и непринужденно. Очень удобный инструмент, правда! Попробуйте!
    * Slim — красивый и очень легкий шаблонизатор. Приятнее, чем, erb, легче (как минимум — визуально), чем haml.

    Перечислено, конечно же, далеко не все, что использую. Пользуйтесь на здоровье. :)
    Ответ написан
    Комментировать
  • Какая производительность у RoR на highload приложениях и как RoR ведет себя с действительно большими БД?

    FanKiLL
    @FanKiLL
    Конечно Ruby on Rails Guides этого конечно будет мало, но туда часто будете заглядывать.

    Вначале:
    Курсы от Lynda, довольно таки подробно всё объясняют
    Ruby Essential Training Азы руби
    Ruby on Rails 3 Essential Training Азы рельсов

    Более короткие курсы от tutsplus, обьём знание практически как у курсов выше, но подаётся более динамично чтоле.
    The Fundamentals of Ruby Азы руби
    Riding Ruby on Rails Азы рельсов

    После любого курса желательно, пройти курс Rails for Zombies Redux на codeschool, он бесплатный, там после каждого видео интерактивное (как правильно?:) ) выполнение заданий, хорошо закрепляет материал.

    Есть ещё http://ruby.railstutorial.org/ Но подача автора мне не нравится, слишком медленно говорит, много пишет тестов, что для начинающего мрак полный, его лучше смотреть для общего развития, когда уже хоть что то в руби и рельсах будете шарить. У него так же есть книга по этим видео урокам, если читать на сайте то бесплатно. Хотя первую эпизод всётаки посмотреть стоит, там как задеплоить приложение на heroku, чтоб посмотреть как в это работает в продакшине или показать кому то, то что написали.

    Books:
    Agile Web Development with Rails (Pragmatic Programmers)

    Даю на английском так как на русском нормальных материалов практически нет. hasbrains.ru то что выше написали разве что, ну а книги как всегда, переводы опаздывают и не всегда термины правильно переведены.

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

    Удачи.
    Ответ написан
    Комментировать