All streams
Search
Write a publication
Pull to refresh
-15
0

Пользователь

Send message

Заметки о SQL и реляционной алгебре

Reading time12 min
Views101K


На Хабре и за его пределами часто обсуждают реляционную алгебру и SQL, но далеко не так часто акцентируют внимание на связи между этими формализмами. В данной статье мы отправимся к самым корням теории запросов: реляционному исчислению, реляционной алгебре и языку SQL. Мы разберем их на простых примерах, а также увидим, что бывает полезно переключаться между формализмами для анализа и написания запросов.

Зачем это может быть нужно сегодня? Не только специалистам по анализу данных и администраторам баз данных приходится работать с данными, фактически мало кому не приходится что-то извлекать из (полу-)структурированных данных или трансформировать уже имеющиеся. Для того, чтобы иметь хорошее представление почему языки запросов устроены определенным образом и осознанно их использовать нужно разобраться с ядром, лежащим в основе. Об этом мы сегодня и поговорим.

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

Содержание



Читать дальше →

Визуализируем и разбираемся с Hash Match Join

Reading time3 min
Views24K

Этот пост является третьей частью серии, посвященной операторам соединения (обязательно прочитайте часть 1 — nested loops joins, и часть 2 — merge joins). Перевод статьи подготовлен специально для студентов курса «MS SQL Server разработчик».



Hash Match Joins — это надежные рабочие лошадки физических операторов соединения.
В то время как Nested Loops Join завершится неудачей, если данных будет слишком много для того, чтобы поместить их в память, а Merge Join потребует, чтобы входные данные были отсортированы, Hash Match соединит любые данные, которые вы подадите на вход (при условии что для соединения выполняется предикат равенства и пока в вашем tempdb достаточно свободного места).

Некоторые аспекты оптимизации LINQ-запросов в C#.NET для MS SQL Server

Reading time6 min
Views24K
LINQ вошел в .NET как новый мощный язык манипуляции с данными. LINQ to SQL как часть его позволяет достаточно удобно общаться с СУБД с помощью например Entity Framework. Однако, достаточно часто применяя его, разработчики забывают смотреть на то, какой именно SQL-запрос будет генерировать queryable provider, в вашем случае — Entity Framework.
Читать дальше →

События C# по-человечески

Reading time6 min
Views502K

Невозможно, просто взять и вникнуть в этот глубокий смысл, изучая События (event) в просторах базового и, на первый взгляд, бесконечного C#.

Когда я изучал События (не в рамках .NET!), потратил много сил, чтобы, наконец-то, разобраться, как они устроены и должны конструироваться. Поэтому, я решил опубликовать свою методику понимания структуры пользовательского события, коим представляется ключевое слово event в С#.
Не буду цитировать и без того замученную MSDN, а постараюсь объяснить понятно и доступно.
Читать дальше →

Roslyn для автоматического перевода кода C# в 1С-код

Reading time11 min
Views19K
Появилась идея посмотреть, как будет выглядеть объектно-ориентированный подход в 1С, язык которой очень ограничен в средствах и не предусматривает определение классов. Программа по автоматическому переводу определений классов C# в другой язык позволила бы менять генерируемый код по мере появления новых идей. Поиски средств реализации привели к проекту Roslyn – открытому компилятору C#.

Roslyn – это открытая платформа компиляции C# и Visual Basic. Roslyn выполняет два основных действия: строит синтаксическое дерево (парсинг) и компилирует синтаксическое дерево. Дополнительно позволяет анализировать исходный код, рекурсивно обходить его, работать с проектами Visual Studio, выполнять код на лету.

Обратите внимание, что на данный момент Roslyn в стадии Бета. Исходя из этого, со временем в компиляторе может что-то поменяться.
Читать дальше →

Pull request'ы на GitHub или Как мне внести изменения в чужой проект

Reading time6 min
Views526K
По просьбе tulskiy делаю вольный перевод частей официальной документации GitHub'а Fork A Repo и Send pull requests.

Итак, что же такое «запрос на включение (сделанных вами изменений)» (именно так я перевёл pull request)? В официальной документации гитхаба говорится следующее:
Pull request'ы позволяют вам рассказать другим о тех изменениях, которые вы разместили в своём GitHub-репозитории. Как только pull request отправлен, заинтересованные стороны рассматривают ваши изменения, обсуждают возможные правки или даже добавляют дополняющие коммиты, если нужно.

Говоря своим языком: Посылая pull request, вы говорите автору изначального репозитория (и всем заинтересованным лицам): «Смотрите, что я сделал, не хотите ли принять мои изменения и влить их в проект?»
Читать дальше, но теперь уже обо всём по порядку

Основы многопоточности в .NET Framework

Reading time15 min
Views128K


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

Ответ психиатра на статью «Болен-здоров»

Reading time19 min
Views58K


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

Исходя из моего опыта, сразу хочу сказать, — описанные в статье переживания характерны, в первую очередь, для тиреоидита – повышенного титра антител к гормонам щитовидной железы.

Щитовидная железа и ее гормоны (отчасти и гормоны гипофиза) отвечают за темп психической деятельности. То, что произошло с masterdak связано со стремительным увеличением темпа психической деятельности, который в психиатрии называют маниакальным состоянием, манией или гипоманией. Эти термины пациенту наверняка приходилось слышать, точно также как и понятие «наплыв мыслей».
Читать дальше →

Особенности строк в .NET

Reading time10 min
Views111K
Строковый тип данных является одним из самых важных в любом языке программировании. Вряд ли можно написать полезную программу не задействовав этот тип данных. При этом многие разработчики не знают некоторых нюансов связанных с этим типом. Поэтому давайте рассмотрим кое-какие особенности этого типа в .NET.

Итак, начнем с представления строк в памяти


В.NET строки располагаются согласно правилу BSTR (Basic string or binary string). Данный способ представления строковых данных используется в COM (слово basic от языка программирования VisualBasic, в котором он первоначально использовался). Как известно в C/C++ для представления строк используется PWSZ, что расшифровывается как Pointer to Wide-character String, Zero-terminated. При таком расположении в памяти в конце строки находится null-терминированный символ, по которому мы можем определить конец строки. Длина строки в PWSZ ограничена лишь объемом свободной памяти.
Читать дальше →
«Библиотеки для C++ нередко похожи на русскую классику: страдает либо их автор, либо пользователь, либо архитектура». Автор этой цитаты, Сергей Садовников из «Лаборатории Касперского», прошел свой путь от страданий к просветлению и узнал о метапрограммировании в С++ нечто важное и нужное. Сочувствующих приглашаем в волшебный мир макросов, шаблонов, boost и прочих loki.
Подробности – под катом

Управление семисегментным дисплеем с помощью ПЛИС

Reading time8 min
Views10K
Привет, Хабр! Хочу внести свою посильную лепту в продвижение ПЛИС. В этой статье я постараюсь объяснить, как на языке VHDL описать устройство, управляющее семисегментным дисплеем. Но перед тем как начать, хочу кратко рассказать о том как я пришел к ПЛИС и почему я выбрал язык VHDL.

Где-то пол года назад решил попробывать свои силы в программировании ПЛИС. До этого со схемотехникой никогда не сталкивался. Был небольшой опыт использования микроконтроллеров (Atmega328p, STM32). Сразу после решения освоиться с ПЛИС, встал вопрос выбора языка, который я буду использовать. Выбор пал на VHDL из-за его строгой типизации. Мне, как новичку, хотелось как можно больше возможных проблем отловить на этапе синтеза, а не на рабочем устройстве.

Почему именно семисегментный дисплей? Мигать светодиодом уже надоело, да и логика мигания им не представляет из себя ничего интересного. Логика управления дисплеем с одной стороны сложнее, чем мигание светодиодом (т. е. писать ее интереснее), а с другой достаточно простая в реализации.
Читать дальше →

Зачем вам учить Go

Reading time4 min
Views68K


Источник картинки


Go — относительно молодой, но популярный язык программирования. По данным опроса Stack Overflow, именно Golang получил третье место в рейтинге языков программирования, которые хотели бы освоить разработчики. В этой статье мы попробуем разобраться в причинах популярности Go, а также посмотрим, где этот язык используется и почему его вообще стоит изучать.

Читать дальше →

Debian + Postfix + Dovecot + Multidomain + SSL + IPv6 + OpenVPN + Multi-interfaces + SpamAssassin-learn + Bind

Reading time28 min
Views30K
Данная статья о том как настроить современный почтовый сервер.
Postfix + Dovecot. SPF + DKIM + rDNS. С IPv6.
С шифрованием TLS. С поддержкой нескольких доменов — часть с настоящим SSL сертификатом.
С антиспам-защитой и высоким антиспам-рейтингом у других почтовых серверов.
С поддержкой нескольких физических интерфейсов.
С OpenVPN, подключение к которому через IPv4, и которое даёт IPv6.

Если вы не хотите изучать эти все технологии, но хотите настроить такой сервер — тогда эта статья для вас.

В статье отсутствуют попытки пояснить каждую деталь. Пояснение идёт к тому, что настроено не стандартно или важно с точки зрения потребителя.
Читать дальше →

Исчерпывающий список различий между VB.NET и C#. Часть 1

Reading time32 min
Views23K
image

Согласно рейтингу TIOBE в 2018 году VB.NET обогнал по популярности C#. Совпадение или нет, но в феврале Эрик Липперт, один из создателей C#, призвал читателей обратить внимание на блог его друга, бывшего коллеги по команде компилятора Roslyn и, по совместительству, ярого фаната VB.NET, Энтони Грина. «Подобные ресурсы — это глубинные детали от экспертов, которые не так легко найти, читая документацию», пишет Эрик. Представляем вашему вниманию первую часть перевода статьи Энтони Грина «Исчерпывающий список различий между VB.NET и C#». Возможно, именно в этих различиях кроется секрет динамики рейтинга этих языков.
Читать дальше →

Используем SQL Server Dynamic Management Views and Functions (DMV and DMF)

Reading time6 min
Views17K
MS SQL Dynamic Management Views and Functions (DMV and DMF)
Microsoft SQL 2005/2008 предоставляет доступ к динамическим административным представлениям и функциям (Dynamic Management Views and Functions, DMV and DMF). Эти данные мы можем использовать для диагностики проблем и оптимизации производительности баз данных.
Вот неполный перечень доступной информации:
  • Причины задержек выполнения запросов.
  • Работа с индексами (отсутствующие, неиспользуемые, требующие больше всех операций ввода/вывода, часто используемые).
  • Запросы с высокими издержками на ввод-вывод, с высоким использованием процессора.
  • Запросы, выполняющиеся чаще всего.
  • Запросы, страдающие от блокировок.
Полное описание всех функций можно найти в MSDN — Динамические административные представления и функции (Transact-SQL). Для тех, кто еще не сталкивался с запросами к DMV – рекомендую ознакомиться со статьей из журнала MSDN за январь 2008-ого года: "Открытие скрытых данных для оптимизации производительности приложений". Она довольно обширна, содержит общую информацию и большое количество готовых часто используемых запросов к DMV.
Далее, я хочу рассказать о том, как можно сохранять и анализировать данные запросов к DMV.
Читать дальше →

[лонгрид] 20 лет программистской карьеры в большом маленьком городе

Reading time31 min
Views52K
We do what we must because we can — GLaDOS

Ижевск, наши дни


Первого февраля исполняется ровно два десятилетия, как я начал официально подвизаться в должности инженера-программиста:

Фото первого разворота трудовой книжки с датой 1 февраля 1999 года

Продолжаю по сей день. И почему-то мне кажется, что многим будет интересно ознакомиться с историей того, как можно делать вполне успешную горизонтальную программистскую карьеру, не выезжая из своего родного города, и занимаясь почти всё это время довольно интересными, если не безумными, задачами.

Конечно, мерило «успешности» у каждого своё, но моим служит тот факт, что последние 15 лет я работаю на сеньорских должностях на проектах, в основном завязанных на крупных корпоративных или зарубежных заказчиках, и почти каждая новая работа находит меня сама. И всё ещё не устал.

Хочу предупредить, что мой рассказ — это типичный лонгрид в формате интервью от первого лица, местами нудный, и почти без картинок, потому что я, в основном, бэкэндер. Читателю без технического бэкграунда может быть сложно, так как в нём полно программистского жаргона (часть терминов я постарался объяснить, но не все). А ещё порядочно древних мемов, ностальгических подробностей, и локальной культурологии.

Но вы ведь любите автобиографии с аутистическими шутками, не правда ли?
Потратить целый вечер

Про одного парня

Reading time14 min
Views193K
История реальная, я все видел своими глазами.

Несколько лет один парень, как и многие из вас, работал программистом. На всякий случай напишу так: «программистом». Потому что он был 1Сником, на фиксе, производственной компании.

До этого он пробовал разные специальности – 4 года во франче программистом, руководителем проектов, умел закрывать по 200 часов, одновременно получая процент с проекта, за руководство и немного занимаясь продажами. Пробовал самостоятельно разрабатывать продукты, был начальником IT-отдела в большой компании, численностью 6 тысяч человек, примерял разные варианты применения своей кавычечной профессии – программиста 1С.

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

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

Йода из Кремниевой долины

Reading time9 min
Views46K

Дональд Кнут, мастер алгоритмов, размышляет над 50 годами работы над своим главным творением, книгой «Искусство программирования», которую не прекращает дополнять



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

Уже полвека стэнфордский специалист по информатике Дональд Кнут, немного напоминающий Йоду – хотя ростом он 193 см и носит очки – занимает доминирующее положение духовного учителя в области алгоритмов.

Дружба, благодаря которой Google вырос до огромных размеров

Reading time23 min
Views40K
Программируя вместе за одним компьютером, Джефф Дин и Санджай Гемават изменили курс компании — и весь Интернет. На иллюстрации: лучшие программисты Google иногда кажутся двумя полушариями одного мозга. Рисунок Дэвида Планкерта

Однажды в марте 2000 года шесть лучших инженеров Google собрались в импровизированном конференц-зале. Произошло ЧП: с октября 1999 года остановились краулеры. Хотя пользователям ещё выдавали поисковые результаты, но они устарели на пять месяцев. На карту было поставлено больше, чем предполагали инженеры. В данный момент Ларри Пейдж и Сергей Брин вели переговоры о поставке поиска Google на крупнейший в интернете портал Yahoo и обещали увеличить поисковый индекс в десять раз, чтобы идти в ногу со Всемирной паутиной, которая за предыдущий год удвоилась в размере. Если краулеры не починят, google.com застрянет в прошлом, сделка с Yahoo может провалиться, а компания рискует сжечь полученные инвестиции и кануть в небытие.
Читать дальше →

Information

Rating
Does not participate
Registered
Activity