• Бинарный поиск в JavaScript. Практический пример
    +5
    И ещё, если мы говорим о производительности, то что в коде делает рекурсия? Итеративный вариант точно будет быстрее, да ещё и от переполнения стека защищён. Тут конечно можно сделать через оптимизацию хвостовой рекурсии, но для этого надо код переписать. Так как есть, ни один компилятор не осилит. Да и не думаю, что хоть один движок js это вообще делает.
  • Бинарный поиск в JavaScript. Практический пример
    +7
    Извините, но пост ужасен. Во-первых, с такими темпами у нас будут статьи «2+2 на JavaScript». Во-вторых, выкладывать код не самого хорошего качества в обучающей статье — плохо.
    Я молчу про однобуквенные переменные с комментом (это же канон плохого коментария, от которого надо избавляться). Но этот код не будет работать с пустым массивом — банально зациклится. Это одна из ошибок новичка, такое студенты на первом курсе пишут и больше такого не делают. Зачем такое публиковать?
    Кроме того, 100 лет как принянто диапазоны делать открытыми справа, то есть не включать правую границу и не писать уродливое data.length -1. В случае пустого получаем -1, а что это за индекс?
    Ну и в качестве придирки. Плохим тоном, хотя и без последствий в js, является вычисление среднего (a+b)/2. Давно придумали писать a + (b-a)/2, чтобы не иметь переполнений. Да, в js всё double и проблем не будет, но ведь потом так напишут на чём-нибудь ближе к железу.
  • Редизайн Хабрахабра и Гиктаймс. Финишная прямая
    0
    Я не один с таким поведением был: https://habrahabr.ru/company/tm/blog/335642/#comment_10362148
    Сейчас шрифты вернулись старые. Претензии к ним снимаются. Но плотность текста из-за интервалов и размера шрифта всё ещё актуальна.
  • Редизайн Хабрахабра и Гиктаймс. Финишная прямая
    +5
    Знаете, первый раз я хочу закрыть хабр и не возвращаться. Шрифты вообще невменяемые. Если сегодня утром они были просто мелкими, то сейчас они мелкие полужирные. Начертание цифр невменяемое, 1 вылазит за пределы, как в падонкаффском сленге. Я нЕ хОчУ ЧиТаТь ЭтИ зАбОрЧиКи. Интервалы — п#z$@ц, границ между блоками вообще не видно. Где комментарии, где пост, не понять.
    Плотность информации упала в разы — читать по диагонали стало невозможно, а точнее не даёт прироста скорости. Похоже буду читать хабр не на сайте, а через агрегаторы, а если не получится, то ну нахер.
    P.S. Пока писал жирность пофиксили, но всё так же плохо читается.
  • Эти токсичные, токсичные собеседования
    +5
    Без знаний вам даже в голову не придёт, что вам нужно умножать матрицы. Я видел код, где из двух матриц трансформации вытаскивались компоненты сдвига и скейла, чтобы просуммировать руками и создать из них матрицу. В то время как надо было просто перемножить исходные. Это проще, это быстрее писать, быстрее работает. Или поиск минимума через сортировку массива. Такое сплошь и рядом, но это же полный бред. С точки зрения абстракций всё хорошо, так как очень мало кто включает алгоритмическую сложность в свой интерфейс.

    Абстракции это очень важно, но это два ортогональных навыка: абстракции программирования и математическая подготовка.
  • Эти токсичные, токсичные собеседования
    +1
    А я нигде и не писал про знание алгоритмов. Алгоритмические задачки они именно про мышление, а не знание. Чтобы написать бинарный поиск или какую-нибудь сортировку нужно именно мышление. А за одно и проверка опыта обработки краевых случаев, знания известных проблем (все возможные переполнения и выходы за границу). Такие алгоритмы выявляют массу проблем, которые будут встречаться в коде.
  • Эти токсичные, токсичные собеседования
    –5
    Видите ли в чём дело, обычно не перемножают. А того, кто этим занимается каждый день, нужно спрашивать более сложные вещи. Проблема часто не может быть решена на том уровне, на котором создана. То есть квалификация кандидата должна быть выше, чем уровень повседневных задач. Кроме того это индикатор общих и частных знаний — насколько глубоко человек погружается в ту или иную тему, на сколько интересуется смежными. Умножение матриц действительно считаю минимальным возможным знанием в геометрии и алгебре. Так же как и геометрический смысл и идею аффинных преобразований. Неспециалисту не надо влёт писать матрицу хитрой трансформации, но хотя бы представлять, как это работает.

    С большинством проблема — оно создаёт стереотипы и ожидания. И такие вот статьи укрепляют стереотипы, что можно особо не учиться и пойти работать, обесценивают высшее образование и тд и тп. Может вместо выкидывания вопросов из собеседования лучше просто поднять общий уровень и научить решать эти задачи? Может так мы поднимем общее качество софта, которым пользуемся?
  • Эти токсичные, токсичные собеседования
    –7
    <holywar>
    

    Ну вот опять 25. Почему все постоянно пишут, что алгоритмы никому не нужны. Если они не нужны вам, чтобы делать сайтики, то это не значит, что они не нужны никому. Я вот ни за что не возьму на работу человека, у которого есть высшее профильное образование, а он не знает, как оценить сложность алгоритма сортировки. Или высшее математическое без умения перемножить две матрицы на доске. Оба этих навыка мне нужны примерно раз в месяц, то есть постоянно. Отсутствие базовых навыков говорит о полном нежелании разбираться в том, как всё устроено.
    Ну и логические задачки тоже могут быть полезны. Далеко не всем и не везде, но обычно в команде нужен хотя бы один круто соображающий человек для решения нестандартных проблем. Дебаг редко воспроизводящегося бага — очень сложная логическая задача, иногда нужны не инструменты и опыт, а просто мозги. Разумеется опыт первичен, а алгоритмы и логика вторичны, если вам нужен работник прямо сейчас. А вот для джунов всё наоборот — можно научить умного интересующегося человека, но раскачать логику «опытному» программисту на грани невозможного.
    </holywar>
    
  • У Mozilla есть план, как победить Chrome. Встречайте Firefox 57 и боевую лисичку в броне
    0
    Это опера 12 тормозит? JS может быть, но рендер там самый быстрый. На слабых компах хром до сих пор может адски тормозить при обычном скроле, когда в фоне грузится десяток страниц. Это мой основной кейс гугления: открыть в фоне всю первую страницу выдачи и идти по вкладкам. Так вот опера не тормозила в этом случае никогда. Это ещё и единственный браузер, который начинал отображать текст страницы до полной загрузки — на медленном интернете это must have фича. И единственный браузер, который мог выравнивать страницу по ширине, что было следствием своего движка. А хром так не умеет.
    Свой движок — свои фичи, а хромоклоны вообще все одинаковые.
  • Типы struct, union и enum в Modern C++
    0
    Отредактировано
    Вероятно нужны ещё скобочки, чтобы вызвать функцию на созданном объекте:
    double z=Add{ .y=20, .x=10 }();
    

    Перепутал оператор double с оператором (). Вот такое приведение кажется опасным. Ещё никогда операторы неявного приведения до добра не доводили.
    Но выглядит очень круто, никогда не смотрел на именованные аргументы с этой стороны.
  • Межпланетная программа SpaceX: подробный разбор ЖРД «Raptor»
    0
    Непонятно, как они собрались ставить рапторы на Falcon 9. Он точно не будет дросселироваться до уровня минимальной тяги мерлина, слишком уж мощный. Как возвращать ступень? Или они поставят один маленький раптор специально для посадки?
  • Списки инициализации в C++: хороший, плохой, злой
    +4
    Правила перегрузки со списками инициализации вообще безумные. То, что один элемент списка приводит к поиску других конструкторов, регулярно ломает код. Например:
    struct InitMap {
      using Map = map<string, string>;
      InitMap(Map m) {}
    };
    InitMap m({{"k", "v"}});
    

    Компилятору непонятно, то ли конструктор копирования звать, то ли конструктор от map. Добавляем «пустой» элемент:
    InitMap m({{"k", "v"}, {});
    

    И всё работает. Самая магия, что вариант
    InitMap m({{string("k"), "v"}});
    

    Работает, а приведение обоих элементов нет:
    InitMap m({{string("k"), string("v")}});
    

    Это всё объяснимо и после поллитра, а то и больше, даже понятно. Но лучше бы не усложняли инициализацию. Задача сделать универсальную инициализацию на все случаи жизни так и не решена. Куча мест, где в шаблонах нельзя бездумно написать {}, иногда ещё и две версии приходится делать.
  • Элементы функционального программирования в C++: композиции отображений
    +1
    Спасибо за статью. Интересно.
    Не совсем понятен вопрос, в чём преимущество перед диапазонами? Вы сами про них упоминаете, но в чём их минусы? Почему бы не пользоваться ими?
    Там компонуемость лучше, написание функций проще и без макросов. Тот же пример из документации:
    std::vector<int> vi{1,2,3,4,5,6,7,8,9,10};
    using namespace ranges;
    auto rng = vi | view::remove_if([](int i){return i % 2 == 1;})
                  | view::transform([](int i){return std::to_string(i);});
    // rng == {"2","4","6","8","10"};
    

    Ничто не мешает пользоваться ими уже сейчас. Да, не в std, но ranges-v3 уже работающая header-only имплементация. Принести её в проект ничего не стоит.
  • Какой map быстрее, и есть ли альтернатива Judy
    0
    А как же сравнение с недавним лидером: https://habrahabr.ru/company/mailru/blog/323242/
  • Спросите Итана: откуда нам известно, что Земля не плоская?
    0
    Предложите конфигурацию атмосферы, которая так делает. Максимум, на что способна наша — сплющивать луну у горизонта. Что-то мне подсказывает, что любые искажения атмосферы будут сжимать или тянуть солнце по-вертикали, но не будут влиять на горизонталь. Даже если Солнце в атмосфере земли. Для одного наблюдателя ещё возможно загнуть атмосферу, но не для всей же поверхности Земли.
  • Спросите Итана: откуда нам известно, что Земля не плоская?
    +1
    И получить разные результаты в разных городах. При чём несовместимо разные.
  • Спросите Итана: откуда нам известно, что Земля не плоская?
    +2
    Отвечу сразу нескольким сомневающимся по поводу большого Солнца и параллельности лучей. Самое очевидное: Солнце имеет одинаковые размеры везде. То есть перемещения по земле вносят очень маленькие изменения относительно расстояния до Солнца. Если же пытаться объяснять тени близким солнцем, то там могут получаться очень маленькие расстояния (обычно говорят про 6000км), что даст измеримые отклонения размеров солнца в зависимости от его положения на небе и места наблюдения.
    Есть и друге подтверждения, например, наблюдение солнечных пятен, тонкие измерения расстояние до Луны, а Солнце точно дальше и тд и тп.
  • Спросите Итана: откуда нам известно, что Земля не плоская?
    +6
    Этот аргумент сам по себе не доказывает шарообразность, это просто очередное подтверждение. Не могу ручаться за точность, но трёх замеров достаточно, чтобы отличить плоскую землю с маленьким солнцем, от большого далеко удалённого солнца. В случае сферической земли высота солнца линейно зависит от расстояния до экватора, в случае плоской тангенциальная. Трёх замеров достаточно чтобы отличить линейную от нелинейной зависимости. У меня были данные по Москве, Кирову и Ялте. Да, расстояния между ними я сам не измерял, но теория заговора отсекается бритвой Оккама.
    Против плоской земли набрать доказательств можно ещё немало: наблюдать полярную ночь и перелететь южнее, где её нет (в личном опыте не совсем полярная ночь, но очень большая разница продолжительности суток). На плоской земле вообще не может различаться продолжительность дня. Что действительно сложно, так это доказать, что земля не является изогнутой лентой, тором, ещё какой-нибудь сложной формой, а именно геоид.
  • Спросите Итана: откуда нам известно, что Земля не плоская?
    +3
    Вы знаете, я потратил около двух лет на сбор собственных доказательств, что земля — шар. Среди них: замеры высоты солнца в известных мне городах в дни солнцестояния, наблюдения лунного затмения, замеры высоты полярной звезды, наблюдение траекторий звёзд, и что важнее, планет. Это что касается лично проведённых наблюдений. Кроме того: разговор по скайпу с человеком из другого часового пояса, вплоть до противоположного, а на плоской земле невозможна разница в 12 часовых поясов. Примерно так же дошёл до трёх законов Ньютона. С всемирным тяготением сложнее, там скорее подтверждения, чем доказательства
    Века до 18 можно дойти самому, дальше сложнее, можно проверять только выборочно. Но даже проверка неравенства Белла доступна любому желающему.
  • Виртуальность и оверхед
    +2
    Может быть буду непопулярен с таким мнением, но: и что? Если мы не на эмбедед железе, то какое нам дело до размеров виртуальной таблицы? На скорость это, конечно, влияет, но как сильно? Интересно было бы посмотреть на бенчмарки, желательно из реального кода, где кроме вызовов есть что-то ещё. Порог скорости при переходе с невиртуального вызвова, который потенциально инлайнится, на виртуальный мне понятен. А как влияет размер vtbl угадывать не возьмусь.
  • Комментарий из публикации, перенесённой в черновики.
  • Комментарий из публикации, перенесённой в черновики.
  • Комментарий из публикации, перенесённой в черновики.
  • Комментарий из публикации, перенесённой в черновики.
  • Комментарий из публикации, перенесённой в черновики.
  • Комментарий из публикации, перенесённой в черновики.
  • История SMS: как передать текст по голосовому каналу
    0
    О.П.С.О.СОВ

    Не совсем по теме, но как вы это расшифровываете? Я знаю ОПераторов СОтовой Связи. А какой смысл вы вкладываете в эти буквы с такой расстановкой точек? Не троллинг и не придирки, действительно интересны альтернативные варианты.
  • Если стоять на эскалаторе метро в два ряда, его пропускная способность увеличивается на 31%
    +5
    Edit: уже ответили выше, пока писал свою портянку, но всё же оставлю.
    Отвечу, как человек, иногда открывающий на себя. Никогда так не делаю в толпе, да там и не надо, дверь просто постоянно открыта на выход и нескончаемый поток удерживает её. Когда людей совсем нет, то тоже проще открыть от себя. А вот когда поток разрежен, то всегда подходишь к двери-маятнику, который запустил предыдущий. И в зависимости от фазы этих колебаний проще либо толкнуть, либо слегка придержать дверь. Какой смысл закрывать дверь, а потом открывать от себя, если она уже открыта, пусть и на себя? Точно так же дверь часто открыта перепадом давления, и закрыть её не так просто, а потянуть на себя легко.
  • Какие игры запустятся на системнике за 3000 рублей? Покупаем и тестируем с Playkey
    +9
    Что за бред? Современные игры упёрлись в интегрированную графику, это и без тестов понятно. Воткнули бы хоть что-нибудь дискретное, пусть даже за 500р и уже получили бы прирост FPS. А так взяли не пойми что, везде поговорили про проц и закончили тем, что можно играть в героев 3. Наглая реклама.
  • Определены два возможных места посадки марсохода программы «Экзомарс»
    +2
    Марсоход европейский, прэтому и источники питания европейские. Российского в шасси марсохода ничего нет, а у ЕКА вообще нет РИТЭГов. Да и нет ничего плохого в панелях — опортьюнити уже сколько рекордов поставил, а всё катает.
  • Я должен знать, о чём ты думаешь: прозрачность мышления ИИ как необходимое условие
    0
    Сколь угодно точно == так точно как кому-то угодно == с точностью до любого заданного эпсилон. Любое измерение представимо рациональным числом с любой заданной точностью. Даже если измеряемая сущность иррациональна мы можем сколь угодно точно приблизиться к ней.
    Просто возьмите их определение из вики — оно такое, как вы и хотите.

    Иррациона́льное число́ — это вещественное число, которое не является рациональным

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

    Лихо вы к квантованию пространства перешли! Трактовать Зенона можно очень по разному. И мне кажется, что он просто показал, что нельзя говорить о полёте стрелы просто как о моментах нахождения стрелы в заданной точке. Иначе в каждый момент времени стрела стоит и никогда не долетит. Про это ещё Аристотель говорил.
    Пределы решают проблему полностью, потому что спокойно позволяют просуммировать ряд по времени и показать, что величина конечна и «Ахиллес обгонит черепаху». Просто во времена Зенона не могли и подумать о суммировании бесконечного числа величин и получении конечного результата.
  • Пробуем делать web-frontend на Rust (WebAssembly)
    0
    Сборка мусора в планах, но в основном для взаимодействия с JS. https://github.com/WebAssembly/design/blob/master/GC.md
    Сейчас модель памяти сишная, то есть без сборки мусора, но с указателями и адресной арифметикой.
  • Что приняли в C++17, фотография Бьярне Страуструпа и опрос для C++20
    0
    Долго гуглил, но так и не смог понять: какой из вариантов корутин обсуждается? Было два: бустовый и microsoft'овский, и точно были холивары, который лучше и правильнее. Будут у нас слова co_async, co_await или нет?
  • Сложности при создании изометрической игры в Unity
    0
    Если вам нужна глубина в сцене, то забудьте о батчинге.

    Вот за это я и не люблю Unity (и все подобные комбаины «для простого старта»). Нет никакой проблемы батчить изометрию. Знаю проект, где вообще за 2 draw call'а сцена на 10 000 изометрических спрайтов с анимацией рисуется. Там безумное перекрытие объектов друг другом (over draw > 70). Но это всё оптимизируется и выпиливается, в итоге нет никакого over draw, нет тысяч вызовов. Одна проблема — этот подход требует скилов и очень гибкого движка. В случае с юнити единственный выход — уйти в C++, получить контекст и нарисовать всё самому. Но если так рисовать всю игру, то зачем вообще фреймвёрк?
  • Все программисты попадают в #ТАЙ
    0
    Ну как бы уже не остался.
    Задачи «на логику» сами должны быть чёткими и логичными. Потому что без внесения достаточного уровня абстракции они просто не работают. Невозможно идти постоянно на северо-восток: кроме гор и морей мы упрёмся ещё и в дискретность шага. Если корректировки очень редки, то можно вообще никогда не остановиться. Математика это не влезание в голову к спрашивающему, а работа только своей.
    Общение с заказчиком это не головоломка, не математическая задача, это совершенно ортогональный навык. Там как раз наоборот требования нелогичны и противоречивы и часто вообще не соотносятся с тем, что действительно удовлетворит потребности. И безполезно лезть в голову к кому-либо, там всё равно ответа нет. Его надо создать.
    А «кодер» как раз ищет наиболее простое логичное решение в задаче. Например, (A, B) = (B, A), потому что «в моём языке так можно».
  • Обзор умного увлажнителя воздуха REDMOND SkyDew 3310S с выходом в Интернет
    +2
    1) 5 литров на 80 квадратов
    2) датчик влажности на самом увлажнителе *facepalm* Он стабильно на 30-40% больше показывает. Так можно термометр на батарею вешать и по нему регулировать.
    Это не увлажнитель, это красивая коробка для продажи. Ему нужен бак минимум втрое больше (заправлять раз в день), вентилятор для сдувания тумана (иначе оседает вокруг и ничего не увлажняет), нормальный протокол, по которому можно подключиться к действительно умному дому. Тогда может быть будет юзабельно.
  • Все программисты попадают в #ТАЙ
    0
    Формулировка задач страдает от недосказанности и неточности. Что такое переменная и «классическая математика»? В математической нотации все значения неизменяемы. Может вы хотели ограничиться простыми арифметическими операторами +-*/ и императивным ЯП?
    Что такое идти на северо-восток? У этого понятия есть 2 трактовки: выбрать направление и идти, не сворачивая; и ваш вариант с непрерывной корректировкой. Про магнитный полюс тоже уже написали выше.
  • Неокоммунизм. Теоретическое обоснование
    +1
    Вы не исправили основную проблему коммунизма — стабильность. Её нет. Небольшое количество хитрых и наглых будут всё так же добиваться своих целей. Партийный аппарат и состав номенклатуры в СССР это превосходно демонстрирует. Любую утопию надо строить с вопроса, а устойчива ли она (по Ляпунову), что будет если её расшатывать? Современное общество (капитализм, как вы называете) безумно устойчиво в плане структуры. Это не удивительно, ведь динамические системы часто стремятся к равновесию (циклы и автоколебания вокруг сложный вопрос, требующий детального анализа).
  • Локализация Unity-игры на хинди
    0
    Он не такой и сложный. По крайней мере читать научиться можно быстро. Про разговор не знаю, я только читал и писал :), что всё это значило понятия не имею. Мы, между прочим, их цифрами пользуемся. Видоизменёнными кончено, но вот как выглядят их цифры сейчас: ० १ २ ३ ४ ५ ६ ७ ८ ९
    Кое-что вывернуто, но вполне читаемо.
  • Локализация Unity-игры на хинди
    +2
    Занимался как-то тем же самым. Только у нас ещё и bitmap шрифты были. То есть надо было все возможные графемы затолкать, а потом рендерер научить их мёржить. Как до, так и после этой работы, считал, что никогда не надо писать свои рендереры шрифтов. Да, мы добились успеха и многие подтвердили, что рисуем правильно, но невозможно забыть тот месяц, когда хинди стоял третьей раскладкой клавиатуры в системы на равне с RU и ENG. Там же каждая гласная может модифицировать написание предыдущей согласной, (и) меняет порядок, (р) хоть и согласная, но умеет сливаться с другими согласнымии и с самой собой. Как оказалось, word неправильно рисует длинные последовательности из этой (р), да и вообще ошибки много где нашлись, видимо потому, что в языке не встречается.
    По этой причине мне кажется, что подход с фиксированной таблицей в статье не может работать. Общее количество возможных лигатур в деванагари колоссально, их надо уметь рисовать на ходу. Та же шапочка у (и) вообще-то имеет очень много разных длин, так как она относится к слогу, и между ней и согласной может быть ещё пачка графем. Хотя на это обычно забивают.
    Вариативность у (р) с отсечением матры (|) вообще безумная и часто своя для каждой пары.
    Это, кстати, оказалось даже рентабельно. Индусов много.