andrey_ado: это никак не влияет на результат. В питоне всё по ссылке передаётся, и присваивание на самом деле приравнивает ссылки. Это легко проверить, достаточно посмотреть id объекта. Если тип объекта, на который ссылаются 2 переменных мутабельный, то все переменные, которые указывают на него будут возвращать изменённое значение. Если же переменной присвоить новое значение (а не изменить её содержимое), то она просто будет указывать на другую область памяти, счётчик объектов-указателей уменьшится на 1.
class Foo(object):
...: def foo(self, lst):
...: self.lst = lst
...: self.lst[0] = 100
...:
In [2]: a = [1, 2, 3]
In [3]: foo = Foo()
In [4]: foo.foo(a)
In [5]: b = foo.lst
In [6]: a
Out[6]: [100, 2, 3]
In [7]: b
Out[7]: [100, 2, 3]
In [8]: foo.lst
Out[8]: [100, 2, 3]
In [9]: id(a)
Out[9]: 139912620342856
In [10]: id(b)
Out[10]: 139912620342856
In [11]: id(foo.lst)
Out[11]: 139912620342856
In [12]: del foo
In [13]: a
Out[13]: [100, 2, 3]
In [14]: b
Out[14]: [100, 2, 3]
bagerman: Ну да, у ангуляра нет зависимостей от других библиотек, а кроме JS не на чем писать. Изменения идут напрямую с DOM страницы, для "живого" обновления всех данных используется dirty checking: habrahabr.ru/post/165275 . Компоненты связываются через внедрение зависимостей (по имени параметра).
Удалять надо только POST или DELETE (если апи пишешь, HTML-формы умеют только в GET/POST) методами.
Иначе любой поисковый робот (или livesearch хрома, например) сможет устроить глобальную зачистку на сайте.
booogabooo Да ладно, java очень простой язык. В PHP куда больше заморочек, в том числе, связанных с неявной типизацией. Плюс, изучив Java Core можно пойти дальше в разработку под Android, или в веб, или в десктоп, или ещё куда-нибудь. ПХП таким похвастаться не может.
public static native void onMyButtonClick() /*-{
$wnd.myJSfunction();
}-*/;
Но вообще, GWT больше подходит для приложений со сложными интерфейсами для внутреннего использования, которые работают с локалкой. Для сайтов плохо подходит.
А для Go есть хорошие фреймворки с наличием более-менее больших количеств плагинов/модулей и хорошим комъюнити? Просто именно новичку без всего этого будет очень сложно. А вот освоить тот же питон и django с нуля и писать типовые сайты можно достаточно быстро.
Oxoron: Наверное имеется ввиду, что есть сфера радиуса r1 и некое число r2 < r1. Нужно расположить на сфере несколько "кругов" радиуса r2, так чтобы площадь покрытия была максимальной (если круги не могут пересекаться более чем в 1-й точке). Или же покрыть такими "кругами" всю площадь, при этом количество "кругов" должно быть минимальным (если "круги" могут иметь более 1-й общей точки).
marazmiki: Для проекта нет разницы, где располагается папка с окружением. Но централизация имеет несколько преимуществ. Ну и сам враппер добавляет несколько крайне удобных команд, возможных в том числе и из-за централизации:
Выполнение команды во всех репозиториях. Удобно, если, например, нужно обновить pip/setuptools везде.
Создать временное окружение (при деактивации удаляется)
Копирование окружений
Добавление внешних директорий к окружению
Включать/выключать глобальные пакеты
Понятно, что и без враппера можно жить, но с ним многим удобнее из-за этих небольших, но приятных бонусов.
Враппер имеет много хороших фишек. Например, просмотр всех окружений, переход к ним 1-й командой, хуки для действий. Ну и централизованно держать окружения имхо лучше, чем попроектно. Ведь бывают разные случаи: проекту надо 2 и более окружений (для тестирования, например, работоспособности во 2-й и 3-й версиях), или нужно виртуальное окружение, не привязанное к проекту (у меня так стоит ipython notebook).
Corrandoo: Аргументный аргумент, да.
Тогда спроси у своего брата, почему:
1) В "бедном с++ из 90" лямда-функции, замыкания и другие полезные функциональные штуки появились в стандарте языка ещё в первых версиях (начало 90-х), а в С++ только в 2011 году?
2) Почему в несовременном питоне есть нормальные метаклассы, интроспекция с рефлексией, а в С++ этого нет? Почему в С++ такое существует только на уровне сторонних библиотек, причём там ты пишешь уже не на чистом С++, а на неком его подмножестве? Всё метапрограммирование в чистом С++ доступно только в compile-time, никакого там runtime (по-сути, это тупая кодогенерация). Кстати, в Objective C, который тоже произошёл от C, таких проблем нет.
3) Почему в современном С++ до сих пор нет системы импорта? Там до сих пор остались такие рудименты из 80-х, как #include и прочая препроцессорная магия.
4) Почему питон, несмотря на его утиную типизацию, типобезопасный, а в продвинутом С++ ещё остались неявные преобразования?
5) Почему генераторы как часть синтаксиса в отсталом питоне появились в версии 2.5, а в С++ их до сих пор нет (реализуются через костыль в виде макросов для препроцессора или с помощи кучи кода в С++11)?
...) Список вещей, присутствующих в питоне и отсутствующих с С++ можно продолжать очень долго.
Александр Кондауров: Потому что есть очень много способов подключения БД к Java. Всё сильно зависит от технологий. На самом деле всё просто, 1 файл настройки, файлы моделей и по 1 файлу для доступа к ним. Слегка многословно, но это Java. В play это сделано по-другому, в спринге похоже, но тоже отличается.
Андрей: Транкзакции - довольно сложная вещь. На серверах приложений ими могут управлять эти самые сервера. Например, все действия, происходящие в компоненте внедрённым через EJB автоматически будут использовать транзакции.
Сервера следят за контекстом и жизненным циклом приложения и отдельных бинов. Бины, например, бывают stateless и stateful. Первые должны либо подтверждать либо откатывать транкзакцию при выполнении методов, а вот вторые могут быть связаны с транзакцией даже если соединение с БД отключилось.
Если делать вручную, то стартовать и подтверждать (либо откатывать) транзакции нужно в классах с бизнес-логикой, где будет использоваться код. Часто используемый код можно выделить в отдельный класс.
какие там термины, например
В нетбинсе это именуется фасадом (UserFacade). В других источниках их называют сервисами (UserService). В третьих - просто бинами (UserBean). Суть в том, что вся бизнес-логика, относящаяся к сущности User идёт через них.
можно ли унаследовать
Да, по второй ссылке, что я приводил есть пример реализации DAO.
Обычно создаётся абстрактный класс, параметризуемый типом сущностей. В нём содержится большая часть кода. Пример иерархии описан, например, тут ru.stackoverflow.com/questions/299530/%D0%9A%D0%B0...
Циклы вообще можно выбросить из языка, их можно заменить, например, рекурсией, а ветвление - более базовая вещь в программировании, без которой вроде как и нельзя. Поэтому сравнение некорректное, ведь switch - это просто сопоставление с образцом, а не полноценная проверка логических условий.
bagerman: if (i > 2) { console.log(2) }.
Ну и любые неравенства, где в одной или более ветках может быть полуинтервал. Свитч проверяет только на совпадение же.