Пример #1
0
 public GARun(
         int ai_recpergen,
         string as_path,
         int ai_poolsize,
         int ai_generations,
         double ad_modifyprob,
         double ad_recomprob,
         Selectors aen_selector,
         Recombinators aen_recomb,
         Randoms aen_random,
         int ai_elites = 1,
         int ai_ts_contestants = 2,
         bool ab_adaptivemut = true,
         bool ab_rog = false,
         bool ab_lrog = true
     )
 {
     ii_recpergen = ai_recpergen;
     ii_path = as_path;
     ii_poolsize = ai_poolsize;
     ii_generations = ai_generations;
     id_modifyprob = ad_modifyprob;
     id_recomprob = ad_recomprob;
     ien_selector = aen_selector;
     ien_recomb = aen_recomb;
     ien_random = aen_random;
     ii_elites = ai_elites;
     ii_ts_contestants = ai_ts_contestants;
     ib_adaptivemut = ab_adaptivemut;
     ib_rog = ab_rog;
     ib_lrog = ab_lrog;
     id = id + 1;
     myid = id;
 }
Пример #2
0
 static void OnSelectorChange(Selectors id, int newPosition)
 {
 }
Пример #3
0
        static int GetSelectorPosition(Selectors selectorid, int voltage)
        {
            if (selectorid == Selectors.A)
            {
                    Debug.Print("Selector " + selectorid + " Value: " + voltage);

                if (voltage <  115) return 1;
                if (voltage <  230) return 2;
                if (voltage <  350) return 3;
                if (voltage <  450) return 4;
                if (voltage <  840) return 5;
                if (voltage < 1470) return 6;
                if (voltage < 1880) return 7;
                if (voltage < 2340) return 8;
                if (voltage < 2800) return 9;
                if (voltage < 3000) return 10;

                return 11;

            }
            else if (selectorid == Selectors.B)
            {

                if (voltage < 150) return 1;
                if (voltage < 250) return 2;
                if (voltage < 350) return 3;
                if (voltage < 450) return 4;
                if (voltage < 800) return 5;
                if (voltage < 1450) return 6;
                if (voltage < 1850) return 7;
                if (voltage < 2250) return 8;
                if (voltage < 2650) return 9;
                if (voltage < 2850) return 10;
                return 11;

            }
            else if (selectorid == Selectors.C)
            {

                if (voltage < 200) return 7;
                if (voltage < 350) return 8;
                if (voltage < 450) return 9;
                if (voltage < 650) return 10;
                if (voltage < 1150) return 11;

                if (voltage < 1850) return 6;

                if (voltage < 2250) return 1;
                if (voltage < 2650) return 2;
                if (voltage < 3050) return 3;
                if (voltage < 3180) return 4;

                return 5;

            }
            return voltage;
        }
Пример #4
0
        public Selector(Selectors id, AnalogIn.Pin analogPin)
            : base()
        {
            inputPin = analogPin;
            selectorId = id;

            selectorPort = new AnalogIn(inputPin);
            selectorPort.SetLinearScale(0, 3300);
            currentPosition = 0;
        }
Пример #5
0
 public void init(
     GARun ao_run,
     ref Wrapper ao_wrapper
 )
 {
     io_wrapper = ao_wrapper;
     io_run = ao_run;
     ii_recpergen = ao_run.ii_recpergen;
     ii_path = ao_run.ii_path;
     ii_poolsize = ao_run.ii_poolsize;
     ii_generations = ao_run.ii_generations;
     id_modifyprob = ao_run.id_modifyprob;
     id_recomprob = ao_run.id_recomprob;
     ien_selector = ao_run.ien_selector;
     ien_recomb = ao_run.ien_recomb;
     ien_random = ao_run.ien_random;
     ii_elites = ao_run.ii_elites;
     ii_ts_contestants = ao_run.ii_ts_contestants;
     ib_adaptivemut = ao_run.ib_adaptivemut;
     ib_rog = ao_run.ib_rog;
     ib_lrog = ao_run.ib_lrog;
     ida_starttime = new DateTime();
 }
        public object GetValue(int i)
        {
            if (_enumerator.Current == null)
            {
                return(null);
            }

            try
            {
                object value;
                try
                {
                    value = _currentEntityTypeSelectors[i](_enumerator.Current);
                    if (value is DbGeography)
                    {
                        return(Provider.GetSqlGeography(((DbGeography)value).WellKnownValue.WellKnownText, ((DbGeography)value).CoordinateSystemId));
                    }

                    if (value is DbGeometry)
                    {
                        return(Provider.GetSqlGeometry(((DbGeometry)value).WellKnownValue.WellKnownText, ((DbGeometry)value).CoordinateSystemId));
                    }
                }
                catch (KeyNotFoundException)
                {
                    // current index is not present in given object type. i.e this column is for some sibling
                    return(null);
                }

                if (Cols[i].IsNavigationProperty)
                {
                    var col            = Cols[i];
                    var pk             = col.EntityMap.Pks.FirstOrDefault();
                    var navigationType = col.Type;
                    if (pk == null)
                    {
                        return(0);
                    }
                    Dictionary <int, Func <T, object> > navSelectors;
                    if (!Selectors.TryGetValue(navigationType, out navSelectors))
                    {
                        if (pk == null)
                        {
                            return(0);
                        }

                        navSelectors = new Dictionary <int, Func <T, object> >();
                        var x = Expression.Parameter(_enumerator.Current.GetType(), "x");

                        var        propNames          = $"{col.PropertyName}.{pk.PropertyName}".Split('.');
                        Expression propertyExpression = Expression.PropertyOrField(x, propNames[0]);
                        propertyExpression = propNames.Skip(1).Aggregate(propertyExpression, Expression.PropertyOrField);

                        var expression = Expression.Lambda <Func <T, object> >(Expression.Convert(propertyExpression, typeof(object)), x);
                        var selector   = expression.Compile();

                        navSelectors[i] = selector;

                        Selectors[navigationType] = navSelectors;
                    }

                    return(navSelectors[i](_enumerator.Current));
                }

                return(value);
            }
            catch (NullReferenceException)
            {
                return(null);
            }
        }
Пример #7
0
 public void AddFromAttributes(bool publicOnly)
 {
     Selectors.Add(new AttributeSelector(Types.Where(t => t.IsNonAbstractClass(publicOnly))));
 }
Пример #8
0
 public void AddFromAttributes(bool publicOnly)
 {
     Selectors.Add(new AttributeSelector(GetNonAbstractClasses(publicOnly)));
 }
Пример #9
0
 public override string ToString()
 {
     return(base.ToString() + ":" + string.Join(", ", Selectors.Select(s => s.Value)));
 }
Пример #10
0
        /// <summary>
        /// 如果找不到则不返回URL, 不然返回的URL太多
        /// </summary>
        /// <param name="page"></param>
        protected virtual void ExtractUrls(Page page)
        {
            if (_targetUrlExtractors == null || _targetUrlExtractors.Count == 0)
            {
                return;
            }

            foreach (var targetUrlExtractor in _targetUrlExtractors)
            {
                if (Equals(targetUrlExtractor.Key, Selectors.Default()))
                {
                    continue;
                }
                List <string> links = null;
                if (page.ContentType == ContentType.Html)
                {
                    links = page.Selectable.SelectList(targetUrlExtractor.Key).Links().GetValues();
                }
                else if (page.ContentType == ContentType.Json)
                {
                    links = page.Selectable.SelectList(Selectors.Regex(RegexUtil.UrlRegex)).Links().GetValues();
                }
                else
                {
                }

                if (links == null)
                {
                    continue;
                }

                // check: 仔细考虑是放在前面, 还是在后面做 formatter, 我倾向于在前面. 对targetUrl做formatter则表示Start Url也应该是要符合这个规则的。
                List <string> tmp = new List <string>();
                foreach (string link in links)
                {
                    var url = FormateUrl(link);
#if !NET_CORE
                    tmp.Add(HttpUtility.HtmlDecode(HttpUtility.UrlDecode(url)));
#else
                    tmp.Add(WebUtility.HtmlDecode(WebUtility.UrlDecode(url)));
#endif
                }
                links = tmp;

                if (targetUrlExtractor.Value == null || targetUrlExtractor.Value.Count == 0)
                {
                    page.AddTargetRequests(links);
                    continue;
                }

                foreach (var regex in targetUrlExtractor.Value)
                {
                    foreach (string link in links)
                    {
                        if (regex.IsMatch(link))
                        {
                            bool isRequired = true;
                            if (_excludeTargetUrlPatterns != null)
                            {
                                foreach (var excludeRegex in _excludeTargetUrlPatterns)
                                {
                                    if (excludeRegex.IsMatch(link))
                                    {
                                        isRequired = false;
                                        break;
                                    }
                                }
                            }
                            if (isRequired)
                            {
                                page.AddTargetRequest(new Request(link, page.Request.Extras));
                            }
                        }
                    }
                }
            }

            if (Site.DownloadFiles)
            {
                var links = (page.Selectable.SelectList(ImageSelector)).GetValues();

                if (links == null || links.Count == 0)
                {
                    return;
                }
                foreach (string link in links)
                {
                    bool isRequired = true;
                    if (_excludeTargetUrlPatterns != null)
                    {
                        foreach (var excludeRegex in _excludeTargetUrlPatterns)
                        {
                            if (excludeRegex.IsMatch(link))
                            {
                                isRequired = false;
                                break;
                            }
                        }
                    }
                    if (isRequired)
                    {
                        page.AddTargetRequest(new Request(link, page.Request.Extras));
                    }
                }
            }
        }
        protected override void Handle(Page page)
        {
            var results = new List <TiebaFloorReply>();

            if (Regex.IsMatch(page.Request.RequestUri.AbsoluteUri, "tieba.baidu.com/t/p/[0-9]*"))
            {
                var totalFloorReplyElements = page.Selectable().SelectList(Selectors.XPath(".//ul[@class='pb_lzl_content j_floor_panel']")).Nodes();
                foreach (var floorReplyElement in totalFloorReplyElements)
                {
                    TiebaFloorReply floorReply = new TiebaFloorReply();
                    JObject         jObject    = JObject.Parse(floorReplyElement.Select(Selectors.XPath("@data-info")).GetValue());
                    floorReply.Key          = jObject["pid"].ToString();
                    floorReply.UserName     = jObject["un"].ToString();
                    floorReply.UserNickName = floorReplyElement.Select(Selectors.XPath(".//a[@class='user_name ']")).GetValue(ValueOption.InnerText);
                    floorReply.ThreadID     = Regex.Match(page.Selectable().Select(Selectors.XPath(".//div[@class='pb_lzl_header_bar']//a//@href")).GetValue(), "[0-9]+").Value;
                    floorReply.FloorID      = Regex.Match(page.Request.Url, "[0-9]+").Value;
                    floorReply.Body         = floorReplyElement.Select(Selectors.XPath(".//a[@class='lzl_content j_lzl_content ']")).GetValue(ValueOption.InnerHtml);
                    floorReply.ReplyTime    = TiebaTime.Parse(floorReplyElement.Select(Selectors.XPath(".//div[@class='left ']//div//p")).GetValue().Trim());
                    floorReply.UpdateTime   = DateTime.Now;
                    results.Add(floorReply);
                }
            }
            //将数据添加进去,使得数据存储类可以拿到数据
            if (results.Count > 0)
            {
                page.AddResultItem("TiebaFloorReply", results);
            }
        }
Пример #12
0
        protected override void Handle(Page page)
        {
            var results = new List <TiebaPost>();

            //如果是帖子列表页面,就获取所有帖子
            if (page.Request.RequestUri.AbsoluteUri.Contains("tieba.baidu.com/f?"))
            {
                var totalPostsElements = page.Selectable().SelectList(Selectors.XPath(".//li[@class='tl_shadow tl_shadow_new ']")).Nodes();
                foreach (var postElement in totalPostsElements)
                {
                    TiebaPost tiebaPost = new TiebaPost();
                    //tiebaPost.Title = classElement.Select(Select.Regex("(?<=title=\")[^ (\" target=\"_blank\")]*(?=(\" target = \"_blank\" class=\"j_th_tit \"))")).GetValue();
                    //tiebaPost.ReplyNum = Convert.ToInt32(classElement.Select(Selectors.Regex("(?<=(title=\"回复\">))[0-9]*")).GetValue());
                    //tiebaPost.UserName = classElement.Select(Selectors.Regex("(?<=(title=\"主题作者: ))[^ (\"\\s)]*")).GetValue();

                    tiebaPost.Key      = postElement.Select(Selectors.XPath(".//a[@class='j_common ti_item ']/@data-tid")).GetValue();
                    tiebaPost.Title    = postElement.Select(Selectors.XPath(".//div[@class='ti_title']")).GetValue(ValueOption.InnerText).Trim();
                    tiebaPost.ReplyNum = Convert.ToInt32(postElement.Select(Selectors.XPath(".//div[@class='ti_func_btn btn_reply']")).GetValue(ValueOption.InnerText));
                    tiebaPost.UserName = postElement.Select(Selectors.XPath(".//div[@class='ti_author_icons  clearfix']//span")).GetValue(ValueOption.InnerText).Trim();
                    string time = postElement.Select(Selectors.XPath(".//span[@class='ti_time']")).GetValue();
                    tiebaPost.StartTime  = DateTime.Parse(time);
                    tiebaPost.UpdateTime = DateTime.Now;
                    //获取到数据添加到集合中
                    results.Add(tiebaPost);
                    //在列表中获取到帖子,把帖子详情链接添加到队列中
                    page.AddTargetRequest(new Request($"https://tieba.baidu.com/p/{tiebaPost.Key}"));
                }
            }
            //否则如果是帖子详情页,则更新帖子数据(相比较列表页,可以更新一些信息)
            else if (Regex.IsMatch(page.Request.RequestUri.AbsoluteUri, "tieba.baidu.com/p/[0-9]*"))
            {
                TiebaPost tiebaPost = new TiebaPost();
                try
                {
                    tiebaPost.Title = page.Selectable().Select(Selectors.XPath(".//h1")).GetValue().Trim();
                }
                catch (Exception)
                {
                    tiebaPost.Title = page.Selectable().Select(Selectors.XPath(".//h3")).GetValue().Trim();
                }
                tiebaPost.ReplyNum = Convert.ToInt32(page.Selectable().SelectList(Selectors.XPath(".//li[@class='l_reply_num']//span")).Nodes().First().GetValue());

                var     postElements = page.Selectable().SelectList(Selectors.XPath(".//div[@id='j_p_postlist']//div")).Nodes();
                var     postElement  = page.Selectable().SelectList(Selectors.XPath(".//div[@id='j_p_postlist']//div")).Nodes().First();
                var     json         = postElement.Select(Selectors.XPath("@data-field")).GetValue();
                JObject jObject      = JObject.Parse(HttpUtility.HtmlDecode(json));
                tiebaPost.Key = jObject["content"]["post_id"].ToString();
                if (jObject["content"].Contains("content"))
                {
                    tiebaPost.Body = jObject["content"]["content"].ToString();
                }
                tiebaPost.UserName     = jObject["author"]["user_name"].ToString();
                tiebaPost.UserNickName = jObject["author"]["user_nickname"].ToString();
                tiebaPost.UserID       = jObject["author"]["user_id"].ToString();
                string time;
                if (jObject["content"]["date"] != null)
                {
                    time = jObject["content"]["date"].ToString();
                }
                else
                {
                    var ls = postElement.Select(Selectors.XPath("//div[@class='post-tail-wrap']")).XPath(".//span").Nodes();
                    if (ls == null)
                    {
                        Console.WriteLine();
                    }
                    time = ls.Last().GetValue();
                }
                tiebaPost.StartTime  = TiebaTime.Parse(time);
                tiebaPost.UpdateTime = DateTime.Now;
                //获取到数据添加到集合中
                results.Add(tiebaPost);
            }
            //将数据添加进去,使得数据存储类可以拿到数据
            if (results.Count > 0)
            {
                page.AddResultItem("TiebaPost", results);
            }
        }
        public void BlobIngressEgressCounters()
        {
            CloudBlobContainer container = GetRandomContainerReference();

            container.CreateIfNotExists();
            CloudBlockBlob blob = container.GetBlockBlobReference("blob1");

            string[] blockIds = new string[] { Convert.ToBase64String(Guid.NewGuid().ToByteArray()), Convert.ToBase64String(Guid.NewGuid().ToByteArray()), Convert.ToBase64String(Guid.NewGuid().ToByteArray()) };
            try
            {
                // 1 byte
                TestHelper.ValidateIngressEgress(Selectors.IfUrlContains(blob.Uri.ToString()), () =>
                {
                    OperationContext opContext = new OperationContext();
                    blob.PutBlock(blockIds[0], new MemoryStream(GetRandomBuffer(1)), null, null, new BlobRequestOptions()
                    {
                        RetryPolicy = new RetryPolicies.NoRetry()
                    }, opContext);
                    return(opContext.LastResult);
                });

                // 1024
                TestHelper.ValidateIngressEgress(Selectors.IfUrlContains(blob.Uri.ToString()), () =>
                {
                    OperationContext opContext = new OperationContext();
                    blob.PutBlock(blockIds[1], new MemoryStream(GetRandomBuffer(1024)), null, null, new BlobRequestOptions()
                    {
                        RetryPolicy = new RetryPolicies.NoRetry()
                    }, opContext);
                    return(opContext.LastResult);
                });

                // 98765
                TestHelper.ValidateIngressEgress(Selectors.IfUrlContains(blob.Uri.ToString()), () =>
                {
                    OperationContext opContext = new OperationContext();
                    blob.PutBlock(blockIds[2], new MemoryStream(GetRandomBuffer(98765)), null, null, new BlobRequestOptions()
                    {
                        RetryPolicy = new RetryPolicies.NoRetry()
                    }, opContext);
                    return(opContext.LastResult);
                });

                // PutBlockList
                TestHelper.ValidateIngressEgress(Selectors.IfUrlContains(blob.Uri.ToString()), () =>
                {
                    OperationContext opContext = new OperationContext();
                    blob.PutBlockList(blockIds, null, new BlobRequestOptions()
                    {
                        RetryPolicy = new RetryPolicies.NoRetry()
                    }, opContext);
                    return(opContext.LastResult);
                });

                // GetBlockList
                TestHelper.ValidateIngressEgress(Selectors.IfUrlContains(blob.Uri.ToString()), () =>
                {
                    OperationContext opContext = new OperationContext();
                    blob.DownloadBlockList(BlockListingFilter.All, null, new BlobRequestOptions()
                    {
                        RetryPolicy = new RetryPolicies.NoRetry()
                    }, opContext);
                    return(opContext.LastResult);
                });

                // Download
                TestHelper.ValidateIngressEgress(Selectors.IfUrlContains(blob.Uri.ToString()), () =>
                {
                    OperationContext opContext = new OperationContext();
                    blob.DownloadToStream(Stream.Null, null, new BlobRequestOptions()
                    {
                        RetryPolicy = new RetryPolicies.NoRetry()
                    }, opContext);
                    return(opContext.LastResult);
                });

                Assert.AreEqual(blob.Properties.Length, 98765 + 1024 + 1);
            }
            finally
            {
                container.DeleteIfExists();
            }
        }
 public SelectorsChannel(string guid, Connection connection, Selectors owner) : base(guid, connection, owner)
 {
 }