SSD - 1x265Gbявно с перевесом в пользу в пользу терминала, но и для АД не менее 1/3. если вынести с системного диска терминала все пользовательские профили на рейд (вы же рейд планируете на хардах?) что было бы правильно, тогда примерно АД/Терминал=2/3 можно, или даже пополам. зажимать АД тоже не следует
HDD - 4x1Tbявно весь отдать Терминалу. настоятельно рекомендую райд 10 (единственных райд, у которого скорость растет пропорционально количеству дисков). не смотря на больший проигрыш в объеме, лучшее быстродействие и высокая надежность. в 10ку лучше 8 дешевых дисков, чем 4 дорогих (но пару дисков этой модели стоит еще положить на полку для аварийной замены)
как правильно организовать backup всей этой радости?обычно тут не надо ни чего изобретать - SQL штатными его штатными средствами (изучайте схемы бекапирования, потеря дня работы, возможно уже будет стоить дорого), Терминал и АД - собственными средствами винсервера (в часы минимальной нагрузки, снова схемы, но один суточный бекап тут обычно допустим). а вот над чем стоит задуматься - носитель бекапов должен быть снова в другом компьютере (или стример). это важно. допустим что то очень нехорошее случилось и накрывается весь рейд - если бекапы на нем, то ой
наименование файла и директории с двойной кавычкой в Windowsне допустимый символ
драйверы под Windows. Возник вопрос - достаточно будет знать Си с ассемблером и внутреннее устройство Windows, работу WinAPI, ядро и его особенности для этого?достаточно. когда будет недостаточно, вы это сразу заметите
для прикладных программ подойдет чистый Си или лучше еще изучить С++ или С#?прикладные программы бывают разные - чаще всего, в цене скорость разработки, а это (из перечисленных) однозначно C#. в тоже время, бывают вполне себе прикладные задачи, где критически важна производительность. для малых объемов кода эффективнее C, если нужна алгоритмистика, высокий уровень абстракций, но при это максимальная производительность, тогда уже C++, но это самая сложная траектория. быстро (!!! и то относительно) получается только у профи, которые уже много лет вложили в изучение C++
Как поменятьуже подсказано ))
Сильно будет отличаться файл "Юникод" от "Анси"в случае немецкого, в анси, будут утеряны умлауты, они доступны или в случае немецкой кодовой страницы для не-юникод программ (а это уже не ansi), или в юникоде, для всех других настроек локалей
using System;
using System.IO;
namespace mypath
{
class Program
{
static void Main(string[] args)
{
var p = Environment.CurrentDirectory;
Console.WriteLine(p);
Console.ReadKey();
p += @"\..\..\App.config";
var appcfg = File.ReadLines(p);
foreach(var l in appcfg)
Console.WriteLine(l);
Console.ReadKey();
}
}
}
на что обратить внимание после Visual Studio, мануалов по C# и Аллена Джонса?на гугл (а еще на кнопку F1 в студии, на любом слове)
рисование простейших элементов GUI Windowsначните с winforms, рисовать ни чего не надо, все в студии
[DllImport("USER32.DLL", CharSet = CharSet.Auto)]
internal static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
"Save Table".hWndByTitle().setTitle(csvDlg).waitForIdle().sendString(
new string[] {
"DUIViewWndClassName",
"DirectUIHWND",
"FloatNotifySink",
"ComboBox",
"Edit" },
csv);
internal static IntPtr sendString(this IntPtr hWnd, string[] classNames, string msg, bool verb = false)
{
var hCtrl = hWnd;
if (classNames != null && classNames.Count() > 0)
{
Thread.Sleep(to[toFileStdDlg]);
foreach (var c in classNames)
{
Thread.Sleep(to[toFileStdDlg]);
hCtrl = user32.FindWindowEx(hCtrl, IntPtr.Zero, c, null);
if (hCtrl.Equals(IntPtr.Zero))
{
$"\tERROR :: sendString not found class {c}".log();
return hWnd;
}
else
hCtrl.waitForIdle();
}
}
for (int i = 0; i < msg.Length; i++)
user32.PostMessage(hCtrl, WM_CHAR, msg[i], 0);
Thread.Sleep(to[toFileStdDlg]);
user32.PostMessage(hWnd, WM_KEYDOWN, user32.VkKeyScan('\r'), 0);
user32.PostMessage(hWnd, WM_KEYUP, user32.VkKeyScan('\r'), 0);
return hWnd;
}
пинги до этого ip адреса не идут
Ответ на пинг зачастую отключен, ибо нефиг.
static void buildLinks(this IEnumerable<string> profiles, string bro)
{
try
{
dynamic sh = Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid("72C24DD5-D70A-438B-8A42-98424B88AFB8")));
var successCount = 0;
foreach (var p in profiles)
{
var pl = p.Split(backSlashDelimiter, StringSplitOptions.RemoveEmptyEntries);
var pnPoint = pl.Length - 2;
var profileName = pl[pnPoint];
var profileLocation = new StringBuilder()
.Append("%APPDATA%").Append(backSlash)
.Append(pl[pnPoint - 3]).Append(backSlash)
.Append(pl[pnPoint - 2]).Append(backSlash)
.Append(pl[pnPoint - 1]).Append(backSlash)
.ToString();
try
{
dynamic lnk = sh.CreateShortcut(linkLocation + profileName + ".lnk");
lnk.TargetPath = bro;
lnk.Arguments = ffOptions + " " + profileLocation + profileName;
lnk.WorkingDirectory = profileLocation;
lnk.IconLocation = iconLocation + iconName + ", " + iconIndex;
lnk.Description = "created by ff.links on C#";
lnk.Save();
" .. created link for profile ".print(pfx, profileName);
successCount++;
}
catch (Exception e) { $"FAIL create link for profile {profileName} - {e.Message}".print(pfx); }
}
$"total created links {successCount}".print(pfx);
}
catch (Exception e) { $"FAIL 'build links' - {e.Message}".print(pfx); }
}
@echo on
chkdsk c: | grep Windows
@rem pause
chkdsk d: | grep Windows
@rem chkdsk g: | grep Windows
@rem chkdsk h: | grep Windows
chkdsk s: | grep Windows
@rem chkdsk x: | grep Windows
@rem pause
sfc /scannow
@pause
findstr /c:"[SR]" %windir%\Logs\CBS\CBS.log > "%userprofile%\Documents\sfclogs.txt"
type "%userprofile%\Documents\sfclogs.txt" | grep corrupted
type "%userprofile%\Documents\sfclogs.txt" | grep repaired
DISM /Online /Cleanup-Image /CheckHealth
@pause
DISM /Online /Cleanup-Image /ScanHealth
@pause
DISM /Online /Cleanup-Image /RestoreHealth
@pause
DISM /Online /Cleanup-Image /RestoreHealth /Source:"e:\sources\install.wim"
DISM /Online /Cleanup-Image /RestoreHealth /source:WIM:e:\Sources\Install.wim:1 /LimitAccess
DISM /Online /cleanup-image /restorehealth