Столкнулся с проектом в дизайне находиться gulpfile.js
npm install), для этого в корне проекта должен лежать package.json с нужными зависимостями.gulp), остальные команды можно посмотреть в package.json. using System.IO.Compression;
string zipPath = @"path/zip.zip";
string unZipPath = @"path/unzip-dir";
string dirNameInZip = "dir-name";
// Проверяем наличие архива
if (!File.Exists(zipPath))
{
throw new FileNotFoundException("Ошибка, архив не найден.", zipPath);
}
// Создаем выходную директорию, если она не существует
Directory.CreateDirectory(unZipPath);
// Получаем архив
using var archive = ZipFile.OpenRead(zipPath);
// Ищем нужную директорию в архиве
var folder = archive.Entries.FirstOrDefault((e) =>
e.FullName.StartsWith(dirNameInZip + "/") && e.FullName.Length > dirNameInZip.Length + 1);
if (folder == null)
{
throw new DirectoryNotFoundException($"Ошибка, директория '{dirNameInZip}' в архиве не найдена.");
}
// Извлекаем директорию со всеми данными
foreach (var entry in archive.Entries.Where((e) => e.FullName.StartsWith(folder.FullName)))
{
string relativePath = entry.FullName[(folder.FullName.Length + 1)..];
string filePath = Path.Combine(unZipPath, relativePath);
// Создание вложенных директорий, если требуется
string? directoryPath = Path.GetDirectoryName(filePath);
if (!string.IsNullOrEmpty(directoryPath))
{
Directory.CreateDirectory(directoryPath);
}
// Извлечение файлов с перезаписью
entry.ExtractToFile(filePath, overwrite: true);
} Как можно установить чат с поддержкой на сайт?
tabs
tabs.forEach((el) => {
el.addEventListener('click', (e) => {
e.preventDefault();
});
}); Как создать сайт на 3-х языках?
или только создать поддомены en.site.com/ ru.site.com/site.com и создать отдельный сайт на каждом поддомене?
Нормально ли (нужно ли?) для SEO, чтобы обновлялись описания при переходе по вкладкам на странице? Нормально ли (нужно ли, опять же) обновлять SEO для страниц, которые основываются на динамически подгружаемых данных (страница новости, к примеру)?
async function clickByElement() {
let element = document.querySelector('.css-1swe2yf-DivActionContainer.esns4rh0 [aria-pressed="false"]');
if (!element) return null;
console.log('Клик!')
element.click();
while (element.getAttribute('aria-pressed') !== 'true') {
await new Promise(resolve => setTimeout(resolve, 100));
}
return true;
}
async function clickAllElements() {
let foundClickable = false;
while (await clickByElement() !== null) {
foundClickable = true;
}
return foundClickable;
}
async function scrollToBottomAndClickAgain() {
const scrollContainer = document.querySelector('.css-1qp5gj2-DivCommentListContainer.ekjxngi3');
if (scrollContainer) {
console.log('Крутим страницу и ждем 10 сек.')
let lastScrollTop = scrollContainer.scrollTop;
scrollContainer.scrollTop = scrollContainer.scrollHeight;
await new Promise(resolve => setTimeout(resolve, 10000));
if (scrollContainer.scrollTop !== lastScrollTop) {
if (await clickAllElements()) {
await scrollToBottomAndClickAgain();
} else {
console.log('Прокрутка выполнена, новые элементы для клика не найдены.');
}
} else {
console.log('Достигли конца прокрутки, больше нечего прокручивать.');
if (await clickAllElements()) {
await scrollToBottomAndClickAgain();
} else {
console.log('Задача окончательно завершена, кликов больше не осталось');
}
}
} else {
console.error('Контейнер для прокрутки не найден');
}
}
async function initiateClicksAndScroll() {
if (await clickAllElements()) {
await scrollToBottomAndClickAgain();
} else {
console.log('Нет элементов для начальных кликов, проверяем прокрутку');
await scrollToBottomAndClickAgain();
}
}
initiateClicksAndScroll().then(() => console.log('Задача выполнена май генерал!')); .querySelectorAll()..forEach()..click().document.querySelectorAll('.CLASSNAME').forEach((el, i) => {
console.log(`Element №${i}, `, el);
el.click();
});setTimeout(() => {
document.querySelectorAll('.CLASSNAME').forEach((el, i) => {
console.log(`Клик по элементу №${i}, `, el);
el.click();
});
}, 1000); Как мне сделать так, чтобы мой сервис используя эти файлы запускался на https в контейнере
FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /src
COPY ["project.csproj", "."]
RUN dotnet restore "project.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "project.csproj" -c Release -o /app/publish
FROM build AS publish
RUN dotnet publish "project.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
COPY ["cert.pem", "key.pem", "/https/"]
ENTRYPOINT ["dotnet", "project.dll"]var builder = WebApplication.CreateBuilder(args);
builder.WebHost.ConfigureKestrel(options =>
{
options.ListenAnyIP(443, listenOptions =>
{
listenOptions.UseHttps("/https/cert.pem", "/https/key.pem");
});
});