Pull to refresh
0
0
bazile @bazile

User

Send message

Правило 16 байт: развенчиваем миф о производительности структур в C#

Level of difficultyMedium
Reading time4 min
Views14K

По умолчанию, при передаче в метод или при возврате из метода, экземпляры значимых типов копируются, когда как экземпляры ссылочных типов передаются по ссылке. В 2008 году была выпущена книга «Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries»‎. В этой книге рекомендовалось не использовать структуры размером больше 16 байт, поскольку, очевидно, структуры большего размера копируются медленнее. Несмотря на то, что прошло уже 16 лет, в сообществе C# разработчиков до сих пор популярно мнение, что производительность структур размером больше 16 байт хуже. Даже Google на запрос «recommended structure size c#» говорит, что это не более 16 байт. В этой статье мы попробуем докопаться до правды.

Читать далее
Total votes 54: ↑53 and ↓1+52
Comments32

Теория сборки: новая смелая «теория всего», которая объединяет физику и эволюцию

Level of difficultyMedium
Reading time6 min
Views18K

Физика — прекрасная основа для понимания нашей Вселенной, но в ней есть несколько заметных пробелов. Одним из них является эволюция. До сих пор непонятно, из каких процессов возникает жизнь, и каким законам это явление подчиняется. Биология, если подумать, должна соответствовать физическим теориям. То есть, входить в физику. Но пока что мы изучаем две эти науки отдельно друг от друга. Никто не понимает, как «подвязать» физику к эволюции, появлению различных характерных особенностей живых существ и сообществ. Мы даже не можем в точности определить, на каком этапе начинается жизнь, а в каком случае объект просто является самореплицирующейся химической структурой. Какого-то одного объективного показателя нет.

Точнее, не было до этого года. Одна из самых больших теорий, соединяющих физику и биологию, была в этом году сформулирована международной группой ученых во главе с физиком-теоретиком Сарой Уокер из Университета штата Аризона и химиком Ли Кронином из Университета Глазго.

Они назвали свою новую теорию «Теорией сборки» и заявляют, что она может помочь в поиске жизни в других мирах. В начале октября их работа была опубликована в журнале Nature.

Читать далее
Total votes 41: ↑38 and ↓3+35
Comments29

Чем браузер Arc хорош на самом деле

Reading time7 min
Views25K

Недавно появился хабрапост «Arc — революционный браузер нового поколения». Его заминусовали с реакцией «вы тут выдаёте за революцию очередной скин для Chromium». 

Я активно пользуюсь Arc и ощущаю, что из-за неудачного поста Хабр может пройти мимо хорошего продукта. Да, слово «революционный» тоже считаю излишне громким. Но Arc — это не просто «добавили нескучные обои», а более интересная штука, способная пригодиться многим хабравчанам.

По-моему, тот текст плохо доносил преимущества, потому что начинал с малозначимых «свистелок-перделок» в духе «можно кастомизировать цвета», и до самого интересного люди просто не дочитывали. Главную крутизну Arc я вижу в ряде UX-решений, помогающих с типичными проблемами. Зачастую что-то похожее есть и в других браузерах, но здесь реализовано нативнее и полнее. Поэтому решил описать для Хабра эти проблемы и решения.

Читать далее
Total votes 38: ↑34 and ↓4+30
Comments85

В Data Science не нужна математика (Почти)

Reading time6 min
Views87K

Привет, чемпион!

Ребята с «вышкой» всё время умничают, что в Data Science нужна «математика», но стоит копнуть глубже, оказывается, что это не математика, а вышмат.

В реальной повседневной работе Data Scientist'а я каждый день использую знания математики. Притом очень часто это далеко не «вышмат». Никакие интегралы не считаю, детерминанты матриц не ищу, а нужные хитрые формулы и алгоритмы мне оперативнее просто загуглить.

Решил накидать чек-лист из простых математических приёмов, без понимания которых — тебе точно будет сложно в DS. Если ты только начинаешь карьеру в DS, то тебе будет особенно полезно. Мощь вышмата не принижаю, но для старта всё сильно проще, чем кажется. Важно прочитать до конца!
Читать дальше →
Total votes 143: ↑136 and ↓7+129
Comments87

Веб-сервер — это просто скрипт

Reading time7 min
Views20K

Есть категория людей, которые особо ценят надёжность, стабильность, безопасность и свободу информации. Наверное, именно такие люди поднимают медиасерверы Plex и Jellyfin, запускают ноды Bitcoin, мосты Tor, инстансы Mastodon и Matrix, приложения YunoHost, VPN-узлы Tailscale и так далее. Это как бы естественный процесс.

Децентрализация, пиринг, автономность, самохостинг — вот основные принципы. Максимальная независимость от условий окружающей среды, государств, банков и прочих внешних факторов. Когда у вас надёжный фундамент под ногами и суверенная автономность с финансовой независимостью, то проблемы сторонних сервисов уходят на второй план. Конечно, сбои в их работе неприятны, но не критичны, если предусмотреть запасные варианты.

У обывателей часто возникает вопрос: наверное, это очень трудно? Поднять свои серверы? На самом деле сложность задачи часто переоценивают. Давайте посмотрим на примере простого веб-сервера.
Читать дальше →
Total votes 34: ↑32 and ↓2+30
Comments11

Как мы создавали курс по C# и боролись за секунды

Reading time6 min
Views7.3K

У сервиса онлайн-обучения программированию Хекслет есть собственный Open Source проект Code Basics, на котором выходят бесплатные курсы для начинающих на разных языках. Когда-то их было только два – PHP и JavaScript, сейчас уже более десятка. В компании Dodo Engeneering есть хорошая экспертиза по C#, поэтому мы вместе решили сделать курс с тренажером для тех, кто хочет начать изучение программирования именно с него. Во время написания курса оказалось, что из-за долгого холодного старта и ограничений учебной платформы все решения студентов падают.

В этой статье я, Женя Васильев, техлид в Dodo Engineering, расскажу, как мы решали проблему медленной сборки языка и как в этом помог Mono.

Читать далее
Total votes 24: ↑22 and ↓2+20
Comments5

Поддержание аккуратной истории в Git с помощью интерактивного rebase

Reading time5 min
Views42K

Interactive rebase — один из самых универсальных инструментов Git'а. В этой статье от автора Git-клиента Tower рассказывается, как корректировать сообщения при коммитах и исправлять свои ошибки.

Читать далее
Total votes 55: ↑54 and ↓1+53
Comments44

Функциональное программирование — это не то, что нам рассказывают

Reading time17 min
Views125K

Функциональное программирование — это очень забавная парадигма. С одной стороны, про неё все знают, и все любят пользоваться всякими паттерн матчингами и лямбдами, с другой на чистом ФП языке обычно мало кто пишет. Поэтому понимание о том, что же это такое восходит больше к мифам и городским легендам, которые весьма далеко ушли от истины, а у людей складывается мнение, что "ФП подходит для всяких оторванных от жизни программок расчетов фракталов, а для настоящих задач есть зарекомендовавший себя в бою проверенный временем ООП".



Хотя люди обычно признают удобства ФП фич, ведь намного приятнее писать:


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;
}

Так ведь? С одной стороны да. А с другой именно вторая программа в отличие от первой является функциональной.


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

Читать дальше →
Total votes 267: ↑259 and ↓8+251
Comments795

Бесплатная навигация по всему миру от Nokia

Reading time1 min
Views6.7K
Итак, сейчас в Лондоне заканчивается конференция, на которой Nokia сделала ряд громких заявлений.

Новых телефонов не показали.

Во всех телефонах Nokia навигация становится бесплатной.
Все карты тоже бесплатно.
Все путеводители, справочники LonelyPlanet, Michelin тоже становятся бесплатными.
В этот году появится StreetView от Nokia.
В второй половине 2010 появится сервис пробок в России.

Тут уже можно скачать.

UPDATE: После заявления Nokia, акции TomTom потеряли в стоимости 15%.


Читать дальше →
Total votes 69: ↑56 and ↓13+43
Comments144

Уменьшение размеров папки winsxs

Reading time4 min
Views882K
Многие обладатели Windows Vista и 7 наверняка сталкивались с тем, что папка Windows c ходом времени разрастается как на дрожжах. Я мирился с этим до тех пор, пока 40-гиговый раздел с системой не начал периодически выдавать мне сообщения о том, что свободное место на нем заканчивается.

Я нашел один чудесный инструмент, магия которого позволяет уменьшить размер папки winsxs без потери производительности/стабильности/данных. Сначала я проделал все описанное под катом на своем домашнем буке, а сейчас для чистоты эксперимента повторю на рабочем.

Итак, приступим
Total votes 88: ↑74 and ↓14+60
Comments83

Обзор внешнего 2.5" HDD A-Data Nobility NH92 500GB

Reading time2 min
Views11K
image

Совсем недавно у меня появилась задача и желание: купить себе мобильный внешний HDD. Сразу отмечу, что у меня уже есть WD My Book Essential Edition 500GB, но он большой, с блоком питания — тоесть, совсем не транспортабелен. Вот и появилась у меня идея: а почему WD не использовать для бекапов, а для хранения фотографий (я фотографирую в RAW и очень много о_О), фильмов и прочего взять маленький, быстрый, красивый винт. Среди претендентов были Seagate FreeAgent Go, Transcend и Prestigio. Долго выбирал их, щупал, читал обзоры, но ничего подходящего для себя, к сожалению не выбрал.

Читать дальше →
Total votes 39: ↑29 and ↓10+19
Comments54

Искусство мышления и MindMaps

Reading time3 min
Views15K
Интеллект-карты (Mind Maps) я начал использовать некоторое время назад, после этой публикации на Хабре. Казалось бы, штука нехитрая, но очень сильно помогает мне в работе и учёбе, позволяя структурировать полученные знания и эффективно планировать свою деятельность. Неплохо прижились карты и при коллективном «мозговом штурме», позволяя получить на выходе одну или несколько диаграмм-результатов, которые, безусловно, более наглядно отражают результат многочасовой дискуссии. Mind Maps — это одновременно и инструмент и методика, очень эффективная и интересная для изучения.

Теперь о главном — предлагаю Вашему вниманию несколько книг (и видео-презентацию), рассказывающих о философии Mind Maps, тонкостях работы с «интеллект-картами», их происхождении и применении в различных сферах нелёгкого умственного труда.

Тони и Барри Бьюзен
Супермышление — The Mind Map Book



image

Издательство: Попурри, 2007 г.
Мягкая обложка, 320 стр.
ISBN 985-483-509-Х, 0-563-53732-9,978-985-15-0017-4
Тираж: 7000 экз.
Формат: 84x108/32

Ссылки:
Купить на Озоне
Скачать PDF версию c torrents.ru

Интересовало ли вас когда-нибудь, как работает мозг? Хотели бы вы улучшить свою память, повысить творческие возможности, ясность и эффективность мышления, общий уровень интеллекта и быстроту мысли?
В книге «Супермышление», являющейся частью революционной интеллект-серии Тони Бьюзена, вы ознакомитесь с инструментом под названием интеллект-карта (Mind-Map), который позволит достигнуть всего этого, мобилизовав возможности, скрывающиеся в вашем мозгу.
«Супермышление» предоставляет полный программно-методологический комплект для вашего сверхмощного биокомпьютера — головного мозга!


Ещё книг...
Total votes 54: ↑46 and ↓8+38
Comments60

О зарывании таланта в землю

Reading time2 min
Views1K
Абсолютно реальная история. На западе PR-щики раструбили её довольно широко, а вот русскоязычной аудитории она практически неизвестна.

Однажды профессор американского университета, преподававший дискретную математику, дал студентам конкурсную задачку, пообещав за интересные решения некие поблажки на экзамене.
Формулировка задачи была такова
Total votes 125: ↑121 and ↓4+117
Comments271

Ускорение загрузки Windows for fun and profit

Reading time4 min
Views804K
image Пожалуй, начну с того, что если перегружаться 15 раз в год, то любой «тюнинг» процесса загрузки отнимает больше времени, чем будет выиграно на перезагрузках за все время жизни системы. Однако, спортивный интерес берет свое, тем более, что люди интересуется процессом оптимизации быстродействия. А загрузка оказалась самым очевидным кандидатом в примеры того, как на мой взгляд должен выглядеть этот самый процесс. Сразу скажу, что грузиться будем с 5400 rpm винта, грузиться будем в «рабочую» систему: помимо недобитой вендорской крапвари там стоит еще куча всякого типа вижуал студии, антивируса, скайпа, стима, гуглапдейтера и пр…

Про то, почему отключение pagefile-а скорее вредно, чем полезно — как нибудь в другой раз, а пока…
Под катом много однообразных картинок и немножко унылого текста
Total votes 533: ↑517 and ↓16+501
Comments365

Программа от SysInternals превращает ваш ПК в виртуальную машину

Reading time1 min
Views8.6K
Disk2vhd, новый шедевр от Марка Руссиновича — простая в использовании утилита, позволяющая создать образ загруженной, работающей системы в формате Virtual PC. Нужно всего лишь скачать и запустить программу, выбрать диск, на котором расположена ваша Windows и указать, где следует сохранить виртуальную машину. Поддерживается 32 и 64-bit Windows XP SP2 и новее.

Само приложение выглядит так:

image

А вот скриншот уже созданной и загруженной виртуальной машины:

click

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

Страничка программы: technet.microsoft.com/en-us/sysinternals/ee656415.aspx
Total votes 128: ↑109 and ↓19+90
Comments64

Хорошо ли вы подготовились к использованию Windows 7? Несколько “горячих” клавиш

Reading time3 min
Views3.4K
Сразу хочу извиниться, статья не очень то техническая. Если вы считаете, что уже и так хорошо знаете все горячие клавиши Windows 7, которые упрощают работу с ней, то просто пропустите этот топик.

Случайно на глаза попалась табличка c «горячими» клавишами, связанных с новым тулбаром Windows 7 – узнал для себя много новых и полезных и спешу поделиться ими с вами, предварительно собрав по максимуму полезных сочетаний.

Читать дальше →
Total votes 142: ↑118 and ↓24+94
Comments89

Наследование грамматик в Sprache (или еще один настраиваемый калькулятор выражений для .NET)

Reading time13 min
Views12K
Статья демонстрирует технику создания парсеров с использованием наследования грамматик. Наследование позволяет описывать новые грамматики на основе уже существующих путем добавления новых правил или переопределения унаследованных, что существенно упрощает реализацию новых парсеров. Изменения в базовой грамматике автоматически становятся доступными во всех порожденных грамматиках. Основная область применения такой техники — поддержка нескольких диалектов или версий языков.
Читать дальше →
Total votes 19: ↑18 and ↓1+17
Comments2

Runtime-генерирование .Net-кода для тех, кому некогда

Reading time8 min
Views35K
Инфраструктура .Net содержит встроенные средства генерирования кода (On-the-Fly Code Generation). Это позволяет .Net-программе в момент своего исполнения самостоятельно (без участия программиста) скомпилировать текст, написанный на каком-либо языке программирования и исполнить получившийся код. Логично было бы ожидать, что для осуществления этих действий в стандартной .Net-библиотеке предусмотрен простейший метод соответствующего класса. Но к сожалению это не так. Microsoft, проделав огромный путь по встраиванию в среду .Net средств генерирования кода, не сделала самый последний шаг навстречу простейшим потребностям программистов. Значит, придётся сделать этот шаг самостоятельно.

Самое простое средство предлагаемое Microsoft для решения описанной задачи — это класс CSharpCodeProvider, который входит в стандартную библиотеку .Net. Использование этого класса — не очень сложная задача, но тем не менее было бы полезно иметь инструмент, превращающий использование сгенерированного на лету кода в задачу тривиальную.
Вот что получилось в результате
Total votes 58: ↑51 and ↓7+44
Comments29

Усиливаем контроль типов: где в типичном C#-проекте присутствует непрошеный элемент слабой типизации?

Reading time5 min
Views19K

Проблема


Мы привыкли говорить о языках вроде C# как строго и статически типизированных. Это, конечно, правда, и во многих случаях тип, указываемый нами для некоторой языковой сущности хорошо выражает наше представление о ее типе. Но есть широко распространенные примеры, когда мы по привычке («и все так делают») миримся с не совсем верным выражением «желаемого типа» в «объявленном типе». Самый яркий — ссылочные типы, безальтернативно оснащенные значением «null».
В моем текущем проекте за год активной разработки не было ни одного NullReferenceException. Могу не без оснований полагать, что это следствие применения описанных ниже техник.

Рассмотрим фрагмент кода:

public interface IUserRepo 
{
	User Get(int id);
	User Find(int id);
}

Этот интерфейс требует дополнительного комментария: «Get возвращает всегда не null, но кидает Exception в случае ненахождения объекта; а Find, не найдя, возвращает null». «Желаемые», подразумеваемые автором типы возврата у этих методов разные: «Обязательно User» и «Может быть, User». А «объявленный» тип — один и тот же. Если язык не заставляет нас явно выражать эту разницу, то это не означает, что мы не можем и не должны делать это по собственной инициативе.
Maybe в C#: какие есть варианты
Total votes 37: ↑32 and ↓5+27
Comments63

Разработчики в борьбе за эффективность программиста, команды, команд

Reading time9 min
Views8K
Всем привет.

Сегодня мы хотели бы обсудить один очень важный аспект эффективной работы — повторное использование.

Речь пойдет, конечно, о коде.

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

Да и давайте признаемся — все мы любим писать “фреймворки”, которыми пользуемся потом сами и которыми пользуются другие. Это добавляет немного куража нашей повседневной деятельности.

И тут автор ловит себя на том, что поступает неправильно, начиная описывать ситуации — все и так понимают, о чем речь. А описать нужно технологии и процесс. Поэтому давайте просто остановимся на абстрактной мысли, что внезапно нашлось много кода, который может быть полезен коллегам и его хорошо бы сделать легкодоступным. Также примем во внимание вторую, куда менее приятную, мысль, что в “зрелых” проектах можно найти большое количество copy-paste кода, значительно понижающего сопровождаемость. Да и работу над такими проектами приятной назвать трудно. И с этим надо что-то делать.

И мы решили с этим что-то делать.

Читать дальше →
Total votes 11: ↑7 and ↓4+3
Comments14

Information

Rating
Does not participate
Location
Минск, Минская обл., Беларусь
Registered
Activity