Re[56]: Являются ли макросы свидетельством недостаточной выр
От: Cyberax Марс  
Дата: 07.08.07 16:26
Оценка:
Здравствуйте, EvilChild, Вы писали:


C>>Я уже совсем запутался. Можешь все-таки пример привести? Хотя бы на псевдокоде.

EC>Ты таки заставил меня запустить Visual Studio
EC>Типа так:
EC>
EC>using System;
EC>namespace Cyberax
EC>{
EC>    class Program
EC>    {
EC>        static void Main(string[] args)
EC>        {
EC>            Test2 t = new Test2();
EC>            t.Action(1);
EC>        }
EC>    }

EC>    class Test
EC>    {
EC>        public void Method1(int i)
EC>        {
EC>        }

EC>        public void Method2(int i)
EC>        {
EC>        }
EC>    }

EC>    class Test2
EC>    {
EC>        private readonly Test _t = new Test();

EC>        public Action<int> Action
EC>        {
EC>            get { return DateTime.Now.Second > 10 ? new Action<int>(_t.Method1) : new Action<int>(_t.Method2); }
EC>        }
EC>    }
EC>}
EC>

Пишу без IDE (Винду переустановил, блин), так что могут быть мелкие синтаксические ошибки:
public class Main
{
    public static void main(String []args)
    {
        Test2 t=new Test2();
        t.getAction(1).act();
    }

}

class Test
{

    public void method1(int i)
    {
    }

    public void method2(int i)
    {
    }
}

interface Action<T>
{
    void act(T param);
}

class Test2
{
    private final Test t = new Test();

    public Action<T> getAction()
    {
        if ((System.currentTimeMillis() % 10)==0)
            return new Action<Integer>(){int act(){t.method1(param);}};
        else
            return new Action<Integer>(){int act(){t.method2(param);}};
    }
}
Sapienti sat!
Re[54]: Являются ли макросы свидетельством недостаточной выр
От: Cyberax Марс  
Дата: 07.08.07 16:28
Оценка:
Здравствуйте, AndrewVK, Вы писали:

C>>У меня вот тоже в кластере железо пару раз подглючивало (RAID-карты оказались кривыми). И ничего, все работало — клинеты даже ничего не замечали, все прозрачно делало failover.

AVK>Так мы тоже можем failover сделать. Оплатишь?
Если вам нужно сделать failover — без проблем, мы вам готовы переписать сервер Только платить вы должны.

Кстати, какое отношение имеет железо к постоянным проблемам типа: "не могу подсоединиться к SQL-серверу" или "сборка не найдена"?
Sapienti sat!
Re[46]: Являются ли макросы свидетельством недостаточной выр
От: Cyberax Марс  
Дата: 07.08.07 16:30
Оценка:
Здравствуйте, IT, Вы писали:

IT>>>Я уже у Глеба спрашивал, могу тебе задать тот же вопрос. Ты вообще в курсе зачем нужен DAL?

C>>Вообще-то да. Поэтому у меня он сведен к минимуму
IT>Если ты его сводишь к минимуму, продемонстрированными выше способами, то это собственного говоря то, откуда 10 лет назад начали бежать и в результате прибежали к такому понятию как DAL.
Фига.

Двухуровневые системы были плохими из-за прямой работы с данными в коде UI. У меня идет прямая работа с бизнес-объектами, а mapping'ом их на базу данных занимается Hibernate. Всякие security и прочее обеспечиваются с помощью interceptor'ов, тоже подключаемых к Hibernate.
Sapienti sat!
Re[55]: Являются ли макросы свидетельством недостаточной выр
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 07.08.07 16:45
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Если вам нужно сделать failover — без проблем, мы вам готовы переписать сервер Только платить вы должны.


Мы и сами перепишем. Если намек не понят, поясню: RSDN проект некоммерческий, поэтому никакого файловера на нем нет и не будет.

C>Кстати, какое отношение имеет железо к постоянным проблемам типа: "не могу подсоединиться к SQL-серверу" или "сборка не найдена"?


Прямое. Рвется постоянно связь между серверами из-за глюков сетевой карты на одном из них.
... << RSDN@Home 1.2.0 alpha rev. 688>>
AVK Blog
Re[44]: Являются ли макросы свидетельством недостаточной выр
От: Cyberax Марс  
Дата: 07.08.07 16:53
Оценка: 1 (1)
Здравствуйте, IT, Вы писали:

IT>Ответ неверный. DAL нужен для изоляции кода, работающего с БД от остальных частей приложения. Ключевое слово здесь изоляция. Проблема в том, что фактически мы пишем код на двух языках, при этом один из них, SQL, вообще никак не контролируется компилятором. DAL изолирует этот код и не позволяет ему расползаться по всему приложению.

"А Баба Яга против!" (с) мультфильм.

Я уже привел пример с Hibernate. Почти весь DAL концентрируется в отдельной библиотеке, в результате в основном коде можно не волноваться о мелочах. Статическая проверка тоже в большинстве случаев нормально делается.

IT>>>
IT>>>class UI
IT>>>{
IT>>>  void OnLoad()
IT>>>  {
IT>>>    binder.List = from c in Customer select c;
IT>>>  }
IT>>>}
IT>>>

GZ>>Пример достойный example или простейшего проекта.
IT>О! Видишь что с людями делает декларативщина? Тебе этот код кажется примитивным? Правильно. А почему? Да потому что в нём нет ничего лишнего. Ни одного лишнего элемента. Учитывая, что в обычном коде мусора как правило больше половины, то смотря на такой код хочется зажмурится, как когда смотришь на яркий свет. Что-то тут не так, где-то нас обманывают. Только с декларативностью можно добиться такого примитивизма.
Ужжжас, а не пример.

Откуда мы берем соединение для работы с Cusomer'ом? Что будет при навигации по связям от него? Вернется ли нам disconnected dataset? Какой пользователь используется для работы с данными?
Sapienti sat!
Re[57]: Являются ли макросы свидетельством недостаточной выр
От: EvilChild Ниоткуда  
Дата: 07.08.07 16:54
Оценка:
Здравствуйте, Cyberax, Вы писали:

    return new Action<Integer>(){int act(){t.method2(param);}};


Можешь эту строку пояснить? Особенно интересует выделенное.
Я правильно понял, что экземпляр интерфейса по new создать можно или это что-то другое?
now playing: B-Movie — Nowhere Girl (Adam Freeland Mix)
Re[56]: Являются ли макросы свидетельством недостаточной выр
От: Cyberax Марс  
Дата: 07.08.07 16:55
Оценка:
Здравствуйте, AndrewVK, Вы писали:

C>>Если вам нужно сделать failover — без проблем, мы вам готовы переписать сервер Только платить вы должны.

AVK>Мы и сами перепишем. Если намек не понят, поясню: RSDN проект некоммерческий, поэтому никакого файловера на нем нет и не будет.
А как это связано? Slashdot вот тоже некоммерческий, а failover на нем есть. Если надо новый сервер — я думаю, что уж пара десятков человек скинется по $100.

C>>Кстати, какое отношение имеет железо к постоянным проблемам типа: "не могу подсоединиться к SQL-серверу" или "сборка не найдена"?

AVK>Прямое. Рвется постоянно связь между серверами из-за глюков сетевой карты на одном из них.
Так поставьте SQL-сервер на одну машину с сайтом.
Sapienti sat!
Re[58]: Являются ли макросы свидетельством недостаточной выр
От: Cyberax Марс  
Дата: 07.08.07 17:04
Оценка: 6 (1)
Здравствуйте, EvilChild, Вы писали:

EC>
EC>    return new Action<Integer>(){int act(){t.method2(param);}};
EC>

EC>Можешь эту строку пояснить? Особенно интересует выделенное.
EC>Я правильно понял, что экземпляр интерфейса по new создать можно или это что-то другое?
Нет, ты создаешь анонимный класс, реализующий интерфейс Action.

Точно так же можно и расширять классы:
interface Action<T>
{
    void act(T param);
    void doNotAct(T param);
}

class ActionAdapter<T> implements Action<T>
{                                          
    void act(T param){} //Do nothing.
    void doNotAct(T param){}
}

class Test2
{
    private final Test t = new Test();

    public Action<T> getAction()
    {
                final int outerVar=123;

        if ((System.currentTimeMillis() % 10)==0)
            return new ActionAdapter<Integer>(){int act(){t.method1(param);}};
        else
            return new ActionAdapter<Integer>()
            {
                                int someVar;
                                {
                                   //Анонимный конструктор
                                   someVar=Math.random(); 
                                   if (someVar%2==0) someVar=outerVar; //Обращаемся к локальным переменным метода
                                }

                int act(){t.method2(param);}
                int doNotAct(){//Haha!}
            };
    }
}
Sapienti sat!
Re[59]: Являются ли макросы свидетельством недостаточной выр
От: EvilChild Ниоткуда  
Дата: 07.08.07 17:17
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Нет, ты создаешь анонимный класс, реализующий интерфейс Action.


Я просто не в курсе был, что есть такой приятный сахар. Здорово.
Но с делегатами всё равно код короче. В большинстве случаев тип делегата можно не указывать.
Но в твоём случае нет платы за мультикастовость (которая есть в делегатах), что лучше.
Так, что, то на то.
now playing: Swayzak — Leisure Centre
Re[54]: Являются ли макросы свидетельством недостаточной выр
От: . Великобритания  
Дата: 07.08.07 17:21
Оценка:
AndrewVK wrote:

> C>Можно пример на делегатах?

> class A
> {
>     private bool Foo() {...}
>     private bool Bar() {...}
>     
>     static void Main()
>     {
>         bool flag = ...;
>         var x = "abcdef".Find(flag ? Foo : Bar);
>     }
> }


А это рабочий пример??? Для какого экземляра A будут вызываться Foo/Bar из Find?
Posted via RSDN NNTP Server 2.1 beta
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[60]: Являются ли макросы свидетельством недостаточной выр
От: . Великобритания  
Дата: 07.08.07 17:26
Оценка:
EvilChild wrote:

> C>Нет, ты создаешь *анонимный класс*, реализующий интерфейс Action.

> Я просто не в курсе был, что есть такой приятный сахар. Здорово.
Не совсем уж и сахар. Главное — возможность определять классы внутри методов, притом с локальным конекстом. Как такое
делается в c#?
Posted via RSDN NNTP Server 2.1 beta
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[60]: Являются ли макросы свидетельством недостаточной выр
От: Cyberax Марс  
Дата: 07.08.07 17:30
Оценка:
Здравствуйте, EvilChild, Вы писали:

C>>Нет, ты создаешь анонимный класс, реализующий интерфейс Action.

EC>Я просто не в курсе был, что есть такой приятный сахар. Здорово.
EC>Но с делегатами всё равно код короче. В большинстве случаев тип делегата можно не указывать.
Тут по-хорошему, нужен вывод типов.

Overhead, кстати, не так напрягает — IDE помогает. В IDEA это пишется так new Action()-ctrl-shift-space, выбрать implement methods. И пишешь реализацию.

EC>Но в твоём случае нет платы за мультикастовость (которая есть в делегатах), что лучше.

EC>Так, что, то на то.
Мультикастовость, кстати, в Java обычно тупо реализуют в вызывающем контейнере с помощью множества обработчиков.
Sapienti sat!
Re[52]: Являются ли макросы свидетельством недостаточной выр
От: Cyberax Марс  
Дата: 07.08.07 17:42
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Если ты не видишь, это не значит что проблем нет. Вот тебе псевдокод:

AVK>
AVK>var x = GetProxy(...);
AVK>var y = x as Y;
AVK>Console.WriteLine(y == null); // false
AVK>y.AppendContract(typeof (Y));
AVK>var y = x as Y;
AVK>Console.WriteLine(y == null); // true
AVK>

AVK>Такое ни на каких отдельно сгенеренных проксях ты не сделаешь.
Классно. А где об этом можно почитать? В документации к RealProxy я не вижу возможности динамически добавлять реализуемые типы.

C>>А вообще, в Java есть http://java.sun.com/developer/products/jini/index.jsp — вроде бы функциональный аналог WCF (и появился, что характерно, раньше всего hype'а с WebServices).

AVK>Если это функциональный аналог, зачем тогда Tango Project?
Для интероперабельности, у них же написано.

JINI, кстати, не особо популярен. Видимо, разработчики усвоили главное правило распределенного программирования: "Do not distribute".

C>>Вывода типов пока действительно нет — но Scala это исправляет

AVK>А при чем тут Scala?
Есть мнение, что она может стать официальным продолжателям Java. Кстати, еще и JavaFX подкатывается.
Sapienti sat!
Re[61]: Являются ли макросы свидетельством недостаточной выр
От: EvilChild Ниоткуда  
Дата: 07.08.07 17:44
Оценка:
Здравствуйте, ., Вы писали:

.>Главное — возможность определять классы внутри методов, притом с локальным конекстом. Как такое

.>делается в c#?
Методы можно. Мне кажется этого достаточно, если знаешь когда нет, то приведи пример.
now playing: Etienne De Crecy — Fuck
Re[61]: Являются ли макросы свидетельством недостаточной выр
От: EvilChild Ниоткуда  
Дата: 07.08.07 17:51
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Тут по-хорошему, нужен вывод типов.

Он в каком-то виде присутствует, просто в том случае компилятор почему-то не может.

C>Мультикастовость, кстати, в Java обычно тупо реализуют в вызывающем контейнере с помощью множества обработчиков.

А можешь привести минимальный пример реализации мультикастового события? Там контейнер обработчиков вручную ведётся?
now playing: Adam Freeland — Silverlake Pills
Re[61]: Являются ли макросы свидетельством недостаточной выр
От: EvilChild Ниоткуда  
Дата: 07.08.07 17:51
Оценка:
Здравствуйте, ., Вы писали:

.>Не совсем уж и сахар.

Насколько я знаю, компилятор создаст скрытый класс для твоего анонимного класса.
Если это так, то это сахар в чистом виде.
now playing: Kim — By The Time They Reach You (Bagraiders Mix)
Re[53]: Являются ли макросы свидетельством недостаточной выр
От: EvilChild Ниоткуда  
Дата: 07.08.07 17:54
Оценка:
Здравствуйте, Cyberax, Вы писали:

AVK>>А при чем тут Scala?

C>Есть мнение, что она может стать официальным продолжателям Java. Кстати, еще и JavaFX подкатывается.
Т.е. санки всерьёз ею заинтересовались?
now playing: Kim — By The Time They Reach You (Bagraiders Mix)
Re[47]: Являются ли макросы свидетельством недостаточной выр
От: IT Россия linq2db.com
Дата: 07.08.07 18:01
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Двухуровневые системы были плохими из-за прямой работы с данными в коде UI.


Ещё раз специально для самых одарённых. Проблемы работы с данными в коде UI нет, так же как и нет проблемы при чтении этих данных, например, из коллекции сериализованных объектов. Проблема в том, что работа ведётся с нетипизированными данными. В этом случае у нас пропадает контроль со стороны компилятора. Постарайся понять эту разницу и не путать причину и следствие.

C>У меня идет прямая работа с бизнес-объектами, а mapping'ом их на базу данных занимается Hibernate. Всякие security и прочее обеспечиваются с помощью interceptor'ов, тоже подключаемых к Hibernate.


В твоём примере ты делаешь точно тоже, что делалось 10 лет назад — ты используешь нетипизированную работу с данными.
Если нам не помогут, то мы тоже никого не пощадим.
Re[62]: Являются ли макросы свидетельством недостаточной выр
От: Cyberax Марс  
Дата: 07.08.07 18:03
Оценка:
Здравствуйте, EvilChild, Вы писали:

.>>Не совсем уж и сахар.

EC>Насколько я знаю, компилятор создаст скрытый класс для твоего анонимного класса.
EC>Если это так, то это сахар в чистом виде.
Не совсем, там еще пара хаков в JVM есть для того, чтобы это все работало

А так да, по большей части сахар.
Sapienti sat!
Re[54]: Являются ли макросы свидетельством недостаточной выр
От: Cyberax Марс  
Дата: 07.08.07 18:05
Оценка:
Здравствуйте, EvilChild, Вы писали:

AVK>>>А при чем тут Scala?

C>>Есть мнение, что она может стать официальным продолжателям Java. Кстати, еще и JavaFX подкатывается.
EC>Т.е. санки всерьёз ею заинтересовались?
Намного лучше: IDEA'вцы http://plugins.intellij.net/preview/popup/?sid=370&amp;pid=1347

Исторически так сложилось, что от сантехники следуют за Java community, откуда и приходят все интересные идеи.
Sapienti sat!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.