public ListUser(IEnumerable <OneDat> dat) { if (dat != null) { foreach (var o in dat) { //有効なデータだけを対象にする if (o.Enable) { try { var ftpAcl = (FtpAcl)Convert.ToInt32(o.StrList[0]); var homeDir = o.StrList[1]; var userName = o.StrList[2]; try { var password = Crypt.Decrypt(o.StrList[3]); Ar.Add(new OneUser(ftpAcl, userName, password, homeDir)); } catch (Exception e) { Util.RuntimeException(e.Message); } } catch (Exception e) { Util.RuntimeException(e.Message); } } } } }
public void MakeStep(out int iter, out double residual) { if (!init) { throw new InvalidOperationException("Решатель не инициализирован, выполнение операции невозможно"); } currentIter++; iter = currentIter; if (Factorizer != null) { coefficient = p.DotProduct(r) / dotproduct_pp; if (Double.IsInfinity(coefficient) || Double.IsNaN(coefficient)) { residual = -1; return; } x = x.Add(z, coefficient); r = r.Add(p, -coefficient); Ar = Factorizer.LSolve(A.Multiply(Factorizer.USolve(r))); coefficient = -p.DotProduct(Ar) / dotproduct_pp; if (Double.IsInfinity(coefficient) || Double.IsNaN(coefficient)) { residual = -1; return; } z = Factorizer.USolve(r).Add(z, coefficient); } else { coefficient = p.DotProduct(r) / dotproduct_pp; if (Double.IsInfinity(coefficient) || Double.IsNaN(coefficient)) { residual = -1; return; } x = x.Add(z, coefficient); r = r.Add(p, -coefficient); Ar = A.Multiply(r); coefficient = -p.DotProduct(Ar) / dotproduct_pp; if (Double.IsInfinity(coefficient) || Double.IsNaN(coefficient)) { residual = -1; return; } z = r.Add(z, coefficient); } p = Ar.Add(p, coefficient); dotproduct_pp = p.DotProduct(p); residual = r.Norm / norm_b; }
//サーバ(OneServer)の生成 private void AddServer(Conf conf, OnePlugin onePlugin) { var protocol = (ProtocolKind)conf.Get("protocolKind"); //ProtocolKind protocol = ProtocolKind.ValueOf((int) conf.Get("protocolKind")); BindAddr bindAddr = (BindAddr)conf.Get("bindAddress2"); if (bindAddr.BindStyle != BindStyle.V4Only) { var oneBind = new OneBind(bindAddr.IpV6, protocol); var o = onePlugin.CreateServer(kernel, conf, oneBind); if (o != null) { Ar.Add((OneServer)o); } } if (bindAddr.BindStyle != BindStyle.V6Only) { var oneBind = new OneBind(bindAddr.IpV4, protocol); var o = onePlugin.CreateServer(kernel, conf, oneBind); if (o != null) { Ar.Add((OneServer)o); } } }
//null追加を回避するために、Ar.Add()は、このファンクションを使用する private bool Add(OneOption o) { if (o == null) { return(false); } Ar.Add(o); return(true); }
//null追加を回避するために、ar.Add()は、このファンクションを使用する bool Add(OneTool o) { if (o == null) { return(false); } Ar.Add(o); return(true); }
//文字列による初期化 public bool FromReg(String str) { Ar.Clear(); if (string.IsNullOrEmpty(str)) { return(false); } //Ver5.7.x以前のiniファイルをVer5.8用に修正する var tmp = Util.ConvValStr(str); str = tmp; // 各行処理 String[] lines = str.Split('\b'); if (lines.Length <= 0) { return(false); //"lines.length <= 0" } foreach (var l in lines) { var s = l; //OneDatの生成 OneDat oneDat; try{ oneDat = new OneDat(true, new String[_colMax], _isSecretList); } catch (ValidObjException) { return(false); } if (s.Split('\t').Length != _isSecretList.Length + 1) { // +1はenableカラムの分 //カラム数の不一致 return(false); } //fromRegによる初期化 if (oneDat.FromReg(s)) { Ar.Add(oneDat); continue; // 処理成功 } //処理失敗 Ar.Clear(); return(false); } return(true); }
public ListFetchJob(Kernel kernel, MailSave mailSave, String domainName, Logger logger, IEnumerable <OneDat> fetchList, int timeout, int sizeLimit) { if (fetchList != null) { foreach (var o in fetchList) { if (o.Enable) { var interval = Convert.ToInt32(o.StrList[0]); //受信間隔 var host = o.StrList[1]; //サーバ var port = Convert.ToInt32(o.StrList[2]); //ポート var user = o.StrList[3]; //ユーザ var pass = Crypt.Decrypt(o.StrList[4]); //パスワード var localUser = o.StrList[5]; //ローカルユーザ //Ver5.2.7 旧バージョン(5.2以前)との互換のため int synchronize; try { synchronize = Convert.ToInt32(o.StrList[6]); //同期 } catch { var s = o.StrList[6]; if (s == "サーバに残す" || s == "An email of a server does not eliminate it") { synchronize = 0; } else if (s == "メールボックスと同期する" || s == "Synchronize it with a mailbox") { synchronize = 1; } else if (s == "サーバから削除する" || s == "An email of a server eliminates it") { synchronize = 2; } else { continue; //コンバート失敗したので設定データは無効 } } var keepTime = Convert.ToInt32(o.StrList[7]); //サーバに残す時間 var oneFetch = new OneFetch(interval, host, port, user, pass, localUser, synchronize, keepTime); if (oneFetch.Ip == null) { logger.Set(LogKind.Error, null, 0, string.Format("host={0}", host)); } Ar.Add(new OneFetchJob(kernel, mailSave, domainName, oneFetch, timeout, sizeLimit)); } } } }
public void Add(OneVal oneVal) { // 追加オブジェクトの一覧 var list = oneVal.GetList(null); foreach (var o in list) { if (null != Search(o.Name)) { Msg.Show(MsgKind.Error, string.Format("ListVal.add({0}) 名前が重複しているため追加できませんでした", o.Name)); } } // 重複が無いので追加する Ar.Add(oneVal); oneVal.OnChange += oneVal_OnChange; }
//dir 検索対象となるpluginsフォルダ public ListPlugin(String dir) { //フォルダが存在しない場合、初期化終了 if (!Directory.Exists(dir)) { return; } //DLLを検索し、各オプションを生成する //Ver5.2.4 関係ない*Server.dll以外は、対象外とする var list = Directory.GetFiles(dir, "*Server.dll").ToList(); list.Sort(); foreach (var path in list) { Ar.Add(new OnePlugin(path)); } }
//文字列によるOneDatの追加 //内部で、OneDatの型がチェックされる public bool Add(bool enable, string str) { if (str == null) { return(false); //引数にnullが渡されました } var list = str.Split('\t'); if (list.Length != _colMax) { return(false); //カラム数が一致しません } OneDat oneDat; try{ oneDat = new OneDat(enable, list, _isSecretList); } catch (ValidObjException) { return(false); // 初期化文字列が不正 } Ar.Add(oneDat); return(true); }
//ツールリストの初期化 public void Initialize(Kernel kernel) { Ar.Clear(); //「ステータス表示」の追加 var nameTag = Path.GetFileNameWithoutExtension(Application.ExecutablePath); //Add((OneTool)Util.CreateInstance(kernel,Application.ExecutablePath, "Tool", new object[] { kernel, nameTag })); Add(new Tool(kernel, nameTag)); //OptionListを検索して初期化する foreach (var o in kernel.ListOption) { if (o.UseServer) { var oneTool = (OneTool)Util.CreateInstance(kernel, o.Path, "Tool", new object[] { kernel, o.NameTag }); if (oneTool != null) { Ar.Add(oneTool); } } } }
public OneMenu Add(OneMenu o) { Ar.Add(o); return(o); }
public void Add(string fromFolder, string toFolder) { Ar.Add(new OneMount(fromFolder, toFolder)); }
public void Add(OneClass o) { Ar.Add(o); }
/// <summary> /// Решение СЛАУ методом локально-оптимальной схемы /// </summary> /// <param name="preconditioner">Матрица СЛАУ</param> /// <param name="b">Ветор правой части</param> /// <param name="Initial">Ветор начального приближения</param> /// <param name="Precision">Точность</param> /// <param name="Maxiter">Максимальное число итераций</param> /// <returns>Вектор x - решение СЛАУ Ax=b с заданной точностью</returns> public IVector Solve(IPreconditioner preconditioner, IMatrix A, IVector b, IVector Initial, double Precision, int Maxiter, ILogger Logger) { Logger.WriteNameSolution("LOS", preconditioner.getName()); string start = DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss:fff"); Logger.setMaxIter(Maxiter); IVector x = Initial.Clone() as IVector; double alpha = 0.0, beta = 0.0; IVector r = b.Add(A.Mult(Initial), 1, -1); //r_0 = f - Ax_0 r = preconditioner.SolveL(r); // r_0 = L^-1 * (f - Ax_0) IVector Ar, z = preconditioner.SolveU(r); // z_0 = U^-1 * r_0 IVector p = preconditioner.SolveL(A.Mult(z)); // p_0 = L^-1 * Az_0 double p_r = 0.0, p_p = 0.0; double scalRR = r.ScalarMult(r); double normR = Math.Sqrt(scalRR) / b.Norm; for (int iter = 0; iter < Maxiter && normR > Precision; iter++) //for (int iter = 0; iter < Maxiter && ; iter++) { p_r = p.ScalarMult(r); //(p_k-1,r_k-1) p_p = p.ScalarMult(p); //(p_k-1,p_k-1) alpha = p_r / p_p; x.Add(z, 1, alpha, true); // x_k = x_k-1 + alfa_k*z_k-1 r.Add(p, 1, -alpha, true); // r_k = r_k-1 - alfa_k*p_k-1 Ar = preconditioner.SolveL(A.Mult(preconditioner.SolveU(r))); //Ar_k = L^-1 * A * U^-1 * r_k //Ar = A.SolveU(r); //Ar = AA.Mult(Ar); //Ar = A.SolveL(Ar); beta = -(p.ScalarMult(Ar) / p_p); z = preconditioner.SolveU(r).Add(z, 1, beta); //z_k = U^-1 * r_k + beta_k*z_k-1 p = Ar.Add(p, 1, beta); // p_k = L^-1 * A * U^-1 * r_k + beta_k*p_k-1 if (scalRR == 0) { Logger.WriteSolution(x, Maxiter, b.Add(A.Mult(x), -1, 1).Norm); Logger.WriteTime(start, DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss:fff")); throw new DivideByZeroException("Division by 0"); } scalRR = r.ScalarMult(r); normR = Math.Sqrt(scalRR) / b.Norm; Factory.Residual.Add(normR); Logger.WriteIteration(iter, normR); if (double.IsNaN(normR) || double.IsInfinity(normR)) { Logger.WriteSolution(x, Maxiter, b.Add(A.Mult(x), -1, 1).Norm); Logger.WriteTime(start, DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss:fff")); throw new CantSolveException(); } } Logger.WriteSolution(x, Maxiter, b.Add(A.Mult(x), -1, 1).Norm); Logger.WriteTime(start, DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss:fff")); return(x); }