Вы создаете список, затем снова конвертируете этот список в строку. Это неправильно.
В приведенном ниже коде я использовал ваши значения списка и применил метод split для каждого элемента списка.
Затем я получаю все значения char и помещаю их в массив.
В последнем сегменте кода я печатаю массив результатов. Вы можете проверить значения массива оттуда.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
namespace Rextester
{
public class Program
{
public static void Main(string[] args)
{
//Your code goes here
Console.WriteLine("Hello, world!");
string file = "Berzas,sula;;sula;;klevu saldial lapasula a aila, ar suart zemes vaikai du ";
int n = 0;
while (Math.Pow(n, 2) != file.Length)
{
n++;
}
string[,] array = new string[n, n];
var list = Enumerable
.Range(0, file.Length / n)
.Select(i => file.Substring(i * n, n))
.ToList();
var res = string.Join(Environment.NewLine, list);
for (int i = 0; i < n; i++)
{
char[] row = list[i].ToCharArray();
for (int j = 0; j < n; j++)
{
array[i, j] = row[j].ToString();
}
}
int rowLength = array.GetLength(0);
int colLength = array.GetLength(1);
for (int i = 0; i < rowLength; i++)
{
for (int j = 0; j < colLength; j++)
{
Console.Write(string.Format("{0}", array[i, j]));
}
Console.Write(Environment.NewLine);
}
}
}
}
Mercurial почти наверняка ваш самый простой вариант в Windows.
Если вы не заботитесь об аутентификации, вы на самом деле можете просто позволить hg serve
разрешить push. Для этого вам просто нужно добавить следующее в файл .hg / hgrc
в репозитории, который вы хотите обслуживать:
[web]
allow_push = *
push_ssl = false
Первая строка говорит, что любой может перейти в этот репозиторий. Второй указывает Mercurial разрешить отправку без SSL, поскольку hg serve
в настоящее время не поддерживает HTTPS. На этом этапе пользователи могут перейти в ваш репозиторий, не имея учетной записи в любом месте. Если вы просто небольшой магазин, это, вероятно, хорошо, тем более что вы можете использовать способность Mercurial подписывать наборы изменений, чтобы гарантировать гораздо более высокий уровень проверяемости, чем обеспечит HTTP Basic.
Для более крупного магазина вы были бы совершенно правы, если бы захотели хотя бы простой барьер для совершения. Для этого вам нужно внести два изменения. Во-первых, вам нужно разместить Mercurial за веб-сервером с поддержкой обратного прокси или CGI. К счастью, последние версии IIS поддерживают оба. Вы можете обратиться к указаниям CGI в Mercurial Redbook для конкретных шагов по Mercurial и руководству Microsoft по настройке приложений CGI в IIS 6 для помощи на стороне IIS.
Далее вам нужно будет установить базовую аутентификацию. IIS предоставляет стандартную базовую версию HTTP Basic, которая в качестве бонуса может выполнять проверку подлинности непосредственно на вашем домене, сводя к минимуму административные издержки.
Наконец, вы ' Я хочу изменить строку allow_push
для поддержки только определенных пользователей, указав список имен пользователей, разделенных запятыми. Например:
allow_push = benjamin, ted, the_cow
Вот и все. Mercurial теперь позволяет отправлять запросы пользователям, которые могут проходить аутентификацию через HTTP Basic аутентификацию, и разрешать извлечение всем остальным.
После того, как Бенджамин указал на HTTP-сценарии CGI, обслуживающие HTTP, я решил их опробовать и смог разместить репозиторий, размещенный по HTTP. Красная книга , которую связал Бенджамин, очень помогла, как и две статьи в Mercurial wiki. Один, который описывает публикацию Mercurial в целом, и другой, содержащий пошаговые инструкции для настройки скрипта HgWebDir CGI.
Эти инструкции не были полностью надежными, хотя мне приходилось совать вокруг немного. Скорее всего, так как я использую 64-битную Vista. Инструкции ниже документируют то, что я сделал. Теперь, когда я сделал это однажды, я, вероятно, сделал бы все в другом порядке, поэтому не рассматривайте эти пошаговые инструкции.
Mercurial
Сначала я приобрел бинарный файл Mercurial у http: // mercurial .berkwood. com / , который был установлен в d: \ dev \ Mercurial
. Я создал репозиторий для тестирования в репозитории d: \ dev \ testRepo
с использованием hg init
. d: \ dev \ Mercurial \ library.zip
содержит файлы библиотеки Mercurial, необходимые для сценария CGI, поэтому они были извлечены в d: \ dev \ Mercurial \ library
. Сначала меня смутило то, что, открыв zip-файл, я получил сообщение об ошибке и не увидел содержимого. Просто распаковка файла в каталог сработала.
Для веб-скрипта я скачал источник Mercurial , содержащий hgwebdir.cgi, который был перемещен и переименован в d: \ dev \ Mercurial \ webroot \ hgwebdir.py
. Пошаговая статья содержит хорошие инструкции по изменению скрипта hgwebdir для Windows. Они также содержат инструкции для hgweb.config, который в моем случае выглядел так:
[paths]
/hg/hgwebdir.py/test = D:\dev\Mercurial\testRepo
Также в хранилище требовалась следующая конфигурация, чтобы я мог использовать ее без SSL. Примечание. В настоящее время я использую обычную аутентификацию для аутентификации пользователей. Мне пришлось создать конфигурацию в D: \ dev \ Mercurial \ testRepo \ .hg \ hgrc
и добавить в нее следующие строки:
[web]
allow_push = *
push_ssl = false
Python
CGI-скрипт - это скрипт Python, поэтому он требует Python. Кажется довольно требовательным, какая версия Python выполняет его. В одной из статей упоминалось, что для его запуска требуется та же версия, которая использовалась для сборки Mercurial. В конце концов, я начал работать над Python 2.5 x86 после того, как попробовал Python 2.6 x64, Python 2.4, Python 2.5 x64.
IIS
Две вещи, которые я пропустил и должен был установить, были поддержка CGI и Basic Authentication. Оба из них были установлены через Панель управления, Программы и Функции. Закончив установку, я создал виртуальный каталог (который я позже изменил на Приложение) в IIS, указывая на D: \ dev \ Mercurial \ webroot
. Виртуальному каталогу необходим обработчик CGI для файлов * .py, который можно добавить из сопоставлений обработчиков. Исполняемый файл был D: \ dev \ SDKs \ Python25_x86 \ Python.exe% s
. Когда у IIS были разрешения на каталог webroot, я мог перейти на http: //localhost/hg/hgwebdir.py/test и посмотреть репозиторий.
Итак, теперь доступ для чтения работал. Когда я попытался отправить в хранилище, я получил странные сообщения об ошибках, в которых говорилось, что это не настоящее хранилище.
После часа отладки я закончил копирование всего D: Дерево \ dev \ Mercurial \ library \ mercurial
под webroot, чтобы Python мог найти D: \ dev \ Mercurial \ webroot \ mercurial \ hgweb \ hgwebdir_mod.pyc
. После этого Wireshark сообщал об ошибках Access Denied в трассировке стека. Понятия не было, что на самом деле было причиной этого, но изменив виртуальный каталог на Приложение в IIS и переместив его поверх пула приложений, который работал с учетной записью Local System, ошибки отказа в доступе исчезли.
Также в какой-то момент я дал Раздел реестра HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ WinSock2 \ Parameters
предоставляет дополнительные разрешения, чтобы IIS мог получить к нему доступ. Сомневаюсь, что это требуется после использования учетной записи локальной системы.
Как только это было сделано, загрузка материала в хранилище с помощью hg push http: //localhost/hg/hgwebdir.cgi/test
работала!
Проблемы и решения
CgiModule
, а исполняемый файл - это ваш исполняемый файл Python +% s \ mercurial \ hgweb \ hgwebdir_mod.pyc
в другое место. Для команды, делающей первый шаг от VSS, я бы предложил использовать SubVersion для управления источником и либо TortoiseSVN , либо VisualSVN для клиента.
Но если команда приняла решение переключиться на DVCS, то я бы предложил Mercurial, потому что он лучше поддерживает HTTP и окна на клиенте через TortoiseHg .
Если вы ищете:
Вы точно описываете Plastic SCM
Прочитав ответ Микко, который почти сработал для меня, я придумал свои собственные примечания для установки. Моя установка была спроектирована как «незащищенный и открытый» репозиторий, который члены моей группы могли бы использовать на сервере Windows 2008.
1. Установите Python.
Я использовал версию Python Python 2.6.2 , и я использовал установщик Windows x86 MSI.
2. Установите MinGW.
Я использовал версию Minimalist GNU для Windows MinGW 5.1.4
3. Измените свой путь.
На этом этапе вам нужно добавить местоположения в путь к среде.
4. Установите Mercurial.
Версия mercurial, которую я использовал, была последней версией в стабильной ветке, и я не использовал двоичные файлы, но использовал исходный код. Я сам хотел скомпилировать mercurial, чтобы он работал с любой версией Python, которую я установил, поэтому мне не приходилось беспокоиться о каких-либо проблемах совместимости, которые, по моему мнению, были самой большой проблемой с другими методами установки. Самый простой способ получить исходный код - это загрузить файл «zip». \ Mercurial \ Python26; C: \ Mercurial \ MinGW \ bin 'к пути (порядок имеет значение)
4. Установите Mercurial.
Версия mercurial, которую я использовал, была последней версией в стабильной ветке, и я не использовал двоичные файлы, но использовал исходный код. Я сам хотел скомпилировать mercurial, чтобы он работал с любой версией Python, которую я установил, поэтому мне не приходилось беспокоиться о каких-либо проблемах совместимости, которые, по моему мнению, были самой большой проблемой с другими методами установки. Самый простой способ получить исходный код - это загрузить файл «zip». \ Mercurial \ Python26; C: \ Mercurial \ MinGW \ bin 'к пути (порядок имеет значение)
4. Установите Mercurial.
Версия mercurial, которую я использовал, была последней версией в стабильной ветке, и я не использовал двоичные файлы, но использовал исходный код. Я сам хотел скомпилировать mercurial, чтобы он работал с любой версией Python, которую я установил, поэтому мне не приходилось беспокоиться о каких-либо проблемах совместимости, которые, по моему мнению, были самой большой проблемой с другими методами установки. Самый простой способ получить исходный код - это загрузить файл «zip». Я сам хотел скомпилировать mercurial, чтобы он работал с любой версией Python, которую я установил, поэтому мне не приходилось беспокоиться о каких-либо проблемах совместимости, которые, по моему мнению, были самой большой проблемой с другими методами установки. Самый простой способ получить исходный код - это загрузить файл «zip». Я сам хотел скомпилировать mercurial, чтобы он работал с любой версией Python, которую я установил, поэтому мне не приходилось беспокоиться о каких-либо проблемах совместимости, которые, по моему мнению, были самой большой проблемой с другими методами установки. Самый простой способ получить исходный код - это загрузить файл «zip». Стабильная версия Mercurial
python setup.py build --force -c mingw32 python setup.py install --force --skip-build
5. Измените свой путь.
Вам необходимо вставить в путь окружения другое место для команды 'hg'.
6. Создайте свой файл конфигурации.
Вам необходимо установить имя пользователя по умолчанию, если вы собираетесь выполнять какие-либо коммиты локально на этом сервере.
[ui] editor = Notepad username = your_name
6. Проверьте свою установку.
Откройте новое командное окно и проверьте его с помощью ' hg debuginstall ' для проверки. Вы должны увидеть что-то вроде следующего.
Checking encoding (cp1252)... Checking extensions... Checking templates... Checking patch... Checking commit editor... Checking username... No problems detected
7. Настроить веб-каталог.
8. Настройте IIS7 для централизованного репозитория.
Я использовал DefaultAppPool, который использует .Net 2.0, Pipeline = Integrated, Identity = ApplicationPoolIdentity.
8. Настройте IIS7 для централизованного репозитория.
Я использовал DefaultAppPool, который использует .Net 2.0, Pipeline = Integrated, Identity = ApplicationPoolIdentity.
8. Настройте IIS7 для централизованного репозитория.
Я использовал DefaultAppPool, который использует .Net 2.0, Pipeline = Integrated, Identity = ApplicationPoolIdentity.
9. Протестируйте свою веб-настройку.
Теперь вы должны иметь возможность просмотреть http: //localhost/Mercurial/hgwebdir.cgi и просмотреть пустой список репозиториев.
10. Настройка IIS7 для удобного URL-адреса
Мне не нравился недружественный URL-адрес, и этот шаг позволяет переназначить URL-адрес на что-то более понятное. Установите расширение URL Rewrite Moduel 1.1 для IIS.
11. Создание Mercurial Repository
Теперь вы можете создать тестовый репозиторий.
[paths] / = C:\Mercurial\Repository\**
** Если вы хотите теперь иметь возможность отправлять без ssl, создайте в каталоге .hg репозитория файл hgrc, следующие строки.
[web] allow_push = * push_ssl = false
Ссылки:
Установка Mercurial Wiki для Windows
HG Book
Пошаговая инструкция
Публикация репозиториев Mercurial