Архив за 28 января 2015 - 10

Продолжаем цикл статей — переводов по Spring и Hibernate, от krams.

Предыдущая статья:
«Spring MVC 3, Аннотации Hibernate, MySQL. Туториал по интеграции».

Введение.
В этом уроке мы познакомимся с использованием отношения один ко многим, используя аннотации Hibernate и Spring MVC 3. Мы будем использовать аннотоцию @OneToMany для указания отношений между нашими объектами. Мы не будем использовать каскадные типы или fetch-стратегии, вместо этого мы воспользуемся стандартными настройками @OneToMany.

Что такое ассоциация один-ко-многим?
Ассоциация один-ко-многим возникает тогда, когда каждой записи в таблице А, соответствует множество записей в таблице Б, но каждая запись в таблице Б имеет лишь одну соответствующую запись в таблице А.

Спецификация нашего приложения.

Приложение является простой CRUD системой управления списком записей. Каждая запись соответствует одному лицу, она содержит персональные данные и данные о кредитной карте. Каждое лицо может владеть несколькими кредитками. Так же мы добавим систему редактирования лиц и кредиток.

Ниже приведены скриншоты из будущего приложения:

Spring — Hibernate: ассоциация один ко многим - 1
Читать полностью »

Перевод статьи Доминика Гелино, на тему Инъекции Зависимости (Dependency Injection) и то, как это реализовано во фреймворке Robotlegs. Доминик делает попытку развеять, то ощущение магии, которое появляется у разработчика, когда он использует инъекции в Robotlegs.

Источник: www.zedia.net/2010/dependency-injection-ok-but-how/

inject
Читать полностью »

«Не звони нам. Мы позвоним тебе сами.» — принцип Голливуда

Внедрение зависимости (Dependency Injection — DI) означает передачу (внедрение) одной или более зависимости какому-либо объекту (клиенту, компоненту) таким образом, что после внедрения эта зависимость становится частью состояния объекта. Это немного напоминает паттерн проектирования Стратегия, с той лишь разницей, что стратегия задаётся лишь однажды — в конструкторе. DI позволяет создавать более слабо-связанную архитектуру приложения, которая лучше поддаётся поддержке и тестированию.

Итак, ещё раз плюсы:

  • Уменьшает связность компонент (отделяет бизнес-логику от создания объекта)
  • Позволяет писать более поддерживаемый код (в одни и те же объекты мы легко можем внедрять разные зависимости)
  • Позволяет писать более тестируемый код (мы можем легче использовать стабы и моки)
Без внедрения зависимости С внедрением зависимости
class example {                         
public:  
    example()                           
        : logic_(new logic{})           
        , logger_(                      
            logger_factory::create()    
          )                             
    { }  
         
    int run() const;                    
         
private: 
    shared_ptr<ilogic> logic_;          
    shared_ptr<ilogger> logger_;        
};                             

 class example {
 public:
     example(shared_ptr<ilogic> logic
           , shared_ptr<ilogger> logger)
       : logic_(logic), logger_(logger)
     { }

     int run() const;

 private:
     shared_ptr<ilogic> logic_;
     shared_ptr<ilogger> logger_;
 };

Читать полностью »

Городские легенды о медленных вызовах виртуальных функций - 1Традиционно компиляторы реализуют вызовы виртуальных функций через двойную косвенную адресацию — если класс содержит хотя бы одну виртуальную функцию, то в начале каждого объекта этого класса хранится адрес таблицы виртуальных функций. Если компилятор не знает конкретный тип объекта, на который указывает указатель, то для вызова виртуальной функции нужно сначала взять указатель на объект, прочитать адрес начала таблицы, затем по номеру метода прочитать адрес, где хранится реализация функции, затем вызвать функцию.

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

В тексте выше ключевое слово «если». Что, если компилятор знает, какую функцию на самом деле надо вызывать?
Читать полностью »

Ученые из НАСА представили первые изображения крупного астероида 2004 BL86, который приблизился к Земле на расстояние 1,2 миллиона километров (3,1 расстояния от планеты до Луны). Об этом сообщается на сайте космического агентства.

Опубликовано видео астероида, который приблизился к Земле (ВИДЕО)

Читать полностью »

От редактора Smashing Magazine:

На прошлой неделе Microsoft сделала самое значимое объявление для веба с тех пор, как в 1995 году запустила Internet Explorer: новый браузер под кодовым названием “Project Spartan”. Что это означает для нас, как разработчиков и дизайнеров? Какой движок рендеринга будет использовать Spartan и как он будет влиять на нашу работу? Мы поговорили с Джейкобом Росси, старшим инженером в команде веб-платформы Microsoft о новом браузере, используемом движке рендеринга и о том, заменит ли он в последствии Internet Explorer. Эта статья, написанная Джейкобом, является результатом нашего обсуждения и проливает свет на некоторые аспекты браузера, которые могут быть вам полезны.

Подробности о новом движке рендеринга Microsoft для «Project Spartan» - 1
Project Spartan, новый браузер от Microsoft, официально объявленный на прошлой неделе.

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

Эта статья рассказывает внутреннюю историю движка рендеринга Spartan: как он появился и как 20-летняя история платформы Internet Explorer (Trident) помогла нам определиться с подходом к его проектированию.
Читать полностью »

Рекорд по минимальной реализации компьютерных шахмат с 1983 года принадлежал программе 1K ZX Chess. На компьютере Sinclair ZX81 она занимала 672 байта памяти. При этом программа вмещала почти все правила шахматной игры, а также бота для игры против человека.

Компьютерные шахматы в 487 байтах - 1
Первое описание игры в журнале Your Computer Magazine за февраль 1983 года

Спустя 32 года этот рекорд побит. Группа Red Sector Inc. реализовала полностью играбельную версию шахмат BootChess всего в 487 байтах!
Читать полностью »

Компания Apple отчиталась за первый квартал 2015 финансового года, который для производителя завершился 27 декабря 2014 года.

Несомненно, именно благодаря новым смартфонам компания получила рекордную выручку — 74,6 млрд долларов. Для сравнения, годом ранее выручка Apple составляла 57,6 млрд долларов. Чистая прибыль достигла 18 млрд долларов, тогда как в прошлом году была равна 13,1 млрд долларов. Валовая чистая прибыль за год увеличилась с 37,9% до 39,9%. Международные продажи принесли 65% общего дохода.

Читать полностью »

В Японии прошёл аукцион Yahoo Auctions, в ходе которого неизвестный выложил 129 тыс. долл за приставку PlayStation 4 ограниченной серии.

Как известно, в декабре прошлого года японская компания Sony, отметившая 20-летний юбилей знаменитой серии игровых приставок PlayStation, выпустила ограниченную серию PS4 — последней версии консоли, получившей название Anniversary Edition. Тираж линейки, оформленной в стиле ретро, составил 12 тыс. 300 штук.

PS 4 ушла с молотка за 129 тысяч долларов

Читать полностью »

Очередной гвоздь в крышку гроба браузерного плагина Adobe Flash

YouTube включил HTML5 по умолчанию - 1

Поддержку тэга <video> на YouTube добавили ещё в 2010 году. На относительно полный переход на HTML5-видео ушло четыре с половиной года, но он наконец состоялся.

В блоге видеохостинга была размещена запись, рассказывающая о том, что теперь плеером по умолчанию для большинства пользователей будет HTML5-версия вместо плагина на Flash. Новый плеер включён по умолчанию пока не у всех, а только в Chrome, Internet Exporer 11, Safari 8 и в тестовых версиях Firefox.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js