Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Как стать автором
Хабровчане vs. цифровые сервисы банков: итоги
  • Все потоки
  • Разработка
  • Администрирование
  • Дизайн
  • Менеджмент
  • Маркетинг
  • Научпоп
Войти Регистрация
51,2
Карма
7,2
Рейтинг
45
Подписчики
2
Подписки

WhiteBlackGoose

Open source contributor

Профиль

Публикации 19

Комментарии 253

Закладки 57

  • Lazy Properties Are Good. That Is How You Are to Use Them
    1
    WhiteBlackGoose
    сегодня в 11:27
    0

    About use cases. In my project, a symbolic algebra library, I work with mathematical expressions. At the beginning of the project, I had method Evaluate(). Every time I called it I knew that it would take some time to process, so I wouldn't call it multiple times.


    However, it's hard to track how many times it is called for an expression, there many methods, such as Simplify(), Solve() and many others which used this method. In fact, there were many cases when the same expression's Evaluate() was called.


    With implementation of this pattern, I don't hesitate to address Evaluated property. This helps a lot when designing/developing new functional and makes the code faster and safer.

  • Две недели с F#
    20
    WhiteBlackGoose
    6 марта 2021 в 18:22
    +3

    Код не меняется, меняется только твое восприятие. Но это я так, шучу)

  • Стероидный велосипед: векторная алгебра, на ассемблере, в Delphi
    21
    WhiteBlackGoose
    6 марта 2021 в 13:20
    –1

    Ах да, у вас даблы… жирненько. А чем обусловлено использование double? Нет ли возможности хотя бы на float/single заменить?

  • Стероидный велосипед: векторная алгебра, на ассемблере, в Delphi
    21
    WhiteBlackGoose
    6 марта 2021 в 07:39
    0

    В матрице 4x4 всего 16 элементов, столько же, сколько у автора машина умеет за одну инструкцию. А вот для видеокарты мне кажется размер матрицы маловат (и эффективность будет низкая)

  • МТС заявила о запуске в Москве первой в России сети 5G в пилотном режиме
    9
    WhiteBlackGoose
    5 марта 2021 в 16:20
    0

    Оо, ну кажется, что немало

  • МТС заявила о запуске в Москве первой в России сети 5G в пилотном режиме
    9
    WhiteBlackGoose
    5 марта 2021 в 15:45
    0

    Кто-нибудь может в паре слов сказать, как с этим обстоит в США, Европе и Китае? Ну, условно, уже в каждой деревне, или только центры городов? Или вообще мало где?

  • Что нового в AngouriMath 1.2?
    2
    WhiteBlackGoose
    3 марта 2021 в 13:19
    0

    Добавил примеры по совету MomoDev. Если нужны еще, могу написать их здесь. Ну и конечно есть примеры в тестах.


    Публикацию разместил в "Я пиарюсь", хоть искренне надеюсь, что когда-нибудь я по праву смогу размещать подобное в профильные хабы :).

  • Консольная утилита погоды на C# с помощью .Net
    24
    WhiteBlackGoose
    28 февраля 2021 в 16:55
    +1

    Шарп еще не стал классикой, чтобы наслаждаться его старостью).


    public class AdministrativeArea    {
            public string ID { get; set; } 
            public string LocalizedName { get; set; } 
            public string EnglishName { get; set; } 
            public int Level { get; set; } 
            public string LocalizedType { get; set; } 
            public string EnglishType { get; set; } 
            public string CountryID { get; set; } 
        }

    ->


    public record AdministrativeArea(string ID, string LocalizedName, string EnglishName, int Level, string LocalizedType, string EnglishType, string CountryID);

    Ну и много каких моментов можно переписать.


    UPD: я правда с json не работаю, нужно чекать, умеет ли он в рекорд писать.

  • Пишем свой парсер математических выражений и калькулятор командной строки
    13
    WhiteBlackGoose
    25 февраля 2021 в 15:46
    0

    KvanTTT, как думаете, каждые сколько недель в среднем жители хабра пишут про парсинг математических выражений?

  • Популярные заблуждения о C#
    61
    WhiteBlackGoose
    25 февраля 2021 в 15:44
    0

    Неужели люди, готовящиеся к собесу по дотнету, не знают этих вещей. Это достаточно базовые вещи. Но судя по всему оно может много кому помочь...

  • Пример прикладного проекта на F#
    6
    WhiteBlackGoose
    26 января 2021 в 23:25
    0
    А какие плюсы вы заметили при работе с F# по сравнению с С#?

    Немногословность, операторы, синтаксис — это как по мне. Ну а главное, конечно, преобладание декларативного программирования.

  • Обзор китайского DPSS лазера 532nm
    72
    WhiteBlackGoose
    17 января 2021 в 10:07
    0
    1Вт же отраженным от матовой поверхности точно даст не временную слепоту.

    Очень странное суждение. У меня есть одноваттный лазер-указка Thor II, но не красный, а синий. Никаких проблем со зрением не видел, когда смотрел на отражение от него. Говоря про темные матовые поверхности — так там так, пятнышко было синее. Либо в данном случае красный настолько более коварный?

  • Как увидеть ℼ? Нужно швырнуть ℼ в стену
    110
    WhiteBlackGoose
    17 декабря 2020 в 15:54
    –20

    Серьезно? Научно-популярные видосики — теперь статьи на хабре?

  • Сравниваем производительность C# и C++ в задачах обработки изображений
    41
    WhiteBlackGoose
    12 декабря 2020 в 15:05
    0

    Привет. Мы задумали проект для сборки всея бенчмарков, неинтересно будет свой расшарить с нами, а точнее, со всеми? Здесь: https://github.com/asc-community/dotnet-benchmarks

  • Самоучитель по WinCC OA. Часть 1. Создание проекта и модуль para
    32
    WhiteBlackGoose
    11 декабря 2020 в 08:51
    0

    Опписание, о чем идет речь, не помешало бы. Не все знают, что такое WinCC. Первая часть все-таки

  • С++23: международный стандарт на удалёнке
    51
    WhiteBlackGoose
    8 декабря 2020 в 15:36
    +3

    Меня особо порадовало contains. Прямо планету с места сдвинули такими новведениями, е-мое.

  • Вышел .NET 5. И что?
    100
    WhiteBlackGoose
    4 декабря 2020 в 14:58
    +1
    Так можно говорить про каждую версию и остаться в итоге на net20

    Я на нем и остаюсь (если вы не про core2.0 или боже упаси второй fw).
    ValueObject выполняет другую задачу. С рекордами вы получаете возможность построить граф из коробки. Ну и паттерн матчинг.


    ValueObject обычно для небольших оберток, я никогда не видел структуры, которая достаточно самостоятельна и выполняет какую-то ключевую задачу.

  • Вышел .NET 5. И что?
    100
    WhiteBlackGoose
    4 декабря 2020 в 14:55
    0

    Ну а как добавлять какие-то вещи типа generics? Или вот DIM (default interface member)? Хотя про последнее не уверен, может это только от рантайма зависит

  • Вышел .NET 5. И что?
    100
    WhiteBlackGoose
    4 декабря 2020 в 11:56
    +2
    C# 9 определенно не является серьезным мотивом для переезда на новый дотнет

    Добавлю. Новый шарп — это в основном синтаксические накрутки, генерируемый IL не изменяется. Например, record — это на самом деле класс под капотом. А значит можно использовать многие фичи девятого шарпа даже на netstandard2.0.


    Для этого вам нужно написать следующий костыль где-нибудь.


    Либо почитайте пост от автора Nullables, который сделал nuget-пакет для этой же цели (чтобы использовать девятый шарп в < 5 версиях)


    У меня есть проект (библиотека), таргетящий 2.0, и при этом использующий девятый шарп. Очень удобно

  • Почему я не люблю PHP
    121
    WhiteBlackGoose
    2 декабря 2020 в 21:07
    0

    Тут все готовы дискутировать, тебе вполне цивилизованно задали вопрос

  • Продажи новых iPhone в России оказались в разы ниже прошлогодних
    67
    WhiteBlackGoose
    27 ноября 2020 в 19:21
    +2

    Какая работа выполняется исключительно/преимущественно на смартфоне?

  • Продажи новых iPhone в России оказались в разы ниже прошлогодних
    67
    WhiteBlackGoose
    27 ноября 2020 в 15:15
    –8
    Просто смотреть мемесы в соцсетках выполнять типичные пользовательские сценарии спокойно можно на смартах, которые вышли и 6 лет назад.

    А губки, отнюдь не морские, на что фоткать? Впрочем, это где все преимущства новых смартов кончаются. Офигенный экран? Это планшетам и ноутам… Мощный проц ну это смешно. Вот я и сижу на xperia z 7-летней давности

  • Путин поручил передать школам и больницам планшеты с ОС «Аврора» после переписи населения
    98
    WhiteBlackGoose
    27 ноября 2020 в 11:14
    0

    Разумеется (я думал это должно быть очевидно), речь идет о прочих равных условиях, естественно.


    Ох уж эти любители вставить "потому что нужно было вообще все не так делать!11!"

  • Путин поручил передать школам и больницам планшеты с ОС «Аврора» после переписи населения
    98
    WhiteBlackGoose
    26 ноября 2020 в 22:55
    –5

    Не факт, что айпад повысит производительность ученика… а вот то, на чем майнкрафт не запустится — может быть. Хотя это не объясняет стоимость, конечно

  • Главу безопасности Apple уличили в попытке дать взятку 200 планшетами iPad за разрешение на скрытое ношение оружия
    7
    WhiteBlackGoose
    24 ноября 2020 в 19:15
    +1

    Таких стран нет.

  • Методы без аргументов — зло в ООП, и вот как его полечить
    15
    WhiteBlackGoose
    24 ноября 2020 в 15:00
    –3

    Лок у меня один раз вызывается. По сравнению с вызовом еще одного метода он почти бесплатный, так что почему нет?


    Другое дело, что вероятно есть более быстрые способы, но моя задача была показать дизайн, а не сделать самый быстрый lazy

  • Методы без аргументов — зло в ООП, и вот как его полечить
    15
    WhiteBlackGoose
    24 ноября 2020 в 13:48
    0

    LazyInitializer требует референса на тип (или на булеву), ничто из чего я могу себе позволить в рекорде

  • Методы без аргументов — зло в ООП, и вот как его полечить
    15
    WhiteBlackGoose
    24 ноября 2020 в 13:47
    0

    Я уже говорил, почему приватное поле с Lazy я не могу позволить себе. И я же в итоге делаю что-то похожее, просто лишенное недостатков классического подхода.


    И на всякий случай скажу: меня верно подправили выше, это скорее ленивая инициализация, а не кеш, потому что в ленивой инициализации не надо ничего инвалидировать (в отличии от топика, что вы кинули).

  • Методы без аргументов — зло в ООП, и вот как его полечить
    15
    WhiteBlackGoose
    24 ноября 2020 в 13:44
    0
    Смотрите, может быть кейс когда их много и когда одно свойство ссылается на пару других. Ваш подход поощряет стиль написания кода, который может привести к такой ситуации.

    Да, верно. А вот что значит "искать начало и конец инициализации" — не очень понятно. Если вы хотите что-то отдебажить, достаточно изолировать ваш объект от других, и при первом обращении попадете туда, куда нужно. Хотя можно и проще: поставить условные бряки и когда-нибудь ваш метод вызывется.

  • Методы без аргументов — зло в ООП, и вот как его полечить
    15
    WhiteBlackGoose
    24 ноября 2020 в 12:07
    0

    Вы можете сказать, в чем грабли?


    Сейчас я использую это в библиотеке. Вместо того, что бы думать, где запускать Eval(), а где нет, а где один раз запустить, я просто обращаюсь к одному свойству. Это сильно увеличило скорость разработки и производительность (потому что все результаты все время кешируются).


    А ваших аргументов я пока не услышал.

  • Методы без аргументов — зло в ООП, и вот как его полечить
    15
    WhiteBlackGoose
    24 ноября 2020 в 05:49
    0

    Может лучше было и обертку, я просто писал о наивной реализации. Может еще смогу добить его по скорости, но задача все-таки была не в этом, а поделиться идеей дизайна

  • Методы без аргументов — зло в ООП, и вот как его полечить
    15
    WhiteBlackGoose
    24 ноября 2020 в 05:47
    0

    Это и есть ленивая инициализация. Но так как у нас неизменяемые объекты, то и сами закешированные значения никогда не станут неверными

  • Методы без аргументов — зло в ООП, и вот как его полечить
    15
    WhiteBlackGoose
    23 ноября 2020 в 18:29
    +1

    Сам FieldCache использую в своем проекте (через NuGet). Не уверен, что кому-то нужен сам пакет, потому что гениального тут ничего нет, и, вероятно, проще написать свой велосипед.


    Я использую эту штуку в своей библиотеке символьной алгебры, в которой такой паттерн чертовски полезен для математических выражений. Например, у математического выражения есть свойства InnerSimplified, Evaled, IsFinite и прочие, которые необходимо кешировать, так как количество обращений к ним непредсказуемо.


    Примеры: InnerSimplified, Evaled.


    Тут вызываются рекурсивные методы, которые в общем случае должны были бы обходить все дерево выражения. В данном случае, при первом обращении к свойству, вычисления будут происходить основываясь на свойствах детей. К примеру, если мы хоть раз обратились к свойству Evaled у выражения 2^5, то при обращении к этому же свойству у выражения 2^5 + 3 у нас не будет заново вычисляться 2^5. И это, по моему мнению, должно инкапсулироваться именно холдером, чтобы при обращении к свойству ни о чем думать не нужно было, и считать это обращение — бесплатным.

  • Jupyter для .NET. «Как в питоне»
    11
    WhiteBlackGoose
    20 ноября 2020 в 09:57
    0

    Забавно, даже не думал об этом, но теперь осознаю потенциальную уязвимость в своем проекте.

  • Jupyter для .NET. «Как в питоне»
    11
    WhiteBlackGoose
    19 ноября 2020 в 09:44
    +2

    Ну, не знаю насчет "плохо", если только неидеально. Но латех рендерю не я, поэтому если хотите оставить отзыв авторам рендерера или предложить улучшение, можете обратиться к ним.

  • Jupyter для .NET. «Как в питоне»
    11
    WhiteBlackGoose
    19 ноября 2020 в 08:54
    +2
    Кто пользуется?

    Юпитером — дофига кто, те, кто занимаются исследованиями


    Чем это удобнее локальной разработки?

    Тем, что это не разработка вовсе. Вот вам надо посчитать какую-нибудь формулу, найти производную, или посмотреть, что выдаст нейросетка по данной модели — открываете блокнотик в юпитере и смотрите


    Просто даже визуализировать локальные данные проще (банально цеплянием либ)

    Не понял. В юпитере ты просто накидываешь библиотеки и ими пользуешься оттуда, не перезапуская весь код, в отличии от промышленных IDE
    Результаты дампить, разумеется, ничуть несложнее

  • Zoom удалил мероприятия, посвящённые цензуре в Zoom
    13
    WhiteBlackGoose
    26 октября 2020 в 13:37
    +2

    Так стоп, я где-то это видел пару месяцев назад

  • Репозиторий youtube-dl удален с GitHub за нарушение DMCA
    169
    WhiteBlackGoose
    24 октября 2020 в 15:58
    0

    Ты можешь захостить git сервер абсолютно где угодно

  • Репозиторий youtube-dl удален с GitHub за нарушение DMCA
    169
    WhiteBlackGoose
    24 октября 2020 в 15:57
    +4

    С приходом мелкомягких в GH открыли всякие фичи, которые раньше были платными. Например, увеличили максимальное число коллабораторов в закрытых репах, дали плюшки открытым организациям

  • Репозиторий youtube-dl удален с GitHub за нарушение DMCA
    169
    WhiteBlackGoose
    24 октября 2020 в 15:54
    –12

    По статистике люди с аппаратом изнасилуют с большей вероятностью, чем без.
    Тут такая же логика: ото всех не закрыться, но без публичного софта количество скаченного контента уменьшится.

  • ← сюда
  • туда →
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

Информация

  • В рейтинге 646–й
  • Активность 08.03.2021, 13:40
  • Зарегистрирован 15 августа 2018 г.

Вклад в хабы

  • Математика 173.8
  • Python 151.8
  • C# 109.8
  • Matlab 103.6
  • .NET 91.6
  • Программирование 74.2
  • Машинное обучение 68.8
  • F# 32.8
  • Визуализация данных 31.2
  • Разработка игр 31.2

Ваш аккаунт

  • Войти
  • Регистрация

Разделы

  • Публикации
  • Новости
  • Хабы
  • Компании
  • Пользователи
  • Песочница

Информация

  • Устройство сайта
  • Для авторов
  • Для компаний
  • Документы
  • Соглашение
  • Конфиденциальность

Услуги

  • Реклама
  • Тарифы
  • Контент
  • Семинары
  • Мегапроекты
  • Мерч
© 2006 – 2021 «Habr»
Настройка языка
О сайте
Служба поддержки
Мобильная версия
Настройка языка
Интерфейс
Язык публикаций