• Линус Торвальдс объяснил, почему он не будет покупать Mac на чипе M1
    0

    Поэтому основные действия должны висеть на тач баре в интерактивном режиме. А Fn — только если не хватило места.

  • Линус Торвальдс объяснил, почему он не будет покупать Mac на чипе M1
    0

    Ах да ещё хорошая новость для тех кому не хватало комбинаций с шифтами и F-ми: F клавиши никуда не делись и появляются при нажатии Fn; таким образом, тач бар не отменяет все старые комбинации а, по сути, добавляет новые (ранее модификатор Fn давал доступ к бесполезным в IDE мультимедийным клавишам)

  • Линус Торвальдс объяснил, почему он не будет покупать Mac на чипе M1
    +1

    Я тоже так думал, но недавно купил новый мак и оказалось, что если IDE полноценно поддерживает touch bar, то это дело привычки. Я пользуюсь Rider и в общем-то пропажи клавиш не заметил, стало даже удобнее: вместо ничего не значащих F-ок теперь понятные иконки и кнопки с нормальными подписями, которые меняются в зависимости от контекста и прожатых клавиш-модификаторов. Единственное что я заметил из минусов — это 1) нестабильная работа touch bar в условиях некачественной электросети (наблюдал только в поезде такое) и 2) на 13-дюймовой модели с маленькой клавиатурой кнопки на таче поначалу нажимаются непреднамеренно из-за случайно положенных на них пальцев (через месяц я таки привык не складывать пальцы куда попало).


    https://www.jetbrains.com/help/rider/Touch_Bar_Support.html

  • Один день удаленного тимлида на бэкенде
    +5

    Вот вы вроде бы все верно пишите и так можно работать, но мне кажется слишком многое получается завязанным на вас. Мне в своё время сказали одну фразу, которая сильно изменила мои приоритеты: «работа тим лида заключается в том, чтобы организовать процесс разработки таким образом, который не требует наличия тим лида»

  • «Пилите, Шура, пилите», или Как мы с другом устроили кондиционеру полный краш-тест
    +1
  • Меня перевезли в другую страну и через две недели выставили на мороз — потому что передумали нанимать
    +5

    Отличный пример продуктовой компании которая «попадает» под все ваши критерии это Google.


    // sarcasm off
    Не надо так — продукты разные бывают.

  • Ошибки, вода в описаниях, опыт работы: на что на самом деле рекрутеры обращают внимание в резюме разработчиков
    +1

    Есть три вида лжи: ложь, наглая ложь и статистика.


    Статья вроде бы про резюме, а статистика почему-то приведена на основе успешного прохождения собеседований и получения оффера. Как же так-то? Резюме ведь не влияет на успешность прохождения интервью где отсеивается большинство кандидатов...

  • Хорошо забытое новое: Falcon Acoustics возрождает DIY-акустику и продаёт колонки-конструктор за 150 000 рублей
    +1

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


    Скорей похоже на психологический трюк как пишут выше.

  • Сервисные центры Apple «отремонтировали» Macbook клиента на $10 000. Оказалось, что ноутбук и не ломался
    0

    Знакомо, в таком случае это действительно может не быть проблемой поддержки.


    У меня в один прекрасный день начала отключаться клавиатура: печатаешь, печатаешь и вдруг — рраз! — клавиатура не реагирует ни на какие клавиши до перезагрузки, как будто шлейф отошёл. Такое происходило раз в неделю. Мой мак был утопленником и я долгое время думал что это проблема железа, тем более что некоторые «бесполезные» клавиши не работали в принципе.


    Я начал что-то подозревать только после покупки нового мак — железо новое, софт поставлен с нуля, а проблема осталась. И лишь спустя несколько недель я понял что это происходит когда я слишком активно нажимаю «комбинации с шифтами». В этот момент стало почти очевидным что виновник торжества — Karabiner — утилита позволяющая переназначать клавиши — так, у меня caps lock работает как шифт, а капс включается одновременным нажатием двух шифтов — мне так удобнее не смотря на редкие отключения клавиатуры. Пришлось смириться.

  • Продвинутое велосипедостроение или клиент-серверное приложение на базе C# .Net framework
    +4

    В следующий раз все же попробуйте asp.net core — он отлично умеет работать в режиме Web API. У вас будет из коробки полноценный пайплайн обработки запросов, в почти любое место которого можно встраиваться (например, для валидации или авторизации запросов), логгирование, обработка ошибок, интеграция с популярными фреймворками и т.п.


    После этого можно пробовать EF и классическую трехслойную архитектуру


    https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-web-api?view=aspnetcore-3.1&tabs=visual-studio

  • Совершенный цикл for
    0

    Ну сопрограммы в что-то такое и компилируются :) Именно это я и имею в виду под сложностями для оптимизатора — ему теперь надо понимать что это временный объект чтоб полностью убрать его из GC (не уверен что оптимизатор вообще такое умеет)

  • Совершенный цикл for
    0

    Я в общем-то имел в виду не то что LINQ медленный, а то, что переход на функциональщину (генераторы, иммутабельность, алгебраические типы, и т.п.) может при правильном применении упростить код, но (обычно) негативно сказывается на производительности, т.к. у оптимизатора появляется сильно больше работы. Ну и синтаксис С++ не позволит эти вещи использовать «удобно» (в том же расте тут все сильно лучше). Опять же, оптимизатор, возможно, сможет перелопатить функциональщину, но это нужно проверять «отдельно» — за читабельность и удобство отладки приходится платить.


    Ну а что касается LINQ в шарпе — с ним не все так плохо — за ~20% замедления код получается намного более читабельным. К тому же, LINQ в шарпе реализует генераторы, а не итераторы/ренжи — по сути, это монада List из хаскелл — многие операции LINQ позволяют работать с “бесконечными” последовательностями. Исключение составляют операции требующие полной материализации (например, OrderBy). Соответственно, LINQ реализован поверх ко-процедур, а не поверх итераторов, что и даёт накладные расходы (точнее, усложняет работу оптимизатора).

  • Как мы внедрили скрытие аккаунтов в Telegram или #ДуровДобавьДвойноеДно
    0

    Можете попробовать что-то типа этого: https://www.veracrypt.fr/en/Hidden%20Volume.html


    Вкратце — у вас будет зашифрованный диск с двумя разными паролями. Один пароль даёт доступ к «фейковому» диску/ОС, другой к скрытому разделу с реальными данными. Доказать наличие скрытого раздела не зная от него пароль — невозможно, т.к. до расшифровки данные (включая заголовки разделов) выглядят случайным шумом и неотличимы от просто пустого пространства, которое также заполняется случайным шумом.


    По идее, можно иметь несколько вложенных скрытых разделов — чтоб демонстрировать «верхние слои» по требованию.

  • Совершенный цикл for
    +8

    / sarcasm
    В 2020 должна быть функциональщина с хвостовой рекурсией вместо цикла
    /


    Ну а если серьезно — зависит от требований и контекста. Если не нужна оптимальная производительность, то можно действительно использовать функциональщину или что-то типа LINQ из С# аля method chaining (не знаю, завезли ли такой синтаксис в плюсы уже наконец-то). Если производительность таки важна, можно попробовать вынести циклы выше 3-го уровня вложенности в отдельную функцию, в надежде что умный компилятор все заинлайнит. Желательно вынести так чтоб это ещё и имело какой-то «физический смысл», тобишь было очевиден новичку в проекте.


    Ну и да, я лично целиком поддерживаю ваше желание убрать «лишние буквы» — чем меньше букв тем проще читать код (обычно, бывают исключения).

  • Как «правильно» блокировать T*******
    +18

    «работа с населением», «профилактика дезинформацией», «переключение внимания», «ловушки», «ограничение доступа в Интернет», «лицензии на ВПН»...


    Александр/Владимир/Ким — перелогиньтесь

  • Почему Rust должен стать функциональным языком программирования
  • Заряжаем обычные батарейки
    +1

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


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

  • Заряжаем обычные батарейки
    +15

    Про плющить это вы зря — оно работает (в ограниченном объёме — например может помочь с временным оживлением пульта ДУ). Я к сожалению не вспомню формулы, но отчётливо помню как нам на термодинамике/физфак объясняли почему это работает.

  • Медуза, паспорта и говнокод — почему номера паспортов всех участников интернет-голосования попали в Интернет
    +1
    Спросить у пользователя? Он ведь знает свое ФИО и дату рождения…
  • Быстрый поиск без индекса
    0

    Бинарный поиск это отлично если данные полностью отсортированы. Вот только они не отсортированы. Даже несмотря на то что записи не пишутся задним числом нету ни какой гарантии что даты будут монотонно возрастать. Если не стыке дня/секунды два инсерта в базу прилетят одновременно даты вполне себе могут оказаться в неправильном порядке. ИМХО тут бага

  • Магические сигнатуры методов в C#
    0
    нуу… может вы и правы :)
  • Магические сигнатуры методов в C#
    0
    Наверное RealProxy. Он работает на черной магии которая реализована неизвестным способом — реализация упирается в intrinsic RemotingServices.CreateTransparentProxy (реализация этого метода неизвестна науке и, похоже, является встроенной в язык). К тому же его не очень удобно использовать бывает.

    Поэтому из не-майкрософт кода его вроде как вытеснил Castle DynamicProxy, который хоть и сложный, но работает на понятных механизмах (Reflection.Emit). В будущем наверное появится что-то основанное на Roslyn, все-таки «компилировать на лету» сильно удобнее чем вручную эмиттить IL через Reflection как это делает Castle.
  • Магические сигнатуры методов в C#
    +7

    Ещё есть CallerFilePathAttribute и его друзья — неявно передают в строковый параметр метода путь/строку исходного файла из которого метод вызван. Бывает полезно иногда (например вернуть строку упавшего ассерта в тестах)


    Ещё более злая магия — интерфейс (не помню название) который позволяет в рантайме решить какие «методы/свойства/итп доступны у объекта». В сочетании с dynamic keyword позволяет вызывать такие методы как будто бы они объявлены в классе на этапе компиляции. Классический пример ExpandoObject. Это конечно уже совсем злая магия перед использованием которой надо сто раз подумать.


    А ещё используя Roslyn можно компилировать и выполнять выражения на лету (как eval в js только лучше, т.к. позволяет корректно пробросить «контекст»). Тоже из серии злой магии.

  • Вид космоса из субсветовой ракеты. Фото субсветового объекта. Вывод аберрации света без преобразований Лоренца
    +2

    Поиграйте в бесплатную игру/демку “A Slower speed of Light” от MIT (который университет). Вам понравится.


    https://en.m.wikipedia.org/wiki/A_Slower_Speed_of_Light

  • Революция в связи? Новый подход позволяет экономить полосу в 100 и более раз при аудио и видеозвонках
    +1

    Вот почитайте https://m.habr.com/ru/post/446656/

  • Mail.ru Group останется на «удалёнке» до конца лета
    +1

    Ладно это был бы блог мейл.ру, но это «редакция хабра». Ребят, вы там совсем продались что ли? Или может писать больше не о чем?


    Все нормальные компании работают удаленно сейчас, некоторые даже явно запрещают в офис приходить. Зачем об этом писать?

  • Неудачная статья про ускорение рефлексии
    0

    Я правильно понял что вы по сути делаете метод типа


    _sqlConnection.ReadVector(«select field1, field2 from table») // returns MyEntity[]

    Пара уточняющих вопросов


    • а почему не использовать EntityFramework/NHibernate/другой ORM который такое делает сам?
    • сколько у вас записей — вам точно нужна оптимизация? Если вы вытягиваете «тысячи/миллионы» записей, возможно вам нужен другой механизм типа user-defined sql types для ms sql (позволяет передавать в базу массивы объектов, на запись в базу точно быстрее, насчёт чтения не уверен)
  • Неудачная статья про ускорение рефлексии
    0

    Ну как бы из базы надо читать в DTO и уже из него мапить. Чтоб сложить в DTO строки не нужны, потому что SqlDataReader умеет читать по номеру запрошенной колонки (вы ведь знаете какие вы колонки запросили).


    А если так делать лень и всё-таки хочется строки — то надо Dictionary для имён использовать а не обходить все подряд через FirstOrDefault.

  • Неудачная статья про ускорение рефлексии
    +3

    О какой скорости может идти речь если у вас там строковые сравнения имён свойств повсюду? Если уж кешировать, так кешируйте


    Dictionary<Type / source type /, Dictionary< Type / destination type /, Func<object, object> / transform / >

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

  • Анализ зашифрованного трафика без его расшифровки
    +5

    Если из названия статьи убрать «зашифрованный трафик» и заменить его на «косвенные признаки», а также убрать весь этот пафос из текста, то статья наверное была бы интересной. А пока что это маркетинговый булшит :((


    В результате работы системы, мы можем достать данные из зашифрованного трафика.

    Seriously???

  • Да мой старый laptop в несколько раз мощнее, чем ваш production server
    +1

    Ах да, это десктопная штука, которую придумали чтоб пользователи могли ускорять инсталляторы рисуя на экране бесконечные восьмерки :)


    На серверах эта магия обычно выключена. Помните настройку «отдавать приоритет фоновым процессам»? — она вот как раз про это (кроме всего прочего)

  • Да мой старый laptop в несколько раз мощнее, чем ваш production server
    +1

    И не только в Хроме. Windows динамически повышает базовый приоритет процессов который получают активный input. Пруф: https://docs.microsoft.com/en-us/windows/win32/procthread/priority-boosts


    В «обычной» обстановке вы это вряд ли заметите, но вот если в результате такой динамической приоретизации какие-то потоки станут time critical (приоритет 31), тогда вы уже можете (теоретически) увидеть разницу на глаз. Потому что time critical это не просто «высокий» приоритет, это наивысший приоритет — потокам time critical отдаётся всё процессорное время, которое есть; отправляя остальные потоки отдыхать «за свой счёт».


    Посмотрите на ютубе доклады CLRium если хочется больше подробностей, там хотя и про .NET, но многое справедливо для Windows в целом.

  • Откажутся ли компании от удаленки по окончании вынужденного периода?
    –2
  • Согласованная позиция
    0

    Работает — анализирует вифи сети поблизости вроде. У меня ноут себя с точностью до дома находит.

  • ИИ сущестует, но это совсем не то что мы думали?
    +2

    Я давно знал: это не программисты пишут программы — это программы пишут сами себя посредством программистов!

  • Анализ данных по коронавирусу SARS-CoV-2 (2019-nCov)
    +1

    Вот статья об этом сайте от его автора


    https://m.habr.com/ru/post/486544/

  • Анализ данных по коронавирусу SARS-CoV-2 (2019-nCov)
    0

    Все уже сделали за вас :)


    https://coronavirus2020.live/

  • Hack The Box. Прохождение JSON. Уязвимость в Json.Net и LPE через SeImpersonatePrivilege
    0

    Ах да. Эта статья про конкретный учебный взлом, а не про десериализацию в целом. Это, впрочем, не до конца очевидно из заголовка. Автор мб подправит, хотя я б оставил как есть — мне был не очень интересен конкретный взлом а вот статьи про десериализацию (достаются по ссылкам) зацепили.

  • Hack The Box. Прохождение JSON. Уязвимость в Json.Net и LPE через SeImpersonatePrivilege
    +1

    Мне кажется основная идея в том что сериализация работает не так просто как мы думаем (или «не думаем» на автопилоте — доверяясь авторам библиотек). Особенно, если десериализатор поддерживает полиморфизм и может поднимать «произвольные» типы которые, в свою очередь, могут делать что-то эдакое при десереализации, вплоть до выполнения какого-то кода; такие типы есть среди стандартных и могут реализовать «безобидные» интерфейс типа IDictionary.


    Уязвимый код может выглядеть на первый взгляд невинно: https://docs.microsoft.com/en-us/visualstudio/code-quality/ca2300?view=vs-2019


    Вот тут больше ссылок для чтения:
    https://github.com/pwntester/ysoserial.net/blob/master/README.md#additional-reading

  • Перемещение — прошлый век! Альтернативы std::move в «C++ будущего»
    +3

    Ну про возможность написать свои правила это вы загнули — для этого в с++ инфраструктуры в общем-то нету. Сравните с тем же C#, где дополнительные анализаторы кода устанавливаются автоматически с библиотеками, автоматически подсвечивают ошибки в IDE, запускаются при сборке, блокируют сборку в случае обнаружения проблем. Вот, например:


    1) https://github.com/xunit/xunit.analyzers/blob/master/README.md (список диагностик: http://xunit.net/xunit.analyzers/rules/)
    2) https://github.com/Suchiman/SerilogAnalyzer/blob/master/README.md


    Работает это через Roslyn, который по сути compiler-as-a-service докрученный до состояния когда в него можно добавлять плагины просто зарефернсив их. В с++ такое в некотором объёме умеет clang, но он не часть стандарта, да и по юзабилити ему далековато вроде бы.