Случайны выбор дневника Раскрыть/свернуть полный список возможностей


Найдено 517 сообщений
Cообщения с меткой

клоны - Самое интересное в блогах

Следующие 30  »
Прекрасно-Премудрая

Китайским ученым удалось клонировать обезьян

Пятница, 02 Февраля 2018 г. 16:47 (ссылка)


Удивительную новость сообщили ученые из Китая – впервые в мире им удалось клонировать обезьян. Для этого они использовали технологию, разработанную еще в 1996 году для клонирования овечки Долли. Эти две симпатичные обезьянки-девочки по имени Чжун Чжун и Хуа Хуа (Zhong Zhong & Hua Hua) на самом деле являются клонами и по своим генетическим данным полностью соответствуют обезьяне-донору.



Клонированные обезьянки чувствуют себя отлично – результаты проверок показали, что они полностью здоровы.



клонированные обезьянки Чжун Чжун и Хуа Хуа



Обезьянки клоны видео
Метки:   Комментарии (2)КомментироватьВ цитатник или сообщество
Валентина-л

ПЕРВЫЕ В МИРЕ КЛОНИРОВАННЫЕ МАКАКИ.

Суббота, 27 Января 2018 г. 12:27 (ссылка)


Пекин, 25 января  -- Волшебная история из китайского романа "Путешествие на Запад" о превращении волосков в совершенно одинаковых обезьян сбывается на наших глазах. Детенышам макаки Чжунчжун и Хуахуа, появившимся на свет в Китае путем клонирования, уже почти 2 месяца!



Сегодня их история появилась на страницах авторитетного международного научного журнала Cell. Это означает, что китайские ученые успешно решили технически сложную задачу клонирования приматов. Данный прорыв в мировой биологии стал возможен благодаря пятилетней работе научной группы Сунь Цяна из Исследовательского центра нейробиологии при Академии наук Китая.



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



4 (700x518, 213Kb)

 



 

Читать далее...
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Клонирует ли Ketchapp игры?

Понедельник, 18 Декабря 2017 г. 11:34 (ссылка)

image


Старая добрая страшилка «Если вы выпустите успешную игру, то Ketchup скопирует её за неделю» уже давно ходит среди игровых разработчиков. Одни считают, что это правда; другие – что это глупые сплетни. На этот раз ей нашёлся свежий, с пылу с жару, пример, достойный обсуждения (сразу замечу, что в данной ситуации не всё однозначно).



На выходных широкое внимание общественности привлёк Burak Kurkcu, разработчик из Турции. В своём Twitter он рассказал о том, что издатель Ketchup и разработчик Юрий Саначев склонировали его мобильную игру Stair Hops. Причём, в отличие от оригинальной игры, созданный за два месяца и выпущенный Ketchapp клон под названием Stairs попал в TOP-10 и приносит издателю неплохой заработок.



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



Здесь можно поспорить, является ли игра жанра «infinite jumper» оригинальной в принципе — сам разработчик утверждает, что до выпуска его игры никаких аналогов в App Store не существовало.
Читать дальше ->

https://habrahabr.ru/post/344950/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

[Из песочницы] Атака клонов. Как бороться с дублированием кода?

Вторник, 08 Августа 2017 г. 15:57 (ссылка)

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



В рамках данной статьи мне бы хотелось напомнить, что такое программные клоны, какие они влекут за собой проблемы и как с ними можно бороться. В статье приводятся примеры рефакторинга реальных клонов из популярного фреймворка Spring. В качестве инструментов используются Java 8, IDE IntelliJ IDEA 2017.1 и плагин Duplicate Detector 1.1.





Откуда берутся клоны?



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



Можно выделить следующие основные причины возникновения клонов:




  • Умышленное копирование фрагментов программы

  • Многократное использование сложного API

  • Повторная реализация существующей функциональности

  • Слабая выразительность используемого языка

  • Недостаток прав для модификации исходного кода



Нужно ли бороться с клонами?



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



С другой стороны, удаление дубликатов также может привести к ошибкам, особенно, если для этого необходимо вносить существенные изменения в текст программы. Однако главным аргументом против удаления клонов является то, что такое удаление часто приводит к увеличению числа зависимостей. Довольно интересно про это написано в статье "Redundancy vs dependencies: which is worse?".











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



В конечном счете, удалять клоны или нет — зависит от конкретной ситуации. Однако, в любом случае, дублированный код — это всегда повод задуматься.



Инструменты для поиска клонов



Существует довольно много инструментов для поиска клонов: PMD, CCFinder, Deckard, CloneDR, Duplicate finder (maven plugin), и многие другие.



К сожалению, в основном эти инструменты не интегрированы со средой разработки. Отсутствие интеграции значительно затрудняет навигацию и рефакторинг клонов. При этом, инструментов, встроенных в среду разработки, оказывается не так много. Например, в случае IntelliJ IDEA выбор стоит только между стандартными инспекциями и двумя плагинами (PMD и Duplicate Detector).



Данная статья преследует две цели. С одной стороны, с ее помощью мне бы хотелось внести свой скромный вклад в борьбу с дублированием исходного кода. С другой стороны, я бы хотел познакомить читателя с плагином Duplicate Detector, разработчиком которого я и являюсь. На данный момент, по сравнению со стандартными инспекциями, этот плагин обнаруживает в 3-4 раза больше клонов, предоставляет более удобный интерфейс и доступен для некоммерческой версии IntelliJ IDEA.



Основные возможности плагина Duplicate Detector:




  • Анализ кода на лету (во время редактирования)

  • Анализ проектов промышленного масштаба (с миллионами строк кода)

  • Удобная навигация и сравнение дубликатов

  • Поддержка языков Java и Kotlin



Для чего может пригодится инструмент обнаружения клонов?

  • Для работы с legacy кодом

  • Для удобного code review

  • Для отслеживания клонов, которые нельзя удалить

  • Для рефакторинга, если Вы используете методологию, схожую с XP



Рефакторинг клонов



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



Давайте рассмотрим несколько конкретных примеров из популярного фреймворка Spring. Для этого воспользуемся средой разработки IntelliJ IDEA и плагином Duplicate Detector.



Возможности среды разработки и плагина



Среда разработки IntelliJ IDEA и плагин Duplicate Detector предоставляют множество возможностей, которые упростят рефакторинг клонов. Например, довольно много функций можно найти в контекстном меню Refactor или в подсказках к инспекциям кода (Alt + Enter в рамках инспекции).



Показать панель сравнения дубликатов





Обобщить фрагмент в виде метода



Подставить тип возвращаемого значения



Пример 1. Начнем с очевидного.









В данном примере фрагменты кода почти идентичны. Главные отличия касаются только строк 4 и 9, в которых изменяются значения полей. В таких случаях на практике мало что можно сделать. Как вариант, можно попробовать выделить функциональные интерфейсы и использовать лямбды. Однако при таком рефакторинге код не обязательно станет короче, а главное, понятнее.



Рефакторинг. Вариант 1.
void setVariableNameOrType(String name, Consumer setName, Consumer> setType) {
if (isVariableName(name)) {
setName.accept(name);
}
else {
try {
setType.accept(ClassUtils.forName(name, getAspectClassLoader()));
}
catch (Throwable ex) {
throw new IllegalArgumentException("Class name '" + name +
"' is neither a valid argument name nor the fully-qualified " +
"name of a Java type on the classpath. Root cause: " + ex);
}
}
}


void setThrowingNameNoCheck(String name) {
setVariableNameOrType(name, variableName -> this.throwingName = name, type -> this.discoveredThrowingType = type);
}


Вместо этого давайте еще раз внимательно рассмотрим код дубликатов. Судя по всему, главная задача ветки else — это загрузка класса. Было бы логичным, для начала, выделить такую загрузку в виде отдельного метода.



Рефакторинг. Вариант 2.
Class

https://habrahabr.ru/post/335172/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество

Следующие 30  »

<клоны - Самое интересное в блогах

Страницы: [1] 2 3 ..
.. 10

LiveInternet.Ru Ссылки: на главную|почта|знакомства|одноклассники|фото|открытки|тесты|чат
О проекте: помощь|контакты|разместить рекламу|версия для pda