All streams
Search
Write a publication
Pull to refresh
222
0
Алексей @PsyHaSTe

Зигохистоморфирующий

Send message
Когда мне говорят про то, что структуры — это типы данных, хранящиеся на стеке, мне всегда вспоминается эта знаменитая статья Липперта.
По пунктам
1. Непотопляемость. Я вот почему-то думал что языки — это инструменты, а получается, что тут есть враги, друзья, свои и чужие, чужих нужно уничтожить, своих — защитить… Вывод: хороший вброс для холивара.
2. Многопоточность. Вопрос — а где её, собственно, нет? Не говоря про TPL и async/await в C# 5.0. Вывод: выдача желаемого за действительное
3. Первый язык программирования. В целом согласен. Разве что у студентов стран СНГ первым языком все еще является паскаль, реже — С. Вывод: в целом верно.
4. Кроссплатформенность. Фишка джавы. Вывод: очевиден.
5. Снова кроссплатформенность. Зачем-то упоминают андройд, который наоборот, пытается избавиться от Dalvik и переходит на ART. Вывод: присобачили как получилось информацию, выдали в нужном свете — и готово.
6. Блю-рей. Вывод: возможно, сказана правда, никогда ими не пользовался: кино и цифровой контент наше все.
7. Фигурные скобки. Ну это просто смешно. Какое достижение! Какой прогресс! Скобки джавы ведь намного удобнее и скобочнее, чем скобки С 70годов…
8. Groovy. Спорить не о чем.
9. JVM. Опять же, спорить не о чем, обо всем сказал в пункте 5. Не забыли оскорбить C#, забыв, что как раз-таки с помощью Xamarin можно писать одно и то же для всех платформ (Win-iOS-Android). Ну бывает, видимо у автора действительно припекло с врагами и друзьями (имеется ввиду автор оригинала).
10. Не совсем понятно, связь NoSQL с Java. Если бы не было С, WinAPI был бы написан на паскале. Ребята взяли наиболее подходящий язык и реализовали ан нем. Не было бы его — реализовали бы NoSQL на том же шарпе, или еще на чем.
11. Про производительность Minecraft ходят легенды. Хотя можно отнести к плюсам, как авторы пишут.
12. Опен-сорс. Ну, как говорится, любой код на управляемом языке — опен-сорс поневоле :) Про то, что тот C# и CLR тоже являются опен-сорсными (ECMA334,ECMA334) — как-то забывают. Так что выбора у них особо не было.

Вывод: я сравниваю с шарпом просто потому, что эти языки прямые конкуренты. Но это конкуренты, а не враги! Вся статья пропитана фанатизмом и нонконформизмом. Жаль, что есть люди, у которых микроскопы — в друзьях, а лупа — злейший враг.
Вы ничего не потеряли, перейдя так рано, за 7 лет WPF не изменился.
Я-то по названию решил, что новая статья про неявную динамическую типизацию в шарпе в некоторых случаях, а получилась обычная пропаганда монад…
Подскажите, поставил систему, но мыша не работает. Клавиатуркой конечно получается пользоваться, но не очень удачно. Что с этим можно сделать?
Я на самом деле не очень в курсе, кто управляет ими, но по чистой логике 51.08 — это сумма всех игр «со скидкой» (посчитайте, там 7 ценников оканчивающихся на 9 и один, оканчивающийся на 5. 9*7+5, остаток 8). Правда, почему бандл стоит дороже — не очень понятно. Но комплект в любом случае стоит столько же, сколько две игры без скидки.

Хотя я юбисофт не очень люблю. За то, что они сделали с серей HOMM разорить их мало. Если в пятой части было довольно много интересных нововведений, которые приближают её к знаменитой тройке, то шестая — это убожество почище Disciples III…
Один только послединий Assassin Creed стоит столько, сколько стим говорит «Стоят все эти игры». Выше же цены приведены. Assassin Creed 3 стоит 50, а «Все эти игры» по версии стима стоят 51. Как-то не сходится.
Просто баг. Если посмотреть поледнюю строчку, то один только Assassin Creed 3 стоит 50 баксов. Character pack выше — +1.35 = 51.35 != 51.08. Так что, как я уже сказал, просто баг системы при подсчете итоговой суммы.
То есть можно догадаться о том, что имелось ввиду, но догадываться от постановки задачи сильно отличается. например, почему лужа не между тройкой и семеркой, а между пятеркой? для точки [4] локальными максимумами будут 3 и 2, но мы заливаем между 5 и 7.
Задача плохо поставлена. Не сказано, какой уровень воды. Я могу вообще сказать, что он затопит все вокруг (см. картинку 3), а значит будет просто myarr.Select(x=>maxlevel-x).Sum();

image
image
image
В этом варианте, мы задали формулу отдельно, а значения параметров отдельно. Метод ExecuteCode проверяет, нет ли среди ранее скомпилированных им сборок, подходящей для выполнения текущего вызова. Если исходный C#-код, возвращаемый им тип, а также типы и имена параметров совпадают, то можно использовать приготовленную при первом вызове ExecuteCode сборку повторно.

У меня помню была похожая задача, но я её решал компиляцией в одной и той же сборке, просто делал god-object статический класс, у которого генерировал методы, после этого эти методы сохранялись в делегат, а делегат отдавался (если надо) наружу. То есть оверхед вызова однажды скомпилированной функции был исключительно в Delegate.Invoke(object[])

Хотя у вас конечно задача меньше регламентирована.
Я понимаю, что это бред. Но не на пустом месте рожденный. В частности хотелось услышать правильный ответ на
Также я ожидаю услышать почему именно два вызова подряд и почему так делать всётаки не стоит
Два вызова GC.Collect() для отработки финализаторов?

А делать так не стоит, потому что многие молодые объекты, на которые остаются ссылки, могут попасть во второе поколение, в результате вызовут частые излишние сборки всех поколений, а не только 0 и 1.

Я прав?
областей видимости

может лучше говорить неймспейсы, или пространства имен? А то не сразу понятно, что имелось ввиду…
Перво-наперво: события (event) не являются экземплярами делегатов. А теперь снова:
События — это НЕ экземпляры делегатов.

В некотором смысле жаль, что язык C# позволяет использовать события и экземпляры делегатов в определённых ситуациях одинаковым образом, однако очень важно понимать разницу.

Интересно, почему он так подчеркивает, что события — это не делегаты? Я всегда считал, что как раз-таки события являются делегатами специального вида, которые позволяют только подписываться и одписываться, не позволяя обнулить его и т.д.

Определение, которому я всегда доверял:
Событие — это специализированный делегат, позволяющий сторонним объектам только подписываться или отписываться, по сути — формализация паттерна «Наблюдатель».
Деревом называется неориентированный связный граф из N вершин и N-1 ребер. Из любой вершины до любой другой существует ровно один простой путь.
Корнем дерева будет называться такая вершина, от которой задано направление движения по дереву при его обходе.

*зануда мод он*
Грамотное определение: «Дерево — это граф, который не имеет циклов».
Корень — это вершина, откуда достижимы все остальные вершины.
*зануда мод офф*

Иначе необходимо вершину a или b к корню.

глагол забыли.

В целом интересно. Спасибо за статью.
2ip лично мне помог очень. Получил оба ключа — цивку уже гоняю, мафию пока ставить не буду — сессия наступает на пятки :(
Ясно, спасибо за ответ (репы нет, спасибо пишу «ручками», по старинке).
Ну дак это не важно. Что-то вроде
class CryptoMercenVortex
{
   private const int MaxCalls = 600;
   private Random _rand = new Random();
   private int _calls = 0;
   private MT19937 _mercen = new MT19937();
   
   public int Next()
   { 
      if (_calls++ > MaxCalls )
      {
         _mercen = new MT19937(_rand.Next());
         _calls = 0;
      }
      return _mercen.Next();
   }
}


длина последовательности будет влиять только на то, сколько раз будет пересоздаваться внутренний обычный mercen.
Как я уже отмечал выше, если атакующий имеет 624 числа сгенерированных с помощью Вихря Мерсенна этого достаточно для того чтобы восстановить все внутреннее состояние и предугадывать с вероятностью 100% все генерируемые в последующем числа.

А что если каждые 600 выборок в таком случае менять seed на случайный другой? Тоже своего рода каскад сделать. Разве не поможет?

Information

Rating
Does not participate
Registered
Activity