metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2012-03-22 01:01 pm

Какой только херни люди не делают

http://tonsky.livejournal.com/256538.html?thread=1802266#t1802266
Для синглетона фабрика бывает нужна если его реализация зависит от контекста. Например у меня есть сервис для работы с процессами, он синглетон, но создаётся через фабрику потому что реализации разные если винда и линукс.

[identity profile] blackyblack.livejournal.com 2012-03-22 10:10 am (UTC)(link)
А ведь кому-то реально так удобнее...

[identity profile] familom.livejournal.com 2012-03-22 10:18 am (UTC)(link)
Напоминает комикс electric retard: начинается довольно безобидно, но вскоре появляются кровь, говно и мертвые нигры.

[identity profile] nicka-startcev.livejournal.com 2012-03-22 10:19 am (UTC)(link)
это потому что они make готовить не умеют.

На позапрошлой работе, большой проект выглядел примерно так:
в корне папочки под каждый бинарник или либу.
В каждой папочке файлы необходимые для компиляции и кучка подкаталогов с именами $(OS), содержимое которых собирается только под нужную ОС.

[identity profile] metaclass.livejournal.com 2012-03-22 10:22 am (UTC)(link)
Там не принято делать различные билды под разные оси.

[identity profile] nicka-startcev.livejournal.com 2012-03-22 10:30 am (UTC)(link)
то есть, под win/lin 32/64 у них не 4, а 1 бинарник?
шоке.

[identity profile] nicka-startcev.livejournal.com 2012-03-22 10:39 am (UTC)(link)
а. Тогда ладно. Жаба - это одно большое недоделанное недоразумение.

[identity profile] craneop.livejournal.com 2012-03-22 11:27 am (UTC)(link)
Ой вей. Альтернативу предложите?

[identity profile] theiced.livejournal.com 2012-03-22 01:17 pm (UTC)(link)
мммм. гопнет же.

[identity profile] craneop.livejournal.com 2012-03-22 01:26 pm (UTC)(link)
Гопнет уже работает под линупсом?

[identity profile] theiced.livejournal.com 2012-03-22 01:32 pm (UTC)(link)
уже лет 5 как, а чо?

[identity profile] craneop.livejournal.com 2012-03-22 01:33 pm (UTC)(link)
А, вы таки путаете "работает" и "почти работает"

[identity profile] theiced.livejournal.com 2012-03-22 01:35 pm (UTC)(link)
совсем работает.

[identity profile] nicka-startcev.livejournal.com 2012-03-22 06:48 pm (UTC)(link)
не работает. Пятая цивилка мутно невнятно падает.

[identity profile] theiced.livejournal.com 2012-03-22 02:02 pm (UTC)(link)
ну. я вот ша пишу ещё паралельно биндинги на гомоно. работают у кастомера под гопнетом, всё ок.

[identity profile] familom.livejournal.com 2012-03-22 09:03 pm (UTC)(link)
Они до сих пор не научились без костылей правильно урлы парсить.

[identity profile] nicka-startcev.livejournal.com 2012-03-22 06:37 pm (UTC)(link)
встречный вопрос: предложите альтернативу пассатижам.
Пассатижами удобно и гвозди забивать, и шурупы, и гайки крутить.

[identity profile] bambr77.livejournal.com 2012-03-22 10:35 am (UTC)(link)
А это не жава? Там уже жре собрано под ос. А оно при этом еще и в жабакоде различается? Кросплатформенность, понимаю.

[identity profile] craneop.livejournal.com 2012-03-22 11:27 am (UTC)(link)
Некоторые костыли сделанные через JNI например.

[identity profile] kkirsanov.livejournal.com 2012-03-22 03:21 pm (UTC)(link)
А не напомните, как назывался комикс, из которого взята эта аватарка?

[identity profile] metaclass.livejournal.com 2012-03-22 04:12 pm (UTC)(link)
http://gosupodaryofu.livejournal.com/25587.html
и там где-то есть полная версия дальше)

(Anonymous) 2012-03-22 04:14 pm (UTC)(link)
"Беспечный стрелок"

[identity profile] plumqqz.livejournal.com 2012-03-22 10:37 am (UTC)(link)
Зато при деле.

[identity profile] avnik.livejournal.com 2012-03-22 11:06 am (UTC)(link)
Пойду ка я зофрендю гражданина, ибо доставляет он в тяжкий учебный день

[identity profile] denisioru.livejournal.com 2012-03-22 11:21 am (UTC)(link)
В некоторых случаях почему бы и нет. Например, если синглтон реализует какой то интерфейс - то реализация действительно может быть разная, например если софтина запущена на SSD или обычном HDD. Инстансы разные, интерфейс один.

[identity profile] theiced.livejournal.com 2012-03-22 01:09 pm (UTC)(link)
вы упоролись?

[identity profile] enternet.livejournal.com 2012-03-22 11:28 am (UTC)(link)
Я, скажем так, иногда слегка вынужден писать на яве в виде Google App Engine/Java.

Моё мнение можно разделить на четыре части:
1) Ява как виртуальная машина JVM. Ну вполне ничего так. Всё шустро. Из теории мне известен только один серьёзный минус - отсутствие оптимизации хвостовой рекурсии. Встречал мнение, что нормальный JIT должен лечить это. За прогрессом не слежу, может уже и так. С тормозами GC я не сталкивался: нет миллионов объектов - нет и тормозов.
2) Ява как язык. Нуууу, более-менее вменяемый язык. Да, современных возможностей мало, но если задаться целью писать краткий и понятный код в полу-функциональном стиле - то это возможно. Придется правда почитать исходники и статьи мастеров, т.к. литература на эту тему отсутствует совсем. Вполне понимаю людей прыгающих со Скалой и Кложурой: мне тоже все эти выверты поднадоели, пора иди вперед. Но в целом писать можно.
3) Ява как платформа. Это просто ад пизды. Всё что можно сделать криво - сделано криво и причем во всех десяти вариантах. Логику некоторых моментов придумывали инопланетяне. На практике ничем кроме гугловских библиотек пользоваться невозможно. Ну, загнул, ещё пяток толковых есть, да. Применение почти всего сильно осложнено отсутствием нормальной документации.
4) Документация и литература. Хуже я не видел. Исходники загажены явадоком, причем всё написано так, чтобы не дать читателю сложить общую картину. Это песец. А с книгами так - вся литература про яву есть полное говно.

[identity profile] bydl0coder.livejournal.com 2012-03-22 11:47 am (UTC)(link)
>но если задаться целью писать краткий и понятный код в полу-функциональном стиле - то это возможно.

ну-ну.

[identity profile] enternet.livejournal.com 2012-03-22 11:57 am (UTC)(link)
Ну некоторым не дано.

[identity profile] bydl0coder.livejournal.com 2012-03-22 12:58 pm (UTC)(link)
В каких-то случаях можно нормально написать, но в целом - жопа. Не дотягивает до сишарпа.

[identity profile] theiced.livejournal.com 2012-03-22 01:11 pm (UTC)(link)
ну я же написал. да - там внутри ад пизды но пользователи данной либы смогут реализовать свои задача в несколько коротких строк жабокода.

[identity profile] bydl0coder.livejournal.com 2012-03-22 01:24 pm (UTC)(link)
Я про внутренний. Все эти MyDerpFactory myDerpHerpFactory = new MyDerpFactory(), Generics FAQ на триста страниц и т.п.

[identity profile] theiced.livejournal.com 2012-03-22 01:26 pm (UTC)(link)
зачем фактори? что такое generics faq?

[identity profile] bydl0coder.livejournal.com 2012-03-22 07:08 pm (UTC)(link)
Это пример того, как на жабе не получается писать "краткий и понятный код", о котором говорил комментатор выше. Куча нахуй не нужного boilerplate.

(Anonymous) 2012-03-23 06:15 am (UTC)(link)
Сомнительный какой-то пример.
APIException - почему-то не рантайм, а ведь так обещали клиентам строчки экономитьь. Вместо привычного всем cause - неизвеcтный науке innerException.
Map
[Error: Irreparable invalid markup ('<string,>') in entry. Owner must fix manually. Raw contents below.]

Сомнительный какой-то пример.
APIException - почему-то не рантайм, а ведь так обещали клиентам строчки экономитьь. Вместо привычного всем cause - неизвеcтный науке innerException.
Map<String, Object> в Client - если я нарисую свой байндинг, мне теперь везде руками кастить к этому счастию?
ApiClient - хотелось бы хост и порт на которые идут запросы настраивать, также хотелось бы иметь возможность не открывать коннект на каждый запрос.
FluentApi - если уж и городить по два объекта на сущность, то пусть один из них будет интерфейсом. Начало грамматики обычно собирают в фабрику. Ну и до кучи - почему я не могу весь таск собрать в fluent-style?

А еще тут логов нету :(

[identity profile] metaclass.livejournal.com 2012-03-23 06:41 am (UTC)(link)
Мы айседу за этот код и так моск проебали вдоль и поперек.
innerException общепринятое название же.
логи айсед делать отказался, чтобы не тащить 100500 зависимостей.

[identity profile] thedeemon.livejournal.com 2012-03-22 12:23 pm (UTC)(link)
Как я понимаю, с хвостовой рекурсией там принципиальная позиция - не хотят стектрейс терять, поэтому и JIT'у не дадут ее оптимизировать, если бы он умел.

[identity profile] bydl0coder.livejournal.com 2012-03-22 12:59 pm (UTC)(link)
Интересно, почему в микрософте сделали по другому.

[identity profile] theiced.livejournal.com 2012-03-22 01:11 pm (UTC)(link)
вы ошибаетесь, в новой жабе оно будет (в 8 чоле или уже в 7 запилили, я не в теме).

[identity profile] vp.livejournal.com 2012-03-22 12:44 pm (UTC)(link)
> Google App Engine/Java.

Поделитесь, а какого рода приложения вы на этом деле разрабатываете?

[identity profile] enternet.livejournal.com 2012-03-22 03:38 pm (UTC)(link)
Сайты/сервисы вестимо.

В целом, на GAE у меня крутятся такие категории сайтов:
1) Полная статика, без программирования как такового. Ява тут ни при чем. Просто потому что бесплатно. Сейчас есть ещё альтернатива таким сайтам в виде GitHub Pages.
2) Различного рода личные экспериментальные проекты. Потому что сейчас бесплатно, а если что-нибудь когда-нибудь выстрелит, то масштабирование будет халявным (хоть и за деньги, но вменяемые). Ява была выбрана потому что под питон ни одной нужной библиотеки было не найти, а изобретать велосипед не хотелось.

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

Я бы выбрал MS, но у них прайс совсем негуманный был и масштабирования автоматического не было. Это сейчас я сам умею выжать даже из стандартной десктопной машинки с IIS XX тыс.запросов/сек, а раньше увы.
Edited 2012-04-05 11:01 (UTC)

[identity profile] craneop.livejournal.com 2012-03-22 11:28 am (UTC)(link)
Заебали эти lang-срачи, честно.

[identity profile] jakobz.livejournal.com 2012-03-22 11:48 am (UTC)(link)
У меня кстати легкие DI-контейнеры, типа unity, отторжения не вызывают. Пока из через XML не начинают конфигурить и не приходит какой-нибудь лид-фашист и заставляет описывать интерфейсы для всего подряд.

[identity profile] blueher.livejournal.com 2012-03-22 01:22 pm (UTC)(link)
Логично, чё - а вдруг при следующем запуска винде станет линуксом. Вот тут-то фабрика для создания синглтона и зарулит со страшной силой!