Принцип **відкритості/закритості** (OCP)

The Open/Closed Principle is one of the SOLID principles in programming. It states that a class should be open for extension but closed for modification.

pic

Here’s an explanation with a C# example.

Example: Calculating Area of Shapes (Without OCP)

using System;  
using System.Collections.Generic;  

public class AreaCalculator  
{  
 public double CalculateTotalArea(List<Shape> shapes)  
 {  
 double totalArea = 0;  
 foreach (var shape in shapes)  
 {  
 if (shape is Circle)  
 {  
 totalArea += Math.PI * Math.Pow(((Circle)shape).Radius, 2);  
 }  
 else if (shape is Rectangle)  
 {  
 totalArea += ((Rectangle)shape).Width * ((Rectangle)shape).Height;  
 }  
 }  
 return totalArea;  
 }  
}

public abstract class Shape { }

Читати далі

C# HttpRequest Помилка: Незаконна послідовність байтів у введених даних.

У Юніті, коли відправляєш запит через HttpRequest, виникає така помилка:

Illegal byte sequence encounted in the input.

Після ретельного пошуку я знайшов, що більшість відповідей вказують на те, що проблема виникає через наявність корейських символів у шляху до проекту.

pic

Оскільки ім’я користувача було англійським, це не була причина, і в результаті пошуків я дізнався, що під час HttpRequest використовуються імена хостів.

Знайшов функцію, що отримує ім’я локального хоста = ім’я пристрою, і дізнався, що у інших людей все працює добре, а на моєму комп’ютері виникає помилка.

using UnityEngine;  

public class NewBehaviourScript : MonoBehaviour  
{  
 void Start() {  
 Debug.Log(System.Net.Dns.GetHostName());  
 }  
}
Читати далі

JavaScript у PDF

Ця стаття описує, як за допомогою JavaScript створювати інтерактивні PDF документи.

pic

Вступ

JavaScript може відображати PDF документи. Можливість виконувати JavaScript в PDF документах існує вже досить довго. Ця стаття присвячена саме можливості виконання коду.

Будь-яке програмне забезпечення містить не лише активно використовуваний набір функцій, а й частку рідко використовуваних функцій. Іноді ця друга частина може бути значною. Можна згадати функції Microsoft Word або вашої улюбленої IDE, наприклад. Ймовірно, вони містять достатньо функцій, якими ви ніколи не користувалися.

Portable Document Format також має багато рідко використовуваних функцій. Ми всі звикли до тексту та зображень у PDF документах, але це лише підмножина … Читати далі

Консольні додатки на C#: старий, але знову актуальний підхід у сучасному світі.

Консольні програми існують з самих початків комп'ютерних моніторів, що робить їх одними з найстаріших технологічних інструментів. Але замість того, щоб зникати, вони переживають своєрідне відродження у світі розробки з кількох причин:

  • Простота: немає потреби боротися з вередливими фреймворками UI.
  • Універсальність: ідеально підходять для автоматизації в CI/CD пайплайнах.
  • Швидкість: блискавичне виконання команд.

Консольні програми доводять, що класика ніколи не виходить з моди. Але чому вони повертаються саме зараз у світі розробки? Головна проблема полягає в зручності використання — ці інструменти часто вимагають від користувачів читання великих посібників або навігації через вбудовані довідкові повідомлення, щоб зрозуміти, як ними користуватися. Хоча це не … Читати далі

Оволодіння патерном Fluent Builder у C#: Від основ до складних сценаріїв

Флент-Білдер (Fluent Builder) — потужний шаблон проектування, який дозволяє створювати складні об'єкти через більш читабельний та зручний інтерфейс. У цій статті ми детально розглянемо впровадження шаблону Fluent Builder на C#, досліджуючи як базові, так і більш складні сценарії, а також аналізуючи реальні приклади з бібліотек .NET Standard.

Чому варто використовувати шаблон Fluent Builder?

Перед тим як заглиблюватися в реалізації, давайте з'ясуємо, чому ви можете захотіти використовувати шаблон Fluent Builder:

  1. Покращує читабельність коду завдяки ланцюжку викликів методів
  2. Окремо розділяє побудову складних об'єктів від їхньої репрезентації
  3. Забезпечує незмінність об'єктів, одночасно зберігаючи гнучкість у їх побудові
  4. Елегантно обробляє необов'язкові параметри
  5. Забезпечує чіткий API
Читати далі

Як оптимізувати ваш код CUDA — Програмування для GPU, Частина I: Перше знайомство

pic

Цей документ є першою частиною серії статей, присвячених CUDA. Він надає введення в мультипоточність.

Припустимо, ми маємо чорно-біле зображення розміру 4096×2048 для обробки. Метою є використання масивної паралелізації, яку надає CUDA, для виконання операцій на графічному процесорі, звичайно відомому як GPU. Кожному обчислювальному елементу, який зазвичай називається потоком (thread), призначено піксель на зображенні.

CUDA дозволяє паралелізувати будь-яку програму за допомогою сітки, яка може бути:

  • Одновимірною: проста спискова структура, де елементи ідентифікуються через координату x;
  • Двовимірною: таблиця, де кожен елемент розташований у точці (x, y);
  • Тривимірною: тензор третього порядку, компоненти якого ідентифікуються за їх координатами (x, y,
Читати далі

Як оптимізувати ваш код CUDA — Програмування для GPU, Частина II: З перспективи машини

pic

Цей документ є другою частиною серії статей, присвячених CUDA. Він надає спрощене представлення деяких низькорівневих механізмів, що працюють у багатопотокових програмах._

Припустимо, ми працюємо з GPU від NVIDIA RTX A4500 , який працює на архітектурі Ampere і є дуже ефективним для високопродуктивних обчислень. Метою цієї частини є роз’яснення того, як організовано багатопоточне програмування в CUDA, поза межами користувацького інтерфейсу.

Багатопоточність в CUDA

Стрімінгові багатопроцесори і ядра CUDA

Для цього необхідно визначити фізичні одиниці всередині GPU, які є важливими для нашого завдання. На малюнку 1 показано, серед іншого, стрімінгові багатопроцесори (SM). Вони містять ядра CUDA, обчислювальні одиниці, які відповідають за … Читати далі

Архітектура ігрового движка на C — Частина 2b: Спадкування префабів і завантаження сцен

Вступ

Добре, цей розділ буде дещо схожий на частину 2. Спочатку я планував опублікувати це через тиждень, але на його створення пішло всього кілька годин, тому я вирішив випустити його як доповнення до попередньої частини і зробити його коротким.

Спадкування префабів

Щоб зменшити дублювання коду між схожими об'єктами (наприклад, персонажами гравця з різними поведінками), я впровадив систему спадкування для моїх префабів. Простими словами, будь-який префаб може вказати базовий префаб, від якого він успадковується. Він отримає всі компоненти та поведінки від базового префабу, але може перевизначити значення базового префабу, а також додати нові компоненти чи поведінки. Ось приклад із гравцем:

"Prefabs": 
Читати далі

Топ-5 розваг у нічному житті Шарлстона, Південна Кароліна

Топ 5 речей, які варто зробити в нічному Шарлстоні, Південна Кароліна

Шарлстон, Південна Кароліна, славиться своєю яскравою нічною життєдіяльністю, пропонуючи поєднання культурних вражень і розваг. Незалежно від того, чи ви місцевий житель, чи відвідуєте це чарівне місто, нічна сцена тут обіцяє незабутні вечори, наповнені захопленням і дослідженнями.

1. Досліджуйте еклектичні заклади на вулиці Кінг

pic

Почніть свою нічну пригоду з прогулянки по вулиці Кінг, де вас чекають численні бари, лаунжі та майданчики з живою музикою. Пориньте в місцеву атмосферу в The Cocktail Club, відомому своїми крафтовими коктейлями та видом на дах. Для того, щоб відчути історію Шарлстона з сучасним ухилом, … Читати далі

## Топ 5 найкращих місць для фотографій у Шарлстоні, Південна Кароліна Шарлстон, Південна Кароліна, — справжній рай для фотографів, що поєднує історичний шарм із мальовничою красою. Від брукованих вулиць до живописних плантацій, це місто пропонує безліч можливостей для захоплюючих фотографій. Незалежно від того, чи ви аматор, чи досвідчений професіонал, ці топ-5 локацій надихнуть вашу креативність і наповнять вашу картку пам’яті незабутніми знімками.

Топ 5 найкращих місць для фотографій у Шарлстоні, Південна Кароліна

Шарлстон, Південна Кароліна, — справжній рай для фотографів, що поєднує історичний шарм із мальовничою красою. Від брукованих вулиць до живописних плантацій, це місто пропонує безліч можливостей для захоплюючих фотографій. Незалежно від того, чи ви аматор, чи досвідчений професіонал, ці топ-5 локацій надихнуть вашу креативність і наповнять вашу картку пам’яті незабутніми знімками.

1. Rainbow Row

pic

Одне з найвідоміших місць Шарлстона, Rainbow Row, ряд пастельних кольорів георгіанських будинків на вулиці East Bay — обов'язкове для відвідування. Ранкове світло надає м’яке освітлення, ідеальне для захоплення яскравих відтінків проти фону Шарлстонського порту.

Для екскурсій … Читати далі