• Проводы российской «Науки»
    0
    Несколько лет назад мы анализировали успехи российской науки на Международной космической станции. Простой подсчет научных публикаций вышедших на английском языке показал, что даже у японцев отдача пилотируемой космонавтики выше, хотя японские астронавты посещают МКС гораздо реже российских.


    На мой взгляд подсчет англоязычных публикаций не является главным критерием успеха и отдачи пилотируемой космонавтики. Важно количество экспериментов в принципе, их применимость на практике, их публикация на разных языках (в данном случае преимущественно русском). Был ли проведен анализ русскоязычных публикаций научных исследований?
  • 4 часа без смартфона. Дурацкий пост на серьёзную тему
    +2
    В библиотеку сдать
  • Пора на свалку
    0
    Кстати про Perl — сейчас активно развиваются либы для биндинга C++ к Perl
    XS::Framework::Manual::SVAPI
    XS::Manifesto
    XS::Install
  • Пора на свалку
    0
    Это напоминает историю/байку про веб-разработчика —
    «Вот блин, занимаюсь я тут PHP, JavaScript, рутиной, а вон люди пишут игры, это так круто. Приходит в проект, а там отладка, UB и прочее».

    Посыл в том, что настоящие сложные задачи могут быть как раз здесь и рядом, на том же языке/стеке, главное взглянуть на них под другим углом.
  • Я написал эту статью, ни разу не посмотрев на клавиатуру
    0
    Преимущество слепой печати в том, что ты думаешь о коде, а не о том, на какую клавишу нажать. О том, какую клавишу нажать думают пальцы, а ты думаешь об алгоритмах и коде
  • Я написал эту статью, ни разу не посмотрев на клавиатуру
    0
    После N-го набора пароля произвольный набор символов превращается в привычный набор символов, в результате набираешь его быстро
  • Старикам здесь не место? Программируем после тридцати пяти
    0
    1) скажи это космонавтам Алексею Овчинину (47 лет) и Нику Хейгу (43 года), которым пришлось во-первых выдержать пергрузку, а во-вторых быстро среагировать на сложившуюся ситуацию (авария носителя) и посадить корабль.

    Это не говоря уже про Федора Юрчихина, Павла Виноградова, которые летали на МКС в 58 и 59 лет соответственно. Или Федор Конюхов, который недавно пересек Южный океан на весельной лодке в 67 лет
  • Ford планирует использовать двуногих роботов-курьеров Digit для доставки посылок
    0
    А если робота украдут?))
  • Как программист в тренажерный зал ходил, и что из этого получилось
    0
    самая известная проблема — недостаток B12, который поступает только с мясными/рыбными продуктамми
  • Ликбез по электротравмам: от ожогов и катаракты до переломов и фибрилляции
    +4
    Советую прочитать автобиографическую повесть «Всем смертям назло…» Владислава Титова.

    В 1960 года, спасая шахту от взрыва, Владислав Титов совершил подвиг. Вагонетка с углем, сорвавшись с рельсов, ударила в электрокабель высокого напряжения и пробила его, короткое замыкание — и высеченный огонек побежал по кабелю к трансформатору. В. Титов находился рядом и понял: если огонь доберется до трансформатора — произойдет взрыв на шахте, где работали две смены шахтеров. Отключить ток времени не было, и горный мастер, чтобы не допустить взрыва бросился к щитку и принял на себя удар в шесть тысяч вольт. Взрыва не произошло, но кабель еще горел. Тогда Титов прополз несколько метров и закрыл своим телом огонь. Его нашли проходчики. Много месяцев врачи боролись за жизнь героя. Загадкой для врачей оставалось то, что Титов не погиб мгновенно — полученные им травмы были несовместимы с жизнью. Ему сделали несколько сложнейших операций. Искусство врачей и огромная воля Владислава Титова, его неугасимая любовь к жизни в итоге победили «всем смертям назло…» Титов остался жив, но из больницы вышел с тяжелой инвалидностью, хромая, без обеих рук.
  • Microsoft прекращает поддержку Windows 10 Mobile
    0
    аналогично, MS 435 за 3к)
  • IT-эмиграция с семьей. И особенности поиска работы в маленьком городе Германии, когда ты уже там
    0
    Спасибо за статью! Можете подсказать, сколько стоит купить жилье в Германии и насколько реально его купить за зарплату разработчика?
  • Slack банит аккаунты из Крыма
    +1
    А можете объяснить, чем передача данных ФБР, ЦРУ или кому угодно лучше?
  • Переезд с Ubuntu на Windows 10, Hyper-V и избавление от железного маршрутизатора
    0
    дополнительно посоветую Clink для cmd.exe
  • Курс «Введение в Perl» от Mail.Ru Group
  • Учись учиться: непрерывное образование – ключ к конкурентоспособности в эпоху цифровой экономики
    0
    Откровенно говоря, статья ни о чем. Представляю себе хирурга, который за годы учебы обучился только обучаться и по приходу на работу в операционную, не знает что делать, только начинает все изучать как делать — как скальпель держать, как укол делать. В реальности у них постоянно практика, прокачивается база, анатомия, практика на реальных операциях и т.д.

    Если сравнивать с ИТ, то в ВУЗе нужно тоже прокачивать базу — изучать детально сети — напримпер сетевое программирование в Linux на уровне Стивенса, в т.ч. epoll/kqueue
    знать архитектуру БД (MySQL, PostgreSQL), ументь настраивать, уметь писать сложные запросы с оконными функциями, хранимые процедуры, триггеры и т.д.
    должны учить как отлажить программы (не важно, на C, C++, Perl и т.д.)
    и тут можно много пунктов добавить

    И все эти знания не устаревают зачастую 10+ лет. И специалист, который на низком уровне понимает, как работает мультиплексирование ввода-вывода с помощью epoll/kqueue и хотя бы один из высокоуровневых библиотек на их базе, например Perl/AnyEvent, легко разберется в любых других аналогичных библиотеках — Node.js, Python/asyncio, Ruby/Async::HTTP.

    Т.е. вечное самообучение это хорошо, но должна быть еще хорошая база, фундамент, чтобы на него накладывать уже новые знания.
  • Демпинг Маска: миф или реальность
    0
    > Иначе никак нельзя объяснить тот факт, что единственный рыночный конкурент Falcon 9 — облегченный вариант «Протона» фактически закрыт так и не начавшись.

    Можно более подробнее, откуда информация о фактическом закрытии облегченных вариантах «Протона»?
  • Есть ли альтернатива Excel в сфере бюджетирования и бизнес-аналитики
    0
    в Perl 6 ошибки нет, т.к. там есть рациональные числа
    $  perl6 -e 'say 0.1 + 0.2 == 0.3'
    True
  • Позиция — это здорово, но за репосты продолжают сажать
    +2
    А с чего вы взяли, что данные дела заводят только в России — их заводят в по крайней мере семи странах pikabu.ru/story/rossiya_ssha_i_eshche_5_stran_gde_za_postyi_v_sotssetyakh_mozhno_zagremet_v_tyurmu_5643817

    при том за статьи и репосты в facebook, так что…
  • В SpaceX работают над созданием крохотной «подводной лодки» для спасения подростков из пещеры в Таиланде
    0
    В шахтах и тоннелях сразу делают крепи, чтобы порода не обвалилась. Насчет рухнет — почитайте роман Проходчики Владислава Титова — там есть жаргонное шахтерское понятие «Капает» — т.е. обаваливается порода сверху. Если на человека капает, то в лучшем случае инвалидом остается.

    И представьте, какие могут быть крепи в мутной воде…
  • Спасательная мини субмарина проходит испытания
    0
    Спасательная субмарина конечно хорошо, но, насколько я понимаю, она не решает по сути две проблемы
    1) наличие достаточного количества кислородной смеси
    2) проход в узких местах пещеры (а по сути может создать только проблему, т.к. если проплыть в проблемных местах может только человек без баллонов, не исключаю, что эти участки не прямые, где может пролезть субмарина, а искривлены)
  • В SpaceX работают над созданием крохотной «подводной лодки» для спасения подростков из пещеры в Таиланде
    0
    Судя по новостям, они начали бурить сверху, но уперлись в гранитную породу, которую получиться только взрывать, что небезопасно, ибо может пещера с людьми обрушиться.
  • Разборка заводских литий-ионных аккумуляторов формата 18650
  • Программирование на кириллице может повысить производительность
    0
    Программирование на кириллице в Perl: Первый Настоящий Укропопарсер
  • Модуль Net::Ethereum для работы с контрактами Solidity
    +1

    Сейчас обычно рекомендуют File::Slurper

  • Как я написал приложение, которое за 15 минут делало то же самое, что и регулярное выражение за 5 дней
    0
    Реализовал данный пример на Perl — оказалось для простых регекспов с альтарнативами
    /(Ruby|Python|Java|J2ee)/ используется алгоритм Ахо-Корасик (начиная с Perl 5.10.0)

    Реализация на Perl
    #!/usr/bin/env perl -w
    use strict;
    use warnings;
    use feature 'say';
    
    use DDP;
    use String::Random;
    use List::Util qw/shuffle uniq/;
    use Time::HiRes qw/gettimeofday tv_interval/;
    
    use Text::TabularDisplay;
    use Storable;
    
    my @columns = qw/Count PerlRegexp PythonFlashText PythonRegexp/;
    my $table = Text::TabularDisplay->new(@columns);
    
    # generate a random word of given length
    my $string_gen = String::Random->new;
    my @all_words = map { $string_gen->randpattern('c' x (3 .. 8)[int rand 6] ) } 1 .. 100_000;
    
    my @rows;
    for (my $keywords_length = 1; $keywords_length <= 20001; $keywords_length += 1000) { 
      # chose 5000 terms and create a string to search in.
      my $story = join ' ', (shuffle(@all_words))[1 .. 5000];
    
      # get unique keywords from the list of words generated.
      my @unique_keywords_sublist = uniq((shuffle(@all_words))[1 .. $keywords_length]);
    
      my ($t_start, $t_end);
      if ($keywords_length <= 17_000) {
        my %rep = map { $_ => '_keyword_' } @unique_keywords_sublist;
        my $compiled_re = qr/(@{[join '|', keys %rep]})/;
    
        $t_start = [gettimeofday];
        $story =~ s/$compiled_re/$rep{$1}/g;
        $t_end = [gettimeofday];
    
      } else {
        my @data;
        while (my @uniq = splice @unique_keywords_sublist, 0, 17000) {
          push @data, {
            rep => { map { $_ => '_keyword_' } @uniq},
            compiled_re => qr/(@{[join '|', @uniq]})/,
          }
        }
        $t_start = [gettimeofday];
        $story =~ s/$_->{compiled_re}/$_->{rep}{$1}/g for @data;
        $t_end = [gettimeofday];
        
      }
      push @rows, [$keywords_length, sprintf("%.5f",tv_interval($t_start, $t_end))];
      # say sprintf("%6d | %.5f |", $keywords_length, tv_interval($t_start, $t_end));
    }
    
    my %python_rows = (
      1     => [0.01188, 0.0005 ],
      1001  => [0.01347, 0.07646],
      2001  => [0.01381, 0.19431],
      3001  => [0.01370, 0.29055],
      4001  => [0.01381, 0.37468],
      5001  => [0.01407, 0.45641],
      6001  => [0.01418, 0.54225],
      7001  => [0.01425, 0.60971],
      8001  => [0.01449, 0.68178],
      9001  => [0.01484, 0.74831],
      10001 => [0.01478, 0.81751],
      11001 => [0.01497, 0.88625],
      12001 => [0.01496, 0.94201],
      13001 => [0.01512, 0.98292],
      14001 => [0.01520, 1.04620],
      15001 => [0.01551, 1.07280],
      16001 => [0.01553, 1.16832],
      17001 => [0.01611, 1.25071],
      18001 => [0.01581, 1.37876],
      19001 => [0.01585, 2.60501],
      20001 => [0.01600, 2.94057],
    );
    
    push @$_, @{$python_rows{$_->[0]}} for @rows;
    
    $table->add(@$_) for @rows;
    say $table->render;
    



    Результат
    +-------+------------+-----------------+--------------+
    | Count | PerlRegexp | PythonFlashText | PythonRegexp |
    +-------+------------+-----------------+--------------+
    | 1 | 0.00004 | 0.01188 | 0.0005 |
    | 1001 | 0.00131 | 0.01347 | 0.07646 |
    | 2001 | 0.00183 | 0.01381 | 0.19431 |
    | 3001 | 0.00231 | 0.0137 | 0.29055 |
    | 4001 | 0.00303 | 0.01381 | 0.37468 |
    | 5001 | 0.00338 | 0.01407 | 0.45641 |
    | 6001 | 0.00403 | 0.01418 | 0.54225 |
    | 7001 | 0.00462 | 0.01425 | 0.60971 |
    | 8001 | 0.00456 | 0.01449 | 0.68178 |
    | 9001 | 0.00492 | 0.01484 | 0.74831 |
    | 10001 | 0.00495 | 0.01478 | 0.81751 |
    | 11001 | 0.00542 | 0.01497 | 0.88625 |
    | 12001 | 0.00546 | 0.01496 | 0.94201 |
    | 13001 | 0.00571 | 0.01512 | 0.98292 |
    | 14001 | 0.00549 | 0.0152 | 1.0462 |
    | 15001 | 0.00600 | 0.01551 | 1.0728 |
    | 16001 | 0.00624 | 0.01553 | 1.16832 |
    | 17001 | 0.01046 | 0.01611 | 1.25071 |
    | 18001 | 0.00846 | 0.01581 | 1.37876 |
    | 19001 | 0.00864 | 0.01585 | 2.60501 |
    | 20001 | 0.00907 | 0.016 | 2.94057 |
    +-------+------------+-----------------+--------------+



    Графики
    image
    image

  • Начальник, хочу работать из дома
    0

    Кстати, похожее рассказывается в книге Эндрю Гроув Выживают только параноики. Там рассказывается, что изменения в индустрии замечают сначала "снизу" — инженеры, менеджеры. До топов вся информация либо не доходит, либо они не обращают на нее внимание. Т.е. в данном случае проблема в конкретном менеджере

  • Fedora Linux запрещен к распространению на территории Крыма (и временно поломали DNS)
    0

    Судя по всему, проблемы с DNS-зоной у проекта Fedora Project, а не блокировка загрузки в Крыму:


    В настоящее время у Fedora Project наблюдаются проблемы с DNS зоной, поэтому все сервисы проекта могут быть частично недоступны не только в России, но и по всему миру. Специалисты уже работают над решением данной проблемы

    https://t.me/rfrnews/125

  • Функциональное программирование на Perl в примерах
    0

    Спасибо за хороший пример.
    Действительно, на C++ можно проще, но рамках данной статьи хотелось рассказать о замыканиях и лямбдах в более привычных для знающих ООП терминах. В данном случае Perl можно заменить даже на тот же C++, JavaScript, но суть останется той же.

  • Функциональное программирование на Perl в примерах
    +1
    perl не является языком ООП. Разные надстройки позволяют достаточно полно эмулировать ООП, но это только эмуляция, и поэтому я сказал о не совсем корректном сравнении.

    Во-первых в данном случае было сравнение функционального программирования в Perl и ООП в C++. Во-вторых, ООП это парадигма, которая не зависит от языка, и может быть реализована в языках, которые нативно эту парадигму не искользуют (взять тот же GTK, который написан на процедурном C, но при этом является объектно-ориентированным)


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

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


    Веб не очень удачный пример для FP, хотя бы потому, что при рассмотрении отправки запроса и получения ответа как функции, в том смысле, как это подразумевается в FP — эта функция с побочными эффектами. При одном и том же исходом url мы можем получить разный результат.

    на самом деле FP — это не только чистые функции, но и вообще оперирование функциями как значениями (передача функций как параметр, возврат функций)

  • Функциональное программирование на Perl в примерах
    –1
    1. В данном случае было сравнение функционального программирования и ООП, чтобы показать, общее в ООП и в функциональном программирвовании. В данном случае не важно, на каком языке делать с ООП, главное, чтобы он его поддерживал. Например, как и описано в статье, замыкание — это аналог класса, т.е. имеет данные и состояние, либо колбек — это аналог виртуальной функции. Например, если человек знает ООП, но не знает, что такое анонимные функции, замыкания и колбеки, то в данном случае будет более просто разобраться в этих вопросах.


    2. Полностью согласен, что sort/grep/map позволяет работать в функциональном стиле. Вопрос только в том, что блок кода в этих функциях по сути и есть замыкание, просто записаны с использования прототипа map(&@), что позволяет сначала задавать блока кода без sub, а затем массив. Пример, который иллюстрирует, что это и есть замыкание


      perl -MDDP -E 'my @arr = qw/1 2 3/; sub test { my $multiplier = shift;  map { $_ * $multiplier } @arr;} my @nums = test(5); p @nums'

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


    4. Неблокирующее/асинхронное программирование с помощью AnyEvent/EV, Mojo::IOLoop; использование, как вы описали функций sort/grep/map, включая разные модули, например, для работы со списками List::Util, List::MoreUtils. Mojo::DOM/Web::Query — например, в функцию each передается колбек, который выполняется для каждого найденного элемента. В Dancer2/Mojolicious используются колбеки для роутинга, например, пример для Dancer2:


      use Dancer2;
      get '/' => sub { "Hello World" };
      dance;


    «Higher-Order Perl» by Mark Jason Dominus. действительно очень неплохая, и рассказывает о фукнциональном программировании в Perl