• Как ускорить работу с API на языке R с помощью параллельных вычислений, на примере API Яндекс.Директ (Часть 2)
    0
    По смыслу и синтаксису основные функции пакета очень похожи на sapply, основное его преимущество заключается в следующем:
    Функции разделены на семейства map, map2, pmap, walk и так далее, отдельные функции входящие в одно семейство возвращают результат в разных форматах: chr, dbl, int, df и т.д.;
    Функции семейства map2 позволяют перебирать элементы (итерироваться) одновременно двух объектов;
    Функции семейства pmap позволяют одновременно перебирать элементы любого количества объектов. На вход в аргумент .l (аналог аргумента X в sapply) вы можете передавать таблицу, каждый столбец которой будет содержать значения, по которым вы будете итерироваться, и которые будут подставлены по очереди в одноимённые аргументы функции, переданной в .f (аналог FUN из sapply).

    Мне всегда казалось, что одним из основных аргументов в пользу использования purrr вместо стандартных *apply это consistency в плане аргументов функций и выдаваемых результатов. Мне всегда было довольно сложно помнить всю эту кашу (см. документацию к *apply). purrr же решает одну задачу за раз. Применить функцию? Пожалуйста. Упростить и преобразовать результат? Вот вам перегрузка или дополнительный flatten в конце. В качестве бонуса — упрощение работы с анонимными функциями через простые формулы.


    У future есть, возможно, неочевидная фича, которая вряд ли пригодится в простых задачах "распараллель это". С помощью tweak можно задать целую иерархию процессов. Если не ошибаюсь, то вот такой фрагмент кода
    plan(list(tweak(cluster, workers = 2), tweak(cluster, workers = 3)))
    Создаст два процесса верхнего уровня, каждый из которых породит еще по 3 (в сумме 8). Теперь первый вызов furrr::* распараллелится на два процесса, при этом каждый вложенный furrr::* в свою очередь будет выполняется на своих 3 child-процессах.
    Вот примерный вывод для моего окружения (MRAN R 3.5.1)


    future_map(1:2, function(x) list(Sys.getpid(), future_map_int(1:3, ~Sys.getpid())))

    [[1]]
    [[1]][[1]]
    [1] 23720
    
    [[1]][[2]]
    [1] 24764 18628 12708
    
    [[2]]
    [[2]][[1]]
    [1] 13580
    
    [[2]][[2]]
    [1]  5032 24844  8508

    Мне это помогало в случае когда уже есть готовый метод, вклчюающий как долгие однопоточные вычисления, так и хорошо распараллеленные вычисления. Теперь, если такой метод нужно применить к нескольким независимым датасетам, то вариантов два — либо запускать последовательно для каждого датасета (это значит что на время однопоточного вычисления мы используем только один поток и получаем бонус только когда достигаем распараллеленного кода), либо запускать параллельно сразу для всех датасетов (тогда и однопоточный, и распараллеленный код будут всегда работать в одном потоке). С иерархическим подходом можно контролировать степень параллелизации и в целом ускорить выполнение такого нетриваильного алгоритма. Все это используя future::* на всех уровнях без необходимости что-то менять.

  • Ученые впервые показали реальное «фото» черной дыры
    +2

    Ну у меня лекции по радиоинтерферометрии были очень давно, но быстрый поиск показал, что все таки никаких "микроподвижек", а обычный аппертурный синтез. Как, собственно, ответили ниже.
    Вот простая презентация по теме.

  • Ученые впервые показали реальное «фото» черной дыры
    0
    Простите, а откуда информация про «микроподвинули»?
  • Рейтинг языков программирования от TIOBE: C# теряет популярность, C++ становится востребованнее
    0

    А может кто-то объяснить тренды Java и C между 2016 и 2018? С одинаковым наклоном и без значимых изменений в других языках? При чем данные до 2016 и после 2018 вполне себе друг с другом согласуются в рамках глобального тренда.
    Отдельно радует SQL, заботливо соединенный линией с 2004 по 2018.

  • Зачем вам учить Go
    +18

    Рискуя нарваться на минусы, все же попытаюсь разобраться и понять, о чем речь в статье. Со стороны звучит так, будто бы статья должна заинтересовать меня (некоего абстрактного разработчика) и разрекламировать мне Golang. Представим на минуту, что я ни разу не видел даже строчки кода на Go (это близко к правде). Какие у языка преимущества (судя по статье):


    1) Простота. Собственно, это была основная цель создания языка, и ее удалось достичь. У Go достаточно простой синтаксис

    Верю на слово, но т.к. рядом нет ни строчки кода, мне сравнить не с чем.


    2) Большое количество библиотек. Если вам не хватает какой-либо возможности в Go, можно воспользоваться одной из множества библиотек и выполнить требуемую задачу. У Go есть еще одно преимущество — можно без проблем взаимодействовать с библиотеками языка Си. Есть даже мнение, что Go-библиотеки — это обертки для C-библиотек.

    Сейчас только ленивый с C-библиотеками не взаимодействует. Ладно, запишем в плюс.


    3) Чистота кода. Компилятор Go позволяет держать код «чистым».

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


    4) Статическая типизация.

    Верю, что преимущество, но по сравнению с чем?


    5) GoDoc.

    Сторонняя утилита. Чем она проще чем аналоги для других стеков? Может пример есть?


    6) Обслуживание кода. Его легко обслуживать именно благодаря простому и лаконичному синтаксису.

    Я полностью согласен, осталось только увидеть этот "лаконичный" синтаксис в сравнении хоть с чем-то.


    7) При этом в Golang нет классов (есть структуры, struct), нет поддержки наследования, что значительно упрощает изменение кода. Плюс нет исключений, аннотаций и т.п.

    Окей, а чем это заменяется? Что вместо исключений, например?


    8) Что можно написать на Go
    Практически все, за исключением некоторых моментов (например, разработки, связанные с машинным обучением — здесь больше подходит все же Python с низкоуровневыми оптимизациями на C/C++ и CUDA).

    Но у вас же обертки и C-библиотеки. С ними действительно можно написать что угодно.


    9) Все остальное можно писать, особенно это актуально в отношении web-сервисов. Кроме того, на Go стоит разрабатывать приложения как для конечного пользователя, так и для разработки демонов, UI, он подходит для кроссплатформенных приложений и сервисов.

    Ну вот хороший же пример — UI на Go. Я, например, не встречал (потому что мало интересовался). Пример приложения или упрощения рутинных задач по сравнения с более сложными языками был бы очень кстати. Но, как говорится, увы.


    Я открыл статью, потому что захотел узнать, "Зачем мне учить Go", но так и не увидел никакого конкретного примера, почему я должен выкинуть свой древний и бесполезный язык и пересесть на Go, кроме зарплаты. Зарплаты, динамика которой (согласно данным по ссылке на Мой круг) находится на уровне с C# и Python, и катастрофически проигрывает Swift и Objective-C. И да, я не нашел в статье ничего по ключевому слову "инфляция", что, с учетом указанной валюты, мягко говоря превращает эту динамику в 0.

  • Инкапсуляция для настоящих самураев, или нюансы, связанные с ключевым словом internal в C#
    0

    В дополнение к предыдущему сообщению, только что наткнулся на вот такой вот атрибут (msdn)
    [assembly: SuppressIldasm]
    Не очень понятно, что оно делает, но вроде запрещает ildasm дизассемблировать сборку, но не ограничивает использование reflection.
    Есть подозрение, что это просто контракт — сборка принципиально не меняется, просто ildasm говорит "извините, но нет".


    Это слабо относится к теме инкапсуляции как таковой, но может, наверное, работать в сочетании с [DisablePrivateReflection] и [InternalsVisibleTo].

  • Древности: когда телефоны были странными
    +1
    Наконец я откопал название моделей, которые были в ходу в семье на рубеже 90/00.
    Самое интересное, что эти телефоны Motorola продавались «красным» оператором, со своим лейблом приклеенным где-то внизу (задолго до рефакторинга оператора, задолго до всякой джинсы, когда баланс счета еще измерялся в долларах). Речь идет о Motorola d520 и о практически идентичном телефоне но с маленькой крышечкой, закрывающей часть клавиатуры, но названном Motorola M3688 (если я ничего не путаю).
    Телефоны умели собственно звонить по книжке из симки и слать/принимать смс количеством в 20 штук. Русский язык не поддерживался.
    Пол телефона занимала гигантская батарея, которую можно было достать и заменить на 4 батарейки AA (правда нужна была более толстая крышка, продавалась отдельно). Да и сама батарея была, насколько я помню, просто боксом с 4 аккумуляторами пальчикового типа внутри.
  • Инкапсуляция для настоящих самураев, или нюансы, связанные с ключевым словом internal в C#
    0

    Вот, вспомнил и нашел — есть способ попросить не трогать приватные мемберы (msdn):
    [assembly: DisablePrivateReflection]
    Гуглопоиск быстро привел вот сюда.


    Не очень понятно, как себя поведут internal объекты.

  • DynamicData: Изменяющиеся коллекции, шаблон проектирования MVVM и реактивные расширения
    +1

    Для SourceList (аналог обыного List) метода "убрать все и загрузить вот эти объекты", насколько я знаю, нет.
    А вот для SourceCache (странноватый аналог Dictionary), если вызовите метод .Edit, то можно получить доступ к методу Load, который собственно перезаписывает коллекцию в одно действие, примерно так:


    yourCache.Edit(context => context.Load(newValues));

    Честно говоря, с доками у них плоховато, но что можно делать по Edit с SourceCache можно глянуть здесь, а по SourceListздесь.


    При этом, насколько я помню, запись в одно действие все равно сгенерирует несколько уведомления в "наблюдаемом" по .Connect объекте, что не всегда удобно. Т.е. ChangeSet с несколькими изменениями.


    P.S.: у SourceList есть LoadFromSource, но он принимает IObservable<IChangeSet<T>>, что в общем случае может не подойти. Списком я редко пользуюсь, поэтому точно сказать затрудняюсь.


    P.P.S: Вообще Edit вещь хорошая, потому что, насколько я понял, адресует проблему многопоточности (ну или нет, и тогда весь мой код это потенциально один большой фейл). Разные потоки работают хорошо в приложениях с UI. Т.е. коллеция может обновляться как угодно, поверх Connect можно применять например Sample или Throttle, которые, по опыту, могут переключаться на другой поток. И идея в том, чтобы максимально обработать данные на не-UI потоках, после чего в сам UI-поток выдать только необходимый для отображения минимум, вызвав перед Bind, BindTo, или ToPropertyEx что-то вроде ObserveOn(UIDispatcher).
    И все это реализуется несколькими экстеншн-методами.

  • 3D-фотографии Facebook изнутри: шейдеры параллакса
    +2
    Судя по последней анимации, карты глубин не всегда достаточно. Я вижу артефакты у задней части черепа, яблока и, что самое важное, бутылки в центре. Создается иллюзия, что за бутылкой есть еще одна, которую мы видим только со сдвигом.
    Я полагаю, что т.к. карта глубин дает вам расстояние только до ближайшей к камере поверхности объекта, то настоящая форма той же бутылки неизвестна — она может быть как циллиндрической (настоящей) формы, так и плоской картонкой или даже протяженным вдоль Z объектом (считая что ось Z направлена из камеры и перпенидкулярна плоскости изображения).

    Единственное, что мне не понятно, так это почему кот и монета выглядят более реалистично, чем последняя модель. Вероятно, из-за отсутствующего фона (ну или фона, удаленного на бесконечность). В последней сцене стена находится относительно близко и, с учетом оптимизации шейдера, может давать такой эффект (но это не точно).
  • Развёрнутый ответ на комментарий, а также немного о жизни провайдеров в РФ
    0

    Здесь меня волнуют различные блокировки различными провайдерами. Учитывая предыдущий опыт с protonmail, когда провайдер просто получил письмо от спецслужб и стал блокировать непонятно что, тренд намечается неприятный. Поэтому я считаю, что кроме применения более качественных технлогоий (как вы предложили), вопрос выбора оператора тоже важен. Пока, собственно, этот выбор еще есть.

  • Развёрнутый ответ на комментарий, а также немного о жизни провайдеров в РФ
    +2
    Домашний билайн, спб. Капчи в гугле регулярно (пару раз в день могут повляться). А совсем недавно я обнаружил, что они режут vpn трафик до dgitalocean. Т.е. до смешного: скорость загрузки ~0.75 МБит (облако -> пк), выгрузки — больше 50 мбит. При этом ssh трафик вроде так сильно не режется. Раздал мтс с телефона — 12 мбит в одну сторону, 12 в обратную. Пора менять ISP.
  • НАСА: количество пригодных для жизни планет в нашей галактике гораздо меньше, чем принято считать
    +5
    Но ведь речь идет все же о миллиардах лет. Вероятно, неудачный перевод с английского, где billion и million звучат ближе, чем миллиард и миллион в русском.
  • Проблемы безопасности дорожного движения, разбираем по пунктам
    0

    Именно. Но ведь речь идет про реальную дорожную ситуацию в РФ. Как насчет временного ограничения 70 км/ч, которое вот таким волшебным образом снялось, а впереди стоит стационарная камера. Вот я продолжаю ехать не более (пока еще можно) 89 км/ч, опасаясь камеры впереди, а сзади меня уже начинается вакханалия, которая обычно заканчивется обгоном меня через двойную сплошную по встречке или по обочине — ведь после отмены лимит за городом становится 90 км/ч, и всем нужно лететь не менее 110 км/ч. Это конечно мелочь, но в совокупности с отечесвтенной культурой вождения — доставляет как минимум дискомфорт.


    Ладно, как насчет ограничений паровки на какой-нибудь улице? Знак, поставленный в самом начале, может нигде не быть продублирован аккурат до следующего перекрестка, поэтому если ты не запланировал парковку за пол часа до въезда на улицу — однозначно быть уверенным, что тут стоять можно — нельзя. Наличие припаркованных автомобилей не является достоверным индикатором. Это снова из области дискомфорта.


    Вот парные знаки (с обеих сторон дороги) это точно полезно, потому что во время обгона условной фуры(или опережении на 2+2 полосной дороге) знак, стоящий только справа, можно легко не увидеть.


    Если коротко, по субъективным ощущениям в РФ ставятся знаки согласно ПДД и все. Минимум отработан и ладно. В Скандинавии знаки ставят так, чтобы всем всегда было понятно, даже если знак дублирует очевидную отмену какого-то ограничения. Важные знаки всегда дублируют сразу после заезда на крупную дорогу, чтобы водитель, выехав из другого скоростного режима, сразу имел представление о типе движения на новой дороге.


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

  • Модель твёрдого Ядра без электронных оболочек, то есть Ядро равно всему атому по размеру
    0

    Я не спец в прикладных квантах, но если коротко, то в статическом электрическом поле волновая функция атома водорода может быть разделена на три компоненты, каждая из которых зависит от одной параболической координаты (система координат с двумя координатами вида r-z и r+z и азимутальной состаляющей). Т.е. волновая функция превращается в произведение функций одной переменной, на каждую из которых есть гигантский диффур. В этой СК существует несколько квантовых чисел, включая магнитное m (обычное) и два параболических n1 и n2, такие что главное квантовое число n = n1 + n2 + |m| + 1. Далее утверждается, что при определенной фотоионизации можно будет наблюдать радиальные структуры, число которых равно n1, при условии, что параболические квантовые числа "хорошие" (видимо есть какой-то критерий). Далее вторы распространяются о том, каким лазером нужно светить и как это все снимать. На рисунке здесь показана, видимо, комбинация (n1, n2, m) = (2, 27, 0). В статье есть еще снимки для n1 = 0, 1, 3 и радиалные профили, которые сраниваются с теоретическим предсказанием (и неплохо согласуются). По ощущениям, "хорошие" числа это когда n = 30 а m = 0.

  • Модель твёрдого Ядра без электронных оболочек, то есть Ядро равно всему атому по размеру
    +13
    Ох. Вот сходу простейший вопрос
    — Атомы в твёрдых веществах контактируют непосредственно своими твёрдыми ядрами;
    — Переход в разные фазы (твёрдое-жидкое-газообразное) осуществляется при изменении взаимного положения отдельных нуклонов (или их элементов) в структуре ядра;

    Я правильно понимаю, что атомы находятся непосредственно в контакте друг с другом? А размер атомов фиксирован? Потому что если да, то мы имеем постоянную плотность (number density, частиц на единицу объема). Если фазовый переход обусловлен реорганизацией нуклонов (суммарная масса ядра как-то меняется? что-там по энергии связи?), то получается, что обычная плотность (т.е. типичная масса * number density, единиц массы на единицу объема) от агрегатного состояния не зависит, а лед, который по чему-то имеет меньшую плотность, чем вода, нас просто обманывает и прикидывается. Не говоря уже про водяной пар.

    No offense, но меня всегда удивляет тот факт, что качество работы можно оценить просто по манере написания. Как только в тексте начинают встречаться Обычные Термины, Написанные с Заглавной Буквы, дальше можно не читать (это ИМХО). Мне кажется это свойсто справедливо и для текстов, написанных на других языках.

    Ну и напоследок
    — Из Новой Модели Атома исключается понятие «Электронная Оболочка Атома», а все взаимодействия Атомов осуществляются через непосредственный контакт нуклонов ядер и через известные Электростатические и Магнитные поля, привязанные к конкретным нуклонам в составе ядра.

    image
    Эта картинка отсюда, а само исследование — здесь (скорее всего нужен доступ, сейчас нечем проверить).
    Если коротко, перед вами первое прямое наблюдение электронной орбитали атома водорода, если упрощенно. Опыт основывается на эффекте Штарка. Фактически, вы смотрите на проекцию радиальной структуры волновой функции.

  • Проблемы безопасности дорожного движения, разбираем по пунктам
    0
    Я все же придерусь к деталям. Штраф за превышение 5 км/ч это очень лихо. Здесь есть камеры, но даже там мне кажется +5 км/ч (в зоне 80 км/ч) еще допустимо. Это я про Kehä I в Хельсинки.
    Про превышение — превышают, иногда даже прилично, но нет безумных лихачей. Летом на E18 финны спокойно ездят 130+ при ограничении в 120 — потому что практически идеальная двухполосная полупустая дорога. Я единственный раз видел полицейскую облаву на шоссе, все остальные были в городах в основном. Меня как-то остановили в населенном пункте (естественно их интересовал акоголь в крови, с этим у них как раз большие проблемы). В тот момент я как назло ехал 60 при разрешенных 50. Убедившись, что со мной все в порядке, мне сказали, что вероятно я сильно торопился и что не стоит так делать (скорость зафисксировать им было нечем, поэтому предъявляли на глаз). На этом все. Зато если у школы или перехода ограничение 20 — все поедут не более 25, и это действительно достижение.

    Знаки меняют, да, руками (если железные). На той же Е18 знаки ввиде табло, обновляются в зависимости от погодных условий, трафика и, собственно, сезона. Знаки там меня впечатляют тем, что ставятся они, чтобы даже самый невнимательный и слепой водитель обязательно увидел важный знак (например обгон запрещен и ограничение скорости). Ставят их очнь часто с двух сторон даже на самых простых дорогах. Для контраста, РФ создает ощущение, что тут знаки ставятся, чтобы водителя можно было на***ть в нужный момент, и уж точно не ради безопасности. В РФ приходится загордом вечно считать перекрестки, потому что зачастую ограничение ставят, а отменяют — согласно ПДД у следующего перекрестка. Просмотрел съезд в кусты, гордо именуемый «дорогой» — едешь неправильо. Финны же обязательно поставят знак, меняющий режим, им не жалко.

    Отдельный бонус — кольцевое движение. В малеьких городках иногда нет ниодного светофора, везде кольца и нет левых поворотов. А когда возвращаешься в СПБ, начинаешь проклинать гигантские площади с кольцами в 4 полосы и безумной схемой движения (которую, опять же, нужно успеть заучить до того, как въедешь на кольцо).

    Короче я не знаю как такое обсуждать, когда буквально рядом есть отличный пример, как организовать движение, но у нас все равно все делается по-старинке.
  • Data Science «спецназ» собственными силами
    0

    Я ни в коем случае не настиваю, просто предложил простое "расширение".
    Я отказался от %dopar% и foreach в какой-то момент из-за произвольного unlist-a и проблем с экспортом обновленных функций.


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

  • Data Science «спецназ» собственными силами
    0

    Как насчет furrr для обощения полученных знаний на область параллельных вычислений? Работает поверх future и мимикрирует под синтакс purrr. Можно спокойно использовать вместо purrr во многих местах, так как дефолтное поведение — последовательное выполнение, слабо отличающееся от purrr.
    Из преимуществ — future позволяет менять топологию бэкэнда, благодаря чему можно оптимизировать вложенные вызовы future_*.
    Вот reprex:


    library(purrr)
    library(furrr)
    
    plan(cluster, workers = 2)
    1:10 %>% future_map_int(~Sys.getpid())
    #>  [1] 7112 7112 7112 7112 7112 6624 6624 6624 6624 6624
    
    plan(sequential)
    
    1:10 %>% future_map_int(~Sys.getpid())
    #>  [1] 7032 7032 7032 7032 7032 7032 7032 7032 7032 7032
    
  • Проблемы безопасности дорожного движения, разбираем по пунктам
    +8
    Я наверное зря с этой темой влезаю, но для меня самым травматичным опытом был первый выезд в Скандинавию на собственном автомобиле. До этого я в жизни себе представить не мог, что дорожное движение может быть организовано адекватно, что водители ездят аккуратно, а пешеходы никогда не выпрыгивают под колеса. То, как движение организовано в РФ — это просто катастрофа. Не нужно изобретать велосипеды, когда для начала нужно просто навести порядок. Начать хотя бы с проектирования дорог с целью «проложить дорогу, комфортную, безопасную и удобную для всех», а не «тяп-ляп попилим бабло а там как сойдет». И людей обучать. Почему-то по ту сторону границы пешеходы носят на себе свтооотражающие элементы, жилеты или даже полностью отражающие свет куртки — потому что они беспокоятся за свою жизнь. И такой пешеход в полной темноте ночью зимой виден за сотни метров иногда.

    Простой пример:
    Финляндия, заогодная дорога между небольшими населенными пунктами. Ограничение — 70 км/ч (искуственно занижено со стандартных 80). По одной полосе, никаких особых дорожных элементов. При этом пешеходные переходы (а их там несколько) встречаются либо в виде поддорожных (это подземный переход на минимальной глубине без ступенек и прочего, очень удобно), либо надземных, с предварительным ограничением в 60 км/ч, разделительной полосой, дополнительным освещением прямо над переходом и обязательным знаком заранее.
    Ленинградская область, любое региональное шоссе:
    до двух полос в каждую сторону, скоростной лимит 90 км/ч (а по факту если ты едешь меньше 110 то тебя за человека не считают), а посреди этого торжества, практически без освещения, — пешеходные переходы прямо по земле. Это же маразм. А когда местные жители уже не могут терпеть, вместо этого строят гигантский надземный переход, пользоваться которым мягко говоря невозможно (если сравнивать с очень удобными скандинавскими подземными переходами).

    И это вопрос только безопасности пешеходных переходов. А сколько опасных перекрестков и гигантских пробок можно было бы решить просто грамотно организовав движение и сделав полосы для поворотов — это уже с точки зрения автомобилиста. Но зачем? И так сойдет.

    Никакая система не поможет дорожному движению пока это движение не организовано.
  • How to learn English
    +1
    Disclaimer: this is an attempt to criticize not the author or the content of the article, but rather some of the grammar issues that might hopefully help someone, who is attempting to learn the language on his/her own, to avoid such mistakes.
    Based on my personal experience
    Even though this article lists all the benefits of your way of learning English, it is also a great example of the downsides of such an approach. I would like to recommend you — and that comes from the personal experience — to pay a little bit more attention to the articles and prepositions. Those are very difficult to memorize and learn to apply correctly. I often make tons of mistakes like that and, honestly, I need to write and then read the same sentence at least once to spot all the missing articles. For some reason, when I write, I do not notice such things, but when I read, the majority of the incorrect prepositions and missing articles just make the sentence sound completely off. It is just screaming in my head like when you hear someone playing off-key. For instance, «Let's go to tools», «The English language is not secret knowledge».
    And then there are incorrect verbs like in «I don't sure», «You go to walk».
    Anyway, what we all face (or have faced) at some point is that you cannot simply take a sentence in some other language and translate it into English, word by word. You do so — you get something like «Dumb as a tree» and «understand the English voice»
  • Microsoft прекращает поддержку Windows 10 Mobile
    +5
    Nokia Lumia 920: один из смартфонов на операционной системе Windows Phone 7

    Передо мной лежит Lumia 920, которой я пользуюсь уже Гейтс знает сколько лет. При покупке на ней работала Windows Phone 8, которая была позже обновлена до 8.1 (Denim релиз). На этом все. 10 на нее не выпустили, но я не слышал чтобы она когда либо выпускалась с Win 7.


    Пруф в моем случае

  • ML.NET Tutorial — Get started in 10 minutes
    +1
    5.1,3.5,1.4,0.2,Iris-setosa
    4.9,3.0,1.4,0.2,Iris-setosa
    4.7,3.2,1.3,0.2,Iris-setosa
    ...

    Iris data set appears to have no header (column names) in the source csv. However, you write in your example:


    var reader = mlContext.Data.CreateTextReader<IrisData>(separatorChar: ',', hasHeader: true);

    Here it obviously says that hasHeader is used to control whether the data set has "header with feature names", but example data set does not have feature names (or am I missing something?).


    If I am not mistaken, the code above might not fail, but the loaded data will likely have names taken from the first row (so, feature "5.1", feature "3.5" and so on), and the total number of observations will be reduced by 1.


    I've had so many weird errors reading tables in R because of the missing header = TRUE/FALSE parameters that I now try to be super-cautious about it.

  • Что делать с людьми, которых заменят роботы?
    +1

    Рискну предположить, что найдется как минимум одна страна (16+), где этому будут рады (а может быть и уже рады, сложно сказать).

  • Что делать с людьми, которых заменят роботы?
    +1

    Если честно, мне не очень очевидно, почему "сферы услуг, где важен именно человек-лакей" будут все столь же востребованы. По ощущениям, наоборот люди (не самые богатые разумеется) предпочитают сервисы и услуги, где какую-то часть работы можно сделать самому, из-за чего общая стоимость услуги снижается. Бесспорно, робо-такси вам чемодан не донесет, но стоимость услуги водителя-носильщика значительно увеличивает стоимость услуги (условно, аренда машины вс аренда машины+работника). Да и никто не мешает добавить в такие машины подъемник, который будет ваш чемодан подхватывать с земли и загружать в багажник и так же выдавать обратно.


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


    Ну и последнее — частично спасти ситуацию могут новые профессии (как уже упоминалось не раз, различный сервис роботизированного оборудования, специфический для новых отраслей). Но если на заводе условно один манипулятор заменяет 10 человек, то для его обслуживания понадобится, возможно, один "надзиратель" и 2-3 специалиста на выезде, которые обсдуживают сразу несколько подобных устройств. Итого, теряем 10 среднеквалицифированных рабочих мест, приобретаем 3-4 новых рабочих места, но требующих совершенно иную квалификацию. По хорошему, и государству, и людям под потенциальным ударом уже нужно задумываться о том, как себя переквалифицировать, да только у кого есть время и кто этим сам будет заниматься.

  • Тетрис на C# в 100 строк
    0

    Как насчет


    ...
    shape[1, i] += e.KeyCode == Keys.A ? -1 : 1;
    ...
  • Как объединить содержимое файлов в PowerShell. И при этом не пострадать
    0

    Не спец по PS, но полагаю, что идея в ленивом исполнении. Т.е. сначала команда извлекает первый файл, затем — его содержимое, возможно — одну строку, затем дописывает строки в конец выходного файла, пока первый файл не закончится. Потом в какой-то момент доходит до вашего выходного файла и лениво начинает тянуть из него строки, попутно их записывая. Очевидно, строки не заканчиваются. 25% загрузки CPU говорят о том, что у вас скорее всего двухъядерный лэптоп с hyperthreading enabled.
    Я попробовал поиграть с командами, решение (вроде как) оказалось простым:


    > echo "Hello, World 1!" > test1.txt
    > echo "Hello, World 2!" > test2.txt
    > (ls | cat) > out.txt
    > ls
    Mode                LastWriteTime         Length Name
    ----                -------------         ------ ----
    -a----       2018-12-19     20:36             70 out.txt
    -a----       2018-12-19     20:36             36 test1.txt
    -a----       2018-12-19     20:36             36 test2.txt
    > cat out.txt
    Hello, World 1!
    Hello, World 2!
    

    Попробуйте — вдруг будет работать.


    UPD Здесь до меня по сути то же самое написали.

  • В Госдуму внесен законопроект об автономной работе рунета
    +4
    Ну, зависит. Когда политикам ничего не угрожает (украл — поймали — наказали — снова в строю крадешь), вы просто «чистых» не найдете. А если найдете, то такой политик либо интегрируется в систему, либо системой будет перемолот и выкинут. Разницы почти никакой.
    Тут даже вопрос не столько в политиках сколько в запросе населения. Я — очевидно являясь представителем более молодого поколения — зачастую в разговорах с поколением старшим обнаруживаю в их словах слепую веру в то, что политики это какой-то особый класс людей, и их дела «простым смертным» недоступны, «поэтому и лезть туда не стоит». После этого, когда натыкаешься на пост в очередном свитторе, где какой-нибудь американец собирает подписи, продвигает инициативу и призыает всех неравнодушных обращаться к своим представителям/конгессменам и т.д., становистя очень грустно.
    В конце концов, после развала Союза часть политиков были «новыми» и «чистыми», однако они либо уже в команде, либо давно не имеют доступа к реальным ресурсам и управлению. Это может дать информацию о характерном временном масштабе изменения политика :-)
  • В Госдуму внесен законопроект об автономной работе рунета
    +8
    Простите, а что здесь удивительного? Речь идет о стране, где большинство процессов контролируется группой людей, прямо или косвенно, которых объединяют общие интересы. Дума, телефонные суды, монструозные и неэффективные госкорпорации-монополисты — все к вашим услугам. Несколько последних скандалов показывает, что кого из чиновников не тряхни — у всех есть как минимум вид на жительство (если не ошибаюсь, даже у инициаторов данного закона). Работая вместе, они спокойно перемещают скудные денежные средства из этой страны в другие и не знают бед. Единственная проблема — население «здесь» должно находится в постоянном стрессе, чтобы вопросов не возникало, чтобы условно «не хотелось как в Париже» (тм). Как этого добиться? Ну ужесточить контроль, закрыть доступ к альтернативным источникам информации (серьезно, я не смотрю российское тв совсем, но создается ощущение, что новостные/пропогандистские шоу уже совсем оторваны от реальности и откровенно лгут, ежедневно). Сверху нужно добавить «общего врага», против которого нужно «сплотиться». Ну а коли есть враг, то не время думать о каких-то там правах и свободах, зарплатах и уровнях жизни. Нужно готовиться. И плевать, что сами они в объятия к этому «врагу» сбегут при первом же шухере, оставив нас, ну, ни с чем.
    Люди просто беспокоятся о благополучии, своем и своих семей в различных странах Европы и, иногда НАТО. И ничего более.
  • Что мне не нравится в C и С++
    +3
    Да как бы это сказать… На мой взгляд C++/CLI даже плюсами назвать нельзя. Это как… компилировать CUDA без nvcc и жаловаться, что компилятор не понимает function_name<<<n, m>>>(args). Это фактиечски диалекты.
  • Что мне не нравится в C и С++
    +4
    String^ MyString3 = «Hello, world!»; //попробуйте скомпилировать в GCC

    А вы в курсе, что это C++/CLI? Ну т.е. это полу-управляемый C++, живущий с .NET? И что ваш String^ это скорее всего дотнетовский System.String (когда-то давно я на этом даже что-то писал, но могу ошибаться)? Более того, у VC++ есть свои инструменты для работы со строками, как часть winapi, wchar и tchar, первый из которых 16-битовый тип, а второй определяется в зависимости от определенного символа #ifdef UNICODE (отсюда).
  • Пекин введёт социальный рейтинг для жителей города в 2020 году
    0
    Тут вопрос в определении «пропасти». Если оглянуться на нашу (хотя не могу утверждать т.к. не знаю откуда вы) страну, то да, стагнация, развал Союза. Но вот результат-то на выходе иной. Новые страны не трансформировались в современные государства, а каждая на своем, уникальном, временном масштабе, свалилась в еще более дремучее состояние (за исключением быть может пары стран). В каких-то странах несменный лидер как пришел после развала, так никуда и не уходил, где-то есть иллюзия изменений, где-то (благодаря, вероятно, усилиям извне) было несколько революционных попыток, однако итог таких преобразований еще не очевиден (по крайней мере мне).

    По ощущениям, если люди привыкли жить «так», простой сменой строя и вывески жизненный уклад не изменить. Если в Китае, после долгих лет применения рейтинговой системы, изменится строй, то нет никакой гарантии, что население не продолжит мыслить тем же шаблоном. А при наличии прав голоса — голосовать за кандидатов, которые попытаются реанимировать прекрасные репрессии прошлого (тм). Единственное более-менее очевидное следствие, что коллапс подобной системы сильно подкосит экономику страны и ее конкурентосопособность по сравнению с «развитыми» странами.
  • Пекин введёт социальный рейтинг для жителей города в 2020 году
    +15
    Регулирование скорости интернета
    Запрет на обучение в лучших школах
    Запрет на получение лучших рабочих мест
    Запрет на заселение в лучшие отели
    Публичное порицание
    Снижение позиций на сайтах знакомств

    Создается ощущение, что авторы проекта либо его не продумали (что страшно само по себе, так как повлияет на жизни ~миллиарда человек), либо, наоборот, продумали (и это еще страшнее). С учетом перечисленных негативных факторов от низкого рейтинга сама система представляется мне примерно такой:


    d(rating)/d(event) ~ (rating - rating_0)

    Т.е. скорость изменения рейтинга с каждым следующим событием заивсит от того, хороший у вас рейтинг сейчас (больше rating_0), или же плохой. Иными словами, если вы свалились в негативную зону, шансов выбраться нет — рейтинг будет только ухудшаться. Вас лишат образования, доступа к перемещению, доступа к финансам (кредиты или любые формы займа), к хорошей работе, что повлечет за собой, например, ухудшение финансовой ситуации, overdue — платежи, и дальнейшее падение рейтинга. Отдельно — я честно говоря сам не разобрался — меня интересует вопрос "наследования". Потому что если на сайтах знакомств ваша позиция понижается, это скорее всего приведет к тому, что люди с низким рейтингом будут сопоставляться с людим с низким рейтингом, образовывать (гипоеттически) семьи и рожать детей. Теперь, даже если у ребенка рейтинг "нейтральный" (а еще он может наследоваться от родителей, условное среднее арифметическое), то он будет лишен многих благ, т.к. его родители лишены этих же благ (условно, он не сможет заселиться в хороший отель даже при наличии денег потому что туда не пустят родителей или его без сопровождения). Можно отметить, что это же применимо и к деньгам, однако отсутствие/наличие денег по умолчанию не делает вас плохим, а благодаря наличию государства и соц услуг (вместе с соц лифтами), отсутствие денег в семье для ребенка не является преградой в жизни. А вот низкий рейтинг — автоматически отправляет вас вниз.


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


    В результате, есть вариант что люди с низким рейтингом не будут более-менее равномерно распределены, а будут скатываться на самый низкий уровень, и довольно быстро. Навязанное расслоение общества. Особенно учитывая, что вряд ли получится оспаривать изменение рейтинга в суде (и даже если поулчится, чем ниже рейтинг, тем скорее всего меньше приоритет и "хуже" суды). И если система будет работать именно так (привет черному зеркалу), и авторы действительно так ее и задумывали — вот это на мой взгляд самый страшный вывод.


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

  • .NET Standard 2.1
    +2
    .NET Framework — это реализация .NET, установленная на более чем одном миллионе устройств

    Простите, а вы здесь порядка три не потеряли? Или я чего-то не понимаю? Количество устройств, на которых крутится фреймворк, должно быть сравнимо с количеством Windows-машин. В качестве нижней оценки можно взять количество Windows10 копий, которых уже около 0.7B. Добавьте сюда выжившие Windows 8-8.1 и Windows 7 и спокойно наберете миллиард устройств.

    Включив зануду, можно сказать, что больше одного миллиона включает в себя и числа больше одного миллиарда, но ставит в заблуждение с точки зрения обывателя.
  • В России построят большой суперкомпьютер на процессорах «Эльбрус»
    0
    Мой комментарии скорее был о том что для обывателя (типа меня) такие проекты это черный ящик. Если есть возможность построить и они смогут это сделать, получится вполне скье конкурентоспособная железка. Но если это чисто для военки, то непонятно что они там будут гонять. Т.е. либо у них уже есть задачи и им просто нужно железо мощнее, либо они будут изобретать велосипеды с нуля. Это как раз и интересно, но мы этого не узнаем. Соседнюю страну привёл в пример потому что там суперкомпьютеры управляются гос организацией и гос учереждения вместе с университетами имеют «безлимитный» доступ.
  • В России построят большой суперкомпьютер на процессорах «Эльбрус»
    +4
    Я не являюсь специалистом в области построения суперкомпьютеров, но работал с суперкомпьютерами из Top-500 в процессе обучения и использовал в STEM области. Суперкомпьютер требует гораздо больше, чем ангар с пачкой CPU. Как было отмечено выше, требуется качественная память, а еще специализированные платы и неплохо было бы иметь быструю файловую систему (и гигантскую по объему). Все это железо помножено на софт — когда я использовал суперкомпьютеры, то распределение ресурсов выполнялось своего рода балансировщиком — пользователи имели свой аккаунт, под которым собирали проект необходимыми кимпиляторами под текущую архитектуру, после чего использовали отдельный софт для выполнения приложения. Балансировщик должен был учитывать приоритет пользователя, количество запрошенного CPU-time, памяти и так далее. Сейчас тренд на контейнеризацию — подход с «одним большим линуксом на всех» не позволяет настроить окружение под себя и добавить нужные зависимости/компиляторы/интерпретаторы (точнее нужно просить персонал «а постаааавьте пжлста вот это»).
    Для сравнения, соседняя страна инвестирует около €37M (2.8 млрд руб) в построение нового суперкомпьютера на замену одного из старых.
  • Операции над комплексными числами
    0

    Для работы с комплексными числами есть прекрасная фунция arg(x, y) (см Вики), где x и y это вещественная и мнимая части z, соответственно. Функция эта многозначная, т.е. для любой пары (x, y) существует счетное количество значений (отличающихся, очевидно, на 2pi).
    Для вычислений давно изобрели atan2(y, x), которая возвращает угол с учетом знаков x и y. Иногда она обозначается как Arg(z).


    Без правильного учета этого свойства вы не получите правильных корней из единицы; вместо n корней будет только 1.

  • 5 лучших игр на ПК для изучения английского
    +2
    Я бы не рекомендовал ведьмака для английского языка. В идеале там нужна хотя бы польская озвучка для погружения на 146%. Русская удалась не меньше, особенно набор фраз-комментариев Геральта о происходящем вокруг («никак вы, *****, не научитесь! „).
    С другой стороны, игры BioWare весьма богаты на диалоги. Из личного опыта: SWKOTOR, Mass Effect, Dragon Age и SWTOR. В ME и SWTOR sci-fi setting чуть ближе к действительности, особенно политика, но применять в разговоре это… сложно. Так же как и глубокие познания в типах брони, оружия и школах магии из игр с фэнтезийным сеттингом. Но в целом опыт крайне полезный.
  • Введение в комлексные числа
    +1
    Любую функцию вида

    можно представить как

    Фактически это парабола y = x^2 сдвинутая вдоль осей x и y и еще растянутая. У f(x) может быть 0, 1 или 2 пересечения с вещественной осью x, как видно например на
    графике

    Код на R
    x <- seq(-5, 5, by = 0.1)
    plot(x, x^2 - 4, type = "l")
    lines(x, 0 * x)
    


    Это все работает для функций с вещественными коэффициентами. Теперь, если w = x+iy, то функция f(w) действует из C в C (примерно как из R2 в R2). Если x и y это оси координат на плоскости, то значение функции можно отложить вдоль оси z. Ну точнее так как значение есть комплексное число то просто так показать его мы не сможем. Либо нужно использовать отдельно цвета, либо показывать действительную и мнимую части как два рисунка. Теперь, с точки зрения такого графика, решение уравнения это поиск таких точек пересечения плоскости z = 0 и мнимых и действительных частей функции.
    Вот пример графиков
    Действительная часть

    Мнимая часть

    Код на R
    library(plot3D)
    x <- seq(-5, 5, by = 0.1)
    y <- seq(-5, 5, by = 0.1)
    args <- outer(x, y, function(x, y) x + 1i * y)
    f <- function(w) w^2 + 4 # Нет вещественных корней
    f0 <- function(w) Re(w * 0) # Плоскость z = 0
    
    # Действительная часть
    persp3D(x, y, f0(args), xlim = c(-5, 5), ylim = c(-5, 5), zlim = c(-30, 30), clim = c(-30, 30), border = "#000000")
    persp3D(x, y, Re(f(args)), xlim = c(-5, 5), ylim = c(-5, 5), zlim = c(-30, 30), clim = c(-30, 30), add = TRUE)
    
    # Мнимая часть
    persp3D(x, y, f0(args), xlim = c(-5, 5), ylim = c(-5, 5), zlim = c(-30, 30), clim = c(-30, 30), border = "#000000")
    persp3D(x, y, Im(f(args)), xlim = c(-5, 5), ylim = c(-5, 5), zlim = c(-30, 30), clim = c(-30, 30), add = TRUE)
    
    



    Для такой функции f(w) = w^2 + 4 видно что мнимая часть равна нулю вдоль осей (точка [0, 0, 0] находится в центре рисунка), а действительная имеет более хитрое пересечение. Я на рисунке не показал, но можно догадаться, что все три поверхности пересекутся в точках x = 0 и y = +-y0, а точнее y = +-2. Вспоминая, что w = x + iy , корни f(w) = w^2 + 4 это +-2i.
  • Введение в комлексные числа
    +1

    Самым неудачным мне кажутся записи вида "это действие выполняется вот так". Это отличный способ научить кого-то магическим знаниям "как проделать операцию Х" без какого-либо понимания как это работает. Если бы я не знад ничего про комплексные числа, то подумал бы что умножение комплексных чисел это какой-то очень сложный процесс, когда это всего лишь


    (a + ib) * (c + id) = ac + ibc + iad - bd = ac - bd + i * (bc + ad)

    Никакой магии. С делением тоже — домножьте на сопряженное знаменателю число дробь и… все. Про сопряженное числа ничего не сказано (или я не умею читать), что на самом деле очень важно.
    Формулу Муавра для n-ой степени было бы неплохо заиметь, после чего поговорить про корни n-ой степени из единицы.
    О том, что C и R2 похожи, о векторном представлении и т.д.


    Из примеров использования — в IT я думаю ближайшее это кватернионы, которые представимы в виде 2х2 матрицы из C, и могут применяться в гейм-деве для описания вращения/трансформаций (поправьте, если не так, но по крайней мере в Unity и DirectX встречаются).
    Из других областей — ну вся теория относительности построена на этом. Четырехмерное пространство-время. В элкетродинамике используется экспоненциальная форма для описания волн. В диффурах, при исследовании систем на стабильность. Квантовую механику сложно представить без комплексных чисел.


    Ах да, вот отличный пример на грани квантов и IT — в квантовых компьютерах стейт кубитов можно отобразить на так называемой сфере Блоха, где в качестве координат выступают комплексные величины (комплексная экспонента используется для обозначения азимутального угла, учитывая что eip = cos p + i sin p). Но это есть следствие квантовомеханического подхода.