The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

В репозитории NPM выявлено 25 вредоносных пакетов , opennews (??), 23-Фев-22, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


18. "В репозитории NPM выявлено 25 вредоносных пакетов "  –2 +/
Сообщение от псевдонимус (?), 23-Фев-22, 12:14 
Тот, кто тащит блестяшки из паразитария либо ребенок, либо жадный де6ил( в медицинском смысле), либо примитивный жадный до лёгких денег мудак
Ответить | Правка | Наверх | Cообщить модератору

26. "В репозитории NPM выявлено 25 вредоносных пакетов "  +3 +/
Сообщение от пох. (?), 23-Фев-22, 12:46 
Либо нескучный йезычок требующий отдельный пакет в паразитарии для выравнивания слева, черезмерно трудозатратен для написания тривиальных вещей.

Ответить | Правка | Наверх | Cообщить модератору

28. "В репозитории NPM выявлено 25 вредоносных пакетов "  –4 +/
Сообщение от Аноним (-), 23-Фев-22, 12:52 
Как бы самому прогать на такой штука... сам панимаиш...


[] + [] → "" // Empty string? These are arrays!
[] + {} → [object object]
{} + [] → 0 // Why isn't the operation commutative???
{} + {} → NaN // ???
16 == [16] → true // Array converted into string, then into number
16 == [1,6] → false // But what is array converted into?
"1,6" == [1,6] → true
var arr = [];
arr.length → 0
arr[3] → "undefined" // No array bounds exception???
arr[3] = "hi";
arr.length → 4 // 4??? Only one element has been added!
arr["3"] → "hi" // Apparently "3" is coerced into a number
delete(arr[3]);
arr.length → 4 // 4??? There are no elements in the array!
arr[3] → "undefined" // 7 lines above, length was "0"!
var i = 1;
i = i + ""; // Oops!
i + 1 → "11"
i - 1 → 0
var j = "1";
++j → 2 // Okay, but...

var k = "1";
k += 1 → "11" // What???

[1,5,20,10].sort() → [1, 10, 20, 5] // Why is it sorting strings???
xs = ["10", "10", "10"];
xs.map(parseInt) → [10, NaN, 2] // ???
y = {};
y[[]] = 1;
Object.keys(y) → [""]


Ответить | Правка | Наверх | Cообщить модератору

34. "В репозитории NPM выявлено 25 вредоносных пакетов "  +2 +/
Сообщение от Аноним (34), 23-Фев-22, 13:23 
как бы это сказать помягче: ты кодишь так, как и следует ожидать от человека вроде тебя.

    [] + []; // TS2365 // классика жанра: ты и сам не знаешь, что
                       // такое "сложить массив с массивом":
                       // сумма элементов? сложение матриц?
                       // [1,3] + [3,5] == [4,8] или [1,3,3,5] или 12 или еще что?
    [] + {}; // TS2365
    {} + []; // ESLint(no-empty) ESLint(no-implicit-coercion)
    {} + {}; // ESLint(no-empty) ESLint(no-implicit-coercion)
    16 == [16]; // TS2367
    16 == [1,6]; // TS2367
    "1,6" == [1,6]; // TS2367

    var arr = []; // TS7034
    arr[3] // TS: string | undefined
    arr.length → 4 // 4??? // RTFM ECMAScript
    delete(arr[3]); // ESLint(space-unary-ops)
    arr.length → 4 // 4??? // RTFM ECMAScript

    var i = 1;
    i = i + ""; // TS2322
    var j = "1";
    ++j; // TS2356

    [1,5,20,10].sort(); // ESLint(@typescript-eslint/require-array-sort-compare)
    xs.map(parseInt); // function parseInt(string: string, radix?: number | undefined)

    y = {};
    y[[]] = 1; // TS2538

Ответить | Правка | Наверх | Cообщить модератору

46. "В репозитории NPM выявлено 25 вредоносных пакетов "  –1 +/
Сообщение от Аноним (-), 23-Фев-22, 18:28 
> как бы это сказать помягче: ты кодишь так, как и следует ожидать
> от человека вроде тебя.

Подгар хорош. А что, цитирование стандарта делает его логичнее? Это не мое шедевр с314жен прямо с опеннета же, просто ранее, понравилось уж очень. Очень прикольно когда операции не коммутативны, а результат операций поражает стройностью разнообразия. Не, серьезно, += 1 и ++ должно быть разным деянием? Логика :). Но может, нарков из ECMA стоило бы уволить?

Ответить | Правка | Наверх | Cообщить модератору

50. "В репозитории NPM выявлено 25 вредоносных пакетов "  +/
Сообщение от пох. (?), 23-Фев-22, 19:21 
>  Но может, нарков из ECMA стоило бы уволить?

Зачем? Мир станет гораздо скучнее.

И да, это все не помешало другим норкоманам написать на ЭТОМ цельный онлиофис. Нет, я тоже не знаю, как и почему.

Ответить | Правка | Наверх | Cообщить модератору

57. "В репозитории NPM выявлено 25 вредоносных пакетов "  –1 +/
Сообщение от Аноним (-), 23-Фев-22, 23:22 
А теперь смертельный номер: они попробуют его поддерживать, и посмотрим насколько их хватит :). Хотя-бы половину от опенофиса протянут?
Ответить | Правка | Наверх | Cообщить модератору

68. "В репозитории NPM выявлено 25 вредоносных пакетов "  +/
Сообщение от пох. (?), 25-Фев-22, 12:07 
В смысле? Они его поддерживают много лет, и продолжают активно допиливать фичи.

Причем без всяких там апачевских могильников с бесконечными деньгами за спиной.

Каким чудом оно работает и при этом его еще и умудряются развивать - для меня полнейшая загадка. Вероятнее всего отгадка лежит где-то в той же плоскости, что и ответ на вопрос "почему впопенофис по прежнему безальтернативно портит вордовые документы, хотя и написан на православнейшем C++".

Ответить | Правка | Наверх | Cообщить модератору

62. "В репозитории NPM выявлено 25 вредоносных пакетов "  +/
Сообщение от Аноним (62), 24-Фев-22, 10:48 
А где конкатенация комутативна?
Ответить | Правка | К родителю #46 | Наверх | Cообщить модератору

63. "В репозитории NPM выявлено 25 вредоносных пакетов "  +/
Сообщение от Аноним (-), 24-Фев-22, 12:26 
> А где конкатенация комутативна?

Для начала какого оно в одном случае конкатенация, а в другом нет, хотя оператор один и тот же по смыслу? И вам не кажется что в этом случае динамическая типизация заходит слишком уж далеко, делая мягко говоря, не совсем логичные и симметричные вещи?

Ответить | Правка | Наверх | Cообщить модератору

39. "В репозитории NPM выявлено 25 вредоносных пакетов "  +/
Сообщение от Аноним (39), 23-Фев-22, 14:30 
> прогать на такой штука...
> // Oops!
> // Okay, but...
> // What???

язык изучить не пробовал сначала?
документацию, там, почитать, примеры посмотреть, не?

не пиши на нём.

Ответить | Правка | К родителю #28 | Наверх | Cообщить модератору

47. "В репозитории NPM выявлено 25 вредоносных пакетов "  +/
Сообщение от Аноним (-), 23-Фев-22, 18:29 
> не пиши на нём.

Я и не пишу, чур меня на таком прогать. Просто очень уж прикольный пример сжато иллюстрирующий стройность дизайна и логичнсть языка :)

Ответить | Правка | Наверх | Cообщить модератору

48. "В репозитории NPM выявлено 25 вредоносных пакетов "  +/
Сообщение от RM (ok), 23-Фев-22, 18:29 
Я понял, почему народ кодит на JS, поглядев на современный энтерпрайзный C++
https://devblogs.microsoft.com/oldnewthing/20220222-00/?p=10...

You can substitute any other object that follows this same pattern. You don’t even have to have a real kernel object. You just need something that can pretend to be a kernel object enough to satisfy the ISynchronize contract.


struct MySynchronize : winrt::implements<MySynchronize, ::ISynchronize>
{
  winrt::com_ptr<::IUnknown> m_inner;
  int32_t query_interface_tearoff(winrt::guid const& id, void** object)
    const noexcept override {
    if (m_inner) return m_inner.as(id, object);
    return E_NOINTERFACE;
  }

  wil::slim_event ready;

  STDMETHODIMP Reset() { ready.ResetEvent(); return S_OK; }
  STDMETHODIMP Signal() { ready.SetEvent();
    printf("Call completed!\n"); // do cool stuff here
    return S_OK; }
  STDMETHODIMP Wait(DWORD flags, DWORD timeout) {
    assert(is_mta()); // we won't be pumping messages
    assert(!(flags & COWAIT_ALERTABLE)); // we won't be waiting alertably
    return ready.wait(timeout) ? S_OK : RPC_S_CALLPENDING;
  }

  static bool is_mta() {
    APTTYPE type;
    APTTYPEQUALIFIER qualifier;
    THROW_IF_FAILED(CoGetApartmentType(&type, &qualifier));
    return type == APTTYPE_MTA;
  }
};

A simpler way is to delegate the ISynchronize methods back to the call object:

struct MySynchronize :
    winrt::implements<MySynchronize, ::ISynchronize, winrt::non_agile>
{
  winrt::com_ptr<::IUnknown> m_inner;
  int32_t query_interface_tearoff(winrt::guid const& id, void** object)
    const noexcept override {
    if (m_inner) return m_inner.as(id, object);
    return E_NOINTERFACE;
  }

  auto Sync() { return m_inner.as<ISynchronize>(); }

  STDMETHODIMP Reset() { return Sync()->Reset(); }
  STDMETHODIMP Signal() {
    auto hr = return Sync()->Signal();
    printf("Call completed!\n"); // do cool stuff here
    return hr;
  }
  STDMETHODIMP Wait(DWORD flags, DWORD timeout) {
    return Sync()->Wait(flags, timeout);
  }
};
Let’s take this out for a spin.

int main(int, char**)
{
  winrt::init_apartment(winrt::apartment_type::multi_threaded);

  auto pipe = CreateSlowPipeOnOtherThread();

  auto outer = winrt::make_self<MySynchronize>();
  auto factory = pipe.as<ICallFactory>();
  winrt::check_hresult(factory->CreateCall(
    __uuidof(::AsyncIPipeByte), winrt::get_unknown(*outer),
    __uuidof(::IUnknown), outer->m_inner.put()));
  auto call = outer.as<::AsyncIPipeByte>();

  printf("Beginning the Pull\n");
  winrt::check_hresult(call->Begin_Pull(100));

  printf("Doing something else for a while...\n");
  Sleep(100);

  printf("Getting the answer\n");
  BYTE buffer[100];
  ULONG actual;
  winrt::check_hresult(call->Finish_Pull(buffer, &actual));
  printf("Pulled %lu bytes\n", actual);

  return 0;
}

Ответить | Правка | К родителю #26 | Наверх | Cообщить модератору

64. "В репозитории NPM выявлено 25 вредоносных пакетов "  +/
Сообщение от Аноним (-), 24-Фев-22, 12:28 
Довольно длинный и техничный пример линча негров. Да еще корпорацией майкрософт под winRT или как там у них это.
Ответить | Правка | Наверх | Cообщить модератору

67. "В репозитории NPM выявлено 25 вредоносных пакетов "  +/
Сообщение от пох. (?), 24-Фев-22, 20:36 
Это ж не энерпрайзный, это майкрософтовский c++
Его прочитать может любой человек, осиливший даже не страуструпа а первую попавшуюся двадцатилетней давности брошурку про сисплюсами. И главное - он его еще и применить сможет в аналогичном месте.

А вот если ты откроешь исходники мурзилы - те что с++ - вот тут ты и поймешь всю тщетность что либо в них изменить.

Ответить | Правка | К родителю #48 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру