new stuff

Aug. 14th, 2012 12:01 pm
juan_gandhi: (Default)
[personal profile] juan_gandhi
function New(name) { return java.lang.Class.forName(name).newInstance() }

function newList() { return New("java.util.LinkedList") }

Date: 2012-08-14 08:06 pm (UTC)
From: [identity profile] dair-targ-one.livejournal.com
LinkedList -- это теперь так принято?

Date: 2012-08-14 08:13 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Это ж джаваскрипт разговаривает с джавой.

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

Date: 2012-08-15 04:33 am (UTC)
From: [identity profile] djuffin.livejournal.com
Половина http://www.alfresco.com/ в таком стиле написана. И там ужас...

Date: 2012-08-15 04:42 pm (UTC)
From: [identity profile] http://users.livejournal.com/_windwalker_/
скорее 90%, плюс вместо интерфейсов они очень часто используют конкретные классы.

Date: 2012-08-15 05:09 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Хм, у меня альфрескины сорсы вот вроде тоже открыты, ничего такого ужасного не видел.

Замечу, что там наверху у меня джаваскрипт. И в таком стиле надо писать только core, а дальше уже вот:

function removeFS(id) {
  var stack = list(uidMsg(id), stringMsg("RemoveFS"))
  stageDseOps()
  return repoMgr().act(stack)
}

...
function ls() {
  scan(function(info) {
         spaces(info.depth); println("f " + info.dirname + " -> " + info.name + "(" + info.attrs['content-type'] + ") [" + info.size + "]")
       },
       function(info) {
         spaces(info.depth); println("d " + info.dirname)
       })
}

Date: 2012-08-15 05:19 pm (UTC)
From: [identity profile] djuffin.livejournal.com
Ну я вероятно не объективен, у меня острая непереносимость JS. И я не понимаю людей которые тащат его на сервер.

Date: 2012-08-15 06:04 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Вы его, наверное, готовить не умеете.

Я лет пять, если не больше, пытался его понять.

Date: 2012-08-15 06:32 pm (UTC)
From: [identity profile] djuffin.livejournal.com
Может и не умею, но на мой взгляд красота многих концепций в JS
глубоко похоронена под слоем идиотских граблей.
Мне же не только нумералы Черча и комбинаторы писать, надо и более приземленные задачи решать.

Вот тут дядя очень хорошо рассказывает про основные грабли
http://www.youtube.com/watch?v=hQVTIJBZook
И хотя он полон оптимизма, я не могу его разделить .

Date: 2012-08-16 09:15 pm (UTC)
From: [identity profile] alamar.livejournal.com
Какие альтернативы? Задача - вкрутить консоль на языке в java-монстропроцесс.

Date: 2012-08-17 04:00 am (UTC)
From: [identity profile] djuffin.livejournal.com
Руби, Питон

Date: 2012-08-17 07:37 am (UTC)
From: [identity profile] alamar.livejournal.com
jar руби в последний раз, когда я на него смотрел, весил 11 что ли мегабайт, больше, чем все остальные библиотеки проекта. Ну или 3, я не помню, но в общем мне как-то стало сцыкотно, хотя он вкусный, конечно.

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

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

А, ну и плюс у них куча своего говна - то бишь библиотек низкого уровня, и каждый раз придётся думать - использовать мне java.io.file.File или их свою io-библиотеку. А у js этого всего нету и можно спокойно использовать те же абстракции, что во всём остальном коде на проекте.

Date: 2012-08-16 08:49 pm (UTC)
From: [identity profile] alamar.livejournal.com
Cf.linkedList() же

Естественно, init.js:
ru = Packages.ru
Cf = ru.yandex.bolts.collections.Cf

Date: 2012-08-16 08:52 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Wow, это то что надо!!! Спасибо!

Date: 2012-08-16 09:14 pm (UTC)
From: [identity profile] alamar.livejournal.com
Пожалуйста, коли не шутишь. Но вообще статические методы в джаваскрипте даже ценнее, чем в джаве: заимпортируй пару классов, и вся коробка инструментов под рукой.

Ещё мы сделали два тупых метода:
$F(объект, 'поле') для доставания значения приватного поля рефлекшоном
и $I(X) = java.lang.Integer.valueOf(X) (просто надобится постоянно)

Date: 2012-08-16 10:03 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Вот-вот, это то что мне надо! А то я слышал про это чудо, но как-то не въезжал, пока сам не напоролся.

Date: 2012-08-23 08:08 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Щас, $F где-то в открытом доступе есть? Могу и написать, конечно...

Date: 2012-08-23 09:03 pm (UTC)
From: [identity profile] alamar.livejournal.com
Там используются наши обёртки, но грубо говоря:
$F = function(obj, fieldName) {
var f = obj.getClass().getDeclaredField(fieldName);
f.setAccessible(true);
return f.get(obj);
}

Date: 2012-08-23 09:38 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
А, спасибо.

Profile

juan_gandhi: (Default)
Juan-Carlos Gandhi

August 2025

S M T W T F S
      12
3456789
10 11 12 13141516
17181920212223
24252627282930
31      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 19th, 2025 01:46 am
Powered by Dreamwidth Studios