По умолчанию, при передаче в метод или при возврате из метода, экземпляры значимых типов копируются, когда как экземпляры ссылочных типов передаются по ссылке. В 2008 году была выпущена книга «Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries». В этой книге рекомендовалось не использовать структуры размером больше 16 байт, поскольку, очевидно, структуры большего размера копируются медленнее. Несмотря на то, что прошло уже 16 лет, в сообществе C# разработчиков до сих пор популярно мнение, что производительность структур размером больше 16 байт хуже. Даже Google на запрос «recommended structure size c#» говорит, что это не более 16 байт. В этой статье мы попробуем докопаться до правды.
User
Теория сборки: новая смелая «теория всего», которая объединяет физику и эволюцию
Физика — прекрасная основа для понимания нашей Вселенной, но в ней есть несколько заметных пробелов. Одним из них является эволюция. До сих пор непонятно, из каких процессов возникает жизнь, и каким законам это явление подчиняется. Биология, если подумать, должна соответствовать физическим теориям. То есть, входить в физику. Но пока что мы изучаем две эти науки отдельно друг от друга. Никто не понимает, как «подвязать» физику к эволюции, появлению различных характерных особенностей живых существ и сообществ. Мы даже не можем в точности определить, на каком этапе начинается жизнь, а в каком случае объект просто является самореплицирующейся химической структурой. Какого-то одного объективного показателя нет.
Точнее, не было до этого года. Одна из самых больших теорий, соединяющих физику и биологию, была в этом году сформулирована международной группой ученых во главе с физиком-теоретиком Сарой Уокер из Университета штата Аризона и химиком Ли Кронином из Университета Глазго.
Они назвали свою новую теорию «Теорией сборки» и заявляют, что она может помочь в поиске жизни в других мирах. В начале октября их работа была опубликована в журнале Nature.
Чем браузер Arc хорош на самом деле
Недавно появился хабрапост «Arc — революционный браузер нового поколения». Его заминусовали с реакцией «вы тут выдаёте за революцию очередной скин для Chromium».
Я активно пользуюсь Arc и ощущаю, что из-за неудачного поста Хабр может пройти мимо хорошего продукта. Да, слово «революционный» тоже считаю излишне громким. Но Arc — это не просто «добавили нескучные обои», а более интересная штука, способная пригодиться многим хабравчанам.
По-моему, тот текст плохо доносил преимущества, потому что начинал с малозначимых «свистелок-перделок» в духе «можно кастомизировать цвета», и до самого интересного люди просто не дочитывали. Главную крутизну Arc я вижу в ряде UX-решений, помогающих с типичными проблемами. Зачастую что-то похожее есть и в других браузерах, но здесь реализовано нативнее и полнее. Поэтому решил описать для Хабра эти проблемы и решения.
В Data Science не нужна математика (Почти)
Привет, чемпион!
Ребята с «вышкой» всё время умничают, что в Data Science нужна «математика», но стоит копнуть глубже, оказывается, что это не математика, а вышмат.
В реальной повседневной работе Data Scientist'а я каждый день использую знания математики. Притом очень часто это далеко не «вышмат». Никакие интегралы не считаю, детерминанты матриц не ищу, а нужные хитрые формулы и алгоритмы мне оперативнее просто загуглить.
Решил накидать чек-лист из простых математических приёмов, без понимания которых — тебе точно будет сложно в DS. Если ты только начинаешь карьеру в DS, то тебе будет особенно полезно. Мощь вышмата не принижаю, но для старта всё сильно проще, чем кажется. Важно прочитать до конца!
Веб-сервер — это просто скрипт
Есть категория людей, которые особо ценят надёжность, стабильность, безопасность и свободу информации. Наверное, именно такие люди поднимают медиасерверы Plex и Jellyfin, запускают ноды Bitcoin, мосты Tor, инстансы Mastodon и Matrix, приложения YunoHost, VPN-узлы Tailscale и так далее. Это как бы естественный процесс.
Децентрализация, пиринг, автономность, самохостинг — вот основные принципы. Максимальная независимость от условий окружающей среды, государств, банков и прочих внешних факторов. Когда у вас надёжный фундамент под ногами и суверенная автономность с финансовой независимостью, то проблемы сторонних сервисов уходят на второй план. Конечно, сбои в их работе неприятны, но не критичны, если предусмотреть запасные варианты.
У обывателей часто возникает вопрос: наверное, это очень трудно? Поднять свои серверы? На самом деле сложность задачи часто переоценивают. Давайте посмотрим на примере простого веб-сервера.
Как мы создавали курс по C# и боролись за секунды
У сервиса онлайн-обучения программированию Хекслет есть собственный Open Source проект Code Basics, на котором выходят бесплатные курсы для начинающих на разных языках. Когда-то их было только два – PHP и JavaScript, сейчас уже более десятка. В компании Dodo Engeneering есть хорошая экспертиза по C#, поэтому мы вместе решили сделать курс с тренажером для тех, кто хочет начать изучение программирования именно с него. Во время написания курса оказалось, что из-за долгого холодного старта и ограничений учебной платформы все решения студентов падают.
В этой статье я, Женя Васильев, техлид в Dodo Engineering, расскажу, как мы решали проблему медленной сборки языка и как в этом помог Mono.
Поддержание аккуратной истории в Git с помощью интерактивного rebase
Interactive rebase — один из самых универсальных инструментов Git'а. В этой статье от автора Git-клиента Tower рассказывается, как корректировать сообщения при коммитах и исправлять свои ошибки.
Функциональное программирование — это не то, что нам рассказывают
Функциональное программирование — это очень забавная парадигма. С одной стороны, про неё все знают, и все любят пользоваться всякими паттерн матчингами и лямбдами, с другой на чистом ФП языке обычно мало кто пишет. Поэтому понимание о том, что же это такое восходит больше к мифам и городским легендам, которые весьма далеко ушли от истины, а у людей складывается мнение, что "ФП подходит для всяких оторванных от жизни программок расчетов фракталов, а для настоящих задач есть зарекомендовавший себя в бою проверенный временем ООП".
Хотя люди обычно признают удобства ФП фич, ведь намного приятнее писать:
int Factorial(int n)
{
Log.Info($"Computing factorial of {n}");
return Enumerable.Range(1, n).Aggregate((x, y) => x * y);
}
чем ужасные императивные программы вроде
int Factorial(int n)
{
int result = 1;
for (int i = 2; i <= n; i++)
{
result *= i;
}
return result;
}
Так ведь? С одной стороны да. А с другой именно вторая программа в отличие от первой является функциональной.
Как же так, разве не наоборот? Красивый флюент интерфейс, трансформация данных и лямбды это функционально, а грязные циклы которые мутируют локальные переменные — наследие прошлого? Так вот, оказывается, что нет.
Бесплатная навигация по всему миру от Nokia
Новых телефонов не показали.
Во всех телефонах Nokia навигация становится бесплатной.
Все карты тоже бесплатно.
Все путеводители, справочники LonelyPlanet, Michelin тоже становятся бесплатными.
В этот году появится StreetView от Nokia.
В второй половине 2010 появится сервис пробок в России.
Тут уже можно скачать.
UPDATE: После заявления Nokia, акции TomTom потеряли в стоимости 15%.
Уменьшение размеров папки winsxs
Я нашел один чудесный инструмент, магия которого позволяет уменьшить размер папки winsxs без потери производительности/стабильности/данных. Сначала я проделал все описанное под катом на своем домашнем буке, а сейчас для чистоты эксперимента повторю на рабочем.
Обзор внешнего 2.5" HDD A-Data Nobility NH92 500GB
Совсем недавно у меня появилась задача и желание: купить себе мобильный внешний HDD. Сразу отмечу, что у меня уже есть WD My Book Essential Edition 500GB, но он большой, с блоком питания — тоесть, совсем не транспортабелен. Вот и появилась у меня идея: а почему WD не использовать для бекапов, а для хранения фотографий (я фотографирую в RAW и очень много о_О), фильмов и прочего взять маленький, быстрый, красивый винт. Среди претендентов были Seagate FreeAgent Go, Transcend и Prestigio. Долго выбирал их, щупал, читал обзоры, но ничего подходящего для себя, к сожалению не выбрал.
Искусство мышления и MindMaps
Теперь о главном — предлагаю Вашему вниманию несколько книг (и видео-презентацию), рассказывающих о философии Mind Maps, тонкостях работы с «интеллект-картами», их происхождении и применении в различных сферах нелёгкого умственного труда.
Тони и Барри Бьюзен
Супермышление — The Mind Map Book
Издательство: Попурри, 2007 г.
Мягкая обложка, 320 стр.
ISBN 985-483-509-Х, 0-563-53732-9,978-985-15-0017-4
Тираж: 7000 экз.
Формат: 84x108/32
Ссылки:
Купить на Озоне
Скачать PDF версию c torrents.ru
Интересовало ли вас когда-нибудь, как работает мозг? Хотели бы вы улучшить свою память, повысить творческие возможности, ясность и эффективность мышления, общий уровень интеллекта и быстроту мысли?
В книге «Супермышление», являющейся частью революционной интеллект-серии Тони Бьюзена, вы ознакомитесь с инструментом под названием интеллект-карта (Mind-Map), который позволит достигнуть всего этого, мобилизовав возможности, скрывающиеся в вашем мозгу.
«Супермышление» предоставляет полный программно-методологический комплект для вашего сверхмощного биокомпьютера — головного мозга!
О зарывании таланта в землю
Однажды профессор американского университета, преподававший дискретную математику, дал студентам конкурсную задачку, пообещав за интересные решения некие поблажки на экзамене.
Ускорение загрузки Windows for fun and profit
Про то, почему отключение pagefile-а скорее вредно, чем полезно — как нибудь в другой раз, а пока…
Программа от SysInternals превращает ваш ПК в виртуальную машину
Само приложение выглядит так:
А вот скриншот уже созданной и загруженной виртуальной машины:
Не стоит и говорить, насколько это приложение может оказаться полезным для целей бекапа или разнообразных экспериментов над системой и программами.
Страничка программы: technet.microsoft.com/en-us/sysinternals/ee656415.aspx
Хорошо ли вы подготовились к использованию Windows 7? Несколько “горячих” клавиш
Случайно на глаза попалась табличка c «горячими» клавишами, связанных с новым тулбаром Windows 7 – узнал для себя много новых и полезных и спешу поделиться ими с вами, предварительно собрав по максимуму полезных сочетаний.
Наследование грамматик в Sprache (или еще один настраиваемый калькулятор выражений для .NET)
Runtime-генерирование .Net-кода для тех, кому некогда
Самое простое средство предлагаемое Microsoft для решения описанной задачи — это класс CSharpCodeProvider, который входит в стандартную библиотеку .Net. Использование этого класса — не очень сложная задача, но тем не менее было бы полезно иметь инструмент, превращающий использование сгенерированного на лету кода в задачу тривиальную.
Усиливаем контроль типов: где в типичном C#-проекте присутствует непрошеный элемент слабой типизации?
Проблема
Мы привыкли говорить о языках вроде C# как строго и статически типизированных. Это, конечно, правда, и во многих случаях тип, указываемый нами для некоторой языковой сущности хорошо выражает наше представление о ее типе. Но есть широко распространенные примеры, когда мы по привычке («и все так делают») миримся с не совсем верным выражением «желаемого типа» в «объявленном типе». Самый яркий — ссылочные типы, безальтернативно оснащенные значением «null».
В моем текущем проекте за год активной разработки не было ни одного NullReferenceException. Могу не без оснований полагать, что это следствие применения описанных ниже техник.
Рассмотрим фрагмент кода:
public interface IUserRepo
{
User Get(int id);
User Find(int id);
}
Этот интерфейс требует дополнительного комментария: «Get возвращает всегда не null, но кидает Exception в случае ненахождения объекта; а Find, не найдя, возвращает null». «Желаемые», подразумеваемые автором типы возврата у этих методов разные: «Обязательно User» и «Может быть, User». А «объявленный» тип — один и тот же. Если язык не заставляет нас явно выражать эту разницу, то это не означает, что мы не можем и не должны делать это по собственной инициативе.
Разработчики в борьбе за эффективность программиста, команды, команд
Сегодня мы хотели бы обсудить один очень важный аспект эффективной работы — повторное использование.
Речь пойдет, конечно, о коде.
Рутинном, который не хочется писать дважды, а тем более трижды. Инфраструктурном, который приходится писать от проекта к проекту. Гениальном, который просто выражает собой отличную идею и которым грех не дать попользоваться другим.
Да и давайте признаемся — все мы любим писать “фреймворки”, которыми пользуемся потом сами и которыми пользуются другие. Это добавляет немного куража нашей повседневной деятельности.
И тут автор ловит себя на том, что поступает неправильно, начиная описывать ситуации — все и так понимают, о чем речь. А описать нужно технологии и процесс. Поэтому давайте просто остановимся на абстрактной мысли, что внезапно нашлось много кода, который может быть полезен коллегам и его хорошо бы сделать легкодоступным. Также примем во внимание вторую, куда менее приятную, мысль, что в “зрелых” проектах можно найти большое количество copy-paste кода, значительно понижающего сопровождаемость. Да и работу над такими проектами приятной назвать трудно. И с этим надо что-то делать.
И мы решили с этим что-то делать.
Information
- Rating
- Does not participate
- Location
- Минск, Минская обл., Беларусь
- Registered
- Activity