AVK Selected

Показавшиеся интересными, на мой вкус, посты

29.12.2013
Nikkk2010

Joe Duffy's team has been designing and implementing a set of “systems programming” extensions to C# over the past 4 years.
At long last, I’ll begin sharing our experiences in a series of blog posts.

The first question is, “Why a new language?”


Ссылка
26.12.2013
kaa.python
Краткое описание ключевых возможностей нового языка программирования Rust. Основной акцент делается на особенностях Rust, которых не хватает многим системным и сетевым разработчикам в других языках программирования.
05.01.2014
MozgC
Т.к. считается, что принцип открытости-закрытости был введен Бертраном Мейером, а позже несколько перефразирован и конкретизирован Бобом Мартином, то для лучшего понимания принципа стоит рассмотреть, как он описывался в обоих источниках: у Мейера и у Мартина.

Начнем с рассмотрения принципа в книге Мейера "Объектно-ориентированное конструирование программных систем":

[q]Открыт-Закрыт

Любой метод модульной декомпозиции должен удовлетворять принципу семафора: Открыт-Закрыт:

Принцип Открыт-Закрыт

Модули должны иметь возможность быть как открытыми, так и закрытыми.


Противоречие является лишь кажущимся, поскольку термины соответствуют разным целевым установкам:
[list]
  • Модуль называют открытым, если он еще доступен для расширения. Например, имеется возможность расширить множество операций в нем или добавить поля к его структурам данных.
  • Модуль называют закрытым, если он доступен для использования другими модулями. Это означает...
  • 08.12.2013
    Аноним
    http://adamralph.com/2013/12/06/ndc-diary-day-3/
    //primary constructors - 
    public class Point(int x, int y) { }
    //read only auto-properties - 
    public int X { get; } = x;
    //static type using statements - 
    using System.Math;
    //property expressions - 
    public double Distance => Sqrt(X * X + Y * Y);
    //method expressions - 
    public Point Move(int dx, int dy) => new Point(X + dx, Y + dy);
    //params for enumerables - 
    public Point Average(params IEnumerable<Point> points) { }
    //monadic null checking - 
    if (points?.FirstOrDefault()?.X ?? -1) { }
    //constructor type parameter inference - 
    var t = new Tuple(1,2); // infers Tuple<T1, T2>
    //inline declarations for out params - 
    public void Foo(out var x, out var y) { }

    Имхо, какой то хоть и полезный но хлам.
    01.01.2014
    SergeyT.
    Здравствуйте, Аноним, Вы писали:


    А>Nunit

    А>Есть вот такой метод для теста
    А>Как лучше, оставить как есть или сделать через параметры и указывать все значения init1, do1, 0, 1 — через аттрибуты
    А>Насколько это удобно будет отлаживать во 2м случае ?

    Конечно здесь явно напрашиваются параметризованные тесты, ведь по сути, здесь не один тест, а два.

    [TestCase("init1", "do1", Result = 0)]
    [TestCase("init2", "do2", Result = 1)]
    public int Test_That_Do_Produces_Expected_Result(string initData, string doData)
    {
      // У нас же тут ООП, как никак, а раз так, то инварианты класса А
      // должны устанавливаться в конструкторе
      var a = new A(initData);
    
      return a.Do(doData);
    }


    Основной плюс параметризованных тестов в том, что это четко показывает, что у нас не один тест, а два. Ведь существуют правила написания юнит-тестов...
    29.12.2013
    SergeyT.
    Здравствуйте, IncremenTop, Вы писали:

    ST>> здравый смысл говорит, что чистая функция будет проще с точки зрения всех сложностей, поскольку все, что идет на вход и является результатом является очевидным!


    IT>С точки зрения сложности, то функция в которой или для которой создается объект и работающая с ним без интерфейса — это ад и израиль. Это не гибко, не читаемо, трудно поддерживается.


    Хм... Я понимаю, что мы здесь теряем контекст рассуждения, но все небезызвестные ОО товарищи (Мейер, Фаулер, Эванс, Сииман) считают, что вводить интерфейсы и полиморфное поведение нужно лишь тогда, когда это требуется. К тому же, "гибко" и "трудно поддерживается" всегда идут рука об руку; за гибкость всегда нужно платить сложностью, без этого ни как (см. Who Needs an Architect Файлера в качестве примера рассуждения на эту тему).

    Очень интересно, что отсутствие побочных эффектов рьяно популяризируется сторонниками ФП мира...
    13.12.2013
    alex_public
    Здравствуйте, Dair, Вы писали:

    D>Для меня загадка — современные алгоритмы шифрования (криптографии). Мат.аппарата не хватает


    D>На практическом уровне — public key/private key понятно, но чо там внутри — чисто магия.


    Да ладно, если говорить о принципах, то там же всё вообще тривиально.

    Вот смотри, предположим у нас есть функция y=exp(x); и соответственно обратная ей x=ln(y); Причём (и это ключевой момент) ln вычисляется намного дольше, чем exp. Кстати, это и для обычных exp и ln справедливо, а в асимметричной криптографии используется спец. вариант, в котором ln вычисляется годами... Теперь, при наличие пары таких функций, мы можем тривиально наладить защищённый канал.

    Вот предположим у нас есть два человека (1 и 2) с каждый стороны и ещё третий, прослушивающий канал. 1 и 2 генерируют по одному случайному числу k1 и k2. Затем считают от них p1=exp(k1) и p2=exp(k2). И отсылают друг другу. В итоге у первого есть k1 и p2, у второго k2 и p1, а у прослушивающего p1 и p2.
    17.09.2012
    nikov
    http://msdn.microsoft.com/en-US/roslyn

    New C# Language Features Implemented Since June 2012 CTP:

    Collection initializers
    Extern aliases
    Expression trees
    Multi-dimensional arrays
    Nullable types
    Object initializers
    Type forwarders
    Unsafe code (except fixed-size buffers)

    New VB Language Features Implemented Since June 2012 CTP:

    Array literals
    Collection initializers
    External method declarations (Declare)
    Handles clauses
    Late-binding
    Nullable types
    Object initializers
    Operator overloading
    ParamArray parameters
    Partial methods
    Shared constructors
    User-defined conversions
    With statements
    XML literals
    19.04.2013
    kochetkov.vladimir
    В процессе подготовки статьи на тему того, насколько бестолковым и несерьезным является проверка запросов в ASP.NET, в голову пришла идея набросать proof-of-concept того, как на самом деле оно должно быть реализовано, чтобы давать хоть какие-то гарантии защиты от отраженных XSS. В итоге, после пары вечеров кодинга и недели тестов с привлечением коллег, родилось вот это: https://github.com/kochetkov/Irv

    Результаты по производительности и проценту false-позитивов обоих родов приятно удивили (ожидал, что будет еле ворочаться и пропускать некоторые замороченные векторы атак). Поиграть с демкой можно тут: http://irv.c2e.pw/Demo/

    P.S: Как и почему это работает, а также почему это единственный адекватный способ, дающий гарантии защиты от отраженных XSS — расскажу в статье
    10.03.2013
    Евгений Акиньшин
    Последний год пользовался 3-м айПадом в качестве основного устройства для чтения почты, браузинга итп. Взял тут на пару недель Surface RT Для тестирования. Изначально начитался отзывов в интернете и был настроен довольно негативно. (Многие тут писали, что мол мега-фейл.) На практике оказалось, что устройство весьма симпатичное и расставаться я с ним уже не хочу.


    Плюсы сурфейса по сравнению с айПадом:

    — Нормальный доступ к файлам и сети – можно смотреть видео и фотки по сети из коробки без всяких извращений
    — Полноценный офис из коробки
    — Нормальный USB разъем — без проблем втыкаются флешки, мышки, электронные книжки, фотоаппараты. Все, что нашлось у меня дома подключилось без проблем.
    — Разъем под микроSD
    — Нормальный стереозвук (на айПаде смотреть видео без наушников с его моно перделкой на задней панели вообще нельзя)
    — Клавиатура\обертка на магнитной защелке – к ней необходимо привыкнуть, но потом понимаешь, что это мега удобная вещь
    — Встроенная подставка – еще одна мега удобная вещь...
    <  1  2  3  > rss