Pull to refresh
0
@DaniilUshakovread⁠-⁠only

User

Send message

Деплой .NET приложений для самых маленьких. Часть 0

Level of difficultyMedium
Reading time11 min
Views8.6K

Давным-давно, когда Linux был ещё на ядре 2.6, а PHP5 был глотком свежего воздуха, я впервые заинтересовался миром веб-технологий. Читал учебники, статьи, зависал на форумах, но все равно мало мог понять как код, который я вижу на экране, превращается в волшебные сайты с кнопками, формами и анимациями. Узнал про LAMP и его аналоги для Windows, узнал, что, оказывается, есть хостинги, где такие сайты размещаются. Как только появился внешний интернет без трафика, я поспешил перенести свои локальные поделия во внешний мир, попутно узнав про замечательный протокол FTP. Просто мир волшебных открытий был для меня, особенно когда узнал, что не нужно писать свой форум с нуля, а можно использовать что-то из phpBB, vBulletin и других уже готовых движков.

И когда я много лет спустя переключился в мир .NET, перечисленные ранее умения сыграли со мной злую шутку – я долго не мог понять, как мне найти хостинг для .NET приложений. Почему все известные мне хостинги с лёгкостью предоставляли возможность развернуть PHP приложения, причём даже предлагая какие-то предустановленные версии CMS, но днём с огнём не сыщешь хостинг под .NET. Мое непонимание принципа развертывания приложений усугубляли статьи, которые предлагали их размещать в подходящих сервисах типа Heroku, Digital Ocean или Azure – ведь это так просто и дешево…

Поэтому предлагаю максимально подробно рассмотреть вопрос публикации .NET приложений в арендованном VPS.

Читать далее
Total votes 26: ↑22 and ↓4+26
Comments31

Шардирование (sharding). Эпизод 1: Начало и шардирование по идентификатору

Level of difficultyMedium
Reading time11 min
Views6.4K

Divide et impera (разделяй и властвуй) – древний принцип для управления чем-то большим и сложным.

Многие из нас программируют. Многие из нас делают системы, сложные системы. Но некоторым повезло работать в ситуации, когда объёмы по-настоящему огромны и требования кажутся невыполнимыми. Шардировние – один из излюбленных счастливчиками, которых зовут приключения, приемов.

Что-нибудь разбить на кусочки – это круто! Переходите на сторону шардирования у нас есть печеньки!

За кусочками!!!
Total votes 23: ↑23 and ↓0+23
Comments7

Сильное шифрование подключения SQL Server Management Studio 20 к Microsoft SQL Server 2022

Level of difficultyMedium
Reading time4 min
Views1.2K

Эта статья о том, что нового появилось в SQL Server Management Studio 20 (SSMS), и является второй из серии статей на эту тему. Первую статью можно почитать тут: Upcoming changes for SQL Server Management Studio (SSMS) — Part 1.Заключительной статьёй в серии является: Upcoming changes for SQL Server Management Studio (SSMS) — Part 3. SSMS 20 может удивить Вас сразу после установки, когда вдруг обнаружится что по умолчанию предполагается шифрованное соединение SSMS с сервером баз данных. На то, чтобы помочь пользователям SSMS справится с этой проблемой и добиться лучшей защиты соединения с помощью новых механизмов шифрования SQL Server 2022, как раз и направлена эта статья.

Читать далее
Total votes 4: ↑4 and ↓0+4
Comments1

Итак, вы думаете, что знаете Git? Часть третья: реально большие репозитории

Level of difficultyEasy
Reading time7 min
Views19K


Автор оригинала Скотт Чакон — сооснователь GitHub и основатель нового клиента GitButler. Этот клиент ставит во главу угла рабочий процесс и удобство разработки, в том числе код-ревью, и не является просто очередной обёрткой над CLI git.

Вам хочется использовать ванильный Git, чтобы управлять репозиторием с объёмом 300 ГБ в 3,5 млн файлов, которые без проблем получают пуш каждые 20 секунд от 4000 разработчиков? Тогда читайте дальше!


Вот агенда блога — наша блогенда:


Читать дальше →
Total votes 30: ↑28 and ↓2+36
Comments30

Маскирование баз данных

Level of difficultyEasy
Reading time6 min
Views10K

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

Обычные методы разделения доступа не всегда достаточны. В этом контексте маскирование данных выступает как один из наиболее эффективных методов защиты важной информации от несанкционированного доступа. Этот подход позволяет обеспечить необходимый уровень доступа к информации, при этом минимизируя риск её утечки.

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

Читать далее
Total votes 4: ↑2 and ↓2+1
Comments28

SQL в Фокусе: Полное Руководство. 100 ключевых Вопросов с собеседований

Level of difficultyMedium
Reading time65 min
Views39K


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

Давайте погружаться в мир SQL и раскрывать его тайны через популярные вопросы и ответы с собеседований. Готовы начать?

Читать
Total votes 31: ↑20 and ↓11+12
Comments27

Как я проектирую интерфейсы

Reading time13 min
Views22K

Привет, я Егор Камелев, проектировщик интерфейсов (UX-дизайнер). За последние 20 лет я поработал с командами десятков агентств, IT-отделов, действующих проектов и продуктов, стартапов (и запущенных, и незавершённых). Я знаком с сотней команд, не меньше. И среди них не нашлось и двух, использующих одинаковые подходы к работе. Верно говорят: «У каждого додика — своя методика!».

У всех свои названия должностей, артефактов, процессов. Свои требования и наборы компетенций. Где-то проектированием занимается маркетолог и разработчик (потому что в команде больше никого и нету), а где-то эта задача распределена между десятью разными специалистами (системные- и бизнес-аналитики, технические писатели, UX-дизайнеры, продакт оунеры и так далее).

Поэтому в этой статье я не буду заявлять, что мой подход к работе — единственно верный. Он один из тысяч и в моём случае прекрасно работает: клиенты не заваливают меня правками, платят 100% предоплату и рекомендуют окружающим. Я распишу во всех деталях свой процесс предоставления услуги проектирования (создания интерактивного прототипа информационной системы на заказ). Уверен, что многим пригодятся мои знания. Погнали!

Читать далее
Total votes 24: ↑20 and ↓4+21
Comments20

Common Table Expressions

Level of difficultyMedium
Reading time7 min
Views11K

Common Table Expressions (CTE) или обобщенное табличное выражение, впервые появилось в версии SQL Server 2005, и это простой способ разбить сложный запрос T-SQL на несколько запросов, что придаёт больше гибкости и управляемости. CTE во многом очень похожи на представления. В отличие от представления, которое можно создать один раз и потом использовать в других запросах, CTE привязан только к одному запросу. В Books Online есть несколько отличных примеров CTE, включая и рекурсивные CTE. Вместо того, чтобы продемонстрировать их устройство на своих примерах, в этой статье будут использоваться примеры из Books Online. Чтобы попробовать эти примеры у себя, используйте один из ранних образов базы данных AdventureWorks.

Читать далее
Total votes 6: ↑6 and ↓0+6
Comments6

Сто паттернов для разработки корпоративных программ. Часть 2.1

Level of difficultyMedium
Reading time7 min
Views5.3K

В этой статье представлены такие паттерны, как Abstract Document, Monad, Object Mother, Object Pool, Step Builder. Примеры приведены на .NET 7 и C#. Приятного чтения.

Продолжение в статье "Сто паттернов для разработки корпоративных программ. Часть 2.2".

Читать далее
Total votes 12: ↑2 and ↓10-8
Comments59

Как оптимизировать медленные SQL запросы?

Reading time18 min
Views28K

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

Как выявить и отладить такие проблемы? В этой статье будет показано решение наиболее распространённых проблем с производительностью БД, вызванных неправильной индексацией. Примеры будут приведены для Postgres, MySQL и SQLite.

Читать далее
Total votes 16: ↑8 and ↓8+3
Comments38

Изучаем SQL в 2024 году

Level of difficultyEasy
Reading time11 min
Views50K

SQL  — декларативный язык программирования, применяемый для создания, модификации и управления данными в реляционной базе данных, управляемой соответствующей системой управления базами данных.

Читать далее
Total votes 33: ↑14 and ↓190
Comments27

Использование Postgres-триггеров для исторических таблиц

Level of difficultyMedium
Reading time4 min
Views7.7K

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

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

Читать далее
Total votes 11: ↑11 and ↓0+11
Comments6

Распределенное управление конкурентностью

Level of difficultyEasy
Reading time4 min
Views5.1K

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

Читать далее
Total votes 5: ↑3 and ↓2+3
Comments5

Свободные лицензии на программное обеспечение

Level of difficultyEasy
Reading time7 min
Views3.3K

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

Читать далее
Total votes 7: ↑5 and ↓2+5
Comments7

Рекомендации по ведению SQL-кода

Level of difficultyEasy
Reading time8 min
Views20K
В этом материале разберем общие рекомендации по ведению SQL-кода на примере СУБД MS SQL (T-SQL). Однако, многие пункты можно также применить и к другим СУБД.
Читать дальше →
Total votes 35: ↑31 and ↓4+47
Comments382

О Важном в управлении проектами

Reading time8 min
Views6.3K

Всем привет! Меня зовут Андрей Софронов и я тимлид продукта “ЭДО и S2P”.

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

Читать далее
Total votes 24: ↑21 and ↓3+21
Comments7

Новое в SQL Server 2022: опция WAIT_AT_LOW_PRIORITY в команде DBCC SHRINKDATABASE

Level of difficultyMedium
Reading time2 min
Views1.2K

Новая опция WAIT_AT_LOW_PRIORITY в команде DBCC SHRINKDATABASE предоставляет возможность снизить конкуренцию за блокировки во время сжатия базы или файла, заставляя сжатие пережидать окончание других операций на сервере, блокирующих сжатие. Это похоже на опцию WAIT_AT_LOW_PRIORITY для онлайн операций с индексами, но с некоторыми отличиями.

Читать далее
Total votes 3: ↑2 and ↓1+2
Comments1

«Галоп пикселя — часть шестая» — Анимация персонажей. Бег

Level of difficultyMedium
Reading time48 min
Views9.3K


«Галоп пикселя», часть I — базовые понятия, этапы взросления, прикладные упражнения (линк)
«Галоп пикселя», часть II — перспектива, цвет, анатомия и прикладные упражнения (линк)
«Галоп пикселя», часть III — Анимация (линк)
«Галоп пикселя», часть IV — Анимация света и тени (линк)
«Галоп пикселя», часть V — Анимация персонажей. Ходьба (линк)
«Галоп пикселя», часть VI — Анимация персонажей. Бег (линк)

Доброго времени суток, Хабр. Мы продолжаем цикл «Галоп Пикселя». И хотя паузы между главами этой саги достигли практически четырехлетнего перерыва — я рад (надеюсь и вы тоже) продолжить двигаться вперёд. Миля за милей, дорога за дорогой, в этой вечной былине о пиксель-арте. Пространном повествовании о пикселях, их жизни, способе их создания, приёмах и уловках в работе с ними.

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

Сегодняшняя публикация станет ещё одной вехой, которая могла бы стать финальным аккордом в нашей истории. Но мне думается, что это… скорее окончание базового цикла, но не истории в целом, которую можно продолжать ещё долго. Существует масса неисследованных территорий, нехоженых дорог и мест, куда ещё не ступала нога пытливых археологов от мира любителей пиксель-арта. Лопаты в руки, друзья. Лопаты в руки.


Лопатить пиксели
Total votes 92: ↑92 and ↓0+92
Comments37

Почему вам стоит отказаться от использования timestamp в PostgreSQL

Reading time10 min
Views63K

Не секрет, что работа с часовыми поясами — боль, и многие разработчики объяснимо стараются ее избегать. Тем более что в каждом языке программирования / СУБД работа с часовыми поясами реализована по-разному.

Среди тех, кто работает с PostgreSQL, есть очень распространенное заблуждение про типы данных timestamp (который также именуется timestamp without time zone) и timestamptz (или timestamp with time zone). Вкратце его можно сформулировать так:

Мне не нужен тип timestamp with time zone, т.к. у меня все находится в одном часовом поясе — и сервер, и клиенты.

В статье я постараюсь объяснить, почему даже в таком довольно простом сценарии можно запросто напороться на проблемы. А в более сложных (которые на самом деле чаще встречаются на практике, чем может показаться) баги при использовании timestamp практически гарантированы.

Читать далее
Total votes 81: ↑78 and ↓3+90
Comments136

Регулярные выражения — это не трудно

Reading time6 min
Views25K
image

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

Знать regex стоит потому, что с его помощью можно добиться очень многого, используя очень мало кода. Если я пытаюсь с помощью обычного процедурного кода воспроизвести то, что делает моё выражение, то код часто получается очень пространным, полным багов и тормознутым. Могут потребоваться часы или дни, чтобы найти альтернативное решение, а ведь можно было за пару минут написать regex.
Читать дальше →
Total votes 14: ↑10 and ↓4+10
Comments21
1
23 ...

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity